@croct/sdk 0.16.2 → 0.17.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.
Files changed (83) hide show
  1. package/cache/cookieCache.d.ts +1 -1
  2. package/cache/cookieCache.js +12 -2
  3. package/cache/cookieCache.js.map +1 -1
  4. package/channel/channel.d.ts +7 -0
  5. package/channel/channel.js +23 -0
  6. package/channel/channel.js.map +1 -1
  7. package/channel/guaranteedChannel.js +4 -3
  8. package/channel/guaranteedChannel.js.map +1 -1
  9. package/channel/httpBeaconChannel.d.ts +23 -0
  10. package/channel/httpBeaconChannel.js +89 -0
  11. package/channel/httpBeaconChannel.js.map +1 -0
  12. package/channel/index.d.ts +1 -2
  13. package/channel/index.js +3 -5
  14. package/channel/index.js.map +1 -1
  15. package/channel/queuedChannel.js +5 -4
  16. package/channel/queuedChannel.js.map +1 -1
  17. package/channel/retryChannel.js +8 -4
  18. package/channel/retryChannel.js.map +1 -1
  19. package/channel/sandboxChannel.js +4 -0
  20. package/channel/sandboxChannel.js.map +1 -1
  21. package/constants.d.ts +2 -2
  22. package/constants.js +1 -1
  23. package/container.d.ts +3 -0
  24. package/container.js +15 -14
  25. package/container.js.map +1 -1
  26. package/contentFetcher.d.ts +3 -4
  27. package/contentFetcher.js +37 -27
  28. package/contentFetcher.js.map +1 -1
  29. package/evaluator.d.ts +2 -4
  30. package/evaluator.js +47 -39
  31. package/evaluator.js.map +1 -1
  32. package/facade/contentFetcherFacade.d.ts +1 -6
  33. package/facade/contentFetcherFacade.js +2 -5
  34. package/facade/contentFetcherFacade.js.map +1 -1
  35. package/facade/sdkFacade.d.ts +3 -6
  36. package/facade/sdkFacade.js +3 -7
  37. package/facade/sdkFacade.js.map +1 -1
  38. package/help.d.ts +3 -0
  39. package/help.js +26 -0
  40. package/help.js.map +1 -0
  41. package/package.json +1 -3
  42. package/queue/persistentQueue.d.ts +1 -3
  43. package/queue/persistentQueue.js +9 -16
  44. package/queue/persistentQueue.js.map +1 -1
  45. package/schema/eventSchemas.js +0 -16
  46. package/schema/eventSchemas.js.map +1 -1
  47. package/schema/sdkFacadeSchemas.js +5 -1
  48. package/schema/sdkFacadeSchemas.js.map +1 -1
  49. package/schema/sdkSchemas.js +7 -0
  50. package/schema/sdkSchemas.js.map +1 -1
  51. package/sdk.d.ts +2 -0
  52. package/sdk.js +1 -2
  53. package/sdk.js.map +1 -1
  54. package/src/cache/cookieCache.ts +13 -2
  55. package/src/channel/channel.ts +32 -0
  56. package/src/channel/guaranteedChannel.ts +4 -4
  57. package/src/channel/httpBeaconChannel.ts +128 -0
  58. package/src/channel/index.ts +1 -2
  59. package/src/channel/queuedChannel.ts +5 -5
  60. package/src/channel/retryChannel.ts +9 -5
  61. package/src/channel/sandboxChannel.ts +5 -1
  62. package/src/container.ts +17 -19
  63. package/src/contentFetcher.ts +41 -29
  64. package/src/evaluator.ts +74 -65
  65. package/src/facade/contentFetcherFacade.ts +2 -11
  66. package/src/facade/sdkFacade.ts +5 -14
  67. package/src/help.ts +24 -0
  68. package/src/queue/persistentQueue.ts +11 -22
  69. package/src/schema/eventSchemas.ts +0 -16
  70. package/src/schema/sdkFacadeSchemas.ts +14 -2
  71. package/src/schema/sdkSchemas.ts +7 -0
  72. package/src/sdk.ts +3 -2
  73. package/src/trackingEvents.ts +0 -4
  74. package/trackingEvents.d.ts +0 -4
  75. package/trackingEvents.js.map +1 -1
  76. package/channel/beaconSocketChannel.d.ts +0 -37
  77. package/channel/beaconSocketChannel.js +0 -83
  78. package/channel/beaconSocketChannel.js.map +0 -1
  79. package/channel/socketChannel.d.ts +0 -31
  80. package/channel/socketChannel.js +0 -145
  81. package/channel/socketChannel.js.map +0 -1
  82. package/src/channel/beaconSocketChannel.ts +0 -153
  83. package/src/channel/socketChannel.ts +0 -217
@@ -10,7 +10,7 @@ class PersistentQueue {
10
10
  return this.queue.slice();
11
11
  }
12
12
  getCapacity() {
13
- return Infinity;
13
+ return Number.MAX_SAFE_INTEGER;
14
14
  }
