js-rules-engine
Version:
JavaScript rules engine for validating data object structures.
61 lines • 2 kB
JavaScript
;
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Engine = void 0;
var default_operators_1 = require("./default-operators");
/**
* Engine.
*/
var Engine = /** @class */ (function () {
function Engine() {
/**
* Registered operators.
*/
this.operators = [];
this.operators = __spreadArrays(default_operators_1.defaultOperators);
}
/**
* Get operator by name.
*
* @param name Operator name.
*/
Engine.prototype.getOperator = function (name) {
var operator = this.operators.find(function (item) { return item.name === name; });
if (!operator) {
throw new Error("Engine: operator \"" + name + "\" not found");
}
return operator;
};
/**
* Add an operator.
*
* @param operator Operator to add.
*/
Engine.prototype.addOperator = function (operator) {
var exists = this.operators.some(function (item) { return item.name === operator.name; });
if (exists) {
throw new Error("Engine: operator \"" + operator.name + "\" already exists");
}
this.operators.push(operator);
};
/**
* Remove an operator by name.
*
* @param name Operator name.
*/
Engine.prototype.removeOperator = function (name) {
var index = this.operators.findIndex(function (item) { return item.name === name; });
if (index !== -1) {
this.operators.splice(index, 1);
}
};
return Engine;
}());
exports.Engine = Engine;
//# sourceMappingURL=engine.js.map