@o3r/rules-engine 10.0.0-next.9 → 11.0.0-next.0

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 (195) hide show
  1. package/README.md +16 -17
  2. package/builders/rules-engine-extractor/helpers/rules-engine.extractor.d.ts +1 -1
  3. package/builders/rules-engine-extractor/helpers/rules-engine.extractor.d.ts.map +1 -1
  4. package/builders/rules-engine-extractor/helpers/rules-engine.extractor.interfaces.d.ts +2 -0
  5. package/builders/rules-engine-extractor/helpers/rules-engine.extractor.interfaces.d.ts.map +1 -1
  6. package/builders/rules-engine-extractor/helpers/rules-engine.extractor.js +10 -2
  7. package/builders/rules-engine-extractor/helpers/rules-engine.extractor.js.map +1 -1
  8. package/builders/rules-engine-extractor/index.js.map +1 -1
  9. package/builders/rules-engine-extractor/schema.json +1 -1
  10. package/components/rules-engine/rule-condition/rule-condition-pres.component.d.ts +2 -2
  11. package/components/rules-engine/rule-condition/rule-condition-pres.component.d.ts.map +1 -1
  12. package/components/rules-engine/rule-key-value/rule-key-value-pres.component.d.ts +1 -1
  13. package/components/rules-engine/rule-key-value/rule-key-value-pres.component.d.ts.map +1 -1
  14. package/components/rules-engine/ruleset-history/ruleset-history-pres.component.d.ts +1 -3
  15. package/components/rules-engine/ruleset-history/ruleset-history-pres.component.d.ts.map +1 -1
  16. package/components/rules-engine/shared/ruleset-history.helper.d.ts +0 -2
  17. package/components/rules-engine/shared/ruleset-history.helper.d.ts.map +1 -1
  18. package/devkit/rules-engine-devtools.console.service.d.ts +0 -7
  19. package/devkit/rules-engine-devtools.console.service.d.ts.map +1 -1
  20. package/devkit/rules-engine-devtools.message.service.d.ts +4 -6
  21. package/devkit/rules-engine-devtools.message.service.d.ts.map +1 -1
  22. package/devkit/rules-engine-devtools.module.d.ts +0 -1
  23. package/devkit/rules-engine-devtools.module.d.ts.map +1 -1
  24. package/devkit/rules-engine-devtools.service.d.ts +3 -10
  25. package/devkit/rules-engine-devtools.service.d.ts.map +1 -1
  26. package/engine/debug/engine.debug.d.ts +4 -12
  27. package/engine/debug/engine.debug.d.ts.map +1 -1
  28. package/engine/debug/helpers.d.ts +2 -4
  29. package/engine/debug/helpers.d.ts.map +1 -1
  30. package/engine/engine.d.ts +4 -13
  31. package/engine/engine.d.ts.map +1 -1
  32. package/engine/engine.interface.d.ts +2 -6
  33. package/engine/engine.interface.d.ts.map +1 -1
  34. package/engine/fact/fact.interfaces.d.ts +2 -0
  35. package/engine/fact/fact.interfaces.d.ts.map +1 -1
  36. package/engine/helpers/filter-ruleset-event.operator.d.ts +0 -1
  37. package/engine/helpers/filter-ruleset-event.operator.d.ts.map +1 -1
  38. package/engine/operator/operator.helpers.d.ts +10 -9
  39. package/engine/operator/operator.helpers.d.ts.map +1 -1
  40. package/engine/operator/operator.interface.d.ts +4 -1
  41. package/engine/operator/operator.interface.d.ts.map +1 -1
  42. package/engine/operator/operators/array-based.operators.d.ts +0 -23
  43. package/engine/operator/operators/array-based.operators.d.ts.map +1 -1
  44. package/engine/operator/operators/basic.operators.d.ts +5 -8
  45. package/engine/operator/operators/basic.operators.d.ts.map +1 -1
  46. package/engine/operator/operators/date-based.operators.d.ts +13 -6
  47. package/engine/operator/operators/date-based.operators.d.ts.map +1 -1
  48. package/engine/operator/operators/index.d.ts +1 -1
  49. package/engine/operator/operators/index.d.ts.map +1 -1
  50. package/engine/operator/operators/number-based.operators.d.ts +0 -4
  51. package/engine/operator/operators/number-based.operators.d.ts.map +1 -1
  52. package/engine/rule/rule.helpers.d.ts +0 -7
  53. package/engine/rule/rule.helpers.d.ts.map +1 -1
  54. package/engine/ruleset-executor.d.ts +15 -13
  55. package/engine/ruleset-executor.d.ts.map +1 -1
  56. package/engine/structure.d.ts +9 -5
  57. package/engine/structure.d.ts.map +1 -1
  58. package/esm2022/components/rules-engine/rule-actions/rule-actions-pres.component.mjs +4 -4
  59. package/esm2022/components/rules-engine/rule-condition/rule-condition-pres.component.mjs +8 -13
  60. package/esm2022/components/rules-engine/rule-key-value/rule-key-value-pres.component.mjs +5 -5
  61. package/esm2022/components/rules-engine/rule-tree/rule-tree-pres.component.mjs +5 -5
  62. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.component.mjs +6 -8
  63. package/esm2022/components/rules-engine/ruleset-history/ruleset-history-pres.module.mjs +4 -4
  64. package/esm2022/components/rules-engine/shared/fallback-to.pipe.mjs +3 -3
  65. package/esm2022/components/rules-engine/shared/ruleset-history.helper.mjs +1 -3
  66. package/esm2022/devkit/rules-engine-devtools.console.service.mjs +6 -13
  67. package/esm2022/devkit/rules-engine-devtools.message.service.mjs +6 -8
  68. package/esm2022/devkit/rules-engine-devtools.module.mjs +5 -6
  69. package/esm2022/devkit/rules-engine-devtools.service.mjs +7 -14
  70. package/esm2022/engine/debug/engine.debug.mjs +2 -10
  71. package/esm2022/engine/debug/helpers.mjs +1 -4
  72. package/esm2022/engine/engine.interface.mjs +1 -1
  73. package/esm2022/engine/engine.mjs +1 -9
  74. package/esm2022/engine/fact/fact.interfaces.mjs +1 -1
  75. package/esm2022/engine/helpers/filter-ruleset-event.operator.mjs +1 -2
  76. package/esm2022/engine/operator/index.mjs +1 -1
  77. package/esm2022/engine/operator/operator.helpers.mjs +33 -13
  78. package/esm2022/engine/operator/operator.interface.mjs +1 -1
  79. package/esm2022/engine/operator/operators/array-based.operators.mjs +6 -29
  80. package/esm2022/engine/operator/operators/basic.operators.mjs +16 -11
  81. package/esm2022/engine/operator/operators/date-based.operators.mjs +48 -8
  82. package/esm2022/engine/operator/operators/number-based.operators.mjs +1 -5
  83. package/esm2022/engine/rule/rule.helpers.mjs +1 -8
  84. package/esm2022/engine/ruleset-executor.mjs +58 -32
  85. package/esm2022/engine/structure.mjs +1 -1
  86. package/esm2022/fact/fact.abstract-service.mjs +1 -1
  87. package/esm2022/facts/current-time/current-time.facts.mjs +2 -0
  88. package/esm2022/facts/current-time/index.mjs +2 -0
  89. package/esm2022/facts/index.mjs +2 -0
  90. package/esm2022/fixtures/jasmine/index.mjs +2 -2
  91. package/esm2022/fixtures/jasmine/rules-engine.runner.service.fixture.jasmine.mjs +14 -0
  92. package/esm2022/fixtures/jest/index.mjs +2 -2
  93. package/esm2022/fixtures/jest/rules-engine.runner.service.fixture.jest.mjs +14 -0
  94. package/esm2022/interfaces/action.interfaces.mjs +1 -1
  95. package/esm2022/public_api.mjs +2 -1
  96. package/esm2022/services/index.mjs +2 -3
  97. package/esm2022/services/rules-engine.token.mjs +2 -1
  98. package/esm2022/services/runner/index.mjs +3 -0
  99. package/esm2022/services/runner/rules-engine.runner.module.mjs +37 -0
  100. package/esm2022/services/runner/rules-engine.runner.service.mjs +119 -0
  101. package/esm2022/stores/rulesets/rulesets.effect.mjs +4 -4
  102. package/esm2022/stores/rulesets/rulesets.module.mjs +4 -4
  103. package/esm2022/stores/rulesets/rulesets.selectors.mjs +3 -4
  104. package/fact/fact.abstract-service.d.ts +3 -3
  105. package/fact/fact.abstract-service.d.ts.map +1 -1
  106. package/facts/current-time/current-time.facts.d.ts +11 -0
  107. package/facts/current-time/current-time.facts.d.ts.map +1 -0
  108. package/facts/current-time/index.d.ts +2 -0
  109. package/facts/current-time/index.d.ts.map +1 -0
  110. package/facts/index.d.ts +2 -0
  111. package/facts/index.d.ts.map +1 -0
  112. package/fesm2022/o3r-rules-engine-fixtures-jasmine.mjs +3 -6
  113. package/fesm2022/o3r-rules-engine-fixtures-jasmine.mjs.map +1 -1
  114. package/fesm2022/o3r-rules-engine-fixtures-jest.mjs +3 -6
  115. package/fesm2022/o3r-rules-engine-fixtures-jest.mjs.map +1 -1
  116. package/fesm2022/o3r-rules-engine.mjs +264 -560
  117. package/fesm2022/o3r-rules-engine.mjs.map +1 -1
  118. package/fixtures/jasmine/index.d.ts +1 -1
  119. package/fixtures/jasmine/index.d.ts.map +1 -1
  120. package/fixtures/jasmine/rules-engine.runner.service.fixture.jasmine.d.ts +14 -0
  121. package/fixtures/jasmine/rules-engine.runner.service.fixture.jasmine.d.ts.map +1 -0
  122. package/fixtures/jest/index.d.ts +1 -1
  123. package/fixtures/jest/index.d.ts.map +1 -1
  124. package/fixtures/jest/index.js +1 -1
  125. package/fixtures/jest/index.js.map +1 -1
  126. package/fixtures/jest/rules-engine.runner.service.fixture.jest.d.ts +14 -0
  127. package/fixtures/jest/rules-engine.runner.service.fixture.jest.d.ts.map +1 -0
  128. package/fixtures/jest/{rules-engine.service.fixture.jest.js → rules-engine.runner.service.fixture.jest.js} +3 -6
  129. package/fixtures/jest/rules-engine.runner.service.fixture.jest.js.map +1 -0
  130. package/interfaces/action.interfaces.d.ts +5 -0
  131. package/interfaces/action.interfaces.d.ts.map +1 -1
  132. package/migration.json +10 -0
  133. package/package.json +57 -46
  134. package/public_api.d.ts +1 -0
  135. package/public_api.d.ts.map +1 -1
  136. package/rules.facts.metadata.json +7 -1
  137. package/rules.operators.metadata.json +61 -0
  138. package/schemas/rulesets.schema.json +6 -110
  139. package/schematics/cms-adapter/index.d.ts +0 -1
  140. package/schematics/cms-adapter/index.d.ts.map +1 -1
  141. package/schematics/cms-adapter/index.js +5 -9
  142. package/schematics/cms-adapter/index.js.map +1 -1
  143. package/schematics/facts-service/schema.json +1 -1
  144. package/schematics/ng-add/helpers/devtools-registration.d.ts +11 -0
  145. package/schematics/ng-add/helpers/devtools-registration.d.ts.map +1 -0
  146. package/schematics/ng-add/helpers/devtools-registration.js +36 -0
  147. package/schematics/ng-add/helpers/devtools-registration.js.map +1 -0
  148. package/schematics/ng-add/index.d.ts +1 -0
  149. package/schematics/ng-add/index.d.ts.map +1 -1
  150. package/schematics/ng-add/index.js +8 -4
  151. package/schematics/ng-add/index.js.map +1 -1
  152. package/schematics/ng-add/schema.json +1 -1
  153. package/schematics/ng-update/index.d.ts +6 -0
  154. package/schematics/ng-update/index.d.ts.map +1 -0
  155. package/schematics/ng-update/index.js +22 -0
  156. package/schematics/ng-update/index.js.map +1 -0
  157. package/schematics/ng-update/v10.0/action-module-split.d.ts +6 -0
  158. package/schematics/ng-update/v10.0/action-module-split.d.ts.map +1 -0
  159. package/schematics/ng-update/v10.0/action-module-split.js +21 -0
  160. package/schematics/ng-update/v10.0/action-module-split.js.map +1 -0
  161. package/schematics/operator/schema.json +1 -1
  162. package/schematics/rules-engine-to-component/index.d.ts +0 -1
  163. package/schematics/rules-engine-to-component/index.d.ts.map +1 -1
  164. package/schematics/rules-engine-to-component/index.js +7 -8
  165. package/schematics/rules-engine-to-component/index.js.map +1 -1
  166. package/schematics/rules-engine-to-component/schema.json +1 -1
  167. package/services/index.d.ts +1 -2
  168. package/services/index.d.ts.map +1 -1
  169. package/services/rules-engine.token.d.ts +1 -0
  170. package/services/rules-engine.token.d.ts.map +1 -1
  171. package/services/runner/index.d.ts +3 -0
  172. package/services/runner/index.d.ts.map +1 -0
  173. package/services/runner/rules-engine.runner.module.d.ts +13 -0
  174. package/services/runner/rules-engine.runner.module.d.ts.map +1 -0
  175. package/services/runner/rules-engine.runner.service.d.ts +60 -0
  176. package/services/runner/rules-engine.runner.service.d.ts.map +1 -0
  177. package/stores/rulesets/rulesets.selectors.d.ts.map +1 -1
  178. package/builders/package.json +0 -3
  179. package/esm2022/fixtures/jasmine/rules-engine.service.fixture.jasmine.mjs +0 -17
  180. package/esm2022/fixtures/jest/rules-engine.service.fixture.jest.mjs +0 -17
  181. package/esm2022/services/rules-engine.effect.mjs +0 -162
  182. package/esm2022/services/rules-engine.module.mjs +0 -50
  183. package/esm2022/services/rules-engine.service.mjs +0 -272
  184. package/fixtures/jasmine/rules-engine.service.fixture.jasmine.d.ts +0 -17
  185. package/fixtures/jasmine/rules-engine.service.fixture.jasmine.d.ts.map +0 -1
  186. package/fixtures/jest/rules-engine.service.fixture.jest.d.ts +0 -18
  187. package/fixtures/jest/rules-engine.service.fixture.jest.d.ts.map +0 -1
  188. package/fixtures/jest/rules-engine.service.fixture.jest.js.map +0 -1
  189. package/schematics/package.json +0 -3
  190. package/services/rules-engine.effect.d.ts +0 -53
  191. package/services/rules-engine.effect.d.ts.map +0 -1
  192. package/services/rules-engine.module.d.ts +0 -16
  193. package/services/rules-engine.module.d.ts.map +0 -1
  194. package/services/rules-engine.service.d.ts +0 -90
  195. package/services/rules-engine.service.d.ts.map +0 -1
