@croct/sdk 0.16.1 → 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 (94) hide show
  1. package/base64Url.js +2 -3
  2. package/base64Url.js.map +1 -1
  3. package/cache/cookieCache.d.ts +1 -1
  4. package/cache/cookieCache.js +12 -2
  5. package/cache/cookieCache.js.map +1 -1
  6. package/channel/channel.d.ts +7 -0
  7. package/channel/channel.js +23 -0
  8. package/channel/channel.js.map +1 -1
  9. package/channel/guaranteedChannel.js +4 -3
  10. package/channel/guaranteedChannel.js.map +1 -1
  11. package/channel/httpBeaconChannel.d.ts +23 -0
  12. package/channel/httpBeaconChannel.js +89 -0
  13. package/channel/httpBeaconChannel.js.map +1 -0
  14. package/channel/index.d.ts +1 -2
  15. package/channel/index.js +3 -5
  16. package/channel/index.js.map +1 -1
  17. package/channel/queuedChannel.js +5 -4
  18. package/channel/queuedChannel.js.map +1 -1
  19. package/channel/retryChannel.js +8 -4
  20. package/channel/retryChannel.js.map +1 -1
  21. package/channel/sandboxChannel.js +4 -0
  22. package/channel/sandboxChannel.js.map +1 -1
  23. package/constants.d.ts +2 -2
  24. package/constants.js +1 -1
  25. package/container.d.ts +3 -0
  26. package/container.js +15 -14
  27. package/container.js.map +1 -1
  28. package/contentFetcher.d.ts +3 -4
  29. package/contentFetcher.js +44 -27
  30. package/contentFetcher.js.map +1 -1
  31. package/error.js +2 -3
  32. package/error.js.map +1 -1
  33. package/evaluator.d.ts +2 -4
  34. package/evaluator.js +54 -39
  35. package/evaluator.js.map +1 -1
  36. package/facade/contentFetcherFacade.d.ts +1 -6
  37. package/facade/contentFetcherFacade.js +2 -5
  38. package/facade/contentFetcherFacade.js.map +1 -1
  39. package/facade/sdkFacade.d.ts +3 -6
  40. package/facade/sdkFacade.js +3 -7
  41. package/facade/sdkFacade.js.map +1 -1
  42. package/help.d.ts +3 -0
  43. package/help.js +26 -0
  44. package/help.js.map +1 -0
  45. package/package.json +1 -3
  46. package/queue/persistentQueue.d.ts +1 -3
  47. package/queue/persistentQueue.js +9 -16
  48. package/queue/persistentQueue.js.map +1 -1
  49. package/schema/eventSchemas.js +0 -16
  50. package/schema/eventSchemas.js.map +1 -1
  51. package/schema/sdkFacadeSchemas.js +5 -1
  52. package/schema/sdkFacadeSchemas.js.map +1 -1
  53. package/schema/sdkSchemas.js +7 -0
  54. package/schema/sdkSchemas.js.map +1 -1
  55. package/sdk.d.ts +2 -0
  56. package/sdk.js +1 -2
  57. package/sdk.js.map +1 -1
  58. package/sourceLocation.js +3 -4
  59. package/sourceLocation.js.map +1 -1
  60. package/src/cache/cookieCache.ts +13 -2
  61. package/src/channel/channel.ts +32 -0
  62. package/src/channel/guaranteedChannel.ts +4 -4
  63. package/src/channel/httpBeaconChannel.ts +128 -0
  64. package/src/channel/index.ts +1 -2
  65. package/src/channel/queuedChannel.ts +5 -5
  66. package/src/channel/retryChannel.ts +9 -5
  67. package/src/channel/sandboxChannel.ts +5 -1
  68. package/src/container.ts +17 -19
  69. package/src/contentFetcher.ts +48 -29
  70. package/src/evaluator.ts +81 -65
  71. package/src/facade/contentFetcherFacade.ts +2 -11
  72. package/src/facade/sdkFacade.ts +5 -14
  73. package/src/help.ts +24 -0
  74. package/src/queue/persistentQueue.ts +11 -22
  75. package/src/schema/eventSchemas.ts +0 -16
  76. package/src/schema/sdkFacadeSchemas.ts +14 -2
  77. package/src/schema/sdkSchemas.ts +7 -0
  78. package/src/sdk.ts +3 -2
  79. package/src/trackingEvents.ts +0 -4
  80. package/trackingEvents.d.ts +0 -4
  81. package/trackingEvents.js +3 -3
  82. package/trackingEvents.js.map +1 -1
  83. package/uuid.js +1 -2
  84. package/uuid.js.map +1 -1
  85. package/validation/violation.js +2 -3
  86. package/validation/violation.js.map +1 -1
  87. package/channel/beaconSocketChannel.d.ts +0 -37
  88. package/channel/beaconSocketChannel.js +0 -83
  89. package/channel/beaconSocketChannel.js.map +0 -1
  90. package/channel/socketChannel.d.ts +0 -31
  91. package/channel/socketChannel.js +0 -145
  92. package/channel/socketChannel.js.map +0 -1
  93. package/src/channel/beaconSocketChannel.ts +0 -153
  94. package/src/channel/socketChannel.ts +0 -217
