@screeb/sdk-angular 0.1.3 → 0.1.5

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,13 +1,12 @@
1
1
  import { Injectable } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  /** Configuration of Screeb module */
4
- class ScreebConfig {
5
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebConfig, providedIn: "root" }); }
4
+ export class ScreebConfig {
5
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebConfig, providedIn: "root" }); }
7
7
  }
8
- export { ScreebConfig };
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebConfig, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebConfig, decorators: [{
10
9
  type: Injectable,
11
10
  args: [{ providedIn: "root" }]
12
11
  }] });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWViLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NjcmVlYi1zZGstYW5ndWxhci9zcmMvbGliL3NjcmVlYi1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MscUNBQXFDO0FBQ3JDLE1BQ2EsWUFBWTtpSUFBWixZQUFZO3FJQUFaLFlBQVksY0FEQyxNQUFNOztTQUNuQixZQUFZOzJGQUFaLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eVJlY29yZCwgU2NyZWViT3B0aW9ucyB9IGZyb20gXCJAc2NyZWViL3Nkay1icm93c2VyXCI7XG5cbi8qKiBDb25maWd1cmF0aW9uIG9mIFNjcmVlYiBtb2R1bGUgKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBTY3JlZWJDb25maWcge1xuICAvKiogWW91ciB3ZWJzaXRlL2NoYW5uZWwgaWQuICovXG4gIHdlYnNpdGVJZD86IHN0cmluZztcbiAgLyoqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB5b3VyIHVzZXIuICovXG4gIHVzZXJJZD86IHN0cmluZztcbiAgLyoqIFRoZSBwcm9wZXJ0aWVzIG9mIHlvdXIgdXNlci4gKi9cbiAgdXNlclByb3BlcnRpZXM/OiBQcm9wZXJ0eVJlY29yZDtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiBTY3JlZWIgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkLlxuICAgKiBUaGlzIHdpbGwgcGluZyB0byB0aGUgU2NyZWViIHNlcnZlcnMuXG4gICAqXG4gICAqIEByZW1hcmtzIGlmIGB0cnVlYCwgJ2xvYWQnIGRvZXMgbm90IG5lZWQgdG8gYmUgY2FsbGVkIG1hbnVhbGx5LiBDYW4gYmUgdXNlZCBmb3IgbXVsdGlzdGFnZWQgZW52aXJvbm1lbnRzXG4gICAqL1xuICBzaG91bGRMb2FkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiBTY3JlZWIgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgaW5pdGlhbGl6ZWQuXG4gICAqXG4gICAqIEByZW1hcmtzIGlmIGB0cnVlYCwgJ2luaXQnIGRvZXMgbm90IG5lZWQgdG8gYmUgY2FsbGVkIG1hbnVhbGx5XG4gICAqICovXG4gIGF1dG9Jbml0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNjcmVlYiB0YWcgaW5pdGlhbGl6YXRpb24gb3B0aW9ucy5cbiAgICpcbiAgICogQHJlbWFya3MgdGhpcyBpcyB1c2VkIGlzIHJlYWxseSBwYXJ0aWN1bGFyIGNhc2VzLCBoYW5kbGUgd2l0aCBjYXJlLlxuICAgKiAqL1xuICBvcHRpb25zPzogU2NyZWViT3B0aW9ucztcbn1cbiJdfQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWViLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NjcmVlYi1zZGstYW5ndWxhci9zcmMvbGliL3NjcmVlYi1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MscUNBQXFDO0FBRXJDLE1BQU0sT0FBTyxZQUFZO2lJQUFaLFlBQVk7cUlBQVosWUFBWSxjQURDLE1BQU07OzJGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSG9va3MsIFByb3BlcnR5UmVjb3JkLCBTY3JlZWJPcHRpb25zIH0gZnJvbSBcIkBzY3JlZWIvc2RrLWJyb3dzZXJcIjtcblxuLyoqIENvbmZpZ3VyYXRpb24gb2YgU2NyZWViIG1vZHVsZSAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIFNjcmVlYkNvbmZpZyB7XG4gIC8qKiBZb3VyIHdlYnNpdGUvY2hhbm5lbCBpZC4gKi9cbiAgd2Vic2l0ZUlkPzogc3RyaW5nO1xuICAvKiogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHlvdXIgdXNlci4gKi9cbiAgdXNlcklkPzogc3RyaW5nO1xuICAvKiogVGhlIHByb3BlcnRpZXMgb2YgeW91ciB1c2VyLiAqL1xuICB1c2VyUHJvcGVydGllcz86IFByb3BlcnR5UmVjb3JkO1xuICAvKiogSG9va3MgdG8gZGVmaW5lIGNhbGxiYWNrIGZvciB2YXJpb3VzIGV2ZW50ICovXG4gIGhvb2tzPzogSG9va3M7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgU2NyZWViIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZC5cbiAgICogVGhpcyB3aWxsIHBpbmcgdG8gdGhlIFNjcmVlYiBzZXJ2ZXJzLlxuICAgKlxuICAgKiBAcmVtYXJrcyBpZiBgdHJ1ZWAsICdsb2FkJyBkb2VzIG5vdCBuZWVkIHRvIGJlIGNhbGxlZCBtYW51YWxseS4gQ2FuIGJlIHVzZWQgZm9yIG11bHRpc3RhZ2VkIGVudmlyb25tZW50c1xuICAgKi9cbiAgc2hvdWxkTG9hZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgU2NyZWViIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGluaXRpYWxpemVkLlxuICAgKlxuICAgKiBAcmVtYXJrcyBpZiBgdHJ1ZWAsICdpbml0JyBkb2VzIG5vdCBuZWVkIHRvIGJlIGNhbGxlZCBtYW51YWxseVxuICAgKiAqL1xuICBhdXRvSW5pdD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTY3JlZWIgdGFnIGluaXRpYWxpemF0aW9uIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZW1hcmtzIHRoaXMgaXMgdXNlZCBpcyByZWFsbHkgcGFydGljdWxhciBjYXNlcywgaGFuZGxlIHdpdGggY2FyZS5cbiAgICogKi9cbiAgb3B0aW9ucz86IFNjcmVlYk9wdGlvbnM7XG59XG4iXX0=
