json-rules-engine
Advanced tools
Comparing version 6.0.1 to 6.1.0
@@ -0,1 +1,5 @@ | ||
#### 6.1.0 / 2021-06-03 | ||
* engine.removeRule() now supports removing rules by name | ||
* Added engine.updateRule(rule) | ||
#### 6.0.1 / 2021-03-09 | ||
@@ -2,0 +6,0 @@ * Updates Typescript types to include `failureEvents` in EngineResult. |
@@ -102,7 +102,5 @@ 'use strict'; | ||
if (!Object.prototype.hasOwnProperty.call(properties, 'conditions')) throw new Error('Engine: addRule() argument requires "conditions" property'); | ||
rule = new _rule2.default(properties); | ||
} | ||
rule.setEngine(this); | ||
this.rules.push(rule); | ||
@@ -114,3 +112,3 @@ this.prioritizedRules = null; | ||
/** | ||
* Remove a rule from the engine | ||
* update a rule in the engine | ||
* @param {object|Rule} rule - rule definition. Must be a instance of Rule | ||
@@ -120,10 +118,41 @@ */ | ||
}, { | ||
key: 'updateRule', | ||
value: function updateRule(rule) { | ||
var ruleIndex = this.rules.findIndex(function (ruleInEngine) { | ||
return ruleInEngine.name === rule.name; | ||
}); | ||
if (ruleIndex > -1) { | ||
this.rules.splice(ruleIndex, 1); | ||
this.addRule(rule); | ||
this.prioritizedRules = null; | ||
} else { | ||
throw new Error('Engine: updateRule() rule not found'); | ||
} | ||
} | ||
/** | ||
* Remove a rule from the engine | ||
* @param {object|Rule|string} rule - rule definition. Must be a instance of Rule | ||
*/ | ||
}, { | ||
key: 'removeRule', | ||
value: function removeRule(rule) { | ||
if (rule instanceof _rule2.default === false) throw new Error('Engine: removeRule() rule must be a instance of Rule'); | ||
var index = this.rules.indexOf(rule); | ||
if (index === -1) return false; | ||
this.prioritizedRules = null; | ||
return Boolean(this.rules.splice(index, 1).length); | ||
var ruleRemoved = false; | ||
if (!(rule instanceof _rule2.default)) { | ||
var filteredRules = this.rules.filter(function (ruleInEngine) { | ||
return ruleInEngine.name !== rule; | ||
}); | ||
ruleRemoved = filteredRules.length !== this.rules.length; | ||
this.rules = filteredRules; | ||
} else { | ||
var index = this.rules.indexOf(rule); | ||
if (index > -1) { | ||
ruleRemoved = Boolean(this.rules.splice(index, 1).length); | ||
} | ||
} | ||
if (ruleRemoved) { | ||
this.prioritizedRules = null; | ||
} | ||
return ruleRemoved; | ||
} | ||
@@ -130,0 +159,0 @@ |
{ | ||
"name": "json-rules-engine", | ||
"version": "6.0.1", | ||
"version": "6.1.0", | ||
"description": "Rules Engine expressed in simple json", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
77529
1443