@@ -0,0 +1,119 @@
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { select, Store } from '@ngrx/store';
3
+ import { BehaviorSubject, combineLatest, Subscription } from 'rxjs';
4
+ import { filter, map, shareReplay, switchMap } from 'rxjs/operators';
5
+ import { EngineDebugger, operatorList, RulesEngine } from '../../engine/index';
6
+ import { selectActiveRuleSets, selectAllRulesets, selectRuleSetLinkComponents } from '../../stores';
7
+ import { RULES_ENGINE_OPTIONS } from '../rules-engine.token';
8
+ import { LoggerService } from '@o3r/logger';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@ngrx/store";
11
+ import * as i2 from "@o3r/logger";
12
+ export class RulesEngineRunnerService {
13
+ constructor(store, logger, engineConfig) {
14
+ this.store = store;
15
+ this.logger = logger;
16
+ this.subscription = new Subscription();
17
+ /** Observable of component linked to the component */
18
+ this.linkedComponents$ = new BehaviorSubject({});
19
+ /** List of action handlers */
20
+ this.actionHandlers = new Set();
21
+ this.enabled = !engineConfig?.dryRun;
22
+ this.engine = new RulesEngine({
23
+ debugger: engineConfig?.debug ? new EngineDebugger({ eventsStackLimit: engineConfig?.debugEventsStackLimit }) : undefined,
24
+ logger: this.logger
25
+ });
26
+ this.ruleSets$ = combineLatest([
27
+ this.store.pipe(select(selectActiveRuleSets)),
28
+ this.linkedComponents$.pipe(switchMap((linkedComponentsNamesMap) => this.store.pipe(select(selectRuleSetLinkComponents), map((linkComponentMap) => Object.keys(linkedComponentsNamesMap)
29
+ .filter((linkedComponentsName) => linkedComponentsNamesMap[linkedComponentsName] > 0)
30
+ .reduce((acc, compName) => {
31
+ acc.push(...(linkComponentMap[compName] || []));
32
+ return acc;
33
+ }, [])))))
34
+ ]).pipe(map(([activeRulesets, linkedComponentsRulesetsIds]) => ([...activeRulesets, ...linkedComponentsRulesetsIds])));
35
+ this.events$ = this.ruleSets$.pipe(this.engine.getEventStream(), shareReplay(1));
36
+ this.upsertOperators(operatorList);
37
+ this.subscription.add(this.store.pipe(select(selectAllRulesets)).subscribe((rulesets) => this.engine.upsertRulesets(rulesets)));
38
+ this.subscription.add(this.events$.pipe(filter(() => this.enabled)).subscribe(async (events) => {
39
+ this.logger.debug('Start Rules Engine action executed');
40
+ await this.executeActions(events);
41
+ this.logger.debug('All Rules Engine actions executed');
42
+ }));
43
+ }
44
+ /**
45
+ * Execute the list of actions
46
+ * @param actions
47
+ */
48
+ async executeActions(actions) {
49
+ const actionHandlers = [...this.actionHandlers];
50
+ const supportedActions = new Set(actionHandlers.map((handler) => handler.supportingActions).flat());
51
+ const actionMaps = actions
52
+ .filter((action) => {
53
+ const isKnown = supportedActions.has(action.actionType);
54
+ if (!isKnown) {
55
+ this.logger.warn(`The action ${action.actionType} does not have registered handler`);
56
+ }
57
+ return isKnown;
58
+ })
59
+ .reduce((acc, action) => {
60
+ acc[action.actionType] ||= [];
61
+ acc[action.actionType].push(action);
62
+ return acc;
63
+ }, {});
64
+ const handling = actionHandlers
65
+ .map((handler) => handler.executeActions(handler.supportingActions
66
+ .filter((supportedAction) => actionMaps[supportedAction])
67
+ .reduce((acc, supportedAction) => acc.concat(actionMaps[supportedAction]), [])));
68
+ await Promise.all(handling);
69
+ }
70
+ /**
71
+ * Update or insert fact in rules engine
72
+ * @param facts fact list to add / update
73
+ */
74
+ upsertFacts(facts) {
75
+ this.engine.upsertFacts(facts);
76
+ }
77
+ /**
78
+ * Update or insert operator in rules engine
79
+ * @param operators operator list to add / update
80
+ */
81
+ upsertOperators(operators) {
82
+ this.engine.upsertOperators(operators);
83
+ }
84
+ /** @inheritdoc */
85
+ ngOnDestroy() {
86
+ this.subscription.unsubscribe();
87
+ }
88
+ /**
89
+ * Enable temporary a rule set
90
+ * @param componentComputedName Name of the component to enable the ruleset for
91
+ */
92
+ enableRuleSetFor(componentComputedName) {
93
+ const newMap = this.linkedComponents$.value;
94
+ newMap[componentComputedName] = newMap[componentComputedName] ? newMap[componentComputedName] + 1 : 1;
95
+ this.linkedComponents$.next(newMap);
96
+ }
97
+ /**
98
+ * Disable temporary a rule set
99
+ * @param componentComputedName Name of the component to disable the ruleset for
100
+ */
101
+ disableRuleSetFor(componentComputedName) {
102
+ const newMap = this.linkedComponents$.value;
103
+ if (newMap[componentComputedName] > 0) {
104
+ newMap[componentComputedName]--;
105
+ this.linkedComponents$.next(newMap);
106
+ }
107
+ }
108
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RulesEngineRunnerService, deps: [{ token: i1.Store }, { token: i2.LoggerService }, { token: RULES_ENGINE_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
109
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RulesEngineRunnerService }); }
110
+ }
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RulesEngineRunnerService, decorators: [{
112
+ type: Injectable
113
+ }], ctorParameters: () => [{ type: i1.Store }, { type: i2.LoggerService }, { type: undefined, decorators: [{
114
+ type: Optional
115
+ }, {
116
+ type: Inject,
117
+ args: [RULES_ENGINE_OPTIONS]
118
+ }] }] });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXMtZW5naW5lLnJ1bm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3J1bm5lci9ydWxlcy1lbmdpbmUucnVubmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFjLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkUsT0FBTyxFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFN0UsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLDJCQUEyQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxvQkFBb0IsRUFBNEIsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sYUFBYSxDQUFDOzs7O0FBSTFDLE1BQU0sT0FBTyx3QkFBd0I7SUFzQm5DLFlBQ21CLEtBQTJCLEVBQzNCLE1BQXFCLEVBQ0ksWUFBd0M7UUFGakUsVUFBSyxHQUFMLEtBQUssQ0FBc0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQXRCOUIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSzVDLHNEQUFzRDtRQUM1QyxzQkFBaUIsR0FBK0MsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFXbEcsOEJBQThCO1FBQ2QsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FB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LHdCQUF3QjtrQkFEcEMsVUFBVTs7MEJBMEJOLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtzZWxlY3QsIFN0b3JlfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB0eXBlIHtBY3Rpb25CbG9jaywgRmFjdCwgT3BlcmF0b3IsIFJ1bGVzZXQsIFVuYXJ5T3BlcmF0b3J9IGZyb20gJy4uLy4uL2VuZ2luZS9pbmRleCc7XG5pbXBvcnQge0VuZ2luZURlYnVnZ2VyLCBvcGVyYXRvckxpc3QsIFJ1bGVzRW5naW5lfSBmcm9tICcuLi8uLi9lbmdpbmUvaW5kZXgnO1xuaW1wb3J0IHR5cGUge1J1bGVzZXRzU3RvcmV9IGZyb20gJy4uLy4uL3N0b3Jlcyc7XG5pbXBvcnQge3NlbGVjdEFjdGl2ZVJ1bGVTZXRzLCBzZWxlY3RBbGxSdWxlc2V0cywgc2VsZWN0UnVsZVNldExpbmtDb21wb25lbnRzfSBmcm9tICcuLi8uLi9zdG9yZXMnO1xuaW1wb3J0IHtSVUxFU19FTkdJTkVfT1BUSU9OUywgUnVsZXNFbmdpbmVTZXJ2aWNlT3B0aW9uc30gZnJvbSAnLi4vcnVsZXMtZW5naW5lLnRva2VuJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnQG8zci9sb2dnZXInO1xuaW1wb3J0IHR5cGUgeyBSdWxlc0VuZ2luZUFjdGlvbkhhbmRsZXIgfSBmcm9tICdAbzNyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUnVsZXNFbmdpbmVSdW5uZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIC8qKiBSdWxlc2V0cyB0byByZXN0cmljdCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBlbmdpbmUgKi9cbiAgcHJvdGVjdGVkIHJ1bGVTZXRzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXSB8IHVuZGVmaW5lZD47XG5cbiAgLyoqIE9ic2VydmFibGUgb2YgY29tcG9uZW50IGxpbmtlZCB0byB0aGUgY29tcG9uZW50ICovXG4gIHByb3RlY3RlZCBsaW5rZWRDb21wb25lbnRzJDogQmVoYXZpb3JTdWJqZWN0PHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG5cbiAgLyoqIE1hcCBvZiBlbmdpbmVzIGRlZGljYXRlZCB0byBlYWNoIHJ1bGUgc2V0cyAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZW5naW5lOiBSdWxlc0VuZ2luZTtcblxuICAvKiogc3RyZWFtIG9mIHRoZSB3aG9sZSBydWxlc2V0IHJlc3VsdHMgKi9cbiAgcHVibGljIGV2ZW50cyQ6IE9ic2VydmFibGU8QWN0aW9uQmxvY2tbXT47XG5cbiAgLyoqIEVuYWJsZSBhY3Rpb24gZXhlY3V0aW9uIG9uIG5ldyBzdGF0ZSBjaGFuZ2UgKi9cbiAgcHVibGljIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqIExpc3Qgb2YgYWN0aW9uIGhhbmRsZXJzICovXG4gIHB1YmxpYyByZWFkb25seSBhY3Rpb25IYW5kbGVycyA9IG5ldyBTZXQ8UnVsZXNFbmdpbmVBY3Rpb25IYW5kbGVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IFN0b3JlPFJ1bGVzZXRzU3RvcmU+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUlVMRVNfRU5HSU5FX09QVElPTlMpIGVuZ2luZUNvbmZpZz86IFJ1bGVzRW5naW5lU2VydmljZU9wdGlvbnMpIHtcbiAgICB0aGlzLmVuYWJsZWQgPSAhZW5naW5lQ29uZmlnPy5kcnlSdW47XG4gICAgdGhpcy5lbmdpbmUgPSBuZXcgUnVsZXNFbmdpbmUoe1xuICAgICAgZGVidWdnZXI6IGVuZ2luZUNvbmZpZz8uZGVidWcgPyBuZXcgRW5naW5lRGVidWdnZXIoe2V2ZW50c1N0YWNrTGltaXQ6IGVuZ2luZUNvbmZpZz8uZGVidWdFdmVudHNTdGFja0xpbWl0fSkgOiB1bmRlZmluZWQsXG4gICAgICBsb2dnZXI6IHRoaXMubG9nZ2VyXG4gICAgfSk7XG4gICAgdGhpcy5ydWxlU2V0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0QWN0aXZlUnVsZVNldHMpKSxcbiAgICAgIHRoaXMubGlua2VkQ29tcG9uZW50cyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChsaW5rZWRDb21wb25lbnRzTmFtZXNNYXApID0+IHRoaXMuc3RvcmUucGlwZShcbiAgICAgICAgICBzZWxlY3Qoc2VsZWN0UnVsZVNldExpbmtDb21wb25lbnRzKSxcbiAgICAgICAgICBtYXAoKGxpbmtDb21wb25lbnRNYXApID0+IE9iamVjdC5rZXlzKGxpbmtlZENvbXBvbmVudHNOYW1lc01hcClcbiAgICAgICAgICAgIC5maWx0ZXIoKGxpbmtlZENvbXBvbmVudHNOYW1lKSA9PiBsaW5rZWRDb21wb25lbnRzTmFtZXNNYXBbbGlua2VkQ29tcG9uZW50c05hbWVdID4gMClcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFjYywgY29tcE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgYWNjLnB1c2goLi4uKGxpbmtDb21wb25lbnRNYXBbY29tcE5hbWVdIHx8IFtdKSk7XG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbXSBhcyBzdHJpbmdbXSkpXG4gICAgICAgICkpXG4gICAgICApXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2FjdGl2ZVJ1bGVzZXRzLCBsaW5rZWRDb21wb25lbnRzUnVsZXNldHNJZHNdKSA9PiAoWy4uLmFjdGl2ZVJ1bGVzZXRzLCAuLi5saW5rZWRDb21wb25lbnRzUnVsZXNldHNJZHNdKSlcbiAgICApO1xuXG4gICAgdGhpcy5ldmVudHMkID0gdGhpcy5ydWxlU2V0cyQucGlwZShcbiAgICAgIHRoaXMuZW5naW5lLmdldEV2ZW50U3RyZWFtPEFjdGlvbkJsb2NrPigpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgdGhpcy51cHNlcnRPcGVyYXRvcnMob3BlcmF0b3JMaXN0KTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMuc3RvcmUucGlwZShcbiAgICAgICAgc2VsZWN0KHNlbGVjdEFsbFJ1bGVzZXRzKVxuICAgICAgKS5zdWJzY3JpYmUoKHJ1bGVzZXRzOiBSdWxlc2V0W10pID0+IHRoaXMuZW5naW5lLnVwc2VydFJ1bGVzZXRzKHJ1bGVzZXRzKSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5ldmVudHMkLnBpcGUoZmlsdGVyKCgpID0+IHRoaXMuZW5hYmxlZCkpLnN1YnNjcmliZShhc3luYyAoZXZlbnRzKSA9PiB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTdGFydCBSdWxlcyBFbmdpbmUgYWN0aW9uIGV4ZWN1dGVkJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZUFjdGlvbnMoZXZlbnRzKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0FsbCBSdWxlcyBFbmdpbmUgYWN0aW9ucyBleGVjdXRlZCcpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgdGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKiBAcGFyYW0gYWN0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGV4ZWN1dGVBY3Rpb25zKGFjdGlvbnM6IEFjdGlvbkJsb2NrW10pIHtcbiAgICBjb25zdCBhY3Rpb25IYW5kbGVycyA9IFsuLi50aGlzLmFjdGlvbkhhbmRsZXJzXTtcblxuICAgIGNvbnN0IHN1cHBvcnRlZEFjdGlvbnMgPSBuZXcgU2V0KGFjdGlvbkhhbmRsZXJzLm1hcCgoaGFuZGxlcikgPT4gaGFuZGxlci5zdXBwb3J0aW5nQWN0aW9ucykuZmxhdCgpKTtcblxuICAgIGNvbnN0IGFjdGlvbk1hcHMgPSBhY3Rpb25zXG4gICAgICAuZmlsdGVyKChhY3Rpb24pID0+IHtcbiAgICAgICAgY29uc3QgaXNLbm93biA9IHN1cHBvcnRlZEFjdGlvbnMuaGFzKGFjdGlvbi5hY3Rpb25UeXBlKTtcbiAgICAgICAgaWYgKCFpc0tub3duKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybihgVGhlIGFjdGlvbiAke2FjdGlvbi5hY3Rpb25UeXBlfSBkb2VzIG5vdCBoYXZlIHJlZ2lzdGVyZWQgaGFuZGxlcmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0tub3duO1xuICAgICAgfSlcbiAgICAgIC5yZWR1Y2UoKGFjYywgYWN0aW9uKSA9PiB7XG4gICAgICAgIGFjY1thY3Rpb24uYWN0aW9uVHlwZV0gfHw9IFtdO1xuICAgICAgICBhY2NbYWN0aW9uLmFjdGlvblR5cGVdLnB1c2goYWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIEFjdGlvbkJsb2NrW10+KTtcblxuICAgIGNvbnN0IGhhbmRsaW5nID0gYWN0aW9uSGFuZGxlcnNcbiAgICAgIC5tYXAoKGhhbmRsZXIpID0+XG4gICAgICAgIGhhbmRsZXIuZXhlY3V0ZUFjdGlvbnMoXG4gICAgICAgICAgaGFuZGxlci5zdXBwb3J0aW5nQWN0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcigoc3VwcG9ydGVkQWN0aW9uKSA9PiBhY3Rpb25NYXBzW3N1cHBvcnRlZEFjdGlvbl0pXG4gICAgICAgICAgICAucmVkdWNlPEFjdGlvbkJsb2NrW10+KChhY2MsIHN1cHBvcnRlZEFjdGlvbikgPT4gYWNjLmNvbmNhdChhY3Rpb25NYXBzW3N1cHBvcnRlZEFjdGlvbl0pLCBbXSlcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKGhhbmRsaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgb3IgaW5zZXJ0IGZhY3QgaW4gcnVsZXMgZW5naW5lXG4gICAqIEBwYXJhbSBmYWN0cyBmYWN0IGxpc3QgdG8gYWRkIC8gdXBkYXRlXG4gICAqL1xuICBwdWJsaWMgdXBzZXJ0RmFjdHMoZmFjdHM6IEZhY3Q8dW5rbm93bj4gfCBGYWN0PHVua25vd24+W10pIHtcbiAgICB0aGlzLmVuZ2luZS51cHNlcnRGYWN0cyhmYWN0cyk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG9yIGluc2VydCBvcGVyYXRvciBpbiBydWxlcyBlbmdpbmVcbiAgICogQHBhcmFtIG9wZXJhdG9ycyBvcGVyYXRvciBsaXN0IHRvIGFkZCAvIHVwZGF0ZVxuICAgKi9cbiAgcHVibGljIHVwc2VydE9wZXJhdG9ycyhvcGVyYXRvcnM6IChPcGVyYXRvcjxhbnksIGFueT4gfCBVbmFyeU9wZXJhdG9yPGFueT4pW10pIHtcbiAgICB0aGlzLmVuZ2luZS51cHNlcnRPcGVyYXRvcnMob3BlcmF0b3JzKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgdGVtcG9yYXJ5IGEgcnVsZSBzZXRcbiAgICogQHBhcmFtIGNvbXBvbmVudENvbXB1dGVkTmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgdG8gZW5hYmxlIHRoZSBydWxlc2V0IGZvclxuICAgKi9cbiAgcHVibGljIGVuYWJsZVJ1bGVTZXRGb3IoY29tcG9uZW50Q29tcHV0ZWROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuZXdNYXAgPSB0aGlzLmxpbmtlZENvbXBvbmVudHMkLnZhbHVlO1xuICAgIG5ld01hcFtjb21wb25lbnRDb21wdXRlZE5hbWVdID0gbmV3TWFwW2NvbXBvbmVudENvbXB1dGVkTmFtZV0gPyBuZXdNYXBbY29tcG9uZW50Q29tcHV0ZWROYW1lXSArIDEgOiAxO1xuICAgIHRoaXMubGlua2VkQ29tcG9uZW50cyQubmV4dChuZXdNYXApO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGVtcG9yYXJ5IGEgcnVsZSBzZXRcbiAgICogQHBhcmFtIGNvbXBvbmVudENvbXB1dGVkTmFtZSBOYW1lIG9mIHRoZSBjb21wb25lbnQgdG8gZGlzYWJsZSB0aGUgcnVsZXNldCBmb3JcbiAgICovXG4gIHB1YmxpYyBkaXNhYmxlUnVsZVNldEZvcihjb21wb25lbnRDb21wdXRlZE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5ld01hcCA9IHRoaXMubGlua2VkQ29tcG9uZW50cyQudmFsdWU7XG4gICAgaWYgKG5ld01hcFtjb21wb25lbnRDb21wdXRlZE5hbWVdID4gMCkge1xuICAgICAgbmV3TWFwW2NvbXBvbmVudENvbXB1dGVkTmFtZV0tLTtcbiAgICAgIHRoaXMubGlua2VkQ29tcG9uZW50cyQubmV4dChuZXdNYXApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -21,10 +21,10 @@ export class RulesetsEffect {
21
21
  */
22
22
  this.upsertEntitiesFromApi$ = createEffect(() => this.actions$.pipe(ofType(upsertRulesetsEntitiesFromApi), mergeMap((payload) => from(payload.call).pipe(map((reply) => upsertRulesetsEntities({ entities: reply, requestId: payload.requestId })), catchError((err) => of(failRulesetsEntities({ error: err, requestId: payload.requestId })))))));
23
23
  }