@@ -4,7 +4,7 @@ import * as logger from "./logger";
4
4
  import { ScreebConfig } from "./screeb-config";
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "./screeb-config";
7
- class Screeb {
7
+ export class Screeb {
8
8
  // eslint-disable-next-line no-unused-vars
9
9
  constructor(config) {
10
10
  this.config = config;
@@ -138,13 +138,13 @@ class Screeb {
138
138
  * ```ts
139
139
  * console.log(await this.screeb.identityGet());
140
140
  * // {
141
+ * // channel_id: "<UUID>",
141
142
  * // anonymous_id: "<UUID>",
142
143
  * // user_id: "<UUID>",
144
+ * // is_ready: true,
143
145
  * // session_id: "<UUID>",
144
146
  * // session_start: "2023-05-04T16:30:15.882Z",
145
147
  * // session_end: "2023-05-04T17:02:09.087Z",
146
- * // channel_id: "<UUID>",
147
- * // is_ready: true,
148
148
  * // }
149
149
  * ```
150
150
  */
@@ -272,13 +272,17 @@ class Screeb {
272
272
  * {
273
273
  * color: "green",
274
274
  * article_id: 42
275
- * }
275
+ * },
276
+ * {
277
+ * version: "1.0.0",
278
+ * onSurveyShowed: (payload) => console.log("Survey showed", payload),
279
+ * },
276
280
  * );
277
281
  * ```
278
282
  */
279
- async surveyStart(surveyId, allowMultipleResponses, hiddenFields) {
283
+ async surveyStart(surveyId, allowMultipleResponses, hiddenFields, hooks) {
280
284
  await this.ensureScreeb("surveyStart");
281
- return _Screeb.surveyStart(surveyId, allowMultipleResponses, hiddenFields);
285
+ return _Screeb.surveyStart(surveyId, allowMultipleResponses, hiddenFields, hooks);
282
286
  }
283
287
  /**
284
288
  * Forces a targeting check.
@@ -341,14 +345,18 @@ class Screeb {
341
345
  * plan: '<user-plan>',
342
346
  * last_seen_at: new Date(),
343
347
  * authenticated: true
344
- * }
348
+ * },
349
+ * {
350
+ * version: "1.0.0",
351
+ * onReady: (payload) => console.log("Screeb SDK is ready!", payload),
352
+ * },
345
353
  * );
346
354
  * ```
347
355
  */
348
- async init(websiteId, userId, userProperties) {
356
+ async init(websiteId, userId, userProperties, hooks) {
349
357
  await this.ensureScreeb("init", true);
350
358
  this.isInitialized = true;
351
- return await _Screeb.init(websiteId, userId, userProperties);
359
+ return await _Screeb.init(websiteId, userId, userProperties, hooks);
352
360
  }
353
361
  /**
354
362
  * Appends Screeb tag into your dom.
@@ -365,15 +373,14 @@ class Screeb {
365
373
  async load() {
366
374
  return _Screeb.load();
367
375
  }
368
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: Screeb, deps: [{ token: ScreebConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
369
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: Screeb, providedIn: "root" }); }
376
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: Screeb, deps: [{ token: ScreebConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
377
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: Screeb, providedIn: "root" }); }
370
378
  }
371
- export { Screeb };
372
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: Screeb, decorators: [{
379
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: Screeb, decorators: [{
373
380
  type: Injectable,
374
381
  args: [{ providedIn: "root" }]
375
382
  }], ctorParameters: function () { return [{ type: i1.ScreebConfig, decorators: [{
376
383
  type: Inject,
377
384
  args: [ScreebConfig]
378
385
  }] }]; } });
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWViLXNkay1hbmd1bGFyL3NyYy9saWIvc2NyZWViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFFL0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFL0MsTUFDYSxNQUFNO0lBR2pCLDBDQUEwQztJQUMxQyxZQUEwQyxNQUFvQjtRQUFwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBSHRELGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBR21DLENBQUM7SUFFMUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFvQixFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUNsRCxNQUFNLE9BQU8sR0FDWCx1R0FBdUcsQ0FBQztZQUUxRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUU1QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN0QyxNQUFNLE9BQU8sR0FBRztnQkFDZCxJQUFJLFlBQVksd0RBQXdEO2dCQUN4RSxzQ0FBc0MsWUFBWSxPQUFPO2dCQUN6RCw2REFBNkQ7YUFDOUQsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFWCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMs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OzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0ICogYXMgX1NjcmVlYiBmcm9tIFwiQHNjcmVlYi9zZGstYnJvd3NlclwiO1xuXG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCI7XG5pbXBvcnQgeyBTY3JlZWJDb25maWcgfSBmcm9tIFwiLi9zY3JlZWItY29uZmlnXCI7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBTY3JlZWIge1xuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgY29uc3RydWN0b3IoQEluamVjdChTY3JlZWJDb25maWcpIHByaXZhdGUgY29uZmlnOiBTY3JlZWJDb25maWcpIHt9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbnN1cmVTY3JlZWIoZnVuY3Rpb25OYW1lOiBzdHJpbmcsIG9ubHlMb2FkZWQgPSBmYWxzZSkge1xuICAgIGlmICghX1NjcmVlYi5pc0xvYWRlZCgpICYmICF0aGlzLmNvbmZpZy5zaG91bGRMb2FkKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgXCJTY3JlZWIgaW5zdGFuY2UgaXMgbm90IGxvYWRlZCBiZWNhdXNlIGBzaG91bGRMb2FkYCBpcyBzZXQgdG8gYGZhbHNlYCBpbiBgU2NyZWViTW9kdWxlYCBjb25maWd1cmF0aW9uLlwiO1xuXG4gICAgICBsb2dnZXIubG9nKFwid2FyblwiLCBtZXNzYWdlKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCAmJiAhb25seUxvYWRlZCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IFtcbiAgICAgICAgYFwiJHtmdW5jdGlvbk5hbWV9XCIgd2FzIGNhbGxlZCBidXQgU2NyZWViIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXQuIGAsXG4gICAgICAgIGBQbGVhc2UgY2FsbCAnaW5pdCcgYmVmb3JlIGNhbGxpbmcgJyR7ZnVuY3Rpb25OYW1lfScgb3IgYCxcbiAgICAgICAgXCJzZXQgJ2F1dG9Jbml0JyB0byB0cnVlIGluIHRoZSBgU2NyZWViTW9kdWxlYCBjb25maWd1cmF0aW9uLlwiLFxuICAgICAgXS5qb2luKFwiXCIpO1xuXG4gICAgICBsb2dnZXIubG9nKFwid2FyblwiLCBtZXNzYWdlKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2h1dGRvd25zIGN1cnJlbnQgU2NyZWViIHNlc3Npb24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmNsb3NlKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiY2xvc2VcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaW50cyB0aGUgYWN0dWFsIHN0YXRlIGluZm9ybWF0aW9uIG9mIFNjcmVlYiB0YWcuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmRlYnVnKCk7XG4gICAqIC8vICoqKioqKioqKioqKioqKioqKiogU0NSRUVCIFNFU1NJT04gREVCVUcgKioqKioqKioqKioqKioqKioqKioqXG4gICAqIC8vIFNjcmVlYiBjaGFubmVsIGlkOiA8VVVJRD5cbiAgICogLy8gU2NyZWViIGNoYW5uZWwgdHlwZTogd2lkZ2V0XG4gICAqIC8vIFNjcmVlYiByZXNwb25kZW50IGlkOiA8VVVJRD5cbiAgICogLy8gU2NyZWViIHN1cnZleSBpZDogbm9uZVxuICAgKiAvLyBTY3JlZWIgcmVzcG9uc2UgaWQ6IG5vbmVcbiAgICogLy9cbiAgICogLy8gU2NyZWViIGN1cnJlbnQgc2Vzc2lvbiBzdGFydDogVGh1IE1heSAwNCAyMDIzIDE2OjUzOjQ5IEdNVCswMjAwIChDZW50cmFsIEV1cm9wZWFuIFN1bW1lciBUaW1lKVxuICAgKiAvLyBTY3JlZWIgY3VycmVudCBzZXNzaW9uIGxhc3QgYWN0aXZpdHk6IFRodSBNYXkgMDQgMjAyMyAxNzo0MTozMCBHTVQrMDIwMCAoQ2VudHJhbCBFdXJvcGVhbiBTdW1tZXIgVGltZSlcbiAgICogLy9cbiAgICogLy8gU2NyZWViIHRhcmdldGluZyBlbmdpbmUgc3RhdHVzOiBkaXNhYmxlZFxuICAgKiAvLyBTY3JlZWIgdGFyZ2V0aW5nIGVuZ2luZTogMyBzdXJ2ZXlzXG4gICAqIC8vXG4gICAqIC8vIERldGVjdGVkIHBsYXRmb3JtOiBkZXNrdG9wXG4gICAqIC8vIERldGVjdGVkIGxvY2FsZTogZW4tR0JcbiAgICogLy8gRGV0ZWN0ZWQgdGltZXpvbmU6IC0xMjBcbiAgICogLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGVidWcoKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJkZWJ1Z1wiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmRlYnVnKCk7XG4gIH1cblxuICAvKipcbiAgICogVHJhY2tzIGEgdXNlciBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50TmFtZSBUaGUgZXZlbnQgbmFtZS5cbiAgICogQHBhcmFtIGV2ZW50UHJvcGVydGllcyBUaGUgcHJvcGVydGllcyBvZiB5b3VyIGV2ZW50LlxuICAgKiBgYGB0ZXh0IFJlcXVpcmVtZW50czpcbiAgICogICAtIFByb3BlcnR5IG5hbWVzIG11c3QgYmUgbGltaXRlZCB0byAxMjggY2hhcmFjdGVyc1xuICAgKiAgIC0gTm8gbW9yZSB0aGFuIDEwMDAgYXR0cmlidXRlc1xuICAgKiAgIC0gU3VwcG9ydGVkIHR5cGVzIGZvciB2YWx1ZXM6IHN0cmluZywgbnVtYmVyLCBib29sZWFuIGFuZCBEYXRlLlxuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuZXZlbnRUcmFjayhcbiAgICogICBcIlByb2R1Y3QgYWRkZWQgdG8gY2FydFwiLFxuICAgKiAgIHtcbiAgICogICAgIHByb2R1Y3RfbmFtZTogJ1JlZCBiaWtlIDIwMjEnLFxuICAgKiAgICAgY2F0ZWdvcnk6ICdzcG9ydCcsXG4gICAqICAgICBjb2xvcjogJ3JlZCcsXG4gICAqICAgICBwcmljZTogMjk5LFxuICAgKiAgICAgY291bnQ6IDEsXG4gICAqICAgICByZWZlcmVuY2U6ICcyQ0YwOTNURzEnLFxuICAgKiAgICAgZGVsaXZlcnlfbWV0aG9kOiAnVVBTJyxcbiAgICogICAgIHVzZXJfbG9nZ2VkOiBmYWxzZSxcbiAgICogICAgIGFkZGVkX2F0OiBuZXcgRGF0ZSgpLFxuICAgKiAgIH1cbiAgICogKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZXZlbnRUcmFjayhcbiAgICBldmVudE5hbWU6IHN0cmluZyxcbiAgICBldmVudFByb3BlcnRpZXM/OiBfU2NyZWViLlByb3BlcnR5UmVjb3JkXG4gICkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiZXZlbnRUcmFja1wiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmV2ZW50VHJhY2soZXZlbnROYW1lLCBldmVudFByb3BlcnRpZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZSB0aGUgY3VycmVudCB1c2VyIGlkZW50aXR5LlxuICAgKiBXYXJuaW5nOiBSdW5uaW5nIHN1cnZleXMgd2lsbCBiZSBjbG9zZWQuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VySWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHlvdXIgdXNlci5cbiAgICogQHBhcmFtIHVzZXJQcm9wZXJ0aWVzIFRoZSBwcm9wZXJ0aWVzIG9mIHlvdXIgdXNlci5cbiAgICogYGBgdGV4dCBSZXF1aXJlbWVudHM6XG4gICAqICAgLSBQcm9wZXJ0eSBuYW1lcyBtdXN0IGJlIGxpbWl0ZWQgdG8gMTI4IGNoYXJhY3RlcnNcbiAgICogICAtIE5vIG1vcmUgdGhhbiAxMDAwIGF0dHJpYnV0ZXNcbiAgICogICAtIFN1cHBvcnRlZCB0eXBlcyBmb3IgdmFsdWVzOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiBhbmQgRGF0ZS5cbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmlkZW50aXR5KFxuICAgKiAgIFwiPHlvdXItdXNlci1pZD5cIixcbiAgICogICB7XG4gICAqICAgICBmaXJzdG5hbWU6ICc8dXNlci1maXJzdG5hbWU+JyxcbiAgICogICAgIGxhc3RuYW1lOiAnPHVzZXItbGFzdG5hbWU+JyxcbiAgICogICAgIHBsYW46ICc8dXNlci1wbGFuPicsXG4gICAqICAgICBsYXN0X3NlZW5fYXQ6IG5ldyBEYXRlKCksXG4gICAqICAgICBhdXRoZW50aWNhdGVkOiB0cnVlXG4gICAqICAgfVxuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBpZGVudGl0eShcbiAgICB1c2VySWQ6IHN0cmluZyxcbiAgICB1c2VyUHJvcGVydGllcz86IF9TY3JlZWIuUHJvcGVydHlSZWNvcmRcbiAgKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJpZGVudGl0eVwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmlkZW50aXR5KHVzZXJJZCwgdXNlclByb3BlcnRpZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCB1c2VyIGlkZW50aXR5LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBjb25zb2xlLmxvZyhhd2FpdCB0aGlzLnNjcmVlYi5pZGVudGl0eUdldCgpKTtcbiAgICogLy8ge1xuICAgKiAvLyAgIGFub255bW91c19pZDogXCI8VVVJRD5cIixcbiAgICogLy8gICB1c2VyX2lkOiBcIjxVVUlEPlwiLFxuICAgKiAvLyAgIHNlc3Npb25faWQ6IFwiPFVVSUQ+XCIsXG4gICAqIC8vICAgc2Vzc2lvbl9zdGFydDogXCIyMDIzLTA1LTA0VDE2OjMwOjE1Ljg4MlpcIixcbiAgICogLy8gICBzZXNzaW9uX2VuZDogXCIyMDIzLTA1LTA0VDE3OjAyOjA5LjA4N1pcIixcbiAgICogLy8gICBjaGFubmVsX2lkOiBcIjxVVUlEPlwiLFxuICAgKiAvLyAgIGlzX3JlYWR5OiB0cnVlLFxuICAgKiAvLyB9XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlkZW50aXR5R2V0KCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiaWRlbnRpdHlHZXRcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5pZGVudGl0eUdldCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc2lnbnMgdGhlIGN1cnJlbnQgdXNlciB0byBhIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JvdXBOYW1lXG4gICAqIEBwYXJhbSBncm91cFR5cGVcbiAgICogQHBhcmFtIGdyb3VwUHJvcGVydGllcyBUaGUgcHJvcGVydGllcyBvZiB5b3VyIHVzZXIgZ3JvdXAuXG4gICAqIGBgYHRleHQgUmVxdWlyZW1lbnRzOlxuICAgKiAgIC0gUHJvcGVydHkgbmFtZXMgbXVzdCBiZSBsaW1pdGVkIHRvIDEyOCBjaGFyYWN0ZXJzXG4gICAqICAgLSBObyBtb3JlIHRoYW4gMTAwMCBhdHRyaWJ1dGVzXG4gICAqICAgLSBTdXBwb3J0ZWQgdHlwZXMgZm9yIHZhbHVlczogc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4gYW5kIERhdGUuXG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5pZGVudGl0eUdyb3VwQXNzaWduKFxuICAgKiAgICdjb21wYW55JyxcbiAgICogICAnQXBwbGUnLFxuICAgKiAgIHtcbiAgICogICAgIGFkZHJlc3NfbGluZV8xOiAnQXBwbGUgQ2FtcHVzJyxcbiAgICogICAgIGFkZHJlc3NfbGluZV8yOiAnMSBJbmZpbml0ZSBMb29wJyxcbiAgICogICAgIGNpdHk6ICdDdXBlcnRpbm8nLFxuICAgKiAgICAgemlwY29kZTogOTUwMTQsXG4gICAqICAgICBzdGF0ZTogJ0NhbGlmb3JuaWEnLFxuICAgKiAgICAgY291bnRyeTogJ1VuaXRlZCBzdGF0ZXMnLFxuICAgKiAgIH1cbiAgICogKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaWRlbnRpdHlHcm91cEFzc2lnbihcbiAgICBncm91cE5hbWU6IHN0cmluZyxcbiAgICBncm91cFR5cGU/OiBzdHJpbmcsXG4gICAgZ3JvdXBQcm9wZXJ0aWVzPzogX1NjcmVlYi5Qcm9wZXJ0eVJlY29yZFxuICApIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImlkZW50aXR5R3JvdXBBc3NpZ25cIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5pZGVudGl0eUdyb3VwQXNzaWduKGdyb3VwTmFtZSwgZ3JvdXBUeXBlLCBncm91cFByb3BlcnRpZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuYXNzaWducyB0aGUgY3VycmVudCB1c2VyIHRvIGEgZ3JvdXAuXG4gICAqXG4gICAqIEBwYXJhbSBncm91cE5hbWUgVGhlIG5hbWUgb2YgeW91ciB1c2VyIGdyb3VwLlxuICAgKiBAcGFyYW0gZ3JvdXBUeXBlIFRoZSB0eXBlIG9mIHlvdXIgdXNlciBncm91cC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuaWRlbnRpdHlHcm91cFVuYXNzaWduKCdjb21wYW55JywgJ0FwcGxlJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlkZW50aXR5R3JvdXBVbmFzc2lnbihncm91cE5hbWU6IHN0cmluZywgZ3JvdXBUeXBlPzogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJpZGVudGl0eUdyb3VwVW5hc3NpZ25cIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5pZGVudGl0eUdyb3VwVW5hc3NpZ24oZ3JvdXBOYW1lLCBncm91cFR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgcHJvcGVydGllcyB0byB0aGUgY3VycmVudCB1c2VyIGlkZW50aXR5LlxuICAgKlxuICAgKiBAcGFyYW0gdXNlclByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMgb2YgeW91ciB1c2VyLlxuICAgKiBgYGB0ZXh0IFJlcXVpcmVtZW50czpcbiAgICogICAtIFByb3BlcnR5IG5hbWVzIG11c3QgYmUgbGltaXRlZCB0byAxMjggY2hhcmFjdGVyc1xuICAgKiAgIC0gTm8gbW9yZSB0aGFuIDEwMDAgYXR0cmlidXRlc1xuICAgKiAgIC0gU3VwcG9ydGVkIHR5cGVzIGZvciB2YWx1ZXM6IHN0cmluZywgbnVtYmVyLCBib29sZWFuIGFuZCBEYXRlLlxuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogLy8gU2V0IHVzZXIgcHJvcGVydGllc1xuICAgKiB0aGlzLnNjcmVlYi5pZGVudGl0eVByb3BlcnRpZXMoXG4gICAqICAge1xuICAgKiAgICAgZmlyc3RuYW1lOiAnPHVzZXItZmlyc3RuYW1lPicsXG4gICAqICAgICBsYXN0bmFtZTogJzx1c2VyLWxhc3RuYW1lPicsXG4gICAqICAgICBwbGFuOiAnPHVzZXItcGxhbj4nLFxuICAgKiAgICAgbGFzdF9zZWVuX2F0OiBuZXcgRGF0ZSgpLFxuICAgKiAgICAgYXV0aGVudGljYXRlZDogdHJ1ZVxuICAgKiAgIH1cbiAgICogKTtcbiAgICpcbiAgICogLy8gRGVsZXRlIHVzZXIgcHJvcGVydHkgOiBzZXQgdmFsdWVzIHRvIG51bGxcbiAgICogdGhpcy5zY3JlZWIuaWRlbnRpdHlQcm9wZXJ0aWVzKFxuICAgKiAgIHtcbiAgICogICAgIGFnZTogbnVsbCxcbiAgICogICAgIGNvbXBhbnk6IG51bGwsXG4gICAqICAgICBsb2dnZWQ6IHRydWUsXG4gICAqICAgfVxuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBpZGVudGl0eVByb3BlcnRpZXModXNlclByb3BlcnRpZXM6IF9TY3JlZWIuUHJvcGVydHlSZWNvcmQpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImlkZW50aXR5UHJvcGVydGllc1wiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmlkZW50aXR5UHJvcGVydGllcyh1c2VyUHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjdXJyZW50IHVzZXIgaWRlbnRpdHkuXG4gICAqIFdhcm5pbmc6IFRoaXMgY29tbWFuZCBtdXN0IGJlIGNhbGxlZCBvbmx5IG9uY2UsIHNpbmNlIGl0IGNyZWF0ZXMgYSBuZXcgaWRlbnRpdHkgb24gU2NyZWViIHNpZGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmlkZW50aXR5UmVzZXQoKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaWRlbnRpdHlSZXNldCgpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImlkZW50aXR5UmVzZXRcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5pZGVudGl0eVJlc2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJydXB0cyBhIHJ1bm5pbmcgc3VydmV5LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5zdXJ2ZXlDbG9zZSgpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBzdXJ2ZXlDbG9zZSgpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcInN1cnZleUNsb3NlXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuc3VydmV5Q2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgYSBzdXJ2ZXkgYnkgaXRzIElELlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5zdXJ2ZXlTdGFydChcbiAgICogICAnPFVVSUQ+JyxcbiAgICogICBmYWxzZSxcbiAgICogICB7XG4gICAqICAgICBjb2xvcjogXCJncmVlblwiLFxuICAgKiAgICAgYXJ0aWNsZV9pZDogNDJcbiAgICogICB9XG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN1cnZleVN0YXJ0KFxuICAgIHN1cnZleUlkOiBzdHJpbmcsXG4gICAgYWxsb3dNdWx0aXBsZVJlc3BvbnNlczogYm9vbGVhbixcbiAgICBoaWRkZW5GaWVsZHM6IF9TY3JlZWIuUHJvcGVydHlSZWNvcmRcbiAgKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJzdXJ2ZXlTdGFydFwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLnN1cnZleVN0YXJ0KHN1cnZleUlkLCBhbGxvd011bHRpcGxlUmVzcG9uc2VzLCBoaWRkZW5GaWVsZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhIHRhcmdldGluZyBjaGVjay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIudGFyZ2V0aW5nQ2hlY2soKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdGFyZ2V0aW5nQ2hlY2soKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJ0YXJnZXRpbmdDaGVja1wiKTtcblxuICAgIHJldHVybiBfU2NyZWViLnRhcmdldGluZ0NoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogUHJpbnRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSB0YXJnZXRpbmcgZW5naW5lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBjb25zb2xlLmxvZyhhd2FpdCB0aGlzLnNjcmVlYi50YXJnZXRpbmdEZWJ1ZygpKTtcbiAgICogLy8gdGFyZ2V0aW5nICoqKioqKioqKioqKiBTQ1JFRUIgVEFSR0VUSU5HIFJVTEVTIERFQlVHICoqKioqKioqKioqKioqXG4gICAqIC8vIERpc2FibGVkIHN1cnZleXMgYXJlIG5vdCBsaXN0ZWQgaGVyZS5cbiAgICogLy9cbiAgICogLy8gU2NyZWViIGNoYW5uZWwgaWQ6IDxVVUlEPlxuICAgKiAvLyBTY3JlZWIgcmVzcG9uZGVudCBpZDogPFVVSUQ+XG4gICAqIC8vXG4gICAqIC8vIFN1cnZleSA8VVVJRD46XG4gICAqIC8vIGh0dHBzOi8vYWRtaW4uc2NyZWViLmFwcC9vcmcvbGFzdC9zdXJ2ZXkvPFVVSUQ+L3NoYXJlXG4gICAqIC8vXG4gICAqIC8vICAgLSBSdWxlIG9mIHR5cGUgXCJEZXZpY2UgdHlwZSAoZGVza3RvcC9tb2JpbGUvdGFibGV0KVwiOiB0cnVlIPCfn6JcbiAgICogLy8gICAtIFJ1bGUgb2YgdHlwZSBcIk11bHRpcGxlIGRpc3BsYXlcIjogdHJ1ZSDwn5+iXG4gICAqIC8vICAgLSBSdWxlIG9mIHR5cGUgXCJDYXBwaW5nIHBlciB0aW1lIGJldHdlZW4gc3VydmV5IGRpc3BsYXkgb24gY3VycmVudCByZXNwb25kZW50XCI6IHRydWUg8J+folxuICAgKiAvLyAgIC0gUnVsZSBvZiB0eXBlIFwiVXNlciBldmVudCBjb3VudFwiOiBmYWxzZSDwn5S0XG4gICAqIC8vICAgLSBSdWxlIG9mIHR5cGUgXCJDYXBwaW5nIHBlciByZXNwb25kZW50IGRpc3BsYXkgY291bnRcIjogZmFsc2Ug8J+UtFxuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyB0YXJnZXRpbmdEZWJ1ZygpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcInRhcmdldGluZ0RlYnVnXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIudGFyZ2V0aW5nRGVidWcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyBTY3JlZWIgdGFnLlxuICAgKlxuICAgKiBAcGFyYW0gd2Vic2l0ZUlkIFlvdXIgd2Vic2l0ZS9jaGFubmVsIGlkLlxuICAgKiBAcGFyYW0gdXNlcklkIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB5b3VyIHVzZXIuXG4gICAqIEBwYXJhbSB1c2VyUHJvcGVydGllcyBUaGUgcHJvcGVydGllcyBvZiB5b3VyIHVzZXIuXG4gICAqIGBgYHRleHQgUmVxdWlyZW1lbnRzOlxuICAgKiAgIC0gUHJvcGVydHkgbmFtZXMgbXVzdCBiZSBsaW1pdGVkIHRvIDEyOCBjaGFyYWN0ZXJzXG4gICAqICAgLSBObyBtb3JlIHRoYW4gMTAwMCBhdHRyaWJ1dGVzXG4gICAqICAgLSBTdXBwb3J0ZWQgdHlwZXMgZm9yIHZhbHVlczogc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4gYW5kIERhdGVcbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmluaXQoXG4gICAqICAgXCI8eW91ci13ZWJzaXRlLWlkPlwiLFxuICAgKiAgIFwiPHlvdXItdXNlci1pZD5cIixcbiAgICogICB7XG4gICAqICAgICBmaXJzdG5hbWU6ICc8dXNlci1maXJzdG5hbWU+JyxcbiAgICogICAgIGxhc3RuYW1lOiAnPHVzZXItbGFzdG5hbWU+JyxcbiAgICogICAgIHBsYW46ICc8dXNlci1wbGFuPicsXG4gICAqICAgICBsYXN0X3NlZW5fYXQ6IG5ldyBEYXRlKCksXG4gICAqICAgICBhdXRoZW50aWNhdGVkOiB0cnVlXG4gICAqICAgfVxuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBpbml0KFxuICAgIHdlYnNpdGVJZDogc3RyaW5nLFxuICAgIHVzZXJJZD86IHN0cmluZyxcbiAgICB1c2VyUHJvcGVydGllcz86IF9TY3JlZWIuUHJvcGVydHlSZWNvcmRcbiAgKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJpbml0XCIsIHRydWUpO1xuXG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgIHJldHVybiBhd2FpdCBfU2NyZWViLmluaXQod2Vic2l0ZUlkLCB1c2VySWQsIHVzZXJQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIFNjcmVlYiB0YWcgaW50byB5b3VyIGRvbS5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgU2NyZWViIG1vZHVsZSBvcHRpb25zLlxuICAgKiBAcGFyYW0gb3B0aW9ucy53aW5kb3cgSWYgeW91J3JlIHJ1bm5pbmcgU2NyZWViIHRhZyBpbiBhbiBpZnJhbWUsIHBsZWFzZSBzZXQgdGhlIGlubmVyIHdpbmRvdyBoZXJlLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5zY3JlZWJFbmRwb2ludCBQbGVhc2UgZG9uJ3QgZG8gdGhpcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIubG9hZCgpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2FkKCkge1xuICAgIHJldHVybiBfU2NyZWViLmxvYWQoKTtcbiAgfVxufVxuIl19
386
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWViLXNkay1hbmd1bGFyL3NyYy9saWIvc2NyZWViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFFL0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFHL0MsTUFBTSxPQUFPLE1BQU07SUFHakIsMENBQTBDO0lBQzFDLFlBQTBDLE1BQW9CO1FBQXBCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFIdEQsa0JBQWEsR0FBRyxLQUFLLENBQUM7SUFHbUMsQ0FBQztJQUUxRCxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQW9CLEVBQUUsVUFBVSxHQUFHLEtBQUs7UUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ2xELE1BQU0sT0FBTyxHQUNYLHVHQUF1RyxDQUFDO1lBRTFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRTVCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNoQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3RDLE1BQU0sT0FBTyxHQUFHO2dCQUNkLElBQUksWUFBWSx3REFBd0Q7Z0JBQ3hFLHNDQUFzQyxZQUFZLE9BQU87Z0JBQ3pELDZEQUE2RDthQUM5RCxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVYLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRTVCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNoQztRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLEtBQUs7UUFDaEIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpDLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bd0JHO0lBQ0ksS0FBSyxDQUFDLEtBQUs7UUFDaEIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpDLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTRCRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQ3JCLFNBQWlCLEVBQ2pCLGVBQXdDO1FBRXhDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV0QyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXlCRztJQUNJLEtBQUssQ0FBQyxRQUFRLENBQ25CLE1BQWMsRUFDZCxjQUF1QztRQUV2QyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEMsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdkMsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EyQkc7SUFDSSxLQUFLLENBQUMsbUJBQW1CLENBQzlCLFNBQWlCLEVBQ2pCLFNBQWtCLEVBQ2xCLGVBQXdDO1FBRXhDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sT0FBTyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxLQUFLLENBQUMscUJBQXFCLENBQUMsU0FBaUIsRUFBRSxTQUFrQjtRQUN0RSxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUVqRCxPQUFPLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWdDRztJQUNJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxjQUFzQztRQUNwRSxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUU5QyxPQUFPLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxLQUFLLENBQUMsYUFBYTtRQUN4QixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFekMsT0FBTyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdkMsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQkc7SUFDSSxLQUFLLENBQUMsV0FBVyxDQUN0QixRQUFnQixFQUNoQixzQkFBK0IsRUFDL0IsWUFBb0MsRUFDcEMsS0FBcUI7UUFFckIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZDLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FDeEIsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixZQUFZLEVBQ1osS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxjQUFjO1FBQ3pCLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJHO0lBQ0ksS0FBSyxDQUFDLGNBQWM7UUFDekIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFMUMsT0FBTyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E4Qkc7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUNmLFNBQWlCLEVBQ2pCLE1BQWUsRUFDZixjQUF1QyxFQUN2QyxLQUFxQjtRQUVyQixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTFCLE9BQU8sTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsT0FBTyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztpSUE1YVUsTUFBTSxrQkFJRyxZQUFZO3FJQUpyQixNQUFNLGNBRE8sTUFBTTs7MkZBQ25CLE1BQU07a0JBRGxCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFLbkIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCAqIGFzIF9TY3JlZWIgZnJvbSBcIkBzY3JlZWIvc2RrLWJyb3dzZXJcIjtcblxuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xuaW1wb3J0IHsgU2NyZWViQ29uZmlnIH0gZnJvbSBcIi4vc2NyZWViLWNvbmZpZ1wiO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IFwicm9vdFwiIH0pXG5leHBvcnQgY2xhc3MgU2NyZWViIHtcbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoU2NyZWViQ29uZmlnKSBwcml2YXRlIGNvbmZpZzogU2NyZWViQ29uZmlnKSB7fVxuXG4gIHByaXZhdGUgYXN5bmMgZW5zdXJlU2NyZWViKGZ1bmN0aW9uTmFtZTogc3RyaW5nLCBvbmx5TG9hZGVkID0gZmFsc2UpIHtcbiAgICBpZiAoIV9TY3JlZWIuaXNMb2FkZWQoKSAmJiAhdGhpcy5jb25maWcuc2hvdWxkTG9hZCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIFwiU2NyZWViIGluc3RhbmNlIGlzIG5vdCBsb2FkZWQgYmVjYXVzZSBgc2hvdWxkTG9hZGAgaXMgc2V0IHRvIGBmYWxzZWAgaW4gYFNjcmVlYk1vZHVsZWAgY29uZmlndXJhdGlvbi5cIjtcblxuICAgICAgbG9nZ2VyLmxvZyhcIndhcm5cIiwgbWVzc2FnZSk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChtZXNzYWdlKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQgJiYgIW9ubHlMb2FkZWQpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBbXG4gICAgICAgIGBcIiR7ZnVuY3Rpb25OYW1lfVwiIHdhcyBjYWxsZWQgYnV0IFNjcmVlYiBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LiBgLFxuICAgICAgICBgUGxlYXNlIGNhbGwgJ2luaXQnIGJlZm9yZSBjYWxsaW5nICcke2Z1bmN0aW9uTmFtZX0nIG9yIGAsXG4gICAgICAgIFwic2V0ICdhdXRvSW5pdCcgdG8gdHJ1ZSBpbiB0aGUgYFNjcmVlYk1vZHVsZWAgY29uZmlndXJhdGlvbi5cIixcbiAgICAgIF0uam9pbihcIlwiKTtcblxuICAgICAgbG9nZ2VyLmxvZyhcIndhcm5cIiwgbWVzc2FnZSk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChtZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNodXRkb3ducyBjdXJyZW50IFNjcmVlYiBzZXNzaW9uLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5jbG9zZSgpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbG9zZSgpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImNsb3NlXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuY2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmludHMgdGhlIGFjdHVhbCBzdGF0ZSBpbmZvcm1hdGlvbiBvZiBTY3JlZWIgdGFnLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5kZWJ1ZygpO1xuICAgKiAvLyAqKioqKioqKioqKioqKioqKioqIFNDUkVFQiBTRVNTSU9OIERFQlVHICoqKioqKioqKioqKioqKioqKioqKlxuICAgKiAvLyBTY3JlZWIgY2hhbm5lbCBpZDogPFVVSUQ+XG4gICAqIC8vIFNjcmVlYiBjaGFubmVsIHR5cGU6IHdpZGdldFxuICAgKiAvLyBTY3JlZWIgcmVzcG9uZGVudCBpZDogPFVVSUQ+XG4gICAqIC8vIFNjcmVlYiBzdXJ2ZXkgaWQ6IG5vbmVcbiAgICogLy8gU2NyZWViIHJlc3BvbnNlIGlkOiBub25lXG4gICAqIC8vXG4gICAqIC8vIFNjcmVlYiBjdXJyZW50IHNlc3Npb24gc3RhcnQ6IFRodSBNYXkgMDQgMjAyMyAxNjo1Mzo0OSBHTVQrMDIwMCAoQ2VudHJhbCBFdXJvcGVhbiBTdW1tZXIgVGltZSlcbiAgICogLy8gU2NyZWViIGN1cnJlbnQgc2Vzc2lvbiBsYXN0IGFjdGl2aXR5OiBUaHUgTWF5IDA0IDIwMjMgMTc6NDE6MzAgR01UKzAyMDAgKENlbnRyYWwgRXVyb3BlYW4gU3VtbWVyIFRpbWUpXG4gICAqIC8vXG4gICAqIC8vIFNjcmVlYiB0YXJnZXRpbmcgZW5naW5lIHN0YXR1czogZGlzYWJsZWRcbiAgICogLy8gU2NyZWViIHRhcmdldGluZyBlbmdpbmU6IDMgc3VydmV5c1xuICAgKiAvL1xuICAgKiAvLyBEZXRlY3RlZCBwbGF0Zm9ybTogZGVza3RvcFxuICAgKiAvLyBEZXRlY3RlZCBsb2NhbGU6IGVuLUdCXG4gICAqIC8vIERldGVjdGVkIHRpbWV6b25lOiAtMTIwXG4gICAqIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlYnVnKCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiZGVidWdcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5kZWJ1ZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrcyBhIHVzZXIgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudE5hbWUgVGhlIGV2ZW50IG5hbWUuXG4gICAqIEBwYXJhbSBldmVudFByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMgb2YgeW91ciBldmVudC5cbiAgICogYGBgdGV4dCBSZXF1aXJlbWVudHM6XG4gICAqICAgLSBQcm9wZXJ0eSBuYW1lcyBtdXN0IGJlIGxpbWl0ZWQgdG8gMTI4IGNoYXJhY3RlcnNcbiAgICogICAtIE5vIG1vcmUgdGhhbiAxMDAwIGF0dHJpYnV0ZXNcbiAgICogICAtIFN1cHBvcnRlZCB0eXBlcyBmb3IgdmFsdWVzOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiBhbmQgRGF0ZS5cbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmV2ZW50VHJhY2soXG4gICAqICAgXCJQcm9kdWN0IGFkZGVkIHRvIGNhcnRcIixcbiAgICogICB7XG4gICAqICAgICBwcm9kdWN0X25hbWU6ICdSZWQgYmlrZSAyMDIxJyxcbiAgICogICAgIGNhdGVnb3J5OiAnc3BvcnQnLFxuICAgKiAgICAgY29sb3I6ICdyZWQnLFxuICAgKiAgICAgcHJpY2U6IDI5OSxcbiAgICogICAgIGNvdW50OiAxLFxuICAgKiAgICAgcmVmZXJlbmNlOiAnMkNGMDkzVEcxJyxcbiAgICogICAgIGRlbGl2ZXJ5X21ldGhvZDogJ1VQUycsXG4gICAqICAgICB1c2VyX2xvZ2dlZDogZmFsc2UsXG4gICAqICAgICBhZGRlZF9hdDogbmV3IERhdGUoKSxcbiAgICogICB9XG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGV2ZW50VHJhY2soXG4gICAgZXZlbnROYW1lOiBzdHJpbmcsXG4gICAgZXZlbnRQcm9wZXJ0aWVzPzogX1NjcmVlYi5Qcm9wZXJ0eVJlY29yZFxuICApIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImV2ZW50VHJhY2tcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5ldmVudFRyYWNrKGV2ZW50TmFtZSwgZXZlbnRQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIGN1cnJlbnQgdXNlciBpZGVudGl0eS5cbiAgICogV2FybmluZzogUnVubmluZyBzdXJ2ZXlzIHdpbGwgYmUgY2xvc2VkLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlcklkIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB5b3VyIHVzZXIuXG4gICAqIEBwYXJhbSB1c2VyUHJvcGVydGllcyBUaGUgcHJvcGVydGllcyBvZiB5b3VyIHVzZXIuXG4gICAqIGBgYHRleHQgUmVxdWlyZW1lbnRzOlxuICAgKiAgIC0gUHJvcGVydHkgbmFtZXMgbXVzdCBiZSBsaW1pdGVkIHRvIDEyOCBjaGFyYWN0ZXJzXG4gICAqICAgLSBObyBtb3JlIHRoYW4gMTAwMCBhdHRyaWJ1dGVzXG4gICAqICAgLSBTdXBwb3J0ZWQgdHlwZXMgZm9yIHZhbHVlczogc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4gYW5kIERhdGUuXG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5pZGVudGl0eShcbiAgICogICBcIjx5b3VyLXVzZXItaWQ+XCIsXG4gICAqICAge1xuICAgKiAgICAgZmlyc3RuYW1lOiAnPHVzZXItZmlyc3RuYW1lPicsXG4gICAqICAgICBsYXN0bmFtZTogJzx1c2VyLWxhc3RuYW1lPicsXG4gICAqICAgICBwbGFuOiAnPHVzZXItcGxhbj4nLFxuICAgKiAgICAgbGFzdF9zZWVuX2F0OiBuZXcgRGF0ZSgpLFxuICAgKiAgICAgYXV0aGVudGljYXRlZDogdHJ1ZVxuICAgKiAgIH1cbiAgICogKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaWRlbnRpdHkoXG4gICAgdXNlcklkOiBzdHJpbmcsXG4gICAgdXNlclByb3BlcnRpZXM/OiBfU2NyZWViLlByb3BlcnR5UmVjb3JkXG4gICkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiaWRlbnRpdHlcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5pZGVudGl0eSh1c2VySWQsIHVzZXJQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdXNlciBpZGVudGl0eS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogY29uc29sZS5sb2coYXdhaXQgdGhpcy5zY3JlZWIuaWRlbnRpdHlHZXQoKSk7XG4gICAqIC8vIHtcbiAgICogLy8gICBjaGFubmVsX2lkOiBcIjxVVUlEPlwiLFxuICAgKiAvLyAgIGFub255bW91c19pZDogXCI8VVVJRD5cIixcbiAgICogLy8gICB1c2VyX2lkOiBcIjxVVUlEPlwiLFxuICAgKiAvLyAgIGlzX3JlYWR5OiB0cnVlLFxuICAgKiAvLyAgIHNlc3Npb25faWQ6IFwiPFVVSUQ+XCIsXG4gICAqIC8vICAgc2Vzc2lvbl9zdGFydDogXCIyMDIzLTA1LTA0VDE2OjMwOjE1Ljg4MlpcIixcbiAgICogLy8gICBzZXNzaW9uX2VuZDogXCIyMDIzLTA1LTA0VDE3OjAyOjA5LjA4N1pcIixcbiAgICogLy8gfVxuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBpZGVudGl0eUdldCgpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImlkZW50aXR5R2V0XCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuaWRlbnRpdHlHZXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NpZ25zIHRoZSBjdXJyZW50IHVzZXIgdG8gYSBncm91cC5cbiAgICpcbiAgICogQHBhcmFtIGdyb3VwTmFtZVxuICAgKiBAcGFyYW0gZ3JvdXBUeXBlXG4gICAqIEBwYXJhbSBncm91cFByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMgb2YgeW91ciB1c2VyIGdyb3VwLlxuICAgKiBgYGB0ZXh0IFJlcXVpcmVtZW50czpcbiAgICogICAtIFByb3BlcnR5IG5hbWVzIG11c3QgYmUgbGltaXRlZCB0byAxMjggY2hhcmFjdGVyc1xuICAgKiAgIC0gTm8gbW9yZSB0aGFuIDEwMDAgYXR0cmlidXRlc1xuICAgKiAgIC0gU3VwcG9ydGVkIHR5cGVzIGZvciB2YWx1ZXM6IHN0cmluZywgbnVtYmVyLCBib29sZWFuIGFuZCBEYXRlLlxuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuaWRlbnRpdHlHcm91cEFzc2lnbihcbiAgICogICAnY29tcGFueScsXG4gICAqICAgJ0FwcGxlJyxcbiAgICogICB7XG4gICAqICAgICBhZGRyZXNzX2xpbmVfMTogJ0FwcGxlIENhbXB1cycsXG4gICAqICAgICBhZGRyZXNzX2xpbmVfMjogJzEgSW5maW5pdGUgTG9vcCcsXG4gICAqICAgICBjaXR5OiAnQ3VwZXJ0aW5vJyxcbiAgICogICAgIHppcGNvZGU6IDk1MDE0LFxuICAgKiAgICAgc3RhdGU6ICdDYWxpZm9ybmlhJyxcbiAgICogICAgIGNvdW50cnk6ICdVbml0ZWQgc3RhdGVzJyxcbiAgICogICB9XG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlkZW50aXR5R3JvdXBBc3NpZ24oXG4gICAgZ3JvdXBOYW1lOiBzdHJpbmcsXG4gICAgZ3JvdXBUeXBlPzogc3RyaW5nLFxuICAgIGdyb3VwUHJvcGVydGllcz86IF9TY3JlZWIuUHJvcGVydHlSZWNvcmRcbiAgKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJpZGVudGl0eUdyb3VwQXNzaWduXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuaWRlbnRpdHlHcm91cEFzc2lnbihncm91cE5hbWUsIGdyb3VwVHlwZSwgZ3JvdXBQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmFzc2lnbnMgdGhlIGN1cnJlbnQgdXNlciB0byBhIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JvdXBOYW1lIFRoZSBuYW1lIG9mIHlvdXIgdXNlciBncm91cC5cbiAgICogQHBhcmFtIGdyb3VwVHlwZSBUaGUgdHlwZSBvZiB5b3VyIHVzZXIgZ3JvdXAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmlkZW50aXR5R3JvdXBVbmFzc2lnbignY29tcGFueScsICdBcHBsZScpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBpZGVudGl0eUdyb3VwVW5hc3NpZ24oZ3JvdXBOYW1lOiBzdHJpbmcsIGdyb3VwVHlwZT86IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiaWRlbnRpdHlHcm91cFVuYXNzaWduXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuaWRlbnRpdHlHcm91cFVuYXNzaWduKGdyb3VwTmFtZSwgZ3JvdXBUeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHByb3BlcnRpZXMgdG8gdGhlIGN1cnJlbnQgdXNlciBpZGVudGl0eS5cbiAgICpcbiAgICogQHBhcmFtIHVzZXJQcm9wZXJ0aWVzIFRoZSBwcm9wZXJ0aWVzIG9mIHlvdXIgdXNlci5cbiAgICogYGBgdGV4dCBSZXF1aXJlbWVudHM6XG4gICAqICAgLSBQcm9wZXJ0eSBuYW1lcyBtdXN0IGJlIGxpbWl0ZWQgdG8gMTI4IGNoYXJhY3RlcnNcbiAgICogICAtIE5vIG1vcmUgdGhhbiAxMDAwIGF0dHJpYnV0ZXNcbiAgICogICAtIFN1cHBvcnRlZCB0eXBlcyBmb3IgdmFsdWVzOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiBhbmQgRGF0ZS5cbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIC8vIFNldCB1c2VyIHByb3BlcnRpZXNcbiAgICogdGhpcy5zY3JlZWIuaWRlbnRpdHlQcm9wZXJ0aWVzKFxuICAgKiAgIHtcbiAgICogICAgIGZpcnN0bmFtZTogJzx1c2VyLWZpcnN0bmFtZT4nLFxuICAgKiAgICAgbGFzdG5hbWU6ICc8dXNlci1sYXN0bmFtZT4nLFxuICAgKiAgICAgcGxhbjogJzx1c2VyLXBsYW4+JyxcbiAgICogICAgIGxhc3Rfc2Vlbl9hdDogbmV3IERhdGUoKSxcbiAgICogICAgIGF1dGhlbnRpY2F0ZWQ6IHRydWVcbiAgICogICB9XG4gICAqICk7XG4gICAqXG4gICAqIC8vIERlbGV0ZSB1c2VyIHByb3BlcnR5IDogc2V0IHZhbHVlcyB0byBudWxsXG4gICAqIHRoaXMuc2NyZWViLmlkZW50aXR5UHJvcGVydGllcyhcbiAgICogICB7XG4gICAqICAgICBhZ2U6IG51bGwsXG4gICAqICAgICBjb21wYW55OiBudWxsLFxuICAgKiAgICAgbG9nZ2VkOiB0cnVlLFxuICAgKiAgIH1cbiAgICogKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaWRlbnRpdHlQcm9wZXJ0aWVzKHVzZXJQcm9wZXJ0aWVzOiBfU2NyZWViLlByb3BlcnR5UmVjb3JkKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJpZGVudGl0eVByb3BlcnRpZXNcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5pZGVudGl0eVByb3BlcnRpZXModXNlclByb3BlcnRpZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgY3VycmVudCB1c2VyIGlkZW50aXR5LlxuICAgKiBXYXJuaW5nOiBUaGlzIGNvbW1hbmQgbXVzdCBiZSBjYWxsZWQgb25seSBvbmNlLCBzaW5jZSBpdCBjcmVhdGVzIGEgbmV3IGlkZW50aXR5IG9uIFNjcmVlYiBzaWRlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5pZGVudGl0eVJlc2V0KCk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlkZW50aXR5UmVzZXQoKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJpZGVudGl0eVJlc2V0XCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuaWRlbnRpdHlSZXNldCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVycnVwdHMgYSBydW5uaW5nIHN1cnZleS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuc3VydmV5Q2xvc2UoKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3VydmV5Q2xvc2UoKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJzdXJ2ZXlDbG9zZVwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLnN1cnZleUNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIGEgc3VydmV5IGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuc3VydmV5U3RhcnQoXG4gICAqICAgJzxVVUlEPicsXG4gICAqICAgZmFsc2UsXG4gICAqICAge1xuICAgKiAgICAgY29sb3I6IFwiZ3JlZW5cIixcbiAgICogICAgIGFydGljbGVfaWQ6IDQyXG4gICAqICAgfSxcbiAgICogICB7XG4gICAqICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAqICAgICBvblN1cnZleVNob3dlZDogKHBheWxvYWQpID0+IGNvbnNvbGUubG9nKFwiU3VydmV5IHNob3dlZFwiLCBwYXlsb2FkKSxcbiAgICogICB9LFxuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBzdXJ2ZXlTdGFydChcbiAgICBzdXJ2ZXlJZDogc3RyaW5nLFxuICAgIGFsbG93TXVsdGlwbGVSZXNwb25zZXM6IGJvb2xlYW4sXG4gICAgaGlkZGVuRmllbGRzOiBfU2NyZWViLlByb3BlcnR5UmVjb3JkLFxuICAgIGhvb2tzPzogX1NjcmVlYi5Ib29rc1xuICApIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcInN1cnZleVN0YXJ0XCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuc3VydmV5U3RhcnQoXG4gICAgICBzdXJ2ZXlJZCxcbiAgICAgIGFsbG93TXVsdGlwbGVSZXNwb25zZXMsXG4gICAgICBoaWRkZW5GaWVsZHMsXG4gICAgICBob29rc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VzIGEgdGFyZ2V0aW5nIGNoZWNrLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi50YXJnZXRpbmdDaGVjaygpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyB0YXJnZXRpbmdDaGVjaygpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcInRhcmdldGluZ0NoZWNrXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIudGFyZ2V0aW5nQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmludHMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHRhcmdldGluZyBlbmdpbmUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIGNvbnNvbGUubG9nKGF3YWl0IHRoaXMuc2NyZWViLnRhcmdldGluZ0RlYnVnKCkpO1xuICAgKiAvLyB0YXJnZXRpbmcgKioqKioqKioqKioqIFNDUkVFQiBUQVJHRVRJTkcgUlVMRVMgREVCVUcgKioqKioqKioqKioqKipcbiAgICogLy8gRGlzYWJsZWQgc3VydmV5cyBhcmUgbm90IGxpc3RlZCBoZXJlLlxuICAgKiAvL1xuICAgKiAvLyBTY3JlZWIgY2hhbm5lbCBpZDogPFVVSUQ+XG4gICAqIC8vIFNjcmVlYiByZXNwb25kZW50IGlkOiA8VVVJRD5cbiAgICogLy9cbiAgICogLy8gU3VydmV5IDxVVUlEPjpcbiAgICogLy8gaHR0cHM6Ly9hZG1pbi5zY3JlZWIuYXBwL29yZy9sYXN0L3N1cnZleS88VVVJRD4vc2hhcmVcbiAgICogLy9cbiAgICogLy8gICAtIFJ1bGUgb2YgdHlwZSBcIkRldmljZSB0eXBlIChkZXNrdG9wL21vYmlsZS90YWJsZXQpXCI6IHRydWUg8J+folxuICAgKiAvLyAgIC0gUnVsZSBvZiB0eXBlIFwiTXVsdGlwbGUgZGlzcGxheVwiOiB0cnVlIPCfn6JcbiAgICogLy8gICAtIFJ1bGUgb2YgdHlwZSBcIkNhcHBpbmcgcGVyIHRpbWUgYmV0d2VlbiBzdXJ2ZXkgZGlzcGxheSBvbiBjdXJyZW50IHJlc3BvbmRlbnRcIjogdHJ1ZSDwn5+iXG4gICAqIC8vICAgLSBSdWxlIG9mIHR5cGUgXCJVc2VyIGV2ZW50IGNvdW50XCI6IGZhbHNlIPCflLRcbiAgICogLy8gICAtIFJ1bGUgb2YgdHlwZSBcIkNhcHBpbmcgcGVyIHJlc3BvbmRlbnQgZGlzcGxheSBjb3VudFwiOiBmYWxzZSDwn5S0XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHRhcmdldGluZ0RlYnVnKCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwidGFyZ2V0aW5nRGVidWdcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi50YXJnZXRpbmdEZWJ1ZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIFNjcmVlYiB0YWcuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJzaXRlSWQgWW91ciB3ZWJzaXRlL2NoYW5uZWwgaWQuXG4gICAqIEBwYXJhbSB1c2VySWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHlvdXIgdXNlci5cbiAgICogQHBhcmFtIHVzZXJQcm9wZXJ0aWVzIFRoZSBwcm9wZXJ0aWVzIG9mIHlvdXIgdXNlci5cbiAgICogYGBgdGV4dCBSZXF1aXJlbWVudHM6XG4gICAqICAgLSBQcm9wZXJ0eSBuYW1lcyBtdXN0IGJlIGxpbWl0ZWQgdG8gMTI4IGNoYXJhY3RlcnNcbiAgICogICAtIE5vIG1vcmUgdGhhbiAxMDAwIGF0dHJpYnV0ZXNcbiAgICogICAtIFN1cHBvcnRlZCB0eXBlcyBmb3IgdmFsdWVzOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiBhbmQgRGF0ZVxuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuaW5pdChcbiAgICogICBcIjx5b3VyLXdlYnNpdGUtaWQ+XCIsXG4gICAqICAgXCI8eW91ci11c2VyLWlkPlwiLFxuICAgKiAgIHtcbiAgICogICAgIGZpcnN0bmFtZTogJzx1c2VyLWZpcnN0bmFtZT4nLFxuICAgKiAgICAgbGFzdG5hbWU6ICc8dXNlci1sYXN0bmFtZT4nLFxuICAgKiAgICAgcGxhbjogJzx1c2VyLXBsYW4+JyxcbiAgICogICAgIGxhc3Rfc2Vlbl9hdDogbmV3IERhdGUoKSxcbiAgICogICAgIGF1dGhlbnRpY2F0ZWQ6IHRydWVcbiAgICogICB9LFxuICAgKiAgIHtcbiAgICogICAgIHZlcnNpb246IFwiMS4wLjBcIixcbiAgICogICAgIG9uUmVhZHk6IChwYXlsb2FkKSA9PiBjb25zb2xlLmxvZyhcIlNjcmVlYiBTREsgaXMgcmVhZHkhXCIsIHBheWxvYWQpLFxuICAgKiAgIH0sXG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGluaXQoXG4gICAgd2Vic2l0ZUlkOiBzdHJpbmcsXG4gICAgdXNlcklkPzogc3RyaW5nLFxuICAgIHVzZXJQcm9wZXJ0aWVzPzogX1NjcmVlYi5Qcm9wZXJ0eVJlY29yZCxcbiAgICBob29rcz86IF9TY3JlZWIuSG9va3NcbiAgKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJpbml0XCIsIHRydWUpO1xuXG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgIHJldHVybiBhd2FpdCBfU2NyZWViLmluaXQod2Vic2l0ZUlkLCB1c2VySWQsIHVzZXJQcm9wZXJ0aWVzLCBob29rcyk7XG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kcyBTY3JlZWIgdGFnIGludG8geW91ciBkb20uXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIFNjcmVlYiBtb2R1bGUgb3B0aW9ucy5cbiAgICogQHBhcmFtIG9wdGlvbnMud2luZG93IElmIHlvdSdyZSBydW5uaW5nIFNjcmVlYiB0YWcgaW4gYW4gaWZyYW1lLCBwbGVhc2Ugc2V0IHRoZSBpbm5lciB3aW5kb3cgaGVyZS5cbiAgICogQHBhcmFtIG9wdGlvbnMuc2NyZWViRW5kcG9pbnQgUGxlYXNlIGRvbid0IGRvIHRoaXMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmxvYWQoKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZCgpIHtcbiAgICByZXR1cm4gX1NjcmVlYi5sb2FkKCk7XG4gIH1cbn1cbiJdfQ==
@@ -4,7 +4,7 @@ import { ScreebConfig } from "./screeb-config";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "./screeb-config";
6
6
  import * as i2 from "./screeb";
7
- class ScreebModule {
7
+ export class ScreebModule {
8
8
  /**
9
9
  * This is used to initialize Screeb at the top of your Angular application
10
10
  * @param config Configuration to pass to Screeb browser SDK
@@ -21,7 +21,11 @@ class ScreebModule {
21
21
  * plan: '<user-plan>',
22
22
  * last_seen_at: new Date(),
23
23
  * authenticated: true
24
- * }
24
+ * },
25
+ * {
26
+ * version: "1.0.0",
27
+ * onReady: (payload) => console.log("Screeb SDK is ready!", payload),
28
+ * },
25
29
  * })
26
30
  * ```
27
31
  */
@@ -36,15 +40,14 @@ class ScreebModule {
36
40
  screeb.load();
37
41
  }
38
42
  if ((config.autoInit ?? false) && config.websiteId) {
39
- screeb.init(config.websiteId, config.userId, config.userProperties);
43
+ screeb.init(config.websiteId, config.userId, config.userProperties, config.hooks);
40
44
  }
41
45
  }
42
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebModule, deps: [{ token: ScreebConfig }, { token: Screeb }], target: i0.ɵɵFactoryTarget.NgModule }); }
43
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: ScreebModule }); }
44
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebModule, providers: [Screeb, ScreebConfig] }); }
46
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebModule, deps: [{ token: ScreebConfig }, { token: Screeb }], target: i0.ɵɵFactoryTarget.NgModule }); }
47
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.8", ngImport: i0, type: ScreebModule }); }
48
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebModule, providers: [Screeb, ScreebConfig] }); }
45
49
  }