15
15
  isEmpty() {
16
16
  return this.length() === 0;
@@ -19,8 +19,7 @@ class PersistentQueue {
19
19
  return this.queue.length;
20
20
  }
21
21
  push(value) {
22
- this.queue.push(value);
23
- this.flush();
22
+ this.save([...this.queue, value]);
24
23
  }
25
24
  peek() {
26
25
  const item = this.queue[0];
@@ -30,24 +29,15 @@ class PersistentQueue {
30
29
  return item;
31
30
  }
32
31
  shift() {
33
- const value = this.queue.shift();
32
+ const queue = [...this.queue];
33
+ const value = queue.shift();
34
34
  if (value === undefined) {
35
35
  throw new Error('The queue is empty.');
36
36
  }
37
- this.flush();
37
+ this.save(queue);
38
38
  return value;
39
39
  }
40
40
  get queue() {
41
- if (this.cache === undefined) {
42
- this.cache = this.load();
43
- }
44
- return this.cache;
45
- }
46
- flush() {
47
- var _a;
48
- this.storage.setItem(this.key, JSON.stringify((_a = this.cache) !== null && _a !== void 0 ? _a : []));
49
- }
50
- load() {
51
41
  const data = this.storage.getItem(this.key);
52
42
  if (data === null) {
53
43
  return [];
@@ -55,10 +45,13 @@ class PersistentQueue {
55
45
  try {
56
46
  return JSON.parse(data);
57
47
  }
58
- catch (error) {
48
+ catch {
59
49
  return [];
60
50
  }
61
51
  }
52
+ save(data) {
53
+ this.storage.setItem(this.key, JSON.stringify(data));
54
+ }
62
55
  }
63
56
  exports.PersistentQueue = PersistentQueue;
64
57
  //# sourceMappingURL=persistentQueue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistentQueue.js","sourceRoot":"","sources":["../src/queue/persistentQueue.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAOxB,YAAmB,OAAgB,EAAE,GAAG,GAAG,OAAO;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAEM,GAAG;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEM,WAAW;QACd,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEM,MAAM;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IAEM,IAAI,CAAC,KAAQ;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvB,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAEM,IAAI;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAY,KAAK;QACb,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAEO,KAAK;;QACT,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAEO,IAAI;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;CACJ;AAjFD,0CAiFC"}
1
+ {"version":3,"file":"persistentQueue.js","sourceRoot":"","sources":["../src/queue/persistentQueue.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAKxB,YAAmB,OAAgB,EAAE,GAAG,GAAG,OAAO;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAEM,GAAG;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEM,WAAW;QACd,OAAO,MAAM,CAAC,gBAAgB,CAAC;IACnC,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEM,MAAM;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IAEM,IAAI,CAAC,KAAQ;QAChB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE3B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK;QACR,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAE5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAY,KAAK;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAEO,IAAI,CAAC,IAAS;QAClB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;CACJ;AAtED,0CAsEC"}
@@ -98,22 +98,6 @@ exports.eventOccurred = new validation_1.ObjectType({
98
98
  minLength: 1,
99
99
  maxLength: 50,
100
100
  }),
101
- testId: new validation_1.StringType({
102
- minLength: 1,
103
- maxLength: 50,
104
- }),
105
- groupId: new validation_1.StringType({
106
- minLength: 1,
107
- maxLength: 50,
108
- }),
109
- personalizationId: new validation_1.StringType({
110
- minLength: 1,
111
- maxLength: 50,
112
- }),
113
- audience: new validation_1.StringType({
114
- minLength: 1,
115
- maxLength: 50,
116
- }),
117
101
  details: new validation_1.ObjectType({
118
102
  additionalProperties: new validation_1.UnionType(new validation_1.NullType(), new validation_1.BooleanType(), new validation_1.NumberType(), new validation_1.StringType({
119
103
  maxLength: 300,
@@ -1 +1 @@
1
- {"version":3,"file":"eventSchemas.js","sourceRoot":"","sources":["../src/schema/eventSchemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eventSchemas.js","sourceRoot":"","sources":["../src/schema/eventSchemas.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,11 @@ exports.sdkFacadeConfigurationSchema = new validation_1.ObjectType({
41
41
  previewToken: sdkSchemas_1.cookieOptionsSchema,
42
42
  },
43
43
  }),
44
- preferredLocale: new validation_1.StringType({
44
+ defaultFetchTimeout: new validation_1.NumberType({
45
+ integer: true,
46
+ minimum: 1,
47
+ }),
48
+ defaultPreferredLocale: new validation_1.StringType({
45
49
  pattern: /^[a-z]{2,3}([-_][a-z]{2,3})?$/i,
46
50
  }),
47
51
  },
@@ -1 +1 @@
1
- {"version":3,"file":"sdkFacadeSchemas.js","sourceRoot":"","sources":["../src/schema/sdkFacadeSchemas.ts"],"names":[],"mappings":";;;AAAA,8CAAqG;AACrG,qDAAkD;AAClD,6CAAsE;AACtE,iDAA4C;AAE/B,QAAA,4BAA4B,GAAG,IAAI,uBAAU,CAAC;IACvD,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,UAAU,EAAE;QACR,KAAK,EAAE,IAAI,uBAAU,CAAC;YAClB,MAAM,EAAE,MAAM;SACjB,CAAC;QACF,QAAQ,EAAE,IAAI,uBAAU,CAAC;YACrB,OAAO,EAAE,iBAAiB;SAC7B,CAAC;QACF,UAAU,EAAE,iCAAgB;QAC5B,mBAAmB,EAAE,IAAI,wBAAW,EAAE;QACtC,KAAK,EAAE,IAAI,wBAAW,EAAE;QACxB,IAAI,EAAE,IAAI,wBAAW,EAAE;QACvB,KAAK,EAAE,IAAI,wBAAW,EAAE;QACxB,MAAM,EAAE,2BAAY;QACpB,YAAY,EAAE,IAAI,yBAAY,EAAE;QAChC,aAAa,EAAE,gCAAmB;QAClC,MAAM,EAAE,IAAI,sBAAS,CACjB,IAAI,uBAAU,CAAC;YACX,SAAS,EAAE,CAAC;SACf,CAAC,EACF,IAAI,qBAAQ,EAAE,CACjB;QACD,KAAK,EAAE,IAAI,sBAAS,CAChB,IAAI,uBAAU,CAAC;YACX,OAAO,EAAE,yDAAyD;SACrE,CAAC,EACF,IAAI,qBAAQ,EAAE,CACjB;QACD,eAAe,EAAE,IAAI,uBAAU,CAAC;YAC5B,MAAM,EAAE,KAAK;SAChB,CAAC;QACF,sBAAsB,EAAE,IAAI,uBAAU,CAAC;YACnC,MAAM,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,EAAE,IAAI,uBAAU,CAAC;YACnB,UAAU,EAAE;gBACR,QAAQ,EAAE,gCAAmB;gBAC7B,SAAS,EAAE,gCAAmB;gBAC9B,YAAY,EAAE,gCAAmB;aACpC;SACJ,CAAC;QACF,eAAe,EAAE,IAAI,uBAAU,CAAC;YAC5B,OAAO,EAAE,gCAAgC;SAC5C,CAAC;KACL;CACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"sdkFacadeSchemas.js","sourceRoot":"","sources":["../src/schema/sdkFacadeSchemas.ts"],"names":[],"mappings":";;;AAAA,8CAQuB;AACvB,qDAAkD;AAClD,6CAAsE;AACtE,iDAA4C;AAE/B,QAAA,4BAA4B,GAAG,IAAI,uBAAU,CAAC;IACvD,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,UAAU,EAAE;QACR,KAAK,EAAE,IAAI,uBAAU,CAAC;YAClB,MAAM,EAAE,MAAM;SACjB,CAAC;QACF,QAAQ,EAAE,IAAI,uBAAU,CAAC;YACrB,OAAO,EAAE,iBAAiB;SAC7B,CAAC;QACF,UAAU,EAAE,iCAAgB;QAC5B,mBAAmB,EAAE,IAAI,wBAAW,EAAE;QACtC,KAAK,EAAE,IAAI,wBAAW,EAAE;QACxB,IAAI,EAAE,IAAI,wBAAW,EAAE;QACvB,KAAK,EAAE,IAAI,wBAAW,EAAE;QACxB,MAAM,EAAE,2BAAY;QACpB,YAAY,EAAE,IAAI,yBAAY,EAAE;QAChC,aAAa,EAAE,gCAAmB;QAClC,MAAM,EAAE,IAAI,sBAAS,CACjB,IAAI,uBAAU,CAAC;YACX,SAAS,EAAE,CAAC;SACf,CAAC,EACF,IAAI,qBAAQ,EAAE,CACjB;QACD,KAAK,EAAE,IAAI,sBAAS,CAChB,IAAI,uBAAU,CAAC;YACX,OAAO,EAAE,yDAAyD;SACrE,CAAC,EACF,IAAI,qBAAQ,EAAE,CACjB;QACD,eAAe,EAAE,IAAI,uBAAU,CAAC;YAC5B,MAAM,EAAE,KAAK;SAChB,CAAC;QACF,sBAAsB,EAAE,IAAI,uBAAU,CAAC;YACnC,MAAM,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,EAAE,IAAI,uBAAU,CAAC;YACnB,UAAU,EAAE;gBACR,QAAQ,EAAE,gCAAmB;gBAC7B,SAAS,EAAE,gCAAmB;gBAC9B,YAAY,EAAE,gCAAmB;aACpC;SACJ,CAAC;QACF,mBAAmB,EAAE,IAAI,uBAAU,CAAC;YAChC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC;SACb,CAAC;QACF,sBAAsB,EAAE,IAAI,uBAAU,CAAC;YACnC,OAAO,EAAE,gCAAgC;SAC5C,CAAC;KACL;CACJ,CAAC,CAAC"}
@@ -71,6 +71,13 @@ exports.sdkConfigurationSchema = new validation_1.ObjectType({
71
71
  urlSanitizer: new validation_1.FunctionType(),
72
72
  eventMetadata: exports.eventMetadataSchema,
73
73
  eventProcessor: new validation_1.FunctionType(),
74
+ defaultFetchTimeout: new validation_1.NumberType({
75
+ integer: true,
76
+ minimum: 1,
77
+ }),
78
+ defaultPreferredLocale: new validation_1.StringType({
79
+ pattern: /^[a-z]{2,3}([-_][a-z]{2,3})?$/i,
80
+ }),
74
81
  },
75
82
  });
76
83
  //# sourceMappingURL=sdkSchemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdkSchemas.js","sourceRoot":"","sources":["../src/schema/sdkSchemas.ts"],"names":[],"mappings":";;;AAAA,8CAA4F;AAC5F,qDAAkD;AAClD,iDAA4C;AAE/B,QAAA,mBAAmB,GAAG,IAAI,uBAAU,CAAC;IAC9C,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,IAAI,uBAAU,CAAC;QAC1B,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,YAAY;KACvB,CAAC;IACF,oBAAoB,EAAE,IAAI,uBAAU,CAAC;QACjC,SAAS,EAAE,GAAG;KACjB,CAAC;CACL,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,IAAI,uBAAU,CAAC;IAC9C,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,UAAU,EAAE;QACR,IAAI,EAAE,IAAI,uBAAU,CAAC;YACjB,SAAS,EAAE,CAAC;SACf,CAAC;QACF,MAAM,EAAE,IAAI,uBAAU,CAAC;YACnB,SAAS,EAAE,CAAC;SACf,CAAC;QACF,IAAI,EAAE,IAAI,uBAAU,CAAC;YACjB,SAAS,EAAE,CAAC;SACf,CAAC;QACF,MAAM,EAAE,IAAI,wBAAW,EAAE;QACzB,QAAQ,EAAE,IAAI,uBAAU,CAAC;YACrB,WAAW,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC;SACzC,CAAC;QACF,MAAM,EAAE,IAAI,uBAAU,CAAC;YACnB,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,IAAI;SAChB,CAAC;KACL;CACJ,CAAC,CAAC;AAEU,QAAA,sBAAsB,GAAG,IAAI,uBAAU,CAAC;IACjD,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,CAAC;IACzE,UAAU,EAAE;QACR,KAAK,EAAE,IAAI,uBAAU,CAAC;YAClB,MAAM,EAAE,MAAM;SACjB,CAAC;QACF,QAAQ,EAAE,IAAI,uBAAU,CAAC;YACrB,OAAO,EAAE,iBAAiB;SAC7B,CAAC;QACF,UAAU,EAAE,iCAAgB;QAC5B,eAAe,EAAE,IAAI,uBAAU,CAAC;YAC5B,MAAM,EAAE,KAAK;SAChB,CAAC;QACF,sBAAsB,EAAE,IAAI,uBAAU,CAAC;YACnC,MAAM,EAAE,KAAK;SAChB,CAAC;QACF,eAAe,EAAE,IAAI,uBAAU,CAAC;YAC5B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,IAAI;SAChB,CAAC;QACF,mBAAmB,EAAE,IAAI,wBAAW,EAAE;QACtC,MAAM,EAAE,IAAI,uBAAU,CAAC;YACnB,UAAU,EAAE;gBACR,QAAQ,EAAE,2BAAmB;gBAC7B,SAAS,EAAE,2BAAmB;gBAC9B,YAAY,EAAE,2BAAmB;aACpC;SACJ,CAAC;QACF,KAAK,EAAE,IAAI,wBAAW,EAAE;QACxB,IAAI,EAAE,IAAI,wBAAW,EAAE;QACvB,MAAM,EAAE,2BAAY;QACpB,YAAY,EAAE,IAAI,yBAAY,EAAE;QAChC,aAAa,EAAE,2BAAmB;QAClC,cAAc,EAAE,IAAI,yBAAY,EAAE;KACrC;CACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"sdkSchemas.js","sourceRoot":"","sources":["../src/schema/sdkSchemas.ts"],"names":[],"mappings":";;;AAAA,8CAA4F;AAC5F,qDAAkD;AAClD,iDAA4C;AAE/B,QAAA,mBAAmB,GAAG,IAAI,uBAAU,CAAC;IAC9C,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,IAAI,uBAAU,CAAC;QAC1B,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,YAAY;KACvB,CAAC;IACF,oBAAoB,EAAE,IAAI,uBAAU,CAAC;QACjC,SAAS,EAAE,GAAG;KACjB,CAAC;CACL,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,IAAI,uBAAU,CAAC;IAC9C,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,UAAU,EAAE;QACR,IAAI,EAAE,IAAI,uBAAU,CAAC;YACjB,SAAS,EAAE,CAAC;SACf,CAAC;QACF,MAAM,EAAE,IAAI,uBAAU,CAAC;YACnB,SAAS,EAAE,CAAC;SACf,CAAC;QACF,IAAI,EAAE,IAAI,uBAAU,CAAC;YACjB,SAAS,EAAE,CAAC;SACf,CAAC;QACF,MAAM,EAAE,IAAI,wBAAW,EAAE;QACzB,QAAQ,EAAE,IAAI,uBAAU,CAAC;YACrB,WAAW,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC;SACzC,CAAC;QACF,MAAM,EAAE,IAAI,uBAAU,CAAC;YACnB,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,IAAI;SAChB,CAAC;KACL;CACJ,CAAC,CAAC;AAEU,QAAA,sBAAsB,GAAG,IAAI,uBAAU,CAAC;IACjD,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,CAAC;IACzE,UAAU,EAAE;QACR,KAAK,EAAE,IAAI,uBAAU,CAAC;YAClB,MAAM,EAAE,MAAM;SACjB,CAAC;QACF,QAAQ,EAAE,IAAI,uBAAU,CAAC;YACrB,OAAO,EAAE,iBAAiB;SAC7B,CAAC;QACF,UAAU,EAAE,iCAAgB;QAC5B,eAAe,EAAE,IAAI,uBAAU,CAAC;YAC5B,MAAM,EAAE,KAAK;SAChB,CAAC;QACF,sBAAsB,EAAE,IAAI,uBAAU,CAAC;YACnC,MAAM,EAAE,KAAK;SAChB,CAAC;QACF,eAAe,EAAE,IAAI,uBAAU,CAAC;YAC5B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,IAAI;SAChB,CAAC;QACF,mBAAmB,EAAE,IAAI,wBAAW,EAAE;QACtC,MAAM,EAAE,IAAI,uBAAU,CAAC;YACnB,UAAU,EAAE;gBACR,QAAQ,EAAE,2BAAmB;gBAC7B,SAAS,EAAE,2BAAmB;gBAC9B,YAAY,EAAE,2BAAmB;aACpC;SACJ,CAAC;QACF,KAAK,EAAE,IAAI,wBAAW,EAAE;QACxB,IAAI,EAAE,IAAI,wBAAW,EAAE;QACvB,MAAM,EAAE,2BAAY;QACpB,YAAY,EAAE,IAAI,yBAAY,EAAE;QAChC,aAAa,EAAE,2BAAmB;QAClC,cAAc,EAAE,IAAI,yBAAY,EAAE;QAClC,mBAAmB,EAAE,IAAI,uBAAU,CAAC;YAChC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC;SACb,CAAC;QACF,sBAAsB,EAAE,IAAI,uBAAU,CAAC;YACnC,OAAO,EAAE,gCAAgC;SAC5C,CAAC;KACL;CACJ,CAAC,CAAC"}
package/sdk.d.ts CHANGED
@@ -31,6 +31,8 @@ export type Configuration = {
31
31
  previewToken?: CookieCacheConfiguration;
32
32
  };
33
33
  eventProcessor?: DependencyResolver<TrackingEventProcessor>;
34
+ defaultFetchTimeout?: number;
35
+ defaultPreferredLocale?: string;
34
36
  };
35
37
  export declare class Sdk {
36
38
  private container;
package/sdk.js CHANGED
@@ -31,12 +31,11 @@ class Sdk {
31
31
  eventMetadata[`custom_${metadata}`] = customMetadata[metadata];
32
32
  }
33
33
  const baseHttpEndpoint = baseEndpointUrl.replace(/\/+$/, '');
34
- const baseWsEndpoint = baseHttpEndpoint.replace(/^http/i, 'ws');
35
34
  const container = new container_1.Container({
36
35
  ...containerConfiguration,
37
36
  evaluationBaseEndpointUrl: baseHttpEndpoint,
38
37
  contentBaseEndpointUrl: baseHttpEndpoint,
39
- trackerEndpointUrl: `${baseWsEndpoint}/client/web/connect`,
38
+ trackerEndpointUrl: `${baseHttpEndpoint}/client/web/track`,
40
39
  cidAssignerEndpointUrl: cidAssignerEndpointUrl !== null && cidAssignerEndpointUrl !== void 0 ? cidAssignerEndpointUrl : `${baseHttpEndpoint}/client/web/cid`,
41
40
  beaconQueueSize: (_a = containerConfiguration.beaconQueueSize) !== null && _a !== void 0 ? _a : 100,
42
41
  eventMetadata: eventMetadata,
package/sdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["src/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["src/sdk.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,19 @@ export type CookieCacheConfiguration = {
12
12
  export class CookieCache implements Cache {
13
13
  private readonly config: CookieCacheConfiguration;
14
14
 
15
- public constructor(config: CookieCacheConfiguration) {
16
- this.config = config;
15
+ public constructor(config: CookieCacheConfiguration, defaultSecure = window.location.protocol === 'https:') {
16
+ this.config = {
17
+ ...config,
18
+ path: config.path ?? '/',
19
+ };
20
+
21
+ if (defaultSecure && this.config.secure === undefined) {
22
+ this.config.secure = true;
23
+ }
24
+
25
+ if (this.config.secure === true && this.config.sameSite === undefined) {
26
+ this.config.sameSite = 'none';
27
+ }
17
28
  }
18
29
 
19
30
  public get(): string | null {
@@ -1,3 +1,35 @@
1
+ import {formatMessage} from '../error';
2
+
3
+ export class MessageDeliveryError extends Error {
4
+ public readonly retryable: boolean;
5
+
6
+ public constructor(message: string, retryable: boolean) {
7
+ super(message);
8
+
9
+ this.retryable = retryable;
10
+
11
+ Object.setPrototypeOf(this, MessageDeliveryError.prototype);
12
+ }
13
+
14
+ public static retryable(cause: unknown): MessageDeliveryError {
15
+ return MessageDeliveryError.fromCause(cause, true);
16
+ }
17
+
18
+ public static nonRetryable(cause: unknown): MessageDeliveryError {
19
+ return MessageDeliveryError.fromCause(cause, false);
20
+ }
21
+
22
+ private static fromCause(cause: unknown, retryable: boolean): MessageDeliveryError {
23
+ const error = new MessageDeliveryError(formatMessage(cause), retryable);
24
+
25
+ if (cause instanceof Error) {
26
+ error.stack = cause.stack;
27
+ }
28
+
29
+ return error;
30
+ }
31
+ }
32
+
1
33
  export interface Closeable {
2
34
  close(): Promise<void>;
3
35
  }
@@ -1,5 +1,5 @@
1
1
  import {Logger, NullLogger} from '../logging';
2
- import {DuplexChannel, OutputChannel} from './channel';
2
+ import {DuplexChannel, MessageDeliveryError, OutputChannel} from './channel';
3
3
 
4
4
  export type MessageStamper<M, S> = {
5
5
  generate(message: M): S,
@@ -49,7 +49,7 @@ export class GuaranteedChannel<M, S> implements OutputChannel<M> {
49
49
 
50
50
  public publish(message: M): Promise<void> {
51
51
  if (this.closed) {
52
- return Promise.reject(new Error('Channel is closed.'));
52
+ return Promise.reject(MessageDeliveryError.nonRetryable('Channel is closed.'));
53
53
  }
54
54
 
55
55
  return new Promise((resolve, reject): void => {
@@ -99,7 +99,7 @@ export class GuaranteedChannel<M, S> implements OutputChannel<M> {
99
99
  () => {
100
100
  if (this.closed) {
101
101
  // Cancel delay immediately when the channel is closed
102
- abort(new Error('Connection deliberately closed.'));
102
+ abort(MessageDeliveryError.nonRetryable('Connection deliberately closed.'));
103
103
  }
104
104
  },
105
105
  0,
@@ -109,7 +109,7 @@ export class GuaranteedChannel<M, S> implements OutputChannel<M> {
109
109
 
110
110
  timeoutTimer = window.setTimeout(
111
111
  () => {
112
- abort(new Error('Maximum confirmation time reached.'));
112
+ abort(MessageDeliveryError.retryable('Maximum confirmation time reached.'));
113
113
  },
114
114
  this.options.ackTimeout,
115
115
  );
@@ -0,0 +1,128 @@
1
+ import {ChannelListener, DuplexChannel, MessageDeliveryError} from './channel';
2
+ import {Envelope} from './guaranteedChannel';
3
+ import {Logger, NullLogger} from '../logging';
4
+ import {CidAssigner} from '../cid';
5
+ import {formatMessage} from '../error';
6
+ import {CLIENT_LIBRARY} from '../constants';
7
+ import {Help} from '../help';
8
+
9
+ export type Configuration = {
10
+ appId: string,
11
+ endpointUrl: string,
12
+ cidAssigner: CidAssigner,
13
+ logger?: Logger,
14
+ };
15
+
16
+ type ApiProblem = {
17
+ type: string,
18
+ title: string,
19
+ status: number,
20
+ detail: string,
21
+ };
22
+
23
+ export class HttpBeaconChannel implements DuplexChannel<string, Envelope<string, string>> {
24
+ private readonly configuration: Omit<Configuration, 'logger'>;
25
+
26
+ private readonly logger: Logger;
27
+
28
+ private readonly listeners: Array<ChannelListener<string>> = [];
29
+
30
+ private closed = false;
31
+
32
+ public constructor({logger = new NullLogger(), ...configuration}: Configuration) {
33
+ this.configuration = configuration;
34
+ this.logger = logger;
35
+ }
36
+
37
+ public async publish({id: receiptId, message}: Envelope<string, string>): Promise<void> {
38
+ if (this.closed) {
39
+ return Promise.reject(MessageDeliveryError.nonRetryable('Channel is closed'));
40
+ }
41
+
42
+ const {token, timestamp, context, payload} = JSON.parse(message);
43
+ const {endpointUrl, appId, cidAssigner} = this.configuration;
44
+
45
+ return fetch(endpointUrl, {
46
+ method: 'POST',
47
+ headers: {
48
+ 'X-App-Id': appId,
49
+ 'X-Client-Id': await cidAssigner.assignCid(),
50
+ 'X-Client-Library': CLIENT_LIBRARY,
51
+ 'Content-Type': 'application/json',
52
+ ...(token !== undefined ? {'X-Token': token} : {}),
53
+ },
54
+ body: JSON.stringify({
55
+ context: context,
56
+ payload: payload,
57
+ originalTime: timestamp,
58
+ departureTime: Date.now(),
59
+ }),
60
+ }).then(async response => {
61
+ if (response.ok) {
62
+ this.notify(receiptId);
63
+
64
+ return;
65
+ }
66
+
67
+ const problem: ApiProblem = await response.json().catch(
68
+ () => ({
69
+ type: 'https://croct.help/api/event-tracker#unexpected-error',
70
+ title: response.statusText,
71
+ status: response.status,
72
+ }),
73
+ );
74
+
75
+ const isRetryable = HttpBeaconChannel.isRetryable(problem.status);
76
+ const help = Help.forStatusCode(problem.status);
77
+
78
+ if (help !== undefined) {
79
+ this.logger.error(help);
80
+ } else if (!isRetryable) {
81
+ this.logger.error(`Beacon rejected with non-retryable status: ${problem.title}`);
82
+ }
83
+
84
+ return Promise.reject(
85
+ isRetryable
86
+ ? MessageDeliveryError.retryable(problem.title)
87
+ : MessageDeliveryError.nonRetryable(problem.title),
88
+ );
89
+ }).catch(error => {
90
+ this.logger.error(`Failed to publish beacon: ${formatMessage(error)}`);
91
+
92
+ return Promise.reject(
93
+ error instanceof MessageDeliveryError
94
+ ? error
95
+ : MessageDeliveryError.retryable(error),
96
+ );
97
+ });
98
+ }
99
+
100
+ public subscribe(listener: ChannelListener<string>): void {
101
+ if (!this.listeners.includes(listener)) {
102
+ this.listeners.push(listener);
103
+ }
104
+ }
105
+
106
+ public unsubscribe(listener: ChannelListener<string>): void {
107
+ const index = this.listeners.indexOf(listener);
108
+
109
+ if (index >= 0) {
110
+ this.listeners.splice(index, 1);
111
+ }
112
+ }
113
+
114
+ private notify(receiptId: string): void {
115
+ this.listeners.forEach(dispatch => dispatch(receiptId));
116
+ }
117
+
118
+ public close(): Promise<void> {
119
+ this.closed = true;
120
+
121
+ return Promise.resolve();
122
+ }
123
+
124
+ private static isRetryable(status: number): boolean {
125
+ // Retry on any server error and client errors 429 (rate limit) and 408 (request timeout)
126
+ return status >= 500 || status === 429 || status === 408;
127
+ }
128
+ }
@@ -1,8 +1,7 @@
1
1
  export * from './channel';
2
- export {BeaconSocketChannel, DuplexChannelFactory} from './beaconSocketChannel';
3
2
  export {EncodedChannel} from './encodedChannel';
4
3
  export {GuaranteedChannel} from './guaranteedChannel';
5
4
  export {QueuedChannel} from './queuedChannel';
6
5
  export {RetryChannel} from './retryChannel';
7
6
  export {SandboxChannel} from './sandboxChannel';
8
- export {SocketChannel} from './socketChannel';
7
+ export {HttpBeaconChannel} from './httpBeaconChannel';
@@ -1,4 +1,4 @@
1
- import {OutputChannel} from './channel';
1
+ import {MessageDeliveryError, OutputChannel} from './channel';
2
2
  import {Queue} from '../queue';
3
3
  import {Logger, NullLogger} from '../logging';
4
4
 
@@ -29,19 +29,19 @@ export class QueuedChannel<T> implements OutputChannel<T> {
29
29
 
30
30
  public publish(message: T): Promise<void> {
31
31
  if (this.closed) {
32
- return Promise.reject(new Error('Channel is closed.'));
32
+ return Promise.reject(MessageDeliveryError.nonRetryable('Channel is closed.'));
33
33
  }
34
34
 
35
35
  if (this.queue.length() >= this.queue.getCapacity()) {
36
36
  this.logger.warn('The queue is full, message rejected.');
37
37
 
38
- return Promise.reject(new Error('The queue is full.'));
38
+ return Promise.reject(MessageDeliveryError.retryable('The queue is full.'));
39
39
  }
40
40
 
41
41
  if (this.pending === undefined) {
42
42
  this.pending = this.queue.isEmpty()
43
43
  ? Promise.resolve()
44
- : Promise.reject(new Error('The queue must be flushed.'));
44
+ : Promise.reject(MessageDeliveryError.retryable('The queue must be flushed.'));
45
45
  }
46
46
 
47
47
  this.enqueue(message);
@@ -71,7 +71,7 @@ export class QueuedChannel<T> implements OutputChannel<T> {
71
71
 
72
72
  private requeue(): Promise<void> {
73
73
  if (this.closed) {
74
- return Promise.reject(new Error('Channel is closed.'));
74
+ return Promise.reject(MessageDeliveryError.nonRetryable('Channel is closed.'));
75
75
  }
76
76
 
77
77
  this.pending = Promise.resolve();
@@ -1,4 +1,4 @@
1
- import {OutputChannel} from './channel';
1
+ import {MessageDeliveryError, OutputChannel} from './channel';
2
2
  import {Logger, NullLogger} from '../logging';
3
3
  import {RetryPolicy} from '../retry';
4
4
 
@@ -25,7 +25,7 @@ export class RetryChannel<T> implements OutputChannel<T> {
25
25
 
26
26
  public publish(message: T): Promise<void> {
27
27
  if (this.closed) {
28
- return Promise.reject(new Error('The channel is closed.'));
28
+ return Promise.reject(MessageDeliveryError.nonRetryable('The channel is closed.'));
29
29
  }
30
30
 
31
31
  return this.channel
@@ -34,11 +34,15 @@ export class RetryChannel<T> implements OutputChannel<T> {
34
34
  }
35
35
 
36
36
  public async retry(message: T, error: unknown): Promise<void> {
37
+ if (error instanceof MessageDeliveryError && !error.retryable) {
38
+ throw error;
39
+ }
40
+
37
41
  let attempt = 0;
38
42
 
39
43
  while (this.retryPolicy.shouldRetry(attempt, message, error)) {
40
44
  if (this.closed) {
41
- throw new Error('Connection deliberately closed.');
45
+ throw MessageDeliveryError.nonRetryable('Connection deliberately closed.');
42
46
  }
43
47
 
44
48
  const delay = this.retryPolicy.getDelay(attempt);
@@ -55,7 +59,7 @@ export class RetryChannel<T> implements OutputChannel<T> {
55
59
  // Cancel delay immediately when the channel is closed
56
60
  window.clearInterval(closeWatcher);
57
61
 
58
- reject(new Error('Connection deliberately closed.'));
62
+ reject(MessageDeliveryError.nonRetryable('Connection deliberately closed.'));
59
63
  }
60
64
  },
61
65
  0,
@@ -79,7 +83,7 @@ export class RetryChannel<T> implements OutputChannel<T> {
79
83
  }
80
84
  }
81
85
 
82
- throw new Error('Maximum retry attempts reached.');
86
+ throw MessageDeliveryError.nonRetryable('Maximum retry attempts reached.');
83
87
  }
84
88
 
85
89
  public close(): Promise<void> {
@@ -1,4 +1,4 @@
1
- import {ChannelListener, DuplexChannel} from './channel';
1
+ import {ChannelListener, DuplexChannel, MessageDeliveryError} from './channel';
2
2
 
3
3
  export class SandboxChannel<I, O> implements DuplexChannel<I, O> {
4
4
  private readonly listeners: Array<ChannelListener<I>> = [];
@@ -8,6 +8,10 @@ export class SandboxChannel<I, O> implements DuplexChannel<I, O> {
8
8
  private closed = false;
9
9
 
10
10
  public publish(message: O): Promise<void> {
11
+ if (this.closed) {
12
+ return Promise.reject(MessageDeliveryError.nonRetryable('Channel is closed.'));
13
+ }
14
+
11
15
  this.messages.push(message);
12
16
 
13
17
  return Promise.resolve();
package/src/container.ts CHANGED
@@ -20,13 +20,12 @@ import {
20
20
  RetryChannel,
21
21
  GuaranteedChannel,
22
22
  EncodedChannel,
23
- BeaconSocketChannel,
24
- SocketChannel,
25
23
  SandboxChannel,
26
24
  } from './channel';
27
25
  import {ContentFetcher} from './contentFetcher';
28
26
  import {CookieCache, CookieCacheConfiguration} from './cache/cookieCache';
29
27
  import {FilteredLogger} from './logging/filteredLogger';
28
+ import {HttpBeaconChannel} from './channel/httpBeaconChannel';
30
29
 
31
30
  export type DependencyResolver<T> = (container: Container) => T;
32
31
 
@@ -51,9 +50,13 @@ export type Configuration = {
51
50
  },
52
51
  eventMetadata?: {[key: string]: string},
53
52
  eventProcessor?: DependencyResolver<TrackingEventProcessor>,
53
+ defaultFetchTimeout?: number,
54
+ defaultPreferredLocale?: string,
54
55
  };
55
56
 
56
57
  export class Container {
58
+ public static readonly DEFAULT_FETCH_TIMEOUT = 5_000; // 5 seconds
59
+
57
60
  private readonly configuration: Configuration;
58
61
 
59
62
  private context?: Context;
@@ -99,6 +102,7 @@ export class Container {
99
102
  appId: this.configuration.appId,
100
103
  baseEndpointUrl: this.configuration.evaluationBaseEndpointUrl,
101
104
  logger: this.getLogger('Evaluator'),
105
+ defaultTimeout: this.configuration.defaultFetchTimeout ?? Container.DEFAULT_FETCH_TIMEOUT,
102
106
  });
103
107
  }
104
108
 
@@ -115,6 +119,8 @@ export class Container {
115
119
  appId: this.configuration.appId,
116
120
  baseEndpointUrl: this.configuration.contentBaseEndpointUrl,
117
121
  logger: this.getLogger('ContentFetcher'),
122
+ defaultTimeout: this.configuration.defaultFetchTimeout ?? Container.DEFAULT_FETCH_TIMEOUT,
123
+ defaultPreferredLocale: this.configuration.defaultPreferredLocale,
118
124
  });
119
125
  }
120
126
 
@@ -226,23 +232,18 @@ export class Container {
226
232
  const queuedChannel = new QueuedChannel(
227
233
  new RetryChannel({
228
234
  channel: new GuaranteedChannel({
229
- channel: new BeaconSocketChannel({
230
- trackerEndpointUrl: `${trackerEndpointUrl}/${appId}`,
231
- tokenParameter: 'token',
232
- loggerFactory: this.getLogger.bind(this),
233
- logger: channelLogger,
234
- channelFactory: (url, logger): SocketChannel<any, any> => (
235
- new SocketChannel({url: url, logger: logger})
236
- ),
235
+ channel: new HttpBeaconChannel({
236
+ appId: appId,
237
+ endpointUrl: trackerEndpointUrl,
237
238
  cidAssigner: this.getCidAssigner(),
238
- cidParameter: 'clientId',
239
+ logger: channelLogger,
239
240
  }),
240
241
  stamper: new TimeStamper(),
241
242
  ackTimeout: 10000,
242
243
  logger: channelLogger,
243
244
  }),
244
245
  retryPolicy: new BackoffPolicy({
245
- minRetryDelay: 1000, // 1 second
246
+ minRetryDelay: 3000, // 3 seconds
246
247
  maxRetryDelay: 60 * 1000, // 60 seconds
247
248
  backoffFactor: 1.5, // 1.5 ^ attempt
248
249
  backoffJitter: 1, // add randomness
@@ -300,12 +301,9 @@ export class Container {
300
301
  }
301
302
 
302
303
  private createBeaconQueue(): MonitoredQueue<string> {
303
- const context = this.getContext();
304
- const tab = context.getTab();
305
-
306
304
  return new MonitoredQueue<string>(
307
305
  new CapacityRestrictedQueue(
308
- new PersistentQueue(this.getGlobalTabStorage('queue'), tab.id),
306
+ new PersistentQueue(this.getGlobalTabStorage('queue')),
309
307
  this.configuration.beaconQueueSize,
310
308
  ),
311
309
  this.getLogger('BeaconQueue'),
@@ -349,9 +347,9 @@ export class Container {
349
347
  }
350
348
 
351
349
  private resolveStorageNamespace(namespace: string, ...subnamespace: string[]): string {
352
- return `croct[${this.configuration
353
- .appId
354
- .toLowerCase()}].${[namespace].concat(subnamespace).join('.')}`;
350
+ const {appId} = this.configuration;
351
+
352
+ return `croct[${appId.toLowerCase()}].${[namespace].concat(subnamespace).join('.')}`;
355
353
  }
356
354
 
357
355
  private getLocalStorage(): Storage {