@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.
- package/base64Url.js +2 -3
- package/base64Url.js.map +1 -1
- package/cache/cookieCache.d.ts +1 -1
- package/cache/cookieCache.js +12 -2
- package/cache/cookieCache.js.map +1 -1
- package/channel/channel.d.ts +7 -0
- package/channel/channel.js +23 -0
- package/channel/channel.js.map +1 -1
- package/channel/guaranteedChannel.js +4 -3
- package/channel/guaranteedChannel.js.map +1 -1
- package/channel/httpBeaconChannel.d.ts +23 -0
- package/channel/httpBeaconChannel.js +89 -0
- package/channel/httpBeaconChannel.js.map +1 -0
- package/channel/index.d.ts +1 -2
- package/channel/index.js +3 -5
- package/channel/index.js.map +1 -1
- package/channel/queuedChannel.js +5 -4
- package/channel/queuedChannel.js.map +1 -1
- package/channel/retryChannel.js +8 -4
- package/channel/retryChannel.js.map +1 -1
- package/channel/sandboxChannel.js +4 -0
- package/channel/sandboxChannel.js.map +1 -1
- package/constants.d.ts +2 -2
- package/constants.js +1 -1
- package/container.d.ts +3 -0
- package/container.js +15 -14
- package/container.js.map +1 -1
- package/contentFetcher.d.ts +3 -4
- package/contentFetcher.js +44 -27
- package/contentFetcher.js.map +1 -1
- package/error.js +2 -3
- package/error.js.map +1 -1
- package/evaluator.d.ts +2 -4
- package/evaluator.js +54 -39
- package/evaluator.js.map +1 -1
- package/facade/contentFetcherFacade.d.ts +1 -6
- package/facade/contentFetcherFacade.js +2 -5
- package/facade/contentFetcherFacade.js.map +1 -1
- package/facade/sdkFacade.d.ts +3 -6
- package/facade/sdkFacade.js +3 -7
- package/facade/sdkFacade.js.map +1 -1
- package/help.d.ts +3 -0
- package/help.js +26 -0
- package/help.js.map +1 -0
- package/package.json +1 -3
- package/queue/persistentQueue.d.ts +1 -3
- package/queue/persistentQueue.js +9 -16
- package/queue/persistentQueue.js.map +1 -1
- package/schema/eventSchemas.js +0 -16
- package/schema/eventSchemas.js.map +1 -1
- package/schema/sdkFacadeSchemas.js +5 -1
- package/schema/sdkFacadeSchemas.js.map +1 -1
- package/schema/sdkSchemas.js +7 -0
- package/schema/sdkSchemas.js.map +1 -1
- package/sdk.d.ts +2 -0
- package/sdk.js +1 -2
- package/sdk.js.map +1 -1
- package/sourceLocation.js +3 -4
- package/sourceLocation.js.map +1 -1
- package/src/cache/cookieCache.ts +13 -2
- package/src/channel/channel.ts +32 -0
- package/src/channel/guaranteedChannel.ts +4 -4
- package/src/channel/httpBeaconChannel.ts +128 -0
- package/src/channel/index.ts +1 -2
- package/src/channel/queuedChannel.ts +5 -5
- package/src/channel/retryChannel.ts +9 -5
- package/src/channel/sandboxChannel.ts +5 -1
- package/src/container.ts +17 -19
- package/src/contentFetcher.ts +48 -29
- package/src/evaluator.ts +81 -65
- package/src/facade/contentFetcherFacade.ts +2 -11
- package/src/facade/sdkFacade.ts +5 -14
- package/src/help.ts +24 -0
- package/src/queue/persistentQueue.ts +11 -22
- package/src/schema/eventSchemas.ts +0 -16
- package/src/schema/sdkFacadeSchemas.ts +14 -2
- package/src/schema/sdkSchemas.ts +7 -0
- package/src/sdk.ts +3 -2
- package/src/trackingEvents.ts +0 -4
- package/trackingEvents.d.ts +0 -4
- package/trackingEvents.js +3 -3
- package/trackingEvents.js.map +1 -1
- package/uuid.js +1 -2
- package/uuid.js.map +1 -1
- package/validation/violation.js +2 -3
- package/validation/violation.js.map +1 -1
- package/channel/beaconSocketChannel.d.ts +0 -37
- package/channel/beaconSocketChannel.js +0 -83
- package/channel/beaconSocketChannel.js.map +0 -1
- package/channel/socketChannel.d.ts +0 -31
- package/channel/socketChannel.js +0 -145
- package/channel/socketChannel.js.map +0 -1
- package/src/channel/beaconSocketChannel.ts +0 -153
- 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.
|
|
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
|
|
16
|
-
private load;
|
|
14
|
+
private save;
|
|
17
15
|
}
|
package/queue/persistentQueue.js
CHANGED
|
@@ -10,7 +10,7 @@ class PersistentQueue {
|
|
|
10
10
|
return this.queue.slice();
|
|
11
11
|
}
|
|
12
12
|
getCapacity() {
|
|
13
|
-
return
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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;
|
|
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"}
|
package/schema/eventSchemas.js
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
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"}
|
package/schema/sdkSchemas.js
CHANGED
|
@@ -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
|
package/schema/sdkSchemas.js.map
CHANGED
|
@@ -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;
|
|
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: `${
|
|
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;
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["src/sdk.ts"],"names":[],"mappings":"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"}
|
package/sourceLocation.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
package/sourceLocation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sourceLocation.js","sourceRoot":"","sources":["src/sourceLocation.ts"],"names":[],"mappings":"
|
|
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"}
|
package/src/cache/cookieCache.ts
CHANGED
|
@@ -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 =
|
|
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 {
|
package/src/channel/channel.ts
CHANGED
|
@@ -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(
|
|
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(
|
|
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(
|
|
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
|
+
}
|
package/src/channel/index.ts
CHANGED
|
@@ -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 {
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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();
|