@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/tab.js
CHANGED
|
@@ -1,96 +1,99 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Tab = void 0;
|
|
4
|
-
const eventManager_1 = require("./eventManager");
|
|
1
|
+
import { SynchronousEventManager } from "./eventManager";
|
|
5
2
|
const EventMap = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
focus: "focus",
|
|
4
|
+
blur: "blur",
|
|
5
|
+
beforeunload: "unload",
|
|
6
|
+
DOMContentLoaded: "load",
|
|
7
|
+
visibilitychange: "visibilityChange"
|
|
11
8
|
};
|
|
12
9
|
class Tab {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
this.eventManager.dispatch(type, event);
|
|
70
|
-
}
|
|
71
|
-
static addUrlChangeListener(listener) {
|
|
72
|
-
let url = window.location.href;
|
|
73
|
-
const updateUrl = () => {
|
|
74
|
-
const currentUrl = window.location.href;
|
|
75
|
-
if (url !== currentUrl) {
|
|
76
|
-
listener(currentUrl);
|
|
77
|
-
url = currentUrl;
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
const { pushState } = window.history;
|
|
81
|
-
window.history.pushState = function interceptPushState(...args) {
|
|
82
|
-
const result = pushState.apply(window.history, args);
|
|
83
|
-
updateUrl();
|
|
84
|
-
return result;
|
|
85
|
-
};
|
|
86
|
-
const { replaceState } = window.history;
|
|
87
|
-
window.history.replaceState = function interceptReplaceState(...args) {
|
|
88
|
-
const result = replaceState.apply(window.history, args);
|
|
89
|
-
updateUrl();
|
|
90
|
-
return result;
|
|
91
|
-
};
|
|
92
|
-
window.addEventListener('popstate', updateUrl, true);
|
|
10
|
+
constructor(id, isNew, urlSanitizer) {
|
|
11
|
+
this.eventManager = new SynchronousEventManager();
|
|
12
|
+
this.id = id;
|
|
13
|
+
this.isNew = isNew;
|
|
14
|
+
this.urlSanitizer = urlSanitizer;
|
|
15
|
+
this.initialize();
|
|
16
|
+
}
|
|
17
|
+
initialize() {
|
|
18
|
+
const listener = (event) => {
|
|
19
|
+
this.emit(EventMap[event.type], new CustomEvent(EventMap[event.type], { detail: { tab: this } }));
|
|
20
|
+
};
|
|
21
|
+
window.addEventListener("focus", listener, true);
|
|
22
|
+
window.addEventListener("blur", listener, true);
|
|
23
|
+
window.addEventListener("beforeunload", listener, true);
|
|
24
|
+
window.addEventListener("DOMContentLoaded", listener, true);
|
|
25
|
+
document.addEventListener(
|
|
26
|
+
"visibilitychange",
|
|
27
|
+
() => {
|
|
28
|
+
this.emit("visibilityChange", new CustomEvent("visibilityChange", {
|
|
29
|
+
detail: {
|
|
30
|
+
tab: this,
|
|
31
|
+
visible: this.isVisible
|
|
32
|
+
}
|
|
33
|
+
}));
|
|
34
|
+
},
|
|
35
|
+
true
|
|
36
|
+
);
|
|
37
|
+
Tab.addUrlChangeListener((url) => {
|
|
38
|
+
this.emit("urlChange", new CustomEvent("urlChange", { detail: { tab: this, url: this.sanitizeUrl(url) } }));
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
get url() {
|
|
42
|
+
return this.sanitizeUrl(window.location.href);
|
|
43
|
+
}
|
|
44
|
+
get title() {
|
|
45
|
+
return document.title;
|
|
46
|
+
}
|
|
47
|
+
get referrer() {
|
|
48
|
+
return document.referrer === "" ? "" : this.sanitizeUrl(document.referrer);
|
|
49
|
+
}
|
|
50
|
+
get isVisible() {
|
|
51
|
+
return document.visibilityState === "visible";
|
|
52
|
+
}
|
|
53
|
+
get document() {
|
|
54
|
+
return document;
|
|
55
|
+
}
|
|
56
|
+
addListener(type, listener) {
|
|
57
|
+
this.eventManager.addListener(type, listener);
|
|
58
|
+
}
|
|
59
|
+
removeListener(type, listener) {
|
|
60
|
+
this.eventManager.removeListener(type, listener);
|
|
61
|
+
}
|
|
62
|
+
sanitizeUrl(url) {
|
|
63
|
+
const normalized = window.encodeURI(window.decodeURI(url));
|
|
64
|
+
if (this.urlSanitizer !== void 0) {
|
|
65
|
+
return this.urlSanitizer(normalized).toString();
|
|
93
66
|
}
|
|
67
|
+
return normalized;
|
|
68
|
+
}
|
|
69
|
+
emit(type, event) {
|
|
70
|
+
this.eventManager.dispatch(type, event);
|
|
71
|
+
}
|
|
72
|
+
static addUrlChangeListener(listener) {
|
|
73
|
+
let url = window.location.href;
|
|
74
|
+
const updateUrl = () => {
|
|
75
|
+
const currentUrl = window.location.href;
|
|
76
|
+
if (url !== currentUrl) {
|
|
77
|
+
listener(currentUrl);
|
|
78
|
+
url = currentUrl;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const { pushState } = window.history;
|
|
82
|
+
window.history.pushState = function interceptPushState(...args) {
|
|
83
|
+
const result = pushState.apply(window.history, args);
|
|
84
|
+
updateUrl();
|
|
85
|
+
return result;
|
|
86
|
+
};
|
|
87
|
+
const { replaceState } = window.history;
|
|
88
|
+
window.history.replaceState = function interceptReplaceState(...args) {
|
|
89
|
+
const result = replaceState.apply(window.history, args);
|
|
90
|
+
updateUrl();
|
|
91
|
+
return result;
|
|
92
|
+
};
|
|
93
|
+
window.addEventListener("popstate", updateUrl, true);
|
|
94
|
+
}
|
|
94
95
|
}
|
|
95
|
-
|
|
96
|
+
export {
|
|
97
|
+
Tab
|
|
98
|
+
};
|
|
96
99
|
//# sourceMappingURL=tab.js.map
|
package/tab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/token/cachedTokenStore.ts"],"sourcesContent":["import {Token, TokenStore} from './token';\nimport {Cache} from '../cache';\n\nexport class CachedTokenStore implements TokenStore {\n private readonly cache: Cache;\n\n public constructor(cache: Cache) {\n this.cache = cache;\n }\n\n public getToken(): Token | null {\n const data: string | null = this.cache.get();\n\n if (data === null) {\n return null;\n }\n\n try {\n return Token.parse(data);\n } catch (error) {\n return null;\n }\n }\n\n public setToken(token: Token | null): void {\n if (token === null) {\n this.cache.clear();\n\n return;\n }\n\n this.cache.put(token.toString());\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAgC;AAGzB,MAAM,iBAAuC;AAAA,EAGzC,YAAY,OAAc;AAC7B,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEO,WAAyB;AAC5B,UAAM,OAAsB,KAAK,MAAM,IAAI;AAE3C,QAAI,SAAS,MAAM;AACf,aAAO;AAAA,IACX;AAEA,QAAI;AACA,aAAO,mBAAM,MAAM,IAAI;AAAA,IAC3B,SAAS,OAAO;AACZ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEO,SAAS,OAA2B;AACvC,QAAI,UAAU,MAAM;AAChB,WAAK,MAAM,MAAM;AAEjB;AAAA,IACJ;AAEA,SAAK,MAAM,IAAI,MAAM,SAAS,CAAC;AAAA,EACnC;AACJ;","names":[]}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Cache } from '../cache';
|
|
3
|
-
|
|
1
|
+
import { TokenStore, Token } from './token.js';
|
|
2
|
+
import { Cache } from '../cache/cache.js';
|
|
3
|
+
import '@croct/json';
|
|
4
|
+
import '../apiKey.js';
|
|
5
|
+
|
|
6
|
+
declare class CachedTokenStore implements TokenStore {
|
|
4
7
|
private readonly cache;
|
|
5
8
|
constructor(cache: Cache);
|
|
6
9
|
getToken(): Token | null;
|
|
7
10
|
setToken(token: Token | null): void;
|
|
8
11
|
}
|
|
12
|
+
|
|
13
|
+
export { CachedTokenStore };
|
|
@@ -1,30 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CachedTokenStore = void 0;
|
|
4
|
-
const token_1 = require("./token");
|
|
1
|
+
import { Token } from "./token";
|
|
5
2
|
class CachedTokenStore {
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
constructor(cache) {
|
|
4
|
+
this.cache = cache;
|
|
5
|
+
}
|
|
6
|
+
getToken() {
|
|
7
|
+
const data = this.cache.get();
|
|
8
|
+
if (data === null) {
|
|
9
|
+
return null;
|
|
8
10
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
try {
|
|
15
|
-
return token_1.Token.parse(data);
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
11
|
+
try {
|
|
12
|
+
return Token.parse(data);
|
|
13
|
+
} catch (error) {
|
|
14
|
+
return null;
|
|
20
15
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this.cache.put(token.toString());
|
|
16
|
+
}
|
|
17
|
+
setToken(token) {
|
|
18
|
+
if (token === null) {
|
|
19
|
+
this.cache.clear();
|
|
20
|
+
return;
|
|
27
21
|
}
|
|
22
|
+
this.cache.put(token.toString());
|
|
23
|
+
}
|
|
28
24
|
}
|
|
29
|
-
|
|
25
|
+
export {
|
|
26
|
+
CachedTokenStore
|
|
27
|
+
};
|
|
30
28
|
//# sourceMappingURL=cachedTokenStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/token/cachedTokenStore.ts"],"sourcesContent":["import {Token, TokenStore} from './token';\nimport {Cache} from '../cache';\n\nexport class CachedTokenStore implements TokenStore {\n private readonly cache: Cache;\n\n public constructor(cache: Cache) {\n this.cache = cache;\n }\n\n public getToken(): Token | null {\n const data: string | null = this.cache.get();\n\n if (data === null) {\n return null;\n }\n\n try {\n return Token.parse(data);\n } catch (error) {\n return null;\n }\n }\n\n public setToken(token: Token | null): void {\n if (token === null) {\n this.cache.clear();\n\n return;\n }\n\n this.cache.put(token.toString());\n }\n}\n"],"mappings":"AAAA,SAAQ,aAAwB;AAGzB,MAAM,iBAAuC;AAAA,EAGzC,YAAY,OAAc;AAC7B,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEO,WAAyB;AAC5B,UAAM,OAAsB,KAAK,MAAM,IAAI;AAE3C,QAAI,SAAS,MAAM;AACf,aAAO;AAAA,IACX;AAEA,QAAI;AACA,aAAO,MAAM,MAAM,IAAI;AAAA,IAC3B,SAAS,OAAO;AACZ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEO,SAAS,OAA2B;AACvC,QAAI,UAAU,MAAM;AAChB,WAAK,MAAM,MAAM;AAEjB;AAAA,IACJ;AAEA,SAAK,MAAM,IAAI,MAAM,SAAS,CAAC;AAAA,EACnC;AACJ;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/token/inMemoryTokenStore.ts"],"sourcesContent":["import {Token, TokenStore} from './token';\n\nexport class InMemoryTokenStore implements TokenStore {\n private token: Token | null = null;\n\n public getToken(): Token | null {\n return this.token;\n }\n\n public setToken(token: Token | null): void {\n this.token = token;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,mBAAyC;AAAA,EAA/C;AACH,SAAQ,QAAsB;AAAA;AAAA,EAEvB,WAAyB;AAC5B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEO,SAAS,OAA2B;AACvC,SAAK,QAAQ;AAAA,EACjB;AACJ;","names":[]}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { TokenStore, Token } from './token.js';
|
|
2
|
+
import '@croct/json';
|
|
3
|
+
import '../apiKey.js';
|
|
4
|
+
|
|
5
|
+
declare class InMemoryTokenStore implements TokenStore {
|
|
3
6
|
private token;
|
|
4
7
|
getToken(): Token | null;
|
|
5
8
|
setToken(token: Token | null): void;
|
|
6
9
|
}
|
|
10
|
+
|
|
11
|
+
export { InMemoryTokenStore };
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InMemoryTokenStore = void 0;
|
|
4
1
|
class InMemoryTokenStore {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
constructor() {
|
|
3
|
+
this.token = null;
|
|
4
|
+
}
|
|
5
|
+
getToken() {
|
|
6
|
+
return this.token;
|
|
7
|
+
}
|
|
8
|
+
setToken(token) {
|
|
9
|
+
this.token = token;
|
|
10
|
+
}
|
|
14
11
|
}
|
|
15
|
-
|
|
12
|
+
export {
|
|
13
|
+
InMemoryTokenStore
|
|
14
|
+
};
|
|
16
15
|
//# sourceMappingURL=inMemoryTokenStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/token/inMemoryTokenStore.ts"],"sourcesContent":["import {Token, TokenStore} from './token';\n\nexport class InMemoryTokenStore implements TokenStore {\n private token: Token | null = null;\n\n public getToken(): Token | null {\n return this.token;\n }\n\n public setToken(token: Token | null): void {\n this.token = token;\n }\n}\n"],"mappings":"AAEO,MAAM,mBAAyC;AAAA,EAA/C;AACH,SAAQ,QAAsB;AAAA;AAAA,EAEvB,WAAyB;AAC5B,WAAO,KAAK;AAAA,EAChB;AAAA,EAEO,SAAS,OAA2B;AACvC,SAAK,QAAQ;AAAA,EACjB;AACJ;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/token/index.ts"],"sourcesContent":["export * from './token';\nexport {CachedTokenStore} from './cachedTokenStore';\nexport {InMemoryTokenStore} from './inMemoryTokenStore';\nexport {ReplicatedTokenStore} from './replicatedTokenStore';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAc,oBAAd;AACA,8BAA+B;AAC/B,gCAAiC;AACjC,kCAAmC;","names":[]}
|
package/token/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { CachedTokenStore } from './cachedTokenStore';
|
|
3
|
-
export { InMemoryTokenStore } from './inMemoryTokenStore';
|
|
4
|
-
export { ReplicatedTokenStore } from './replicatedTokenStore';
|
|
1
|
+
export { FixedTokenProvider, Token, TokenClaims, TokenHeaders, TokenPayload, TokenProvider, TokenStore } from './token.js';
|
|
2
|
+
export { CachedTokenStore } from './cachedTokenStore.js';
|
|
3
|
+
export { InMemoryTokenStore } from './inMemoryTokenStore.js';
|
|
4
|
+
export { ReplicatedTokenStore } from './replicatedTokenStore.js';
|
|
5
|
+
import '@croct/json';
|
|
6
|
+
import '../apiKey.js';
|
|
7
|
+
import '../cache/cache.js';
|
package/token/index.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var replicatedTokenStore_1 = require("./replicatedTokenStore");
|
|
11
|
-
Object.defineProperty(exports, "ReplicatedTokenStore", { enumerable: true, get: function () { return replicatedTokenStore_1.ReplicatedTokenStore; } });
|
|
1
|
+
export * from "./token";
|
|
2
|
+
import { CachedTokenStore } from "./cachedTokenStore";
|
|
3
|
+
import { InMemoryTokenStore } from "./inMemoryTokenStore";
|
|
4
|
+
import { ReplicatedTokenStore } from "./replicatedTokenStore";
|
|
5
|
+
export {
|
|
6
|
+
CachedTokenStore,
|
|
7
|
+
InMemoryTokenStore,
|
|
8
|
+
ReplicatedTokenStore
|
|
9
|
+
};
|
|
12
10
|
//# sourceMappingURL=index.js.map
|
package/token/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/token/index.ts"],"sourcesContent":["export * from './token';\nexport {CachedTokenStore} from './cachedTokenStore';\nexport {InMemoryTokenStore} from './inMemoryTokenStore';\nexport {ReplicatedTokenStore} from './replicatedTokenStore';\n"],"mappings":"AAAA,cAAc;AACd,SAAQ,wBAAuB;AAC/B,SAAQ,0BAAyB;AACjC,SAAQ,4BAA2B;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/token/replicatedTokenStore.ts"],"sourcesContent":["import {Token, TokenStore} from './token';\n\nexport class ReplicatedTokenStore implements TokenStore {\n private primary: TokenStore;\n\n private secondary: TokenStore;\n\n public constructor(primary: TokenStore, secondary: TokenStore) {\n this.primary = primary;\n this.secondary = secondary;\n }\n\n public getToken(): Token | null {\n return this.primary.getToken();\n }\n\n public setToken(token: Token | null): void {\n this.primary.setToken(token);\n this.secondary.setToken(token);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,qBAA2C;AAAA,EAK7C,YAAY,SAAqB,WAAuB;AAC3D,SAAK,UAAU;AACf,SAAK,YAAY;AAAA,EACrB;AAAA,EAEO,WAAyB;AAC5B,WAAO,KAAK,QAAQ,SAAS;AAAA,EACjC;AAAA,EAEO,SAAS,OAA2B;AACvC,SAAK,QAAQ,SAAS,KAAK;AAC3B,SAAK,UAAU,SAAS,KAAK;AAAA,EACjC;AACJ;","names":[]}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { TokenStore, Token } from './token.js';
|
|
2
|
+
import '@croct/json';
|
|
3
|
+
import '../apiKey.js';
|
|
4
|
+
|
|
5
|
+
declare class ReplicatedTokenStore implements TokenStore {
|
|
3
6
|
private primary;
|
|
4
7
|
private secondary;
|
|
5
8
|
constructor(primary: TokenStore, secondary: TokenStore);
|
|
6
9
|
getToken(): Token | null;
|
|
7
10
|
setToken(token: Token | null): void;
|
|
8
11
|
}
|
|
12
|
+
|
|
13
|
+
export { ReplicatedTokenStore };
|
|
@@ -1,18 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReplicatedTokenStore = void 0;
|
|
4
1
|
class ReplicatedTokenStore {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
2
|
+
constructor(primary, secondary) {
|
|
3
|
+
this.primary = primary;
|
|
4
|
+
this.secondary = secondary;
|
|
5
|
+
}
|
|
6
|
+
getToken() {
|
|
7
|
+
return this.primary.getToken();
|
|
8
|
+
}
|
|
9
|
+
setToken(token) {
|
|
10
|
+
this.primary.setToken(token);
|
|
11
|
+
this.secondary.setToken(token);
|
|
12
|
+
}
|
|
16
13
|
}
|
|
17
|
-
|
|
14
|
+
export {
|
|
15
|
+
ReplicatedTokenStore
|
|
16
|
+
};
|
|
18
17
|
//# sourceMappingURL=replicatedTokenStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/token/replicatedTokenStore.ts"],"sourcesContent":["import {Token, TokenStore} from './token';\n\nexport class ReplicatedTokenStore implements TokenStore {\n private primary: TokenStore;\n\n private secondary: TokenStore;\n\n public constructor(primary: TokenStore, secondary: TokenStore) {\n this.primary = primary;\n this.secondary = secondary;\n }\n\n public getToken(): Token | null {\n return this.primary.getToken();\n }\n\n public setToken(token: Token | null): void {\n this.primary.setToken(token);\n this.secondary.setToken(token);\n }\n}\n"],"mappings":"AAEO,MAAM,qBAA2C;AAAA,EAK7C,YAAY,SAAqB,WAAuB;AAC3D,SAAK,UAAU;AACf,SAAK,YAAY;AAAA,EACrB;AAAA,EAEO,WAAyB;AAC5B,WAAO,KAAK,QAAQ,SAAS;AAAA,EACjC;AAAA,EAEO,SAAS,OAA2B;AACvC,SAAK,QAAQ,SAAS,KAAK;AAC3B,SAAK,UAAU,SAAS,KAAK;AAAA,EACjC;AACJ;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/token/token.ts"],"sourcesContent":["import {JsonObject} from '@croct/json';\nimport {tokenSchema} from '../schema';\nimport {formatCause} from '../error';\nimport {ApiKey} from '../apiKey';\nimport {base64UrlDecode, base64UrlEncode} from '../base64Url';\n\nexport type TokenHeaders = {\n typ: string,\n alg: string,\n kid?: string,\n appId?: string,\n};\n\nexport type TokenClaims = {\n iss: string,\n aud: string|string[],\n iat: number,\n exp?: number,\n sub?: string,\n jti?: string,\n};\n\nexport type TokenPayload = JsonObject & TokenClaims;\n\nexport class Token {\n private static readonly UUID_PATTERN = /^[a-f0-9]{8}-([a-f0-9]{4}-){3}[a-f0-9]{12}$/;\n\n private readonly headers: TokenHeaders;\n\n private readonly payload: TokenPayload;\n\n private readonly signature: string;\n\n private constructor(headers: TokenHeaders, payload: TokenPayload, signature = '') {\n this.headers = headers;\n this.payload = payload;\n this.signature = signature;\n }\n\n public static issue(\n appId: string,\n subject: string|null = null,\n timestamp: number = Math.floor(Date.now() / 1000),\n ): Token {\n if (timestamp < 0) {\n throw new Error('The timestamp must be non-negative.');\n }\n\n if (subject === '') {\n throw new Error('The subject must be non-empty.');\n }\n\n return new Token(\n {\n typ: 'JWT',\n alg: 'none',\n appId: appId,\n },\n {\n iss: 'croct.io',\n aud: 'croct.io',\n iat: timestamp,\n ...(subject !== null ? {sub: subject} : null),\n },\n );\n }\n\n public static parse(token: string): Token {\n if (token === '') {\n throw new Error('The token cannot be empty.');\n }\n\n const parts = token.split('.', 3);\n\n // This token is invalid\n if (parts.length < 2) {\n throw new Error('The token is malformed.');\n }\n\n let headers;\n let payload;\n\n try {\n headers = JSON.parse(base64UrlDecode(parts[0], true));\n payload = JSON.parse(base64UrlDecode(parts[1], true));\n } catch (error) {\n throw new Error('The token is corrupted.');\n }\n\n return Token.of(headers, payload, parts[2]);\n }\n\n public static of(headers: TokenHeaders, payload: TokenPayload, signature = ''): Token {\n try {\n tokenSchema.validate({\n headers: headers,\n payload: payload,\n signature: signature,\n });\n } catch (violation) {\n throw new Error(`The token is invalid: ${formatCause(violation)}`);\n }\n\n return new Token(headers as TokenHeaders, payload as TokenPayload, signature as string);\n }\n\n public async signedWith(apiKey: ApiKey): Promise<Token> {\n const keyId = await apiKey.getIdentifierHash();\n const headers: TokenHeaders = {\n ...this.headers,\n kid: keyId,\n alg: apiKey.getSigningAlgorithm(),\n };\n\n const encodedHeader = base64UrlEncode(JSON.stringify(headers), true);\n const encodedPayload = base64UrlEncode(JSON.stringify(this.payload), true);\n const signature = await apiKey.sign(`${encodedHeader}.${encodedPayload}`);\n\n return new Token(headers, this.payload, base64UrlEncode(signature, false));\n }\n\n public isSigned(): boolean {\n return this.headers.alg !== 'none' && this.signature !== '';\n }\n\n public isSubject(subject: string): boolean {\n return this.getSubject() === subject;\n }\n\n public isAnonymous(): boolean {\n return this.payload.sub === undefined;\n }\n\n public isValidNow(now: number = Math.floor(Date.now() / 1000)): boolean {\n const {exp, iat} = this.payload;\n\n return (exp === undefined || exp >= now) && iat <= now;\n }\n\n public isNewerThan(token: Token): boolean {\n return this.payload.iat > token.payload.iat;\n }\n\n public async matchesKeyId(apiKey: ApiKey): Promise<boolean> {\n return this.headers.kid === await apiKey.getIdentifierHash();\n }\n\n public getHeaders(): TokenHeaders {\n return {...this.headers};\n }\n\n public getPayload(): TokenPayload {\n return {...this.payload};\n }\n\n public getSignature(): string {\n return this.signature;\n }\n\n public getApplicationId(): string | null {\n return this.headers.appId ?? null;\n }\n\n public getAlgorithm(): string {\n return this.headers.alg;\n }\n\n public getType(): string {\n return this.headers.typ;\n }\n\n public getKeyId(): string | null {\n return this.headers.kid ?? null;\n }\n\n public getSubject(): string | null {\n return this.payload.sub ?? null;\n }\n\n public getIssueTime(): number {\n return this.payload.iat;\n }\n\n public getExpirationTime(): number | null {\n return this.payload.exp ?? null;\n }\n\n public getTokenId(): string | null {\n return this.payload.jti ?? null;\n }\n\n public getAudience(): string | string[] {\n return this.payload.aud;\n }\n\n public getIssuer(): string {\n return this.payload.iss;\n }\n\n public withTokenId(tokenId: string): Token {\n if (tokenId === '' || !Token.UUID_PATTERN.test(tokenId)) {\n throw new Error('The token ID must be a valid UUID.');\n }\n\n return new Token(\n this.headers,\n {\n ...this.payload,\n jti: tokenId,\n },\n this.signature,\n );\n }\n\n public withDuration(duration: number, now: number = Math.floor(Date.now() / 1000)): Token {\n return new Token(\n this.headers,\n {\n ...this.payload,\n iat: now,\n exp: now + duration,\n },\n this.signature,\n );\n }\n\n public withAddedHeaders(headers: Partial<TokenHeaders>): Token {\n return this.withHeaders({\n ...this.headers,\n ...Object.fromEntries(\n Object.entries(headers)\n .filter(([, value]) => value !== undefined),\n ),\n });\n }\n\n public withAddedClaims(claims: Partial<TokenClaims>): Token {\n return this.withPayload({\n ...this.payload,\n ...Object.fromEntries(\n Object.entries(claims)\n .filter(([, value]) => value !== undefined),\n ),\n });\n }\n\n public withHeaders(headers: TokenHeaders): Token {\n return new Token(\n headers,\n this.payload,\n this.signature,\n );\n }\n\n public withPayload(payload: TokenPayload): Token {\n return new Token(\n this.headers,\n payload,\n this.signature,\n );\n }\n\n public withSignature(signature: string): Token {\n return new Token(\n this.headers,\n this.payload,\n signature,\n );\n }\n\n public toJSON(): string {\n return this.toString();\n }\n\n public toString(): string {\n const headers = base64UrlEncode(JSON.stringify(this.headers), true);\n const payload = base64UrlEncode(JSON.stringify(this.payload), true);\n\n return `${headers}.${payload}.${this.signature}`;\n }\n}\n\nexport interface TokenProvider {\n getToken(): Token | null;\n}\n\nexport interface TokenStore extends TokenProvider {\n setToken(token: Token | null): void;\n}\n\nexport class FixedTokenProvider implements TokenProvider {\n private readonly token: Token | null;\n\n public constructor(token: Token | null) {\n this.token = token;\n }\n\n public getToken(): Token | null {\n return this.token;\n }\n}\n"],"mappings":"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","names":[]}
|
package/token/token.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { JsonObject } from '@croct/json';
|
|
2
|
-
import { ApiKey } from '../apiKey';
|
|
3
|
-
|
|
2
|
+
import { ApiKey } from '../apiKey.js';
|
|
3
|
+
|
|
4
|
+
type TokenHeaders = {
|
|
4
5
|
typ: string;
|
|
5
6
|
alg: string;
|
|
6
7
|
kid?: string;
|
|
7
8
|
appId?: string;
|
|
8
9
|
};
|
|
9
|
-
|
|
10
|
+
type TokenClaims = {
|
|
10
11
|
iss: string;
|
|
11
12
|
aud: string | string[];
|
|
12
13
|
iat: number;
|
|
@@ -14,8 +15,8 @@ export type TokenClaims = {
|
|
|
14
15
|
sub?: string;
|
|
15
16
|
jti?: string;
|
|
16
17
|
};
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
type TokenPayload = JsonObject & TokenClaims;
|
|
19
|
+
declare class Token {
|
|
19
20
|
private static readonly UUID_PATTERN;
|
|
20
21
|
private readonly headers;
|
|
21
22
|
private readonly payload;
|
|
@@ -54,14 +55,16 @@ export declare class Token {
|
|
|
54
55
|
toJSON(): string;
|
|
55
56
|
toString(): string;
|
|
56
57
|
}
|
|
57
|
-
|
|
58
|
+
interface TokenProvider {
|
|
58
59
|
getToken(): Token | null;
|
|
59
60
|
}
|
|
60
|
-
|
|
61
|
+
interface TokenStore extends TokenProvider {
|
|
61
62
|
setToken(token: Token | null): void;
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
+
declare class FixedTokenProvider implements TokenProvider {
|
|
64
65
|
private readonly token;
|
|
65
66
|
constructor(token: Token | null);
|
|
66
67
|
getToken(): Token | null;
|
|
67
68
|
}
|
|
69
|
+
|
|
70
|
+
export { FixedTokenProvider, Token, type TokenClaims, type TokenHeaders, type TokenPayload, type TokenProvider, type TokenStore };
|