24
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: RulesetsEffect, deps: [{ token: i1.Actions }], target: i0.ɵɵFactoryTarget.Injectable }); }
25
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: RulesetsEffect }); }
24
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RulesetsEffect, deps: [{ token: i1.Actions }], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RulesetsEffect }); }
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: RulesetsEffect, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RulesetsEffect, decorators: [{
28
28
  type: Injectable
29
- }], ctorParameters: function () { return [{ type: i1.Actions }]; } });
29
+ }], ctorParameters: () => [{ type: i1.Actions }] });
30
30
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldHMuZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N0b3Jlcy9ydWxlc2V0cy9ydWxlc2V0cy5lZmZlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIsc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM5QixNQUFNLG9CQUFvQixDQUFDOzs7QUFFNUI7O0dBRUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQStCekIsWUFBc0IsUUFBaUI7UUFBakIsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQTdCdkM7O1dBRUc7UUFDSSx3QkFBbUIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMsMEJBQTBCLENBQUMsRUFDbEMsc0JBQXNCLENBQ3BCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFDLENBQUMsRUFDdEYsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLEVBQ2pGLHFCQUFxQixDQUN0QixDQUNGLENBQ0YsQ0FBQztRQUVGOztXQUVHO1FBQ0ksMkJBQXNCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLDZCQUE2QixDQUFDLEVBQ3JDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNyQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsRUFDdkYsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzFGLENBQ0YsQ0FDRixDQUNGLENBQUM7SUFHRixDQUFDO2lJQWhDVSxjQUFjO3FJQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgZnJvbUFwaUVmZmVjdFN3aXRjaE1hcCB9IGZyb20gJ0BvM3IvY29yZSc7XG5pbXBvcnQgeyBmcm9tLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIGNhbmNlbFJ1bGVzZXRzUmVxdWVzdCxcbiAgZmFpbFJ1bGVzZXRzRW50aXRpZXMsXG4gIHNldFJ1bGVzZXRzRW50aXRpZXMsXG4gIHNldFJ1bGVzZXRzRW50aXRpZXNGcm9tQXBpLFxuICB1cHNlcnRSdWxlc2V0c0VudGl0aWVzLFxuICB1cHNlcnRSdWxlc2V0c0VudGl0aWVzRnJvbUFwaVxufSBmcm9tICcuL3J1bGVzZXRzLmFjdGlvbnMnO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gaGFuZGxlIGFzeW5jIFJ1bGVzZXRzIGFjdGlvbnNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJ1bGVzZXRzRWZmZWN0IHtcblxuICAvKipcbiAgICogU2V0IHRoZSBlbnRpdGllcyB3aXRoIHRoZSByZXBseSBjb250ZW50LCBkaXNwYXRjaCBmYWlsUnVsZXNldHNFbnRpdGllcyBpZiBpdCBjYXRjaGVzIGEgZmFpbHVyZVxuICAgKi9cbiAgcHVibGljIHNldEVudGl0aWVzRnJvbUFwaSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoc2V0UnVsZXNldHNFbnRpdGllc0Zyb21BcGkpLFxuICAgICAgZnJvbUFwaUVmZmVjdFN3aXRjaE1hcChcbiAgICAgICAgKHJlcGx5LCBhY3Rpb24pID0+IHNldFJ1bGVzZXRzRW50aXRpZXMoe2VudGl0aWVzOiByZXBseSwgcmVxdWVzdElkOiBhY3Rpb24ucmVxdWVzdElkfSksXG4gICAgICAgIChlcnJvciwgYWN0aW9uKSA9PiBvZihmYWlsUnVsZXNldHNFbnRpdGllcyh7ZXJyb3IsIHJlcXVlc3RJZDogYWN0aW9uLnJlcXVlc3RJZH0pKSxcbiAgICAgICAgY2FuY2VsUnVsZXNldHNSZXF1ZXN0XG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIC8qKlxuICAgKiBVcHNlcnQgdGhlIGVudGl0aWVzIHdpdGggdGhlIHJlcGx5IGNvbnRlbnQsIGRpc3BhdGNoIGZhaWxSdWxlc2V0c0VudGl0aWVzIGlmIGl0IGNhdGNoZXMgYSBmYWlsdXJlXG4gICAqL1xuICBwdWJsaWMgdXBzZXJ0RW50aXRpZXNGcm9tQXBpJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZSh1cHNlcnRSdWxlc2V0c0VudGl0aWVzRnJvbUFwaSksXG4gICAgICBtZXJnZU1hcCgocGF5bG9hZCkgPT5cbiAgICAgICAgZnJvbShwYXlsb2FkLmNhbGwpLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXBseSkgPT4gdXBzZXJ0UnVsZXNldHNFbnRpdGllcyh7ZW50aXRpZXM6IHJlcGx5LCByZXF1ZXN0SWQ6IHBheWxvYWQucmVxdWVzdElkfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gb2YoZmFpbFJ1bGVzZXRzRW50aXRpZXMoe2Vycm9yOiBlcnIsIHJlcXVlc3RJZDogcGF5bG9hZC5yZXF1ZXN0SWR9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGFjdGlvbnMkOiBBY3Rpb25zKSB7XG4gIH1cbn1cbiJdfQ==
@@ -22,13 +22,13 @@ export class RulesetsStoreModule {
22
22
  ]
