@signageos/lib 23.8.1 → 23.8.2-master.4405
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/dist/AMQP/CQRS/ICommand.d.ts +38 -0
- package/dist/AMQP/CQRS/ICommand.js +3 -0
- package/dist/AMQP/CQRS/ICommand.js.map +1 -0
- package/dist/AMQP/CQRS/ICommandError.d.ts +4 -0
- package/dist/AMQP/CQRS/ICommandError.js +3 -0
- package/dist/AMQP/CQRS/ICommandError.js.map +1 -0
- package/dist/AMQP/CQRS/commandQueue.d.ts +59 -0
- package/dist/AMQP/CQRS/commandQueue.js +313 -0
- package/dist/AMQP/CQRS/commandQueue.js.map +1 -0
- package/dist/AMQP/CQRS/commandResponseHelper.d.ts +3 -0
- package/dist/AMQP/CQRS/commandResponseHelper.js +8 -0
- package/dist/AMQP/CQRS/commandResponseHelper.js.map +1 -0
- package/dist/AMQP/CQRS/storedCommandQueue.d.ts +27 -0
- package/dist/AMQP/CQRS/storedCommandQueue.js +301 -0
- package/dist/AMQP/CQRS/storedCommandQueue.js.map +1 -0
- package/dist/AMQP/ChannelProvider.d.ts +37 -0
- package/dist/AMQP/ChannelProvider.js +886 -0
- package/dist/AMQP/ChannelProvider.js.map +1 -0
- package/dist/AMQP/DeviceActions/Bridge/deviceActionBridgeFactory.d.ts +39 -0
- package/dist/AMQP/DeviceActions/Bridge/deviceActionBridgeFactory.js +292 -0
- package/dist/AMQP/DeviceActions/Bridge/deviceActionBridgeFactory.js.map +1 -0
- package/dist/AMQP/DeviceActions/IDeviceAction.d.ts +4 -0
- package/dist/AMQP/DeviceActions/IDeviceAction.js +3 -0
- package/dist/AMQP/DeviceActions/IDeviceAction.js.map +1 -0
- package/dist/AMQP/DeviceActions/deviceActionsQueue.d.ts +83 -0
- package/dist/AMQP/DeviceActions/deviceActionsQueue.js +538 -0
- package/dist/AMQP/DeviceActions/deviceActionsQueue.js.map +1 -0
- package/dist/AMQP/EventSourcing/EventConsumer/AmqpEventConsumer.d.ts +47 -0
- package/dist/AMQP/EventSourcing/EventConsumer/AmqpEventConsumer.js +218 -0
- package/dist/AMQP/EventSourcing/EventConsumer/AmqpEventConsumer.js.map +1 -0
- package/dist/AMQP/EventSourcing/EventConsumer/IEventConsumer.d.ts +13 -0
- package/dist/AMQP/EventSourcing/EventConsumer/IEventConsumer.js +3 -0
- package/dist/AMQP/EventSourcing/EventConsumer/IEventConsumer.js.map +1 -0
- package/dist/AMQP/EventSourcing/EventConsumer/InMemoryEventConsumer.d.ts +15 -0
- package/dist/AMQP/EventSourcing/EventConsumer/InMemoryEventConsumer.js +76 -0
- package/dist/AMQP/EventSourcing/EventConsumer/InMemoryEventConsumer.js.map +1 -0
- package/dist/AMQP/EventSourcing/IEvent.d.ts +72 -0
- package/dist/AMQP/EventSourcing/IEvent.js +3 -0
- package/dist/AMQP/EventSourcing/IEvent.js.map +1 -0
- package/dist/AMQP/EventSourcing/Locked/deferredState.d.ts +21 -0
- package/dist/AMQP/EventSourcing/Locked/deferredState.js +72 -0
- package/dist/AMQP/EventSourcing/Locked/deferredState.js.map +1 -0
- package/dist/AMQP/EventSourcing/Locked/lockedEventConsumer.d.ts +63 -0
- package/dist/AMQP/EventSourcing/Locked/lockedEventConsumer.js +261 -0
- package/dist/AMQP/EventSourcing/Locked/lockedEventConsumer.js.map +1 -0
- package/dist/AMQP/EventSourcing/Locked/rejectedTimestamps.d.ts +24 -0
- package/dist/AMQP/EventSourcing/Locked/rejectedTimestamps.js +64 -0
- package/dist/AMQP/EventSourcing/Locked/rejectedTimestamps.js.map +1 -0
- package/dist/AMQP/EventSourcing/Locked/withLock.d.ts +42 -0
- package/dist/AMQP/EventSourcing/Locked/withLock.js +141 -0
- package/dist/AMQP/EventSourcing/Locked/withLock.js.map +1 -0
- package/dist/AMQP/EventSourcing/eventQueue.d.ts +87 -0
- package/dist/AMQP/EventSourcing/eventQueue.js +139 -0
- package/dist/AMQP/EventSourcing/eventQueue.js.map +1 -0
- package/dist/AMQP/EventSourcing/eventQueue.utils.d.ts +73 -0
- package/dist/AMQP/EventSourcing/eventQueue.utils.js +157 -0
- package/dist/AMQP/EventSourcing/eventQueue.utils.js.map +1 -0
- package/dist/AMQP/EventSourcing/eventQueueDetached.d.ts +49 -0
- package/dist/AMQP/EventSourcing/eventQueueDetached.js +428 -0
- package/dist/AMQP/EventSourcing/eventQueueDetached.js.map +1 -0
- package/dist/AMQP/EventSourcing/eventQueueDomain.d.ts +42 -0
- package/dist/AMQP/EventSourcing/eventQueueDomain.js +371 -0
- package/dist/AMQP/EventSourcing/eventQueueDomain.js.map +1 -0
- package/dist/AMQP/EventSourcing/eventQueuePublish.d.ts +19 -0
- package/dist/AMQP/EventSourcing/eventQueuePublish.js +209 -0
- package/dist/AMQP/EventSourcing/eventQueuePublish.js.map +1 -0
- package/dist/AMQP/EventSourcing/synchronization.d.ts +39 -0
- package/dist/AMQP/EventSourcing/synchronization.js +12 -0
- package/dist/AMQP/EventSourcing/synchronization.js.map +1 -0
- package/dist/AMQP/Exchange.d.ts +1 -0
- package/dist/AMQP/Exchange.js +3 -0
- package/dist/AMQP/Exchange.js.map +1 -0
- package/dist/AMQP/IAMQPPool.d.ts +5 -0
- package/dist/AMQP/IAMQPPool.js +3 -0
- package/dist/AMQP/IAMQPPool.js.map +1 -0
- package/dist/AMQP/IAsyncGotMessage.d.ts +15 -0
- package/dist/AMQP/IAsyncGotMessage.js +3 -0
- package/dist/AMQP/IAsyncGotMessage.js.map +1 -0
- package/dist/AMQP/IChannel.d.ts +43 -0
- package/dist/AMQP/IChannel.js +3 -0
- package/dist/AMQP/IChannel.js.map +1 -0
- package/dist/AMQP/IConsumeOptions.d.ts +106 -0
- package/dist/AMQP/IConsumeOptions.js +3 -0
- package/dist/AMQP/IConsumeOptions.js.map +1 -0
- package/dist/AMQP/IMessageOptions.d.ts +6 -0
- package/dist/AMQP/IMessageOptions.js +3 -0
- package/dist/AMQP/IMessageOptions.js.map +1 -0
- package/dist/AMQP/INackOptions.d.ts +4 -0
- package/dist/AMQP/INackOptions.js +3 -0
- package/dist/AMQP/INackOptions.js.map +1 -0
- package/dist/AMQP/IQueueOptions.d.ts +8 -0
- package/dist/AMQP/IQueueOptions.js +3 -0
- package/dist/AMQP/IQueueOptions.js.map +1 -0
- package/dist/AMQP/Logging/IDeviceLog.d.ts +15 -0
- package/dist/AMQP/Logging/IDeviceLog.js +10 -0
- package/dist/AMQP/Logging/IDeviceLog.js.map +1 -0
- package/dist/AMQP/Logging/logDeviceQueue.d.ts +12 -0
- package/dist/AMQP/Logging/logDeviceQueue.js +107 -0
- package/dist/AMQP/Logging/logDeviceQueue.js.map +1 -0
- package/dist/AMQP/QueueFetcher.d.ts +13 -0
- package/dist/AMQP/QueueFetcher.js +166 -0
- package/dist/AMQP/QueueFetcher.js.map +1 -0
- package/dist/AMQP/QueuePublisher.d.ts +7 -0
- package/dist/AMQP/QueuePublisher.js +135 -0
- package/dist/AMQP/QueuePublisher.js.map +1 -0
- package/dist/AMQP/QueueRepeatableSubscription.d.ts +14 -0
- package/dist/AMQP/QueueRepeatableSubscription.js +162 -0
- package/dist/AMQP/QueueRepeatableSubscription.js.map +1 -0
- package/dist/AMQP/QueueSubscriber.d.ts +11 -0
- package/dist/AMQP/QueueSubscriber.js +163 -0
- package/dist/AMQP/QueueSubscriber.js.map +1 -0
- package/dist/AMQP/ResponseProvider.d.ts +20 -0
- package/dist/AMQP/ResponseProvider.js +193 -0
- package/dist/AMQP/ResponseProvider.js.map +1 -0
- package/dist/AMQP/Static/filesQueue.d.ts +12 -0
- package/dist/AMQP/Static/filesQueue.js +220 -0
- package/dist/AMQP/Static/filesQueue.js.map +1 -0
- package/dist/AMQP/amqpConnectionFactory.d.ts +27 -0
- package/dist/AMQP/amqpConnectionFactory.js +236 -0
- package/dist/AMQP/amqpConnectionFactory.js.map +1 -0
- package/dist/AMQP/amqpErrors.d.ts +5 -0
- package/dist/AMQP/amqpErrors.js +30 -0
- package/dist/AMQP/amqpErrors.js.map +1 -0
- package/dist/AMQP/errors.d.ts +3 -0
- package/dist/AMQP/errors.js +30 -0
- package/dist/AMQP/errors.js.map +1 -0
- package/dist/AMQP/fetchNextMessage.d.ts +14 -0
- package/dist/AMQP/fetchNextMessage.js +118 -0
- package/dist/AMQP/fetchNextMessage.js.map +1 -0
- package/dist/AMQP/queueConfigurator.d.ts +5 -0
- package/dist/AMQP/queueConfigurator.js +78 -0
- package/dist/AMQP/queueConfigurator.js.map +1 -0
- package/dist/AWS/S3.d.ts +95 -0
- package/dist/AWS/S3.js +448 -0
- package/dist/AWS/S3.js.map +1 -0
- package/dist/AWS/S3Types.d.ts +113 -0
- package/dist/AWS/S3Types.js +3 -0
- package/dist/AWS/S3Types.js.map +1 -0
- package/dist/AWS/config.d.ts +2 -0
- package/dist/AWS/config.js +23 -0
- package/dist/AWS/config.js.map +1 -0
- package/dist/Auth0/AuthenticationClient/Auth0AuthenticationClient.d.ts +30 -0
- package/dist/Auth0/AuthenticationClient/Auth0AuthenticationClient.js +81 -0
- package/dist/Auth0/AuthenticationClient/Auth0AuthenticationClient.js.map +1 -0
- package/dist/Auth0/AuthenticationClient/Auth0AuthenticationClient.utils.d.ts +5 -0
- package/dist/Auth0/AuthenticationClient/Auth0AuthenticationClient.utils.js +33 -0
- package/dist/Auth0/AuthenticationClient/Auth0AuthenticationClient.utils.js.map +1 -0
- package/dist/Auth0/ManagementClient/Auth0ManagementClient.d.ts +41 -0
- package/dist/Auth0/ManagementClient/Auth0ManagementClient.js +137 -0
- package/dist/Auth0/ManagementClient/Auth0ManagementClient.js.map +1 -0
- package/dist/Auth0/ManagementClient/auth0ManagementClient.utils.d.ts +8 -0
- package/dist/Auth0/ManagementClient/auth0ManagementClient.utils.js +37 -0
- package/dist/Auth0/ManagementClient/auth0ManagementClient.utils.js.map +1 -0
- package/dist/Auth0/UserInfoClient/Auth0UserInfoClient.d.ts +14 -0
- package/dist/Auth0/UserInfoClient/Auth0UserInfoClient.js +58 -0
- package/dist/Auth0/UserInfoClient/Auth0UserInfoClient.js.map +1 -0
- package/dist/Auth0/auth0.types.d.ts +4 -0
- package/dist/Auth0/auth0.types.js +10 -0
- package/dist/Auth0/auth0.types.js.map +1 -0
- package/dist/Cache/lruCache.d.ts +22 -0
- package/dist/Cache/lruCache.js +42 -0
- package/dist/Cache/lruCache.js.map +1 -0
- package/dist/Cache/memoryCache.d.ts +7 -0
- package/dist/Cache/memoryCache.js +80 -0
- package/dist/Cache/memoryCache.js.map +1 -0
- package/dist/Config/config.d.ts +81 -0
- package/dist/Config/config.js +119 -0
- package/dist/Config/config.js.map +1 -0
- package/dist/Config/environment.d.ts +8 -0
- package/dist/Config/environment.js +13 -0
- package/dist/Config/environment.js.map +1 -0
- package/dist/Config/validation.d.ts +61 -0
- package/dist/Config/validation.js +56 -0
- package/dist/Config/validation.js.map +1 -0
- package/dist/DateTime/dateMonkeyPatch.d.ts +15 -0
- package/dist/DateTime/dateMonkeyPatch.js +149 -0
- package/dist/DateTime/dateMonkeyPatch.js.map +1 -0
- package/dist/DateTime/dateTimeFactory.d.ts +4 -0
- package/dist/DateTime/dateTimeFactory.js +22 -0
- package/dist/DateTime/dateTimeFactory.js.map +1 -0
- package/dist/DateTime/millisecondConstants.d.ts +7 -0
- package/dist/DateTime/millisecondConstants.js +11 -0
- package/dist/DateTime/millisecondConstants.js.map +1 -0
- package/dist/DateTime/posixTimezone.d.ts +1 -0
- package/dist/DateTime/posixTimezone.js +54 -0
- package/dist/DateTime/posixTimezone.js.map +1 -0
- package/dist/DateTime/statistics.d.ts +6 -0
- package/dist/DateTime/statistics.js +30 -0
- package/dist/DateTime/statistics.js.map +1 -0
- package/dist/DateTime/timeConverter.d.ts +1 -0
- package/dist/DateTime/timeConverter.js +11 -0
- package/dist/DateTime/timeConverter.js.map +1 -0
- package/dist/DateTime/timer.d.ts +10 -0
- package/dist/DateTime/timer.js +18 -0
- package/dist/DateTime/timer.js.map +1 -0
- package/dist/DateTime/timestamp.d.ts +2 -0
- package/dist/DateTime/timestamp.js +16 -0
- package/dist/DateTime/timestamp.js.map +1 -0
- package/dist/DateTime/waitUntil.d.ts +20 -0
- package/dist/DateTime/waitUntil.js +148 -0
- package/dist/DateTime/waitUntil.js.map +1 -0
- package/dist/Debug/debugClassDecorator.d.ts +13 -0
- package/dist/Debug/debugClassDecorator.js +63 -0
- package/dist/Debug/debugClassDecorator.js.map +1 -0
- package/dist/Debug/debugDecorator.d.ts +24 -0
- package/dist/Debug/debugDecorator.js +107 -0
- package/dist/Debug/debugDecorator.js.map +1 -0
- package/dist/Encryption/passwordEncryption.d.ts +4 -0
- package/dist/Encryption/passwordEncryption.js +29 -0
- package/dist/Encryption/passwordEncryption.js.map +1 -0
- package/dist/Encryption/tokenEncryption.d.ts +14 -0
- package/dist/Encryption/tokenEncryption.js +32 -0
- package/dist/Encryption/tokenEncryption.js.map +1 -0
- package/dist/Events/AsyncEventEmitter.d.ts +31 -0
- package/dist/Events/AsyncEventEmitter.js +125 -0
- package/dist/Events/AsyncEventEmitter.js.map +1 -0
- package/dist/Events/eventsHelpers.d.ts +3 -0
- package/dist/Events/eventsHelpers.js +24 -0
- package/dist/Events/eventsHelpers.js.map +1 -0
- package/dist/Events/genericGracefulExit.d.ts +11 -0
- package/dist/Events/genericGracefulExit.js +90 -0
- package/dist/Events/genericGracefulExit.js.map +1 -0
- package/dist/FileSystem/moduleDiscoverer.d.ts +7 -0
- package/dist/FileSystem/moduleDiscoverer.js +88 -0
- package/dist/FileSystem/moduleDiscoverer.js.map +1 -0
- package/dist/FileSystem/tmpDir.d.ts +9 -0
- package/dist/FileSystem/tmpDir.js +64 -0
- package/dist/FileSystem/tmpDir.js.map +1 -0
- package/dist/Functional/compose.d.ts +22 -0
- package/dist/Functional/compose.js +44 -0
- package/dist/Functional/compose.js.map +1 -0
- package/dist/GenericPool/options.d.ts +63 -0
- package/dist/GenericPool/options.js +3 -0
- package/dist/GenericPool/options.js.map +1 -0
- package/dist/Hash/checksum.d.ts +5 -0
- package/dist/Hash/checksum.js +20 -0
- package/dist/Hash/checksum.js.map +1 -0
- package/dist/Hash/checksumFile.d.ts +4 -0
- package/dist/Hash/checksumFile.js +82 -0
- package/dist/Hash/checksumFile.js.map +1 -0
- package/dist/Hash/generator.d.ts +2 -0
- package/dist/Hash/generator.js +15 -0
- package/dist/Hash/generator.js.map +1 -0
- package/dist/Http/download.d.ts +1 -0
- package/dist/Http/download.js +91 -0
- package/dist/Http/download.js.map +1 -0
- package/dist/HttpStatus/checks/amqpStatusCheck.d.ts +3 -0
- package/dist/HttpStatus/checks/amqpStatusCheck.js +98 -0
- package/dist/HttpStatus/checks/amqpStatusCheck.js.map +1 -0
- package/dist/HttpStatus/checks/mongoDBStatusCheck.d.ts +3 -0
- package/dist/HttpStatus/checks/mongoDBStatusCheck.js +60 -0
- package/dist/HttpStatus/checks/mongoDBStatusCheck.js.map +1 -0
- package/dist/HttpStatus/checks/redisStatusCheck.d.ts +3 -0
- package/dist/HttpStatus/checks/redisStatusCheck.js +94 -0
- package/dist/HttpStatus/checks/redisStatusCheck.js.map +1 -0
- package/dist/HttpStatus/createHttpStatusMiddleware.d.ts +9 -0
- package/dist/HttpStatus/createHttpStatusMiddleware.js +109 -0
- package/dist/HttpStatus/createHttpStatusMiddleware.js.map +1 -0
- package/dist/HttpStatus/enrichHttpServerWithStatus.d.ts +15 -0
- package/dist/HttpStatus/enrichHttpServerWithStatus.js +114 -0
- package/dist/HttpStatus/enrichHttpServerWithStatus.js.map +1 -0
- package/dist/HttpStatus/sendStatusResponse.d.ts +5 -0
- package/dist/HttpStatus/sendStatusResponse.js +71 -0
- package/dist/HttpStatus/sendStatusResponse.js.map +1 -0
- package/dist/HttpStatus/status.d.ts +19 -0
- package/dist/HttpStatus/status.js +132 -0
- package/dist/HttpStatus/status.js.map +1 -0
- package/dist/HttpStatus/statuses/amqpStatus.d.ts +3 -0
- package/dist/HttpStatus/statuses/amqpStatus.js +35 -0
- package/dist/HttpStatus/statuses/amqpStatus.js.map +1 -0
- package/dist/HttpStatus/statuses/mongoStatus.d.ts +3 -0
- package/dist/HttpStatus/statuses/mongoStatus.js +35 -0
- package/dist/HttpStatus/statuses/mongoStatus.js.map +1 -0
- package/dist/HttpStatus/statuses/redisStatus.d.ts +3 -0
- package/dist/HttpStatus/statuses/redisStatus.js +35 -0
- package/dist/HttpStatus/statuses/redisStatus.js.map +1 -0
- package/dist/InfluxDB/IInfluxDB.d.ts +5 -0
- package/dist/InfluxDB/IInfluxDB.js +3 -0
- package/dist/InfluxDB/IInfluxDB.js.map +1 -0
- package/dist/InfluxDB/influxDBConnectionFactory.d.ts +9 -0
- package/dist/InfluxDB/influxDBConnectionFactory.js +83 -0
- package/dist/InfluxDB/influxDBConnectionFactory.js.map +1 -0
- package/dist/JSON/jsonHelper.d.ts +4 -0
- package/dist/JSON/jsonHelper.js +21 -0
- package/dist/JSON/jsonHelper.js.map +1 -0
- package/dist/Lib/Redis/connection.utils.d.ts +22 -0
- package/dist/Lib/Redis/connection.utils.js +95 -0
- package/dist/Lib/Redis/connection.utils.js.map +1 -0
- package/dist/Lib/String/string.d.ts +1 -0
- package/dist/Lib/String/string.js +6 -0
- package/dist/Lib/String/string.js.map +1 -0
- package/dist/Lock/lockedDecorator.d.ts +12 -0
- package/dist/Lock/lockedDecorator.js +150 -0
- package/dist/Lock/lockedDecorator.js.map +1 -0
- package/dist/Logging/console.d.ts +8 -0
- package/dist/Logging/console.js +50 -0
- package/dist/Logging/console.js.map +1 -0
- package/dist/Logging/debug.d.ts +10 -0
- package/dist/Logging/debug.js +61 -0
- package/dist/Logging/debug.js.map +1 -0
- package/dist/Logging/format.d.ts +10 -0
- package/dist/Logging/format.js +79 -0
- package/dist/Logging/format.js.map +1 -0
- package/dist/Logging/logger.d.ts +53 -0
- package/dist/Logging/logger.js +63 -0
- package/dist/Logging/logger.js.map +1 -0
- package/dist/Logging/logging.d.ts +12 -0
- package/dist/Logging/logging.js +113 -0
- package/dist/Logging/logging.js.map +1 -0
- package/dist/Metrics/MetricsClient.d.ts +46 -0
- package/dist/Metrics/MetricsClient.js +101 -0
- package/dist/Metrics/MetricsClient.js.map +1 -0
- package/dist/Metrics/deviceConsumerMetrics.d.ts +6 -0
- package/dist/Metrics/deviceConsumerMetrics.js +59 -0
- package/dist/Metrics/deviceConsumerMetrics.js.map +1 -0
- package/dist/Metrics/eventConsumerMetrics.d.ts +19 -0
- package/dist/Metrics/eventConsumerMetrics.js +52 -0
- package/dist/Metrics/eventConsumerMetrics.js.map +1 -0
- package/dist/Metrics/eventQueueMetrics.d.ts +7 -0
- package/dist/Metrics/eventQueueMetrics.js +19 -0
- package/dist/Metrics/eventQueueMetrics.js.map +1 -0
- package/dist/Metrics/logMetrics.d.ts +4 -0
- package/dist/Metrics/logMetrics.js +20 -0
- package/dist/Metrics/logMetrics.js.map +1 -0
- package/dist/Metrics/metrics.d.ts +84 -0
- package/dist/Metrics/metrics.js +255 -0
- package/dist/Metrics/metrics.js.map +1 -0
- package/dist/Metrics/mongoDBMetrics.d.ts +35 -0
- package/dist/Metrics/mongoDBMetrics.js +162 -0
- package/dist/Metrics/mongoDBMetrics.js.map +1 -0
- package/dist/Metrics/processSocketsMetrics.d.ts +10 -0
- package/dist/Metrics/processSocketsMetrics.js +92 -0
- package/dist/Metrics/processSocketsMetrics.js.map +1 -0
- package/dist/Metrics/redisMetrics.d.ts +13 -0
- package/dist/Metrics/redisMetrics.js +60 -0
- package/dist/Metrics/redisMetrics.js.map +1 -0
- package/dist/MongoDB/MongoDBConnection.d.ts +19 -0
- package/dist/MongoDB/MongoDBConnection.js +185 -0
- package/dist/MongoDB/MongoDBConnection.js.map +1 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/dynamicPriority.d.ts +2 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/dynamicPriority.js +106 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/dynamicPriority.js.map +1 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/lowReadLatency.d.ts +2 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/lowReadLatency.js +94 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/lowReadLatency.js.map +1 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/ordinary.d.ts +2 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/ordinary.js +80 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/ordinary.js.map +1 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/random.d.ts +2 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/random.js +51 -0
- package/dist/MongoDB/ProprietaryCluster/SelectionStrategy/random.js.map +1 -0
- package/dist/MongoDB/ProprietaryCluster/helper.d.ts +13 -0
- package/dist/MongoDB/ProprietaryCluster/helper.js +147 -0
- package/dist/MongoDB/ProprietaryCluster/helper.js.map +1 -0
- package/dist/MongoDB/cursorIterator.d.ts +5 -0
- package/dist/MongoDB/cursorIterator.js +63 -0
- package/dist/MongoDB/cursorIterator.js.map +1 -0
- package/dist/MongoDB/escape.d.ts +4 -0
- package/dist/MongoDB/escape.js +54 -0
- package/dist/MongoDB/escape.js.map +1 -0
- package/dist/MongoDB/mongoDBConnectionFactory.d.ts +13 -0
- package/dist/MongoDB/mongoDBConnectionFactory.js +11 -0
- package/dist/MongoDB/mongoDBConnectionFactory.js.map +1 -0
- package/dist/MongoDB/proprietaryCluster.d.ts +1 -0
- package/dist/MongoDB/proprietaryCluster.js +76 -0
- package/dist/MongoDB/proprietaryCluster.js.map +1 -0
- package/dist/Npm/INpmClient.d.ts +25 -0
- package/dist/Npm/INpmClient.js +3 -0
- package/dist/Npm/INpmClient.js.map +1 -0
- package/dist/Npm/MockNpmClient.d.ts +17 -0
- package/dist/Npm/MockNpmClient.js +124 -0
- package/dist/Npm/MockNpmClient.js.map +1 -0
- package/dist/Npm/NpmClient.d.ts +14 -0
- package/dist/Npm/NpmClient.js +212 -0
- package/dist/Npm/NpmClient.js.map +1 -0
- package/dist/Npm/NpmCredentialsProvider.d.ts +18 -0
- package/dist/Npm/NpmCredentialsProvider.js +111 -0
- package/dist/Npm/NpmCredentialsProvider.js.map +1 -0
- package/dist/Observable/helpers.d.ts +3 -0
- package/dist/Observable/helpers.js +117 -0
- package/dist/Observable/helpers.js.map +1 -0
- package/dist/Parsers/parsers.d.ts +1 -0
- package/dist/Parsers/parsers.js +17 -0
- package/dist/Parsers/parsers.js.map +1 -0
- package/dist/Path/detector.d.ts +9 -0
- package/dist/Path/detector.js +78 -0
- package/dist/Path/detector.js.map +1 -0
- package/dist/Pool/IBasePool.d.ts +6 -0
- package/dist/Pool/IBasePool.js +3 -0
- package/dist/Pool/IBasePool.js.map +1 -0
- package/dist/Promise/cancelable.d.ts +4 -0
- package/dist/Promise/cancelable.js +21 -0
- package/dist/Promise/cancelable.js.map +1 -0
- package/dist/Promise/deferred.d.ts +4 -0
- package/dist/Promise/deferred.js +21 -0
- package/dist/Promise/deferred.js.map +1 -0
- package/dist/Promise/deferredStream.d.ts +4 -0
- package/dist/Promise/deferredStream.js +21 -0
- package/dist/Promise/deferredStream.js.map +1 -0
- package/dist/Promise/lock.d.ts +4 -0
- package/dist/Promise/lock.js +21 -0
- package/dist/Promise/lock.js.map +1 -0
- package/dist/Promise/timeoutable.d.ts +4 -0
- package/dist/Promise/timeoutable.js +21 -0
- package/dist/Promise/timeoutable.js.map +1 -0
- package/dist/Redis/DeviceActions/PostponedAction.d.ts +4 -0
- package/dist/Redis/DeviceActions/PostponedAction.js +3 -0
- package/dist/Redis/DeviceActions/PostponedAction.js.map +1 -0
- package/dist/Redis/DeviceActions/postponedDeviceActions.d.ts +8 -0
- package/dist/Redis/DeviceActions/postponedDeviceActions.js +333 -0
- package/dist/Redis/DeviceActions/postponedDeviceActions.js.map +1 -0
- package/dist/Redis/redisConnectionFactory.d.ts +41 -0
- package/dist/Redis/redisConnectionFactory.js +158 -0
- package/dist/Redis/redisConnectionFactory.js.map +1 -0
- package/dist/Redis/redisLock.d.ts +11 -0
- package/dist/Redis/redisLock.js +213 -0
- package/dist/Redis/redisLock.js.map +1 -0
- package/dist/Retry/retry.d.ts +28 -0
- package/dist/Retry/retry.js +154 -0
- package/dist/Retry/retry.js.map +1 -0
- package/dist/Rsync/copier.d.ts +1 -0
- package/dist/Rsync/copier.js +123 -0
- package/dist/Rsync/copier.js.map +1 -0
- package/dist/SemVer/SemVerLevel.d.ts +6 -0
- package/dist/SemVer/SemVerLevel.js +10 -0
- package/dist/SemVer/SemVerLevel.js.map +1 -0
- package/dist/SemVer/semVerConstants.d.ts +2 -0
- package/dist/SemVer/semVerConstants.js +9 -0
- package/dist/SemVer/semVerConstants.js.map +1 -0
- package/dist/SemVer/semVerHelper.d.ts +7 -0
- package/dist/SemVer/semVerHelper.js +82 -0
- package/dist/SemVer/semVerHelper.js.map +1 -0
- package/dist/Service/HTTP/express/app.d.ts +33 -0
- package/dist/Service/HTTP/express/app.js +82 -0
- package/dist/Service/HTTP/express/app.js.map +1 -0
- package/dist/Service/HTTP/express/expressFactory.d.ts +4 -0
- package/dist/Service/HTTP/express/expressFactory.js +22 -0
- package/dist/Service/HTTP/express/expressFactory.js.map +1 -0
- package/dist/Service/HTTP/express/monitoring.d.ts +8 -0
- package/dist/Service/HTTP/express/monitoring.js +25 -0
- package/dist/Service/HTTP/express/monitoring.js.map +1 -0
- package/dist/Service/HTTP/httpServerFactory.d.ts +54 -0
- package/dist/Service/HTTP/httpServerFactory.js +104 -0
- package/dist/Service/HTTP/httpServerFactory.js.map +1 -0
- package/dist/Service/HTTP/middleware/accessLogMiddleware.d.ts +20 -0
- package/dist/Service/HTTP/middleware/accessLogMiddleware.js +90 -0
- package/dist/Service/HTTP/middleware/accessLogMiddleware.js.map +1 -0
- package/dist/Service/HTTP/middleware/headersMiddleware.d.ts +2 -0
- package/dist/Service/HTTP/middleware/headersMiddleware.js +18 -0
- package/dist/Service/HTTP/middleware/headersMiddleware.js.map +1 -0
- package/dist/Service/HTTP/routes/app/indexPage.d.ts +7 -0
- package/dist/Service/HTTP/routes/app/indexPage.js +12 -0
- package/dist/Service/HTTP/routes/app/indexPage.js.map +1 -0
- package/dist/Service/HTTP/routes/app/router.d.ts +14 -0
- package/dist/Service/HTTP/routes/app/router.js +12 -0
- package/dist/Service/HTTP/routes/app/router.js.map +1 -0
- package/dist/Service/HTTP/routes/app/status.d.ts +13 -0
- package/dist/Service/HTTP/routes/app/status.js +44 -0
- package/dist/Service/HTTP/routes/app/status.js.map +1 -0
- package/dist/Service/HTTP/routes/monitoring/aliveness.d.ts +20 -0
- package/dist/Service/HTTP/routes/monitoring/aliveness.js +75 -0
- package/dist/Service/HTTP/routes/monitoring/aliveness.js.map +1 -0
- package/dist/Service/HTTP/routes/monitoring/metrics.d.ts +9 -0
- package/dist/Service/HTTP/routes/monitoring/metrics.js +59 -0
- package/dist/Service/HTTP/routes/monitoring/metrics.js.map +1 -0
- package/dist/Service/HTTP/routes/monitoring/readniness.d.ts +18 -0
- package/dist/Service/HTTP/routes/monitoring/readniness.js +80 -0
- package/dist/Service/HTTP/routes/monitoring/readniness.js.map +1 -0
- package/dist/Service/HTTP/routes/monitoring/router.d.ts +10 -0
- package/dist/Service/HTTP/routes/monitoring/router.js +12 -0
- package/dist/Service/HTTP/routes/monitoring/router.js.map +1 -0
- package/dist/Service/HTTP/server/serverFactory.d.ts +10 -0
- package/dist/Service/HTTP/server/serverFactory.js +133 -0
- package/dist/Service/HTTP/server/serverFactory.js.map +1 -0
- package/dist/Service/Service.d.ts +17 -0
- package/dist/Service/Service.js +97 -0
- package/dist/Service/Service.js.map +1 -0
- package/dist/Service/dbConnections.d.ts +8 -0
- package/dist/Service/dbConnections.js +3 -0
- package/dist/Service/dbConnections.js.map +1 -0
- package/dist/Service/metrics/connections.d.ts +3 -0
- package/dist/Service/metrics/connections.js +47 -0
- package/dist/Service/metrics/connections.js.map +1 -0
- package/dist/Service/metrics/mongodb.d.ts +2 -0
- package/dist/Service/metrics/mongodb.js +13 -0
- package/dist/Service/metrics/mongodb.js.map +1 -0
- package/dist/Service/metrics/redis.d.ts +2 -0
- package/dist/Service/metrics/redis.js +11 -0
- package/dist/Service/metrics/redis.js.map +1 -0
- package/dist/Service/process.d.ts +11 -0
- package/dist/Service/process.js +88 -0
- package/dist/Service/process.js.map +1 -0
- package/dist/Service/serviceFactory.d.ts +115 -0
- package/dist/Service/serviceFactory.js +118 -0
- package/dist/Service/serviceFactory.js.map +1 -0
- package/dist/Service/types.d.ts +55 -0
- package/dist/Service/types.js +3 -0
- package/dist/Service/types.js.map +1 -0
- package/dist/Storage/IArrayStorage.d.ts +7 -0
- package/dist/Storage/IArrayStorage.js +3 -0
- package/dist/Storage/IArrayStorage.js.map +1 -0
- package/dist/Storage/MemoryArrayStorage.d.ts +9 -0
- package/dist/Storage/MemoryArrayStorage.js +22 -0
- package/dist/Storage/MemoryArrayStorage.js.map +1 -0
- package/dist/String/pad.d.ts +1 -0
- package/dist/String/pad.js +7 -0
- package/dist/String/pad.js.map +1 -0
- package/dist/String/string.d.ts +3 -0
- package/dist/String/string.js +17 -0
- package/dist/String/string.js.map +1 -0
- package/dist/String/webalize.d.ts +1 -0
- package/dist/String/webalize.js +15 -0
- package/dist/String/webalize.js.map +1 -0
- package/dist/String/word.d.ts +32 -0
- package/dist/String/word.js +97 -0
- package/dist/String/word.js.map +1 -0
- package/dist/System/signalSender.d.ts +1 -0
- package/dist/System/signalSender.js +7 -0
- package/dist/System/signalSender.js.map +1 -0
- package/dist/ThirdParty/connection.d.ts +28 -0
- package/dist/ThirdParty/connection.js +9 -0
- package/dist/ThirdParty/connection.js.map +1 -0
- package/dist/Timer/Power/PowerTimerSettings.d.ts +29 -0
- package/dist/Timer/Power/PowerTimerSettings.js +3 -0
- package/dist/Timer/Power/PowerTimerSettings.js.map +1 -0
- package/dist/Timer/Power/PowerTimerType.d.ts +2 -0
- package/dist/Timer/Power/PowerTimerType.js +3 -0
- package/dist/Timer/Power/PowerTimerType.js.map +1 -0
- package/dist/Timer/Power/PowerTimerWeekday.d.ts +18 -0
- package/dist/Timer/Power/PowerTimerWeekday.js +18 -0
- package/dist/Timer/Power/PowerTimerWeekday.js.map +1 -0
- package/dist/Timer/Power/PowerTimerWeekdayEnum.d.ts +28 -0
- package/dist/Timer/Power/PowerTimerWeekdayEnum.js +32 -0
- package/dist/Timer/Power/PowerTimerWeekdayEnum.js.map +1 -0
- package/dist/Timer/Power/TimerEventWeekdayNumber.d.ts +9 -0
- package/dist/Timer/Power/TimerEventWeekdayNumber.js +14 -0
- package/dist/Timer/Power/TimerEventWeekdayNumber.js.map +1 -0
- package/dist/Timer/Power/powerTimerComputer.d.ts +36 -0
- package/dist/Timer/Power/powerTimerComputer.js +141 -0
- package/dist/Timer/Power/powerTimerComputer.js.map +1 -0
- package/dist/Timer/convertWeekday.d.ts +25 -0
- package/dist/Timer/convertWeekday.js +211 -0
- package/dist/Timer/convertWeekday.js.map +1 -0
- package/dist/Timer/converters.d.ts +44 -0
- package/dist/Timer/converters.js +72 -0
- package/dist/Timer/converters.js.map +1 -0
- package/dist/Timer/increasingInterval.d.ts +2 -0
- package/dist/Timer/increasingInterval.js +108 -0
- package/dist/Timer/increasingInterval.js.map +1 -0
- package/dist/Timer/nonConcurrentInterval.d.ts +4 -0
- package/dist/Timer/nonConcurrentInterval.js +73 -0
- package/dist/Timer/nonConcurrentInterval.js.map +1 -0
- package/dist/Timer/progressiveWait.d.ts +40 -0
- package/dist/Timer/progressiveWait.js +96 -0
- package/dist/Timer/progressiveWait.js.map +1 -0
- package/dist/Timer/timeout.d.ts +4 -0
- package/dist/Timer/timeout.js +21 -0
- package/dist/Timer/timeout.js.map +1 -0
- package/dist/Timer/wait.d.ts +5 -0
- package/dist/Timer/wait.js +27 -0
- package/dist/Timer/wait.js.map +1 -0
- package/dist/TypeScript/asyncIterator.d.ts +1 -0
- package/dist/TypeScript/asyncIterator.js +76 -0
- package/dist/TypeScript/asyncIterator.js.map +1 -0
- package/dist/TypeScript/expect.d.ts +6 -0
- package/dist/TypeScript/expect.js +12 -0
- package/dist/TypeScript/expect.js.map +1 -0
- package/dist/TypeScript/generator.d.ts +1 -0
- package/dist/TypeScript/generator.js +20 -0
- package/dist/TypeScript/generator.js.map +1 -0
- package/dist/TypeScript/object.d.ts +12 -0
- package/dist/TypeScript/object.js +3 -0
- package/dist/TypeScript/object.js.map +1 -0
- package/dist/TypeScript/observable-polyfill.d.ts +1 -0
- package/dist/TypeScript/observable-polyfill.js +33 -0
- package/dist/TypeScript/observable-polyfill.js.map +1 -0
- package/dist/Utils/array.d.ts +2 -0
- package/dist/Utils/array.js +23 -0
- package/dist/Utils/array.js.map +1 -0
- package/dist/Utils/enum.d.ts +24 -0
- package/dist/Utils/enum.js +35 -0
- package/dist/Utils/enum.js.map +1 -0
- package/dist/Utils/file.d.ts +1 -0
- package/dist/Utils/file.js +55 -0
- package/dist/Utils/file.js.map +1 -0
- package/dist/Utils/http.d.ts +23 -0
- package/dist/Utils/http.js +68 -0
- package/dist/Utils/http.js.map +1 -0
- package/dist/Utils/object.d.ts +22 -0
- package/dist/Utils/object.js +112 -0
- package/dist/Utils/object.js.map +1 -0
- package/dist/Utils/sorting.d.ts +1 -0
- package/dist/Utils/sorting.js +33 -0
- package/dist/Utils/sorting.js.map +1 -0
- package/dist/WebSocket/Client/ISocket.d.ts +55 -0
- package/dist/WebSocket/Client/ISocket.js +46 -0
- package/dist/WebSocket/Client/ISocket.js.map +1 -0
- package/dist/WebSocket/Client/SocketIO/createSocketIOSocket.d.ts +8 -0
- package/dist/WebSocket/Client/SocketIO/createSocketIOSocket.js +81 -0
- package/dist/WebSocket/Client/SocketIO/createSocketIOSocket.js.map +1 -0
- package/dist/WebSocket/Client/WS/AutoReconnectingWSSocket.d.ts +25 -0
- package/dist/WebSocket/Client/WS/AutoReconnectingWSSocket.js +174 -0
- package/dist/WebSocket/Client/WS/AutoReconnectingWSSocket.js.map +1 -0
- package/dist/WebSocket/Client/WS/createWSSocket.d.ts +8 -0
- package/dist/WebSocket/Client/WS/createWSSocket.js +155 -0
- package/dist/WebSocket/Client/WS/createWSSocket.js.map +1 -0
- package/dist/WebSocket/autoWsServerFactory.d.ts +4 -0
- package/dist/WebSocket/autoWsServerFactory.js +334 -0
- package/dist/WebSocket/autoWsServerFactory.js.map +1 -0
- package/dist/WebSocket/perMessageDeflate.d.ts +14 -0
- package/dist/WebSocket/perMessageDeflate.js +3 -0
- package/dist/WebSocket/perMessageDeflate.js.map +1 -0
- package/dist/WebSocket/socketIOServerFactory.d.ts +6 -0
- package/dist/WebSocket/socketIOServerFactory.js +124 -0
- package/dist/WebSocket/socketIOServerFactory.js.map +1 -0
- package/dist/WebSocket/socketServer.d.ts +30 -0
- package/dist/WebSocket/socketServer.js +3 -0
- package/dist/WebSocket/socketServer.js.map +1 -0
- package/dist/WebSocket/wsServerFactory.d.ts +8 -0
- package/dist/WebSocket/wsServerFactory.js +272 -0
- package/dist/WebSocket/wsServerFactory.js.map +1 -0
- package/dist/Webpack/NpmPackPlugin.d.ts +14 -0
- package/dist/Webpack/NpmPackPlugin.js +90 -0
- package/dist/Webpack/NpmPackPlugin.js.map +1 -0
- package/dist/Zod/zod.d.ts +2 -0
- package/dist/Zod/zod.js +7 -0
- package/dist/Zod/zod.js.map +1 -0
- package/dist/Zod/zodError.d.ts +40 -0
- package/dist/Zod/zodError.js +76 -0
- package/dist/Zod/zodError.js.map +1 -0
- package/package.json +36 -2
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
21
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
22
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
23
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
24
|
+
function step(op) {
|
|
25
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
26
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
27
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
28
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
29
|
+
switch (op[0]) {
|
|
30
|
+
case 0: case 1: t = op; break;
|
|
31
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
32
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
33
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
34
|
+
default:
|
|
35
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
36
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
37
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
38
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
39
|
+
if (t[2]) _.ops.pop();
|
|
40
|
+
_.trys.pop(); continue;
|
|
41
|
+
}
|
|
42
|
+
op = body.call(thisArg, _);
|
|
43
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
44
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.AmqpEventConsumer = void 0;
|
|
49
|
+
var lockedDecorator_1 = require("../../../Lock/lockedDecorator");
|
|
50
|
+
var logging_1 = require("../../../Logging/logging");
|
|
51
|
+
var eventQueueDomain_1 = require("../eventQueueDomain");
|
|
52
|
+
var eventConsumerMetrics_1 = require("../../../Metrics/eventConsumerMetrics");
|
|
53
|
+
var consumerLogger = logging_1.logger.createNamespace('EventConsumer');
|
|
54
|
+
var DEFAULT_DOMAIN = 'default';
|
|
55
|
+
var LOCK_NAMESPACE = 'AmqpEventConsumer';
|
|
56
|
+
/**
|
|
57
|
+
* High level abstraction of event consumption
|
|
58
|
+
*
|
|
59
|
+
* This implementation uses AMQP queues to consume events.
|
|
60
|
+
*
|
|
61
|
+
* It abstracts all the implementation details of setting up consumption of events
|
|
62
|
+
* and provides a simple interface so that the consumer can focus on just handling the events.
|
|
63
|
+
*
|
|
64
|
+
* All events are consumed from a single queue in a sequential order.
|
|
65
|
+
* The name of the queue will be constructed from the consumer name and the domain as "<consumerName>_<domain>".
|
|
66
|
+
*/
|
|
67
|
+
var AmqpEventConsumer = /** @class */ (function () {
|
|
68
|
+
/**
|
|
69
|
+
* @param amqpConnection The AMQP connection to use
|
|
70
|
+
* @param consumerName The name of the consumer. This is used to identify the consumer in the AMQP queue
|
|
71
|
+
* @param domain The domain to consume events from. Defaults to 'default'
|
|
72
|
+
* @param options Additional options for the consumer
|
|
73
|
+
*/
|
|
74
|
+
function AmqpEventConsumer(_a) {
|
|
75
|
+
var amqpConnection = _a.amqpConnection, consumerName = _a.consumerName, domain = _a.domain, options = _a.options;
|
|
76
|
+
this.consumerCallbacks = {};
|
|
77
|
+
this.stopCallback = null;
|
|
78
|
+
this.started = false;
|
|
79
|
+
this.amqpConnection = amqpConnection;
|
|
80
|
+
this.consumerName = consumerName;
|
|
81
|
+
this.domain = domain || DEFAULT_DOMAIN;
|
|
82
|
+
this.options = options;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Add a consumer for a specific event type
|
|
86
|
+
*
|
|
87
|
+
* Has to be called before calling listen(), otherwise it will throw an error.
|
|
88
|
+
*/
|
|
89
|
+
AmqpEventConsumer.prototype.addEventConsumer = function (eventType, callback, option) {
|
|
90
|
+
if (this.consumerCallbacks[eventType]) {
|
|
91
|
+
throw new Error("Consumer for event type ".concat(eventType, " already registered"));
|
|
92
|
+
}
|
|
93
|
+
if (this.started) {
|
|
94
|
+
throw new Error('Cannot add event consumer after consumer has started');
|
|
95
|
+
}
|
|
96
|
+
this.consumerCallbacks[eventType] = {
|
|
97
|
+
callback: callback,
|
|
98
|
+
schema: option === null || option === void 0 ? void 0 : option.schema,
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
AmqpEventConsumer.prototype.listen = function () {
|
|
102
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
103
|
+
return __generator(this, function (_a) {
|
|
104
|
+
switch (_a.label) {
|
|
105
|
+
case 0:
|
|
106
|
+
if (this.started) {
|
|
107
|
+
throw new Error('Event consumer already started');
|
|
108
|
+
}
|
|
109
|
+
return [4 /*yield*/, this.bindEvents()];
|
|
110
|
+
case 1:
|
|
111
|
+
_a.sent();
|
|
112
|
+
this.started = true;
|
|
113
|
+
return [2 /*return*/];
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
AmqpEventConsumer.prototype.close = function () {
|
|
119
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
120
|
+
var closeChannel;
|
|
121
|
+
return __generator(this, function (_a) {
|
|
122
|
+
switch (_a.label) {
|
|
123
|
+
case 0:
|
|
124
|
+
if (!this.stopCallback) return [3 /*break*/, 3];
|
|
125
|
+
return [4 /*yield*/, this.stopCallback()];
|
|
126
|
+
case 1:
|
|
127
|
+
closeChannel = _a.sent();
|
|
128
|
+
return [4 /*yield*/, closeChannel()];
|
|
129
|
+
case 2:
|
|
130
|
+
_a.sent();
|
|
131
|
+
this.stopCallback = null;
|
|
132
|
+
_a.label = 3;
|
|
133
|
+
case 3:
|
|
134
|
+
this.started = false;
|
|
135
|
+
return [2 /*return*/];
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
AmqpEventConsumer.prototype.bindEvents = function () {
|
|
141
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
142
|
+
var eventTypes, _a;
|
|
143
|
+
return __generator(this, function (_b) {
|
|
144
|
+
switch (_b.label) {
|
|
145
|
+
case 0:
|
|
146
|
+
eventTypes = Object.keys(this.consumerCallbacks);
|
|
147
|
+
_a = this;
|
|
148
|
+
return [4 /*yield*/, (0, eventQueueDomain_1.bindDomain)(this.amqpConnection, eventTypes, this.domain, this.consumerName, this.consumeEvent.bind(this), this.options)];
|
|
149
|
+
case 1:
|
|
150
|
+
_a.stopCallback = _b.sent();
|
|
151
|
+
return [2 /*return*/];
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
AmqpEventConsumer.prototype.shouldConsumeEvent = function (options) {
|
|
157
|
+
if (options.schema) {
|
|
158
|
+
return options.schema.safeParse(options.event).success;
|
|
159
|
+
}
|
|
160
|
+
return true;
|
|
161
|
+
};
|
|
162
|
+
AmqpEventConsumer.prototype.consumeEvent = function (event) {
|
|
163
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
164
|
+
var start, _a, callback, schema, e_1;
|
|
165
|
+
return __generator(this, function (_b) {
|
|
166
|
+
switch (_b.label) {
|
|
167
|
+
case 0:
|
|
168
|
+
start = new Date().getTime();
|
|
169
|
+
eventConsumerMetrics_1.metrics.emit('events_total', { eventType: event.type });
|
|
170
|
+
eventConsumerMetrics_1.metrics.emit('event_duration_seconds_total', { eventType: event.type, phase: 'eventStart' }, start - event.receivedAt.getTime());
|
|
171
|
+
eventConsumerMetrics_1.metrics.emit('event_duration_seconds_total', { eventType: event.type, phase: 'commandStart' }, event.receivedAt.getTime() - event.dispatchedAt.getTime());
|
|
172
|
+
_a = this.consumerCallbacks[event.type] || {}, callback = _a.callback, schema = _a.schema;
|
|
173
|
+
if (!callback) {
|
|
174
|
+
eventConsumerMetrics_1.metrics.emit('event_error_total', { eventType: event.type });
|
|
175
|
+
throw new Error("Event ".concat(event.type, " received but no consumer registered"));
|
|
176
|
+
}
|
|
177
|
+
if (!this.shouldConsumeEvent({ schema: schema, event: event })) return [3 /*break*/, 6];
|
|
178
|
+
_b.label = 1;
|
|
179
|
+
case 1:
|
|
180
|
+
_b.trys.push([1, 3, 4, 5]);
|
|
181
|
+
return [4 /*yield*/, callback(event)];
|
|
182
|
+
case 2:
|
|
183
|
+
_b.sent();
|
|
184
|
+
return [3 /*break*/, 5];
|
|
185
|
+
case 3:
|
|
186
|
+
e_1 = _b.sent();
|
|
187
|
+
eventConsumerMetrics_1.metrics.emit('event_error_total', { eventType: event.type });
|
|
188
|
+
consumerLogger.error("An error occured while consuming event ".concat(event.type), { event: event, error: e_1 });
|
|
189
|
+
throw e_1;
|
|
190
|
+
case 4:
|
|
191
|
+
eventConsumerMetrics_1.metrics.emit('event_duration_seconds_total', { eventType: event.type, phase: 'processing' }, new Date().getTime() - start);
|
|
192
|
+
eventConsumerMetrics_1.metrics.emit('event_duration_seconds', { eventType: event.type }, new Date().getTime() - start);
|
|
193
|
+
return [7 /*endfinally*/];
|
|
194
|
+
case 5:
|
|
195
|
+
eventConsumerMetrics_1.metrics.emit('event_success_total', { eventType: event.type });
|
|
196
|
+
consumerLogger.info("Event ".concat(event.type, " consumed"), { event: event });
|
|
197
|
+
_b.label = 6;
|
|
198
|
+
case 6: return [2 /*return*/];
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
__decorate([
|
|
204
|
+
(0, lockedDecorator_1.locked)(LOCK_NAMESPACE, { scope: 'instance' }),
|
|
205
|
+
__metadata("design:type", Function),
|
|
206
|
+
__metadata("design:paramtypes", []),
|
|
207
|
+
__metadata("design:returntype", Promise)
|
|
208
|
+
], AmqpEventConsumer.prototype, "listen", null);
|
|
209
|
+
__decorate([
|
|
210
|
+
(0, lockedDecorator_1.locked)(LOCK_NAMESPACE, { scope: 'instance' }),
|
|
211
|
+
__metadata("design:type", Function),
|
|
212
|
+
__metadata("design:paramtypes", []),
|
|
213
|
+
__metadata("design:returntype", Promise)
|
|
214
|
+
], AmqpEventConsumer.prototype, "close", null);
|
|
215
|
+
return AmqpEventConsumer;
|
|
216
|
+
}());
|
|
217
|
+
exports.AmqpEventConsumer = AmqpEventConsumer;
|
|
218
|
+
//# sourceMappingURL=AmqpEventConsumer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AmqpEventConsumer.js","sourceRoot":"","sources":["../../../../src/AMQP/EventSourcing/EventConsumer/AmqpEventConsumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ZodObject } from 'zod';
|
|
2
|
+
import IEvent, { IEventPayload } from '../IEvent';
|
|
3
|
+
export type EventCallback<TPayload extends IEventPayload> = (event: IEvent<TPayload>) => Promise<void>;
|
|
4
|
+
export type EventOptions = {
|
|
5
|
+
schema?: ZodObject<any>;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* High level abstraction of event consumption
|
|
9
|
+
*/
|
|
10
|
+
export interface IEventConsumer {
|
|
11
|
+
/** Add a consumer for a specific event type */
|
|
12
|
+
addEventConsumer<TPayload extends IEventPayload>(eventType: string, callback: EventCallback<TPayload>, options?: EventOptions): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IEventConsumer.js","sourceRoot":"","sources":["../../../../src/AMQP/EventSourcing/EventConsumer/IEventConsumer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import IEvent, { IEventPayload } from '../IEvent';
|
|
2
|
+
import { EventCallback, IEventConsumer } from './IEventConsumer';
|
|
3
|
+
/**
|
|
4
|
+
* In-memory implementation of IEventConsumer
|
|
5
|
+
*
|
|
6
|
+
* Main use case is for testing so that the tests are not dependent on AMQP or other external services
|
|
7
|
+
*/
|
|
8
|
+
export declare class InMemoryEventConsumer implements IEventConsumer {
|
|
9
|
+
private emitter;
|
|
10
|
+
addEventConsumer<TPayload extends IEventPayload>(eventType: string, callback: EventCallback<TPayload>): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Will deliver the event to all consumers that were added via addEventConsumer
|
|
13
|
+
*/
|
|
14
|
+
emitEvent<TPayload extends IEventPayload>(event: IEvent<TPayload>): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.InMemoryEventConsumer = void 0;
|
|
40
|
+
var AsyncEventEmitter_1 = require("../../../Events/AsyncEventEmitter");
|
|
41
|
+
/**
|
|
42
|
+
* In-memory implementation of IEventConsumer
|
|
43
|
+
*
|
|
44
|
+
* Main use case is for testing so that the tests are not dependent on AMQP or other external services
|
|
45
|
+
*/
|
|
46
|
+
var InMemoryEventConsumer = /** @class */ (function () {
|
|
47
|
+
function InMemoryEventConsumer() {
|
|
48
|
+
this.emitter = new AsyncEventEmitter_1.AsyncEventEmitter();
|
|
49
|
+
}
|
|
50
|
+
InMemoryEventConsumer.prototype.addEventConsumer = function (eventType, callback) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
52
|
+
return __generator(this, function (_a) {
|
|
53
|
+
this.emitter.addListener(eventType, callback);
|
|
54
|
+
return [2 /*return*/];
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Will deliver the event to all consumers that were added via addEventConsumer
|
|
60
|
+
*/
|
|
61
|
+
InMemoryEventConsumer.prototype.emitEvent = function (event) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
63
|
+
return __generator(this, function (_a) {
|
|
64
|
+
switch (_a.label) {
|
|
65
|
+
case 0: return [4 /*yield*/, this.emitter.emit(event.type, event)];
|
|
66
|
+
case 1:
|
|
67
|
+
_a.sent();
|
|
68
|
+
return [2 /*return*/];
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
return InMemoryEventConsumer;
|
|
74
|
+
}());
|
|
75
|
+
exports.InMemoryEventConsumer = InMemoryEventConsumer;
|
|
76
|
+
//# sourceMappingURL=InMemoryEventConsumer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryEventConsumer.js","sourceRoot":"","sources":["../../../../src/AMQP/EventSourcing/EventConsumer/InMemoryEventConsumer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uEAAsE;AAItE;;;;GAIG;AACH;IAAA;QACS,YAAO,GAAsB,IAAI,qCAAiB,EAAE,CAAC;IAY9D,CAAC;IAVa,gDAAgB,GAA7B,UAA8D,SAAiB,EAAE,QAAiC;;;gBACjH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;;;;KAC9C;IAED;;OAEG;IACU,yCAAS,GAAtB,UAAuD,KAAuB;;;;4BAC7E,qBAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAA;;wBAA1C,SAA0C,CAAC;;;;;KAC3C;IACF,4BAAC;AAAD,CAAC,AAbD,IAaC;AAbY,sDAAqB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export interface IEventPayload<TType extends string = string> {
|
|
2
|
+
type: TType;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Event is a representation of a single event that happened in the system.
|
|
6
|
+
* It's a wrapper interface for a generic event payload.
|
|
7
|
+
* It contains all the necessary metadata for the event.
|
|
8
|
+
* This event is mostly used for event sourcing.
|
|
9
|
+
*/
|
|
10
|
+
interface IEvent<TPayload extends IEventPayload> {
|
|
11
|
+
/**
|
|
12
|
+
* Unique identifier of the event.
|
|
13
|
+
* In MongoDB, it is stored as `_id` and is automatically generated.
|
|
14
|
+
*/
|
|
15
|
+
id: string;
|
|
16
|
+
/**
|
|
17
|
+
* Unique identifier of the command that caused the event.
|
|
18
|
+
* You can find it in {@link import("../CQRS/ICommand").id}.
|
|
19
|
+
*/
|
|
20
|
+
commandId: string;
|
|
21
|
+
/**
|
|
22
|
+
* Type of the event.
|
|
23
|
+
* It should be always the same as {@link IEventPayload['type']}.
|
|
24
|
+
*/
|
|
25
|
+
type: string;
|
|
26
|
+
/**
|
|
27
|
+
* Identifier of the source of the event.
|
|
28
|
+
* It's usually the same as the {@link import("../CQRS/ICommand").sourceUid}.
|
|
29
|
+
* It's usually used for logging and debugging.
|
|
30
|
+
* It can be used in some cases to identify the source of the event
|
|
31
|
+
* and to check if the event was dispatched by the same source as the command.
|
|
32
|
+
*/
|
|
33
|
+
sourceUid: string;
|
|
34
|
+
/**
|
|
35
|
+
* Date when the original command was dispatched.
|
|
36
|
+
* It's the same as {@link import("../CQRS/ICommand").receivedAt}.
|
|
37
|
+
* It can differ when the event is not produced by the command.
|
|
38
|
+
*/
|
|
39
|
+
dispatchedAt: Date;
|
|
40
|
+
/**
|
|
41
|
+
* Date when the event was received (written) to event store.
|
|
42
|
+
* This date is the most important date that should be used
|
|
43
|
+
* as a replacement for the `Date.now()` function.
|
|
44
|
+
* Since event sourcing is used as a source of truth,
|
|
45
|
+
* for consistency, all dates should be based on this date.
|
|
46
|
+
*/
|
|
47
|
+
receivedAt: Date;
|
|
48
|
+
/**
|
|
49
|
+
* All events are ordered by the `receivedAt` date.
|
|
50
|
+
* However, in some cases, there are multiple events emitted with the same `receivedAt` date.
|
|
51
|
+
* It's the case where a single command emits multiple events.
|
|
52
|
+
* In this case, the `secondaryIndex` is used to order the events.
|
|
53
|
+
* So it's the important part of the ordering of the events.
|
|
54
|
+
* See also {@link import("../CQRS/commandQueue").ITimestamp}.
|
|
55
|
+
*/
|
|
56
|
+
secondaryIndex: number;
|
|
57
|
+
/**
|
|
58
|
+
* Lock keys are used to identify affected domains of the event.
|
|
59
|
+
* It's used for specifying the dependencies between the events.
|
|
60
|
+
* Only those events within the same lock key are dependent on each other.
|
|
61
|
+
* So the order of the events is guaranteed only within the same lock key.
|
|
62
|
+
* Events with different lock keys can be processed in parallel.
|
|
63
|
+
*/
|
|
64
|
+
lockKeys: string[];
|
|
65
|
+
/**
|
|
66
|
+
* The generic payload of the event.
|
|
67
|
+
* The only required field is the `type` field.
|
|
68
|
+
* The `type` field should always be the same as the `type` field of the event.
|
|
69
|
+
*/
|
|
70
|
+
payload: TPayload;
|
|
71
|
+
}
|
|
72
|
+
export default IEvent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IEvent.js","sourceRoot":"","sources":["../../../src/AMQP/EventSourcing/IEvent.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { IDeferred } from '../../../Promise/deferred';
|
|
2
|
+
/**
|
|
3
|
+
* DeferredState is a helper class for managing deferred promises for the LockedEventConsumer.
|
|
4
|
+
* It allows to manage internal map of deferred promises for each lock-key.
|
|
5
|
+
*/
|
|
6
|
+
export declare class DeferredState {
|
|
7
|
+
private deferredMap;
|
|
8
|
+
/**
|
|
9
|
+
* Create a deferred for the current lock-keys and push it to the list for subsequent promises to wait on.
|
|
10
|
+
*/
|
|
11
|
+
addDeferred(lockKeys: string[]): IDeferred<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Remove the deferred from the list for the given lock-keys.
|
|
14
|
+
* If the list becomes empty, remove it from the map (cleanup).
|
|
15
|
+
*/
|
|
16
|
+
removeDeferred(lockKeys: string[], deferred: IDeferred<void>): void;
|
|
17
|
+
/**
|
|
18
|
+
* Get a list of promises for all previously created deferred with the same lock-keys.
|
|
19
|
+
*/
|
|
20
|
+
getPreviousPromises(lockKeys: string[]): Promise<void>[];
|
|
21
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DeferredState = void 0;
|
|
7
|
+
var deferred_1 = require("../../../Promise/deferred");
|
|
8
|
+
var debug_1 = __importDefault(require("debug"));
|
|
9
|
+
var debug = (0, debug_1.default)('@signageos/lib:AMQP:EventSourcing:Locked:deferredState');
|
|
10
|
+
/**
|
|
11
|
+
* DeferredState is a helper class for managing deferred promises for the LockedEventConsumer.
|
|
12
|
+
* It allows to manage internal map of deferred promises for each lock-key.
|
|
13
|
+
*/
|
|
14
|
+
var DeferredState = /** @class */ (function () {
|
|
15
|
+
function DeferredState() {
|
|
16
|
+
this.deferredMap = new Map();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create a deferred for the current lock-keys and push it to the list for subsequent promises to wait on.
|
|
20
|
+
*/
|
|
21
|
+
DeferredState.prototype.addDeferred = function (lockKeys) {
|
|
22
|
+
var _a;
|
|
23
|
+
debug('Adding deferred for lock-keys', { lockKeys: lockKeys });
|
|
24
|
+
var currentDeferred = (0, deferred_1.createDeferred)(true);
|
|
25
|
+
for (var _i = 0, lockKeys_1 = lockKeys; _i < lockKeys_1.length; _i++) {
|
|
26
|
+
var lockKey = lockKeys_1[_i];
|
|
27
|
+
var listOfDeferred = (_a = this.deferredMap.get(lockKey)) !== null && _a !== void 0 ? _a : [];
|
|
28
|
+
this.deferredMap.set(lockKey, listOfDeferred);
|
|
29
|
+
listOfDeferred.push(currentDeferred);
|
|
30
|
+
}
|
|
31
|
+
return currentDeferred;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Remove the deferred from the list for the given lock-keys.
|
|
35
|
+
* If the list becomes empty, remove it from the map (cleanup).
|
|
36
|
+
*/
|
|
37
|
+
DeferredState.prototype.removeDeferred = function (lockKeys, deferred) {
|
|
38
|
+
var _a;
|
|
39
|
+
debug('Removing deferred for lock-keys', { lockKeys: lockKeys });
|
|
40
|
+
for (var _i = 0, lockKeys_2 = lockKeys; _i < lockKeys_2.length; _i++) {
|
|
41
|
+
var lockKey = lockKeys_2[_i];
|
|
42
|
+
var listOfDeferred = (_a = this.deferredMap.get(lockKey)) !== null && _a !== void 0 ? _a : [];
|
|
43
|
+
var index = listOfDeferred.indexOf(deferred);
|
|
44
|
+
if (index !== -1) {
|
|
45
|
+
listOfDeferred.splice(index, 1);
|
|
46
|
+
}
|
|
47
|
+
if (listOfDeferred.length === 0) {
|
|
48
|
+
this.deferredMap.delete(lockKey);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Get a list of promises for all previously created deferred with the same lock-keys.
|
|
54
|
+
*/
|
|
55
|
+
DeferredState.prototype.getPreviousPromises = function (lockKeys) {
|
|
56
|
+
var _a;
|
|
57
|
+
var promises = [];
|
|
58
|
+
for (var _i = 0, lockKeys_3 = lockKeys; _i < lockKeys_3.length; _i++) {
|
|
59
|
+
var lockKey = lockKeys_3[_i];
|
|
60
|
+
var listOfDeferred = (_a = this.deferredMap.get(lockKey)) !== null && _a !== void 0 ? _a : [];
|
|
61
|
+
for (var _b = 0, listOfDeferred_1 = listOfDeferred; _b < listOfDeferred_1.length; _b++) {
|
|
62
|
+
var deferred = listOfDeferred_1[_b];
|
|
63
|
+
promises.push(deferred.promise);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
debug('Getting previous promises for lock-keys', { lockKeys: lockKeys, count: promises.length });
|
|
67
|
+
return promises;
|
|
68
|
+
};
|
|
69
|
+
return DeferredState;
|
|
70
|
+
}());
|
|
71
|
+
exports.DeferredState = DeferredState;
|
|
72
|
+
//# sourceMappingURL=deferredState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferredState.js","sourceRoot":"","sources":["../../../../src/AMQP/EventSourcing/Locked/deferredState.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAsE;AACtE,gDAA0B;AAC1B,IAAM,KAAK,GAAG,IAAA,eAAK,EAAC,wDAAwD,CAAC,CAAC;AAE9E;;;GAGG;AACH;IAAA;QACS,gBAAW,GAAmC,IAAI,GAAG,EAA6B,CAAC;IAgD5F,CAAC;IA9CA;;OAEG;IACI,mCAAW,GAAlB,UAAmB,QAAkB;;QACpC,KAAK,CAAC,+BAA+B,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;QACrD,IAAM,eAAe,GAAG,IAAA,yBAAc,EAAO,IAAI,CAAC,CAAC;QACnD,KAAsB,UAAQ,EAAR,qBAAQ,EAAR,sBAAQ,EAAR,IAAQ,EAAE,CAAC;YAA5B,IAAM,OAAO,iBAAA;YACjB,IAAM,cAAc,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,mCAAI,EAAE,CAAC;YAC3D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAC9C,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,eAAe,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,sCAAc,GAArB,UAAsB,QAAkB,EAAE,QAAyB;;QAClE,KAAK,CAAC,iCAAiC,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;QACvD,KAAsB,UAAQ,EAAR,qBAAQ,EAAR,sBAAQ,EAAR,IAAQ,EAAE,CAAC;YAA5B,IAAM,OAAO,iBAAA;YACjB,IAAM,cAAc,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,mCAAI,EAAE,CAAC;YAC3D,IAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClB,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;QACF,CAAC;IACF,CAAC;IAED;;OAEG;IACI,2CAAmB,GAA1B,UAA2B,QAAkB;;QAC5C,IAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,KAAsB,UAAQ,EAAR,qBAAQ,EAAR,sBAAQ,EAAR,IAAQ,EAAE,CAAC;YAA5B,IAAM,OAAO,iBAAA;YACjB,IAAM,cAAc,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,mCAAI,EAAE,CAAC;YAC3D,KAAuB,UAAc,EAAd,iCAAc,EAAd,4BAAc,EAAd,IAAc,EAAE,CAAC;gBAAnC,IAAM,QAAQ,uBAAA;gBAClB,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;QACD,KAAK,CAAC,yCAAyC,EAAE,EAAE,QAAQ,UAAA,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,OAAO,QAAQ,CAAC;IACjB,CAAC;IACF,oBAAC;AAAD,CAAC,AAjDD,IAiDC;AAjDY,sCAAa"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { IAMQPConnection } from '../../amqpConnectionFactory';
|
|
2
|
+
import IEvent, { IEventPayload } from '../IEvent';
|
|
3
|
+
export interface LockedBindOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Number of events to prefetch from the main queue.
|
|
6
|
+
* This number has to greater than 0.
|
|
7
|
+
* Make sure that you have enough main prefetch count that can properly utilize the distributed prefetch count
|
|
8
|
+
* for all started consumers. The general rule is to have at least the same number of main prefetch count as the number of consumers times distributed prefetch count.
|
|
9
|
+
* In other words: `mainPrefetchCount >= numberOfConsumers * distributedPrefetchCount`
|
|
10
|
+
*/
|
|
11
|
+
mainPrefetchCount?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Number of events to prefetch from the distributed queue.
|
|
14
|
+
* This number can be 0, which means that the distributed consumption is disabled.
|
|
15
|
+
* In this case, the events are consumed directly from the main queue and the distributed queue is not used (neither created).
|
|
16
|
+
* If this number is greater than 0, the distributed consumption is enabled and the events are distributed from the main queue to the distributed queue.
|
|
17
|
+
* You can scale the number of consumers that multiply the total number of possibly concurrently processed events.
|
|
18
|
+
*/
|
|
19
|
+
distributedPrefetchCount?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Delay in milliseconds before redelivering the event in case of error.
|
|
22
|
+
* It's dead-lettered on the first error and redirected to the event_rejected queue for the specified delay.
|
|
23
|
+
*/
|
|
24
|
+
redeliverDelayMs?: number;
|
|
25
|
+
/**
|
|
26
|
+
* If true, binding is done with notification option, so the exchange is prefixed with `events_notifications-` instead of standard `events-`.
|
|
27
|
+
* @deprecated This logic is about to be removed soon. Use it temporarily only for platform-consumer-redis until it's migrated to the new logic.
|
|
28
|
+
* The new logic is based on strong consistency awaiting.
|
|
29
|
+
*/
|
|
30
|
+
legacyNotification?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Event consumer that consumes events in a locked manner with timestamp-based ordering.
|
|
34
|
+
*
|
|
35
|
+
* It ensures that only one event with the same lockKey is processed at a time.
|
|
36
|
+
* Practically, it means that events with the same lockKey are processed sequentially.
|
|
37
|
+
* However, events with different lockKeys can be processed in parallel.
|
|
38
|
+
*
|
|
39
|
+
* The consumer includes a rejection mechanism that prevents processing events out of order
|
|
40
|
+
* when temporary failures occur (e.g., MongoDB transaction failures). Failed events are
|
|
41
|
+
* sent to rejected queues (dead-letter queues) and their timestamps are tracked to ensure
|
|
42
|
+
* later events with the same lockKeys wait until earlier failed events are resolved.
|
|
43
|
+
*
|
|
44
|
+
* Internal implementation uses 2 separate queues (if distributedPrefetchCount > 0):
|
|
45
|
+
* - Main queue for distributing events to distributed queue
|
|
46
|
+
* - Distributed queue for processing events
|
|
47
|
+
*
|
|
48
|
+
* The main queue is "Single Active Consumer" and is locking the event processing based on lockKeys field of the event.
|
|
49
|
+
* So the order of events is preserved based on the lockKeys.
|
|
50
|
+
* However, the distributed queue is not locking the event processing and is processing across multiple consumers at the same time.
|
|
51
|
+
* Messages in the distributed queue are transient. In case of failure, they are not lost because the main queue is persistent
|
|
52
|
+
* and is not acked until the distributed queue acks the message.
|
|
53
|
+
*/
|
|
54
|
+
export declare class LockedEventConsumer {
|
|
55
|
+
private amqpConnection;
|
|
56
|
+
private withLock;
|
|
57
|
+
constructor(amqpConnection: IAMQPConnection);
|
|
58
|
+
bind<TPayload extends IEventPayload>(eventTypes: string[], domainName: string, consumerType: string, onEvent: (event: IEvent<TPayload>) => Promise<void>, bindOptions?: LockedBindOptions): Promise<() => Promise<() => Promise<void>>>;
|
|
59
|
+
private createMainBindOptions;
|
|
60
|
+
private createConsumeEvent;
|
|
61
|
+
private createDistributedBindOptions;
|
|
62
|
+
private createDistributeEvent;
|
|
63
|
+
}
|