@o3r/rules-engine 11.1.0-prerelease.27 → 11.1.0-prerelease.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -19
- package/esm2022/services/runner/rules-engine.runner.service.mjs +9 -2
- package/fesm2022/o3r-rules-engine.mjs +7 -0
- package/fesm2022/o3r-rules-engine.mjs.map +1 -1
- package/package.json +5 -5
- package/services/runner/rules-engine.runner.service.d.ts +6 -1
- package/services/runner/rules-engine.runner.service.d.ts.map +1 -1
package/README.md
CHANGED
|
@@ -12,8 +12,25 @@ This package is an [Otter Framework Module](https://github.com/AmadeusITGroup/ot
|
|
|
12
12
|
[](https://www.npmjs.com/package/@o3r/rules-engine)
|
|
13
13
|
[](https://www.npmjs.com/package/@o3r/rules-engine)
|
|
14
14
|
|
|
15
|
-
This module provides a
|
|
16
|
-
|
|
15
|
+
This module provides a rules engine that can run on your user's browser to customize the ([translations](https://www.npmjs.com/package/@o3r/localization),
|
|
16
|
+
[//]: # (Should we target placeholder or the component npmjs, and we add a section on the placeholder there?)
|
|
17
|
+
[placeholders](https://github.com/AmadeusITGroup/otter/blob/main/docs/components/PLACEHOLDERS.md) and [configurations](https://www.npmjs.com/package/@o3r/configuration)) of your application at runtime.
|
|
18
|
+
|
|
19
|
+
The rules engine interprets a list of [actions](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/README.md#action) to execute based on the evaluation of [Rulesets](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/README.md#ruleset)
|
|
20
|
+
and their conditions. Conditions are logical expressions relying on [operators](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/README.md#operator) and variables we call
|
|
21
|
+
[facts](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/README.md#fact).
|
|
22
|
+
|
|
23
|
+
You can store your list of Rulesets on a static JSON file.
|
|
24
|
+
|
|
25
|
+
This mechanism allows you to bring UI personalization based on runtime events without the need of a backend service.
|
|
26
|
+
This can be useful if you want to drive dynamic behavior.
|
|
27
|
+
|
|
28
|
+
For example, you could consider leveraging this feature to display assets based on the current season or for some special events, or to drive
|
|
29
|
+
A/B testing on your components.
|
|
30
|
+
|
|
31
|
+
You will find more information on the concepts behind the rules engine in its [dedicated documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/README.md).
|
|
32
|
+
For a demonstration of the rules engine capabilities, you can refer to the [live example](https://amadeusitgroup.github.io/otter/#/rules-engine)
|
|
33
|
+
in the Otter showcase.
|
|
17
34
|
|
|
18
35
|
## How to install
|
|
19
36
|
|
|
@@ -26,27 +43,25 @@ ng add @o3r/rules-engine
|
|
|
26
43
|
|
|
27
44
|
## How to use
|
|
28
45
|
|
|
29
|
-
|
|
46
|
+
The package exposes the ``RulesEngineRunnerService`` that can drive all the Otter customization-based services
|
|
47
|
+
in order to personalize the user experience.
|
|
48
|
+
On its own, the service will do nothing and will need __action handlers__ to register with the list of supported actions
|
|
49
|
+
and their implementation.
|
|
50
|
+
|
|
51
|
+
Not only this allows for a better extensibility of the service, but it also keeps the number of imported module to the
|
|
52
|
+
bare minimum for a lighter application.
|
|
30
53
|
|
|
31
|
-
|
|
32
|
-
- [cms-json-imports](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/cms-json-imports.md)
|
|
33
|
-
- [create-custom-fact](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/create-custom-fact.md)
|
|
34
|
-
- [debug-panel](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/debug-panel.md)
|
|
35
|
-
- [debug](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/debug.md)
|
|
36
|
-
- [dedicated-component-ruleset](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/dedicated-component-ruleset.md)
|
|
37
|
-
- [performance-metrics](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/performance-metrics.md)
|
|
38
|
-
- [placeholders](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/placeholders.md)
|
|
54
|
+
Find more information on the [Otter rules engine documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/how-to-use/README.md).
|
|
39
55
|
|
|
40
56
|
## Examples
|
|
41
57
|
|
|
42
58
|
Several examples of the rules engine usage are available on the following links:
|
|
43
59
|
|
|
44
|
-
- [
|
|
45
|
-
- [complex
|
|
46
|
-
- [custom
|
|
47
|
-
- [
|
|
48
|
-
- [
|
|
49
|
-
- [runtime-facts](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/runtime-facts.md)
|
|
60
|
+
- [Basic rule](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/basic-rule.md)
|
|
61
|
+
- [Rule with complex fact](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/complex-fact.md)
|
|
62
|
+
- [Rule with custom operator](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/custom-operator.md)
|
|
63
|
+
- [Rule with Nested Conditions](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/nested-conditions.md)
|
|
64
|
+
- [Rule using runtime facts](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/examples/runtime-facts.md)
|
|
50
65
|
|
|
51
66
|
## Generators
|
|
52
67
|
|
|
@@ -59,6 +74,14 @@ Otter framework provides a set of code generators based on [angular schematics](
|
|
|
59
74
|
| facts-service | Generate a facts service | `ng g facts-service` |
|
|
60
75
|
| operators | Generate an operator | `ng g operator` |
|
|
61
76
|
|
|
62
|
-
##
|
|
77
|
+
## Debug
|
|
78
|
+
A whole section of the [Otter Chrome Devtool extension](https://chromewebstore.google.com/detail/otter-devtools/aejabgendbpckkdnjaphhlifbhepmbne) is dedicated to the debug of the rules engine with
|
|
79
|
+
a visual representation of your Rulesets and a history of the run, conditions met and actions applied.
|
|
80
|
+
|
|
81
|
+
Find more information on the tool in the [Otter Chrome Devtool extension documentation](https://github.com/AmadeusITGroup/otter/blob/main/docs/dev-tools/chrome-devtools.md)
|
|
82
|
+
and its [dedicated section in the rules engine documentation](https://github.com/AmadeusITGroup/otter/blob/main/docs/rules-engine/how-to-use/chrome-extension.md).
|
|
83
|
+
|
|
84
|
+
## External links
|
|
63
85
|
|
|
64
|
-
More details regarding the way the rules engine is working can be found in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/)
|
|
86
|
+
More details regarding the way the rules engine is working can be found in the [documentation](https://github.com/AmadeusITGroup/otter/tree/main/docs/rules-engine/).<br>
|
|
87
|
+
A live example is available in the [Otter Showcase Application](https://amadeusitgroup.github.io/otter/#/rules-engine) with reference to its code source.
|
|
@@ -3,7 +3,7 @@ import { select, Store } from '@ngrx/store';
|
|
|
3
3
|
import { BehaviorSubject, combineLatest, Subscription } from 'rxjs';
|
|
4
4
|
import { filter, map, shareReplay, switchMap } from 'rxjs/operators';
|
|
5
5
|
import { EngineDebugger, operatorList, RulesEngine } from '../../engine/index';
|
|
6
|
-
import { selectActiveRuleSets, selectAllRulesets, selectComponentsLinkedToRuleset } from '../../stores';
|
|
6
|
+
import { selectActiveRuleSets, selectAllRulesets, selectComponentsLinkedToRuleset, setRulesetsEntities } from '../../stores';
|
|
7
7
|
import { RULES_ENGINE_OPTIONS } from '../rules-engine.token';
|
|
8
8
|
import { LoggerService } from '@o3r/logger';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
@@ -76,6 +76,13 @@ export class RulesEngineRunnerService {
|
|
|
76
76
|
upsertOperators(operators) {
|
|
77
77
|
this.engine.upsertOperators(operators);
|
|
78
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Upsert a list of RuleSets to be run in the engine
|
|
81
|
+
* @param ruleSets
|
|
82
|
+
*/
|
|
83
|
+
upsertRulesets(ruleSets) {
|
|
84
|
+
this.store.dispatch(setRulesetsEntities({ entities: ruleSets }));
|
|
85
|
+
}
|
|
79
86
|
/** @inheritdoc */
|
|
80
87
|
ngOnDestroy() {
|
|
81
88
|
this.subscription.unsubscribe();
|
|
@@ -111,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImpor
|
|
|
111
118
|
type: Inject,
|
|
112
119
|
args: [RULES_ENGINE_OPTIONS]
|
|
113
120
|
}] }] });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLnJ1bm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3J1bm5lci9ydWxlcy1lbmdpbmUucnVubmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkUsT0FBTyxFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFN0UsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLCtCQUErQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxvQkFBb0IsRUFBNEIsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sYUFBYSxDQUFDOzs7O0FBSTFDLE1BQU0sT0FBTyx3QkFBd0I7SUFzQm5DLFlBQ21CLEtBQTJCLEVBQzNCLE1BQXFCLEVBQ0ksWUFBd0M7UUFGakUsVUFBSyxHQUFMLEtBQUssQ0FBc0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQXRCOUIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSzVDLHNEQUFzRDtRQUM1QyxzQkFBaUIsR0FBK0MsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFXbEcsOEJBQThCO1FBQ2QsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FB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OlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtzZWxlY3QsIFN0b3JlfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB0eXBlIHtBY3Rpb25CbG9jaywgRmFjdCwgT3BlcmF0b3IsIFJ1bGVzZXQsIFVuYXJ5T3BlcmF0b3J9IGZyb20gJy4uLy4uL2VuZ2luZS9pbmRleCc7XG5pbXBvcnQge0VuZ2luZURlYnVnZ2VyLCBvcGVyYXRvckxpc3QsIFJ1bGVzRW5naW5lfSBmcm9tICcuLi8uLi9lbmdpbmUvaW5kZXgnO1xuaW1wb3J0IHR5cGUge1J1bGVzZXRzU3RvcmV9IGZyb20gJy4uLy4uL3N0b3Jlcyc7XG5pbXBvcnQge3NlbGVjdEFjdGl2ZVJ1bGVTZXRzLCBzZWxlY3RBbGxSdWxlc2V0cywgc2VsZWN0Q29tcG9uZW50c0xpbmtlZFRvUnVsZXNldH0gZnJvbSAnLi4vLi4vc3RvcmVzJztcbmltcG9ydCB7UlVMRVNfRU5HSU5FX09QVElPTlMsIFJ1bGVzRW5naW5lU2VydmljZU9wdGlvbnN9IGZyb20gJy4uL3J1bGVzLWVuZ2luZS50b2tlbic7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJ0BvM3IvbG9nZ2VyJztcbmltcG9ydCB0eXBlIHtSdWxlc0VuZ2luZUFjdGlvbkhhbmRsZXJ9IGZyb20gJ0BvM3IvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSdWxlc0VuZ2luZVJ1bm5lclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgLyoqIFJ1bGVzZXRzIHRvIHJlc3RyaWN0IHRoZSBleGVjdXRpb24gb2YgdGhlIGVuZ2luZSAqL1xuICBwcm90ZWN0ZWQgcnVsZVNldHMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdIHwgdW5kZWZpbmVkPjtcblxuICAvKiogT2JzZXJ2YWJsZSBvZiBjb21wb25lbnQgbGlua2VkIHRvIHRoZSBjb21wb25lbnQgKi9cbiAgcHJvdGVjdGVkIGxpbmtlZENvbXBvbmVudHMkOiBCZWhhdmlvclN1YmplY3Q8eyBba2V5OiBzdHJpbmddOiBudW1iZXIgfT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTtcblxuICAvKiogTWFwIG9mIGVuZ2luZXMgZGVkaWNhdGVkIHRvIGVhY2ggcnVsZSBzZXRzICovXG4gIHB1YmxpYyByZWFkb25seSBlbmdpbmU6IFJ1bGVzRW5naW5lO1xuXG4gIC8qKiBzdHJlYW0gb2YgdGhlIHdob2xlIHJ1bGVzZXQgcmVzdWx0cyAqL1xuICBwdWJsaWMgZXZlbnRzJDogT2JzZXJ2YWJsZTxBY3Rpb25CbG9ja1tdPjtcblxuICAvKiogRW5hYmxlIGFjdGlvbiBleGVjdXRpb24gb24gbmV3IHN0YXRlIGNoYW5nZSAqL1xuICBwdWJsaWMgZW5hYmxlZDogYm9vbGVhbjtcblxuICAvKiogTGlzdCBvZiBhY3Rpb24gaGFuZGxlcnMgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjdGlvbkhhbmRsZXJzID0gbmV3IFNldDxSdWxlc0VuZ2luZUFjdGlvbkhhbmRsZXI+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogU3RvcmU8UnVsZXNldHNTdG9yZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChSVUxFU19FTkdJTkVfT1BUSU9OUykgZW5naW5lQ29uZmlnPzogUnVsZXNFbmdpbmVTZXJ2aWNlT3B0aW9ucykge1xuICAgIHRoaXMuZW5hYmxlZCA9ICFlbmdpbmVDb25maWc/LmRyeVJ1bjtcbiAgICB0aGlzLmVuZ2luZSA9IG5ldyBSdWxlc0VuZ2luZSh7XG4gICAgICBkZWJ1Z2dlcjogZW5naW5lQ29uZmlnPy5kZWJ1ZyA/IG5ldyBFbmdpbmVEZWJ1Z2dlcih7ZXZlbnRzU3RhY2tMaW1pdDogZW5naW5lQ29uZmlnPy5kZWJ1Z0V2ZW50c1N0YWNrTGltaXR9KSA6IHVuZGVmaW5lZCxcbiAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXJcbiAgICB9KTtcbiAgICB0aGlzLnJ1bGVTZXRzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RBY3RpdmVSdWxlU2V0cykpLFxuICAgICAgdGhpcy5saW5rZWRDb21wb25lbnRzJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGxpbmtlZENvbXBvbmVudHNOYW1lc01hcCkgPT4gdGhpcy5zdG9yZS5waXBlKFxuICAgICAgICAgIHNlbGVjdChzZWxlY3RDb21wb25lbnRzTGlua2VkVG9SdWxlc2V0KSxcbiAgICAgICAgICBtYXAoKHJ1bGVzZXRzV2l0aExpbmtlZENvbXBvbmVudHNNYXApID0+XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhydWxlc2V0c1dpdGhMaW5rZWRDb21wb25lbnRzTWFwLm9yKS5maWx0ZXIoKHJ1bGVzZXRJZCkgPT5cbiAgICAgICAgICAgICAgcnVsZXNldHNXaXRoTGlua2VkQ29tcG9uZW50c01hcC5vcltydWxlc2V0SWRdLnNvbWUoKGNvbXBvbmVudElkKSA9PiBsaW5rZWRDb21wb25lbnRzTmFtZXNNYXBbY29tcG9uZW50SWRdID4gMClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICkpXG4gICAgICApXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2FjdGl2ZVJ1bGVzZXRzLCBsaW5rZWRDb21wb25lbnRzUnVsZXNldHNJZHNdKSA9PiAoWy4uLmFjdGl2ZVJ1bGVzZXRzLCAuLi5saW5rZWRDb21wb25lbnRzUnVsZXNldHNJZHNdKSlcbiAgICApO1xuXG4gICAgdGhpcy5ldmVudHMkID0gdGhpcy5ydWxlU2V0cyQucGlwZShcbiAgICAgIHRoaXMuZW5naW5lLmdldEV2ZW50U3RyZWFtPEFjdGlvbkJsb2NrPigpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy51cHNlcnRPcGVyYXRvcnMob3BlcmF0b3JMaXN0KTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc3RvcmUucGlwZShcbiAgICAgICAgc2VsZWN0KHNlbGVjdEFsbFJ1bGVzZXRzKVxuICAgICAgKS5zdWJzY3JpYmUoKHJ1bGVzZXRzOiBSdWxlc2V0W10pID0+IHRoaXMuZW5naW5lLnVwc2VydFJ1bGVzZXRzKHJ1bGVzZXRzKSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5ldmVudHMkLnBpcGUoZmlsdGVyKCgpID0+IHRoaXMuZW5hYmxlZCkpLnN1YnNjcmliZShhc3luYyAoZXZlbnRzKSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTdGFydCBSdWxlcyBFbmdpbmUgYWN0aW9uIGV4ZWN1dGVkJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZUFjdGlvbnMoZXZlbnRzKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0FsbCBSdWxlcyBFbmdpbmUgYWN0aW9ucyBleGVjdXRlZCcpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKiBAcGFyYW0gYWN0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGV4ZWN1dGVBY3Rpb25zKGFjdGlvbnM6IEFjdGlvbkJsb2NrW10pIHtcbiAgICBjb25zdCBhY3Rpb25IYW5kbGVycyA9IFsuLi50aGlzLmFjdGlvbkhhbmRsZXJzXTtcblxuICAgIGNvbnN0IHN1cHBvcnRlZEFjdGlvbnMgPSBuZXcgU2V0KGFjdGlvbkhhbmRsZXJzLm1hcCgoaGFuZGxlcikgPT4gaGFuZGxlci5zdXBwb3J0aW5nQWN0aW9ucykuZmxhdCgpKTtcblxuICAgIGNvbnN0IGFjdGlvbk1hcHMgPSBhY3Rpb25zXG4gICAgICAuZmlsdGVyKChhY3Rpb24pID0+IHtcbiAgICAgICAgY29uc3QgaXNLbm93biA9IHN1cHBvcnRlZEFjdGlvbnMuaGFzKGFjdGlvbi5hY3Rpb25UeXBlKTtcbiAgICAgICAgaWYgKCFpc0tub3duKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybihgVGhlIGFjdGlvbiAke2FjdGlvbi5hY3Rpb25UeXBlfSBkb2VzIG5vdCBoYXZlIHJlZ2lzdGVyZWQgaGFuZGxlcmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0tub3duO1xuICAgICAgfSlcbiAgICAgIC5yZWR1Y2UoKGFjYywgYWN0aW9uKSA9PiB7XG4gICAgICAgIGFjY1thY3Rpb24uYWN0aW9uVHlwZV0gfHw9IFtdO1xuICAgICAgICBhY2NbYWN0aW9uLmFjdGlvblR5cGVdLnB1c2goYWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIEFjdGlvbkJsb2NrW10+KTtcblxuICAgIGNvbnN0IGhhbmRsaW5nID0gYWN0aW9uSGFuZGxlcnNcbiAgICAgIC5tYXAoKGhhbmRsZXIpID0+XG4gICAgICAgIGhhbmRsZXIuZXhlY3V0ZUFjdGlvbnMoXG4gICAgICAgICAgaGFuZGxlci5zdXBwb3J0aW5nQWN0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcigoc3VwcG9ydGVkQWN0aW9uKSA9PiBhY3Rpb25NYXBzW3N1cHBvcnRlZEFjdGlvbl0pXG4gICAgICAgICAgICAucmVkdWNlPEFjdGlvbkJsb2NrW10+KChhY2MsIHN1cHBvcnRlZEFjdGlvbikgPT4gYWNjLmNvbmNhdChhY3Rpb25NYXBzW3N1cHBvcnRlZEFjdGlvbl0pLCBbXSlcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKGhhbmRsaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgb3IgaW5zZXJ0IGZhY3QgaW4gcnVsZXMgZW5naW5lXG4gICAqIEBwYXJhbSBmYWN0cyBmYWN0IGxpc3QgdG8gYWRkIC8gdXBkYXRlXG4gICAqL1xuICBwdWJsaWMgdXBzZXJ0RmFjdHMoZmFjdHM6IEZhY3Q8dW5rbm93bj4gfCBGYWN0PHVua25vd24+W10pIHtcbiAgICB0aGlzLmVuZ2luZS51cHNlcnRGYWN0cyhmYWN0cyk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG9yIGluc2VydCBvcGVyYXRvciBpbiBydWxlcyBlbmdpbmVcbiAgICogQHBhcmFtIG9wZXJhdG9ycyBvcGVyYXRvciBsaXN0IHRvIGFkZCAvIHVwZGF0ZVxuICAgKi9cbiAgcHVibGljIHVwc2VydE9wZXJhdG9ycyhvcGVyYXRvcnM6IChPcGVyYXRvcjxhbnksIGFueT4gfCBVbmFyeU9wZXJhdG9yPGFueT4pW10pIHtcbiAgICB0aGlzLmVuZ2luZS51cHNlcnRPcGVyYXRvcnMob3BlcmF0b3JzKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgdGVtcG9yYXJ5IGEgcnVsZSBzZXRcbiAgICogQHBhcmFtIGNvbXBvbmVudENvbXB1dGVkTmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgdG8gZW5hYmxlIHRoZSBydWxlc2V0IGZvclxuICAgKi9cbiAgcHVibGljIGVuYWJsZVJ1bGVTZXRGb3IoY29tcG9uZW50Q29tcHV0ZWROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuZXdNYXAgPSB0aGlzLmxpbmtlZENvbXBvbmVudHMkLnZhbHVlO1xuICAgIG5ld01hcFtjb21wb25lbnRDb21wdXRlZE5hbWVdID0gbmV3TWFwW2NvbXBvbmVudENvbXB1dGVkTmFtZV0gPyBuZXdNYXBbY29tcG9uZW50Q29tcHV0ZWROYW1lXSArIDEgOiAxO1xuICAgIHRoaXMubGlua2VkQ29tcG9uZW50cyQubmV4dChuZXdNYXApO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGVtcG9yYXJ5IGEgcnVsZSBzZXRcbiAgICogQHBhcmFtIGNvbXBvbmVudENvbXB1dGVkTmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgdG8gZGlzYWJsZSB0aGUgcnVsZXNldCBmb3JcbiAgICovXG4gIHB1YmxpYyBkaXNhYmxlUnVsZVNldEZvcihjb21wb25lbnRDb21wdXRlZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5ld01hcCA9IHRoaXMubGlua2VkQ29tcG9uZW50cyQudmFsdWU7XG4gICAgaWYgKG5ld01hcFtjb21wb25lbnRDb21wdXRlZE5hbWVdID4gMCkge1xuICAgICAgbmV3TWFwW2NvbXBvbmVudENvbXB1dGVkTmFtZV0tLTtcbiAgICAgIHRoaXMubGlua2VkQ29tcG9uZW50cyQubmV4dChuZXdNYXApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLnJ1bm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3J1bm5lci9ydWxlcy1lbmdpbmUucnVubmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkUsT0FBTyxFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFN0UsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsK0JBQStCLEVBQy9CLG1CQUFtQixFQUNwQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsb0JBQW9CLEVBQTRCLE1BQU0sdUJBQXVCLENBQUM7QUFDdEYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGFBQWEsQ0FBQzs7OztBQUkxQyxNQUFNLE9BQU8sd0JBQXdCO0lBc0JuQyxZQUNtQixLQUEyQixFQUMzQixNQUFxQixFQUNJLFlBQXdDO1FBRmpFLFVBQUssR0FBTCxLQUFLLENBQXNCO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQWU7UUF0QjlCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUs1QyxzREFBc0Q7UUFDNUMsc0JBQWlCLEdBQStDLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBV2xHLDhCQUE4QjtRQUNkLG1CQUFjLEdBQUcsSUFB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QztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztpSUF6SlUsd0JBQXdCLG9FQXlCYixvQkFBb0I7cUlBekIvQix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVU7OzBCQTBCTixRQUFROzswQkFBSSxNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7c2VsZWN0LCBTdG9yZX0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uQmxvY2ssIEZhY3QsIE9wZXJhdG9yLCBSdWxlc2V0LCBVbmFyeU9wZXJhdG9yfSBmcm9tICcuLi8uLi9lbmdpbmUvaW5kZXgnO1xuaW1wb3J0IHtFbmdpbmVEZWJ1Z2dlciwgb3BlcmF0b3JMaXN0LCBSdWxlc0VuZ2luZX0gZnJvbSAnLi4vLi4vZW5naW5lL2luZGV4JztcbmltcG9ydCB0eXBlIHtSdWxlc2V0c1N0b3JlfSBmcm9tICcuLi8uLi9zdG9yZXMnO1xuaW1wb3J0IHtcbiAgc2VsZWN0QWN0aXZlUnVsZVNldHMsXG4gIHNlbGVjdEFsbFJ1bGVzZXRzLFxuICBzZWxlY3RDb21wb25lbnRzTGlua2VkVG9SdWxlc2V0LFxuICBzZXRSdWxlc2V0c0VudGl0aWVzXG59IGZyb20gJy4uLy4uL3N0b3Jlcyc7XG5pbXBvcnQge1JVTEVTX0VOR0lORV9PUFRJT05TLCBSdWxlc0VuZ2luZVNlcnZpY2VPcHRpb25zfSBmcm9tICcuLi9ydWxlcy1lbmdpbmUudG9rZW4nO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICdAbzNyL2xvZ2dlcic7XG5pbXBvcnQgdHlwZSB7UnVsZXNFbmdpbmVBY3Rpb25IYW5kbGVyfSBmcm9tICdAbzNyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUnVsZXNFbmdpbmVSdW5uZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIC8qKiBSdWxlc2V0cyB0byByZXN0cmljdCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBlbmdpbmUgKi9cbiAgcHJvdGVjdGVkIHJ1bGVTZXRzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXSB8IHVuZGVmaW5lZD47XG5cbiAgLyoqIE9ic2VydmFibGUgb2YgY29tcG9uZW50IGxpbmtlZCB0byB0aGUgY29tcG9uZW50ICovXG4gIHByb3RlY3RlZCBsaW5rZWRDb21wb25lbnRzJDogQmVoYXZpb3JTdWJqZWN0PHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG5cbiAgLyoqIE1hcCBvZiBlbmdpbmVzIGRlZGljYXRlZCB0byBlYWNoIHJ1bGUgc2V0cyAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lOiBSdWxlc0VuZ2luZTtcblxuICAvKiogc3RyZWFtIG9mIHRoZSB3aG9sZSBydWxlc2V0IHJlc3VsdHMgKi9cbiAgcHVibGljIGV2ZW50cyQ6IE9ic2VydmFibGU8QWN0aW9uQmxvY2tbXT47XG5cbiAgLyoqIEVuYWJsZSBhY3Rpb24gZXhlY3V0aW9uIG9uIG5ldyBzdGF0ZSBjaGFuZ2UgKi9cbiAgcHVibGljIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqIExpc3Qgb2YgYWN0aW9uIGhhbmRsZXJzICovXG4gIHB1YmxpYyByZWFkb25seSBhY3Rpb25IYW5kbGVycyA9IG5ldyBTZXQ8UnVsZXNFbmdpbmVBY3Rpb25IYW5kbGVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IFN0b3JlPFJ1bGVzZXRzU3RvcmU+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUlVMRVNfRU5HSU5FX09QVElPTlMpIGVuZ2luZUNvbmZpZz86IFJ1bGVzRW5naW5lU2VydmljZU9wdGlvbnMpIHtcbiAgICB0aGlzLmVuYWJsZWQgPSAhZW5naW5lQ29uZmlnPy5kcnlSdW47XG4gICAgdGhpcy5lbmdpbmUgPSBuZXcgUnVsZXNFbmdpbmUoe1xuICAgICAgZGVidWdnZXI6IGVuZ2luZUNvbmZpZz8uZGVidWcgPyBuZXcgRW5naW5lRGVidWdnZXIoe2V2ZW50c1N0YWNrTGltaXQ6IGVuZ2luZUNvbmZpZz8uZGVidWdFdmVudHNTdGFja0xpbWl0fSkgOiB1bmRlZmluZWQsXG4gICAgICBsb2dnZXI6IHRoaXMubG9nZ2VyXG4gICAgfSk7XG4gICAgdGhpcy5ydWxlU2V0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0QWN0aXZlUnVsZVNldHMpKSxcbiAgICAgIHRoaXMubGlua2VkQ29tcG9uZW50cyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChsaW5rZWRDb21wb25lbnRzTmFtZXNNYXApID0+IHRoaXMuc3RvcmUucGlwZShcbiAgICAgICAgICBzZWxlY3Qoc2VsZWN0Q29tcG9uZW50c0xpbmtlZFRvUnVsZXNldCksXG4gICAgICAgICAgbWFwKChydWxlc2V0c1dpdGhMaW5rZWRDb21wb25lbnRzTWFwKSA9PlxuICAgICAgICAgICAgT2JqZWN0LmtleXMocnVsZXNldHNXaXRoTGlua2VkQ29tcG9uZW50c01hcC5vcikuZmlsdGVyKChydWxlc2V0SWQpID0+XG4gICAgICAgICAgICAgIHJ1bGVzZXRzV2l0aExpbmtlZENvbXBvbmVudHNNYXAub3JbcnVsZXNldElkXS5zb21lKChjb21wb25lbnRJZCkgPT4gbGlua2VkQ29tcG9uZW50c05hbWVzTWFwW2NvbXBvbmVudElkXSA+IDApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApKVxuICAgICAgKVxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFthY3RpdmVSdWxlc2V0cywgbGlua2VkQ29tcG9uZW50c1J1bGVzZXRzSWRzXSkgPT4gKFsuLi5hY3RpdmVSdWxlc2V0cywgLi4ubGlua2VkQ29tcG9uZW50c1J1bGVzZXRzSWRzXSkpXG4gICAgKTtcblxuICAgIHRoaXMuZXZlbnRzJCA9IHRoaXMucnVsZVNldHMkLnBpcGUoXG4gICAgICB0aGlzLmVuZ2luZS5nZXRFdmVudFN0cmVhbTxBY3Rpb25CbG9jaz4oKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIHRoaXMudXBzZXJ0T3BlcmF0b3JzKG9wZXJhdG9yTGlzdCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnBpcGUoXG4gICAgICAgIHNlbGVjdChzZWxlY3RBbGxSdWxlc2V0cylcbiAgICAgICkuc3Vic2NyaWJlKChydWxlc2V0czogUnVsZXNldFtdKSA9PiB0aGlzLmVuZ2luZS51cHNlcnRSdWxlc2V0cyhydWxlc2V0cykpXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuZXZlbnRzJC5waXBlKGZpbHRlcigoKSA9PiB0aGlzLmVuYWJsZWQpKS5zdWJzY3JpYmUoYXN5bmMgKGV2ZW50cykgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU3RhcnQgUnVsZXMgRW5naW5lIGFjdGlvbiBleGVjdXRlZCcpO1xuICAgICAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBY3Rpb25zKGV2ZW50cyk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdBbGwgUnVsZXMgRW5naW5lIGFjdGlvbnMgZXhlY3V0ZWQnKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICogQHBhcmFtIGFjdGlvbnNcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBleGVjdXRlQWN0aW9ucyhhY3Rpb25zOiBBY3Rpb25CbG9ja1tdKSB7XG4gICAgY29uc3QgYWN0aW9uSGFuZGxlcnMgPSBbLi4udGhpcy5hY3Rpb25IYW5kbGVyc107XG5cbiAgICBjb25zdCBzdXBwb3J0ZWRBY3Rpb25zID0gbmV3IFNldChhY3Rpb25IYW5kbGVycy5tYXAoKGhhbmRsZXIpID0+IGhhbmRsZXIuc3VwcG9ydGluZ0FjdGlvbnMpLmZsYXQoKSk7XG5cbiAgICBjb25zdCBhY3Rpb25NYXBzID0gYWN0aW9uc1xuICAgICAgLmZpbHRlcigoYWN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzS25vd24gPSBzdXBwb3J0ZWRBY3Rpb25zLmhhcyhhY3Rpb24uYWN0aW9uVHlwZSk7XG4gICAgICAgIGlmICghaXNLbm93bikge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYFRoZSBhY3Rpb24gJHthY3Rpb24uYWN0aW9uVHlwZX0gZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIGhhbmRsZXJgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNLbm93bjtcbiAgICAgIH0pXG4gICAgICAucmVkdWNlKChhY2MsIGFjdGlvbikgPT4ge1xuICAgICAgICBhY2NbYWN0aW9uLmFjdGlvblR5cGVdIHx8PSBbXTtcbiAgICAgICAgYWNjW2FjdGlvbi5hY3Rpb25UeXBlXS5wdXNoKGFjdGlvbik7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBBY3Rpb25CbG9ja1tdPik7XG5cbiAgICBjb25zdCBoYW5kbGluZyA9IGFjdGlvbkhhbmRsZXJzXG4gICAgICAubWFwKChoYW5kbGVyKSA9PlxuICAgICAgICBoYW5kbGVyLmV4ZWN1dGVBY3Rpb25zKFxuICAgICAgICAgIGhhbmRsZXIuc3VwcG9ydGluZ0FjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHN1cHBvcnRlZEFjdGlvbikgPT4gYWN0aW9uTWFwc1tzdXBwb3J0ZWRBY3Rpb25dKVxuICAgICAgICAgICAgLnJlZHVjZTxBY3Rpb25CbG9ja1tdPigoYWNjLCBzdXBwb3J0ZWRBY3Rpb24pID0+IGFjYy5jb25jYXQoYWN0aW9uTWFwc1tzdXBwb3J0ZWRBY3Rpb25dKSwgW10pXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChoYW5kbGluZyk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG9yIGluc2VydCBmYWN0IGluIHJ1bGVzIGVuZ2luZVxuICAgKiBAcGFyYW0gZmFjdHMgZmFjdCBsaXN0IHRvIGFkZCAvIHVwZGF0ZVxuICAgKi9cbiAgcHVibGljIHVwc2VydEZhY3RzKGZhY3RzOiBGYWN0PHVua25vd24+IHwgRmFjdDx1bmtub3duPltdKSB7XG4gICAgdGhpcy5lbmdpbmUudXBzZXJ0RmFjdHMoZmFjdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBvciBpbnNlcnQgb3BlcmF0b3IgaW4gcnVsZXMgZW5naW5lXG4gICAqIEBwYXJhbSBvcGVyYXRvcnMgb3BlcmF0b3IgbGlzdCB0byBhZGQgLyB1cGRhdGVcbiAgICovXG4gIHB1YmxpYyB1cHNlcnRPcGVyYXRvcnMob3BlcmF0b3JzOiAoT3BlcmF0b3I8YW55LCBhbnk+IHwgVW5hcnlPcGVyYXRvcjxhbnk+KVtdKSB7XG4gICAgdGhpcy5lbmdpbmUudXBzZXJ0T3BlcmF0b3JzKG9wZXJhdG9ycyk7XG4gIH1cblxuICAvKipcbiAgICogVXBzZXJ0IGEgbGlzdCBvZiBSdWxlU2V0cyB0byBiZSBydW4gaW4gdGhlIGVuZ2luZVxuICAgKiBAcGFyYW0gcnVsZVNldHNcbiAgICovXG4gIHB1YmxpYyB1cHNlcnRSdWxlc2V0cyhydWxlU2V0czogUnVsZXNldFtdKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChzZXRSdWxlc2V0c0VudGl0aWVzKHtlbnRpdGllczogcnVsZVNldHN9KSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIHRlbXBvcmFyeSBhIHJ1bGUgc2V0XG4gICAqIEBwYXJhbSBjb21wb25lbnRDb21wdXRlZE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50IHRvIGVuYWJsZSB0aGUgcnVsZXNldCBmb3JcbiAgICovXG4gIHB1YmxpYyBlbmFibGVSdWxlU2V0Rm9yKGNvbXBvbmVudENvbXB1dGVkTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgbmV3TWFwID0gdGhpcy5saW5rZWRDb21wb25lbnRzJC52YWx1ZTtcbiAgICBuZXdNYXBbY29tcG9uZW50Q29tcHV0ZWROYW1lXSA9IG5ld01hcFtjb21wb25lbnRDb21wdXRlZE5hbWVdID8gbmV3TWFwW2NvbXBvbmVudENvbXB1dGVkTmFtZV0gKyAxIDogMTtcbiAgICB0aGlzLmxpbmtlZENvbXBvbmVudHMkLm5leHQobmV3TWFwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIHRlbXBvcmFyeSBhIHJ1bGUgc2V0XG4gICAqIEBwYXJhbSBjb21wb25lbnRDb21wdXRlZE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50IHRvIGRpc2FibGUgdGhlIHJ1bGVzZXQgZm9yXG4gICAqL1xuICBwdWJsaWMgZGlzYWJsZVJ1bGVTZXRGb3IoY29tcG9uZW50Q29tcHV0ZWROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuZXdNYXAgPSB0aGlzLmxpbmtlZENvbXBvbmVudHMkLnZhbHVlO1xuICAgIGlmIChuZXdNYXBbY29tcG9uZW50Q29tcHV0ZWROYW1lXSA+IDApIHtcbiAgICAgIG5ld01hcFtjb21wb25lbnRDb21wdXRlZE5hbWVdLS07XG4gICAgICB0aGlzLmxpbmtlZENvbXBvbmVudHMkLm5leHQobmV3TWFwKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2019,6 +2019,13 @@ class RulesEngineRunnerService {
|
|
|
2019
2019
|
upsertOperators(operators) {
|
|
2020
2020
|
this.engine.upsertOperators(operators);
|
|
2021
2021
|
}
|
|
2022
|
+
/**
|
|
2023
|
+
* Upsert a list of RuleSets to be run in the engine
|
|
2024
|
+
* @param ruleSets
|
|
2025
|
+
*/
|
|
2026
|
+
upsertRulesets(ruleSets) {
|
|
2027
|
+
this.store.dispatch(setRulesetsEntities({ entities: ruleSets }));
|
|
2028
|
+
}
|
|
2022
2029
|
/** @inheritdoc */
|
|
2023
2030
|
ngOnDestroy() {
|
|
2024
2031
|
this.subscription.unsubscribe();
|