@screeb/sdk-angular 0.3.0 → 0.5.0

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,2 +1,2 @@
1
- export default { version: "0.3.0" };
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWViLXNkay1hbmd1bGFyL3NyYy9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7IHZlcnNpb246IFwiMC4zLjBcIiB9O1xuIl19
1
+ export default { version: "0.5.0" };
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWViLXNkay1hbmd1bGFyL3NyYy9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7IHZlcnNpb246IFwiMC41LjBcIiB9O1xuIl19
@@ -271,21 +271,22 @@ export class Screeb {
271
271
  * '<UUID>',
272
272
  * '<UUID>',
273
273
  * false,
274
- * {
274
+ * { // optional
275
275
  * color: "green",
276
276
  * article_id: 42
277
277
  * },
278
- * {
278
+ * { // optional
279
279
  * version: "1.0.0",
280
280
  * onSurveyShowed: (payload) => console.log("Survey showed", payload),
281
281
  * },
282
- * "en"
282
+ * "en", // optional
283
+ * "#screeb-survey-container" // optional
283
284
  * );
284
285
  * ```
285
286
  */
286
- async surveyStart(surveyId, distributionId, allowMultipleResponses, hiddenFields, hooks, language) {
287
+ async surveyStart(surveyId, distributionId, allowMultipleResponses, hiddenFields, hooks, language, selectors) {
287
288
  await this.ensureScreeb("surveyStart");
288
- return _Screeb.surveyStart(surveyId, distributionId, allowMultipleResponses, hiddenFields, hooks, language);
289
+ return _Screeb.surveyStart(surveyId, distributionId, allowMultipleResponses, hiddenFields, hooks, language, selectors);
289
290
  }
290
291
  /**
291
292
  * Interrupts a running message.
@@ -323,6 +324,30 @@ export class Screeb {
323
324
  await this.ensureScreeb("messageStart");
324
325
  return _Screeb.messageStart(messageId, allowMultipleResponses, hiddenFields, hooks, language);
325
326
  }
327
+ /**
328
+ * Interrupts a running session replay.
329
+ *
330
+ * @example
331
+ * ```ts
332
+ * this.screeb.sessionReplayStop();
333
+ * ```
334
+ */
335
+ async sessionReplayStop() {
336
+ await this.ensureScreeb("sessionReplayStop");
337
+ return _Screeb.sessionReplayStop();
338
+ }
339
+ /**
340
+ * Starts a session replay.
341
+ *
342
+ * @example
343
+ * ```ts
344
+ * this.screeb.sessionReplayStart();
345
+ * ```
346
+ */
347
+ async sessionReplayStart() {
348
+ await this.ensureScreeb("sessionReplayStart");
349
+ return _Screeb.sessionReplayStart();
350
+ }
326
351
  /**
327
352
  * Forces a targeting check.
328
353
  *
@@ -428,4 +453,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
428
453
  type: Inject,
429
454
  args: [ScreebConfig]
430
455
  }] }]; } });
431
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWViLXNkay1hbmd1bGFyL3NyYy9saWIvc2NyZWViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFFL0MsT0FBTyxTQUFTLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxNQUFNLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRy9DLE1BQU0sT0FBTyxNQUFNO0lBR2pCLDBDQUEwQztJQUMxQyxZQUEwQyxNQUFvQjtRQUFwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBSHRELGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBR21DLENBQUM7SUFFMUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFvQixFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUNsRCxNQUFNLE9BQU8sR0FDWCx1R0FBdUcsQ0FBQztZQUUxRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUU1QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN0QyxNQUFNLE9BQU8sR0FBRztnQkFDZCxJQUFJLFlBQVksd0RBQXdEO2dCQUN4RSxzQ0FBc0MsWUFBWSxPQUFPO2dCQUN6RCw2REFBNkQ7YUFDOUQsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFWCxNQUFN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TyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQ0c7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUNmLFNBQWlCLEVBQ2pCLE1BQWUsRUFDZixjQUF1QyxFQUN2QyxLQUF5QixFQUN6QixRQUFpQjtRQUVqQixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXRDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTFCLE9BQU8sTUFBTSxPQUFPLENBQUMsSUFBSSxDQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBQ0wsUUFBUSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQStCO1FBQy9DLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQztZQUNsQixPQUFPLEVBQUUsYUFBYTtZQUN0QixVQUFVLEVBQUUsU0FBUyxDQUFDLE9BQU87WUFDN0IsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztrSUFuZlUsTUFBTSxrQkFJRyxZQUFZO3NJQUpyQixNQUFNLGNBRE8sTUFBTTs7NEZBQ25CLE1BQU07a0JBRGxCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFLbkIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCAqIGFzIF9TY3JlZWIgZnJvbSBcIkBzY3JlZWIvc2RrLWJyb3dzZXJcIjtcblxuaW1wb3J0IENPTlNUQU5UUyBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcbmltcG9ydCB7IFNjcmVlYkNvbmZpZyB9IGZyb20gXCIuL3NjcmVlYi1jb25maWdcIjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIFNjcmVlYiB7XG4gIHByaXZhdGUgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KFNjcmVlYkNvbmZpZykgcHJpdmF0ZSBjb25maWc6IFNjcmVlYkNvbmZpZykge31cblxuICBwcml2YXRlIGFzeW5jIGVuc3VyZVNjcmVlYihmdW5jdGlvbk5hbWU6IHN0cmluZywgb25seUxvYWRlZCA9IGZhbHNlKSB7XG4gICAgaWYgKCFfU2NyZWViLmlzTG9hZGVkKCkgJiYgIXRoaXMuY29uZmlnLnNob3VsZExvYWQpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgICBcIlNjcmVlYiBpbnN0YW5jZSBpcyBub3QgbG9hZGVkIGJlY2F1c2UgYHNob3VsZExvYWRgIGlzIHNldCB0byBgZmFsc2VgIGluIGBTY3JlZWJNb2R1bGVgIGNvbmZpZ3VyYXRpb24uXCI7XG5cbiAgICAgIGxvZ2dlci5sb2coXCJ3YXJuXCIsIG1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobWVzc2FnZSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc0luaXRpYWxpemVkICYmICFvbmx5TG9hZGVkKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gW1xuICAgICAgICBgXCIke2Z1bmN0aW9uTmFtZX1cIiB3YXMgY2FsbGVkIGJ1dCBTY3JlZWIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4gYCxcbiAgICAgICAgYFBsZWFzZSBjYWxsICdpbml0JyBiZWZvcmUgY2FsbGluZyAnJHtmdW5jdGlvbk5hbWV9JyBvciBgLFxuICAgICAgICBcInNldCAnYXV0b0luaXQnIHRvIHRydWUgaW4gdGhlIGBTY3JlZWJNb2R1bGVgIGNvbmZpZ3VyYXRpb24uXCIsXG4gICAgICBdLmpvaW4oXCJcIik7XG5cbiAgICAgIGxvZ2dlci5sb2coXCJ3YXJuXCIsIG1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaHV0ZG93bnMgY3VycmVudCBTY3JlZWIgc2Vzc2lvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuY2xvc2UoKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xvc2UoKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJjbG9zZVwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogUHJpbnRzIHRoZSBhY3R1YWwgc3RhdGUgaW5mb3JtYXRpb24gb2YgU2NyZWViIHRhZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuZGVidWcoKTtcbiAgICogLy8gKioqKioqKioqKioqKioqKioqKiBTQ1JFRUIgU0VTU0lPTiBERUJVRyAqKioqKioqKioqKioqKioqKioqKipcbiAgICogLy8gU2NyZWViIGNoYW5uZWwgaWQ6IDxVVUlEPlxuICAgKiAvLyBTY3JlZWIgY2hhbm5lbCB0eXBlOiB3aWRnZXRcbiAgICogLy8gU2NyZWViIHJlc3BvbmRlbnQgaWQ6IDxVVUlEPlxuICAgKiAvLyBTY3JlZWIgc3VydmV5IGlkOiBub25lXG4gICAqIC8vIFNjcmVlYiByZXNwb25zZSBpZDogbm9uZVxuICAgKiAvL1xuICAgKiAvLyBTY3JlZWIgY3VycmVudCBzZXNzaW9uIHN0YXJ0OiBUaHUgTWF5IDA0IDIwMjMgMTY6NTM6NDkgR01UKzAyMDAgKENlbnRyYWwgRXVyb3BlYW4gU3VtbWVyIFRpbWUpXG4gICAqIC8vIFNjcmVlYiBjdXJyZW50IHNlc3Npb24gbGFzdCBhY3Rpdml0eTogVGh1IE1heSAwNCAyMDIzIDE3OjQxOjMwIEdNVCswMjAwIChDZW50cmFsIEV1cm9wZWFuIFN1bW1lciBUaW1lKVxuICAgKiAvL1xuICAgKiAvLyBTY3JlZWIgdGFyZ2V0aW5nIGVuZ2luZSBzdGF0dXM6IGRpc2FibGVkXG4gICAqIC8vIFNjcmVlYiB0YXJnZXRpbmcgZW5naW5lOiAzIHN1cnZleXNcbiAgICogLy9cbiAgICogLy8gRGV0ZWN0ZWQgcGxhdGZvcm06IGRlc2t0b3BcbiAgICogLy8gRGV0ZWN0ZWQgbG9jYWxlOiBlbi1HQlxuICAgKiAvLyBEZXRlY3RlZCB0aW1lem9uZTogLTEyMFxuICAgKiAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWJ1ZygpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImRlYnVnXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuZGVidWcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFja3MgYSB1c2VyIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnROYW1lIFRoZSBldmVudCBuYW1lLlxuICAgKiBAcGFyYW0gZXZlbnRQcm9wZXJ0aWVzIFRoZSBwcm9wZXJ0aWVzIG9mIHlvdXIgZXZlbnQuXG4gICAqIGBgYHRleHQgUmVxdWlyZW1lbnRzOlxuICAgKiAgIC0gUHJvcGVydHkgbmFtZXMgbXVzdCBiZSBsaW1pdGVkIHRvIDEyOCBjaGFyYWN0ZXJzXG4gICAqICAgLSBObyBtb3JlIHRoYW4gMTAwMCBhdHRyaWJ1dGVzXG4gICAqICAgLSBTdXBwb3J0ZWQgdHlwZXMgZm9yIHZhbHVlczogc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4gYW5kIERhdGUuXG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5ldmVudFRyYWNrKFxuICAgKiAgIFwiUHJvZHVjdCBhZGRlZCB0byBjYXJ0XCIsXG4gICAqICAge1xuICAgKiAgICAgcHJvZHVjdF9uYW1lOiAnUmVkIGJpa2UgMjAyMScsXG4gICAqICAgICBjYXRlZ29yeTogJ3Nwb3J0JyxcbiAgICogICAgIGNvbG9yOiAncmVkJyxcbiAgICogICAgIHByaWNlOiAyOTksXG4gICAqICAgICBjb3VudDogMSxcbiAgICogICAgIHJlZmVyZW5jZTogJzJDRjA5M1RHMScsXG4gICAqICAgICBkZWxpdmVyeV9tZXRob2Q6ICdVUFMnLFxuICAgKiAgICAgdXNlcl9sb2dnZWQ6IGZhbHNlLFxuICAgKiAgICAgYWRkZWRfYXQ6IG5ldyBEYXRlKCksXG4gICAqICAgfVxuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBldmVudFRyYWNrKFxuICAgIGV2ZW50TmFtZTogc3RyaW5nLFxuICAgIGV2ZW50UHJvcGVydGllcz86IF9TY3JlZWIuUHJvcGVydHlSZWNvcmRcbiAgKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJldmVudFRyYWNrXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuZXZlbnRUcmFjayhldmVudE5hbWUsIGV2ZW50UHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBjdXJyZW50IHVzZXIgaWRlbnRpdHkuXG4gICAqIFdhcm5pbmc6IFJ1bm5pbmcgc3VydmV5cyB3aWxsIGJlIGNsb3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHVzZXJJZCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgeW91ciB1c2VyLlxuICAgKiBAcGFyYW0gdXNlclByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMgb2YgeW91ciB1c2VyLlxuICAgKiBgYGB0ZXh0IFJlcXVpcmVtZW50czpcbiAgICogICAtIFByb3BlcnR5IG5hbWVzIG11c3QgYmUgbGltaXRlZCB0byAxMjggY2hhcmFjdGVyc1xuICAgKiAgIC0gTm8gbW9yZSB0aGFuIDEwMDAgYXR0cmlidXRlc1xuICAgKiAgIC0gU3VwcG9ydGVkIHR5cGVzIGZvciB2YWx1ZXM6IHN0cmluZywgbnVtYmVyLCBib29sZWFuIGFuZCBEYXRlLlxuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuaWRlbnRpdHkoXG4gICAqICAgXCI8eW91ci11c2VyLWlkPlwiLFxuICAgKiAgIHtcbiAgICogICAgIGZpcnN0bmFtZTogJzx1c2VyLWZpcnN0bmFtZT4nLFxuICAgKiAgICAgbGFzdG5hbWU6ICc8dXNlci1sYXN0bmFtZT4nLFxuICAgKiAgICAgcGxhbjogJzx1c2VyLXBsYW4+JyxcbiAgICogICAgIGxhc3Rfc2Vlbl9hdDogbmV3IERhdGUoKSxcbiAgICogICAgIGF1dGhlbnRpY2F0ZWQ6IHRydWVcbiAgICogICB9XG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlkZW50aXR5KFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIHVzZXJQcm9wZXJ0aWVzPzogX1NjcmVlYi5Qcm9wZXJ0eVJlY29yZFxuICApIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImlkZW50aXR5XCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuaWRlbnRpdHkodXNlcklkLCB1c2VyUHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IHVzZXIgaWRlbnRpdHkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIGNvbnNvbGUubG9nKGF3YWl0IHRoaXMuc2NyZWViLmlkZW50aXR5R2V0KCkpO1xuICAgKiAvLyB7XG4gICAqIC8vICAgY2hhbm5lbF9pZDogXCI8VVVJRD5cIixcbiAgICogLy8gICBhbm9ueW1vdXNfaWQ6IFwiPFVVSUQ+XCIsXG4gICAqIC8vICAgdXNlcl9pZDogXCI8VVVJRD5cIixcbiAgICogLy8gICBpc19yZWFkeTogdHJ1ZSxcbiAgICogLy8gICBzZXNzaW9uX2lkOiBcIjxVVUlEPlwiLFxuICAgKiAvLyAgIHNlc3Npb25fc3RhcnQ6IFwiMjAyMy0wNS0wNFQxNjozMDoxNS44ODJaXCIsXG4gICAqIC8vICAgc2Vzc2lvbl9lbmQ6IFwiMjAyMy0wNS0wNFQxNzowMjowOS4wODdaXCIsXG4gICAqIC8vIH1cbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaWRlbnRpdHlHZXQoKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJpZGVudGl0eUdldFwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmlkZW50aXR5R2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogQXNzaWducyB0aGUgY3VycmVudCB1c2VyIHRvIGEgZ3JvdXAuXG4gICAqXG4gICAqIEBwYXJhbSBncm91cE5hbWVcbiAgICogQHBhcmFtIGdyb3VwVHlwZVxuICAgKiBAcGFyYW0gZ3JvdXBQcm9wZXJ0aWVzIFRoZSBwcm9wZXJ0aWVzIG9mIHlvdXIgdXNlciBncm91cC5cbiAgICogYGBgdGV4dCBSZXF1aXJlbWVudHM6XG4gICAqICAgLSBQcm9wZXJ0eSBuYW1lcyBtdXN0IGJlIGxpbWl0ZWQgdG8gMTI4IGNoYXJhY3RlcnNcbiAgICogICAtIE5vIG1vcmUgdGhhbiAxMDAwIGF0dHJpYnV0ZXNcbiAgICogICAtIFN1cHBvcnRlZCB0eXBlcyBmb3IgdmFsdWVzOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiBhbmQgRGF0ZS5cbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmlkZW50aXR5R3JvdXBBc3NpZ24oXG4gICAqICAgJ2NvbXBhbnknLFxuICAgKiAgICdBcHBsZScsXG4gICAqICAge1xuICAgKiAgICAgYWRkcmVzc19saW5lXzE6ICdBcHBsZSBDYW1wdXMnLFxuICAgKiAgICAgYWRkcmVzc19saW5lXzI6ICcxIEluZmluaXRlIExvb3AnLFxuICAgKiAgICAgY2l0eTogJ0N1cGVydGlubycsXG4gICAqICAgICB6aXBjb2RlOiA5NTAxNCxcbiAgICogICAgIHN0YXRlOiAnQ2FsaWZvcm5pYScsXG4gICAqICAgICBjb3VudHJ5OiAnVW5pdGVkIHN0YXRlcycsXG4gICAqICAgfVxuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBpZGVudGl0eUdyb3VwQXNzaWduKFxuICAgIGdyb3VwTmFtZTogc3RyaW5nLFxuICAgIGdyb3VwVHlwZT86IHN0cmluZyxcbiAgICBncm91cFByb3BlcnRpZXM/OiBfU2NyZWViLlByb3BlcnR5UmVjb3JkXG4gICkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiaWRlbnRpdHlHcm91cEFzc2lnblwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmlkZW50aXR5R3JvdXBBc3NpZ24oZ3JvdXBOYW1lLCBncm91cFR5cGUsIGdyb3VwUHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogVW5hc3NpZ25zIHRoZSBjdXJyZW50IHVzZXIgdG8gYSBncm91cC5cbiAgICpcbiAgICogQHBhcmFtIGdyb3VwTmFtZSBUaGUgbmFtZSBvZiB5b3VyIHVzZXIgZ3JvdXAuXG4gICAqIEBwYXJhbSBncm91cFR5cGUgVGhlIHR5cGUgb2YgeW91ciB1c2VyIGdyb3VwLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5pZGVudGl0eUdyb3VwVW5hc3NpZ24oJ2NvbXBhbnknLCAnQXBwbGUnKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaWRlbnRpdHlHcm91cFVuYXNzaWduKGdyb3VwTmFtZTogc3RyaW5nLCBncm91cFR5cGU/OiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImlkZW50aXR5R3JvdXBVbmFzc2lnblwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmlkZW50aXR5R3JvdXBVbmFzc2lnbihncm91cE5hbWUsIGdyb3VwVHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBwcm9wZXJ0aWVzIHRvIHRoZSBjdXJyZW50IHVzZXIgaWRlbnRpdHkuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyUHJvcGVydGllcyBUaGUgcHJvcGVydGllcyBvZiB5b3VyIHVzZXIuXG4gICAqIGBgYHRleHQgUmVxdWlyZW1lbnRzOlxuICAgKiAgIC0gUHJvcGVydHkgbmFtZXMgbXVzdCBiZSBsaW1pdGVkIHRvIDEyOCBjaGFyYWN0ZXJzXG4gICAqICAgLSBObyBtb3JlIHRoYW4gMTAwMCBhdHRyaWJ1dGVzXG4gICAqICAgLSBTdXBwb3J0ZWQgdHlwZXMgZm9yIHZhbHVlczogc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4gYW5kIERhdGUuXG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiAvLyBTZXQgdXNlciBwcm9wZXJ0aWVzXG4gICAqIHRoaXMuc2NyZWViLmlkZW50aXR5UHJvcGVydGllcyhcbiAgICogICB7XG4gICAqICAgICBmaXJzdG5hbWU6ICc8dXNlci1maXJzdG5hbWU+JyxcbiAgICogICAgIGxhc3RuYW1lOiAnPHVzZXItbGFzdG5hbWU+JyxcbiAgICogICAgIHBsYW46ICc8dXNlci1wbGFuPicsXG4gICAqICAgICBsYXN0X3NlZW5fYXQ6IG5ldyBEYXRlKCksXG4gICAqICAgICBhdXRoZW50aWNhdGVkOiB0cnVlXG4gICAqICAgfVxuICAgKiApO1xuICAgKlxuICAgKiAvLyBEZWxldGUgdXNlciBwcm9wZXJ0eSA6IHNldCB2YWx1ZXMgdG8gbnVsbFxuICAgKiB0aGlzLnNjcmVlYi5pZGVudGl0eVByb3BlcnRpZXMoXG4gICAqICAge1xuICAgKiAgICAgYWdlOiBudWxsLFxuICAgKiAgICAgY29tcGFueTogbnVsbCxcbiAgICogICAgIGxvZ2dlZDogdHJ1ZSxcbiAgICogICB9XG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlkZW50aXR5UHJvcGVydGllcyh1c2VyUHJvcGVydGllczogX1NjcmVlYi5Qcm9wZXJ0eVJlY29yZCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiaWRlbnRpdHlQcm9wZXJ0aWVzXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuaWRlbnRpdHlQcm9wZXJ0aWVzKHVzZXJQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGN1cnJlbnQgdXNlciBpZGVudGl0eS5cbiAgICogV2FybmluZzogVGhpcyBjb21tYW5kIG11c3QgYmUgY2FsbGVkIG9ubHkgb25jZSwgc2luY2UgaXQgY3JlYXRlcyBhIG5ldyBpZGVudGl0eSBvbiBTY3JlZWIgc2lkZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuaWRlbnRpdHlSZXNldCgpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBpZGVudGl0eVJlc2V0KCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiaWRlbnRpdHlSZXNldFwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmlkZW50aXR5UmVzZXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcnJ1cHRzIGEgcnVubmluZyBzdXJ2ZXkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLnN1cnZleUNsb3NlKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN1cnZleUNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwic3VydmV5Q2xvc2VcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5zdXJ2ZXlDbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBhIHN1cnZleSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLnN1cnZleVN0YXJ0KFxuICAgKiAgICc8VVVJRD4nLFxuICAgKiAgICc8VVVJRD4nLFxuICAgKiAgIGZhbHNlLFxuICAgKiAgIHtcbiAgICogICAgIGNvbG9yOiBcImdyZWVuXCIsXG4gICAqICAgICBhcnRpY2xlX2lkOiA0MlxuICAgKiAgIH0sXG4gICAqICAge1xuICAgKiAgICAgdmVyc2lvbjogXCIxLjAuMFwiLFxuICAgKiAgICAgb25TdXJ2ZXlTaG93ZWQ6IChwYXlsb2FkKSA9PiBjb25zb2xlLmxvZyhcIlN1cnZleSBzaG93ZWRcIiwgcGF5bG9hZCksXG4gICAqICAgfSxcbiAgICogICBcImVuXCJcbiAgICogKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc3VydmV5U3RhcnQoXG4gICAgc3VydmV5SWQ6IHN0cmluZyxcbiAgICBkaXN0cmlidXRpb25JZDogc3RyaW5nLFxuICAgIGFsbG93TXVsdGlwbGVSZXNwb25zZXM6IGJvb2xlYW4sXG4gICAgaGlkZGVuRmllbGRzPzogX1NjcmVlYi5Qcm9wZXJ0eVJlY29yZCxcbiAgICBob29rcz86IF9TY3JlZWIuSG9va3NTdXJ2ZXlTdGFydCxcbiAgICBsYW5ndWFnZT86IHN0cmluZ1xuICApIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcInN1cnZleVN0YXJ0XCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuc3VydmV5U3RhcnQoXG4gICAgICBzdXJ2ZXlJZCxcbiAgICAgIGRpc3RyaWJ1dGlvbklkLFxuICAgICAgYWxsb3dNdWx0aXBsZVJlc3BvbnNlcyxcbiAgICAgIGhpZGRlbkZpZWxkcyxcbiAgICAgIGhvb2tzLFxuICAgICAgbGFuZ3VhZ2VcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVycnVwdHMgYSBydW5uaW5nIG1lc3NhZ2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLm1lc3NhZ2VDbG9zZSgpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBtZXNzYWdlQ2xvc2UoKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJtZXNzYWdlQ2xvc2VcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5tZXNzYWdlQ2xvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgYSBtZXNzYWdlIGJ5IGl0cyBJRC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIubWVzc2FnZVN0YXJ0KFxuICAgKiAgICc8VVVJRD4nLFxuICAgKiAgIGZhbHNlLFxuICAgKiAgIHtcbiAgICogICAgIGNvbG9yOiBcImdyZWVuXCIsXG4gICAqICAgICBhcnRpY2xlX2lkOiA0MlxuICAgKiAgIH0sXG4gICAqICAge1xuICAgKiAgICAgdmVyc2lvbjogXCIxLjAuMFwiLFxuICAgKiAgICAgb25NZXNzYWdlU2hvd2VkOiAocGF5bG9hZCkgPT4gY29uc29sZS5sb2coXCJNZXNzYWdlIHNob3dlZFwiLCBwYXlsb2FkKSxcbiAgICogICB9LFxuICAgKiAgIFwiZW5cIlxuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBtZXNzYWdlU3RhcnQoXG4gICAgbWVzc2FnZUlkOiBzdHJpbmcsXG4gICAgYWxsb3dNdWx0aXBsZVJlc3BvbnNlcyA9IHRydWUsXG4gICAgaGlkZGVuRmllbGRzPzogX1NjcmVlYi5Qcm9wZXJ0eVJlY29yZCxcbiAgICBob29rcz86IF9TY3JlZWIuSG9va3NNZXNzYWdlU3RhcnQsXG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmdcbiAgKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJtZXNzYWdlU3RhcnRcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5tZXNzYWdlU3RhcnQoXG4gICAgICBtZXNzYWdlSWQsXG4gICAgICBhbGxvd011bHRpcGxlUmVzcG9uc2VzLFxuICAgICAgaGlkZGVuRmllbGRzLFxuICAgICAgaG9va3MsXG4gICAgICBsYW5ndWFnZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VzIGEgdGFyZ2V0aW5nIGNoZWNrLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi50YXJnZXRpbmdDaGVjaygpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyB0YXJnZXRpbmdDaGVjaygpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcInRhcmdldGluZ0NoZWNrXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIudGFyZ2V0aW5nQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmludHMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHRhcmdldGluZyBlbmdpbmUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIGNvbnNvbGUubG9nKGF3YWl0IHRoaXMuc2NyZWViLnRhcmdldGluZ0RlYnVnKCkpO1xuICAgKiAvLyB0YXJnZXRpbmcgKioqKioqKioqKioqIFNDUkVFQiBUQVJHRVRJTkcgUlVMRVMgREVCVUcgKioqKioqKioqKioqKipcbiAgICogLy8gRGlzYWJsZWQgc3VydmV5cyBhcmUgbm90IGxpc3RlZCBoZXJlLlxuICAgKiAvL1xuICAgKiAvLyBTY3JlZWIgY2hhbm5lbCBpZDogPFVVSUQ+XG4gICAqIC8vIFNjcmVlYiByZXNwb25kZW50IGlkOiA8VVVJRD5cbiAgICogLy9cbiAgICogLy8gU3VydmV5IDxVVUlEPjpcbiAgICogLy8gaHR0cHM6Ly9hZG1pbi5zY3JlZWIuYXBwL29yZy9sYXN0L3N1cnZleS88VVVJRD4vc2hhcmVcbiAgICogLy9cbiAgICogLy8gICAtIFJ1bGUgb2YgdHlwZSBcIkRldmljZSB0eXBlIChkZXNrdG9wL21vYmlsZS90YWJsZXQpXCI6IHRydWUg8J+folxuICAgKiAvLyAgIC0gUnVsZSBvZiB0eXBlIFwiTXVsdGlwbGUgZGlzcGxheVwiOiB0cnVlIPCfn6JcbiAgICogLy8gICAtIFJ1bGUgb2YgdHlwZSBcIkNhcHBpbmcgcGVyIHRpbWUgYmV0d2VlbiBzdXJ2ZXkgZGlzcGxheSBvbiBjdXJyZW50IHJlc3BvbmRlbnRcIjogdHJ1ZSDwn5+iXG4gICAqIC8vICAgLSBSdWxlIG9mIHR5cGUgXCJVc2VyIGV2ZW50IGNvdW50XCI6IGZhbHNlIPCflLRcbiAgICogLy8gICAtIFJ1bGUgb2YgdHlwZSBcIkNhcHBpbmcgcGVyIHJlc3BvbmRlbnQgZGlzcGxheSBjb3VudFwiOiBmYWxzZSDwn5S0XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHRhcmdldGluZ0RlYnVnKCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwidGFyZ2V0aW5nRGVidWdcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi50YXJnZXRpbmdEZWJ1ZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIFNjcmVlYiB0YWcuXG4gICAqXG4gICAqIEBwYXJhbSB3ZWJzaXRlSWQgWW91ciB3ZWJzaXRlL2NoYW5uZWwgaWQuXG4gICAqIEBwYXJhbSB1c2VySWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHlvdXIgdXNlci5cbiAgICogQHBhcmFtIHVzZXJQcm9wZXJ0aWVzIFRoZSBwcm9wZXJ0aWVzIG9mIHlvdXIgdXNlci5cbiAgICogYGBgdGV4dCBSZXF1aXJlbWVudHM6XG4gICAqICAgLSBQcm9wZXJ0eSBuYW1lcyBtdXN0IGJlIGxpbWl0ZWQgdG8gMTI4IGNoYXJhY3RlcnNcbiAgICogICAtIE5vIG1vcmUgdGhhbiAxMDAwIGF0dHJpYnV0ZXNcbiAgICogICAtIFN1cHBvcnRlZCB0eXBlcyBmb3IgdmFsdWVzOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiBhbmQgRGF0ZVxuICAgKiBgYGBcbiAgICogQHBhcmFtIGxhbmd1YWdlIEZvcmNlIGEgc3BlY2lmaWMgbGFuZ3VhZ2UgZm9yIHRoZSB0YWcuIGVnOiAnZW4nLiBkZWZhdWx0OiBicm93c2VyIGxhbmd1YWdlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5pbml0KFxuICAgKiAgIFwiPHlvdXItd2Vic2l0ZS1pZD5cIixcbiAgICogICBcIjx5b3VyLXVzZXItaWQ+XCIsXG4gICAqICAge1xuICAgKiAgICAgZmlyc3RuYW1lOiAnPHVzZXItZmlyc3RuYW1lPicsXG4gICAqICAgICBsYXN0bmFtZTogJzx1c2VyLWxhc3RuYW1lPicsXG4gICAqICAgICBwbGFuOiAnPHVzZXItcGxhbj4nLFxuICAgKiAgICAgbGFzdF9zZWVuX2F0OiBuZXcgRGF0ZSgpLFxuICAgKiAgICAgYXV0aGVudGljYXRlZDogdHJ1ZVxuICAgKiAgIH0sXG4gICAqICAge1xuICAgKiAgICAgdmVyc2lvbjogXCIxLjAuMFwiLFxuICAgKiAgICAgb25SZWFkeTogKHBheWxvYWQpID0+IGNvbnNvbGUubG9nKFwiU2NyZWViIFNESyBpcyByZWFkeSFcIiwgcGF5bG9hZCksXG4gICAqICAgfSxcbiAgICogICBcImVuXCJcbiAgICogKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW5pdChcbiAgICB3ZWJzaXRlSWQ6IHN0cmluZyxcbiAgICB1c2VySWQ/OiBzdHJpbmcsXG4gICAgdXNlclByb3BlcnRpZXM/OiBfU2NyZWViLlByb3BlcnR5UmVjb3JkLFxuICAgIGhvb2tzPzogX1NjcmVlYi5Ib29rc0luaXQsXG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmdcbiAgKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJpbml0XCIsIHRydWUpO1xuXG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgIHJldHVybiBhd2FpdCBfU2NyZWViLmluaXQoXG4gICAgICB3ZWJzaXRlSWQsXG4gICAgICB1c2VySWQsXG4gICAgICB1c2VyUHJvcGVydGllcyxcbiAgICAgIGhvb2tzLFxuICAgICAgbGFuZ3VhZ2VcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGVuZHMgU2NyZWViIHRhZyBpbnRvIHlvdXIgZG9tLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBTY3JlZWIgbW9kdWxlIG9wdGlvbnMuXG4gICAqIEBwYXJhbSBvcHRpb25zLndpbmRvdyBJZiB5b3UncmUgcnVubmluZyBTY3JlZWIgdGFnIGluIGFuIGlmcmFtZSwgcGxlYXNlIHNldCB0aGUgaW5uZXIgd2luZG93IGhlcmUuXG4gICAqIEBwYXJhbSBvcHRpb25zLnNjcmVlYkVuZHBvaW50IFBsZWFzZSBkb24ndCBkbyB0aGlzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5sb2FkKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWQob3B0aW9ucz86IF9TY3JlZWIuU2NyZWViT3B0aW9ucykge1xuICAgIHJldHVybiBfU2NyZWViLmxvYWQoe1xuICAgICAgc2RrTmFtZTogXCJzZGstYW5ndWxhclwiLFxuICAgICAgc2RrVmVyc2lvbjogQ09OU1RBTlRTLnZlcnNpb24sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
456
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWViLXNkay1hbmd1bGFyL3NyYy9saWIvc2NyZWViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUFFL0MsT0FBTyxTQUFTLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxNQUFNLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRy9DLE1BQU0sT0FBTyxNQUFNO0lBR2pCLDBDQUEwQztJQUMxQyxZQUEwQyxNQUFvQjtRQUFwQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBSHRELGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBR21DLENBQUM7SUFFMUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFvQixFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUNsRCxNQUFNLE9BQU8sR0FDWCx1R0FBdUcsQ0FBQztZQUUxRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUU1QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN0QyxNQUFNLE9BQU8sR0FBRztnQkFDZCxJQUFJLFlBQVksd0RBQXdEO2dCQUN4RSxzQ0FBc0MsWUFBWSxPQUFPO2dCQUN6RCw2REFBNkQ7YUFDOUQsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFWCxNQUFN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LEVBQUUsTUFBTSxFQUFFOzswQkFLbkIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCAqIGFzIF9TY3JlZWIgZnJvbSBcIkBzY3JlZWIvc2RrLWJyb3dzZXJcIjtcblxuaW1wb3J0IENPTlNUQU5UUyBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcbmltcG9ydCB7IFNjcmVlYkNvbmZpZyB9IGZyb20gXCIuL3NjcmVlYi1jb25maWdcIjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIFNjcmVlYiB7XG4gIHByaXZhdGUgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KFNjcmVlYkNvbmZpZykgcHJpdmF0ZSBjb25maWc6IFNjcmVlYkNvbmZpZykge31cblxuICBwcml2YXRlIGFzeW5jIGVuc3VyZVNjcmVlYihmdW5jdGlvbk5hbWU6IHN0cmluZywgb25seUxvYWRlZCA9IGZhbHNlKSB7XG4gICAgaWYgKCFfU2NyZWViLmlzTG9hZGVkKCkgJiYgIXRoaXMuY29uZmlnLnNob3VsZExvYWQpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgICBcIlNjcmVlYiBpbnN0YW5jZSBpcyBub3QgbG9hZGVkIGJlY2F1c2UgYHNob3VsZExvYWRgIGlzIHNldCB0byBgZmFsc2VgIGluIGBTY3JlZWJNb2R1bGVgIGNvbmZpZ3VyYXRpb24uXCI7XG5cbiAgICAgIGxvZ2dlci5sb2coXCJ3YXJuXCIsIG1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobWVzc2FnZSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc0luaXRpYWxpemVkICYmICFvbmx5TG9hZGVkKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gW1xuICAgICAgICBgXCIke2Z1bmN0aW9uTmFtZX1cIiB3YXMgY2FsbGVkIGJ1dCBTY3JlZWIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4gYCxcbiAgICAgICAgYFBsZWFzZSBjYWxsICdpbml0JyBiZWZvcmUgY2FsbGluZyAnJHtmdW5jdGlvbk5hbWV9JyBvciBgLFxuICAgICAgICBcInNldCAnYXV0b0luaXQnIHRvIHRydWUgaW4gdGhlIGBTY3JlZWJNb2R1bGVgIGNvbmZpZ3VyYXRpb24uXCIsXG4gICAgICBdLmpvaW4oXCJcIik7XG5cbiAgICAgIGxvZ2dlci5sb2coXCJ3YXJuXCIsIG1lc3NhZ2UpO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaHV0ZG93bnMgY3VycmVudCBTY3JlZWIgc2Vzc2lvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuY2xvc2UoKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xvc2UoKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJjbG9zZVwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogUHJpbnRzIHRoZSBhY3R1YWwgc3RhdGUgaW5mb3JtYXRpb24gb2YgU2NyZWViIHRhZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuZGVidWcoKTtcbiAgICogLy8gKioqKioqKioqKioqKioqKioqKiBTQ1JFRUIgU0VTU0lPTiBERUJVRyAqKioqKioqKioqKioqKioqKioqKipcbiAgICogLy8gU2NyZWViIGNoYW5uZWwgaWQ6IDxVVUlEPlxuICAgKiAvLyBTY3JlZWIgY2hhbm5lbCB0eXBlOiB3aWRnZXRcbiAgICogLy8gU2NyZWViIHJlc3BvbmRlbnQgaWQ6IDxVVUlEPlxuICAgKiAvLyBTY3JlZWIgc3VydmV5IGlkOiBub25lXG4gICAqIC8vIFNjcmVlYiByZXNwb25zZSBpZDogbm9uZVxuICAgKiAvL1xuICAgKiAvLyBTY3JlZWIgY3VycmVudCBzZXNzaW9uIHN0YXJ0OiBUaHUgTWF5IDA0IDIwMjMgMTY6NTM6NDkgR01UKzAyMDAgKENlbnRyYWwgRXVyb3BlYW4gU3VtbWVyIFRpbWUpXG4gICAqIC8vIFNjcmVlYiBjdXJyZW50IHNlc3Npb24gbGFzdCBhY3Rpdml0eTogVGh1IE1heSAwNCAyMDIzIDE3OjQxOjMwIEdNVCswMjAwIChDZW50cmFsIEV1cm9wZWFuIFN1bW1lciBUaW1lKVxuICAgKiAvL1xuICAgKiAvLyBTY3JlZWIgdGFyZ2V0aW5nIGVuZ2luZSBzdGF0dXM6IGRpc2FibGVkXG4gICAqIC8vIFNjcmVlYiB0YXJnZXRpbmcgZW5naW5lOiAzIHN1cnZleXNcbiAgICogLy9cbiAgICogLy8gRGV0ZWN0ZWQgcGxhdGZvcm06IGRlc2t0b3BcbiAgICogLy8gRGV0ZWN0ZWQgbG9jYWxlOiBlbi1HQlxuICAgKiAvLyBEZXRlY3RlZCB0aW1lem9uZTogLTEyMFxuICAgKiAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWJ1ZygpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImRlYnVnXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuZGVidWcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFja3MgYSB1c2VyIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnROYW1lIFRoZSBldmVudCBuYW1lLlxuICAgKiBAcGFyYW0gZXZlbnRQcm9wZXJ0aWVzIFRoZSBwcm9wZXJ0aWVzIG9mIHlvdXIgZXZlbnQuXG4gICAqIGBgYHRleHQgUmVxdWlyZW1lbnRzOlxuICAgKiAgIC0gUHJvcGVydHkgbmFtZXMgbXVzdCBiZSBsaW1pdGVkIHRvIDEyOCBjaGFyYWN0ZXJzXG4gICAqICAgLSBObyBtb3JlIHRoYW4gMTAwMCBhdHRyaWJ1dGVzXG4gICAqICAgLSBTdXBwb3J0ZWQgdHlwZXMgZm9yIHZhbHVlczogc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4gYW5kIERhdGUuXG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5ldmVudFRyYWNrKFxuICAgKiAgIFwiUHJvZHVjdCBhZGRlZCB0byBjYXJ0XCIsXG4gICAqICAge1xuICAgKiAgICAgcHJvZHVjdF9uYW1lOiAnUmVkIGJpa2UgMjAyMScsXG4gICAqICAgICBjYXRlZ29yeTogJ3Nwb3J0JyxcbiAgICogICAgIGNvbG9yOiAncmVkJyxcbiAgICogICAgIHByaWNlOiAyOTksXG4gICAqICAgICBjb3VudDogMSxcbiAgICogICAgIHJlZmVyZW5jZTogJzJDRjA5M1RHMScsXG4gICAqICAgICBkZWxpdmVyeV9tZXRob2Q6ICdVUFMnLFxuICAgKiAgICAgdXNlcl9sb2dnZWQ6IGZhbHNlLFxuICAgKiAgICAgYWRkZWRfYXQ6IG5ldyBEYXRlKCksXG4gICAqICAgfVxuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBldmVudFRyYWNrKFxuICAgIGV2ZW50TmFtZTogc3RyaW5nLFxuICAgIGV2ZW50UHJvcGVydGllcz86IF9TY3JlZWIuUHJvcGVydHlSZWNvcmRcbiAgKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJldmVudFRyYWNrXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuZXZlbnRUcmFjayhldmVudE5hbWUsIGV2ZW50UHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHRoZSBjdXJyZW50IHVzZXIgaWRlbnRpdHkuXG4gICAqIFdhcm5pbmc6IFJ1bm5pbmcgc3VydmV5cyB3aWxsIGJlIGNsb3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHVzZXJJZCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgeW91ciB1c2VyLlxuICAgKiBAcGFyYW0gdXNlclByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMgb2YgeW91ciB1c2VyLlxuICAgKiBgYGB0ZXh0IFJlcXVpcmVtZW50czpcbiAgICogICAtIFByb3BlcnR5IG5hbWVzIG11c3QgYmUgbGltaXRlZCB0byAxMjggY2hhcmFjdGVyc1xuICAgKiAgIC0gTm8gbW9yZSB0aGFuIDEwMDAgYXR0cmlidXRlc1xuICAgKiAgIC0gU3VwcG9ydGVkIHR5cGVzIGZvciB2YWx1ZXM6IHN0cmluZywgbnVtYmVyLCBib29sZWFuIGFuZCBEYXRlLlxuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuaWRlbnRpdHkoXG4gICAqICAgXCI8eW91ci11c2VyLWlkPlwiLFxuICAgKiAgIHtcbiAgICogICAgIGZpcnN0bmFtZTogJzx1c2VyLWZpcnN0bmFtZT4nLFxuICAgKiAgICAgbGFzdG5hbWU6ICc8dXNlci1sYXN0bmFtZT4nLFxuICAgKiAgICAgcGxhbjogJzx1c2VyLXBsYW4+JyxcbiAgICogICAgIGxhc3Rfc2Vlbl9hdDogbmV3IERhdGUoKSxcbiAgICogICAgIGF1dGhlbnRpY2F0ZWQ6IHRydWVcbiAgICogICB9XG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlkZW50aXR5KFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICAgIHVzZXJQcm9wZXJ0aWVzPzogX1NjcmVlYi5Qcm9wZXJ0eVJlY29yZFxuICApIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImlkZW50aXR5XCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuaWRlbnRpdHkodXNlcklkLCB1c2VyUHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IHVzZXIgaWRlbnRpdHkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIGNvbnNvbGUubG9nKGF3YWl0IHRoaXMuc2NyZWViLmlkZW50aXR5R2V0KCkpO1xuICAgKiAvLyB7XG4gICAqIC8vICAgY2hhbm5lbF9pZDogXCI8VVVJRD5cIixcbiAgICogLy8gICBhbm9ueW1vdXNfaWQ6IFwiPFVVSUQ+XCIsXG4gICAqIC8vICAgdXNlcl9pZDogXCI8VVVJRD5cIixcbiAgICogLy8gICBpc19yZWFkeTogdHJ1ZSxcbiAgICogLy8gICBzZXNzaW9uX2lkOiBcIjxVVUlEPlwiLFxuICAgKiAvLyAgIHNlc3Npb25fc3RhcnQ6IFwiMjAyMy0wNS0wNFQxNjozMDoxNS44ODJaXCIsXG4gICAqIC8vICAgc2Vzc2lvbl9lbmQ6IFwiMjAyMy0wNS0wNFQxNzowMjowOS4wODdaXCIsXG4gICAqIC8vIH1cbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaWRlbnRpdHlHZXQoKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJpZGVudGl0eUdldFwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmlkZW50aXR5R2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogQXNzaWducyB0aGUgY3VycmVudCB1c2VyIHRvIGEgZ3JvdXAuXG4gICAqXG4gICAqIEBwYXJhbSBncm91cE5hbWVcbiAgICogQHBhcmFtIGdyb3VwVHlwZVxuICAgKiBAcGFyYW0gZ3JvdXBQcm9wZXJ0aWVzIFRoZSBwcm9wZXJ0aWVzIG9mIHlvdXIgdXNlciBncm91cC5cbiAgICogYGBgdGV4dCBSZXF1aXJlbWVudHM6XG4gICAqICAgLSBQcm9wZXJ0eSBuYW1lcyBtdXN0IGJlIGxpbWl0ZWQgdG8gMTI4IGNoYXJhY3RlcnNcbiAgICogICAtIE5vIG1vcmUgdGhhbiAxMDAwIGF0dHJpYnV0ZXNcbiAgICogICAtIFN1cHBvcnRlZCB0eXBlcyBmb3IgdmFsdWVzOiBzdHJpbmcsIG51bWJlciwgYm9vbGVhbiBhbmQgRGF0ZS5cbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmlkZW50aXR5R3JvdXBBc3NpZ24oXG4gICAqICAgJ2NvbXBhbnknLFxuICAgKiAgICdBcHBsZScsXG4gICAqICAge1xuICAgKiAgICAgYWRkcmVzc19saW5lXzE6ICdBcHBsZSBDYW1wdXMnLFxuICAgKiAgICAgYWRkcmVzc19saW5lXzI6ICcxIEluZmluaXRlIExvb3AnLFxuICAgKiAgICAgY2l0eTogJ0N1cGVydGlubycsXG4gICAqICAgICB6aXBjb2RlOiA5NTAxNCxcbiAgICogICAgIHN0YXRlOiAnQ2FsaWZvcm5pYScsXG4gICAqICAgICBjb3VudHJ5OiAnVW5pdGVkIHN0YXRlcycsXG4gICAqICAgfVxuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBpZGVudGl0eUdyb3VwQXNzaWduKFxuICAgIGdyb3VwTmFtZTogc3RyaW5nLFxuICAgIGdyb3VwVHlwZT86IHN0cmluZyxcbiAgICBncm91cFByb3BlcnRpZXM/OiBfU2NyZWViLlByb3BlcnR5UmVjb3JkXG4gICkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiaWRlbnRpdHlHcm91cEFzc2lnblwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmlkZW50aXR5R3JvdXBBc3NpZ24oZ3JvdXBOYW1lLCBncm91cFR5cGUsIGdyb3VwUHJvcGVydGllcyk7XG4gIH1cblxuICAvKipcbiAgICogVW5hc3NpZ25zIHRoZSBjdXJyZW50IHVzZXIgdG8gYSBncm91cC5cbiAgICpcbiAgICogQHBhcmFtIGdyb3VwTmFtZSBUaGUgbmFtZSBvZiB5b3VyIHVzZXIgZ3JvdXAuXG4gICAqIEBwYXJhbSBncm91cFR5cGUgVGhlIHR5cGUgb2YgeW91ciB1c2VyIGdyb3VwLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5pZGVudGl0eUdyb3VwVW5hc3NpZ24oJ2NvbXBhbnknLCAnQXBwbGUnKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaWRlbnRpdHlHcm91cFVuYXNzaWduKGdyb3VwTmFtZTogc3RyaW5nLCBncm91cFR5cGU/OiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImlkZW50aXR5R3JvdXBVbmFzc2lnblwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmlkZW50aXR5R3JvdXBVbmFzc2lnbihncm91cE5hbWUsIGdyb3VwVHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBwcm9wZXJ0aWVzIHRvIHRoZSBjdXJyZW50IHVzZXIgaWRlbnRpdHkuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyUHJvcGVydGllcyBUaGUgcHJvcGVydGllcyBvZiB5b3VyIHVzZXIuXG4gICAqIGBgYHRleHQgUmVxdWlyZW1lbnRzOlxuICAgKiAgIC0gUHJvcGVydHkgbmFtZXMgbXVzdCBiZSBsaW1pdGVkIHRvIDEyOCBjaGFyYWN0ZXJzXG4gICAqICAgLSBObyBtb3JlIHRoYW4gMTAwMCBhdHRyaWJ1dGVzXG4gICAqICAgLSBTdXBwb3J0ZWQgdHlwZXMgZm9yIHZhbHVlczogc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4gYW5kIERhdGUuXG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiAvLyBTZXQgdXNlciBwcm9wZXJ0aWVzXG4gICAqIHRoaXMuc2NyZWViLmlkZW50aXR5UHJvcGVydGllcyhcbiAgICogICB7XG4gICAqICAgICBmaXJzdG5hbWU6ICc8dXNlci1maXJzdG5hbWU+JyxcbiAgICogICAgIGxhc3RuYW1lOiAnPHVzZXItbGFzdG5hbWU+JyxcbiAgICogICAgIHBsYW46ICc8dXNlci1wbGFuPicsXG4gICAqICAgICBsYXN0X3NlZW5fYXQ6IG5ldyBEYXRlKCksXG4gICAqICAgICBhdXRoZW50aWNhdGVkOiB0cnVlXG4gICAqICAgfVxuICAgKiApO1xuICAgKlxuICAgKiAvLyBEZWxldGUgdXNlciBwcm9wZXJ0eSA6IHNldCB2YWx1ZXMgdG8gbnVsbFxuICAgKiB0aGlzLnNjcmVlYi5pZGVudGl0eVByb3BlcnRpZXMoXG4gICAqICAge1xuICAgKiAgICAgYWdlOiBudWxsLFxuICAgKiAgICAgY29tcGFueTogbnVsbCxcbiAgICogICAgIGxvZ2dlZDogdHJ1ZSxcbiAgICogICB9XG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlkZW50aXR5UHJvcGVydGllcyh1c2VyUHJvcGVydGllczogX1NjcmVlYi5Qcm9wZXJ0eVJlY29yZCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiaWRlbnRpdHlQcm9wZXJ0aWVzXCIpO1xuXG4gICAgcmV0dXJuIF9TY3JlZWIuaWRlbnRpdHlQcm9wZXJ0aWVzKHVzZXJQcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGN1cnJlbnQgdXNlciBpZGVudGl0eS5cbiAgICogV2FybmluZzogVGhpcyBjb21tYW5kIG11c3QgYmUgY2FsbGVkIG9ubHkgb25jZSwgc2luY2UgaXQgY3JlYXRlcyBhIG5ldyBpZGVudGl0eSBvbiBTY3JlZWIgc2lkZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuaWRlbnRpdHlSZXNldCgpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBpZGVudGl0eVJlc2V0KCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwiaWRlbnRpdHlSZXNldFwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLmlkZW50aXR5UmVzZXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcnJ1cHRzIGEgcnVubmluZyBzdXJ2ZXkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLnN1cnZleUNsb3NlKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHN1cnZleUNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwic3VydmV5Q2xvc2VcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5zdXJ2ZXlDbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBhIHN1cnZleSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLnN1cnZleVN0YXJ0KFxuICAgKiAgICc8VVVJRD4nLFxuICAgKiAgICc8VVVJRD4nLFxuICAgKiAgIGZhbHNlLFxuICAgKiAgIHsgLy8gb3B0aW9uYWxcbiAgICogICAgIGNvbG9yOiBcImdyZWVuXCIsXG4gICAqICAgICBhcnRpY2xlX2lkOiA0MlxuICAgKiAgIH0sXG4gICAqICAgeyAvLyBvcHRpb25hbFxuICAgKiAgICAgdmVyc2lvbjogXCIxLjAuMFwiLFxuICAgKiAgICAgb25TdXJ2ZXlTaG93ZWQ6IChwYXlsb2FkKSA9PiBjb25zb2xlLmxvZyhcIlN1cnZleSBzaG93ZWRcIiwgcGF5bG9hZCksXG4gICAqICAgfSxcbiAgICogICBcImVuXCIsIC8vIG9wdGlvbmFsXG4gICAqICAgXCIjc2NyZWViLXN1cnZleS1jb250YWluZXJcIiAvLyBvcHRpb25hbFxuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBzdXJ2ZXlTdGFydChcbiAgICBzdXJ2ZXlJZDogc3RyaW5nLFxuICAgIGRpc3RyaWJ1dGlvbklkOiBzdHJpbmcsXG4gICAgYWxsb3dNdWx0aXBsZVJlc3BvbnNlczogYm9vbGVhbixcbiAgICBoaWRkZW5GaWVsZHM/OiBfU2NyZWViLlByb3BlcnR5UmVjb3JkLFxuICAgIGhvb2tzPzogX1NjcmVlYi5Ib29rc1N1cnZleVN0YXJ0LFxuICAgIGxhbmd1YWdlPzogc3RyaW5nLFxuICAgIHNlbGVjdG9ycz86IHN0cmluZyB8IHN0cmluZ1tdXG4gICkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwic3VydmV5U3RhcnRcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5zdXJ2ZXlTdGFydChcbiAgICAgIHN1cnZleUlkLFxuICAgICAgZGlzdHJpYnV0aW9uSWQsXG4gICAgICBhbGxvd011bHRpcGxlUmVzcG9uc2VzLFxuICAgICAgaGlkZGVuRmllbGRzLFxuICAgICAgaG9va3MsXG4gICAgICBsYW5ndWFnZSxcbiAgICAgIHNlbGVjdG9yc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJydXB0cyBhIHJ1bm5pbmcgbWVzc2FnZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIubWVzc2FnZUNsb3NlKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIG1lc3NhZ2VDbG9zZSgpIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcIm1lc3NhZ2VDbG9zZVwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLm1lc3NhZ2VDbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBhIG1lc3NhZ2UgYnkgaXRzIElELlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiB0aGlzLnNjcmVlYi5tZXNzYWdlU3RhcnQoXG4gICAqICAgJzxVVUlEPicsXG4gICAqICAgZmFsc2UsXG4gICAqICAge1xuICAgKiAgICAgY29sb3I6IFwiZ3JlZW5cIixcbiAgICogICAgIGFydGljbGVfaWQ6IDQyXG4gICAqICAgfSxcbiAgICogICB7XG4gICAqICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAqICAgICBvbk1lc3NhZ2VTaG93ZWQ6IChwYXlsb2FkKSA9PiBjb25zb2xlLmxvZyhcIk1lc3NhZ2Ugc2hvd2VkXCIsIHBheWxvYWQpLFxuICAgKiAgIH0sXG4gICAqICAgXCJlblwiXG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIG1lc3NhZ2VTdGFydChcbiAgICBtZXNzYWdlSWQ6IHN0cmluZyxcbiAgICBhbGxvd011bHRpcGxlUmVzcG9uc2VzID0gdHJ1ZSxcbiAgICBoaWRkZW5GaWVsZHM/OiBfU2NyZWViLlByb3BlcnR5UmVjb3JkLFxuICAgIGhvb2tzPzogX1NjcmVlYi5Ib29rc01lc3NhZ2VTdGFydCxcbiAgICBsYW5ndWFnZT86IHN0cmluZ1xuICApIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcIm1lc3NhZ2VTdGFydFwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLm1lc3NhZ2VTdGFydChcbiAgICAgIG1lc3NhZ2VJZCxcbiAgICAgIGFsbG93TXVsdGlwbGVSZXNwb25zZXMsXG4gICAgICBoaWRkZW5GaWVsZHMsXG4gICAgICBob29rcyxcbiAgICAgIGxhbmd1YWdlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcnJ1cHRzIGEgcnVubmluZyBzZXNzaW9uIHJlcGxheS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogdGhpcy5zY3JlZWIuc2Vzc2lvblJlcGxheVN0b3AoKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2Vzc2lvblJlcGxheVN0b3AoKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJzZXNzaW9uUmVwbGF5U3RvcFwiKTtcblxuICAgIHJldHVybiBfU2NyZWViLnNlc3Npb25SZXBsYXlTdG9wKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIGEgc2Vzc2lvbiByZXBsYXkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLnNlc3Npb25SZXBsYXlTdGFydCgpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBzZXNzaW9uUmVwbGF5U3RhcnQoKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJzZXNzaW9uUmVwbGF5U3RhcnRcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi5zZXNzaW9uUmVwbGF5U3RhcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JjZXMgYSB0YXJnZXRpbmcgY2hlY2suXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLnRhcmdldGluZ0NoZWNrKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFzeW5jIHRhcmdldGluZ0NoZWNrKCkge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlU2NyZWViKFwidGFyZ2V0aW5nQ2hlY2tcIik7XG5cbiAgICByZXR1cm4gX1NjcmVlYi50YXJnZXRpbmdDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaW50cyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgdGFyZ2V0aW5nIGVuZ2luZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogY29uc29sZS5sb2coYXdhaXQgdGhpcy5zY3JlZWIudGFyZ2V0aW5nRGVidWcoKSk7XG4gICAqIC8vIHRhcmdldGluZyAqKioqKioqKioqKiogU0NSRUVCIFRBUkdFVElORyBSVUxFUyBERUJVRyAqKioqKioqKioqKioqKlxuICAgKiAvLyBEaXNhYmxlZCBzdXJ2ZXlzIGFyZSBub3QgbGlzdGVkIGhlcmUuXG4gICAqIC8vXG4gICAqIC8vIFNjcmVlYiBjaGFubmVsIGlkOiA8VVVJRD5cbiAgICogLy8gU2NyZWViIHJlc3BvbmRlbnQgaWQ6IDxVVUlEPlxuICAgKiAvL1xuICAgKiAvLyBTdXJ2ZXkgPFVVSUQ+OlxuICAgKiAvLyBodHRwczovL2FkbWluLnNjcmVlYi5hcHAvb3JnL2xhc3Qvc3VydmV5LzxVVUlEPi9zaGFyZVxuICAgKiAvL1xuICAgKiAvLyAgIC0gUnVsZSBvZiB0eXBlIFwiRGV2aWNlIHR5cGUgKGRlc2t0b3AvbW9iaWxlL3RhYmxldClcIjogdHJ1ZSDwn5+iXG4gICAqIC8vICAgLSBSdWxlIG9mIHR5cGUgXCJNdWx0aXBsZSBkaXNwbGF5XCI6IHRydWUg8J+folxuICAgKiAvLyAgIC0gUnVsZSBvZiB0eXBlIFwiQ2FwcGluZyBwZXIgdGltZSBiZXR3ZWVuIHN1cnZleSBkaXNwbGF5IG9uIGN1cnJlbnQgcmVzcG9uZGVudFwiOiB0cnVlIPCfn6JcbiAgICogLy8gICAtIFJ1bGUgb2YgdHlwZSBcIlVzZXIgZXZlbnQgY291bnRcIjogZmFsc2Ug8J+UtFxuICAgKiAvLyAgIC0gUnVsZSBvZiB0eXBlIFwiQ2FwcGluZyBwZXIgcmVzcG9uZGVudCBkaXNwbGF5IGNvdW50XCI6IGZhbHNlIPCflLRcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdGFyZ2V0aW5nRGVidWcoKSB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVTY3JlZWIoXCJ0YXJnZXRpbmdEZWJ1Z1wiKTtcblxuICAgIHJldHVybiBfU2NyZWViLnRhcmdldGluZ0RlYnVnKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgU2NyZWViIHRhZy5cbiAgICpcbiAgICogQHBhcmFtIHdlYnNpdGVJZCBZb3VyIHdlYnNpdGUvY2hhbm5lbCBpZC5cbiAgICogQHBhcmFtIHVzZXJJZCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgeW91ciB1c2VyLlxuICAgKiBAcGFyYW0gdXNlclByb3BlcnRpZXMgVGhlIHByb3BlcnRpZXMgb2YgeW91ciB1c2VyLlxuICAgKiBgYGB0ZXh0IFJlcXVpcmVtZW50czpcbiAgICogICAtIFByb3BlcnR5IG5hbWVzIG11c3QgYmUgbGltaXRlZCB0byAxMjggY2hhcmFjdGVyc1xuICAgKiAgIC0gTm8gbW9yZSB0aGFuIDEwMDAgYXR0cmlidXRlc1xuICAgKiAgIC0gU3VwcG9ydGVkIHR5cGVzIGZvciB2YWx1ZXM6IHN0cmluZywgbnVtYmVyLCBib29sZWFuIGFuZCBEYXRlXG4gICAqIGBgYFxuICAgKiBAcGFyYW0gbGFuZ3VhZ2UgRm9yY2UgYSBzcGVjaWZpYyBsYW5ndWFnZSBmb3IgdGhlIHRhZy4gZWc6ICdlbicuIGRlZmF1bHQ6IGJyb3dzZXIgbGFuZ3VhZ2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmluaXQoXG4gICAqICAgXCI8eW91ci13ZWJzaXRlLWlkPlwiLFxuICAgKiAgIFwiPHlvdXItdXNlci1pZD5cIixcbiAgICogICB7XG4gICAqICAgICBmaXJzdG5hbWU6ICc8dXNlci1maXJzdG5hbWU+JyxcbiAgICogICAgIGxhc3RuYW1lOiAnPHVzZXItbGFzdG5hbWU+JyxcbiAgICogICAgIHBsYW46ICc8dXNlci1wbGFuPicsXG4gICAqICAgICBsYXN0X3NlZW5fYXQ6IG5ldyBEYXRlKCksXG4gICAqICAgICBhdXRoZW50aWNhdGVkOiB0cnVlXG4gICAqICAgfSxcbiAgICogICB7XG4gICAqICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAqICAgICBvblJlYWR5OiAocGF5bG9hZCkgPT4gY29uc29sZS5sb2coXCJTY3JlZWIgU0RLIGlzIHJlYWR5IVwiLCBwYXlsb2FkKSxcbiAgICogICB9LFxuICAgKiAgIFwiZW5cIlxuICAgKiApO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhc3luYyBpbml0KFxuICAgIHdlYnNpdGVJZDogc3RyaW5nLFxuICAgIHVzZXJJZD86IHN0cmluZyxcbiAgICB1c2VyUHJvcGVydGllcz86IF9TY3JlZWIuUHJvcGVydHlSZWNvcmQsXG4gICAgaG9va3M/OiBfU2NyZWViLkhvb2tzSW5pdCxcbiAgICBsYW5ndWFnZT86IHN0cmluZ1xuICApIHtcbiAgICBhd2FpdCB0aGlzLmVuc3VyZVNjcmVlYihcImluaXRcIiwgdHJ1ZSk7XG5cbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIGF3YWl0IF9TY3JlZWIuaW5pdChcbiAgICAgIHdlYnNpdGVJZCxcbiAgICAgIHVzZXJJZCxcbiAgICAgIHVzZXJQcm9wZXJ0aWVzLFxuICAgICAgaG9va3MsXG4gICAgICBsYW5ndWFnZVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kcyBTY3JlZWIgdGFnIGludG8geW91ciBkb20uXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIFNjcmVlYiBtb2R1bGUgb3B0aW9ucy5cbiAgICogQHBhcmFtIG9wdGlvbnMud2luZG93IElmIHlvdSdyZSBydW5uaW5nIFNjcmVlYiB0YWcgaW4gYW4gaWZyYW1lLCBwbGVhc2Ugc2V0IHRoZSBpbm5lciB3aW5kb3cgaGVyZS5cbiAgICogQHBhcmFtIG9wdGlvbnMuc2NyZWViRW5kcG9pbnQgUGxlYXNlIGRvbid0IGRvIHRoaXMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIHRoaXMuc2NyZWViLmxvYWQoKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZChvcHRpb25zPzogX1NjcmVlYi5TY3JlZWJPcHRpb25zKSB7XG4gICAgcmV0dXJuIF9TY3JlZWIubG9hZCh7XG4gICAgICBzZGtOYW1lOiBcInNkay1hbmd1bGFyXCIsXG4gICAgICBzZGtWZXJzaW9uOiBDT05TVEFOVFMudmVyc2lvbixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, Inject, NgModule } from '@angular/core';
3
3
  import * as _Screeb from '@screeb/sdk-browser';
4
4
 
5
- var CONSTANTS = { version: "0.3.0" };
5
+ var CONSTANTS = { version: "0.5.0" };
6
6
 
7
7
  /**
8
8
  * Logs messages in the console with a corresponding urgency
@@ -307,21 +307,22 @@ class Screeb {
307
307
  * '<UUID>',
308
308
  * '<UUID>',
309
309
  * false,
310
- * {
310
+ * { // optional
311
311
  * color: "green",
312
312
  * article_id: 42
313
313
  * },
314
- * {
314
+ * { // optional
315
315
  * version: "1.0.0",
316
316
  * onSurveyShowed: (payload) => console.log("Survey showed", payload),
317
317
  * },
318
- * "en"
318
+ * "en", // optional
319
+ * "#screeb-survey-container" // optional
319
320
  * );
320
321
  * ```
321
322
  */
322
- async surveyStart(surveyId, distributionId, allowMultipleResponses, hiddenFields, hooks, language) {
323
+ async surveyStart(surveyId, distributionId, allowMultipleResponses, hiddenFields, hooks, language, selectors) {
323
324
  await this.ensureScreeb("surveyStart");
324
- return _Screeb.surveyStart(surveyId, distributionId, allowMultipleResponses, hiddenFields, hooks, language);
325
+ return _Screeb.surveyStart(surveyId, distributionId, allowMultipleResponses, hiddenFields, hooks, language, selectors);
325
326
  }
326
327
  /**
327
328
  * Interrupts a running message.
@@ -359,6 +360,30 @@ class Screeb {
359
360
  await this.ensureScreeb("messageStart");
360
361
  return _Screeb.messageStart(messageId, allowMultipleResponses, hiddenFields, hooks, language);
361
362
  }
363
+ /**
364
+ * Interrupts a running session replay.
365
+ *
366
+ * @example
367
+ * ```ts
368
+ * this.screeb.sessionReplayStop();
369
+ * ```
370
+ */
371
+ async sessionReplayStop() {
372
+ await this.ensureScreeb("sessionReplayStop");
373
+ return _Screeb.sessionReplayStop();
374
+ }
375
+ /**
376
+ * Starts a session replay.
377
+ *
378
+ * @example
379
+ * ```ts
380
+ * this.screeb.sessionReplayStart();
381
+ * ```
382
+ */
383
+ async sessionReplayStart() {
384
+ await this.ensureScreeb("sessionReplayStart");
385
+ return _Screeb.sessionReplayStart();
386
+ }
362
387
  /**
363
388
  * Forces a targeting check.
364
389
  *
@@ -1 +1 @@
1
- {"version":3,"file":"screeb-sdk-angular.mjs","sources":["../../../projects/screeb-sdk-angular/src/lib/constants.ts","../../../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":["export default { version: \"0.3.0\" };\n","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 { HooksInit, 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?: HooksInit;\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 CONSTANTS from \"./constants\";\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 * '<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 * \"en\"\n * );\n * ```\n */\n public async surveyStart(\n surveyId: string,\n distributionId: string,\n allowMultipleResponses: boolean,\n hiddenFields?: _Screeb.PropertyRecord,\n hooks?: _Screeb.HooksSurveyStart,\n language?: string\n ) {\n await this.ensureScreeb(\"surveyStart\");\n\n return _Screeb.surveyStart(\n surveyId,\n distributionId,\n allowMultipleResponses,\n hiddenFields,\n hooks,\n language\n );\n }\n\n /**\n * Interrupts a running message.\n *\n * @example\n * ```ts\n * this.screeb.messageClose();\n * ```\n */\n public async messageClose() {\n await this.ensureScreeb(\"messageClose\");\n\n return _Screeb.messageClose();\n }\n\n /**\n * Starts a message by its ID.\n *\n * @example\n * ```ts\n * this.screeb.messageStart(\n * '<UUID>',\n * false,\n * {\n * color: \"green\",\n * article_id: 42\n * },\n * {\n * version: \"1.0.0\",\n * onMessageShowed: (payload) => console.log(\"Message showed\", payload),\n * },\n * \"en\"\n * );\n * ```\n */\n public async messageStart(\n messageId: string,\n allowMultipleResponses = true,\n hiddenFields?: _Screeb.PropertyRecord,\n hooks?: _Screeb.HooksMessageStart,\n language?: string\n ) {\n await this.ensureScreeb(\"messageStart\");\n\n return _Screeb.messageStart(\n messageId,\n allowMultipleResponses,\n hiddenFields,\n hooks,\n language\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 * @param language Force a specific language for the tag. eg: 'en'. default: browser language.\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 * \"en\"\n * );\n * ```\n */\n public async init(\n websiteId: string,\n userId?: string,\n userProperties?: _Screeb.PropertyRecord,\n hooks?: _Screeb.HooksInit,\n language?: string\n ) {\n await this.ensureScreeb(\"init\", true);\n\n this.isInitialized = true;\n\n return await _Screeb.init(\n websiteId,\n userId,\n userProperties,\n hooks,\n language\n );\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(options?: _Screeb.ScreebOptions) {\n return _Screeb.load({\n sdkName: \"sdk-angular\",\n sdkVersion: CONSTANTS.version,\n ...options,\n });\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
+ {"version":3,"file":"screeb-sdk-angular.mjs","sources":["../../../projects/screeb-sdk-angular/src/lib/constants.ts","../../../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":["export default { version: \"0.5.0\" };\n","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 { HooksInit, 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?: HooksInit;\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 CONSTANTS from \"./constants\";\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 * '<UUID>',\n * false,\n * { // optional\n * color: \"green\",\n * article_id: 42\n * },\n * { // optional\n * version: \"1.0.0\",\n * onSurveyShowed: (payload) => console.log(\"Survey showed\", payload),\n * },\n * \"en\", // optional\n * \"#screeb-survey-container\" // optional\n * );\n * ```\n */\n public async surveyStart(\n surveyId: string,\n distributionId: string,\n allowMultipleResponses: boolean,\n hiddenFields?: _Screeb.PropertyRecord,\n hooks?: _Screeb.HooksSurveyStart,\n language?: string,\n selectors?: string | string[]\n ) {\n await this.ensureScreeb(\"surveyStart\");\n\n return _Screeb.surveyStart(\n surveyId,\n distributionId,\n allowMultipleResponses,\n hiddenFields,\n hooks,\n language,\n selectors\n );\n }\n\n /**\n * Interrupts a running message.\n *\n * @example\n * ```ts\n * this.screeb.messageClose();\n * ```\n */\n public async messageClose() {\n await this.ensureScreeb(\"messageClose\");\n\n return _Screeb.messageClose();\n }\n\n /**\n * Starts a message by its ID.\n *\n * @example\n * ```ts\n * this.screeb.messageStart(\n * '<UUID>',\n * false,\n * {\n * color: \"green\",\n * article_id: 42\n * },\n * {\n * version: \"1.0.0\",\n * onMessageShowed: (payload) => console.log(\"Message showed\", payload),\n * },\n * \"en\"\n * );\n * ```\n */\n public async messageStart(\n messageId: string,\n allowMultipleResponses = true,\n hiddenFields?: _Screeb.PropertyRecord,\n hooks?: _Screeb.HooksMessageStart,\n language?: string\n ) {\n await this.ensureScreeb(\"messageStart\");\n\n return _Screeb.messageStart(\n messageId,\n allowMultipleResponses,\n hiddenFields,\n hooks,\n language\n );\n }\n\n /**\n * Interrupts a running session replay.\n *\n * @example\n * ```ts\n * this.screeb.sessionReplayStop();\n * ```\n */\n public async sessionReplayStop() {\n await this.ensureScreeb(\"sessionReplayStop\");\n\n return _Screeb.sessionReplayStop();\n }\n\n /**\n * Starts a session replay.\n *\n * @example\n * ```ts\n * this.screeb.sessionReplayStart();\n * ```\n */\n public async sessionReplayStart() {\n await this.ensureScreeb(\"sessionReplayStart\");\n\n return _Screeb.sessionReplayStart();\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 * @param language Force a specific language for the tag. eg: 'en'. default: browser language.\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 * \"en\"\n * );\n * ```\n */\n public async init(\n websiteId: string,\n userId?: string,\n userProperties?: _Screeb.PropertyRecord,\n hooks?: _Screeb.HooksInit,\n language?: string\n ) {\n await this.ensureScreeb(\"init\", true);\n\n this.isInitialized = true;\n\n return await _Screeb.init(\n websiteId,\n userId,\n userProperties,\n hooks,\n language\n );\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(options?: _Screeb.ScreebOptions) {\n return _Screeb.load({\n sdkName: \"sdk-angular\",\n sdkVersion: CONSTANTS.version,\n ...options,\n });\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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"}
@@ -219,19 +219,20 @@ export declare class Screeb {
219
219
  * '<UUID>',
220
220
  * '<UUID>',
221
221
  * false,
222
- * {
222
+ * { // optional
223
223
  * color: "green",
224
224
  * article_id: 42
225
225
  * },
226
- * {
226
+ * { // optional
227
227
  * version: "1.0.0",
228
228
  * onSurveyShowed: (payload) => console.log("Survey showed", payload),
229
229
  * },
230
- * "en"
230
+ * "en", // optional
231
+ * "#screeb-survey-container" // optional
231
232
  * );
232
233
  * ```
233
234
  */
234
- surveyStart(surveyId: string, distributionId: string, allowMultipleResponses: boolean, hiddenFields?: _Screeb.PropertyRecord, hooks?: _Screeb.HooksSurveyStart, language?: string): Promise<unknown>;
235
+ surveyStart(surveyId: string, distributionId: string, allowMultipleResponses: boolean, hiddenFields?: _Screeb.PropertyRecord, hooks?: _Screeb.HooksSurveyStart, language?: string, selectors?: string | string[]): Promise<unknown>;
235
236
  /**
236
237
  * Interrupts a running message.
237
238
  *
@@ -262,6 +263,24 @@ export declare class Screeb {
262
263
  * ```
263
264
  */
264
265
  messageStart(messageId: string, allowMultipleResponses?: boolean, hiddenFields?: _Screeb.PropertyRecord, hooks?: _Screeb.HooksMessageStart, language?: string): Promise<unknown>;
266
+ /**
267
+ * Interrupts a running session replay.
268
+ *
269
+ * @example
270
+ * ```ts
271
+ * this.screeb.sessionReplayStop();
272
+ * ```
273
+ */
274
+ sessionReplayStop(): Promise<unknown>;
275
+ /**
276
+ * Starts a session replay.
277
+ *
278
+ * @example
279
+ * ```ts
280
+ * this.screeb.sessionReplayStart();
281
+ * ```
282
+ */
283
+ sessionReplayStart(): Promise<unknown>;
265
284
  /**
266
285
  * Forces a targeting check.
267
286
  *
@@ -29,6 +29,8 @@
29
29
  - [load](Screeb.md#load)
30
30
  - [messageClose](Screeb.md#messageclose)
31
31
  - [messageStart](Screeb.md#messagestart)
32
+ - [sessionReplayStart](Screeb.md#sessionreplaystart)
33
+ - [sessionReplayStop](Screeb.md#sessionreplaystop)
32
34
  - [surveyClose](Screeb.md#surveyclose)
33
35
  - [surveyStart](Screeb.md#surveystart)
34
36
  - [targetingCheck](Screeb.md#targetingcheck)
@@ -482,6 +484,42 @@ this.screeb.messageStart(
482
484
 
483
485
  ___
484
486
 
487
+ ### sessionReplayStart
488
+
489
+ ▸ **sessionReplayStart**(): `Promise`\<`unknown`\>
490
+
491
+ Starts a session replay.
492
+
493
+ #### Returns
494
+
495
+ `Promise`\<`unknown`\>
496
+
497
+ **`Example`**
498
+
499
+ ```ts
500
+ this.screeb.sessionReplayStart();
501
+ ```
502
+
503
+ ___
504
+
505
+ ### sessionReplayStop
506
+
507
+ ▸ **sessionReplayStop**(): `Promise`\<`unknown`\>
508
+
509
+ Interrupts a running session replay.
510
+
511
+ #### Returns
512
+
513
+ `Promise`\<`unknown`\>
514
+
515
+ **`Example`**
516
+
517
+ ```ts
518
+ this.screeb.sessionReplayStop();
519
+ ```
520
+
521
+ ___
522
+
485
523
  ### surveyClose
486
524
 
487
525
  ▸ **surveyClose**(): `Promise`\<`unknown`\>
@@ -502,7 +540,7 @@ ___
502
540
 
503
541
  ### surveyStart
504
542
 
505
- ▸ **surveyStart**(`surveyId`, `distributionId`, `allowMultipleResponses`, `hiddenFields?`, `hooks?`, `language?`): `Promise`\<`unknown`\>
543
+ ▸ **surveyStart**(`surveyId`, `distributionId`, `allowMultipleResponses`, `hiddenFields?`, `hooks?`, `language?`, `selectors?`): `Promise`\<`unknown`\>
506
544
 
507
545
  Starts a survey by its ID.
508
546
 
@@ -516,6 +554,7 @@ Starts a survey by its ID.
516
554
  | `hiddenFields?` | `PropertyRecord` |
517
555
  | `hooks?` | `HooksSurveyStart` |
518
556
  | `language?` | `string` |
557
+ | `selectors?` | `string` \| `string`[] |
519
558
 
520
559
  #### Returns
521
560
 
@@ -528,15 +567,16 @@ this.screeb.surveyStart(
528
567
  '<UUID>',
529
568
  '<UUID>',
530
569
  false,
531
- {
570
+ { // optional
532
571
  color: "green",
533
572
  article_id: 42
534
573
  },
535
- {
574
+ { // optional
536
575
  version: "1.0.0",
537
576
  onSurveyShowed: (payload) => console.log("Survey showed", payload),
538
577
  },
539
- "en"
578
+ "en", // optional
579
+ "#screeb-survey-container" // optional
540
580
  );
541
581
  ```
542
582
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@screeb/sdk-angular",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Screeb's browser sdk, optimized for Angular.",
5
5
  "keywords": [
6
6
  "product discovery",
@@ -50,7 +50,7 @@
50
50
  "replace-version": "replace-in-files --string='0.0.0-dev' --replacement=$npm_package_version projects/screeb-sdk-angular/src/lib/constants.ts"
51
51
  },
52
52
  "dependencies": {
53
- "@screeb/sdk-browser": "^0.3.0"
53
+ "@screeb/sdk-browser": "^0.5.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@angular-devkit/build-angular": "^16.2.6",