46
- export { ScreebModule };
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebModule, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebModule, decorators: [{
48
51
  type: NgModule,
49
52
  args: [{
50
53
  providers: [Screeb, ScreebConfig],
@@ -56,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImpor
56
59
  type: Inject,
57
60
  args: [Screeb]
58
61
  }] }]; } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWViLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NjcmVlYi1zZGstYW5ndWxhci9zcmMvbGliL3NjcmVlYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBRS9DLE1BR2EsWUFBWTtJQUN2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBb0I7UUFDakMsT0FBTztZQUNMLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQ2pFLENBQUM7SUFDSixDQUFDO0lBRUQsWUFDd0IsTUFBb0IsRUFDMUIsTUFBYztRQUU5QixJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDckU7SUFDSCxDQUFDO2lJQXZDVSxZQUFZLGtCQTZCYixZQUFZLGFBQ1osTUFBTTtrSUE5QkwsWUFBWTtrSUFBWixZQUFZLGFBRlosQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDOztTQUV0QixZQUFZOzJGQUFaLFlBQVk7a0JBSHhCLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQztpQkFDbEM7OzBCQThCSSxNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQixNQUFNOzJCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFNjcmVlYiB9IGZyb20gXCIuL3NjcmVlYlwiO1xuaW1wb3J0IHsgU2NyZWViQ29uZmlnIH0gZnJvbSBcIi4vc2NyZWViLWNvbmZpZ1wiO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtTY3JlZWIsIFNjcmVlYkNvbmZpZ10sXG59KVxuZXhwb3J0IGNsYXNzIFNjcmVlYk1vZHVsZSB7XG4gIC8qKlxuICAgKiBUaGlzIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSBTY3JlZWIgYXQgdGhlIHRvcCBvZiB5b3VyIEFuZ3VsYXIgYXBwbGljYXRpb25cbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIHRvIHBhc3MgdG8gU2NyZWViIGJyb3dzZXIgU0RLXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIFNjcmVlYk1vZHVsZS5mb3JSb290KHtcbiAgICogICBhdXRvSW5pdDogdHJ1ZSxcbiAgICogICB3ZWJzaXRlSWQ6IFwiPHlvdXItd2Vic2l0ZS1pZD5cIixcbiAgICogICB1c2VySWQ6IFwiPHlvdXItdXNlci1pZD5cIixcbiAgICogICB1c2VyUHJvcGVydGllczoge1xuICAgKiAgICAgZmlyc3RuYW1lOiAnPHVzZXItZmlyc3RuYW1lPicsXG4gICAqICAgICBsYXN0bmFtZTogJzx1c2VyLWxhc3RuYW1lPicsXG4gICAqICAgICBwbGFuOiAnPHVzZXItcGxhbj4nLFxuICAgKiAgICAgbGFzdF9zZWVuX2F0OiBuZXcgRGF0ZSgpLFxuICAgKiAgICAgYXV0aGVudGljYXRlZDogdHJ1ZVxuICAgKiAgIH1cbiAgICogfSlcbiAgICogYGBgXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IFNjcmVlYkNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8U2NyZWViTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBTY3JlZWJNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtTY3JlZWIsIHsgcHJvdmlkZTogU2NyZWViQ29uZmlnLCB1c2VWYWx1ZTogY29uZmlnIH1dLFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFNjcmVlYkNvbmZpZykgY29uZmlnOiBTY3JlZWJDb25maWcsXG4gICAgQEluamVjdChTY3JlZWIpIHNjcmVlYjogU2NyZWViXG4gICkge1xuICAgIGlmIChjb25maWcuc2hvdWxkTG9hZCA/PyB0cnVlKSB7XG4gICAgICBzY3JlZWIubG9hZCgpO1xuICAgIH1cblxuICAgIGlmICgoY29uZmlnLmF1dG9Jbml0ID8/IGZhbHNlKSAmJiBjb25maWcud2Vic2l0ZUlkKSB7XG4gICAgICBzY3JlZWIuaW5pdChjb25maWcud2Vic2l0ZUlkLCBjb25maWcudXNlcklkLCBjb25maWcudXNlclByb3BlcnRpZXMpO1xuICAgIH1cbiAgfVxufVxuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWViLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NjcmVlYi1zZGstYW5ndWxhci9zcmMvbGliL3NjcmVlYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBSy9DLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXVCRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBb0I7UUFDakMsT0FBTztZQUNMLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQ2pFLENBQUM7SUFDSixDQUFDO0lBRUQsWUFDd0IsTUFBb0IsRUFDMUIsTUFBYztRQUU5QixJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNsRCxNQUFNLENBQUMsSUFBSSxDQUNULE1BQU0sQ0FBQyxTQUFTLEVBQ2hCLE1BQU0sQ0FBQyxNQUFNLEVBQ2IsTUFBTSxDQUFDLGNBQWMsRUFDckIsTUFBTSxDQUFDLEtBQUssQ0FDYixDQUFDO1NBQ0g7SUFDSCxDQUFDO2lJQWhEVSxZQUFZLGtCQWlDYixZQUFZLGFBQ1osTUFBTTtrSUFsQ0wsWUFBWTtrSUFBWixZQUFZLGFBRlosQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDOzsyRkFFdEIsWUFBWTtrQkFIeEIsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDO2lCQUNsQzs7MEJBa0NJLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLE1BQU07MkJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU2NyZWViIH0gZnJvbSBcIi4vc2NyZWViXCI7XG5pbXBvcnQgeyBTY3JlZWJDb25maWcgfSBmcm9tIFwiLi9zY3JlZWItY29uZmlnXCI7XG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW1NjcmVlYiwgU2NyZWViQ29uZmlnXSxcbn0pXG5leHBvcnQgY2xhc3MgU2NyZWViTW9kdWxlIHtcbiAgLyoqXG4gICAqIFRoaXMgaXMgdXNlZCB0byBpbml0aWFsaXplIFNjcmVlYiBhdCB0aGUgdG9wIG9mIHlvdXIgQW5ndWxhciBhcHBsaWNhdGlvblxuICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gdG8gcGFzcyB0byBTY3JlZWIgYnJvd3NlciBTREtcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogU2NyZWViTW9kdWxlLmZvclJvb3Qoe1xuICAgKiAgIGF1dG9Jbml0OiB0cnVlLFxuICAgKiAgIHdlYnNpdGVJZDogXCI8eW91ci13ZWJzaXRlLWlkPlwiLFxuICAgKiAgIHVzZXJJZDogXCI8eW91ci11c2VyLWlkPlwiLFxuICAgKiAgIHVzZXJQcm9wZXJ0aWVzOiB7XG4gICAqICAgICBmaXJzdG5hbWU6ICc8dXNlci1maXJzdG5hbWU+JyxcbiAgICogICAgIGxhc3RuYW1lOiAnPHVzZXItbGFzdG5hbWU+JyxcbiAgICogICAgIHBsYW46ICc8dXNlci1wbGFuPicsXG4gICAqICAgICBsYXN0X3NlZW5fYXQ6IG5ldyBEYXRlKCksXG4gICAqICAgICBhdXRoZW50aWNhdGVkOiB0cnVlXG4gICAqICAgfSxcbiAgICogICB7XG4gICAqICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAqICAgICBvblJlYWR5OiAocGF5bG9hZCkgPT4gY29uc29sZS5sb2coXCJTY3JlZWIgU0RLIGlzIHJlYWR5IVwiLCBwYXlsb2FkKSxcbiAgICogICB9LFxuICAgKiB9KVxuICAgKiBgYGBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogU2NyZWViQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxTY3JlZWJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFNjcmVlYk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1NjcmVlYiwgeyBwcm92aWRlOiBTY3JlZWJDb25maWcsIHVzZVZhbHVlOiBjb25maWcgfV0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoU2NyZWViQ29uZmlnKSBjb25maWc6IFNjcmVlYkNvbmZpZyxcbiAgICBASW5qZWN0KFNjcmVlYikgc2NyZWViOiBTY3JlZWJcbiAgKSB7XG4gICAgaWYgKGNvbmZpZy5zaG91bGRMb2FkID8/IHRydWUpIHtcbiAgICAgIHNjcmVlYi5sb2FkKCk7XG4gICAgfVxuXG4gICAgaWYgKChjb25maWcuYXV0b0luaXQgPz8gZmFsc2UpICYmIGNvbmZpZy53ZWJzaXRlSWQpIHtcbiAgICAgIHNjcmVlYi5pbml0KFxuICAgICAgICBjb25maWcud2Vic2l0ZUlkLFxuICAgICAgICBjb25maWcudXNlcklkLFxuICAgICAgICBjb25maWcudXNlclByb3BlcnRpZXMsXG4gICAgICAgIGNvbmZpZy5ob29rc1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -31,10 +31,10 @@ const log = (level, message) => {
31
31
 
32
32
  /** Configuration of Screeb module */
33
33
  class ScreebConfig {
34
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebConfig, providedIn: "root" }); }
34
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebConfig, providedIn: "root" }); }
36
36
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebConfig, decorators: [{
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebConfig, decorators: [{
38
38
  type: Injectable,
39
39
  args: [{ providedIn: "root" }]
40
40
  }] });