package/help.js ADDED
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Help = void 0;
4
+ var Help;
5
+ (function (Help) {
6
+ function forStatusCode(statusCode) {
7
+ switch (statusCode) {
8
+ case 401:
9
+ return 'The request was not authorized, most likely due to invalid credentials. '
10
+ + 'For help, see https://croct.help/sdk/js/invalid-credentials';
11
+ case 403:
12
+ return 'The origin of the request is not allowed in your application settings. '
13
+ + 'For help, see https://croct.help/sdk/js/cors';
14
+ case 408:
15
+ return 'The request timed out. '
16
+ + 'For help, see https://croct.help/sdk/js/timeout';
17
+ case 423:
18
+ return 'The application has exceeded the monthly active users (MAU) quota. '
19
+ + 'For help, see https://croct.help/sdk/js/mau-exceeded';
20
+ default:
21
+ return undefined;
22
+ }
23
+ }
24
+ Help.forStatusCode = forStatusCode;
25
+ })(Help || (exports.Help = Help = {}));
26
+ //# sourceMappingURL=help.js.map
package/help.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["src/help.ts"],"names":[],"mappings":";;;AAAA,IAAiB,IAAI,CAuBpB;AAvBD,WAAiB,IAAI;IACnB,SAAgB,aAAa,CAAC,UAAkB;QAC5C,QAAQ,UAAU,EAAE,CAAC;YACjB,KAAK,GAAG;gBACJ,OAAO,0EAA0E;sBAC3E,6DAA6D,CAAC;YAExE,KAAK,GAAG;gBACJ,OAAO,yEAAyE;sBAC1E,8CAA8C,CAAC;YAEzD,KAAK,GAAG;gBACJ,OAAO,yBAAyB;sBACxB,iDAAiD,CAAC;YAE9D,KAAK,GAAG;gBACJ,OAAO,qEAAqE;sBACtE,sDAAsD,CAAC;YAEjE;gBACI,OAAO,SAAS,CAAC;QACzB,CAAC;IACL,CAAC;IArBe,kBAAa,gBAqB5B,CAAA;AACH,CAAC,EAvBgB,IAAI,oBAAJ,IAAI,QAuBpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@croct/sdk",
3
- "version": "0.16.1",
3
+ "version": "0.17.0",
4
4
  "description": "Croct SDK for JavaScript.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -39,8 +39,6 @@
39
39
  "jest": "^29.3.1",
40
40
  "jest-environment-jsdom": "^29.3.1",
41
41
  "jest-extended": "^4.0.0",
42
- "jest-websocket-mock": "^2.4.0",
43
- "mock-socket": "^9.1.5",
44
42
  "node-fetch": "^2.6.7",
45
43
  "ts-jest": "^29.0.3",
46
44
  "typescript": "^5.0.0"
@@ -1,6 +1,5 @@
1
1
  import { Queue } from './queue';
