@o3r/components 10.3.0-prerelease.13 → 10.3.0-prerelease.14

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.
@@ -1,11 +1,11 @@
1
- import { inject, Injectable, Optional } from '@angular/core';
2
- import { LoggerService } from '@o3r/logger';
3
- import { combineLatest, distinctUntilChanged, firstValueFrom, map, of, Subject, Subscription, withLatestFrom } from 'rxjs';
4
- import { deletePlaceholderTemplateEntity, selectPlaceholderRequestEntities, selectPlaceholderTemplateEntities, setPlaceholderRequestEntityFromUrl, setPlaceholderTemplateEntity, updatePlaceholderRequestEntity } from '@o3r/components';
1
+ import { Injectable, Injector, Optional } from '@angular/core';
5
2
  import { select, Store } from '@ngrx/store';
3
+ import { deletePlaceholderTemplateEntity, selectPlaceholderRequestEntities, selectPlaceholderTemplateEntities, setPlaceholderRequestEntityFromUrl, setPlaceholderTemplateEntity, updatePlaceholderRequestEntity } from '@o3r/components';
4
+ import { DynamicContentService } from '@o3r/dynamic-content';
6
5
  import { LocalizationService } from '@o3r/localization';
6
+ import { LoggerService } from '@o3r/logger';
7
+ import { combineLatest, distinctUntilChanged, firstValueFrom, map, of, startWith, Subject, Subscription, withLatestFrom } from 'rxjs';
7
8
  import { RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE } from './placeholder.interfaces';
8
- import { DynamicContentService } from '@o3r/dynamic-content';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "@ngrx/store";
11
11
  import * as i2 from "@o3r/logger";
@@ -14,14 +14,18 @@ import * as i3 from "@o3r/localization";
14
14
  * Service to handle async PlaceholderTemplate actions
15
15
  */
