@o3r/rules-engine 12.0.0-next.2 → 12.0.0-next.21
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/builders/package.json +3 -0
- package/components/rules-engine/rule-actions/rule-actions-pres.component.d.ts +1 -1
- package/components/rules-engine/rule-actions/rule-actions-pres.component.d.ts.map +1 -1
- package/components/rules-engine/rule-condition/rule-condition-pres.component.d.ts +1 -1
- package/components/rules-engine/rule-condition/rule-condition-pres.component.d.ts.map +1 -1
- package/components/rules-engine/rule-key-value/rule-key-value-pres.component.d.ts +1 -1
- package/components/rules-engine/rule-key-value/rule-key-value-pres.component.d.ts.map +1 -1
- package/components/rules-engine/rule-tree/rule-tree-pres.component.d.ts +1 -1
- package/components/rules-engine/rule-tree/rule-tree-pres.component.d.ts.map +1 -1
- package/components/rules-engine/ruleset-history/ruleset-history-pres.component.d.ts +1 -1
- package/components/rules-engine/ruleset-history/ruleset-history-pres.component.d.ts.map +1 -1
- package/components/rules-engine/ruleset-history/ruleset-history-pres.module.d.ts +7 -9
- package/components/rules-engine/ruleset-history/ruleset-history-pres.module.d.ts.map +1 -1
- package/components/rules-engine/shared/fallback-to.pipe.d.ts +0 -7
- package/components/rules-engine/shared/fallback-to.pipe.d.ts.map +1 -1
- package/components/rules-engine/shared/json-or-string.pipe.d.ts.map +1 -1
- package/engine/debug/helpers.d.ts +3 -2
- package/engine/debug/helpers.d.ts.map +1 -1
- package/engine/engine.interface.d.ts +2 -8
- package/engine/engine.interface.d.ts.map +1 -1
- package/engine/helpers/filter-ruleset-event.operator.d.ts.map +1 -1
- package/engine/ruleset-executor.d.ts.map +1 -1
- package/engine/structure.d.ts +0 -8
- package/engine/structure.d.ts.map +1 -1
- package/fesm2022/o3r-rules-engine.mjs +186 -218
- package/fesm2022/o3r-rules-engine.mjs.map +1 -1
- package/fixtures/jasmine/package.json +3 -0
- package/fixtures/jest/package.json +3 -0
- package/interfaces/index.d.ts +0 -1
- package/interfaces/index.d.ts.map +1 -1
- package/package.json +17 -22
- package/schemas/rulesets.schema.json +0 -13
- package/schematics/package.json +3 -0
- package/stores/rulesets/rulesets.selectors.d.ts +0 -5
- package/stores/rulesets/rulesets.selectors.d.ts.map +1 -1
- package/esm2022/components/index.mjs +0 -2
- package/esm2022/components/rules-engine/index.mjs +0 -4
- package/esm2022/components/rules-engine/rule-actions/rule-actions-pres.component.mjs +0 -35
- package/esm2022/components/rules-engine/rule-condition/rule-condition-pres.component.mjs +0 -36
- package/esm2022/components/rules-engine/rule-key-value/rule-key-value-pres.component.mjs +0 -63
- package/esm2022/components/rules-engine/rule-tree/rule-tree-pres.component.mjs +0 -48
- package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.component.mjs +0 -50
- package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.module.mjs +0 -23
- package/esm2022/components/rules-engine/shared/fallback-to.pipe.mjs +0 -25
- package/esm2022/components/rules-engine/shared/index.mjs +0 -4
- package/esm2022/components/rules-engine/shared/json-or-string.pipe.mjs +0 -23
- package/esm2022/components/rules-engine/shared/ruleset-history.helper.mjs +0 -51
- package/esm2022/devkit/index.mjs +0 -7
- package/esm2022/devkit/rules-engine-devkit.interface.mjs +0 -6
- package/esm2022/devkit/rules-engine-devtools.console.service.mjs +0 -111
- package/esm2022/devkit/rules-engine-devtools.message.service.mjs +0 -115
- package/esm2022/devkit/rules-engine-devtools.module.mjs +0 -47
- package/esm2022/devkit/rules-engine-devtools.service.mjs +0 -130
- package/esm2022/devkit/rules-engine-devtools.token.mjs +0 -6
- package/esm2022/engine/debug/engine.debug.mjs +0 -195
- package/esm2022/engine/debug/helpers.mjs +0 -91
- package/esm2022/engine/engine.interface.mjs +0 -2
- package/esm2022/engine/engine.mjs +0 -134
- package/esm2022/engine/fact/fact.interfaces.mjs +0 -2
- package/esm2022/engine/fact/index.mjs +0 -2
- package/esm2022/engine/helpers/filter-ruleset-event.operator.mjs +0 -19
- package/esm2022/engine/index.mjs +0 -8
- package/esm2022/engine/operator/index.mjs +0 -4
- package/esm2022/engine/operator/operator.helpers.mjs +0 -107
- package/esm2022/engine/operator/operator.interface.mjs +0 -2
- package/esm2022/engine/operator/operators/array-based.operators.mjs +0 -266
- package/esm2022/engine/operator/operators/basic.operators.mjs +0 -93
- package/esm2022/engine/operator/operators/date-based.operators.mjs +0 -119
- package/esm2022/engine/operator/operators/index.mjs +0 -10
- package/esm2022/engine/operator/operators/number-based.operators.mjs +0 -44
- package/esm2022/engine/rule/index.mjs +0 -2
- package/esm2022/engine/rule/rule.helpers.mjs +0 -50
- package/esm2022/engine/ruleset-executor.mjs +0 -256
- package/esm2022/engine/structure.mjs +0 -2
- package/esm2022/fact/fact.abstract-service.mjs +0 -12
- package/esm2022/fact/index.mjs +0 -3
- package/esm2022/fact/reserved.facts.mjs +0 -2
- package/esm2022/fixtures/jasmine/index.mjs +0 -2
- package/esm2022/fixtures/jasmine/o3r-rules-engine-fixtures-jasmine.mjs +0 -5
- package/esm2022/fixtures/jasmine/rules-engine.runner.service.fixture.jasmine.mjs +0 -14
- package/esm2022/fixtures/jest/index.mjs +0 -2
- package/esm2022/fixtures/jest/o3r-rules-engine-fixtures-jest.mjs +0 -5
- package/esm2022/fixtures/jest/rules-engine.runner.service.fixture.jest.mjs +0 -14
- package/esm2022/inner-facts/current-time/current-time-fact.service.mjs +0 -29
- package/esm2022/inner-facts/current-time/current-time.facts.mjs +0 -2
- package/esm2022/inner-facts/current-time/index.mjs +0 -3
- package/esm2022/inner-facts/index.mjs +0 -2
- package/esm2022/interfaces/action.interfaces.mjs +0 -2
- package/esm2022/interfaces/index.mjs +0 -3
- package/esm2022/interfaces/linkable-to-ruleset.interfaces.mjs +0 -2
- package/esm2022/o3r-rules-engine.mjs +0 -5
- package/esm2022/public_api.mjs +0 -9
- package/esm2022/services/index.mjs +0 -3
- package/esm2022/services/rules-engine.token.mjs +0 -9
- package/esm2022/services/runner/index.mjs +0 -3
- package/esm2022/services/runner/rules-engine.runner.module.mjs +0 -37
- package/esm2022/services/runner/rules-engine.runner.service.mjs +0 -132
- package/esm2022/stores/index.mjs +0 -2
- package/esm2022/stores/rulesets/index.mjs +0 -8
- package/esm2022/stores/rulesets/rulesets.actions.mjs +0 -42
- package/esm2022/stores/rulesets/rulesets.effect.mjs +0 -30
- package/esm2022/stores/rulesets/rulesets.module.mjs +0 -42
- package/esm2022/stores/rulesets/rulesets.reducer.mjs +0 -35
- package/esm2022/stores/rulesets/rulesets.selectors.mjs +0 -115
- package/esm2022/stores/rulesets/rulesets.state.mjs +0 -5
- package/esm2022/stores/rulesets/rulesets.sync.mjs +0 -20
- package/interfaces/action.interfaces.d.ts +0 -44
- package/interfaces/action.interfaces.d.ts.map +0 -1
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { BehaviorSubject, firstValueFrom, merge, of, } from 'rxjs';
|
|
2
|
-
import { delay, distinctUntilChanged, shareReplay, switchMap, takeUntil, tap, } from 'rxjs/operators';
|
|
3
|
-
import { filterRulesetsEventStream, } from './helpers/filter-ruleset-event.operator';
|
|
4
|
-
import { operatorList, } from './operator/index';
|
|
5
|
-
import { RulesetExecutor, } from './ruleset-executor';
|
|
6
|
-
/** Rules engine */
|
|
7
|
-
export class RulesEngine {
|
|
8
|
-
/**
|
|
9
|
-
* Flag to check if the run is in debug mode or not
|
|
10
|
-
*/
|
|
11
|
-
get debugMode() {
|
|
12
|
-
return !!this.engineDebug;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Rules engine
|
|
16
|
-
* @param options rules engine options
|
|
17
|
-
*/
|
|
18
|
-
constructor(options) {
|
|
19
|
-
/** Map of registered fact stream, this map is mutated by the ruleset executors */
|
|
20
|
-
this.factMap = {};
|
|
21
|
-
/** Subject containing the rulesets and the results stream*/
|
|
22
|
-
this.rulesetMapSubject = new BehaviorSubject({});
|
|
23
|
-
this.performance = options?.performance || (typeof window === 'undefined' ? undefined : window.performance);
|
|
24
|
-
this.engineDebug = options?.debugger;
|
|
25
|
-
this.engineDebug?.registerRuleEngine(this);
|
|
26
|
-
this.logger = options?.logger;
|
|
27
|
-
this.rulesEngineInstanceName = options?.rulesEngineInstanceName || 'RulesEngine';
|
|
28
|
-
this.factDefaultDelay = options?.factDefaultDelay;
|
|
29
|
-
// Load default operators
|
|
30
|
-
this.operators = operatorList.reduce((acc, operator) => {
|
|
31
|
-
acc[operator.name] = operator;
|
|
32
|
-
return acc;
|
|
33
|
-
}, {});
|
|
34
|
-
this.events$ = this.rulesetMapSubject.pipe(this.prepareActionsStream(), this.handleActionsStreamOutput());
|
|
35
|
-
if (options?.facts) {
|
|
36
|
-
this.upsertFacts(options.facts);
|
|
37
|
-
}
|
|
38
|
-
if (options?.rules) {
|
|
39
|
-
this.upsertRulesets(options.rules);
|
|
40
|
-
}
|
|
41
|
-
if (options?.operators) {
|
|
42
|
-
this.upsertOperators(options.operators);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Attach debug events to actions stream if debug engine is activated
|
|
47
|
-
*/
|
|
48
|
-
handleActionsStreamOutput() {
|
|
49
|
-
return (actionsStream$) => this.engineDebug ? actionsStream$.pipe(tap((allActions) => this.engineDebug.allActionsChange(allActions))) : actionsStream$;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Create the actions stream event based on provided active rulesets ids; Handle debug too
|
|
53
|
-
* @param ruleSets
|
|
54
|
-
*/
|
|
55
|
-
prepareActionsStream(ruleSets) {
|
|
56
|
-
return (rulesetMapSubject$) => (this.engineDebug
|
|
57
|
-
? rulesetMapSubject$.pipe(tap((ruleSetExecutorMap) => this.engineDebug.activeRulesetsChange(ruleSetExecutorMap, ruleSets)), filterRulesetsEventStream(ruleSets))
|
|
58
|
-
: rulesetMapSubject$.pipe(filterRulesetsEventStream(ruleSets)));
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Create or retrieve a fact stream
|
|
62
|
-
* The fact stream created will be registered in the engine
|
|
63
|
-
* @param id ID of the fact to retrieve
|
|
64
|
-
* @param factValue$ Value stream for the fact
|
|
65
|
-
*/
|
|
66
|
-
retrieveOrCreateFactStream(id, factValue$) {
|
|
67
|
-
// trick to emit undefined if the observable is not immediately emitting (to not bloc execution)
|
|
68
|
-
const obs$ = factValue$
|
|
69
|
-
? merge(factValue$, of(undefined).pipe(delay(this.factDefaultDelay || 0), takeUntil(factValue$)))
|
|
70
|
-
: factValue$;
|
|
71
|
-
const factObj = this.factMap[id];
|
|
72
|
-
if (factObj) {
|
|
73
|
-
if (factValue$) {
|
|
74
|
-
factObj.subject.next(obs$);
|
|
75
|
-
}
|
|
76
|
-
return factObj.value$;
|
|
77
|
-
}
|
|
78
|
-
const subject = new BehaviorSubject(obs$);
|
|
79
|
-
const value$ = subject.pipe(switchMap((value) => value || of(undefined)), distinctUntilChanged(), shareReplay(1));
|
|
80
|
-
this.factMap[id] = {
|
|
81
|
-
subject,
|
|
82
|
-
value$
|
|
83
|
-
};
|
|
84
|
-
return value$;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Retrieve the promise of the latest value of a fact.
|
|
88
|
-
* Return undefined if the fact is not defined.
|
|
89
|
-
* @param id ID of the fact to retrieve
|
|
90
|
-
*/
|
|
91
|
-
retrieveFactValue(id) {
|
|
92
|
-
return this.factMap[id].value$ && firstValueFrom(this.retrieveOrCreateFactStream(id), { defaultValue: undefined });
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Update or insert fact in rules engine
|
|
96
|
-
* @param facts fact list to add / update
|
|
97
|
-
*/
|
|
98
|
-
upsertFacts(facts) {
|
|
99
|
-
(Array.isArray(facts) ? facts : [facts]).forEach(({ id, value$ }) => this.retrieveOrCreateFactStream(id, value$));
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Update or insert rule in rules engine
|
|
103
|
-
* @param rulesets
|
|
104
|
-
*/
|
|
105
|
-
upsertRulesets(rulesets) {
|
|
106
|
-
this.engineDebug?.addAvailableRulesets(rulesets);
|
|
107
|
-
this.rulesetMapSubject.next(rulesets.reduce((accRuleset, ruleset) => {
|
|
108
|
-
accRuleset[ruleset.id] = new RulesetExecutor(ruleset, this);
|
|
109
|
-
return accRuleset;
|
|
110
|
-
}, { ...this.rulesetMapSubject.value }));
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Update or insert operator in rules engine
|
|
114
|
-
* @param operators operator list to add / update
|
|
115
|
-
*/
|
|
116
|
-
upsertOperators(operators) {
|
|
117
|
-
this.operators = operators.reduce((acc, operator) => {
|
|
118
|
-
acc[operator.name] = operator;
|
|
119
|
-
return acc;
|
|
120
|
-
}, { ...this.operators });
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Operator to apply on a stream of rulesets ids
|
|
124
|
-
* Returns a stream of actions outputted by the rules engine, corresponding to the rulesetsIds
|
|
125
|
-
*/
|
|
126
|
-
getEventStream() {
|
|
127
|
-
return (rulesetsIds$) => rulesetsIds$.pipe(switchMap((ruleSets) => this.rulesetMapSubject.pipe(this.prepareActionsStream(ruleSets))), this.handleActionsStreamOutput());
|
|
128
|
-
}
|
|
129
|
-
/** Get the list of registered facts names */
|
|
130
|
-
getRegisteredFactsNames() {
|
|
131
|
-
return Object.keys(this.factMap);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VuZ2luZS9lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUNMLGVBQWUsRUFDZixjQUFjLEVBQ2QsS0FBSyxFQUVMLEVBQUUsR0FDSCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxLQUFLLEVBQ0wsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBWXhCLE9BQU8sRUFDTCx5QkFBeUIsR0FDMUIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBRUwsWUFBWSxHQUViLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLGVBQWUsR0FDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQU01QixtQkFBbUI7QUFDbkIsTUFBTSxPQUFPLFdBQVc7SUFrQ3RCOztPQUVHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksT0FBNEI7UUE1Q3hDLGtGQUFrRjtRQUNqRSxZQUFPLEdBQW9DLEVBQUUsQ0FBQztRQUUvRCw0REFBNEQ7UUFDM0Msc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQWtDLEVBQUUsQ0FBQyxDQUFDO1FBeUM1RixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUks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QUFNLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDdEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUQsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FDeEMsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSSxlQUFlLENBQUMsU0FBc0Q7UUFDM0UsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2xELEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQzlCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYztRQUNuQixPQUFPLENBQUMsWUFBOEMsRUFBRSxFQUFFLENBQ3hELFlBQVksQ0FBQyxJQUFJLENBQ2YsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQzVGLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUNqQyxDQUFDO0lBQ04sQ0FBQztJQUVELDZDQUE2QztJQUN0Qyx1QkFBdUI7UUFDNUIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIExvZ2dlcixcbn0gZnJvbSAnQG8zci9sb2dnZXInO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBmaXJzdFZhbHVlRnJvbSxcbiAgbWVyZ2UsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRlbGF5LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgc2hhcmVSZXBsYXksXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEVuZ2luZURlYnVnZ2VyLFxufSBmcm9tICcuL2RlYnVnL2VuZ2luZS5kZWJ1Zyc7XG5pbXBvcnQge1xuICBGYWN0T2JqZWN0LFxuICBSdWxlc0VuZ2luZU9wdGlvbnMsXG59IGZyb20gJy4vZW5naW5lLmludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEZhY3QsXG4gIEZhY3RzLFxufSBmcm9tICcuL2ZhY3QvaW5kZXgnO1xuaW1wb3J0IHtcbiAgZmlsdGVyUnVsZXNldHNFdmVudFN0cmVhbSxcbn0gZnJvbSAnLi9oZWxwZXJzL2ZpbHRlci1ydWxlc2V0LWV2ZW50Lm9wZXJhdG9yJztcbmltcG9ydCB7XG4gIE9wZXJhdG9yLFxuICBvcGVyYXRvckxpc3QsXG4gIFVuYXJ5T3BlcmF0b3IsXG59IGZyb20gJy4vb3BlcmF0b3IvaW5kZXgnO1xuaW1wb3J0IHtcbiAgUnVsZXNldEV4ZWN1dG9yLFxufSBmcm9tICcuL3J1bGVzZXQtZXhlY3V0b3InO1xuaW1wb3J0IHtcbiAgQWN0aW9uQmxvY2ssXG4gIFJ1bGVzZXQsXG59IGZyb20gJy4vc3RydWN0dXJlJztcblxuLyoqIFJ1bGVzIGVuZ2luZSAqL1xuZXhwb3J0IGNsYXNzIFJ1bGVzRW5naW5lIHtcbiAgLyoqIE1hcCBvZiByZWdpc3RlcmVkIGZhY3Qgc3RyZWFtLCB0aGlzIG1hcCBpcyBtdXRhdGVkIGJ5IHRoZSBydWxlc2V0IGV4ZWN1dG9ycyAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGZhY3RNYXA6IFJlY29yZDxzdHJpbmcsIEZhY3RPYmplY3Q8YW55Pj4gPSB7fTtcblxuICAvKiogU3ViamVjdCBjb250YWluaW5nIHRoZSBydWxlc2V0cyBhbmQgdGhlIHJlc3VsdHMgc3RyZWFtKi9cbiAgcHJpdmF0ZSByZWFkb25seSBydWxlc2V0TWFwU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVjb3JkPHN0cmluZywgUnVsZXNldEV4ZWN1dG9yPj4oe30pO1xuXG4gIC8qKiBNYXAgb2YgYXZhaWxhYmxlIG9wZXJhdG9ycyAqL1xuICBwdWJsaWMgb3BlcmF0b3JzOiBSZWNvcmQ8c3RyaW5nLCBPcGVyYXRvcjx1bmtub3duLCB1bmtub3duPj47XG5cbiAgLyoqIExpc3Qgb2YgZXZlbnRzIGZvciB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgcnVsZXMgZW5naW5lICovXG4gIHB1YmxpYyByZWFkb25seSBldmVudHMkOiBPYnNlcnZhYmxlPEFjdGlvbkJsb2NrW10+O1xuXG4gIC8qKiBEZWxheSBiZWZvcmUgZmFjdCBzdHJlYW0gZGVmYXVsdGluZyB2YWx1ZSAqL1xuICBwdWJsaWMgZmFjdERlZmF1bHREZWxheT86IG51bWJlcjtcblxuICAvKipcbiAgICogSW5zdGFuY2Ugb2YgZW5naW5lIGRlYnVnIG9iamVjdDsgVW5kZWZpbmVkIGlmIGRlYnVnTW9kZSBpcyBub3QgYWN0aXZlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lRGVidWc/OiBFbmdpbmVEZWJ1Z2dlcjtcblxuICAvKiogTmFtZSBvZiB0aGUgcnVsZXMgZW5naW5lIGluc3RhbmNlICovXG4gIHB1YmxpYyByZWFkb25seSBydWxlc0VuZ2luZUluc3RhbmNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJmb3JtYW5jZSByZXBvcnRlciB0byB1c2UgZm9yIHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50cy5cbiAgICogQGRlZmF1bHQgd2luZG93LnBlcmZvcm1hbmNlIG9uIGJyb3dzZXIgb25seSwgdW5kZWZpbmVkIG9uIG5vZGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwZXJmb3JtYW5jZTtcblxuICAvKipcbiAgICogTG9nIHRoZSBlbmdpbmUgZXJyb3JzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nZ2VyPzogTG9nZ2VyO1xuICAvKipcbiAgICogRmxhZyB0byBjaGVjayBpZiB0aGUgcnVuIGlzIGluIGRlYnVnIG1vZGUgb3Igbm90XG4gICAqL1xuICBwdWJsaWMgZ2V0IGRlYnVnTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmVuZ2luZURlYnVnO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bGVzIGVuZ2luZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBydWxlcyBlbmdpbmUgb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucz86IFJ1bGVzRW5naW5lT3B0aW9ucykge1xuICAgIHRoaXMucGVyZm9ybWFuY2UgPSBvcHRpb25zPy5wZXJmb3JtYW5jZSB8fCAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiB3aW5kb3cucGVyZm9ybWFuY2UpO1xuICAgIHRoaXMuZW5naW5lRGVidWcgPSBvcHRpb25zPy5kZWJ1Z2dlcjtcbiAgICB0aGlzLmVuZ2luZURlYnVnPy5yZWdpc3RlclJ1bGVFbmdpbmUodGhpcyk7XG4gICAgdGhpcy5sb2dnZXIgPSBvcHRpb25zPy5sb2dnZXI7XG4gICAgdGhpcy5ydWxlc0VuZ2luZUluc3RhbmNlTmFtZSA9IG9wdGlvbnM/LnJ1bGVzRW5naW5lSW5zdGFuY2VOYW1lIHx8ICdSdWxlc0VuZ2luZSc7XG4gICAgdGhpcy5mYWN0RGVmYXVsdERlbGF5ID0gb3B0aW9ucz8uZmFjdERlZmF1bHREZWxheTtcbiAgICAvLyBMb2FkIGRlZmF1bHQgb3BlcmF0b3JzXG4gICAgdGhpcy5vcGVyYXRvcnMgPSBvcGVyYXRvckxpc3QucmVkdWNlPFJlY29yZDxzdHJpbmcsIE9wZXJhdG9yPGFueSwgYW55Pj4+KChhY2MsIG9wZXJhdG9yKSA9PiB7XG4gICAgICBhY2Nbb3BlcmF0b3IubmFtZV0gPSBvcGVyYXRvcjtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICAgIHRoaXMuZXZlbnRzJCA9IHRoaXMucnVsZXNldE1hcFN1YmplY3QucGlwZShcbiAgICAgIHRoaXMucHJlcGFyZUFjdGlvbnNTdHJlYW0oKSxcbiAgICAgIHRoaXMuaGFuZGxlQWN0aW9uc1N0cmVhbU91dHB1dCgpXG4gICAgKTtcbiAgICBpZiAob3B0aW9ucz8uZmFjdHMpIHtcbiAgICAgIHRoaXMudXBzZXJ0RmFjdHMob3B0aW9ucy5mYWN0cyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zPy5ydWxlcykge1xuICAgICAgdGhpcy51cHNlcnRSdWxlc2V0cyhvcHRpb25zLnJ1bGVzKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/Lm9wZXJhdG9ycykge1xuICAgICAgdGhpcy51cHNlcnRPcGVyYXRvcnMob3B0aW9ucy5vcGVyYXRvcnMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggZGVidWcgZXZlbnRzIHRvIGFjdGlvbnMgc3RyZWFtIGlmIGRlYnVnIGVuZ2luZSBpcyBhY3RpdmF0ZWRcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlQWN0aW9uc1N0cmVhbU91dHB1dDxUIGV4dGVuZHMgQWN0aW9uQmxvY2sgPSBBY3Rpb25CbG9jaz4oKTogKGFjdGlvbnNTdHJlYW0kOiBPYnNlcnZhYmxlPFRbXT4pID0+IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIChhY3Rpb25zU3RyZWFtJDogT2JzZXJ2YWJsZTxUW10+KSA9PiB0aGlzLmVuZ2luZURlYnVnID8gYWN0aW9uc1N0cmVhbSQucGlwZSh0YXAoKGFsbEFjdGlvbnMpID0+IHRoaXMuZW5naW5lRGVidWchLmFsbEFjdGlvbnNDaGFuZ2UoYWxsQWN0aW9ucykpKSA6IGFjdGlvbnNTdHJlYW0kO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgYWN0aW9ucyBzdHJlYW0gZXZlbnQgYmFzZWQgb24gcHJvdmlkZWQgYWN0aXZlIHJ1bGVzZXRzIGlkczsgSGFuZGxlIGRlYnVnIHRvb1xuICAgKiBAcGFyYW0gcnVsZVNldHNcbiAgICovXG4gIHByaXZhdGUgcHJlcGFyZUFjdGlvbnNTdHJlYW08VCBleHRlbmRzIEFjdGlvbkJsb2NrID0gQWN0aW9uQmxvY2s+KHJ1bGVTZXRzPzogc3RyaW5nW10pOiAocnVsZXNldE1hcFN1YmplY3QkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIFJ1bGVzZXRFeGVjdXRvcj4+KSA9PiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiAocnVsZXNldE1hcFN1YmplY3QkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIFJ1bGVzZXRFeGVjdXRvcj4+KSA9PiAodGhpcy5lbmdpbmVEZWJ1Z1xuICAgICAgPyBydWxlc2V0TWFwU3ViamVjdCQucGlwZShcbiAgICAgICAgdGFwKChydWxlU2V0RXhlY3V0b3JNYXApID0+IHRoaXMuZW5naW5lRGVidWchLmFjdGl2ZVJ1bGVzZXRzQ2hhbmdlKHJ1bGVTZXRFeGVjdXRvck1hcCwgcnVsZVNldHMpKSxcbiAgICAgICAgZmlsdGVyUnVsZXNldHNFdmVudFN0cmVhbShydWxlU2V0cykpXG4gICAgICA6IHJ1bGVzZXRNYXBTdWJqZWN0JC5waXBlKGZpbHRlclJ1bGVzZXRzRXZlbnRTdHJlYW0ocnVsZVNldHMpKSkgYXMgT2JzZXJ2YWJsZTxUW10+O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBvciByZXRyaWV2ZSBhIGZhY3Qgc3RyZWFtXG4gICAqIFRoZSBmYWN0IHN0cmVhbSBjcmVhdGVkIHdpbGwgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgZW5naW5lXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgZmFjdCB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0gZmFjdFZhbHVlJCBWYWx1ZSBzdHJlYW0gZm9yIHRoZSBmYWN0XG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmVPckNyZWF0ZUZhY3RTdHJlYW08VCA9IEZhY3RzPihpZDogc3RyaW5nLCBmYWN0VmFsdWUkPzogT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgIC8vIHRyaWNrIHRvIGVtaXQgdW5kZWZpbmVkIGlmIHRoZSBvYnNlcnZhYmxlIGlzIG5vdCBpbW1lZGlhdGVseSBlbWl0dGluZyAodG8gbm90IGJsb2MgZXhlY3V0aW9uKVxuICAgIGNvbnN0IG9icyQgPSBmYWN0VmFsdWUkXG4gICAgICA/IG1lcmdlKGZhY3RWYWx1ZSQsIG9mKHVuZGVmaW5lZCkucGlwZShkZWxheSh0aGlzLmZhY3REZWZhdWx0RGVsYXkgfHwgMCksIHRha2VVbnRpbChmYWN0VmFsdWUkKSkpXG4gICAgICA6IGZhY3RWYWx1ZSQ7XG4gICAgY29uc3QgZmFjdE9iaiA9IHRoaXMuZmFjdE1hcFtpZF07XG4gICAgaWYgKGZhY3RPYmopIHtcbiAgICAgIGlmIChmYWN0VmFsdWUkKSB7XG4gICAgICAgIGZhY3RPYmouc3ViamVjdC5uZXh0KG9icyQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhY3RPYmoudmFsdWUkO1xuICAgIH1cblxuICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ+KG9icyQpO1xuICAgIGNvbnN0IHZhbHVlJCA9IHN1YmplY3QucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+IHZhbHVlIHx8IG9mKHVuZGVmaW5lZCkpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcblxuICAgIHRoaXMuZmFjdE1hcFtpZF0gPSB7XG4gICAgICBzdWJqZWN0LFxuICAgICAgdmFsdWUkXG4gICAgfTtcblxuICAgIHJldHVybiB2YWx1ZSQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgdGhlIHByb21pc2Ugb2YgdGhlIGxhdGVzdCB2YWx1ZSBvZiBhIGZhY3QuXG4gICAqIFJldHVybiB1bmRlZmluZWQgaWYgdGhlIGZhY3QgaXMgbm90IGRlZmluZWQuXG4gICAqIEBwYXJhbSBpZCBJRCBvZiB0aGUgZmFjdCB0byByZXRyaWV2ZVxuICAgKi9cbiAgcHVibGljIHJldHJpZXZlRmFjdFZhbHVlPFQgPSB1bmtub3duPihpZDogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZmFjdE1hcFtpZF0udmFsdWUkICYmIGZpcnN0VmFsdWVGcm9tKHRoaXMucmV0cmlldmVPckNyZWF0ZUZhY3RTdHJlYW08VD4oaWQpLCB7IGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBvciBpbnNlcnQgZmFjdCBpbiBydWxlcyBlbmdpbmVcbiAgICogQHBhcmFtIGZhY3RzIGZhY3QgbGlzdCB0byBhZGQgLyB1cGRhdGVcbiAgICovXG4gIHB1YmxpYyB1cHNlcnRGYWN0czxUID0gdW5rbm93bj4oZmFjdHM6IEZhY3Q8VD4gfCBGYWN0PFQ+W10pIHtcbiAgICAoQXJyYXkuaXNBcnJheShmYWN0cykgPyBmYWN0cyA6IFtmYWN0c10pLmZvckVhY2goKHsgaWQsIHZhbHVlJCB9KSA9PlxuICAgICAgdGhpcy5yZXRyaWV2ZU9yQ3JlYXRlRmFjdFN0cmVhbShpZCwgdmFsdWUkKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG9yIGluc2VydCBydWxlIGluIHJ1bGVzIGVuZ2luZVxuICAgKiBAcGFyYW0gcnVsZXNldHNcbiAgICovXG4gIHB1YmxpYyB1cHNlcnRSdWxlc2V0cyhydWxlc2V0czogUnVsZXNldFtdKSB7XG4gICAgdGhpcy5lbmdpbmVEZWJ1Zz8uYWRkQXZhaWxhYmxlUnVsZXNldHMocnVsZXNldHMpO1xuXG4gICAgdGhpcy5ydWxlc2V0TWFwU3ViamVjdC5uZXh0KFxuICAgICAgcnVsZXNldHMucmVkdWNlKChhY2NSdWxlc2V0LCBydWxlc2V0KSA9PiB7XG4gICAgICAgIGFjY1J1bGVzZXRbcnVsZXNldC5pZF0gPSBuZXcgUnVsZXNldEV4ZWN1dG9yKHJ1bGVzZXQsIHRoaXMpO1xuICAgICAgICByZXR1cm4gYWNjUnVsZXNldDtcbiAgICAgIH0sIHsgLi4udGhpcy5ydWxlc2V0TWFwU3ViamVjdC52YWx1ZSB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG9yIGluc2VydCBvcGVyYXRvciBpbiBydWxlcyBlbmdpbmVcbiAgICogQHBhcmFtIG9wZXJhdG9ycyBvcGVyYXRvciBsaXN0IHRvIGFkZCAvIHVwZGF0ZVxuICAgKi9cbiAgcHVibGljIHVwc2VydE9wZXJhdG9ycyhvcGVyYXRvcnM6IChPcGVyYXRvcjxhbnksIGFueT4gfCBVbmFyeU9wZXJhdG9yPGFueT4pW10pIHtcbiAgICB0aGlzLm9wZXJhdG9ycyA9IG9wZXJhdG9ycy5yZWR1Y2UoKGFjYywgb3BlcmF0b3IpID0+IHtcbiAgICAgIGFjY1tvcGVyYXRvci5uYW1lXSA9IG9wZXJhdG9yO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7IC4uLnRoaXMub3BlcmF0b3JzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZXJhdG9yIHRvIGFwcGx5IG9uIGEgc3RyZWFtIG9mIHJ1bGVzZXRzIGlkc1xuICAgKiBSZXR1cm5zIGEgc3RyZWFtIG9mIGFjdGlvbnMgb3V0cHV0dGVkIGJ5IHRoZSBydWxlcyBlbmdpbmUsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJ1bGVzZXRzSWRzXG4gICAqL1xuICBwdWJsaWMgZ2V0RXZlbnRTdHJlYW08VCBleHRlbmRzIEFjdGlvbkJsb2NrID0gQWN0aW9uQmxvY2s+KCk6IChydWxlc2V0c0lkcyQ6IE9ic2VydmFibGU8c3RyaW5nW10gfCB1bmRlZmluZWQ+KSA9PiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiAocnVsZXNldHNJZHMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdIHwgdW5kZWZpbmVkPikgPT5cbiAgICAgIHJ1bGVzZXRzSWRzJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJ1bGVTZXRzKSA9PiB0aGlzLnJ1bGVzZXRNYXBTdWJqZWN0LnBpcGUodGhpcy5wcmVwYXJlQWN0aW9uc1N0cmVhbTxUPihydWxlU2V0cykpKSxcbiAgICAgICAgdGhpcy5oYW5kbGVBY3Rpb25zU3RyZWFtT3V0cHV0KClcbiAgICAgICk7XG4gIH1cblxuICAvKiogR2V0IHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgZmFjdHMgbmFtZXMgKi9cbiAgcHVibGljIGdldFJlZ2lzdGVyZWRGYWN0c05hbWVzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmZhY3RNYXApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdC5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VuZ2luZS9mYWN0L2ZhY3QuaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbn0gZnJvbSAncnhqcyc7XG5cbi8qKiBSZXByZXNlbnRzIGFsbCB0aGUgc3VwcG9ydGVkIGZhY3RzIHR5cGVzIFRPQ0hFQ0sgdXRpbHMuRGF0ZSB2cyBEYXRlICovXG5leHBvcnQgdHlwZSBGYWN0cyA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgRGF0ZSB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5rbm93bltdO1xuXG4vKiogRmFjdCBiYXNpYyB2YWx1ZSB0eXBlICovXG5leHBvcnQgdHlwZSBGYWN0QmFzaWNWYWx1ZXMgPSBudW1iZXIgfCBib29sZWFuIHwgc3RyaW5nIHwgc3RyaW5nW10gfCBib29sZWFuW10gfCBudW1iZXIgW10gfCB1bmRlZmluZWQ7XG5cbi8qKiBNYXAgb2YgZmFjdCBuYW1lIC8gdHlwZSBwYWlycyAqL1xuZXhwb3J0IGludGVyZmFjZSBGYWN0RGVmaW5pdGlvbnMge1xuICBbZmFjdE5hbWU6IHN0cmluZ106IHVua25vd247XG59XG5cbi8qKiBSZXR1cm4gdHlwZSBvZiBhIGZhY3QgZmFjdG9yeSAqL1xuZXhwb3J0IHR5cGUgRmFjdEZhY3RvcnlSZXR1cm48VD4gPSBPYnNlcnZhYmxlPFQ+IHwgUHJvbWlzZTxUPiB8IFQ7XG5cbi8qKiBTZXQgb2YgZmFjdHMgKi9cbmV4cG9ydCB0eXBlIEZhY3RTZXQ8VCBleHRlbmRzIEZhY3REZWZpbml0aW9ucz4gPSB7XG4gIFtQIGluIGtleW9mIFRdOiBGYWN0RmFjdG9yeVJldHVybjxUW1BdIHwgdW5kZWZpbmVkIHwgbnVsbD47XG59O1xuXG4vKiogRmFjdCBzdHJlYW0gdHlwZSAqL1xuZXhwb3J0IHR5cGUgRmFjdFZhbHVlU3RyZWFtPFQgPSB1bmtub3duPiA9IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD47XG5cbi8qKiBGYWN0IHN0cmVhbSAqL1xuZXhwb3J0IGludGVyZmFjZSBGYWN0PFQgPSB1bmtub3duPiB7XG4gIC8qKiBGYWN0IElEICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqIFN0cmVhbSBvZiB0aGUgZmFjdCBmYWN0IHZhbHVlICovXG4gIHZhbHVlJDogRmFjdFZhbHVlU3RyZWFtPFQ+O1xufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './fact.interfaces';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW5naW5lL2ZhY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmFjdC5pbnRlcmZhY2VzJztcbiJdfQ==
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { combineLatest, } from 'rxjs';
|
|
2
|
-
import { map, shareReplay, switchMap, } from 'rxjs/operators';
|
|
3
|
-
/**
|
|
4
|
-
* Filter the actions outputted by the rules engine, based on active rulesets
|
|
5
|
-
* @param restrictiveRuleSets list of rules sets to get the event stream for
|
|
6
|
-
*/
|
|
7
|
-
export function filterRulesetsEventStream(restrictiveRuleSets) {
|
|
8
|
-
return (source$) => source$.pipe(switchMap((ruleSetExecutorMap) => {
|
|
9
|
-
const rulesets = Object.keys(ruleSetExecutorMap).map((rulesetId) => ruleSetExecutorMap[rulesetId].engineRuleset);
|
|
10
|
-
const activeRulesets = restrictiveRuleSets
|
|
11
|
-
? Object.values(rulesets).filter((ruleSet) => restrictiveRuleSets.includes(ruleSet.id))
|
|
12
|
-
: Object.values(rulesets);
|
|
13
|
-
return combineLatest(activeRulesets.map((ruleset) => ruleset.rulesResultsSubject$)).pipe(map((item) => item.reduce((acc, currentValue) => {
|
|
14
|
-
acc.push(...currentValue);
|
|
15
|
-
return acc;
|
|
16
|
-
}, [])));
|
|
17
|
-
}), shareReplay(1));
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXJ1bGVzZXQtZXZlbnQub3BlcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW5naW5lL2hlbHBlcnMvZmlsdGVyLXJ1bGVzZXQtZXZlbnQub3BlcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGFBQWEsR0FFZCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBS3hCOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxtQkFBOEI7SUFDdEUsT0FBTyxDQUFDLE9BQW9ELEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzNFLFNBQVMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEVBQUU7UUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakgsTUFBTSxjQUFjLEdBQUcsbUJBQW1CO1lBQ3hDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU1QixPQUFPLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEYsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxFQUFFO1lBQzlDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQztZQUMxQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDYixDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBPYnNlcnZhYmxlLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgUnVsZXNldEV4ZWN1dG9yLFxufSBmcm9tICcuLi9ydWxlc2V0LWV4ZWN1dG9yJztcblxuLyoqXG4gKiBGaWx0ZXIgdGhlIGFjdGlvbnMgb3V0cHV0dGVkIGJ5IHRoZSBydWxlcyBlbmdpbmUsIGJhc2VkIG9uIGFjdGl2ZSBydWxlc2V0c1xuICogQHBhcmFtIHJlc3RyaWN0aXZlUnVsZVNldHMgbGlzdCBvZiBydWxlcyBzZXRzIHRvIGdldCB0aGUgZXZlbnQgc3RyZWFtIGZvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyUnVsZXNldHNFdmVudFN0cmVhbShyZXN0cmljdGl2ZVJ1bGVTZXRzPzogc3RyaW5nW10pIHtcbiAgcmV0dXJuIChzb3VyY2UkOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIFJ1bGVzZXRFeGVjdXRvcj4+KSA9PiBzb3VyY2UkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChydWxlU2V0RXhlY3V0b3JNYXApID0+IHtcbiAgICAgIGNvbnN0IHJ1bGVzZXRzID0gT2JqZWN0LmtleXMocnVsZVNldEV4ZWN1dG9yTWFwKS5tYXAoKHJ1bGVzZXRJZCkgPT4gcnVsZVNldEV4ZWN1dG9yTWFwW3J1bGVzZXRJZF0uZW5naW5lUnVsZXNldCk7XG4gICAgICBjb25zdCBhY3RpdmVSdWxlc2V0cyA9IHJlc3RyaWN0aXZlUnVsZVNldHNcbiAgICAgICAgPyBPYmplY3QudmFsdWVzKHJ1bGVzZXRzKS5maWx0ZXIoKHJ1bGVTZXQpID0+IHJlc3RyaWN0aXZlUnVsZVNldHMuaW5jbHVkZXMocnVsZVNldC5pZCkpXG4gICAgICAgIDogT2JqZWN0LnZhbHVlcyhydWxlc2V0cyk7XG5cbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGFjdGl2ZVJ1bGVzZXRzLm1hcCgocnVsZXNldCkgPT4gcnVsZXNldC5ydWxlc1Jlc3VsdHNTdWJqZWN0JCkpLnBpcGUoXG4gICAgICAgIG1hcCgoaXRlbSkgPT4gaXRlbS5yZWR1Y2UoKGFjYywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgYWNjLnB1c2goLi4uY3VycmVudFZhbHVlKTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBbXSkpKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xufVxuIl19
|
package/esm2022/engine/index.mjs
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './debug/engine.debug';
|
|
2
|
-
export * from './engine';
|
|
3
|
-
export * from './engine.interface';
|
|
4
|
-
export * from './fact/index';
|
|
5
|
-
export * from './operator/index';
|
|
6
|
-
export * from './rule/index';
|
|
7
|
-
export * from './structure';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZW5naW5lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZWJ1Zy9lbmdpbmUuZGVidWcnO1xuZXhwb3J0ICogZnJvbSAnLi9lbmdpbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9lbmdpbmUuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZmFjdC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL29wZXJhdG9yL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vcnVsZS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3N0cnVjdHVyZSc7XG4iXX0=
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './operator.helpers';
|
|
2
|
-
export * from './operator.interface';
|
|
3
|
-
export * from './operators/index';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW5naW5lL29wZXJhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9vcGVyYXRvci5oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vb3BlcmF0b3IuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vb3BlcmF0b3JzL2luZGV4JztcbiJdfQ==
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Execute Operator
|
|
3
|
-
* @param lhs Left hand side
|
|
4
|
-
* @param rhs Right hand side
|
|
5
|
-
* @param operator Operator to compare values
|
|
6
|
-
* @param operatorFacts Facts that operator can depend on
|
|
7
|
-
*/
|
|
8
|
-
export function executeOperator(lhs, rhs, operator, operatorFacts) {
|
|
9
|
-
const validLhs = (!operator.validateLhs || operator.validateLhs(lhs));
|
|
10
|
-
const validRhs = (!operator.validateRhs || operator.validateRhs(rhs));
|
|
11
|
-
let operatorFactValues;
|
|
12
|
-
if (operatorFacts && operator.factImplicitDependencies) {
|
|
13
|
-
operatorFactValues = operator.factImplicitDependencies.reduce((acc, dep) => {
|
|
14
|
-
if (operatorFacts[dep]) {
|
|
15
|
-
acc[dep] = operatorFacts[dep];
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
throw new Error(`The fact "${dep}" requested by ${operator.name} cannot be found.`);
|
|
19
|
-
}
|
|
20
|
-
return acc;
|
|
21
|
-
}, {});
|
|
22
|
-
}
|
|
23
|
-
if (!validLhs) {
|
|
24
|
-
throw new Error(`Invalid left operand: ${JSON.stringify(lhs)}`);
|
|
25
|
-
}
|
|
26
|
-
if (!validRhs) {
|
|
27
|
-
throw new Error(`Invalid right operand: ${JSON.stringify(rhs)}`);
|
|
28
|
-
}
|
|
29
|
-
const obs = operator.evaluator(lhs, rhs, operatorFactValues);
|
|
30
|
-
return obs;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Validate a number operand
|
|
34
|
-
* @param operand value of one of the operands
|
|
35
|
-
*/
|
|
36
|
-
export function numberValidator(operand) {
|
|
37
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- needed to convert any variable in a number (or NaN)
|
|
38
|
-
return operand !== '' && !Array.isArray(operand) && !Number.isNaN(+`${operand}`);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Validate an operand is a range of numbers
|
|
42
|
-
* @param operatorInput value of one of the operands
|
|
43
|
-
*/
|
|
44
|
-
export function isRangeNumber(operatorInput) {
|
|
45
|
-
return Array.isArray(operatorInput)
|
|
46
|
-
&& operatorInput.length === 2
|
|
47
|
-
&& numberValidator(operatorInput[0])
|
|
48
|
-
&& numberValidator(operatorInput[1])
|
|
49
|
-
&& operatorInput[0] <= operatorInput[1];
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Verifies if the parameter is a valid date for the operator (getTime function available returning a number)
|
|
53
|
-
* @param operatorInput
|
|
54
|
-
*/
|
|
55
|
-
export const isValidDate = (operatorInput) => {
|
|
56
|
-
if (!operatorInput || typeof operatorInput.getTime !== 'function') {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
const getTimeResult = operatorInput.getTime();
|
|
60
|
-
return typeof getTimeResult === 'number' && !Number.isNaN(getTimeResult);
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* Verifies if the parameter is a valid input for Date constructor (new Date returns a valid date)
|
|
64
|
-
* @param operatorInput
|
|
65
|
-
*/
|
|
66
|
-
export const isValidDateInput = (operatorInput) => {
|
|
67
|
-
return operatorInput === 0 || (!!operatorInput && isValidDate(new Date(operatorInput)));
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* Verifies if the parameter is a valid date range
|
|
71
|
-
* @param operatorInput
|
|
72
|
-
*/
|
|
73
|
-
export const isValidDateRange = (operatorInput) => {
|
|
74
|
-
return Array.isArray(operatorInput)
|
|
75
|
-
&& operatorInput.length === 2
|
|
76
|
-
&& isValidDateInput(operatorInput[0])
|
|
77
|
-
&& isValidDateInput(operatorInput[1])
|
|
78
|
-
&& new Date(operatorInput[0]) <= new Date(operatorInput[1]);
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* Validate that a value is a supported simple type
|
|
82
|
-
* @param value value to validate
|
|
83
|
-
*/
|
|
84
|
-
export function isSupportedSimpleTypes(value) {
|
|
85
|
-
return ['string', 'boolean', 'number', 'undefined'].includes(typeof value) || value === null || isValidDate(value);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Validate that a value is a string
|
|
89
|
-
* @param value
|
|
90
|
-
*/
|
|
91
|
-
export function isString(value) {
|
|
92
|
-
return typeof value === 'string';
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Parse input to return RegExp
|
|
96
|
-
* @param inputRegExp
|
|
97
|
-
*/
|
|
98
|
-
export function parseRegExp(inputRegExp) {
|
|
99
|
-
if (inputRegExp.startsWith('/')) {
|
|
100
|
-
const finalSlash = inputRegExp.lastIndexOf('/');
|
|
101
|
-
const regexpPattern = inputRegExp.slice(1, finalSlash);
|
|
102
|
-
const regexpFlags = inputRegExp.slice(finalSlash + 1);
|
|
103
|
-
return new RegExp(regexpPattern, regexpFlags);
|
|
104
|
-
}
|
|
105
|
-
return new RegExp(inputRegExp);
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3IuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbmdpbmUvb3BlcmF0b3Ivb3BlcmF0b3IuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUEyQixHQUFNLEVBQUUsR0FBTSxFQUFFLFFBQXdCLEVBQUUsYUFBaUQ7SUFDbkosTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RSxJQUFJLGtCQUFxRCxDQUFDO0lBQzFELElBQUksYUFBYSxJQUFJLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3ZELGtCQUFrQixHQUFHLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDekUsSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUUsQ0FBQztZQUNqQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLEdBQUcsa0JBQWtCLFFBQVEsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLENBQUM7WUFDdEYsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQTJCLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLFNB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QUssS0FBSyxRQUFRLENBQUM7QUFDbkMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsV0FBbUI7SUFDN0MsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN2RCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RCxPQUFPLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBGYWN0cyxcbn0gZnJvbSAnLi4vZmFjdCc7XG5pbXBvcnQge1xuICBEYXRlSW5wdXQsXG4gIE9wZXJhdG9yLFxuICBTdXBwb3J0ZWRTaW1wbGVUeXBlcyxcbn0gZnJvbSAnLi9vcGVyYXRvci5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEV4ZWN1dGUgT3BlcmF0b3JcbiAqIEBwYXJhbSBsaHMgTGVmdCBoYW5kIHNpZGVcbiAqIEBwYXJhbSByaHMgUmlnaHQgaGFuZCBzaWRlXG4gKiBAcGFyYW0gb3BlcmF0b3IgT3BlcmF0b3IgdG8gY29tcGFyZSB2YWx1ZXNcbiAqIEBwYXJhbSBvcGVyYXRvckZhY3RzIEZhY3RzIHRoYXQgb3BlcmF0b3IgY2FuIGRlcGVuZCBvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZU9wZXJhdG9yPEwgPSB1bmtub3duLCBSID0gdW5rbm93bj4obGhzOiBMLCByaHM6IFIsIG9wZXJhdG9yOiBPcGVyYXRvcjxMLCBSPiwgb3BlcmF0b3JGYWN0cz86IFJlY29yZDxzdHJpbmcsIEZhY3RzIHwgdW5kZWZpbmVkPikge1xuICBjb25zdCB2YWxpZExocyA9ICghb3BlcmF0b3IudmFsaWRhdGVMaHMgfHwgb3BlcmF0b3IudmFsaWRhdGVMaHMobGhzKSk7XG4gIGNvbnN0IHZhbGlkUmhzID0gKCFvcGVyYXRvci52YWxpZGF0ZVJocyB8fCBvcGVyYXRvci52YWxpZGF0ZVJocyhyaHMpKTtcbiAgbGV0IG9wZXJhdG9yRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+IHwgdW5kZWZpbmVkO1xuICBpZiAob3BlcmF0b3JGYWN0cyAmJiBvcGVyYXRvci5mYWN0SW1wbGljaXREZXBlbmRlbmNpZXMpIHtcbiAgICBvcGVyYXRvckZhY3RWYWx1ZXMgPSBvcGVyYXRvci5mYWN0SW1wbGljaXREZXBlbmRlbmNpZXMucmVkdWNlKChhY2MsIGRlcCkgPT4ge1xuICAgICAgaWYgKG9wZXJhdG9yRmFjdHNbZGVwXSkge1xuICAgICAgICBhY2NbZGVwXSA9IG9wZXJhdG9yRmFjdHNbZGVwXSE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmYWN0IFwiJHtkZXB9XCIgcmVxdWVzdGVkIGJ5ICR7b3BlcmF0b3IubmFtZX0gY2Fubm90IGJlIGZvdW5kLmApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4pO1xuICB9XG4gIGlmICghdmFsaWRMaHMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbGVmdCBvcGVyYW5kOiAke0pTT04uc3RyaW5naWZ5KGxocyl9YCk7XG4gIH1cbiAgaWYgKCF2YWxpZFJocykge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByaWdodCBvcGVyYW5kOiAke0pTT04uc3RyaW5naWZ5KHJocyl9YCk7XG4gIH1cbiAgY29uc3Qgb2JzID0gb3BlcmF0b3IuZXZhbHVhdG9yKGxocywgcmhzLCBvcGVyYXRvckZhY3RWYWx1ZXMpO1xuICByZXR1cm4gb2JzO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGEgbnVtYmVyIG9wZXJhbmRcbiAqIEBwYXJhbSBvcGVyYW5kIHZhbHVlIG9mIG9uZSBvZiB0aGUgb3BlcmFuZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG51bWJlclZhbGlkYXRvcihvcGVyYW5kOiB1bmtub3duKTogb3BlcmFuZCBpcyBudW1iZXIgfCBzdHJpbmcge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXRlbXBsYXRlLWV4cHJlc3Npb25zIC0tIG5lZWRlZCB0byBjb252ZXJ0IGFueSB2YXJpYWJsZSBpbiBhIG51bWJlciAob3IgTmFOKVxuICByZXR1cm4gb3BlcmFuZCAhPT0gJycgJiYgIUFycmF5LmlzQXJyYXkob3BlcmFuZCkgJiYgIU51bWJlci5pc05hTigrYCR7b3BlcmFuZH1gKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbiBvcGVyYW5kIGlzIGEgcmFuZ2Ugb2YgbnVtYmVyc1xuICogQHBhcmFtIG9wZXJhdG9ySW5wdXQgdmFsdWUgb2Ygb25lIG9mIHRoZSBvcGVyYW5kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSYW5nZU51bWJlcihvcGVyYXRvcklucHV0OiB1bmtub3duKTogb3BlcmF0b3JJbnB1dCBpcyBbbnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmddIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkob3BlcmF0b3JJbnB1dClcbiAgICAmJiBvcGVyYXRvcklucHV0Lmxlbmd0aCA9PT0gMlxuICAgICYmIG51bWJlclZhbGlkYXRvcihvcGVyYXRvcklucHV0WzBdKVxuICAgICYmIG51bWJlclZhbGlkYXRvcihvcGVyYXRvcklucHV0WzFdKVxuICAgICYmIG9wZXJhdG9ySW5wdXRbMF0gPD0gb3BlcmF0b3JJbnB1dFsxXTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyBpZiB0aGUgcGFyYW1ldGVyIGlzIGEgdmFsaWQgZGF0ZSBmb3IgdGhlIG9wZXJhdG9yIChnZXRUaW1lIGZ1bmN0aW9uIGF2YWlsYWJsZSByZXR1cm5pbmcgYSBudW1iZXIpXG4gKiBAcGFyYW0gb3BlcmF0b3JJbnB1dFxuICovXG5leHBvcnQgY29uc3QgaXNWYWxpZERhdGUgPSAob3BlcmF0b3JJbnB1dDogYW55KTogb3BlcmF0b3JJbnB1dCBpcyBEYXRlID0+IHtcbiAgaWYgKCFvcGVyYXRvcklucHV0IHx8IHR5cGVvZiBvcGVyYXRvcklucHV0LmdldFRpbWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZ2V0VGltZVJlc3VsdCA9IG9wZXJhdG9ySW5wdXQuZ2V0VGltZSgpO1xuICByZXR1cm4gdHlwZW9mIGdldFRpbWVSZXN1bHQgPT09ICdudW1iZXInICYmICFOdW1iZXIuaXNOYU4oZ2V0VGltZVJlc3VsdCk7XG59O1xuXG4vKipcbiAqIFZlcmlmaWVzIGlmIHRoZSBwYXJhbWV0ZXIgaXMgYSB2YWxpZCBpbnB1dCBmb3IgRGF0ZSBjb25zdHJ1Y3RvciAobmV3IERhdGUgcmV0dXJucyBhIHZhbGlkIGRhdGUpXG4gKiBAcGFyYW0gb3BlcmF0b3JJbnB1dFxuICovXG5leHBvcnQgY29uc3QgaXNWYWxpZERhdGVJbnB1dCA9IChvcGVyYXRvcklucHV0OiBhbnkpOiBvcGVyYXRvcklucHV0IGlzIERhdGVJbnB1dCA9PiB7XG4gIHJldHVybiBvcGVyYXRvcklucHV0ID09PSAwIHx8ICghIW9wZXJhdG9ySW5wdXQgJiYgaXNWYWxpZERhdGUobmV3IERhdGUob3BlcmF0b3JJbnB1dCkpKTtcbn07XG5cbi8qKlxuICogVmVyaWZpZXMgaWYgdGhlIHBhcmFtZXRlciBpcyBhIHZhbGlkIGRhdGUgcmFuZ2VcbiAqIEBwYXJhbSBvcGVyYXRvcklucHV0XG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkRGF0ZVJhbmdlID0gKG9wZXJhdG9ySW5wdXQ6IGFueSk6IG9wZXJhdG9ySW5wdXQgaXMgW0RhdGVJbnB1dCwgRGF0ZUlucHV0XSA9PiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG9wZXJhdG9ySW5wdXQpXG4gICAgJiYgb3BlcmF0b3JJbnB1dC5sZW5ndGggPT09IDJcbiAgICAmJiBpc1ZhbGlkRGF0ZUlucHV0KG9wZXJhdG9ySW5wdXRbMF0pXG4gICAgJiYgaXNWYWxpZERhdGVJbnB1dChvcGVyYXRvcklucHV0WzFdKVxuICAgICYmIG5ldyBEYXRlKG9wZXJhdG9ySW5wdXRbMF0pIDw9IG5ldyBEYXRlKG9wZXJhdG9ySW5wdXRbMV0pO1xufTtcblxuLyoqXG4gKiBWYWxpZGF0ZSB0aGF0IGEgdmFsdWUgaXMgYSBzdXBwb3J0ZWQgc2ltcGxlIHR5cGVcbiAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSB0byB2YWxpZGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdXBwb3J0ZWRTaW1wbGVUeXBlcyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFN1cHBvcnRlZFNpbXBsZVR5cGVzIHtcbiAgcmV0dXJuIFsnc3RyaW5nJywgJ2Jvb2xlYW4nLCAnbnVtYmVyJywgJ3VuZGVmaW5lZCddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSkgfHwgdmFsdWUgPT09IG51bGwgfHwgaXNWYWxpZERhdGUodmFsdWUpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoYXQgYSB2YWx1ZSBpcyBhIHN0cmluZ1xuICogQHBhcmFtIHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuXG4vKipcbiAqIFBhcnNlIGlucHV0IHRvIHJldHVybiBSZWdFeHBcbiAqIEBwYXJhbSBpbnB1dFJlZ0V4cFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZWdFeHAoaW5wdXRSZWdFeHA6IHN0cmluZykge1xuICBpZiAoaW5wdXRSZWdFeHAuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgY29uc3QgZmluYWxTbGFzaCA9IGlucHV0UmVnRXhwLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgY29uc3QgcmVnZXhwUGF0dGVybiA9IGlucHV0UmVnRXhwLnNsaWNlKDEsIGZpbmFsU2xhc2gpO1xuICAgIGNvbnN0IHJlZ2V4cEZsYWdzID0gaW5wdXRSZWdFeHAuc2xpY2UoZmluYWxTbGFzaCArIDEpO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHJlZ2V4cFBhdHRlcm4sIHJlZ2V4cEZsYWdzKTtcbiAgfVxuICByZXR1cm4gbmV3IFJlZ0V4cChpbnB1dFJlZ0V4cCk7XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3IuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VuZ2luZS9vcGVyYXRvci9vcGVyYXRvci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRmFjdHMsXG59IGZyb20gJy4uL2ZhY3QvZmFjdC5pbnRlcmZhY2VzJztcblxuLyoqXG4gKiBSdWxlIEVuZ2luZSBvcGVyYXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZXJhdG9yPExlZnRFeHBvc2VkID0gdW5rbm93biwgUmlnaHRFeHBvc2VkID0gdW5rbm93biwgTGVmdFN1cHBvcnRlZCA9IExlZnRFeHBvc2VkLCBSaWdodFN1cHBvcnRlZCA9IFJpZ2h0RXhwb3NlZD4ge1xuICAvKiogT3BlcmF0b3IgbmFtZSB0byB1c2UgaW4gY29uZGl0aW9uICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFByaW9yaXR5IGluIHRoZSBkcm9wZG93biBkaXNwbGF5ICovXG4gIG9yZGVyaW5nV2VpZ2h0PzogbnVtYmVyO1xuICAvKiogTGVmdCBIYW5kIFZhbHVlIHZhbGlkYXRvciBmdW5jdGlvbiAqL1xuICB2YWxpZGF0ZUxocz86IHVua25vd24gZXh0ZW5kcyBMZWZ0U3VwcG9ydGVkID8gKG9wZXJhbmQ6IHVua25vd24pID0+IGJvb2xlYW4gOiAob3BlcmFuZDogdW5rbm93bikgPT4gb3BlcmFuZCBpcyBMZWZ0U3VwcG9ydGVkO1xuICAvKiogUmlnaHQgSGFuZCBWYWx1ZSB2YWxpZGF0b3IgZnVuY3Rpb24gKi9cbiAgdmFsaWRhdGVSaHM/OiB1bmtub3duIGV4dGVuZHMgUmlnaHRTdXBwb3J0ZWQgPyAob3BlcmFuZDogdW5rbm93bikgPT4gYm9vbGVhbiA6IChvcGVyYW5kOiB1bmtub3duKSA9PiBvcGVyYW5kIGlzIFJpZ2h0U3VwcG9ydGVkO1xuICAvKiogRXZhbHVhdGUgdGhlIHZhbHVlcyAqL1xuICBldmFsdWF0b3I6IChsaHM6IExlZnRTdXBwb3J0ZWQsIHJoczogUmlnaHRTdXBwb3J0ZWQsIG9wZXJhdG9yRmFjdFZhbHVlcz86IFJlY29yZDxzdHJpbmcsIEZhY3RzPikgPT4gYm9vbGVhbjtcbiAgLyoqIExpc3Qgb2YgZmFjdHMgbmFtZXMgdGhhdCB0aGUgb3BlcmF0b3IgY2FuIGRlcGVuZCBvbiAqL1xuICBmYWN0SW1wbGljaXREZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSdWxlIEVuZ2luZSB1bmFyeSBvcGVyYXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuYXJ5T3BlcmF0b3I8TCA9IHVua25vd24+IHtcbiAgLyoqIE9wZXJhdG9yIG5hbWUgdG8gdXNlIGluIGNvbmRpdGlvbiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBMZWZ0IEhhbmQgVmFsdWUgdmFsaWRhdG9yIGZ1bmN0aW9uICovXG4gIHZhbGlkYXRlTGhzPzogdW5rbm93biBleHRlbmRzIEwgPyAob3BlcmFuZDogdW5rbm93bikgPT4gYm9vbGVhbiA6IChvcGVyYW5kOiB1bmtub3duKSA9PiBvcGVyYW5kIGlzIEw7XG4gIC8qKiBFdmFsdWF0ZSB0aGUgdmFsdWVzICovXG4gIGV2YWx1YXRvcjogKGxoczogTCkgPT4gYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBbGlhcyBmb3Igc3VwcG9ydGVkIHNpbXBsZSB0eXBlcyBpbiBBRU0gdG8gYmUgdXNlZCBpbiB0aGUgb3BlcmF0b3JzIHRvIGF2b2lkIHJlcGV0aXRpb24gb2YgdGhlXG4gKiAoc3RyaW5nIHwgYm9vbGVhbiB8IERhdGUgfCBudW1iZXIpXG4gKiBUaGlzIHR5cGUgcmVmZXJlbmNlIGlzIHNwZWNpZmljYWxseSBoYW5kbGVkIGJ5IHRoZSBydWxlIG9wZXJhdG9yIGV4dHJhY3Rvci5cbiAqL1xuZXhwb3J0IHR5cGUgU3VwcG9ydGVkU2ltcGxlVHlwZXMgPSBzdHJpbmcgfCBib29sZWFuIHwgRGF0ZSB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogQW55IGlucHV0IHRoYXQgY2FuIGJlIHVzZWQgYXMgc2luZ2xlIHBhcmFtZXRlciBmb3IgRGF0ZSBjb25zdHJ1Y3RvciAoRGF0ZSwgc3RyaW5nLCBudW1iZXIpXG4gKi9cbmV4cG9ydCB0eXBlIERhdGVJbnB1dCA9IERhdGUgfCBzdHJpbmcgfCBudW1iZXI7XG4iXX0=
|