@@ -173,13 +173,13 @@ class Screeb {
173
173
  * ```ts
174
174
  * console.log(await this.screeb.identityGet());
175
175
  * // {
176
+ * // channel_id: "<UUID>",
176
177
  * // anonymous_id: "<UUID>",
177
178
  * // user_id: "<UUID>",
179
+ * // is_ready: true,
178
180
  * // session_id: "<UUID>",
179
181
  * // session_start: "2023-05-04T16:30:15.882Z",
180
182
  * // session_end: "2023-05-04T17:02:09.087Z",
181
- * // channel_id: "<UUID>",
182
- * // is_ready: true,
183
183
  * // }
184
184
  * ```
185
185
  */
@@ -307,13 +307,17 @@ class Screeb {
307
307
  * {
308
308
  * color: "green",
309
309
  * article_id: 42
310
- * }
310
+ * },
311
+ * {
312
+ * version: "1.0.0",
313
+ * onSurveyShowed: (payload) => console.log("Survey showed", payload),
314
+ * },
311
315
  * );
312
316
  * ```
313
317
  */
314
- async surveyStart(surveyId, allowMultipleResponses, hiddenFields) {
318
+ async surveyStart(surveyId, allowMultipleResponses, hiddenFields, hooks) {
315
319
  await this.ensureScreeb("surveyStart");
316
- return _Screeb.surveyStart(surveyId, allowMultipleResponses, hiddenFields);
320
+ return _Screeb.surveyStart(surveyId, allowMultipleResponses, hiddenFields, hooks);
317
321
  }
318
322
  /**
319
323
  * Forces a targeting check.
@@ -376,14 +380,18 @@ class Screeb {
376
380
  * plan: '<user-plan>',
377
381
  * last_seen_at: new Date(),
378
382
  * authenticated: true
379
- * }
383
+ * },
384
+ * {
385
+ * version: "1.0.0",
386
+ * onReady: (payload) => console.log("Screeb SDK is ready!", payload),
387
+ * },
380
388
  * );
381
389
  * ```
