@o3r/rules-engine 12.0.0-next.6 → 12.0.0-next.9

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.
Files changed (91) hide show
  1. package/builders/package.json +3 -0
  2. package/components/rules-engine/rule-actions/rule-actions-pres.component.d.ts +1 -1
  3. package/components/rules-engine/rule-actions/rule-actions-pres.component.d.ts.map +1 -1
  4. package/components/rules-engine/rule-condition/rule-condition-pres.component.d.ts +1 -1
  5. package/components/rules-engine/rule-condition/rule-condition-pres.component.d.ts.map +1 -1
  6. package/components/rules-engine/rule-key-value/rule-key-value-pres.component.d.ts +1 -1
  7. package/components/rules-engine/rule-key-value/rule-key-value-pres.component.d.ts.map +1 -1
  8. package/components/rules-engine/rule-tree/rule-tree-pres.component.d.ts +1 -1
  9. package/components/rules-engine/rule-tree/rule-tree-pres.component.d.ts.map +1 -1
  10. package/components/rules-engine/ruleset-history/ruleset-history-pres.component.d.ts +1 -1
  11. package/components/rules-engine/ruleset-history/ruleset-history-pres.component.d.ts.map +1 -1
  12. package/components/rules-engine/ruleset-history/ruleset-history-pres.module.d.ts +7 -9
  13. package/components/rules-engine/ruleset-history/ruleset-history-pres.module.d.ts.map +1 -1
  14. package/components/rules-engine/shared/json-or-string.pipe.d.ts.map +1 -1
  15. package/engine/helpers/filter-ruleset-event.operator.d.ts.map +1 -1
  16. package/fesm2022/o3r-rules-engine.mjs +180 -165
  17. package/fesm2022/o3r-rules-engine.mjs.map +1 -1
  18. package/fixtures/jasmine/package.json +3 -0
  19. package/fixtures/jest/package.json +3 -0
  20. package/package.json +15 -21
  21. package/schematics/package.json +3 -0
  22. package/esm2022/components/index.mjs +0 -2
  23. package/esm2022/components/rules-engine/index.mjs +0 -4
  24. package/esm2022/components/rules-engine/rule-actions/rule-actions-pres.component.mjs +0 -35
  25. package/esm2022/components/rules-engine/rule-condition/rule-condition-pres.component.mjs +0 -36
  26. package/esm2022/components/rules-engine/rule-key-value/rule-key-value-pres.component.mjs +0 -63
  27. package/esm2022/components/rules-engine/rule-tree/rule-tree-pres.component.mjs +0 -48
  28. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.component.mjs +0 -50
  29. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.module.mjs +0 -23
  30. package/esm2022/components/rules-engine/shared/fallback-to.pipe.mjs +0 -14
  31. package/esm2022/components/rules-engine/shared/index.mjs +0 -4
  32. package/esm2022/components/rules-engine/shared/json-or-string.pipe.mjs +0 -23
  33. package/esm2022/components/rules-engine/shared/ruleset-history.helper.mjs +0 -51
  34. package/esm2022/devkit/index.mjs +0 -7
  35. package/esm2022/devkit/rules-engine-devkit.interface.mjs +0 -6
  36. package/esm2022/devkit/rules-engine-devtools.console.service.mjs +0 -111
  37. package/esm2022/devkit/rules-engine-devtools.message.service.mjs +0 -115
  38. package/esm2022/devkit/rules-engine-devtools.module.mjs +0 -47
  39. package/esm2022/devkit/rules-engine-devtools.service.mjs +0 -130
  40. package/esm2022/devkit/rules-engine-devtools.token.mjs +0 -6
  41. package/esm2022/engine/debug/engine.debug.mjs +0 -195
  42. package/esm2022/engine/debug/helpers.mjs +0 -92
  43. package/esm2022/engine/engine.interface.mjs +0 -2
  44. package/esm2022/engine/engine.mjs +0 -134
  45. package/esm2022/engine/fact/fact.interfaces.mjs +0 -2
  46. package/esm2022/engine/fact/index.mjs +0 -2
  47. package/esm2022/engine/helpers/filter-ruleset-event.operator.mjs +0 -19
  48. package/esm2022/engine/index.mjs +0 -8
  49. package/esm2022/engine/operator/index.mjs +0 -4
  50. package/esm2022/engine/operator/operator.helpers.mjs +0 -107
  51. package/esm2022/engine/operator/operator.interface.mjs +0 -2
  52. package/esm2022/engine/operator/operators/array-based.operators.mjs +0 -266
  53. package/esm2022/engine/operator/operators/basic.operators.mjs +0 -93
  54. package/esm2022/engine/operator/operators/date-based.operators.mjs +0 -119
  55. package/esm2022/engine/operator/operators/index.mjs +0 -10
  56. package/esm2022/engine/operator/operators/number-based.operators.mjs +0 -44
  57. package/esm2022/engine/rule/index.mjs +0 -2
  58. package/esm2022/engine/rule/rule.helpers.mjs +0 -50
  59. package/esm2022/engine/ruleset-executor.mjs +0 -255
  60. package/esm2022/engine/structure.mjs +0 -2
  61. package/esm2022/fact/fact.abstract-service.mjs +0 -12
  62. package/esm2022/fact/index.mjs +0 -3
  63. package/esm2022/fact/reserved.facts.mjs +0 -2
  64. package/esm2022/fixtures/jasmine/index.mjs +0 -2
  65. package/esm2022/fixtures/jasmine/o3r-rules-engine-fixtures-jasmine.mjs +0 -5
  66. package/esm2022/fixtures/jasmine/rules-engine.runner.service.fixture.jasmine.mjs +0 -14
  67. package/esm2022/fixtures/jest/index.mjs +0 -2
  68. package/esm2022/fixtures/jest/o3r-rules-engine-fixtures-jest.mjs +0 -5
  69. package/esm2022/fixtures/jest/rules-engine.runner.service.fixture.jest.mjs +0 -14
  70. package/esm2022/inner-facts/current-time/current-time-fact.service.mjs +0 -29
  71. package/esm2022/inner-facts/current-time/current-time.facts.mjs +0 -2
  72. package/esm2022/inner-facts/current-time/index.mjs +0 -3
  73. package/esm2022/inner-facts/index.mjs +0 -2
  74. package/esm2022/interfaces/index.mjs +0 -2
  75. package/esm2022/interfaces/linkable-to-ruleset.interfaces.mjs +0 -2
  76. package/esm2022/o3r-rules-engine.mjs +0 -5
  77. package/esm2022/public_api.mjs +0 -9
  78. package/esm2022/services/index.mjs +0 -3
  79. package/esm2022/services/rules-engine.token.mjs +0 -9
  80. package/esm2022/services/runner/index.mjs +0 -3
  81. package/esm2022/services/runner/rules-engine.runner.module.mjs +0 -37
  82. package/esm2022/services/runner/rules-engine.runner.service.mjs +0 -132
  83. package/esm2022/stores/index.mjs +0 -2
  84. package/esm2022/stores/rulesets/index.mjs +0 -8
  85. package/esm2022/stores/rulesets/rulesets.actions.mjs +0 -42
  86. package/esm2022/stores/rulesets/rulesets.effect.mjs +0 -30
  87. package/esm2022/stores/rulesets/rulesets.module.mjs +0 -42
  88. package/esm2022/stores/rulesets/rulesets.reducer.mjs +0 -35
  89. package/esm2022/stores/rulesets/rulesets.selectors.mjs +0 -79
  90. package/esm2022/stores/rulesets/rulesets.state.mjs +0 -5
  91. package/esm2022/stores/rulesets/rulesets.sync.mjs +0 -20
