@o3r/third-party 12.0.0-next.2 → 12.0.0-next.21

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@o3r/third-party",
3
- "version": "12.0.0-next.2",
3
+ "version": "12.0.0-next.21",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -13,13 +13,13 @@
13
13
  ],
14
14
  "dependencies": {
15
15
  "tslib": "^2.6.2",
16
- "uuid": "^10.0.0"
16
+ "uuid": "^11.0.5"
17
17
  },
18
18
  "peerDependencies": {
19
- "@angular-devkit/schematics": "^18.2.0",
20
- "@o3r/core": "^12.0.0-next.2",
21
- "@o3r/schematics": "^12.0.0-next.2",
22
- "@schematics/angular": "^18.2.0",
19
+ "@angular-devkit/schematics": "^19.0.0",
20
+ "@o3r/core": "^12.0.0-next.21",
21
+ "@o3r/schematics": "^12.0.0-next.21",
22
+ "@schematics/angular": "^19.0.0",
23
23
  "rxjs": "^7.8.1",
24
24
  "typescript": "^5.5.4"
25
25
  },
@@ -51,8 +51,6 @@
51
51
  },
52
52
  ".": {
53
53
  "types": "./index.d.ts",
54
- "esm2022": "./esm2022/o3r-third-party.mjs",
55
- "esm": "./esm2022/o3r-third-party.mjs",
56
54
  "default": "./fesm2022/o3r-third-party.mjs"
57
55
  }
