@croct/sdk 0.17.11 → 0.18.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/activeRecord.cjs +1 -2
- package/activeRecord.d.cts +26 -0
- package/activeRecord.js +1 -2
- package/apiKey.cjs +0 -1
- package/apiKey.d.cts +48 -0
- package/apiKey.js +0 -1
- package/base64Url.cjs +0 -1
- package/base64Url.d.cts +4 -0
- package/base64Url.js +0 -1
- package/cache/cache.cjs +0 -1
- package/cache/cache.d.cts +17 -0
- package/cache/cache.js +0 -1
- package/cache/cookieCache.cjs +0 -1
- package/cache/cookieCache.d.cts +22 -0
- package/cache/cookieCache.js +0 -1
- package/cache/fallbackCache.cjs +0 -1
- package/cache/fallbackCache.d.cts +11 -0
- package/cache/fallbackCache.js +0 -1
- package/cache/inMemoryCache.cjs +0 -1
- package/cache/inMemoryCache.d.cts +11 -0
- package/cache/inMemoryCache.js +0 -1
- package/cache/index.cjs +5 -6
- package/cache/index.d.cts +4 -0
- package/cache/index.js +4 -5
- package/cache/localStorageCache.cjs +0 -1
- package/cache/localStorageCache.d.cts +19 -0
- package/cache/localStorageCache.js +0 -1
- package/channel/channel.cjs +1 -2
- package/channel/channel.d.cts +24 -0
- package/channel/channel.js +1 -2
- package/channel/encodedChannel.cjs +0 -1
- package/channel/encodedChannel.d.cts +12 -0
- package/channel/encodedChannel.js +0 -1
- package/channel/guaranteedChannel.cjs +2 -3
- package/channel/guaranteedChannel.d.cts +33 -0
- package/channel/guaranteedChannel.js +2 -3
- package/channel/httpBeaconChannel.cjs +5 -6
- package/channel/httpBeaconChannel.d.cts +26 -0
- package/channel/httpBeaconChannel.js +5 -6
- package/channel/index.cjs +8 -9
- package/channel/index.d.cts +12 -0
- package/channel/index.js +7 -8
- package/channel/queuedChannel.cjs +2 -3
- package/channel/queuedChannel.d.cts +21 -0
- package/channel/queuedChannel.js +2 -3
- package/channel/retryChannel.cjs +2 -3
- package/channel/retryChannel.d.cts +21 -0
- package/channel/retryChannel.js +2 -3
- package/channel/sandboxChannel.cjs +1 -2
- package/channel/sandboxChannel.d.cts +15 -0
- package/channel/sandboxChannel.js +1 -2
- package/cid/assigner.cjs +0 -1
- package/cid/assigner.d.cts +5 -0
- package/cid/assigner.js +0 -1
- package/cid/cachedAssigner.cjs +1 -2
- package/cid/cachedAssigner.d.cts +17 -0
- package/cid/cachedAssigner.js +1 -2
- package/cid/fixedAssigner.cjs +0 -1
- package/cid/fixedAssigner.d.cts +9 -0
- package/cid/fixedAssigner.js +0 -1
- package/cid/index.cjs +5 -6
- package/cid/index.d.cts +6 -0
- package/cid/index.js +4 -5
- package/cid/remoteAssigner.cjs +3 -4
- package/cid/remoteAssigner.d.cts +13 -0
- package/cid/remoteAssigner.js +3 -4
- package/constants.cjs +1 -2
- package/constants.d.cts +6 -0
- package/constants.d.ts +2 -2
- package/constants.js +1 -2
- package/container.cjs +18 -19
- package/container.d.cts +95 -0
- package/container.js +18 -19
- package/contentFetcher.cjs +4 -5
- package/contentFetcher.d.cts +69 -0
- package/contentFetcher.js +4 -5
- package/context.cjs +4 -5
- package/context.d.cts +36 -0
- package/context.js +4 -5
- package/error.cjs +0 -1
- package/error.d.cts +4 -0
- package/error.js +0 -1
- package/evaluator.cjs +5 -6
- package/evaluator.d.cts +86 -0
- package/evaluator.js +5 -6
- package/eventManager.cjs +0 -1
- package/eventManager.d.cts +21 -0
- package/eventManager.js +0 -1
- package/eventSubjectProcessor.cjs +0 -1
- package/eventSubjectProcessor.d.cts +22 -0
- package/eventSubjectProcessor.js +0 -1
- package/facade/contentFetcherFacade.cjs +2 -3
- package/facade/contentFetcherFacade.d.cts +36 -0
- package/facade/contentFetcherFacade.js +2 -3
- package/facade/evaluatorFacade.cjs +2 -3
- package/facade/evaluatorFacade.d.cts +41 -0
- package/facade/evaluatorFacade.js +2 -3
- package/facade/index.cjs +7 -10
- package/facade/index.d.cts +29 -0
- package/facade/index.js +7 -9
- package/facade/sdkFacade.cjs +10 -11
- package/facade/sdkFacade.d.cts +86 -0
- package/facade/sdkFacade.js +10 -11
- package/facade/sessionFacade.cjs +1 -2
- package/facade/sessionFacade.d.cts +22 -0
- package/facade/sessionFacade.js +1 -2
- package/facade/sessionPatch.cjs +1 -2
- package/facade/sessionPatch.d.cts +21 -0
- package/facade/sessionPatch.js +1 -2
- package/facade/trackerFacade.cjs +2 -3
- package/facade/trackerFacade.d.cts +25 -0
- package/facade/trackerFacade.js +2 -3
- package/facade/userFacade.cjs +1 -2
- package/facade/userFacade.d.cts +28 -0
- package/facade/userFacade.js +1 -2
- package/facade/userPatch.cjs +1 -2
- package/facade/userPatch.d.cts +21 -0
- package/facade/userPatch.js +1 -2
- package/help.cjs +0 -1
- package/help.d.cts +5 -0
- package/help.js +0 -1
- package/index.cjs +2 -5
- package/index.d.cts +25 -0
- package/index.js +2 -4
- package/logging/consoleLogger.cjs +0 -1
- package/logging/consoleLogger.d.cts +13 -0
- package/logging/consoleLogger.js +0 -1
- package/logging/filteredLogger.cjs +0 -1
- package/logging/filteredLogger.d.cts +22 -0
- package/logging/filteredLogger.js +0 -1
- package/logging/index.cjs +6 -7
- package/logging/index.d.cts +5 -0
- package/logging/index.js +5 -6
- package/logging/logger.cjs +0 -1
- package/logging/logger.d.cts +11 -0
- package/logging/logger.js +0 -1
- package/logging/namespacedLogger.cjs +0 -1
- package/logging/namespacedLogger.d.cts +14 -0
- package/logging/namespacedLogger.js +0 -1
- package/logging/nullLogger.cjs +0 -1
- package/logging/nullLogger.d.cts +10 -0
- package/logging/nullLogger.js +0 -1
- package/namespacedStorage.cjs +0 -1
- package/namespacedStorage.d.cts +16 -0
- package/namespacedStorage.js +0 -1
- package/package.json +4 -1
- package/patch.cjs +0 -1
- package/patch.d.cts +46 -0
- package/patch.js +0 -1
- package/queue/capacityRestrictedQueue.cjs +0 -1
- package/queue/capacityRestrictedQueue.d.cts +16 -0
- package/queue/capacityRestrictedQueue.js +0 -1
- package/queue/inMemoryQueue.cjs +0 -1
- package/queue/inMemoryQueue.d.cts +15 -0
- package/queue/inMemoryQueue.js +0 -1
- package/queue/index.cjs +6 -7
- package/queue/index.d.cts +6 -0
- package/queue/index.js +5 -6
- package/queue/monitoredQueue.cjs +1 -2
- package/queue/monitoredQueue.d.cts +28 -0
- package/queue/monitoredQueue.js +1 -2
- package/queue/persistentQueue.cjs +0 -1
- package/queue/persistentQueue.d.cts +18 -0
- package/queue/persistentQueue.js +0 -1
- package/queue/queue.cjs +0 -1
- package/queue/queue.d.cts +11 -0
- package/queue/queue.js +0 -1
- package/retry/arbitraryPolicy.cjs +0 -1
- package/retry/arbitraryPolicy.d.cts +10 -0
- package/retry/arbitraryPolicy.js +0 -1
- package/retry/backoffPolicy.cjs +0 -1
- package/retry/backoffPolicy.d.cts +26 -0
- package/retry/backoffPolicy.js +0 -1
- package/retry/index.cjs +6 -7
- package/retry/index.d.cts +5 -0
- package/retry/index.js +5 -6
- package/retry/maxAttemptsPolicy.cjs +0 -1
- package/retry/maxAttemptsPolicy.d.cts +11 -0
- package/retry/maxAttemptsPolicy.js +0 -1
- package/retry/neverPolicy.cjs +0 -1
- package/retry/neverPolicy.d.cts +8 -0
- package/retry/neverPolicy.js +0 -1
- package/retry/policy.cjs +0 -1
- package/retry/policy.d.cts +6 -0
- package/retry/policy.js +0 -1
- package/schema/attributeSchema.cjs +1 -2
- package/schema/attributeSchema.d.cts +6 -0
- package/schema/attributeSchema.js +1 -2
- package/schema/contentFetcherSchemas.cjs +1 -2
- package/schema/contentFetcherSchemas.d.cts +6 -0
- package/schema/contentFetcherSchemas.js +1 -2
- package/schema/contentSchemas.cjs +1 -2
- package/schema/contentSchemas.d.cts +6 -0
- package/schema/contentSchemas.js +1 -2
- package/schema/contextSchemas.cjs +1 -2
- package/schema/contextSchemas.d.cts +6 -0
- package/schema/contextSchemas.js +1 -2
- package/schema/ecommerceSchemas.cjs +1 -2
- package/schema/ecommerceSchemas.d.cts +10 -0
- package/schema/ecommerceSchemas.js +1 -2
- package/schema/evaluatorSchemas.cjs +1 -2
- package/schema/evaluatorSchemas.d.cts +6 -0
- package/schema/evaluatorSchemas.js +1 -2
- package/schema/eventSchemas.cjs +4 -5
- package/schema/eventSchemas.d.cts +16 -0
- package/schema/eventSchemas.js +4 -5
- package/schema/index.cjs +22 -23
- package/schema/index.d.cts +14 -0
- package/schema/index.js +11 -12
- package/schema/loggerSchema.cjs +1 -2
- package/schema/loggerSchema.d.cts +6 -0
- package/schema/loggerSchema.js +1 -2
- package/schema/operationSchemas.cjs +2 -3
- package/schema/operationSchemas.d.cts +14 -0
- package/schema/operationSchemas.js +2 -3
- package/schema/sdkFacadeSchemas.cjs +4 -5
- package/schema/sdkFacadeSchemas.d.cts +6 -0
- package/schema/sdkFacadeSchemas.js +4 -5
- package/schema/sdkSchemas.cjs +3 -4
- package/schema/sdkSchemas.d.cts +8 -0
- package/schema/sdkSchemas.js +3 -4
- package/schema/tokenSchema.cjs +1 -2
- package/schema/tokenSchema.d.cts +6 -0
- package/schema/tokenSchema.js +1 -2
- package/schema/userSchema.cjs +2 -3
- package/schema/userSchema.d.cts +6 -0
- package/schema/userSchema.js +2 -3
- package/sdk.cjs +4 -5
- package/sdk.d.cts +69 -0
- package/sdk.js +4 -5
- package/sdkEvents.cjs +0 -1
- package/sdkEvents.d.cts +15 -0
- package/sdkEvents.js +0 -1
- package/sourceLocation.cjs +0 -1
- package/sourceLocation.d.cts +14 -0
- package/sourceLocation.js +0 -1
- package/tab.cjs +1 -2
- package/tab.d.cts +40 -0
- package/tab.js +1 -2
- package/token/cachedTokenStore.cjs +1 -2
- package/token/cachedTokenStore.d.cts +13 -0
- package/token/cachedTokenStore.js +1 -2
- package/token/inMemoryTokenStore.cjs +0 -1
- package/token/inMemoryTokenStore.d.cts +11 -0
- package/token/inMemoryTokenStore.js +0 -1
- package/token/index.cjs +5 -6
- package/token/index.d.cts +7 -0
- package/token/index.js +4 -5
- package/token/replicatedTokenStore.cjs +0 -1
- package/token/replicatedTokenStore.d.cts +13 -0
- package/token/replicatedTokenStore.js +0 -1
- package/token/token.cjs +3 -4
- package/token/token.d.cts +70 -0
- package/token/token.js +3 -4
- package/tracker.cjs +3 -4
- package/tracker.d.cts +82 -0
- package/tracker.js +3 -4
- package/trackingEvents.cjs +0 -1
- package/trackingEvents.d.cts +309 -0
- package/trackingEvents.js +0 -1
- package/transformer.cjs +0 -1
- package/transformer.d.cts +6 -0
- package/transformer.js +0 -1
- package/utilityTypes.cjs +0 -1
- package/utilityTypes.d.cts +4 -0
- package/utilityTypes.js +0 -1
- package/uuid.cjs +0 -1
- package/uuid.d.cts +3 -0
- package/uuid.js +0 -1
- package/validation/arrayType.cjs +2 -3
- package/validation/arrayType.d.cts +16 -0
- package/validation/arrayType.js +2 -3
- package/validation/booleanType.cjs +2 -3
- package/validation/booleanType.d.cts +9 -0
- package/validation/booleanType.js +2 -3
- package/validation/functionType.cjs +2 -3
- package/validation/functionType.d.cts +9 -0
- package/validation/functionType.js +2 -3
- package/validation/index.cjs +14 -15
- package/validation/index.d.cts +12 -0
- package/validation/index.js +12 -13
- package/validation/jsonType.cjs +2 -3
- package/validation/jsonType.d.cts +35 -0
- package/validation/jsonType.js +2 -3
- package/validation/mixedSchema.cjs +0 -1
- package/validation/mixedSchema.d.cts +7 -0
- package/validation/mixedSchema.js +0 -1
- package/validation/nullType.cjs +2 -3
- package/validation/nullType.d.cts +9 -0
- package/validation/nullType.js +2 -3
- package/validation/numberType.cjs +2 -3
- package/validation/numberType.d.cts +16 -0
- package/validation/numberType.js +2 -3
- package/validation/objectType.cjs +3 -4
- package/validation/objectType.d.cts +30 -0
- package/validation/objectType.js +3 -4
- package/validation/schema.cjs +0 -1
- package/validation/schema.d.cts +18 -0
- package/validation/schema.js +0 -1
- package/validation/stringType.cjs +2 -3
- package/validation/stringType.d.cts +24 -0
- package/validation/stringType.js +2 -3
- package/validation/unionType.cjs +2 -3
- package/validation/unionType.d.cts +11 -0
- package/validation/unionType.js +2 -3
- package/validation/violation.cjs +0 -1
- package/validation/violation.d.cts +4 -0
- package/validation/violation.js +0 -1
- package/activeRecord.cjs.map +0 -1
- package/activeRecord.js.map +0 -1
- package/apiKey.cjs.map +0 -1
- package/apiKey.js.map +0 -1
- package/base64Url.cjs.map +0 -1
- package/base64Url.js.map +0 -1
- package/cache/cache.cjs.map +0 -1
- package/cache/cache.js.map +0 -1
- package/cache/cookieCache.cjs.map +0 -1
- package/cache/cookieCache.js.map +0 -1
- package/cache/fallbackCache.cjs.map +0 -1
- package/cache/fallbackCache.js.map +0 -1
- package/cache/inMemoryCache.cjs.map +0 -1
- package/cache/inMemoryCache.js.map +0 -1
- package/cache/index.cjs.map +0 -1
- package/cache/index.js.map +0 -1
- package/cache/localStorageCache.cjs.map +0 -1
- package/cache/localStorageCache.js.map +0 -1
- package/channel/channel.cjs.map +0 -1
- package/channel/channel.js.map +0 -1
- package/channel/encodedChannel.cjs.map +0 -1
- package/channel/encodedChannel.js.map +0 -1
- package/channel/guaranteedChannel.cjs.map +0 -1
- package/channel/guaranteedChannel.js.map +0 -1
- package/channel/httpBeaconChannel.cjs.map +0 -1
- package/channel/httpBeaconChannel.js.map +0 -1
- package/channel/index.cjs.map +0 -1
- package/channel/index.js.map +0 -1
- package/channel/queuedChannel.cjs.map +0 -1
- package/channel/queuedChannel.js.map +0 -1
- package/channel/retryChannel.cjs.map +0 -1
- package/channel/retryChannel.js.map +0 -1
- package/channel/sandboxChannel.cjs.map +0 -1
- package/channel/sandboxChannel.js.map +0 -1
- package/cid/assigner.cjs.map +0 -1
- package/cid/assigner.js.map +0 -1
- package/cid/cachedAssigner.cjs.map +0 -1
- package/cid/cachedAssigner.js.map +0 -1
- package/cid/fixedAssigner.cjs.map +0 -1
- package/cid/fixedAssigner.js.map +0 -1
- package/cid/index.cjs.map +0 -1
- package/cid/index.js.map +0 -1
- package/cid/remoteAssigner.cjs.map +0 -1
- package/cid/remoteAssigner.js.map +0 -1
- package/constants.cjs.map +0 -1
- package/constants.js.map +0 -1
- package/container.cjs.map +0 -1
- package/container.js.map +0 -1
- package/contentFetcher.cjs.map +0 -1
- package/contentFetcher.js.map +0 -1
- package/context.cjs.map +0 -1
- package/context.js.map +0 -1
- package/error.cjs.map +0 -1
- package/error.js.map +0 -1
- package/evaluator.cjs.map +0 -1
- package/evaluator.js.map +0 -1
- package/eventManager.cjs.map +0 -1
- package/eventManager.js.map +0 -1
- package/eventSubjectProcessor.cjs.map +0 -1
- package/eventSubjectProcessor.js.map +0 -1
- package/facade/contentFetcherFacade.cjs.map +0 -1
- package/facade/contentFetcherFacade.js.map +0 -1
- package/facade/evaluatorFacade.cjs.map +0 -1
- package/facade/evaluatorFacade.js.map +0 -1
- package/facade/index.cjs.map +0 -1
- package/facade/index.js.map +0 -1
- package/facade/sdkFacade.cjs.map +0 -1
- package/facade/sdkFacade.js.map +0 -1
- package/facade/sessionFacade.cjs.map +0 -1
- package/facade/sessionFacade.js.map +0 -1
- package/facade/sessionPatch.cjs.map +0 -1
- package/facade/sessionPatch.js.map +0 -1
- package/facade/trackerFacade.cjs.map +0 -1
- package/facade/trackerFacade.js.map +0 -1
- package/facade/userFacade.cjs.map +0 -1
- package/facade/userFacade.js.map +0 -1
- package/facade/userPatch.cjs.map +0 -1
- package/facade/userPatch.js.map +0 -1
- package/help.cjs.map +0 -1
- package/help.js.map +0 -1
- package/index.cjs.map +0 -1
- package/index.js.map +0 -1
- package/logging/consoleLogger.cjs.map +0 -1
- package/logging/consoleLogger.js.map +0 -1
- package/logging/filteredLogger.cjs.map +0 -1
- package/logging/filteredLogger.js.map +0 -1
- package/logging/index.cjs.map +0 -1
- package/logging/index.js.map +0 -1
- package/logging/logger.cjs.map +0 -1
- package/logging/logger.js.map +0 -1
- package/logging/namespacedLogger.cjs.map +0 -1
- package/logging/namespacedLogger.js.map +0 -1
- package/logging/nullLogger.cjs.map +0 -1
- package/logging/nullLogger.js.map +0 -1
- package/namespacedStorage.cjs.map +0 -1
- package/namespacedStorage.js.map +0 -1
- package/patch.cjs.map +0 -1
- package/patch.js.map +0 -1
- package/queue/capacityRestrictedQueue.cjs.map +0 -1
- package/queue/capacityRestrictedQueue.js.map +0 -1
- package/queue/inMemoryQueue.cjs.map +0 -1
- package/queue/inMemoryQueue.js.map +0 -1
- package/queue/index.cjs.map +0 -1
- package/queue/index.js.map +0 -1
- package/queue/monitoredQueue.cjs.map +0 -1
- package/queue/monitoredQueue.js.map +0 -1
- package/queue/persistentQueue.cjs.map +0 -1
- package/queue/persistentQueue.js.map +0 -1
- package/queue/queue.cjs.map +0 -1
- package/queue/queue.js.map +0 -1
- package/retry/arbitraryPolicy.cjs.map +0 -1
- package/retry/arbitraryPolicy.js.map +0 -1
- package/retry/backoffPolicy.cjs.map +0 -1
- package/retry/backoffPolicy.js.map +0 -1
- package/retry/index.cjs.map +0 -1
- package/retry/index.js.map +0 -1
- package/retry/maxAttemptsPolicy.cjs.map +0 -1
- package/retry/maxAttemptsPolicy.js.map +0 -1
- package/retry/neverPolicy.cjs.map +0 -1
- package/retry/neverPolicy.js.map +0 -1
- package/retry/policy.cjs.map +0 -1
- package/retry/policy.js.map +0 -1
- package/schema/attributeSchema.cjs.map +0 -1
- package/schema/attributeSchema.js.map +0 -1
- package/schema/contentFetcherSchemas.cjs.map +0 -1
- package/schema/contentFetcherSchemas.js.map +0 -1
- package/schema/contentSchemas.cjs.map +0 -1
- package/schema/contentSchemas.js.map +0 -1
- package/schema/contextSchemas.cjs.map +0 -1
- package/schema/contextSchemas.js.map +0 -1
- package/schema/ecommerceSchemas.cjs.map +0 -1
- package/schema/ecommerceSchemas.js.map +0 -1
- package/schema/evaluatorSchemas.cjs.map +0 -1
- package/schema/evaluatorSchemas.js.map +0 -1
- package/schema/eventSchemas.cjs.map +0 -1
- package/schema/eventSchemas.js.map +0 -1
- package/schema/index.cjs.map +0 -1
- package/schema/index.js.map +0 -1
- package/schema/loggerSchema.cjs.map +0 -1
- package/schema/loggerSchema.js.map +0 -1
- package/schema/operationSchemas.cjs.map +0 -1
- package/schema/operationSchemas.js.map +0 -1
- package/schema/sdkFacadeSchemas.cjs.map +0 -1
- package/schema/sdkFacadeSchemas.js.map +0 -1
- package/schema/sdkSchemas.cjs.map +0 -1
- package/schema/sdkSchemas.js.map +0 -1
- package/schema/tokenSchema.cjs.map +0 -1
- package/schema/tokenSchema.js.map +0 -1
- package/schema/userSchema.cjs.map +0 -1
- package/schema/userSchema.js.map +0 -1
- package/sdk.cjs.map +0 -1
- package/sdk.js.map +0 -1
- package/sdkEvents.cjs.map +0 -1
- package/sdkEvents.js.map +0 -1
- package/sourceLocation.cjs.map +0 -1
- package/sourceLocation.js.map +0 -1
- package/tab.cjs.map +0 -1
- package/tab.js.map +0 -1
- package/token/cachedTokenStore.cjs.map +0 -1
- package/token/cachedTokenStore.js.map +0 -1
- package/token/inMemoryTokenStore.cjs.map +0 -1
- package/token/inMemoryTokenStore.js.map +0 -1
- package/token/index.cjs.map +0 -1
- package/token/index.js.map +0 -1
- package/token/replicatedTokenStore.cjs.map +0 -1
- package/token/replicatedTokenStore.js.map +0 -1
- package/token/token.cjs.map +0 -1
- package/token/token.js.map +0 -1
- package/tracker.cjs.map +0 -1
- package/tracker.js.map +0 -1
- package/trackingEvents.cjs.map +0 -1
- package/trackingEvents.js.map +0 -1
- package/transformer.cjs.map +0 -1
- package/transformer.js.map +0 -1
- package/utilityTypes.cjs.map +0 -1
- package/utilityTypes.js.map +0 -1
- package/uuid.cjs.map +0 -1
- package/uuid.js.map +0 -1
- package/validation/arrayType.cjs.map +0 -1
- package/validation/arrayType.js.map +0 -1
- package/validation/booleanType.cjs.map +0 -1
- package/validation/booleanType.js.map +0 -1
- package/validation/functionType.cjs.map +0 -1
- package/validation/functionType.js.map +0 -1
- package/validation/index.cjs.map +0 -1
- package/validation/index.js.map +0 -1
- package/validation/jsonType.cjs.map +0 -1
- package/validation/jsonType.js.map +0 -1
- package/validation/mixedSchema.cjs.map +0 -1
- package/validation/mixedSchema.js.map +0 -1
- package/validation/nullType.cjs.map +0 -1
- package/validation/nullType.js.map +0 -1
- package/validation/numberType.cjs.map +0 -1
- package/validation/numberType.js.map +0 -1
- package/validation/objectType.cjs.map +0 -1
- package/validation/objectType.js.map +0 -1
- package/validation/schema.cjs.map +0 -1
- package/validation/schema.js.map +0 -1
- package/validation/stringType.cjs.map +0 -1
- package/validation/stringType.js.map +0 -1
- package/validation/unionType.cjs.map +0 -1
- package/validation/unionType.js.map +0 -1
- package/validation/violation.cjs.map +0 -1
- package/validation/violation.js.map +0 -1
package/validation/nullType.cjs
CHANGED
|
@@ -20,8 +20,8 @@ __export(nullType_exports, {
|
|
|
20
20
|
NullType: () => NullType
|
|
21
21
|
});
|
|
22
22
|
module.exports = __toCommonJS(nullType_exports);
|
|
23
|
-
var import_schema = require(
|
|
24
|
-
var import_violation = require(
|
|
23
|
+
var import_schema = require('./schema.cjs');
|
|
24
|
+
var import_violation = require('./violation.cjs');
|
|
25
25
|
class NullType {
|
|
26
26
|
getTypes() {
|
|
27
27
|
return ["null"];
|
|
@@ -43,4 +43,3 @@ class NullType {
|
|
|
43
43
|
0 && (module.exports = {
|
|
44
44
|
NullType
|
|
45
45
|
});
|
|
46
|
-
//# sourceMappingURL=nullType.cjs.map
|
package/validation/nullType.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Violation } from "./schema";
|
|
2
|
-
import { describe, formatPath } from "./violation";
|
|
1
|
+
import { Violation } from "./schema.js";
|
|
2
|
+
import { describe, formatPath } from "./violation.js";
|
|
3
3
|
class NullType {
|
|
4
4
|
getTypes() {
|
|
5
5
|
return ["null"];
|
|
@@ -20,4 +20,3 @@ class NullType {
|
|
|
20
20
|
export {
|
|
21
21
|
NullType
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=nullType.js.map
|
|
@@ -20,8 +20,8 @@ __export(numberType_exports, {
|
|
|
20
20
|
NumberType: () => NumberType
|
|
21
21
|
});
|
|
22
22
|
module.exports = __toCommonJS(numberType_exports);
|
|
23
|
-
var import_schema = require(
|
|
24
|
-
var import_violation = require(
|
|
23
|
+
var import_schema = require('./schema.cjs');
|
|
24
|
+
var import_violation = require('./violation.cjs');
|
|
25
25
|
class NumberType {
|
|
26
26
|
constructor(definition = {}) {
|
|
27
27
|
this.definition = {
|
|
@@ -66,4 +66,3 @@ class NumberType {
|
|
|
66
66
|
0 && (module.exports = {
|
|
67
67
|
NumberType
|
|
68
68
|
});
|
|
69
|
-
//# sourceMappingURL=numberType.cjs.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TypeSchema } from './schema.cjs';
|
|
2
|
+
|
|
3
|
+
type NumberDefinition = {
|
|
4
|
+
integer: boolean;
|
|
5
|
+
minimum: number;
|
|
6
|
+
maximum: number;
|
|
7
|
+
};
|
|
8
|
+
declare class NumberType implements TypeSchema {
|
|
9
|
+
private readonly definition;
|
|
10
|
+
constructor(definition?: Partial<NumberDefinition>);
|
|
11
|
+
getTypes(): string[];
|
|
12
|
+
isValidType(value: unknown): value is number;
|
|
13
|
+
validate(value: unknown, path?: string[]): void;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { NumberType };
|
package/validation/numberType.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Violation } from "./schema";
|
|
2
|
-
import { describe, formatPath } from "./violation";
|
|
1
|
+
import { Violation } from "./schema.js";
|
|
2
|
+
import { describe, formatPath } from "./violation.js";
|
|
3
3
|
class NumberType {
|
|
4
4
|
constructor(definition = {}) {
|
|
5
5
|
this.definition = {
|
|
@@ -43,4 +43,3 @@ class NumberType {
|
|
|
43
43
|
export {
|
|
44
44
|
NumberType
|
|
45
45
|
};
|
|
46
|
-
//# sourceMappingURL=numberType.js.map
|
|
@@ -20,9 +20,9 @@ __export(objectType_exports, {
|
|
|
20
20
|
ObjectType: () => ObjectType
|
|
21
21
|
});
|
|
22
22
|
module.exports = __toCommonJS(objectType_exports);
|
|
23
|
-
var import_schema = require(
|
|
24
|
-
var import_mixedSchema = require(
|
|
25
|
-
var import_violation = require(
|
|
23
|
+
var import_schema = require('./schema.cjs');
|
|
24
|
+
var import_mixedSchema = require('./mixedSchema.cjs');
|
|
25
|
+
var import_violation = require('./violation.cjs');
|
|
26
26
|
class ObjectType {
|
|
27
27
|
constructor(schema = {}) {
|
|
28
28
|
this.definition = {
|
|
@@ -111,4 +111,3 @@ class ObjectType {
|
|
|
111
111
|
0 && (module.exports = {
|
|
112
112
|
ObjectType
|
|
113
113
|
});
|
|
114
|
-
//# sourceMappingURL=objectType.cjs.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { TypeSchema, Schema } from './schema.cjs';
|
|
2
|
+
|
|
3
|
+
type ObjectDefinition = {
|
|
4
|
+
type?: {
|
|
5
|
+
new (...args: any): any;
|
|
6
|
+
};
|
|
7
|
+
properties: {
|
|
8
|
+
[key: string]: Schema;
|
|
9
|
+
};
|
|
10
|
+
additionalProperties: boolean | Schema;
|
|
11
|
+
subtypes?: {
|
|
12
|
+
discriminator: string;
|
|
13
|
+
schemas: {
|
|
14
|
+
[key: string]: ObjectType;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
propertyNames: Schema;
|
|
18
|
+
required: string[];
|
|
19
|
+
minProperties: number;
|
|
20
|
+
maxProperties: number;
|
|
21
|
+
};
|
|
22
|
+
declare class ObjectType implements TypeSchema {
|
|
23
|
+
private readonly definition;
|
|
24
|
+
constructor(schema?: Partial<ObjectDefinition>);
|
|
25
|
+
getTypes(): string[];
|
|
26
|
+
isValidType(value: unknown): value is object;
|
|
27
|
+
validate(value: unknown, path?: string[]): void;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export { ObjectType };
|
package/validation/objectType.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Violation } from "./schema";
|
|
2
|
-
import { MixedSchema } from "./mixedSchema";
|
|
3
|
-
import { describe, formatPath } from "./violation";
|
|
1
|
+
import { Violation } from "./schema.js";
|
|
2
|
+
import { MixedSchema } from "./mixedSchema.js";
|
|
3
|
+
import { describe, formatPath } from "./violation.js";
|
|
4
4
|
class ObjectType {
|
|
5
5
|
constructor(schema = {}) {
|
|
6
6
|
this.definition = {
|
|
@@ -88,4 +88,3 @@ class ObjectType {
|
|
|
88
88
|
export {
|
|
89
89
|
ObjectType
|
|
90
90
|
};
|
|
91
|
-
//# sourceMappingURL=objectType.js.map
|
package/validation/schema.cjs
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface Schema {
|
|
2
|
+
validate(value: unknown, path?: string[]): void;
|
|
3
|
+
}
|
|
4
|
+
interface TypeSchema extends Schema {
|
|
5
|
+
getTypes(): string[];
|
|
6
|
+
isValidType(value: unknown): boolean;
|
|
7
|
+
}
|
|
8
|
+
declare class Violation extends Error {
|
|
9
|
+
readonly path: string[];
|
|
10
|
+
readonly params: {
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
};
|
|
13
|
+
constructor(message: string, path: string[], params: {
|
|
14
|
+
[p: string]: unknown;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { type Schema, type TypeSchema, Violation };
|
package/validation/schema.js
CHANGED
|
@@ -20,8 +20,8 @@ __export(stringType_exports, {
|
|
|
20
20
|
StringType: () => StringType
|
|
21
21
|
});
|
|
22
22
|
module.exports = __toCommonJS(stringType_exports);
|
|
23
|
-
var import_schema = require(
|
|
24
|
-
var import_violation = require(
|
|
23
|
+
var import_schema = require('./schema.cjs');
|
|
24
|
+
var import_violation = require('./violation.cjs');
|
|
25
25
|
const FORMAT = {
|
|
26
26
|
pointer: function pointer(value) {
|
|
27
27
|
return /^(\.|([a-zA-Z_][a-zA-Z0-9_]*|\[[0-9]+])(\.[a-zA-Z_][a-zA-Z0-9_]*|\[[0-9]+])*)$/.test(value);
|
|
@@ -103,4 +103,3 @@ class StringType {
|
|
|
103
103
|
0 && (module.exports = {
|
|
104
104
|
StringType
|
|
105
105
|
});
|
|
106
|
-
//# sourceMappingURL=stringType.cjs.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { TypeSchema } from './schema.cjs';
|
|
2
|
+
|
|
3
|
+
interface Format {
|
|
4
|
+
(value: string): boolean;
|
|
5
|
+
}
|
|
6
|
+
declare const FORMAT: {
|
|
7
|
+
[key: string]: Format;
|
|
8
|
+
};
|
|
9
|
+
type StringDefinition = {
|
|
10
|
+
minLength: number;
|
|
11
|
+
maxLength: number;
|
|
12
|
+
enumeration: string[];
|
|
13
|
+
pattern?: RegExp;
|
|
14
|
+
format?: keyof typeof FORMAT;
|
|
15
|
+
};
|
|
16
|
+
declare class StringType implements TypeSchema {
|
|
17
|
+
private readonly definition;
|
|
18
|
+
constructor(definition?: Partial<StringDefinition>);
|
|
19
|
+
getTypes(): string[];
|
|
20
|
+
isValidType(value: unknown): value is string;
|
|
21
|
+
validate(value: unknown, path?: string[]): void;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { StringType };
|
package/validation/stringType.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Violation } from "./schema";
|
|
2
|
-
import { describe, formatPath } from "./violation";
|
|
1
|
+
import { Violation } from "./schema.js";
|
|
2
|
+
import { describe, formatPath } from "./violation.js";
|
|
3
3
|
const FORMAT = {
|
|
4
4
|
pointer: function pointer(value) {
|
|
5
5
|
return /^(\.|([a-zA-Z_][a-zA-Z0-9_]*|\[[0-9]+])(\.[a-zA-Z_][a-zA-Z0-9_]*|\[[0-9]+])*)$/.test(value);
|
|
@@ -80,4 +80,3 @@ class StringType {
|
|
|
80
80
|
export {
|
|
81
81
|
StringType
|
|
82
82
|
};
|
|
83
|
-
//# sourceMappingURL=stringType.js.map
|
package/validation/unionType.cjs
CHANGED
|
@@ -20,8 +20,8 @@ __export(unionType_exports, {
|
|
|
20
20
|
UnionType: () => UnionType
|
|
21
21
|
});
|
|
22
22
|
module.exports = __toCommonJS(unionType_exports);
|
|
23
|
-
var import_schema = require(
|
|
24
|
-
var import_violation = require(
|
|
23
|
+
var import_schema = require('./schema.cjs');
|
|
24
|
+
var import_violation = require('./violation.cjs');
|
|
25
25
|
class UnionType {
|
|
26
26
|
constructor(first, second, ...others) {
|
|
27
27
|
this.schemas = [first, second, ...others];
|
|
@@ -64,4 +64,3 @@ class UnionType {
|
|
|
64
64
|
0 && (module.exports = {
|
|
65
65
|
UnionType
|
|
66
66
|
});
|
|
67
|
-
//# sourceMappingURL=unionType.cjs.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TypeSchema } from './schema.cjs';
|
|
2
|
+
|
|
3
|
+
declare class UnionType implements TypeSchema {
|
|
4
|
+
private readonly schemas;
|
|
5
|
+
constructor(first: TypeSchema, second: TypeSchema, ...others: TypeSchema[]);
|
|
6
|
+
getTypes(): string[];
|
|
7
|
+
isValidType(value: unknown): boolean;
|
|
8
|
+
validate(value: unknown, path?: string[]): void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { UnionType };
|
package/validation/unionType.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Violation } from "./schema";
|
|
2
|
-
import { describe, formatPath } from "./violation";
|
|
1
|
+
import { Violation } from "./schema.js";
|
|
2
|
+
import { describe, formatPath } from "./violation.js";
|
|
3
3
|
class UnionType {
|
|
4
4
|
constructor(first, second, ...others) {
|
|
5
5
|
this.schemas = [first, second, ...others];
|
|
@@ -41,4 +41,3 @@ class UnionType {
|
|
|
41
41
|
export {
|
|
42
42
|
UnionType
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=unionType.js.map
|
package/validation/violation.cjs
CHANGED
package/validation/violation.js
CHANGED
package/activeRecord.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/activeRecord.ts"],"sourcesContent":["import {JsonStructure, JsonValue} from '@croct/json';\nimport {Operation, Patch} from './patch';\nimport {TrackingEvent} from './trackingEvents';\nimport {\n addOperation,\n clearOperation,\n combineOperation,\n decrementOperation,\n incrementOperation,\n mergeOperation,\n setOperation,\n unsetOperation,\n removeOperation,\n} from './schema';\n\nconst operationSchema = {\n add: addOperation,\n set: setOperation,\n merge: mergeOperation,\n combine: combineOperation,\n increment: incrementOperation,\n decrement: decrementOperation,\n clear: clearOperation,\n unset: unsetOperation,\n remove: removeOperation,\n};\n\nexport abstract class ActiveRecord<T extends TrackingEvent> {\n private readonly operations: Operation[] = [];\n\n public set(value: JsonValue): this;\n\n public set(property: string, value: JsonValue): this;\n\n public set(propertyOrValue: string | JsonValue, value?: JsonValue): this {\n if (typeof propertyOrValue === 'string') {\n return this.pushOperation({\n type: 'set',\n path: propertyOrValue,\n value: value as JsonValue,\n });\n }\n\n return this.pushOperation({\n type: 'set',\n path: '.',\n value: propertyOrValue,\n });\n }\n\n public add(property: string, value: JsonValue): this {\n return this.pushOperation({\n type: 'add',\n path: property,\n value: value,\n });\n }\n\n public combine(property: string, value: JsonValue): this {\n return this.pushOperation({\n type: 'combine',\n path: property,\n value: value,\n });\n }\n\n public merge(value: JsonStructure): this;\n\n public merge(property: string, value: JsonStructure): this;\n\n public merge(propertyOrValue: string | JsonStructure, value?: JsonStructure): this {\n if (typeof propertyOrValue === 'string') {\n return this.pushOperation({\n type: 'merge',\n path: propertyOrValue,\n value: value as JsonStructure,\n });\n }\n\n return this.pushOperation({\n type: 'merge',\n path: '.',\n value: propertyOrValue,\n });\n }\n\n public increment(property: string, amount = 1): this {\n return this.pushOperation({\n type: 'increment',\n path: property,\n value: amount,\n });\n }\n\n public decrement(property: string, amount = 1): this {\n return this.pushOperation({\n type: 'decrement',\n path: property,\n value: amount,\n });\n }\n\n public clear(property: string): this {\n return this.pushOperation({\n type: 'clear',\n path: property,\n });\n }\n\n public unset(property: string): this {\n return this.pushOperation({\n type: 'unset',\n path: property,\n });\n }\n\n public remove(property: string, value: JsonValue): this {\n return this.pushOperation({\n type: 'remove',\n path: property,\n value: value,\n });\n }\n\n private pushOperation(operation: Operation): this {\n const {type, ...data} = operation;\n\n operationSchema[type].validate(data);\n\n this.operations.push(operation);\n\n return this;\n }\n\n protected reset(): this {\n this.operations.splice(0);\n\n return this;\n }\n\n public abstract save(): Promise<T>;\n\n protected isDirty(): boolean {\n return this.operations.length > 0;\n }\n\n protected buildPatch(): Patch {\n return {operations: this.operations.slice()};\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAUO;AAEP,MAAM,kBAAkB;AAAA,EACpB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AACZ;AAEO,MAAe,aAAsC;AAAA,EAArD;AACH,SAAiB,aAA0B,CAAC;AAAA;AAAA,EAMrC,IAAI,iBAAqC,OAAyB;AACrE,QAAI,OAAO,oBAAoB,UAAU;AACrC,aAAO,KAAK,cAAc;AAAA,QACtB,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,MACJ,CAAC;AAAA,IACL;AAEA,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EAEO,IAAI,UAAkB,OAAwB;AACjD,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEO,QAAQ,UAAkB,OAAwB;AACrD,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAMO,MAAM,iBAAyC,OAA6B;AAC/E,QAAI,OAAO,oBAAoB,UAAU;AACrC,aAAO,KAAK,cAAc;AAAA,QACtB,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,MACJ,CAAC;AAAA,IACL;AAEA,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EAEO,UAAU,UAAkB,SAAS,GAAS;AACjD,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EAEO,UAAU,UAAkB,SAAS,GAAS;AACjD,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EAEO,MAAM,UAAwB;AACjC,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,IACV,CAAC;AAAA,EACL;AAAA,EAEO,MAAM,UAAwB;AACjC,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,IACV,CAAC;AAAA,EACL;AAAA,EAEO,OAAO,UAAkB,OAAwB;AACpD,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEQ,cAAc,WAA4B;AAC9C,UAAM,EAAC,MAAM,GAAG,KAAI,IAAI;AAExB,oBAAgB,IAAI,EAAE,SAAS,IAAI;AAEnC,SAAK,WAAW,KAAK,SAAS;AAE9B,WAAO;AAAA,EACX;AAAA,EAEU,QAAc;AACpB,SAAK,WAAW,OAAO,CAAC;AAExB,WAAO;AAAA,EACX;AAAA,EAIU,UAAmB;AACzB,WAAO,KAAK,WAAW,SAAS;AAAA,EACpC;AAAA,EAEU,aAAoB;AAC1B,WAAO,EAAC,YAAY,KAAK,WAAW,MAAM,EAAC;AAAA,EAC/C;AACJ;","names":[]}
|
package/activeRecord.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["src/activeRecord.ts"],"sourcesContent":["import {JsonStructure, JsonValue} from '@croct/json';\nimport {Operation, Patch} from './patch';\nimport {TrackingEvent} from './trackingEvents';\nimport {\n addOperation,\n clearOperation,\n combineOperation,\n decrementOperation,\n incrementOperation,\n mergeOperation,\n setOperation,\n unsetOperation,\n removeOperation,\n} from './schema';\n\nconst operationSchema = {\n add: addOperation,\n set: setOperation,\n merge: mergeOperation,\n combine: combineOperation,\n increment: incrementOperation,\n decrement: decrementOperation,\n clear: clearOperation,\n unset: unsetOperation,\n remove: removeOperation,\n};\n\nexport abstract class ActiveRecord<T extends TrackingEvent> {\n private readonly operations: Operation[] = [];\n\n public set(value: JsonValue): this;\n\n public set(property: string, value: JsonValue): this;\n\n public set(propertyOrValue: string | JsonValue, value?: JsonValue): this {\n if (typeof propertyOrValue === 'string') {\n return this.pushOperation({\n type: 'set',\n path: propertyOrValue,\n value: value as JsonValue,\n });\n }\n\n return this.pushOperation({\n type: 'set',\n path: '.',\n value: propertyOrValue,\n });\n }\n\n public add(property: string, value: JsonValue): this {\n return this.pushOperation({\n type: 'add',\n path: property,\n value: value,\n });\n }\n\n public combine(property: string, value: JsonValue): this {\n return this.pushOperation({\n type: 'combine',\n path: property,\n value: value,\n });\n }\n\n public merge(value: JsonStructure): this;\n\n public merge(property: string, value: JsonStructure): this;\n\n public merge(propertyOrValue: string | JsonStructure, value?: JsonStructure): this {\n if (typeof propertyOrValue === 'string') {\n return this.pushOperation({\n type: 'merge',\n path: propertyOrValue,\n value: value as JsonStructure,\n });\n }\n\n return this.pushOperation({\n type: 'merge',\n path: '.',\n value: propertyOrValue,\n });\n }\n\n public increment(property: string, amount = 1): this {\n return this.pushOperation({\n type: 'increment',\n path: property,\n value: amount,\n });\n }\n\n public decrement(property: string, amount = 1): this {\n return this.pushOperation({\n type: 'decrement',\n path: property,\n value: amount,\n });\n }\n\n public clear(property: string): this {\n return this.pushOperation({\n type: 'clear',\n path: property,\n });\n }\n\n public unset(property: string): this {\n return this.pushOperation({\n type: 'unset',\n path: property,\n });\n }\n\n public remove(property: string, value: JsonValue): this {\n return this.pushOperation({\n type: 'remove',\n path: property,\n value: value,\n });\n }\n\n private pushOperation(operation: Operation): this {\n const {type, ...data} = operation;\n\n operationSchema[type].validate(data);\n\n this.operations.push(operation);\n\n return this;\n }\n\n protected reset(): this {\n this.operations.splice(0);\n\n return this;\n }\n\n public abstract save(): Promise<T>;\n\n protected isDirty(): boolean {\n return this.operations.length > 0;\n }\n\n protected buildPatch(): Patch {\n return {operations: this.operations.slice()};\n }\n}\n"],"mappings":"AAGA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,MAAM,kBAAkB;AAAA,EACpB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AACZ;AAEO,MAAe,aAAsC;AAAA,EAArD;AACH,SAAiB,aAA0B,CAAC;AAAA;AAAA,EAMrC,IAAI,iBAAqC,OAAyB;AACrE,QAAI,OAAO,oBAAoB,UAAU;AACrC,aAAO,KAAK,cAAc;AAAA,QACtB,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,MACJ,CAAC;AAAA,IACL;AAEA,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EAEO,IAAI,UAAkB,OAAwB;AACjD,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEO,QAAQ,UAAkB,OAAwB;AACrD,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAMO,MAAM,iBAAyC,OAA6B;AAC/E,QAAI,OAAO,oBAAoB,UAAU;AACrC,aAAO,KAAK,cAAc;AAAA,QACtB,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,MACJ,CAAC;AAAA,IACL;AAEA,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EAEO,UAAU,UAAkB,SAAS,GAAS;AACjD,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EAEO,UAAU,UAAkB,SAAS,GAAS;AACjD,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EAEO,MAAM,UAAwB;AACjC,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,IACV,CAAC;AAAA,EACL;AAAA,EAEO,MAAM,UAAwB;AACjC,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,IACV,CAAC;AAAA,EACL;AAAA,EAEO,OAAO,UAAkB,OAAwB;AACpD,WAAO,KAAK,cAAc;AAAA,MACtB,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEQ,cAAc,WAA4B;AAC9C,UAAM,EAAC,MAAM,GAAG,KAAI,IAAI;AAExB,oBAAgB,IAAI,EAAE,SAAS,IAAI;AAEnC,SAAK,WAAW,KAAK,SAAS;AAE9B,WAAO;AAAA,EACX;AAAA,EAEU,QAAc;AACpB,SAAK,WAAW,OAAO,CAAC;AAExB,WAAO;AAAA,EACX;AAAA,EAIU,UAAmB;AACzB,WAAO,KAAK,WAAW,SAAS;AAAA,EACpC;AAAA,EAEU,aAAoB;AAC1B,WAAO,EAAC,YAAY,KAAK,WAAW,MAAM,EAAC;AAAA,EAC/C;AACJ;","names":[]}
|
package/apiKey.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/apiKey.ts"],"sourcesContent":["export type ParsedPrivateKey = {\n algorithm: string,\n encodedKey: string,\n};\n\ntype Algorithm = {\n keyAlgorithm: EcKeyImportParams,\n signatureAlgorithm: EcdsaParams,\n};\n\nexport class ApiKey {\n private static readonly IDENTIFIER_PATTERN = /^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$/i;\n\n private static readonly PRIVATE_KEY_PATTERN = /^[a-z0-9]+;[^;]+$/i;\n\n private static readonly ALGORITHMS: Record<string, Algorithm> = {\n ES256: {\n keyAlgorithm: {\n name: 'ECDSA',\n namedCurve: 'P-256',\n },\n signatureAlgorithm: {\n name: 'ECDSA',\n hash: 'SHA-256',\n },\n },\n };\n\n private readonly identifier: string;\n\n private readonly privateKey?: ParsedPrivateKey;\n\n private importedKey: Promise<CryptoKey>;\n\n private constructor(identifier: string, privateKey?: ParsedPrivateKey) {\n this.identifier = identifier;\n this.privateKey = privateKey;\n }\n\n public static from(apiKey: string | ApiKey): ApiKey {\n if (apiKey instanceof ApiKey) {\n return apiKey;\n }\n\n return ApiKey.parse(apiKey);\n }\n\n public static parse(apiKey: string): ApiKey {\n const parts = apiKey.split(':');\n\n if (parts.length > 2) {\n throw new Error('Invalid API key format.');\n }\n\n return ApiKey.of(parts[0], parts[1]);\n }\n\n public static of(identifier: string, privateKey?: string): ApiKey {\n if (!ApiKey.IDENTIFIER_PATTERN.test(identifier)) {\n throw new Error('The identifier must be a UUID.');\n }\n\n if (privateKey === undefined || privateKey === '') {\n return new ApiKey(identifier);\n }\n\n if (!ApiKey.PRIVATE_KEY_PATTERN.test(privateKey)) {\n throw new Error('The private key is malformed.');\n }\n\n const [algorithmName, encodedKey] = privateKey.split(';');\n\n if (!(algorithmName in ApiKey.ALGORITHMS)) {\n throw new Error(`Unsupported signing algorithm \"${algorithmName}\".`);\n }\n\n return new ApiKey(identifier, {\n algorithm: algorithmName,\n encodedKey: encodedKey,\n });\n }\n\n public getIdentifier(): string {\n return this.identifier;\n }\n\n public async getIdentifierHash(): Promise<string> {\n const identifierBytes = ApiKey.createByteArrayFromHexString(this.identifier.replace(/-/g, ''));\n const rawHash = await crypto.subtle.digest('SHA-256', identifierBytes);\n\n return ApiKey.convertBufferToHexString(rawHash);\n }\n\n public hasPrivateKey(): boolean {\n return this.privateKey !== undefined;\n }\n\n public getPrivateKey(): string {\n if (this.privateKey === undefined) {\n throw new Error('The API key does not have a private key.');\n }\n\n return `${this.privateKey.algorithm};${this.privateKey.encodedKey}`;\n }\n\n public async sign(data: string): Promise<string> {\n const key = await this.importKey();\n const algorithm = this.getSigningAlgorithm();\n\n return ApiKey.convertBufferToString(\n await crypto.subtle.sign(\n ApiKey.ALGORITHMS[algorithm].signatureAlgorithm,\n key,\n ApiKey.createByteArrayFromString(data),\n ),\n );\n }\n\n public getSigningAlgorithm(): string {\n const {algorithm} = this.getParsedPrivateKey();\n\n return algorithm;\n }\n\n private importKey(): Promise<CryptoKey> {\n const {algorithm, encodedKey} = this.getParsedPrivateKey();\n\n if (this.importedKey === undefined) {\n this.importedKey = crypto.subtle\n .importKey(\n 'pkcs8',\n ApiKey.createByteArrayFromString(atob(encodedKey)),\n ApiKey.ALGORITHMS[algorithm].keyAlgorithm,\n false,\n ['sign'],\n );\n }\n\n return this.importedKey;\n }\n\n private getParsedPrivateKey(): ParsedPrivateKey {\n if (this.privateKey === undefined) {\n throw new Error('The API key does not have a private key.');\n }\n\n return this.privateKey;\n }\n\n public export(): string {\n return this.identifier + (this.hasPrivateKey() ? `:${this.getPrivateKey()}` : '');\n }\n\n public toString(): string {\n return '[redacted]';\n }\n\n /**\n * Create an array buffer from a string.\n *\n * @see https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\n *\n * @param data The string to convert.\n * @returns The array buffer.\n */\n private static createByteArrayFromString(data: string): Uint8Array {\n const byteArray = new Uint8Array(data.length);\n\n for (let i = 0; i < byteArray.length; i++) {\n byteArray[i] = data.charCodeAt(i);\n }\n\n return byteArray;\n }\n\n private static createByteArrayFromHexString(data: string): Uint8Array {\n const byteArray = new Uint8Array(data.length / 2);\n\n for (let i = 0; i < byteArray.length; i++) {\n byteArray[i] = parseInt(data.substring(i * 2, i * 2 + 2), 16);\n }\n\n return byteArray;\n }\n\n /**\n * Convert an array buffer to a string.\n *\n * @see https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\n *\n * @param buffer The buffer to convert.\n * @returns The string.\n */\n private static convertBufferToString(buffer: ArrayLike<number> | ArrayBufferLike): string {\n return String.fromCharCode(...new Uint8Array(buffer));\n }\n\n private static convertBufferToHexString(buffer: ArrayLike<number> | ArrayBufferLike): string {\n const bytes = new Uint8Array(buffer);\n let hexString = '';\n\n for (let i = 0; i < bytes.length; i++) {\n hexString += bytes[i].toString(16).padStart(2, '0');\n }\n\n return hexString;\n }\n}\n"],"mappings":"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","names":[]}
|
package/apiKey.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["src/apiKey.ts"],"sourcesContent":["export type ParsedPrivateKey = {\n algorithm: string,\n encodedKey: string,\n};\n\ntype Algorithm = {\n keyAlgorithm: EcKeyImportParams,\n signatureAlgorithm: EcdsaParams,\n};\n\nexport class ApiKey {\n private static readonly IDENTIFIER_PATTERN = /^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$/i;\n\n private static readonly PRIVATE_KEY_PATTERN = /^[a-z0-9]+;[^;]+$/i;\n\n private static readonly ALGORITHMS: Record<string, Algorithm> = {\n ES256: {\n keyAlgorithm: {\n name: 'ECDSA',\n namedCurve: 'P-256',\n },\n signatureAlgorithm: {\n name: 'ECDSA',\n hash: 'SHA-256',\n },\n },\n };\n\n private readonly identifier: string;\n\n private readonly privateKey?: ParsedPrivateKey;\n\n private importedKey: Promise<CryptoKey>;\n\n private constructor(identifier: string, privateKey?: ParsedPrivateKey) {\n this.identifier = identifier;\n this.privateKey = privateKey;\n }\n\n public static from(apiKey: string | ApiKey): ApiKey {\n if (apiKey instanceof ApiKey) {\n return apiKey;\n }\n\n return ApiKey.parse(apiKey);\n }\n\n public static parse(apiKey: string): ApiKey {\n const parts = apiKey.split(':');\n\n if (parts.length > 2) {\n throw new Error('Invalid API key format.');\n }\n\n return ApiKey.of(parts[0], parts[1]);\n }\n\n public static of(identifier: string, privateKey?: string): ApiKey {\n if (!ApiKey.IDENTIFIER_PATTERN.test(identifier)) {\n throw new Error('The identifier must be a UUID.');\n }\n\n if (privateKey === undefined || privateKey === '') {\n return new ApiKey(identifier);\n }\n\n if (!ApiKey.PRIVATE_KEY_PATTERN.test(privateKey)) {\n throw new Error('The private key is malformed.');\n }\n\n const [algorithmName, encodedKey] = privateKey.split(';');\n\n if (!(algorithmName in ApiKey.ALGORITHMS)) {\n throw new Error(`Unsupported signing algorithm \"${algorithmName}\".`);\n }\n\n return new ApiKey(identifier, {\n algorithm: algorithmName,\n encodedKey: encodedKey,\n });\n }\n\n public getIdentifier(): string {\n return this.identifier;\n }\n\n public async getIdentifierHash(): Promise<string> {\n const identifierBytes = ApiKey.createByteArrayFromHexString(this.identifier.replace(/-/g, ''));\n const rawHash = await crypto.subtle.digest('SHA-256', identifierBytes);\n\n return ApiKey.convertBufferToHexString(rawHash);\n }\n\n public hasPrivateKey(): boolean {\n return this.privateKey !== undefined;\n }\n\n public getPrivateKey(): string {\n if (this.privateKey === undefined) {\n throw new Error('The API key does not have a private key.');\n }\n\n return `${this.privateKey.algorithm};${this.privateKey.encodedKey}`;\n }\n\n public async sign(data: string): Promise<string> {\n const key = await this.importKey();\n const algorithm = this.getSigningAlgorithm();\n\n return ApiKey.convertBufferToString(\n await crypto.subtle.sign(\n ApiKey.ALGORITHMS[algorithm].signatureAlgorithm,\n key,\n ApiKey.createByteArrayFromString(data),\n ),\n );\n }\n\n public getSigningAlgorithm(): string {\n const {algorithm} = this.getParsedPrivateKey();\n\n return algorithm;\n }\n\n private importKey(): Promise<CryptoKey> {\n const {algorithm, encodedKey} = this.getParsedPrivateKey();\n\n if (this.importedKey === undefined) {\n this.importedKey = crypto.subtle\n .importKey(\n 'pkcs8',\n ApiKey.createByteArrayFromString(atob(encodedKey)),\n ApiKey.ALGORITHMS[algorithm].keyAlgorithm,\n false,\n ['sign'],\n );\n }\n\n return this.importedKey;\n }\n\n private getParsedPrivateKey(): ParsedPrivateKey {\n if (this.privateKey === undefined) {\n throw new Error('The API key does not have a private key.');\n }\n\n return this.privateKey;\n }\n\n public export(): string {\n return this.identifier + (this.hasPrivateKey() ? `:${this.getPrivateKey()}` : '');\n }\n\n public toString(): string {\n return '[redacted]';\n }\n\n /**\n * Create an array buffer from a string.\n *\n * @see https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\n *\n * @param data The string to convert.\n * @returns The array buffer.\n */\n private static createByteArrayFromString(data: string): Uint8Array {\n const byteArray = new Uint8Array(data.length);\n\n for (let i = 0; i < byteArray.length; i++) {\n byteArray[i] = data.charCodeAt(i);\n }\n\n return byteArray;\n }\n\n private static createByteArrayFromHexString(data: string): Uint8Array {\n const byteArray = new Uint8Array(data.length / 2);\n\n for (let i = 0; i < byteArray.length; i++) {\n byteArray[i] = parseInt(data.substring(i * 2, i * 2 + 2), 16);\n }\n\n return byteArray;\n }\n\n /**\n * Convert an array buffer to a string.\n *\n * @see https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String\n *\n * @param buffer The buffer to convert.\n * @returns The string.\n */\n private static convertBufferToString(buffer: ArrayLike<number> | ArrayBufferLike): string {\n return String.fromCharCode(...new Uint8Array(buffer));\n }\n\n private static convertBufferToHexString(buffer: ArrayLike<number> | ArrayBufferLike): string {\n const bytes = new Uint8Array(buffer);\n let hexString = '';\n\n for (let i = 0; i < bytes.length; i++) {\n hexString += bytes[i].toString(16).padStart(2, '0');\n }\n\n return hexString;\n }\n}\n"],"mappings":"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","names":[]}
|
package/base64Url.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/base64Url.ts"],"sourcesContent":["function base64Unescape(value: string): string {\n return (value + '==='.slice((value.length + 3) % 4)).replace(/-/g, '+').replace(/_/g, '/');\n}\n\nfunction base64Escape(value: string): string {\n return value\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '');\n}\n\nexport function base64UrlEncode(value: string, utf8 = false): string {\n return utf8\n ? base64Escape(btoa(String.fromCodePoint(...new TextEncoder().encode(value))))\n : base64Escape(btoa(value));\n}\n\nexport function base64UrlDecode(value: string, utf8 = false): string {\n return utf8\n ? new TextDecoder().decode(Uint8Array.from(atob(base64Unescape(value)), m => m.codePointAt(0)!))\n : atob(base64Unescape(value));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,eAAe,OAAuB;AAC3C,UAAQ,QAAQ,MAAM,OAAO,MAAM,SAAS,KAAK,CAAC,GAAG,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;AAC7F;AAEA,SAAS,aAAa,OAAuB;AACzC,SAAO,MACF,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,GAAG,EAClB,QAAQ,MAAM,EAAE;AACzB;AAEO,SAAS,gBAAgB,OAAe,OAAO,OAAe;AACjE,SAAO,OACD,aAAa,KAAK,OAAO,cAAc,GAAG,IAAI,YAAY,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,IAC3E,aAAa,KAAK,KAAK,CAAC;AAClC;AAEO,SAAS,gBAAgB,OAAe,OAAO,OAAe;AACjE,SAAO,OACD,IAAI,YAAY,EAAE,OAAO,WAAW,KAAK,KAAK,eAAe,KAAK,CAAC,GAAG,OAAK,EAAE,YAAY,CAAC,CAAE,CAAC,IAC7F,KAAK,eAAe,KAAK,CAAC;AACpC;","names":[]}
|
package/base64Url.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["src/base64Url.ts"],"sourcesContent":["function base64Unescape(value: string): string {\n return (value + '==='.slice((value.length + 3) % 4)).replace(/-/g, '+').replace(/_/g, '/');\n}\n\nfunction base64Escape(value: string): string {\n return value\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '');\n}\n\nexport function base64UrlEncode(value: string, utf8 = false): string {\n return utf8\n ? base64Escape(btoa(String.fromCodePoint(...new TextEncoder().encode(value))))\n : base64Escape(btoa(value));\n}\n\nexport function base64UrlDecode(value: string, utf8 = false): string {\n return utf8\n ? new TextDecoder().decode(Uint8Array.from(atob(base64Unescape(value)), m => m.codePointAt(0)!))\n : atob(base64Unescape(value));\n}\n"],"mappings":"AAAA,SAAS,eAAe,OAAuB;AAC3C,UAAQ,QAAQ,MAAM,OAAO,MAAM,SAAS,KAAK,CAAC,GAAG,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;AAC7F;AAEA,SAAS,aAAa,OAAuB;AACzC,SAAO,MACF,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,GAAG,EAClB,QAAQ,MAAM,EAAE;AACzB;AAEO,SAAS,gBAAgB,OAAe,OAAO,OAAe;AACjE,SAAO,OACD,aAAa,KAAK,OAAO,cAAc,GAAG,IAAI,YAAY,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,IAC3E,aAAa,KAAK,KAAK,CAAC;AAClC;AAEO,SAAS,gBAAgB,OAAe,OAAO,OAAe;AACjE,SAAO,OACD,IAAI,YAAY,EAAE,OAAO,WAAW,KAAK,KAAK,eAAe,KAAK,CAAC,GAAG,OAAK,EAAE,YAAY,CAAC,CAAE,CAAC,IAC7F,KAAK,eAAe,KAAK,CAAC;AACpC;","names":[]}
|
package/cache/cache.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cache/cache.ts"],"sourcesContent":["export interface Cache {\n get(): string|null;\n put(value: string): void;\n clear(): void;\n}\n\nexport interface CacheListener {\n (value: string|null): void;\n}\n\nexport interface ObservableCache extends Cache {\n addListener(listener: CacheListener): void;\n\n removeListener(listener: CacheListener): void;\n}\n\nexport namespace ObservableCache {\n export function isObservable(cache: Cache): cache is ObservableCache {\n return typeof (cache as ObservableCache).addListener === 'function'\n && typeof (cache as ObservableCache).removeListener === 'function';\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,IAAU;AAAA,CAAV,CAAUA,qBAAV;AACI,WAAS,aAAa,OAAwC;AACjE,WAAO,OAAQ,MAA0B,gBAAgB,cAClD,OAAQ,MAA0B,mBAAmB;AAAA,EAChE;AAHO,EAAAA,iBAAS;AAAA,GADH;","names":["ObservableCache"]}
|
package/cache/cache.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cache/cache.ts"],"sourcesContent":["export interface Cache {\n get(): string|null;\n put(value: string): void;\n clear(): void;\n}\n\nexport interface CacheListener {\n (value: string|null): void;\n}\n\nexport interface ObservableCache extends Cache {\n addListener(listener: CacheListener): void;\n\n removeListener(listener: CacheListener): void;\n}\n\nexport namespace ObservableCache {\n export function isObservable(cache: Cache): cache is ObservableCache {\n return typeof (cache as ObservableCache).addListener === 'function'\n && typeof (cache as ObservableCache).removeListener === 'function';\n }\n}\n"],"mappings":"AAgBO,IAAU;AAAA,CAAV,CAAUA,qBAAV;AACI,WAAS,aAAa,OAAwC;AACjE,WAAO,OAAQ,MAA0B,gBAAgB,cAClD,OAAQ,MAA0B,mBAAmB;AAAA,EAChE;AAHO,EAAAA,iBAAS;AAAA,GADH;","names":["ObservableCache"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cache/cookieCache.ts"],"sourcesContent":["import {Cache} from './cache';\n\nexport type CookieCacheConfiguration = {\n name: string,\n secure?: boolean,\n maxAge?: number,\n domain?: string,\n path?: string,\n sameSite?: 'strict' | 'lax' | 'none',\n};\n\nexport class CookieCache implements Cache {\n private readonly config: CookieCacheConfiguration;\n\n public constructor(config: CookieCacheConfiguration, defaultSecure = window.location.protocol === 'https:') {\n this.config = {\n ...config,\n path: config.path ?? '/',\n };\n\n if (defaultSecure && this.config.secure === undefined) {\n this.config.secure = true;\n }\n\n if (this.config.secure === true && this.config.sameSite === undefined) {\n this.config.sameSite = 'none';\n }\n }\n\n public get(): string | null {\n const entries = document.cookie.split(';');\n\n for (const entry of entries) {\n const [name, value] = entry.split('=');\n\n if (CookieCache.decode(name).trim() === this.config.name) {\n return CookieCache.decode(value.trim());\n }\n }\n\n return null;\n }\n\n public put(value: string): void {\n document.cookie = CookieCache.serializeCookie(value, this.config);\n }\n\n public clear(): void {\n document.cookie = CookieCache.serializeCookie('', {\n ...this.config,\n maxAge: 0,\n });\n }\n\n private static serializeCookie(value: string, config: CookieCacheConfiguration): string {\n const cookie = [`${CookieCache.encode(config.name)}=${CookieCache.encode(value)}`];\n\n if (config.maxAge !== undefined) {\n cookie.push(`Max-Age=${config.maxAge}`);\n }\n\n if (config.domain !== undefined) {\n cookie.push(`Domain=${CookieCache.encode(config.domain)}`);\n }\n\n if (config.path !== undefined) {\n cookie.push(`Path=${CookieCache.encode(config.path)}`);\n }\n\n if (config.secure === true) {\n cookie.push('Secure');\n }\n\n if (config.sameSite !== undefined) {\n cookie.push(`SameSite=${({strict: 'Strict', lax: 'Lax', none: 'None'})[config.sameSite]}`);\n }\n\n return cookie.join('; ');\n }\n\n private static encode(value: string): string {\n return value.replace(/[,; ]+/g, encodeURIComponent);\n }\n\n private static decode(value: string): string {\n return decodeURIComponent(value);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAWO,MAAM,YAA6B;AAAA,EAG/B,YAAY,QAAkC,gBAAgB,OAAO,SAAS,aAAa,UAAU;AACxG,SAAK,SAAS;AAAA,MACV,GAAG;AAAA,MACH,MAAM,OAAO,QAAQ;AAAA,IACzB;AAEA,QAAI,iBAAiB,KAAK,OAAO,WAAW,QAAW;AACnD,WAAK,OAAO,SAAS;AAAA,IACzB;AAEA,QAAI,KAAK,OAAO,WAAW,QAAQ,KAAK,OAAO,aAAa,QAAW;AACnE,WAAK,OAAO,WAAW;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEO,MAAqB;AACxB,UAAM,UAAU,SAAS,OAAO,MAAM,GAAG;AAEzC,eAAW,SAAS,SAAS;AACzB,YAAM,CAAC,MAAM,KAAK,IAAI,MAAM,MAAM,GAAG;AAErC,UAAI,YAAY,OAAO,IAAI,EAAE,KAAK,MAAM,KAAK,OAAO,MAAM;AACtD,eAAO,YAAY,OAAO,MAAM,KAAK,CAAC;AAAA,MAC1C;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,IAAI,OAAqB;AAC5B,aAAS,SAAS,YAAY,gBAAgB,OAAO,KAAK,MAAM;AAAA,EACpE;AAAA,EAEO,QAAc;AACjB,aAAS,SAAS,YAAY,gBAAgB,IAAI;AAAA,MAC9C,GAAG,KAAK;AAAA,MACR,QAAQ;AAAA,IACZ,CAAC;AAAA,EACL;AAAA,EAEA,OAAe,gBAAgB,OAAe,QAA0C;AACpF,UAAM,SAAS,CAAC,GAAG,YAAY,OAAO,OAAO,IAAI,CAAC,IAAI,YAAY,OAAO,KAAK,CAAC,EAAE;AAEjF,QAAI,OAAO,WAAW,QAAW;AAC7B,aAAO,KAAK,WAAW,OAAO,MAAM,EAAE;AAAA,IAC1C;AAEA,QAAI,OAAO,WAAW,QAAW;AAC7B,aAAO,KAAK,UAAU,YAAY,OAAO,OAAO,MAAM,CAAC,EAAE;AAAA,IAC7D;AAEA,QAAI,OAAO,SAAS,QAAW;AAC3B,aAAO,KAAK,QAAQ,YAAY,OAAO,OAAO,IAAI,CAAC,EAAE;AAAA,IACzD;AAEA,QAAI,OAAO,WAAW,MAAM;AACxB,aAAO,KAAK,QAAQ;AAAA,IACxB;AAEA,QAAI,OAAO,aAAa,QAAW;AAC/B,aAAO,KAAK,YAAa,EAAC,QAAQ,UAAU,KAAK,OAAO,MAAM,OAAM,EAAG,OAAO,QAAQ,CAAC,EAAE;AAAA,IAC7F;AAEA,WAAO,OAAO,KAAK,IAAI;AAAA,EAC3B;AAAA,EAEA,OAAe,OAAO,OAAuB;AACzC,WAAO,MAAM,QAAQ,WAAW,kBAAkB;AAAA,EACtD;AAAA,EAEA,OAAe,OAAO,OAAuB;AACzC,WAAO,mBAAmB,KAAK;AAAA,EACnC;AACJ;","names":[]}
|
package/cache/cookieCache.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cache/cookieCache.ts"],"sourcesContent":["import {Cache} from './cache';\n\nexport type CookieCacheConfiguration = {\n name: string,\n secure?: boolean,\n maxAge?: number,\n domain?: string,\n path?: string,\n sameSite?: 'strict' | 'lax' | 'none',\n};\n\nexport class CookieCache implements Cache {\n private readonly config: CookieCacheConfiguration;\n\n public constructor(config: CookieCacheConfiguration, defaultSecure = window.location.protocol === 'https:') {\n this.config = {\n ...config,\n path: config.path ?? '/',\n };\n\n if (defaultSecure && this.config.secure === undefined) {\n this.config.secure = true;\n }\n\n if (this.config.secure === true && this.config.sameSite === undefined) {\n this.config.sameSite = 'none';\n }\n }\n\n public get(): string | null {\n const entries = document.cookie.split(';');\n\n for (const entry of entries) {\n const [name, value] = entry.split('=');\n\n if (CookieCache.decode(name).trim() === this.config.name) {\n return CookieCache.decode(value.trim());\n }\n }\n\n return null;\n }\n\n public put(value: string): void {\n document.cookie = CookieCache.serializeCookie(value, this.config);\n }\n\n public clear(): void {\n document.cookie = CookieCache.serializeCookie('', {\n ...this.config,\n maxAge: 0,\n });\n }\n\n private static serializeCookie(value: string, config: CookieCacheConfiguration): string {\n const cookie = [`${CookieCache.encode(config.name)}=${CookieCache.encode(value)}`];\n\n if (config.maxAge !== undefined) {\n cookie.push(`Max-Age=${config.maxAge}`);\n }\n\n if (config.domain !== undefined) {\n cookie.push(`Domain=${CookieCache.encode(config.domain)}`);\n }\n\n if (config.path !== undefined) {\n cookie.push(`Path=${CookieCache.encode(config.path)}`);\n }\n\n if (config.secure === true) {\n cookie.push('Secure');\n }\n\n if (config.sameSite !== undefined) {\n cookie.push(`SameSite=${({strict: 'Strict', lax: 'Lax', none: 'None'})[config.sameSite]}`);\n }\n\n return cookie.join('; ');\n }\n\n private static encode(value: string): string {\n return value.replace(/[,; ]+/g, encodeURIComponent);\n }\n\n private static decode(value: string): string {\n return decodeURIComponent(value);\n }\n}\n"],"mappings":"AAWO,MAAM,YAA6B;AAAA,EAG/B,YAAY,QAAkC,gBAAgB,OAAO,SAAS,aAAa,UAAU;AACxG,SAAK,SAAS;AAAA,MACV,GAAG;AAAA,MACH,MAAM,OAAO,QAAQ;AAAA,IACzB;AAEA,QAAI,iBAAiB,KAAK,OAAO,WAAW,QAAW;AACnD,WAAK,OAAO,SAAS;AAAA,IACzB;AAEA,QAAI,KAAK,OAAO,WAAW,QAAQ,KAAK,OAAO,aAAa,QAAW;AACnE,WAAK,OAAO,WAAW;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEO,MAAqB;AACxB,UAAM,UAAU,SAAS,OAAO,MAAM,GAAG;AAEzC,eAAW,SAAS,SAAS;AACzB,YAAM,CAAC,MAAM,KAAK,IAAI,MAAM,MAAM,GAAG;AAErC,UAAI,YAAY,OAAO,IAAI,EAAE,KAAK,MAAM,KAAK,OAAO,MAAM;AACtD,eAAO,YAAY,OAAO,MAAM,KAAK,CAAC;AAAA,MAC1C;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,IAAI,OAAqB;AAC5B,aAAS,SAAS,YAAY,gBAAgB,OAAO,KAAK,MAAM;AAAA,EACpE;AAAA,EAEO,QAAc;AACjB,aAAS,SAAS,YAAY,gBAAgB,IAAI;AAAA,MAC9C,GAAG,KAAK;AAAA,MACR,QAAQ;AAAA,IACZ,CAAC;AAAA,EACL;AAAA,EAEA,OAAe,gBAAgB,OAAe,QAA0C;AACpF,UAAM,SAAS,CAAC,GAAG,YAAY,OAAO,OAAO,IAAI,CAAC,IAAI,YAAY,OAAO,KAAK,CAAC,EAAE;AAEjF,QAAI,OAAO,WAAW,QAAW;AAC7B,aAAO,KAAK,WAAW,OAAO,MAAM,EAAE;AAAA,IAC1C;AAEA,QAAI,OAAO,WAAW,QAAW;AAC7B,aAAO,KAAK,UAAU,YAAY,OAAO,OAAO,MAAM,CAAC,EAAE;AAAA,IAC7D;AAEA,QAAI,OAAO,SAAS,QAAW;AAC3B,aAAO,KAAK,QAAQ,YAAY,OAAO,OAAO,IAAI,CAAC,EAAE;AAAA,IACzD;AAEA,QAAI,OAAO,WAAW,MAAM;AACxB,aAAO,KAAK,QAAQ;AAAA,IACxB;AAEA,QAAI,OAAO,aAAa,QAAW;AAC/B,aAAO,KAAK,YAAa,EAAC,QAAQ,UAAU,KAAK,OAAO,MAAM,OAAM,EAAG,OAAO,QAAQ,CAAC,EAAE;AAAA,IAC7F;AAEA,WAAO,OAAO,KAAK,IAAI;AAAA,EAC3B;AAAA,EAEA,OAAe,OAAO,OAAuB;AACzC,WAAO,MAAM,QAAQ,WAAW,kBAAkB;AAAA,EACtD;AAAA,EAEA,OAAe,OAAO,OAAuB;AACzC,WAAO,mBAAmB,KAAK;AAAA,EACnC;AACJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cache/fallbackCache.ts"],"sourcesContent":["import {Cache} from './cache';\n\nexport class FallbackCache implements Cache {\n private readonly caches: Cache[];\n\n public constructor(...caches: Cache[]) {\n this.caches = caches;\n }\n\n public get(): string|null {\n for (const cache of this.caches) {\n const value = cache.get();\n\n if (value !== null) {\n return value;\n }\n }\n\n return null;\n }\n\n public put(value: string): void {\n this.caches.forEach(cache => cache.put(value));\n }\n\n public clear(): void {\n this.caches.forEach(cache => cache.clear());\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,cAA+B;AAAA,EAGjC,eAAe,QAAiB;AACnC,SAAK,SAAS;AAAA,EAClB;AAAA,EAEO,MAAmB;AACtB,eAAW,SAAS,KAAK,QAAQ;AAC7B,YAAM,QAAQ,MAAM,IAAI;AAExB,UAAI,UAAU,MAAM;AAChB,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,IAAI,OAAqB;AAC5B,SAAK,OAAO,QAAQ,WAAS,MAAM,IAAI,KAAK,CAAC;AAAA,EACjD;AAAA,EAEO,QAAc;AACjB,SAAK,OAAO,QAAQ,WAAS,MAAM,MAAM,CAAC;AAAA,EAC9C;AACJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cache/fallbackCache.ts"],"sourcesContent":["import {Cache} from './cache';\n\nexport class FallbackCache implements Cache {\n private readonly caches: Cache[];\n\n public constructor(...caches: Cache[]) {\n this.caches = caches;\n }\n\n public get(): string|null {\n for (const cache of this.caches) {\n const value = cache.get();\n\n if (value !== null) {\n return value;\n }\n }\n\n return null;\n }\n\n public put(value: string): void {\n this.caches.forEach(cache => cache.put(value));\n }\n\n public clear(): void {\n this.caches.forEach(cache => cache.clear());\n }\n}\n"],"mappings":"AAEO,MAAM,cAA+B;AAAA,EAGjC,eAAe,QAAiB;AACnC,SAAK,SAAS;AAAA,EAClB;AAAA,EAEO,MAAmB;AACtB,eAAW,SAAS,KAAK,QAAQ;AAC7B,YAAM,QAAQ,MAAM,IAAI;AAExB,UAAI,UAAU,MAAM;AAChB,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,IAAI,OAAqB;AAC5B,SAAK,OAAO,QAAQ,WAAS,MAAM,IAAI,KAAK,CAAC;AAAA,EACjD;AAAA,EAEO,QAAc;AACjB,SAAK,OAAO,QAAQ,WAAS,MAAM,MAAM,CAAC;AAAA,EAC9C;AACJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cache/inMemoryCache.ts"],"sourcesContent":["import {Cache} from './cache';\n\nexport class InMemoryCache implements Cache {\n private cache?: string;\n\n public constructor(cache?: string) {\n this.cache = cache;\n }\n\n public get(): string | null {\n return this.cache ?? null;\n }\n\n public put(value: string): void {\n this.cache = value;\n }\n\n public clear(): void {\n delete this.cache;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,cAA+B;AAAA,EAGjC,YAAY,OAAgB;AAC/B,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEO,MAAqB;AACxB,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA,EAEO,IAAI,OAAqB;AAC5B,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEO,QAAc;AACjB,WAAO,KAAK;AAAA,EAChB;AACJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cache/inMemoryCache.ts"],"sourcesContent":["import {Cache} from './cache';\n\nexport class InMemoryCache implements Cache {\n private cache?: string;\n\n public constructor(cache?: string) {\n this.cache = cache;\n }\n\n public get(): string | null {\n return this.cache ?? null;\n }\n\n public put(value: string): void {\n this.cache = value;\n }\n\n public clear(): void {\n delete this.cache;\n }\n}\n"],"mappings":"AAEO,MAAM,cAA+B;AAAA,EAGjC,YAAY,OAAgB;AAC/B,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEO,MAAqB;AACxB,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA,EAEO,IAAI,OAAqB;AAC5B,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEO,QAAc;AACjB,WAAO,KAAK;AAAA,EAChB;AACJ;","names":[]}
|
package/cache/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cache/index.ts"],"sourcesContent":["export * from './cache';\nexport {FallbackCache} from './fallbackCache';\nexport {InMemoryCache} from './inMemoryCache';\nexport {LocalStorageCache} from './localStorageCache';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAc,oBAAd;AACA,2BAA4B;AAC5B,2BAA4B;AAC5B,+BAAgC;","names":[]}
|
package/cache/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cache/index.ts"],"sourcesContent":["export * from './cache';\nexport {FallbackCache} from './fallbackCache';\nexport {InMemoryCache} from './inMemoryCache';\nexport {LocalStorageCache} from './localStorageCache';\n"],"mappings":"AAAA,cAAc;AACd,SAAQ,qBAAoB;AAC5B,SAAQ,qBAAoB;AAC5B,SAAQ,yBAAwB;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cache/localStorageCache.ts"],"sourcesContent":["import {CacheListener, ObservableCache} from './cache';\n\nexport class LocalStorageCache implements ObservableCache {\n private readonly storage: Storage;\n\n private readonly key: string;\n\n private value: string|null;\n\n private readonly listeners: CacheListener[] = [];\n\n public constructor(storage: Storage, key: string) {\n this.storage = storage;\n this.key = key;\n this.value = storage.getItem(key);\n }\n\n public static autoSync(cache: LocalStorageCache): (() => void) {\n const listener = cache.sync.bind(cache);\n\n window.addEventListener('storage', listener);\n\n return (): void => window.removeEventListener('storage', listener);\n }\n\n public get(): string|null {\n return this.value;\n }\n\n public put(value: string): void {\n this.storage.setItem(this.key, value);\n\n if (this.value !== value) {\n this.value = value;\n this.notifyChange(value);\n }\n }\n\n public clear(): void {\n this.storage.removeItem(this.key);\n\n if (this.value !== null) {\n this.value = null;\n this.notifyChange(null);\n }\n }\n\n public addListener(listener: CacheListener): void {\n if (!this.listeners.includes(listener)) {\n this.listeners.push(listener);\n }\n }\n\n public removeListener(listener: CacheListener): void {\n const index = this.listeners.indexOf(listener);\n\n if (index > -1) {\n this.listeners.splice(index, 1);\n }\n }\n\n private notifyChange(value: string|null): void {\n this.listeners.forEach(listener => listener(value));\n }\n\n private sync(event: StorageEvent): void {\n if (event.storageArea !== this.storage || (event.key !== null && event.key !== this.key)) {\n // Ignore unrelated changes\n return;\n }\n\n /*\n * Retrieving the value from the store rather than the event ensures\n * the cache will be in sync with the latest value set.\n * In case of cascading changes, it prevents notifying listeners\n * about intermediate states already outdated at this point.\n */\n const value = this.storage.getItem(this.key);\n\n if (this.value !== value) {\n this.value = value;\n this.notifyChange(value);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,kBAA6C;AAAA,EAS/C,YAAY,SAAkB,KAAa;AAFlD,SAAiB,YAA6B,CAAC;AAG3C,SAAK,UAAU;AACf,SAAK,MAAM;AACX,SAAK,QAAQ,QAAQ,QAAQ,GAAG;AAAA,EACpC;AAAA,EAEA,OAAc,SAAS,OAAwC;AAC3D,UAAM,WAAW,MAAM,KAAK,KAAK,KAAK;AAEtC,WAAO,iBAAiB,WAAW,QAAQ;AAE3C,WAAO,MAAY,OAAO,oBAAoB,WAAW,QAAQ;AAAA,EACrE;AAAA,EAEO,MAAmB;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEO,IAAI,OAAqB;AAC5B,SAAK,QAAQ,QAAQ,KAAK,KAAK,KAAK;AAEpC,QAAI,KAAK,UAAU,OAAO;AACtB,WAAK,QAAQ;AACb,WAAK,aAAa,KAAK;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEO,QAAc;AACjB,SAAK,QAAQ,WAAW,KAAK,GAAG;AAEhC,QAAI,KAAK,UAAU,MAAM;AACrB,WAAK,QAAQ;AACb,WAAK,aAAa,IAAI;AAAA,IAC1B;AAAA,EACJ;AAAA,EAEO,YAAY,UAA+B;AAC9C,QAAI,CAAC,KAAK,UAAU,SAAS,QAAQ,GAAG;AACpC,WAAK,UAAU,KAAK,QAAQ;AAAA,IAChC;AAAA,EACJ;AAAA,EAEO,eAAe,UAA+B;AACjD,UAAM,QAAQ,KAAK,UAAU,QAAQ,QAAQ;AAE7C,QAAI,QAAQ,IAAI;AACZ,WAAK,UAAU,OAAO,OAAO,CAAC;AAAA,IAClC;AAAA,EACJ;AAAA,EAEQ,aAAa,OAA0B;AAC3C,SAAK,UAAU,QAAQ,cAAY,SAAS,KAAK,CAAC;AAAA,EACtD;AAAA,EAEQ,KAAK,OAA2B;AACpC,QAAI,MAAM,gBAAgB,KAAK,WAAY,MAAM,QAAQ,QAAQ,MAAM,QAAQ,KAAK,KAAM;AAEtF;AAAA,IACJ;AAQA,UAAM,QAAQ,KAAK,QAAQ,QAAQ,KAAK,GAAG;AAE3C,QAAI,KAAK,UAAU,OAAO;AACtB,WAAK,QAAQ;AACb,WAAK,aAAa,KAAK;AAAA,IAC3B;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cache/localStorageCache.ts"],"sourcesContent":["import {CacheListener, ObservableCache} from './cache';\n\nexport class LocalStorageCache implements ObservableCache {\n private readonly storage: Storage;\n\n private readonly key: string;\n\n private value: string|null;\n\n private readonly listeners: CacheListener[] = [];\n\n public constructor(storage: Storage, key: string) {\n this.storage = storage;\n this.key = key;\n this.value = storage.getItem(key);\n }\n\n public static autoSync(cache: LocalStorageCache): (() => void) {\n const listener = cache.sync.bind(cache);\n\n window.addEventListener('storage', listener);\n\n return (): void => window.removeEventListener('storage', listener);\n }\n\n public get(): string|null {\n return this.value;\n }\n\n public put(value: string): void {\n this.storage.setItem(this.key, value);\n\n if (this.value !== value) {\n this.value = value;\n this.notifyChange(value);\n }\n }\n\n public clear(): void {\n this.storage.removeItem(this.key);\n\n if (this.value !== null) {\n this.value = null;\n this.notifyChange(null);\n }\n }\n\n public addListener(listener: CacheListener): void {\n if (!this.listeners.includes(listener)) {\n this.listeners.push(listener);\n }\n }\n\n public removeListener(listener: CacheListener): void {\n const index = this.listeners.indexOf(listener);\n\n if (index > -1) {\n this.listeners.splice(index, 1);\n }\n }\n\n private notifyChange(value: string|null): void {\n this.listeners.forEach(listener => listener(value));\n }\n\n private sync(event: StorageEvent): void {\n if (event.storageArea !== this.storage || (event.key !== null && event.key !== this.key)) {\n // Ignore unrelated changes\n return;\n }\n\n /*\n * Retrieving the value from the store rather than the event ensures\n * the cache will be in sync with the latest value set.\n * In case of cascading changes, it prevents notifying listeners\n * about intermediate states already outdated at this point.\n */\n const value = this.storage.getItem(this.key);\n\n if (this.value !== value) {\n this.value = value;\n this.notifyChange(value);\n }\n }\n}\n"],"mappings":"AAEO,MAAM,kBAA6C;AAAA,EAS/C,YAAY,SAAkB,KAAa;AAFlD,SAAiB,YAA6B,CAAC;AAG3C,SAAK,UAAU;AACf,SAAK,MAAM;AACX,SAAK,QAAQ,QAAQ,QAAQ,GAAG;AAAA,EACpC;AAAA,EAEA,OAAc,SAAS,OAAwC;AAC3D,UAAM,WAAW,MAAM,KAAK,KAAK,KAAK;AAEtC,WAAO,iBAAiB,WAAW,QAAQ;AAE3C,WAAO,MAAY,OAAO,oBAAoB,WAAW,QAAQ;AAAA,EACrE;AAAA,EAEO,MAAmB;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEO,IAAI,OAAqB;AAC5B,SAAK,QAAQ,QAAQ,KAAK,KAAK,KAAK;AAEpC,QAAI,KAAK,UAAU,OAAO;AACtB,WAAK,QAAQ;AACb,WAAK,aAAa,KAAK;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEO,QAAc;AACjB,SAAK,QAAQ,WAAW,KAAK,GAAG;AAEhC,QAAI,KAAK,UAAU,MAAM;AACrB,WAAK,QAAQ;AACb,WAAK,aAAa,IAAI;AAAA,IAC1B;AAAA,EACJ;AAAA,EAEO,YAAY,UAA+B;AAC9C,QAAI,CAAC,KAAK,UAAU,SAAS,QAAQ,GAAG;AACpC,WAAK,UAAU,KAAK,QAAQ;AAAA,IAChC;AAAA,EACJ;AAAA,EAEO,eAAe,UAA+B;AACjD,UAAM,QAAQ,KAAK,UAAU,QAAQ,QAAQ;AAE7C,QAAI,QAAQ,IAAI;AACZ,WAAK,UAAU,OAAO,OAAO,CAAC;AAAA,IAClC;AAAA,EACJ;AAAA,EAEQ,aAAa,OAA0B;AAC3C,SAAK,UAAU,QAAQ,cAAY,SAAS,KAAK,CAAC;AAAA,EACtD;AAAA,EAEQ,KAAK,OAA2B;AACpC,QAAI,MAAM,gBAAgB,KAAK,WAAY,MAAM,QAAQ,QAAQ,MAAM,QAAQ,KAAK,KAAM;AAEtF;AAAA,IACJ;AAQA,UAAM,QAAQ,KAAK,QAAQ,QAAQ,KAAK,GAAG;AAE3C,QAAI,KAAK,UAAU,OAAO;AACtB,WAAK,QAAQ;AACb,WAAK,aAAa,KAAK;AAAA,IAC3B;AAAA,EACJ;AACJ;","names":[]}
|
package/channel/channel.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/channel/channel.ts"],"sourcesContent":["import {formatMessage} from '../error';\n\nexport class MessageDeliveryError extends Error {\n public readonly retryable: boolean;\n\n public constructor(message: string, retryable: boolean) {\n super(message);\n\n this.retryable = retryable;\n\n Object.setPrototypeOf(this, MessageDeliveryError.prototype);\n }\n\n public static retryable(cause: unknown): MessageDeliveryError {\n return MessageDeliveryError.fromCause(cause, true);\n }\n\n public static nonRetryable(cause: unknown): MessageDeliveryError {\n return MessageDeliveryError.fromCause(cause, false);\n }\n\n private static fromCause(cause: unknown, retryable: boolean): MessageDeliveryError {\n const error = new MessageDeliveryError(formatMessage(cause), retryable);\n\n if (cause instanceof Error) {\n error.stack = cause.stack;\n }\n\n return error;\n }\n}\n\nexport interface Closeable {\n close(): Promise<void>;\n}\n\nexport interface OutputChannel<O> extends Closeable {\n publish(message: O): Promise<void>;\n}\n\nexport type ChannelListener<T> = {\n (message: T): void,\n};\n\nexport interface InputChannel<I> extends Closeable {\n subscribe(listener: ChannelListener<I>): void;\n\n unsubscribe(listener: ChannelListener<I>): void;\n}\n\nexport interface DuplexChannel<I, O> extends InputChannel<I>, OutputChannel<O> {\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4B;AAErB,MAAM,6BAA6B,MAAM;AAAA,EAGrC,YAAY,SAAiB,WAAoB;AACpD,UAAM,OAAO;AAEb,SAAK,YAAY;AAEjB,WAAO,eAAe,MAAM,qBAAqB,SAAS;AAAA,EAC9D;AAAA,EAEA,OAAc,UAAU,OAAsC;AAC1D,WAAO,qBAAqB,UAAU,OAAO,IAAI;AAAA,EACrD;AAAA,EAEA,OAAc,aAAa,OAAsC;AAC7D,WAAO,qBAAqB,UAAU,OAAO,KAAK;AAAA,EACtD;AAAA,EAEA,OAAe,UAAU,OAAgB,WAA0C;AAC/E,UAAM,QAAQ,IAAI,yBAAqB,4BAAc,KAAK,GAAG,SAAS;AAEtE,QAAI,iBAAiB,OAAO;AACxB,YAAM,QAAQ,MAAM;AAAA,IACxB;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}
|
package/channel/channel.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/channel/channel.ts"],"sourcesContent":["import {formatMessage} from '../error';\n\nexport class MessageDeliveryError extends Error {\n public readonly retryable: boolean;\n\n public constructor(message: string, retryable: boolean) {\n super(message);\n\n this.retryable = retryable;\n\n Object.setPrototypeOf(this, MessageDeliveryError.prototype);\n }\n\n public static retryable(cause: unknown): MessageDeliveryError {\n return MessageDeliveryError.fromCause(cause, true);\n }\n\n public static nonRetryable(cause: unknown): MessageDeliveryError {\n return MessageDeliveryError.fromCause(cause, false);\n }\n\n private static fromCause(cause: unknown, retryable: boolean): MessageDeliveryError {\n const error = new MessageDeliveryError(formatMessage(cause), retryable);\n\n if (cause instanceof Error) {\n error.stack = cause.stack;\n }\n\n return error;\n }\n}\n\nexport interface Closeable {\n close(): Promise<void>;\n}\n\nexport interface OutputChannel<O> extends Closeable {\n publish(message: O): Promise<void>;\n}\n\nexport type ChannelListener<T> = {\n (message: T): void,\n};\n\nexport interface InputChannel<I> extends Closeable {\n subscribe(listener: ChannelListener<I>): void;\n\n unsubscribe(listener: ChannelListener<I>): void;\n}\n\nexport interface DuplexChannel<I, O> extends InputChannel<I>, OutputChannel<O> {\n}\n"],"mappings":"AAAA,SAAQ,qBAAoB;AAErB,MAAM,6BAA6B,MAAM;AAAA,EAGrC,YAAY,SAAiB,WAAoB;AACpD,UAAM,OAAO;AAEb,SAAK,YAAY;AAEjB,WAAO,eAAe,MAAM,qBAAqB,SAAS;AAAA,EAC9D;AAAA,EAEA,OAAc,UAAU,OAAsC;AAC1D,WAAO,qBAAqB,UAAU,OAAO,IAAI;AAAA,EACrD;AAAA,EAEA,OAAc,aAAa,OAAsC;AAC7D,WAAO,qBAAqB,UAAU,OAAO,KAAK;AAAA,EACtD;AAAA,EAEA,OAAe,UAAU,OAAgB,WAA0C;AAC/E,UAAM,QAAQ,IAAI,qBAAqB,cAAc,KAAK,GAAG,SAAS;AAEtE,QAAI,iBAAiB,OAAO;AACxB,YAAM,QAAQ,MAAM;AAAA,IACxB;AAEA,WAAO;AAAA,EACX;AACJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/channel/encodedChannel.ts"],"sourcesContent":["import {OutputChannel} from './channel';\nimport {Transformer} from '../transformer';\n\nexport class EncodedChannel<D, E> implements OutputChannel<D> {\n private readonly encode: Transformer<D, E>;\n\n private readonly channel: OutputChannel<E>;\n\n public constructor(channel: OutputChannel<E>, encoder: Transformer<D, E>) {\n this.channel = channel;\n this.encode = encoder;\n }\n\n public publish(message: D): Promise<void> {\n return this.encode(message).then((result => this.channel.publish(result)));\n }\n\n public close(): Promise<void> {\n return this.channel.close();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,eAAiD;AAAA,EAKnD,YAAY,SAA2B,SAA4B;AACtE,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAClB;AAAA,EAEO,QAAQ,SAA2B;AACtC,WAAO,KAAK,OAAO,OAAO,EAAE,KAAM,YAAU,KAAK,QAAQ,QAAQ,MAAM,CAAE;AAAA,EAC7E;AAAA,EAEO,QAAuB;AAC1B,WAAO,KAAK,QAAQ,MAAM;AAAA,EAC9B;AACJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/channel/encodedChannel.ts"],"sourcesContent":["import {OutputChannel} from './channel';\nimport {Transformer} from '../transformer';\n\nexport class EncodedChannel<D, E> implements OutputChannel<D> {\n private readonly encode: Transformer<D, E>;\n\n private readonly channel: OutputChannel<E>;\n\n public constructor(channel: OutputChannel<E>, encoder: Transformer<D, E>) {\n this.channel = channel;\n this.encode = encoder;\n }\n\n public publish(message: D): Promise<void> {\n return this.encode(message).then((result => this.channel.publish(result)));\n }\n\n public close(): Promise<void> {\n return this.channel.close();\n }\n}\n"],"mappings":"AAGO,MAAM,eAAiD;AAAA,EAKnD,YAAY,SAA2B,SAA4B;AACtE,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAClB;AAAA,EAEO,QAAQ,SAA2B;AACtC,WAAO,KAAK,OAAO,OAAO,EAAE,KAAM,YAAU,KAAK,QAAQ,QAAQ,MAAM,CAAE;AAAA,EAC7E;AAAA,EAEO,QAAuB;AAC1B,WAAO,KAAK,QAAQ,MAAM;AAAA,EAC9B;AACJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/channel/guaranteedChannel.ts"],"sourcesContent":["import {Logger, NullLogger} from '../logging';\nimport {DuplexChannel, MessageDeliveryError, OutputChannel} from './channel';\n\nexport type MessageStamper<M, S> = {\n generate(message: M): S,\n};\n\nexport class TimeStamper implements MessageStamper<any, string> {\n public generate(): string {\n return String(Date.now());\n }\n}\n\nexport type Envelope<M, S> = {\n id: S,\n message: M,\n};\n\ntype Options = {\n ackTimeout: number,\n};\n\ntype Configuration<M, S> = Partial<Options> & {\n channel: DuplexChannel<S, Envelope<M, S>>,\n stamper: MessageStamper<M, S>,\n logger?: Logger,\n};\n\nexport class GuaranteedChannel<M, S> implements OutputChannel<M> {\n private readonly channel: DuplexChannel<S, Envelope<M, S>>;\n\n private readonly stamper: MessageStamper<M, S>;\n\n private readonly logger: Logger;\n\n private readonly options: Options;\n\n private closed = false;\n\n public constructor({channel, logger, stamper, ...options}: Configuration<M, S>) {\n this.channel = channel;\n this.logger = logger ?? new NullLogger();\n this.stamper = stamper;\n this.options = {\n ...options,\n ackTimeout: options.ackTimeout ?? 5000,\n };\n }\n\n public publish(message: M): Promise<void> {\n if (this.closed) {\n return Promise.reject(MessageDeliveryError.nonRetryable('Channel is closed.'));\n }\n\n return new Promise((resolve, reject): void => {\n const id = this.stamper.generate(message);\n\n let timeoutTimer: number;\n let closeWatcher: number;\n let confirmed = false;\n const start = Date.now();\n\n const acknowledge = (response: any): void => {\n if (response === id) {\n confirmed = true;\n\n const elapsed = Date.now() - start;\n\n window.clearTimeout(timeoutTimer);\n window.clearInterval(closeWatcher);\n\n this.logger.debug(`Delivery confirmed #${id}, elapsed ${elapsed}ms.`);\n\n this.channel.unsubscribe(acknowledge);\n\n resolve();\n }\n };\n\n this.channel.subscribe(acknowledge);\n\n const abort = (error: any): void => {\n window.clearTimeout(timeoutTimer);\n window.clearInterval(closeWatcher);\n\n this.logger.error(`Failed to send message #${id}`);\n\n this.channel.unsubscribe(acknowledge);\n\n reject(error);\n };\n\n const wait = (): void => {\n if (confirmed) {\n return;\n }\n\n closeWatcher = window.setInterval(\n () => {\n if (this.closed) {\n // Cancel delay immediately when the channel is closed\n abort(MessageDeliveryError.retryable('Connection deliberately closed.'));\n }\n },\n 0,\n );\n\n this.logger.debug(`Waiting confirmation #${id}...`);\n\n timeoutTimer = window.setTimeout(\n () => {\n abort(MessageDeliveryError.retryable('Maximum confirmation time reached.'));\n },\n this.options.ackTimeout,\n );\n };\n\n this.logger.debug(`Sending message #${id}...`);\n\n this.channel\n .publish({id: id, message: message})\n .then(wait, abort);\n });\n }\n\n public close(): Promise<void> {\n this.closed = true;\n\n return this.channel.close();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAiC;AACjC,qBAAiE;AAM1D,MAAM,YAAmD;AAAA,EACrD,WAAmB;AACtB,WAAO,OAAO,KAAK,IAAI,CAAC;AAAA,EAC5B;AACJ;AAiBO,MAAM,kBAAoD;AAAA,EAWtD,YAAY,EAAC,SAAS,QAAQ,SAAS,GAAG,QAAO,GAAwB;AAFhF,SAAQ,SAAS;AAGb,SAAK,UAAU;AACf,SAAK,SAAS,UAAU,IAAI,0BAAW;AACvC,SAAK,UAAU;AACf,SAAK,UAAU;AAAA,MACX,GAAG;AAAA,MACH,YAAY,QAAQ,cAAc;AAAA,IACtC;AAAA,EACJ;AAAA,EAEO,QAAQ,SAA2B;AACtC,QAAI,KAAK,QAAQ;AACb,aAAO,QAAQ,OAAO,oCAAqB,aAAa,oBAAoB,CAAC;AAAA,IACjF;AAEA,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAiB;AAC1C,YAAM,KAAK,KAAK,QAAQ,SAAS,OAAO;AAExC,UAAI;AACJ,UAAI;AACJ,UAAI,YAAY;AAChB,YAAM,QAAQ,KAAK,IAAI;AAEvB,YAAM,cAAc,CAAC,aAAwB;AACzC,YAAI,aAAa,IAAI;AACjB,sBAAY;AAEZ,gBAAM,UAAU,KAAK,IAAI,IAAI;AAE7B,iBAAO,aAAa,YAAY;AAChC,iBAAO,cAAc,YAAY;AAEjC,eAAK,OAAO,MAAM,uBAAuB,EAAE,aAAa,OAAO,KAAK;AAEpE,eAAK,QAAQ,YAAY,WAAW;AAEpC,kBAAQ;AAAA,QACZ;AAAA,MACJ;AAEA,WAAK,QAAQ,UAAU,WAAW;AAElC,YAAM,QAAQ,CAAC,UAAqB;AAChC,eAAO,aAAa,YAAY;AAChC,eAAO,cAAc,YAAY;AAEjC,aAAK,OAAO,MAAM,2BAA2B,EAAE,EAAE;AAEjD,aAAK,QAAQ,YAAY,WAAW;AAEpC,eAAO,KAAK;AAAA,MAChB;AAEA,YAAM,OAAO,MAAY;AACrB,YAAI,WAAW;AACX;AAAA,QACJ;AAEA,uBAAe,OAAO;AAAA,UAClB,MAAM;AACF,gBAAI,KAAK,QAAQ;AAEb,oBAAM,oCAAqB,UAAU,iCAAiC,CAAC;AAAA,YAC3E;AAAA,UACJ;AAAA,UACA;AAAA,QACJ;AAEA,aAAK,OAAO,MAAM,yBAAyB,EAAE,KAAK;AAElD,uBAAe,OAAO;AAAA,UAClB,MAAM;AACF,kBAAM,oCAAqB,UAAU,oCAAoC,CAAC;AAAA,UAC9E;AAAA,UACA,KAAK,QAAQ;AAAA,QACjB;AAAA,MACJ;AAEA,WAAK,OAAO,MAAM,oBAAoB,EAAE,KAAK;AAE7C,WAAK,QACA,QAAQ,EAAC,IAAQ,QAAgB,CAAC,EAClC,KAAK,MAAM,KAAK;AAAA,IACzB,CAAC;AAAA,EACL;AAAA,EAEO,QAAuB;AAC1B,SAAK,SAAS;AAEd,WAAO,KAAK,QAAQ,MAAM;AAAA,EAC9B;AACJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/channel/guaranteedChannel.ts"],"sourcesContent":["import {Logger, NullLogger} from '../logging';\nimport {DuplexChannel, MessageDeliveryError, OutputChannel} from './channel';\n\nexport type MessageStamper<M, S> = {\n generate(message: M): S,\n};\n\nexport class TimeStamper implements MessageStamper<any, string> {\n public generate(): string {\n return String(Date.now());\n }\n}\n\nexport type Envelope<M, S> = {\n id: S,\n message: M,\n};\n\ntype Options = {\n ackTimeout: number,\n};\n\ntype Configuration<M, S> = Partial<Options> & {\n channel: DuplexChannel<S, Envelope<M, S>>,\n stamper: MessageStamper<M, S>,\n logger?: Logger,\n};\n\nexport class GuaranteedChannel<M, S> implements OutputChannel<M> {\n private readonly channel: DuplexChannel<S, Envelope<M, S>>;\n\n private readonly stamper: MessageStamper<M, S>;\n\n private readonly logger: Logger;\n\n private readonly options: Options;\n\n private closed = false;\n\n public constructor({channel, logger, stamper, ...options}: Configuration<M, S>) {\n this.channel = channel;\n this.logger = logger ?? new NullLogger();\n this.stamper = stamper;\n this.options = {\n ...options,\n ackTimeout: options.ackTimeout ?? 5000,\n };\n }\n\n public publish(message: M): Promise<void> {\n if (this.closed) {\n return Promise.reject(MessageDeliveryError.nonRetryable('Channel is closed.'));\n }\n\n return new Promise((resolve, reject): void => {\n const id = this.stamper.generate(message);\n\n let timeoutTimer: number;\n let closeWatcher: number;\n let confirmed = false;\n const start = Date.now();\n\n const acknowledge = (response: any): void => {\n if (response === id) {\n confirmed = true;\n\n const elapsed = Date.now() - start;\n\n window.clearTimeout(timeoutTimer);\n window.clearInterval(closeWatcher);\n\n this.logger.debug(`Delivery confirmed #${id}, elapsed ${elapsed}ms.`);\n\n this.channel.unsubscribe(acknowledge);\n\n resolve();\n }\n };\n\n this.channel.subscribe(acknowledge);\n\n const abort = (error: any): void => {\n window.clearTimeout(timeoutTimer);\n window.clearInterval(closeWatcher);\n\n this.logger.error(`Failed to send message #${id}`);\n\n this.channel.unsubscribe(acknowledge);\n\n reject(error);\n };\n\n const wait = (): void => {\n if (confirmed) {\n return;\n }\n\n closeWatcher = window.setInterval(\n () => {\n if (this.closed) {\n // Cancel delay immediately when the channel is closed\n abort(MessageDeliveryError.retryable('Connection deliberately closed.'));\n }\n },\n 0,\n );\n\n this.logger.debug(`Waiting confirmation #${id}...`);\n\n timeoutTimer = window.setTimeout(\n () => {\n abort(MessageDeliveryError.retryable('Maximum confirmation time reached.'));\n },\n this.options.ackTimeout,\n );\n };\n\n this.logger.debug(`Sending message #${id}...`);\n\n this.channel\n .publish({id: id, message: message})\n .then(wait, abort);\n });\n }\n\n public close(): Promise<void> {\n this.closed = true;\n\n return this.channel.close();\n }\n}\n"],"mappings":"AAAA,SAAgB,kBAAiB;AACjC,SAAuB,4BAA0C;AAM1D,MAAM,YAAmD;AAAA,EACrD,WAAmB;AACtB,WAAO,OAAO,KAAK,IAAI,CAAC;AAAA,EAC5B;AACJ;AAiBO,MAAM,kBAAoD;AAAA,EAWtD,YAAY,EAAC,SAAS,QAAQ,SAAS,GAAG,QAAO,GAAwB;AAFhF,SAAQ,SAAS;AAGb,SAAK,UAAU;AACf,SAAK,SAAS,UAAU,IAAI,WAAW;AACvC,SAAK,UAAU;AACf,SAAK,UAAU;AAAA,MACX,GAAG;AAAA,MACH,YAAY,QAAQ,cAAc;AAAA,IACtC;AAAA,EACJ;AAAA,EAEO,QAAQ,SAA2B;AACtC,QAAI,KAAK,QAAQ;AACb,aAAO,QAAQ,OAAO,qBAAqB,aAAa,oBAAoB,CAAC;AAAA,IACjF;AAEA,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAiB;AAC1C,YAAM,KAAK,KAAK,QAAQ,SAAS,OAAO;AAExC,UAAI;AACJ,UAAI;AACJ,UAAI,YAAY;AAChB,YAAM,QAAQ,KAAK,IAAI;AAEvB,YAAM,cAAc,CAAC,aAAwB;AACzC,YAAI,aAAa,IAAI;AACjB,sBAAY;AAEZ,gBAAM,UAAU,KAAK,IAAI,IAAI;AAE7B,iBAAO,aAAa,YAAY;AAChC,iBAAO,cAAc,YAAY;AAEjC,eAAK,OAAO,MAAM,uBAAuB,EAAE,aAAa,OAAO,KAAK;AAEpE,eAAK,QAAQ,YAAY,WAAW;AAEpC,kBAAQ;AAAA,QACZ;AAAA,MACJ;AAEA,WAAK,QAAQ,UAAU,WAAW;AAElC,YAAM,QAAQ,CAAC,UAAqB;AAChC,eAAO,aAAa,YAAY;AAChC,eAAO,cAAc,YAAY;AAEjC,aAAK,OAAO,MAAM,2BAA2B,EAAE,EAAE;AAEjD,aAAK,QAAQ,YAAY,WAAW;AAEpC,eAAO,KAAK;AAAA,MAChB;AAEA,YAAM,OAAO,MAAY;AACrB,YAAI,WAAW;AACX;AAAA,QACJ;AAEA,uBAAe,OAAO;AAAA,UAClB,MAAM;AACF,gBAAI,KAAK,QAAQ;AAEb,oBAAM,qBAAqB,UAAU,iCAAiC,CAAC;AAAA,YAC3E;AAAA,UACJ;AAAA,UACA;AAAA,QACJ;AAEA,aAAK,OAAO,MAAM,yBAAyB,EAAE,KAAK;AAElD,uBAAe,OAAO;AAAA,UAClB,MAAM;AACF,kBAAM,qBAAqB,UAAU,oCAAoC,CAAC;AAAA,UAC9E;AAAA,UACA,KAAK,QAAQ;AAAA,QACjB;AAAA,MACJ;AAEA,WAAK,OAAO,MAAM,oBAAoB,EAAE,KAAK;AAE7C,WAAK,QACA,QAAQ,EAAC,IAAQ,QAAgB,CAAC,EAClC,KAAK,MAAM,KAAK;AAAA,IACzB,CAAC;AAAA,EACL;AAAA,EAEO,QAAuB;AAC1B,SAAK,SAAS;AAEd,WAAO,KAAK,QAAQ,MAAM;AAAA,EAC9B;AACJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/channel/httpBeaconChannel.ts"],"sourcesContent":["import {ChannelListener, DuplexChannel, MessageDeliveryError} from './channel';\nimport {Envelope} from './guaranteedChannel';\nimport {Logger, NullLogger} from '../logging';\nimport {CidAssigner} from '../cid';\nimport {formatMessage} from '../error';\nimport {CLIENT_LIBRARY} from '../constants';\nimport {Help} from '../help';\n\nexport type Configuration = {\n appId: string,\n endpointUrl: string,\n cidAssigner: CidAssigner,\n logger?: Logger,\n};\n\ntype ApiProblem = {\n type: string,\n title: string,\n status: number,\n detail: string,\n};\n\nexport class HttpBeaconChannel implements DuplexChannel<string, Envelope<string, string>> {\n private readonly configuration: Omit<Configuration, 'logger'>;\n\n private readonly logger: Logger;\n\n private readonly listeners: Array<ChannelListener<string>> = [];\n\n private closed = false;\n\n public constructor({logger = new NullLogger(), ...configuration}: Configuration) {\n this.configuration = configuration;\n this.logger = logger;\n }\n\n public async publish({id: receiptId, message}: Envelope<string, string>): Promise<void> {\n if (this.closed) {\n return Promise.reject(MessageDeliveryError.nonRetryable('Channel is closed'));\n }\n\n const {token, timestamp, context, payload} = JSON.parse(message);\n const {endpointUrl, appId, cidAssigner} = this.configuration;\n\n return fetch(endpointUrl, {\n method: 'POST',\n headers: {\n 'X-App-Id': appId,\n 'X-Client-Id': await cidAssigner.assignCid(),\n 'X-Client-Library': CLIENT_LIBRARY,\n 'Content-Type': 'application/json',\n ...(token !== undefined ? {'X-Token': token} : {}),\n },\n body: JSON.stringify({\n context: context,\n payload: payload,\n originalTime: timestamp,\n departureTime: Date.now(),\n }),\n }).then(async response => {\n if (response.ok) {\n this.notify(receiptId);\n\n return;\n }\n\n const problem: ApiProblem = await response.json().catch(\n () => ({\n type: 'https://croct.help/api/event-tracker#unexpected-error',\n title: response.statusText,\n status: response.status,\n }),\n );\n\n const isRetryable = HttpBeaconChannel.isRetryable(problem.status);\n const help = Help.forStatusCode(problem.status);\n\n if (help !== undefined) {\n this.logger.error(help);\n } else if (!isRetryable) {\n this.logger.error(`Beacon rejected with non-retryable status: ${problem.title}`);\n }\n\n return Promise.reject(\n isRetryable\n ? MessageDeliveryError.retryable(problem.title)\n : MessageDeliveryError.nonRetryable(problem.title),\n );\n }).catch(error => {\n this.logger.error(`Failed to publish beacon: ${formatMessage(error)}`);\n\n return Promise.reject(\n error instanceof MessageDeliveryError\n ? error\n : MessageDeliveryError.retryable(error),\n );\n });\n }\n\n public subscribe(listener: ChannelListener<string>): void {\n if (!this.listeners.includes(listener)) {\n this.listeners.push(listener);\n }\n }\n\n public unsubscribe(listener: ChannelListener<string>): void {\n const index = this.listeners.indexOf(listener);\n\n if (index >= 0) {\n this.listeners.splice(index, 1);\n }\n }\n\n private notify(receiptId: string): void {\n this.listeners.forEach(dispatch => dispatch(receiptId));\n }\n\n public close(): Promise<void> {\n this.closed = true;\n\n return Promise.resolve();\n }\n\n private static isRetryable(status: number): boolean {\n // Retry on any server error and client errors 429 (rate limit) and 408 (request timeout)\n return status >= 500 || status === 429 || status === 408;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAmE;AAEnE,qBAAiC;AAEjC,mBAA4B;AAC5B,uBAA6B;AAC7B,kBAAmB;AAgBZ,MAAM,kBAA6E;AAAA,EAS/E,YAAY,EAAC,SAAS,IAAI,0BAAW,GAAG,GAAG,cAAa,GAAkB;AAJjF,SAAiB,YAA4C,CAAC;AAE9D,SAAQ,SAAS;AAGb,SAAK,gBAAgB;AACrB,SAAK,SAAS;AAAA,EAClB;AAAA,EAEA,MAAa,QAAQ,EAAC,IAAI,WAAW,QAAO,GAA4C;AACpF,QAAI,KAAK,QAAQ;AACb,aAAO,QAAQ,OAAO,oCAAqB,aAAa,mBAAmB,CAAC;AAAA,IAChF;AAEA,UAAM,EAAC,OAAO,WAAW,SAAS,QAAO,IAAI,KAAK,MAAM,OAAO;AAC/D,UAAM,EAAC,aAAa,OAAO,YAAW,IAAI,KAAK;AAE/C,WAAO,MAAM,aAAa;AAAA,MACtB,QAAQ;AAAA,MACR,SAAS;AAAA,QACL,YAAY;AAAA,QACZ,eAAe,MAAM,YAAY,UAAU;AAAA,QAC3C,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,GAAI,UAAU,SAAY,EAAC,WAAW,MAAK,IAAI,CAAC;AAAA,MACpD;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACjB;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd,eAAe,KAAK,IAAI;AAAA,MAC5B,CAAC;AAAA,IACL,CAAC,EAAE,KAAK,OAAM,aAAY;AACtB,UAAI,SAAS,IAAI;AACb,aAAK,OAAO,SAAS;AAErB;AAAA,MACJ;AAEA,YAAM,UAAsB,MAAM,SAAS,KAAK,EAAE;AAAA,QAC9C,OAAO;AAAA,UACH,MAAM;AAAA,UACN,OAAO,SAAS;AAAA,UAChB,QAAQ,SAAS;AAAA,QACrB;AAAA,MACJ;AAEA,YAAM,cAAc,kBAAkB,YAAY,QAAQ,MAAM;AAChE,YAAM,OAAO,iBAAK,cAAc,QAAQ,MAAM;AAE9C,UAAI,SAAS,QAAW;AACpB,aAAK,OAAO,MAAM,IAAI;AAAA,MAC1B,WAAW,CAAC,aAAa;AACrB,aAAK,OAAO,MAAM,8CAA8C,QAAQ,KAAK,EAAE;AAAA,MACnF;AAEA,aAAO,QAAQ;AAAA,QACX,cACM,oCAAqB,UAAU,QAAQ,KAAK,IAC5C,oCAAqB,aAAa,QAAQ,KAAK;AAAA,MACzD;AAAA,IACJ,CAAC,EAAE,MAAM,WAAS;AACd,WAAK,OAAO,MAAM,iCAA6B,4BAAc,KAAK,CAAC,EAAE;AAErE,aAAO,QAAQ;AAAA,QACX,iBAAiB,sCACX,QACA,oCAAqB,UAAU,KAAK;AAAA,MAC9C;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEO,UAAU,UAAyC;AACtD,QAAI,CAAC,KAAK,UAAU,SAAS,QAAQ,GAAG;AACpC,WAAK,UAAU,KAAK,QAAQ;AAAA,IAChC;AAAA,EACJ;AAAA,EAEO,YAAY,UAAyC;AACxD,UAAM,QAAQ,KAAK,UAAU,QAAQ,QAAQ;AAE7C,QAAI,SAAS,GAAG;AACZ,WAAK,UAAU,OAAO,OAAO,CAAC;AAAA,IAClC;AAAA,EACJ;AAAA,EAEQ,OAAO,WAAyB;AACpC,SAAK,UAAU,QAAQ,cAAY,SAAS,SAAS,CAAC;AAAA,EAC1D;AAAA,EAEO,QAAuB;AAC1B,SAAK,SAAS;AAEd,WAAO,QAAQ,QAAQ;AAAA,EAC3B;AAAA,EAEA,OAAe,YAAY,QAAyB;AAEhD,WAAO,UAAU,OAAO,WAAW,OAAO,WAAW;AAAA,EACzD;AACJ;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/channel/httpBeaconChannel.ts"],"sourcesContent":["import {ChannelListener, DuplexChannel, MessageDeliveryError} from './channel';\nimport {Envelope} from './guaranteedChannel';\nimport {Logger, NullLogger} from '../logging';\nimport {CidAssigner} from '../cid';\nimport {formatMessage} from '../error';\nimport {CLIENT_LIBRARY} from '../constants';\nimport {Help} from '../help';\n\nexport type Configuration = {\n appId: string,\n endpointUrl: string,\n cidAssigner: CidAssigner,\n logger?: Logger,\n};\n\ntype ApiProblem = {\n type: string,\n title: string,\n status: number,\n detail: string,\n};\n\nexport class HttpBeaconChannel implements DuplexChannel<string, Envelope<string, string>> {\n private readonly configuration: Omit<Configuration, 'logger'>;\n\n private readonly logger: Logger;\n\n private readonly listeners: Array<ChannelListener<string>> = [];\n\n private closed = false;\n\n public constructor({logger = new NullLogger(), ...configuration}: Configuration) {\n this.configuration = configuration;\n this.logger = logger;\n }\n\n public async publish({id: receiptId, message}: Envelope<string, string>): Promise<void> {\n if (this.closed) {\n return Promise.reject(MessageDeliveryError.nonRetryable('Channel is closed'));\n }\n\n const {token, timestamp, context, payload} = JSON.parse(message);\n const {endpointUrl, appId, cidAssigner} = this.configuration;\n\n return fetch(endpointUrl, {\n method: 'POST',\n headers: {\n 'X-App-Id': appId,\n 'X-Client-Id': await cidAssigner.assignCid(),\n 'X-Client-Library': CLIENT_LIBRARY,\n 'Content-Type': 'application/json',\n ...(token !== undefined ? {'X-Token': token} : {}),\n },\n body: JSON.stringify({\n context: context,\n payload: payload,\n originalTime: timestamp,\n departureTime: Date.now(),\n }),\n }).then(async response => {\n if (response.ok) {\n this.notify(receiptId);\n\n return;\n }\n\n const problem: ApiProblem = await response.json().catch(\n () => ({\n type: 'https://croct.help/api/event-tracker#unexpected-error',\n title: response.statusText,\n status: response.status,\n }),\n );\n\n const isRetryable = HttpBeaconChannel.isRetryable(problem.status);\n const help = Help.forStatusCode(problem.status);\n\n if (help !== undefined) {\n this.logger.error(help);\n } else if (!isRetryable) {\n this.logger.error(`Beacon rejected with non-retryable status: ${problem.title}`);\n }\n\n return Promise.reject(\n isRetryable\n ? MessageDeliveryError.retryable(problem.title)\n : MessageDeliveryError.nonRetryable(problem.title),\n );\n }).catch(error => {\n this.logger.error(`Failed to publish beacon: ${formatMessage(error)}`);\n\n return Promise.reject(\n error instanceof MessageDeliveryError\n ? error\n : MessageDeliveryError.retryable(error),\n );\n });\n }\n\n public subscribe(listener: ChannelListener<string>): void {\n if (!this.listeners.includes(listener)) {\n this.listeners.push(listener);\n }\n }\n\n public unsubscribe(listener: ChannelListener<string>): void {\n const index = this.listeners.indexOf(listener);\n\n if (index >= 0) {\n this.listeners.splice(index, 1);\n }\n }\n\n private notify(receiptId: string): void {\n this.listeners.forEach(dispatch => dispatch(receiptId));\n }\n\n public close(): Promise<void> {\n this.closed = true;\n\n return Promise.resolve();\n }\n\n private static isRetryable(status: number): boolean {\n // Retry on any server error and client errors 429 (rate limit) and 408 (request timeout)\n return status >= 500 || status === 429 || status === 408;\n }\n}\n"],"mappings":"AAAA,SAAwC,4BAA2B;AAEnE,SAAgB,kBAAiB;AAEjC,SAAQ,qBAAoB;AAC5B,SAAQ,sBAAqB;AAC7B,SAAQ,YAAW;AAgBZ,MAAM,kBAA6E;AAAA,EAS/E,YAAY,EAAC,SAAS,IAAI,WAAW,GAAG,GAAG,cAAa,GAAkB;AAJjF,SAAiB,YAA4C,CAAC;AAE9D,SAAQ,SAAS;AAGb,SAAK,gBAAgB;AACrB,SAAK,SAAS;AAAA,EAClB;AAAA,EAEA,MAAa,QAAQ,EAAC,IAAI,WAAW,QAAO,GAA4C;AACpF,QAAI,KAAK,QAAQ;AACb,aAAO,QAAQ,OAAO,qBAAqB,aAAa,mBAAmB,CAAC;AAAA,IAChF;AAEA,UAAM,EAAC,OAAO,WAAW,SAAS,QAAO,IAAI,KAAK,MAAM,OAAO;AAC/D,UAAM,EAAC,aAAa,OAAO,YAAW,IAAI,KAAK;AAE/C,WAAO,MAAM,aAAa;AAAA,MACtB,QAAQ;AAAA,MACR,SAAS;AAAA,QACL,YAAY;AAAA,QACZ,eAAe,MAAM,YAAY,UAAU;AAAA,QAC3C,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,GAAI,UAAU,SAAY,EAAC,WAAW,MAAK,IAAI,CAAC;AAAA,MACpD;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACjB;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd,eAAe,KAAK,IAAI;AAAA,MAC5B,CAAC;AAAA,IACL,CAAC,EAAE,KAAK,OAAM,aAAY;AACtB,UAAI,SAAS,IAAI;AACb,aAAK,OAAO,SAAS;AAErB;AAAA,MACJ;AAEA,YAAM,UAAsB,MAAM,SAAS,KAAK,EAAE;AAAA,QAC9C,OAAO;AAAA,UACH,MAAM;AAAA,UACN,OAAO,SAAS;AAAA,UAChB,QAAQ,SAAS;AAAA,QACrB;AAAA,MACJ;AAEA,YAAM,cAAc,kBAAkB,YAAY,QAAQ,MAAM;AAChE,YAAM,OAAO,KAAK,cAAc,QAAQ,MAAM;AAE9C,UAAI,SAAS,QAAW;AACpB,aAAK,OAAO,MAAM,IAAI;AAAA,MAC1B,WAAW,CAAC,aAAa;AACrB,aAAK,OAAO,MAAM,8CAA8C,QAAQ,KAAK,EAAE;AAAA,MACnF;AAEA,aAAO,QAAQ;AAAA,QACX,cACM,qBAAqB,UAAU,QAAQ,KAAK,IAC5C,qBAAqB,aAAa,QAAQ,KAAK;AAAA,MACzD;AAAA,IACJ,CAAC,EAAE,MAAM,WAAS;AACd,WAAK,OAAO,MAAM,6BAA6B,cAAc,KAAK,CAAC,EAAE;AAErE,aAAO,QAAQ;AAAA,QACX,iBAAiB,uBACX,QACA,qBAAqB,UAAU,KAAK;AAAA,MAC9C;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEO,UAAU,UAAyC;AACtD,QAAI,CAAC,KAAK,UAAU,SAAS,QAAQ,GAAG;AACpC,WAAK,UAAU,KAAK,QAAQ;AAAA,IAChC;AAAA,EACJ;AAAA,EAEO,YAAY,UAAyC;AACxD,UAAM,QAAQ,KAAK,UAAU,QAAQ,QAAQ;AAE7C,QAAI,SAAS,GAAG;AACZ,WAAK,UAAU,OAAO,OAAO,CAAC;AAAA,IAClC;AAAA,EACJ;AAAA,EAEQ,OAAO,WAAyB;AACpC,SAAK,UAAU,QAAQ,cAAY,SAAS,SAAS,CAAC;AAAA,EAC1D;AAAA,EAEO,QAAuB;AAC1B,SAAK,SAAS;AAEd,WAAO,QAAQ,QAAQ;AAAA,EAC3B;AAAA,EAEA,OAAe,YAAY,QAAyB;AAEhD,WAAO,UAAU,OAAO,WAAW,OAAO,WAAW;AAAA,EACzD;AACJ;","names":[]}
|
package/channel/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/channel/index.ts"],"sourcesContent":["export * from './channel';\nexport {EncodedChannel} from './encodedChannel';\nexport {GuaranteedChannel} from './guaranteedChannel';\nexport {QueuedChannel} from './queuedChannel';\nexport {RetryChannel} from './retryChannel';\nexport {SandboxChannel} from './sandboxChannel';\nexport {HttpBeaconChannel} from './httpBeaconChannel';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAc,sBAAd;AACA,4BAA6B;AAC7B,+BAAgC;AAChC,2BAA4B;AAC5B,0BAA2B;AAC3B,4BAA6B;AAC7B,+BAAgC;","names":[]}
|
package/channel/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/channel/index.ts"],"sourcesContent":["export * from './channel';\nexport {EncodedChannel} from './encodedChannel';\nexport {GuaranteedChannel} from './guaranteedChannel';\nexport {QueuedChannel} from './queuedChannel';\nexport {RetryChannel} from './retryChannel';\nexport {SandboxChannel} from './sandboxChannel';\nexport {HttpBeaconChannel} from './httpBeaconChannel';\n"],"mappings":"AAAA,cAAc;AACd,SAAQ,sBAAqB;AAC7B,SAAQ,yBAAwB;AAChC,SAAQ,qBAAoB;AAC5B,SAAQ,oBAAmB;AAC3B,SAAQ,sBAAqB;AAC7B,SAAQ,yBAAwB;","names":[]}
|