382
390
  */
383
- async init(websiteId, userId, userProperties) {
391
+ async init(websiteId, userId, userProperties, hooks) {
384
392
  await this.ensureScreeb("init", true);
385
393
  this.isInitialized = true;
386
- return await _Screeb.init(websiteId, userId, userProperties);
394
+ return await _Screeb.init(websiteId, userId, userProperties, hooks);
387
395
  }
388
396
  /**
389
397
  * Appends Screeb tag into your dom.
@@ -400,10 +408,10 @@ class Screeb {
400
408
  async load() {
401
409
  return _Screeb.load();
402
410
  }
403
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: Screeb, deps: [{ token: ScreebConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
404
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: Screeb, providedIn: "root" }); }
411
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: Screeb, deps: [{ token: ScreebConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
412
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: Screeb, providedIn: "root" }); }
405
413
  }
406
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: Screeb, decorators: [{
414
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: Screeb, decorators: [{
407
415
  type: Injectable,
408
416
  args: [{ providedIn: "root" }]
409
417
  }], ctorParameters: function () { return [{ type: ScreebConfig, decorators: [{
@@ -428,7 +436,11 @@ class ScreebModule {
428
436
  * plan: '<user-plan>',
429
437
  * last_seen_at: new Date(),
430
438
  * authenticated: true
431
- * }
439
+ * },
440
+ * {
441
+ * version: "1.0.0",
442
+ * onReady: (payload) => console.log("Screeb SDK is ready!", payload),
443
+ * },
432
444
  * })
433
445
  * ```
434
446
  */
@@ -443,14 +455,14 @@ class ScreebModule {
443
455
  screeb.load();
444
456
  }
445
457
  if ((config.autoInit ?? false) && config.websiteId) {
446
- screeb.init(config.websiteId, config.userId, config.userProperties);
458
+ screeb.init(config.websiteId, config.userId, config.userProperties, config.hooks);
447
459
  }
448
460
  }
449
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebModule, deps: [{ token: ScreebConfig }, { token: Screeb }], target: i0.ɵɵFactoryTarget.NgModule }); }
450
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: ScreebModule }); }
451
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebModule, providers: [Screeb, ScreebConfig] }); }
461
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebModule, deps: [{ token: ScreebConfig }, { token: Screeb }], target: i0.ɵɵFactoryTarget.NgModule }); }
462
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.8", ngImport: i0, type: ScreebModule }); }
463
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebModule, providers: [Screeb, ScreebConfig] }); }
452
464
  }
