@croct/sdk 0.17.7 → 0.17.8
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/activeRecord.cjs.map +1 -0
- package/activeRecord.d.ts +8 -4
- package/activeRecord.js +115 -106
- package/activeRecord.js.map +1 -1
- package/apiKey.cjs.map +1 -0
- package/apiKey.d.ts +4 -2
- package/apiKey.js +152 -141
- package/apiKey.js.map +1 -1
- package/base64Url.cjs.map +1 -0
- package/base64Url.d.ts +4 -2
- package/base64Url.js +8 -15
- package/base64Url.js.map +1 -1
- package/cache/cache.cjs.map +1 -0
- package/cache/cache.d.ts +6 -4
- package/cache/cache.js +9 -10
- package/cache/cache.js.map +1 -1
- package/cache/cookieCache.cjs.map +1 -0
- package/cache/cookieCache.d.ts +6 -3
- package/cache/cookieCache.js +52 -54
- package/cache/cookieCache.js.map +1 -1
- package/cache/fallbackCache.cjs.map +1 -0
- package/cache/fallbackCache.d.ts +5 -2
- package/cache/fallbackCache.js +20 -21
- package/cache/fallbackCache.js.map +1 -1
- package/cache/inMemoryCache.cjs.map +1 -0
- package/cache/inMemoryCache.d.ts +5 -2
- package/cache/inMemoryCache.js +15 -17
- package/cache/inMemoryCache.js.map +1 -1
- package/cache/index.cjs.map +1 -0
- package/cache/index.d.ts +4 -4
- package/cache/index.js +9 -11
- package/cache/index.js.map +1 -1
- package/cache/localStorageCache.cjs.map +1 -0
- package/cache/localStorageCache.d.ts +5 -2
- package/cache/localStorageCache.js +55 -63
- package/cache/localStorageCache.js.map +1 -1
- package/channel/channel.cjs.map +1 -0
- package/channel/channel.d.ts +8 -6
- package/channel/channel.js +21 -22
- package/channel/channel.js.map +1 -1
- package/channel/encodedChannel.cjs.map +1 -0
- package/channel/encodedChannel.d.ts +6 -3
- package/channel/encodedChannel.js +13 -14
- package/channel/encodedChannel.js.map +1 -1
- package/channel/guaranteedChannel.cjs.map +1 -0
- package/channel/guaranteedChannel.d.ts +9 -7
- package/channel/guaranteedChannel.js +74 -73
- package/channel/guaranteedChannel.js.map +1 -1
- package/channel/httpBeaconChannel.cjs.map +1 -0
- package/channel/httpBeaconChannel.d.ts +9 -6
- package/channel/httpBeaconChannel.js +82 -83
- package/channel/httpBeaconChannel.js.map +1 -1
- package/channel/index.cjs.map +1 -0
- package/channel/index.d.ts +12 -7
- package/channel/index.js +15 -17
- package/channel/index.js.map +1 -1
- package/channel/queuedChannel.cjs.map +1 -0
- package/channel/queuedChannel.d.ts +7 -4
- package/channel/queuedChannel.js +87 -97
- package/channel/queuedChannel.js.map +1 -1
- package/channel/retryChannel.cjs.map +1 -0
- package/channel/retryChannel.d.ts +7 -5
- package/channel/retryChannel.js +58 -57
- package/channel/retryChannel.js.map +1 -1
- package/channel/sandboxChannel.cjs.map +1 -0
- package/channel/sandboxChannel.d.ts +5 -2
- package/channel/sandboxChannel.js +34 -35
- package/channel/sandboxChannel.js.map +1 -1
- package/cid/assigner.cjs.map +1 -0
- package/cid/assigner.d.ts +3 -1
- package/cid/assigner.js +0 -2
- package/cid/assigner.js.map +1 -1
- package/cid/cachedAssigner.cjs.map +1 -0
- package/cid/cachedAssigner.d.ts +7 -5
- package/cid/cachedAssigner.js +37 -43
- package/cid/cachedAssigner.js.map +1 -1
- package/cid/fixedAssigner.cjs.map +1 -0
- package/cid/fixedAssigner.d.ts +5 -2
- package/cid/fixedAssigner.js +9 -10
- package/cid/fixedAssigner.js.map +1 -1
- package/cid/index.cjs.map +1 -0
- package/cid/index.d.ts +6 -4
- package/cid/index.js +9 -11
- package/cid/index.js.map +1 -1
- package/cid/remoteAssigner.cjs.map +1 -0
- package/cid/remoteAssigner.d.ts +6 -3
- package/cid/remoteAssigner.js +36 -37
- package/cid/remoteAssigner.js.map +1 -1
- package/constants.cjs.map +1 -0
- package/constants.d.ts +6 -4
- package/constants.js +10 -7
- package/constants.js.map +1 -1
- package/container.cjs.map +1 -0
- package/container.d.ts +28 -15
- package/container.js +269 -252
- package/container.js.map +1 -1
- package/contentFetcher.cjs.map +1 -0
- package/contentFetcher.d.ts +17 -14
- package/contentFetcher.js +156 -163
- package/contentFetcher.js.map +1 -1
- package/context.cjs.map +1 -0
- package/context.d.ts +13 -9
- package/context.js +80 -81
- package/context.js.map +1 -1
- package/error.cjs.map +1 -0
- package/error.d.ts +4 -2
- package/error.js +21 -21
- package/error.js.map +1 -1
- package/evaluator.cjs.map +1 -0
- package/evaluator.d.ts +18 -16
- package/evaluator.js +179 -179
- package/evaluator.js.map +1 -1
- package/eventManager.cjs.map +1 -0
- package/eventManager.d.ts +8 -6
- package/eventManager.js +24 -26
- package/eventManager.js.map +1 -1
- package/eventSubjectProcessor.cjs.map +1 -0
- package/eventSubjectProcessor.d.ts +16 -3
- package/eventSubjectProcessor.js +53 -59
- package/eventSubjectProcessor.js.map +1 -1
- package/facade/contentFetcherFacade.cjs.map +1 -0
- package/facade/contentFetcherFacade.d.ts +16 -7
- package/facade/contentFetcherFacade.js +32 -35
- package/facade/contentFetcherFacade.js.map +1 -1
- package/facade/evaluatorFacade.cjs.map +1 -0
- package/facade/evaluatorFacade.d.ts +17 -10
- package/facade/evaluatorFacade.js +56 -60
- package/facade/evaluatorFacade.js.map +1 -1
- package/facade/index.cjs.map +1 -0
- package/facade/index.d.ts +29 -7
- package/facade/index.js +19 -19
- package/facade/index.js.map +1 -1
- package/facade/sdkFacade.cjs.map +1 -0
- package/facade/sdkFacade.d.ts +33 -15
- package/facade/sdkFacade.js +201 -214
- package/facade/sdkFacade.js.map +1 -1
- package/facade/sessionFacade.cjs.map +1 -0
- package/facade/sessionFacade.d.ts +18 -3
- package/facade/sessionFacade.js +10 -11
- package/facade/sessionFacade.js.map +1 -1
- package/facade/sessionPatch.cjs.map +1 -0
- package/facade/sessionPatch.d.ts +17 -4
- package/facade/sessionPatch.js +22 -24
- package/facade/sessionPatch.js.map +1 -1
- package/facade/trackerFacade.cjs.map +1 -0
- package/facade/trackerFacade.d.ts +17 -4
- package/facade/trackerFacade.js +67 -57
- package/facade/trackerFacade.js.map +1 -1
- package/facade/userFacade.cjs.map +1 -0
- package/facade/userFacade.d.ts +21 -4
- package/facade/userFacade.js +17 -18
- package/facade/userFacade.js.map +1 -1
- package/facade/userPatch.cjs.map +1 -0
- package/facade/userPatch.d.ts +17 -4
- package/facade/userPatch.js +22 -24
- package/facade/userPatch.js.map +1 -1
- package/help.cjs.map +1 -0
- package/help.d.ts +3 -1
- package/help.js +19 -23
- package/help.js.map +1 -1
- package/index.cjs.map +1 -0
- package/index.d.ts +25 -3
- package/index.js +7 -7
- package/index.js.map +1 -1
- package/logging/consoleLogger.cjs.map +1 -0
- package/logging/consoleLogger.d.ts +5 -2
- package/logging/consoleLogger.js +23 -24
- package/logging/consoleLogger.js.map +1 -1
- package/logging/filteredLogger.cjs.map +1 -0
- package/logging/filteredLogger.d.ts +8 -5
- package/logging/filteredLogger.js +36 -37
- package/logging/filteredLogger.js.map +1 -1
- package/logging/index.cjs.map +1 -0
- package/logging/index.d.ts +5 -5
- package/logging/index.js +11 -13
- package/logging/index.js.map +1 -1
- package/logging/logger.cjs.map +1 -0
- package/logging/logger.d.ts +4 -2
- package/logging/logger.js +0 -2
- package/logging/logger.js.map +1 -1
- package/logging/namespacedLogger.cjs.map +1 -0
- package/logging/namespacedLogger.d.ts +5 -2
- package/logging/namespacedLogger.js +22 -23
- package/logging/namespacedLogger.js.map +1 -1
- package/logging/nullLogger.cjs.map +1 -0
- package/logging/nullLogger.d.ts +5 -2
- package/logging/nullLogger.js +11 -16
- package/logging/nullLogger.js.map +1 -1
- package/namespacedStorage.cjs.map +1 -0
- package/namespacedStorage.d.ts +3 -1
- package/namespacedStorage.js +51 -52
- package/namespacedStorage.js.map +1 -1
- package/package.json +60 -6
- package/patch.cjs.map +1 -0
- package/patch.d.ts +6 -4
- package/patch.js +0 -2
- package/patch.js.map +1 -1
- package/queue/capacityRestrictedQueue.cjs.map +1 -0
- package/queue/capacityRestrictedQueue.d.ts +5 -2
- package/queue/capacityRestrictedQueue.js +31 -32
- package/queue/capacityRestrictedQueue.js.map +1 -1
- package/queue/inMemoryQueue.cjs.map +1 -0
- package/queue/inMemoryQueue.d.ts +5 -2
- package/queue/inMemoryQueue.js +32 -34
- package/queue/inMemoryQueue.js.map +1 -1
- package/queue/index.cjs.map +1 -0
- package/queue/index.d.ts +6 -5
- package/queue/index.js +11 -13
- package/queue/index.js.map +1 -1
- package/queue/monitoredQueue.cjs.map +1 -0
- package/queue/monitoredQueue.d.ts +8 -5
- package/queue/monitoredQueue.js +104 -110
- package/queue/monitoredQueue.js.map +1 -1
- package/queue/persistentQueue.cjs.map +1 -0
- package/queue/persistentQueue.d.ts +5 -2
- package/queue/persistentQueue.js +52 -54
- package/queue/persistentQueue.js.map +1 -1
- package/queue/queue.cjs.map +1 -0
- package/queue/queue.d.ts +3 -1
- package/queue/queue.js +0 -2
- package/queue/queue.js.map +1 -1
- package/retry/arbitraryPolicy.cjs.map +1 -0
- package/retry/arbitraryPolicy.d.ts +5 -2
- package/retry/arbitraryPolicy.js +14 -15
- package/retry/arbitraryPolicy.js.map +1 -1
- package/retry/backoffPolicy.cjs.map +1 -0
- package/retry/backoffPolicy.d.ts +5 -3
- package/retry/backoffPolicy.js +52 -50
- package/retry/backoffPolicy.js.map +1 -1
- package/retry/index.cjs.map +1 -0
- package/retry/index.d.ts +5 -5
- package/retry/index.js +11 -13
- package/retry/index.js.map +1 -1
- package/retry/maxAttemptsPolicy.cjs.map +1 -0
- package/retry/maxAttemptsPolicy.d.ts +5 -2
- package/retry/maxAttemptsPolicy.js +17 -18
- package/retry/maxAttemptsPolicy.js.map +1 -1
- package/retry/neverPolicy.cjs.map +1 -0
- package/retry/neverPolicy.d.ts +5 -2
- package/retry/neverPolicy.js +9 -10
- package/retry/neverPolicy.js.map +1 -1
- package/retry/policy.cjs.map +1 -0
- package/retry/policy.d.ts +3 -1
- package/retry/policy.js +0 -2
- package/retry/policy.js.map +1 -1
- package/schema/attributeSchema.cjs.map +1 -0
- package/schema/attributeSchema.d.ts +6 -2
- package/schema/attributeSchema.js +7 -7
- package/schema/attributeSchema.js.map +1 -1
- package/schema/contentFetcherSchemas.cjs.map +1 -0
- package/schema/contentFetcherSchemas.d.ts +6 -2
- package/schema/contentFetcherSchemas.js +24 -21
- package/schema/contentFetcherSchemas.js.map +1 -1
- package/schema/contentSchemas.cjs.map +1 -0
- package/schema/contentSchemas.d.ts +6 -2
- package/schema/contentSchemas.js +45 -45
- package/schema/contentSchemas.js.map +1 -1
- package/schema/contextSchemas.cjs.map +1 -0
- package/schema/contextSchemas.d.ts +6 -2
- package/schema/contextSchemas.js +6 -6
- package/schema/contextSchemas.js.map +1 -1
- package/schema/ecommerceSchemas.cjs.map +1 -0
- package/schema/ecommerceSchemas.d.ts +10 -6
- package/schema/ecommerceSchemas.js +176 -172
- package/schema/ecommerceSchemas.js.map +1 -1
- package/schema/evaluatorSchemas.cjs.map +1 -0
- package/schema/evaluatorSchemas.d.ts +6 -2
- package/schema/evaluatorSchemas.js +46 -30
- package/schema/evaluatorSchemas.js.map +1 -1
- package/schema/eventSchemas.cjs.map +1 -0
- package/schema/eventSchemas.d.ts +16 -12
- package/schema/eventSchemas.js +125 -102
- package/schema/eventSchemas.js.map +1 -1
- package/schema/index.cjs.map +1 -0
- package/schema/index.d.ts +14 -11
- package/schema/index.js +11 -14
- package/schema/index.js.map +1 -1
- package/schema/loggerSchema.cjs.map +1 -0
- package/schema/loggerSchema.d.ts +6 -2
- package/schema/loggerSchema.js +13 -13
- package/schema/loggerSchema.js.map +1 -1
- package/schema/operationSchemas.cjs.map +1 -0
- package/schema/operationSchemas.d.ts +14 -10
- package/schema/operationSchemas.js +85 -69
- package/schema/operationSchemas.js.map +1 -1
- package/schema/sdkFacadeSchemas.cjs.map +1 -0
- package/schema/sdkFacadeSchemas.d.ts +6 -2
- package/schema/sdkFacadeSchemas.js +65 -51
- package/schema/sdkFacadeSchemas.js.map +1 -1
- package/schema/sdkSchemas.cjs.map +1 -0
- package/schema/sdkSchemas.d.ts +8 -4
- package/schema/sdkSchemas.js +80 -78
- package/schema/sdkSchemas.js.map +1 -1
- package/schema/tokenSchema.cjs.map +1 -0
- package/schema/tokenSchema.d.ts +6 -2
- package/schema/tokenSchema.js +41 -38
- package/schema/tokenSchema.js.map +1 -1
- package/schema/userSchema.cjs.map +1 -0
- package/schema/userSchema.d.ts +6 -2
- package/schema/userSchema.js +183 -134
- package/schema/userSchema.js.map +1 -1
- package/sdk.cjs.map +1 -0
- package/sdk.d.ts +28 -14
- package/sdk.js +106 -108
- package/sdk.js.map +1 -1
- package/sdkEvents.cjs.map +1 -0
- package/sdkEvents.d.ts +10 -5
- package/sdkEvents.js +0 -2
- package/sdkEvents.js.map +1 -1
- package/sourceLocation.cjs.map +1 -0
- package/sourceLocation.d.ts +7 -5
- package/sourceLocation.js +56 -57
- package/sourceLocation.js.map +1 -1
- package/tab.cjs.map +1 -0
- package/tab.d.ts +9 -7
- package/tab.js +93 -90
- package/tab.js.map +1 -1
- package/token/cachedTokenStore.cjs.map +1 -0
- package/token/cachedTokenStore.d.ts +8 -3
- package/token/cachedTokenStore.js +22 -24
- package/token/cachedTokenStore.js.map +1 -1
- package/token/inMemoryTokenStore.cjs.map +1 -0
- package/token/inMemoryTokenStore.d.ts +7 -2
- package/token/inMemoryTokenStore.js +12 -13
- package/token/inMemoryTokenStore.js.map +1 -1
- package/token/index.cjs.map +1 -0
- package/token/index.d.ts +7 -4
- package/token/index.js +9 -11
- package/token/index.js.map +1 -1
- package/token/replicatedTokenStore.cjs.map +1 -0
- package/token/replicatedTokenStore.d.ts +7 -2
- package/token/replicatedTokenStore.js +14 -15
- package/token/replicatedTokenStore.js.map +1 -1
- package/token/token.cjs.map +1 -0
- package/token/token.d.ts +11 -8
- package/token/token.js +212 -195
- package/token/token.js.map +1 -1
- package/tracker.cjs.map +1 -0
- package/tracker.d.ts +20 -13
- package/tracker.js +307 -307
- package/tracker.js.map +1 -1
- package/trackingEvents.cjs.map +1 -0
- package/trackingEvents.d.ts +65 -62
- package/trackingEvents.js +57 -56
- package/trackingEvents.js.map +1 -1
- package/transformer.cjs.map +1 -0
- package/transformer.d.ts +4 -2
- package/transformer.js +5 -6
- package/transformer.js.map +1 -1
- package/utilityTypes.cjs.map +1 -0
- package/utilityTypes.d.ts +4 -2
- package/utilityTypes.js +0 -2
- package/utilityTypes.js.map +1 -1
- package/uuid.cjs.map +1 -0
- package/uuid.d.ts +3 -1
- package/uuid.js +27 -32
- package/uuid.js.map +1 -1
- package/validation/arrayType.cjs.map +1 -0
- package/validation/arrayType.d.ts +5 -3
- package/validation/arrayType.js +45 -41
- package/validation/arrayType.js.map +1 -1
- package/validation/booleanType.cjs.map +1 -0
- package/validation/booleanType.d.ts +5 -2
- package/validation/booleanType.js +19 -16
- package/validation/booleanType.js.map +1 -1
- package/validation/functionType.cjs.map +1 -0
- package/validation/functionType.d.ts +5 -2
- package/validation/functionType.js +19 -16
- package/validation/functionType.js.map +1 -1
- package/validation/index.cjs.map +1 -0
- package/validation/index.d.ts +12 -12
- package/validation/index.js +27 -29
- package/validation/index.js.map +1 -1
- package/validation/jsonType.cjs.map +1 -0
- package/validation/jsonType.d.ts +8 -6
- package/validation/jsonType.js +89 -82
- package/validation/jsonType.js.map +1 -1
- package/validation/mixedSchema.cjs.map +1 -0
- package/validation/mixedSchema.d.ts +5 -2
- package/validation/mixedSchema.js +5 -7
- package/validation/mixedSchema.js.map +1 -1
- package/validation/nullType.cjs.map +1 -0
- package/validation/nullType.d.ts +5 -2
- package/validation/nullType.js +19 -16
- package/validation/nullType.js.map +1 -1
- package/validation/numberType.cjs.map +1 -0
- package/validation/numberType.d.ts +5 -3
- package/validation/numberType.js +40 -32
- package/validation/numberType.js.map +1 -1
- package/validation/objectType.cjs.map +1 -0
- package/validation/objectType.d.ts +5 -3
- package/validation/objectType.js +84 -85
- package/validation/objectType.js.map +1 -1
- package/validation/schema.cjs.map +1 -0
- package/validation/schema.d.ts +5 -3
- package/validation/schema.js +8 -9
- package/validation/schema.js.map +1 -1
- package/validation/stringType.cjs.map +1 -0
- package/validation/stringType.d.ts +5 -3
- package/validation/stringType.js +74 -70
- package/validation/stringType.js.map +1 -1
- package/validation/unionType.cjs.map +1 -0
- package/validation/unionType.d.ts +5 -2
- package/validation/unionType.js +37 -35
- package/validation/unionType.js.map +1 -1
- package/validation/violation.cjs.map +1 -0
- package/validation/violation.d.ts +4 -2
- package/validation/violation.js +18 -18
- package/validation/violation.js.map +1 -1
package/sdk.js
CHANGED
|
@@ -1,113 +1,111 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const constants_1 = require("./constants");
|
|
6
|
-
const schema_1 = require("./schema");
|
|
7
|
-
const error_1 = require("./error");
|
|
1
|
+
import { Container } from "./container";
|
|
2
|
+
import { BASE_ENDPOINT_URL, VERSION } from "./constants";
|
|
3
|
+
import { sdkConfigurationSchema } from "./schema";
|
|
4
|
+
import { formatCause } from "./error";
|
|
8
5
|
function validateConfiguration(configuration) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
6
|
+
if (typeof configuration !== "object" || configuration === null) {
|
|
7
|
+
throw new Error("The configuration must be a key-value map.");
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
sdkConfigurationSchema.validate(configuration);
|
|
11
|
+
} catch (violation) {
|
|
12
|
+
throw new Error(`Invalid configuration: ${formatCause(violation)}`);
|
|
13
|
+
}
|
|
18
14
|
}
|
|
19
15
|
class Sdk {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
16
|
+
constructor(container) {
|
|
17
|
+
this.container = container;
|
|
18
|
+
}
|
|
19
|
+
static init(configuration) {
|
|
20
|
+
validateConfiguration(configuration);
|
|
21
|
+
const {
|
|
22
|
+
eventMetadata: customMetadata = {},
|
|
23
|
+
baseEndpointUrl = BASE_ENDPOINT_URL,
|
|
24
|
+
cidAssignerEndpointUrl,
|
|
25
|
+
...containerConfiguration
|
|
26
|
+
} = configuration;
|
|
27
|
+
const eventMetadata = {
|
|
28
|
+
sdkVersion: VERSION
|
|
29
|
+
};
|
|
30
|
+
for (const metadata of Object.keys(customMetadata)) {
|
|
31
|
+
eventMetadata[`custom_${metadata}`] = customMetadata[metadata];
|
|
32
|
+
}
|
|
33
|
+
const baseHttpEndpoint = baseEndpointUrl.replace(/\/+$/, "");
|
|
34
|
+
const container = new Container({
|
|
35
|
+
...containerConfiguration,
|
|
36
|
+
evaluationBaseEndpointUrl: baseHttpEndpoint,
|
|
37
|
+
contentBaseEndpointUrl: baseHttpEndpoint,
|
|
38
|
+
trackerEndpointUrl: `${baseHttpEndpoint}/client/web/track`,
|
|
39
|
+
cidAssignerEndpointUrl: cidAssignerEndpointUrl ?? `${baseHttpEndpoint}/client/web/cid`,
|
|
40
|
+
beaconQueueSize: containerConfiguration.beaconQueueSize ?? 100,
|
|
41
|
+
eventMetadata
|
|
42
|
+
});
|
|
43
|
+
const logger = container.getLogger();
|
|
44
|
+
const { appId, tokenScope } = container.getConfiguration();
|
|
45
|
+
logger.debug(
|
|
46
|
+
"\n\n \u2588\u2588\u2588\u2588\u2588\u2588\u2001\u2588\u2588\u2588\u2588\u2588\u2588\u2001 \u2588\u2588\u2588\u2588\u2588\u2588\u2001 \u2588\u2588\u2588\u2588\u2588\u2588\u2001\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2001\n\u2588\u2588\u2001\u2001\u2001\u2001\u2001\u2001\u2588\u2588\u2001\u2001\u2001\u2588\u2588\u2001\u2588\u2588\u2001\u2001\u2001\u2001\u2588\u2588\u2001\u2588\u2588\u2001\u2001\u2001\u2001\u2001\u2001\u2001\u2001\u2001\u2588\u2588\u2001\u2001\u2001\u2001\n\u2588\u2588\u2001 \u2588\u2588\u2588\u2588\u2588\u2588\u2001\u2001\u2588\u2588\u2001 \u2588\u2588\u2001\u2588\u2588\u2001 \u2588\u2588\u2001\u2001\u2001\u2001\n\u2588\u2588\u2001 \u2588\u2588\u2001\u2001\u2001\u2588\u2588\u2001\u2588\u2588\u2001 \u2588\u2588\u2001\u2588\u2588\u2001 \u2588\u2588\u2001\u2001\u2001\u2001\n \u2588\u2588\u2588\u2588\u2588\u2588\u2001\u2588\u2588\u2001 \u2588\u2588\u2001\u2001\u2588\u2588\u2588\u2588\u2588\u2588\u2001\u2001\u2001\u2588\u2588\u2588\u2588\u2588\u2588\u2001 \u2588\u2588\u2001\u2001\u2001\u2001\n\n"
|
|
47
|
+
);
|
|
48
|
+
logger.info(`Initializing SDK v${VERSION}...`);
|
|
49
|
+
logger.debug(`App ID: ${appId}`);
|
|
50
|
+
const context = container.getContext();
|
|
51
|
+
const tab = context.getTab();
|
|
52
|
+
const user = context.getUser();
|
|
53
|
+
logger.debug(`${tab.isNew ? "New" : "Current"} tab: ${tab.id}`);
|
|
54
|
+
logger.debug(`Token scope: ${tokenScope}`);
|
|
55
|
+
logger.debug(`Current user: ${user !== null ? user : "anonymous"}`);
|
|
56
|
+
logger.debug(`Test mode: ${containerConfiguration.test}`);
|
|
57
|
+
logger.info("\u26A1 Croct SDK is ready!");
|
|
58
|
+
return new Sdk(container);
|
|
59
|
+
}
|
|
60
|
+
get appId() {
|
|
61
|
+
const { appId } = this.container.getConfiguration();
|
|
62
|
+
return appId;
|
|
63
|
+
}
|
|
64
|
+
get cidAssigner() {
|
|
65
|
+
return this.container.getCidAssigner();
|
|
66
|
+
}
|
|
67
|
+
get previewTokenStore() {
|
|
68
|
+
return this.container.getPreviewTokenStore();
|
|
69
|
+
}
|
|
70
|
+
get userTokenStore() {
|
|
71
|
+
return this.container.getUserTokenStore();
|
|
72
|
+
}
|
|
73
|
+
get context() {
|
|
74
|
+
return this.container.getContext();
|
|
75
|
+
}
|
|
76
|
+
get tracker() {
|
|
77
|
+
return this.container.getTracker();
|
|
78
|
+
}
|
|
79
|
+
get evaluator() {
|
|
80
|
+
return this.container.getEvaluator();
|
|
81
|
+
}
|
|
82
|
+
get contentFetcher() {
|
|
83
|
+
return this.container.getContentFetcher();
|
|
84
|
+
}
|
|
85
|
+
get eventManager() {
|
|
86
|
+
return this.container.getEventManager();
|
|
87
|
+
}
|
|
88
|
+
getLogger(...namespace) {
|
|
89
|
+
return this.container.getLogger(...namespace);
|
|
90
|
+
}
|
|
91
|
+
getTabStorage(namespace, ...subnamespace) {
|
|
92
|
+
return this.container.getTabStorage(namespace, ...subnamespace);
|
|
93
|
+
}
|
|
94
|
+
getBrowserStorage(namespace, ...subnamespace) {
|
|
95
|
+
return this.container.getBrowserStorage(namespace, ...subnamespace);
|
|
96
|
+
}
|
|
97
|
+
async close() {
|
|
98
|
+
if (this.closed) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const logger = this.getLogger();
|
|
102
|
+
logger.debug("Closing SDK...");
|
|
103
|
+
this.closed = true;
|
|
104
|
+
await this.container.dispose();
|
|
105
|
+
logger.info("SDK closed.");
|
|
106
|
+
}
|
|
111
107
|
}
|
|
112
|
-
|
|
108
|
+
export {
|
|
109
|
+
Sdk
|
|
110
|
+
};
|
|
113
111
|
//# sourceMappingURL=sdk.js.map
|
package/sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["src/sdk.ts"],"sourcesContent":["import {Container, DependencyResolver} from './container';\nimport {Context, TokenScope} from './context';\nimport {Logger} from './logging';\nimport {BASE_ENDPOINT_URL, VERSION} from './constants';\nimport {sdkConfigurationSchema} from './schema';\nimport {formatCause} from './error';\nimport {Tracker, TrackingEventProcessor} from './tracker';\nimport {Evaluator} from './evaluator';\nimport {SdkEventMap} from './sdkEvents';\nimport {EventManager} from './eventManager';\nimport {CidAssigner} from './cid';\nimport {UrlSanitizer} from './tab';\nimport {ContentFetcher} from './contentFetcher';\nimport {TokenStore} from './token';\nimport {CookieCacheConfiguration} from './cache/cookieCache';\n\nexport type Configuration = {\n appId: string,\n tokenScope: TokenScope,\n debug: boolean,\n test: boolean,\n clientId?: string,\n baseEndpointUrl?: string,\n disableCidMirroring: boolean,\n cidAssignerEndpointUrl?: string,\n beaconQueueSize?: number,\n urlSanitizer?: UrlSanitizer,\n logger?: Logger,\n eventMetadata?: {[key: string]: string},\n cookie?: {\n clientId?: CookieCacheConfiguration,\n userToken?: CookieCacheConfiguration,\n previewToken?: CookieCacheConfiguration,\n },\n eventProcessor?: DependencyResolver<TrackingEventProcessor>,\n defaultFetchTimeout?: number,\n defaultPreferredLocale?: string,\n};\n\nfunction validateConfiguration(configuration: unknown): asserts configuration is Configuration {\n if (typeof configuration !== 'object' || configuration === null) {\n throw new Error('The configuration must be a key-value map.');\n }\n\n try {\n sdkConfigurationSchema.validate(configuration);\n } catch (violation) {\n throw new Error(`Invalid configuration: ${formatCause(violation)}`);\n }\n}\n\nexport class Sdk {\n private container: Container;\n\n private closed: boolean;\n\n private constructor(container: Container) {\n this.container = container;\n }\n\n public static init(configuration: Configuration): Sdk {\n validateConfiguration(configuration);\n\n const {\n eventMetadata: customMetadata = {},\n baseEndpointUrl = BASE_ENDPOINT_URL,\n cidAssignerEndpointUrl,\n ...containerConfiguration\n } = configuration;\n\n const eventMetadata: {[key: string]: string} = {\n sdkVersion: VERSION,\n };\n\n for (const metadata of Object.keys(customMetadata)) {\n eventMetadata[`custom_${metadata}`] = customMetadata[metadata];\n }\n\n const baseHttpEndpoint = baseEndpointUrl.replace(/\\/+$/, '');\n\n const container = new Container({\n ...containerConfiguration,\n evaluationBaseEndpointUrl: baseHttpEndpoint,\n contentBaseEndpointUrl: baseHttpEndpoint,\n trackerEndpointUrl: `${baseHttpEndpoint}/client/web/track`,\n cidAssignerEndpointUrl: cidAssignerEndpointUrl ?? `${baseHttpEndpoint}/client/web/cid`,\n beaconQueueSize: containerConfiguration.beaconQueueSize ?? 100,\n eventMetadata: eventMetadata,\n });\n\n const logger = container.getLogger();\n const {appId, tokenScope} = container.getConfiguration();\n\n logger.debug(\n '\\n\\n'\n + ' ██████ ██████ ██████ ██████ ████████ \\n'\n + '██ ██ ██ ██ ██ ██ ██ \\n'\n + '██ ██████ ██ ██ ██ ██ \\n'\n + '██ ██ ██ ██ ██ ██ ██ \\n'\n + ' ██████ ██ ██ ██████ ██████ ██ \\n'\n + '\\n',\n );\n\n logger.info(`Initializing SDK v${VERSION}...`);\n logger.debug(`App ID: ${appId}`);\n\n const context = container.getContext();\n const tab = context.getTab();\n const user = context.getUser();\n\n logger.debug(`${tab.isNew ? 'New' : 'Current'} tab: ${tab.id}`);\n logger.debug(`Token scope: ${tokenScope}`);\n logger.debug(`Current user: ${user !== null ? user : 'anonymous'}`);\n logger.debug(`Test mode: ${containerConfiguration.test}`);\n logger.info('⚡ Croct SDK is ready!');\n\n return new Sdk(container);\n }\n\n public get appId(): string {\n const {appId} = this.container.getConfiguration();\n\n return appId;\n }\n\n public get cidAssigner(): CidAssigner {\n return this.container.getCidAssigner();\n }\n\n public get previewTokenStore(): TokenStore {\n return this.container.getPreviewTokenStore();\n }\n\n public get userTokenStore(): TokenStore {\n return this.container.getUserTokenStore();\n }\n\n public get context(): Context {\n return this.container.getContext();\n }\n\n public get tracker(): Tracker {\n return this.container.getTracker();\n }\n\n public get evaluator(): Evaluator {\n return this.container.getEvaluator();\n }\n\n public get contentFetcher(): ContentFetcher {\n return this.container.getContentFetcher();\n }\n\n public get eventManager(): EventManager<SdkEventMap> {\n return this.container.getEventManager();\n }\n\n public getLogger(...namespace: string[]): Logger {\n return this.container.getLogger(...namespace);\n }\n\n public getTabStorage(namespace: string, ...subnamespace: string[]): Storage {\n return this.container.getTabStorage(namespace, ...subnamespace);\n }\n\n public getBrowserStorage(namespace: string, ...subnamespace: string[]): Storage {\n return this.container.getBrowserStorage(namespace, ...subnamespace);\n }\n\n public async close(): Promise<void> {\n if (this.closed) {\n return;\n }\n\n const logger = this.getLogger();\n\n logger.debug('Closing SDK...');\n this.closed = true;\n await this.container.dispose();\n\n logger.info('SDK closed.');\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/sdkEvents.ts"],"sourcesContent":["import {Token} from './token';\n\nexport interface TokenChanged {\n oldToken: Token|null;\n newToken: Token|null;\n}\n\nexport type SdkEventMap = Record<string, Record<string, unknown>> & {\n tokenChanged: TokenChanged,\n};\n\nexport type SdkEventType = keyof SdkEventMap;\n\nexport type SdkEvent<T extends SdkEventType = SdkEventType> =\n T extends SdkEventType ? SdkEventMap[T] : SdkEventMap[SdkEventType];\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
package/sdkEvents.d.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { Token } from './token';
|
|
2
|
-
|
|
1
|
+
import { Token } from './token/token.js';
|
|
2
|
+
import '@croct/json';
|
|
3
|
+
import './apiKey.js';
|
|
4
|
+
|
|
5
|
+
interface TokenChanged {
|
|
3
6
|
oldToken: Token | null;
|
|
4
7
|
newToken: Token | null;
|
|
5
8
|
}
|
|
6
|
-
|
|
9
|
+
type SdkEventMap = Record<string, Record<string, unknown>> & {
|
|
7
10
|
tokenChanged: TokenChanged;
|
|
8
11
|
};
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
type SdkEventType = keyof SdkEventMap;
|
|
13
|
+
type SdkEvent<T extends SdkEventType = SdkEventType> = T extends SdkEventType ? SdkEventMap[T] : SdkEventMap[SdkEventType];
|
|
14
|
+
|
|
15
|
+
export type { SdkEvent, SdkEventMap, SdkEventType, TokenChanged };
|
package/sdkEvents.js
CHANGED
package/sdkEvents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/sourceLocation.ts"],"sourcesContent":["export type Position = {\n line: number,\n column: number,\n index: number,\n};\n\nexport type Location = {\n start: Position,\n end: Position,\n};\n\nexport function getLength(input: string): number {\n return [...input].length;\n}\n\nexport function getLocation(input: string, startIndex: number, endIndex: number): Location {\n if (startIndex < 0) {\n throw Error('The start index cannot be negative.');\n }\n\n if (endIndex < startIndex) {\n throw new Error('The end index must greater than or equal to the start index.');\n }\n\n let start: Position | undefined;\n let end: Position | undefined;\n\n const chars = [...input];\n let line = 1;\n let column = 0;\n\n for (let offset = 0; offset < chars.length; offset++) {\n const char = chars[offset];\n\n if (offset === startIndex) {\n start = {\n index: offset,\n line: line,\n column: column,\n };\n }\n\n if (offset === endIndex) {\n end = {\n index: offset,\n line: line,\n column: column,\n };\n\n break;\n }\n\n if (char === '\\n') {\n line += 1;\n column = 0;\n } else {\n column += 1;\n }\n }\n\n if (start === undefined) {\n start = {\n index: chars.length,\n line: line,\n column: column,\n };\n }\n\n if (end === undefined) {\n end = {\n index: chars.length,\n line: line,\n column: column,\n };\n }\n\n return {\n start: start,\n end: end,\n };\n}\n\nexport function getPosition(input: string, index: number): Position {\n return getLocation(input, index, index).start;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWO,SAAS,UAAU,OAAuB;AAC7C,SAAO,CAAC,GAAG,KAAK,EAAE;AACtB;AAEO,SAAS,YAAY,OAAe,YAAoB,UAA4B;AACvF,MAAI,aAAa,GAAG;AAChB,UAAM,MAAM,qCAAqC;AAAA,EACrD;AAEA,MAAI,WAAW,YAAY;AACvB,UAAM,IAAI,MAAM,8DAA8D;AAAA,EAClF;AAEA,MAAI;AACJ,MAAI;AAEJ,QAAM,QAAQ,CAAC,GAAG,KAAK;AACvB,MAAI,OAAO;AACX,MAAI,SAAS;AAEb,WAAS,SAAS,GAAG,SAAS,MAAM,QAAQ,UAAU;AAClD,UAAM,OAAO,MAAM,MAAM;AAEzB,QAAI,WAAW,YAAY;AACvB,cAAQ;AAAA,QACJ,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,WAAW,UAAU;AACrB,YAAM;AAAA,QACF,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAEA;AAAA,IACJ;AAEA,QAAI,SAAS,MAAM;AACf,cAAQ;AACR,eAAS;AAAA,IACb,OAAO;AACH,gBAAU;AAAA,IACd;AAAA,EACJ;AAEA,MAAI,UAAU,QAAW;AACrB,YAAQ;AAAA,MACJ,OAAO,MAAM;AAAA,MACb;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,QAAQ,QAAW;AACnB,UAAM;AAAA,MACF,OAAO,MAAM;AAAA,MACb;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,EACJ;AACJ;AAEO,SAAS,YAAY,OAAe,OAAyB;AAChE,SAAO,YAAY,OAAO,OAAO,KAAK,EAAE;AAC5C;","names":[]}
|
package/sourceLocation.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
type Position = {
|
|
2
2
|
line: number;
|
|
3
3
|
column: number;
|
|
4
4
|
index: number;
|
|
5
5
|
};
|
|
6
|
-
|
|
6
|
+
type Location = {
|
|
7
7
|
start: Position;
|
|
8
8
|
end: Position;
|
|
9
9
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
declare function getLength(input: string): number;
|
|
11
|
+
declare function getLocation(input: string, startIndex: number, endIndex: number): Location;
|
|
12
|
+
declare function getPosition(input: string, index: number): Position;
|
|
13
|
+
|
|
14
|
+
export { type Location, type Position, getLength, getLocation, getPosition };
|
package/sourceLocation.js
CHANGED
|
@@ -1,68 +1,67 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getLength = getLength;
|
|
4
|
-
exports.getLocation = getLocation;
|
|
5
|
-
exports.getPosition = getPosition;
|
|
6
1
|
function getLength(input) {
|
|
7
|
-
|
|
2
|
+
return [...input].length;
|
|
8
3
|
}
|
|
9
4
|
function getLocation(input, startIndex, endIndex) {
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
if (startIndex < 0) {
|
|
6
|
+
throw Error("The start index cannot be negative.");
|
|
7
|
+
}
|
|
8
|
+
if (endIndex < startIndex) {
|
|
9
|
+
throw new Error("The end index must greater than or equal to the start index.");
|
|
10
|
+
}
|
|
11
|
+
let start;
|
|
12
|
+
let end;
|
|
13
|
+
const chars = [...input];
|
|
14
|
+
let line = 1;
|
|
15
|
+
let column = 0;
|
|
16
|
+
for (let offset = 0; offset < chars.length; offset++) {
|
|
17
|
+
const char = chars[offset];
|
|
18
|
+
if (offset === startIndex) {
|
|
19
|
+
start = {
|
|
20
|
+
index: offset,
|
|
21
|
+
line,
|
|
22
|
+
column
|
|
23
|
+
};
|
|
12
24
|
}
|
|
13
|
-
if (
|
|
14
|
-
|
|
25
|
+
if (offset === endIndex) {
|
|
26
|
+
end = {
|
|
27
|
+
index: offset,
|
|
28
|
+
line,
|
|
29
|
+
column
|
|
30
|
+
};
|
|
31
|
+
break;
|
|
15
32
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
for (let offset = 0; offset < chars.length; offset++) {
|
|
22
|
-
const char = chars[offset];
|
|
23
|
-
if (offset === startIndex) {
|
|
24
|
-
start = {
|
|
25
|
-
index: offset,
|
|
26
|
-
line: line,
|
|
27
|
-
column: column,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
if (offset === endIndex) {
|
|
31
|
-
end = {
|
|
32
|
-
index: offset,
|
|
33
|
-
line: line,
|
|
34
|
-
column: column,
|
|
35
|
-
};
|
|
36
|
-
break;
|
|
37
|
-
}
|
|
38
|
-
if (char === '\n') {
|
|
39
|
-
line += 1;
|
|
40
|
-
column = 0;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
column += 1;
|
|
44
|
-
}
|
|
33
|
+
if (char === "\n") {
|
|
34
|
+
line += 1;
|
|
35
|
+
column = 0;
|
|
36
|
+
} else {
|
|
37
|
+
column += 1;
|
|
45
38
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
return {
|
|
61
|
-
start: start,
|
|
62
|
-
end: end,
|
|
39
|
+
}
|
|
40
|
+
if (start === void 0) {
|
|
41
|
+
start = {
|
|
42
|
+
index: chars.length,
|
|
43
|
+
line,
|
|
44
|
+
column
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (end === void 0) {
|
|
48
|
+
end = {
|
|
49
|
+
index: chars.length,
|
|
50
|
+
line,
|
|
51
|
+
column
|
|
63
52
|
};
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
start,
|
|
56
|
+
end
|
|
57
|
+
};
|
|
64
58
|
}
|
|
65
59
|
function getPosition(input, index) {
|
|
66
|
-
|
|
60
|
+
return getLocation(input, index, index).start;
|
|
67
61
|
}
|
|
62
|
+
export {
|
|
63
|
+
getLength,
|
|
64
|
+
getLocation,
|
|
65
|
+
getPosition
|
|
66
|
+
};
|
|
68
67
|
//# sourceMappingURL=sourceLocation.js.map
|
package/sourceLocation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["src/sourceLocation.ts"],"sourcesContent":["export type Position = {\n line: number,\n column: number,\n index: number,\n};\n\nexport type Location = {\n start: Position,\n end: Position,\n};\n\nexport function getLength(input: string): number {\n return [...input].length;\n}\n\nexport function getLocation(input: string, startIndex: number, endIndex: number): Location {\n if (startIndex < 0) {\n throw Error('The start index cannot be negative.');\n }\n\n if (endIndex < startIndex) {\n throw new Error('The end index must greater than or equal to the start index.');\n }\n\n let start: Position | undefined;\n let end: Position | undefined;\n\n const chars = [...input];\n let line = 1;\n let column = 0;\n\n for (let offset = 0; offset < chars.length; offset++) {\n const char = chars[offset];\n\n if (offset === startIndex) {\n start = {\n index: offset,\n line: line,\n column: column,\n };\n }\n\n if (offset === endIndex) {\n end = {\n index: offset,\n line: line,\n column: column,\n };\n\n break;\n }\n\n if (char === '\\n') {\n line += 1;\n column = 0;\n } else {\n column += 1;\n }\n }\n\n if (start === undefined) {\n start = {\n index: chars.length,\n line: line,\n column: column,\n };\n }\n\n if (end === undefined) {\n end = {\n index: chars.length,\n line: line,\n column: column,\n };\n }\n\n return {\n start: start,\n end: end,\n };\n}\n\nexport function getPosition(input: string, index: number): Position {\n return getLocation(input, index, index).start;\n}\n"],"mappings":"AAWO,SAAS,UAAU,OAAuB;AAC7C,SAAO,CAAC,GAAG,KAAK,EAAE;AACtB;AAEO,SAAS,YAAY,OAAe,YAAoB,UAA4B;AACvF,MAAI,aAAa,GAAG;AAChB,UAAM,MAAM,qCAAqC;AAAA,EACrD;AAEA,MAAI,WAAW,YAAY;AACvB,UAAM,IAAI,MAAM,8DAA8D;AAAA,EAClF;AAEA,MAAI;AACJ,MAAI;AAEJ,QAAM,QAAQ,CAAC,GAAG,KAAK;AACvB,MAAI,OAAO;AACX,MAAI,SAAS;AAEb,WAAS,SAAS,GAAG,SAAS,MAAM,QAAQ,UAAU;AAClD,UAAM,OAAO,MAAM,MAAM;AAEzB,QAAI,WAAW,YAAY;AACvB,cAAQ;AAAA,QACJ,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,WAAW,UAAU;AACrB,YAAM;AAAA,QACF,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MACJ;AAEA;AAAA,IACJ;AAEA,QAAI,SAAS,MAAM;AACf,cAAQ;AACR,eAAS;AAAA,IACb,OAAO;AACH,gBAAU;AAAA,IACd;AAAA,EACJ;AAEA,MAAI,UAAU,QAAW;AACrB,YAAQ;AAAA,MACJ,OAAO,MAAM;AAAA,MACb;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,QAAQ,QAAW;AACnB,UAAM;AAAA,MACF,OAAO,MAAM;AAAA,MACb;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,EACJ;AACJ;AAEO,SAAS,YAAY,OAAe,OAAyB;AAChE,SAAO,YAAY,OAAO,OAAO,KAAK,EAAE;AAC5C;","names":[]}
|
package/tab.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tab.ts"],"sourcesContent":["import {SynchronousEventManager, EventListener} from './eventManager';\n\nexport type TabEvent<T = Record<string, unknown>> = CustomEvent<{tab: Tab} & T>;\nexport type TabVisibilityChangeEvent = TabEvent<{visible: boolean}>;\nexport type TabUrlChangeEvent = TabEvent<{url: string}>;\n\nexport type UrlSanitizer = (url: string) => URL;\n\ntype TabEventMap = {\n focus: TabEvent,\n blur: TabEvent,\n load: TabEvent,\n unload: TabEvent,\n visibilityChange: TabVisibilityChangeEvent,\n urlChange: TabUrlChangeEvent,\n};\n\nconst EventMap: {[key: string]: keyof TabEventMap} = {\n focus: 'focus',\n blur: 'blur',\n beforeunload: 'unload',\n DOMContentLoaded: 'load',\n visibilitychange: 'visibilityChange',\n};\n\nexport class Tab {\n public readonly id: string;\n\n public readonly isNew: boolean;\n\n public readonly urlSanitizer?: UrlSanitizer;\n\n private readonly eventManager = new SynchronousEventManager<TabEventMap>();\n\n public constructor(id: string, isNew: boolean, urlSanitizer?: UrlSanitizer) {\n this.id = id;\n this.isNew = isNew;\n this.urlSanitizer = urlSanitizer;\n\n this.initialize();\n }\n\n private initialize(): void {\n const listener = (event: Event): void => {\n this.emit(EventMap[event.type], new CustomEvent(EventMap[event.type], {detail: {tab: this}}));\n };\n\n window.addEventListener('focus', listener, true);\n window.addEventListener('blur', listener, true);\n window.addEventListener('beforeunload', listener, true);\n window.addEventListener('DOMContentLoaded', listener, true);\n\n document.addEventListener(\n 'visibilitychange',\n () => {\n this.emit('visibilityChange', new CustomEvent('visibilityChange', {\n detail: {\n tab: this,\n visible: this.isVisible,\n },\n }));\n },\n true,\n );\n\n Tab.addUrlChangeListener(url => {\n this.emit('urlChange', new CustomEvent('urlChange', {detail: {tab: this, url: this.sanitizeUrl(url)}}));\n });\n }\n\n public get url(): string {\n return this.sanitizeUrl(window.location.href);\n }\n\n public get title(): string {\n return document.title;\n }\n\n public get referrer(): string {\n return document.referrer === '' ? '' : this.sanitizeUrl(document.referrer);\n }\n\n public get isVisible(): boolean {\n return document.visibilityState === 'visible';\n }\n\n public get document(): Document {\n return document;\n }\n\n public addListener<T extends keyof TabEventMap>(type: T, listener: EventListener<TabEventMap[T]>): void {\n this.eventManager.addListener(type, listener);\n }\n\n public removeListener<T extends keyof TabEventMap>(type: T, listener: EventListener<TabEventMap[T]>): void {\n this.eventManager.removeListener(type, listener);\n }\n\n private sanitizeUrl(url: string): string {\n const normalized = window.encodeURI(window.decodeURI(url));\n\n if (this.urlSanitizer !== undefined) {\n return this.urlSanitizer(normalized).toString();\n }\n\n return normalized;\n }\n\n private emit<T extends keyof TabEventMap>(type: T, event: TabEventMap[T]): void {\n this.eventManager.dispatch(type, event);\n }\n\n private static addUrlChangeListener(listener: {(url: string): void}): void {\n let url = window.location.href;\n\n const updateUrl = (): void => {\n const currentUrl = window.location.href;\n\n if (url !== currentUrl) {\n listener(currentUrl);\n\n url = currentUrl;\n }\n };\n\n const {pushState} = window.history;\n\n window.history.pushState = function interceptPushState(...args): any {\n const result = pushState.apply(window.history, args);\n\n updateUrl();\n\n return result;\n };\n\n const {replaceState} = window.history;\n\n window.history.replaceState = function interceptReplaceState(...args): any {\n const result = replaceState.apply(window.history, args);\n\n updateUrl();\n\n return result;\n };\n\n window.addEventListener('popstate', updateUrl, true);\n }\n}\n"],"mappings":"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","names":[]}
|
package/tab.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { EventListener } from './eventManager';
|
|
2
|
-
|
|
1
|
+
import { EventListener } from './eventManager.js';
|
|
2
|
+
|
|
3
|
+
type TabEvent<T = Record<string, unknown>> = CustomEvent<{
|
|
3
4
|
tab: Tab;
|
|
4
5
|
} & T>;
|
|
5
|
-
|
|
6
|
+
type TabVisibilityChangeEvent = TabEvent<{
|
|
6
7
|
visible: boolean;
|
|
7
8
|
}>;
|
|
8
|
-
|
|
9
|
+
type TabUrlChangeEvent = TabEvent<{
|
|
9
10
|
url: string;
|
|
10
11
|
}>;
|
|
11
|
-
|
|
12
|
+
type UrlSanitizer = (url: string) => URL;
|
|
12
13
|
type TabEventMap = {
|
|
13
14
|
focus: TabEvent;
|
|
14
15
|
blur: TabEvent;
|
|
@@ -17,7 +18,7 @@ type TabEventMap = {
|
|
|
17
18
|
visibilityChange: TabVisibilityChangeEvent;
|
|
18
19
|
urlChange: TabUrlChangeEvent;
|
|
19
20
|
};
|
|
20
|
-
|
|
21
|
+
declare class Tab {
|
|
21
22
|
readonly id: string;
|
|
22
23
|
readonly isNew: boolean;
|
|
23
24
|
readonly urlSanitizer?: UrlSanitizer;
|
|
@@ -35,4 +36,5 @@ export declare class Tab {
|
|
|
35
36
|
private emit;
|
|
36
37
|
private static addUrlChangeListener;
|
|
37
38
|
}
|
|
38
|
-
|
|
39
|
+
|
|
40
|
+
export { Tab, type TabEvent, type TabUrlChangeEvent, type TabVisibilityChangeEvent, type UrlSanitizer };
|