@o3r/third-party 11.6.0-prerelease.7 → 11.6.0-prerelease.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- import { Observable } from 'rxjs';
2
1
  import type { Logger } from '@o3r/core';
2
+ import { Observable } from 'rxjs';
3
3
  /**
4
4
  * Shared interface with the A/B testing provider
5
5
  */
@@ -55,6 +55,7 @@ export declare class AbTestBridge<T> implements AbTestBridgeInterface<T> {
55
55
  */
56
56
  experiments$: Observable<T[]>;
57
57
  /**
58
+ * AbTestBridge constructor
58
59
  * @param isExperimentEqual check two different experiments match to identify an experiment to start or to stop
59
60
  * @param options configure the communication with the A/B testing third party provider
60
61
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ab-testing-bridge.d.ts","sourceRoot":"","sources":["../../../src/bridge/ab-testing/ab-testing-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACkC,UAAU,EAClD,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC;;OAEG;IACH,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IAClC;;OAEG;IACH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB;AAWD;;;;;;GAMG;AACH,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,qBAAqB,CAAC,CAAC,CAAC;IAkBlD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAjB9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsD;IACzF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C;;OAEG;IACI,YAAY,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IAErC;;;OAGG;gBAC0B,iBAAiB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAmB1H;;;OAGG;IACH,OAAO,CAAC,GAAG;IAIX;;OAEG;IACI,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE;IAUjC;;OAEG;IACI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;CAYlC"}
1
+ {"version":3,"file":"ab-testing-bridge.d.ts","sourceRoot":"","sources":["../../../src/bridge/ab-testing/ab-testing-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACP,MAAM,WAAW,CAAC;AACnB,OAAO,EAGL,UAAU,EACX,MAAM,MAAM,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC;;OAEG;IACH,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IAClC;;OAEG;IACH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB;AAWD;;;;;;GAMG;AACH,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,qBAAqB,CAAC,CAAC,CAAC;IAmBlD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAlB9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsD;IACzF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C;;OAEG;IACI,YAAY,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IAErC;;;;OAIG;gBAC0B,iBAAiB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAkB1H;;;OAGG;IACH,OAAO,CAAC,GAAG;IAIX;;OAEG;IACI,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE;IAYjC;;OAEG;IACI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;CAYlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/bridge/iframe/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,UAAU,EAAC,MAAM,MAAM,CAAC;AAG3D,OAAO,EAAC,mBAAmB,EAAE,aAAa,EAAE,qBAAqB,EAAC,MAAM,aAAa,CAAC;AAGtF;;;GAGG;AACH,qBAAa,YAAY;IAoBK,OAAO,CAAC,QAAQ,CAAC,KAAK;IAlBlD,oIAAoI;IACpI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoC;IAEtE,uGAAuG;IACvG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAgB;IAElD,wDAAwD;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAE9C;;;OAGG;IACH,SAAgB,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAEjD,MAAM,EAAE,MAAM,EAAmB,KAAK,EAAE,iBAAiB,EAAE,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAM;YAoBnG,SAAS;IAavB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,8BAA8B;IAYtC;;;;OAIG;IACU,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM;IAKnE;;;;OAIG;IACU,6BAA6B,CAAC,OAAO,EAAE,aAAa,EAAE,mBAAmB,GAAE,MAAgD;CAIzI"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/bridge/iframe/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACX,MAAM,MAAM,CAAC;AAUd,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAMrB;;;GAGG;AACH,qBAAa,YAAY;IAmBK,OAAO,CAAC,QAAQ,CAAC,KAAK;IAlBlD,oIAAoI;IACpI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,uEAAuE;IACvE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoC;IAEtE,uGAAuG;IACvG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAgB;IAElD,wDAAwD;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAE9C;;;OAGG;IACH,SAAgB,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,CAAC;gBAEjD,MAAM,EAAE,MAAM,EAAmB,KAAK,EAAE,iBAAiB,EAAE,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAM;YAoBnG,SAAS;IAavB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,8BAA8B;IAYtC;;;;OAIG;IACU,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM;IAKnE;;;;OAIG;IACU,6BAA6B,CAAC,OAAO,EAAE,aAAa,EAAE,mBAAmB,GAAE,MAAgD;CAIzI"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/bridge/iframe/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzE;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,mBAI3C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,qBAAqB,CAKjF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,SAAK,UA8E7E"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/bridge/iframe/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,mBAI3C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,qBAAqB,CAKjF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,SAAK,UA8E7E"}
@@ -1,4 +1,4 @@
1
- import { BehaviorSubject, distinctUntilChanged } from 'rxjs';
1
+ import { BehaviorSubject, distinctUntilChanged, } from 'rxjs';
2
2
  /**
3
3
  * Default options that will represent the interface
4
4
  */
@@ -16,6 +16,7 @@ const defaultOptions = {
16
16
  */
17
17
  export class AbTestBridge {
18
18
  /**
19
+ * AbTestBridge constructor
19
20
  * @param isExperimentEqual check two different experiments match to identify an experiment to start or to stop
20
21
  * @param options configure the communication with the A/B testing third party provider
21
22
  */
@@ -30,12 +31,11 @@ export class AbTestBridge {
30
31
  ...defaultOptions,
31
32
  ...options
32
33
  };
33
- if (!window[this.options.bridgeName]) {
34
- // eslint-disable-next-line @typescript-eslint/dot-notation, dot-notation
35
- window[this.options.bridgeName] = { start: this.start.bind(this), stop: this.stop.bind(this) };
34
+ if (window[this.options.bridgeName]) {
35
+ this.log(`An instance of ${this.options.bridgeName} already exists. This AbTestBridge instance will be ignored`);
36
36
  }
37
37
  else {
38
- this.log(`An instance of ${this.options.bridgeName} already exists. This AbTestBridge instance will be ignored`);
38
+ window[this.options.bridgeName] = { start: this.start.bind(this), stop: this.stop.bind(this) };
39
39
  }
40
40
  document.dispatchEvent(new CustomEvent(this.options.readyEventName));
41
41
  }
@@ -54,7 +54,9 @@ export class AbTestBridge {
54
54
  const currentProfile = this.experimentSubject$.getValue();
55
55
  this.experimentSubject$.next([
56
56
  ...currentProfile,
57
- ...(Array.isArray(experiments) ? experiments : [experiments]).filter((exp) => !currentProfile.find((expB) => this.isExperimentEqual(exp, expB)))
57
+ ...(Array.isArray(experiments)
58
+ ? experiments
59
+ : [experiments]).filter((exp) => !currentProfile.some((expB) => this.isExperimentEqual(exp, expB)))
58
60
  ]);
59
61
  }
60
62
  /**
@@ -65,7 +67,7 @@ export class AbTestBridge {
65
67
  const currentExperiments = this.experimentSubject$.getValue();
66
68
  if (experiments) {
67
69
  // Stop the mentioned experiment
68
- this.experimentSubject$.next(currentExperiments.filter((expB) => !(Array.isArray(experiments) ? experiments : [experiments]).some(expA => this.isExperimentEqual(expB, expA))));
70
+ this.experimentSubject$.next(currentExperiments.filter((expB) => !(Array.isArray(experiments) ? experiments : [experiments]).some((expA) => this.isExperimentEqual(expB, expA))));
69
71
  }
70
72
  else {
71
73
  // Stop all the experiment
@@ -73,4 +75,4 @@ export class AbTestBridge {
73
75
  }
74
76
  }
75
77
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWItdGVzdGluZy1icmlkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYnJpZGdlL2FiLXRlc3RpbmcvYWItdGVzdGluZy1icmlkZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFBRSxvQkFBb0IsRUFDdEMsTUFBTSxNQUFNLENBQUM7QUFzQ2Q7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBdUI7SUFDekMsVUFBVSxFQUFFLGNBQWM7SUFDMUIsY0FBYyxFQUFFLGVBQWU7SUFDL0IsTUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBY3ZCOzs7T0FHRztJQUNILFlBQTZCLGlCQUFzRCxFQUFFLE9BQXFDO1FBQTdGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUM7UUFqQm5GOztXQUVHO1FBQ2MsdUJBQWtCLEdBQXlCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBZXZGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FDOUMsb0JBQW9CLENBQUMsQ0FBQyxZQUFpQixFQUFFLFlBQWlCLEVBQUUsRUFBRSxDQUM1RCxZQUFZLENBQUMsTUFBTSxLQUFLLFlBQVksQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQzdILENBQUMsQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLEdBQUcsY0FBYztZQUNqQixHQUFHLE9BQU87U0FDWCxDQUFDO1FBQ0YsSUFBSSxDQUFFLE1BQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDOUMseUVBQXlFO1lBQ3hFLE1BQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDO1FBQ3hHLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLDZEQUE2RCxDQUFDLENBQUM7UUFDbkgsQ0FBQztRQUNELFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7O09BR0c7SUFDSyxHQUFHLENBQUMsR0FBRyxJQUFXO1FBQ3hCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxXQUFvQjtRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1lBQzNCLEdBQUcsY0FBYztZQUNqQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDM0UsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDeEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLFdBQXFCO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDekMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixnQ0FBZ0M7WUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDaEwsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGVcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7TG9nZ2VyfSBmcm9tICdAbzNyL2NvcmUnO1xuXG4vKipcbiAqIFNoYXJlZCBpbnRlcmZhY2Ugd2l0aCB0aGUgQS9CIHRlc3RpbmcgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYlRlc3RCcmlkZ2VJbnRlcmZhY2U8VD4ge1xuICAvKipcbiAgICogU3RhcnQgYW4gQUIgdGVzdGluZyBleHBlcmltZW50XG4gICAqL1xuICBzdGFydChleHBlcmltZW50czogVCB8IFRbXSk6IHZvaWQ7XG4gIC8qKlxuICAgKiBTdG9wIGFuIEFCIHRlc3RpbmcgZXhwZXJpbWVudFxuICAgKi9cbiAgc3RvcChleHBlcmltZW50cz86IFQgfCBUW10pOiB2b2lkO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyZSB0aGUgQS9CIHRlc3Rpbmcgc2NyaXB0IGludGVyZmFjZXMgd2l0aCB0aGUgYXBwbGljYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYlRlc3RCcmlkZ2VDb25maWcge1xuICAvKipcbiAgICogUmVmZXJlbmNlIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGJyaWRnZSBmcm9tIHRoZSB3aW5kb3dcbiAgICogQGRlZmF1bHQgJ2FiVGVzdEJyaWRnZSdcbiAgICovXG4gIGJyaWRnZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERlYnVnIGxvZ2dlclxuICAgKiBAZGVmYXVsdCBjb25zb2xlXG4gICAqL1xuICBsb2dnZXI6IExvZ2dlcjtcbiAgLyoqXG4gICAqIEV2ZW50IGEgdGhpcmQgcGFydHkgY2FuIHN1YnNjcmliZSB0byBiZWZvcmUgc3RhcnRpbmcgdGhlIGNvbW11bmljYXRpb24gd2l0aCB0aGUgYnJpZGdlXG4gICAqIEBkZWZhdWx0ICdhYi10ZXN0LXJlYWR5J1xuICAgKi9cbiAgcmVhZHlFdmVudE5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZhdWx0IG9wdGlvbnMgdGhhdCB3aWxsIHJlcHJlc2VudCB0aGUgaW50ZXJmYWNlXG4gKi9cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBBYlRlc3RCcmlkZ2VDb25maWcgPSB7XG4gIGJyaWRnZU5hbWU6ICdhYlRlc3RCcmlkZ2UnLFxuICByZWFkeUV2ZW50TmFtZTogJ2FiLXRlc3QtcmVhZHknLFxuICBsb2dnZXI6IGNvbnNvbGVcbn07XG5cbi8qKlxuICogQnJpZGdlIGJldHdlZW4gdGhlIGFwcGxpY2F0aW9uIGFuZCBhIHRoaXJkIHBhcnR5IEEvQiB0ZXN0aW5nIHByb3ZpZGVyLlxuICogRXhwb3NlcyBhIHN0YXJ0IGFuZCBzdG9wIG1ldGhvZHMgdG8gYWxsb3cgdGhlIGV4dGVybmFsIHNjcmlwdCB0byBzZXQgdGhlIGxpc3Qgb2YgZXhwZXJpbWVudHMgdG8gcnVuIG92ZXIgdGhlXG4gKiBhcHBsaWNhdGlvbi5cbiAqXG4gKiBTaGFyZSB0aGUgcmVzdWx0aW5nIGxpc3Qgb2YgZXhwZXJpbWVudHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgYXBwbGljYXRpb24gdmlhIGFuIG9ic2VydmFibGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYlRlc3RCcmlkZ2U8VD4gaW1wbGVtZW50cyBBYlRlc3RCcmlkZ2VJbnRlcmZhY2U8VD4ge1xuICAvKipcbiAgICogQmVoYXZpb3VyIHN1YmplY3QgdG8gY29udHJvbCB0aGUgZXhwZXJpbWVudHMgdmlhIHRoZSBleHBvc2VkIGludGVyZmFjZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBleHBlcmltZW50U3ViamVjdCQ6IEJlaGF2aW9yU3ViamVjdDxUW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcbiAgLyoqXG4gICAqIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIEFCIFRlc3RpbmcgYnJpZGdlIGFuZCB0aGlyZCBwYXJ0aWVzXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IEFiVGVzdEJyaWRnZUNvbmZpZztcbiAgLyoqXG4gICAqIE9ic2VydmFibGUgd2l0aCB0aGUgbGlzdCBvZiBBQiB0ZXN0aW5nIGV4cGVyaW1lbnRzIGN1cnJlbnRseSBhcHBsaWVkXG4gICAqL1xuICBwdWJsaWMgZXhwZXJpbWVudHMkOiBPYnNlcnZhYmxlPFRbXT47XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBpc0V4cGVyaW1lbnRFcXVhbCBjaGVjayB0d28gZGlmZmVyZW50IGV4cGVyaW1lbnRzIG1hdGNoIHRvIGlkZW50aWZ5IGFuIGV4cGVyaW1lbnQgdG8gc3RhcnQgb3IgdG8gc3RvcFxuICAgKiBAcGFyYW0gb3B0aW9ucyBjb25maWd1cmUgdGhlIGNvbW11bmljYXRpb24gd2l0aCB0aGUgQS9CIHRlc3RpbmcgdGhpcmQgcGFydHkgcHJvdmlkZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaXNFeHBlcmltZW50RXF1YWw6ICh2YWx1ZTE/OiBULCB2YWx1ZTI/OiBUKSA9PiBib29sZWFuLCBvcHRpb25zPzogUGFydGlhbDxBYlRlc3RCcmlkZ2VDb25maWc+KSB7XG4gICAgdGhpcy5leHBlcmltZW50cyQgPSB0aGlzLmV4cGVyaW1lbnRTdWJqZWN0JC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGV4cGVyaW1lbnRzQTogVFtdLCBleHBlcmltZW50c0I6IFRbXSkgPT5cbiAgICAgICAgZXhwZXJpbWVudHNCLmxlbmd0aCA9PT0gZXhwZXJpbWVudHNBLmxlbmd0aCAmJiBleHBlcmltZW50c0EuZXZlcnkoKGVBKSA9PiBleHBlcmltZW50c0IuZmluZCgoZUIpID0+IGlzRXhwZXJpbWVudEVxdWFsKGVBLCBlQikpXG4gICAgICAgICkpXG4gICAgKTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuICAgIGlmICghKHdpbmRvdyBhcyBhbnkpW3RoaXMub3B0aW9ucy5icmlkZ2VOYW1lXSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb24sIGRvdC1ub3RhdGlvblxuICAgICAgKHdpbmRvdyBhcyBhbnkpW3RoaXMub3B0aW9ucy5icmlkZ2VOYW1lXSA9IHtzdGFydDogdGhpcy5zdGFydC5iaW5kKHRoaXMpLCBzdG9wOiB0aGlzLnN0b3AuYmluZCh0aGlzKX07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nKGBBbiBpbnN0YW5jZSBvZiAke3RoaXMub3B0aW9ucy5icmlkZ2VOYW1lfSBhbHJlYWR5IGV4aXN0cy4gVGhpcyBBYlRlc3RCcmlkZ2UgaW5zdGFuY2Ugd2lsbCBiZSBpZ25vcmVkYCk7XG4gICAgfVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KHRoaXMub3B0aW9ucy5yZWFkeUV2ZW50TmFtZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBjb25maWd1cmVkIGxvZ2dlciB0byBsb2cgQUIgdGVzdGluZyByZWxhdGVkIGluZm9ybWF0aW9uXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqL1xuICBwcml2YXRlIGxvZyguLi5hcmdzOiBhbnlbXSkge1xuICAgICh0aGlzLm9wdGlvbnMubG9nZ2VyLmRlYnVnIHx8IHRoaXMub3B0aW9ucy5sb2dnZXIubG9nKSgnQS9CIFRlc3QnLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgcHVibGljIHN0YXJ0KGV4cGVyaW1lbnRzOiBUIHwgVFtdKSB7XG4gICAgdGhpcy5sb2coJ1N0YXJ0IGV4cGVyaW1lbnQnLCBleHBlcmltZW50cyk7XG4gICAgY29uc3QgY3VycmVudFByb2ZpbGUgPSB0aGlzLmV4cGVyaW1lbnRTdWJqZWN0JC5nZXRWYWx1ZSgpO1xuICAgIHRoaXMuZXhwZXJpbWVudFN1YmplY3QkLm5leHQoW1xuICAgICAgLi4uY3VycmVudFByb2ZpbGUsXG4gICAgICAuLi4oQXJyYXkuaXNBcnJheShleHBlcmltZW50cykgPyBleHBlcmltZW50cyA6IFtleHBlcmltZW50c10pLmZpbHRlcigoZXhwKSA9PlxuICAgICAgICAhY3VycmVudFByb2ZpbGUuZmluZCgoZXhwQjogVCkgPT4gdGhpcy5pc0V4cGVyaW1lbnRFcXVhbChleHAsIGV4cEIpKSlcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgcHVibGljIHN0b3AoZXhwZXJpbWVudHM/OiBUIHwgVFtdKSB7XG4gICAgdGhpcy5sb2coJ1N0b3AgZXhwZXJpbWVudCcsIGV4cGVyaW1lbnRzKTtcbiAgICBjb25zdCBjdXJyZW50RXhwZXJpbWVudHMgPSB0aGlzLmV4cGVyaW1lbnRTdWJqZWN0JC5nZXRWYWx1ZSgpO1xuICAgIGlmIChleHBlcmltZW50cykge1xuICAgICAgLy8gU3RvcCB0aGUgbWVudGlvbmVkIGV4cGVyaW1lbnRcbiAgICAgIHRoaXMuZXhwZXJpbWVudFN1YmplY3QkLm5leHQoY3VycmVudEV4cGVyaW1lbnRzLmZpbHRlcigoZXhwQjogVCkgPT4gIShBcnJheS5pc0FycmF5KGV4cGVyaW1lbnRzKSA/IGV4cGVyaW1lbnRzIDogW2V4cGVyaW1lbnRzXSkuc29tZShleHBBID0+IHRoaXMuaXNFeHBlcmltZW50RXF1YWwoZXhwQiwgZXhwQSkpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU3RvcCBhbGwgdGhlIGV4cGVyaW1lbnRcbiAgICAgIHRoaXMuZXhwZXJpbWVudFN1YmplY3QkLm5leHQoW10pO1xuICAgIH1cbiAgfVxufVxuIl19
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWItdGVzdGluZy1icmlkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYnJpZGdlL2FiLXRlc3RpbmcvYWItdGVzdGluZy1icmlkZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUNMLGVBQWUsRUFDZixvQkFBb0IsR0FFckIsTUFBTSxNQUFNLENBQUM7QUFxQ2Q7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBdUI7SUFDekMsVUFBVSxFQUFFLGNBQWM7SUFDMUIsY0FBYyxFQUFFLGVBQWU7SUFDL0IsTUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBY3ZCOzs7O09BSUc7SUFDSCxZQUE2QixpQkFBc0QsRUFBRSxPQUFxQztRQUE3RixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFDO1FBbEJuRjs7V0FFRztRQUNjLHVCQUFrQixHQUF5QixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQWdCdkYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUM5QyxvQkFBb0IsQ0FBQyxDQUFDLFlBQWlCLEVBQUUsWUFBaUIsRUFBRSxFQUFFLENBQzVELFlBQVksQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDN0gsQ0FBQyxDQUNMLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRyxjQUFjO1lBQ2pCLEdBQUcsT0FBTztTQUNYLENBQUM7UUFDRixJQUFLLE1BQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLDZEQUE2RCxDQUFDLENBQUM7UUFDbkgsQ0FBQzthQUFNLENBQUM7WUFDTCxNQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMxRyxDQUFDO1FBQ0QsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEdBQUcsQ0FBQyxHQUFHLElBQVc7UUFDeEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFdBQW9CO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7WUFDM0IsR0FBRyxjQUFjO1lBQ2pCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLFdBQVc7Z0JBQ2IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUN0RztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUksQ0FBQyxXQUFxQjtRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsZ0NBQWdDO1lBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDbEwsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgTG9nZ2VyLFxufSBmcm9tICdAbzNyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgT2JzZXJ2YWJsZSxcbn0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU2hhcmVkIGludGVyZmFjZSB3aXRoIHRoZSBBL0IgdGVzdGluZyBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFiVGVzdEJyaWRnZUludGVyZmFjZTxUPiB7XG4gIC8qKlxuICAgKiBTdGFydCBhbiBBQiB0ZXN0aW5nIGV4cGVyaW1lbnRcbiAgICovXG4gIHN0YXJ0KGV4cGVyaW1lbnRzOiBUIHwgVFtdKTogdm9pZDtcbiAgLyoqXG4gICAqIFN0b3AgYW4gQUIgdGVzdGluZyBleHBlcmltZW50XG4gICAqL1xuICBzdG9wKGV4cGVyaW1lbnRzPzogVCB8IFRbXSk6IHZvaWQ7XG59XG5cbi8qKlxuICogQ29uZmlndXJlIHRoZSBBL0IgdGVzdGluZyBzY3JpcHQgaW50ZXJmYWNlcyB3aXRoIHRoZSBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFiVGVzdEJyaWRnZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgYnJpZGdlIGZyb20gdGhlIHdpbmRvd1xuICAgKiBAZGVmYXVsdCAnYWJUZXN0QnJpZGdlJ1xuICAgKi9cbiAgYnJpZGdlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogRGVidWcgbG9nZ2VyXG4gICAqIEBkZWZhdWx0IGNvbnNvbGVcbiAgICovXG4gIGxvZ2dlcjogTG9nZ2VyO1xuICAvKipcbiAgICogRXZlbnQgYSB0aGlyZCBwYXJ0eSBjYW4gc3Vic2NyaWJlIHRvIGJlZm9yZSBzdGFydGluZyB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBicmlkZ2VcbiAgICogQGRlZmF1bHQgJ2FiLXRlc3QtcmVhZHknXG4gICAqL1xuICByZWFkeUV2ZW50TmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlZmF1bHQgb3B0aW9ucyB0aGF0IHdpbGwgcmVwcmVzZW50IHRoZSBpbnRlcmZhY2VcbiAqL1xuY29uc3QgZGVmYXVsdE9wdGlvbnM6IEFiVGVzdEJyaWRnZUNvbmZpZyA9IHtcbiAgYnJpZGdlTmFtZTogJ2FiVGVzdEJyaWRnZScsXG4gIHJlYWR5RXZlbnROYW1lOiAnYWItdGVzdC1yZWFkeScsXG4gIGxvZ2dlcjogY29uc29sZVxufTtcblxuLyoqXG4gKiBCcmlkZ2UgYmV0d2VlbiB0aGUgYXBwbGljYXRpb24gYW5kIGEgdGhpcmQgcGFydHkgQS9CIHRlc3RpbmcgcHJvdmlkZXIuXG4gKiBFeHBvc2VzIGEgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0byBhbGxvdyB0aGUgZXh0ZXJuYWwgc2NyaXB0IHRvIHNldCB0aGUgbGlzdCBvZiBleHBlcmltZW50cyB0byBydW4gb3ZlciB0aGVcbiAqIGFwcGxpY2F0aW9uLlxuICpcbiAqIFNoYXJlIHRoZSByZXN1bHRpbmcgbGlzdCBvZiBleHBlcmltZW50cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBhcHBsaWNhdGlvbiB2aWEgYW4gb2JzZXJ2YWJsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFiVGVzdEJyaWRnZTxUPiBpbXBsZW1lbnRzIEFiVGVzdEJyaWRnZUludGVyZmFjZTxUPiB7XG4gIC8qKlxuICAgKiBCZWhhdmlvdXIgc3ViamVjdCB0byBjb250cm9sIHRoZSBleHBlcmltZW50cyB2aWEgdGhlIGV4cG9zZWQgaW50ZXJmYWNlXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGV4cGVyaW1lbnRTdWJqZWN0JDogQmVoYXZpb3JTdWJqZWN0PFRbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xuICAvKipcbiAgICogT3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgQUIgVGVzdGluZyBicmlkZ2UgYW5kIHRoaXJkIHBhcnRpZXNcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQWJUZXN0QnJpZGdlQ29uZmlnO1xuICAvKipcbiAgICogT2JzZXJ2YWJsZSB3aXRoIHRoZSBsaXN0IG9mIEFCIHRlc3RpbmcgZXhwZXJpbWVudHMgY3VycmVudGx5IGFwcGxpZWRcbiAgICovXG4gIHB1YmxpYyBleHBlcmltZW50cyQ6IE9ic2VydmFibGU8VFtdPjtcblxuICAvKipcbiAgICogQWJUZXN0QnJpZGdlIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBpc0V4cGVyaW1lbnRFcXVhbCBjaGVjayB0d28gZGlmZmVyZW50IGV4cGVyaW1lbnRzIG1hdGNoIHRvIGlkZW50aWZ5IGFuIGV4cGVyaW1lbnQgdG8gc3RhcnQgb3IgdG8gc3RvcFxuICAgKiBAcGFyYW0gb3B0aW9ucyBjb25maWd1cmUgdGhlIGNvbW11bmljYXRpb24gd2l0aCB0aGUgQS9CIHRlc3RpbmcgdGhpcmQgcGFydHkgcHJvdmlkZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaXNFeHBlcmltZW50RXF1YWw6ICh2YWx1ZTE/OiBULCB2YWx1ZTI/OiBUKSA9PiBib29sZWFuLCBvcHRpb25zPzogUGFydGlhbDxBYlRlc3RCcmlkZ2VDb25maWc+KSB7XG4gICAgdGhpcy5leHBlcmltZW50cyQgPSB0aGlzLmV4cGVyaW1lbnRTdWJqZWN0JC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGV4cGVyaW1lbnRzQTogVFtdLCBleHBlcmltZW50c0I6IFRbXSkgPT5cbiAgICAgICAgZXhwZXJpbWVudHNCLmxlbmd0aCA9PT0gZXhwZXJpbWVudHNBLmxlbmd0aCAmJiBleHBlcmltZW50c0EuZXZlcnkoKGVBKSA9PiBleHBlcmltZW50c0IuZmluZCgoZUIpID0+IGlzRXhwZXJpbWVudEVxdWFsKGVBLCBlQikpXG4gICAgICAgICkpXG4gICAgKTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuICAgIGlmICgod2luZG93IGFzIGFueSlbdGhpcy5vcHRpb25zLmJyaWRnZU5hbWVdKSB7XG4gICAgICB0aGlzLmxvZyhgQW4gaW5zdGFuY2Ugb2YgJHt0aGlzLm9wdGlvbnMuYnJpZGdlTmFtZX0gYWxyZWFkeSBleGlzdHMuIFRoaXMgQWJUZXN0QnJpZGdlIGluc3RhbmNlIHdpbGwgYmUgaWdub3JlZGApO1xuICAgIH0gZWxzZSB7XG4gICAgICAod2luZG93IGFzIGFueSlbdGhpcy5vcHRpb25zLmJyaWRnZU5hbWVdID0geyBzdGFydDogdGhpcy5zdGFydC5iaW5kKHRoaXMpLCBzdG9wOiB0aGlzLnN0b3AuYmluZCh0aGlzKSB9O1xuICAgIH1cbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCh0aGlzLm9wdGlvbnMucmVhZHlFdmVudE5hbWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgY29uZmlndXJlZCBsb2dnZXIgdG8gbG9nIEFCIHRlc3RpbmcgcmVsYXRlZCBpbmZvcm1hdGlvblxuICAgKiBAcGFyYW0gYXJnc1xuICAgKi9cbiAgcHJpdmF0ZSBsb2coLi4uYXJnczogYW55W10pIHtcbiAgICAodGhpcy5vcHRpb25zLmxvZ2dlci5kZWJ1ZyB8fCB0aGlzLm9wdGlvbnMubG9nZ2VyLmxvZykoJ0EvQiBUZXN0JywgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIHB1YmxpYyBzdGFydChleHBlcmltZW50czogVCB8IFRbXSkge1xuICAgIHRoaXMubG9nKCdTdGFydCBleHBlcmltZW50JywgZXhwZXJpbWVudHMpO1xuICAgIGNvbnN0IGN1cnJlbnRQcm9maWxlID0gdGhpcy5leHBlcmltZW50U3ViamVjdCQuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLmV4cGVyaW1lbnRTdWJqZWN0JC5uZXh0KFtcbiAgICAgIC4uLmN1cnJlbnRQcm9maWxlLFxuICAgICAgLi4uKEFycmF5LmlzQXJyYXkoZXhwZXJpbWVudHMpXG4gICAgICAgID8gZXhwZXJpbWVudHNcbiAgICAgICAgOiBbZXhwZXJpbWVudHNdKS5maWx0ZXIoKGV4cCkgPT4gIWN1cnJlbnRQcm9maWxlLnNvbWUoKGV4cEI6IFQpID0+IHRoaXMuaXNFeHBlcmltZW50RXF1YWwoZXhwLCBleHBCKSlcbiAgICAgIClcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgcHVibGljIHN0b3AoZXhwZXJpbWVudHM/OiBUIHwgVFtdKSB7XG4gICAgdGhpcy5sb2coJ1N0b3AgZXhwZXJpbWVudCcsIGV4cGVyaW1lbnRzKTtcbiAgICBjb25zdCBjdXJyZW50RXhwZXJpbWVudHMgPSB0aGlzLmV4cGVyaW1lbnRTdWJqZWN0JC5nZXRWYWx1ZSgpO1xuICAgIGlmIChleHBlcmltZW50cykge1xuICAgICAgLy8gU3RvcCB0aGUgbWVudGlvbmVkIGV4cGVyaW1lbnRcbiAgICAgIHRoaXMuZXhwZXJpbWVudFN1YmplY3QkLm5leHQoY3VycmVudEV4cGVyaW1lbnRzLmZpbHRlcigoZXhwQjogVCkgPT4gIShBcnJheS5pc0FycmF5KGV4cGVyaW1lbnRzKSA/IGV4cGVyaW1lbnRzIDogW2V4cGVyaW1lbnRzXSkuc29tZSgoZXhwQSkgPT4gdGhpcy5pc0V4cGVyaW1lbnRFcXVhbChleHBCLCBleHBBKSkpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdG9wIGFsbCB0aGUgZXhwZXJpbWVudFxuICAgICAgdGhpcy5leHBlcmltZW50U3ViamVjdCQubmV4dChbXSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
- import { firstValueFrom, fromEvent } from 'rxjs';
2
- import { v4 } from 'uuid';
3
- import { filter, map, share, timeout } from 'rxjs/operators';
4
- import { IFRAME_BRIDGE_DEFAULT_OPTIONS, isSupportedMessage } from './helpers';
1
+ import { firstValueFrom, fromEvent, } from 'rxjs';
2
+ import { filter, map, share, timeout, } from 'rxjs/operators';
3
+ import { v4, } from 'uuid';
4
+ import { IFRAME_BRIDGE_DEFAULT_OPTIONS, isSupportedMessage, } from './helpers';
5
5
  /**
6
6
  * Bridge that exposes an easy abstraction layer to communicate between a Host and an IFrame using the
7
7
  * postMessage API.
@@ -32,7 +32,7 @@ export class IframeBridge {
32
32
  }
33
33
  catch { }
34
34
  }
35
- return Promise.reject('Handshake failed.');
35
+ throw new Error('Handshake failed.');
36
36
  }
37
37
  _sendMessage(message, messageId) {
38
38
  if (this.child.contentWindow) {
@@ -64,4 +64,4 @@ export class IframeBridge {
64
64
  return this._sendMessageAndWaitForResponse(message, timeoutMilliseconds);
65
65
  }
66
66
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJpZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JyaWRnZS9pZnJhbWUvYnJpZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUUsU0FBUyxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sRUFBQyw2QkFBNkIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUU1RTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQW9CdkIsWUFBWSxNQUFjLEVBQW1CLEtBQXdCLEVBQUUsVUFBd0MsRUFBRTtRQUFwRSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUNuRSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUMsR0FBRyw2QkFBNkIsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN4RCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQWdELEVBQUU7WUFDN0QsTUFBTSxZQUFZLEdBQUcsS0FBNEMsQ0FBQztZQUNsRSxPQUFPLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pHLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUMxQixLQUFLLEVBQUUsQ0FDUixDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSTtRQUMxQywyR0FBMkc7UUFDM0csc0VBQXNFO1FBQ3RFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQ2pDLENBQUM7UUFFRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTyxLQUFLLENBQUMsU0FBUztRQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUM7b0JBQ3hDLE1BQU0sRUFBRSxrQkFBa0I7b0JBQzFCLE9BQU8sRUFBRSxLQUFLO2lCQUNmLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPO1lBQ1QsQ0FBQztZQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLFlBQVksQ0FBQyxPQUFzQixFQUFFLFNBQWtCO1FBQzdELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBQyxHQUFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEcsQ0FBQztJQUNILENBQUM7SUFFTyw4QkFBOEIsQ0FBQyxPQUFzQixFQUFFLHNCQUE4QixJQUFJLENBQUMsT0FBTyxDQUFDLDBCQUEwQjtRQUNsSSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNoQixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ3pCLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDeEMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQzdCLENBQ0YsQ0FBQztRQUNGLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQXNCLEVBQUUsU0FBa0I7UUFDakUsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsT0FBc0IsRUFBRSxzQkFBOEIsSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEI7UUFDdEksTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtmaXJzdFZhbHVlRnJvbSwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7djR9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcCwgc2hhcmUsIHRpbWVvdXR9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SUZyYW1lQnJpZGdlT3B0aW9ucywgSWZyYW1lTWVzc2FnZSwgSW50ZXJuYWxJZnJhbWVNZXNzYWdlfSBmcm9tICcuL2NvbnRyYWN0cyc7XG5pbXBvcnQge0lGUkFNRV9CUklER0VfREVGQVVMVF9PUFRJT05TLCBpc1N1cHBvcnRlZE1lc3NhZ2V9IGZyb20gJy4vaGVscGVycyc7XG5cbi8qKlxuICogQnJpZGdlIHRoYXQgZXhwb3NlcyBhbiBlYXN5IGFic3RyYWN0aW9uIGxheWVyIHRvIGNvbW11bmljYXRlIGJldHdlZW4gYSBIb3N0IGFuZCBhbiBJRnJhbWUgdXNpbmcgdGhlXG4gKiBwb3N0TWVzc2FnZSBBUEkuXG4gKi9cbmV4cG9ydCBjbGFzcyBJZnJhbWVCcmlkZ2Uge1xuXG4gIC8qKiBJRCB1c2VkIHRvIGVuc3VyZSB0aGF0IHRoZSBCcmlkZ2Ugb25seSBwcm9jZXNzZXMgbWVzc2FnZXMgbWVhbnQgZm9yIHRoaXMgaW5zdGFuY2UsIHNpbmNlIHBvc3RNZXNzYWdlIGlzIGdsb2JhbCB0byB0aGUgd2luZG93LiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYW5uZWxJZDogc3RyaW5nO1xuXG4gIC8qKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgYWxsIHRoZSBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBJRnJhbWUuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJuYWxNZXNzYWdlcyQ6IE9ic2VydmFibGU8SW50ZXJuYWxJZnJhbWVNZXNzYWdlPjtcblxuICAvKiogUHJvbWlzZSB0aGF0IHdpbGwgcmVzb2x2ZSBvbmNlIHRoZSBoYW5kc2hha2UgaGFzIGJlZW4gY29tcGxldGVkLCB1bmRlZmluZWQgaWYgaXQncyBhbHJlYWR5IGRvbmUuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZHNoYWtlUHJvbWlzZT86IFByb21pc2U8dm9pZD47XG5cbiAgLyoqIE9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBiZWhhdmlvdXIgb2YgdGhlIEJyaWRnZS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBJRnJhbWVCcmlkZ2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgYWxsIHRoZSBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBJRnJhbWUgYW5kIHRoYXQgYXJlXG4gICAqIG5vdCBhIGRpcmVjdCByZXNwb25zZSB0byBhIHJlcXVlc3QuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWVzc2FnZXMkOiBPYnNlcnZhYmxlPEludGVybmFsSWZyYW1lTWVzc2FnZT47XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBXaW5kb3csIHByaXZhdGUgcmVhZG9ubHkgY2hpbGQ6IEhUTUxJRnJhbWVFbGVtZW50LCBvcHRpb25zOiBQYXJ0aWFsPElGcmFtZUJyaWRnZU9wdGlvbnM+ID0ge30pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7Li4uSUZSQU1FX0JSSURHRV9ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnN9O1xuICAgIHRoaXMuY2hhbm5lbElkID0gdjQoKTtcbiAgICB0aGlzLmludGVybmFsTWVzc2FnZXMkID0gZnJvbUV2ZW50KHBhcmVudCwgJ21lc3NhZ2UnKS5waXBlKFxuICAgICAgZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIE1lc3NhZ2VFdmVudDxJbnRlcm5hbElmcmFtZU1lc3NhZ2U+ID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZUV2ZW50ID0gZXZlbnQgYXMgTWVzc2FnZUV2ZW50PEludGVybmFsSWZyYW1lTWVzc2FnZT47XG4gICAgICAgIHJldHVybiBpc1N1cHBvcnRlZE1lc3NhZ2UobWVzc2FnZUV2ZW50LmRhdGEpICYmIG1lc3NhZ2VFdmVudC5kYXRhLmNoYW5uZWxJZCA9PT0gdGhpcy5jaGFubmVsSWQ7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoZXZlbnQpID0+IGV2ZW50LmRhdGEpLFxuICAgICAgc2hhcmUoKVxuICAgICk7XG4gICAgdGhpcy5tZXNzYWdlcyQgPSB0aGlzLmludGVybmFsTWVzc2FnZXMkLnBpcGUoXG4gICAgICAvLyBIZXJlIHdlIHJlbW92ZSBhbGwgdGhlIG1lc3NhZ2VzIGhhdmluZyBhbiBcIklEXCIgYmVjYXVzZSB0aGV5IGFyZSBib3VuZCB0byB0aGVpciBjb3JyZXNwb25kaW5nIHJlcXVlc3QgYW5kXG4gICAgICAvLyBhcmUgcmV0dXJuZWQgZGlyZWN0bHkgYnkgdGhlIGZ1bmN0aW9uIHNlbmRNZXNzYWdlQW5kV2FpdEZvclJlc3BvbnNlXG4gICAgICBmaWx0ZXIoKG1lc3NhZ2UpID0+ICFtZXNzYWdlLmlkKVxuICAgICk7XG5cbiAgICB0aGlzLmhhbmRzaGFrZVByb21pc2UgPSB0aGlzLmhhbmRzaGFrZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kc2hha2UoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMuaGFuZHNoYWtlVHJpZXM7IGkrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fc2VuZE1lc3NhZ2VBbmRXYWl0Rm9yUmVzcG9uc2Uoe1xuICAgICAgICAgIGFjdGlvbjogJ0hBTkRTSEFLRV9QQVJFTlQnLFxuICAgICAgICAgIHZlcnNpb246ICcxLjAnXG4gICAgICAgIH0sIHRoaXMub3B0aW9ucy5oYW5kc2hha2VUaW1lb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBjYXRjaCB7fVxuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ0hhbmRzaGFrZSBmYWlsZWQuJyk7XG4gIH1cblxuICBwcml2YXRlIF9zZW5kTWVzc2FnZShtZXNzYWdlOiBJZnJhbWVNZXNzYWdlLCBtZXNzYWdlSWQ/OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5jaGlsZC5jb250ZW50V2luZG93KSB7XG4gICAgICB0aGlzLmNoaWxkLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2Uoey4uLm1lc3NhZ2UsIGNoYW5uZWxJZDogdGhpcy5jaGFubmVsSWQsIGlkOiBtZXNzYWdlSWR9LCAnKicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NlbmRNZXNzYWdlQW5kV2FpdEZvclJlc3BvbnNlKG1lc3NhZ2U6IElmcmFtZU1lc3NhZ2UsIHRpbWVvdXRNaWxsaXNlY29uZHM6IG51bWJlciA9IHRoaXMub3B0aW9ucy5tZXNzYWdlV2l0aFJlc3BvbnNlVGltZW91dCkge1xuICAgIGNvbnN0IGlkID0gdjQoKTtcbiAgICBjb25zdCBwcm9taXNlID0gZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLmludGVybmFsTWVzc2FnZXMkLnBpcGUoXG4gICAgICAgIGZpbHRlcigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmlkID09PSBpZCksXG4gICAgICAgIHRpbWVvdXQodGltZW91dE1pbGxpc2Vjb25kcylcbiAgICAgIClcbiAgICApO1xuICAgIHZvaWQgdGhpcy5fc2VuZE1lc3NhZ2UobWVzc2FnZSwgaWQpO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBzZW5kIGEgbWVzc2FnZSB0byB0aGUgc2NyaXB0IHJ1biBpbiB0aGUgaWZyYW1lXG4gICAqIEBwYXJhbSBtZXNzYWdlIG1lc3NhZ2Ugb2JqZWN0XG4gICAqIEBwYXJhbSBtZXNzYWdlSWQgbWVzc2FnZSBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VuZE1lc3NhZ2UobWVzc2FnZTogSWZyYW1lTWVzc2FnZSwgbWVzc2FnZUlkPzogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5oYW5kc2hha2VQcm9taXNlO1xuICAgIHRoaXMuX3NlbmRNZXNzYWdlKG1lc3NhZ2UsIG1lc3NhZ2VJZCk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSBzY3JpcHQgcnVuIGluIHRoZSBpZnJhbWUgYW5kIHdhaXQgZm9yIGFuIGFuc3dlclxuICAgKiBAcGFyYW0gbWVzc2FnZVxuICAgKiBAcGFyYW0gdGltZW91dE1pbGxpc2Vjb25kc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlbmRNZXNzYWdlQW5kV2FpdEZvclJlc3BvbnNlKG1lc3NhZ2U6IElmcmFtZU1lc3NhZ2UsIHRpbWVvdXRNaWxsaXNlY29uZHM6IG51bWJlciA9IHRoaXMub3B0aW9ucy5tZXNzYWdlV2l0aFJlc3BvbnNlVGltZW91dCkge1xuICAgIGF3YWl0IHRoaXMuaGFuZHNoYWtlUHJvbWlzZTtcbiAgICByZXR1cm4gdGhpcy5fc2VuZE1lc3NhZ2VBbmRXYWl0Rm9yUmVzcG9uc2UobWVzc2FnZSwgdGltZW91dE1pbGxpc2Vjb25kcyk7XG4gIH1cbn1cbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJpZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JyaWRnZS9pZnJhbWUvYnJpZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QsU0FBUyxHQUVWLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLE1BQU0sRUFDTixHQUFHLEVBQ0gsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxFQUFFLEdBQ0gsTUFBTSxNQUFNLENBQUM7QUFNZCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLGtCQUFrQixHQUNuQixNQUFNLFdBQVcsQ0FBQztBQUVuQjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQW1CdkIsWUFBWSxNQUFjLEVBQW1CLEtBQXdCLEVBQUUsVUFBd0MsRUFBRTtRQUFwRSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUNuRSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyw2QkFBNkIsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN4RCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQWdELEVBQUU7WUFDN0QsTUFBTSxZQUFZLEdBQUcsS0FBNEMsQ0FBQztZQUNsRSxPQUFPLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pHLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUMxQixLQUFLLEVBQUUsQ0FDUixDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSTtRQUMxQywyR0FBMkc7UUFDM0csc0VBQXNFO1FBQ3RFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQ2pDLENBQUM7UUFFRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTyxLQUFLLENBQUMsU0FBUztRQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUM7b0JBQ3hDLE1BQU0sRUFBRSxrQkFBa0I7b0JBQzFCLE9BQU8sRUFBRSxLQUFLO2lCQUNmLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPO1lBQ1QsQ0FBQztZQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxZQUFZLENBQUMsT0FBc0IsRUFBRSxTQUFrQjtRQUM3RCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RHLENBQUM7SUFDSCxDQUFDO0lBRU8sOEJBQThCLENBQUMsT0FBc0IsRUFBRSxzQkFBOEIsSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEI7UUFDbEksTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDaEIsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUN6QixNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQ3hDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUM3QixDQUNGLENBQUM7UUFDRixLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFzQixFQUFFLFNBQWtCO1FBQ2pFLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLDZCQUE2QixDQUFDLE9BQXNCLEVBQUUsc0JBQThCLElBQUksQ0FBQyxPQUFPLENBQUMsMEJBQTBCO1FBQ3RJLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGZpcnN0VmFsdWVGcm9tLFxuICBmcm9tRXZlbnQsXG4gIE9ic2VydmFibGUsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHNoYXJlLFxuICB0aW1lb3V0LFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICB2NCxcbn0gZnJvbSAndXVpZCc7XG5pbXBvcnQge1xuICBJRnJhbWVCcmlkZ2VPcHRpb25zLFxuICBJZnJhbWVNZXNzYWdlLFxuICBJbnRlcm5hbElmcmFtZU1lc3NhZ2UsXG59IGZyb20gJy4vY29udHJhY3RzJztcbmltcG9ydCB7XG4gIElGUkFNRV9CUklER0VfREVGQVVMVF9PUFRJT05TLFxuICBpc1N1cHBvcnRlZE1lc3NhZ2UsXG59IGZyb20gJy4vaGVscGVycyc7XG5cbi8qKlxuICogQnJpZGdlIHRoYXQgZXhwb3NlcyBhbiBlYXN5IGFic3RyYWN0aW9uIGxheWVyIHRvIGNvbW11bmljYXRlIGJldHdlZW4gYSBIb3N0IGFuZCBhbiBJRnJhbWUgdXNpbmcgdGhlXG4gKiBwb3N0TWVzc2FnZSBBUEkuXG4gKi9cbmV4cG9ydCBjbGFzcyBJZnJhbWVCcmlkZ2Uge1xuICAvKiogSUQgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgQnJpZGdlIG9ubHkgcHJvY2Vzc2VzIG1lc3NhZ2VzIG1lYW50IGZvciB0aGlzIGluc3RhbmNlLCBzaW5jZSBwb3N0TWVzc2FnZSBpcyBnbG9iYWwgdG8gdGhlIHdpbmRvdy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBjaGFubmVsSWQ6IHN0cmluZztcblxuICAvKiogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFsbCB0aGUgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgSUZyYW1lLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGludGVybmFsTWVzc2FnZXMkOiBPYnNlcnZhYmxlPEludGVybmFsSWZyYW1lTWVzc2FnZT47XG5cbiAgLyoqIFByb21pc2UgdGhhdCB3aWxsIHJlc29sdmUgb25jZSB0aGUgaGFuZHNoYWtlIGhhcyBiZWVuIGNvbXBsZXRlZCwgdW5kZWZpbmVkIGlmIGl0J3MgYWxyZWFkeSBkb25lLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRzaGFrZVByb21pc2U/OiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBCcmlkZ2UuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogSUZyYW1lQnJpZGdlT3B0aW9ucztcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFsbCB0aGUgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgSUZyYW1lIGFuZCB0aGF0IGFyZVxuICAgKiBub3QgYSBkaXJlY3QgcmVzcG9uc2UgdG8gYSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2VzJDogT2JzZXJ2YWJsZTxJbnRlcm5hbElmcmFtZU1lc3NhZ2U+O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogV2luZG93LCBwcml2YXRlIHJlYWRvbmx5IGNoaWxkOiBIVE1MSUZyYW1lRWxlbWVudCwgb3B0aW9uczogUGFydGlhbDxJRnJhbWVCcmlkZ2VPcHRpb25zPiA9IHt9KSB7XG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5JRlJBTUVfQlJJREdFX0RFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuICAgIHRoaXMuY2hhbm5lbElkID0gdjQoKTtcbiAgICB0aGlzLmludGVybmFsTWVzc2FnZXMkID0gZnJvbUV2ZW50KHBhcmVudCwgJ21lc3NhZ2UnKS5waXBlKFxuICAgICAgZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIE1lc3NhZ2VFdmVudDxJbnRlcm5hbElmcmFtZU1lc3NhZ2U+ID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZUV2ZW50ID0gZXZlbnQgYXMgTWVzc2FnZUV2ZW50PEludGVybmFsSWZyYW1lTWVzc2FnZT47XG4gICAgICAgIHJldHVybiBpc1N1cHBvcnRlZE1lc3NhZ2UobWVzc2FnZUV2ZW50LmRhdGEpICYmIG1lc3NhZ2VFdmVudC5kYXRhLmNoYW5uZWxJZCA9PT0gdGhpcy5jaGFubmVsSWQ7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoZXZlbnQpID0+IGV2ZW50LmRhdGEpLFxuICAgICAgc2hhcmUoKVxuICAgICk7XG4gICAgdGhpcy5tZXNzYWdlcyQgPSB0aGlzLmludGVybmFsTWVzc2FnZXMkLnBpcGUoXG4gICAgICAvLyBIZXJlIHdlIHJlbW92ZSBhbGwgdGhlIG1lc3NhZ2VzIGhhdmluZyBhbiBcIklEXCIgYmVjYXVzZSB0aGV5IGFyZSBib3VuZCB0byB0aGVpciBjb3JyZXNwb25kaW5nIHJlcXVlc3QgYW5kXG4gICAgICAvLyBhcmUgcmV0dXJuZWQgZGlyZWN0bHkgYnkgdGhlIGZ1bmN0aW9uIHNlbmRNZXNzYWdlQW5kV2FpdEZvclJlc3BvbnNlXG4gICAgICBmaWx0ZXIoKG1lc3NhZ2UpID0+ICFtZXNzYWdlLmlkKVxuICAgICk7XG5cbiAgICB0aGlzLmhhbmRzaGFrZVByb21pc2UgPSB0aGlzLmhhbmRzaGFrZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kc2hha2UoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMuaGFuZHNoYWtlVHJpZXM7IGkrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fc2VuZE1lc3NhZ2VBbmRXYWl0Rm9yUmVzcG9uc2Uoe1xuICAgICAgICAgIGFjdGlvbjogJ0hBTkRTSEFLRV9QQVJFTlQnLFxuICAgICAgICAgIHZlcnNpb246ICcxLjAnXG4gICAgICAgIH0sIHRoaXMub3B0aW9ucy5oYW5kc2hha2VUaW1lb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBjYXRjaCB7fVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0hhbmRzaGFrZSBmYWlsZWQuJyk7XG4gIH1cblxuICBwcml2YXRlIF9zZW5kTWVzc2FnZShtZXNzYWdlOiBJZnJhbWVNZXNzYWdlLCBtZXNzYWdlSWQ/OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5jaGlsZC5jb250ZW50V2luZG93KSB7XG4gICAgICB0aGlzLmNoaWxkLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoeyAuLi5tZXNzYWdlLCBjaGFubmVsSWQ6IHRoaXMuY2hhbm5lbElkLCBpZDogbWVzc2FnZUlkIH0sICcqJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2VuZE1lc3NhZ2VBbmRXYWl0Rm9yUmVzcG9uc2UobWVzc2FnZTogSWZyYW1lTWVzc2FnZSwgdGltZW91dE1pbGxpc2Vjb25kczogbnVtYmVyID0gdGhpcy5vcHRpb25zLm1lc3NhZ2VXaXRoUmVzcG9uc2VUaW1lb3V0KSB7XG4gICAgY29uc3QgaWQgPSB2NCgpO1xuICAgIGNvbnN0IHByb21pc2UgPSBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuaW50ZXJuYWxNZXNzYWdlcyQucGlwZShcbiAgICAgICAgZmlsdGVyKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaWQgPT09IGlkKSxcbiAgICAgICAgdGltZW91dCh0aW1lb3V0TWlsbGlzZWNvbmRzKVxuICAgICAgKVxuICAgICk7XG4gICAgdm9pZCB0aGlzLl9zZW5kTWVzc2FnZShtZXNzYWdlLCBpZCk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSBzY3JpcHQgcnVuIGluIHRoZSBpZnJhbWVcbiAgICogQHBhcmFtIG1lc3NhZ2UgbWVzc2FnZSBvYmplY3RcbiAgICogQHBhcmFtIG1lc3NhZ2VJZCBtZXNzYWdlIGlkZW50aWZpZXJcbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZW5kTWVzc2FnZShtZXNzYWdlOiBJZnJhbWVNZXNzYWdlLCBtZXNzYWdlSWQ/OiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmhhbmRzaGFrZVByb21pc2U7XG4gICAgdGhpcy5fc2VuZE1lc3NhZ2UobWVzc2FnZSwgbWVzc2FnZUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIHNjcmlwdCBydW4gaW4gdGhlIGlmcmFtZSBhbmQgd2FpdCBmb3IgYW4gYW5zd2VyXG4gICAqIEBwYXJhbSBtZXNzYWdlXG4gICAqIEBwYXJhbSB0aW1lb3V0TWlsbGlzZWNvbmRzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VuZE1lc3NhZ2VBbmRXYWl0Rm9yUmVzcG9uc2UobWVzc2FnZTogSWZyYW1lTWVzc2FnZSwgdGltZW91dE1pbGxpc2Vjb25kczogbnVtYmVyID0gdGhpcy5vcHRpb25zLm1lc3NhZ2VXaXRoUmVzcG9uc2VUaW1lb3V0KSB7XG4gICAgYXdhaXQgdGhpcy5oYW5kc2hha2VQcm9taXNlO1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWVzc2FnZUFuZFdhaXRGb3JSZXNwb25zZShtZXNzYWdlLCB0aW1lb3V0TWlsbGlzZWNvbmRzKTtcbiAgfVxufVxuIl19
@@ -11,10 +11,10 @@ export const IFRAME_BRIDGE_DEFAULT_OPTIONS = {
11
11
  * @param message
12
12
  */
13
13
  export function isSupportedMessage(message) {
14
- return typeof message === 'object' &&
15
- !!message.action &&
16
- !!message.version &&
17
- !!message.channelId;
14
+ return typeof message === 'object'
15
+ && !!message.action
16
+ && !!message.version
17
+ && !!message.channelId;
18
18
  }
19
19
  /**
20
20
  * Generates the html content of an iframe
@@ -100,4 +100,4 @@ export function generateIFrameContent(scriptUrl, additionalHeader = '') {
100
100
  <body></body>
101
101
  </html>`;
102
102
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9icmlkZ2UvaWZyYW1lL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBd0I7SUFDaEUsY0FBYyxFQUFFLEVBQUU7SUFDbEIsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQiwwQkFBMEIsRUFBRSxJQUFJO0NBQ2pDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBWTtJQUM3QyxPQUFPLE9BQU8sT0FBTyxLQUFLLFFBQVE7UUFDaEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNO1FBQ2hCLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztRQUNqQixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUN4QixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxTQUFpQixFQUFFLGdCQUFnQixHQUFHLEVBQUU7SUFDNUUsT0FBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCQXdFWSxTQUFTO1FBQ3RCLGdCQUFnQjs7O1FBR2hCLENBQUM7QUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUZyYW1lQnJpZGdlT3B0aW9ucywgSW50ZXJuYWxJZnJhbWVNZXNzYWdlIH0gZnJvbSAnLi9jb250cmFjdHMnO1xuXG4vKipcbiAqIERlZmF1bHQgb3B0aW9ucyBmb3IgYW4gSUZyYW1lQnJpZGdlXG4gKi9cbmV4cG9ydCBjb25zdCBJRlJBTUVfQlJJREdFX0RFRkFVTFRfT1BUSU9OUzogSUZyYW1lQnJpZGdlT3B0aW9ucyA9IHtcbiAgaGFuZHNoYWtlVHJpZXM6IDEwLFxuICBoYW5kc2hha2VUaW1lb3V0OiAyMDAsXG4gIG1lc3NhZ2VXaXRoUmVzcG9uc2VUaW1lb3V0OiAxMDAwXG59O1xuXG4vKipcbiAqIFZlcmlmaWVzIGlmIGEgbWVzc2FnZSByZXNwZWN0cyB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5IGFuIElGcmFtZUJyaWRnZVxuICogQHBhcmFtIG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3VwcG9ydGVkTWVzc2FnZShtZXNzYWdlOiBhbnkpOiBtZXNzYWdlIGlzIEludGVybmFsSWZyYW1lTWVzc2FnZSB7XG4gIHJldHVybiB0eXBlb2YgbWVzc2FnZSA9PT0gJ29iamVjdCcgJiZcbiAgICAhIW1lc3NhZ2UuYWN0aW9uICYmXG4gICAgISFtZXNzYWdlLnZlcnNpb24gJiZcbiAgICAhIW1lc3NhZ2UuY2hhbm5lbElkO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgaHRtbCBjb250ZW50IG9mIGFuIGlmcmFtZVxuICogQHBhcmFtIHNjcmlwdFVybCBzY3JpcHQgdG8gYmUgZXhlY3V0ZWQgaW5zaWRlIHRoZSBpZnJhbWVcbiAqIEBwYXJhbSBhZGRpdGlvbmFsSGVhZGVyIGN1c3RvbSBodG1sIGhlYWRlcnMgc3RyaW5naWZpZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSUZyYW1lQ29udGVudChzY3JpcHRVcmw6IHN0cmluZywgYWRkaXRpb25hbEhlYWRlciA9ICcnKSB7XG4gIHJldHVybiBgPGh0bWw+XG4gIDxoZWFkPlxuICAgICAgPHNjcmlwdD5cbiAgICAgICAgICBjbGFzcyBCcmlkZ2Uge1xuICAgICAgICAgICAgaGFuZHNoYWtlRG9uZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBxdWV1ZWRNZXNzYWdlcyA9IFtdO1xuXG4gICAgICAgICAgICBjaGFubmVsSWQ7XG5cbiAgICAgICAgICAgIG1lc3NhZ2VzQnVmZmVyID0gW107XG5cbiAgICAgICAgICAgIGxpc3RlbmVyO1xuXG4gICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgICAgaWYgKHdpbmRvdy5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGV2ZW50LmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZE1lc3NhZ2UobWVzc2FnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLmFjdGlvbiA9PT0gJ0hBTkRTSEFLRV9QQVJFTlQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbm5lbElkID0gbWVzc2FnZS5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2Uoe2FjdGlvbjogJ0hBTkRTSEFLRV9DSElMRCcsIHZlcnNpb246ICcxLjAnLCBpZDogbWVzc2FnZS5pZH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRzaGFrZURvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXVlZE1lc3NhZ2VzLmZvckVhY2goKHF1ZXVlZE1lc3NhZ2UpID0+IHRoaXMuc2VuZE1lc3NhZ2UocXVldWVkTWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXVlZE1lc3NhZ2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhbm5lbElkICYmIHRoaXMuY2hhbm5lbElkID09PSBtZXNzYWdlLmNoYW5uZWxJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3R1YWwgbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0ZW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXIobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0J1ZmZlci5wdXNoKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBpbiBjaGlsZCBmcmFtZSBicmlkZ2U6IGNhblxcXFwndCBhY2Nlc3MgcGFyZW50IHdpbmRvdy4nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZWdpc3RlcihoYW5kbGVyRnVuY3Rpb24sIHJlcGxheU1pc3NlZE1lc3NhZ2VzKSB7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5saXN0ZW5lcikge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXIgPSBoYW5kbGVyRnVuY3Rpb247XG4gICAgICAgICAgICAgICAgaWYgKHJlcGxheU1pc3NlZE1lc3NhZ2VzKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzQnVmZmVyLmZvckVhY2goKG1lc3NhZ2UpID0+IGhhbmRsZXJGdW5jdGlvbihtZXNzYWdlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNCdWZmZXIgPSBbXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpc1ZhbGlkTWVzc2FnZShtZXNzYWdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiAhIW1lc3NhZ2UuYWN0aW9uICYmICEhbWVzc2FnZS52ZXJzaW9uICYmICEhbWVzc2FnZS5jaGFubmVsSWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNlbmRNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgaWYodGhpcy5oYW5kc2hha2VEb25lKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSh7Li4ubWVzc2FnZSwgY2hhbm5lbElkOiB0aGlzLmNoYW5uZWxJZH0sICcqJyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWV1ZWRNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHV1aWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsIHYgPSBjID09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBCUklER0UgPSBuZXcgQnJpZGdlKCk7XG4gICAgICA8L3NjcmlwdD5cbiAgICAgIDxzY3JpcHQgc3JjPScke3NjcmlwdFVybH0nPjwvc2NyaXB0PlxuICAgICAgJHthZGRpdGlvbmFsSGVhZGVyfVxuICA8L2hlYWQ+XG4gIDxib2R5PjwvYm9keT5cbjwvaHRtbD5gO1xufVxuIl19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9icmlkZ2UvaWZyYW1lL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBd0I7SUFDaEUsY0FBYyxFQUFFLEVBQUU7SUFDbEIsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQiwwQkFBMEIsRUFBRSxJQUFJO0NBQ2pDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBWTtJQUM3QyxPQUFPLE9BQU8sT0FBTyxLQUFLLFFBQVE7V0FDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNO1dBQ2hCLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztXQUNqQixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUMzQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxTQUFpQixFQUFFLGdCQUFnQixHQUFHLEVBQUU7SUFDNUUsT0FBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCQXdFWSxTQUFTO1FBQ3RCLGdCQUFnQjs7O1FBR2hCLENBQUM7QUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSUZyYW1lQnJpZGdlT3B0aW9ucyxcbiAgSW50ZXJuYWxJZnJhbWVNZXNzYWdlLFxufSBmcm9tICcuL2NvbnRyYWN0cyc7XG5cbi8qKlxuICogRGVmYXVsdCBvcHRpb25zIGZvciBhbiBJRnJhbWVCcmlkZ2VcbiAqL1xuZXhwb3J0IGNvbnN0IElGUkFNRV9CUklER0VfREVGQVVMVF9PUFRJT05TOiBJRnJhbWVCcmlkZ2VPcHRpb25zID0ge1xuICBoYW5kc2hha2VUcmllczogMTAsXG4gIGhhbmRzaGFrZVRpbWVvdXQ6IDIwMCxcbiAgbWVzc2FnZVdpdGhSZXNwb25zZVRpbWVvdXQ6IDEwMDBcbn07XG5cbi8qKlxuICogVmVyaWZpZXMgaWYgYSBtZXNzYWdlIHJlc3BlY3RzIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgYW4gSUZyYW1lQnJpZGdlXG4gKiBAcGFyYW0gbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdXBwb3J0ZWRNZXNzYWdlKG1lc3NhZ2U6IGFueSk6IG1lc3NhZ2UgaXMgSW50ZXJuYWxJZnJhbWVNZXNzYWdlIHtcbiAgcmV0dXJuIHR5cGVvZiBtZXNzYWdlID09PSAnb2JqZWN0J1xuICAgICYmICEhbWVzc2FnZS5hY3Rpb25cbiAgICAmJiAhIW1lc3NhZ2UudmVyc2lvblxuICAgICYmICEhbWVzc2FnZS5jaGFubmVsSWQ7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBodG1sIGNvbnRlbnQgb2YgYW4gaWZyYW1lXG4gKiBAcGFyYW0gc2NyaXB0VXJsIHNjcmlwdCB0byBiZSBleGVjdXRlZCBpbnNpZGUgdGhlIGlmcmFtZVxuICogQHBhcmFtIGFkZGl0aW9uYWxIZWFkZXIgY3VzdG9tIGh0bWwgaGVhZGVycyBzdHJpbmdpZmllZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVJRnJhbWVDb250ZW50KHNjcmlwdFVybDogc3RyaW5nLCBhZGRpdGlvbmFsSGVhZGVyID0gJycpIHtcbiAgcmV0dXJuIGA8aHRtbD5cbiAgPGhlYWQ+XG4gICAgICA8c2NyaXB0PlxuICAgICAgICAgIGNsYXNzIEJyaWRnZSB7XG4gICAgICAgICAgICBoYW5kc2hha2VEb25lID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHF1ZXVlZE1lc3NhZ2VzID0gW107XG5cbiAgICAgICAgICAgIGNoYW5uZWxJZDtcblxuICAgICAgICAgICAgbWVzc2FnZXNCdWZmZXIgPSBbXTtcblxuICAgICAgICAgICAgbGlzdGVuZXI7XG5cbiAgICAgICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgICAgICBpZiAod2luZG93LnBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZXZlbnQuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkTWVzc2FnZShtZXNzYWdlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UuYWN0aW9uID09PSAnSEFORFNIQUtFX1BBUkVOVCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFubmVsSWQgPSBtZXNzYWdlLmNoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZSh7YWN0aW9uOiAnSEFORFNIQUtFX0NISUxEJywgdmVyc2lvbjogJzEuMCcsIGlkOiBtZXNzYWdlLmlkfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZHNoYWtlRG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVldWVkTWVzc2FnZXMuZm9yRWFjaCgocXVldWVkTWVzc2FnZSkgPT4gdGhpcy5zZW5kTWVzc2FnZShxdWV1ZWRNZXNzYWdlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVldWVkTWVzc2FnZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGFubmVsSWQgJiYgdGhpcy5jaGFubmVsSWQgPT09IG1lc3NhZ2UuY2hhbm5lbElkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdHVhbCBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lcihtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzQnVmZmVyLnB1c2gobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGluIGNoaWxkIGZyYW1lIGJyaWRnZTogY2FuXFxcXCd0IGFjY2VzcyBwYXJlbnQgd2luZG93LicpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlZ2lzdGVyKGhhbmRsZXJGdW5jdGlvbiwgcmVwbGF5TWlzc2VkTWVzc2FnZXMpIHtcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5lciA9IGhhbmRsZXJGdW5jdGlvbjtcbiAgICAgICAgICAgICAgICBpZiAocmVwbGF5TWlzc2VkTWVzc2FnZXMpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNCdWZmZXIuZm9yRWFjaCgobWVzc2FnZSkgPT4gaGFuZGxlckZ1bmN0aW9uKG1lc3NhZ2UpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0J1ZmZlciA9IFtdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlzVmFsaWRNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICEhbWVzc2FnZS5hY3Rpb24gJiYgISFtZXNzYWdlLnZlcnNpb24gJiYgISFtZXNzYWdlLmNoYW5uZWxJZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2VuZE1lc3NhZ2UobWVzc2FnZSkge1xuICAgICAgICAgICAgICBpZih0aGlzLmhhbmRzaGFrZURvbmUpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHsuLi5tZXNzYWdlLCBjaGFubmVsSWQ6IHRoaXMuY2hhbm5lbElkfSwgJyonKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXVlZE1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXVpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbihjKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT0gJ3gnID8gciA6IChyICYgMHgzIHwgMHg4KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IEJSSURHRSA9IG5ldyBCcmlkZ2UoKTtcbiAgICAgIDwvc2NyaXB0PlxuICAgICAgPHNjcmlwdCBzcmM9JyR7c2NyaXB0VXJsfSc+PC9zY3JpcHQ+XG4gICAgICAke2FkZGl0aW9uYWxIZWFkZXJ9XG4gIDwvaGVhZD5cbiAgPGJvZHk+PC9ib2R5PlxuPC9odG1sPmA7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { BehaviorSubject, distinctUntilChanged, fromEvent, firstValueFrom } from 'rxjs';
2
- import { v4 } from 'uuid';
3
2
  import { filter, map, share, timeout } from 'rxjs/operators';
3
+ import { v4 } from 'uuid';
4
4
 
5
5
  /**
6
6
  * Default options that will represent the interface
@@ -19,6 +19,7 @@ const defaultOptions = {
19
19
  */
20
20
  class AbTestBridge {
21
21
  /**
22
+ * AbTestBridge constructor
22
23
  * @param isExperimentEqual check two different experiments match to identify an experiment to start or to stop
23
24
  * @param options configure the communication with the A/B testing third party provider
24
25
  */
@@ -33,12 +34,11 @@ class AbTestBridge {
33
34
  ...defaultOptions,
34
35
  ...options
35
36
  };
36
- if (!window[this.options.bridgeName]) {
37
- // eslint-disable-next-line @typescript-eslint/dot-notation, dot-notation
38
- window[this.options.bridgeName] = { start: this.start.bind(this), stop: this.stop.bind(this) };
37
+ if (window[this.options.bridgeName]) {
38
+ this.log(`An instance of ${this.options.bridgeName} already exists. This AbTestBridge instance will be ignored`);
39
39
  }
40
40
  else {
41
- this.log(`An instance of ${this.options.bridgeName} already exists. This AbTestBridge instance will be ignored`);
41
+ window[this.options.bridgeName] = { start: this.start.bind(this), stop: this.stop.bind(this) };
42
42
  }
43
43
  document.dispatchEvent(new CustomEvent(this.options.readyEventName));
44
44
  }
@@ -57,7 +57,9 @@ class AbTestBridge {
57
57
  const currentProfile = this.experimentSubject$.getValue();
58
58
  this.experimentSubject$.next([
59
59
  ...currentProfile,
60
- ...(Array.isArray(experiments) ? experiments : [experiments]).filter((exp) => !currentProfile.find((expB) => this.isExperimentEqual(exp, expB)))
60
+ ...(Array.isArray(experiments)
61
+ ? experiments
62
+ : [experiments]).filter((exp) => !currentProfile.some((expB) => this.isExperimentEqual(exp, expB)))
61
63
  ]);
62
64
  }
63
65
  /**
@@ -68,7 +70,7 @@ class AbTestBridge {
68
70
  const currentExperiments = this.experimentSubject$.getValue();
69
71
  if (experiments) {
70
72
  // Stop the mentioned experiment
71
- this.experimentSubject$.next(currentExperiments.filter((expB) => !(Array.isArray(experiments) ? experiments : [experiments]).some(expA => this.isExperimentEqual(expB, expA))));
73
+ this.experimentSubject$.next(currentExperiments.filter((expB) => !(Array.isArray(experiments) ? experiments : [experiments]).some((expA) => this.isExperimentEqual(expB, expA))));
72
74
  }
73
75
  else {
74
76
  // Stop all the experiment
@@ -90,10 +92,10 @@ const IFRAME_BRIDGE_DEFAULT_OPTIONS = {
90
92
  * @param message
91
93
  */
92
94
  function isSupportedMessage(message) {
93
- return typeof message === 'object' &&
94
- !!message.action &&
95
- !!message.version &&
96
- !!message.channelId;
95
+ return typeof message === 'object'
96
+ && !!message.action
97
+ && !!message.version
98
+ && !!message.channelId;
97
99
  }
98
100
  /**
99
101
  * Generates the html content of an iframe
@@ -210,7 +212,7 @@ class IframeBridge {
210
212
  }
211
213
  catch { }
212
214
  }
213
- return Promise.reject('Handshake failed.');
215
+ throw new Error('Handshake failed.');
214
216
  }
215
217
  _sendMessage(message, messageId) {
216
218
  if (this.child.contentWindow) {
@@ -1 +1 @@
1
- {"version":3,"file":"o3r-third-party.mjs","sources":["../../src/bridge/ab-testing/ab-testing-bridge.ts","../../src/bridge/iframe/helpers.ts","../../src/bridge/iframe/bridge.ts","../../src/o3r-third-party.ts"],"sourcesContent":["import {\n BehaviorSubject, distinctUntilChanged, Observable\n} from 'rxjs';\nimport type {Logger} from '@o3r/core';\n\n/**\n * Shared interface with the A/B testing provider\n */\nexport interface AbTestBridgeInterface<T> {\n /**\n * Start an AB testing experiment\n */\n start(experiments: T | T[]): void;\n /**\n * Stop an AB testing experiment\n */\n stop(experiments?: T | T[]): void;\n}\n\n/**\n * Configure the A/B testing script interfaces with the application\n */\nexport interface AbTestBridgeConfig {\n /**\n * Reference to communicate with the bridge from the window\n * @default 'abTestBridge'\n */\n bridgeName: string;\n /**\n * Debug logger\n * @default console\n */\n logger: Logger;\n /**\n * Event a third party can subscribe to before starting the communication with the bridge\n * @default 'ab-test-ready'\n */\n readyEventName: string;\n}\n\n/**\n * Default options that will represent the interface\n */\nconst defaultOptions: AbTestBridgeConfig = {\n bridgeName: 'abTestBridge',\n readyEventName: 'ab-test-ready',\n logger: console\n};\n\n/**\n * Bridge between the application and a third party A/B testing provider.\n * Exposes a start and stop methods to allow the external script to set the list of experiments to run over the\n * application.\n *\n * Share the resulting list of experiments with the rest of the application via an observable.\n */\nexport class AbTestBridge<T> implements AbTestBridgeInterface<T> {\n /**\n * Behaviour subject to control the experiments via the exposed interface\n */\n private readonly experimentSubject$: BehaviorSubject<T[]> = new BehaviorSubject<T[]>([]);\n /**\n * Options to configure the communication between the AB Testing bridge and third parties\n */\n private readonly options: AbTestBridgeConfig;\n /**\n * Observable with the list of AB testing experiments currently applied\n */\n public experiments$: Observable<T[]>;\n\n /**\n * @param isExperimentEqual check two different experiments match to identify an experiment to start or to stop\n * @param options configure the communication with the A/B testing third party provider\n */\n constructor(private readonly isExperimentEqual: (value1?: T, value2?: T) => boolean, options?: Partial<AbTestBridgeConfig>) {\n this.experiments$ = this.experimentSubject$.pipe(\n distinctUntilChanged((experimentsA: T[], experimentsB: T[]) =>\n experimentsB.length === experimentsA.length && experimentsA.every((eA) => experimentsB.find((eB) => isExperimentEqual(eA, eB))\n ))\n );\n this.options = {\n ...defaultOptions,\n ...options\n };\n if (!(window as any)[this.options.bridgeName]) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, dot-notation\n (window as any)[this.options.bridgeName] = {start: this.start.bind(this), stop: this.stop.bind(this)};\n } else {\n this.log(`An instance of ${this.options.bridgeName} already exists. This AbTestBridge instance will be ignored`);\n }\n document.dispatchEvent(new CustomEvent(this.options.readyEventName));\n }\n\n /**\n * Use configured logger to log AB testing related information\n * @param args\n */\n private log(...args: any[]) {\n (this.options.logger.debug || this.options.logger.log)('A/B Test', ...args);\n }\n\n /**\n * @inheritDoc\n */\n public start(experiments: T | T[]) {\n this.log('Start experiment', experiments);\n const currentProfile = this.experimentSubject$.getValue();\n this.experimentSubject$.next([\n ...currentProfile,\n ...(Array.isArray(experiments) ? experiments : [experiments]).filter((exp) =>\n !currentProfile.find((expB: T) => this.isExperimentEqual(exp, expB)))\n ]);\n }\n\n /**\n * @inheritDoc\n */\n public stop(experiments?: T | T[]) {\n this.log('Stop experiment', experiments);\n const currentExperiments = this.experimentSubject$.getValue();\n if (experiments) {\n // Stop the mentioned experiment\n this.experimentSubject$.next(currentExperiments.filter((expB: T) => !(Array.isArray(experiments) ? experiments : [experiments]).some(expA => this.isExperimentEqual(expB, expA)))\n );\n } else {\n // Stop all the experiment\n this.experimentSubject$.next([]);\n }\n }\n}\n","import { IFrameBridgeOptions, InternalIframeMessage } from './contracts';\n\n/**\n * Default options for an IFrameBridge\n */\nexport const IFRAME_BRIDGE_DEFAULT_OPTIONS: IFrameBridgeOptions = {\n handshakeTries: 10,\n handshakeTimeout: 200,\n messageWithResponseTimeout: 1000\n};\n\n/**\n * Verifies if a message respects the format expected by an IFrameBridge\n * @param message\n */\nexport function isSupportedMessage(message: any): message is InternalIframeMessage {\n return typeof message === 'object' &&\n !!message.action &&\n !!message.version &&\n !!message.channelId;\n}\n\n/**\n * Generates the html content of an iframe\n * @param scriptUrl script to be executed inside the iframe\n * @param additionalHeader custom html headers stringified\n */\nexport function generateIFrameContent(scriptUrl: string, additionalHeader = '') {\n return `<html>\n <head>\n <script>\n class Bridge {\n handshakeDone = false;\n\n queuedMessages = [];\n\n channelId;\n\n messagesBuffer = [];\n\n listener;\n\n constructor() {\n if (window.parent) {\n window.addEventListener('message', (event) => {\n const message = event.data;\n if (this.isValidMessage(message)) {\n if (message.action === 'HANDSHAKE_PARENT') {\n this.channelId = message.channelId;\n this.sendMessage({action: 'HANDSHAKE_CHILD', version: '1.0', id: message.id});\n this.handshakeDone = true;\n this.queuedMessages.forEach((queuedMessage) => this.sendMessage(queuedMessage));\n this.queuedMessages = [];\n } else if (this.channelId && this.channelId === message.channelId) {\n // actual message\n if (this.listener) {\n this.listener(message);\n } else {\n this.messagesBuffer.push(message);\n }\n }\n }\n });\n } else {\n throw new Error('Error in child frame bridge: can\\\\'t access parent window.');\n }\n }\n\n register(handlerFunction, replayMissedMessages) {\n if (!this.listener) {\n this.listener = handlerFunction;\n if (replayMissedMessages) {\n this.messagesBuffer.forEach((message) => handlerFunction(message));\n }\n this.messagesBuffer = [];\n }\n }\n\n isValidMessage(message) {\n return !!message.action && !!message.version && !!message.channelId;\n }\n\n sendMessage(message) {\n if(this.handshakeDone) {\n window.parent.postMessage({...message, channelId: this.channelId}, '*');\n } else {\n this.queuedMessages.push(message);\n }\n }\n\n uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n }\n\n const BRIDGE = new Bridge();\n </script>\n <script src='${scriptUrl}'></script>\n ${additionalHeader}\n </head>\n <body></body>\n</html>`;\n}\n","import {firstValueFrom, fromEvent, Observable} from 'rxjs';\nimport {v4} from 'uuid';\nimport {filter, map, share, timeout} from 'rxjs/operators';\nimport {IFrameBridgeOptions, IframeMessage, InternalIframeMessage} from './contracts';\nimport {IFRAME_BRIDGE_DEFAULT_OPTIONS, isSupportedMessage} from './helpers';\n\n/**\n * Bridge that exposes an easy abstraction layer to communicate between a Host and an IFrame using the\n * postMessage API.\n */\nexport class IframeBridge {\n\n /** ID used to ensure that the Bridge only processes messages meant for this instance, since postMessage is global to the window. */\n private readonly channelId: string;\n\n /** Observable that emits all the messages received from the IFrame. */\n private readonly internalMessages$: Observable<InternalIframeMessage>;\n\n /** Promise that will resolve once the handshake has been completed, undefined if it's already done. */\n private readonly handshakePromise?: Promise<void>;\n\n /** Options to configure the behaviour of the Bridge. */\n private readonly options: IFrameBridgeOptions;\n\n /**\n * Observable that emits all the messages received from the IFrame and that are\n * not a direct response to a request.\n */\n public readonly messages$: Observable<InternalIframeMessage>;\n\n constructor(parent: Window, private readonly child: HTMLIFrameElement, options: Partial<IFrameBridgeOptions> = {}) {\n this.options = {...IFRAME_BRIDGE_DEFAULT_OPTIONS, ...options};\n this.channelId = v4();\n this.internalMessages$ = fromEvent(parent, 'message').pipe(\n filter((event): event is MessageEvent<InternalIframeMessage> => {\n const messageEvent = event as MessageEvent<InternalIframeMessage>;\n return isSupportedMessage(messageEvent.data) && messageEvent.data.channelId === this.channelId;\n }),\n map((event) => event.data),\n share()\n );\n this.messages$ = this.internalMessages$.pipe(\n // Here we remove all the messages having an \"ID\" because they are bound to their corresponding request and\n // are returned directly by the function sendMessageAndWaitForResponse\n filter((message) => !message.id)\n );\n\n this.handshakePromise = this.handshake();\n }\n\n private async handshake() {\n for (let i = 0; i < this.options.handshakeTries; i++) {\n try {\n await this._sendMessageAndWaitForResponse({\n action: 'HANDSHAKE_PARENT',\n version: '1.0'\n }, this.options.handshakeTimeout);\n return;\n } catch {}\n }\n return Promise.reject('Handshake failed.');\n }\n\n private _sendMessage(message: IframeMessage, messageId?: string) {\n if (this.child.contentWindow) {\n this.child.contentWindow.postMessage({...message, channelId: this.channelId, id: messageId}, '*');\n }\n }\n\n private _sendMessageAndWaitForResponse(message: IframeMessage, timeoutMilliseconds: number = this.options.messageWithResponseTimeout) {\n const id = v4();\n const promise = firstValueFrom(\n this.internalMessages$.pipe(\n filter((response) => response.id === id),\n timeout(timeoutMilliseconds)\n )\n );\n void this._sendMessage(message, id);\n return promise;\n }\n\n /**\n * Method to send a message to the script run in the iframe\n * @param message message object\n * @param messageId message identifier\n */\n public async sendMessage(message: IframeMessage, messageId?: string) {\n await this.handshakePromise;\n this._sendMessage(message, messageId);\n }\n\n /**\n * Method to send a message to the script run in the iframe and wait for an answer\n * @param message\n * @param timeoutMilliseconds\n */\n public async sendMessageAndWaitForResponse(message: IframeMessage, timeoutMilliseconds: number = this.options.messageWithResponseTimeout) {\n await this.handshakePromise;\n return this._sendMessageAndWaitForResponse(message, timeoutMilliseconds);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"o3r-third-party.mjs","sources":["../../src/bridge/ab-testing/ab-testing-bridge.ts","../../src/bridge/iframe/helpers.ts","../../src/bridge/iframe/bridge.ts","../../src/o3r-third-party.ts"],"sourcesContent":["import type {\n Logger,\n} from '@o3r/core';\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n Observable,\n} from 'rxjs';\n\n/**\n * Shared interface with the A/B testing provider\n */\nexport interface AbTestBridgeInterface<T> {\n /**\n * Start an AB testing experiment\n */\n start(experiments: T | T[]): void;\n /**\n * Stop an AB testing experiment\n */\n stop(experiments?: T | T[]): void;\n}\n\n/**\n * Configure the A/B testing script interfaces with the application\n */\nexport interface AbTestBridgeConfig {\n /**\n * Reference to communicate with the bridge from the window\n * @default 'abTestBridge'\n */\n bridgeName: string;\n /**\n * Debug logger\n * @default console\n */\n logger: Logger;\n /**\n * Event a third party can subscribe to before starting the communication with the bridge\n * @default 'ab-test-ready'\n */\n readyEventName: string;\n}\n\n/**\n * Default options that will represent the interface\n */\nconst defaultOptions: AbTestBridgeConfig = {\n bridgeName: 'abTestBridge',\n readyEventName: 'ab-test-ready',\n logger: console\n};\n\n/**\n * Bridge between the application and a third party A/B testing provider.\n * Exposes a start and stop methods to allow the external script to set the list of experiments to run over the\n * application.\n *\n * Share the resulting list of experiments with the rest of the application via an observable.\n */\nexport class AbTestBridge<T> implements AbTestBridgeInterface<T> {\n /**\n * Behaviour subject to control the experiments via the exposed interface\n */\n private readonly experimentSubject$: BehaviorSubject<T[]> = new BehaviorSubject<T[]>([]);\n /**\n * Options to configure the communication between the AB Testing bridge and third parties\n */\n private readonly options: AbTestBridgeConfig;\n /**\n * Observable with the list of AB testing experiments currently applied\n */\n public experiments$: Observable<T[]>;\n\n /**\n * AbTestBridge constructor\n * @param isExperimentEqual check two different experiments match to identify an experiment to start or to stop\n * @param options configure the communication with the A/B testing third party provider\n */\n constructor(private readonly isExperimentEqual: (value1?: T, value2?: T) => boolean, options?: Partial<AbTestBridgeConfig>) {\n this.experiments$ = this.experimentSubject$.pipe(\n distinctUntilChanged((experimentsA: T[], experimentsB: T[]) =>\n experimentsB.length === experimentsA.length && experimentsA.every((eA) => experimentsB.find((eB) => isExperimentEqual(eA, eB))\n ))\n );\n this.options = {\n ...defaultOptions,\n ...options\n };\n if ((window as any)[this.options.bridgeName]) {\n this.log(`An instance of ${this.options.bridgeName} already exists. This AbTestBridge instance will be ignored`);\n } else {\n (window as any)[this.options.bridgeName] = { start: this.start.bind(this), stop: this.stop.bind(this) };\n }\n document.dispatchEvent(new CustomEvent(this.options.readyEventName));\n }\n\n /**\n * Use configured logger to log AB testing related information\n * @param args\n */\n private log(...args: any[]) {\n (this.options.logger.debug || this.options.logger.log)('A/B Test', ...args);\n }\n\n /**\n * @inheritDoc\n */\n public start(experiments: T | T[]) {\n this.log('Start experiment', experiments);\n const currentProfile = this.experimentSubject$.getValue();\n this.experimentSubject$.next([\n ...currentProfile,\n ...(Array.isArray(experiments)\n ? experiments\n : [experiments]).filter((exp) => !currentProfile.some((expB: T) => this.isExperimentEqual(exp, expB))\n )\n ]);\n }\n\n /**\n * @inheritDoc\n */\n public stop(experiments?: T | T[]) {\n this.log('Stop experiment', experiments);\n const currentExperiments = this.experimentSubject$.getValue();\n if (experiments) {\n // Stop the mentioned experiment\n this.experimentSubject$.next(currentExperiments.filter((expB: T) => !(Array.isArray(experiments) ? experiments : [experiments]).some((expA) => this.isExperimentEqual(expB, expA)))\n );\n } else {\n // Stop all the experiment\n this.experimentSubject$.next([]);\n }\n }\n}\n","import {\n IFrameBridgeOptions,\n InternalIframeMessage,\n} from './contracts';\n\n/**\n * Default options for an IFrameBridge\n */\nexport const IFRAME_BRIDGE_DEFAULT_OPTIONS: IFrameBridgeOptions = {\n handshakeTries: 10,\n handshakeTimeout: 200,\n messageWithResponseTimeout: 1000\n};\n\n/**\n * Verifies if a message respects the format expected by an IFrameBridge\n * @param message\n */\nexport function isSupportedMessage(message: any): message is InternalIframeMessage {\n return typeof message === 'object'\n && !!message.action\n && !!message.version\n && !!message.channelId;\n}\n\n/**\n * Generates the html content of an iframe\n * @param scriptUrl script to be executed inside the iframe\n * @param additionalHeader custom html headers stringified\n */\nexport function generateIFrameContent(scriptUrl: string, additionalHeader = '') {\n return `<html>\n <head>\n <script>\n class Bridge {\n handshakeDone = false;\n\n queuedMessages = [];\n\n channelId;\n\n messagesBuffer = [];\n\n listener;\n\n constructor() {\n if (window.parent) {\n window.addEventListener('message', (event) => {\n const message = event.data;\n if (this.isValidMessage(message)) {\n if (message.action === 'HANDSHAKE_PARENT') {\n this.channelId = message.channelId;\n this.sendMessage({action: 'HANDSHAKE_CHILD', version: '1.0', id: message.id});\n this.handshakeDone = true;\n this.queuedMessages.forEach((queuedMessage) => this.sendMessage(queuedMessage));\n this.queuedMessages = [];\n } else if (this.channelId && this.channelId === message.channelId) {\n // actual message\n if (this.listener) {\n this.listener(message);\n } else {\n this.messagesBuffer.push(message);\n }\n }\n }\n });\n } else {\n throw new Error('Error in child frame bridge: can\\\\'t access parent window.');\n }\n }\n\n register(handlerFunction, replayMissedMessages) {\n if (!this.listener) {\n this.listener = handlerFunction;\n if (replayMissedMessages) {\n this.messagesBuffer.forEach((message) => handlerFunction(message));\n }\n this.messagesBuffer = [];\n }\n }\n\n isValidMessage(message) {\n return !!message.action && !!message.version && !!message.channelId;\n }\n\n sendMessage(message) {\n if(this.handshakeDone) {\n window.parent.postMessage({...message, channelId: this.channelId}, '*');\n } else {\n this.queuedMessages.push(message);\n }\n }\n\n uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n }\n\n const BRIDGE = new Bridge();\n </script>\n <script src='${scriptUrl}'></script>\n ${additionalHeader}\n </head>\n <body></body>\n</html>`;\n}\n","import {\n firstValueFrom,\n fromEvent,\n Observable,\n} from 'rxjs';\nimport {\n filter,\n map,\n share,\n timeout,\n} from 'rxjs/operators';\nimport {\n v4,\n} from 'uuid';\nimport {\n IFrameBridgeOptions,\n IframeMessage,\n InternalIframeMessage,\n} from './contracts';\nimport {\n IFRAME_BRIDGE_DEFAULT_OPTIONS,\n isSupportedMessage,\n} from './helpers';\n\n/**\n * Bridge that exposes an easy abstraction layer to communicate between a Host and an IFrame using the\n * postMessage API.\n */\nexport class IframeBridge {\n /** ID used to ensure that the Bridge only processes messages meant for this instance, since postMessage is global to the window. */\n private readonly channelId: string;\n\n /** Observable that emits all the messages received from the IFrame. */\n private readonly internalMessages$: Observable<InternalIframeMessage>;\n\n /** Promise that will resolve once the handshake has been completed, undefined if it's already done. */\n private readonly handshakePromise?: Promise<void>;\n\n /** Options to configure the behaviour of the Bridge. */\n private readonly options: IFrameBridgeOptions;\n\n /**\n * Observable that emits all the messages received from the IFrame and that are\n * not a direct response to a request.\n */\n public readonly messages$: Observable<InternalIframeMessage>;\n\n constructor(parent: Window, private readonly child: HTMLIFrameElement, options: Partial<IFrameBridgeOptions> = {}) {\n this.options = { ...IFRAME_BRIDGE_DEFAULT_OPTIONS, ...options };\n this.channelId = v4();\n this.internalMessages$ = fromEvent(parent, 'message').pipe(\n filter((event): event is MessageEvent<InternalIframeMessage> => {\n const messageEvent = event as MessageEvent<InternalIframeMessage>;\n return isSupportedMessage(messageEvent.data) && messageEvent.data.channelId === this.channelId;\n }),\n map((event) => event.data),\n share()\n );\n this.messages$ = this.internalMessages$.pipe(\n // Here we remove all the messages having an \"ID\" because they are bound to their corresponding request and\n // are returned directly by the function sendMessageAndWaitForResponse\n filter((message) => !message.id)\n );\n\n this.handshakePromise = this.handshake();\n }\n\n private async handshake() {\n for (let i = 0; i < this.options.handshakeTries; i++) {\n try {\n await this._sendMessageAndWaitForResponse({\n action: 'HANDSHAKE_PARENT',\n version: '1.0'\n }, this.options.handshakeTimeout);\n return;\n } catch {}\n }\n throw new Error('Handshake failed.');\n }\n\n private _sendMessage(message: IframeMessage, messageId?: string) {\n if (this.child.contentWindow) {\n this.child.contentWindow.postMessage({ ...message, channelId: this.channelId, id: messageId }, '*');\n }\n }\n\n private _sendMessageAndWaitForResponse(message: IframeMessage, timeoutMilliseconds: number = this.options.messageWithResponseTimeout) {\n const id = v4();\n const promise = firstValueFrom(\n this.internalMessages$.pipe(\n filter((response) => response.id === id),\n timeout(timeoutMilliseconds)\n )\n );\n void this._sendMessage(message, id);\n return promise;\n }\n\n /**\n * Method to send a message to the script run in the iframe\n * @param message message object\n * @param messageId message identifier\n */\n public async sendMessage(message: IframeMessage, messageId?: string) {\n await this.handshakePromise;\n this._sendMessage(message, messageId);\n }\n\n /**\n * Method to send a message to the script run in the iframe and wait for an answer\n * @param message\n * @param timeoutMilliseconds\n */\n public async sendMessageAndWaitForResponse(message: IframeMessage, timeoutMilliseconds: number = this.options.messageWithResponseTimeout) {\n await this.handshakePromise;\n return this._sendMessageAndWaitForResponse(message, timeoutMilliseconds);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o3r/third-party",
3
- "version": "11.6.0-prerelease.7",
3
+ "version": "11.6.0-prerelease.9",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -17,8 +17,8 @@
17
17
  },
18
18
  "peerDependencies": {
19
19
  "@angular-devkit/schematics": "~18.2.0",
20
- "@o3r/core": "^11.6.0-prerelease.7",
21
- "@o3r/schematics": "^11.6.0-prerelease.7",
20
+ "@o3r/core": "^11.6.0-prerelease.9",
21
+ "@o3r/schematics": "^11.6.0-prerelease.9",
22
22
  "@schematics/angular": "~18.2.0",
23
23
  "rxjs": "^7.8.1",
24
24
  "typescript": "~5.5.4"
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/iframe-to-component/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,EAGL,MAAM,4BAA4B,CAAC;AAoBpC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AA0B5D;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,2BAA2B,GAAG,IAAI,CA2LxE;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,gDAAuD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/iframe-to-component/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,IAAI,EAGL,MAAM,4BAA4B,CAAC;AAmBpC,OAAO,KAAK,EACV,2BAA2B,EAC5B,MAAM,UAAU,CAAC;AA0BlB;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,2BAA2B,GAAG,IAAI,CAwLxE;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,gDAAuD,CAAC"}
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ngAddIframe = void 0;
4
4
  exports.ngAddIframeFn = ngAddIframeFn;
5
+ const node_path_1 = require("node:path");
5
6
  const schematics_1 = require("@angular-devkit/schematics");
6
7
  const schematics_2 = require("@o3r/schematics");
7
- const node_path_1 = require("node:path");
8
8
  const ts = require("typescript");
9
9
  const iframeProperties = [
10
10
  'frame',
@@ -12,7 +12,7 @@ const iframeProperties = [
12
12
  ];
13
13
  const checkIframePresence = (componentPath, tree) => {
14
14
  const sourceFile = ts.createSourceFile(componentPath, tree.readText(componentPath), ts.ScriptTarget.ES2020, true);
15
- const classStatement = sourceFile.statements.find(ts.isClassDeclaration);
15
+ const classStatement = sourceFile.statements.find((statement) => ts.isClassDeclaration(statement));
16
16
  if (classStatement?.members.find((classElement) => ts.isPropertyDeclaration(classElement)
17
17
  && ts.isIdentifier(classElement.name)
18
18
  && iframeProperties.includes(classElement.name.escapedText.toString()))) {
@@ -75,13 +75,11 @@ function ngAddIframeFn(options) {
75
75
  const hasSubscriptions = node.members.find((classElement) => ts.isPropertyDeclaration(classElement)
76
76
  && ts.isIdentifier(classElement.name)
77
77
  && classElement.name.escapedText.toString() === 'subscriptions');
78
- /* eslint-disable indent */
79
78
  const propertiesToAdd = (0, schematics_2.generateClassElementsFromString)(`
80
79
  private frame = viewChild.required<ElementRef<HTMLIFrameElement>>('frame');
81
80
  private bridge?: IframeBridge;
82
- ${!hasSubscriptions ? 'private subscriptions: Subscription[] = [];' : ''}
81
+ ${hasSubscriptions ? '' : 'private subscriptions: Subscription[] = [];'}
83
82
  `);
84
- /* eslint-disable indent */
85
83
  const newNgAfterViewInit = (0, schematics_2.getSimpleUpdatedMethod)(node, factory, 'ngAfterViewInit', (0, schematics_2.generateBlockStatementsFromString)(`
86
84
  const nativeElem = this.frame().nativeElement;
87
85
  if (nativeElem.contentDocument) {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../schematics/iframe-to-component/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB;IACxE,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,UAAU,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../schematics/iframe-to-component/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,2BAA4B,SAAQ,qBAAqB;IACxE,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,8BAA8B;IAC9B,UAAU,EAAE,OAAO,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAG9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA4BtD;;;GAGG;AACH,eAAO,MAAM,KAAK,YAAa,qBAAqB,KAAG,IAGtD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,IAAI,EACV,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,UAAU,CAAC;AA4BlB;;;GAGG;AACH,eAAO,MAAM,KAAK,YAAa,qBAAqB,KAAG,IAGtD,CAAC"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ngAdd = void 0;
4
- const schematics_1 = require("@angular-devkit/schematics");
5
4
  const fs = require("node:fs");
6
5
  const path = require("node:path");
6
+ const schematics_1 = require("@angular-devkit/schematics");
7
7
  const reportMissingSchematicsDep = (logger) => (reason) => {
8
8
  logger.error(`[ERROR]: Adding @o3r/third-party has failed.
9
9
  If the error is related to missing @o3r dependencies you need to install '@o3r/core' to be able to use the configuration package. Please run 'ng add @o3r/core' .
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAClE,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEjC,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../schematics/ng-add/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAClE,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEjC,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}