@openreplay/tracker 3.5.11 → 3.5.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +5 -1
  2. package/cjs/app/guards.d.ts +18 -0
  3. package/cjs/app/guards.js +24 -0
  4. package/cjs/app/index.d.ts +18 -4
  5. package/cjs/app/index.js +69 -43
  6. package/cjs/app/nodes.d.ts +3 -3
  7. package/cjs/app/nodes.js +2 -2
  8. package/cjs/app/observer/observer.d.ts +1 -2
  9. package/cjs/app/observer/observer.js +73 -60
  10. package/cjs/app/observer/top_observer.js +3 -3
  11. package/cjs/app/sanitizer.d.ts +3 -1
  12. package/cjs/app/sanitizer.js +13 -2
  13. package/cjs/app/session.d.ts +2 -7
  14. package/cjs/app/session.js +24 -37
  15. package/cjs/index.d.ts +2 -2
  16. package/cjs/index.js +2 -2
  17. package/cjs/modules/console.d.ts +1 -1
  18. package/cjs/modules/console.js +2 -1
  19. package/cjs/modules/cssrules.d.ts +1 -1
  20. package/cjs/modules/cssrules.js +2 -4
  21. package/cjs/modules/exception.d.ts +1 -1
  22. package/cjs/modules/img.d.ts +1 -1
  23. package/cjs/modules/img.js +14 -6
  24. package/cjs/modules/input.d.ts +2 -1
  25. package/cjs/modules/input.js +18 -20
  26. package/cjs/modules/longtasks.d.ts +1 -1
  27. package/cjs/modules/mouse.d.ts +1 -1
  28. package/cjs/modules/mouse.js +3 -2
  29. package/cjs/modules/performance.d.ts +1 -1
  30. package/cjs/modules/scroll.d.ts +1 -1
  31. package/cjs/modules/scroll.js +3 -2
  32. package/cjs/modules/timing.d.ts +1 -1
  33. package/cjs/modules/timing.js +2 -1
  34. package/cjs/modules/viewport.d.ts +1 -1
  35. package/lib/app/guards.d.ts +18 -0
  36. package/lib/app/guards.js +16 -0
  37. package/lib/app/index.d.ts +18 -4
  38. package/lib/app/index.js +68 -42
  39. package/lib/app/nodes.d.ts +3 -3
  40. package/lib/app/nodes.js +2 -2
  41. package/lib/app/observer/observer.d.ts +1 -2
  42. package/lib/app/observer/observer.js +70 -57
  43. package/lib/app/observer/top_observer.js +3 -3
  44. package/lib/app/sanitizer.d.ts +3 -1
  45. package/lib/app/sanitizer.js +13 -2
  46. package/lib/app/session.d.ts +2 -7
  47. package/lib/app/session.js +24 -37
  48. package/lib/common/tsconfig.tsbuildinfo +1 -1
  49. package/lib/index.d.ts +2 -2
  50. package/lib/index.js +2 -2
  51. package/lib/modules/console.d.ts +1 -1
  52. package/lib/modules/console.js +2 -1
  53. package/lib/modules/cssrules.d.ts +1 -1
  54. package/lib/modules/cssrules.js +2 -4
  55. package/lib/modules/exception.d.ts +1 -1
  56. package/lib/modules/img.d.ts +1 -1
  57. package/lib/modules/img.js +14 -6
  58. package/lib/modules/input.d.ts +2 -1
  59. package/lib/modules/input.js +18 -20
  60. package/lib/modules/longtasks.d.ts +1 -1
  61. package/lib/modules/mouse.d.ts +1 -1
  62. package/lib/modules/mouse.js +3 -2
  63. package/lib/modules/performance.d.ts +1 -1
  64. package/lib/modules/scroll.d.ts +1 -1
  65. package/lib/modules/scroll.js +3 -2
  66. package/lib/modules/timing.d.ts +1 -1
  67. package/lib/modules/timing.js +2 -1
  68. package/lib/modules/viewport.d.ts +1 -1
  69. package/package.json +2 -2
  70. package/cjs/app/context.d.ts +0 -18
  71. package/cjs/app/context.js +0 -73
  72. package/lib/app/context.d.ts +0 -18
  73. package/lib/app/context.js +0 -68
@@ -1,5 +1,5 @@
1
1
  import Observer from "./observer.js";
2
- import { isInstance } from "../context.js";
2
+ import { isElementNode, hasTag, } from "../guards.js";
3
3
  import IFrameObserver from "./iframe_observer.js";
4
4
  import ShadowRootObserver from "./shadow_root_observer.js";
5
5
  import { CreateDocument } from "../../common/messages.js";
@@ -15,7 +15,7 @@ export default class TopObserver extends Observer {
15
15
  }, options);
16
16
  // IFrames