23
23
  };
24
24
  }
25
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: RulesetsStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
26
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.0", ngImport: i0, type: RulesetsStoreModule, imports: [i1.StoreFeatureModule, i2.EffectsFeatureModule] }); }
27
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: RulesetsStoreModule, providers: [
25
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RulesetsStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
26
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: RulesetsStoreModule, imports: [i1.StoreFeatureModule, i2.EffectsFeatureModule] }); }
27
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RulesetsStoreModule, providers: [
28
28
  { provide: RULESETS_REDUCER_TOKEN, useFactory: getDefaultRulesetsReducer }
29
29
  ], imports: [StoreModule.forFeature(RULESETS_STORE_NAME, RULESETS_REDUCER_TOKEN), EffectsModule.forFeature([RulesetsEffect])] }); }
30
30
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: RulesetsStoreModule, decorators: [{
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RulesetsStoreModule, decorators: [{
32
32
  type: NgModule,
33
33
  args: [{
34
34
  imports: [
@@ -1,5 +1,5 @@
1
1
  import { createFeatureSelector, createSelector } from '@ngrx/store';
2
- import { computeConfigurationName } from '@o3r/configuration';
2
+ import { computeItemIdentifier } from '@o3r/core';
3
3
  import { rulesetsAdapter } from './rulesets.reducer';
4
4
  import { RULESETS_STORE_NAME } from './rulesets.state';
5
5
  const { selectIds, selectEntities, selectAll, selectTotal } = rulesetsAdapter.getSelectors();
@@ -17,7 +17,6 @@ export const selectRulesetsTotal = createSelector(selectRulesetsState, selectTot
17
17
  export const selectRulesetsStorePendingStatus = createSelector(selectRulesetsState, (state) => state.isPending || false);
18
18
  /**
19
19
  * Check if the given value is a valid date
20
- *
21
20
  * @param d
22
21
  */
23
22
  const isValidDate = (d) => !isNaN(d) && d instanceof Date;
@@ -56,9 +55,9 @@ export const selectRuleSetLinkComponents = createSelector(selectAllRulesets, (ru
56
55
  if (!ruleSet.linkedComponent) {
57
56
  return acc;
58
57
  }
59
- const configName = computeConfigurationName(ruleSet.linkedComponent.name, ruleSet.linkedComponent.library);
58
+ const configName = computeItemIdentifier(ruleSet.linkedComponent.name, ruleSet.linkedComponent.library);
60
59
  acc[configName] ||= [];
61
60
  acc[configName].push(ruleSet.id);
62
61
  return acc;
63
62
  }, {}));
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldHMuc2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N0b3Jlcy9ydWxlc2V0cy9ydWxlc2V0cy5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFpQixNQUFNLGtCQUFrQixDQUFDO0FBRXRFLE1BQU0sRUFBQyxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUMsR0FBRyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7QUFFM0YsNEJBQTRCO0FBQzVCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLHFCQUFxQixDQUFnQixtQkFBbUIsQ0FBQyxDQUFDO0FBRTdGLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFaEYsbUNBQW1DO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUVoRixpREFBaUQ7QUFDakQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsY0FBYyxDQUFDLG1CQUFtQixFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBRTFGLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFcEYsc0NBQXNDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsQ0FBQztBQUV6SDs7OztHQUlHO0FBQ0gsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUM7QUFFL0Q7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGNBQWMsQ0FDaEQsaUJBQWlCLEVBQ2pCLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFO0lBRWpELElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUN2QyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7UUFDL0MsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRWhELElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN4RCxPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDO0tBQ3ZEO0lBRUQsSUFBSSxJQUFJLEVBQUU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUM7S0FDL0I7SUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRTVDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsY0FBYyxDQUN2RCxpQkFBaUIsRUFDakIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNYLFFBQVE7S0FDTCxNQUFNLENBQUMsQ0FBQyxHQUE2QixFQUFFLE9BQWdCLEVBQUUsRUFBRTtJQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQztLQUNaO0lBQ0QsTUFBTSxVQUFVLEdBQUcsd0JBQXdCLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGZWF0dXJlU2VsZWN0b3IsIGNyZWF0ZVNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgY29tcHV0ZUNvbmZpZ3VyYXRpb25OYW1lIH0gZnJvbSAnQG8zci9jb25maWd1cmF0aW9uJztcbmltcG9ydCB0eXBlIHsgUnVsZXNldCB9IGZyb20gJy4uLy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBydWxlc2V0c0FkYXB0ZXIgfSBmcm9tICcuL3J1bGVzZXRzLnJlZHVjZXInO1xuaW1wb3J0IHsgUlVMRVNFVFNfU1RPUkVfTkFNRSwgUnVsZXNldHNTdGF0ZSB9IGZyb20gJy4vcnVsZXNldHMuc3RhdGUnO1xuXG5jb25zdCB7c2VsZWN0SWRzLCBzZWxlY3RFbnRpdGllcywgc2VsZWN0QWxsLCBzZWxlY3RUb3RhbH0gPSBydWxlc2V0c0FkYXB0ZXIuZ2V0U2VsZWN0b3JzKCk7XG5cbi8qKiBTZWxlY3QgUnVsZXNldHMgU3RhdGUgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RSdWxlc2V0c1N0YXRlID0gY3JlYXRlRmVhdHVyZVNlbGVjdG9yPFJ1bGVzZXRzU3RhdGU+KFJVTEVTRVRTX1NUT1JFX05BTUUpO1xuXG4vKiogU2VsZWN0IHRoZSBhcnJheSBvZiBSdWxlc2V0cyBpZHMgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RSdWxlc2V0c0lkcyA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFJ1bGVzZXRzU3RhdGUsIHNlbGVjdElkcyk7XG5cbi8qKiBTZWxlY3QgdGhlIGFycmF5IG9mIFJ1bGVzZXRzICovXG5leHBvcnQgY29uc3Qgc2VsZWN0QWxsUnVsZXNldHMgPSBjcmVhdGVTZWxlY3RvcihzZWxlY3RSdWxlc2V0c1N0YXRlLCBzZWxlY3RBbGwpO1xuXG4vKiogU2VsZWN0IHRoZSBkaWN0aW9uYXJ5IG9mIFJ1bGVzZXRzIGVudGl0aWVzICovXG5leHBvcnQgY29uc3Qgc2VsZWN0UnVsZXNldHNFbnRpdGllcyA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFJ1bGVzZXRzU3RhdGUsIHNlbGVjdEVudGl0aWVzKTtcblxuLyoqIFNlbGVjdCB0aGUgdG90YWwgUnVsZXNldHMgY291bnQgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RSdWxlc2V0c1RvdGFsID0gY3JlYXRlU2VsZWN0b3Ioc2VsZWN0UnVsZXNldHNTdGF0ZSwgc2VsZWN0VG90YWwpO1xuXG4vKiogU2VsZWN0IHRoZSBzdG9yZSBwZW5kaW5nIHN0YXR1cyAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJ1bGVzZXRzU3RvcmVQZW5kaW5nU3RhdHVzID0gY3JlYXRlU2VsZWN0b3Ioc2VsZWN0UnVsZXNldHNTdGF0ZSwgKHN0YXRlKSA9PiBzdGF0ZS5pc1BlbmRpbmcgfHwgZmFsc2UpO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIHZhbGlkIGRhdGVcbiAqXG4gKiBAcGFyYW0gZFxuICovXG5jb25zdCBpc1ZhbGlkRGF0ZSA9IChkOiBhbnkpID0+ICFpc05hTihkKSAmJiBkIGluc3RhbmNlb2YgRGF0ZTtcblxuLyoqXG4gKiBSZXR1cm5zIG9ubHkgdGhlIHJ1bGVzZXRzIGlkcyB3aGljaCBhcmUgbm90IG9uRGVtYW5kIGFuZCBpbiB0aGUgdmFsaWRpdHkgcmFuZ2VcbiAqIE9uRGVtYW5kIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB2YWxpZGl0eSByYW5nZS5cbiAqIE9ubHkgaWYgdGhlIHJ1bGVzZXQgaXMgTk9UIG9uRGVtYW5kICh0aGlzIG1lYW5zIGl0IGlzIHRha2VuIGludG8gY29uc2lkZXJhdGlvbiBmb3IgdGhlIHJ1bnMpLCB0aGUgdmFsaWRpdHkgaXMgY2hlY2tlZFxuICovXG5leHBvcnQgY29uc3Qgc2VsZWN0QWN0aXZlUnVsZVNldHMgPSBjcmVhdGVTZWxlY3RvcihcbiAgc2VsZWN0QWxsUnVsZXNldHMsXG4gIChydWxlU2V0cykgPT4gcnVsZVNldHMuZmlsdGVyKChydWxlU2V0OiBSdWxlc2V0KSA9PiB7XG5cbiAgICBpZiAocnVsZVNldC5saW5rZWRDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGl0eSA9IHJ1bGVTZXQudmFsaWRpdHlSYW5nZTtcbiAgICBpZiAoIXZhbGlkaXR5IHx8ICF2YWxpZGl0eS5mcm9tICYmICF2YWxpZGl0eS50bykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZnJvbSA9IHZhbGlkaXR5LmZyb20gJiYgbmV3IERhdGUodmFsaWRpdHkuZnJvbSk7XG4gICAgY29uc3QgdG8gPSB2YWxpZGl0eS50byAmJiBuZXcgRGF0ZSh2YWxpZGl0eS50byk7XG5cbiAgICBpZiAodG8gJiYgIWlzVmFsaWREYXRlKHRvKSB8fCBmcm9tICYmICFpc1ZhbGlkRGF0ZShmcm9tKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodG8gJiYgZnJvbSkge1xuICAgICAgcmV0dXJuIGZyb20uZ2V0VGltZSgpIDw9IHRpbWUgJiYgdG8uZ2V0VGltZSgpID49IHRpbWU7XG4gICAgfVxuXG4gICAgaWYgKGZyb20pIHtcbiAgICAgIHJldHVybiBmcm9tLmdldFRpbWUoKSA8PSB0aW1lO1xuICAgIH1cblxuICAgIHJldHVybiB0byAmJiB0by5nZXRUaW1lKCkgPj0gdGltZTtcbiAgfSkubWFwKChydWxlU2V0OiBSdWxlc2V0KSA9PiBydWxlU2V0LmlkKSk7XG5cbi8qKlxuICogU2VsZWN0IHRoZSBtYXAgb2YgcnVsZVNldCB0byBhY3RpdmF0ZSBiYXNlZCBvbiB0aGUgY29tcG9uZW50IGNvbXB1dGVkIG5hbWVcbiAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJ1bGVTZXRMaW5rQ29tcG9uZW50cyA9IGNyZWF0ZVNlbGVjdG9yKFxuICBzZWxlY3RBbGxSdWxlc2V0cyxcbiAgKHJ1bGVTZXRzKSA9PlxuICAgIHJ1bGVTZXRzXG4gICAgICAucmVkdWNlKChhY2M6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiwgcnVsZVNldDogUnVsZXNldCkgPT4ge1xuICAgICAgICBpZiAoIXJ1bGVTZXQubGlua2VkQ29tcG9uZW50KSB7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb25maWdOYW1lID0gY29tcHV0ZUNvbmZpZ3VyYXRpb25OYW1lKHJ1bGVTZXQubGlua2VkQ29tcG9uZW50Lm5hbWUsIHJ1bGVTZXQubGlua2VkQ29tcG9uZW50LmxpYnJhcnkpO1xuICAgICAgICBhY2NbY29uZmlnTmFtZV0gfHw9IFtdO1xuICAgICAgICBhY2NbY29uZmlnTmFtZV0ucHVzaChydWxlU2V0LmlkKTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KVxuKTtcbiJdfQ==
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZXNldHMuc2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3N0b3Jlcy9ydWxlc2V0cy9ydWxlc2V0cy5zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBaUIsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RSxNQUFNLEVBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFDLEdBQUcsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBRTNGLDRCQUE0QjtBQUM1QixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBZ0IsbUJBQW1CLENBQUMsQ0FBQztBQUU3Rix1Q0FBdUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLG1DQUFtQztBQUNuQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFaEYsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUUxRixzQ0FBc0M7QUFDdEMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsY0FBYyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRXBGLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLENBQUM7QUFFekg7OztHQUdHO0FBQ0gsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUM7QUFFL0Q7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGNBQWMsQ0FDaEQsaUJBQWlCLEVBQ2pCLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFO0lBRWpELElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRTtRQUMzQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUN2QyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7UUFDL0MsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRWhELElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN4RCxPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDO0tBQ3ZEO0lBRUQsSUFBSSxJQUFJLEVBQUU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUM7S0FDL0I7SUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ3BDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRTVDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsY0FBYyxDQUN2RCxpQkFBaUIsRUFDakIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNYLFFBQVE7S0FDTCxNQUFNLENBQUMsQ0FBQyxHQUE2QixFQUFFLE9BQWdCLEVBQUUsRUFBRTtJQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtRQUM1QixPQUFPLEdBQUcsQ0FBQztLQUNaO0lBQ0QsTUFBTSxVQUFVLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGZWF0dXJlU2VsZWN0b3IsIGNyZWF0ZVNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgY29tcHV0ZUl0ZW1JZGVudGlmaWVyIH0gZnJvbSAnQG8zci9jb3JlJztcbmltcG9ydCB0eXBlIHsgUnVsZXNldCB9IGZyb20gJy4uLy4uL2VuZ2luZSc7XG5pbXBvcnQgeyBydWxlc2V0c0FkYXB0ZXIgfSBmcm9tICcuL3J1bGVzZXRzLnJlZHVjZXInO1xuaW1wb3J0IHsgUlVMRVNFVFNfU1RPUkVfTkFNRSwgUnVsZXNldHNTdGF0ZSB9IGZyb20gJy4vcnVsZXNldHMuc3RhdGUnO1xuXG5jb25zdCB7c2VsZWN0SWRzLCBzZWxlY3RFbnRpdGllcywgc2VsZWN0QWxsLCBzZWxlY3RUb3RhbH0gPSBydWxlc2V0c0FkYXB0ZXIuZ2V0U2VsZWN0b3JzKCk7XG5cbi8qKiBTZWxlY3QgUnVsZXNldHMgU3RhdGUgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RSdWxlc2V0c1N0YXRlID0gY3JlYXRlRmVhdHVyZVNlbGVjdG9yPFJ1bGVzZXRzU3RhdGU+KFJVTEVTRVRTX1NUT1JFX05BTUUpO1xuXG4vKiogU2VsZWN0IHRoZSBhcnJheSBvZiBSdWxlc2V0cyBpZHMgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RSdWxlc2V0c0lkcyA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFJ1bGVzZXRzU3RhdGUsIHNlbGVjdElkcyk7XG5cbi8qKiBTZWxlY3QgdGhlIGFycmF5IG9mIFJ1bGVzZXRzICovXG5leHBvcnQgY29uc3Qgc2VsZWN0QWxsUnVsZXNldHMgPSBjcmVhdGVTZWxlY3RvcihzZWxlY3RSdWxlc2V0c1N0YXRlLCBzZWxlY3RBbGwpO1xuXG4vKiogU2VsZWN0IHRoZSBkaWN0aW9uYXJ5IG9mIFJ1bGVzZXRzIGVudGl0aWVzICovXG5leHBvcnQgY29uc3Qgc2VsZWN0UnVsZXNldHNFbnRpdGllcyA9IGNyZWF0ZVNlbGVjdG9yKHNlbGVjdFJ1bGVzZXRzU3RhdGUsIHNlbGVjdEVudGl0aWVzKTtcblxuLyoqIFNlbGVjdCB0aGUgdG90YWwgUnVsZXNldHMgY291bnQgKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RSdWxlc2V0c1RvdGFsID0gY3JlYXRlU2VsZWN0b3Ioc2VsZWN0UnVsZXNldHNTdGF0ZSwgc2VsZWN0VG90YWwpO1xuXG4vKiogU2VsZWN0IHRoZSBzdG9yZSBwZW5kaW5nIHN0YXR1cyAqL1xuZXhwb3J0IGNvbnN0IHNlbGVjdFJ1bGVzZXRzU3RvcmVQZW5kaW5nU3RhdHVzID0gY3JlYXRlU2VsZWN0b3Ioc2VsZWN0UnVsZXNldHNTdGF0ZSwgKHN0YXRlKSA9PiBzdGF0ZS5pc1BlbmRpbmcgfHwgZmFsc2UpO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIHZhbGlkIGRhdGVcbiAqIEBwYXJhbSBkXG4gKi9cbmNvbnN0IGlzVmFsaWREYXRlID0gKGQ6IGFueSkgPT4gIWlzTmFOKGQpICYmIGQgaW5zdGFuY2VvZiBEYXRlO1xuXG4vKipcbiAqIFJldHVybnMgb25seSB0aGUgcnVsZXNldHMgaWRzIHdoaWNoIGFyZSBub3Qgb25EZW1hbmQgYW5kIGluIHRoZSB2YWxpZGl0eSByYW5nZVxuICogT25EZW1hbmQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkaXR5IHJhbmdlLlxuICogT25seSBpZiB0aGUgcnVsZXNldCBpcyBOT1Qgb25EZW1hbmQgKHRoaXMgbWVhbnMgaXQgaXMgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uIGZvciB0aGUgcnVucyksIHRoZSB2YWxpZGl0eSBpcyBjaGVja2VkXG4gKi9cbmV4cG9ydCBjb25zdCBzZWxlY3RBY3RpdmVSdWxlU2V0cyA9IGNyZWF0ZVNlbGVjdG9yKFxuICBzZWxlY3RBbGxSdWxlc2V0cyxcbiAgKHJ1bGVTZXRzKSA9PiBydWxlU2V0cy5maWx0ZXIoKHJ1bGVTZXQ6IFJ1bGVzZXQpID0+IHtcblxuICAgIGlmIChydWxlU2V0LmxpbmtlZENvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkaXR5ID0gcnVsZVNldC52YWxpZGl0eVJhbmdlO1xuICAgIGlmICghdmFsaWRpdHkgfHwgIXZhbGlkaXR5LmZyb20gJiYgIXZhbGlkaXR5LnRvKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBmcm9tID0gdmFsaWRpdHkuZnJvbSAmJiBuZXcgRGF0ZSh2YWxpZGl0eS5mcm9tKTtcbiAgICBjb25zdCB0byA9IHZhbGlkaXR5LnRvICYmIG5ldyBEYXRlKHZhbGlkaXR5LnRvKTtcblxuICAgIGlmICh0byAmJiAhaXNWYWxpZERhdGUodG8pIHx8IGZyb20gJiYgIWlzVmFsaWREYXRlKGZyb20pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHRpbWUgPSBEYXRlLm5vdygpO1xuICAgIGlmICh0byAmJiBmcm9tKSB7XG4gICAgICByZXR1cm4gZnJvbS5nZXRUaW1lKCkgPD0gdGltZSAmJiB0by5nZXRUaW1lKCkgPj0gdGltZTtcbiAgICB9XG5cbiAgICBpZiAoZnJvbSkge1xuICAgICAgcmV0dXJuIGZyb20uZ2V0VGltZSgpIDw9IHRpbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvICYmIHRvLmdldFRpbWUoKSA+PSB0aW1lO1xuICB9KS5tYXAoKHJ1bGVTZXQ6IFJ1bGVzZXQpID0+IHJ1bGVTZXQuaWQpKTtcblxuLyoqXG4gKiBTZWxlY3QgdGhlIG1hcCBvZiBydWxlU2V0IHRvIGFjdGl2YXRlIGJhc2VkIG9uIHRoZSBjb21wb25lbnQgY29tcHV0ZWQgbmFtZVxuICovXG5leHBvcnQgY29uc3Qgc2VsZWN0UnVsZVNldExpbmtDb21wb25lbnRzID0gY3JlYXRlU2VsZWN0b3IoXG4gIHNlbGVjdEFsbFJ1bGVzZXRzLFxuICAocnVsZVNldHMpID0+XG4gICAgcnVsZVNldHNcbiAgICAgIC5yZWR1Y2UoKGFjYzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+LCBydWxlU2V0OiBSdWxlc2V0KSA9PiB7XG4gICAgICAgIGlmICghcnVsZVNldC5saW5rZWRDb21wb25lbnQpIHtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbmZpZ05hbWUgPSBjb21wdXRlSXRlbUlkZW50aWZpZXIocnVsZVNldC5saW5rZWRDb21wb25lbnQubmFtZSwgcnVsZVNldC5saW5rZWRDb21wb25lbnQubGlicmFyeSk7XG4gICAgICAgIGFjY1tjb25maWdOYW1lXSB8fD0gW107XG4gICAgICAgIGFjY1tjb25maWdOYW1lXS5wdXNoKHJ1bGVTZXQuaWQpO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pXG4pO1xuIl19
@@ -1,11 +1,11 @@
1
1
  import { FactDefinitions, FactSet } from '../engine/index';
2
- import { RulesEngineService } from '../services/rules-engine.service';
2
+ import { RulesEngineRunnerService } from '../services/runner/rules-engine.runner.service';
3
3
  /** Abstract fact set service */
4
4
  export declare abstract class FactsService<T extends FactDefinitions> {
5
- private rulesEngine;
5
+ private readonly rulesEngine;
6
6
  /** Set of facts provided */
7
7
  abstract facts: FactSet<T>;
8
- constructor(rulesEngine: RulesEngineService);
8
+ constructor(rulesEngine: RulesEngineRunnerService);
9
9
  /** Register the set of facts */
10
10
  register(): void;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fact.abstract-service.d.ts","sourceRoot":"","sources":["../../src/fact/fact.abstract-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,gCAAgC;AAChC,8BAAsB,YAAY,CAAC,CAAC,SAAS,eAAe;IAK9C,OAAO,CAAC,WAAW;IAH/B,4BAA4B;IAC5B,SAAgB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEd,WAAW,EAAE,kBAAkB;IAGnD,gCAAgC;IACzB,QAAQ;CAMhB"}
1
+ {"version":3,"file":"fact.abstract-service.d.ts","sourceRoot":"","sources":["../../src/fact/fact.abstract-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAE1F,gCAAgC;AAChC,8BAAsB,YAAY,CAAC,CAAC,SAAS,eAAe;IAK9C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAHxC,4BAA4B;IAC5B,SAAgB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEL,WAAW,EAAE,wBAAwB;IAGlE,gCAAgC;IACzB,QAAQ;CAMhB"}
@@ -0,0 +1,11 @@
1
+ import type { FactDefinitions } from '../../engine';
2
+ /**
3
+ * Operator facts that provide the current time
4
+ */
5
+ export interface CurrentTimeFacts extends FactDefinitions {
6
+ /**
7
+ * The current time as a timestamp
8
+ */
9
+ o3rCurrentTime: number;
10
+ }
11
+ //# sourceMappingURL=current-time.facts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"current-time.facts.d.ts","sourceRoot":"","sources":["../../../src/facts/current-time/current-time.facts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export * from './current-time.facts';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/facts/current-time/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './current-time/index';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/facts/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
@@ -1,14 +1,11 @@
1
- class RulesEngineServiceFixture {
1
+ /** Jasmine Fixture class for RulesEngineRunnerService */
2
+ class RulesEngineRunnerServiceFixture {
2
3
  constructor() {
3
4
  /** @inheritDoc */
4
5
  this.upsertFacts = jasmine.createSpy('upsertFacts');
5
6
  /** @inheritDoc */
6
7
  this.upsertOperators = jasmine.createSpy('upsertOperators');
7
8
  /** @inheritDoc */
8
- this.resolveUrlWithLang = jasmine.createSpy('resolveUrlWithLang');
9
- /** @inheritDoc */
10
- this.retrieveTemplate = jasmine.createSpy('retrieveTemplate');
11
- /** @inheritDoc */
12
9
  this.enableRuleSetFor = jasmine.createSpy('enableRuleSetFor');
13
10
  /** @inheritDoc */
14
11
  this.disableRuleSetFor = jasmine.createSpy('disableRuleSetFor');
@@ -19,5 +16,5 @@ class RulesEngineServiceFixture {
19
16
  * Generated bundle index. Do not edit.
20
17
  */
21
18
 
22
- export { RulesEngineServiceFixture };
19
+ export { RulesEngineRunnerServiceFixture };
23
20
  //# sourceMappingURL=o3r-rules-engine-fixtures-jasmine.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"o3r-rules-engine-fixtures-jasmine.mjs","sources":["../../src/fixtures/jasmine/rules-engine.service.fixture.jasmine.ts","../../src/fixtures/jasmine/o3r-rules-engine-fixtures-jasmine.ts"],"sourcesContent":["import type { RulesEngineService } from '@o3r/rules-engine';\n\nexport class RulesEngineServiceFixture implements Readonly<Partial<RulesEngineService>> {\n\n /** @inheritDoc */\n public upsertFacts: jasmine.Spy = jasmine.createSpy('upsertFacts');\n\n /** @inheritDoc */\n public upsertOperators: jasmine.Spy = jasmine.createSpy('upsertOperators');\n\n /** @inheritDoc */\n public resolveUrlWithLang: jasmine.Spy = jasmine.createSpy('resolveUrlWithLang');\n\n /** @inheritDoc */\n public retrieveTemplate: jasmine.Spy = jasmine.createSpy('retrieveTemplate');\n\n /** @inheritDoc */\n public enableRuleSetFor: jasmine.Spy = jasmine.createSpy('enableRuleSetFor');\n\n /** @inheritDoc */\n public disableRuleSetFor: jasmine.Spy = jasmine.createSpy('disableRuleSetFor');\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"MAEa,yBAAyB,CAAA;AAAtC,IAAA,WAAA,GAAA;;AAGS,QAAA,IAAA,CAAA,WAAW,GAAgB,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;;AAG5D,QAAA,IAAA,CAAA,eAAe,GAAgB,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;;AAGpE,QAAA,IAAA,CAAA,kBAAkB,GAAgB,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;;AAG1E,QAAA,IAAA,CAAA,gBAAgB,GAAgB,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;;AAGtE,QAAA,IAAA,CAAA,gBAAgB,GAAgB,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;;AAGtE,QAAA,IAAA,CAAA,iBAAiB,GAAgB,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;KAChF;AAAA;;ACrBD;;AAEG;;;;"}
1
+ {"version":3,"file":"o3r-rules-engine-fixtures-jasmine.mjs","sources":["../../src/fixtures/jasmine/rules-engine.runner.service.fixture.jasmine.ts","../../src/fixtures/jasmine/o3r-rules-engine-fixtures-jasmine.ts"],"sourcesContent":["import type { RulesEngineRunnerService } from '@o3r/rules-engine';\n\n/** Jasmine Fixture class for RulesEngineRunnerService */\nexport class RulesEngineRunnerServiceFixture implements Readonly<Partial<RulesEngineRunnerService>> {\n\n /** @inheritDoc */\n public upsertFacts: jasmine.Spy = jasmine.createSpy('upsertFacts');\n\n /** @inheritDoc */\n public upsertOperators: jasmine.Spy = jasmine.createSpy('upsertOperators');\n\n /** @inheritDoc */\n public enableRuleSetFor: jasmine.Spy = jasmine.createSpy('enableRuleSetFor');\n\n /** @inheritDoc */\n public disableRuleSetFor: jasmine.Spy = jasmine.createSpy('disableRuleSetFor');\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAEA;MACa,+BAA+B,CAAA;AAA5C,IAAA,WAAA,GAAA;;AAGS,QAAA,IAAA,CAAA,WAAW,GAAgB,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;;AAG5D,QAAA,IAAA,CAAA,eAAe,GAAgB,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;;AAGpE,QAAA,IAAA,CAAA,gBAAgB,GAAgB,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;;AAGtE,QAAA,IAAA,CAAA,iBAAiB,GAAgB,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;KAChF;AAAA;;AChBD;;AAEG;;;;"}
@@ -1,14 +1,11 @@
1
- class RulesEngineServiceFixture {
1
+ /** Jest Fixture class for RulesEngineRunnerService */
2
+ class RulesEngineRunnerServiceFixture {
2
3
  constructor() {
3
4
  /** @inheritDoc */
4
5
  this.upsertFacts = jest.fn();
5
6
  /** @inheritDoc */
6
7
  this.upsertOperators = jest.fn();
7
8
  /** @inheritDoc */
8
- this.resolveUrlWithLang = jest.fn();
9
- /** @inheritDoc */
10
- this.retrieveTemplate = jest.fn();
11
- /** @inheritDoc */
12
9
  this.enableRuleSetFor = jest.fn();
13
10
  /** @inheritDoc */
14
11
  this.disableRuleSetFor = jest.fn();
@@ -19,5 +16,5 @@ class RulesEngineServiceFixture {
19
16
  * Generated bundle index. Do not edit.
20
17
  */
21
18
 
22
- export { RulesEngineServiceFixture };
19
+ export { RulesEngineRunnerServiceFixture };
23
20
  //# sourceMappingURL=o3r-rules-engine-fixtures-jest.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"o3r-rules-engine-fixtures-jest.mjs","sources":["../../src/fixtures/jest/rules-engine.service.fixture.jest.ts","../../src/fixtures/jest/o3r-rules-engine-fixtures-jest.ts"],"sourcesContent":["import type {Fact, Operator, RulesEngineService, UnaryOperator} from '@o3r/rules-engine';\nimport {PlaceholderRequestReply} from '@o3r/components';\n\nexport class RulesEngineServiceFixture implements Readonly<Partial<RulesEngineService>> {\n\n /** @inheritDoc */\n public upsertFacts: jest.Mock<void, [Fact<unknown> | Fact<unknown>[]]> = jest.fn();\n\n /** @inheritDoc */\n public upsertOperators: jest.Mock<void, [(Operator<any, any> | UnaryOperator<any>)[]]> = jest.fn();\n\n /** @inheritDoc */\n public resolveUrlWithLang: jest.Mock<string, [string, string]> = jest.fn();\n\n /** @inheritDoc */\n public retrieveTemplate: jest.Mock<Promise<PlaceholderRequestReply>, [string]> = jest.fn();\n\n /** @inheritDoc */\n public enableRuleSetFor: jest.Mock<void, [string]> = jest.fn();\n\n /** @inheritDoc */\n public disableRuleSetFor: jest.Mock<void, [string]> = jest.fn();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"MAGa,yBAAyB,CAAA;AAAtC,IAAA,WAAA,GAAA;;AAGS,QAAA,IAAA,CAAA,WAAW,GAAuD,IAAI,CAAC,EAAE,EAAE,CAAC;;AAG5E,QAAA,IAAA,CAAA,eAAe,GAAmE,IAAI,CAAC,EAAE,EAAE,CAAC;;AAG5F,QAAA,IAAA,CAAA,kBAAkB,GAAwC,IAAI,CAAC,EAAE,EAAE,CAAC;;AAGpE,QAAA,IAAA,CAAA,gBAAgB,GAA0D,IAAI,CAAC,EAAE,EAAE,CAAC;;AAGpF,QAAA,IAAA,CAAA,gBAAgB,GAA8B,IAAI,CAAC,EAAE,EAAE,CAAC;;AAGxD,QAAA,IAAA,CAAA,iBAAiB,GAA8B,IAAI,CAAC,EAAE,EAAE,CAAC;KACjE;AAAA;;ACtBD;;AAEG;;;;"}
1
+ {"version":3,"file":"o3r-rules-engine-fixtures-jest.mjs","sources":["../../src/fixtures/jest/rules-engine.runner.service.fixture.jest.ts","../../src/fixtures/jest/o3r-rules-engine-fixtures-jest.ts"],"sourcesContent":["import type {Fact, Operator, RulesEngineRunnerService, UnaryOperator} from '@o3r/rules-engine';\n\n/** Jest Fixture class for RulesEngineRunnerService */\nexport class RulesEngineRunnerServiceFixture implements Readonly<Partial<RulesEngineRunnerService>> {\n\n /** @inheritDoc */\n public upsertFacts: jest.Mock<void, [Fact<unknown> | Fact<unknown>[]]> = jest.fn();\n\n /** @inheritDoc */\n public upsertOperators: jest.Mock<void, [(Operator<any, any> | UnaryOperator<any>)[]]> = jest.fn();\n\n /** @inheritDoc */\n public enableRuleSetFor: jest.Mock<void, [string]> = jest.fn();\n\n /** @inheritDoc */\n public disableRuleSetFor: jest.Mock<void, [string]> = jest.fn();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAEA;MACa,+BAA+B,CAAA;AAA5C,IAAA,WAAA,GAAA;;AAGS,QAAA,IAAA,CAAA,WAAW,GAAuD,IAAI,CAAC,EAAE,EAAE,CAAC;;AAG5E,QAAA,IAAA,CAAA,eAAe,GAAmE,IAAI,CAAC,EAAE,EAAE,CAAC;;AAG5F,QAAA,IAAA,CAAA,gBAAgB,GAA8B,IAAI,CAAC,EAAE,EAAE,CAAC;;AAGxD,QAAA,IAAA,CAAA,iBAAiB,GAA8B,IAAI,CAAC,EAAE,EAAE,CAAC;KACjE;AAAA;;AChBD;;AAEG;;;;"}