@veloceapps/sdk 11.0.0-82 → 11.0.0-84

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 (29) hide show
  1. package/cms/vendor-map.d.ts +2 -1
  2. package/core/modules/configuration/index.d.ts +1 -0
  3. package/core/modules/configuration/services/configuration.service.d.ts +4 -6
  4. package/core/modules/configuration/services/guided-selling.service.d.ts +13 -0
  5. package/core/services/flow-state-configuration.service.d.ts +8 -1
  6. package/esm2020/cms/vendor-map.mjs +3 -2
  7. package/esm2020/core/modules/configuration/configuration.module.mjs +4 -1
  8. package/esm2020/core/modules/configuration/index.mjs +2 -1
  9. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +3 -3
  10. package/esm2020/core/modules/configuration/services/configuration.service.mjs +29 -32
  11. package/esm2020/core/modules/configuration/services/guided-selling.service.mjs +47 -0
  12. package/esm2020/core/modules/configuration/services/test-mode-configuration.service.mjs +2 -2
  13. package/esm2020/core/services/flow-state-configuration.service.mjs +48 -6
  14. package/esm2020/core/services/flow-state.service.mjs +2 -2
  15. package/esm2020/src/services/flow-dialog.service.mjs +3 -24
  16. package/fesm2015/veloceapps-sdk-cms.mjs +2 -1
  17. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  18. package/fesm2015/veloceapps-sdk-core.mjs +101 -40
  19. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  20. package/fesm2015/veloceapps-sdk.mjs +2 -23
  21. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  22. package/fesm2020/veloceapps-sdk-cms.mjs +2 -1
  23. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  24. package/fesm2020/veloceapps-sdk-core.mjs +179 -103
  25. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  26. package/fesm2020/veloceapps-sdk.mjs +2 -23
  27. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  28. package/package.json +1 -1
  29. package/src/services/flow-dialog.service.d.ts +1 -4
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { OrchestrationsApiService } from '@veloceapps/api/v2';
3
- import { extractErrorDetails, isDefined, } from '@veloceapps/core';
3
+ import { extractErrorDetails, isDefined } from '@veloceapps/core';
4
4
  import { cloneDeep } from 'lodash';
5
5
  import { MessageService } from 'primeng/api';
6
6
  import { BehaviorSubject, noop, of, throwError } from 'rxjs';
@@ -14,6 +14,18 @@ import * as i2 from "primeng/api";
14
14
  import * as i3 from "./configuration-runtime.service";
15
15
  import * as i4 from "@veloceapps/api/v2";
