errors.js

  1. /**
  2. * Predefined errors that ui-predicate-core will yield from rejected promises
  3. * @namespace errors
  4. * @since 1.0.0
  5. * @note errors are 100% tested from PredicateCore.test.js
  6. */
  7. const { mergeAll } = require('ramda');
  8. const errorEx = require('error-ex');
  9. function err(name) {
  10. return {
  11. [name]: errorEx(name),
  12. };
  13. }
  14. module.exports = mergeAll([
  15. /**
  16. * Error when a Predicate is created without
  17. * @typedef {Error} InvalidPredicateType
  18. * @memberof errors
  19. * @since 1.0.0
  20. */
  21. err('InvalidPredicateType'),
  22. /**
  23. * Error when a json data passed to PredicateCore Constructor is neither a serialized ComparisonPredicate or a CompoundPredicate
  24. * @typedef {Error} CompoundPredicate
  25. * @memberof errors
  26. * @since 1.0.0
  27. */
  28. err('UnknownJSONData'),
  29. /**
  30. * Error when someone tried to remove the last remaining predicate from a CompoundPredicate
  31. * @typedef {Error} CompoundPredicateMustHaveAtLeastOneSubPredicate
  32. * @memberof errors
  33. * @since 1.0.0
  34. */
  35. err('CompoundPredicateMustHaveAtLeastOneSubPredicate'),
  36. /**
  37. * Error when setData `data` parameter is called with something else than a {@link dataclasses.CompoundPredicate}
  38. * @typedef {Error} RootPredicateMustBeACompoundPredicate
  39. * @memberof errors
  40. * @since 1.0.0
  41. */
  42. err('RootPredicateMustBeACompoundPredicate'),
  43. /**
  44. * Error when a function was requiring a {@link dataclasses.CompoundPredicate} as a parameter
  45. * @typedef {Error} RootPredicateMustBeACompoundPredicate
  46. * @memberof errors
  47. * @since 1.0.0
  48. */
  49. err('PredicateMustBeACompoundPredicate'),
  50. /**
  51. * Error when a function was requiring a {@link dataclasses.ComparisonPredicate} as a parameter
  52. * @typedef {Error} PredicateMustBeAComparisonPredicate
  53. * @memberof errors
  54. * @since 1.0.0
  55. */
  56. err('PredicateMustBeAComparisonPredicate'),
  57. /**
  58. * Error add is called with something else than "after" parameter
  59. * @typedef {Error} AddCurrentlyOnlySupportAfterInsertion
  60. * @memberof errors
  61. * @since 1.0.0
  62. */
  63. err('AddCurrentlyOnlySupportAfterInsertion'),
  64. /**
  65. * Thrown when a specified target refers to a undefined type.
  66. * It means the user has missed a type definition in `types`.
  67. * @typedef {Error} TargetMustReferToADefinedType
  68. * @memberof errors
  69. * @since 1.0.0
  70. */
  71. err('TargetMustReferToADefinedType'),
  72. /**
  73. * Thrown when a user asked for a logic change
  74. * but the logicalType_id was invalid because it referred to no existing targets
  75. * @typedef {Error} LogicalType_idMustReferToADefinedLogicalType
  76. * @memberof errors
  77. * @since 1.0.0
  78. */
  79. err('LogicalType_idMustReferToADefinedLogicalType'),
  80. /**
  81. * Thrown when a user asked for a target
  82. * but the target_id was invalid because it referred to no existing targets
  83. * @typedef {Error} Target_idMustReferToADefinedTarget
  84. * @memberof errors
  85. * @since 1.0.0
  86. */
  87. err('Target_idMustReferToADefinedTarget'),
  88. /**
  89. * Thrown when a user asked for a operator
  90. * but the operator_id was invalid because it referred to no existing operators
  91. * @typedef {Error} Operator_idMustReferToADefinedOperator
  92. * @memberof errors
  93. * @since 1.0.0
  94. */
  95. err('Operator_idMustReferToADefinedOperator'),
  96. /**
  97. * Thrown when a user asked for a operator change on a predicate
  98. * but the operator_id was invalid because it referred
  99. * to no existing operators for the currently selected predicate's target
  100. * @typedef {Error} Operator_idMustReferToADefinedOperator
  101. * @memberof errors
  102. * @since 1.0.0
  103. */
  104. err('Operator_idMustReferToADefinedOperator'),
  105. /**
  106. * Thrown when remove is called on root {@link dataclasses.CompoundPredicate}
  107. * @typedef {Error} ForbiddenCannotRemoveRootCompoundPredicate
  108. * @memberof errors
  109. * @since 1.0.0
  110. */
  111. err('ForbiddenCannotRemoveRootCompoundPredicate'),
  112. /**
  113. * Thrown when remove is called on root CompoundPredicate
  114. * @typedef {Error} ForbiddenCannotRemoveLastComparisonPredicate
  115. * @memberof errors
  116. * @since 1.0.0
  117. */
  118. err('ForbiddenCannotRemoveLastComparisonPredicate'),
  119. /**
  120. * Thrown when remove is called with an invalid type of predicate
  121. * @typedef {Error} CannotRemoveSomethingElseThanACompoundPredicateOrAComparisonPredicate
  122. * @memberof errors
  123. * @since 1.0.0
  124. */
  125. err('CannotRemoveSomethingElseThanACompoundPredicateOrAComparisonPredicate'),
  126. /**
  127. * Thrown when add is called with an invalid type of predicate
  128. * @typedef {Error} CannotAddSomethingElseThanACompoundPredicateOrAComparisonPredicate
  129. * @memberof errors
  130. * @since 1.0.0
  131. */
  132. err('CannotAddSomethingElseThanACompoundPredicateOrAComparisonPredicate'),
  133. /**
  134. * Thrown when the UI Framework adapter forgot to pass `getDefaultArgumentComponent` in the option object to UIPredicateCore constructor
  135. * @typedef {Error} UIFrameworkMustImplementgetDefaultArgumentComponent
  136. * @memberof errors
  137. * @since 1.0.0
  138. */
  139. err('UIFrameworkMustImplementgetDefaultArgumentComponent'),
  140. ]);