16
16
  export class PlaceholderRulesEngineActionHandler {
17
- constructor(store, logger, translateService) {
17
+ constructor(store, logger, injector, translateService) {
18
18
  this.logger = logger;
19
+ this.injector = injector;
19
20
  this.subscription = new Subscription();
20
21
  this.placeholdersActions$ = new Subject();
21
22
  /** @inheritdoc */
22
23
  this.supportingActions = [RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE];
23
- const lang$ = translateService ? translateService.getTranslateService().onLangChange.pipe(map(({ lang }) => lang), distinctUntilChanged()) : of(null);
24
- const filteredActions$ = combineLatest([lang$, this.placeholdersActions$.pipe(distinctUntilChanged((prev, next) => JSON.stringify(prev) === JSON.stringify(next)))]).pipe(withLatestFrom(combineLatest([store.pipe(select(selectPlaceholderTemplateEntities)), store.pipe(select(selectPlaceholderRequestEntities))])), map(([langAndTemplatesUrls, storedPlaceholdersAndRequests]) => {
24
+ const lang$ = translateService ? translateService.getTranslateService().onLangChange.pipe(map(({ lang }) => lang), startWith(translateService.getCurrentLanguage()), distinctUntilChanged()) : of(null);
25
+ const filteredActions$ = combineLatest([
26
+ lang$,
27
+ this.placeholdersActions$.pipe(distinctUntilChanged((prev, next) => JSON.stringify(prev) === JSON.stringify(next)))
28
+ ]).pipe(withLatestFrom(combineLatest([store.pipe(select(selectPlaceholderTemplateEntities)), store.pipe(select(selectPlaceholderRequestEntities))])), map(([langAndTemplatesUrls, storedPlaceholdersAndRequests]) => {
25
29
  const [lang, placeholderActions] = langAndTemplatesUrls;
26
30
  const storedPlaceholders = storedPlaceholdersAndRequests[0] || {};
27
31
  const storedPlaceholderRequests = storedPlaceholdersAndRequests[1] || {};
@@ -126,7 +130,7 @@ export class PlaceholderRulesEngineActionHandler {
126
130
  * @param url
127
131
  */
128
132
  async retrieveTemplate(url) {
129
- const resolvedUrl$ = inject(DynamicContentService, { optional: true })?.getContentPathStream(url) || of(url);
133
+ const resolvedUrl$ = this.injector.get(DynamicContentService, null, { optional: true })?.getContentPathStream(url) || of(url);
130
134
  const fullUrl = await firstValueFrom(resolvedUrl$);
131
135
  return fetch(fullUrl).then((response) => response.json());
132
136
  }
@@ -143,12 +147,12 @@ export class PlaceholderRulesEngineActionHandler {
143
147
  ngOnDestroy() {
144
148
  this.subscription.unsubscribe();
145
149
  }
146
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PlaceholderRulesEngineActionHandler, deps: [{ token: i1.Store }, { token: i2.LoggerService }, { token: i3.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
150
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PlaceholderRulesEngineActionHandler, deps: [{ token: i1.Store }, { token: i2.LoggerService }, { token: i0.Injector }, { token: i3.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
147
151
  /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PlaceholderRulesEngineActionHandler }); }
148
152
  }
149
153
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PlaceholderRulesEngineActionHandler, decorators: [{
150
154
  type: Injectable
151
- }], ctorParameters: () => [{ type: i1.Store }, { type: i2.LoggerService }, { type: i3.LocalizationService, decorators: [{
155
+ }], ctorParameters: () => [{ type: i1.Store }, { type: i2.LoggerService }, { type: i0.Injector }, { type: i3.LocalizationService, decorators: [{
152
156
  type: Optional
153
157
  }] }] });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuYWN0aW9uLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMtZW5naW5lL3BsYWNlaG9sZGVyLmFjdGlvbi1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0gsT0FBTyxFQUNMLCtCQUErQixFQUcvQixnQ0FBZ0MsRUFDaEMsaUNBQWlDLEVBQ2pDLGtDQUFrQyxFQUNsQyw0QkFBNEIsRUFDNUIsOEJBQThCLEVBQy9CLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFnQywyQ0FBMkMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUU3RDs7R0FFRztBQUVILE1BQU0sT0FBTyxtQ0FBbUM7SUFTOUMsWUFBWSxLQUFzQyxFQUFtQixNQUFxQixFQUFjLGdCQUFzQztRQUF6RSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBUGhGLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVsQyx5QkFBb0IsR0FBZ0YsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUU1SCxrQkFBa0I7UUFDRixzQkFBaUIsR0FBRyxDQUFDLDJDQUEyQyxDQUFV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QUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7O09BR0c7SUFDTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBVztRQUMxQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0csTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsY0FBYyxDQUFDLE9BQXVDO1FBQzNELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1lBQ25DLFdBQVcsRUFBRSxNQUFNLENBQUMsS0FBSztZQUN6QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDO1NBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsV0FBVztRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7aUlBckpVLG1DQUFtQztxSUFBbkMsbUNBQW1DOzsyRkFBbkMsbUNBQW1DO2tCQUQvQyxVQUFVOzswQkFVb0YsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBSdWxlc0VuZ2luZUFjdGlvbkhhbmRsZXIgfSBmcm9tICdAbzNyL2NvcmUnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJ0BvM3IvbG9nZ2VyJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaXJzdFZhbHVlRnJvbSwgbWFwLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVsZXRlUGxhY2Vob2xkZXJUZW1wbGF0ZUVudGl0eSxcbiAgUGxhY2Vob2xkZXJSZXF1ZXN0UmVwbHksXG4gIFBsYWNlaG9sZGVyVGVtcGxhdGVTdG9yZSxcbiAgc2VsZWN0UGxhY2Vob2xkZXJSZXF1ZXN0RW50aXRpZXMsXG4gIHNlbGVjdFBsYWNlaG9sZGVyVGVtcGxhdGVFbnRpdGllcyxcbiAgc2V0UGxhY2Vob2xkZXJSZXF1ZXN0RW50aXR5RnJvbVVybCxcbiAgc2V0UGxhY2Vob2xkZXJUZW1wbGF0ZUVudGl0eSxcbiAgdXBkYXRlUGxhY2Vob2xkZXJSZXF1ZXN0RW50aXR5XG59IGZyb20gJ0BvM3IvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BvM3IvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7IEFjdGlvblVwZGF0ZVBsYWNlaG9sZGVyQmxvY2ssIFJVTEVTX0VOR0lORV9QTEFDRUhPTERFUl9VUERBVEVfQUNUSU9OX1RZUEUgfSBmcm9tICcuL3BsYWNlaG9sZGVyLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRHluYW1pY0NvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnQG8zci9keW5hbWljLWNvbnRlbnQnO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gaGFuZGxlIGFzeW5jIFBsYWNlaG9sZGVyVGVtcGxhdGUgYWN0aW9uc1xuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGxhY2Vob2xkZXJSdWxlc0VuZ2luZUFjdGlvbkhhbmRsZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIFJ1bGVzRW5naW5lQWN0aW9uSGFuZGxlcjxBY3Rpb25VcGRhdGVQbGFjZWhvbGRlckJsb2NrPiB7XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcm90ZWN0ZWQgcGxhY2Vob2xkZXJzQWN0aW9ucyQ6IFN1YmplY3Q8eyBwbGFjZWhvbGRlcklkOiBzdHJpbmc7IHRlbXBsYXRlVXJsOiBzdHJpbmc7IHByaW9yaXR5OiBudW1iZXIgfVtdPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHB1YmxpYyByZWFkb25seSBzdXBwb3J0aW5nQWN0aW9ucyA9IFtSVUxFU19FTkdJTkVfUExBQ0VIT0xERVJfVVBEQVRFX0FDVElPTl9UWVBFXSBhcyBjb25zdDtcblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmU8UGxhY2Vob2xkZXJUZW1wbGF0ZVN0b3JlPiwgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIEBPcHRpb25hbCgpIHRyYW5zbGF0ZVNlcnZpY2U/OiBMb2NhbGl6YXRpb25TZXJ2aWNlKSB7XG5cbiAgICBjb25zdCBsYW5nJCA9IHRyYW5zbGF0ZVNlcnZpY2UgPyB0cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0ZVNlcnZpY2UoKS5vbkxhbmdDaGFuZ2UucGlwZShcbiAgICAgIG1hcCgoeyBsYW5nIH0pID0+IGxhbmcpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICkgOiBvZihudWxsKTtcblxuICAgIGNvbnN0IGZpbHRlcmVkQWN0aW9ucyQgPSBjb21iaW5lTGF0ZXN0KFtsYW5nJCwgdGhpcy5wbGFjZWhvbGRlcnNBY3Rpb25zJC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIG5leHQpID0+IEpTT04uc3RyaW5naWZ5KHByZXYpID09PSBKU09OLnN0cmluZ2lmeShuZXh0KSkpXSkucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICBjb21iaW5lTGF0ZXN0KFtzdG9yZS5waXBlKHNlbGVjdChzZWxlY3RQbGFjZWhvbGRlclRlbXBsYXRlRW50aXRpZXMpKSwgc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0UGxhY2Vob2xkZXJSZXF1ZXN0RW50aXRpZXMpKV0pXG4gICAgICApLFxuICAgICAgbWFwKChbbGFuZ0FuZFRlbXBsYXRlc1VybHMsIHN0b3JlZFBsYWNlaG9sZGVyc0FuZFJlcXVlc3RzXSkgPT4ge1xuICAgICAgICBjb25zdCBbbGFuZywgcGxhY2Vob2xkZXJBY3Rpb25zXSA9IGxhbmdBbmRUZW1wbGF0ZXNVcmxzO1xuICAgICAgICBjb25zdCBzdG9yZWRQbGFjZWhvbGRlcnMgPSBzdG9yZWRQbGFjZWhvbGRlcnNBbmRSZXF1ZXN0c1swXSB8fCB7fTtcbiAgICAgICAgY29uc3Qgc3RvcmVkUGxhY2Vob2xkZXJSZXF1ZXN0cyA9IHN0b3JlZFBsYWNlaG9sZGVyc0FuZFJlcXVlc3RzWzFdIHx8IHt9O1xuICAgICAgICBjb25zdCBwbGFjZWhvbGRlck5ld1JlcXVlc3RzOiB7IHJhd1VybDogc3RyaW5nOyByZXNvbHZlZFVybDogc3RyaW5nIH1bXSA9IFtdO1xuICAgICAgICAvLyBTdG9yZXMgYWxsIHJhdyBVcmxzIHVzZWQgZnJvbSB0aGUgY3VycmVudCBlbmdpbmUgZXhlY3V0aW9uXG4gICAgICAgIGNvbnN0IHVzZWRVcmxzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuICAgICAgICAvLyBHZXQgYWxsIFVybHMgdGhhdCBuZWVkcyB0byBiZSByZXNvbHZlZCBmcm9tIGN1cnJlbnQgcnVsZXMgZW5naW5lIG91dHB1dFxuICAgICAgICBjb25zdCBwbGFjZWhvbGRlcnNUZW1wbGF0ZXMgPSBwbGFjZWhvbGRlckFjdGlvbnMucmVkdWNlKChhY2MsIHBsYWNlaG9sZGVyQWN0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJzVGVtcGxhdGVVcmwgPSB7XG4gICAgICAgICAgICByYXdVcmw6IHBsYWNlaG9sZGVyQWN0aW9uLnRlbXBsYXRlVXJsLFxuICAgICAgICAgICAgcHJpb3JpdHk6IHBsYWNlaG9sZGVyQWN0aW9uLnByaW9yaXR5XG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoYWNjW3BsYWNlaG9sZGVyQWN0aW9uLnBsYWNlaG9sZGVySWRdKSB7XG4gICAgICAgICAgICBhY2NbcGxhY2Vob2xkZXJBY3Rpb24ucGxhY2Vob2xkZXJJZF0ucHVzaChwbGFjZWhvbGRlcnNUZW1wbGF0ZVVybCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjY1twbGFjZWhvbGRlckFjdGlvbi5wbGFjZWhvbGRlcklkXSA9IFtwbGFjZWhvbGRlcnNUZW1wbGF0ZVVybF07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlVXJsV2l0aExhbmcocGxhY2Vob2xkZXJBY3Rpb24udGVtcGxhdGVVcmwsIGxhbmcpO1xuICAgICAgICAgIC8vIEZpbHRlcnMgZHVwbGljYXRlcyBhbmQgcmVzb2x2ZWQgdXJscyB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBzdG9yZVxuICAgICAgICAgIGlmICghdXNlZFVybHNbcGxhY2Vob2xkZXJBY3Rpb24udGVtcGxhdGVVcmxdICYmICghc3RvcmVkUGxhY2Vob2xkZXJSZXF1ZXN0c1twbGFjZWhvbGRlckFjdGlvbi50ZW1wbGF0ZVVybF1cbiAgICAgICAgICAgIHx8IHN0b3JlZFBsYWNlaG9sZGVyUmVxdWVzdHNbcGxhY2Vob2xkZXJBY3Rpb24udGVtcGxhdGVVcmxdIS5yZXNvbHZlZFVybCAhPT0gcmVzb2x2ZWRVcmwpKSB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlck5ld1JlcXVlc3RzLnB1c2goe1xuICAgICAgICAgICAgICByYXdVcmw6IHBsYWNlaG9sZGVyQWN0aW9uLnRlbXBsYXRlVXJsLFxuICAgICAgICAgICAgICByZXNvbHZlZFVybDogdGhpcy5yZXNvbHZlVXJsV2l0aExhbmcocGxhY2Vob2xkZXJBY3Rpb24udGVtcGxhdGVVcmwsIGxhbmcpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdXNlZFVybHNbcGxhY2Vob2xkZXJBY3Rpb24udGVtcGxhdGVVcmxdID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSBhcyB7IFtrZXk6IHN0cmluZ106IHsgcmF3VXJsOiBzdHJpbmc7IHByaW9yaXR5OiBudW1iZXIgfVtdIH0pO1xuICAgICAgICAvLyBVcmxzIG5vdCB1c2VkIGFueW1vcmUgYW5kIG5vdCBhbHJlYWR5IGRpc2FibGVkXG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyUmVxdWVzdHNUb0Rpc2FibGU6IHN0cmluZ1tdID0gW107XG4gICAgICAgIC8vIFVybHMgdXNlZCB0aGF0IHdlcmUgZGlzYWJsZWRcbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJSZXF1ZXN0c1RvRW5hYmxlOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBPYmplY3Qua2V5cyhzdG9yZWRQbGFjZWhvbGRlclJlcXVlc3RzKS5mb3JFYWNoKChzdG9yZWRQbGFjZWhvbGRlclJlcXVlc3RSYXdVcmwpID0+IHtcbiAgICAgICAgICBjb25zdCB1c2VkRnJvbUVuZ2luZUl0ZXJhdGlvbiA9IHVzZWRVcmxzW3N0b3JlZFBsYWNlaG9sZGVyUmVxdWVzdFJhd1VybF07XG4gICAgICAgICAgY29uc3QgdXNlZEZyb21TdG9yZSA9IChzdG9yZWRQbGFjZWhvbGRlclJlcXVlc3RzICYmIHN0b3JlZFBsYWNlaG9sZGVyUmVxdWVzdHNbc3RvcmVkUGxhY2Vob2xkZXJSZXF1ZXN0UmF3VXJsXSkgPyBzdG9yZWRQbGFjZWhvbGRlclJlcXVlc3RzW3N0b3JlZFBsYWNlaG9sZGVyUmVxdWVzdFJhd1VybF0hLnVzZWQgOiBmYWxzZTtcbiAgICAgICAgICBpZiAoIXVzZWRGcm9tRW5naW5lSXRlcmF0aW9uICYmIHVzZWRGcm9tU3RvcmUpIHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyUmVxdWVzdHNUb0Rpc2FibGUucHVzaChzdG9yZWRQbGFjZWhvbGRlclJlcXVlc3RSYXdVcmwpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodXNlZEZyb21FbmdpbmVJdGVyYXRpb24gJiYgIXVzZWRGcm9tU3RvcmUpIHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyUmVxdWVzdHNUb0VuYWJsZS5wdXNoKHN0b3JlZFBsYWNlaG9sZGVyUmVxdWVzdFJhd1VybCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gUGxhY2Vob2xkZXIgdGhhdCBhcmUgbm8gbG9uZ2VyIGZpbGxlZCBieSB0aGUgY3VycmVudCBlbmdpbmUgZXhlY3V0aW9uIG91dHB1dCB3aWxsIGJlIGNsZWFyZWRcbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJzVGVtcGxhdGVzVG9CZUNsZWFuZWRVcCA9IE9iamVjdC5rZXlzKHN0b3JlZFBsYWNlaG9sZGVycylcbiAgICAgICAgICAuZmlsdGVyKHBsYWNlaG9sZGVySWQgPT4gIXBsYWNlaG9sZGVyc1RlbXBsYXRlc1twbGFjZWhvbGRlcklkXSk7XG5cbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJzVGVtcGxhdGVzVG9CZVNldCA9IE9iamVjdC5rZXlzKHBsYWNlaG9sZGVyc1RlbXBsYXRlcykucmVkdWNlKChjaGFuZ2VkUGxhY2Vob2xkZXJUZW1wbGF0ZXMsIHBsYWNlaG9sZGVyVGVtcGxhdGVJZCkgPT4ge1xuICAgICAgICAgIC8vIENhY2hpbmcgaWYgdGhlIHBsYWNlaG9sZGVyIHRlbXBsYXRlIGFscmVhZHkgZXhpc3RzIHdpdGggdGhlIHNhbWUgdXJsc1xuICAgICAgICAgIGlmICghc3RvcmVkUGxhY2Vob2xkZXJzW3BsYWNlaG9sZGVyVGVtcGxhdGVJZF0gfHxcbiAgICAgICAgICAgICEoSlNPTi5zdHJpbmdpZnkoc3RvcmVkUGxhY2Vob2xkZXJzW3BsYWNlaG9sZGVyVGVtcGxhdGVJZF0hLnVybHNXaXRoUHJpb3JpdHkpID09PSBKU09OLnN0cmluZ2lmeShwbGFjZWhvbGRlcnNUZW1wbGF0ZXNbcGxhY2Vob2xkZXJUZW1wbGF0ZUlkXSkpKSB7XG4gICAgICAgICAgICBjaGFuZ2VkUGxhY2Vob2xkZXJUZW1wbGF0ZXMucHVzaCh7XG4gICAgICAgICAgICAgIGlkOiBwbGFjZWhvbGRlclRlbXBsYXRlSWQsXG4gICAgICAgICAgICAgIHVybHNXaXRoUHJpb3JpdHk6IHBsYWNlaG9sZGVyc1RlbXBsYXRlc1twbGFjZWhvbGRlclRlbXBsYXRlSWRdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNoYW5nZWRQbGFjZWhvbGRlclRlbXBsYXRlcztcbiAgICAgICAgfSwgW10gYXMgeyBpZDogc3RyaW5nOyB1cmxzV2l0aFByaW9yaXR5OiB7IHJhd1VybDogc3RyaW5nOyBwcmlvcml0eTogbnVtYmVyIH1bXSB9W10pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBsYWNlaG9sZGVyc1RlbXBsYXRlc1RvQmVDbGVhbmVkVXAsXG4gICAgICAgICAgcGxhY2Vob2xkZXJSZXF1ZXN0c1RvRGlzYWJsZSxcbiAgICAgICAgICBwbGFjZWhvbGRlclJlcXVlc3RzVG9FbmFibGUsXG4gICAgICAgICAgcGxhY2Vob2xkZXJzVGVtcGxhdGVzVG9CZVNldCxcbiAgICAgICAgICBwbGFjZWhvbGRlck5ld1JlcXVlc3RzXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKGZpbHRlcmVkQWN0aW9ucyQuc3Vic2NyaWJlKChwbGFjZWhvbGRlcnNVcGRhdGVzKSA9PiB7XG4gICAgICBwbGFjZWhvbGRlcnNVcGRhdGVzLnBsYWNlaG9sZGVyc1RlbXBsYXRlc1RvQmVDbGVhbmVkVXAuZm9yRWFjaChwbGFjZWhvbGRlcklkID0+XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKGRlbGV0ZVBsYWNlaG9sZGVyVGVtcGxhdGVFbnRpdHkoe1xuICAgICAgICAgIGlkOiBwbGFjZWhvbGRlcklkXG4gICAgICAgIH0pKVxuICAgICAgKTtcbiAgICAgIHBsYWNlaG9sZGVyc1VwZGF0ZXMucGxhY2Vob2xkZXJzVGVtcGxhdGVzVG9CZVNldC5mb3JFYWNoKHBsYWNlaG9sZGVyc1RlbXBsYXRlVG9CZVNldCA9PiB7XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKHNldFBsYWNlaG9sZGVyVGVtcGxhdGVFbnRpdHkoeyBlbnRpdHk6IHBsYWNlaG9sZGVyc1RlbXBsYXRlVG9CZVNldCB9KSk7XG4gICAgICB9KTtcbiAgICAgIHBsYWNlaG9sZGVyc1VwZGF0ZXMucGxhY2Vob2xkZXJSZXF1ZXN0c1RvRGlzYWJsZS5mb3JFYWNoKHBsYWNlaG9sZGVyUmVxdWVzdFRvRGlzYWJsZSA9PiB7XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKHVwZGF0ZVBsYWNlaG9sZGVyUmVxdWVzdEVudGl0eSh7IGVudGl0eTogeyBpZDogcGxhY2Vob2xkZXJSZXF1ZXN0VG9EaXNhYmxlLCB1c2VkOiBmYWxzZSB9IH0pKTtcbiAgICAgIH0pO1xuICAgICAgcGxhY2Vob2xkZXJzVXBkYXRlcy5wbGFjZWhvbGRlclJlcXVlc3RzVG9FbmFibGUuZm9yRWFjaChwbGFjZWhvbGRlclJlcXVlc3RUb0VuYWJsZSA9PiB7XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKHVwZGF0ZVBsYWNlaG9sZGVyUmVxdWVzdEVudGl0eSh7IGVudGl0eTogeyBpZDogcGxhY2Vob2xkZXJSZXF1ZXN0VG9FbmFibGUsIHVzZWQ6IHRydWUgfSB9KSk7XG4gICAgICB9KTtcbiAgICAgIHBsYWNlaG9sZGVyc1VwZGF0ZXMucGxhY2Vob2xkZXJOZXdSZXF1ZXN0cy5mb3JFYWNoKHBsYWNlaG9sZGVyTmV3UmVxdWVzdCA9PiB7XG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKHNldFBsYWNlaG9sZGVyUmVxdWVzdEVudGl0eUZyb21Vcmwoe1xuICAgICAgICAgIHJlc29sdmVkVXJsOiBwbGFjZWhvbGRlck5ld1JlcXVlc3QucmVzb2x2ZWRVcmwsXG4gICAgICAgICAgaWQ6IHBsYWNlaG9sZGVyTmV3UmVxdWVzdC5yYXdVcmwsXG4gICAgICAgICAgY2FsbDogdGhpcy5yZXRyaWV2ZVRlbXBsYXRlKHBsYWNlaG9sZGVyTmV3UmVxdWVzdC5yZXNvbHZlZFVybClcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvY2FsaXplIHRoZSB1cmwsIHJlcGxhY2luZyB0aGUgbGFuZ3VhZ2UgbWFya2VyXG4gICAqIEBwYXJhbSB1cmxcbiAgICogQHBhcmFtIGxhbmd1YWdlXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb2x2ZVVybFdpdGhMYW5nKHVybDogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKCFsYW5ndWFnZSAmJiB1cmwuaW5jbHVkZXMoJ1tMQU5HVUFHRV0nKSkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihgTWlzc2luZyBsYW5ndWFnZSB3aGVuIHRyeWluZyB0byByZXNvbHZlICR7dXJsfWApO1xuICAgIH1cbiAgICByZXR1cm4gbGFuZ3VhZ2UgPyB1cmwucmVwbGFjZSgvXFxbTEFOR1VBR0VdL2csIGxhbmd1YWdlKSA6IHVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0ZW1wbGF0ZSBhcyBqc29uIGZyb20gYSBnaXZlbiB1cmxcbiAgICogQHBhcmFtIHVybFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHJldHJpZXZlVGVtcGxhdGUodXJsOiBzdHJpbmcpOiBQcm9taXNlPFBsYWNlaG9sZGVyUmVxdWVzdFJlcGx5PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRVcmwkID0gaW5qZWN0KER5bmFtaWNDb250ZW50U2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KT8uZ2V0Q29udGVudFBhdGhTdHJlYW0odXJsKSB8fCBvZih1cmwpO1xuICAgIGNvbnN0IGZ1bGxVcmwgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShyZXNvbHZlZFVybCQpO1xuICAgIHJldHVybiBmZXRjaChmdWxsVXJsKS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuanNvbigpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwdWJsaWMgZXhlY3V0ZUFjdGlvbnMoYWN0aW9uczogQWN0aW9uVXBkYXRlUGxhY2Vob2xkZXJCbG9ja1tdKSB7XG4gICAgY29uc3QgdGVtcGxhdGVzID0gYWN0aW9ucy5tYXAoKGFjdGlvbikgPT4gKHtcbiAgICAgIHBsYWNlaG9sZGVySWQ6IGFjdGlvbi5wbGFjZWhvbGRlcklkLFxuICAgICAgdGVtcGxhdGVVcmw6IGFjdGlvbi52YWx1ZSxcbiAgICAgIHByaW9yaXR5OiBhY3Rpb24ucHJpb3JpdHkgfHwgMFxuICAgIH0pKTtcblxuICAgIHRoaXMucGxhY2Vob2xkZXJzQWN0aW9ucyQubmV4dCh0ZW1wbGF0ZXMpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuYWN0aW9uLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcnVsZXMtZW5naW5lL3BsYWNlaG9sZGVyLmFjdGlvbi1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLEVBQ0wsK0JBQStCLEVBRy9CLGdDQUFnQyxFQUNoQyxpQ0FBaUMsRUFDakMsa0NBQWtDLEVBQ2xDLDRCQUE0QixFQUM1Qiw4QkFBOEIsRUFDL0IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RJLE9BQU8sRUFBZ0MsMkNBQTJDLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFFckg7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUNBQW1DO0lBUzlDLFlBQ0UsS0FBc0MsRUFDckIsTUFBcUIsRUFDckIsUUFBa0IsRUFDdkIsZ0JBQXNDO1FBRmpDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVYzQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbEMseUJBQW9CLEdBQWdGLElBQUksT0FBTyxFQUFFLENB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OzJGQUFuQyxtQ0FBbUM7a0JBRC9DLFVBQVU7OzBCQWNOLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgT25EZXN0cm95LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB0eXBlIHsgUnVsZXNFbmdpbmVBY3Rpb25IYW5kbGVyIH0gZnJvbSAnQG8zci9jb3JlJztcbmltcG9ydCB7XG4gIGRlbGV0ZVBsYWNlaG9sZGVyVGVtcGxhdGVFbnRpdHksXG4gIFBsYWNlaG9sZGVyUmVxdWVzdFJlcGx5LFxuICBQbGFjZWhvbGRlclRlbXBsYXRlU3RvcmUsXG4gIHNlbGVjdFBsYWNlaG9sZGVyUmVxdWVzdEVudGl0aWVzLFxuICBzZWxlY3RQbGFjZWhvbGRlclRlbXBsYXRlRW50aXRpZXMsXG4gIHNldFBsYWNlaG9sZGVyUmVxdWVzdEVudGl0eUZyb21VcmwsXG4gIHNldFBsYWNlaG9sZGVyVGVtcGxhdGVFbnRpdHksXG4gIHVwZGF0ZVBsYWNlaG9sZGVyUmVxdWVzdEVudGl0eVxufSBmcm9tICdAbzNyL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgRHluYW1pY0NvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnQG8zci9keW5hbWljLWNvbnRlbnQnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BvM3IvbG9jYWxpemF0aW9uJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICdAbzNyL2xvZ2dlcic7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlyc3RWYWx1ZUZyb20sIG1hcCwgb2YsIHN0YXJ0V2l0aCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWN0aW9uVXBkYXRlUGxhY2Vob2xkZXJCbG9jaywgUlVMRVNfRU5HSU5FX1BMQUNFSE9MREVSX1VQREFURV9BQ1RJT05fVFlQRSB9IGZyb20gJy4vcGxhY2Vob2xkZXIuaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogU2VydmljZSB0byBoYW5kbGUgYXN5bmMgUGxhY2Vob2xkZXJUZW1wbGF0ZSBhY3Rpb25zXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQbGFjZWhvbGRlclJ1bGVzRW5naW5lQWN0aW9uSGFuZGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSwgUnVsZXNFbmdpbmVBY3Rpb25IYW5kbGVyPEFjdGlvblVwZGF0ZVBsYWNlaG9sZGVyQmxvY2s+IHtcblxuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByb3RlY3RlZCBwbGFjZWhvbGRlcnNBY3Rpb25zJDogU3ViamVjdDx7IHBsYWNlaG9sZGVySWQ6IHN0cmluZzsgdGVtcGxhdGVVcmw6IHN0cmluZzsgcHJpb3JpdHk6IG51bWJlciB9W10+ID0gbmV3IFN1YmplY3QoKTtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRpbmdBY3Rpb25zID0gW1JVTEVTX0VOR0lORV9QTEFDRUhPTERFUl9VUERBVEVfQUNUSU9OX1RZUEVdIGFzIGNvbnN0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0b3JlOiBTdG9yZTxQbGFjZWhvbGRlclRlbXBsYXRlU3RvcmU+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIHRyYW5zbGF0ZVNlcnZpY2U/OiBMb2NhbGl6YXRpb25TZXJ2aWNlXG4gICkge1xuXG4gICAgY29uc3QgbGFuZyQgPSB0cmFuc2xhdGVTZXJ2aWNlID8gdHJhbnNsYXRlU2VydmljZS5nZXRUcmFuc2xhdGVTZXJ2aWNlKCkub25MYW5nQ2hhbmdlLnBpcGUoXG4gICAgICBtYXAoKHsgbGFuZyB9KSA9PiBsYW5nKSxcbiAgICAgIHN0YXJ0V2l0aCh0cmFuc2xhdGVTZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApIDogb2YobnVsbCk7XG5cbiAgICBjb25zdCBmaWx0ZXJlZEFjdGlvbnMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICBsYW5nJCxcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJzQWN0aW9ucyQucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIG5leHQpID0+IEpTT04uc3RyaW5naWZ5KHByZXYpID09PSBKU09OLnN0cmluZ2lmeShuZXh0KSlcbiAgICAgIClcbiAgICBdKS5waXBlKFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3N0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdFBsYWNlaG9sZGVyVGVtcGxhdGVFbnRpdGllcykpLCBzdG9yZS5waXBlKHNlbGVjdChzZWxlY3RQbGFjZWhvbGRlclJlcXVlc3RFbnRpdGllcykpXSlcbiAgICAgICksXG4gICAgICBtYXAoKFtsYW5nQW5kVGVtcGxhdGVzVXJscywgc3RvcmVkUGxhY2Vob2xkZXJzQW5kUmVxdWVzdHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IFtsYW5nLCBwbGFjZWhvbGRlckFjdGlvbnNdID0gbGFuZ0FuZFRlbXBsYXRlc1VybHM7XG4gICAgICAgIGNvbnN0IHN0b3JlZFBsYWNlaG9sZGVycyA9IHN0b3JlZFBsYWNlaG9sZGVyc0FuZFJlcXVlc3RzWzBdIHx8IHt9O1xuICAgICAgICBjb25zdCBzdG9yZWRQbGFjZWhvbGRlclJlcXVlc3RzID0gc3RvcmVkUGxhY2Vob2xkZXJzQW5kUmVxdWVzdHNbMV0gfHwge307XG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyTmV3UmVxdWVzdHM6IHsgcmF3VXJsOiBzdHJpbmc7IHJlc29sdmVkVXJsOiBzdHJpbmcgfVtdID0gW107XG4gICAgICAgIC8vIFN0b3JlcyBhbGwgcmF3IFVybHMgdXNlZCBmcm9tIHRoZSBjdXJyZW50IGVuZ2luZSBleGVjdXRpb25cbiAgICAgICAgY29uc3QgdXNlZFVybHM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gICAgICAgIC8vIEdldCBhbGwgVXJscyB0aGF0IG5lZWRzIHRvIGJlIHJlc29sdmVkIGZyb20gY3VycmVudCBydWxlcyBlbmdpbmUgb3V0cHV0XG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyc1RlbXBsYXRlcyA9IHBsYWNlaG9sZGVyQWN0aW9ucy5yZWR1Y2UoKGFjYywgcGxhY2Vob2xkZXJBY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlcnNUZW1wbGF0ZVVybCA9IHtcbiAgICAgICAgICAgIHJhd1VybDogcGxhY2Vob2xkZXJBY3Rpb24udGVtcGxhdGVVcmwsXG4gICAgICAgICAgICBwcmlvcml0eTogcGxhY2Vob2xkZXJBY3Rpb24ucHJpb3JpdHlcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChhY2NbcGxhY2Vob2xkZXJBY3Rpb24ucGxhY2Vob2xkZXJJZF0pIHtcbiAgICAgICAgICAgIGFjY1twbGFjZWhvbGRlckFjdGlvbi5wbGFjZWhvbGRlcklkXS5wdXNoKHBsYWNlaG9sZGVyc1RlbXBsYXRlVXJsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWNjW3BsYWNlaG9sZGVyQWN0aW9uLnBsYWNlaG9sZGVySWRdID0gW3BsYWNlaG9sZGVyc1RlbXBsYXRlVXJsXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSB0aGlzLnJlc29sdmVVcmxXaXRoTGFuZyhwbGFjZWhvbGRlckFjdGlvbi50ZW1wbGF0ZVVybCwgbGFuZyk7XG4gICAgICAgICAgLy8gRmlsdGVycyBkdXBsaWNhdGVzIGFuZCByZXNvbHZlZCB1cmxzIHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIHN0b3JlXG4gICAgICAgICAgaWYgKCF1c2VkVXJsc1twbGFjZWhvbGRlckFjdGlvbi50ZW1wbGF0ZVVybF0gJiYgKCFzdG9yZWRQbGFjZWhvbGRlclJlcXVlc3RzW3BsYWNlaG9sZGVyQWN0aW9uLnRlbXBsYXRlVXJsXVxuICAgICAgICAgICAgfHwgc3RvcmVkUGxhY2Vob2xkZXJSZXF1ZXN0c1twbGFjZWhvbGRlckFjdGlvbi50ZW1wbGF0ZVVybF0hLnJlc29sdmVkVXJsICE9PSByZXNvbHZlZFVybCkpIHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyTmV3UmVxdWVzdHMucHVzaCh7XG4gICAgICAgICAgICAgIHJhd1VybDogcGxhY2Vob2xkZXJBY3Rpb24udGVtcGxhdGVVcmwsXG4gICAgICAgICAgICAgIHJlc29sdmVkVXJsOiB0aGlzLnJlc29sdmVVcmxXaXRoTGFuZyhwbGFjZWhvbGRlckFjdGlvbi50ZW1wbGF0ZVVybCwgbGFuZylcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB1c2VkVXJsc1twbGFjZWhvbGRlckFjdGlvbi50ZW1wbGF0ZVVybF0gPSB0cnVlO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogeyByYXdVcmw6IHN0cmluZzsgcHJpb3JpdHk6IG51bWJlciB9W10gfSk7XG4gICAgICAgIC8vIFVybHMgbm90IHVzZWQgYW55bW9yZSBhbmQgbm90IGFscmVhZHkgZGlzYWJsZWRcbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJSZXF1ZXN0c1RvRGlzYWJsZTogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgLy8gVXJscyB1c2VkIHRoYXQgd2VyZSBkaXNhYmxlZFxuICAgICAgICBjb25zdCBwbGFjZWhvbGRlclJlcXVlc3RzVG9FbmFibGU6IHN0cmluZ1tdID0gW107XG4gICAgICAgIE9iamVjdC5rZXlzKHN0b3JlZFBsYWNlaG9sZGVyUmVxdWVzdHMpLmZvckVhY2goKHN0b3JlZFBsYWNlaG9sZGVyUmVxdWVzdFJhd1VybCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVzZWRGcm9tRW5naW5lSXRlcmF0aW9uID0gdXNlZFVybHNbc3RvcmVkUGxhY2Vob2xkZXJSZXF1ZXN0UmF3VXJsXTtcbiAgICAgICAgICBjb25zdCB1c2VkRnJvbVN0b3JlID0gKHN0b3JlZFBsYWNlaG9sZGVyUmVxdWVzdHMgJiYgc3RvcmVkUGxhY2Vob2xkZXJSZXF1ZXN0c1tzdG9yZWRQbGFjZWhvbGRlclJlcXVlc3RSYXdVcmxdKSA/IHN0b3JlZFBsYWNlaG9sZGVyUmVxdWVzdHNbc3RvcmVkUGxhY2Vob2xkZXJSZXF1ZXN0UmF3VXJsXSEudXNlZCA6IGZhbHNlO1xuICAgICAgICAgIGlmICghdXNlZEZyb21FbmdpbmVJdGVyYXRpb24gJiYgdXNlZEZyb21TdG9yZSkge1xuICAgICAgICAgICAgcGxhY2Vob2xkZXJSZXF1ZXN0c1RvRGlzYWJsZS5wdXNoKHN0b3JlZFBsYWNlaG9sZGVyUmVxdWVzdFJhd1VybCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh1c2VkRnJvbUVuZ2luZUl0ZXJhdGlvbiAmJiAhdXNlZEZyb21TdG9yZSkge1xuICAgICAgICAgICAgcGxhY2Vob2xkZXJSZXF1ZXN0c1RvRW5hYmxlLnB1c2goc3RvcmVkUGxhY2Vob2xkZXJSZXF1ZXN0UmF3VXJsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBQbGFjZWhvbGRlciB0aGF0IGFyZSBubyBsb25nZXIgZmlsbGVkIGJ5IHRoZSBjdXJyZW50IGVuZ2luZSBleGVjdXRpb24gb3V0cHV0IHdpbGwgYmUgY2xlYXJlZFxuICAgICAgICBjb25zdCBwbGFjZWhvbGRlcnNUZW1wbGF0ZXNUb0JlQ2xlYW5lZFVwID0gT2JqZWN0LmtleXMoc3RvcmVkUGxhY2Vob2xkZXJzKVxuICAgICAgICAgIC5maWx0ZXIocGxhY2Vob2xkZXJJZCA9PiAhcGxhY2Vob2xkZXJzVGVtcGxhdGVzW3BsYWNlaG9sZGVySWRdKTtcblxuICAgICAgICBjb25zdCBwbGFjZWhvbGRlcnNUZW1wbGF0ZXNUb0JlU2V0ID0gT2JqZWN0LmtleXMocGxhY2Vob2xkZXJzVGVtcGxhdGVzKS5yZWR1Y2UoKGNoYW5nZWRQbGFjZWhvbGRlclRlbXBsYXRlcywgcGxhY2Vob2xkZXJUZW1wbGF0ZUlkKSA9PiB7XG4gICAgICAgICAgLy8gQ2FjaGluZyBpZiB0aGUgcGxhY2Vob2xkZXIgdGVtcGxhdGUgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGUgc2FtZSB1cmxzXG4gICAgICAgICAgaWYgKCFzdG9yZWRQbGFjZWhvbGRlcnNbcGxhY2Vob2xkZXJUZW1wbGF0ZUlkXSB8fFxuICAgICAgICAgICAgIShKU09OLnN0cmluZ2lmeShzdG9yZWRQbGFjZWhvbGRlcnNbcGxhY2Vob2xkZXJUZW1wbGF0ZUlkXSEudXJsc1dpdGhQcmlvcml0eSkgPT09IEpTT04uc3RyaW5naWZ5KHBsYWNlaG9sZGVyc1RlbXBsYXRlc1twbGFjZWhvbGRlclRlbXBsYXRlSWRdKSkpIHtcbiAgICAgICAgICAgIGNoYW5nZWRQbGFjZWhvbGRlclRlbXBsYXRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgaWQ6IHBsYWNlaG9sZGVyVGVtcGxhdGVJZCxcbiAgICAgICAgICAgICAgdXJsc1dpdGhQcmlvcml0eTogcGxhY2Vob2xkZXJzVGVtcGxhdGVzW3BsYWNlaG9sZGVyVGVtcGxhdGVJZF1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY2hhbmdlZFBsYWNlaG9sZGVyVGVtcGxhdGVzO1xuICAgICAgICB9LCBbXSBhcyB7IGlkOiBzdHJpbmc7IHVybHNXaXRoUHJpb3JpdHk6IHsgcmF3VXJsOiBzdHJpbmc7IHByaW9yaXR5OiBudW1iZXIgfVtdIH1bXSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGxhY2Vob2xkZXJzVGVtcGxhdGVzVG9CZUNsZWFuZWRVcCxcbiAgICAgICAgICBwbGFjZWhvbGRlclJlcXVlc3RzVG9EaXNhYmxlLFxuICAgICAgICAgIHBsYWNlaG9sZGVyUmVxdWVzdHNUb0VuYWJsZSxcbiAgICAgICAgICBwbGFjZWhvbGRlcnNUZW1wbGF0ZXNUb0JlU2V0LFxuICAgICAgICAgIHBsYWNlaG9sZGVyTmV3UmVxdWVzdHNcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoZmlsdGVyZWRBY3Rpb25zJC5zdWJzY3JpYmUoKHBsYWNlaG9sZGVyc1VwZGF0ZXMpID0+IHtcbiAgICAgIHBsYWNlaG9sZGVyc1VwZGF0ZXMucGxhY2Vob2xkZXJzVGVtcGxhdGVzVG9CZUNsZWFuZWRVcC5mb3JFYWNoKHBsYWNlaG9sZGVySWQgPT5cbiAgICAgICAgc3RvcmUuZGlzcGF0Y2goZGVsZXRlUGxhY2Vob2xkZXJUZW1wbGF0ZUVudGl0eSh7XG4gICAgICAgICAgaWQ6IHBsYWNlaG9sZGVySWRcbiAgICAgICAgfSkpXG4gICAgICApO1xuICAgICAgcGxhY2Vob2xkZXJzVXBkYXRlcy5wbGFjZWhvbGRlcnNUZW1wbGF0ZXNUb0JlU2V0LmZvckVhY2gocGxhY2Vob2xkZXJzVGVtcGxhdGVUb0JlU2V0ID0+IHtcbiAgICAgICAgc3RvcmUuZGlzcGF0Y2goc2V0UGxhY2Vob2xkZXJUZW1wbGF0ZUVudGl0eSh7IGVudGl0eTogcGxhY2Vob2xkZXJzVGVtcGxhdGVUb0JlU2V0IH0pKTtcbiAgICAgIH0pO1xuICAgICAgcGxhY2Vob2xkZXJzVXBkYXRlcy5wbGFjZWhvbGRlclJlcXVlc3RzVG9EaXNhYmxlLmZvckVhY2gocGxhY2Vob2xkZXJSZXF1ZXN0VG9EaXNhYmxlID0+IHtcbiAgICAgICAgc3RvcmUuZGlzcGF0Y2godXBkYXRlUGxhY2Vob2xkZXJSZXF1ZXN0RW50aXR5KHsgZW50aXR5OiB7IGlkOiBwbGFjZWhvbGRlclJlcXVlc3RUb0Rpc2FibGUsIHVzZWQ6IGZhbHNlIH0gfSkpO1xuICAgICAgfSk7XG4gICAgICBwbGFjZWhvbGRlcnNVcGRhdGVzLnBsYWNlaG9sZGVyUmVxdWVzdHNUb0VuYWJsZS5mb3JFYWNoKHBsYWNlaG9sZGVyUmVxdWVzdFRvRW5hYmxlID0+IHtcbiAgICAgICAgc3RvcmUuZGlzcGF0Y2godXBkYXRlUGxhY2Vob2xkZXJSZXF1ZXN0RW50aXR5KHsgZW50aXR5OiB7IGlkOiBwbGFjZWhvbGRlclJlcXVlc3RUb0VuYWJsZSwgdXNlZDogdHJ1ZSB9IH0pKTtcbiAgICAgIH0pO1xuICAgICAgcGxhY2Vob2xkZXJzVXBkYXRlcy5wbGFjZWhvbGRlck5ld1JlcXVlc3RzLmZvckVhY2gocGxhY2Vob2xkZXJOZXdSZXF1ZXN0ID0+IHtcbiAgICAgICAgc3RvcmUuZGlzcGF0Y2goc2V0UGxhY2Vob2xkZXJSZXF1ZXN0RW50aXR5RnJvbVVybCh7XG4gICAgICAgICAgcmVzb2x2ZWRVcmw6IHBsYWNlaG9sZGVyTmV3UmVxdWVzdC5yZXNvbHZlZFVybCxcbiAgICAgICAgICBpZDogcGxhY2Vob2xkZXJOZXdSZXF1ZXN0LnJhd1VybCxcbiAgICAgICAgICBjYWxsOiB0aGlzLnJldHJpZXZlVGVtcGxhdGUocGxhY2Vob2xkZXJOZXdSZXF1ZXN0LnJlc29sdmVkVXJsKVxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogTG9jYWxpemUgdGhlIHVybCwgcmVwbGFjaW5nIHRoZSBsYW5ndWFnZSBtYXJrZXJcbiAgICogQHBhcmFtIHVybFxuICAgKiBAcGFyYW0gbGFuZ3VhZ2VcbiAgICovXG4gIHByb3RlY3RlZCByZXNvbHZlVXJsV2l0aExhbmcodXJsOiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcbiAgICBpZiAoIWxhbmd1YWdlICYmIHVybC5pbmNsdWRlcygnW0xBTkdVQUdFXScpKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKGBNaXNzaW5nIGxhbmd1YWdlIHdoZW4gdHJ5aW5nIHRvIHJlc29sdmUgJHt1cmx9YCk7XG4gICAgfVxuICAgIHJldHVybiBsYW5ndWFnZSA/IHVybC5yZXBsYWNlKC9cXFtMQU5HVUFHRV0vZywgbGFuZ3VhZ2UpIDogdXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRlbXBsYXRlIGFzIGpzb24gZnJvbSBhIGdpdmVuIHVybFxuICAgKiBAcGFyYW0gdXJsXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcmV0cmlldmVUZW1wbGF0ZSh1cmw6IHN0cmluZyk6IFByb21pc2U8UGxhY2Vob2xkZXJSZXF1ZXN0UmVwbHk+IHtcbiAgICBjb25zdCByZXNvbHZlZFVybCQgPSB0aGlzLmluamVjdG9yLmdldChEeW5hbWljQ29udGVudFNlcnZpY2UsIG51bGwsIHsgb3B0aW9uYWw6IHRydWUgfSk/LmdldENvbnRlbnRQYXRoU3RyZWFtKHVybCkgfHwgb2YodXJsKTtcbiAgICBjb25zdCBmdWxsVXJsID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20ocmVzb2x2ZWRVcmwkKTtcbiAgICByZXR1cm4gZmV0Y2goZnVsbFVybCkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHVibGljIGV4ZWN1dGVBY3Rpb25zKGFjdGlvbnM6IEFjdGlvblVwZGF0ZVBsYWNlaG9sZGVyQmxvY2tbXSkge1xuICAgIGNvbnN0IHRlbXBsYXRlcyA9IGFjdGlvbnMubWFwKChhY3Rpb24pID0+ICh7XG4gICAgICBwbGFjZWhvbGRlcklkOiBhY3Rpb24ucGxhY2Vob2xkZXJJZCxcbiAgICAgIHRlbXBsYXRlVXJsOiBhY3Rpb24udmFsdWUsXG4gICAgICBwcmlvcml0eTogYWN0aW9uLnByaW9yaXR5IHx8IDBcbiAgICB9KSk7XG5cbiAgICB0aGlzLnBsYWNlaG9sZGVyc0FjdGlvbnMkLm5leHQodGVtcGxhdGVzKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
@@ -1,15 +1,15 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Injectable, Optional, NgModule } from '@angular/core';
2
+ import { Injectable, Optional, NgModule } from '@angular/core';
3
3
  import * as i1$1 from '@ngrx/effects';
4
4
  import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
5
5
  import { selectPlaceholderTemplateEntities, selectPlaceholderRequestEntities, deletePlaceholderTemplateEntity, setPlaceholderTemplateEntity, updatePlaceholderRequestEntity, setPlaceholderRequestEntityFromUrl, selectPlaceholderRequestEntityUsage, failPlaceholderRequestEntity, cancelPlaceholderRequest, PlaceholderRequestStoreModule, PlaceholderTemplateStoreModule } from '@o3r/components';
6
- import * as i2 from '@o3r/logger';
7
- import { Subscription, Subject, map, distinctUntilChanged, of, combineLatest, withLatestFrom, firstValueFrom, EMPTY } from 'rxjs';
8
6
  import * as i1 from '@ngrx/store';
9
7
  import { select } from '@ngrx/store';
10
- import * as i3 from '@o3r/localization';
11
8
  import * as i4 from '@o3r/dynamic-content';
12
9
  import { DynamicContentService } from '@o3r/dynamic-content';
10
+ import * as i3 from '@o3r/localization';
11
+ import * as i2 from '@o3r/logger';
12
+ import { Subscription, Subject, map, startWith, distinctUntilChanged, of, combineLatest, withLatestFrom, firstValueFrom, EMPTY } from 'rxjs';
13
13
  import { fromApiEffectSwitchMapById } from '@o3r/core';
14
14
  import { map as map$1, distinctUntilChanged as distinctUntilChanged$1, switchMap, take } from 'rxjs/operators';
15
15
  import { JSONPath } from 'jsonpath-plus';
@@ -22,14 +22,18 @@ const RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE = 'UPDATE_PLACEHOLDER';
22
22
  * Service to handle async PlaceholderTemplate actions
23
23
  */
24
24
  class PlaceholderRulesEngineActionHandler {
25
- constructor(store, logger, translateService) {
25
+ constructor(store, logger, injector, translateService) {
26
26
  this.logger = logger;
27
+ this.injector = injector;
27
28
  this.subscription = new Subscription();
28
29
  this.placeholdersActions$ = new Subject();
29
30
  /** @inheritdoc */
30
31
  this.supportingActions = [RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE];
31
- const lang$ = translateService ? translateService.getTranslateService().onLangChange.pipe(map(({ lang }) => lang), distinctUntilChanged()) : of(null);
32
- const filteredActions$ = combineLatest([lang$, this.placeholdersActions$.pipe(distinctUntilChanged((prev, next) => JSON.stringify(prev) === JSON.stringify(next)))]).pipe(withLatestFrom(combineLatest([store.pipe(select(selectPlaceholderTemplateEntities)), store.pipe(select(selectPlaceholderRequestEntities))])), map(([langAndTemplatesUrls, storedPlaceholdersAndRequests]) => {
32
+ const lang$ = translateService ? translateService.getTranslateService().onLangChange.pipe(map(({ lang }) => lang), startWith(translateService.getCurrentLanguage()), distinctUntilChanged()) : of(null);
33
+ const filteredActions$ = combineLatest([
34
+ lang$,
35
+ this.placeholdersActions$.pipe(distinctUntilChanged((prev, next) => JSON.stringify(prev) === JSON.stringify(next)))
36
+ ]).pipe(withLatestFrom(combineLatest([store.pipe(select(selectPlaceholderTemplateEntities)), store.pipe(select(selectPlaceholderRequestEntities))])), map(([langAndTemplatesUrls, storedPlaceholdersAndRequests]) => {
33
37
  const [lang, placeholderActions] = langAndTemplatesUrls;
34
38
  const storedPlaceholders = storedPlaceholdersAndRequests[0] || {};
35
39
  const storedPlaceholderRequests = storedPlaceholdersAndRequests[1] || {};
@@ -134,7 +138,7 @@ class PlaceholderRulesEngineActionHandler {
134
138
  * @param url
135
139
  */
136
140
  async retrieveTemplate(url) {
137
- const resolvedUrl$ = inject(DynamicContentService, { optional: true })?.getContentPathStream(url) || of(url);
141
+ const resolvedUrl$ = this.injector.get(DynamicContentService, null, { optional: true })?.getContentPathStream(url) || of(url);
138
142
  const fullUrl = await firstValueFrom(resolvedUrl$);
139
143
  return fetch(fullUrl).then((response) => response.json());
140
144
  }
@@ -151,12 +155,12 @@ class PlaceholderRulesEngineActionHandler {
151
155
  ngOnDestroy() {
152
156
  this.subscription.unsubscribe();
153
157
  }
154
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PlaceholderRulesEngineActionHandler, deps: [{ token: i1.Store }, { token: i2.LoggerService }, { token: i3.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
158
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PlaceholderRulesEngineActionHandler, deps: [{ token: i1.Store }, { token: i2.LoggerService }, { token: i0.Injector }, { token: i3.LocalizationService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
155
159
  /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PlaceholderRulesEngineActionHandler }); }
156
160
  }
157
161
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PlaceholderRulesEngineActionHandler, decorators: [{
158
162
  type: Injectable
159
- }], ctorParameters: () => [{ type: i1.Store }, { type: i2.LoggerService }, { type: i3.LocalizationService, decorators: [{
163
+ }], ctorParameters: () => [{ type: i1.Store }, { type: i2.LoggerService }, { type: i0.Injector }, { type: i3.LocalizationService, decorators: [{
160
164
  type: Optional
161
165
  }] }] });
162
166
 
@@ -1 +1 @@
1
- {"version":3,"file":"o3r-components-rules-engine.mjs","sources":["../../src/rules-engine/placeholder.interfaces.ts","../../src/rules-engine/placeholder.action-handler.ts","../../src/rules-engine/placeholder.rules-engine.effect.ts","../../src/rules-engine/placeholder.rules-engine.module.ts","../../src/rules-engine/o3r-components-rules-engine.ts"],"sourcesContent":["import type { RulesEngineAction } from '@o3r/core';\n\n/** ActionUpdatePlaceholderBlock */\nexport const RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE = 'UPDATE_PLACEHOLDER';\n\n/**\n * Content of action that updates a placeholder\n */\nexport interface ActionUpdatePlaceholderBlock extends RulesEngineAction {\n actionType: typeof RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE;\n placeholderId: string;\n value: string;\n priority?: number;\n}\n","import { inject, Injectable, OnDestroy, Optional } from '@angular/core';\nimport type { RulesEngineActionHandler } from '@o3r/core';\nimport { LoggerService } from '@o3r/logger';\nimport { combineLatest, distinctUntilChanged, firstValueFrom, map, of, Subject, Subscription, withLatestFrom } from 'rxjs';\nimport {\n deletePlaceholderTemplateEntity,\n PlaceholderRequestReply,\n PlaceholderTemplateStore,\n selectPlaceholderRequestEntities,\n selectPlaceholderTemplateEntities,\n setPlaceholderRequestEntityFromUrl,\n setPlaceholderTemplateEntity,\n updatePlaceholderRequestEntity\n} from '@o3r/components';\nimport { select, Store } from '@ngrx/store';\nimport { LocalizationService } from '@o3r/localization';\nimport { ActionUpdatePlaceholderBlock, RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE } from './placeholder.interfaces';\nimport { DynamicContentService } from '@o3r/dynamic-content';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderRulesEngineActionHandler implements OnDestroy, RulesEngineActionHandler<ActionUpdatePlaceholderBlock> {\n\n protected subscription = new Subscription();\n\n protected placeholdersActions$: Subject<{ placeholderId: string; templateUrl: string; priority: number }[]> = new Subject();\n\n /** @inheritdoc */\n public readonly supportingActions = [RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE] as const;\n\n constructor(store: Store<PlaceholderTemplateStore>, private readonly logger: LoggerService, @Optional() translateService?: LocalizationService) {\n\n const lang$ = translateService ? translateService.getTranslateService().onLangChange.pipe(\n map(({ lang }) => lang),\n distinctUntilChanged()\n ) : of(null);\n\n const filteredActions$ = combineLatest([lang$, this.placeholdersActions$.pipe(\n distinctUntilChanged((prev, next) => JSON.stringify(prev) === JSON.stringify(next)))]).pipe(\n withLatestFrom(\n combineLatest([store.pipe(select(selectPlaceholderTemplateEntities)), store.pipe(select(selectPlaceholderRequestEntities))])\n ),\n map(([langAndTemplatesUrls, storedPlaceholdersAndRequests]) => {\n const [lang, placeholderActions] = langAndTemplatesUrls;\n const storedPlaceholders = storedPlaceholdersAndRequests[0] || {};\n const storedPlaceholderRequests = storedPlaceholdersAndRequests[1] || {};\n const placeholderNewRequests: { rawUrl: string; resolvedUrl: string }[] = [];\n // Stores all raw Urls used from the current engine execution\n const usedUrls: Record<string, boolean> = {};\n // Get all Urls that needs to be resolved from current rules engine output\n const placeholdersTemplates = placeholderActions.reduce((acc, placeholderAction) => {\n const placeholdersTemplateUrl = {\n rawUrl: placeholderAction.templateUrl,\n priority: placeholderAction.priority\n };\n if (acc[placeholderAction.placeholderId]) {\n acc[placeholderAction.placeholderId].push(placeholdersTemplateUrl);\n } else {\n acc[placeholderAction.placeholderId] = [placeholdersTemplateUrl];\n }\n const resolvedUrl = this.resolveUrlWithLang(placeholderAction.templateUrl, lang);\n // Filters duplicates and resolved urls that are already in the store\n if (!usedUrls[placeholderAction.templateUrl] && (!storedPlaceholderRequests[placeholderAction.templateUrl]\n || storedPlaceholderRequests[placeholderAction.templateUrl]!.resolvedUrl !== resolvedUrl)) {\n placeholderNewRequests.push({\n rawUrl: placeholderAction.templateUrl,\n resolvedUrl: this.resolveUrlWithLang(placeholderAction.templateUrl, lang)\n });\n }\n usedUrls[placeholderAction.templateUrl] = true;\n return acc;\n }, {} as { [key: string]: { rawUrl: string; priority: number }[] });\n // Urls not used anymore and not already disabled\n const placeholderRequestsToDisable: string[] = [];\n // Urls used that were disabled\n const placeholderRequestsToEnable: string[] = [];\n Object.keys(storedPlaceholderRequests).forEach((storedPlaceholderRequestRawUrl) => {\n const usedFromEngineIteration = usedUrls[storedPlaceholderRequestRawUrl];\n const usedFromStore = (storedPlaceholderRequests && storedPlaceholderRequests[storedPlaceholderRequestRawUrl]) ? storedPlaceholderRequests[storedPlaceholderRequestRawUrl]!.used : false;\n if (!usedFromEngineIteration && usedFromStore) {\n placeholderRequestsToDisable.push(storedPlaceholderRequestRawUrl);\n } else if (usedFromEngineIteration && !usedFromStore) {\n placeholderRequestsToEnable.push(storedPlaceholderRequestRawUrl);\n }\n });\n // Placeholder that are no longer filled by the current engine execution output will be cleared\n const placeholdersTemplatesToBeCleanedUp = Object.keys(storedPlaceholders)\n .filter(placeholderId => !placeholdersTemplates[placeholderId]);\n\n const placeholdersTemplatesToBeSet = Object.keys(placeholdersTemplates).reduce((changedPlaceholderTemplates, placeholderTemplateId) => {\n // Caching if the placeholder template already exists with the same urls\n if (!storedPlaceholders[placeholderTemplateId] ||\n !(JSON.stringify(storedPlaceholders[placeholderTemplateId]!.urlsWithPriority) === JSON.stringify(placeholdersTemplates[placeholderTemplateId]))) {\n changedPlaceholderTemplates.push({\n id: placeholderTemplateId,\n urlsWithPriority: placeholdersTemplates[placeholderTemplateId]\n });\n }\n return changedPlaceholderTemplates;\n }, [] as { id: string; urlsWithPriority: { rawUrl: string; priority: number }[] }[]);\n return {\n placeholdersTemplatesToBeCleanedUp,\n placeholderRequestsToDisable,\n placeholderRequestsToEnable,\n placeholdersTemplatesToBeSet,\n placeholderNewRequests\n };\n })\n );\n this.subscription.add(filteredActions$.subscribe((placeholdersUpdates) => {\n placeholdersUpdates.placeholdersTemplatesToBeCleanedUp.forEach(placeholderId =>\n store.dispatch(deletePlaceholderTemplateEntity({\n id: placeholderId\n }))\n );\n placeholdersUpdates.placeholdersTemplatesToBeSet.forEach(placeholdersTemplateToBeSet => {\n store.dispatch(setPlaceholderTemplateEntity({ entity: placeholdersTemplateToBeSet }));\n });\n placeholdersUpdates.placeholderRequestsToDisable.forEach(placeholderRequestToDisable => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToDisable, used: false } }));\n });\n placeholdersUpdates.placeholderRequestsToEnable.forEach(placeholderRequestToEnable => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToEnable, used: true } }));\n });\n placeholdersUpdates.placeholderNewRequests.forEach(placeholderNewRequest => {\n store.dispatch(setPlaceholderRequestEntityFromUrl({\n resolvedUrl: placeholderNewRequest.resolvedUrl,\n id: placeholderNewRequest.rawUrl,\n call: this.retrieveTemplate(placeholderNewRequest.resolvedUrl)\n }));\n });\n }));\n }\n\n /**\n * Localize the url, replacing the language marker\n * @param url\n * @param language\n */\n protected resolveUrlWithLang(url: string, language: string | null): string {\n if (!language && url.includes('[LANGUAGE]')) {\n this.logger.warn(`Missing language when trying to resolve ${url}`);\n }\n return language ? url.replace(/\\[LANGUAGE]/g, language) : url;\n }\n\n /**\n * Retrieve template as json from a given url\n * @param url\n */\n protected async retrieveTemplate(url: string): Promise<PlaceholderRequestReply> {\n const resolvedUrl$ = inject(DynamicContentService, { optional: true })?.getContentPathStream(url) || of(url);\n const fullUrl = await firstValueFrom(resolvedUrl$);\n return fetch(fullUrl).then((response) => response.json());\n }\n\n /** @inheritdoc */\n public executeActions(actions: ActionUpdatePlaceholderBlock[]) {\n const templates = actions.map((action) => ({\n placeholderId: action.placeholderId,\n templateUrl: action.value,\n priority: action.priority || 0\n }));\n\n this.placeholdersActions$.next(templates);\n }\n\n /** @inheritdoc */\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import {Injectable, Optional} from '@angular/core';\nimport {Actions, createEffect, ofType} from '@ngrx/effects';\nimport {\n cancelPlaceholderRequest,\n failPlaceholderRequestEntity,\n PlaceholderRequestStore,\n PlaceholderVariable,\n selectPlaceholderRequestEntityUsage,\n setPlaceholderRequestEntityFromUrl,\n updatePlaceholderRequestEntity\n} from '@o3r/components';\nimport {fromApiEffectSwitchMapById} from '@o3r/core';\nimport {DynamicContentService} from '@o3r/dynamic-content';\nimport {LocalizationService} from '@o3r/localization';\nimport {RulesEngineRunnerService} from '@o3r/rules-engine';\nimport {combineLatest, EMPTY, Observable, of} from 'rxjs';\nimport {distinctUntilChanged, map, switchMap, take} from 'rxjs/operators';\nimport {Store} from '@ngrx/store';\nimport { JSONPath } from 'jsonpath-plus';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderTemplateResponseEffect {\n /**\n * Set the PlaceholderRequest entity with the reply content, dispatch failPlaceholderRequestEntity if it catches a failure\n * Handles the rendering of the HTML content from the template and creates the combine latest from facts list if needed\n * Disables unused templates refresh if used is false in the store\n */\n public setPlaceholderRequestEntityFromUrl$ = createEffect(() =>\n this.actions$.pipe(\n ofType(setPlaceholderRequestEntityFromUrl),\n fromApiEffectSwitchMapById(\n (templateResponse, action) => {\n const facts = templateResponse.vars ? Object.entries(templateResponse.vars).filter(([, variable]) => variable.type === 'fact') : [];\n const factsStreamsList = this.rulesEngineService ? facts.map(([varName, fact]) =>\n this.rulesEngineService!.engine.retrieveOrCreateFactStream(fact.value).pipe(\n map((factValue) => ({\n varName,\n factName: fact.value,\n // eslint-disable-next-line new-cap\n factValue: (fact.path && factValue) ? JSONPath({ wrap: false, json: factValue, path: fact.path }) : factValue\n })),\n distinctUntilChanged((previous, current) => previous.factValue === current.factValue)\n )) : [];\n\n const factsStreamsList$ = factsStreamsList.length ? combineLatest(factsStreamsList) : of([]);\n return combineLatest([factsStreamsList$, this.store.select(selectPlaceholderRequestEntityUsage(action.id)).pipe(distinctUntilChanged())]).pipe(\n switchMap(([factsUsedInTemplate, placeholderRequestUsage]) => {\n if (!placeholderRequestUsage) {\n return EMPTY;\n }\n return this.getRenderedHTML$(templateResponse.template, templateResponse.vars, factsUsedInTemplate).pipe(\n map(({renderedTemplate, unknownTypeFound}) =>\n // Update instead of set because used already set by the update from url action\n updatePlaceholderRequestEntity({\n entity: {\n ...templateResponse,\n resolvedUrl: action.resolvedUrl,\n id: action.id,\n renderedTemplate,\n unknownTypeFound\n },\n requestId: action.requestId\n })\n )\n );\n }));\n },\n (error, action) => of(failPlaceholderRequestEntity({ids: [action.id], error, requestId: action.requestId})),\n (requestIdPayload, action) => cancelPlaceholderRequest({...requestIdPayload, id: action.id})\n )\n )\n );\n\n constructor(\n private readonly actions$: Actions,\n private readonly store: Store<PlaceholderRequestStore>,\n @Optional() private readonly rulesEngineService: RulesEngineRunnerService | null,\n @Optional() private readonly dynamicContentService: DynamicContentService | null,\n @Optional() private readonly translationService: LocalizationService | null) {\n }\n\n /**\n * Renders the html template, replacing facts and urls and localizationKeys\n * @param template\n * @param vars\n * @param facts\n */\n private getRenderedHTML$(template?: string, vars?: Record<string, PlaceholderVariable>, facts?: { varName: string; factName: string; factValue: any }[]) {\n let unknownTypeFound = false;\n const factMap = (facts || []).reduce((mapping: { [key: string]: any }, fact) => {\n mapping[fact.factName] = fact.factValue;\n return mapping;\n }, {});\n const factMapFromVars = (facts || []).reduce((mapping: { [key: string]: any }, fact) => {\n mapping[fact.varName] = fact.factValue;\n return mapping;\n }, {});\n const replacements$: Observable<{ ejsVar: RegExp; value: string } | null>[] = [];\n if (vars && template) {\n for (const varName in vars) {\n if (Object.prototype.hasOwnProperty.call(vars, varName)) {\n const ejsVar = new RegExp(`<%=\\\\s*${varName}\\\\s*%>`, 'g');\n switch (vars[varName].type) {\n case 'relativeUrl': {\n replacements$.push(\n this.dynamicContentService?.getMediaPathStream(vars[varName].value).pipe(\n take(1),\n map((value: string) => ({ejsVar, value}))\n ) || of({ ejsVar, value: vars[varName].value })\n );\n break;\n }\n case 'fullUrl': {\n template = template.replace(ejsVar, vars[varName].value);\n break;\n }\n case 'fact': {\n template = template.replace(ejsVar, factMap[vars[varName].value] ?? '');\n break;\n }\n case 'localisation': {\n const linkedVars = (vars[varName].vars || []).reduce((acc: { [key: string]: any }, parameter) => {\n const paramName = vars[parameter].value;\n acc[paramName] = factMap[paramName];\n return acc;\n }, {});\n const linkedParams = (Object.entries(vars[varName].parameters || {})).reduce((acc: { [key: string]: any }, [paramKey, paramValue]) => {\n acc[paramKey] = factMapFromVars[paramValue];\n return acc;\n }, linkedVars);\n replacements$.push(\n this.translationService ?\n this.translationService.translate(vars[varName].value, linkedParams).pipe(\n map((value) => (value ? { ejsVar, value } : null))\n ) :\n of(null)\n );\n break;\n }\n default : {\n unknownTypeFound = true;\n break;\n }\n }\n }\n }\n }\n return replacements$.length > 0 && !!template ?\n combineLatest(replacements$).pipe(\n map((replacements) => ({\n renderedTemplate: replacements.reduce(\n (acc, replacement) =>\n replacement ? acc.replace(replacement.ejsVar, replacement.value) : acc,\n template\n ),\n unknownTypeFound\n }))\n ) : of({renderedTemplate: template, unknownTypeFound});\n }\n}\n","import { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { PlaceholderRequestStoreModule, PlaceholderTemplateStoreModule } from '@o3r/components';\nimport { PlaceholderRulesEngineActionHandler } from './placeholder.action-handler';\nimport { PlaceholderTemplateResponseEffect } from './placeholder.rules-engine.effect';\n\n@NgModule({\n imports: [\n EffectsModule.forFeature([PlaceholderTemplateResponseEffect]),\n PlaceholderRequestStoreModule,\n PlaceholderTemplateStoreModule\n ],\n providers: [\n PlaceholderRulesEngineActionHandler\n ]\n})\nexport class PlaceholderRulesEngineActionModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["map","distinctUntilChanged","i1","i2","i3","i5"],"mappings":"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"}
1
+ {"version":3,"file":"o3r-components-rules-engine.mjs","sources":["../../src/rules-engine/placeholder.interfaces.ts","../../src/rules-engine/placeholder.action-handler.ts","../../src/rules-engine/placeholder.rules-engine.effect.ts","../../src/rules-engine/placeholder.rules-engine.module.ts","../../src/rules-engine/o3r-components-rules-engine.ts"],"sourcesContent":["import type { RulesEngineAction } from '@o3r/core';\n\n/** ActionUpdatePlaceholderBlock */\nexport const RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE = 'UPDATE_PLACEHOLDER';\n\n/**\n * Content of action that updates a placeholder\n */\nexport interface ActionUpdatePlaceholderBlock extends RulesEngineAction {\n actionType: typeof RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE;\n placeholderId: string;\n value: string;\n priority?: number;\n}\n","import { Injectable, Injector, OnDestroy, Optional } from '@angular/core';\nimport { select, Store } from '@ngrx/store';\nimport type { RulesEngineActionHandler } from '@o3r/core';\nimport {\n deletePlaceholderTemplateEntity,\n PlaceholderRequestReply,\n PlaceholderTemplateStore,\n selectPlaceholderRequestEntities,\n selectPlaceholderTemplateEntities,\n setPlaceholderRequestEntityFromUrl,\n setPlaceholderTemplateEntity,\n updatePlaceholderRequestEntity\n} from '@o3r/components';\nimport { DynamicContentService } from '@o3r/dynamic-content';\nimport { LocalizationService } from '@o3r/localization';\nimport { LoggerService } from '@o3r/logger';\nimport { combineLatest, distinctUntilChanged, firstValueFrom, map, of, startWith, Subject, Subscription, withLatestFrom } from 'rxjs';\nimport { ActionUpdatePlaceholderBlock, RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE } from './placeholder.interfaces';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderRulesEngineActionHandler implements OnDestroy, RulesEngineActionHandler<ActionUpdatePlaceholderBlock> {\n\n protected subscription = new Subscription();\n\n protected placeholdersActions$: Subject<{ placeholderId: string; templateUrl: string; priority: number }[]> = new Subject();\n\n /** @inheritdoc */\n public readonly supportingActions = [RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE] as const;\n\n constructor(\n store: Store<PlaceholderTemplateStore>,\n private readonly logger: LoggerService,\n private readonly injector: Injector,\n @Optional() translateService?: LocalizationService\n ) {\n\n const lang$ = translateService ? translateService.getTranslateService().onLangChange.pipe(\n map(({ lang }) => lang),\n startWith(translateService.getCurrentLanguage()),\n distinctUntilChanged()\n ) : of(null);\n\n const filteredActions$ = combineLatest([\n lang$,\n this.placeholdersActions$.pipe(\n distinctUntilChanged((prev, next) => JSON.stringify(prev) === JSON.stringify(next))\n )\n ]).pipe(\n withLatestFrom(\n combineLatest([store.pipe(select(selectPlaceholderTemplateEntities)), store.pipe(select(selectPlaceholderRequestEntities))])\n ),\n map(([langAndTemplatesUrls, storedPlaceholdersAndRequests]) => {\n const [lang, placeholderActions] = langAndTemplatesUrls;\n const storedPlaceholders = storedPlaceholdersAndRequests[0] || {};\n const storedPlaceholderRequests = storedPlaceholdersAndRequests[1] || {};\n const placeholderNewRequests: { rawUrl: string; resolvedUrl: string }[] = [];\n // Stores all raw Urls used from the current engine execution\n const usedUrls: Record<string, boolean> = {};\n // Get all Urls that needs to be resolved from current rules engine output\n const placeholdersTemplates = placeholderActions.reduce((acc, placeholderAction) => {\n const placeholdersTemplateUrl = {\n rawUrl: placeholderAction.templateUrl,\n priority: placeholderAction.priority\n };\n if (acc[placeholderAction.placeholderId]) {\n acc[placeholderAction.placeholderId].push(placeholdersTemplateUrl);\n } else {\n acc[placeholderAction.placeholderId] = [placeholdersTemplateUrl];\n }\n const resolvedUrl = this.resolveUrlWithLang(placeholderAction.templateUrl, lang);\n // Filters duplicates and resolved urls that are already in the store\n if (!usedUrls[placeholderAction.templateUrl] && (!storedPlaceholderRequests[placeholderAction.templateUrl]\n || storedPlaceholderRequests[placeholderAction.templateUrl]!.resolvedUrl !== resolvedUrl)) {\n placeholderNewRequests.push({\n rawUrl: placeholderAction.templateUrl,\n resolvedUrl: this.resolveUrlWithLang(placeholderAction.templateUrl, lang)\n });\n }\n usedUrls[placeholderAction.templateUrl] = true;\n return acc;\n }, {} as { [key: string]: { rawUrl: string; priority: number }[] });\n // Urls not used anymore and not already disabled\n const placeholderRequestsToDisable: string[] = [];\n // Urls used that were disabled\n const placeholderRequestsToEnable: string[] = [];\n Object.keys(storedPlaceholderRequests).forEach((storedPlaceholderRequestRawUrl) => {\n const usedFromEngineIteration = usedUrls[storedPlaceholderRequestRawUrl];\n const usedFromStore = (storedPlaceholderRequests && storedPlaceholderRequests[storedPlaceholderRequestRawUrl]) ? storedPlaceholderRequests[storedPlaceholderRequestRawUrl]!.used : false;\n if (!usedFromEngineIteration && usedFromStore) {\n placeholderRequestsToDisable.push(storedPlaceholderRequestRawUrl);\n } else if (usedFromEngineIteration && !usedFromStore) {\n placeholderRequestsToEnable.push(storedPlaceholderRequestRawUrl);\n }\n });\n // Placeholder that are no longer filled by the current engine execution output will be cleared\n const placeholdersTemplatesToBeCleanedUp = Object.keys(storedPlaceholders)\n .filter(placeholderId => !placeholdersTemplates[placeholderId]);\n\n const placeholdersTemplatesToBeSet = Object.keys(placeholdersTemplates).reduce((changedPlaceholderTemplates, placeholderTemplateId) => {\n // Caching if the placeholder template already exists with the same urls\n if (!storedPlaceholders[placeholderTemplateId] ||\n !(JSON.stringify(storedPlaceholders[placeholderTemplateId]!.urlsWithPriority) === JSON.stringify(placeholdersTemplates[placeholderTemplateId]))) {\n changedPlaceholderTemplates.push({\n id: placeholderTemplateId,\n urlsWithPriority: placeholdersTemplates[placeholderTemplateId]\n });\n }\n return changedPlaceholderTemplates;\n }, [] as { id: string; urlsWithPriority: { rawUrl: string; priority: number }[] }[]);\n return {\n placeholdersTemplatesToBeCleanedUp,\n placeholderRequestsToDisable,\n placeholderRequestsToEnable,\n placeholdersTemplatesToBeSet,\n placeholderNewRequests\n };\n })\n );\n this.subscription.add(filteredActions$.subscribe((placeholdersUpdates) => {\n placeholdersUpdates.placeholdersTemplatesToBeCleanedUp.forEach(placeholderId =>\n store.dispatch(deletePlaceholderTemplateEntity({\n id: placeholderId\n }))\n );\n placeholdersUpdates.placeholdersTemplatesToBeSet.forEach(placeholdersTemplateToBeSet => {\n store.dispatch(setPlaceholderTemplateEntity({ entity: placeholdersTemplateToBeSet }));\n });\n placeholdersUpdates.placeholderRequestsToDisable.forEach(placeholderRequestToDisable => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToDisable, used: false } }));\n });\n placeholdersUpdates.placeholderRequestsToEnable.forEach(placeholderRequestToEnable => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToEnable, used: true } }));\n });\n placeholdersUpdates.placeholderNewRequests.forEach(placeholderNewRequest => {\n store.dispatch(setPlaceholderRequestEntityFromUrl({\n resolvedUrl: placeholderNewRequest.resolvedUrl,\n id: placeholderNewRequest.rawUrl,\n call: this.retrieveTemplate(placeholderNewRequest.resolvedUrl)\n }));\n });\n }));\n }\n\n /**\n * Localize the url, replacing the language marker\n * @param url\n * @param language\n */\n protected resolveUrlWithLang(url: string, language: string | null): string {\n if (!language && url.includes('[LANGUAGE]')) {\n this.logger.warn(`Missing language when trying to resolve ${url}`);\n }\n return language ? url.replace(/\\[LANGUAGE]/g, language) : url;\n }\n\n /**\n * Retrieve template as json from a given url\n * @param url\n */\n protected async retrieveTemplate(url: string): Promise<PlaceholderRequestReply> {\n const resolvedUrl$ = this.injector.get(DynamicContentService, null, { optional: true })?.getContentPathStream(url) || of(url);\n const fullUrl = await firstValueFrom(resolvedUrl$);\n return fetch(fullUrl).then((response) => response.json());\n }\n\n /** @inheritdoc */\n public executeActions(actions: ActionUpdatePlaceholderBlock[]) {\n const templates = actions.map((action) => ({\n placeholderId: action.placeholderId,\n templateUrl: action.value,\n priority: action.priority || 0\n }));\n\n this.placeholdersActions$.next(templates);\n }\n\n /** @inheritdoc */\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import {Injectable, Optional} from '@angular/core';\nimport {Actions, createEffect, ofType} from '@ngrx/effects';\nimport {\n cancelPlaceholderRequest,\n failPlaceholderRequestEntity,\n PlaceholderRequestStore,\n PlaceholderVariable,\n selectPlaceholderRequestEntityUsage,\n setPlaceholderRequestEntityFromUrl,\n updatePlaceholderRequestEntity\n} from '@o3r/components';\nimport {fromApiEffectSwitchMapById} from '@o3r/core';\nimport {DynamicContentService} from '@o3r/dynamic-content';\nimport {LocalizationService} from '@o3r/localization';\nimport {RulesEngineRunnerService} from '@o3r/rules-engine';\nimport {combineLatest, EMPTY, Observable, of} from 'rxjs';\nimport {distinctUntilChanged, map, switchMap, take} from 'rxjs/operators';\nimport {Store} from '@ngrx/store';\nimport { JSONPath } from 'jsonpath-plus';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderTemplateResponseEffect {\n /**\n * Set the PlaceholderRequest entity with the reply content, dispatch failPlaceholderRequestEntity if it catches a failure\n * Handles the rendering of the HTML content from the template and creates the combine latest from facts list if needed\n * Disables unused templates refresh if used is false in the store\n */\n public setPlaceholderRequestEntityFromUrl$ = createEffect(() =>\n this.actions$.pipe(\n ofType(setPlaceholderRequestEntityFromUrl),\n fromApiEffectSwitchMapById(\n (templateResponse, action) => {\n const facts = templateResponse.vars ? Object.entries(templateResponse.vars).filter(([, variable]) => variable.type === 'fact') : [];\n const factsStreamsList = this.rulesEngineService ? facts.map(([varName, fact]) =>\n this.rulesEngineService!.engine.retrieveOrCreateFactStream(fact.value).pipe(\n map((factValue) => ({\n varName,\n factName: fact.value,\n // eslint-disable-next-line new-cap\n factValue: (fact.path && factValue) ? JSONPath({ wrap: false, json: factValue, path: fact.path }) : factValue\n })),\n distinctUntilChanged((previous, current) => previous.factValue === current.factValue)\n )) : [];\n\n const factsStreamsList$ = factsStreamsList.length ? combineLatest(factsStreamsList) : of([]);\n return combineLatest([factsStreamsList$, this.store.select(selectPlaceholderRequestEntityUsage(action.id)).pipe(distinctUntilChanged())]).pipe(\n switchMap(([factsUsedInTemplate, placeholderRequestUsage]) => {\n if (!placeholderRequestUsage) {\n return EMPTY;\n }\n return this.getRenderedHTML$(templateResponse.template, templateResponse.vars, factsUsedInTemplate).pipe(\n map(({renderedTemplate, unknownTypeFound}) =>\n // Update instead of set because used already set by the update from url action\n updatePlaceholderRequestEntity({\n entity: {\n ...templateResponse,\n resolvedUrl: action.resolvedUrl,\n id: action.id,\n renderedTemplate,\n unknownTypeFound\n },\n requestId: action.requestId\n })\n )\n );\n }));\n },\n (error, action) => of(failPlaceholderRequestEntity({ids: [action.id], error, requestId: action.requestId})),\n (requestIdPayload, action) => cancelPlaceholderRequest({...requestIdPayload, id: action.id})\n )\n )\n );\n\n constructor(\n private readonly actions$: Actions,\n private readonly store: Store<PlaceholderRequestStore>,\n @Optional() private readonly rulesEngineService: RulesEngineRunnerService | null,\n @Optional() private readonly dynamicContentService: DynamicContentService | null,\n @Optional() private readonly translationService: LocalizationService | null) {\n }\n\n /**\n * Renders the html template, replacing facts and urls and localizationKeys\n * @param template\n * @param vars\n * @param facts\n */\n private getRenderedHTML$(template?: string, vars?: Record<string, PlaceholderVariable>, facts?: { varName: string; factName: string; factValue: any }[]) {\n let unknownTypeFound = false;\n const factMap = (facts || []).reduce((mapping: { [key: string]: any }, fact) => {\n mapping[fact.factName] = fact.factValue;\n return mapping;\n }, {});\n const factMapFromVars = (facts || []).reduce((mapping: { [key: string]: any }, fact) => {\n mapping[fact.varName] = fact.factValue;\n return mapping;\n }, {});\n const replacements$: Observable<{ ejsVar: RegExp; value: string } | null>[] = [];\n if (vars && template) {\n for (const varName in vars) {\n if (Object.prototype.hasOwnProperty.call(vars, varName)) {\n const ejsVar = new RegExp(`<%=\\\\s*${varName}\\\\s*%>`, 'g');\n switch (vars[varName].type) {\n case 'relativeUrl': {\n replacements$.push(\n this.dynamicContentService?.getMediaPathStream(vars[varName].value).pipe(\n take(1),\n map((value: string) => ({ejsVar, value}))\n ) || of({ ejsVar, value: vars[varName].value })\n );\n break;\n }\n case 'fullUrl': {\n template = template.replace(ejsVar, vars[varName].value);\n break;\n }\n case 'fact': {\n template = template.replace(ejsVar, factMap[vars[varName].value] ?? '');\n break;\n }\n case 'localisation': {\n const linkedVars = (vars[varName].vars || []).reduce((acc: { [key: string]: any }, parameter) => {\n const paramName = vars[parameter].value;\n acc[paramName] = factMap[paramName];\n return acc;\n }, {});\n const linkedParams = (Object.entries(vars[varName].parameters || {})).reduce((acc: { [key: string]: any }, [paramKey, paramValue]) => {\n acc[paramKey] = factMapFromVars[paramValue];\n return acc;\n }, linkedVars);\n replacements$.push(\n this.translationService ?\n this.translationService.translate(vars[varName].value, linkedParams).pipe(\n map((value) => (value ? { ejsVar, value } : null))\n ) :\n of(null)\n );\n break;\n }\n default : {\n unknownTypeFound = true;\n break;\n }\n }\n }\n }\n }\n return replacements$.length > 0 && !!template ?\n combineLatest(replacements$).pipe(\n map((replacements) => ({\n renderedTemplate: replacements.reduce(\n (acc, replacement) =>\n replacement ? acc.replace(replacement.ejsVar, replacement.value) : acc,\n template\n ),\n unknownTypeFound\n }))\n ) : of({renderedTemplate: template, unknownTypeFound});\n }\n}\n","import { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { PlaceholderRequestStoreModule, PlaceholderTemplateStoreModule } from '@o3r/components';\nimport { PlaceholderRulesEngineActionHandler } from './placeholder.action-handler';\nimport { PlaceholderTemplateResponseEffect } from './placeholder.rules-engine.effect';\n\n@NgModule({\n imports: [\n EffectsModule.forFeature([PlaceholderTemplateResponseEffect]),\n PlaceholderRequestStoreModule,\n PlaceholderTemplateStoreModule\n ],\n providers: [\n PlaceholderRulesEngineActionHandler\n ]\n})\nexport class PlaceholderRulesEngineActionModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["map","distinctUntilChanged","i1","i2","i3","i5"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o3r/components",
3
- "version": "10.3.0-prerelease.13",
3
+ "version": "10.3.0-prerelease.14",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -44,16 +44,16 @@
44
44
  "@ngrx/effects": "~17.1.0",
45
45
  "@ngrx/entity": "~17.1.0",
46
46
  "@ngrx/store": "~17.1.0",
47
- "@o3r/analytics": "^10.3.0-prerelease.13",
48
- "@o3r/configuration": "^10.3.0-prerelease.13",
49
- "@o3r/core": "^10.3.0-prerelease.13",
50
- "@o3r/dynamic-content": "^10.3.0-prerelease.13",
51
- "@o3r/extractors": "^10.3.0-prerelease.13",
52
- "@o3r/localization": "^10.3.0-prerelease.13",
53
- "@o3r/logger": "^10.3.0-prerelease.13",
54
- "@o3r/rules-engine": "^10.3.0-prerelease.13",
55
- "@o3r/schematics": "^10.3.0-prerelease.13",
56
- "@o3r/testing": "^10.3.0-prerelease.13",
47
+ "@o3r/analytics": "^10.3.0-prerelease.14",
48
+ "@o3r/configuration": "^10.3.0-prerelease.14",
49
+ "@o3r/core": "^10.3.0-prerelease.14",
50
+ "@o3r/dynamic-content": "^10.3.0-prerelease.14",
51
+ "@o3r/extractors": "^10.3.0-prerelease.14",
52
+ "@o3r/localization": "^10.3.0-prerelease.14",
53
+ "@o3r/logger": "^10.3.0-prerelease.14",
54
+ "@o3r/rules-engine": "^10.3.0-prerelease.14",
55
+ "@o3r/schematics": "^10.3.0-prerelease.14",
56
+ "@o3r/testing": "^10.3.0-prerelease.14",
57
57
  "@schematics/angular": "~17.3.0",
58
58
  "chokidar": "^3.5.2",
59
59
  "globby": "^11.1.0",
@@ -1,10 +1,10 @@
1
- import { OnDestroy } from '@angular/core';
1
+ import { Injector, OnDestroy } from '@angular/core';
2
+ import { Store } from '@ngrx/store';
2
3
  import type { RulesEngineActionHandler } from '@o3r/core';
3
- import { LoggerService } from '@o3r/logger';
4
- import { Subject, Subscription } from 'rxjs';
5
4
  import { PlaceholderRequestReply, PlaceholderTemplateStore } from '@o3r/components';
6
- import { Store } from '@ngrx/store';
7
5
  import { LocalizationService } from '@o3r/localization';
6
+ import { LoggerService } from '@o3r/logger';
7
+ import { Subject, Subscription } from 'rxjs';
8
8
  import { ActionUpdatePlaceholderBlock } from './placeholder.interfaces';
9
9
  import * as i0 from "@angular/core";
10
10
  /**
@@ -12,6 +12,7 @@ import * as i0 from "@angular/core";
12
12
  */
13
13
  export declare class PlaceholderRulesEngineActionHandler implements OnDestroy, RulesEngineActionHandler<ActionUpdatePlaceholderBlock> {
14
14
  private readonly logger;
15
+ private readonly injector;
15
16
  protected subscription: Subscription;
16
17
  protected placeholdersActions$: Subject<{
17
18
  placeholderId: string;
@@ -20,7 +21,7 @@ export declare class PlaceholderRulesEngineActionHandler implements OnDestroy, R
20
21
  }[]>;
21
22
  /** @inheritdoc */
22
23
  readonly supportingActions: readonly ["UPDATE_PLACEHOLDER"];
23
- constructor(store: Store<PlaceholderTemplateStore>, logger: LoggerService, translateService?: LocalizationService);
24
+ constructor(store: Store<PlaceholderTemplateStore>, logger: LoggerService, injector: Injector, translateService?: LocalizationService);
24
25
  /**
25
26
  * Localize the url, replacing the language marker
26
27
  * @param url
@@ -36,7 +37,7 @@ export declare class PlaceholderRulesEngineActionHandler implements OnDestroy, R
36
37
  executeActions(actions: ActionUpdatePlaceholderBlock[]): void;
37
38
  /** @inheritdoc */
38
39
  ngOnDestroy(): void;
39
- static ɵfac: i0.ɵɵFactoryDeclaration<PlaceholderRulesEngineActionHandler, [null, null, { optional: true; }]>;
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<PlaceholderRulesEngineActionHandler, [null, null, null, { optional: true; }]>;
40
41
  static ɵprov: i0.ɵɵInjectableDeclaration<PlaceholderRulesEngineActionHandler>;
41
42
  }
42
43
  //# sourceMappingURL=placeholder.action-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"placeholder.action-handler.d.ts","sourceRoot":"","sources":["../../src/rules-engine/placeholder.action-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,SAAS,EAAY,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAgE,OAAO,EAAE,YAAY,EAAkB,MAAM,MAAM,CAAC;AAC3H,OAAO,EAEL,uBAAuB,EACvB,wBAAwB,EAMzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAU,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAA+C,MAAM,0BAA0B,CAAC;;AAGrH;;GAEG;AACH,qBACa,mCAAoC,YAAW,SAAS,EAAE,wBAAwB,CAAC,4BAA4B,CAAC;IASvE,OAAO,CAAC,QAAQ,CAAC,MAAM;IAP3E,SAAS,CAAC,YAAY,eAAsB;IAE5C,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAiB;IAE5H,kBAAkB;IAClB,SAAgB,iBAAiB,kCAA0D;gBAE/E,KAAK,EAAE,KAAK,CAAC,wBAAwB,CAAC,EAAmB,MAAM,EAAE,aAAa,EAAc,gBAAgB,CAAC,EAAE,mBAAmB;IAwG9I;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAO1E;;;OAGG;cACa,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAM/E,kBAAkB;IACX,cAAc,CAAC,OAAO,EAAE,4BAA4B,EAAE;IAU7D,kBAAkB;IACX,WAAW,IAAI,IAAI;yCAnJf,mCAAmC;6CAAnC,mCAAmC;CAsJ/C"}
1
+ {"version":3,"file":"placeholder.action-handler.d.ts","sourceRoot":"","sources":["../../src/rules-engine/placeholder.action-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAAE,SAAS,EAAY,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAU,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAEL,uBAAuB,EACvB,wBAAwB,EAMzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAA2E,OAAO,EAAE,YAAY,EAAkB,MAAM,MAAM,CAAC;AACtI,OAAO,EAAE,4BAA4B,EAA+C,MAAM,0BAA0B,CAAC;;AAErH;;GAEG;AACH,qBACa,mCAAoC,YAAW,SAAS,EAAE,wBAAwB,CAAC,4BAA4B,CAAC;IAWzH,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,SAAS,CAAC,YAAY,eAAsB;IAE5C,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAiB;IAE5H,kBAAkB;IAClB,SAAgB,iBAAiB,kCAA0D;gBAGzF,KAAK,EAAE,KAAK,CAAC,wBAAwB,CAAC,EACrB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,QAAQ,EACvB,gBAAgB,CAAC,EAAE,mBAAmB;IA8GpD;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAO1E;;;OAGG;cACa,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAM/E,kBAAkB;IACX,cAAc,CAAC,OAAO,EAAE,4BAA4B,EAAE;IAU7D,kBAAkB;IACX,WAAW,IAAI,IAAI;yCA7Jf,mCAAmC;6CAAnC,mCAAmC;CAgK/C"}