453
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: ScreebModule, decorators: [{
465
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.8", ngImport: i0, type: ScreebModule, decorators: [{
454
466
  type: NgModule,
455
467
  args: [{
456
468
  providers: [Screeb, ScreebConfig],
@@ -1 +1 @@
1
- {"version":3,"file":"screeb-sdk-angular.mjs","sources":["../../../projects/screeb-sdk-angular/src/lib/logger.ts","../../../projects/screeb-sdk-angular/src/lib/screeb-config.ts","../../../projects/screeb-sdk-angular/src/lib/screeb.ts","../../../projects/screeb-sdk-angular/src/lib/screeb.module.ts","../../../projects/screeb-sdk-angular/src/public-api.ts","../../../projects/screeb-sdk-angular/src/screeb-sdk-angular.ts"],"sourcesContent":["type LogLevel = \"info\" | \"error\" | \"warn\";\n\n/**\n * Logs messages in the console with a corresponding urgency\n *\n * @param level the urgency of the message\n * @param message the message to log in the console\n */\nexport const log = (level: LogLevel, message: string) => {\n const packageName = \"[@screeb/angular-sdk]\";\n\n switch (level) {\n case \"info\":\n // eslint-disable-next-line no-console\n console.log(`${packageName} ${message}`);\n break;\n case \"warn\":\n // eslint-disable-next-line no-console\n console.warn(`${packageName} ${message}`);\n break;\n case \"error\":\n // eslint-disable-next-line no-console\n console.error(`${packageName} ${message}`);\n break;\n default:\n // eslint-disable-next-line no-console\n console.log(`${packageName} ${message}`);\n }\n};\n","import { Injectable } from \"@angular/core\";\nimport { PropertyRecord, ScreebOptions } from \"@screeb/sdk-browser\";\n\n/** Configuration of Screeb module */\n@Injectable({ providedIn: \"root\" })\nexport class ScreebConfig {\n /** Your website/channel id. */\n websiteId?: string;\n /** The unique identifier of your user. */\n userId?: string;\n /** The properties of your user. */\n userProperties?: PropertyRecord;\n /**\n * Indicates if Screeb should be automatically loaded.\n * This will ping to the Screeb servers.\n *\n * @remarks if `true`, 'load' does not need to be called manually. Can be used for multistaged environments\n */\n shouldLoad?: boolean;\n /**\n * Indicates if Screeb should be automatically initialized.\n *\n * @remarks if `true`, 'init' does not need to be called manually\n * */\n autoInit?: boolean;\n /**\n * Screeb tag initialization options.\n *\n * @remarks this is used is really particular cases, handle with care.\n * */\n options?: ScreebOptions;\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport * as _Screeb from \"@screeb/sdk-browser\";\n\nimport * as logger from \"./logger\";\nimport { ScreebConfig } from \"./screeb-config\";\n\n@Injectable({ providedIn: \"root\" })\nexport class Screeb {\n private isInitialized = false;\n\n // eslint-disable-next-line no-unused-vars\n constructor(@Inject(ScreebConfig) private config: ScreebConfig) {}\n\n private async ensureScreeb(functionName: string, onlyLoaded = false) {\n if (!_Screeb.isLoaded() && !this.config.shouldLoad) {\n const message =\n \"Screeb instance is not loaded because `shouldLoad` is set to `false` in `ScreebModule` configuration.\";\n\n logger.log(\"warn\", message);\n\n return Promise.reject(message);\n }\n if (!this.isInitialized && !onlyLoaded) {\n const message = [\n `\"${functionName}\" was called but Screeb has not been initialized yet. `,\n `Please call 'init' before calling '${functionName}' or `,\n \"set 'autoInit' to true in the `ScreebModule` configuration.\",\n ].join(\"\");\n\n logger.log(\"warn\", message);\n\n return Promise.reject(message);\n }\n return Promise.resolve();\n }\n\n /**\n * Shutdowns current Screeb session.\n *\n * @example\n * ```ts\n * this.screeb.close();\n * ```\n */\n public async close() {\n await this.ensureScreeb(\"close\");\n\n return _Screeb.close();\n }\n\n /**\n * Prints the actual state information of Screeb tag.\n *\n * @example\n * ```ts\n * this.screeb.debug();\n * // ******************* SCREEB SESSION DEBUG *********************\n * // Screeb channel id: <UUID>\n * // Screeb channel type: widget\n * // Screeb respondent id: <UUID>\n * // Screeb survey id: none\n * // Screeb response id: none\n * //\n * // Screeb current session start: Thu May 04 2023 16:53:49 GMT+0200 (Central European Summer Time)\n * // Screeb current session last activity: Thu May 04 2023 17:41:30 GMT+0200 (Central European Summer Time)\n * //\n * // Screeb targeting engine status: disabled\n * // Screeb targeting engine: 3 surveys\n * //\n * // Detected platform: desktop\n * // Detected locale: en-GB\n * // Detected timezone: -120\n * // **************************************************************\n * ```\n */\n public async debug() {\n await this.ensureScreeb(\"debug\");\n\n return _Screeb.debug();\n }\n\n /**\n * Tracks a user event.\n *\n * @param eventName The event name.\n * @param eventProperties The properties of your event.\n * ```text Requirements:\n * - Property names must be limited to 128 characters\n * - No more than 1000 attributes\n * - Supported types for values: string, number, boolean and Date.\n * ```\n *\n * @example\n * ```ts\n * this.screeb.eventTrack(\n * \"Product added to cart\",\n * {\n * product_name: 'Red bike 2021',\n * category: 'sport',\n * color: 'red',\n * price: 299,\n * count: 1,\n * reference: '2CF093TG1',\n * delivery_method: 'UPS',\n * user_logged: false,\n * added_at: new Date(),\n * }\n * );\n * ```\n */\n public async eventTrack(\n eventName: string,\n eventProperties?: _Screeb.PropertyRecord\n ) {\n await this.ensureScreeb(\"eventTrack\");\n\n return _Screeb.eventTrack(eventName, eventProperties);\n }\n\n /**\n * Change the current user identity.\n * Warning: Running surveys will be closed.\n *\n * @param userId The unique identifier of your user.\n * @param userProperties The properties of your user.\n * ```text Requirements:\n * - Property names must be limited to 128 characters\n * - No more than 1000 attributes\n * - Supported types for values: string, number, boolean and Date.\n * ```\n *\n * @example\n * ```ts\n * this.screeb.identity(\n * \"<your-user-id>\",\n * {\n * firstname: '<user-firstname>',\n * lastname: '<user-lastname>',\n * plan: '<user-plan>',\n * last_seen_at: new Date(),\n * authenticated: true\n * }\n * );\n * ```\n */\n public async identity(\n userId: string,\n userProperties?: _Screeb.PropertyRecord\n ) {\n await this.ensureScreeb(\"identity\");\n\n return _Screeb.identity(userId, userProperties);\n }\n\n /**\n * Retrieves the current user identity.\n *\n * @example\n * ```ts\n * console.log(await this.screeb.identityGet());\n * // {\n * // anonymous_id: \"<UUID>\",\n * // user_id: \"<UUID>\",\n * // session_id: \"<UUID>\",\n * // session_start: \"2023-05-04T16:30:15.882Z\",\n * // session_end: \"2023-05-04T17:02:09.087Z\",\n * // channel_id: \"<UUID>\",\n * // is_ready: true,\n * // }\n * ```\n */\n public async identityGet() {\n await this.ensureScreeb(\"identityGet\");\n\n return _Screeb.identityGet();\n }\n\n /**\n * Assigns the current user to a group.\n *\n * @param groupName\n * @param groupType\n * @param groupProperties The properties of your user group.\n * ```text Requirements:\n * - Property names must be limited to 128 characters\n * - No more than 1000 attributes\n * - Supported types for values: string, number, boolean and Date.\n * ```\n *\n * @example\n * ```ts\n * this.screeb.identityGroupAssign(\n * 'company',\n * 'Apple',\n * {\n * address_line_1: 'Apple Campus',\n * address_line_2: '1 Infinite Loop',\n * city: 'Cupertino',\n * zipcode: 95014,\n * state: 'California',\n * country: 'United states',\n * }\n * );\n * ```\n */\n public async identityGroupAssign(\n groupName: string,\n groupType?: string,\n groupProperties?: _Screeb.PropertyRecord\n ) {\n await this.ensureScreeb(\"identityGroupAssign\");\n\n return _Screeb.identityGroupAssign(groupName, groupType, groupProperties);\n }\n\n /**\n * Unassigns the current user to a group.\n *\n * @param groupName The name of your user group.\n * @param groupType The type of your user group.\n *\n * @example\n * ```ts\n * this.screeb.identityGroupUnassign('company', 'Apple');\n * ```\n */\n public async identityGroupUnassign(groupName: string, groupType?: string) {\n await this.ensureScreeb(\"identityGroupUnassign\");\n\n return _Screeb.identityGroupUnassign(groupName, groupType);\n }\n\n /**\n * Adds properties to the current user identity.\n *\n * @param userProperties The properties of your user.\n * ```text Requirements:\n * - Property names must be limited to 128 characters\n * - No more than 1000 attributes\n * - Supported types for values: string, number, boolean and Date.\n * ```\n *\n * @example\n * ```ts\n * // Set user properties\n * this.screeb.identityProperties(\n * {\n * firstname: '<user-firstname>',\n * lastname: '<user-lastname>',\n * plan: '<user-plan>',\n * last_seen_at: new Date(),\n * authenticated: true\n * }\n * );\n *\n * // Delete user property : set values to null\n * this.screeb.identityProperties(\n * {\n * age: null,\n * company: null,\n * logged: true,\n * }\n * );\n * ```\n */\n public async identityProperties(userProperties: _Screeb.PropertyRecord) {\n await this.ensureScreeb(\"identityProperties\");\n\n return _Screeb.identityProperties(userProperties);\n }\n\n /**\n * Resets the current user identity.\n * Warning: This command must be called only once, since it creates a new identity on Screeb side.\n *\n * @example\n * ```ts\n * this.screeb.identityReset();\n * ```\n */\n public async identityReset() {\n await this.ensureScreeb(\"identityReset\");\n\n return _Screeb.identityReset();\n }\n\n /**\n * Interrupts a running survey.\n *\n * @example\n * ```ts\n * this.screeb.surveyClose();\n * ```\n */\n public async surveyClose() {\n await this.ensureScreeb(\"surveyClose\");\n\n return _Screeb.surveyClose();\n }\n\n /**\n * Starts a survey by its ID.\n *\n * @example\n * ```ts\n * this.screeb.surveyStart(\n * '<UUID>',\n * false,\n * {\n * color: \"green\",\n * article_id: 42\n * }\n * );\n * ```\n */\n public async surveyStart(\n surveyId: string,\n allowMultipleResponses: boolean,\n hiddenFields: _Screeb.PropertyRecord\n ) {\n await this.ensureScreeb(\"surveyStart\");\n\n return _Screeb.surveyStart(surveyId, allowMultipleResponses, hiddenFields);\n }\n\n /**\n * Forces a targeting check.\n *\n * @example\n * ```ts\n * this.screeb.targetingCheck();\n * ```\n */\n public async targetingCheck() {\n await this.ensureScreeb(\"targetingCheck\");\n\n return _Screeb.targetingCheck();\n }\n\n /**\n * Prints the current state of the targeting engine.\n *\n * @example\n * ```ts\n * console.log(await this.screeb.targetingDebug());\n * // targeting ************ SCREEB TARGETING RULES DEBUG **************\n * // Disabled surveys are not listed here.\n * //\n * // Screeb channel id: <UUID>\n * // Screeb respondent id: <UUID>\n * //\n * // Survey <UUID>:\n * // https://admin.screeb.app/org/last/survey/<UUID>/share\n * //\n * // - Rule of type \"Device type (desktop/mobile/tablet)\": true 🟢\n * // - Rule of type \"Multiple display\": true 🟢\n * // - Rule of type \"Capping per time between survey display on current respondent\": true 🟢\n * // - Rule of type \"User event count\": false 🔴\n * // - Rule of type \"Capping per respondent display count\": false 🔴\n * ```\n */\n public async targetingDebug() {\n await this.ensureScreeb(\"targetingDebug\");\n\n return _Screeb.targetingDebug();\n }\n\n /**\n * Initializes Screeb tag.\n *\n * @param websiteId Your website/channel id.\n * @param userId The unique identifier of your user.\n * @param userProperties The properties of your user.\n * ```text Requirements:\n * - Property names must be limited to 128 characters\n * - No more than 1000 attributes\n * - Supported types for values: string, number, boolean and Date\n * ```\n *\n * @example\n * ```ts\n * this.screeb.init(\n * \"<your-website-id>\",\n * \"<your-user-id>\",\n * {\n * firstname: '<user-firstname>',\n * lastname: '<user-lastname>',\n * plan: '<user-plan>',\n * last_seen_at: new Date(),\n * authenticated: true\n * }\n * );\n * ```\n */\n public async init(\n websiteId: string,\n userId?: string,\n userProperties?: _Screeb.PropertyRecord\n ) {\n await this.ensureScreeb(\"init\", true);\n\n this.isInitialized = true;\n\n return await _Screeb.init(websiteId, userId, userProperties);\n }\n\n /**\n * Appends Screeb tag into your dom.\n *\n * @param options Screeb module options.\n * @param options.window If you're running Screeb tag in an iframe, please set the inner window here.\n * @param options.screebEndpoint Please don't do this.\n *\n * @example\n * ```ts\n * this.screeb.load();\n * ```\n */\n public async load() {\n return _Screeb.load();\n }\n}\n","import { Inject, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { Screeb } from \"./screeb\";\nimport { ScreebConfig } from \"./screeb-config\";\n\n@NgModule({\n providers: [Screeb, ScreebConfig],\n})\nexport class ScreebModule {\n /**\n * This is used to initialize Screeb at the top of your Angular application\n * @param config Configuration to pass to Screeb browser SDK\n *\n * @example\n * ```ts\n * ScreebModule.forRoot({\n * autoInit: true,\n * websiteId: \"<your-website-id>\",\n * userId: \"<your-user-id>\",\n * userProperties: {\n * firstname: '<user-firstname>',\n * lastname: '<user-lastname>',\n * plan: '<user-plan>',\n * last_seen_at: new Date(),\n * authenticated: true\n * }\n * })\n * ```\n */\n static forRoot(config: ScreebConfig): ModuleWithProviders<ScreebModule> {\n return {\n ngModule: ScreebModule,\n providers: [Screeb, { provide: ScreebConfig, useValue: config }],\n };\n }\n\n constructor(\n @Inject(ScreebConfig) config: ScreebConfig,\n @Inject(Screeb) screeb: Screeb\n ) {\n if (config.shouldLoad ?? true) {\n screeb.load();\n }\n\n if ((config.autoInit ?? false) && config.websiteId) {\n screeb.init(config.websiteId, config.userId, config.userProperties);\n }\n }\n}\n","/*\n * Public API Surface of screeb-sdk-angular\n */\n\nexport { ScreebModule } from \"./lib/screeb.module\";\nexport { ScreebConfig } from \"./lib/screeb-config\";\nexport { Screeb } from \"./lib/screeb\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["logger.log"],"mappings":"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"}
1
+ {"version":3,"file":"screeb-sdk-angular.mjs","sources":["../../../projects/screeb-sdk-angular/src/lib/logger.ts","../../../projects/screeb-sdk-angular/src/lib/screeb-config.ts","../../../projects/screeb-sdk-angular/src/lib/screeb.ts","../../../projects/screeb-sdk-angular/src/lib/screeb.module.ts","../../../projects/screeb-sdk-angular/src/public-api.ts","../../../projects/screeb-sdk-angular/src/screeb-sdk-angular.ts"],"sourcesContent":["type LogLevel = \"info\" | \"error\" | \"warn\";\n\n/**\n * Logs messages in the console with a corresponding urgency\n *\n * @param level the urgency of the message\n * @param message the message to log in the console\n */\nexport const log = (level: LogLevel, message: string) => {\n const packageName = \"[@screeb/angular-sdk]\";\n\n switch (level) {\n case \"info\":\n // eslint-disable-next-line no-console\n console.log(`${packageName} ${message}`);\n break;\n case \"warn\":\n // eslint-disable-next-line no-console\n console.warn(`${packageName} ${message}`);\n break;\n case \"error\":\n // eslint-disable-next-line no-console\n console.error(`${packageName} ${message}`);\n break;\n default:\n // eslint-disable-next-line no-console\n console.log(`${packageName} ${message}`);\n }\n};\n","import { Injectable } from \"@angular/core\";\nimport { Hooks, PropertyRecord, ScreebOptions } from \"@screeb/sdk-browser\";\n\n/** Configuration of Screeb module */\n@Injectable({ providedIn: \"root\" })\nexport class ScreebConfig {\n /** Your website/channel id. */\n websiteId?: string;\n /** The unique identifier of your user. */\n userId?: string;\n /** The properties of your user. */\n userProperties?: PropertyRecord;\n /** Hooks to define callback for various event */\n hooks?: Hooks;\n /**\n * Indicates if Screeb should be automatically loaded.\n * This will ping to the Screeb servers.\n *\n * @remarks if `true`, 'load' does not need to be called manually. Can be used for multistaged environments\n */\n shouldLoad?: boolean;\n /**\n * Indicates if Screeb should be automatically initialized.\n *\n * @remarks if `true`, 'init' does not need to be called manually\n * */\n autoInit?: boolean;\n /**\n * Screeb tag initialization options.\n *\n * @remarks this is used is really particular cases, handle with care.\n * */\n options?: ScreebOptions;\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport * as _Screeb from \"@screeb/sdk-browser\";\n\nimport * as logger from \"./logger\";\nimport { ScreebConfig } from \"./screeb-config\";\n\n@Injectable({ providedIn: \"root\" })\nexport class Screeb {\n private isInitialized = false;\n\n // eslint-disable-next-line no-unused-vars\n constructor(@Inject(ScreebConfig) private config: ScreebConfig) {}\n\n private async ensureScreeb(functionName: string, onlyLoaded = false) {\n if (!_Screeb.isLoaded() && !this.config.shouldLoad) {\n const message =\n \"Screeb instance is not loaded because `shouldLoad` is set to `false` in `ScreebModule` configuration.\";\n\n logger.log(\"warn\", message);\n\n return Promise.reject(message);\n }\n if (!this.isInitialized && !onlyLoaded) {\n const message = [\n `\"${functionName}\" was called but Screeb has not been initialized yet. `,\n `Please call 'init' before calling '${functionName}' or `,\n \"set 'autoInit' to true in the `ScreebModule` configuration.\",\n ].join(\"\");\n\n logger.log(\"warn\", message);\n\n return Promise.reject(message);\n }\n return Promise.resolve();\n }\n\n /**\n * Shutdowns current Screeb session.\n *\n * @example\n * ```ts\n * this.screeb.close();\n * ```\n */\n public async close() {\n await this.ensureScreeb(\"close\");\n\n return _Screeb.close();\n }\n\n /**\n * Prints the actual state information of Screeb tag.\n *\n * @example\n * ```ts\n * this.screeb.debug();\n * // ******************* SCREEB SESSION DEBUG *********************\n * // Screeb channel id: <UUID>\n * // Screeb channel type: widget\n * // Screeb respondent id: <UUID>\n * // Screeb survey id: none\n * // Screeb response id: none\n * //\n * // Screeb current session start: Thu May 04 2023 16:53:49 GMT+0200 (Central European Summer Time)\n * // Screeb current session last activity: Thu May 04 2023 17:41:30 GMT+0200 (Central European Summer Time)\n * //\n * // Screeb targeting engine status: disabled\n * // Screeb targeting engine: 3 surveys\n * //\n * // Detected platform: desktop\n * // Detected locale: en-GB\n * // Detected timezone: -120\n * // **************************************************************\n * ```\n */\n public async debug() {\n await this.ensureScreeb(\"debug\");\n\n return _Screeb.debug();\n }\n\n /**\n * Tracks a user event.\n *\n * @param eventName The event name.\n * @param eventProperties The properties of your event.\n * ```text Requirements:\n * - Property names must be limited to 128 characters\n * - No more than 1000 attributes\n * - Supported types for values: string, number, boolean and Date.\n * ```\n *\n * @example\n * ```ts\n * this.screeb.eventTrack(\n * \"Product added to cart\",\n * {\n * product_name: 'Red bike 2021',\n * category: 'sport',\n * color: 'red',\n * price: 299,\n * count: 1,\n * reference: '2CF093TG1',\n * delivery_method: 'UPS',\n * user_logged: false,\n * added_at: new Date(),\n * }\n * );\n * ```\n */\n public async eventTrack(\n eventName: string,\n eventProperties?: _Screeb.PropertyRecord\n ) {\n await this.ensureScreeb(\"eventTrack\");\n\n return _Screeb.eventTrack(eventName, eventProperties);\n }\n\n /**\n * Change the current user identity.\n * Warning: Running surveys will be closed.\n *\n * @param userId The unique identifier of your user.\n * @param userProperties The properties of your user.\n * ```text Requirements:\n * - Property names must be limited to 128 characters\n * - No more than 1000 attributes\n * - Supported types for values: string, number, boolean and Date.\n * ```\n *\n * @example\n * ```ts\n * this.screeb.identity(\n * \"<your-user-id>\",\n * {\n * firstname: '<user-firstname>',\n * lastname: '<user-lastname>',\n * plan: '<user-plan>',\n * last_seen_at: new Date(),\n * authenticated: true\n * }\n * );\n * ```\n */\n public async identity(\n userId: string,\n userProperties?: _Screeb.PropertyRecord\n ) {\n await this.ensureScreeb(\"identity\");\n\n return _Screeb.identity(userId, userProperties);\n }\n\n /**\n * Retrieves the current user identity.\n *\n * @example\n * ```ts\n * console.log(await this.screeb.identityGet());\n * // {\n * // channel_id: \"<UUID>\",\n * // anonymous_id: \"<UUID>\",\n * // user_id: \"<UUID>\",\n * // is_ready: true,\n * // session_id: \"<UUID>\",\n * // session_start: \"2023-05-04T16:30:15.882Z\",\n * // session_end: \"2023-05-04T17:02:09.087Z\",\n * // }\n * ```\n */\n public async identityGet() {\n await this.ensureScreeb(\"identityGet\");\n\n return _Screeb.identityGet();\n }\n\n /**\n * Assigns the current user to a group.\n *\n * @param groupName\n * @param groupType\n * @param groupProperties The properties of your user group.\n * ```text Requirements:\n * - Property names must be limited to 128 characters\n * - No more than 1000 attributes\n * - Supported types for values: string, number, boolean and Date.\n * ```\n *\n * @example\n * ```ts\n * this.screeb.identityGroupAssign(\n * 'company',\n * 'Apple',\n * {\n * address_line_1: 'Apple Campus',\n * address_line_2: '1 Infinite Loop',\n * city: 'Cupertino',\n * zipcode: 95014,\n * state: 'California',\n * country: 'United states',\n * }\n * );\n * ```\n */\n public async identityGroupAssign(\n groupName: string,\n groupType?: string,\n groupProperties?: _Screeb.PropertyRecord\n ) {\n await this.ensureScreeb(\"identityGroupAssign\");\n\n return _Screeb.identityGroupAssign(groupName, groupType, groupProperties);\n }\n\n /**\n * Unassigns the current user to a group.\n *\n * @param groupName The name of your user group.\n * @param groupType The type of your user group.\n *\n * @example\n * ```ts\n * this.screeb.identityGroupUnassign('company', 'Apple');\n * ```\n */\n public async identityGroupUnassign(groupName: string, groupType?: string) {\n await this.ensureScreeb(\"identityGroupUnassign\");\n\n return _Screeb.identityGroupUnassign(groupName, groupType);\n }\n\n /**\n * Adds properties to the current user identity.\n *\n * @param userProperties The properties of your user.\n * ```text Requirements:\n * - Property names must be limited to 128 characters\n * - No more than 1000 attributes\n * - Supported types for values: string, number, boolean and Date.\n * ```\n *\n * @example\n * ```ts\n * // Set user properties\n * this.screeb.identityProperties(\n * {\n * firstname: '<user-firstname>',\n * lastname: '<user-lastname>',\n * plan: '<user-plan>',\n * last_seen_at: new Date(),\n * authenticated: true\n * }\n * );\n *\n * // Delete user property : set values to null\n * this.screeb.identityProperties(\n * {\n * age: null,\n * company: null,\n * logged: true,\n * }\n * );\n * ```\n */\n public async identityProperties(userProperties: _Screeb.PropertyRecord) {\n await this.ensureScreeb(\"identityProperties\");\n\n return _Screeb.identityProperties(userProperties);\n }\n\n /**\n * Resets the current user identity.\n * Warning: This command must be called only once, since it creates a new identity on Screeb side.\n *\n * @example\n * ```ts\n * this.screeb.identityReset();\n * ```\n */\n public async identityReset() {\n await this.ensureScreeb(\"identityReset\");\n\n return _Screeb.identityReset();\n }\n\n /**\n * Interrupts a running survey.\n *\n * @example\n * ```ts\n * this.screeb.surveyClose();\n * ```\n */\n public async surveyClose() {\n await this.ensureScreeb(\"surveyClose\");\n\n return _Screeb.surveyClose();\n }\n\n /**\n * Starts a survey by its ID.\n *\n * @example\n * ```ts\n * this.screeb.surveyStart(\n * '<UUID>',\n * false,\n * {\n * color: \"green\",\n * article_id: 42\n * },\n * {\n * version: \"1.0.0\",\n * onSurveyShowed: (payload) => console.log(\"Survey showed\", payload),\n * },\n * );\n * ```\n */\n public async surveyStart(\n surveyId: string,\n allowMultipleResponses: boolean,\n hiddenFields: _Screeb.PropertyRecord,\n hooks?: _Screeb.Hooks\n ) {\n await this.ensureScreeb(\"surveyStart\");\n\n return _Screeb.surveyStart(\n surveyId,\n allowMultipleResponses,\n hiddenFields,\n hooks\n );\n }\n\n /**\n * Forces a targeting check.\n *\n * @example\n * ```ts\n * this.screeb.targetingCheck();\n * ```\n */\n public async targetingCheck() {\n await this.ensureScreeb(\"targetingCheck\");\n\n return _Screeb.targetingCheck();\n }\n\n /**\n * Prints the current state of the targeting engine.\n *\n * @example\n * ```ts\n * console.log(await this.screeb.targetingDebug());\n * // targeting ************ SCREEB TARGETING RULES DEBUG **************\n * // Disabled surveys are not listed here.\n * //\n * // Screeb channel id: <UUID>\n * // Screeb respondent id: <UUID>\n * //\n * // Survey <UUID>:\n * // https://admin.screeb.app/org/last/survey/<UUID>/share\n * //\n * // - Rule of type \"Device type (desktop/mobile/tablet)\": true 🟢\n * // - Rule of type \"Multiple display\": true 🟢\n * // - Rule of type \"Capping per time between survey display on current respondent\": true 🟢\n * // - Rule of type \"User event count\": false 🔴\n * // - Rule of type \"Capping per respondent display count\": false 🔴\n * ```\n */\n public async targetingDebug() {\n await this.ensureScreeb(\"targetingDebug\");\n\n return _Screeb.targetingDebug();\n }\n\n /**\n * Initializes Screeb tag.\n *\n * @param websiteId Your website/channel id.\n * @param userId The unique identifier of your user.\n * @param userProperties The properties of your user.\n * ```text Requirements:\n * - Property names must be limited to 128 characters\n * - No more than 1000 attributes\n * - Supported types for values: string, number, boolean and Date\n * ```\n *\n * @example\n * ```ts\n * this.screeb.init(\n * \"<your-website-id>\",\n * \"<your-user-id>\",\n * {\n * firstname: '<user-firstname>',\n * lastname: '<user-lastname>',\n * plan: '<user-plan>',\n * last_seen_at: new Date(),\n * authenticated: true\n * },\n * {\n * version: \"1.0.0\",\n * onReady: (payload) => console.log(\"Screeb SDK is ready!\", payload),\n * },\n * );\n * ```\n */\n public async init(\n websiteId: string,\n userId?: string,\n userProperties?: _Screeb.PropertyRecord,\n hooks?: _Screeb.Hooks\n ) {\n await this.ensureScreeb(\"init\", true);\n\n this.isInitialized = true;\n\n return await _Screeb.init(websiteId, userId, userProperties, hooks);\n }\n\n /**\n * Appends Screeb tag into your dom.\n *\n * @param options Screeb module options.\n * @param options.window If you're running Screeb tag in an iframe, please set the inner window here.\n * @param options.screebEndpoint Please don't do this.\n *\n * @example\n * ```ts\n * this.screeb.load();\n * ```\n */\n public async load() {\n return _Screeb.load();\n }\n}\n","import { Inject, ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { Screeb } from \"./screeb\";\nimport { ScreebConfig } from \"./screeb-config\";\n\n@NgModule({\n providers: [Screeb, ScreebConfig],\n})\nexport class ScreebModule {\n /**\n * This is used to initialize Screeb at the top of your Angular application\n * @param config Configuration to pass to Screeb browser SDK\n *\n * @example\n * ```ts\n * ScreebModule.forRoot({\n * autoInit: true,\n * websiteId: \"<your-website-id>\",\n * userId: \"<your-user-id>\",\n * userProperties: {\n * firstname: '<user-firstname>',\n * lastname: '<user-lastname>',\n * plan: '<user-plan>',\n * last_seen_at: new Date(),\n * authenticated: true\n * },\n * {\n * version: \"1.0.0\",\n * onReady: (payload) => console.log(\"Screeb SDK is ready!\", payload),\n * },\n * })\n * ```\n */\n static forRoot(config: ScreebConfig): ModuleWithProviders<ScreebModule> {\n return {\n ngModule: ScreebModule,\n providers: [Screeb, { provide: ScreebConfig, useValue: config }],\n };\n }\n\n constructor(\n @Inject(ScreebConfig) config: ScreebConfig,\n @Inject(Screeb) screeb: Screeb\n ) {\n if (config.shouldLoad ?? true) {\n screeb.load();\n }\n\n if ((config.autoInit ?? false) && config.websiteId) {\n screeb.init(\n config.websiteId,\n config.userId,\n config.userProperties,\n config.hooks\n );\n }\n }\n}\n","/*\n * Public API Surface of screeb-sdk-angular\n */\n\nexport { ScreebModule } from \"./lib/screeb.module\";\nexport { ScreebConfig } from \"./lib/screeb-config\";\nexport { Screeb } from \"./lib/screeb\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["logger.log"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { PropertyRecord, ScreebOptions } from "@screeb/sdk-browser";
1
+ import { Hooks, PropertyRecord, ScreebOptions } from "@screeb/sdk-browser";
2
2
  import * as i0 from "@angular/core";
3
3
  /** Configuration of Screeb module */
4
4
  export declare class ScreebConfig {
@@ -8,6 +8,8 @@ export declare class ScreebConfig {
8
8
  userId?: string;
9
9
  /** The properties of your user. */
10
10
  userProperties?: PropertyRecord;
11
+ /** Hooks to define callback for various event */
12
+ hooks?: Hooks;
11
13
  /**
12
14
  * Indicates if Screeb should be automatically loaded.
13
15
  * This will ping to the Screeb servers.
@@ -105,13 +105,13 @@ export declare class Screeb {
105
105
  * ```ts
106
106
  * console.log(await this.screeb.identityGet());
107
107
  * // {
108
+ * // channel_id: "<UUID>",
108
109
  * // anonymous_id: "<UUID>",
109
110
  * // user_id: "<UUID>",
111
+ * // is_ready: true,
110
112
  * // session_id: "<UUID>",
111
113
  * // session_start: "2023-05-04T16:30:15.882Z",
112
114
  * // session_end: "2023-05-04T17:02:09.087Z",
113
- * // channel_id: "<UUID>",
114
- * // is_ready: true,
115
115
  * // }
116
116
  * ```
117
117
  */
@@ -221,11 +221,15 @@ export declare class Screeb {
221
221
  * {
222
222
  * color: "green",
223
223
  * article_id: 42
224
- * }
224
+ * },
225
+ * {
226
+ * version: "1.0.0",
227
+ * onSurveyShowed: (payload) => console.log("Survey showed", payload),
228
+ * },
225
229
  * );
226
230
  * ```
227
231
  */
228
- surveyStart(surveyId: string, allowMultipleResponses: boolean, hiddenFields: _Screeb.PropertyRecord): Promise<unknown>;
232
+ surveyStart(surveyId: string, allowMultipleResponses: boolean, hiddenFields: _Screeb.PropertyRecord, hooks?: _Screeb.Hooks): Promise<unknown>;
229
233
  /**
230
234
  * Forces a targeting check.
231
235
  *
@@ -281,11 +285,15 @@ export declare class Screeb {
281
285
  * plan: '<user-plan>',
282
286
  * last_seen_at: new Date(),
283
287
  * authenticated: true
284
- * }
288
+ * },
289
+ * {
290
+ * version: "1.0.0",
291
+ * onReady: (payload) => console.log("Screeb SDK is ready!", payload),
292
+ * },
285
293
  * );
286
294
  * ```
287
295
  */
288
- init(websiteId: string, userId?: string, userProperties?: _Screeb.PropertyRecord): Promise<unknown>;
296
+ init(websiteId: string, userId?: string, userProperties?: _Screeb.PropertyRecord, hooks?: _Screeb.Hooks): Promise<unknown>;
289
297
  /**
290
298
  * Appends Screeb tag into your dom.
291
299
  *
@@ -19,7 +19,11 @@ export declare class ScreebModule {
19
19
  * plan: '<user-plan>',
20
20
  * last_seen_at: new Date(),
21
21
  * authenticated: true
22
- * }
22
+ * },
23
+ * {
24
+ * version: "1.0.0",
25
+ * onReady: (payload) => console.log("Screeb SDK is ready!", payload),
26
+ * },
23
27
  * })
24
28
  * ```
25
29
  */
@@ -64,16 +64,16 @@ ___
64
64
 
65
65
  Shutdowns current Screeb session.
66
66
 
67
+ #### Returns
68
+
69
+ `Promise`<`unknown`\>
70
+
67
71
  **`Example`**
68
72
 
69
73
  ```ts
70
74
  this.screeb.close();
71
75
  ```
72
76
 
73
- #### Returns
74
-
75
- `Promise`<`unknown`\>
76
-
77
77
  ___
78
78
 
79
79
  ### debug
@@ -82,6 +82,10 @@ ___
82
82
 
83
83
  Prints the actual state information of Screeb tag.
84
84
 
85
+ #### Returns
86
+
87
+ `Promise`<`unknown`\>
88
+
85
89
  **`Example`**
86
90
 
87
91
  ```ts
@@ -105,10 +109,6 @@ this.screeb.debug();
105
109
  // **************************************************************
106
110
  ```
107
111
 
108
- #### Returns
109
-
110
- `Promise`<`unknown`\>
111
-
112
112
  ___
113
113
 
114
114
  ### ensureScreeb
@@ -134,6 +134,17 @@ ___
134
134
 
135
135
  Tracks a user event.
136
136
 
137
+ #### Parameters
138
+
139
+ | Name | Type | Description |
140
+ | :------ | :------ | :------ |
141
+ | `eventName` | `string` | The event name. |
142
+ | `eventProperties?` | `PropertyRecord` | The properties of your event. ```text Requirements: - Property names must be limited to 128 characters - No more than 1000 attributes - Supported types for values: string, number, boolean and Date. ``` |
143
+
144
+ #### Returns
145
+
146
+ `Promise`<`unknown`\>
147
+
137
148
  **`Example`**
138
149
 
139
150
  ```ts
@@ -153,17 +164,6 @@ this.screeb.eventTrack(
153
164
  );
154
165
  ```
155
166
 
156
- #### Parameters
157
-
158
- | Name | Type | Description |
159
- | :------ | :------ | :------ |
160
- | `eventName` | `string` | The event name. |
161
- | `eventProperties?` | `PropertyRecord` | The properties of your event. ```text Requirements: - Property names must be limited to 128 characters - No more than 1000 attributes - Supported types for values: string, number, boolean and Date. ``` |
162
-
163
- #### Returns
164
-
165
- `Promise`<`unknown`\>
166
-
167
167
  ___
168
168
 
169
169
  ### identity
@@ -173,6 +173,17 @@ ___
173
173
  Change the current user identity.
174
174
  Warning: Running surveys will be closed.
175
175
 
176
+ #### Parameters
177
+
178
+ | Name | Type | Description |
179
+ | :------ | :------ | :------ |
180
+ | `userId` | `string` | The unique identifier of your user. |
181
+ | `userProperties?` | `PropertyRecord` | The properties of your user. ```text Requirements: - Property names must be limited to 128 characters - No more than 1000 attributes - Supported types for values: string, number, boolean and Date. ``` |
182
+
183
+ #### Returns
184
+
185
+ `Promise`<`unknown`\>
186
+
176
187
  **`Example`**
177
188
 
178
189
  ```ts
@@ -188,17 +199,6 @@ this.screeb.identity(
188
199
  );
189
200
  ```
190
201
 
191
- #### Parameters
192
-
193
- | Name | Type | Description |
194
- | :------ | :------ | :------ |
195
- | `userId` | `string` | The unique identifier of your user. |
196
- | `userProperties?` | `PropertyRecord` | The properties of your user. ```text Requirements: - Property names must be limited to 128 characters - No more than 1000 attributes - Supported types for values: string, number, boolean and Date. ``` |
197
-
198
- #### Returns
199
-
200
- `Promise`<`unknown`\>
201
-
202
202
  ___
203
203
 
204
204
  ### identityGet
@@ -207,25 +207,25 @@ ___
207
207
 
208
208
  Retrieves the current user identity.
209
209
 
210
+ #### Returns
211
+
212
+ `Promise`<`ScreebIdentityGetReturn`\>
213
+
210
214
  **`Example`**
211
215
 
212
216
  ```ts
213
217
  console.log(await this.screeb.identityGet());
214
218
  // {
219
+ // channel_id: "<UUID>",
215
220
  // anonymous_id: "<UUID>",
216
221
  // user_id: "<UUID>",
222
+ // is_ready: true,
217
223
  // session_id: "<UUID>",
218
224
  // session_start: "2023-05-04T16:30:15.882Z",
219
225
  // session_end: "2023-05-04T17:02:09.087Z",
220
- // channel_id: "<UUID>",
221
- // is_ready: true,
222
226
  // }
223
227
  ```
224
228
 
225
- #### Returns
226
-
227
- `Promise`<`ScreebIdentityGetReturn`\>
228
-
229
229
  ___
230
230
 
231
231
  ### identityGroupAssign
@@ -234,6 +234,18 @@ ___
234
234
 
235
235
  Assigns the current user to a group.
236
236
 
237
+ #### Parameters
238
+
239
+ | Name | Type | Description |
240
+ | :------ | :------ | :------ |
241
+ | `groupName` | `string` | |
242
+ | `groupType?` | `string` | |
243
+ | `groupProperties?` | `PropertyRecord` | The properties of your user group. ```text Requirements: - Property names must be limited to 128 characters - No more than 1000 attributes - Supported types for values: string, number, boolean and Date. ``` |
244
+
245
+ #### Returns
246
+
247
+ `Promise`<`unknown`\>
248
+
237
249
  **`Example`**
238
250
 
239
251
  ```ts
@@ -251,18 +263,6 @@ this.screeb.identityGroupAssign(
251
263
  );
252
264
  ```
253
265
 
254
- #### Parameters
255
-
256
- | Name | Type | Description |
257
- | :------ | :------ | :------ |
258
- | `groupName` | `string` | |
259
- | `groupType?` | `string` | |
260
- | `groupProperties?` | `PropertyRecord` | The properties of your user group. ```text Requirements: - Property names must be limited to 128 characters - No more than 1000 attributes - Supported types for values: string, number, boolean and Date. ``` |
261
-
262
- #### Returns
263
-
264
- `Promise`<`unknown`\>
265
-
266
266
  ___
267
267
 
268
268
  ### identityGroupUnassign
@@ -271,12 +271,6 @@ ___
271
271
 
272
272
  Unassigns the current user to a group.
273
273
 
274
- **`Example`**
275
-
276
- ```ts
277
- this.screeb.identityGroupUnassign('company', 'Apple');
278
- ```
279
-
280
274
  #### Parameters
281
275
 
282
276
  | Name | Type | Description |
@@ -288,6 +282,12 @@ this.screeb.identityGroupUnassign('company', 'Apple');
288
282
 
289
283
  `Promise`<`unknown`\>
290
284
 
285
+ **`Example`**
286
+
287
+ ```ts
288
+ this.screeb.identityGroupUnassign('company', 'Apple');
289
+ ```
290
+
291
291
  ___
292
292
 
293
293
  ### identityProperties
@@ -296,6 +296,16 @@ ___
296
296
 
297
297
  Adds properties to the current user identity.
298
298
 
299
+ #### Parameters
300
+
301
+ | Name | Type | Description |
302
+ | :------ | :------ | :------ |
303
+ | `userProperties` | `PropertyRecord` | The properties of your user. ```text Requirements: - Property names must be limited to 128 characters - No more than 1000 attributes - Supported types for values: string, number, boolean and Date. ``` |
304
+
305
+ #### Returns
306
+
307
+ `Promise`<`unknown`\>
308
+
299
309
  **`Example`**
300
310
 
301
311
  ```ts
@@ -320,16 +330,6 @@ this.screeb.identityProperties(
320
330
  );
321
331
  ```
322
332
 
323
- #### Parameters
324
-
325
- | Name | Type | Description |
326
- | :------ | :------ | :------ |
327
- | `userProperties` | `PropertyRecord` | The properties of your user. ```text Requirements: - Property names must be limited to 128 characters - No more than 1000 attributes - Supported types for values: string, number, boolean and Date. ``` |
328
-
329
- #### Returns
330
-
331
- `Promise`<`unknown`\>
332
-
333
333
  ___
334
334
 
335
335
  ### identityReset
@@ -339,24 +339,37 @@ ___
339
339
  Resets the current user identity.
340
340
  Warning: This command must be called only once, since it creates a new identity on Screeb side.
341
341
 
342
+ #### Returns
343
+
344
+ `Promise`<`unknown`\>
345
+
342
346
  **`Example`**
343
347
 
344
348
  ```ts
345
349
  this.screeb.identityReset();
346
350
  ```
347
351
 
348
- #### Returns
349
-
350
- `Promise`<`unknown`\>
351
-
352
352
  ___
353
353
 
354
354
  ### init
355
355
 
356
- ▸ **init**(`websiteId`, `userId?`, `userProperties?`): `Promise`<`unknown`\>
356
+ ▸ **init**(`websiteId`, `userId?`, `userProperties?`, `hooks?`): `Promise`<`unknown`\>
357
357
 
358
358
  Initializes Screeb tag.
359
359
 
360
+ #### Parameters
361
+
362
+ | Name | Type | Description |
363
+ | :------ | :------ | :------ |
364
+ | `websiteId` | `string` | Your website/channel id. |
365
+ | `userId?` | `string` | The unique identifier of your user. |
366
+ | `userProperties?` | `PropertyRecord` | The properties of your user. ```text Requirements: - Property names must be limited to 128 characters - No more than 1000 attributes - Supported types for values: string, number, boolean and Date ``` |
367
+ | `hooks?` | `Hooks` | - |
368
+
369
+ #### Returns
370
+
371
+ `Promise`<`unknown`\>
372
+
360
373
  **`Example`**
361
374
 
362
375
  ```ts
@@ -369,22 +382,14 @@ this.screeb.init(
369
382
  plan: '<user-plan>',
370
383
  last_seen_at: new Date(),
371
384
  authenticated: true
372
- }
385
+ },
386
+ {
387
+ version: "1.0.0",
388
+ onReady: (payload) => console.log("Screeb SDK is ready!", payload),
389
+ },
373
390
  );
374
391
  ```
375
392
 
376
- #### Parameters
377
-
378
- | Name | Type | Description |
379
- | :------ | :------ | :------ |
380
- | `websiteId` | `string` | Your website/channel id. |
381
- | `userId?` | `string` | The unique identifier of your user. |
382
- | `userProperties?` | `PropertyRecord` | The properties of your user. ```text Requirements: - Property names must be limited to 128 characters - No more than 1000 attributes - Supported types for values: string, number, boolean and Date ``` |
383
-
384
- #### Returns
385
-
386
- `Promise`<`unknown`\>
387
-
388
393
  ___
389
394
 
390
395
  ### load
@@ -393,16 +398,16 @@ ___
393
398
 
394
399
  Appends Screeb tag into your dom.
395
400
 
401
+ #### Returns
402
+
403
+ `Promise`<`undefined`\>
404
+
396
405
  **`Example`**
397
406
 
398
407
  ```ts
399
408
  this.screeb.load();
400
409
  ```
401
410
 
402
- #### Returns
403
-
404
- `Promise`<`undefined`\>
405
-
406
411
  ___
407
412
 
408
413
  ### surveyClose
@@ -411,37 +416,24 @@ ___
411
416
 
412
417
  Interrupts a running survey.
413
418
 
419
+ #### Returns
420
+
421
+ `Promise`<`unknown`\>
422
+
414
423
  **`Example`**
415
424
 
416
425
  ```ts
417
426
  this.screeb.surveyClose();
418
427
  ```
419
428
 
420
- #### Returns
421
-
422
- `Promise`<`unknown`\>
423
-
424
429
  ___
425
430
 
426
431
  ### surveyStart
427
432
 
428
- ▸ **surveyStart**(`surveyId`, `allowMultipleResponses`, `hiddenFields`): `Promise`<`unknown`\>
433
+ ▸ **surveyStart**(`surveyId`, `allowMultipleResponses`, `hiddenFields`, `hooks?`): `Promise`<`unknown`\>
429
434
 
430
435
  Starts a survey by its ID.
431
436
 
432
- **`Example`**
433
-
434
- ```ts
435
- this.screeb.surveyStart(
436
- '<UUID>',
437
- false,
438
- {
439
- color: "green",
440
- article_id: 42
441
- }
442
- );
443
- ```
444
-
445
437
  #### Parameters
446
438
 
447
439
  | Name | Type |
@@ -449,11 +441,29 @@ this.screeb.surveyStart(
449
441
  | `surveyId` | `string` |
450
442
  | `allowMultipleResponses` | `boolean` |
451
443
  | `hiddenFields` | `PropertyRecord` |
444
+ | `hooks?` | `Hooks` |
452
445
 
453
446
  #### Returns
454
447
 
455
448
  `Promise`<`unknown`\>
456
449
 
450
+ **`Example`**
451
+
452
+ ```ts
453
+ this.screeb.surveyStart(
454
+ '<UUID>',
455
+ false,
456
+ {
457
+ color: "green",
458
+ article_id: 42
459
+ },
460
+ {
461
+ version: "1.0.0",
462
+ onSurveyShowed: (payload) => console.log("Survey showed", payload),
463
+ },
464
+ );
465
+ ```
466
+
457
467
  ___
458
468
 
459
469
  ### targetingCheck
@@ -462,16 +472,16 @@ ___
462
472
 
463
473
  Forces a targeting check.
464
474
 
475
+ #### Returns
476
+
477
+ `Promise`<`unknown`\>
478
+
465
479
  **`Example`**
466
480
 
467
481
  ```ts
468
482
  this.screeb.targetingCheck();
469
483
  ```
470
484
 
471
- #### Returns
472
-
473
- `Promise`<`unknown`\>
474
-
475
485
  ___
476
486
 
477
487
  ### targetingDebug
@@ -480,6 +490,10 @@ ___
480
490
 
481
491
  Prints the current state of the targeting engine.
482
492
 
493
+ #### Returns
494
+
495
+ `Promise`<`unknown`\>
496
+
483
497
  **`Example`**
484
498
 
485
499
  ```ts
@@ -499,7 +513,3 @@ console.log(await this.screeb.targetingDebug());
499
513
  // - Rule of type "User event count": false 🔴
500
514
  // - Rule of type "Capping per respondent display count": false 🔴
501
515
  ```
502
-
503
- #### Returns
504
-
505
- `Promise`<`unknown`\>
@@ -13,6 +13,7 @@ Configuration of Screeb module
13
13
  ### Properties
14
14
 
15
15
  - [autoInit](ScreebConfig.md#autoinit)
16
+ - [hooks](ScreebConfig.md#hooks)
16
17
  - [options](ScreebConfig.md#options)
17
18
  - [shouldLoad](ScreebConfig.md#shouldload)
18
19
  - [userId](ScreebConfig.md#userid)
@@ -39,6 +40,14 @@ if `true`, 'init' does not need to be called manually
39
40
 
40
41
  ___
41
42
 
43
+ ### hooks
44
+
45
+ • `Optional` **hooks**: `Hooks`
46
+
47
+ Hooks to define callback for various event
48
+
49
+ ___
50
+
42
51
  ### options
43
52
 
44
53
  • `Optional` **options**: `ScreebOptions`
@@ -33,6 +33,16 @@
33
33
 
34
34
  This is used to initialize Screeb at the top of your Angular application
35
35
 
36
+ #### Parameters
37
+
38
+ | Name | Type | Description |
39
+ | :------ | :------ | :------ |
40
+ | `config` | [`ScreebConfig`](ScreebConfig.md) | Configuration to pass to Screeb browser SDK |
41
+
42
+ #### Returns
43
+
44
+ `ModuleWithProviders`<[`ScreebModule`](ScreebModule.md)\>
45
+
36
46
  **`Example`**
37
47
 
38
48
  ```ts
@@ -46,16 +56,10 @@ ScreebModule.forRoot({
46
56
  plan: '<user-plan>',
47
57
  last_seen_at: new Date(),
48
58
  authenticated: true
49
- }
59
+ },
60
+ {
61
+ version: "1.0.0",
62
+ onReady: (payload) => console.log("Screeb SDK is ready!", payload),
63
+ },
50
64
  })
51
65
  ```
52
-
53
- #### Parameters
54
-
55
- | Name | Type | Description |
56
- | :------ | :------ | :------ |
57
- | `config` | [`ScreebConfig`](ScreebConfig.md) | Configuration to pass to Screeb browser SDK |
58
-
59
- #### Returns
60
-
61
- `ModuleWithProviders`<[`ScreebModule`](ScreebModule.md)\>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@screeb/sdk-angular",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Screeb's browser sdk, optimized for Angular.",
5
5
  "keywords": [
6
6
  "product discovery",
@@ -44,46 +44,47 @@
44
44
  "build": "ng build",
45
45
  "build:watch": "ng build --watch --configuration development",
46
46
  "build:doc": "typedoc projects/screeb-sdk-angular/src/public-api.ts",
47
+ "clean": "rm -Rf dist",
47
48
  "lint": "eslint .",
48
49
  "test": "echo '@TODO'"
49
50
  },
50
51
  "dependencies": {
51
- "@screeb/sdk-browser": "^0.1.9"
52
+ "@screeb/sdk-browser": "^0.1.11"
52
53
  },
53
54
  "devDependencies": {
54
- "@angular-devkit/build-angular": "^16.0.5",
55
- "@angular/animations": "^16.0.0",
56
- "@angular/cli": "~16.0.4",
57
- "@angular/common": "^16.0.0",
58
- "@angular/compiler": "^16.0.0",
59
- "@angular/compiler-cli": "^16.0.0",
60
- "@angular/core": "^16.0.0",
61
- "@angular/forms": "^16.0.0",
62
- "@angular/platform-browser": "^16.0.0",
63
- "@angular/platform-browser-dynamic": "^16.0.0",
64
- "@angular/router": "^16.0.0",
65
- "@screeb/eslint-config": "^0.1.5",
66
- "@types/jasmine": "~4.3.0",
67
- "@typescript-eslint/eslint-plugin": "^5.59.6",
68
- "eslint": "^8.41.0",
69
- "eslint-plugin-import": "^2.27.5",
70
- "eslint-plugin-jest": "^27.2.1",
55
+ "@angular-devkit/build-angular": "^16.2.6",
56
+ "@angular/animations": "^16.2.8",
57
+ "@angular/cli": "~16.2.6",
58
+ "@angular/common": ">=16",
59
+ "@angular/compiler": "^16.2.8",
60
+ "@angular/compiler-cli": "^16.2.8",
61
+ "@angular/core": ">=16",
62
+ "@angular/forms": "^16.2.8",
63
+ "@angular/platform-browser": "^16.2.8",
64
+ "@angular/platform-browser-dynamic": "^16.2.8",
65
+ "@angular/router": "^16.2.8",
66
+ "@screeb/eslint-config": "^0.1.6",
67
+ "@types/jasmine": "~5.1.0",
68
+ "@typescript-eslint/eslint-plugin": "^6.7.5",
69
+ "eslint": "^8.51.0",
70
+ "eslint-plugin-import": "^2.28.1",
71
+ "eslint-plugin-jest": "^27.4.2",
71
72
  "eslint-plugin-jsx-a11y": "^6.7.1",
72
- "eslint-plugin-prettier": "^4.2.1",
73
- "jasmine-core": "~4.6.0",
74
- "jest": "^29.5.0",
75
- "karma": "~6.4.0",
73
+ "eslint-plugin-prettier": "^5.0.1",
74
+ "jasmine-core": "~5.1.1",
75
+ "jest": "^29.7.0",
76
+ "karma": "~6.4.2",
76
77
  "karma-chrome-launcher": "~3.2.0",
77
- "karma-coverage": "~2.2.0",
78
+ "karma-coverage": "~2.2.1",
78
79
  "karma-jasmine": "~5.1.0",
79
- "karma-jasmine-html-reporter": "~2.0.0",
80
- "ng-packagr": "^16.0.0",
81
- "prettier": "^2.8.8",
82
- "rxjs": "~7.8.0",
83
- "tslib": "^2.3.0",
84
- "typedoc": "^0.24.7",
85
- "typedoc-plugin-markdown": "^3.15.3",
86
- "typescript": "~5.0.2",
80
+ "karma-jasmine-html-reporter": "~2.1.0",
81
+ "ng-packagr": "^16.2.3",
82
+ "prettier": "^3.0.3",
83
+ "rxjs": "~7.8.1",
84
+ "tslib": "^2.6.2",
85
+ "typedoc": "^0.25.2",
86
+ "typedoc-plugin-markdown": "^3.16.0",
87
+ "typescript": "~5.1",
87
88
  "zone.js": "~0.13.0"
88
89
  },
89
90
  "peerDependencies": {