17
17
  this.app.nodes.attachNodeCallback(node => {
18
- if (isInstance(node, HTMLIFrameElement) &&
18
+ if (hasTag(node, "IFRAME") &&
19
19
  ((this.options.captureIFrames && !hasOpenreplayAttribute(node, "obscured"))
20
20
  || hasOpenreplayAttribute(node, "capture"))) {
21
21
  this.handleIframe(node);
@@ -23,7 +23,7 @@ export default class TopObserver extends Observer {
23
23
  });
24
24
  // ShadowDOM
25
25
  this.app.nodes.attachNodeCallback(node => {
26
- if (isInstance(node, Element) && node.shadowRoot !== null) {
26
+ if (isElementNode(node) && node.shadowRoot !== null) {
27
27
  this.handleShadowRoot(node.shadowRoot);
28
28
  }
29
29
  });
@@ -1,4 +1,4 @@
1
- import App from "./index.js";
1
+ import type App from "./index.js";
2
2
  export interface Options {
3
3
  obscureTextEmails: boolean;
4
4
  obscureTextNumbers: boolean;
@@ -6,11 +6,13 @@ export interface Options {
6
6
  export default class Sanitizer {
7
7
  private readonly app;
8
8
  private readonly masked;
9
+ private readonly maskedContainers;
9
10
  private readonly options;
10
11
  constructor(app: App, options: Partial<Options>);
11
12
  handleNode(id: number, parentID: number, node: Node): void;
12
13
  sanitize(id: number, data: string): string;
13
14
  isMasked(id: number): boolean;
15
+ isMaskedContainer(id: number): boolean;
14
16
  getInnerTextSecure(el: HTMLElement): string;
15
17
  clear(): void;
16
18
  }
@@ -1,9 +1,10 @@
1
1
  import { stars, hasOpenreplayAttribute } from "../utils.js";
2
- import { isInstance } from "./context.js";
2
+ import { isElementNode } from "./guards.js";
3
3
  export default class Sanitizer {
4
4
  constructor(app, options) {
5
5
  this.app = app;
6
6
  this.masked = new Set();
7
+ this.maskedContainers = new Set();
7
8
  this.options = Object.assign({
8
9
  obscureTextEmails: true,
9
10
  obscureTextNumbers: false,
@@ -11,9 +12,15 @@ export default class Sanitizer {
11
12
  }
12
13
  handleNode(id, parentID, node) {
13
14
  if (this.masked.has(parentID) ||
14
- (isInstance(node, Element) && hasOpenreplayAttribute(node, 'masked'))) {
15
+ (isElementNode(node) &&
16
+ hasOpenreplayAttribute(node, 'masked'))) {
15
17
  this.masked.add(id);
16
18
  }
19
+ if (this.maskedContainers.has(parentID) ||
20
+ (isElementNode(node) &&
21
+ hasOpenreplayAttribute(node, 'htmlmasked'))) {
22
+ this.maskedContainers.add(id);
23
+ }
17
24
  }
18
25
  sanitize(id, data) {
19
26
  if (this.masked.has(id)) {
@@ -31,6 +38,9 @@ export default class Sanitizer {
31
38
  isMasked(id) {
32
39
  return this.masked.has(id);
33
40
  }
41
+ isMaskedContainer(id) {
42
+ return this.maskedContainers.has(id);
43
+ }
34
44
  getInnerTextSecure(el) {
35
45
  const id = this.app.nodes.getID(el);
36
46
  if (!id) {
@@ -40,5 +50,6 @@ export default class Sanitizer {
40
50
  }
41
51
  clear() {
42
52
  this.masked.clear();
53
+ this.maskedContainers.clear();
43
54
  }
44
55
  }
@@ -1,4 +1,3 @@
1
- import App from "./index.js";
2
1
  interface SessionInfo {
3
2
  sessionID: string | null;
4
3
  metadata: Record<string, string>;
@@ -6,20 +5,16 @@ interface SessionInfo {
6
5
  }
7
6
  declare type OnUpdateCallback = (i: Partial<SessionInfo>) => void;
8
7
  export default class Session {
9
- private app;
10
8
  private metadata;
11
9
  private userID;
12
10
  private sessionID;
13
- private activityState;
14
11
  private callbacks;
15
- constructor(app: App);
16
12
  attachUpdateCallback(cb: OnUpdateCallback): void;
17
13
  private handleUpdate;
18
- update({ userID, metadata, sessionID }: Partial<SessionInfo>): void;
19
- private _setMetadata;
20
- private _setUserID;
14
+ update(newInfo: Partial<SessionInfo>): void;
21
15
  setMetadata(key: string, value: string): void;
22
16
  setUserID(userID: string): void;
23
17
  getInfo(): SessionInfo;
18
+ reset(): void;
24
19
  }
25
20
  export {};
@@ -1,59 +1,41 @@
1
- import { UserID, Metadata } from "../common/messages.js";
2
- var ActivityState;
3
- (function (ActivityState) {
4
- ActivityState[ActivityState["NotActive"] = 0] = "NotActive";
5
- ActivityState[ActivityState["Starting"] = 1] = "Starting";
6
- ActivityState[ActivityState["Active"] = 2] = "Active";
7
- })(ActivityState || (ActivityState = {}));
8
1
  export default class Session {
9
- constructor(app) {
10
- this.app = app;
2
+ constructor() {
11
3
  this.metadata = {};
12
4
  this.userID = null;
13
5
  this.sessionID = null;
14
- this.activityState = ActivityState.NotActive;
15
6
  this.callbacks = [];
16
7
  }
17
8
  attachUpdateCallback(cb) {
18
9
  this.callbacks.push(cb);
19
10
  }
20
- handleUpdate() {
21
- const sessInfo = this.getInfo();
22
- if (sessInfo.userID == null) {
23
- delete sessInfo.userID;
11
+ handleUpdate(newInfo) {
12
+ if (newInfo.userID == null) {
13
+ delete newInfo.userID;
24
14
  }
25
- if (sessInfo.sessionID == null) {
26
- delete sessInfo.sessionID;
15
+ if (newInfo.sessionID == null) {
16
+ delete newInfo.sessionID;
27
17
  }
28
- this.callbacks.forEach(cb => cb(sessInfo));
18
+ this.callbacks.forEach(cb => cb(newInfo));
29
19
  }
30
- update({ userID, metadata, sessionID }) {
31
- if (userID != null) { // TODO clear nullable/undefinable types
32
- this._setUserID(userID);
20
+ update(newInfo) {
21
+ if (newInfo.userID !== undefined) { // TODO clear nullable/undefinable types
22
+ this.userID = newInfo.userID;
33
23
  }
34
- if (metadata !== undefined) {
35
- Object.entries(metadata).forEach(kv => this._setMetadata(...kv));
24
+ if (newInfo.metadata !== undefined) {
25
+ Object.entries(newInfo.metadata).forEach(([k, v]) => this.metadata[k] = v);
36
26
  }
37
- if (sessionID !== undefined) {
38
- this.sessionID = sessionID;
27
+ if (newInfo.sessionID !== undefined) {
28
+ this.sessionID = newInfo.sessionID;
39
29
  }
40
- this.handleUpdate();
41
- }
42
- _setMetadata(key, value) {
43
- this.app.send(new Metadata(key, value));
44
- this.metadata[key] = value;
45
- }
46
- _setUserID(userID) {
47
- this.app.send(new UserID(userID));
48
- this.userID = userID;
30
+ this.handleUpdate(newInfo);
49
31
  }
50
32
  setMetadata(key, value) {
51
- this._setMetadata(key, value);
52
- this.handleUpdate();
33
+ this.metadata[key] = value;
34
+ this.handleUpdate({ metadata: { [key]: value } });
53
35
  }
54
36
  setUserID(userID) {
55
- this._setUserID(userID);
56
- this.handleUpdate();
37
+ this.userID = userID;
38
+ this.handleUpdate({ userID });
57
39
  }
58
40
  getInfo() {
59
41
  return {
@@ -62,4 +44,9 @@ export default class Session {
62
44
  userID: this.userID,
63
45
  };
64
46
  }
47
+ reset() {
48
+ this.metadata = {};
49
+ this.userID = null;
50
+ this.sessionID = null;
51
+ }
65
52
  }
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../src/common/types.ts","../../src/common/messages.ts","../../src/common/webworker.ts","../../node_modules/@types/eslint-visitor-keys/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/base.d.ts","../../node_modules/@types/node/ts3.2/fs.d.ts","../../node_modules/@types/node/ts3.2/util.d.ts","../../node_modules/@types/node/ts3.2/globals.d.ts","../../node_modules/@types/node/ts3.2/base.d.ts","../../node_modules/@types/node/ts3.5/globals.global.d.ts","../../node_modules/@types/node/ts3.5/wasi.d.ts","../../node_modules/@types/node/ts3.5/base.d.ts","../../node_modules/@types/node/ts3.7/assert.d.ts","../../node_modules/@types/node/ts3.7/base.d.ts","../../node_modules/@types/node/ts3.7/index.d.ts","../../node_modules/@types/minimatch/index.d.ts","../../node_modules/@types/glob/index.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/resolve/index.d.ts"],"fileInfos":[{"version":"ca3c1cd7464b613bf148a1422cb3201fe083e08565a02dc99eaad0d2977c16a7","affectsGlobalScope":true,"impliedFormat":1},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"d8996609230d17e90484a2dd58f22668f9a05a3bfe00bfb1d6271171e54a31fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true,"impliedFormat":1},{"version":"4378fc8122ec9d1a685b01eb66c46f62aba6b239ca7228bb6483bcf8259ee493","affectsGlobalScope":true,"impliedFormat":1},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true,"impliedFormat":1},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true,"impliedFormat":1},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true,"impliedFormat":1},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true,"impliedFormat":1},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true,"impliedFormat":1},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true,"impliedFormat":1},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true,"impliedFormat":1},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true,"impliedFormat":1},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true,"impliedFormat":1},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true,"impliedFormat":1},{"version":"10bbdc1981b8d9310ee75bfac28ee0477bb2353e8529da8cff7cb26c409cb5e8","affectsGlobalScope":true,"impliedFormat":1},"8f2ce078b846e85a1e1d9608ee441d1b01babad7059966dafb3fb203c0be58b3","57f6a26ef13806a81f4fd41f0afc9745f8133850172d593bd8a873f8ac8ef8e1","7aca4d4f46ed6db51ccb2c75e628f7bef921529e89bd4b5b96bebaf66647e517","725d9be2fd48440256f4deb00649adffdbc5ecd282b09e89d4e200663792c34c","89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b",{"version":"2dd7dbacbd70cc156185235140b7b6682c002c1ea678dd87d7a20589d4555fc0","affectsGlobalScope":true,"impliedFormat":1},"4ed9f71ddbb5753771ee391f64297078a88f7dfd1480646dcf08c31395778682","61215c1a376bbe8f51cab4cc4ddbf3746387015113c37a84d981d4738c21b878","465150173a56b943b2f6d8918e35c89d8386ffd37aa466e486ca54db54d6cee7","123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803","525c8fc510d9632d2a0a9de2d41c3ac1cdd79ff44d3b45c6d81cacabb683528d","90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720","d4dd0b19ee0338dd4f1603eacb41859b9d5371bfef2b2849cb870d6fd6602bcb","7ecfe97b43aa6c8b8f90caa599d5648bb559962e74e6f038f73a77320569dd78","aad3237c3f99480041cad7ca04d64307c98933996f822342b7c0ee4a78553346","4d4c83f77ac21a72252785baa5328a5612b0b6598d512f68b8cb14f7966d059e","eaa8136bb11fbea5bdaf29e06aa45a1969ddd39fbfb5fe58a01f00d7f1562cd9","e253cd3c7d10c4f600308d0528dd371d7e4165d8295b37a1f38d0ef6c0dfaf60","fb28748ff8d015f52e99daee4f454e57cec1a22141f1257c317f3630a15edeb7","9440dcf960685f7ec10856891a6cebb52a5ae8cef6a2e85daf9476dafd346cbe","5d9394b829cfd504b2fe17287aaad8ce1dcfb2a2183c962a90a85b96da2c1c90","c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a","6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947","bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665","46cac76114704902baa535b30fb66a26aeaf9430f3b3ab44746e329f12e85498","ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34","84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35","0b6098fedb648cab8091cca2b022a5c729b6ef18da923852033f495907cb1a45",{"version":"0e0d58f5e90c0a270dac052b9c5ad8ccdfc8271118c2105b361063218d528d6e","affectsGlobalScope":true,"impliedFormat":1},"30ec6f9c683b988c3cfaa0c4690692049c4e7ed7dc6f6e94f56194c06b86f5e1","9f633ecf3e065ff82c19eccab35c8aa1d6d5d1a49af282dc29ef5a64cca34164","6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9","dd3706b25d06fe23c73d16079e8c66ac775831ef419da00716bf2aee530a04a4","406a63c7e94107394341e97dbdc3312a1ecea75571d067a69eaa213786d9f154","d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457","b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9","424bc64b2794d9280c1e1f4a3518ba9d285385a16d84753a6427bb469e582eca","a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638","3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748","826d48e49c905cedb906cbde6ccaf758827ff5867d4daa006b5a79e0fb489357","baa711b17f67390c60eac3c70a1391b23a8e3833cb723b2d7336d4817a22455c","289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953","e4abb8eaa8a7d78236be0f8342404aab076668d20590209e32fdeb924588531e","086bfc0710b044ce1586108ee56c6e1c0d9ca2d325c153bb026cbc850169f593","f409183966a1dd93d3a9cd1d54fbeb85c73101e87cd5b19467c5e37b252f3fd8","b46af749e3574b83bccc0ec829322b15e834ae90b45760eebc75a189c28c0868","12b2608d6074167c331c9c3c6994a57819f6ff934c7fd4527e23aabf56d4c8d1","ffc1cd688606ad1ddb59a40e8f3defbde907af2a3402d1d9ddf69accb2903f07",{"version":"4926e99d2ad39c0bbd36f2d37cc8f52756bc7a5661ad7b12815df871a4b07ba1","affectsGlobalScope":true,"impliedFormat":1},"4cef33b2997388559c39b2f98c37e8319ad61e30a1f0edc55c53913f2250bade",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true,"impliedFormat":1},"0b3fef11ea6208c4cb3715c9aa108766ce98fc726bfba68cc23b25ce944ce9c0","255dbc5a5acef2b83b47145042aa0127ebf7fe24cd5ce6afaaaf5c8fc2c5eb96","a8b842671d535d14f533fd8dbfacebceacf5195069d720425d572d5cc5ab3dc4","9779312cffccce68e3ffbaa3a876381dc54a8240d9bdaa448f7eba222ec19392","d522314e80ed71b57e3c2939d3c9594eaae63a4adf028559e6574f6b270b0fee","1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633","64ef5112114bdd77304acb548f93777b263bbf57272776139425a58f68a10775","ecdf947a5111318568ba99f2a87b8498382d8871207f1bc6271ff3b9536a2448","2880728492d6a6baa55411d14cc42fa55714a24b1d1d27ff9a8a610abd47c761"],"options":{"composite":true,"declaration":true,"module":5,"noImplicitAny":true,"noImplicitThis":true,"outDir":"..","rootDir":"../../src","strictNullChecks":true,"target":2},"fileIdsList":[[45,68,74,75],[44,45,68,74,75,83,84],[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,74,75],[44,45,52,61,68,74,75],[36,44,45,52,68,74,75],[40,45,53,68,74,75],[45,61,68,74,75],[42,44,45,52,68,74,75],[44,45,68,74,75],[44,46,61,67,68,74,75],[44,45,52,61,67,68,74,75],[44,45,47,52,61,64,67,68,74,75],[44,45,47,64,67,68,74,75],[45,67,68,74,75],[42,44,45,61,68,74,75],[34,45,68,74,75],[45,66,68,74,75],[44,45,61,68,74,75],[45,59,68,70,74,75],[40,42,45,52,61,68,74,75],[45,68,73,74,75,76],[45,68,75],[33,45,68,74,75],[45,68,74],[45,68,74,75,77,78,79],[45,68,74,75,80,81],[45,68,74,75,82],[45,52,68,74,75],[45,58,68,74,75],[45,74,75],[44,45,61,67,68,70,74,75],[45,68,74,75,83],[28,45,68,74,75]],"referencedMap":[[31,1],[32,1],[85,2],[86,1],[84,1],[34,1],[73,3],[35,1],[36,4],[37,5],[38,1],[39,6],[40,7],[41,8],[42,1],[43,9],[44,1],[45,10],[46,1],[33,1],[47,11],[48,12],[49,13],[50,9],[51,14],[52,15],[53,1],[54,1],[55,16],[56,17],[57,1],[58,1],[59,18],[60,19],[61,9],[62,1],[63,1],[64,20],[65,1],[77,21],[74,22],[76,23],[75,24],[80,25],[78,1],[79,1],[81,1],[82,26],[83,27],[66,28],[67,29],[68,30],[69,7],[70,1],[71,31],[72,7],[87,32],[7,1],[6,1],[2,1],[8,1],[9,1],[10,1],[11,1],[12,1],[13,1],[14,1],[15,1],[3,1],[4,1],[19,1],[16,1],[17,1],[18,1],[20,1],[21,1],[22,1],[5,1],[23,1],[24,1],[25,1],[26,1],[1,1],[27,1],[29,33],[28,1],[30,1]],"exportedModulesMap":[[31,1],[32,1],[85,2],[86,1],[84,1],[34,1],[73,3],[35,1],[36,4],[37,5],[38,1],[39,6],[40,7],[41,8],[42,1],[43,9],[44,1],[45,10],[46,1],[33,1],[47,11],[48,12],[49,13],[50,9],[51,14],[52,15],[53,1],[54,1],[55,16],[56,17],[57,1],[58,1],[59,18],[60,19],[61,9],[62,1],[63,1],[64,20],[65,1],[77,21],[74,22],[76,23],[75,24],[80,25],[78,1],[79,1],[81,1],[82,26],[83,27],[66,28],[67,29],[68,30],[69,7],[70,1],[71,31],[72,7],[87,32],[7,1],[6,1],[2,1],[8,1],[9,1],[10,1],[11,1],[12,1],[13,1],[14,1],[15,1],[3,1],[4,1],[19,1],[16,1],[17,1],[18,1],[20,1],[21,1],[22,1],[5,1],[23,1],[24,1],[25,1],[26,1],[1,1],[27,1],[29,33],[28,1],[30,1]],"semanticDiagnosticsPerFile":[31,32,85,86,84,34,73,35,36,37,38,39,40,41,42,43,44,45,46,33,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,77,74,76,75,80,78,79,81,82,83,66,67,68,69,70,71,72,87,7,6,2,8,9,10,11,12,13,14,15,3,4,19,16,17,18,20,21,22,5,23,24,25,26,1,27,29,28,30]},"version":"4.6.0-dev.20211126"}
1
+ {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../src/common/types.ts","../../src/common/messages.ts","../../src/common/webworker.ts","../../node_modules/@types/eslint-visitor-keys/index.d.ts","../../node_modules/@types/estree/index.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/base.d.ts","../../node_modules/@types/node/ts3.2/fs.d.ts","../../node_modules/@types/node/ts3.2/util.d.ts","../../node_modules/@types/node/ts3.2/globals.d.ts","../../node_modules/@types/node/ts3.2/base.d.ts","../../node_modules/@types/node/ts3.5/globals.global.d.ts","../../node_modules/@types/node/ts3.5/wasi.d.ts","../../node_modules/@types/node/ts3.5/base.d.ts","../../node_modules/@types/node/ts3.7/assert.d.ts","../../node_modules/@types/node/ts3.7/base.d.ts","../../node_modules/@types/node/ts3.7/index.d.ts","../../node_modules/@types/minimatch/index.d.ts","../../node_modules/@types/glob/index.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/resolve/index.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","impliedFormat":1},{"version":"7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","impliedFormat":1},{"version":"8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","impliedFormat":1},{"version":"5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","impliedFormat":1},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true,"impliedFormat":1},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true,"impliedFormat":1},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true,"impliedFormat":1},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true,"impliedFormat":1},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true,"impliedFormat":1},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true,"impliedFormat":1},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true,"impliedFormat":1},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true,"impliedFormat":1},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true,"impliedFormat":1},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true,"impliedFormat":1},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true,"impliedFormat":1},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true,"impliedFormat":1},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true,"impliedFormat":1},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f2ce078b846e85a1e1d9608ee441d1b01babad7059966dafb3fb203c0be58b3","signature":"bb0fa248710a48974d667db1160c447703c893e03215d4ce4f459dae1808b37f","impliedFormat":99},{"version":"57f6a26ef13806a81f4fd41f0afc9745f8133850172d593bd8a873f8ac8ef8e1","signature":"d3b3836cbf2ca0d996b56065e5b66dd5c2e483e2aed61f11fc17e99b1d002411","impliedFormat":99},{"version":"f7bf98d3ccfb7f6ef1048b3e7a947df1494dd7a5ee1013745450814613920c51","signature":"fa1298efbba0e5b532e59a74af1681ea116ae8fb8ef9673f257fd72cd56a9690","impliedFormat":99},{"version":"725d9be2fd48440256f4deb00649adffdbc5ecd282b09e89d4e200663792c34c","impliedFormat":1},{"version":"89ccbe04e737ce613f5f04990271cfa84901446350b8551b0555ddf19319723b","impliedFormat":1},{"version":"2dd7dbacbd70cc156185235140b7b6682c002c1ea678dd87d7a20589d4555fc0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ed9f71ddbb5753771ee391f64297078a88f7dfd1480646dcf08c31395778682","impliedFormat":1},{"version":"61215c1a376bbe8f51cab4cc4ddbf3746387015113c37a84d981d4738c21b878","impliedFormat":1},{"version":"465150173a56b943b2f6d8918e35c89d8386ffd37aa466e486ca54db54d6cee7","impliedFormat":1},{"version":"123ec69e4b3a686eb49afd94ebe3292a5c84a867ecbcb6bb84bdd720a12af803","impliedFormat":1},{"version":"525c8fc510d9632d2a0a9de2d41c3ac1cdd79ff44d3b45c6d81cacabb683528d","impliedFormat":1},{"version":"90c85ddbb8de82cd19198bda062065fc51b7407c0f206f2e399e65a52e979720","impliedFormat":1},{"version":"d4dd0b19ee0338dd4f1603eacb41859b9d5371bfef2b2849cb870d6fd6602bcb","impliedFormat":1},{"version":"7ecfe97b43aa6c8b8f90caa599d5648bb559962e74e6f038f73a77320569dd78","impliedFormat":1},{"version":"aad3237c3f99480041cad7ca04d64307c98933996f822342b7c0ee4a78553346","impliedFormat":1},{"version":"4d4c83f77ac21a72252785baa5328a5612b0b6598d512f68b8cb14f7966d059e","impliedFormat":1},{"version":"eaa8136bb11fbea5bdaf29e06aa45a1969ddd39fbfb5fe58a01f00d7f1562cd9","impliedFormat":1},{"version":"e253cd3c7d10c4f600308d0528dd371d7e4165d8295b37a1f38d0ef6c0dfaf60","impliedFormat":1},{"version":"fb28748ff8d015f52e99daee4f454e57cec1a22141f1257c317f3630a15edeb7","impliedFormat":1},{"version":"9440dcf960685f7ec10856891a6cebb52a5ae8cef6a2e85daf9476dafd346cbe","impliedFormat":1},{"version":"5d9394b829cfd504b2fe17287aaad8ce1dcfb2a2183c962a90a85b96da2c1c90","impliedFormat":1},{"version":"c969bf4c7cdfe4d5dd28aa09432f99d09ad1d8d8b839959646579521d0467d1a","impliedFormat":1},{"version":"6c3857edaeeaaf43812f527830ebeece9266b6e8eb5271ab6d2f0008306c9947","impliedFormat":1},{"version":"bc6a77e750f4d34584e46b1405b771fb69a224197dd6bafe5b0392a29a70b665","impliedFormat":1},{"version":"46cac76114704902baa535b30fb66a26aeaf9430f3b3ab44746e329f12e85498","impliedFormat":1},{"version":"ed4ae81196cccc10f297d228bca8d02e31058e6d723a3c5bc4be5fb3c61c6a34","impliedFormat":1},{"version":"84044697c8b3e08ef24e4b32cfe6440143d07e469a5e34bda0635276d32d9f35","impliedFormat":1},{"version":"0b6098fedb648cab8091cca2b022a5c729b6ef18da923852033f495907cb1a45","impliedFormat":1},{"version":"0e0d58f5e90c0a270dac052b9c5ad8ccdfc8271118c2105b361063218d528d6e","affectsGlobalScope":true,"impliedFormat":1},{"version":"30ec6f9c683b988c3cfaa0c4690692049c4e7ed7dc6f6e94f56194c06b86f5e1","impliedFormat":1},{"version":"9f633ecf3e065ff82c19eccab35c8aa1d6d5d1a49af282dc29ef5a64cca34164","impliedFormat":1},{"version":"6b2bb67b0942bcfce93e1d6fad5f70afd54940a2b13df7f311201fba54b2cbe9","impliedFormat":1},{"version":"dd3706b25d06fe23c73d16079e8c66ac775831ef419da00716bf2aee530a04a4","impliedFormat":1},{"version":"406a63c7e94107394341e97dbdc3312a1ecea75571d067a69eaa213786d9f154","impliedFormat":1},{"version":"d67e08745494b000da9410c1ae2fdc9965fc6d593fe0f381a47491f75417d457","impliedFormat":1},{"version":"b40652bf8ce4a18133b31349086523b219724dca8df3448c1a0742528e7ad5b9","impliedFormat":1},{"version":"424bc64b2794d9280c1e1f4a3518ba9d285385a16d84753a6427bb469e582eca","impliedFormat":1},{"version":"a77fdb357c78b70142b2fdbbfb72958d69e8f765fd2a3c69946c1018e89d4638","impliedFormat":1},{"version":"3c2ac350c3baa61fd2b1925844109e098f4376d0768a4643abc82754fd752748","impliedFormat":1},{"version":"826d48e49c905cedb906cbde6ccaf758827ff5867d4daa006b5a79e0fb489357","impliedFormat":1},{"version":"baa711b17f67390c60eac3c70a1391b23a8e3833cb723b2d7336d4817a22455c","impliedFormat":1},{"version":"289be113bad7ee27ee7fa5b1e373c964c9789a5e9ed7db5ddcb631371120b953","impliedFormat":1},{"version":"e4abb8eaa8a7d78236be0f8342404aab076668d20590209e32fdeb924588531e","impliedFormat":1},{"version":"086bfc0710b044ce1586108ee56c6e1c0d9ca2d325c153bb026cbc850169f593","impliedFormat":1},{"version":"f409183966a1dd93d3a9cd1d54fbeb85c73101e87cd5b19467c5e37b252f3fd8","impliedFormat":1},{"version":"b46af749e3574b83bccc0ec829322b15e834ae90b45760eebc75a189c28c0868","impliedFormat":1},{"version":"12b2608d6074167c331c9c3c6994a57819f6ff934c7fd4527e23aabf56d4c8d1","impliedFormat":1},{"version":"ffc1cd688606ad1ddb59a40e8f3defbde907af2a3402d1d9ddf69accb2903f07","impliedFormat":1},{"version":"4926e99d2ad39c0bbd36f2d37cc8f52756bc7a5661ad7b12815df871a4b07ba1","affectsGlobalScope":true,"impliedFormat":1},{"version":"4cef33b2997388559c39b2f98c37e8319ad61e30a1f0edc55c53913f2250bade","impliedFormat":1},{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0b3fef11ea6208c4cb3715c9aa108766ce98fc726bfba68cc23b25ce944ce9c0","impliedFormat":1},{"version":"255dbc5a5acef2b83b47145042aa0127ebf7fe24cd5ce6afaaaf5c8fc2c5eb96","impliedFormat":1},{"version":"a8b842671d535d14f533fd8dbfacebceacf5195069d720425d572d5cc5ab3dc4","impliedFormat":1},{"version":"9779312cffccce68e3ffbaa3a876381dc54a8240d9bdaa448f7eba222ec19392","impliedFormat":1},{"version":"d522314e80ed71b57e3c2939d3c9594eaae63a4adf028559e6574f6b270b0fee","impliedFormat":1},{"version":"1d1e6bd176eee5970968423d7e215bfd66828b6db8d54d17afec05a831322633","impliedFormat":1},{"version":"64ef5112114bdd77304acb548f93777b263bbf57272776139425a58f68a10775","impliedFormat":1},{"version":"ecdf947a5111318568ba99f2a87b8498382d8871207f1bc6271ff3b9536a2448","impliedFormat":1},{"version":"2880728492d6a6baa55411d14cc42fa55714a24b1d1d27ff9a8a610abd47c761","impliedFormat":1}],"options":{"composite":true,"declaration":true,"module":5,"noImplicitAny":true,"noImplicitThis":true,"outDir":"..","rootDir":"../../src","strictNullChecks":true,"target":2},"fileIdsList":[[46,69,75,76],[45,46,69,75,76,84,85],[34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,75,76],[45,46,53,62,69,75,76],[37,45,46,53,69,75,76],[41,46,54,69,75,76],[46,62,69,75,76],[43,45,46,53,69,75,76],[45,46,69,75,76],[45,47,62,68,69,75,76],[45,46,53,62,68,69,75,76],[45,46,48,53,62,65,68,69,75,76],[45,46,48,65,68,69,75,76],[46,68,69,75,76],[43,45,46,62,69,75,76],[35,46,69,75,76],[46,67,69,75,76],[45,46,62,69,75,76],[46,60,69,71,75,76],[41,43,46,53,62,69,75,76],[46,69,74,75,76,77],[46,69,76],[34,46,69,75,76],[46,69,75],[46,69,75,76,78,79,80],[46,69,75,76,81,82],[46,69,75,76,83],[46,53,69,75,76],[46,59,69,75,76],[46,75,76],[45,46,62,68,69,71,75,76],[46,69,75,76,84],[29,46,69,75,76],[29]],"referencedMap":[[32,1],[33,1],[86,2],[87,1],[85,1],[35,1],[74,3],[36,1],[37,4],[38,5],[39,1],[40,6],[41,7],[42,8],[43,1],[44,9],[45,1],[46,10],[47,1],[34,1],[48,11],[49,12],[50,13],[51,9],[52,14],[53,15],[54,1],[55,1],[56,16],[57,17],[58,1],[59,1],[60,18],[61,19],[62,9],[63,1],[64,1],[65,20],[66,1],[78,21],[75,22],[77,23],[76,24],[81,25],[79,1],[80,1],[82,1],[83,26],[84,27],[67,28],[68,29],[69,30],[70,7],[71,1],[72,31],[73,7],[88,32],[7,1],[6,1],[2,1],[8,1],[9,1],[10,1],[11,1],[12,1],[13,1],[14,1],[15,1],[3,1],[4,1],[19,1],[16,1],[17,1],[18,1],[20,1],[21,1],[22,1],[5,1],[23,1],[24,1],[25,1],[26,1],[27,1],[1,1],[28,1],[30,33],[29,1],[31,1]],"exportedModulesMap":[[32,1],[33,1],[86,2],[87,1],[85,1],[35,1],[74,3],[36,1],[37,4],[38,5],[39,1],[40,6],[41,7],[42,8],[43,1],[44,9],[45,1],[46,10],[47,1],[34,1],[48,11],[49,12],[50,13],[51,9],[52,14],[53,15],[54,1],[55,1],[56,16],[57,17],[58,1],[59,1],[60,18],[61,19],[62,9],[63,1],[64,1],[65,20],[66,1],[78,21],[75,22],[77,23],[76,24],[81,25],[79,1],[80,1],[82,1],[83,26],[84,27],[67,28],[68,29],[69,30],[70,7],[71,1],[72,31],[73,7],[88,32],[7,1],[6,1],[2,1],[8,1],[9,1],[10,1],[11,1],[12,1],[13,1],[14,1],[15,1],[3,1],[4,1],[19,1],[16,1],[17,1],[18,1],[20,1],[21,1],[22,1],[5,1],[23,1],[24,1],[25,1],[26,1],[27,1],[1,1],[28,1],[30,34]],"semanticDiagnosticsPerFile":[32,33,86,87,85,35,74,36,37,38,39,40,41,42,43,44,45,46,47,34,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,78,75,77,76,81,79,80,82,83,84,67,68,69,70,71,72,73,88,7,6,2,8,9,10,11,12,13,14,15,3,4,19,16,17,18,20,21,22,5,23,24,25,26,27,1,28,30,29,31]},"version":"4.7.0-dev.20220505"}
package/lib/index.d.ts CHANGED
@@ -9,7 +9,7 @@ import type { Options as InputOptions } from "./modules/input.js";
9
9
  import type { Options as PerformanceOptions } from "./modules/performance.js";
10
10
  import type { Options as TimingOptions } from "./modules/timing.js";
11
11
  import type { StartOptions } from './app/index.js';
12
- import type { OnStartInfo } from './app/index.js';
12
+ import type { StartPromiseReturn } from './app/index.js';
13
13
  export declare type Options = Partial<AppOptions & ConsoleOptions & ExceptionOptions & InputOptions & PerformanceOptions & TimingOptions> & {
14
14
  projectID?: number;
15
15
  projectKey: string;
@@ -24,7 +24,7 @@ export default class API {
24
24
  constructor(options: Options);
25
25
  use<T>(fn: (app: App | null, options?: Options) => T): T;
26
26
  isActive(): boolean;
27
- start(startOpts?: Partial<StartOptions>): Promise<OnStartInfo>;
27
+ start(startOpts?: Partial<StartOptions>): Promise<StartPromiseReturn>;
28
28
  stop(): void;
29
29
  getSessionToken(): string | null | undefined;
30
30
  getSessionID(): string | null | undefined;
package/lib/index.js CHANGED
@@ -123,7 +123,7 @@ export default class API {
123
123
  // no-cors issue only with text/plain or not-set Content-Type
124
124
  // req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
125
125
  req.send(JSON.stringify({
126
- trackerVersion: '3.5.11',
126
+ trackerVersion: '3.5.13',
127
127
  projectKey: options.projectKey,
128
128
  doNotTrack,
129
129
  // TODO: add precise reason (an exact API missing)
@@ -154,7 +154,7 @@ export default class API {
154
154
  if (this.app === null) {
155
155
  return;
156
156
  }
157
- this.app.stop();
157
+ this.app.stop(true);
158
158
  }
159
159
  getSessionToken() {
160
160
  if (this.app === null) {
@@ -1,4 +1,4 @@
1
- import App from "../app/index.js";
1
+ import type App from "../app/index.js";
2
2
  export interface Options {
3
3
  consoleMethods: Array<string> | null;
4
4
  consoleThrottling: number;
@@ -1,3 +1,4 @@
1
+ import { hasTag } from "../app/guards.js";
1
2
  import { IN_BROWSER } from "../utils.js";
2
3
  import { ConsoleLog } from "../common/messages.js";
3
4
  const printError = IN_BROWSER && 'InstallTrigger' in window // detect Firefox
@@ -113,7 +114,7 @@ export default function (app, opts) {
113
114
  });
114
115
  patchConsole(window.console);
115
116
  app.nodes.attachNodeCallback(app.safe(node => {
116
- if (node instanceof HTMLIFrameElement) {
117
+ if (hasTag(node, "IFRAME")) { // TODO: newContextCallback
117
118
  let context = node.contentWindow;
118
119
  if (context) {
119
120
  patchConsole(context.console);
@@ -1,2 +1,2 @@
1
- import App from "../app/index.js";
1
+ import type App from "../app/index.js";
2
2
  export default function (app: App | null): void;
@@ -1,4 +1,5 @@
1
1
  import { CSSInsertRuleURLBased, CSSDeleteRule, TechnicalInfo } from "../common/messages.js";
2
+ import { hasTag } from "../app/guards.js";
2
3
  export default function (app) {
3
4
  if (app === null) {
4
5
  return;
@@ -30,10 +31,7 @@ export default function (app) {
30
31
  return deleteRule.call(this, index);
31
32
  };
32
33
  app.nodes.attachNodeCallback((node) => {
33
- if (!(node instanceof HTMLStyleElement)) {
34
- return;
35
- }
36
- if (!(node.sheet instanceof CSSStyleSheet)) {
34
+ if (!hasTag(node, "STYLE") || !node.sheet) {
37
35
  return;
38
36
  }
39
37
  if (node.textContent !== null && node.textContent.trim().length > 0) {
@@ -1,5 +1,5 @@
1
+ import type App from "../app/index.js";
1
2
  import type Message from "../common/messages.js";
2
- import App from "../app/index.js";
3
3
  export interface Options {
4
4
  captureExceptions: boolean;
5
5
  }
@@ -1,2 +1,2 @@
1
- import App from "../app/index.js";
1
+ import type App from "../app/index.js";
2
2
  export default function (app: App): void;
@@ -1,5 +1,6 @@
1
1
  import { timestamp, isURL } from "../utils.js";
2
2
  import { ResourceTiming, SetNodeAttributeURLBased, SetNodeAttribute } from "../common/messages.js";
3
+ import { hasTag } from "../app/guards.js";
3
4
  const PLACEHOLDER_SRC = "https://static.openreplay.com/tracker/placeholder.jpeg";
4
5
  export default function (app) {
5
6
  function sendPlaceholder(id, node) {
@@ -17,7 +18,7 @@ export default function (app) {
17
18
  if (id === undefined) {
18
19
  return;
19
20
  }
20
- const { src, complete, naturalWidth, naturalHeight } = this;
21
+ const { src, complete, naturalWidth, naturalHeight, srcset } = this;
21
22
  if (!complete) {
22
23
  return;
23
24
  }
@@ -31,28 +32,35 @@ export default function (app) {
31
32
  }
32
33
  else {
33
34
  app.send(new SetNodeAttributeURLBased(id, 'src', src, app.getBaseHref()));
35
+ srcset && app.send(new SetNodeAttribute(id, 'srcset', srcset));
34
36
  }
35
37
  });
36
38
  const observer = new MutationObserver((mutations) => {
37
39
  for (const mutation of mutations) {
38
- if (mutation.type === "attributes" && mutation.attributeName === "src") {
40
+ if (mutation.type === "attributes") {
39
41
  const target = mutation.target;
40
42
  const id = app.nodes.getID(target);
41
43
  if (id === undefined) {
42
44
  return;
43
45
  }
44
- const src = target.src;
45
- app.send(new SetNodeAttributeURLBased(id, 'src', src, app.getBaseHref()));
46
+ if (mutation.attributeName === "src") {
47
+ const src = target.src;
48
+ app.send(new SetNodeAttributeURLBased(id, 'src', src, app.getBaseHref()));
49
+ }
50
+ if (mutation.attributeName === "srcset") {
51
+ const srcset = target.srcset;
52
+ app.send(new SetNodeAttribute(id, 'srcset', srcset));
53
+ }
46
54
  }
47
55
  }
48
56
  });
49
57
  app.nodes.attachNodeCallback((node) => {
50
- if (!(node instanceof HTMLImageElement)) {
58
+ if (!hasTag(node, "IMG")) {
51
59
  return;
52
60
  }
53
61
  app.nodes.attachElementListener('error', node, sendImgSrc);
54
62
  app.nodes.attachElementListener('load', node, sendImgSrc);
55
63
  sendImgSrc.call(node);
56
- observer.observe(node, { attributes: true });
64
+ observer.observe(node, { attributes: true, attributeFilter: ["src", "srcset"] });
57
65
  });
58
66
  }
@@ -1,4 +1,4 @@
1
- import App from "../app/index.js";
1
+ import type App from "../app/index.js";
2
2
  declare type TextEditableElement = HTMLInputElement | HTMLTextAreaElement;
3
3
  export declare function getInputLabel(node: TextEditableElement): string;
4
4
  export declare const enum InputMode {
@@ -10,6 +10,7 @@ export interface Options {
10
10
  obscureInputNumbers: boolean;
11
11
  obscureInputEmails: boolean;
12
12
  defaultInputMode: InputMode;
13
+ obscureInputDates: boolean;
13
14
  }
14
15
  export default function (app: App, opts: Partial<Options>): void;
15
16
  export {};
@@ -1,22 +1,18 @@
1
1
  import { normSpaces, IN_BROWSER, getLabelAttribute, hasOpenreplayAttribute, } from "../utils.js";
2
+ import { hasTag } from "../app/guards.js";
2
3
  import { SetInputTarget, SetInputValue, SetInputChecked } from "../common/messages.js";
4
+ const INPUT_TYPES = ['text', 'password', 'email', 'search', 'number', 'range', 'date'];
3
5
  function isTextEditable(node) {
4
- if (node instanceof HTMLTextAreaElement) {
6
+ if (hasTag(node, "TEXTAREA")) {
5
7
  return true;
6
8
  }
7
- if (!(node instanceof HTMLInputElement)) {
9
+ if (!hasTag(node, "INPUT")) {
8
10
  return false;
9
11
  }
10
- const type = node.type;
11
- return (type === 'text' ||
12
- type === 'password' ||
13
- type === 'email' ||
14
- type === 'search' ||
15
- type === 'number' ||
16
- type === 'range');
12
+ return INPUT_TYPES.includes(node.type);
17
13
  }
18
14
  function isCheckable(node) {
19
- if (!(node instanceof HTMLInputElement)) {
15
+ if (!hasTag(node, "INPUT")) {
20
16
  return false;
21
17
  }
22
18
  const type = node.type;
@@ -26,7 +22,7 @@ const labelElementFor = IN_BROWSER && 'labels' in HTMLInputElement.prototype
26
22
  ? (node) => {
27
23
  let p = node;
28
24
  while ((p = p.parentNode) !== null) {
29
- if (p instanceof HTMLLabelElement) {
25
+ if (hasTag(p, "LABEL")) {
30
26
  return p;
31
27
  }
32
28
  }
@@ -38,7 +34,7 @@ const labelElementFor = IN_BROWSER && 'labels' in HTMLInputElement.prototype
38
34
  : (node) => {
39
35
  let p = node;
40
36
  while ((p = p.parentNode) !== null) {
41
- if (p instanceof HTMLLabelElement) {
37
+ if (hasTag(p, "LABEL")) {
42
38
  return p;
43
39
  }
44
40
  }
@@ -67,7 +63,8 @@ export default function (app, opts) {
67
63
  const options = Object.assign({
68
64
  obscureInputNumbers: true,
69
65
  obscureInputEmails: true,
70
- defaultInputMode: 0 /* Plain */,
66
+ defaultInputMode: 0 /* InputMode.Plain */,
67
+ obscureInputDates: false,
71
68
  }, opts);
72
69
  function sendInputTarget(id, node) {
73
70
  const label = getInputLabel(node);
@@ -79,22 +76,23 @@ export default function (app, opts) {
79
76
  let value = node.value;
80
77
  let inputMode = options.defaultInputMode;
81
78
  if (node.type === 'password' || hasOpenreplayAttribute(node, 'hidden')) {
82
- inputMode = 2 /* Hidden */;
79
+ inputMode = 2 /* InputMode.Hidden */;
83
80
  }
84
81
  else if (hasOpenreplayAttribute(node, 'obscured') ||
85
- (inputMode === 0 /* Plain */ &&
86
- ((options.obscureInputNumbers && /\d\d\d\d/.test(value)) ||
82
+ (inputMode === 0 /* InputMode.Plain */ &&
83
+ ((options.obscureInputNumbers && node.type !== 'date' && /\d\d\d\d/.test(value)) ||
84
+ (options.obscureInputDates && node.type === 'date') ||
87
85
  (options.obscureInputEmails &&
88
86
  (node.type === 'email' || !!~value.indexOf('@')))))) {
89
- inputMode = 1 /* Obscured */;
87
+ inputMode = 1 /* InputMode.Obscured */;
90
88
  }
91
89
  let mask = 0;
92
90
  switch (inputMode) {
93
- case 2 /* Hidden */:
91
+ case 2 /* InputMode.Hidden */:
94
92
  mask = -1;
95
93
  value = '';
96
94
  break;
97
- case 1 /* Obscured */:
95
+ case 1 /* InputMode.Obscured */:
98
96
  mask = value.length;
99
97
  value = '';
100
98
  break;
@@ -144,7 +142,7 @@ export default function (app, opts) {
144
142
  return;
145
143
  }
146
144
  // TODO: support multiple select (?): use selectedOptions; Need send target?
147
- if (node instanceof HTMLSelectElement) {
145
+ if (hasTag(node, "SELECT")) {
148
146
  sendInputValue(id, node);
149
147
  app.attachEventListener(node, "change", () => {
150
148
  sendInputValue(id, node);
@@ -1,2 +1,2 @@
1
- import App from "../app/index.js";
1
+ import type App from "../app/index.js";
2
2
  export default function (app: App): void;
@@ -1,2 +1,2 @@
1
- import App from "../app/index.js";
1
+ import type App from "../app/index.js";
2
2
  export default function (app: App): void;
@@ -1,3 +1,4 @@
1
+ import { hasTag, isSVGElement } from "../app/guards.js";
1
2
  import { normSpaces, hasOpenreplayAttribute, getLabelAttribute, } from "../utils.js";
2
3
  import { MouseMove, MouseClick } from "../common/messages.js";
3
4
  import { getInputLabel } from "./input.js";
@@ -47,7 +48,7 @@ function _getTarget(target) {
47
48
  }
48
49
  element = element.parentElement;
49
50
  }
50
- if (target instanceof SVGElement) {
51
+ if (isSVGElement(target)) {
51
52
  let owner = target.ownerSVGElement;
52
53
  while (owner !== null) {
53
54
  target = owner;
@@ -77,7 +78,7 @@ export default function (app) {
77
78
  if (dl !== null) {
78
79
  return dl;
79
80
  }
80
- if (target instanceof HTMLInputElement) {
81
+ if (hasTag(target, "INPUT")) {
81
82
  return getInputLabel(target);
82
83
  }
83
84
  if (isClickable(target)) {
@@ -1,4 +1,4 @@
1
- import App from "../app/index.js";
1
+ import type App from "../app/index.js";
2
2
  export declare const deviceMemory: number;
3
3
  export declare const jsHeapSizeLimit: number;
4
4
  export interface Options {
@@ -1,2 +1,2 @@
1
- import App from "../app/index.js";
1
+ import type App from "../app/index.js";
2
2
  export default function (app: App): void;
@@ -1,4 +1,5 @@
1
1
  import { SetViewportScroll, SetNodeScroll } from "../common/messages.js";
2
+ import { isElementNode } from "../app/guards.js";
2
3
  export default function (app) {
3
4
  let documentScroll = false;
4
5
  const nodeScroll = new Map();
@@ -20,8 +21,8 @@ export default function (app) {
20
21
  documentScroll = false;
21
22
  nodeScroll.clear();
22
23
  });
23
- app.nodes.attachNodeCallback(node => {
24
- if (node instanceof Element && node.scrollLeft + node.scrollTop > 0) {
24
+ app.nodes.attachNodeCallback((node, isStart) => {
25
+ if (isStart && isElementNode(node) && node.scrollLeft + node.scrollTop > 0) {
25
26
  nodeScroll.set(node, [node.scrollLeft, node.scrollTop]);
26
27
  }
27
28
  });
@@ -1,4 +1,4 @@
1
- import App from "../app/index.js";
1
+ import type App from "../app/index.js";
2
2
  export interface Options {
3
3
  captureResourceTimings: boolean;
4
4
  capturePageLoadTimings: boolean;