2
2
  export declare class PersistentQueue<T> implements Queue<T> {
3
- private cache;
4
3
  private readonly storage;
5
4
  private readonly key;
6
5
  constructor(storage: Storage, key?: string);
@@ -12,6 +11,5 @@ export declare class PersistentQueue<T> implements Queue<T> {
12
11
  peek(): T | null;
13
12
  shift(): T;
14
13
  private get queue();
15
- private flush;
16
- private load;
14
+ private save;
17
15
  }
@@ -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":";;;AAAA,2CAA0D;AAG1D,2CAAuD;AACvD,qCAAgD;AAChD,mCAAoC;AAgCpC,SAAS,qBAAqB,CAAC,aAAsB;IACjD,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACD,+BAAsB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAA,mBAAW,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;AACL,CAAC;AAED,MAAa,GAAG;IAKZ,YAAoB,SAAoB;QACpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,aAA4B;;QAC3C,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAErC,MAAM,EACF,aAAa,EAAE,cAAc,GAAG,EAAE,EAClC,eAAe,GAAG,6BAAiB,EACnC,sBAAsB,EACtB,GAAG,sBAAsB,EAC5B,GAAG,aAAa,CAAC;QAElB,MAAM,aAAa,GAA4B;YAC3C,UAAU,EAAE,mBAAO;SACtB,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACjD,aAAa,CAAC,UAAU,QAAQ,EAAE,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,gBAAgB,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEhE,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC;YAC5B,GAAG,sBAAsB;YACzB,yBAAyB,EAAE,gBAAgB;YAC3C,sBAAsB,EAAE,gBAAgB;YACxC,kBAAkB,EAAE,GAAG,cAAc,qBAAqB;YAC1D,sBAAsB,EAAE,sBAAsB,aAAtB,sBAAsB,cAAtB,sBAAsB,GAAI,GAAG,gBAAgB,iBAAiB;YACtF,eAAe,EAAE,MAAA,sBAAsB,CAAC,eAAe,mCAAI,GAAG;YAC9D,aAAa,EAAE,aAAa;SAC/B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,EAAC,KAAK,EAAE,UAAU,EAAC,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAEzD,MAAM,CAAC,KAAK,CACR,MAAM;cACJ,8CAA8C;cAC9C,8CAA8C;cAC9C,8CAA8C;cAC9C,8CAA8C;cAC9C,8CAA8C;cAC9C,IAAI,CACT,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,qBAAqB,mBAAO,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAE/B,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,cAAc,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAErC,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,IAAW,KAAK;QACZ,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAElD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IAC3C,CAAC;IAED,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;IACjD,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC9C,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC9C,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;IAEM,SAAS,CAAC,GAAG,SAAmB;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;IAClD,CAAC;IAEM,aAAa,CAAC,SAAiB,EAAE,GAAG,YAAsB;QAC7D,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC,CAAC;IACpE,CAAC;IAEM,iBAAiB,CAAC,SAAiB,EAAE,GAAG,YAAsB;QACjE,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC,CAAC;IACxE,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAE/B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;CACJ;AApID,kBAoIC"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["src/sdk.ts"],"names":[],"mappings":";;;AAAA,2CAA0D;AAG1D,2CAAuD;AACvD,qCAAgD;AAChD,mCAAoC;AAkCpC,SAAS,qBAAqB,CAAC,aAAsB;IACjD,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACD,+BAAsB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,SAAS,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAA,mBAAW,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;AACL,CAAC;AAED,MAAa,GAAG;IAKZ,YAAoB,SAAoB;QACpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,aAA4B;;QAC3C,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAErC,MAAM,EACF,aAAa,EAAE,cAAc,GAAG,EAAE,EAClC,eAAe,GAAG,6BAAiB,EACnC,sBAAsB,EACtB,GAAG,sBAAsB,EAC5B,GAAG,aAAa,CAAC;QAElB,MAAM,aAAa,GAA4B;YAC3C,UAAU,EAAE,mBAAO;SACtB,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACjD,aAAa,CAAC,UAAU,QAAQ,EAAE,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,gBAAgB,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAE7D,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC;YAC5B,GAAG,sBAAsB;YACzB,yBAAyB,EAAE,gBAAgB;YAC3C,sBAAsB,EAAE,gBAAgB;YACxC,kBAAkB,EAAE,GAAG,gBAAgB,mBAAmB;YAC1D,sBAAsB,EAAE,sBAAsB,aAAtB,sBAAsB,cAAtB,sBAAsB,GAAI,GAAG,gBAAgB,iBAAiB;YACtF,eAAe,EAAE,MAAA,sBAAsB,CAAC,eAAe,mCAAI,GAAG;YAC9D,aAAa,EAAE,aAAa;SAC/B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,EAAC,KAAK,EAAE,UAAU,EAAC,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAEzD,MAAM,CAAC,KAAK,CACR,MAAM;cACJ,8CAA8C;cAC9C,8CAA8C;cAC9C,8CAA8C;cAC9C,8CAA8C;cAC9C,8CAA8C;cAC9C,IAAI,CACT,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,qBAAqB,mBAAO,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAE/B,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,KAAK,CAAC,cAAc,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAErC,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,IAAW,KAAK;QACZ,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAElD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IAC3C,CAAC;IAED,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;IACjD,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC9C,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC9C,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;IAEM,SAAS,CAAC,GAAG,SAAmB;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;IAClD,CAAC;IAEM,aAAa,CAAC,SAAiB,EAAE,GAAG,YAAsB;QAC7D,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC,CAAC;IACpE,CAAC;IAEM,iBAAiB,CAAC,SAAiB,EAAE,GAAG,YAAsB;QACjE,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC,CAAC;IACxE,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAE/B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;CACJ;AAnID,kBAmIC"}
package/sourceLocation.js CHANGED
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPosition = exports.getLocation = exports.getLength = void 0;
3
+ exports.getLength = getLength;
4
+ exports.getLocation = getLocation;
5
+ exports.getPosition = getPosition;
4
6
  function getLength(input) {
5
7
  return [...input].length;
6
8
  }
7
- exports.getLength = getLength;
8
9
  function getLocation(input, startIndex, endIndex) {
9
10
  if (startIndex < 0) {
10
11
  throw Error('The start index cannot be negative.');
@@ -61,9 +62,7 @@ function getLocation(input, startIndex, endIndex) {
61
62
  end: end,
62
63
  };
63
64
  }
64
- exports.getLocation = getLocation;
65
65
  function getPosition(input, index) {
66
66
  return getLocation(input, index, index).start;
67
67
  }
68
- exports.getPosition = getPosition;
69
68
  //# sourceMappingURL=sourceLocation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sourceLocation.js","sourceRoot":"","sources":["src/sourceLocation.ts"],"names":[],"mappings":";;;AAWA,SAAgB,SAAS,CAAC,KAAa;IACnC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;AAC7B,CAAC;AAFD,8BAEC;AAED,SAAgB,WAAW,CAAC,KAAa,EAAE,UAAkB,EAAE,QAAgB;IAC3E,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,KAA2B,CAAC;IAChC,IAAI,GAAyB,CAAC;IAE9B,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACzB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YACxB,KAAK,GAAG;gBACJ,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,MAAM;aACjB,CAAC;QACN,CAAC;QAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtB,GAAG,GAAG;gBACF,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,MAAM;aACjB,CAAC;YAEF,MAAM;QACV,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,CAAC;YACV,MAAM,GAAG,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,CAAC,CAAC;QAChB,CAAC;IACL,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,KAAK,GAAG;YACJ,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,MAAM;SACjB,CAAC;IACN,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,GAAG,GAAG;YACF,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,MAAM;SACjB,CAAC;IACN,CAAC;IAED,OAAO;QACH,KAAK,EAAE,KAAK;QACZ,GAAG,EAAE,GAAG;KACX,CAAC;AACN,CAAC;AAjED,kCAiEC;AAED,SAAgB,WAAW,CAAC,KAAa,EAAE,KAAa;IACpD,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC;AAFD,kCAEC"}
1
+ {"version":3,"file":"sourceLocation.js","sourceRoot":"","sources":["src/sourceLocation.ts"],"names":[],"mappings":";;AAWA,8BAEC;AAED,kCAiEC;AAED,kCAEC;AAzED,SAAgB,SAAS,CAAC,KAAa;IACnC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa,EAAE,UAAkB,EAAE,QAAgB;IAC3E,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,KAA2B,CAAC;IAChC,IAAI,GAAyB,CAAC;IAE9B,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACzB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YACxB,KAAK,GAAG;gBACJ,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,MAAM;aACjB,CAAC;QACN,CAAC;QAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtB,GAAG,GAAG;gBACF,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,MAAM;aACjB,CAAC;YAEF,MAAM;QACV,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,CAAC;YACV,MAAM,GAAG,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,CAAC,CAAC;QAChB,CAAC;IACL,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,KAAK,GAAG;YACJ,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,MAAM;SACjB,CAAC;IACN,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,GAAG,GAAG;YACF,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,MAAM;SACjB,CAAC;IACN,CAAC;IAED,OAAO;QACH,KAAK,EAAE,KAAK;QACZ,GAAG,EAAE,GAAG;KACX,CAAC;AACN,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa,EAAE,KAAa;IACpD,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC"}
@@ -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();