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 someone tried to remove the last remaining predicate from a CompoundPredicate
  24. * @typedef {Error} CompoundPredicateMustHaveAtLeastOneSubPredicate
  25. * @memberof errors
  26. * @since 1.0.0
  27. */
  28. err('CompoundPredicateMustHaveAtLeastOneSubPredicate'),
  29. /**
  30. * Error when setData `data` parameter is called with something else than a {@link dataclasses.CompoundPredicate}
  31. * @typedef {Error} RootPredicateMustBeACompoundPredicate
  32. * @memberof errors
  33. * @since 1.0.0
  34. */
  35. err('RootPredicateMustBeACompoundPredicate'),
  36. /**
  37. * Error when a function was requiring a {@link dataclasses.CompoundPredicate} as a parameter
  38. * @typedef {Error} RootPredicateMustBeACompoundPredicate
  39. * @memberof errors
  40. * @since 1.0.0
  41. */
  42. err('PredicateMustBeACompoundPredicate'),
  43. /**
  44. * Error when a function was requiring a {@link dataclasses.ComparisonPredicate} as a parameter
  45. * @typedef {Error} PredicateMustBeAComparisonPredicate
  46. * @memberof errors
  47. * @since 1.0.0
  48. */
  49. err('PredicateMustBeAComparisonPredicate'),
  50. /**
  51. * Error add is called with something else than "after" parameter
  52. * @typedef {Error} AddCurrentlyOnlySupportAfterInsertion
  53. * @memberof errors
  54. * @since 1.0.0
  55. */
  56. err('AddCurrentlyOnlySupportAfterInsertion'),
  57. /**
  58. * Thrown when a specified target refers to a undefined type.
  59. * It means the user has missed a type definition in `types`.
  60. * @typedef {Error} TargetMustReferToADefinedType
  61. * @memberof errors
  62. * @since 1.0.0
  63. */
  64. err('TargetMustReferToADefinedType'),
  65. /**
  66. * Thrown when a user asked for a logic change on a {@link dataclasses.CompoundPredicate}
  67. * but the logicalType_id was invalid because it referred to no existing targets
  68. * @typedef {Error} LogicalType_idMustReferToADefinedLogicalType
  69. * @memberof errors
  70. * @since 1.0.0
  71. */
  72. err('LogicalType_idMustReferToADefinedLogicalType'),
  73. /**
  74. * Thrown when a user asked for a target change on a predicate
  75. * but the target_id was invalid because it referred to no existing targets
  76. * @typedef {Error} Target_idMustReferToADefinedTarget
  77. * @memberof errors
  78. * @since 1.0.0
  79. */
  80. err('Target_idMustReferToADefinedTarget'),
  81. /**
  82. * Thrown when a user asked for a operator change on a predicate
  83. * but the operator_id was invalid because it referred
  84. * to no existing operators for the currently selected predicate's target
  85. * @typedef {Error} Operator_idMustReferToADefinedOperator
  86. * @memberof errors
  87. * @since 1.0.0
  88. */
  89. err('Operator_idMustReferToADefinedOperator'),
  90. /**
  91. * Thrown when remove is called on root {@link dataclasses.CompoundPredicate}
  92. * @typedef {Error} ForbiddenCannotRemoveRootCompoundPredicate
  93. * @memberof errors
  94. * @since 1.0.0
  95. */
  96. err('ForbiddenCannotRemoveRootCompoundPredicate'),
  97. /**
  98. * Thrown when remove is called on root CompoundPredicate
  99. * @typedef {Error} ForbiddenCannotRemoveLastComparisonPredicate
  100. * @memberof errors
  101. * @since 1.0.0
  102. */
  103. err('ForbiddenCannotRemoveLastComparisonPredicate'),
  104. /**
  105. * Thrown when remove is called with an invalid type of predicate
  106. * @typedef {Error} CannotRemoveSomethingElseThanACompoundPredicateOrAComparisonPredicate
  107. * @memberof errors
  108. * @since 1.0.0
  109. */
  110. err('CannotRemoveSomethingElseThanACompoundPredicateOrAComparisonPredicate'),
  111. /**
  112. * Thrown when add is called with an invalid type of predicate
  113. * @typedef {Error} CannotAddSomethingElseThanACompoundPredicateOrAComparisonPredicate
  114. * @memberof errors
  115. * @since 1.0.0
  116. */
  117. err('CannotAddSomethingElseThanACompoundPredicateOrAComparisonPredicate'),
  118. ]);