58
56
  },
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -1,78 +0,0 @@
1
- import { BehaviorSubject, distinctUntilChanged, } from 'rxjs';
2
- /**
3
- * Default options that will represent the interface
4
- */
5
- const defaultOptions = {
6
- bridgeName: 'abTestBridge',
7
- readyEventName: 'ab-test-ready',
8
- logger: console
9
- };
10
- /**
11
- * Bridge between the application and a third party A/B testing provider.
12
- * Exposes a start and stop methods to allow the external script to set the list of experiments to run over the
13
- * application.
14
- *
15
- * Share the resulting list of experiments with the rest of the application via an observable.
16
- */
17
- export class AbTestBridge {
18
- /**
19
- * AbTestBridge constructor
20
- * @param isExperimentEqual check two different experiments match to identify an experiment to start or to stop
21
- * @param options configure the communication with the A/B testing third party provider
22
- */
23
- constructor(isExperimentEqual, options) {
24
- this.isExperimentEqual = isExperimentEqual;
25
- /**
26
- * Behaviour subject to control the experiments via the exposed interface
27
- */
28
- this.experimentSubject$ = new BehaviorSubject([]);
29
- this.experiments$ = this.experimentSubject$.pipe(distinctUntilChanged((experimentsA, experimentsB) => experimentsB.length === experimentsA.length && experimentsA.every((eA) => experimentsB.find((eB) => isExperimentEqual(eA, eB)))));
30
- this.options = {
31
- ...defaultOptions,
32
- ...options
33
- };
34
- if (window[this.options.bridgeName]) {
35
- this.log(`An instance of ${this.options.bridgeName} already exists. This AbTestBridge instance will be ignored`);
36
- }
37
- else {
38
- window[this.options.bridgeName] = { start: this.start.bind(this), stop: this.stop.bind(this) };
39
- }
40
- document.dispatchEvent(new CustomEvent(this.options.readyEventName));
41
- }
42
- /**
43
- * Use configured logger to log AB testing related information
44
- * @param args
45
- */
46
- log(...args) {
47
- (this.options.logger.debug || this.options.logger.log)('A/B Test', ...args);
48
- }
49
- /**
50
- * @inheritDoc
51
- */
52
- start(experiments) {
53
- this.log('Start experiment', experiments);
54
- const currentProfile = this.experimentSubject$.getValue();
55
- this.experimentSubject$.next([
56
- ...currentProfile,
57
- ...(Array.isArray(experiments)
58
- ? experiments
59
- : [experiments]).filter((exp) => !currentProfile.some((expB) => this.isExperimentEqual(exp, expB)))
60
- ]);
61
- }
62
- /**
63
- * @inheritDoc
64
- */
65
- stop(experiments) {
66
- this.log('Stop experiment', experiments);
67
- const currentExperiments = this.experimentSubject$.getValue();
68
- if (experiments) {
69
- // Stop the mentioned experiment
70
- this.experimentSubject$.next(currentExperiments.filter((expB) => !(Array.isArray(experiments) ? experiments : [experiments]).some((expA) => this.isExperimentEqual(expB, expA))));
71
- }
72
- else {
73
- // Stop all the experiment
74
- this.experimentSubject$.next([]);
75
- }
76
- }
77
- }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWItdGVzdGluZy1icmlkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYnJpZGdlL2FiLXRlc3RpbmcvYWItdGVzdGluZy1icmlkZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUNMLGVBQWUsRUFDZixvQkFBb0IsR0FFckIsTUFBTSxNQUFNLENBQUM7QUFxQ2Q7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRztJQUNyQixVQUFVLEVBQUUsY0FBYztJQUMxQixjQUFjLEVBQUUsZUFBZTtJQUMvQixNQUFNLEVBQUUsT0FBTztDQUNzQixDQUFDO0FBRXhDOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBY3ZCOzs7O09BSUc7SUFDSCxZQUE2QixpQkFBc0QsRUFBRSxPQUFxQztRQUE3RixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFDO1FBbEJuRjs7V0FFRztRQUNjLHVCQUFrQixHQUF5QixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQWdCdkYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUM5QyxvQkFBb0IsQ0FBQyxDQUFDLFlBQWlCLEVBQUUsWUFBaUIsRUFBRSxFQUFFLENBQzVELFlBQVksQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDN0gsQ0FBQyxDQUNMLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRyxjQUFjO1lBQ2pCLEdBQUcsT0FBTztTQUNYLENBQUM7UUFDRixJQUFLLE1BQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLDZEQUE2RCxDQUFDLENBQUM7UUFDbkgsQ0FBQzthQUFNLENBQUM7WUFDTCxNQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMxRyxDQUFDO1FBQ0QsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEdBQUcsQ0FBQyxHQUFHLElBQVc7UUFDeEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFdBQW9CO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7WUFDM0IsR0FBRyxjQUFjO1lBQ2pCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLFdBQVc7Z0JBQ2IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUN0RztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUksQ0FBQyxXQUFxQjtRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsZ0NBQWdDO1lBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDbEwsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgTG9nZ2VyLFxufSBmcm9tICdAbzNyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgT2JzZXJ2YWJsZSxcbn0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogU2hhcmVkIGludGVyZmFjZSB3aXRoIHRoZSBBL0IgdGVzdGluZyBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFiVGVzdEJyaWRnZUludGVyZmFjZTxUPiB7XG4gIC8qKlxuICAgKiBTdGFydCBhbiBBQiB0ZXN0aW5nIGV4cGVyaW1lbnRcbiAgICovXG4gIHN0YXJ0KGV4cGVyaW1lbnRzOiBUIHwgVFtdKTogdm9pZDtcbiAgLyoqXG4gICAqIFN0b3AgYW4gQUIgdGVzdGluZyBleHBlcmltZW50XG4gICAqL1xuICBzdG9wKGV4cGVyaW1lbnRzPzogVCB8IFRbXSk6IHZvaWQ7XG59XG5cbi8qKlxuICogQ29uZmlndXJlIHRoZSBBL0IgdGVzdGluZyBzY3JpcHQgaW50ZXJmYWNlcyB3aXRoIHRoZSBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFiVGVzdEJyaWRnZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgYnJpZGdlIGZyb20gdGhlIHdpbmRvd1xuICAgKiBAZGVmYXVsdCAnYWJUZXN0QnJpZGdlJ1xuICAgKi9cbiAgYnJpZGdlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogRGVidWcgbG9nZ2VyXG4gICAqIEBkZWZhdWx0IGNvbnNvbGVcbiAgICovXG4gIGxvZ2dlcjogTG9nZ2VyO1xuICAvKipcbiAgICogRXZlbnQgYSB0aGlyZCBwYXJ0eSBjYW4gc3Vic2NyaWJlIHRvIGJlZm9yZSBzdGFydGluZyB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBicmlkZ2VcbiAgICogQGRlZmF1bHQgJ2FiLXRlc3QtcmVhZHknXG4gICAqL1xuICByZWFkeUV2ZW50TmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlZmF1bHQgb3B0aW9ucyB0aGF0IHdpbGwgcmVwcmVzZW50IHRoZSBpbnRlcmZhY2VcbiAqL1xuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIGJyaWRnZU5hbWU6ICdhYlRlc3RCcmlkZ2UnLFxuICByZWFkeUV2ZW50TmFtZTogJ2FiLXRlc3QtcmVhZHknLFxuICBsb2dnZXI6IGNvbnNvbGVcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIEFiVGVzdEJyaWRnZUNvbmZpZztcblxuLyoqXG4gKiBCcmlkZ2UgYmV0d2VlbiB0aGUgYXBwbGljYXRpb24gYW5kIGEgdGhpcmQgcGFydHkgQS9CIHRlc3RpbmcgcHJvdmlkZXIuXG4gKiBFeHBvc2VzIGEgc3RhcnQgYW5kIHN0b3AgbWV0aG9kcyB0byBhbGxvdyB0aGUgZXh0ZXJuYWwgc2NyaXB0IHRvIHNldCB0aGUgbGlzdCBvZiBleHBlcmltZW50cyB0byBydW4gb3ZlciB0aGVcbiAqIGFwcGxpY2F0aW9uLlxuICpcbiAqIFNoYXJlIHRoZSByZXN1bHRpbmcgbGlzdCBvZiBleHBlcmltZW50cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBhcHBsaWNhdGlvbiB2aWEgYW4gb2JzZXJ2YWJsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFiVGVzdEJyaWRnZTxUPiBpbXBsZW1lbnRzIEFiVGVzdEJyaWRnZUludGVyZmFjZTxUPiB7XG4gIC8qKlxuICAgKiBCZWhhdmlvdXIgc3ViamVjdCB0byBjb250cm9sIHRoZSBleHBlcmltZW50cyB2aWEgdGhlIGV4cG9zZWQgaW50ZXJmYWNlXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGV4cGVyaW1lbnRTdWJqZWN0JDogQmVoYXZpb3JTdWJqZWN0PFRbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xuICAvKipcbiAgICogT3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgQUIgVGVzdGluZyBicmlkZ2UgYW5kIHRoaXJkIHBhcnRpZXNcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQWJUZXN0QnJpZGdlQ29uZmlnO1xuICAvKipcbiAgICogT2JzZXJ2YWJsZSB3aXRoIHRoZSBsaXN0IG9mIEFCIHRlc3RpbmcgZXhwZXJpbWVudHMgY3VycmVudGx5IGFwcGxpZWRcbiAgICovXG4gIHB1YmxpYyBleHBlcmltZW50cyQ6IE9ic2VydmFibGU8VFtdPjtcblxuICAvKipcbiAgICogQWJUZXN0QnJpZGdlIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBpc0V4cGVyaW1lbnRFcXVhbCBjaGVjayB0d28gZGlmZmVyZW50IGV4cGVyaW1lbnRzIG1hdGNoIHRvIGlkZW50aWZ5IGFuIGV4cGVyaW1lbnQgdG8gc3RhcnQgb3IgdG8gc3RvcFxuICAgKiBAcGFyYW0gb3B0aW9ucyBjb25maWd1cmUgdGhlIGNvbW11bmljYXRpb24gd2l0aCB0aGUgQS9CIHRlc3RpbmcgdGhpcmQgcGFydHkgcHJvdmlkZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaXNFeHBlcmltZW50RXF1YWw6ICh2YWx1ZTE/OiBULCB2YWx1ZTI/OiBUKSA9PiBib29sZWFuLCBvcHRpb25zPzogUGFydGlhbDxBYlRlc3RCcmlkZ2VDb25maWc+KSB7XG4gICAgdGhpcy5leHBlcmltZW50cyQgPSB0aGlzLmV4cGVyaW1lbnRTdWJqZWN0JC5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGV4cGVyaW1lbnRzQTogVFtdLCBleHBlcmltZW50c0I6IFRbXSkgPT5cbiAgICAgICAgZXhwZXJpbWVudHNCLmxlbmd0aCA9PT0gZXhwZXJpbWVudHNBLmxlbmd0aCAmJiBleHBlcmltZW50c0EuZXZlcnkoKGVBKSA9PiBleHBlcmltZW50c0IuZmluZCgoZUIpID0+IGlzRXhwZXJpbWVudEVxdWFsKGVBLCBlQikpXG4gICAgICAgICkpXG4gICAgKTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuICAgIGlmICgod2luZG93IGFzIGFueSlbdGhpcy5vcHRpb25zLmJyaWRnZU5hbWVdKSB7XG4gICAgICB0aGlzLmxvZyhgQW4gaW5zdGFuY2Ugb2YgJHt0aGlzLm9wdGlvbnMuYnJpZGdlTmFtZX0gYWxyZWFkeSBleGlzdHMuIFRoaXMgQWJUZXN0QnJpZGdlIGluc3RhbmNlIHdpbGwgYmUgaWdub3JlZGApO1xuICAgIH0gZWxzZSB7XG4gICAgICAod2luZG93IGFzIGFueSlbdGhpcy5vcHRpb25zLmJyaWRnZU5hbWVdID0geyBzdGFydDogdGhpcy5zdGFydC5iaW5kKHRoaXMpLCBzdG9wOiB0aGlzLnN0b3AuYmluZCh0aGlzKSB9O1xuICAgIH1cbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCh0aGlzLm9wdGlvbnMucmVhZHlFdmVudE5hbWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgY29uZmlndXJlZCBsb2dnZXIgdG8gbG9nIEFCIHRlc3RpbmcgcmVsYXRlZCBpbmZvcm1hdGlvblxuICAgKiBAcGFyYW0gYXJnc1xuICAgKi9cbiAgcHJpdmF0ZSBsb2coLi4uYXJnczogYW55W10pIHtcbiAgICAodGhpcy5vcHRpb25zLmxvZ2dlci5kZWJ1ZyB8fCB0aGlzLm9wdGlvbnMubG9nZ2VyLmxvZykoJ0EvQiBUZXN0JywgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIHB1YmxpYyBzdGFydChleHBlcmltZW50czogVCB8IFRbXSkge1xuICAgIHRoaXMubG9nKCdTdGFydCBleHBlcmltZW50JywgZXhwZXJpbWVudHMpO1xuICAgIGNvbnN0IGN1cnJlbnRQcm9maWxlID0gdGhpcy5leHBlcmltZW50U3ViamVjdCQuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLmV4cGVyaW1lbnRTdWJqZWN0JC5uZXh0KFtcbiAgICAgIC4uLmN1cnJlbnRQcm9maWxlLFxuICAgICAgLi4uKEFycmF5LmlzQXJyYXkoZXhwZXJpbWVudHMpXG4gICAgICAgID8gZXhwZXJpbWVudHNcbiAgICAgICAgOiBbZXhwZXJpbWVudHNdKS5maWx0ZXIoKGV4cCkgPT4gIWN1cnJlbnRQcm9maWxlLnNvbWUoKGV4cEI6IFQpID0+IHRoaXMuaXNFeHBlcmltZW50RXF1YWwoZXhwLCBleHBCKSlcbiAgICAgIClcbiAgICBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdERvY1xuICAgKi9cbiAgcHVibGljIHN0b3AoZXhwZXJpbWVudHM/OiBUIHwgVFtdKSB7XG4gICAgdGhpcy5sb2coJ1N0b3AgZXhwZXJpbWVudCcsIGV4cGVyaW1lbnRzKTtcbiAgICBjb25zdCBjdXJyZW50RXhwZXJpbWVudHMgPSB0aGlzLmV4cGVyaW1lbnRTdWJqZWN0JC5nZXRWYWx1ZSgpO1xuICAgIGlmIChleHBlcmltZW50cykge1xuICAgICAgLy8gU3RvcCB0aGUgbWVudGlvbmVkIGV4cGVyaW1lbnRcbiAgICAgIHRoaXMuZXhwZXJpbWVudFN1YmplY3QkLm5leHQoY3VycmVudEV4cGVyaW1lbnRzLmZpbHRlcigoZXhwQjogVCkgPT4gIShBcnJheS5pc0FycmF5KGV4cGVyaW1lbnRzKSA/IGV4cGVyaW1lbnRzIDogW2V4cGVyaW1lbnRzXSkuc29tZSgoZXhwQSkgPT4gdGhpcy5pc0V4cGVyaW1lbnRFcXVhbChleHBCLCBleHBBKSkpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdG9wIGFsbCB0aGUgZXhwZXJpbWVudFxuICAgICAgdGhpcy5leHBlcmltZW50U3ViamVjdCQubmV4dChbXSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export * from './ab-testing-bridge';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYnJpZGdlL2FiLXRlc3RpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWItdGVzdGluZy1icmlkZ2UnO1xuIl19
@@ -1,67 +0,0 @@
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
- /**
6
- * Bridge that exposes an easy abstraction layer to communicate between a Host and an IFrame using the
7
- * postMessage API.
8
- */
9
- export class IframeBridge {
10
- constructor(parent, child, options = {}) {
11
- this.child = child;
12
- this.options = { ...IFRAME_BRIDGE_DEFAULT_OPTIONS, ...options };
13
- this.channelId = v4();
14
- this.internalMessages$ = fromEvent(parent, 'message').pipe(filter((event) => {
15
- const messageEvent = event;
16
- return isSupportedMessage(messageEvent.data) && messageEvent.data.channelId === this.channelId;
17
- }), map((event) => event.data), share());
18
- this.messages$ = this.internalMessages$.pipe(
19
- // Here we remove all the messages having an "ID" because they are bound to their corresponding request and
20
- // are returned directly by the function sendMessageAndWaitForResponse
21
- filter((message) => !message.id));
22
- this.handshakePromise = this.handshake();
23
- }
24
- async handshake() {
25
- for (let i = 0; i < this.options.handshakeTries; i++) {
26
- try {
27
- await this._sendMessageAndWaitForResponse({
28
- action: 'HANDSHAKE_PARENT',
29
- version: '1.0'
30
- }, this.options.handshakeTimeout);
31
- return;
32
- }
33
- catch { }
34
- }
35
- throw new Error('Handshake failed.');
36
- }
37
- _sendMessage(message, messageId) {
38
- if (this.child.contentWindow) {
39
- this.child.contentWindow.postMessage({ ...message, channelId: this.channelId, id: messageId }, '*');
40
- }
41
- }
42
- _sendMessageAndWaitForResponse(message, timeoutMilliseconds = this.options.messageWithResponseTimeout) {
43
- const id = v4();
44
- const promise = firstValueFrom(this.internalMessages$.pipe(filter((response) => response.id === id), timeout(timeoutMilliseconds)));
45
- void this._sendMessage(message, id);
46
- return promise;
47
- }
48
- /**
49
- * Method to send a message to the script run in the iframe
50
- * @param message message object
51
- * @param messageId message identifier
52
- */
53
- async sendMessage(message, messageId) {
54
- await this.handshakePromise;
55
- this._sendMessage(message, messageId);
56
- }
57
- /**
58
- * Method to send a message to the script run in the iframe and wait for an answer
59
- * @param message
60
- * @param timeoutMilliseconds
61
- */
62
- async sendMessageAndWaitForResponse(message, timeoutMilliseconds = this.options.messageWithResponseTimeout) {
63
- await this.handshakePromise;
64
- return this._sendMessageAndWaitForResponse(message, timeoutMilliseconds);
65
- }
66
- }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJpZGdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JyaWRnZS9pZnJhbWUvYnJpZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QsU0FBUyxHQUVWLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLE1BQU0sRUFDTixHQUFHLEVBQ0gsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxFQUFFLEdBQ0gsTUFBTSxNQUFNLENBQUM7QUFNZCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLGtCQUFrQixHQUNuQixNQUFNLFdBQVcsQ0FBQztBQUVuQjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQW1CdkIsWUFBWSxNQUFjLEVBQW1CLEtBQXdCLEVBQUUsVUFBd0MsRUFBRTtRQUFwRSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUNuRSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyw2QkFBNkIsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN4RCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQWdELEVBQUU7WUFDN0QsTUFBTSxZQUFZLEdBQUcsS0FBNEMsQ0FBQztZQUNsRSxPQUFPLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pHLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUMxQixLQUFLLEVBQUUsQ0FDUixDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSTtRQUMxQywyR0FBMkc7UUFDM0csc0VBQXNFO1FBQ3RFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQ2pDLENBQUM7UUFFRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTyxLQUFLLENBQUMsU0FBUztRQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUM7b0JBQ3hDLE1BQU0sRUFBRSxrQkFBa0I7b0JBQzFCLE9BQU8sRUFBRSxLQUFLO2lCQUNmLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPO1lBQ1QsQ0FBQztZQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxZQUFZLENBQUMsT0FBc0IsRUFBRSxTQUFrQjtRQUM3RCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RHLENBQUM7SUFDSCxDQUFDO0lBRU8sOEJBQThCLENBQUMsT0FBc0IsRUFBRSxzQkFBOEIsSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEI7UUFDbEksTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDaEIsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUN6QixNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQ3hDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUM3QixDQUNGLENBQUM7UUFDRixLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFzQixFQUFFLFNBQWtCO1FBQ2pFLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLDZCQUE2QixDQUFDLE9BQXNCLEVBQUUsc0JBQThCLElBQUksQ0FBQyxPQUFPLENBQUMsMEJBQTBCO1FBQ3RJLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGZpcnN0VmFsdWVGcm9tLFxuICBmcm9tRXZlbnQsXG4gIE9ic2VydmFibGUsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHNoYXJlLFxuICB0aW1lb3V0LFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICB2NCxcbn0gZnJvbSAndXVpZCc7XG5pbXBvcnQge1xuICBJRnJhbWVCcmlkZ2VPcHRpb25zLFxuICBJZnJhbWVNZXNzYWdlLFxuICBJbnRlcm5hbElmcmFtZU1lc3NhZ2UsXG59IGZyb20gJy4vY29udHJhY3RzJztcbmltcG9ydCB7XG4gIElGUkFNRV9CUklER0VfREVGQVVMVF9PUFRJT05TLFxuICBpc1N1cHBvcnRlZE1lc3NhZ2UsXG59IGZyb20gJy4vaGVscGVycyc7XG5cbi8qKlxuICogQnJpZGdlIHRoYXQgZXhwb3NlcyBhbiBlYXN5IGFic3RyYWN0aW9uIGxheWVyIHRvIGNvbW11bmljYXRlIGJldHdlZW4gYSBIb3N0IGFuZCBhbiBJRnJhbWUgdXNpbmcgdGhlXG4gKiBwb3N0TWVzc2FnZSBBUEkuXG4gKi9cbmV4cG9ydCBjbGFzcyBJZnJhbWVCcmlkZ2Uge1xuICAvKiogSUQgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgQnJpZGdlIG9ubHkgcHJvY2Vzc2VzIG1lc3NhZ2VzIG1lYW50IGZvciB0aGlzIGluc3RhbmNlLCBzaW5jZSBwb3N0TWVzc2FnZSBpcyBnbG9iYWwgdG8gdGhlIHdpbmRvdy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBjaGFubmVsSWQ6IHN0cmluZztcblxuICAvKiogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFsbCB0aGUgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgSUZyYW1lLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGludGVybmFsTWVzc2FnZXMkOiBPYnNlcnZhYmxlPEludGVybmFsSWZyYW1lTWVzc2FnZT47XG5cbiAgLyoqIFByb21pc2UgdGhhdCB3aWxsIHJlc29sdmUgb25jZSB0aGUgaGFuZHNoYWtlIGhhcyBiZWVuIGNvbXBsZXRlZCwgdW5kZWZpbmVkIGlmIGl0J3MgYWxyZWFkeSBkb25lLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGhhbmRzaGFrZVByb21pc2U/OiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBCcmlkZ2UuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogSUZyYW1lQnJpZGdlT3B0aW9ucztcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFsbCB0aGUgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgSUZyYW1lIGFuZCB0aGF0IGFyZVxuICAgKiBub3QgYSBkaXJlY3QgcmVzcG9uc2UgdG8gYSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2VzJDogT2JzZXJ2YWJsZTxJbnRlcm5hbElmcmFtZU1lc3NhZ2U+O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogV2luZG93LCBwcml2YXRlIHJlYWRvbmx5IGNoaWxkOiBIVE1MSUZyYW1lRWxlbWVudCwgb3B0aW9uczogUGFydGlhbDxJRnJhbWVCcmlkZ2VPcHRpb25zPiA9IHt9KSB7XG4gICAgdGhpcy5vcHRpb25zID0geyAuLi5JRlJBTUVfQlJJREdFX0RFRkFVTFRfT1BUSU9OUywgLi4ub3B0aW9ucyB9O1xuICAgIHRoaXMuY2hhbm5lbElkID0gdjQoKTtcbiAgICB0aGlzLmludGVybmFsTWVzc2FnZXMkID0gZnJvbUV2ZW50KHBhcmVudCwgJ21lc3NhZ2UnKS5waXBlKFxuICAgICAgZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIE1lc3NhZ2VFdmVudDxJbnRlcm5hbElmcmFtZU1lc3NhZ2U+ID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZUV2ZW50ID0gZXZlbnQgYXMgTWVzc2FnZUV2ZW50PEludGVybmFsSWZyYW1lTWVzc2FnZT47XG4gICAgICAgIHJldHVybiBpc1N1cHBvcnRlZE1lc3NhZ2UobWVzc2FnZUV2ZW50LmRhdGEpICYmIG1lc3NhZ2VFdmVudC5kYXRhLmNoYW5uZWxJZCA9PT0gdGhpcy5jaGFubmVsSWQ7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoZXZlbnQpID0+IGV2ZW50LmRhdGEpLFxuICAgICAgc2hhcmUoKVxuICAgICk7XG4gICAgdGhpcy5tZXNzYWdlcyQgPSB0aGlzLmludGVybmFsTWVzc2FnZXMkLnBpcGUoXG4gICAgICAvLyBIZXJlIHdlIHJlbW92ZSBhbGwgdGhlIG1lc3NhZ2VzIGhhdmluZyBhbiBcIklEXCIgYmVjYXVzZSB0aGV5IGFyZSBib3VuZCB0byB0aGVpciBjb3JyZXNwb25kaW5nIHJlcXVlc3QgYW5kXG4gICAgICAvLyBhcmUgcmV0dXJuZWQgZGlyZWN0bHkgYnkgdGhlIGZ1bmN0aW9uIHNlbmRNZXNzYWdlQW5kV2FpdEZvclJlc3BvbnNlXG4gICAgICBmaWx0ZXIoKG1lc3NhZ2UpID0+ICFtZXNzYWdlLmlkKVxuICAgICk7XG5cbiAgICB0aGlzLmhhbmRzaGFrZVByb21pc2UgPSB0aGlzLmhhbmRzaGFrZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kc2hha2UoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm9wdGlvbnMuaGFuZHNoYWtlVHJpZXM7IGkrKykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fc2VuZE1lc3NhZ2VBbmRXYWl0Rm9yUmVzcG9uc2Uoe1xuICAgICAgICAgIGFjdGlvbjogJ0hBTkRTSEFLRV9QQVJFTlQnLFxuICAgICAgICAgIHZlcnNpb246ICcxLjAnXG4gICAgICAgIH0sIHRoaXMub3B0aW9ucy5oYW5kc2hha2VUaW1lb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBjYXRjaCB7fVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0hhbmRzaGFrZSBmYWlsZWQuJyk7XG4gIH1cblxuICBwcml2YXRlIF9zZW5kTWVzc2FnZShtZXNzYWdlOiBJZnJhbWVNZXNzYWdlLCBtZXNzYWdlSWQ/OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5jaGlsZC5jb250ZW50V2luZG93KSB7XG4gICAgICB0aGlzLmNoaWxkLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UoeyAuLi5tZXNzYWdlLCBjaGFubmVsSWQ6IHRoaXMuY2hhbm5lbElkLCBpZDogbWVzc2FnZUlkIH0sICcqJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2VuZE1lc3NhZ2VBbmRXYWl0Rm9yUmVzcG9uc2UobWVzc2FnZTogSWZyYW1lTWVzc2FnZSwgdGltZW91dE1pbGxpc2Vjb25kczogbnVtYmVyID0gdGhpcy5vcHRpb25zLm1lc3NhZ2VXaXRoUmVzcG9uc2VUaW1lb3V0KSB7XG4gICAgY29uc3QgaWQgPSB2NCgpO1xuICAgIGNvbnN0IHByb21pc2UgPSBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuaW50ZXJuYWxNZXNzYWdlcyQucGlwZShcbiAgICAgICAgZmlsdGVyKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaWQgPT09IGlkKSxcbiAgICAgICAgdGltZW91dCh0aW1lb3V0TWlsbGlzZWNvbmRzKVxuICAgICAgKVxuICAgICk7XG4gICAgdm9pZCB0aGlzLl9zZW5kTWVzc2FnZShtZXNzYWdlLCBpZCk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIHNlbmQgYSBtZXNzYWdlIHRvIHRoZSBzY3JpcHQgcnVuIGluIHRoZSBpZnJhbWVcbiAgICogQHBhcmFtIG1lc3NhZ2UgbWVzc2FnZSBvYmplY3RcbiAgICogQHBhcmFtIG1lc3NhZ2VJZCBtZXNzYWdlIGlkZW50aWZpZXJcbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZW5kTWVzc2FnZShtZXNzYWdlOiBJZnJhbWVNZXNzYWdlLCBtZXNzYWdlSWQ/OiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmhhbmRzaGFrZVByb21pc2U7XG4gICAgdGhpcy5fc2VuZE1lc3NhZ2UobWVzc2FnZSwgbWVzc2FnZUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIHNjcmlwdCBydW4gaW4gdGhlIGlmcmFtZSBhbmQgd2FpdCBmb3IgYW4gYW5zd2VyXG4gICAqIEBwYXJhbSBtZXNzYWdlXG4gICAqIEBwYXJhbSB0aW1lb3V0TWlsbGlzZWNvbmRzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VuZE1lc3NhZ2VBbmRXYWl0Rm9yUmVzcG9uc2UobWVzc2FnZTogSWZyYW1lTWVzc2FnZSwgdGltZW91dE1pbGxpc2Vjb25kczogbnVtYmVyID0gdGhpcy5vcHRpb25zLm1lc3NhZ2VXaXRoUmVzcG9uc2VUaW1lb3V0KSB7XG4gICAgYXdhaXQgdGhpcy5oYW5kc2hha2VQcm9taXNlO1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWVzc2FnZUFuZFdhaXRGb3JSZXNwb25zZShtZXNzYWdlLCB0aW1lb3V0TWlsbGlzZWNvbmRzKTtcbiAgfVxufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JyaWRnZS9pZnJhbWUvY29udHJhY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcHJlc2VudHMgbWVzc2FnZXMgZXhjaGFuZ2VkIGJldHdlZW4gaG9zdCBhbmQgaUZyYW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElmcmFtZU1lc3NhZ2Uge1xuICAvKipcbiAgICogU3RyaW5nIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHR5cGUgb2YgYWN0aW9uIHRvIHBlcmZvcm0uXG4gICAqL1xuICBhY3Rpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGFjdGlvbiwgdG8gYWxsb3cgZm9yIGJhY2t3YXJkIGFuZCBmb3J3YXJkIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBheWxvYWQgb2YgdGhlIG1lc3NhZ2UuXG4gICAqL1xuICBkYXRhPzogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbElmcmFtZU1lc3NhZ2UgZXh0ZW5kcyBJZnJhbWVNZXNzYWdlIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBhc3NvY2lhdGVkIHRvIHRoZSBjaGFubmVsIEhvc3QgPC0+IGlGcmFtZVxuICAgKi9cbiAgY2hhbm5lbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElEIHVzZWQgdG8gaGFuZGxlIG1lc3NhZ2VzIHRoYXQgZXhwZWN0IGEgcmVzcG9uc2UgZnJvbSB0aGUgb3RoZXIgcGFydHkuXG4gICAqIE5vIHVzZWQgZm9yIHVuaWRpcmVjdGlvbmFsIG1lc3NhZ2VzLlxuICAgKi9cbiAgaWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gY29uZmlndXJlIGFuIElGcmFtZUJyaWRnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGcmFtZUJyaWRnZU9wdGlvbnMge1xuICAvKipcbiAgICogTnVtYmVyIG9mIHRpbWVzIHRoZSBIb3N0IHdpbGwgdHJ5IHRvIGhhbmRzaGFrZSB3aXRoIHRoZSBpRnJhbWUgYmVmb3JlIGZhaWxpbmcuXG4gICAqL1xuICBoYW5kc2hha2VUcmllczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBGb3IgYSBnaXZlbiBoYW5kc2hha2UgdHJ5LCBob3cgbG9uZyB3aWxsIHRoZSBob3N0IHdhaXQgZm9yIGFuIGFuc3dlciBiZWZvcmUgY29uc2lkZXJpbmdcbiAgICogdGhhdCB0aGUgdHJ5IGZhaWxlZC5cbiAgICovXG4gIGhhbmRzaGFrZVRpbWVvdXQ6IG51bWJlcjtcblxuICAvKipcbiAgICogV2hlbiBzZW5kaW5nIGEgbWVzc2FnZSB0aGF0IGV4cGVjdHMgYSByZXNwb25zZSwgaG93IGxvbmcgc2hvdWxkIHRoZSBCcmlkZ2Ugd2FpdCBiZWZvcmVcbiAgICogY29uc2lkZXJpbmcgdGhlcmUgd2lsbCBiZSBhbnN3ZXIuXG4gICAqL1xuICBtZXNzYWdlV2l0aFJlc3BvbnNlVGltZW91dDogbnVtYmVyO1xufVxuIl19
@@ -1,103 +0,0 @@
1
- /**
2
- * Default options for an IFrameBridge
3
- */
4
- export const IFRAME_BRIDGE_DEFAULT_OPTIONS = {
5
- handshakeTries: 10,
6
- handshakeTimeout: 200,
7
- messageWithResponseTimeout: 1000
8
- };
9
- /**
10
- * Verifies if a message respects the format expected by an IFrameBridge
11
- * @param message
12
- */
13
- export function isSupportedMessage(message) {
14
- return typeof message === 'object'
15
- && !!message.action
16
- && !!message.version
17
- && !!message.channelId;
18
- }
19
- /**
20
- * Generates the html content of an iframe
21
- * @param scriptUrl script to be executed inside the iframe
22
- * @param additionalHeader custom html headers stringified
23
- */
24
- export function generateIFrameContent(scriptUrl, additionalHeader = '') {
25
- return `<html>
26
- <head>
27
- <script>
28
- class Bridge {
29
- handshakeDone = false;
30
-
31
- queuedMessages = [];
32
-
33
- channelId;
34
-
35
- messagesBuffer = [];
36
-
37
- listener;
38
-
39
- constructor() {
40
- if (window.parent) {
41
- window.addEventListener('message', (event) => {
42
- const message = event.data;
43
- if (this.isValidMessage(message)) {
44
- if (message.action === 'HANDSHAKE_PARENT') {
45
- this.channelId = message.channelId;
46
- this.sendMessage({action: 'HANDSHAKE_CHILD', version: '1.0', id: message.id});
47
- this.handshakeDone = true;
48
- this.queuedMessages.forEach((queuedMessage) => this.sendMessage(queuedMessage));
49
- this.queuedMessages = [];
50
- } else if (this.channelId && this.channelId === message.channelId) {
51
- // actual message
52
- if (this.listener) {
53
- this.listener(message);
54
- } else {
55
- this.messagesBuffer.push(message);
56
- }
57
- }
58
- }
59
- });
60
- } else {
61
- throw new Error('Error in child frame bridge: can\\'t access parent window.');
62
- }
63
- }
64
-
65
- register(handlerFunction, replayMissedMessages) {
66
- if (!this.listener) {
67
- this.listener = handlerFunction;
68
- if (replayMissedMessages) {
69
- this.messagesBuffer.forEach((message) => handlerFunction(message));
70
- }
71
- this.messagesBuffer = [];
72
- }
73
- }
74
-
75
- isValidMessage(message) {
76
- return !!message.action && !!message.version && !!message.channelId;
77
- }
78
-
79
- sendMessage(message) {
80
- if(this.handshakeDone) {
81
- window.parent.postMessage({...message, channelId: this.channelId}, '*');
82
- } else {
83
- this.queuedMessages.push(message);
84
- }
85
- }
86
-
87
- uuid() {
88
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
89
- var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
90
- return v.toString(16);
91
- });
92
- }
93
- }
94
-
95
- const BRIDGE = new Bridge();
96
- </script>
97
- <script src='${scriptUrl}'></script>
98
- ${additionalHeader}
99
- </head>
100
- <body></body>
101
- </html>`;
102
- }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9icmlkZ2UvaWZyYW1lL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBa0M7SUFDMUUsY0FBYyxFQUFFLEVBQUU7SUFDbEIsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQiwwQkFBMEIsRUFBRSxJQUFJO0NBQ3hCLENBQUM7QUFFWDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBWTtJQUM3QyxPQUFPLE9BQU8sT0FBTyxLQUFLLFFBQVE7V0FDN0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNO1dBQ2hCLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTztXQUNqQixDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUMzQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxTQUFpQixFQUFFLGdCQUFnQixHQUFHLEVBQUU7SUFDNUUsT0FBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCQXdFWSxTQUFTO1FBQ3RCLGdCQUFnQjs7O1FBR2hCLENBQUM7QUFDVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSUZyYW1lQnJpZGdlT3B0aW9ucyxcbiAgSW50ZXJuYWxJZnJhbWVNZXNzYWdlLFxufSBmcm9tICcuL2NvbnRyYWN0cyc7XG5cbi8qKlxuICogRGVmYXVsdCBvcHRpb25zIGZvciBhbiBJRnJhbWVCcmlkZ2VcbiAqL1xuZXhwb3J0IGNvbnN0IElGUkFNRV9CUklER0VfREVGQVVMVF9PUFRJT05TOiBSZWFkb25seTxJRnJhbWVCcmlkZ2VPcHRpb25zPiA9IHtcbiAgaGFuZHNoYWtlVHJpZXM6IDEwLFxuICBoYW5kc2hha2VUaW1lb3V0OiAyMDAsXG4gIG1lc3NhZ2VXaXRoUmVzcG9uc2VUaW1lb3V0OiAxMDAwXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFZlcmlmaWVzIGlmIGEgbWVzc2FnZSByZXNwZWN0cyB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5IGFuIElGcmFtZUJyaWRnZVxuICogQHBhcmFtIG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3VwcG9ydGVkTWVzc2FnZShtZXNzYWdlOiBhbnkpOiBtZXNzYWdlIGlzIEludGVybmFsSWZyYW1lTWVzc2FnZSB7XG4gIHJldHVybiB0eXBlb2YgbWVzc2FnZSA9PT0gJ29iamVjdCdcbiAgICAmJiAhIW1lc3NhZ2UuYWN0aW9uXG4gICAgJiYgISFtZXNzYWdlLnZlcnNpb25cbiAgICAmJiAhIW1lc3NhZ2UuY2hhbm5lbElkO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgaHRtbCBjb250ZW50IG9mIGFuIGlmcmFtZVxuICogQHBhcmFtIHNjcmlwdFVybCBzY3JpcHQgdG8gYmUgZXhlY3V0ZWQgaW5zaWRlIHRoZSBpZnJhbWVcbiAqIEBwYXJhbSBhZGRpdGlvbmFsSGVhZGVyIGN1c3RvbSBodG1sIGhlYWRlcnMgc3RyaW5naWZpZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSUZyYW1lQ29udGVudChzY3JpcHRVcmw6IHN0cmluZywgYWRkaXRpb25hbEhlYWRlciA9ICcnKSB7XG4gIHJldHVybiBgPGh0bWw+XG4gIDxoZWFkPlxuICAgICAgPHNjcmlwdD5cbiAgICAgICAgICBjbGFzcyBCcmlkZ2Uge1xuICAgICAgICAgICAgaGFuZHNoYWtlRG9uZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICBxdWV1ZWRNZXNzYWdlcyA9IFtdO1xuXG4gICAgICAgICAgICBjaGFubmVsSWQ7XG5cbiAgICAgICAgICAgIG1lc3NhZ2VzQnVmZmVyID0gW107XG5cbiAgICAgICAgICAgIGxpc3RlbmVyO1xuXG4gICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgICAgICAgaWYgKHdpbmRvdy5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGV2ZW50LmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZE1lc3NhZ2UobWVzc2FnZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLmFjdGlvbiA9PT0gJ0hBTkRTSEFLRV9QQVJFTlQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbm5lbElkID0gbWVzc2FnZS5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2Uoe2FjdGlvbjogJ0hBTkRTSEFLRV9DSElMRCcsIHZlcnNpb246ICcxLjAnLCBpZDogbWVzc2FnZS5pZH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRzaGFrZURvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXVlZE1lc3NhZ2VzLmZvckVhY2goKHF1ZXVlZE1lc3NhZ2UpID0+IHRoaXMuc2VuZE1lc3NhZ2UocXVldWVkTWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnF1ZXVlZE1lc3NhZ2VzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2hhbm5lbElkICYmIHRoaXMuY2hhbm5lbElkID09PSBtZXNzYWdlLmNoYW5uZWxJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3R1YWwgbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0ZW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXIobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0J1ZmZlci5wdXNoKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBpbiBjaGlsZCBmcmFtZSBicmlkZ2U6IGNhblxcXFwndCBhY2Nlc3MgcGFyZW50IHdpbmRvdy4nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZWdpc3RlcihoYW5kbGVyRnVuY3Rpb24sIHJlcGxheU1pc3NlZE1lc3NhZ2VzKSB7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5saXN0ZW5lcikge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuZXIgPSBoYW5kbGVyRnVuY3Rpb247XG4gICAgICAgICAgICAgICAgaWYgKHJlcGxheU1pc3NlZE1lc3NhZ2VzKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VzQnVmZmVyLmZvckVhY2goKG1lc3NhZ2UpID0+IGhhbmRsZXJGdW5jdGlvbihtZXNzYWdlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNCdWZmZXIgPSBbXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpc1ZhbGlkTWVzc2FnZShtZXNzYWdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiAhIW1lc3NhZ2UuYWN0aW9uICYmICEhbWVzc2FnZS52ZXJzaW9uICYmICEhbWVzc2FnZS5jaGFubmVsSWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNlbmRNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgaWYodGhpcy5oYW5kc2hha2VEb25lKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSh7Li4ubWVzc2FnZSwgY2hhbm5lbElkOiB0aGlzLmNoYW5uZWxJZH0sICcqJyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWV1ZWRNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHV1aWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsIHYgPSBjID09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBCUklER0UgPSBuZXcgQnJpZGdlKCk7XG4gICAgICA8L3NjcmlwdD5cbiAgICAgIDxzY3JpcHQgc3JjPScke3NjcmlwdFVybH0nPjwvc2NyaXB0PlxuICAgICAgJHthZGRpdGlvbmFsSGVhZGVyfVxuICA8L2hlYWQ+XG4gIDxib2R5PjwvYm9keT5cbjwvaHRtbD5gO1xufVxuIl19
@@ -1,4 +0,0 @@
1
- export * from './bridge';
2
- export * from './contracts';
3
- export * from './helpers';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYnJpZGdlL2lmcmFtZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYnJpZGdlJztcbmV4cG9ydCAqIGZyb20gJy4vY29udHJhY3RzJztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycyc7XG4iXX0=
@@ -1,3 +0,0 @@
1
- export * from './ab-testing/index';
2
- export * from './iframe/index';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJpZGdlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWItdGVzdGluZy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2lmcmFtZS9pbmRleCc7XG4iXX0=
package/esm2022/index.mjs DELETED
@@ -1,2 +0,0 @@
1
- export * from './bridge/index';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYnJpZGdlL2luZGV4JztcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibzNyLXRoaXJkLXBhcnR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL28zci10aGlyZC1wYXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==