@@ -1,50 +0,0 @@
1
- /**
2
- * Determine if the condition is a properties condition
3
- * @param condition Condition to analyze
4
- */
5
- export function isConditionProperties(condition) {
6
- return condition && typeof condition.operator !== 'undefined' && typeof condition.lhs !== 'undefined';
7
- }
8
- /**
9
- * Determine if the given operand is a Fact operand
10
- * @param operand Operand to analyze
11
- */
12
- export function isOperandFact(operand) {
13
- return operand && operand.type === 'FACT';
14
- }
15
- /**
16
- * Determine if the given operand is a Inner Fact operand
17
- * @param operand Operand to analyze
18
- */
19
- export function isOperandRuntimeFact(operand) {
20
- return operand && operand.type === 'RUNTIME_FACT';
21
- }
22
- /**
23
- * Determine if the given operand is a Static Value operand
24
- * @param operand Operand to analyze
25
- */
26
- export function isOperandLiteral(operand) {
27
- return operand && operand.type === 'LITERAL';
28
- }
29
- /**
30
- * Determine if the given condition is All based child conditions
31
- * @param condition Condition node
32
- */
33
- export function isAllConditions(condition) {
34
- return condition && typeof condition.all !== 'undefined';
35
- }
36
- /**
37
- * Determine if the given condition is Any based child conditions
38
- * @param condition Condition node
39
- */
40
- export function isAnyConditions(condition) {
41
- return condition && typeof condition.any !== 'undefined';
42
- }
43
- /**
44
- * Determine if the given condition is Not based child conditions
45
- * @param condition Condition node
46
- */
47
- export function isNotCondition(condition) {
48
- return condition && typeof condition.not !== 'undefined';
49
- }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VuZ2luZS9ydWxlL3J1bGUuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsU0FBYztJQUNsRCxPQUFPLFNBQVMsSUFBSSxPQUFPLFNBQVMsQ0FBQyxRQUFRLEtBQUssV0FBVyxJQUFJLE9BQU8sU0FBUyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUM7QUFDeEcsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBWTtJQUN4QyxPQUFPLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUM1QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQVk7SUFDL0MsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUM7QUFDcEQsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFZO0lBQzNDLE9BQU8sT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO0FBQy9DLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLFNBQWM7SUFDNUMsT0FBTyxTQUFTLElBQUksT0FBTyxTQUFTLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQztBQUMzRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxTQUFjO0lBQzVDLE9BQU8sU0FBUyxJQUFJLE9BQU8sU0FBUyxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUM7QUFDM0QsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBYztJQUMzQyxPQUFPLFNBQVMsSUFBSSxPQUFPLFNBQVMsQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBbGxDb25kaXRpb25zLFxuICBBbnlDb25kaXRpb25zLFxuICBCaW5hcnlPcGVyYXRpb24sXG4gIE5vdENvbmRpdGlvbixcbiAgT3BlcmFuZCxcbiAgT3BlcmFuZEZhY3QsXG4gIFVuYXJ5T3BlcmF0aW9uLFxufSBmcm9tICcuLi9zdHJ1Y3R1cmUnO1xuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGUgY29uZGl0aW9uIGlzIGEgcHJvcGVydGllcyBjb25kaXRpb25cbiAqIEBwYXJhbSBjb25kaXRpb24gQ29uZGl0aW9uIHRvIGFuYWx5emVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uZGl0aW9uUHJvcGVydGllcyhjb25kaXRpb246IGFueSk6IGNvbmRpdGlvbiBpcyBCaW5hcnlPcGVyYXRpb24gfCBVbmFyeU9wZXJhdGlvbiB7XG4gIHJldHVybiBjb25kaXRpb24gJiYgdHlwZW9mIGNvbmRpdGlvbi5vcGVyYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbmRpdGlvbi5saHMgIT09ICd1bmRlZmluZWQnO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGUgZ2l2ZW4gb3BlcmFuZCBpcyBhIEZhY3Qgb3BlcmFuZFxuICogQHBhcmFtIG9wZXJhbmQgT3BlcmFuZCB0byBhbmFseXplXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09wZXJhbmRGYWN0KG9wZXJhbmQ6IGFueSk6IG9wZXJhbmQgaXMgT3BlcmFuZEZhY3Qge1xuICByZXR1cm4gb3BlcmFuZCAmJiBvcGVyYW5kLnR5cGUgPT09ICdGQUNUJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIG9wZXJhbmQgaXMgYSBJbm5lciBGYWN0IG9wZXJhbmRcbiAqIEBwYXJhbSBvcGVyYW5kIE9wZXJhbmQgdG8gYW5hbHl6ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPcGVyYW5kUnVudGltZUZhY3Qob3BlcmFuZDogYW55KTogb3BlcmFuZCBpcyBPcGVyYW5kPCdSVU5USU1FX0ZBQ1QnLCBzdHJpbmc+IHtcbiAgcmV0dXJuIG9wZXJhbmQgJiYgb3BlcmFuZC50eXBlID09PSAnUlVOVElNRV9GQUNUJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIG9wZXJhbmQgaXMgYSBTdGF0aWMgVmFsdWUgb3BlcmFuZFxuICogQHBhcmFtIG9wZXJhbmQgT3BlcmFuZCB0byBhbmFseXplXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09wZXJhbmRMaXRlcmFsKG9wZXJhbmQ6IGFueSk6IG9wZXJhbmQgaXMgT3BlcmFuZDwnTElURVJBTCc+IHtcbiAgcmV0dXJuIG9wZXJhbmQgJiYgb3BlcmFuZC50eXBlID09PSAnTElURVJBTCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBjb25kaXRpb24gaXMgQWxsIGJhc2VkIGNoaWxkIGNvbmRpdGlvbnNcbiAqIEBwYXJhbSBjb25kaXRpb24gQ29uZGl0aW9uIG5vZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWxsQ29uZGl0aW9ucyhjb25kaXRpb246IGFueSk6IGNvbmRpdGlvbiBpcyBBbGxDb25kaXRpb25zIHtcbiAgcmV0dXJuIGNvbmRpdGlvbiAmJiB0eXBlb2YgY29uZGl0aW9uLmFsbCAhPT0gJ3VuZGVmaW5lZCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBjb25kaXRpb24gaXMgQW55IGJhc2VkIGNoaWxkIGNvbmRpdGlvbnNcbiAqIEBwYXJhbSBjb25kaXRpb24gQ29uZGl0aW9uIG5vZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQW55Q29uZGl0aW9ucyhjb25kaXRpb246IGFueSk6IGNvbmRpdGlvbiBpcyBBbnlDb25kaXRpb25zIHtcbiAgcmV0dXJuIGNvbmRpdGlvbiAmJiB0eXBlb2YgY29uZGl0aW9uLmFueSAhPT0gJ3VuZGVmaW5lZCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBjb25kaXRpb24gaXMgTm90IGJhc2VkIGNoaWxkIGNvbmRpdGlvbnNcbiAqIEBwYXJhbSBjb25kaXRpb24gQ29uZGl0aW9uIG5vZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTm90Q29uZGl0aW9uKGNvbmRpdGlvbjogYW55KTogY29uZGl0aW9uIGlzIE5vdENvbmRpdGlvbiB7XG4gIHJldHVybiBjb25kaXRpb24gJiYgdHlwZW9mIGNvbmRpdGlvbi5ub3QgIT09ICd1bmRlZmluZWQnO1xufVxuIl19
@@ -1,255 +0,0 @@
1
- /** Ruleset executor */
2
- import { JSONPath, } from 'jsonpath-plus';
3
- import { combineLatest, of, } from 'rxjs';
4
- import { distinctUntilChanged, map, pairwise, shareReplay, startWith, switchMap, tap, } from 'rxjs/operators';
5
- import { handleRuleEvaluationDebug, } from './debug/helpers';
6
- import { executeOperator, } from './operator/operator.helpers';
7
- import { isAllConditions, isConditionProperties, isNotCondition, isOperandFact, isOperandLiteral, isOperandRuntimeFact, } from './rule/rule.helpers';
8
- export class RulesetExecutor {
9
- /**
10
- * Create a new ruleset executor
11
- * @param ruleset Ruleset to evaluate
12
- * @param rulesEngine Instance of the rules engine
13
- */
14
- constructor(ruleset, rulesEngine) {
15
- this.executionCounter = 0;
16
- /**
17
- * Find rule input facts
18
- * @param obj
19
- */
20
- this.findRuleInputFacts = (obj) => {
21
- const ruleInputFacts = new Set();
22
- this.collectRuleInputFacts(obj, ruleInputFacts);
23
- return Array.from(ruleInputFacts);
24
- };
25
- this.ruleset = ruleset;
26
- this.rulesEngine = rulesEngine;
27
- this.operators = rulesEngine.operators;
28
- this.engineRuleset = this.plugRuleset();
29
- }
30
- /**
31
- * Recursively explores a rule to identify and collect input facts.
32
- * Input facts are identified based on the 'FACT' type and operator-specific implicit dependencies.
33
- * @param currentObject The current object being explored.
34
- * @param ruleInputFacts A set to store the identified input facts for the rule.
35
- */
36
- collectRuleInputFacts(currentObject, ruleInputFacts) {
37
- if (currentObject && isOperandFact(currentObject)) {
38
- ruleInputFacts.add(currentObject.value);
39
- }
40
- else if (Array.isArray(currentObject)) {
41
- currentObject.forEach((elem) => this.collectRuleInputFacts(elem, ruleInputFacts));
42
- }
43
- else {
44
- for (const key in currentObject) {
45
- if ((key === 'operator') && isConditionProperties(currentObject)) {
46
- const op = this.operators[currentObject[key]];
47
- if (op && op.factImplicitDependencies) {
48
- op.factImplicitDependencies.forEach((dep) => ruleInputFacts.add(dep));
49
- }
50
- }
51
- else if (typeof currentObject[key] === 'object') {
52
- this.collectRuleInputFacts(currentObject[key], ruleInputFacts);
53
- }
54
- }
55
- }
56
- }
57
- /**
58
- * Report performance mark for a rule run
59
- * @param rule Rule to measure
60
- * @param status status of the rule evaluation
61
- */
62
- performanceMark(rule, status) {
63
- if (this.rulesEngine.performance) {
64
- const markName = `rules-engine:${this.rulesEngine.rulesEngineInstanceName}:${this.ruleset.name}:${rule.name}`;
65
- this.rulesEngine.performance.mark(`${markName}:${status}`);
66
- if (status === 'end') {
67
- this.rulesEngine.performance.measure(markName, `${markName}:start`, `${markName}:end`);
68
- }
69
- }
70
- }
71
- /**
72
- * Get operand value stream according to its type
73
- * @param operand operand of the condition
74
- * @param factsValue
75
- * @param runtimeFactValues
76
- */
77
- getOperandValue(operand, factsValue, runtimeFactValues) {
78
- if (typeof operand === 'undefined') {
79
- return undefined;
80
- }
81
- else if (isOperandFact(operand)) {
82
- const factValue = factsValue[operand.value];
83
- // eslint-disable-next-line new-cap -- convention for JSONPath
84
- return operand.path ? factValue && JSONPath({ wrap: false, json: factValue, path: operand.path }) : factValue;
85
- }
86
- else if (isOperandLiteral(operand)) {
87
- return operand.value;
88
- }
89
- else if (isOperandRuntimeFact(operand)) {
90
- return runtimeFactValues[operand.value];
91
- }
92
- return undefined;
93
- }
94
- /**
95
- * Process a root rule from a ruleset, and return the associated actions to be processed
96
- * Will also update the runtimeFactValues map that is ruleset wise
97
- * Note that runtimeFactValues will be mutated by all the runtime facts actions executed
98
- * @param rule
99
- * @param factsValue
100
- * @param runtimeFactValues
101
- * @protected
102
- */
103
- evaluateRule(rule, factsValue, runtimeFactValues) {
104
- return this.evaluateBlock(rule.rootElement, factsValue, runtimeFactValues);
105
- }
106
- /**
107
- * Recursively process a block to extract all the actions keeping the order
108
- * Note that runtimeFactValues will be mutated by all the runtime facts actions executed
109
- * @param element
110
- * @param factsValue
111
- * @param runtimeFactValues This runtime fact map will be mutated by all the runtime facts actions executed
112
- * @param actions
113
- * @protected
114
- */
115
- evaluateBlock(element, factsValue, runtimeFactValues, actions = []) {
116
- if (this.isIfElseBlock(element)) {
117
- (!element.condition || this.evaluateCondition(element.condition, factsValue, runtimeFactValues) ? element.successElements : element.failureElements)
118
- .forEach((elementResult) => this.evaluateBlock(elementResult, factsValue, runtimeFactValues, actions));
119
- }
120
- else if (this.isActionBlock(element)) {
121
- if (this.isActionSetTemporaryFactBlock(element)) {
122
- runtimeFactValues[element.fact] = element.value;
123
- }
124
- else {
125
- actions.push(element);
126
- }
127
- }
128
- return actions;
129
- }
130
- /**
131
- * Returns true if the element is a IfElse block
132
- * @param element
133
- * @protected
134
- */
135
- isIfElseBlock(element) {
136
- return element.blockType === 'IF_ELSE';
137
- }
138
- /**
139
- * Returns true if the element is an action block
140
- * @param element
141
- * @protected
142
- */
143
- isActionBlock(element) {
144
- return 'elementType' in element && element.elementType === 'ACTION';
145
- }
146
- /**
147
- * Returns true if the action sets a temporary fact
148
- * @param element
149
- * @protected
150
- */
151
- isActionSetTemporaryFactBlock(element) {
152
- return 'actionType' in element && element.actionType === 'SET_FACT';
153
- }
154
- /**
155
- * Evaluate a condition block
156
- * @param nestedCondition
157
- * @param factsValue
158
- * @param runtimeFactValues
159
- * @protected
160
- */
161
- evaluateCondition(nestedCondition, factsValue, runtimeFactValues) {
162
- if (isConditionProperties(nestedCondition)) {
163
- const operator = this.operators[nestedCondition.operator];
164
- if (operator === undefined) {
165
- throw new Error(`Unknown operator : ${nestedCondition.operator}, skipping the rule execution...`);
166
- }
167
- return executeOperator(this.getOperandValue(nestedCondition.lhs, factsValue, runtimeFactValues), this.getOperandValue('rhs' in nestedCondition ? nestedCondition.rhs : undefined, factsValue, runtimeFactValues), operator, factsValue);
168
- }
169
- if (isNotCondition(nestedCondition)) {
170
- return !this.evaluateCondition(nestedCondition.not, factsValue, runtimeFactValues);
171
- }
172
- if (nestedCondition.all || nestedCondition.any) {
173
- const evaluate = (condition) => this.evaluateCondition(condition, factsValue, runtimeFactValues);
174
- return isAllConditions(nestedCondition) ? nestedCondition.all.every((element) => evaluate(element)) : nestedCondition.any.some((element) => evaluate(element));
175
- }
176
- throw new Error(`Unknown condition block met : ${JSON.stringify(nestedCondition)}`);
177
- }
178
- /**
179
- * Plug ruleset to fact streams and trigger a first evaluation
180
- */
181
- plugRuleset() {
182
- const inputFactsForRule = {};
183
- this.ruleset.rules.forEach((rule) => inputFactsForRule[rule.id] = this.findRuleInputFacts(rule.rootElement));
184
- const factsThatRerunEverything = [];
185
- this.ruleset.rules.forEach((rule) => {
186
- if (rule.outputRuntimeFacts.length > 0 || rule.inputRuntimeFacts.length > 0) {
187
- factsThatRerunEverything.push(...inputFactsForRule[rule.id]);
188
- }
189
- else { }
190
- });
191
- const triggerFull$ = factsThatRerunEverything.length === 0
192
- ? of([])
193
- : combineLatest(factsThatRerunEverything.map((fact) => this.rulesEngine.retrieveOrCreateFactStream(fact)));
194
- const result$ = triggerFull$.pipe(switchMap(() => {
195
- const runtimeFactValues = {};
196
- let rulesetInputFacts;
197
- if (this.rulesEngine.debugMode) {
198
- rulesetInputFacts = Array.from(this.ruleset.rules.reduce((acc, rule) => {
199
- inputFactsForRule[rule.id].forEach((factName) => acc.add(factName));
200
- return acc;
201
- }, new Set()));
202
- }
203
- return combineLatest(this.ruleset.rules.map((rule) => {
204
- const inputFacts = inputFactsForRule[rule.id];
205
- const values$ = inputFacts.map((fact) => this.rulesEngine.retrieveOrCreateFactStream(fact));
206
- return (values$.length > 0 ? combineLatest(values$) : of([[]]))
207
- .pipe(startWith(undefined), pairwise(), tap(() => this.performanceMark(rule, 'start')), map(([oldFactValues, factValues]) => {
208
- const output = { actions: undefined };
209
- try {
210
- output.actions = this.evaluateRule(rule, inputFacts.reduce((acc, id, index) => {
211
- acc[id] = factValues[index];
212
- return acc;
213
- }, {}), runtimeFactValues);
214
- }
215
- catch (error) {
216
- output.actions = undefined;
217
- output.error = error;
218
- }
219
- if (this.rulesEngine.debugMode) {
220
- output.evaluation = handleRuleEvaluationDebug(rule, this.ruleset.name, output.actions, output.error, runtimeFactValues, factValues, oldFactValues, inputFacts);
221
- }
222
- else if (output.error) {
223
- this.rulesEngine.logger?.error(output.error);
224
- this.rulesEngine.logger?.warn(`Skipping rule ${rule.name}, and the associated ruleset`);
225
- }
226
- return output;
227
- }), tap(() => this.performanceMark(rule, 'end')));
228
- })).pipe(startWith(undefined), pairwise(), map(([prevRes, currRes]) => {
229
- const actionsLists = currRes.map((r) => r.actions);
230
- const allExecutionsValid = actionsLists.every((actions) => !!actions);
231
- let execInfo = { actionsLists: (allExecutionsValid ? actionsLists : [[]]) };
232
- if (this.rulesEngine.engineDebug) {
233
- execInfo = {
234
- ...execInfo,
235
- ...this.rulesEngine.engineDebug.handleDebugRulesetExecutionInfo(currRes, prevRes, allExecutionsValid, rulesetInputFacts, runtimeFactValues, ++this.executionCounter, this.ruleset)
236
- };
237
- }
238
- return execInfo;
239
- }), map((output) => {
240
- const outputActions = [].concat(...output.actionsLists);
241
- if (this.rulesEngine.engineDebug && output.allExecutionsValid) {
242
- this.rulesEngine.engineDebug.addRulesetExecutionEvent(this.ruleset, output.executionCounter, rulesetInputFacts, outputActions, runtimeFactValues, output.rulesetTriggers, output.rulesetOutputExecution);
243
- }
244
- return outputActions;
245
- }), distinctUntilChanged((prev, curr) => prev.length === 0 && curr.length === 0));
246
- }), shareReplay({ bufferSize: 1, refCount: true }));
247
- return {
248
- id: this.ruleset.id,
249
- validityRange: this.ruleset.validityRange,
250
- linkedComponents: this.ruleset.linkedComponents,
251
- rulesResultsSubject$: result$
252
- };
253
- }
254
- }
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldC1leGVjdXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbmdpbmUvcnVsZXNldC1leGVjdXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1QkFBdUI7QUFDdkIsT0FBTyxFQUNMLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUViLEVBQUUsR0FDSCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wseUJBQXlCLEdBQzFCLE1BQU0saUJBQWlCLENBQUM7QUFhekIsT0FBTyxFQUNMLGVBQWUsR0FDaEIsTUFBTSw2QkFBNkIsQ0FBQztBQUlyQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLHFCQUFxQixFQUNyQixjQUFjLEVBQ2QsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixvQkFBb0IsR0FDckIsTUFBTSxxQkFBcUIsQ0FBQztBQWU3QixNQUFNLE9BQU8sZUFBZTtJQWtCMUI7Ozs7T0FJRztJQUNILFlBQVksT0FBZ0IsRUFBRSxXQUF3QjtRQVA5QyxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFxSzdCOzs7V0FHRztRQUNnQix1QkFBa0IsR0FBRyxDQUFDLEdBQWEsRUFBWSxFQUFFO1lBQ2xFLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7WUFDekMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNoRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDO1FBcktBLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FB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QUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxnQkFBaUIsRUFDMUYsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxlQUFnQixFQUM1RSxNQUFNLENBQUMsc0JBQXVCLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztnQkFFRCxPQUFPLGFBQWEsQ0FBQztZQUN2QixDQUFDLENBQUMsRUFDRixvQkFBb0IsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQzdFLENBQUM7UUFDSixDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFcEQsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbkIsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYTtZQUN6QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQjtZQUMvQyxvQkFBb0IsRUFBRSxPQUFPO1NBQ2IsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUnVsZXNldCBleGVjdXRvciAqL1xuaW1wb3J0IHtcbiAgSlNPTlBhdGgsXG59IGZyb20gJ2pzb25wYXRoLXBsdXMnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIG1hcCxcbiAgcGFpcndpc2UsXG4gIHNoYXJlUmVwbGF5LFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBoYW5kbGVSdWxlRXZhbHVhdGlvbkRlYnVnLFxufSBmcm9tICcuL2RlYnVnL2hlbHBlcnMnO1xuaW1wb3J0IHR5cGUge1xuICBSdWxlc0VuZ2luZSxcbn0gZnJvbSAnLi9lbmdpbmUnO1xuaW1wb3J0IHtcbiAgRW5naW5lUnVsZXNldCxcbiAgRXZhbHVhdGlvblJlYXNvbixcbiAgUnVsZUV2YWx1YXRpb24sXG4gIFJ1bGVFdmFsdWF0aW9uT3V0cHV0LFxufSBmcm9tICcuL2VuZ2luZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUge1xuICBGYWN0cyxcbn0gZnJvbSAnLi9mYWN0JztcbmltcG9ydCB7XG4gIGV4ZWN1dGVPcGVyYXRvcixcbn0gZnJvbSAnLi9vcGVyYXRvci9vcGVyYXRvci5oZWxwZXJzJztcbmltcG9ydCB7XG4gIE9wZXJhdG9yLFxufSBmcm9tICcuL29wZXJhdG9yL29wZXJhdG9yLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBpc0FsbENvbmRpdGlvbnMsXG4gIGlzQ29uZGl0aW9uUHJvcGVydGllcyxcbiAgaXNOb3RDb25kaXRpb24sXG4gIGlzT3BlcmFuZEZhY3QsXG4gIGlzT3BlcmFuZExpdGVyYWwsXG4gIGlzT3BlcmFuZFJ1bnRpbWVGYWN0LFxufSBmcm9tICcuL3J1bGUvcnVsZS5oZWxwZXJzJztcbmltcG9ydCB7XG4gIEFjdGlvbkJsb2NrLFxuICBBY3Rpb25TZXRUZW1wb3JhcnlGYWN0QmxvY2ssXG4gIEFsbEJsb2NrLFxuICBHZW5lcmljT3BlcmFuZCxcbiAgSWZFbHNlQmxvY2ssXG4gIE5lc3RlZENvbmRpdGlvbixcbiAgUnVsZSxcbiAgUnVsZXNldCxcbn0gZnJvbSAnLi9zdHJ1Y3R1cmUnO1xuXG4vKiogVHlwZSBvZiB0aGUgcmV0cmlldmUgZmFjdCBmdW5jdGlvbiAqL1xuZXhwb3J0IHR5cGUgUmV0cmlldmVGYWN0RnVuY1R5cGUgPSA8VCA9IHVua25vd24+IChpZDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY2xhc3MgUnVsZXNldEV4ZWN1dG9yIHtcbiAgLyoqIHJldHJpZXZlRmFjdEZ1bmMgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJ1bGVzRW5naW5lOiBSdWxlc0VuZ2luZTtcblxuICAvKiogTWFwIG9mIGF2YWlsYWJsZSBvcGVyYXRvcnMgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wZXJhdG9yczogUmVjb3JkPHN0cmluZywgT3BlcmF0b3I8dW5rbm93biwgdW5rbm93bj4+O1xuXG4gIC8qKiBEZWxheSBiZWZvcmUgZmFjdCBzdHJlYW0gZGVmYXVsdGluZyB2YWx1ZSAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmFjdERlZmF1bHREZWxheT86IG51bWJlcjtcblxuICAvKiogUnVsZXNldCBhc3NvY2lhdGVkIHRvIHRoZSBjdXJyZW50IGV4ZWN1dG9yKi9cbiAgcHVibGljIHJlYWRvbmx5IHJ1bGVzZXQ6IFJ1bGVzZXQ7XG5cbiAgLyoqIFJ1bGVzZXQgcGx1Z2dlZCB0byB0aGUgZmFjdCBzdHJlYW0sIHRoYXQgY29udGFpbnMgYWN0aW9ucyBzdHJlYW0gcmVzdWx0ICovXG4gIHB1YmxpYyByZWFkb25seSBlbmdpbmVSdWxlc2V0OiBFbmdpbmVSdWxlc2V0O1xuXG4gIHByaXZhdGUgZXhlY3V0aW9uQ291bnRlciA9IDA7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBydWxlc2V0IGV4ZWN1dG9yXG4gICAqIEBwYXJhbSBydWxlc2V0IFJ1bGVzZXQgdG8gZXZhbHVhdGVcbiAgICogQHBhcmFtIHJ1bGVzRW5naW5lIEluc3RhbmNlIG9mIHRoZSBydWxlcyBlbmdpbmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHJ1bGVzZXQ6IFJ1bGVzZXQsIHJ1bGVzRW5naW5lOiBSdWxlc0VuZ2luZSkge1xuICAgIHRoaXMucnVsZXNldCA9IHJ1bGVzZXQ7XG4gICAgdGhpcy5ydWxlc0VuZ2luZSA9IHJ1bGVzRW5naW5lO1xuICAgIHRoaXMub3BlcmF0b3JzID0gcnVsZXNFbmdpbmUub3BlcmF0b3JzO1xuICAgIHRoaXMuZW5naW5lUnVsZXNldCA9IHRoaXMucGx1Z1J1bGVzZXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBleHBsb3JlcyBhIHJ1bGUgdG8gaWRlbnRpZnkgYW5kIGNvbGxlY3QgaW5wdXQgZmFjdHMuXG4gICAqIElucHV0IGZhY3RzIGFyZSBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSAnRkFDVCcgdHlwZSBhbmQgb3BlcmF0b3Itc3BlY2lmaWMgaW1wbGljaXQgZGVwZW5kZW5jaWVzLlxuICAgKiBAcGFyYW0gY3VycmVudE9iamVjdCBUaGUgY3VycmVudCBvYmplY3QgYmVpbmcgZXhwbG9yZWQuXG4gICAqIEBwYXJhbSBydWxlSW5wdXRGYWN0cyBBIHNldCB0byBzdG9yZSB0aGUgaWRlbnRpZmllZCBpbnB1dCBmYWN0cyBmb3IgdGhlIHJ1bGUuXG4gICAqL1xuICBwcml2YXRlIGNvbGxlY3RSdWxlSW5wdXRGYWN0cyhjdXJyZW50T2JqZWN0OiBBbGxCbG9jayB8IE5lc3RlZENvbmRpdGlvbiB8IE5lc3RlZENvbmRpdGlvbltdLCBydWxlSW5wdXRGYWN0czogU2V0PHN0cmluZz4pIHtcbiAgICBpZiAoY3VycmVudE9iamVjdCAmJiBpc09wZXJhbmRGYWN0KGN1cnJlbnRPYmplY3QpKSB7XG4gICAgICBydWxlSW5wdXRGYWN0cy5hZGQoY3VycmVudE9iamVjdC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRPYmplY3QpKSB7XG4gICAgICBjdXJyZW50T2JqZWN0LmZvckVhY2goKGVsZW0pID0+IHRoaXMuY29sbGVjdFJ1bGVJbnB1dEZhY3RzKGVsZW0sIHJ1bGVJbnB1dEZhY3RzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGN1cnJlbnRPYmplY3QpIHtcbiAgICAgICAgaWYgKChrZXkgPT09ICdvcGVyYXRvcicpICYmIGlzQ29uZGl0aW9uUHJvcGVydGllcyhjdXJyZW50T2JqZWN0KSkge1xuICAgICAgICAgIGNvbnN0IG9wID0gdGhpcy5vcGVyYXRvcnNbY3VycmVudE9iamVjdFtrZXldXTtcbiAgICAgICAgICBpZiAob3AgJiYgb3AuZmFjdEltcGxpY2l0RGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICBvcC5mYWN0SW1wbGljaXREZXBlbmRlbmNpZXMuZm9yRWFjaCgoZGVwKSA9PiBydWxlSW5wdXRGYWN0cy5hZGQoZGVwKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjdXJyZW50T2JqZWN0W2tleSBhcyBrZXlvZiAoQWxsQmxvY2sgfCBOZXN0ZWRDb25kaXRpb24pXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICB0aGlzLmNvbGxlY3RSdWxlSW5wdXRGYWN0cyhjdXJyZW50T2JqZWN0W2tleSBhcyBrZXlvZiAoQWxsQmxvY2sgfCBOZXN0ZWRDb25kaXRpb24pXSwgcnVsZUlucHV0RmFjdHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBwZXJmb3JtYW5jZSBtYXJrIGZvciBhIHJ1bGUgcnVuXG4gICAqIEBwYXJhbSBydWxlIFJ1bGUgdG8gbWVhc3VyZVxuICAgKiBAcGFyYW0gc3RhdHVzIHN0YXR1cyBvZiB0aGUgcnVsZSBldmFsdWF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgcGVyZm9ybWFuY2VNYXJrKHJ1bGU6IFJ1bGUsIHN0YXR1czogJ3N0YXJ0JyB8ICdlbmQnKSB7XG4gICAgaWYgKHRoaXMucnVsZXNFbmdpbmUucGVyZm9ybWFuY2UpIHtcbiAgICAgIGNvbnN0IG1hcmtOYW1lID0gYHJ1bGVzLWVuZ2luZToke3RoaXMucnVsZXNFbmdpbmUucnVsZXNFbmdpbmVJbnN0YW5jZU5hbWV9OiR7dGhpcy5ydWxlc2V0Lm5hbWV9OiR7cnVsZS5uYW1lfWA7XG4gICAgICB0aGlzLnJ1bGVzRW5naW5lLnBlcmZvcm1hbmNlLm1hcmsoYCR7bWFya05hbWV9OiR7c3RhdHVzfWApO1xuICAgICAgaWYgKHN0YXR1cyA9PT0gJ2VuZCcpIHtcbiAgICAgICAgdGhpcy5ydWxlc0VuZ2luZS5wZXJmb3JtYW5jZS5tZWFzdXJlKG1hcmtOYW1lLCBgJHttYXJrTmFtZX06c3RhcnRgLCBgJHttYXJrTmFtZX06ZW5kYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBvcGVyYW5kIHZhbHVlIHN0cmVhbSBhY2NvcmRpbmcgdG8gaXRzIHR5cGVcbiAgICogQHBhcmFtIG9wZXJhbmQgb3BlcmFuZCBvZiB0aGUgY29uZGl0aW9uXG4gICAqIEBwYXJhbSBmYWN0c1ZhbHVlXG4gICAqIEBwYXJhbSBydW50aW1lRmFjdFZhbHVlc1xuICAgKi9cbiAgcHJvdGVjdGVkIGdldE9wZXJhbmRWYWx1ZShvcGVyYW5kOiBHZW5lcmljT3BlcmFuZCB8IHVuZGVmaW5lZCwgZmFjdHNWYWx1ZTogUmVjb3JkPHN0cmluZywgRmFjdHMgfCB1bmRlZmluZWQ+LCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+KTogdW5rbm93biB7XG4gICAgaWYgKHR5cGVvZiBvcGVyYW5kID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZEZhY3Qob3BlcmFuZCkpIHtcbiAgICAgIGNvbnN0IGZhY3RWYWx1ZSA9IGZhY3RzVmFsdWVbb3BlcmFuZC52YWx1ZV07XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcCAtLSBjb252ZW50aW9uIGZvciBKU09OUGF0aFxuICAgICAgcmV0dXJuIG9wZXJhbmQucGF0aCA/IGZhY3RWYWx1ZSAmJiBKU09OUGF0aCh7IHdyYXA6IGZhbHNlLCBqc29uOiBmYWN0VmFsdWUsIHBhdGg6IG9wZXJhbmQucGF0aCB9KSA6IGZhY3RWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZExpdGVyYWwob3BlcmFuZCkpIHtcbiAgICAgIHJldHVybiBvcGVyYW5kLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kUnVudGltZUZhY3Qob3BlcmFuZCkpIHtcbiAgICAgIHJldHVybiBydW50aW1lRmFjdFZhbHVlc1tvcGVyYW5kLnZhbHVlXTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGEgcm9vdCBydWxlIGZyb20gYSBydWxlc2V0LCBhbmQgcmV0dXJuIHRoZSBhc3NvY2lhdGVkIGFjdGlvbnMgdG8gYmUgcHJvY2Vzc2VkXG4gICAqIFdpbGwgYWxzbyB1cGRhdGUgdGhlIHJ1bnRpbWVGYWN0VmFsdWVzIG1hcCB0aGF0IGlzIHJ1bGVzZXQgd2lzZVxuICAgKiBOb3RlIHRoYXQgcnVudGltZUZhY3RWYWx1ZXMgd2lsbCBiZSBtdXRhdGVkIGJ5IGFsbCB0aGUgcnVudGltZSBmYWN0cyBhY3Rpb25zIGV4ZWN1dGVkXG4gICAqIEBwYXJhbSBydWxlXG4gICAqIEBwYXJhbSBmYWN0c1ZhbHVlXG4gICAqIEBwYXJhbSBydW50aW1lRmFjdFZhbHVlc1xuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZXZhbHVhdGVSdWxlKHJ1bGU6IFJ1bGUsIGZhY3RzVmFsdWU6IFJlY29yZDxzdHJpbmcsIEZhY3RzIHwgdW5kZWZpbmVkPiwgcnVudGltZUZhY3RWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZhY3RzPikge1xuICAgIHJldHVybiB0aGlzLmV2YWx1YXRlQmxvY2socnVsZS5yb290RWxlbWVudCwgZmFjdHNWYWx1ZSwgcnVudGltZUZhY3RWYWx1ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IHByb2Nlc3MgYSBibG9jayB0byBleHRyYWN0IGFsbCB0aGUgYWN0aW9ucyBrZWVwaW5nIHRoZSBvcmRlclxuICAgKiBOb3RlIHRoYXQgcnVudGltZUZhY3RWYWx1ZXMgd2lsbCBiZSBtdXRhdGVkIGJ5IGFsbCB0aGUgcnVudGltZSBmYWN0cyBhY3Rpb25zIGV4ZWN1dGVkXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqIEBwYXJhbSBmYWN0c1ZhbHVlXG4gICAqIEBwYXJhbSBydW50aW1lRmFjdFZhbHVlcyBUaGlzIHJ1bnRpbWUgZmFjdCBtYXAgd2lsbCBiZSBtdXRhdGVkIGJ5IGFsbCB0aGUgcnVudGltZSBmYWN0cyBhY3Rpb25zIGV4ZWN1dGVkXG4gICAqIEBwYXJhbSBhY3Rpb25zXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBldmFsdWF0ZUJsb2NrKGVsZW1lbnQ6IEFsbEJsb2NrLCBmYWN0c1ZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cyB8IHVuZGVmaW5lZD4sIHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4sIGFjdGlvbnM6IEFjdGlvbkJsb2NrW10gPSBbXSkge1xuICAgIGlmICh0aGlzLmlzSWZFbHNlQmxvY2soZWxlbWVudCkpIHtcbiAgICAgICghZWxlbWVudC5jb25kaXRpb24gfHwgdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihlbGVtZW50LmNvbmRpdGlvbiwgZmFjdHNWYWx1ZSwgcnVudGltZUZhY3RWYWx1ZXMpID8gZWxlbWVudC5zdWNjZXNzRWxlbWVudHMgOiBlbGVtZW50LmZhaWx1cmVFbGVtZW50cylcbiAgICAgICAgLmZvckVhY2goKGVsZW1lbnRSZXN1bHQpID0+IHRoaXMuZXZhbHVhdGVCbG9jayhlbGVtZW50UmVzdWx0LCBmYWN0c1ZhbHVlLCBydW50aW1lRmFjdFZhbHVlcywgYWN0aW9ucykpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0FjdGlvbkJsb2NrKGVsZW1lbnQpKSB7XG4gICAgICBpZiAodGhpcy5pc0FjdGlvblNldFRlbXBvcmFyeUZhY3RCbG9jayhlbGVtZW50KSkge1xuICAgICAgICBydW50aW1lRmFjdFZhbHVlc1tlbGVtZW50LmZhY3RdID0gZWxlbWVudC52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGlvbnMucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGEgSWZFbHNlIGJsb2NrXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBpc0lmRWxzZUJsb2NrKGVsZW1lbnQ6IEFsbEJsb2NrKTogZWxlbWVudCBpcyBJZkVsc2VCbG9jayB7XG4gICAgcmV0dXJuIGVsZW1lbnQuYmxvY2tUeXBlID09PSAnSUZfRUxTRSc7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50IGlzIGFuIGFjdGlvbiBibG9ja1xuICAgKiBAcGFyYW0gZWxlbWVudFxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNBY3Rpb25CbG9jayhlbGVtZW50OiBBbGxCbG9jayk6IGVsZW1lbnQgaXMgQWN0aW9uQmxvY2sge1xuICAgIHJldHVybiAnZWxlbWVudFR5cGUnIGluIGVsZW1lbnQgJiYgZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0FDVElPTic7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBhY3Rpb24gc2V0cyBhIHRlbXBvcmFyeSBmYWN0XG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBpc0FjdGlvblNldFRlbXBvcmFyeUZhY3RCbG9jayhlbGVtZW50OiBBY3Rpb25CbG9jayk6IGVsZW1lbnQgaXMgQWN0aW9uU2V0VGVtcG9yYXJ5RmFjdEJsb2NrIHtcbiAgICByZXR1cm4gJ2FjdGlvblR5cGUnIGluIGVsZW1lbnQgJiYgZWxlbWVudC5hY3Rpb25UeXBlID09PSAnU0VUX0ZBQ1QnO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlIGEgY29uZGl0aW9uIGJsb2NrXG4gICAqIEBwYXJhbSBuZXN0ZWRDb25kaXRpb25cbiAgICogQHBhcmFtIGZhY3RzVmFsdWVcbiAgICogQHBhcmFtIHJ1bnRpbWVGYWN0VmFsdWVzXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBldmFsdWF0ZUNvbmRpdGlvbihuZXN0ZWRDb25kaXRpb246IE5lc3RlZENvbmRpdGlvbiwgZmFjdHNWYWx1ZTogUmVjb3JkPHN0cmluZywgRmFjdHMgfCB1bmRlZmluZWQ+LCBydW50aW1lRmFjdFZhbHVlczogUmVjb3JkPHN0cmluZywgRmFjdHM+KTogYm9vbGVhbiB7XG4gICAgaWYgKGlzQ29uZGl0aW9uUHJvcGVydGllcyhuZXN0ZWRDb25kaXRpb24pKSB7XG4gICAgICBjb25zdCBvcGVyYXRvciA9IHRoaXMub3BlcmF0b3JzW25lc3RlZENvbmRpdGlvbi5vcGVyYXRvcl07XG4gICAgICBpZiAob3BlcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gb3BlcmF0b3IgOiAke25lc3RlZENvbmRpdGlvbi5vcGVyYXRvcn0sIHNraXBwaW5nIHRoZSBydWxlIGV4ZWN1dGlvbi4uLmApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV4ZWN1dGVPcGVyYXRvcih0aGlzLmdldE9wZXJhbmRWYWx1ZShuZXN0ZWRDb25kaXRpb24ubGhzLCBmYWN0c1ZhbHVlLCBydW50aW1lRmFjdFZhbHVlcyksXG4gICAgICAgIHRoaXMuZ2V0T3BlcmFuZFZhbHVlKCdyaHMnIGluIG5lc3RlZENvbmRpdGlvbiA/IG5lc3RlZENvbmRpdGlvbi5yaHMgOiB1bmRlZmluZWQsIGZhY3RzVmFsdWUsIHJ1bnRpbWVGYWN0VmFsdWVzKSwgb3BlcmF0b3IsIGZhY3RzVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChpc05vdENvbmRpdGlvbihuZXN0ZWRDb25kaXRpb24pKSB7XG4gICAgICByZXR1cm4gIXRoaXMuZXZhbHVhdGVDb25kaXRpb24obmVzdGVkQ29uZGl0aW9uLm5vdCwgZmFjdHNWYWx1ZSwgcnVudGltZUZhY3RWYWx1ZXMpO1xuICAgIH1cbiAgICBpZiAobmVzdGVkQ29uZGl0aW9uLmFsbCB8fCBuZXN0ZWRDb25kaXRpb24uYW55KSB7XG4gICAgICBjb25zdCBldmFsdWF0ZSA9IChjb25kaXRpb246IE5lc3RlZENvbmRpdGlvbikgPT4gdGhpcy5ldmFsdWF0ZUNvbmRpdGlvbihjb25kaXRpb24sIGZhY3RzVmFsdWUsIHJ1bnRpbWVGYWN0VmFsdWVzKTtcbiAgICAgIHJldHVybiBpc0FsbENvbmRpdGlvbnMobmVzdGVkQ29uZGl0aW9uKSA/IG5lc3RlZENvbmRpdGlvbi5hbGwuZXZlcnkoKGVsZW1lbnQpID0+IGV2YWx1YXRlKGVsZW1lbnQpKSA6IG5lc3RlZENvbmRpdGlvbi5hbnkuc29tZSgoZWxlbWVudCkgPT4gZXZhbHVhdGUoZWxlbWVudCkpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29uZGl0aW9uIGJsb2NrIG1ldCA6ICR7SlNPTi5zdHJpbmdpZnkobmVzdGVkQ29uZGl0aW9uKX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIHJ1bGUgaW5wdXQgZmFjdHNcbiAgICogQHBhcmFtIG9ialxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpbmRSdWxlSW5wdXRGYWN0cyA9IChvYmo6IEFsbEJsb2NrKTogc3RyaW5nW10gPT4ge1xuICAgIGNvbnN0IHJ1bGVJbnB1dEZhY3RzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgdGhpcy5jb2xsZWN0UnVsZUlucHV0RmFjdHMob2JqLCBydWxlSW5wdXRGYWN0cyk7XG4gICAgcmV0dXJuIEFycmF5LmZyb20ocnVsZUlucHV0RmFjdHMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBQbHVnIHJ1bGVzZXQgdG8gZmFjdCBzdHJlYW1zIGFuZCB0cmlnZ2VyIGEgZmlyc3QgZXZhbHVhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHBsdWdSdWxlc2V0KCkge1xuICAgIGNvbnN0IGlucHV0RmFjdHNGb3JSdWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcbiAgICB0aGlzLnJ1bGVzZXQucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4gaW5wdXRGYWN0c0ZvclJ1bGVbcnVsZS5pZF0gPSB0aGlzLmZpbmRSdWxlSW5wdXRGYWN0cyhydWxlLnJvb3RFbGVtZW50KSk7XG4gICAgY29uc3QgZmFjdHNUaGF0UmVydW5FdmVyeXRoaW5nOiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMucnVsZXNldC5ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICBpZiAocnVsZS5vdXRwdXRSdW50aW1lRmFjdHMubGVuZ3RoID4gMCB8fCBydWxlLmlucHV0UnVudGltZUZhY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZmFjdHNUaGF0UmVydW5FdmVyeXRoaW5nLnB1c2goLi4uaW5wdXRGYWN0c0ZvclJ1bGVbcnVsZS5pZF0pO1xuICAgICAgfSBlbHNlIHt9XG4gICAgfSk7XG4gICAgY29uc3QgdHJpZ2dlckZ1bGwkOiBPYnNlcnZhYmxlPHVua25vd25bXT4gPSBmYWN0c1RoYXRSZXJ1bkV2ZXJ5dGhpbmcubGVuZ3RoID09PSAwXG4gICAgICA/IG9mKFtdKVxuICAgICAgOiBjb21iaW5lTGF0ZXN0KGZhY3RzVGhhdFJlcnVuRXZlcnl0aGluZy5tYXAoKGZhY3QpID0+IHRoaXMucnVsZXNFbmdpbmUucmV0cmlldmVPckNyZWF0ZUZhY3RTdHJlYW0oZmFjdCkpKTtcbiAgICBjb25zdCByZXN1bHQkID0gdHJpZ2dlckZ1bGwkLnBpcGUoc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bnRpbWVGYWN0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBGYWN0cz4gPSB7fTtcblxuICAgICAgbGV0IHJ1bGVzZXRJbnB1dEZhY3RzOiBzdHJpbmdbXTtcbiAgICAgIGlmICh0aGlzLnJ1bGVzRW5naW5lLmRlYnVnTW9kZSkge1xuICAgICAgICBydWxlc2V0SW5wdXRGYWN0cyA9IEFycmF5LmZyb20odGhpcy5ydWxlc2V0LnJ1bGVzLnJlZHVjZSgoYWNjLCBydWxlKSA9PiB7XG4gICAgICAgICAgaW5wdXRGYWN0c0ZvclJ1bGVbcnVsZS5pZF0uZm9yRWFjaCgoZmFjdE5hbWUpID0+IGFjYy5hZGQoZmFjdE5hbWUpKTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBuZXcgU2V0PHN0cmluZz4oKSkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh0aGlzLnJ1bGVzZXQucnVsZXMubWFwKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0RmFjdHMgPSBpbnB1dEZhY3RzRm9yUnVsZVtydWxlLmlkXTtcbiAgICAgICAgY29uc3QgdmFsdWVzJCA9IGlucHV0RmFjdHMubWFwKChmYWN0KSA9PiB0aGlzLnJ1bGVzRW5naW5lLnJldHJpZXZlT3JDcmVhdGVGYWN0U3RyZWFtKGZhY3QpKTtcbiAgICAgICAgcmV0dXJuICh2YWx1ZXMkLmxlbmd0aCA+IDAgPyBjb21iaW5lTGF0ZXN0KHZhbHVlcyQpIDogb2YoW1tdXSBhcyAoRmFjdHMgfCB1bmRlZmluZWQpW10pKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZCksXG4gICAgICAgICAgICBwYWlyd2lzZSgpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMucGVyZm9ybWFuY2VNYXJrKHJ1bGUsICdzdGFydCcpKSxcbiAgICAgICAgICAgIG1hcCgoW29sZEZhY3RWYWx1ZXMsIGZhY3RWYWx1ZXNdKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG91dHB1dDogUnVsZUV2YWx1YXRpb25PdXRwdXQgPSB7IGFjdGlvbnM6IHVuZGVmaW5lZCB9O1xuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0LmFjdGlvbnMgPSB0aGlzLmV2YWx1YXRlUnVsZShydWxlLCBpbnB1dEZhY3RzLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBGYWN0cyB8IHVuZGVmaW5lZD4+KChhY2MsIGlkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgYWNjW2lkXSA9IGZhY3RWYWx1ZXMhW2luZGV4XTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfSwge30pLCBydW50aW1lRmFjdFZhbHVlcyk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0LmFjdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgb3V0cHV0LmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5ydWxlc0VuZ2luZS5kZWJ1Z01vZGUpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXQuZXZhbHVhdGlvbiA9IGhhbmRsZVJ1bGVFdmFsdWF0aW9uRGVidWcocnVsZSwgdGhpcy5ydWxlc2V0Lm5hbWUsIG91dHB1dC5hY3Rpb25zLCBvdXRwdXQuZXJyb3IsIHJ1bnRpbWVGYWN0VmFsdWVzLCBmYWN0VmFsdWVzLCBvbGRGYWN0VmFsdWVzLCBpbnB1dEZhY3RzKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChvdXRwdXQuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lLmxvZ2dlcj8uZXJyb3Iob3V0cHV0LmVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lLmxvZ2dlcj8ud2FybihgU2tpcHBpbmcgcnVsZSAke3J1bGUubmFtZX0sIGFuZCB0aGUgYXNzb2NpYXRlZCBydWxlc2V0YCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMucGVyZm9ybWFuY2VNYXJrKHJ1bGUsICdlbmQnKSlcbiAgICAgICAgICApO1xuICAgICAgfSkpLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgICBwYWlyd2lzZSgpLFxuICAgICAgICBtYXAoKFtwcmV2UmVzLCBjdXJyUmVzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjdGlvbnNMaXN0cyA9IGN1cnJSZXMhLm1hcCgocikgPT4gci5hY3Rpb25zKTtcbiAgICAgICAgICBjb25zdCBhbGxFeGVjdXRpb25zVmFsaWQgPSBhY3Rpb25zTGlzdHMuZXZlcnkoKGFjdGlvbnMpID0+ICEhYWN0aW9ucyk7XG5cbiAgICAgICAgICBsZXQgZXhlY0luZm86IHtcbiAgICAgICAgICAgIGV4ZWN1dGlvbkNvdW50ZXI/OiBudW1iZXI7XG4gICAgICAgICAgICBhY3Rpb25zTGlzdHM6IEFjdGlvbkJsb2NrW11bXTtcbiAgICAgICAgICAgIHJ1bGVzZXRPdXRwdXRFeGVjdXRpb24/OiBSdWxlRXZhbHVhdGlvbltdO1xuICAgICAgICAgICAgYWxsRXhlY3V0aW9uc1ZhbGlkPzogYm9vbGVhbjtcbiAgICAgICAgICAgIHJ1bGVzZXRUcmlnZ2Vycz86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV2YWx1YXRpb25SZWFzb24+PjtcbiAgICAgICAgICB9ID0geyBhY3Rpb25zTGlzdHM6IChhbGxFeGVjdXRpb25zVmFsaWQgPyBhY3Rpb25zTGlzdHMgOiBbW11dKSB9O1xuXG4gICAgICAgICAgaWYgKHRoaXMucnVsZXNFbmdpbmUuZW5naW5lRGVidWcpIHtcbiAgICAgICAgICAgIGV4ZWNJbmZvID0ge1xuICAgICAgICAgICAgICAuLi5leGVjSW5mbyxcbiAgICAgICAgICAgICAgLi4udGhpcy5ydWxlc0VuZ2luZS5lbmdpbmVEZWJ1Zy5oYW5kbGVEZWJ1Z1J1bGVzZXRFeGVjdXRpb25JbmZvKFxuICAgICAgICAgICAgICAgIGN1cnJSZXMhLCBwcmV2UmVzLCBhbGxFeGVjdXRpb25zVmFsaWQsIHJ1bGVzZXRJbnB1dEZhY3RzLCBydW50aW1lRmFjdFZhbHVlcywgKyt0aGlzLmV4ZWN1dGlvbkNvdW50ZXIsIHRoaXMucnVsZXNldClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBleGVjSW5mbztcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgob3V0cHV0KSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0QWN0aW9ucyA9IChbXSBhcyBBY3Rpb25CbG9ja1tdKS5jb25jYXQoLi4ub3V0cHV0LmFjdGlvbnNMaXN0cyk7XG5cbiAgICAgICAgICBpZiAodGhpcy5ydWxlc0VuZ2luZS5lbmdpbmVEZWJ1ZyAmJiBvdXRwdXQuYWxsRXhlY3V0aW9uc1ZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnJ1bGVzRW5naW5lLmVuZ2luZURlYnVnLmFkZFJ1bGVzZXRFeGVjdXRpb25FdmVudCh0aGlzLnJ1bGVzZXQsIG91dHB1dC5leGVjdXRpb25Db3VudGVyISxcbiAgICAgICAgICAgICAgcnVsZXNldElucHV0RmFjdHMsIG91dHB1dEFjdGlvbnMsIHJ1bnRpbWVGYWN0VmFsdWVzLCBvdXRwdXQucnVsZXNldFRyaWdnZXJzISxcbiAgICAgICAgICAgICAgb3V0cHV0LnJ1bGVzZXRPdXRwdXRFeGVjdXRpb24hKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb3V0cHV0QWN0aW9ucztcbiAgICAgICAgfSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiBwcmV2Lmxlbmd0aCA9PT0gMCAmJiBjdXJyLmxlbmd0aCA9PT0gMClcbiAgICAgICk7XG4gICAgfSksIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLnJ1bGVzZXQuaWQsXG4gICAgICB2YWxpZGl0eVJhbmdlOiB0aGlzLnJ1bGVzZXQudmFsaWRpdHlSYW5nZSxcbiAgICAgIGxpbmtlZENvbXBvbmVudHM6IHRoaXMucnVsZXNldC5saW5rZWRDb21wb25lbnRzLFxuICAgICAgcnVsZXNSZXN1bHRzU3ViamVjdCQ6IHJlc3VsdCRcbiAgICB9IGFzIEVuZ2luZVJ1bGVzZXQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VuZ2luZS9zdHJ1Y3R1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgSXRlbUlkZW50aWZpZXIsXG4gIFJ1bGVzRW5naW5lQWN0aW9uLFxufSBmcm9tICdAbzNyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBOYXRpdmVUeXBlcyA9IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXI7XG4vKiogR2VuZXJpYyBvcGVyYW5kICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZXJhbmQ8VCBleHRlbmRzIHN0cmluZywgVSBleHRlbmRzIE5hdGl2ZVR5cGVzID0gTmF0aXZlVHlwZXM+IHtcbiAgLyoqIE9wZXJhbmQgdHlwZSAqL1xuICB0eXBlOiBUO1xuICAvKiogU3RhdGljIHZhbHVlICovXG4gIHZhbHVlOiBVO1xufVxuXG4vKiogT3BlcmFuZCBiYXNlZCBvbiBmYWN0ICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZXJhbmRGYWN0IGV4dGVuZHMgT3BlcmFuZDwnRkFDVCcsIHN0cmluZz4ge1xuICAvKiogSlNPTlBhdGggdG8gZGVlcCByZWFkIHRoZSBmYWN0IHZhbHVlICovXG4gIHBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKiBDb25kaXRpb24gYXZhaWxhYmxlIG9wZXJhbmQgdHlwZXMgKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNPcGVyYW5kID0gT3BlcmFuZEZhY3QgfCBPcGVyYW5kPCdSVU5USU1FX0ZBQ1QnLCBzdHJpbmc+IHwgT3BlcmFuZDwnTElURVJBTCc+O1xuXG4vKiogQ29uZGl0aW9uIG9iamVjdCBpbnRlcmZhY2Ugd2l0aCB1bmFyeSBvcGVyYXRvciAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmFyeU9wZXJhdGlvbiB7XG4gIC8qKiBMZWZ0IEhhbmQgU2lkZSAqL1xuICBsaHM6IEdlbmVyaWNPcGVyYW5kO1xuICAvKiogT3BlcmF0b3IgKi9cbiAgb3BlcmF0b3I6IHN0cmluZztcbn1cblxuLyoqIENvbmRpdGlvbiBvYmplY3QgaW50ZXJmYWNlICovXG5leHBvcnQgaW50ZXJmYWNlIEJpbmFyeU9wZXJhdGlvbiB7XG4gIC8qKiBMZWZ0IEhhbmQgU2lkZSAqL1xuICBsaHM6IEdlbmVyaWNPcGVyYW5kO1xuICAvKiogUmlnaHQgSGFuZCBTaWRlICovXG4gIHJoczogR2VuZXJpY09wZXJhbmQ7XG4gIC8qKiBPcGVyYXRvciAqL1xuICBvcGVyYXRvcjogc3RyaW5nO1xufVxuXG4vKiogTmVzdGVkIENvbmRpdGlvbiAqL1xuXG5leHBvcnQgdHlwZSBOZXN0ZWRDb25kaXRpb24gPSBVbmFyeU9wZXJhdGlvbiB8IEJpbmFyeU9wZXJhdGlvbiB8IFRvcExldmVsQ29uZGl0aW9uO1xuLyoqIEFsbCBDb25kaXRpb24gKi9cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGlkLWRlbnlsaXN0IC0tIGBhbnlgIGlzIGEgY29uZGl0aW9uYWwga2V5d29yZCBlbmZvcmNlZCBieSB0aGUgcnVsZSBpbnRlcmZhY2VcbmV4cG9ydCB0eXBlIEFsbENvbmRpdGlvbnMgPSB7IGFsbDogTmVzdGVkQ29uZGl0aW9uW107IGFueT86IG5ldmVyOyBub3Q/OiBuZXZlciB9O1xuLyoqIEFueSBDb25kaXRpb24gKi9cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGlkLWRlbnlsaXN0IC0tIGBhbnlgIGlzIGEgY29uZGl0aW9uYWwga2V5d29yZCBlbmZvcmNlZCBieSB0aGUgcnVsZSBpbnRlcmZhY2VcbmV4cG9ydCB0eXBlIEFueUNvbmRpdGlvbnMgPSB7IGFueTogTmVzdGVkQ29uZGl0aW9uW107IGFsbD86IG5ldmVyOyBub3Q/OiBuZXZlciB9O1xuLyoqIE5vdCBDb25kaXRpb24gKi9cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGlkLWRlbnlsaXN0IC0tIGBhbnlgIGlzIGEgY29uZGl0aW9uYWwga2V5d29yZCBlbmZvcmNlZCBieSB0aGUgcnVsZSBpbnRlcmZhY2VcbmV4cG9ydCB0eXBlIE5vdENvbmRpdGlvbiA9IHsgbm90OiBOZXN0ZWRDb25kaXRpb247IGFsbD86IG5ldmVyOyBhbnk/OiBuZXZlciB9O1xuLyoqIFRvcCBsZXZlbCBDb25kaXRpb24gaW4gdGhlIHJ1bGUgZGVmaW5pdGlvbiAqL1xuZXhwb3J0IHR5cGUgVG9wTGV2ZWxDb25kaXRpb24gPSBBbGxDb25kaXRpb25zIHwgQW55Q29uZGl0aW9ucyB8IE5vdENvbmRpdGlvbiB8IFVuYXJ5T3BlcmF0aW9uIHwgQmluYXJ5T3BlcmF0aW9uO1xuXG4vKiogRXZlbnQgZW1pdHRlZCBpbiBjYXNlIHRoZSBydWxlIGNvbmRpdGlvbiBpcyBwYXNzZWQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZUV2ZW50IHtcbiAgLyoqIFR5cGUgKG9yIG5hbWUpIG9mIHRoZSBldmVudCAqL1xuICB0eXBlOiBzdHJpbmc7XG4gIC8qKiBsaXN0IG9mIHBhcmFtZXRlciBhc3NvY2lhdGVkIHRvIHRoZSBldmVudCAqL1xuICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG4vKiogQmFzZSBmb3IgdGhlIFJ1bGUgZGVmaW5pdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdWxlIHtcbiAgLyoqIFVuaXF1ZSBpZCBhc3NvY2lhdGVkIHRvIGEgcnVsZSovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBSdW50aW1lIGZhY3RzIHRoYXQgYXJlIG5lZWRlZCBmb3IgdGhlIHJ1bGUgZXhlY3V0aW9uIChzZW50IGJ5IHRoZSBDTVMpICovXG4gIGlucHV0UnVudGltZUZhY3RzOiBzdHJpbmdbXTtcbiAgLyoqIFJ1bnRpbWUgZmFjdHMgdGhhdCBhcmUgY3JlYXRlZC91cGRhdGVkIGJ5IHRoZSBydWxlKi9cbiAgb3V0cHV0UnVudGltZUZhY3RzOiBzdHJpbmdbXTtcbiAgLyoqIE5hbWUgb2YgdGhlIHJ1bGUqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiByb290RWxlbWVudCBvZiB0aGUgcnVsZSwgdGhhdCBjb250YWlucyBlaXRoZXIgYSBibG9jaywgZWl0aGVyIGFuIGFjdGlvbiBsaXN0ICovXG4gIHJvb3RFbGVtZW50OiBBbGxCbG9jaztcbn1cblxuLyoqXG4gKiBMaXN0IG9mIHBvc3NpYmxlIHR5cGVzIG9mIGFjdGlvbnMgcmVzdWx0ZWQgYXMgb3V0cHV0IG9mIGEgcnVsZSBleGVjdXRpb25cbiAqIEBkZXByZWNhdGVkIHRoZSBhY3Rpb25zIGFyZSBub3cgZGVwZW5kaW5nIG9mIGV4ZWN1dGluZyBtb2R1bGVzXG4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvblR5cGVzID0gJ1NFVF9GQUNUJyB8ICdVUERBVEVfQ09ORklHJyB8ICdVUERBVEVfQVNTRVQnIHwgJ1VQREFURV9MT0NBTElTQVRJT04nIHwgJ1VQREFURV9QTEFDRUhPTERFUic7XG5cbi8qKiBUeXBlcyBhc3NvY2lhdGVkIHRvIHRoZSBjb25kaXRpb24gYmxvY2tzIHRoYXQgYXJlIHN1cHBvcnRlZCAqL1xuZXhwb3J0IHR5cGUgQ29uZGl0aW9uQmxvY2tUeXBlcyA9ICdJRl9FTFNFJztcblxuLyoqIEludGVyZmFjZSBjb21tb24gdG8gYWxsIGVsZW1lbnRzICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVFbGVtZW50IHtcbiAgLyoqIFR5cGUgb2YgdGhlIGVsZW1lbnQqL1xuICBlbGVtZW50VHlwZTogc3RyaW5nO1xufVxuXG4vKiogSW50ZXJmYWNlIGNvbW1vbiB0byBhbGwgYWN0aW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25CbG9jayBleHRlbmRzIFJ1bGVFbGVtZW50LCBSdWxlc0VuZ2luZUFjdGlvbiB7XG4gIGVsZW1lbnRUeXBlOiAnQUNUSU9OJztcbiAgYWN0aW9uVHlwZTogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xufVxuXG4vKiogSW50ZXJmYWNlIG9mIGFjdGlvbiB0aGF0IHNldHMgb3IgdXBkYXRlcyBhIHRlbXBvcmFyeSBmYWN0ICovXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvblNldFRlbXBvcmFyeUZhY3RCbG9jayBleHRlbmRzIEFjdGlvbkJsb2NrIHtcbiAgYWN0aW9uVHlwZTogJ1NFVF9GQUNUJztcbiAgZmFjdDogc3RyaW5nO1xufVxuXG4vKiogSW50ZXJmYWNlIG9mIGJsb2NrIFJ1bGUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZUJsb2NrIGV4dGVuZHMgUnVsZUVsZW1lbnQge1xuICBlbGVtZW50VHlwZTogJ1JVTEVfQkxPQ0snO1xuICBibG9ja1R5cGU6IENvbmRpdGlvbkJsb2NrVHlwZXM7XG59XG5cbi8qKiBBbGwgc3VwcG9ydGVkIGJsb2NrcyAoc3VwcG9ydGluZyBuZXN0ZWQgc3RydWN0dXJlKSAqL1xuZXhwb3J0IHR5cGUgQWxsQmxvY2sgPVxuICBJZkVsc2VCbG9ja1xuICB8IChBY3Rpb25CbG9jayAmIFJlY29yZDxzdHJpbmcsIGFueT4pO1xuXG4vKiogQmxvY2sgcmVwcmVzZW50aW5nIGFuICdpZiBlbHNlJyBjb25kaXRpb24uIElmIG5vIGNvbmRpdGlvbiBzcGVjaWZpZWQgaXQgd2lsbCBleGVjdXRlIHN1Y2Nlc3MgZWxlbWVudHMgb25seSAqL1xuZXhwb3J0IGludGVyZmFjZSBJZkVsc2VCbG9jayBleHRlbmRzIFJ1bGVCbG9jayB7XG4gIGJsb2NrVHlwZTogJ0lGX0VMU0UnO1xuICBzdWNjZXNzRWxlbWVudHM6IEFsbEJsb2NrW107XG4gIGZhaWx1cmVFbGVtZW50czogQWxsQmxvY2tbXTtcbiAgY29uZGl0aW9uPzogVG9wTGV2ZWxDb25kaXRpb247XG59XG5cbi8qKiBJbnRlcmZhY2Ugb2YgYSBydWxlc2V0IGFzIGl0J3Mgc3BlY2lmaWVkIGluIHRoZSBqc29uIGZpbGUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZXNldCB7XG4gIC8qKiBVbmlxdWUgaWQgb2YgdGhlIHJ1bGVzZXQqL1xuICBpZDogc3RyaW5nO1xuICAvKiogTmFtZSBvZiB0aGUgcnVsZXNldCAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBydWxlc2V0IGRlc2NyaXB0aW9uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogTGlzdCBvZiBydWxlcyBhc3NvY2lhdGVkIHRvIHRoZSBydWxlc2V0ICovXG4gIHJ1bGVzOiBSdWxlW107XG4gIC8qKiBPcHRpb25hbCBkYXRlIHJhbmdlIHdoZXJlIHRoZSBydWxlc2V0IHdpbGwgYmUgZXhlY3V0ZWQqL1xuICB2YWxpZGl0eVJhbmdlPzogeyBmcm9tPzogc3RyaW5nOyB0bz86IHN0cmluZyB9O1xuICAvKipcbiAgICogQ29tcG9uZW50cyBsaW5rZWQgdG8gdGhlIHJ1bGVzZXQuIElmIHByZXNlbnQgdGhlIHJ1bGVzZXQgd2lsbCBub3QgYmUgYWN0aXZlIGJ5IGRlZmF1bHQuXG4gICAqICdvcicgY29uZGl0aW9uOiBJZiBhdCBsZWFzdCBvbmUgY29tcG9uZW50IGhhcyBzdWJzY3JpYmVkLCB0aGUgcnVsZXNldCB3aWxsIGJlY29tZSBhY3RpdmUuXG4gICAqL1xuICBsaW5rZWRDb21wb25lbnRzPzogeyBvcjogSXRlbUlkZW50aWZpZXJbXSB9O1xufVxuIl19
@@ -1,12 +0,0 @@
1
- /** Abstract fact set service */
2
- export class FactsService {
3
- constructor(rulesEngine) {
4
- this.rulesEngine = rulesEngine;
5
- }
6
- /** Register the set of facts */
7
- register() {
8
- this.rulesEngine.upsertFacts(Object.entries(this.facts)
9
- .map(([id, factValue]) => ({ id, value$: factValue })));
10
- }
11
- }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdC5hYnN0cmFjdC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZhY3QvZmFjdC5hYnN0cmFjdC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLGdDQUFnQztBQUNoQyxNQUFNLE9BQWdCLFlBQVk7SUFJaEMsWUFBNkIsV0FBcUM7UUFBckMsZ0JBQVcsR0FBWCxXQUFXLENBQTBCO0lBQUcsQ0FBQztJQUV0RSxnQ0FBZ0M7SUFDekIsUUFBUTtRQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDdkIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEZhY3REZWZpbml0aW9ucyxcbiAgRmFjdFNldCxcbn0gZnJvbSAnLi4vZW5naW5lL2luZGV4JztcbmltcG9ydCB7XG4gIFJ1bGVzRW5naW5lUnVubmVyU2VydmljZSxcbn0gZnJvbSAnLi4vc2VydmljZXMvcnVubmVyL3J1bGVzLWVuZ2luZS5ydW5uZXIuc2VydmljZSc7XG5cbi8qKiBBYnN0cmFjdCBmYWN0IHNldCBzZXJ2aWNlICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmFjdHNTZXJ2aWNlPFQgZXh0ZW5kcyBGYWN0RGVmaW5pdGlvbnM+IHtcbiAgLyoqIFNldCBvZiBmYWN0cyBwcm92aWRlZCAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZmFjdHM6IEZhY3RTZXQ8VD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBydWxlc0VuZ2luZTogUnVsZXNFbmdpbmVSdW5uZXJTZXJ2aWNlKSB7fVxuXG4gIC8qKiBSZWdpc3RlciB0aGUgc2V0IG9mIGZhY3RzICovXG4gIHB1YmxpYyByZWdpc3RlcigpIHtcbiAgICB0aGlzLnJ1bGVzRW5naW5lLnVwc2VydEZhY3RzKFxuICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5mYWN0cylcbiAgICAgICAgLm1hcCgoW2lkLCBmYWN0VmFsdWVdKSA9PiAoeyBpZCwgdmFsdWUkOiBmYWN0VmFsdWUgfSkpXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,3 +0,0 @@
1
- export * from './fact.abstract-service';
2
- export * from './reserved.facts';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmFjdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZhY3QuYWJzdHJhY3Qtc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc2VydmVkLmZhY3RzJztcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXJ2ZWQuZmFjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmFjdC9yZXNlcnZlZC5mYWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBGYWN0RGVmaW5pdGlvbnMsXG59IGZyb20gJy4uL2VuZ2luZS9pbmRleCc7XG5cbi8qKlxuICogSW50ZXJmYWNlIHRoYXQgY29udGFpbnMgdGhlIHBvcnRhbEZhY3RzIGRlZmluaXRpb25cbiAqIFRoaXMgaXMgb25lIG9mIHRoZSByZXNlcnZlZCBmYWN0IG5hbWVzLCBpdCB3b24ndCBiZSBwYXJ0IG9mIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9ydGFsRmFjdHMgZXh0ZW5kcyBGYWN0RGVmaW5pdGlvbnMge1xuICAvKipcbiAgICogTWFwIG9mIGZhY3RzIGNvbWluZyBmcm9tIHRoZSBwb3J0YWxcbiAgICovXG4gIHBvcnRhbEZhY3RzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export * from './rules-engine.runner.service.fixture.jasmine';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZml4dHVyZXMvamFzbWluZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtDQUErQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ydWxlcy1lbmdpbmUucnVubmVyLnNlcnZpY2UuZml4dHVyZS5qYXNtaW5lJztcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibzNyLXJ1bGVzLWVuZ2luZS1maXh0dXJlcy1qYXNtaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ZpeHR1cmVzL2phc21pbmUvbzNyLXJ1bGVzLWVuZ2luZS1maXh0dXJlcy1qYXNtaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1,14 +0,0 @@
1
- /** Jasmine Fixture class for RulesEngineRunnerService */
2
- export class RulesEngineRunnerServiceFixture {
3
- constructor() {
4
- /** @inheritDoc */
5
- this.upsertFacts = jasmine.createSpy('upsertFacts');
6
- /** @inheritDoc */
7
- this.upsertOperators = jasmine.createSpy('upsertOperators');
8
- /** @inheritDoc */
9
- this.enableRuleSetFor = jasmine.createSpy('enableRuleSetFor');
10
- /** @inheritDoc */
11
- this.disableRuleSetFor = jasmine.createSpy('disableRuleSetFor');
12
- }
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLnJ1bm5lci5zZXJ2aWNlLmZpeHR1cmUuamFzbWluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maXh0dXJlcy9qYXNtaW5lL3J1bGVzLWVuZ2luZS5ydW5uZXIuc2VydmljZS5maXh0dXJlLmphc21pbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEseURBQXlEO0FBQ3pELE1BQU0sT0FBTywrQkFBK0I7SUFBNUM7UUFDRSxrQkFBa0I7UUFDWCxnQkFBVyxHQUFnQixPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRW5FLGtCQUFrQjtRQUNYLG9CQUFlLEdBQWdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUzRSxrQkFBa0I7UUFDWCxxQkFBZ0IsR0FBZ0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRTdFLGtCQUFrQjtRQUNYLHNCQUFpQixHQUFnQixPQUFPLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDakYsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBSdWxlc0VuZ2luZVJ1bm5lclNlcnZpY2UsXG59IGZyb20gJ0BvM3IvcnVsZXMtZW5naW5lJztcblxuLyoqIEphc21pbmUgRml4dHVyZSBjbGFzcyBmb3IgUnVsZXNFbmdpbmVSdW5uZXJTZXJ2aWNlICovXG5leHBvcnQgY2xhc3MgUnVsZXNFbmdpbmVSdW5uZXJTZXJ2aWNlRml4dHVyZSBpbXBsZW1lbnRzIFJlYWRvbmx5PFBhcnRpYWw8UnVsZXNFbmdpbmVSdW5uZXJTZXJ2aWNlPj4ge1xuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIHVwc2VydEZhY3RzOiBqYXNtaW5lLlNweSA9IGphc21pbmUuY3JlYXRlU3B5KCd1cHNlcnRGYWN0cycpO1xuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgdXBzZXJ0T3BlcmF0b3JzOiBqYXNtaW5lLlNweSA9IGphc21pbmUuY3JlYXRlU3B5KCd1cHNlcnRPcGVyYXRvcnMnKTtcblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGVuYWJsZVJ1bGVTZXRGb3I6IGphc21pbmUuU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2VuYWJsZVJ1bGVTZXRGb3InKTtcblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGRpc2FibGVSdWxlU2V0Rm9yOiBqYXNtaW5lLlNweSA9IGphc21pbmUuY3JlYXRlU3B5KCdkaXNhYmxlUnVsZVNldEZvcicpO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export * from './rules-engine.runner.service.fixture.jest';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZml4dHVyZXMvamVzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRDQUE0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ydWxlcy1lbmdpbmUucnVubmVyLnNlcnZpY2UuZml4dHVyZS5qZXN0JztcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibzNyLXJ1bGVzLWVuZ2luZS1maXh0dXJlcy1qZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ZpeHR1cmVzL2plc3QvbzNyLXJ1bGVzLWVuZ2luZS1maXh0dXJlcy1qZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1,14 +0,0 @@
1
- /** Jest Fixture class for RulesEngineRunnerService */
2
- export class RulesEngineRunnerServiceFixture {
3
- constructor() {
4
- /** @inheritDoc */
5
- this.upsertFacts = jest.fn();
6
- /** @inheritDoc */
7
- this.upsertOperators = jest.fn();
8
- /** @inheritDoc */
9
- this.enableRuleSetFor = jest.fn();
10
- /** @inheritDoc */
11
- this.disableRuleSetFor = jest.fn();
12
- }
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLnJ1bm5lci5zZXJ2aWNlLmZpeHR1cmUuamVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maXh0dXJlcy9qZXN0L3J1bGVzLWVuZ2luZS5ydW5uZXIuc2VydmljZS5maXh0dXJlLmplc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0Esc0RBQXNEO0FBQ3RELE1BQU0sT0FBTywrQkFBK0I7SUFBNUM7UUFDRSxrQkFBa0I7UUFDWCxnQkFBVyxHQUF1RCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFFbkYsa0JBQWtCO1FBQ1gsb0JBQWUsR0FBbUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBRW5HLGtCQUFrQjtRQUNYLHFCQUFnQixHQUE4QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFFL0Qsa0JBQWtCO1FBQ1gsc0JBQWlCLEdBQThCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEZhY3QsXG4gIE9wZXJhdG9yLFxuICBSdWxlc0VuZ2luZVJ1bm5lclNlcnZpY2UsXG4gIFVuYXJ5T3BlcmF0b3IsXG59IGZyb20gJ0BvM3IvcnVsZXMtZW5naW5lJztcblxuLyoqIEplc3QgRml4dHVyZSBjbGFzcyBmb3IgUnVsZXNFbmdpbmVSdW5uZXJTZXJ2aWNlICovXG5leHBvcnQgY2xhc3MgUnVsZXNFbmdpbmVSdW5uZXJTZXJ2aWNlRml4dHVyZSBpbXBsZW1lbnRzIFJlYWRvbmx5PFBhcnRpYWw8UnVsZXNFbmdpbmVSdW5uZXJTZXJ2aWNlPj4ge1xuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIHVwc2VydEZhY3RzOiBqZXN0Lk1vY2s8dm9pZCwgW0ZhY3Q8dW5rbm93bj4gfCBGYWN0PHVua25vd24+W11dPiA9IGplc3QuZm4oKTtcblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIHVwc2VydE9wZXJhdG9yczogamVzdC5Nb2NrPHZvaWQsIFsoT3BlcmF0b3I8YW55LCBhbnk+IHwgVW5hcnlPcGVyYXRvcjxhbnk+KVtdXT4gPSBqZXN0LmZuKCk7XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBlbmFibGVSdWxlU2V0Rm9yOiBqZXN0Lk1vY2s8dm9pZCwgW3N0cmluZ10+ID0gamVzdC5mbigpO1xuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZGlzYWJsZVJ1bGVTZXRGb3I6IGplc3QuTW9jazx2b2lkLCBbc3RyaW5nXT4gPSBqZXN0LmZuKCk7XG59XG4iXX0=
@@ -1,29 +0,0 @@
1
- import { Injectable, } from '@angular/core';
2
- import { BehaviorSubject, } from 'rxjs';
3
- import { FactsService, } from '../../fact';
4
- import { RulesEngineRunnerService, } from '../../services';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../services";
7
- export class CurrentTimeFactsService extends FactsService {
8
- constructor(rulesEngine) {
9
- super(rulesEngine);
10
- this.currentTimeSubject$ = new BehaviorSubject(Date.now());
11
- /** @inheritDoc */
12
- this.facts = {
13
- o3rCurrentTime: this.currentTimeSubject$.asObservable()
14
- };
15
- }
16
- /** Compute the current time */
17
- tick() {
18
- this.currentTimeSubject$.next(Date.now());
19
- }
20
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CurrentTimeFactsService, deps: [{ token: i1.RulesEngineRunnerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CurrentTimeFactsService, providedIn: 'root' }); }
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CurrentTimeFactsService, decorators: [{
24
- type: Injectable,
25
- args: [{
26
- providedIn: 'root'
27
- }]
28
- }], ctorParameters: () => [{ type: i1.RulesEngineRunnerService }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC10aW1lLWZhY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbm5lci1mYWN0cy9jdXJyZW50LXRpbWUvY3VycmVudC10aW1lLWZhY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEdBQ2hCLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLFlBQVksR0FDYixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQ0wsd0JBQXdCLEdBQ3pCLE1BQU0sZ0JBQWdCLENBQUM7OztBQVF4QixNQUFNLE9BQU8sdUJBQXdCLFNBQVEsWUFBOEI7SUFPekUsWUFBWSxXQUFxQztRQUMvQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFQSix3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN2RSxrQkFBa0I7UUFDWCxVQUFLLEdBQUc7WUFDYixjQUFjLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRTtTQUN4RCxDQUFDO0lBSUYsQ0FBQztJQUVELCtCQUErQjtJQUN4QixJQUFJO1FBQ1QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO2tJQWRVLHVCQUF1QjtzSUFBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBGYWN0c1NlcnZpY2UsXG59IGZyb20gJy4uLy4uL2ZhY3QnO1xuaW1wb3J0IHtcbiAgUnVsZXNFbmdpbmVSdW5uZXJTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBDdXJyZW50VGltZUZhY3RzLFxufSBmcm9tICcuL2N1cnJlbnQtdGltZS5mYWN0cyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEN1cnJlbnRUaW1lRmFjdHNTZXJ2aWNlIGV4dGVuZHMgRmFjdHNTZXJ2aWNlPEN1cnJlbnRUaW1lRmFjdHM+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50VGltZVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdChEYXRlLm5vdygpKTtcbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBmYWN0cyA9IHtcbiAgICBvM3JDdXJyZW50VGltZTogdGhpcy5jdXJyZW50VGltZVN1YmplY3QkLmFzT2JzZXJ2YWJsZSgpXG4gIH07XG5cbiAgY29uc3RydWN0b3IocnVsZXNFbmdpbmU6IFJ1bGVzRW5naW5lUnVubmVyU2VydmljZSkge1xuICAgIHN1cGVyKHJ1bGVzRW5naW5lKTtcbiAgfVxuXG4gIC8qKiBDb21wdXRlIHRoZSBjdXJyZW50IHRpbWUgKi9cbiAgcHVibGljIHRpY2soKSB7XG4gICAgdGhpcy5jdXJyZW50VGltZVN1YmplY3QkLm5leHQoRGF0ZS5ub3coKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC10aW1lLmZhY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2lubmVyLWZhY3RzL2N1cnJlbnQtdGltZS9jdXJyZW50LXRpbWUuZmFjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRmFjdERlZmluaXRpb25zLFxufSBmcm9tICcuLi8uLi9lbmdpbmUnO1xuXG4vKipcbiAqIE9wZXJhdG9yIGZhY3RzIHRoYXQgcHJvdmlkZSB0aGUgY3VycmVudCB0aW1lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VycmVudFRpbWVGYWN0cyBleHRlbmRzIEZhY3REZWZpbml0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0aW1lIGFzIGEgdGltZXN0YW1wXG4gICAqL1xuICBvM3JDdXJyZW50VGltZTogbnVtYmVyO1xufVxuIl19
@@ -1,3 +0,0 @@
1
- export * from './current-time-fact.service';
2
- export * from './current-time.facts';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5uZXItZmFjdHMvY3VycmVudC10aW1lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3VycmVudC10aW1lLWZhY3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2N1cnJlbnQtdGltZS5mYWN0cyc7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export * from './current-time/index';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5uZXItZmFjdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3VycmVudC10aW1lL2luZGV4JztcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './linkable-to-ruleset.interfaces';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saW5rYWJsZS10by1ydWxlc2V0LmludGVyZmFjZXMnO1xuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2FibGUtdG8tcnVsZXNldC5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludGVyZmFjZXMvbGlua2FibGUtdG8tcnVsZXNldC5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXBvbmVudHMgd2hpY2ggYXJlIGFjdGl2YXRpbmcgcnVsZXNldCBzaG91bGQgaW1wbGVtZW50IHRoaXMgdG8gYmUgaWRlbnRpZmllZCBieSBDTVMgZXh0cmFjdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlua2FibGVUb1J1bGVzZXQge31cbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibzNyLXJ1bGVzLWVuZ2luZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vM3ItcnVsZXMtZW5naW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -1,9 +0,0 @@
1
- export * from './components/index';
2
- export * from './devkit/index';
3
- export * from './engine/index';
4
- export * from './fact/index';
5
- export * from './inner-facts/index';
6
- export * from './interfaces/index';
7
- export * from './services/index';
8
- export * from './stores/index';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9kZXZraXQvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9lbmdpbmUvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9mYWN0L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vaW5uZXItZmFjdHMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9zdG9yZXMvaW5kZXgnO1xuIl19
@@ -1,3 +0,0 @@
1
- export * from './rules-engine.token';
2
- export * from './runner/index';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ydWxlcy1lbmdpbmUudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9ydW5uZXIvaW5kZXgnO1xuIl19
@@ -1,9 +0,0 @@
1
- import { InjectionToken, } from '@angular/core';
2
- /** Determine if the action should be executed */
3
- export const RULES_ENGINE_OPTIONS = new InjectionToken('Rules Engine Options');
4
- /** Default Rules engine options */
5
- export const DEFAULT_RULES_ENGINE_OPTIONS = {
6
- dryRun: false,
7
- debug: false
8
- };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3J1bGVzLWVuZ2luZS50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBRXZCLGlEQUFpRDtBQUNqRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBVSxzQkFBc0IsQ0FBQyxDQUFDO0FBWXhGLG1DQUFtQztBQUNuQyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBd0M7SUFDL0UsTUFBTSxFQUFFLEtBQUs7SUFDYixLQUFLLEVBQUUsS0FBSztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3Rpb25Ub2tlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKiBEZXRlcm1pbmUgaWYgdGhlIGFjdGlvbiBzaG91bGQgYmUgZXhlY3V0ZWQgKi9cbmV4cG9ydCBjb25zdCBSVUxFU19FTkdJTkVfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignUnVsZXMgRW5naW5lIE9wdGlvbnMnKTtcblxuLyoqIFJ1bGVzIGVuZ2luZSBjb25maWd1cmF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVzRW5naW5lU2VydmljZU9wdGlvbnMge1xuICAvKiogRGV0ZXJtaW5lIGlmIHRoZSBhY3Rpb25zIHJlc3VsdGluZyBvZiB0aGUgcnVsZSBlbmdpbmUgc2hvdWxkIGJlIGV4ZWN1dGVkICovXG4gIGRyeVJ1bjogYm9vbGVhbjtcbiAgLyoqIEZsYWcgdG8gYWN0aXZhdGUgdGhlIHJ1biBvZiBSdWxlcyBFbmdpbmUgaW4gZGVidWcgbW9kZSAqL1xuICBkZWJ1ZzogYm9vbGVhbjtcbiAgLyoqIExpbWl0IHRoZSBudW1iZXIgb2YgZGVidWcgZXZlbnRzIGtlcHQgaW4gc3RhY2sgKi9cbiAgZGVidWdFdmVudHNTdGFja0xpbWl0PzogbnVtYmVyO1xufVxuXG4vKiogRGVmYXVsdCBSdWxlcyBlbmdpbmUgb3B0aW9ucyAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUlVMRVNfRU5HSU5FX09QVElPTlM6IFJlYWRvbmx5PFJ1bGVzRW5naW5lU2VydmljZU9wdGlvbnM+ID0ge1xuICBkcnlSdW46IGZhbHNlLFxuICBkZWJ1ZzogZmFsc2Vcbn0gYXMgY29uc3Q7XG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from './rules-engine.runner.module';
2
- export * from './rules-engine.runner.service';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvcnVubmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcnVsZXMtZW5naW5lLnJ1bm5lci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9ydWxlcy1lbmdpbmUucnVubmVyLnNlcnZpY2UnO1xuIl19