/**
* Predefined errors that ui-predicate-core will yield from rejected promises
* @namespace errors
* @since 1.0.0
* @note errors are 100% tested from PredicateCore.test.js
*/
const mergeAll = require('ramda/src/mergeAll');
const errorEx = require('error-ex');
function err(name) {
return {
[name]: errorEx(name),
};
}
module.exports = mergeAll([
/**
* Error when a Predicate is created without
* @typedef {Error} InvalidPredicateType
* @memberof errors
* @since 1.0.0
*/
err('InvalidPredicateType'),
/**
* Error when a json data passed to PredicateCore Constructor is neither a serialized ComparisonPredicate or a CompoundPredicate
* @typedef {Error} CompoundPredicate
* @memberof errors
* @since 1.0.0
*/
err('UnknownJSONData'),
/**
* Error when someone tried to remove the last remaining predicate from a CompoundPredicate
* @typedef {Error} CompoundPredicateMustHaveAtLeastOneSubPredicate
* @memberof errors
* @since 1.0.0
*/
err('CompoundPredicateMustHaveAtLeastOneSubPredicate'),
/**
* Error when setData `data` parameter is called with something else than a {@link dataclasses.CompoundPredicate}
* @typedef {Error} RootPredicateMustBeACompoundPredicate
* @memberof errors
* @since 1.0.0
*/
err('RootPredicateMustBeACompoundPredicate'),
/**
* Error when a function was requiring a {@link dataclasses.CompoundPredicate} as a parameter
* @typedef {Error} RootPredicateMustBeACompoundPredicate
* @memberof errors
* @since 1.0.0
*/
err('PredicateMustBeACompoundPredicate'),
/**
* Error when a function was requiring a {@link dataclasses.ComparisonPredicate} as a parameter
* @typedef {Error} PredicateMustBeAComparisonPredicate
* @memberof errors
* @since 1.0.0
*/
err('PredicateMustBeAComparisonPredicate'),
/**
* Error add is called with something else than "after" parameter
* @typedef {Error} AddCurrentlyOnlySupportAfterInsertion
* @memberof errors
* @since 1.0.0
*/
err('AddCurrentlyOnlySupportAfterInsertion'),
/**
* Thrown when a specified target refers to a undefined type.
* It means the user has missed a type definition in `types`.
* @typedef {Error} TargetMustReferToADefinedType
* @memberof errors
* @since 1.0.0
*/
err('TargetMustReferToADefinedType'),
/**
* Thrown when a user asked for a logic change
* but the logicalType_id was invalid because it referred to no existing targets
* @typedef {Error} LogicalType_idMustReferToADefinedLogicalType
* @memberof errors
* @since 1.0.0
*/
err('LogicalType_idMustReferToADefinedLogicalType'),
/**
* Thrown when a user asked for a target
* but the target_id was invalid because it referred to no existing targets
* @typedef {Error} Target_idMustReferToADefinedTarget
* @memberof errors
* @since 1.0.0
*/
err('Target_idMustReferToADefinedTarget'),
/**
* Thrown when a user asked for a operator
* but the operator_id was invalid because it referred to no existing operators
* @typedef {Error} Operator_idMustReferToADefinedOperator
* @memberof errors
* @since 1.0.0
*/
err('Operator_idMustReferToADefinedOperator'),
/**
* Thrown when a user asked for a operator change on a predicate
* but the operator_id was invalid because it referred
* to no existing operators for the currently selected predicate's target
* @typedef {Error} Operator_idMustReferToADefinedOperator
* @memberof errors
* @since 1.0.0
*/
err('Operator_idMustReferToADefinedOperator'),
/**
* Thrown when remove is called on root {@link dataclasses.CompoundPredicate}
* @typedef {Error} ForbiddenCannotRemoveRootCompoundPredicate
* @memberof errors
* @since 1.0.0
*/
err('ForbiddenCannotRemoveRootCompoundPredicate'),
/**
* Thrown when remove is called on root CompoundPredicate
* @typedef {Error} ForbiddenCannotRemoveLastComparisonPredicate
* @memberof errors
* @since 1.0.0
*/
err('ForbiddenCannotRemoveLastComparisonPredicate'),
/**
* Thrown when remove is called with an invalid type of predicate
* @typedef {Error} CannotRemoveSomethingElseThanACompoundPredicateOrAComparisonPredicate
* @memberof errors
* @since 1.0.0
*/
err('CannotRemoveSomethingElseThanACompoundPredicateOrAComparisonPredicate'),
/**
* Thrown when add is called with an invalid type of predicate
* @typedef {Error} CannotAddSomethingElseThanACompoundPredicateOrAComparisonPredicate
* @memberof errors
* @since 1.0.0
*/
err('CannotAddSomethingElseThanACompoundPredicateOrAComparisonPredicate'),
/**
* Thrown when the UI Framework adapter forgot to pass `getDefaultArgumentComponent` in the option object to UIPredicateCore constructor
* @typedef {Error} UIFrameworkMustImplementgetDefaultArgumentComponent
* @memberof errors
* @since 1.0.0
*/
err('UIFrameworkMustImplementgetDefaultArgumentComponent'),
]);