@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/base64Url.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.base64UrlEncode = base64UrlEncode;
|
|
4
|
+
exports.base64UrlDecode = base64UrlDecode;
|
|
4
5
|
function base64Unescape(value) {
|
|
5
6
|
return (value + '==='.slice((value.length + 3) % 4)).replace(/-/g, '+').replace(/_/g, '/');
|
|
6
7
|
}
|
|
@@ -15,11 +16,9 @@ function base64UrlEncode(value, utf8 = false) {
|
|
|
15
16
|
? base64Escape(btoa(String.fromCodePoint(...new TextEncoder().encode(value))))
|
|
16
17
|
: base64Escape(btoa(value));
|
|
17
18
|
}
|
|
18
|
-
exports.base64UrlEncode = base64UrlEncode;
|
|
19
19
|
function base64UrlDecode(value, utf8 = false) {
|
|
20
20
|
return utf8
|
|
21
21
|
? new TextDecoder().decode(Uint8Array.from(atob(base64Unescape(value)), m => m.codePointAt(0)))
|
|
22
22
|
: atob(base64Unescape(value));
|
|
23
23
|
}
|
|
24
|
-
exports.base64UrlDecode = base64UrlDecode;
|
|
25
24
|
//# sourceMappingURL=base64Url.js.map
|
package/base64Url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64Url.js","sourceRoot":"","sources":["src/base64Url.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base64Url.js","sourceRoot":"","sources":["src/base64Url.ts"],"names":[],"mappings":";;AAWA,0CAIC;AAED,0CAIC;AArBD,SAAS,cAAc,CAAC,KAAa;IACjC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IAC/B,OAAO,KAAK;SACP,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,SAAgB,eAAe,CAAC,KAAa,EAAE,IAAI,GAAG,KAAK;IACvD,OAAO,IAAI;QACP,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,eAAe,CAAC,KAAa,EAAE,IAAI,GAAG,KAAK;IACvD,OAAO,IAAI;QACP,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC;QAChG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
package/cache/cookieCache.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export type CookieCacheConfiguration = {
|
|
|
9
9
|
};
|
|
10
10
|
export declare class CookieCache implements Cache {
|
|
11
11
|
private readonly config;
|
|
12
|
-
constructor(config: CookieCacheConfiguration);
|
|
12
|
+
constructor(config: CookieCacheConfiguration, defaultSecure?: boolean);
|
|
13
13
|
get(): string | null;
|
|
14
14
|
put(value: string): void;
|
|
15
15
|
clear(): void;
|
package/cache/cookieCache.js
CHANGED
|
@@ -2,8 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CookieCache = void 0;
|
|
4
4
|
class CookieCache {
|
|
5
|
-
constructor(config) {
|
|
6
|
-
|
|
5
|
+
constructor(config, defaultSecure = window.location.protocol === 'https:') {
|
|
6
|
+
var _a;
|
|
7
|
+
this.config = {
|
|
8
|
+
...config,
|
|
9
|
+
path: (_a = config.path) !== null && _a !== void 0 ? _a : '/',
|
|
10
|
+
};
|
|
11
|
+
if (defaultSecure && this.config.secure === undefined) {
|
|
12
|
+
this.config.secure = true;
|
|
13
|
+
}
|
|
14
|
+
if (this.config.secure === true && this.config.sameSite === undefined) {
|
|
15
|
+
this.config.sameSite = 'none';
|
|
16
|
+
}
|
|
7
17
|
}
|
|
8
18
|
get() {
|
|
9
19
|
const entries = document.cookie.split(';');
|
package/cache/cookieCache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookieCache.js","sourceRoot":"","sources":["../src/cache/cookieCache.ts"],"names":[],"mappings":";;;AAWA,MAAa,WAAW;IAGpB,YAAmB,MAAgC;
|
|
1
|
+
{"version":3,"file":"cookieCache.js","sourceRoot":"","sources":["../src/cache/cookieCache.ts"],"names":[],"mappings":"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"}
|
package/channel/channel.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
export declare class MessageDeliveryError extends Error {
|
|
2
|
+
readonly retryable: boolean;
|
|
3
|
+
constructor(message: string, retryable: boolean);
|
|
4
|
+
static retryable(cause: unknown): MessageDeliveryError;
|
|
5
|
+
static nonRetryable(cause: unknown): MessageDeliveryError;
|
|
6
|
+
private static fromCause;
|
|
7
|
+
}
|
|
1
8
|
export interface Closeable {
|
|
2
9
|
close(): Promise<void>;
|
|
3
10
|
}
|
package/channel/channel.js
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MessageDeliveryError = void 0;
|
|
4
|
+
const error_1 = require("../error");
|
|
5
|
+
class MessageDeliveryError extends Error {
|
|
6
|
+
constructor(message, retryable) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.retryable = retryable;
|
|
9
|
+
Object.setPrototypeOf(this, MessageDeliveryError.prototype);
|
|
10
|
+
}
|
|
11
|
+
static retryable(cause) {
|
|
12
|
+
return MessageDeliveryError.fromCause(cause, true);
|
|
13
|
+
}
|
|
14
|
+
static nonRetryable(cause) {
|
|
15
|
+
return MessageDeliveryError.fromCause(cause, false);
|
|
16
|
+
}
|
|
17
|
+
static fromCause(cause, retryable) {
|
|
18
|
+
const error = new MessageDeliveryError((0, error_1.formatMessage)(cause), retryable);
|
|
19
|
+
if (cause instanceof Error) {
|
|
20
|
+
error.stack = cause.stack;
|
|
21
|
+
}
|
|
22
|
+
return error;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.MessageDeliveryError = MessageDeliveryError;
|
|
3
26
|
//# sourceMappingURL=channel.js.map
|
package/channel/channel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel/channel.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel/channel.ts"],"names":[],"mappings":";;;AAAA,oCAAuC;AAEvC,MAAa,oBAAqB,SAAQ,KAAK;IAG3C,YAAmB,OAAe,EAAE,SAAkB;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,KAAc;QAClC,OAAO,oBAAoB,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,KAAc;QACrC,OAAO,oBAAoB,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,KAAc,EAAE,SAAkB;QACvD,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;QAExE,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC9B,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA5BD,oDA4BC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GuaranteedChannel = exports.TimeStamper = void 0;
|
|
4
4
|
const logging_1 = require("../logging");
|
|
5
|
+
const channel_1 = require("./channel");
|
|
5
6
|
class TimeStamper {
|
|
6
7
|
generate() {
|
|
7
8
|
return String(Date.now());
|
|
@@ -22,7 +23,7 @@ class GuaranteedChannel {
|
|
|
22
23
|
}
|
|
23
24
|
publish(message) {
|
|
24
25
|
if (this.closed) {
|
|
25
|
-
return Promise.reject(
|
|
26
|
+
return Promise.reject(channel_1.MessageDeliveryError.nonRetryable('Channel is closed.'));
|
|
26
27
|
}
|
|
27
28
|
return new Promise((resolve, reject) => {
|
|
28
29
|
const id = this.stamper.generate(message);
|
|
@@ -56,12 +57,12 @@ class GuaranteedChannel {
|
|
|
56
57
|
closeWatcher = window.setInterval(() => {
|
|
57
58
|
if (this.closed) {
|
|
58
59
|
// Cancel delay immediately when the channel is closed
|
|
59
|
-
abort(
|
|
60
|
+
abort(channel_1.MessageDeliveryError.nonRetryable('Connection deliberately closed.'));
|
|
60
61
|
}
|
|
61
62
|
}, 0);
|
|
62
63
|
this.logger.debug(`Waiting confirmation #${id}...`);
|
|
63
64
|
timeoutTimer = window.setTimeout(() => {
|
|
64
|
-
abort(
|
|
65
|
+
abort(channel_1.MessageDeliveryError.retryable('Maximum confirmation time reached.'));
|
|
65
66
|
}, this.options.ackTimeout);
|
|
66
67
|
};
|
|
67
68
|
this.logger.debug(`Sending message #${id}...`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guaranteedChannel.js","sourceRoot":"","sources":["../src/channel/guaranteedChannel.ts"],"names":[],"mappings":";;;AAAA,wCAA8C;
|
|
1
|
+
{"version":3,"file":"guaranteedChannel.js","sourceRoot":"","sources":["../src/channel/guaranteedChannel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ChannelListener, DuplexChannel } from './channel';
|
|
2
|
+
import { Envelope } from './guaranteedChannel';
|
|
3
|
+
import { Logger } from '../logging';
|
|
4
|
+
import { CidAssigner } from '../cid';
|
|
5
|
+
export type Configuration = {
|
|
6
|
+
appId: string;
|
|
7
|
+
endpointUrl: string;
|
|
8
|
+
cidAssigner: CidAssigner;
|
|
9
|
+
logger?: Logger;
|
|
10
|
+
};
|
|
11
|
+
export declare class HttpBeaconChannel implements DuplexChannel<string, Envelope<string, string>> {
|
|
12
|
+
private readonly configuration;
|
|
13
|
+
private readonly logger;
|
|
14
|
+
private readonly listeners;
|
|
15
|
+
private closed;
|
|
16
|
+
constructor({ logger, ...configuration }: Configuration);
|
|
17
|
+
publish({ id: receiptId, message }: Envelope<string, string>): Promise<void>;
|
|
18
|
+
subscribe(listener: ChannelListener<string>): void;
|
|
19
|
+
unsubscribe(listener: ChannelListener<string>): void;
|
|
20
|
+
private notify;
|
|
21
|
+
close(): Promise<void>;
|
|
22
|
+
private static isRetryable;
|
|
23
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpBeaconChannel = void 0;
|
|
4
|
+
const channel_1 = require("./channel");
|
|
5
|
+
const logging_1 = require("../logging");
|
|
6
|
+
const error_1 = require("../error");
|
|
7
|
+
const constants_1 = require("../constants");
|
|
8
|
+
const help_1 = require("../help");
|
|
9
|
+
class HttpBeaconChannel {
|
|
10
|
+
constructor({ logger = new logging_1.NullLogger(), ...configuration }) {
|
|
11
|
+
this.listeners = [];
|
|
12
|
+
this.closed = false;
|
|
13
|
+
this.configuration = configuration;
|
|
14
|
+
this.logger = logger;
|
|
15
|
+
}
|
|
16
|
+
async publish({ id: receiptId, message }) {
|
|
17
|
+
if (this.closed) {
|
|
18
|
+
return Promise.reject(channel_1.MessageDeliveryError.nonRetryable('Channel is closed'));
|
|
19
|
+
}
|
|
20
|
+
const { token, timestamp, context, payload } = JSON.parse(message);
|
|
21
|
+
const { endpointUrl, appId, cidAssigner } = this.configuration;
|
|
22
|
+
return fetch(endpointUrl, {
|
|
23
|
+
method: 'POST',
|
|
24
|
+
headers: {
|
|
25
|
+
'X-App-Id': appId,
|
|
26
|
+
'X-Client-Id': await cidAssigner.assignCid(),
|
|
27
|
+
'X-Client-Library': constants_1.CLIENT_LIBRARY,
|
|
28
|
+
'Content-Type': 'application/json',
|
|
29
|
+
...(token !== undefined ? { 'X-Token': token } : {}),
|
|
30
|
+
},
|
|
31
|
+
body: JSON.stringify({
|
|
32
|
+
context: context,
|
|
33
|
+
payload: payload,
|
|
34
|
+
originalTime: timestamp,
|
|
35
|
+
departureTime: Date.now(),
|
|
36
|
+
}),
|
|
37
|
+
}).then(async (response) => {
|
|
38
|
+
if (response.ok) {
|
|
39
|
+
this.notify(receiptId);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const problem = await response.json().catch(() => ({
|
|
43
|
+
type: 'https://croct.help/api/event-tracker#unexpected-error',
|
|
44
|
+
title: response.statusText,
|
|
45
|
+
status: response.status,
|
|
46
|
+
}));
|
|
47
|
+
const isRetryable = HttpBeaconChannel.isRetryable(problem.status);
|
|
48
|
+
const help = help_1.Help.forStatusCode(problem.status);
|
|
49
|
+
if (help !== undefined) {
|
|
50
|
+
this.logger.error(help);
|
|
51
|
+
}
|
|
52
|
+
else if (!isRetryable) {
|
|
53
|
+
this.logger.error(`Beacon rejected with non-retryable status: ${problem.title}`);
|
|
54
|
+
}
|
|
55
|
+
return Promise.reject(isRetryable
|
|
56
|
+
? channel_1.MessageDeliveryError.retryable(problem.title)
|
|
57
|
+
: channel_1.MessageDeliveryError.nonRetryable(problem.title));
|
|
58
|
+
}).catch(error => {
|
|
59
|
+
this.logger.error(`Failed to publish beacon: ${(0, error_1.formatMessage)(error)}`);
|
|
60
|
+
return Promise.reject(error instanceof channel_1.MessageDeliveryError
|
|
61
|
+
? error
|
|
62
|
+
: channel_1.MessageDeliveryError.retryable(error));
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
subscribe(listener) {
|
|
66
|
+
if (!this.listeners.includes(listener)) {
|
|
67
|
+
this.listeners.push(listener);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
unsubscribe(listener) {
|
|
71
|
+
const index = this.listeners.indexOf(listener);
|
|
72
|
+
if (index >= 0) {
|
|
73
|
+
this.listeners.splice(index, 1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
notify(receiptId) {
|
|
77
|
+
this.listeners.forEach(dispatch => dispatch(receiptId));
|
|
78
|
+
}
|
|
79
|
+
close() {
|
|
80
|
+
this.closed = true;
|
|
81
|
+
return Promise.resolve();
|
|
82
|
+
}
|
|
83
|
+
static isRetryable(status) {
|
|
84
|
+
// Retry on any server error and client errors 429 (rate limit) and 408 (request timeout)
|
|
85
|
+
return status >= 500 || status === 429 || status === 408;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.HttpBeaconChannel = HttpBeaconChannel;
|
|
89
|
+
//# sourceMappingURL=httpBeaconChannel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpBeaconChannel.js","sourceRoot":"","sources":["../src/channel/httpBeaconChannel.ts"],"names":[],"mappings":"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"}
|
package/channel/index.d.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';
|
package/channel/index.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.HttpBeaconChannel = exports.SandboxChannel = exports.RetryChannel = exports.QueuedChannel = exports.GuaranteedChannel = exports.EncodedChannel = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
tslib_1.__exportStar(require("./channel"), exports);
|
|
6
|
-
var beaconSocketChannel_1 = require("./beaconSocketChannel");
|
|
7
|
-
Object.defineProperty(exports, "BeaconSocketChannel", { enumerable: true, get: function () { return beaconSocketChannel_1.BeaconSocketChannel; } });
|
|
8
6
|
var encodedChannel_1 = require("./encodedChannel");
|
|
9
7
|
Object.defineProperty(exports, "EncodedChannel", { enumerable: true, get: function () { return encodedChannel_1.EncodedChannel; } });
|
|
10
8
|
var guaranteedChannel_1 = require("./guaranteedChannel");
|
|
@@ -15,6 +13,6 @@ var retryChannel_1 = require("./retryChannel");
|
|
|
15
13
|
Object.defineProperty(exports, "RetryChannel", { enumerable: true, get: function () { return retryChannel_1.RetryChannel; } });
|
|
16
14
|
var sandboxChannel_1 = require("./sandboxChannel");
|
|
17
15
|
Object.defineProperty(exports, "SandboxChannel", { enumerable: true, get: function () { return sandboxChannel_1.SandboxChannel; } });
|
|
18
|
-
var
|
|
19
|
-
Object.defineProperty(exports, "
|
|
16
|
+
var httpBeaconChannel_1 = require("./httpBeaconChannel");
|
|
17
|
+
Object.defineProperty(exports, "HttpBeaconChannel", { enumerable: true, get: function () { return httpBeaconChannel_1.HttpBeaconChannel; } });
|
|
20
18
|
//# sourceMappingURL=index.js.map
|
package/channel/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/channel/index.ts"],"names":[],"mappings":";;;;AAAA,oDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/channel/index.ts"],"names":[],"mappings":";;;;AAAA,oDAA0B;AAC1B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA;AACzB,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AACpB,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,yDAAsD;AAA9C,sHAAA,iBAAiB,OAAA"}
|
package/channel/queuedChannel.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.QueuedChannel = void 0;
|
|
4
|
+
const channel_1 = require("./channel");
|
|
4
5
|
const logging_1 = require("../logging");
|
|
5
6
|
class QueuedChannel {
|
|
6
7
|
constructor(channel, queue, logger) {
|
|
@@ -17,16 +18,16 @@ class QueuedChannel {
|
|
|
17
18
|
}
|
|
18
19
|
publish(message) {
|
|
19
20
|
if (this.closed) {
|
|
20
|
-
return Promise.reject(
|
|
21
|
+
return Promise.reject(channel_1.MessageDeliveryError.nonRetryable('Channel is closed.'));
|
|
21
22
|
}
|
|
22
23
|
if (this.queue.length() >= this.queue.getCapacity()) {
|
|
23
24
|
this.logger.warn('The queue is full, message rejected.');
|
|
24
|
-
return Promise.reject(
|
|
25
|
+
return Promise.reject(channel_1.MessageDeliveryError.retryable('The queue is full.'));
|
|
25
26
|
}
|
|
26
27
|
if (this.pending === undefined) {
|
|
27
28
|
this.pending = this.queue.isEmpty()
|
|
28
29
|
? Promise.resolve()
|
|
29
|
-
: Promise.reject(
|
|
30
|
+
: Promise.reject(channel_1.MessageDeliveryError.retryable('The queue must be flushed.'));
|
|
30
31
|
}
|
|
31
32
|
this.enqueue(message);
|
|
32
33
|
this.pending = this.pending.then(() => this.channel
|
|
@@ -46,7 +47,7 @@ class QueuedChannel {
|
|
|
46
47
|
}
|
|
47
48
|
requeue() {
|
|
48
49
|
if (this.closed) {
|
|
49
|
-
return Promise.reject(
|
|
50
|
+
return Promise.reject(channel_1.MessageDeliveryError.nonRetryable('Channel is closed.'));
|
|
50
51
|
}
|
|
51
52
|
this.pending = Promise.resolve();
|
|
52
53
|
if (this.queue.isEmpty()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queuedChannel.js","sourceRoot":"","sources":["../src/channel/queuedChannel.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"queuedChannel.js","sourceRoot":"","sources":["../src/channel/queuedChannel.ts"],"names":[],"mappings":"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"}
|
package/channel/retryChannel.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RetryChannel = void 0;
|
|
4
|
+
const channel_1 = require("./channel");
|
|
4
5
|
const logging_1 = require("../logging");
|
|
5
6
|
class RetryChannel {
|
|
6
7
|
constructor({ channel, retryPolicy, logger }) {
|
|
@@ -11,17 +12,20 @@ class RetryChannel {
|
|
|
11
12
|
}
|
|
12
13
|
publish(message) {
|
|
13
14
|
if (this.closed) {
|
|
14
|
-
return Promise.reject(
|
|
15
|
+
return Promise.reject(channel_1.MessageDeliveryError.nonRetryable('The channel is closed.'));
|
|
15
16
|
}
|
|
16
17
|
return this.channel
|
|
17
18
|
.publish(message)
|
|
18
19
|
.catch(error => this.retry(message, error));
|
|
19
20
|
}
|
|
20
21
|
async retry(message, error) {
|
|
22
|
+
if (error instanceof channel_1.MessageDeliveryError && !error.retryable) {
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
21
25
|
let attempt = 0;
|
|
22
26
|
while (this.retryPolicy.shouldRetry(attempt, message, error)) {
|
|
23
27
|
if (this.closed) {
|
|
24
|
-
throw
|
|
28
|
+
throw channel_1.MessageDeliveryError.nonRetryable('Connection deliberately closed.');
|
|
25
29
|
}
|
|
26
30
|
const delay = this.retryPolicy.getDelay(attempt);
|
|
27
31
|
this.logger.debug(`Retry attempt ${attempt + 1}`);
|
|
@@ -32,7 +36,7 @@ class RetryChannel {
|
|
|
32
36
|
if (this.closed) {
|
|
33
37
|
// Cancel delay immediately when the channel is closed
|
|
34
38
|
window.clearInterval(closeWatcher);
|
|
35
|
-
reject(
|
|
39
|
+
reject(channel_1.MessageDeliveryError.nonRetryable('Connection deliberately closed.'));
|
|
36
40
|
}
|
|
37
41
|
}, 0);
|
|
38
42
|
window.setTimeout(() => {
|
|
@@ -48,7 +52,7 @@ class RetryChannel {
|
|
|
48
52
|
attempt += 1;
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
|
-
throw
|
|
55
|
+
throw channel_1.MessageDeliveryError.nonRetryable('Maximum retry attempts reached.');
|
|
52
56
|
}
|
|
53
57
|
close() {
|
|
54
58
|
this.closed = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retryChannel.js","sourceRoot":"","sources":["../src/channel/retryChannel.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"retryChannel.js","sourceRoot":"","sources":["../src/channel/retryChannel.ts"],"names":[],"mappings":";;;AAAA,uCAA8D;AAC9D,wCAA8C;AAS9C,MAAa,YAAY;IASrB,YAAmB,EAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAmB;QAF3D,WAAM,GAAG,KAAK,CAAC;QAGnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,oBAAU,EAAE,CAAC;IAC7C,CAAC;IAEM,OAAO,CAAC,OAAU;QACrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,OAAO,CAAC,MAAM,CAAC,8BAAoB,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,OAAO,IAAI,CAAC,OAAO;aACd,OAAO,CAAC,OAAO,CAAC;aAChB,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,OAAU,EAAE,KAAc;QACzC,IAAI,KAAK,YAAY,8BAAoB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAC5D,MAAM,KAAK,CAAC;QAChB,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,MAAM,8BAAoB,CAAC,YAAY,CAAC,iCAAiC,CAAC,CAAC;YAC/E,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;YAElD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,KAAK,IAAI,CAAC,CAAC;gBAEzD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;oBAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CACnC,GAAG,EAAE;wBACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;4BACd,sDAAsD;4BACtD,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;4BAEnC,MAAM,CAAC,8BAAoB,CAAC,YAAY,CAAC,iCAAiC,CAAC,CAAC,CAAC;wBACjF,CAAC;oBACL,CAAC,EACD,CAAC,CACJ,CAAC;oBAEF,MAAM,CAAC,UAAU,CACb,GAAS,EAAE;wBACP,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;wBAEnC,OAAO,EAAE,CAAC;oBACd,CAAC,EACD,KAAK,CACR,CAAC;gBACN,CAAC,CAAC,CAAC;YACP,CAAC;YAED,IAAI,CAAC;gBACD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,IAAI,CAAC,CAAC;YACjB,CAAC;QACL,CAAC;QAED,MAAM,8BAAoB,CAAC,YAAY,CAAC,iCAAiC,CAAC,CAAC;IAC/E,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;CACJ;AAnFD,oCAmFC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SandboxChannel = void 0;
|
|
4
|
+
const channel_1 = require("./channel");
|
|
4
5
|
class SandboxChannel {
|
|
5
6
|
constructor() {
|
|
6
7
|
this.listeners = [];
|
|
@@ -8,6 +9,9 @@ class SandboxChannel {
|
|
|
8
9
|
this.closed = false;
|
|
9
10
|
}
|
|
10
11
|
publish(message) {
|
|
12
|
+
if (this.closed) {
|
|
13
|
+
return Promise.reject(channel_1.MessageDeliveryError.nonRetryable('Channel is closed.'));
|
|
14
|
+
}
|
|
11
15
|
this.messages.push(message);
|
|
12
16
|
return Promise.resolve();
|
|
13
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandboxChannel.js","sourceRoot":"","sources":["../src/channel/sandboxChannel.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sandboxChannel.js","sourceRoot":"","sources":["../src/channel/sandboxChannel.ts"],"names":[],"mappings":";;;AAAA,uCAA+E;AAE/E,MAAa,cAAc;IAA3B;QACqB,cAAS,GAA8B,EAAE,CAAC;QAE3C,aAAQ,GAAQ,EAAE,CAAC;QAE3B,WAAM,GAAG,KAAK,CAAC;IAuC3B,CAAC;IArCU,OAAO,CAAC,OAAU;QACrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,OAAO,CAAC,MAAM,CAAC,8BAAoB,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,OAAU;QACpB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,SAAS,CAAC,QAA4B;QACzC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAEM,WAAW,CAAC,QAA4B;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;IAEM,KAAK;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AA5CD,wCA4CC"}
|
package/constants.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const BASE_ENDPOINT_URL = "https://api.croct.io";
|
|
2
2
|
export declare const MAX_QUERY_LENGTH: number;
|
|
3
|
-
export declare const VERSION = "0.
|
|
4
|
-
export declare const CLIENT_LIBRARY = "Croct SDK JS v0.
|
|
3
|
+
export declare const VERSION = "0.17.0";
|
|
4
|
+
export declare const CLIENT_LIBRARY = "Croct SDK JS v0.17.0";
|
package/constants.js
CHANGED
|
@@ -3,6 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CLIENT_LIBRARY = exports.VERSION = exports.MAX_QUERY_LENGTH = exports.BASE_ENDPOINT_URL = void 0;
|
|
4
4
|
exports.BASE_ENDPOINT_URL = 'https://api.croct.io';
|
|
5
5
|
exports.MAX_QUERY_LENGTH = 500;
|
|
6
|
-
exports.VERSION = '0.
|
|
6
|
+
exports.VERSION = '0.17.0';
|
|
7
7
|
exports.CLIENT_LIBRARY = `Croct SDK JS v${exports.VERSION}`;
|
|
8
8
|
//# sourceMappingURL=constants.js.map
|
package/container.d.ts
CHANGED
|
@@ -34,8 +34,11 @@ export type Configuration = {
|
|
|
34
34
|
[key: string]: string;
|
|
35
35
|
};
|
|
36
36
|
eventProcessor?: DependencyResolver<TrackingEventProcessor>;
|
|
37
|
+
defaultFetchTimeout?: number;
|
|
38
|
+
defaultPreferredLocale?: string;
|
|
37
39
|
};
|
|
38
40
|
export declare class Container {
|
|
41
|
+
static readonly DEFAULT_FETCH_TIMEOUT = 5000;
|
|
39
42
|
private readonly configuration;
|
|
40
43
|
private context?;
|
|
41
44
|
private userTokenProvider?;
|
package/container.js
CHANGED
|
@@ -18,6 +18,7 @@ const channel_1 = require("./channel");
|
|
|
18
18
|
const contentFetcher_1 = require("./contentFetcher");
|
|
19
19
|
const cookieCache_1 = require("./cache/cookieCache");
|
|
20
20
|
const filteredLogger_1 = require("./logging/filteredLogger");
|
|
21
|
+
const httpBeaconChannel_1 = require("./channel/httpBeaconChannel");
|
|
21
22
|
class Container {
|
|
22
23
|
constructor(configuration) {
|
|
23
24
|
this.eventManager = new eventManager_1.SynchronousEventManager();
|
|
@@ -33,10 +34,12 @@ class Container {
|
|
|
33
34
|
return this.evaluator;
|
|
34
35
|
}
|
|
35
36
|
createEvaluator() {
|
|
37
|
+
var _a;
|
|
36
38
|
return new evaluator_1.Evaluator({
|
|
37
39
|
appId: this.configuration.appId,
|
|
38
40
|
baseEndpointUrl: this.configuration.evaluationBaseEndpointUrl,
|
|
39
41
|
logger: this.getLogger('Evaluator'),
|
|
42
|
+
defaultTimeout: (_a = this.configuration.defaultFetchTimeout) !== null && _a !== void 0 ? _a : Container.DEFAULT_FETCH_TIMEOUT,
|
|
40
43
|
});
|
|
41
44
|
}
|
|
42
45
|
getContentFetcher() {
|
|
@@ -46,10 +49,13 @@ class Container {
|
|
|
46
49
|
return this.contentFetcher;
|
|
47
50
|
}
|
|
48
51
|
createContentFetcher() {
|
|
52
|
+
var _a;
|
|
49
53
|
return new contentFetcher_1.ContentFetcher({
|
|
50
54
|
appId: this.configuration.appId,
|
|
51
55
|
baseEndpointUrl: this.configuration.contentBaseEndpointUrl,
|
|
52
56
|
logger: this.getLogger('ContentFetcher'),
|
|
57
|
+
defaultTimeout: (_a = this.configuration.defaultFetchTimeout) !== null && _a !== void 0 ? _a : Container.DEFAULT_FETCH_TIMEOUT,
|
|
58
|
+
defaultPreferredLocale: this.configuration.defaultPreferredLocale,
|
|
53
59
|
});
|
|
54
60
|
}
|
|
55
61
|
getPreviewTokenStore() {
|
|
@@ -138,21 +144,18 @@ class Container {
|
|
|
138
144
|
const { appId, trackerEndpointUrl } = this.configuration;
|
|
139
145
|
const queuedChannel = new channel_1.QueuedChannel(new channel_1.RetryChannel({
|
|
140
146
|
channel: new channel_1.GuaranteedChannel({
|
|
141
|
-
channel: new
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
loggerFactory: this.getLogger.bind(this),
|
|
145
|
-
logger: channelLogger,
|
|
146
|
-
channelFactory: (url, logger) => (new channel_1.SocketChannel({ url: url, logger: logger })),
|
|
147
|
+
channel: new httpBeaconChannel_1.HttpBeaconChannel({
|
|
148
|
+
appId: appId,
|
|
149
|
+
endpointUrl: trackerEndpointUrl,
|
|
147
150
|
cidAssigner: this.getCidAssigner(),
|
|
148
|
-
|
|
151
|
+
logger: channelLogger,
|
|
149
152
|
}),
|
|
150
153
|
stamper: new guaranteedChannel_1.TimeStamper(),
|
|
151
154
|
ackTimeout: 10000,
|
|
152
155
|
logger: channelLogger,
|
|
153
156
|
}),
|
|
154
157
|
retryPolicy: new retry_1.BackoffPolicy({
|
|
155
|
-
minRetryDelay:
|
|
158
|
+
minRetryDelay: 3000, // 3 seconds
|
|
156
159
|
maxRetryDelay: 60 * 1000, // 60 seconds
|
|
157
160
|
backoffFactor: 1.5, // 1.5 ^ attempt
|
|
158
161
|
backoffJitter: 1, // add randomness
|
|
@@ -193,9 +196,7 @@ class Container {
|
|
|
193
196
|
return this.beaconQueue;
|
|
194
197
|
}
|
|
195
198
|
createBeaconQueue() {
|
|
196
|
-
|
|
197
|
-
const tab = context.getTab();
|
|
198
|
-
return new queue_1.MonitoredQueue(new queue_1.CapacityRestrictedQueue(new queue_1.PersistentQueue(this.getGlobalTabStorage('queue'), tab.id), this.configuration.beaconQueueSize), this.getLogger('BeaconQueue'));
|
|
199
|
+
return new queue_1.MonitoredQueue(new queue_1.CapacityRestrictedQueue(new queue_1.PersistentQueue(this.getGlobalTabStorage('queue')), this.configuration.beaconQueueSize), this.getLogger('BeaconQueue'));
|
|
199
200
|
}
|
|
200
201
|
getLogger(...namespace) {
|
|
201
202
|
const prefix = `Croct${namespace.length === 0 ? '' : `:${namespace.join(':')}`}`;
|
|
@@ -220,9 +221,8 @@ class Container {
|
|
|
220
221
|
return new namespacedStorage_1.NamespacedStorage(this.getLocalStorage(), this.resolveStorageNamespace(namespace, ...subnamespace));
|
|
221
222
|
}
|
|
222
223
|
resolveStorageNamespace(namespace, ...subnamespace) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
.toLowerCase()}].${[namespace].concat(subnamespace).join('.')}`;
|
|
224
|
+
const { appId } = this.configuration;
|
|
225
|
+
return `croct[${appId.toLowerCase()}].${[namespace].concat(subnamespace).join('.')}`;
|
|
226
226
|
}
|
|
227
227
|
getLocalStorage() {
|
|
228
228
|
return localStorage;
|
|
@@ -267,4 +267,5 @@ class Container {
|
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
269
|
exports.Container = Container;
|
|
270
|
+
Container.DEFAULT_FETCH_TIMEOUT = 5000; // 5 seconds
|
|
270
271
|
//# sourceMappingURL=container.js.map
|