|
1 | 1 | #### 6.1.0 / 2021-06-03
|
2 |
| - * engine.removeRule() now supports removing rules by name |
3 |
| - * Added engine.updateRule(rule) |
| 2 | + |
| 3 | +- engine.removeRule() now supports removing rules by name |
| 4 | +- Added engine.updateRule(rule) |
4 | 5 |
|
5 | 6 | #### 6.0.1 / 2021-03-09
|
6 |
| - * Updates Typescript types to include `failureEvents` in EngineResult. |
| 7 | + |
| 8 | +- Updates Typescript types to include `failureEvents` in EngineResult. |
7 | 9 |
|
8 | 10 | #### 6.0.0 / 2020-12-22
|
9 |
| - * BREAKING CHANGES |
10 |
| - * To continue using [selectn](https://github.com/wilmoore/selectn.js) syntax for condition `path`s, use the new `pathResolver` feature. Read more [here](./docs/rules.md#condition-helpers-custom-path-resolver). Add the following to the engine constructor: |
11 |
| - ```js |
12 |
| - const pathResolver = (object, path) => { |
13 |
| - return selectn(path)(object) |
14 |
| - } |
15 |
| - const engine = new Engine(rules, { pathResolver }) |
16 |
| - ``` |
17 |
| - (fixes #205) |
18 |
| - * Engine and Rule events `on('success')`, `on('failure')`, and Rule callbacks `onSuccess` and `onFailure` now honor returned promises; any event handler that returns a promise will be waited upon to resolve before engine execution continues. (fixes #235) |
19 |
| - * Private `rule.event` property renamed. Use `rule.getEvent()` to avoid breaking changes in the future. |
20 |
| - * The `success-events` fact used to store successful events has been converted to an internal data structure and will no longer appear in the almanac's facts. (fixes #187) |
21 |
| - * NEW FEATURES |
22 |
| - * Engine constructor now accepts a `pathResolver` option for resolving condition `path` properties. Read more [here](./docs/rules.md#condition-helpers-custom-path-resolver). (fixes #210) |
23 |
| - * Engine.run() now returns three additional data structures: |
24 |
| - * `failureEvents`, an array of all failed rules events. (fixes #192) |
25 |
| - * `results`, an array of RuleResults for each successful rule (fixes #216) |
26 |
| - * `failureResults`, an array of RuleResults for each failed rule |
27 | 11 |
|
| 12 | +- BREAKING CHANGES |
| 13 | + - To continue using [selectn](https://github.com/wilmoore/selectn.js) syntax for condition `path`s, use the new `pathResolver` feature. Read more [here](./docs/rules.md#condition-helpers-custom-path-resolver). Add the following to the engine constructor: |
| 14 | + ```js |
| 15 | + const pathResolver = (object, path) => { |
| 16 | + return selectn(path)(object); |
| 17 | + }; |
| 18 | + const engine = new Engine(rules, { pathResolver }); |
| 19 | + ``` |
| 20 | + (fixes #205) |
| 21 | + - Engine and Rule events `on('success')`, `on('failure')`, and Rule callbacks `onSuccess` and `onFailure` now honor returned promises; any event handler that returns a promise will be waited upon to resolve before engine execution continues. (fixes #235) |
| 22 | + - Private `rule.event` property renamed. Use `rule.getEvent()` to avoid breaking changes in the future. |
| 23 | + - The `success-events` fact used to store successful events has been converted to an internal data structure and will no longer appear in the almanac's facts. (fixes #187) |
| 24 | +- NEW FEATURES |
| 25 | + - Engine constructor now accepts a `pathResolver` option for resolving condition `path` properties. Read more [here](./docs/rules.md#condition-helpers-custom-path-resolver). (fixes #210) |
| 26 | + - Engine.run() now returns three additional data structures: |
| 27 | + - `failureEvents`, an array of all failed rules events. (fixes #192) |
| 28 | + - `results`, an array of RuleResults for each successful rule (fixes #216) |
| 29 | + - `failureResults`, an array of RuleResults for each failed rule |
28 | 30 |
|
29 | 31 | #### 5.3.0 / 2020-12-02
|
30 |
| - * Allow facts to have a value of `undefined` |
| 32 | +
|
| 33 | +- Allow facts to have a value of `undefined` |
31 | 34 |
|
32 | 35 | #### 5.2.0 / 2020-11-31
|
33 |
| - * No changes; published to correct an accidental publish of untagged alpha |
| 36 | +
|
| 37 | +- No changes; published to correct an accidental publish of untagged alpha |
34 | 38 |
|
35 | 39 | #### 5.0.4 / 2020-09-26
|
36 |
| - * Upgrade dependencies to latest |
| 40 | +
|
| 41 | +- Upgrade dependencies to latest |
37 | 42 |
|
38 | 43 | #### 5.0.3 / 2020-01-26
|
39 |
| - * Upgrade jsonpath-plus dependency, to fix inconsistent scalar results (#175) |
| 44 | +
|
| 45 | +- Upgrade jsonpath-plus dependency, to fix inconsistent scalar results (#175) |
40 | 46 |
|
41 | 47 | #### 5.0.2 / 2020-01-18
|
42 |
| -* BUGFIX: Add missing `DEBUG` log for almanac.addRuntimeFact() |
| 48 | +
|
| 49 | +- BUGFIX: Add missing `DEBUG` log for almanac.addRuntimeFact() |
43 | 50 |
|
44 | 51 | #### 5.0.1 / 2020-01-18
|
45 |
| -* BUGFIX: `DEBUG` envs works with cookies disables |
| 52 | +
|
| 53 | +- BUGFIX: `DEBUG` envs works with cookies disables |
46 | 54 |
|
47 | 55 | #### 5.0.0 / 2019-11-29
|
48 |
| - * BREAKING CHANGES |
49 |
| - * Rule conditions' `path` property is now interpreted using [json-path](https://goessner.net/articles/JsonPath/) |
50 |
| - * To continue using the old syntax (provided via [selectn](https://github.com/wilmoore/selectn.js)), `npm install selectn` as a direct dependency, and `json-rules-engine` will continue to interpret legacy paths this way. |
51 |
| - * Any path starting with `$` will be assumed to use `json-path` syntax |
| 56 | +
|
| 57 | +- BREAKING CHANGES |
| 58 | + - Rule conditions' `path` property is now interpreted using [json-path](https://goessner.net/articles/JsonPath/) |
| 59 | + - To continue using the old syntax (provided via [selectn](https://github.com/wilmoore/selectn.js)), `npm install selectn` as a direct dependency, and `json-rules-engine` will continue to interpret legacy paths this way. |
| 60 | + - Any path starting with `$` will be assumed to use `json-path` syntax |
52 | 61 |
|
53 | 62 | #### 4.1.0 / 2019-09-27
|
54 |
| - * Export Typescript definitions (@brianphillips) |
| 63 | + |
| 64 | +- Export Typescript definitions (@brianphillips) |
55 | 65 |
|
56 | 66 | #### 4.0.0 / 2019-08-22
|
57 |
| - * BREAKING CHANGES |
58 |
| - * `engine.run()` now returns a hash of events and almanac: `{ events: [], almanac: Almanac instance }`. Previously in v3, the `run()` returned the `events` array. |
59 |
| - * For example, `const events = await engine.run()` under v3 will need to be changed to `const { events } = await engine.run()` under v4. |
| 67 | + |
| 68 | +- BREAKING CHANGES |
| 69 | + - `engine.run()` now returns a hash of events and almanac: `{ events: [], almanac: Almanac instance }`. Previously in v3, the `run()` returned the `events` array. |
| 70 | + - For example, `const events = await engine.run()` under v3 will need to be changed to `const { events } = await engine.run()` under v4. |
60 | 71 |
|
61 | 72 | #### 3.1.0 / 2019-07-19
|
62 |
| - * Feature: `rule.setName()` and `ruleResult.name` |
| 73 | + |
| 74 | +- Feature: `rule.setName()` and `ruleResult.name` |
63 | 75 |
|
64 | 76 | #### 3.0.3 / 2019-07-15
|
65 |
| - * Fix "localStorage.debug" not working in browsers |
| 77 | + |
| 78 | +- Fix "localStorage.debug" not working in browsers |
66 | 79 |
|
67 | 80 | #### 3.0.2 / 2019-05-23
|
68 |
| - * Fix "process" not defined error in browsers lacking node.js global shims |
| 81 | + |
| 82 | +- Fix "process" not defined error in browsers lacking node.js global shims |
69 | 83 |
|
70 | 84 | #### 3.0.0 / 2019-05-17
|
71 |
| - * BREAKING CHANGES |
72 |
| - * Previously all conditions with undefined facts would resolve false. With this change, undefined facts values are treated as `undefined`. |
73 |
| - * Greatly improved performance of `allowUndefinedfacts = true` engine option |
74 |
| - * Reduce package bundle size by ~40% |
| 85 | + |
| 86 | +- BREAKING CHANGES |
| 87 | + - Previously all conditions with undefined facts would resolve false. With this change, undefined facts values are treated as `undefined`. |
| 88 | +- Greatly improved performance of `allowUndefinedfacts = true` engine option |
| 89 | +- Reduce package bundle size by ~40% |
75 | 90 |
|
76 | 91 | #### 2.3.5 / 2019-04-26
|
77 |
| - * Replace debug with vanilla console.log |
| 92 | + |
| 93 | +- Replace debug with vanilla console.log |
78 | 94 |
|
79 | 95 | #### 2.3.4 / 2019-04-26
|
80 |
| - * Use Array.isArray instead of instanceof to test Array parameters to address edge cases |
| 96 | + |
| 97 | +- Use Array.isArray instead of instanceof to test Array parameters to address edge cases |
81 | 98 |
|
82 | 99 | #### 2.3.3 / 2019-04-23
|
83 |
| - * Fix rules cache not clearing after removeRule() |
| 100 | + |
| 101 | +- Fix rules cache not clearing after removeRule() |
84 | 102 |
|
85 | 103 | #### 2.3.2 / 2018-12-28
|
86 |
| - * Upgrade all dependencies to latest |
| 104 | + |
| 105 | +- Upgrade all dependencies to latest |
87 | 106 |
|
88 | 107 | #### 2.3.1 / 2018-12-03
|
89 |
| - * IE8 compatibility: replace Array.forEach with for loop (@knalbandianbrightgrove) |
| 108 | + |
| 109 | +- IE8 compatibility: replace Array.forEach with for loop (@knalbandianbrightgrove) |
90 | 110 |
|
91 | 111 | #### 2.3.0 / 2018-05-03
|
92 |
| - * Engine.removeFact() - removes fact from the engine (@SaschaDeWaal) |
93 |
| - * Engine.removeRule() - removes rule from the engine (@SaschaDeWaal) |
94 |
| - * Engine.removeOperator() - removes operator from the engine (@SaschaDeWaal) |
| 112 | + |
| 113 | +- Engine.removeFact() - removes fact from the engine (@SaschaDeWaal) |
| 114 | +- Engine.removeRule() - removes rule from the engine (@SaschaDeWaal) |
| 115 | +- Engine.removeOperator() - removes operator from the engine (@SaschaDeWaal) |
95 | 116 |
|
96 | 117 | #### 2.2.0 / 2018-04-19
|
97 |
| - * Performance: Constant facts now perform 18-26X better |
98 |
| - * Performance: Removes await/async transpilation and json.stringify calls, significantly improving overall performance |
| 118 | + |
| 119 | +- Performance: Constant facts now perform 18-26X better |
| 120 | +- Performance: Removes await/async transpilation and json.stringify calls, significantly improving overall performance |
99 | 121 |
|
100 | 122 | #### 2.1.0 / 2018-02-19
|
101 |
| - * Publish dist updates for 2.0.3 |
| 123 | + |
| 124 | +- Publish dist updates for 2.0.3 |
102 | 125 |
|
103 | 126 | #### 2.0.3 / 2018-01-29
|
104 |
| - * Add factResult and result to the JSON generated for Condition (@bjacobso) |
| 127 | + |
| 128 | +- Add factResult and result to the JSON generated for Condition (@bjacobso) |
105 | 129 |
|
106 | 130 | #### 2.0.2 / 2017-07-24
|
107 |
| - * Bugfix IE8 support |
| 131 | + |
| 132 | +- Bugfix IE8 support |
108 | 133 |
|
109 | 134 | #### 2.0.1 / 2017-07-05
|
110 |
| - * Bugfix rule result serialization |
| 135 | + |
| 136 | +- Bugfix rule result serialization |
111 | 137 |
|
112 | 138 | #### 2.0.0 / 2017-04-21
|
113 |
| - * Publishing 2.0.0 |
| 139 | + |
| 140 | +- Publishing 2.0.0 |
114 | 141 |
|
115 | 142 | #### 2.0.0-beta2 / 2017-04-10
|
116 |
| - * Fix fact path object checking to work with objects that have prototypes (lodash isObjectLike instead of isPlainObject) |
| 143 | + |
| 144 | +- Fix fact path object checking to work with objects that have prototypes (lodash isObjectLike instead of isPlainObject) |
117 | 145 |
|
118 | 146 | #### 2.0.0-beta1 / 2017-04-09
|
119 |
| - * Add rule results |
120 |
| - * Document fact .path ability to parse properties containing dots |
121 |
| - * Bump dependencies |
122 |
| - * BREAKING CHANGES |
123 |
| - * `engine.on('failure', (rule, almanac))` is now `engine.on('failure', (event, almanac, ruleResult))` |
124 |
| - * `engine.on(eventType, (eventParams, engine))` is now `engine.on(eventType, (eventParams, almanac, ruleResult))` |
| 147 | + |
| 148 | +- Add rule results |
| 149 | +- Document fact .path ability to parse properties containing dots |
| 150 | +- Bump dependencies |
| 151 | +- BREAKING CHANGES |
| 152 | + - `engine.on('failure', (rule, almanac))` is now `engine.on('failure', (event, almanac, ruleResult))` |
| 153 | + - `engine.on(eventType, (eventParams, engine))` is now `engine.on(eventType, (eventParams, almanac, ruleResult))` |
125 | 154 |
|
126 | 155 | #### 1.5.1 / 2017-03-19
|
127 |
| - * Bugfix almanac.factValue skipping interpreting condition "path" for cached facts |
| 156 | + |
| 157 | +- Bugfix almanac.factValue skipping interpreting condition "path" for cached facts |
128 | 158 |
|
129 | 159 | #### 1.5.0 / 2017-03-12
|
130 |
| - * Add fact comparison conditions |
| 160 | + |
| 161 | +- Add fact comparison conditions |
131 | 162 |
|
132 | 163 | #### 1.4.0 / 2017-01-23
|
133 |
| - * Add `allowUndefinedFacts` engine option |
| 164 | + |
| 165 | +- Add `allowUndefinedFacts` engine option |
134 | 166 |
|
135 | 167 | #### 1.3.1 / 2017-01-16
|
136 |
| - * Bump object-hash dependency to latest |
| 168 | + |
| 169 | +- Bump object-hash dependency to latest |
137 | 170 |
|
138 | 171 | #### 1.3.0 / 2016-10-24
|
139 |
| - * Rule event emissions |
140 |
| - * Rule chaining |
| 172 | + |
| 173 | +- Rule event emissions |
| 174 | +- Rule chaining |
141 | 175 |
|
142 | 176 | #### 1.2.1 / 2016-10-22
|
143 |
| - * Use Array.indexOf instead of Array.includes for older node version compatibility |
| 177 | + |
| 178 | +- Use Array.indexOf instead of Array.includes for older node version compatibility |
144 | 179 |
|
145 | 180 | #### 1.2.0 / 2016-09-13
|
146 |
| - * Fact path support |
| 181 | + |
| 182 | +- Fact path support |
147 | 183 |
|
148 | 184 | #### 1.1.0 / 2016-09-11
|
149 |
| - * Custom operator support |
| 185 | + |
| 186 | +- Custom operator support |
150 | 187 |
|
151 | 188 | #### 1.0.4 / 2016-06-18
|
152 |
| - * fix issue #6; runtime facts unique to each run() |
| 189 | + |
| 190 | +- fix issue #6; runtime facts unique to each run() |
153 | 191 |
|
154 | 192 | #### 1.0.3 / 2016-06-15
|
155 |
| - * fix issue #5; dependency error babel-core/register |
| 193 | + |
| 194 | +- fix issue #5; dependency error babel-core/register |
156 | 195 |
|
157 | 196 | #### 1.0.0 / 2016-05-01
|
158 |
| - * api stable; releasing 1.0 |
159 |
| - * engine.run() now returns triggered events |
| 197 | + |
| 198 | +- api stable; releasing 1.0 |
| 199 | +- engine.run() now returns triggered events |
160 | 200 |
|
161 | 201 | #### 1.0.0-beta10 / 2016-04-16
|
162 |
| - * Completed the 'fact-dependecy' advanced example |
163 |
| - * Updated addFact and addRule engine methods to return 'this' for easy chaining |
| 202 | + |
| 203 | +- Completed the 'fact-dependecy' advanced example |
| 204 | +- Updated addFact and addRule engine methods to return 'this' for easy chaining |
164 | 205 |
|
165 | 206 | #### 1.0.0-beta9 / 2016-04-11
|
166 |
| - * Completed the 'basic' example |
167 |
| - * [BREAKING CHANGE] update engine.on('success') and engine.on('failure') to pass the current almanac instance as the second argument, rather than the engine |
| 207 | + |
| 208 | +- Completed the 'basic' example |
| 209 | +- [BREAKING CHANGE] update engine.on('success') and engine.on('failure') to pass the current almanac instance as the second argument, rather than the engine |
0 commit comments