16
16
  export class ConfigurationService {
17
+ constructor(flowInfoService, messageService, configurationRuntimeService, salesTransactionService, orchestrationsApiService) {
18
+ this.flowInfoService = flowInfoService;
19
+ this.messageService = messageService;
20
+ this.configurationRuntimeService = configurationRuntimeService;
21
+ this.salesTransactionService = salesTransactionService;
22
+ this.orchestrationsApiService = orchestrationsApiService;
23
+ this.hasUnsavedChanges = false;
24
+ this.configurationStateSubj$ = new BehaviorSubject(null);
25
+ this.previousConfigurationStateSubj$ = new BehaviorSubject(null);
26
+ this.isLoadingSubj$ = new BehaviorSubject(false);
27
+ this.isLoading$ = this.isLoadingSubj$.asObservable();
28
+ }
17
29
  get state$() {
18
30
  return this.configurationStateSubj$.asObservable().pipe(filter(isDefined));
19
31
  }
@@ -29,18 +41,6 @@ export class ConfigurationService {
29
41
  get root() {
30
42
  return this.configurationStateSubj$.getValue()?.salesTransaction.salesTransactionItems[0] ?? null;
31
43
  }
32
- constructor(flowInfoService, messageService, configurationRuntimeService, salesTransactionService, orchestrationsApiService) {
33
- this.flowInfoService = flowInfoService;
34
- this.messageService = messageService;
35
- this.configurationRuntimeService = configurationRuntimeService;
36
- this.salesTransactionService = salesTransactionService;
37
- this.orchestrationsApiService = orchestrationsApiService;
38
- this.hasUnsavedChanges = false;
39
- this.configurationStateSubj$ = new BehaviorSubject(null);
40
- this.previousConfigurationStateSubj$ = new BehaviorSubject(null);
41
- this.isLoadingSubj$ = new BehaviorSubject(false);
42
- this.isLoading$ = this.isLoadingSubj$.asObservable();
43
- }
44
44
  reset() {
45
45
  this.hasUnsavedChanges = false;
46
46
  this.configurationStateSubj$.next(null);
@@ -69,7 +69,7 @@ export class ConfigurationService {
69
69
  salesTransactionItems: transactionItem ? [transactionItem] : [],
70
70
  },
71
71
  };
72
- return (isRootGenerated ? this.configureRequest$(configurationState) : of(configurationState)).pipe(tap(configurationState => {
72
+ return (isRootGenerated ? this.configure$(configurationState) : of(configurationState)).pipe(tap(configurationState => {
73
73
  this.configurationStateSubj$.next(configurationState);
74
74
  this.previousConfigurationStateSubj$.next(configurationState);
75
75
  }), map(noop));
@@ -90,7 +90,7 @@ export class ConfigurationService {
90
90
  salesTransactionItems: [newRoot],
91
91
  },
92
92
  };
93
- return this.configureRequest$(newTransactionContext).pipe(catchError(error => {
93
+ return this.configure$(newTransactionContext).pipe(catchError(error => {
94
94
  console.error(error);
95
95
  if (!this.configurationRuntimeService.uiDefinitionProps.suppressToastMessages) {
96
96
  this.messageService.add({ severity: 'error', summary: error });
@@ -105,34 +105,31 @@ export class ConfigurationService {
105
105
  patch(transactionItem) {
106
106
  this.patch$(transactionItem).subscribe();
107
107
  }
108
- configureRequest$(transactionContext) {
109
- const request = {
110
- transactionContext,
111
- flowId: this.flowInfoService.flow.id,
112
- };
108
+ configure$(transactionContext) {
113
109
  this.isLoadingSubj$.next(true);
114
- return this.orchestrationsApiService.apply$(request).pipe(tap(result => {
110
+ return this.justConfigureRequest$(transactionContext).pipe(tap(result => {
115
111
  this.configurationStateSubj$.next(result);
116
112
  this.previousConfigurationStateSubj$.next(cloneDeep(result));
117
- }), catchError(error => throwError(() => {
113
+ }), catchError(e => {
118
114
  const resetState = this.previousConfigurationStateSubj$.getValue();
119
115
  if (resetState) {
120
116
  this.previousConfigurationStateSubj$.next(cloneDeep(resetState));
121
117
  this.configurationStateSubj$.next(resetState);
122
118
  }
119
+ return throwError(() => e);
120
+ }), finalize(() => this.isLoadingSubj$.next(false)));
121
+ }
122
+ justConfigureRequest$(transactionContext) {
123
+ const request = {
124
+ transactionContext,
125
+ flowId: this.flowInfoService.flow.id,
126
+ };
127
+ return this.orchestrationsApiService.apply$(request).pipe(catchError(error => throwError(() => {
123
128
  if (error.error) {
124
129
  return extractErrorDetails(error.error).join('. ');
125
130
  }
126
131
  return error.message || JSON.stringify(error);
127
- })), finalize(() => this.isLoadingSubj$.next(false)));
128
- }
129
- configureExternal$(props) {
130
- // TODO: implement
131
- throw new Error('Not implemented');
132
- }
133
- configureGuidedSelling$(data) {
134
- // TODO: implement
135
- throw new Error('Not implemented');
132
+ })));
136
133
  }
137
134
  getPCMModel() {
138
135
  const pcmModel = this.configurationRuntimeService.pcmModel;
@@ -147,4 +144,4 @@ ConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
147
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ConfigurationService, decorators: [{
148
145
  type: Injectable
149
146
  }], ctorParameters: function () { return [{ type: i1.FlowInfoService }, { type: i2.MessageService }, { type: i3.ConfigurationRuntimeService }, { type: i1.SalesTransactionService }, { type: i4.OrchestrationsApiService }]; } });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUF5QixNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsU0FBUyxHQUtWLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7OztBQUc5RSxNQUFNLE9BQU8sb0JBQW9CO0lBUS9CLElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJ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QzNELElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7U0FDOUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOztpSEFoTFUsb0JBQW9CO3FIQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9yY2hlc3RyYXRpb25zQXBpU2VydmljZSwgUHJvY2VkdXJlQXBwbHlSZXF1ZXN0IH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpL3YyJztcbmltcG9ydCB7XG4gIGV4dHJhY3RFcnJvckRldGFpbHMsXG4gIGlzRGVmaW5lZCxcbiAgUENNTW9kZWwsXG4gIFNhbGVzVHJhbnNhY3Rpb24sXG4gIFNhbGVzVHJhbnNhY3Rpb25JdGVtLFxuICBUcmFuc2FjdGlvbkNvbnRleHQsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBub29wLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBmaW5hbGl6ZSwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGbG93SW5mb1NlcnZpY2UsIFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0sIFRyYW5zYWN0aW9uSXRlbVdvcmtlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEV4dGVybmFsQ29uZmlndXJhdGlvblByb3BzLCBHdWlkZWRTZWxsaW5nU3VibWl0RGF0YSB9IGZyb20gJy4uL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uU2VydmljZSB7XG4gIHB1YmxpYyBpc0xvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcblxuICBwcml2YXRlIGNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmFuc2FjdGlvbkNvbnRleHQgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBwcmV2aW91c0NvbmZpZ3VyYXRpb25TdGF0ZVN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmFuc2FjdGlvbkNvbnRleHQgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBpc0xvYWRpbmdTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25Db250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQuYXNPYnNlcnZhYmxlKCkucGlwZShmaWx0ZXIoaXNEZWZpbmVkKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlKCk6IFRyYW5zYWN0aW9uQ29udGV4dCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByZXZpb3VzU3RhdGUoKTogVHJhbnNhY3Rpb25Db250ZXh0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCByb290JCgpOiBPYnNlcnZhYmxlPFNhbGVzVHJhbnNhY3Rpb25JdGVtPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgICBtYXAoc3RhdGUgPT4gc3RhdGUuc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXNbMF0pLFxuICAgICAgZmlsdGVyKGlzRGVmaW5lZCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm9vdCgpOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLmdldFZhbHVlKCk/LnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zWzBdID8/IG51bGw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZsb3dJbmZvU2VydmljZTogRmxvd0luZm9TZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlOiBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYWxlc1RyYW5zYWN0aW9uU2VydmljZTogU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2U6IE9yY2hlc3RyYXRpb25zQXBpU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5pc0xvYWRpbmckID0gdGhpcy5pc0xvYWRpbmdTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG5cbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLm5leHQobnVsbCk7XG4gICAgdGhpcy5wcmV2aW91c0NvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgeyBzdGF0ZSB9ID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZTtcbiAgICBjb25zdCB7IHByb2R1Y3RJZCwgdHJhbnNhY3Rpb25JdGVtSWQgfSA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmNvbnRleHQ7XG5cbiAgICBpZiAoIXN0YXRlIHx8ICFwcm9kdWN0SWQpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIGNvbnN0IHNhbGVzVHJhbnNhY3Rpb25JdGVtcyA9IHN0YXRlPy5zYWxlc1RyYW5zYWN0aW9uLnNhbGVzVHJhbnNhY3Rpb25JdGVtcyA/PyBbXTtcbiAgICBsZXQgaXNSb290R2VuZXJhdGVkID0gZmFsc2U7XG4gICAgbGV0IHRyYW5zYWN0aW9uSXRlbSA9IHNhbGVzVHJhbnNhY3Rpb25JdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gdHJhbnNhY3Rpb25JdGVtSWQpO1xuICAgIGlmICghdHJhbnNhY3Rpb25JdGVtKSB7XG4gICAgICB0cmFuc2FjdGlvbkl0ZW0gPSBzYWxlc1RyYW5zYWN0aW9uSXRlbXMuZmluZChpdGVtID0+IGl0ZW0ucHJvZHVjdElkID09PSBwcm9kdWN0SWQpO1xuICAgIH1cblxuICAgIGlmICghdHJhbnNhY3Rpb25JdGVtKSB7XG4gICAgICB0cmFuc2FjdGlvbkl0ZW0gPSBnZW5lcmF0ZVRyYW5zYWN0aW9uSXRlbShwcm9kdWN0SWQpO1xuICAgICAgaXNSb290R2VuZXJhdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uU3RhdGU6IFRyYW5zYWN0aW9uQ29udGV4dCA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2FsZXNUcmFuc2FjdGlvbjoge1xuICAgICAgICAuLi5zdGF0ZS5zYWxlc1RyYW5zYWN0aW9uLFxuICAgICAgICBzYWxlc1RyYW5zYWN0aW9uSXRlbXM6IHRyYW5zYWN0aW9uSXRlbSA/IFt0cmFuc2FjdGlvbkl0ZW1dIDogW10sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gKGlzUm9vdEdlbmVyYXRlZCA/IHRoaXMuY29uZmlndXJlUmVxdWVzdCQoY29uZmlndXJhdGlvblN0YXRlKSA6IG9mKGNvbmZpZ3VyYXRpb25TdGF0ZSkpLnBpcGUoXG4gICAgICB0YXAoY29uZmlndXJhdGlvblN0YXRlID0+IHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KGNvbmZpZ3VyYXRpb25TdGF0ZSk7XG4gICAgICAgIHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KGNvbmZpZ3VyYXRpb25TdGF0ZSk7XG4gICAgICB9KSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHBhdGNoJCh0cmFuc2FjdGlvbkl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgeyBzdGF0ZSwgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgQ29uZmlndXJhdGlvbiBTdGF0ZSBpcyBub3QgaW5pdGlhbGl6ZWRgKSk7XG4gICAgfVxuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBSb290IFNhbGVzVHJhbnNhY3Rpb25JdGVtIG5vdCBmb3VuZGApKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdSb290ID0gbmV3IFRyYW5zYWN0aW9uSXRlbVdvcmtlcihyb290KS5yZXBsYWNlKHRyYW5zYWN0aW9uSXRlbSkudGk7XG4gICAgY29uc3QgbmV3VHJhbnNhY3Rpb25Db250ZXh0OiBUcmFuc2FjdGlvbkNvbnRleHQgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbixcbiAgICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zOiBbbmV3Um9vdF0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmVSZXF1ZXN0JChuZXdUcmFuc2FjdGlvbkNvbnRleHQpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS51aURlZmluaXRpb25Qcm9wcy5zdXBwcmVzc1RvYXN0TWVzc2FnZXMpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiBlcnJvciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgbWFwKG5vb3ApLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcGF0Y2godHJhbnNhY3Rpb25JdGVtOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSk6IHZvaWQge1xuICAgIHRoaXMucGF0Y2gkKHRyYW5zYWN0aW9uSXRlbSkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlndXJlUmVxdWVzdCQodHJhbnNhY3Rpb25Db250ZXh0OiBUcmFuc2FjdGlvbkNvbnRleHQpOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uQ29udGV4dD4ge1xuICAgIGNvbnN0IHJlcXVlc3Q6IFByb2NlZHVyZUFwcGx5UmVxdWVzdCA9IHtcbiAgICAgIHRyYW5zYWN0aW9uQ29udGV4dCxcbiAgICAgIGZsb3dJZDogdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdy5pZCxcbiAgICB9O1xuXG4gICAgdGhpcy5pc0xvYWRpbmdTdWJqJC5uZXh0KHRydWUpO1xuXG4gICAgcmV0dXJuIHRoaXMub3JjaGVzdHJhdGlvbnNBcGlTZXJ2aWNlLmFwcGx5JChyZXF1ZXN0KS5waXBlKFxuICAgICAgdGFwKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChyZXN1bHQpO1xuICAgICAgICB0aGlzLnByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChjbG9uZURlZXAocmVzdWx0KSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT5cbiAgICAgICAgdGhyb3dFcnJvcigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzZXRTdGF0ZSA9IHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5nZXRWYWx1ZSgpO1xuICAgICAgICAgIGlmIChyZXNldFN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChjbG9uZURlZXAocmVzZXRTdGF0ZSkpO1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KHJlc2V0U3RhdGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGV4dHJhY3RFcnJvckRldGFpbHMoZXJyb3IuZXJyb3IpLmpvaW4oJy4gJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2UgfHwgSlNPTi5zdHJpbmdpZnkoZXJyb3IpO1xuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZ1N1YmokLm5leHQoZmFsc2UpKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZUV4dGVybmFsJChwcm9wczogRXh0ZXJuYWxDb25maWd1cmF0aW9uUHJvcHMpOiBPYnNlcnZhYmxlPFNhbGVzVHJhbnNhY3Rpb24+IHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnRcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpZ3VyZUd1aWRlZFNlbGxpbmckKGRhdGE6IEd1aWRlZFNlbGxpbmdTdWJtaXREYXRhKTogT2JzZXJ2YWJsZTxTYWxlc1RyYW5zYWN0aW9uPiB7XG4gICAgLy8gVE9ETzogaW1wbGVtZW50XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQQ01Nb2RlbCgpOiBQQ01Nb2RlbCB7XG4gICAgY29uc3QgcGNtTW9kZWwgPSB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5wY21Nb2RlbDtcbiAgICBpZiAoIXBjbU1vZGVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BDTSBtb2RlbCBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGNtTW9kZWw7XG4gIH1cbn1cbiJdfQ==
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUF5QixNQUFNLG9CQUFvQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQXNELE1BQU0sa0JBQWtCLENBQUM7QUFDdEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7OztBQUc5RSxNQUFNLE9BQU8sb0JBQW9CO0lBUS9CLFlBQ1UsZUFBZ0MsRUFDaEMsY0FBOEIsRUFDOUIsMkJBQXdELEVBQ3hELHVCQUFnRCxFQUNoRCx3QkFBa0Q7UUFKbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixnQ0FBMkIsR0FBM0Is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LENBQUM7UUFDM0QsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUM5QztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7O2lIQTlLVSxvQkFBb0I7cUhBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3JjaGVzdHJhdGlvbnNBcGlTZXJ2aWNlLCBQcm9jZWR1cmVBcHBseVJlcXVlc3QgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGkvdjInO1xuaW1wb3J0IHsgZXh0cmFjdEVycm9yRGV0YWlscywgaXNEZWZpbmVkLCBQQ01Nb2RlbCwgU2FsZXNUcmFuc2FjdGlvbkl0ZW0sIFRyYW5zYWN0aW9uQ29udGV4dCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBub29wLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBmaW5hbGl6ZSwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGbG93SW5mb1NlcnZpY2UsIFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0sIFRyYW5zYWN0aW9uSXRlbVdvcmtlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbi1ydW50aW1lLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuICBwdWJsaWMgaXNMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU3RhdGVTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJhbnNhY3Rpb25Db250ZXh0IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJhbnNhY3Rpb25Db250ZXh0IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgaXNMb2FkaW5nU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZsb3dJbmZvU2VydmljZTogRmxvd0luZm9TZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlOiBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYWxlc1RyYW5zYWN0aW9uU2VydmljZTogU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2U6IE9yY2hlc3RyYXRpb25zQXBpU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5pc0xvYWRpbmckID0gdGhpcy5pc0xvYWRpbmdTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25Db250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQuYXNPYnNlcnZhYmxlKCkucGlwZShmaWx0ZXIoaXNEZWZpbmVkKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXRlKCk6IFRyYW5zYWN0aW9uQ29udGV4dCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHByZXZpb3VzU3RhdGUoKTogVHJhbnNhY3Rpb25Db250ZXh0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCByb290JCgpOiBPYnNlcnZhYmxlPFNhbGVzVHJhbnNhY3Rpb25JdGVtPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgICBtYXAoc3RhdGUgPT4gc3RhdGUuc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXNbMF0pLFxuICAgICAgZmlsdGVyKGlzRGVmaW5lZCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm9vdCgpOiBTYWxlc1RyYW5zYWN0aW9uSXRlbSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TdGF0ZVN1YmokLmdldFZhbHVlKCk/LnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zWzBdID8/IG51bGw7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuXG4gICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KG51bGwpO1xuICAgIHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGluaXQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHsgc3RhdGUgfSA9IHRoaXMuc2FsZXNUcmFuc2FjdGlvblNlcnZpY2U7XG4gICAgY29uc3QgeyBwcm9kdWN0SWQsIHRyYW5zYWN0aW9uSXRlbUlkIH0gPSB0aGlzLmZsb3dJbmZvU2VydmljZS5jb250ZXh0O1xuXG4gICAgaWYgKCFzdGF0ZSB8fCAhcHJvZHVjdElkKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBzYWxlc1RyYW5zYWN0aW9uSXRlbXMgPSBzdGF0ZT8uc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXMgPz8gW107XG4gICAgbGV0IGlzUm9vdEdlbmVyYXRlZCA9IGZhbHNlO1xuICAgIGxldCB0cmFuc2FjdGlvbkl0ZW0gPSBzYWxlc1RyYW5zYWN0aW9uSXRlbXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHRyYW5zYWN0aW9uSXRlbUlkKTtcbiAgICBpZiAoIXRyYW5zYWN0aW9uSXRlbSkge1xuICAgICAgdHJhbnNhY3Rpb25JdGVtID0gc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnByb2R1Y3RJZCA9PT0gcHJvZHVjdElkKTtcbiAgICB9XG5cbiAgICBpZiAoIXRyYW5zYWN0aW9uSXRlbSkge1xuICAgICAgdHJhbnNhY3Rpb25JdGVtID0gZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0ocHJvZHVjdElkKTtcbiAgICAgIGlzUm9vdEdlbmVyYXRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlndXJhdGlvblN0YXRlOiBUcmFuc2FjdGlvbkNvbnRleHQgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbixcbiAgICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zOiB0cmFuc2FjdGlvbkl0ZW0gPyBbdHJhbnNhY3Rpb25JdGVtXSA6IFtdLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIChpc1Jvb3RHZW5lcmF0ZWQgPyB0aGlzLmNvbmZpZ3VyZSQoY29uZmlndXJhdGlvblN0YXRlKSA6IG9mKGNvbmZpZ3VyYXRpb25TdGF0ZSkpLnBpcGUoXG4gICAgICB0YXAoY29uZmlndXJhdGlvblN0YXRlID0+IHtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KGNvbmZpZ3VyYXRpb25TdGF0ZSk7XG4gICAgICAgIHRoaXMucHJldmlvdXNDb25maWd1cmF0aW9uU3RhdGVTdWJqJC5uZXh0KGNvbmZpZ3VyYXRpb25TdGF0ZSk7XG4gICAgICB9KSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHBhdGNoJCh0cmFuc2FjdGlvbkl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgeyBzdGF0ZSwgcm9vdCB9ID0gdGhpcztcblxuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgQ29uZmlndXJhdGlvbiBTdGF0ZSBpcyBub3QgaW5pdGlhbGl6ZWRgKSk7XG4gICAgfVxuICAgIGlmICghcm9vdCkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBSb290IFNhbGVzVHJhbnNhY3Rpb25JdGVtIG5vdCBmb3VuZGApKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdSb290ID0gbmV3IFRyYW5zYWN0aW9uSXRlbVdvcmtlcihyb290KS5yZXBsYWNlKHRyYW5zYWN0aW9uSXRlbSkudGk7XG4gICAgY29uc3QgbmV3VHJhbnNhY3Rpb25Db250ZXh0OiBUcmFuc2FjdGlvbkNvbnRleHQgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbixcbiAgICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zOiBbbmV3Um9vdF0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmUkKG5ld1RyYW5zYWN0aW9uQ29udGV4dCkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcblxuICAgICAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnVpRGVmaW5pdGlvblByb3BzLnN1cHByZXNzVG9hc3RNZXNzYWdlcykge1xuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6IGVycm9yIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRjaCh0cmFuc2FjdGlvbkl0ZW06IFNhbGVzVHJhbnNhY3Rpb25JdGVtKTogdm9pZCB7XG4gICAgdGhpcy5wYXRjaCQodHJhbnNhY3Rpb25JdGVtKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25maWd1cmUkKHRyYW5zYWN0aW9uQ29udGV4dDogVHJhbnNhY3Rpb25Db250ZXh0KTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbkNvbnRleHQ+IHtcbiAgICB0aGlzLmlzTG9hZGluZ1N1YmokLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5qdXN0Q29uZmlndXJlUmVxdWVzdCQodHJhbnNhY3Rpb25Db250ZXh0KS5waXBlKFxuICAgICAgdGFwKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChyZXN1bHQpO1xuICAgICAgICB0aGlzLnByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChjbG9uZURlZXAocmVzdWx0KSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc2V0U3RhdGUgPSB0aGlzLnByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKHJlc2V0U3RhdGUpIHtcbiAgICAgICAgICB0aGlzLnByZXZpb3VzQ29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChjbG9uZURlZXAocmVzZXRTdGF0ZSkpO1xuICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvblN0YXRlU3ViaiQubmV4dChyZXNldFN0YXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZ1N1YmokLm5leHQoZmFsc2UpKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGp1c3RDb25maWd1cmVSZXF1ZXN0JCh0cmFuc2FjdGlvbkNvbnRleHQ6IFRyYW5zYWN0aW9uQ29udGV4dCk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25Db250ZXh0PiB7XG4gICAgY29uc3QgcmVxdWVzdDogUHJvY2VkdXJlQXBwbHlSZXF1ZXN0ID0ge1xuICAgICAgdHJhbnNhY3Rpb25Db250ZXh0LFxuICAgICAgZmxvd0lkOiB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93LmlkLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5vcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2UuYXBwbHkkKHJlcXVlc3QpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+XG4gICAgICAgIHRocm93RXJyb3IoKCkgPT4ge1xuICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGV4dHJhY3RFcnJvckRldGFpbHMoZXJyb3IuZXJyb3IpLmpvaW4oJy4gJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2UgfHwgSlNPTi5zdHJpbmdpZnkoZXJyb3IpO1xuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQQ01Nb2RlbCgpOiBQQ01Nb2RlbCB7XG4gICAgY29uc3QgcGNtTW9kZWwgPSB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5wY21Nb2RlbDtcbiAgICBpZiAoIXBjbU1vZGVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BDTSBtb2RlbCBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGNtTW9kZWw7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { UUID } from '@veloceapps/core';
3
+ import { OrchestrationsApiService } from '@veloceapps/api/v2';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@veloceapps/api/v2";
6
+ export class GuidedSellingService {
7
+ constructor(orchestrationsApiService) {
8
+ this.orchestrationsApiService = orchestrationsApiService;
9
+ }
10
+ configureGuidedSelling$(data) {
11
+ return this.orchestrationsApiService.apply$({
12
+ transactionContext: this.getTransactionContext(data.attributesMap),
13
+ orchestrationName: data.orchestrationName,
14
+ });
15
+ }
16
+ getTransactionContext(guidedSellingAttributes) {
17
+ const testTransaction = {
18
+ id: UUID.UUID(),
19
+ businessObjectType: 'Quote',
20
+ salesTransactionItems: [],
21
+ tagAttributes: {},
22
+ };
23
+ return {
24
+ salesTransaction: testTransaction,
25
+ transactionId: UUID.UUID(),
26
+ businessObjectType: 'Quote',
27
+ childNodes: {
28
+ GuidedSelling: [
29
+ {
30
+ id: UUID.UUID(),
31
+ tagAttributes: {},
32
+ childNodes: {},
33
+ properties: { guidedSellingAttributes },
34
+ },
35
+ ],
36
+ },
37
+ id: UUID.UUID(),
38
+ tagAttributes: {},
39
+ };
40
+ }
41
+ }
42
+ GuidedSellingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: GuidedSellingService, deps: [{ token: i1.OrchestrationsApiService }], target: i0.ɵɵFactoryTarget.Injectable });
43
+ GuidedSellingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: GuidedSellingService });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: GuidedSellingService, decorators: [{
45
+ type: Injectable
46
+ }], ctorParameters: function () { return [{ type: i1.OrchestrationsApiService }]; } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXNlbGxpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9jb25maWd1cmF0aW9uL3NlcnZpY2VzL2d1aWRlZC1zZWxsaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQThELElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3BHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFHOUQsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFvQix3QkFBa0Q7UUFBbEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtJQUFHLENBQUM7SUFFbkUsdUJBQXVCLENBQUMsSUFBNkI7UUFDMUQsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDO1lBQzFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ2xFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHFCQUFxQixDQUFDLHVCQUE0QztRQUN4RSxNQUFNLGVBQWUsR0FBRztZQUN0QixFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNmLGtCQUFrQixFQUFFLE9BQU87WUFDM0IscUJBQXFCLEVBQUUsRUFBNEI7WUFDbkQsYUFBYSxFQUFFLEVBQUU7U0FDRSxDQUFDO1FBRXRCLE9BQU87WUFDTCxnQkFBZ0IsRUFBRSxlQUFlO1lBQ2pDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzFCLGtCQUFrQixFQUFFLE9BQU87WUFDM0IsVUFBVSxFQUFFO2dCQUNWLGFBQWEsRUFBRTtvQkFDYjt3QkFDRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTt3QkFDZixhQUFhLEVBQUUsRUFBRTt3QkFDakIsVUFBVSxFQUFFLEVBQUU7d0JBQ2QsVUFBVSxFQUFFLEVBQUUsdUJBQXVCLEVBQUU7cUJBQ3hDO2lCQUNGO2FBQ0Y7WUFDRCxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNmLGFBQWEsRUFBRSxFQUFFO1NBQ2xCLENBQUM7SUFDSixDQUFDOztpSEFuQ1Usb0JBQW9CO3FIQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNhbGVzVHJhbnNhY3Rpb24sIFNhbGVzVHJhbnNhY3Rpb25JdGVtLCBUcmFuc2FjdGlvbkNvbnRleHQsIFVVSUQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEd1aWRlZFNlbGxpbmdTdWJtaXREYXRhIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgT3JjaGVzdHJhdGlvbnNBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpL3YyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEd1aWRlZFNlbGxpbmdTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcmNoZXN0cmF0aW9uc0FwaVNlcnZpY2U6IE9yY2hlc3RyYXRpb25zQXBpU2VydmljZSkge31cblxuICBwdWJsaWMgY29uZmlndXJlR3VpZGVkU2VsbGluZyQoZGF0YTogR3VpZGVkU2VsbGluZ1N1Ym1pdERhdGEpOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uQ29udGV4dD4ge1xuICAgIHJldHVybiB0aGlzLm9yY2hlc3RyYXRpb25zQXBpU2VydmljZS5hcHBseSQoe1xuICAgICAgdHJhbnNhY3Rpb25Db250ZXh0OiB0aGlzLmdldFRyYW5zYWN0aW9uQ29udGV4dChkYXRhLmF0dHJpYnV0ZXNNYXApLFxuICAgICAgb3JjaGVzdHJhdGlvbk5hbWU6IGRhdGEub3JjaGVzdHJhdGlvbk5hbWUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRyYW5zYWN0aW9uQ29udGV4dChndWlkZWRTZWxsaW5nQXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55Pik6IFRyYW5zYWN0aW9uQ29udGV4dCB7XG4gICAgY29uc3QgdGVzdFRyYW5zYWN0aW9uID0ge1xuICAgICAgaWQ6IFVVSUQuVVVJRCgpLFxuICAgICAgYnVzaW5lc3NPYmplY3RUeXBlOiAnUXVvdGUnLFxuICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zOiBbXSBhcyBTYWxlc1RyYW5zYWN0aW9uSXRlbVtdLFxuICAgICAgdGFnQXR0cmlidXRlczoge30sXG4gICAgfSBhcyBTYWxlc1RyYW5zYWN0aW9uO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHRlc3RUcmFuc2FjdGlvbixcbiAgICAgIHRyYW5zYWN0aW9uSWQ6IFVVSUQuVVVJRCgpLFxuICAgICAgYnVzaW5lc3NPYmplY3RUeXBlOiAnUXVvdGUnLFxuICAgICAgY2hpbGROb2Rlczoge1xuICAgICAgICBHdWlkZWRTZWxsaW5nOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IFVVSUQuVVVJRCgpLFxuICAgICAgICAgICAgdGFnQXR0cmlidXRlczoge30sXG4gICAgICAgICAgICBjaGlsZE5vZGVzOiB7fSxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHsgZ3VpZGVkU2VsbGluZ0F0dHJpYnV0ZXMgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIGlkOiBVVUlELlVVSUQoKSxcbiAgICAgIHRhZ0F0dHJpYnV0ZXM6IHt9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -44,7 +44,7 @@ export class TestModeConfigurationService {
44
44
  initConfiguration$(quoteId) {
45
45
  this.salesTransactionService.setState(this.getTestTransactionContext(quoteId));
46
46
  return this.configurationService.init$().pipe(switchMap(() => this.configurationService.state
47
- ? this.configurationService.configureRequest$(this.configurationService.state)
47
+ ? this.configurationService.configure$(this.configurationService.state)
48
48
  : of(undefined)), map(noop));
49
49
  }
50
50
  getTestTransactionContext(quoteId) {
@@ -71,4 +71,4 @@ TestModeConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TestModeConfigurationService, decorators: [{
72
72
  type: Injectable
73
73
  }], ctorParameters: function () { return [{ type: i1.FlowInfoService }, { type: i2.ConfigurationService }, { type: i3.ConfigurationRuntimeService }, { type: i1.SalesTransactionService }, { type: i1.RuntimeSettingsService }]; } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1tb2RlLWNvbmZpZ3VyYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9jb25maWd1cmF0aW9uL3NlcnZpY2VzL3Rlc3QtbW9kZS1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBTUwsSUFBSSxHQUNMLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFHL0QsTUFBTSxPQUFPLDRCQUE0QjtJQUl2QyxZQUNVLGVBQWdDLEVBQ2hDLG9CQUEwQyxFQUMxQywyQkFBd0QsRUFDeEQsdUJBQWdELEVBQ2hELHNCQUE4QztRQUo5QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBQ3hELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQVJoRCxrQkFBYSxHQUFHLEtBQUssQ0FBQztJQVMzQixDQUFDO0lBRUcsYUFBYSxDQUNsQixxQkFBNEMsRUFDNUMsT0FBc0M7UUFFdEMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLHFC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RUFBRTtZQUNmLGFBQWEsRUFBRSxFQUFFO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMscUJBQTRDO1FBQ25FLE9BQU8sSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQztJQUMzRixDQUFDOzt5SEFwRlUsNEJBQTRCOzZIQUE1Qiw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFBDTU1vZGVsLFxuICBTYWxlc1RyYW5zYWN0aW9uLFxuICBTYWxlc1RyYW5zYWN0aW9uSXRlbSxcbiAgVHJhbnNhY3Rpb25Db250ZXh0LFxuICBVSURlZmluaXRpb25Db250YWluZXIsXG4gIFVVSUQsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBub29wLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwLCB0YXAsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dJbmZvU2VydmljZSwgUnVudGltZVNldHRpbmdzU2VydmljZSwgU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBUZXN0TW9kZUNvbmZpZ3VyYXRpb25PcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uLXJ1bnRpbWUuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRlc3RNb2RlQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBwY21Nb2RlbD86IFBDTU1vZGVsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2U6IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIHNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlOiBTYWxlc1RyYW5zYWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJ1bnRpbWVTZXR0aW5nc1NlcnZpY2U6IFJ1bnRpbWVTZXR0aW5nc1NlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgaW5pdFRlc3RNb2RlJChcbiAgICB1aURlZmluaXRpb25Db250YWluZXI6IFVJRGVmaW5pdGlvbkNvbnRhaW5lcixcbiAgICBvcHRpb25zPzogVGVzdE1vZGVDb25maWd1cmF0aW9uT3B0aW9ucyxcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UudWlEZWZpbml0aW9uQ29udGFpbmVyID0gdWlEZWZpbml0aW9uQ29udGFpbmVyO1xuXG4gICAgaWYgKHRoaXMuY2hlY2tJbml0aWFsaXplZCh1aURlZmluaXRpb25Db250YWluZXIpKSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZS5wY21Nb2RlbCA9IHRoaXMucGNtTW9kZWw7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5yZXNldCgpO1xuXG4gICAgY29uc3QgeyBwcm9kdWN0SWQsIHF1b3RlSWQsIGZsb3dJZCB9ID0gdWlEZWZpbml0aW9uQ29udGFpbmVyLnNvdXJjZS5wcm9wZXJ0aWVzID8/IHt9O1xuXG4gICAgaWYgKCFwcm9kdWN0SWQpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICdVbmFibGUgdG8gc3RhcnQgdGhlIENvbmZpZ3VyYXRpb24gUHJldmlldzogUHJvZHVjdCBpcyBtaXNzaW5nLicpO1xuICAgIH1cbiAgICBpZiAoIXF1b3RlSWQpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGBVbmFibGUgdG8gc3RhcnQgdGhlIENvbmZpZ3VyYXRpb24gUHJldmlldzogUXVvdGUgaXMgbWlzc2luZy5gKTtcbiAgICB9XG4gICAgaWYgKCFmbG93SWQpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGBVbmFibGUgdG8gc3RhcnQgdGhlIENvbmZpZ3VyYXRpb24gUHJldmlldzogRmxvdyBpcyBtaXNzaW5nLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJ1bnRpbWVTZXR0aW5nc1NlcnZpY2UuY3JlYXRlKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmZsb3dJbmZvU2VydmljZS5pbml0JChmbG93SWQsIHsgcHJvZHVjdElkLCBoZWFkZXJJZDogcXVvdGVJZCB9KSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UuaW5pdCQoeyBwcm9kdWN0SWQgfSkpLFxuICAgICAgdGFwKHBjbU1vZGVsID0+ICh0aGlzLnBjbU1vZGVsID0gcGNtTW9kZWwpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zPy5jdXN0b21pemF0aW9uTW9kZSkge1xuICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaW5pdENvbmZpZ3VyYXRpb24kKHF1b3RlSWQpO1xuICAgICAgfSksXG4gICAgICB0YXAoKCkgPT4gKHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWUpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q29uZmlndXJhdGlvbiQocXVvdGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zZXRTdGF0ZSh0aGlzLmdldFRlc3RUcmFuc2FjdGlvbkNvbnRleHQocXVvdGVJZCkpO1xuXG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuaW5pdCQoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2Uuc3RhdGVcbiAgICAgICAgICA/IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuY29uZmlndXJlUmVxdWVzdCQodGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5zdGF0ZSlcbiAgICAgICAgICA6IG9mKHVuZGVmaW5lZCksXG4gICAgICApLFxuICAgICAgbWFwKG5vb3ApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFRlc3RUcmFuc2FjdGlvbkNvbnRleHQocXVvdGVJZDogc3RyaW5nKTogVHJhbnNhY3Rpb25Db250ZXh0IHtcbiAgICBjb25zdCB0ZXN0VHJhbnNhY3Rpb24gPSB7XG4gICAgICBpZDogcXVvdGVJZCxcbiAgICAgIGJ1c2luZXNzT2JqZWN0VHlwZTogJ1F1b3RlJyxcbiAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogW10gYXMgU2FsZXNUcmFuc2FjdGlvbkl0ZW1bXSxcbiAgICB9IGFzIFNhbGVzVHJhbnNhY3Rpb247XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2FsZXNUcmFuc2FjdGlvbjogdGVzdFRyYW5zYWN0aW9uLFxuICAgICAgdHJhbnNhY3Rpb25JZDogcXVvdGVJZCxcbiAgICAgIGJ1c2luZXNzT2JqZWN0VHlwZTogJ1F1b3RlJyxcbiAgICAgIGNoaWxkTm9kZXM6IHt9LFxuICAgICAgaWQ6IFVVSUQuVVVJRCgpLFxuICAgICAgdGFnQXR0cmlidXRlczoge30sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJbml0aWFsaXplZCh1aURlZmluaXRpb25Db250YWluZXI6IFVJRGVmaW5pdGlvbkNvbnRhaW5lcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5pdGlhbGl6ZWQgJiYgISF1aURlZmluaXRpb25Db250YWluZXIuc291cmNlLnByb3BlcnRpZXM/LnBlcnNpc3RUZXN0U3RhdGU7XG4gIH1cbn1cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1tb2RlLWNvbmZpZ3VyYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvbW9kdWxlcy9jb25maWd1cmF0aW9uL3NlcnZpY2VzL3Rlc3QtbW9kZS1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBTUwsSUFBSSxHQUNMLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFHL0QsTUFBTSxPQUFPLDRCQUE0QjtJQUl2QyxZQUNVLGVBQWdDLEVBQ2hDLG9CQUEwQyxFQUMxQywyQkFBd0QsRUFDeEQsdUJBQWdELEVBQ2hELHNCQUE4QztRQUo5QyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBQ3hELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQVJoRCxrQkFBYSxHQUFHLEtBQUssQ0FBQztJQVMzQixDQUFDO0lBRUcsYUFBYSxDQUNsQixxQkFBNEMsRUFDNUMsT0FBc0M7UUFFdEMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLHFC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QUU7WUFDZixhQUFhLEVBQUUsRUFBRTtTQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLHFCQUE0QztRQUNuRSxPQUFPLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0YsQ0FBQzs7eUhBcEZVLDRCQUE0Qjs2SEFBNUIsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBQQ01Nb2RlbCxcbiAgU2FsZXNUcmFuc2FjdGlvbixcbiAgU2FsZXNUcmFuc2FjdGlvbkl0ZW0sXG4gIFRyYW5zYWN0aW9uQ29udGV4dCxcbiAgVUlEZWZpbml0aW9uQ29udGFpbmVyLFxuICBVVUlELFxufSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IG1hcCwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGbG93SW5mb1NlcnZpY2UsIFJ1bnRpbWVTZXR0aW5nc1NlcnZpY2UsIFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgVGVzdE1vZGVDb25maWd1cmF0aW9uT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25SdW50aW1lU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbi1ydW50aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUZXN0TW9kZUNvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgcGNtTW9kZWw/OiBQQ01Nb2RlbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZsb3dJbmZvU2VydmljZTogRmxvd0luZm9TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlOiBDb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYWxlc1RyYW5zYWN0aW9uU2VydmljZTogU2FsZXNUcmFuc2FjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBydW50aW1lU2V0dGluZ3NTZXJ2aWNlOiBSdW50aW1lU2V0dGluZ3NTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIGluaXRUZXN0TW9kZSQoXG4gICAgdWlEZWZpbml0aW9uQ29udGFpbmVyOiBVSURlZmluaXRpb25Db250YWluZXIsXG4gICAgb3B0aW9ucz86IFRlc3RNb2RlQ29uZmlndXJhdGlvbk9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLnVpRGVmaW5pdGlvbkNvbnRhaW5lciA9IHVpRGVmaW5pdGlvbkNvbnRhaW5lcjtcblxuICAgIGlmICh0aGlzLmNoZWNrSW5pdGlhbGl6ZWQodWlEZWZpbml0aW9uQ29udGFpbmVyKSkge1xuICAgICAgdGhpcy5jb25maWd1cmF0aW9uUnVudGltZVNlcnZpY2UucGNtTW9kZWwgPSB0aGlzLnBjbU1vZGVsO1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UucmVzZXQoKTtcblxuICAgIGNvbnN0IHsgcHJvZHVjdElkLCBxdW90ZUlkLCBmbG93SWQgfSA9IHVpRGVmaW5pdGlvbkNvbnRhaW5lci5zb3VyY2UucHJvcGVydGllcyA/PyB7fTtcblxuICAgIGlmICghcHJvZHVjdElkKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAnVW5hYmxlIHRvIHN0YXJ0IHRoZSBDb25maWd1cmF0aW9uIFByZXZpZXc6IFByb2R1Y3QgaXMgbWlzc2luZy4nKTtcbiAgICB9XG4gICAgaWYgKCFxdW90ZUlkKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBgVW5hYmxlIHRvIHN0YXJ0IHRoZSBDb25maWd1cmF0aW9uIFByZXZpZXc6IFF1b3RlIGlzIG1pc3NpbmcuYCk7XG4gICAgfVxuICAgIGlmICghZmxvd0lkKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBgVW5hYmxlIHRvIHN0YXJ0IHRoZSBDb25maWd1cmF0aW9uIFByZXZpZXc6IEZsb3cgaXMgbWlzc2luZy5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ydW50aW1lU2V0dGluZ3NTZXJ2aWNlLmNyZWF0ZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5mbG93SW5mb1NlcnZpY2UuaW5pdCQoZmxvd0lkLCB7IHByb2R1Y3RJZCwgaGVhZGVySWQ6IHF1b3RlSWQgfSkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29uZmlndXJhdGlvblJ1bnRpbWVTZXJ2aWNlLmluaXQkKHsgcHJvZHVjdElkIH0pKSxcbiAgICAgIHRhcChwY21Nb2RlbCA9PiAodGhpcy5wY21Nb2RlbCA9IHBjbU1vZGVsKSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICBpZiAob3B0aW9ucz8uY3VzdG9taXphdGlvbk1vZGUpIHtcbiAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmluaXRDb25maWd1cmF0aW9uJChxdW90ZUlkKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+ICh0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlKSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENvbmZpZ3VyYXRpb24kKHF1b3RlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHRoaXMuc2FsZXNUcmFuc2FjdGlvblNlcnZpY2Uuc2V0U3RhdGUodGhpcy5nZXRUZXN0VHJhbnNhY3Rpb25Db250ZXh0KHF1b3RlSWQpKTtcblxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmluaXQkKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnN0YXRlXG4gICAgICAgICAgPyB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmNvbmZpZ3VyZSQodGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5zdGF0ZSlcbiAgICAgICAgICA6IG9mKHVuZGVmaW5lZCksXG4gICAgICApLFxuICAgICAgbWFwKG5vb3ApLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFRlc3RUcmFuc2FjdGlvbkNvbnRleHQocXVvdGVJZDogc3RyaW5nKTogVHJhbnNhY3Rpb25Db250ZXh0IHtcbiAgICBjb25zdCB0ZXN0VHJhbnNhY3Rpb24gPSB7XG4gICAgICBpZDogcXVvdGVJZCxcbiAgICAgIGJ1c2luZXNzT2JqZWN0VHlwZTogJ1F1b3RlJyxcbiAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogW10gYXMgU2FsZXNUcmFuc2FjdGlvbkl0ZW1bXSxcbiAgICB9IGFzIFNhbGVzVHJhbnNhY3Rpb247XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2FsZXNUcmFuc2FjdGlvbjogdGVzdFRyYW5zYWN0aW9uLFxuICAgICAgdHJhbnNhY3Rpb25JZDogcXVvdGVJZCxcbiAgICAgIGJ1c2luZXNzT2JqZWN0VHlwZTogJ1F1b3RlJyxcbiAgICAgIGNoaWxkTm9kZXM6IHt9LFxuICAgICAgaWQ6IFVVSUQuVVVJRCgpLFxuICAgICAgdGFnQXR0cmlidXRlczoge30sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJbml0aWFsaXplZCh1aURlZmluaXRpb25Db250YWluZXI6IFVJRGVmaW5pdGlvbkNvbnRhaW5lcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5pdGlhbGl6ZWQgJiYgISF1aURlZmluaXRpb25Db250YWluZXIuc291cmNlLnByb3BlcnRpZXM/LnBlcnNpc3RUZXN0U3RhdGU7XG4gIH1cbn1cbiJdfQ==
@@ -1,14 +1,24 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { map, noop, of, switchMap } from 'rxjs';
3
+ import { ConfigurationService } from '../modules/configuration/services/configuration.service';
4
+ import { FlowConfigurationService } from '../modules/flow-configuration/services/flow-configuration.service';
5
+ import { generateTransactionItem } from '../utils/transaction-item.utils';
3
6
  import { FlowInfoService } from './flow-info.service';
4
7
  import { FlowStateService } from './flow-state.service';
8
+ import { SalesTransactionService } from './sales-transaction.service';
5
9
  import * as i0 from "@angular/core";
6
10
  import * as i1 from "./flow-info.service";
7
11
  import * as i2 from "./flow-state.service";
12
+ import * as i3 from "../modules/configuration/services/configuration.service";
13
+ import * as i4 from "./sales-transaction.service";
14
+ import * as i5 from "../modules/flow-configuration/services/flow-configuration.service";
8
15
  export class FlowStateConfigurationService {
9
- constructor(flowInfoService, flowStateService) {
16
+ constructor(flowInfoService, flowStateService, configurationService, salesTransactionService, flowConfigurationService) {
10
17
  this.flowInfoService = flowInfoService;
11
18
  this.flowStateService = flowStateService;
19
+ this.configurationService = configurationService;
20
+ this.salesTransactionService = salesTransactionService;
21
+ this.flowConfigurationService = flowConfigurationService;
12
22
  }
13
23
  addToCart$(props) {
14
24
  let request$;
@@ -24,15 +34,47 @@ export class FlowStateConfigurationService {
24
34
  }
25
35
  }
26
36
  else {
27
- // TODO: Implement
28
- request$ = of();
37
+ request$ = this.configureExternal$(props);
29
38
  }
30
39
  return request$.pipe(switchMap(() => this.flowStateService.executeRequest$({}, true)), map(noop));
31
40
  }
41
+ configureExternal$(props) {
42
+ const { state } = this.salesTransactionService;
43
+ if (!state) {
44
+ return of();
45
+ }
46
+ const stateToConfigure = {
47
+ ...state,
48
+ salesTransaction: {
49
+ ...state.salesTransaction,
50
+ salesTransactionItems: [
51
+ {
52
+ ...generateTransactionItem(props.productId),
53
+ qty: props.qty ?? 1,
54
+ tagAttributes: props.attributesMap ?? {},
55
+ },
56
+ ],
57
+ },
58
+ };
59
+ return this.configurationService.justConfigureRequest$(stateToConfigure).pipe(switchMap(configurationResult => {
60
+ const state = this.salesTransactionService.state;
61
+ const addedProduct = configurationResult.salesTransaction.salesTransactionItems[0];
62
+ if (!state || !addedProduct) {
63
+ return of();
64
+ }
65
+ return this.flowConfigurationService.calculate$({
66
+ ...state,
67
+ salesTransaction: {
68
+ ...state.salesTransaction,
69
+ salesTransactionItems: [...state.salesTransaction.salesTransactionItems, addedProduct],
70
+ },
71
+ });
72
+ }));
73
+ }
32
74
  }
33
- FlowStateConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, deps: [{ token: i1.FlowInfoService }, { token: i2.FlowStateService }], target: i0.ɵɵFactoryTarget.Injectable });
75
+ FlowStateConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, deps: [{ token: i1.FlowInfoService }, { token: i2.FlowStateService }, { token: i3.ConfigurationService }, { token: i4.SalesTransactionService }, { token: i5.FlowConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
34
76
  FlowStateConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService });
35
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, decorators: [{
36
78
  type: Injectable
37
- }], ctorParameters: function () { return [{ type: i1.FlowInfoService }, { type: i2.FlowStateService }]; } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctc3RhdGUtY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFHeEQsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxZQUFvQixlQUFnQyxFQUFVLGdCQUFrQztRQUE1RSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQztJQUU3RixVQUFVLENBQUMsS0FBNEI7UUFDNUMsSUFBSSxRQUFRLENBQUM7UUFDYixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ2hFLElBQUksUUFBUSxFQUFFO1lBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztZQUM5QyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNaLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUNqQjtpQkFBTTtnQkFDTCxrQkFBa0I7Z0JBQ2xCLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUNqQjtTQUNGO2FBQU07WUFDTCxrQkFBa0I7WUFDbEIsUUFBUSxHQUFHLEVBQUUsRUFBRSxDQUFDO1NBQ2pCO1FBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNsQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFDaEUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUNWLENBQUM7SUFDSixDQUFDOzswSEF2QlUsNkJBQTZCOzhIQUE3Qiw2QkFBNkI7MkZBQTdCLDZCQUE2QjtrQkFEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcCwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTmV3Q29uZmlndXJhdGlvblByb3BzIH0gZnJvbSAnLi4vbW9kdWxlcy9jb25maWd1cmF0aW9uL3R5cGVzL2NvbmZpZ3VyYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgRmxvd0luZm9TZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBGbG93U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LXN0YXRlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvd1N0YXRlQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZsb3dJbmZvU2VydmljZTogRmxvd0luZm9TZXJ2aWNlLCBwcml2YXRlIGZsb3dTdGF0ZVNlcnZpY2U6IEZsb3dTdGF0ZVNlcnZpY2UpIHt9XG5cbiAgcHVibGljIGFkZFRvQ2FydCQocHJvcHM6IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGxldCByZXF1ZXN0JDtcbiAgICBjb25zdCBzdGF0ZWZ1bCA9IHRoaXMuZmxvd0luZm9TZXJ2aWNlLmZsb3c/LnByb3BlcnRpZXMuc3RhdGVmdWw7XG4gICAgaWYgKHN0YXRlZnVsKSB7XG4gICAgICBjb25zdCBzdGF0ZUlkID0gdGhpcy5mbG93U3RhdGVTZXJ2aWNlLnN0YXRlSWQ7XG4gICAgICBpZiAoIXN0YXRlSWQpIHtcbiAgICAgICAgcmVxdWVzdCQgPSBvZigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVE9ETzogSW1wbGVtZW50XG4gICAgICAgIHJlcXVlc3QkID0gb2YoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVE9ETzogSW1wbGVtZW50XG4gICAgICByZXF1ZXN0JCA9IG9mKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcXVlc3QkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5mbG93U3RhdGVTZXJ2aWNlLmV4ZWN1dGVSZXF1ZXN0JCh7fSwgdHJ1ZSkpLFxuICAgICAgbWFwKG5vb3ApLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
79
+ }], ctorParameters: function () { return [{ type: i1.FlowInfoService }, { type: i2.FlowStateService }, { type: i3.ConfigurationService }, { type: i4.SalesTransactionService }, { type: i5.FlowConfigurationService }]; } });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctc3RhdGUtY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUUvRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7QUFHdEUsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxZQUNVLGVBQWdDLEVBQ2hDLGdCQUFrQyxFQUNsQyxvQkFBMEMsRUFDMUMsdUJBQWdELEVBQ2hELHdCQUFrRDtRQUpsRCxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtJQUN6RCxDQUFDO0lBRUcsVUFBVSxDQUFDLEtBQTRCO1FBQzVDLElBQUksUUFBNkIsQ0FBQztRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ2hFLElBQUksUUFBUSxFQUFFO1lBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztZQUM5QyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNaLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUNqQjtpQkFBTTtnQkFDTCxrQkFBa0I7Z0JBQ2xCLFFBQVEsR0FBRyxFQUFFLEVBQUUsQ0FBQzthQUNqQjtTQUNGO2FBQU07WUFDTCxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUNsQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFDaEUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUNWLENBQUM7SUFDSixDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBNEI7UUFDckQsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxFQUFFLEVBQUUsQ0FBQztTQUNiO1FBQ0QsTUFBTSxnQkFBZ0IsR0FBdUI7WUFDM0MsR0FBRyxLQUFLO1lBQ1IsZ0JBQWdCLEVBQUU7Z0JBQ2hCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQjtnQkFDekIscUJBQXFCLEVBQUU7b0JBQ3JCO3dCQUNFLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQzt3QkFDM0MsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQzt3QkFDbkIsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksRUFBRTtxQkFDekM7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FDM0UsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQztZQUNqRCxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUMzQixPQUFPLEVBQUUsRUFBRSxDQUFDO2FBQ2I7WUFFRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUM7Z0JBQzlDLEdBQUcsS0FBSztnQkFDUixnQkFBZ0IsRUFBRTtvQkFDaEIsR0FBRyxLQUFLLENBQUMsZ0JBQWdCO29CQUN6QixxQkFBcUIsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLFlBQVksQ0FBQztpQkFDdkY7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7MEhBbEVVLDZCQUE2Qjs4SEFBN0IsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7a0JBRHpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkNvbnRleHQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IG1hcCwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcyB9IGZyb20gJy4uL21vZHVsZXMvY29uZmlndXJhdGlvbi90eXBlcy9jb25maWd1cmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL21vZHVsZXMvZmxvdy1jb25maWd1cmF0aW9uL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtIH0gZnJvbSAnLi4vdXRpbHMvdHJhbnNhY3Rpb24taXRlbS51dGlscyc7XG5pbXBvcnQgeyBGbG93SW5mb1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctaW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2Zsb3ctc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBTYWxlc1RyYW5zYWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2FsZXMtdHJhbnNhY3Rpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93U3RhdGVDb25maWd1cmF0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FsZXNUcmFuc2FjdGlvblNlcnZpY2U6IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgYWRkVG9DYXJ0JChwcm9wczogTmV3Q29uZmlndXJhdGlvblByb3BzKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgbGV0IHJlcXVlc3QkOiBPYnNlcnZhYmxlPHVua25vd24+O1xuICAgIGNvbnN0IHN0YXRlZnVsID0gdGhpcy5mbG93SW5mb1NlcnZpY2UuZmxvdz8ucHJvcGVydGllcy5zdGF0ZWZ1bDtcbiAgICBpZiAoc3RhdGVmdWwpIHtcbiAgICAgIGNvbnN0IHN0YXRlSWQgPSB0aGlzLmZsb3dTdGF0ZVNlcnZpY2Uuc3RhdGVJZDtcbiAgICAgIGlmICghc3RhdGVJZCkge1xuICAgICAgICByZXF1ZXN0JCA9IG9mKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUT0RPOiBJbXBsZW1lbnRcbiAgICAgICAgcmVxdWVzdCQgPSBvZigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0JCA9IHRoaXMuY29uZmlndXJlRXh0ZXJuYWwkKHByb3BzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWVzdCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmZsb3dTdGF0ZVNlcnZpY2UuZXhlY3V0ZVJlcXVlc3QkKHt9LCB0cnVlKSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRXh0ZXJuYWwkKHByb3BzOiBOZXdDb25maWd1cmF0aW9uUHJvcHMpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCB7IHN0YXRlIH0gPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlO1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cbiAgICBjb25zdCBzdGF0ZVRvQ29uZmlndXJlOiBUcmFuc2FjdGlvbkNvbnRleHQgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbixcbiAgICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0ocHJvcHMucHJvZHVjdElkKSxcbiAgICAgICAgICAgIHF0eTogcHJvcHMucXR5ID8/IDEsXG4gICAgICAgICAgICB0YWdBdHRyaWJ1dGVzOiBwcm9wcy5hdHRyaWJ1dGVzTWFwID8/IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5qdXN0Q29uZmlndXJlUmVxdWVzdCQoc3RhdGVUb0NvbmZpZ3VyZSkucGlwZShcbiAgICAgIHN3aXRjaE1hcChjb25maWd1cmF0aW9uUmVzdWx0ID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlO1xuICAgICAgICBjb25zdCBhZGRlZFByb2R1Y3QgPSBjb25maWd1cmF0aW9uUmVzdWx0LnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zWzBdO1xuICAgICAgICBpZiAoIXN0YXRlIHx8ICFhZGRlZFByb2R1Y3QpIHtcbiAgICAgICAgICByZXR1cm4gb2YoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBzYWxlc1RyYW5zYWN0aW9uOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5zYWxlc1RyYW5zYWN0aW9uLFxuICAgICAgICAgICAgc2FsZXNUcmFuc2FjdGlvbkl0ZW1zOiBbLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXMsIGFkZGVkUHJvZHVjdF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=