node-cqrs 0.17.0 → 1.0.0-beta.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/CHANGELOG.md +583 -92
- package/LICENSE +202 -21
- package/NOTICE +15 -0
- package/README.md +429 -113
- package/dist/cjs/AbstractAggregate.js +193 -0
- package/dist/cjs/AbstractAggregate.js.map +1 -0
- package/dist/cjs/AbstractProjection.js +165 -0
- package/dist/cjs/AbstractProjection.js.map +1 -0
- package/dist/cjs/AbstractSaga.js +109 -0
- package/dist/cjs/AbstractSaga.js.map +1 -0
- package/dist/cjs/AggregateCommandHandler.js +182 -0
- package/dist/cjs/AggregateCommandHandler.js.map +1 -0
- package/dist/cjs/CommandBus.js +9 -0
- package/dist/cjs/CommandBus.js.map +1 -0
- package/dist/cjs/CqrsContainerBuilder.js +97 -0
- package/dist/cjs/CqrsContainerBuilder.js.map +1 -0
- package/dist/cjs/Event.js +19 -0
- package/dist/cjs/Event.js.map +1 -0
- package/dist/cjs/EventDispatchPipeline.js +83 -0
- package/dist/cjs/EventDispatchPipeline.js.map +1 -0
- package/dist/cjs/EventDispatcher.js +93 -0
- package/dist/cjs/EventDispatcher.js.map +1 -0
- package/dist/cjs/EventIdAugmentor.js +30 -0
- package/dist/cjs/EventIdAugmentor.js.map +1 -0
- package/dist/cjs/EventStore.js +106 -0
- package/dist/cjs/EventStore.js.map +1 -0
- package/dist/cjs/SagaEventHandler.js +153 -0
- package/dist/cjs/SagaEventHandler.js.map +1 -0
- package/dist/cjs/errors/ConcurrencyError.js +21 -0
- package/dist/cjs/errors/ConcurrencyError.js.map +1 -0
- package/dist/{infrastructure/utils → cjs/errors}/index.js +1 -2
- package/dist/cjs/errors/index.js.map +1 -0
- package/dist/cjs/in-memory/InMemoryEventStorage.js +106 -0
- package/dist/cjs/in-memory/InMemoryEventStorage.js.map +1 -0
- package/dist/cjs/in-memory/InMemoryLock.js +44 -0
- package/dist/cjs/in-memory/InMemoryLock.js.map +1 -0
- package/dist/cjs/in-memory/InMemoryMessageBus.js +93 -0
- package/dist/cjs/in-memory/InMemoryMessageBus.js.map +1 -0
- package/dist/cjs/in-memory/InMemorySnapshotStorage.js +101 -0
- package/dist/cjs/in-memory/InMemorySnapshotStorage.js.map +1 -0
- package/dist/{infrastructure → cjs/in-memory}/InMemoryView.js +26 -45
- package/dist/cjs/in-memory/InMemoryView.js.map +1 -0
- package/dist/{utils → cjs/in-memory}/index.js +5 -8
- package/dist/cjs/in-memory/index.js.map +1 -0
- package/dist/cjs/in-memory/utils/index.js +18 -0
- package/dist/cjs/in-memory/utils/index.js.map +1 -0
- package/dist/{infrastructure → cjs/in-memory}/utils/nextCycle.js +1 -1
- package/dist/cjs/in-memory/utils/nextCycle.js.map +1 -0
- package/dist/cjs/index.js +58 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/{interfaces.js → cjs/interfaces/IAggregate.js} +1 -2
- package/dist/cjs/interfaces/IAggregate.js.map +1 -0
- package/dist/cjs/interfaces/IAggregateSnapshotStorage.js +13 -0
- package/dist/cjs/interfaces/IAggregateSnapshotStorage.js.map +1 -0
- package/dist/cjs/interfaces/ICommand.js +3 -0
- package/dist/cjs/interfaces/ICommand.js.map +1 -0
- package/dist/cjs/interfaces/ICommandBus.js +3 -0
- package/dist/cjs/interfaces/ICommandBus.js.map +1 -0
- package/dist/cjs/interfaces/IContainer.js +3 -0
- package/dist/cjs/interfaces/IContainer.js.map +1 -0
- package/dist/cjs/interfaces/IDispatchPipelineProcessor.js +9 -0
- package/dist/cjs/interfaces/IDispatchPipelineProcessor.js.map +1 -0
- package/dist/cjs/interfaces/IEvent.js +10 -0
- package/dist/cjs/interfaces/IEvent.js.map +1 -0
- package/dist/cjs/interfaces/IEventBus.js +9 -0
- package/dist/cjs/interfaces/IEventBus.js.map +1 -0
- package/dist/cjs/interfaces/IEventDispatcher.js +3 -0
- package/dist/cjs/interfaces/IEventDispatcher.js.map +1 -0
- package/dist/cjs/interfaces/IEventLocker.js +15 -0
- package/dist/cjs/interfaces/IEventLocker.js.map +1 -0
- package/dist/cjs/interfaces/IEventReceptor.js +3 -0
- package/dist/cjs/interfaces/IEventReceptor.js.map +1 -0
- package/dist/cjs/interfaces/IEventSet.js +8 -0
- package/dist/cjs/interfaces/IEventSet.js.map +1 -0
- package/dist/cjs/interfaces/IEventStorageReader.js +13 -0
- package/dist/cjs/interfaces/IEventStorageReader.js.map +1 -0
- package/dist/cjs/interfaces/IEventStore.js +3 -0
- package/dist/cjs/interfaces/IEventStore.js.map +1 -0
- package/dist/cjs/interfaces/IEventStream.js +3 -0
- package/dist/cjs/interfaces/IEventStream.js.map +1 -0
- package/dist/cjs/interfaces/IIdentifierProvider.js +9 -0
- package/dist/cjs/interfaces/IIdentifierProvider.js.map +1 -0
- package/dist/cjs/interfaces/ILocker.js +9 -0
- package/dist/cjs/interfaces/ILocker.js.map +1 -0
- package/dist/cjs/interfaces/ILogger.js +3 -0
- package/dist/cjs/interfaces/ILogger.js.map +1 -0
- package/dist/cjs/interfaces/IMessage.js +10 -0
- package/dist/cjs/interfaces/IMessage.js.map +1 -0
- package/dist/cjs/interfaces/IMutableState.js +3 -0
- package/dist/cjs/interfaces/IMutableState.js.map +1 -0
- package/dist/cjs/interfaces/IObjectStorage.js +3 -0
- package/dist/cjs/interfaces/IObjectStorage.js.map +1 -0
- package/dist/cjs/interfaces/IObservable.js +11 -0
- package/dist/cjs/interfaces/IObservable.js.map +1 -0
- package/dist/cjs/interfaces/IObservableQueueProvider.js +9 -0
- package/dist/cjs/interfaces/IObservableQueueProvider.js.map +1 -0
- package/dist/cjs/interfaces/IObserver.js +3 -0
- package/dist/cjs/interfaces/IObserver.js.map +1 -0
- package/dist/cjs/interfaces/IProjection.js +3 -0
- package/dist/cjs/interfaces/IProjection.js.map +1 -0
- package/dist/cjs/interfaces/ISaga.js +3 -0
- package/dist/cjs/interfaces/ISaga.js.map +1 -0
- package/dist/cjs/interfaces/ISnapshotEvent.js +10 -0
- package/dist/cjs/interfaces/ISnapshotEvent.js.map +1 -0
- package/dist/cjs/interfaces/IViewLocker.js +21 -0
- package/dist/cjs/interfaces/IViewLocker.js.map +1 -0
- package/dist/cjs/interfaces/Identifier.js +3 -0
- package/dist/cjs/interfaces/Identifier.js.map +1 -0
- package/dist/cjs/interfaces/index.js +46 -0
- package/dist/cjs/interfaces/index.js.map +1 -0
- package/dist/cjs/interfaces/isObject.js +9 -0
- package/dist/cjs/interfaces/isObject.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/rabbitmq/IContainer.js +3 -0
- package/dist/cjs/rabbitmq/IContainer.js.map +1 -0
- package/dist/cjs/rabbitmq/RabbitMqCommandBus.js +84 -0
- package/dist/cjs/rabbitmq/RabbitMqCommandBus.js.map +1 -0
- package/dist/cjs/rabbitmq/RabbitMqEventBus.js +121 -0
- package/dist/cjs/rabbitmq/RabbitMqEventBus.js.map +1 -0
- package/dist/cjs/rabbitmq/RabbitMqGateway.js +578 -0
- package/dist/cjs/rabbitmq/RabbitMqGateway.js.map +1 -0
- package/dist/cjs/rabbitmq/index.js +21 -0
- package/dist/cjs/rabbitmq/index.js.map +1 -0
- package/dist/cjs/rabbitmq/utils/index.js +19 -0
- package/dist/cjs/rabbitmq/utils/index.js.map +1 -0
- package/dist/cjs/rabbitmq/utils/registerExitCleanup.js +28 -0
- package/dist/cjs/rabbitmq/utils/registerExitCleanup.js.map +1 -0
- package/dist/cjs/rabbitmq/utils/resolveProvider.js +9 -0
- package/dist/cjs/rabbitmq/utils/resolveProvider.js.map +1 -0
- package/dist/cjs/sqlite/AbstractSqliteAccessor.js +50 -0
- package/dist/cjs/sqlite/AbstractSqliteAccessor.js.map +1 -0
- package/dist/cjs/sqlite/AbstractSqliteObjectProjection.js +26 -0
- package/dist/cjs/sqlite/AbstractSqliteObjectProjection.js.map +1 -0
- package/dist/cjs/sqlite/AbstractSqliteView.js +50 -0
- package/dist/cjs/sqlite/AbstractSqliteView.js.map +1 -0
- package/dist/cjs/sqlite/IContainer.js +3 -0
- package/dist/cjs/sqlite/IContainer.js.map +1 -0
- package/dist/cjs/sqlite/SqliteEventLocker.js +93 -0
- package/dist/cjs/sqlite/SqliteEventLocker.js.map +1 -0
- package/dist/cjs/sqlite/SqliteObjectStorage.js +114 -0
- package/dist/cjs/sqlite/SqliteObjectStorage.js.map +1 -0
- package/dist/cjs/sqlite/SqliteObjectView.js +48 -0
- package/dist/cjs/sqlite/SqliteObjectView.js.map +1 -0
- package/dist/cjs/sqlite/SqliteProjectionDataParams.js +3 -0
- package/dist/cjs/sqlite/SqliteProjectionDataParams.js.map +1 -0
- package/dist/cjs/sqlite/SqliteViewLocker.js +119 -0
- package/dist/cjs/sqlite/SqliteViewLocker.js.map +1 -0
- package/dist/cjs/sqlite/index.js +26 -0
- package/dist/cjs/sqlite/index.js.map +1 -0
- package/dist/cjs/sqlite/queries/eventLockTableInit.js +15 -0
- package/dist/cjs/sqlite/queries/eventLockTableInit.js.map +1 -0
- package/dist/cjs/sqlite/queries/index.js +19 -0
- package/dist/cjs/sqlite/queries/index.js.map +1 -0
- package/dist/cjs/sqlite/queries/viewLockTableInit.js +14 -0
- package/dist/cjs/sqlite/queries/viewLockTableInit.js.map +1 -0
- package/dist/cjs/sqlite/utils/getEventId.js +14 -0
- package/dist/cjs/sqlite/utils/getEventId.js.map +1 -0
- package/dist/cjs/sqlite/utils/guid.js +9 -0
- package/dist/cjs/sqlite/utils/guid.js.map +1 -0
- package/dist/cjs/sqlite/utils/index.js +19 -0
- package/dist/cjs/sqlite/utils/index.js.map +1 -0
- package/dist/cjs/utils/Deferred.js.map +1 -0
- package/dist/cjs/utils/Lock.js +102 -0
- package/dist/cjs/utils/Lock.js.map +1 -0
- package/dist/cjs/utils/MapAssertable.js +30 -0
- package/dist/cjs/utils/MapAssertable.js.map +1 -0
- package/dist/cjs/utils/assert.js +88 -0
- package/dist/cjs/utils/assert.js.map +1 -0
- package/dist/cjs/utils/clone.js +13 -0
- package/dist/cjs/utils/clone.js.map +1 -0
- package/dist/cjs/utils/extractErrorDetails.js +37 -0
- package/dist/cjs/utils/extractErrorDetails.js.map +1 -0
- package/dist/cjs/utils/getClassName.js.map +1 -0
- package/dist/{utils → cjs/utils}/getHandler.js +5 -7
- package/dist/cjs/utils/getHandler.js.map +1 -0
- package/dist/{utils → cjs/utils}/getMessageHandlerNames.js +2 -10
- package/dist/cjs/utils/getMessageHandlerNames.js.map +1 -0
- package/dist/cjs/utils/index.js +31 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/isClass.js.map +1 -0
- package/dist/cjs/utils/sagaId.js +23 -0
- package/dist/cjs/utils/sagaId.js.map +1 -0
- package/dist/{utils → cjs/utils}/setupOneTimeEmitterSubscription.js +7 -8
- package/dist/cjs/utils/setupOneTimeEmitterSubscription.js.map +1 -0
- package/dist/cjs/utils/subscribe.js +43 -0
- package/dist/cjs/utils/subscribe.js.map +1 -0
- package/dist/{utils → cjs/utils}/validateHandlers.js +6 -6
- package/dist/cjs/utils/validateHandlers.js.map +1 -0
- package/dist/cjs/workers/AbstractWorkerProjection.js +56 -0
- package/dist/cjs/workers/AbstractWorkerProjection.js.map +1 -0
- package/dist/cjs/workers/WorkerProxyProjection.js +142 -0
- package/dist/cjs/workers/WorkerProxyProjection.js.map +1 -0
- package/dist/cjs/workers/index.js +20 -0
- package/dist/cjs/workers/index.js.map +1 -0
- package/dist/cjs/workers/interfaces/IProxyProjection.js +3 -0
- package/dist/cjs/workers/interfaces/IProxyProjection.js.map +1 -0
- package/dist/cjs/workers/interfaces/IWorkerProjection.js +3 -0
- package/dist/cjs/workers/interfaces/IWorkerProjection.js.map +1 -0
- package/dist/cjs/workers/interfaces/index.js +3 -0
- package/dist/cjs/workers/interfaces/index.js.map +1 -0
- package/dist/cjs/workers/protocol.js +16 -0
- package/dist/cjs/workers/protocol.js.map +1 -0
- package/dist/cjs/workers/utils/ProjectionView.js +3 -0
- package/dist/cjs/workers/utils/ProjectionView.js.map +1 -0
- package/dist/cjs/workers/utils/createWorker.js +87 -0
- package/dist/cjs/workers/utils/createWorker.js.map +1 -0
- package/dist/cjs/workers/utils/createWorkerInstance.js +59 -0
- package/dist/cjs/workers/utils/createWorkerInstance.js.map +1 -0
- package/dist/cjs/workers/utils/index.js +21 -0
- package/dist/cjs/workers/utils/index.js.map +1 -0
- package/dist/cjs/workers/utils/nodeEndpoint.js +8 -0
- package/dist/cjs/workers/utils/nodeEndpoint.js.map +1 -0
- package/dist/cjs/workers/utils/workerProxyFactory.js +21 -0
- package/dist/cjs/workers/utils/workerProxyFactory.js.map +1 -0
- package/dist/esm/AbstractAggregate.js +189 -0
- package/dist/esm/AbstractAggregate.js.map +1 -0
- package/dist/esm/AbstractProjection.js +161 -0
- package/dist/esm/AbstractProjection.js.map +1 -0
- package/dist/esm/AbstractSaga.js +105 -0
- package/dist/esm/AbstractSaga.js.map +1 -0
- package/dist/esm/AggregateCommandHandler.js +178 -0
- package/dist/esm/AggregateCommandHandler.js.map +1 -0
- package/dist/esm/CommandBus.js +5 -0
- package/dist/esm/CommandBus.js.map +1 -0
- package/dist/esm/CqrsContainerBuilder.js +93 -0
- package/dist/esm/CqrsContainerBuilder.js.map +1 -0
- package/dist/esm/Event.js +15 -0
- package/dist/esm/Event.js.map +1 -0
- package/dist/esm/EventDispatchPipeline.js +79 -0
- package/dist/esm/EventDispatchPipeline.js.map +1 -0
- package/dist/esm/EventDispatcher.js +89 -0
- package/dist/esm/EventDispatcher.js.map +1 -0
- package/dist/esm/EventIdAugmentor.js +26 -0
- package/dist/esm/EventIdAugmentor.js.map +1 -0
- package/dist/esm/EventStore.js +102 -0
- package/dist/esm/EventStore.js.map +1 -0
- package/dist/esm/SagaEventHandler.js +116 -0
- package/dist/esm/SagaEventHandler.js.map +1 -0
- package/dist/esm/errors/ConcurrencyError.js +17 -0
- package/dist/esm/errors/ConcurrencyError.js.map +1 -0
- package/dist/esm/errors/index.js +2 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/in-memory/InMemoryEventStorage.js +102 -0
- package/dist/esm/in-memory/InMemoryEventStorage.js.map +1 -0
- package/dist/esm/in-memory/InMemoryLock.js +40 -0
- package/dist/esm/in-memory/InMemoryLock.js.map +1 -0
- package/dist/esm/in-memory/InMemoryMessageBus.js +89 -0
- package/dist/esm/in-memory/InMemoryMessageBus.js.map +1 -0
- package/dist/esm/in-memory/InMemorySnapshotStorage.js +64 -0
- package/dist/esm/in-memory/InMemorySnapshotStorage.js.map +1 -0
- package/dist/esm/in-memory/InMemoryView.js +150 -0
- package/dist/esm/in-memory/InMemoryView.js.map +1 -0
- package/dist/esm/in-memory/index.js +6 -0
- package/dist/esm/in-memory/index.js.map +1 -0
- package/dist/esm/in-memory/utils/index.js +2 -0
- package/dist/esm/in-memory/utils/index.js.map +1 -0
- package/dist/esm/in-memory/utils/nextCycle.js +5 -0
- package/dist/esm/in-memory/utils/nextCycle.js.map +1 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/IAggregate.js +2 -0
- package/dist/esm/interfaces/IAggregate.js.map +1 -0
- package/dist/esm/interfaces/IAggregateSnapshotStorage.js +9 -0
- package/dist/esm/interfaces/IAggregateSnapshotStorage.js.map +1 -0
- package/dist/esm/interfaces/ICommand.js +2 -0
- package/dist/esm/interfaces/ICommand.js.map +1 -0
- package/dist/esm/interfaces/ICommandBus.js +2 -0
- package/dist/esm/interfaces/ICommandBus.js.map +1 -0
- package/dist/esm/interfaces/IContainer.js +2 -0
- package/dist/esm/interfaces/IContainer.js.map +1 -0
- package/dist/esm/interfaces/IDispatchPipelineProcessor.js +5 -0
- package/dist/esm/interfaces/IDispatchPipelineProcessor.js.map +1 -0
- package/dist/esm/interfaces/IEvent.js +6 -0
- package/dist/esm/interfaces/IEvent.js.map +1 -0
- package/dist/esm/interfaces/IEventBus.js +5 -0
- package/dist/esm/interfaces/IEventBus.js.map +1 -0
- package/dist/esm/interfaces/IEventDispatcher.js +2 -0
- package/dist/esm/interfaces/IEventDispatcher.js.map +1 -0
- package/dist/esm/interfaces/IEventLocker.js +11 -0
- package/dist/esm/interfaces/IEventLocker.js.map +1 -0
- package/dist/esm/interfaces/IEventReceptor.js +2 -0
- package/dist/esm/interfaces/IEventReceptor.js.map +1 -0
- package/dist/esm/interfaces/IEventSet.js +4 -0
- package/dist/esm/interfaces/IEventSet.js.map +1 -0
- package/dist/esm/interfaces/IEventStorageReader.js +9 -0
- package/dist/esm/interfaces/IEventStorageReader.js.map +1 -0
- package/dist/esm/interfaces/IEventStore.js +2 -0
- package/dist/esm/interfaces/IEventStore.js.map +1 -0
- package/dist/esm/interfaces/IEventStream.js +2 -0
- package/dist/esm/interfaces/IEventStream.js.map +1 -0
- package/dist/esm/interfaces/IIdentifierProvider.js +5 -0
- package/dist/esm/interfaces/IIdentifierProvider.js.map +1 -0
- package/dist/esm/interfaces/ILocker.js +5 -0
- package/dist/esm/interfaces/ILocker.js.map +1 -0
- package/dist/esm/interfaces/ILogger.js +2 -0
- package/dist/esm/interfaces/ILogger.js.map +1 -0
- package/dist/esm/interfaces/IMessage.js +6 -0
- package/dist/esm/interfaces/IMessage.js.map +1 -0
- package/dist/esm/interfaces/IMutableState.js +2 -0
- package/dist/esm/interfaces/IMutableState.js.map +1 -0
- package/dist/esm/interfaces/IObjectStorage.js +2 -0
- package/dist/esm/interfaces/IObjectStorage.js.map +1 -0
- package/dist/esm/interfaces/IObservable.js +7 -0
- package/dist/esm/interfaces/IObservable.js.map +1 -0
- package/dist/esm/interfaces/IObservableQueueProvider.js +5 -0
- package/dist/esm/interfaces/IObservableQueueProvider.js.map +1 -0
- package/dist/esm/interfaces/IObserver.js +2 -0
- package/dist/esm/interfaces/IObserver.js.map +1 -0
- package/dist/esm/interfaces/IProjection.js +2 -0
- package/dist/esm/interfaces/IProjection.js.map +1 -0
- package/dist/esm/interfaces/ISaga.js +2 -0
- package/dist/esm/interfaces/ISaga.js.map +1 -0
- package/dist/esm/interfaces/ISnapshotEvent.js +6 -0
- package/dist/esm/interfaces/ISnapshotEvent.js.map +1 -0
- package/dist/esm/interfaces/IViewLocker.js +17 -0
- package/dist/esm/interfaces/IViewLocker.js.map +1 -0
- package/dist/esm/interfaces/Identifier.js +2 -0
- package/dist/esm/interfaces/Identifier.js.map +1 -0
- package/dist/esm/interfaces/index.js +30 -0
- package/dist/esm/interfaces/index.js.map +1 -0
- package/dist/esm/interfaces/isObject.js +5 -0
- package/dist/esm/interfaces/isObject.js.map +1 -0
- package/dist/esm/rabbitmq/IContainer.js +2 -0
- package/dist/esm/rabbitmq/IContainer.js.map +1 -0
- package/dist/esm/rabbitmq/RabbitMqCommandBus.js +80 -0
- package/dist/esm/rabbitmq/RabbitMqCommandBus.js.map +1 -0
- package/dist/esm/rabbitmq/RabbitMqEventBus.js +117 -0
- package/dist/esm/rabbitmq/RabbitMqEventBus.js.map +1 -0
- package/dist/esm/rabbitmq/RabbitMqGateway.js +541 -0
- package/dist/esm/rabbitmq/RabbitMqGateway.js.map +1 -0
- package/dist/esm/rabbitmq/index.js +5 -0
- package/dist/esm/rabbitmq/index.js.map +1 -0
- package/dist/esm/rabbitmq/utils/index.js +3 -0
- package/dist/esm/rabbitmq/utils/index.js.map +1 -0
- package/dist/esm/rabbitmq/utils/registerExitCleanup.js +24 -0
- package/dist/esm/rabbitmq/utils/registerExitCleanup.js.map +1 -0
- package/dist/esm/rabbitmq/utils/resolveProvider.js +6 -0
- package/dist/esm/rabbitmq/utils/resolveProvider.js.map +1 -0
- package/dist/esm/sqlite/AbstractSqliteAccessor.js +46 -0
- package/dist/esm/sqlite/AbstractSqliteAccessor.js.map +1 -0
- package/dist/esm/sqlite/AbstractSqliteObjectProjection.js +22 -0
- package/dist/esm/sqlite/AbstractSqliteObjectProjection.js.map +1 -0
- package/dist/esm/sqlite/AbstractSqliteView.js +46 -0
- package/dist/esm/sqlite/AbstractSqliteView.js.map +1 -0
- package/dist/esm/sqlite/IContainer.js +2 -0
- package/dist/esm/sqlite/IContainer.js.map +1 -0
- package/dist/esm/sqlite/SqliteEventLocker.js +89 -0
- package/dist/esm/sqlite/SqliteEventLocker.js.map +1 -0
- package/dist/esm/sqlite/SqliteObjectStorage.js +110 -0
- package/dist/esm/sqlite/SqliteObjectStorage.js.map +1 -0
- package/dist/esm/sqlite/SqliteObjectView.js +44 -0
- package/dist/esm/sqlite/SqliteObjectView.js.map +1 -0
- package/dist/esm/sqlite/SqliteProjectionDataParams.js +2 -0
- package/dist/esm/sqlite/SqliteProjectionDataParams.js.map +1 -0
- package/dist/esm/sqlite/SqliteViewLocker.js +115 -0
- package/dist/esm/sqlite/SqliteViewLocker.js.map +1 -0
- package/dist/esm/sqlite/index.js +10 -0
- package/dist/esm/sqlite/index.js.map +1 -0
- package/dist/esm/sqlite/queries/eventLockTableInit.js +11 -0
- package/dist/esm/sqlite/queries/eventLockTableInit.js.map +1 -0
- package/dist/esm/sqlite/queries/index.js +3 -0
- package/dist/esm/sqlite/queries/index.js.map +1 -0
- package/dist/esm/sqlite/queries/viewLockTableInit.js +10 -0
- package/dist/esm/sqlite/queries/viewLockTableInit.js.map +1 -0
- package/dist/esm/sqlite/utils/getEventId.js +7 -0
- package/dist/esm/sqlite/utils/getEventId.js.map +1 -0
- package/dist/esm/sqlite/utils/guid.js +5 -0
- package/dist/esm/sqlite/utils/guid.js.map +1 -0
- package/dist/esm/sqlite/utils/index.js +3 -0
- package/dist/esm/sqlite/utils/index.js.map +1 -0
- package/dist/esm/utils/Deferred.js +34 -0
- package/dist/esm/utils/Deferred.js.map +1 -0
- package/dist/esm/utils/Lock.js +97 -0
- package/dist/esm/utils/Lock.js.map +1 -0
- package/dist/esm/utils/MapAssertable.js +26 -0
- package/dist/esm/utils/MapAssertable.js.map +1 -0
- package/dist/esm/utils/assert.js +70 -0
- package/dist/esm/utils/assert.js.map +1 -0
- package/dist/esm/utils/clone.js +10 -0
- package/dist/esm/utils/clone.js.map +1 -0
- package/dist/esm/utils/extractErrorDetails.js +33 -0
- package/dist/esm/utils/extractErrorDetails.js.map +1 -0
- package/dist/esm/utils/getClassName.js +7 -0
- package/dist/esm/utils/getClassName.js.map +1 -0
- package/dist/esm/utils/getHandler.js +15 -0
- package/dist/esm/utils/getHandler.js.map +1 -0
- package/dist/esm/utils/getMessageHandlerNames.js +27 -0
- package/dist/esm/utils/getMessageHandlerNames.js.map +1 -0
- package/dist/esm/utils/index.js +15 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/isClass.js +5 -0
- package/dist/esm/utils/isClass.js.map +1 -0
- package/dist/esm/utils/sagaId.js +18 -0
- package/dist/esm/utils/sagaId.js.map +1 -0
- package/dist/esm/utils/setupOneTimeEmitterSubscription.js +42 -0
- package/dist/esm/utils/setupOneTimeEmitterSubscription.js.map +1 -0
- package/dist/esm/utils/subscribe.js +40 -0
- package/dist/esm/utils/subscribe.js.map +1 -0
- package/dist/esm/utils/validateHandlers.js +18 -0
- package/dist/esm/utils/validateHandlers.js.map +1 -0
- package/dist/esm/workers/AbstractWorkerProjection.js +52 -0
- package/dist/esm/workers/AbstractWorkerProjection.js.map +1 -0
- package/dist/esm/workers/WorkerProxyProjection.js +105 -0
- package/dist/esm/workers/WorkerProxyProjection.js.map +1 -0
- package/dist/esm/workers/index.js +4 -0
- package/dist/esm/workers/index.js.map +1 -0
- package/dist/esm/workers/interfaces/IProxyProjection.js +2 -0
- package/dist/esm/workers/interfaces/IProxyProjection.js.map +1 -0
- package/dist/esm/workers/interfaces/IWorkerProjection.js +2 -0
- package/dist/esm/workers/interfaces/IWorkerProjection.js.map +1 -0
- package/dist/esm/workers/interfaces/index.js +2 -0
- package/dist/esm/workers/interfaces/index.js.map +1 -0
- package/dist/esm/workers/protocol.js +11 -0
- package/dist/esm/workers/protocol.js.map +1 -0
- package/dist/esm/workers/utils/ProjectionView.js +2 -0
- package/dist/esm/workers/utils/ProjectionView.js.map +1 -0
- package/dist/esm/workers/utils/createWorker.js +51 -0
- package/dist/esm/workers/utils/createWorker.js.map +1 -0
- package/dist/esm/workers/utils/createWorkerInstance.js +23 -0
- package/dist/esm/workers/utils/createWorkerInstance.js.map +1 -0
- package/dist/esm/workers/utils/index.js +5 -0
- package/dist/esm/workers/utils/index.js.map +1 -0
- package/dist/esm/workers/utils/nodeEndpoint.js +5 -0
- package/dist/esm/workers/utils/nodeEndpoint.js.map +1 -0
- package/dist/esm/workers/utils/workerProxyFactory.js +18 -0
- package/dist/esm/workers/utils/workerProxyFactory.js.map +1 -0
- package/dist/types/AbstractAggregate.d.ts +80 -0
- package/dist/types/AbstractProjection.d.ts +77 -0
- package/dist/types/AbstractSaga.d.ts +42 -0
- package/dist/types/AggregateCommandHandler.d.ts +22 -0
- package/dist/types/CommandBus.d.ts +4 -0
- package/dist/types/CqrsContainerBuilder.d.ts +21 -0
- package/dist/types/Event.d.ts +9 -0
- package/dist/types/EventDispatchPipeline.d.ts +16 -0
- package/dist/types/EventDispatcher.d.ts +39 -0
- package/dist/types/EventIdAugmentor.d.ts +12 -0
- package/dist/types/EventStore.d.ts +29 -0
- package/dist/types/SagaEventHandler.d.ts +22 -0
- package/dist/types/errors/ConcurrencyError.d.ts +9 -0
- package/dist/types/errors/index.d.ts +1 -0
- package/dist/types/in-memory/InMemoryEventStorage.d.ts +24 -0
- package/dist/types/in-memory/InMemoryLock.d.ts +23 -0
- package/dist/types/in-memory/InMemoryMessageBus.d.ts +45 -0
- package/dist/types/in-memory/InMemorySnapshotStorage.d.ts +37 -0
- package/dist/types/in-memory/InMemoryView.d.ts +53 -0
- package/dist/types/in-memory/index.d.ts +5 -0
- package/dist/types/in-memory/utils/index.d.ts +1 -0
- package/dist/types/in-memory/utils/nextCycle.d.ts +4 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/interfaces/IAggregate.d.ts +78 -0
- package/dist/types/interfaces/IAggregateSnapshotStorage.d.ts +8 -0
- package/dist/types/interfaces/ICommand.d.ts +2 -0
- package/dist/types/interfaces/ICommandBus.d.ts +15 -0
- package/dist/types/interfaces/IContainer.d.ts +37 -0
- package/dist/types/interfaces/IDispatchPipelineProcessor.d.ts +29 -0
- package/dist/types/interfaces/IEvent.d.ts +7 -0
- package/dist/types/interfaces/IEventBus.d.ts +6 -0
- package/dist/types/interfaces/IEventDispatcher.d.ts +6 -0
- package/dist/types/interfaces/IEventLocker.d.ts +28 -0
- package/dist/types/interfaces/IEventReceptor.d.ts +5 -0
- package/dist/types/interfaces/IEventSet.d.ts +3 -0
- package/dist/types/interfaces/IEventStorageReader.d.ts +48 -0
- package/dist/types/interfaces/IEventStore.d.ts +9 -0
- package/dist/types/interfaces/IEventStream.d.ts +2 -0
- package/dist/types/interfaces/IIdentifierProvider.d.ts +10 -0
- package/dist/types/interfaces/ILocker.d.ts +8 -0
- package/dist/types/interfaces/ILogger.d.ts +22 -0
- package/dist/types/interfaces/IMessage.d.ts +23 -0
- package/dist/types/interfaces/IMutableState.d.ts +14 -0
- package/dist/types/interfaces/IObjectStorage.d.ts +8 -0
- package/dist/types/interfaces/IObservable.d.ts +15 -0
- package/dist/types/interfaces/IObservableQueueProvider.d.ts +8 -0
- package/dist/types/interfaces/IObserver.d.ts +4 -0
- package/dist/types/interfaces/IProjection.d.ts +17 -0
- package/dist/types/interfaces/ISaga.d.ts +38 -0
- package/dist/types/interfaces/ISnapshotEvent.d.ts +7 -0
- package/dist/types/interfaces/IViewLocker.d.ts +34 -0
- package/dist/types/interfaces/Identifier.d.ts +1 -0
- package/dist/types/interfaces/index.d.ts +29 -0
- package/dist/types/interfaces/isObject.d.ts +1 -0
- package/dist/types/rabbitmq/IContainer.d.ts +19 -0
- package/dist/types/rabbitmq/RabbitMqCommandBus.d.ts +38 -0
- package/dist/types/rabbitmq/RabbitMqEventBus.d.ts +44 -0
- package/dist/types/rabbitmq/RabbitMqGateway.d.ts +133 -0
- package/dist/types/rabbitmq/index.d.ts +4 -0
- package/dist/types/rabbitmq/utils/index.d.ts +2 -0
- package/dist/types/rabbitmq/utils/registerExitCleanup.d.ts +10 -0
- package/dist/types/rabbitmq/utils/resolveProvider.d.ts +3 -0
- package/dist/types/sqlite/AbstractSqliteAccessor.d.ts +25 -0
- package/dist/types/sqlite/AbstractSqliteObjectProjection.d.ts +8 -0
- package/dist/types/sqlite/AbstractSqliteView.d.ts +23 -0
- package/dist/types/sqlite/IContainer.d.ts +7 -0
- package/dist/types/sqlite/SqliteEventLocker.d.ts +30 -0
- package/dist/types/sqlite/SqliteObjectStorage.d.ts +17 -0
- package/dist/types/sqlite/SqliteObjectView.d.ts +19 -0
- package/dist/types/sqlite/SqliteProjectionDataParams.d.ts +14 -0
- package/dist/types/sqlite/SqliteViewLocker.d.ts +31 -0
- package/dist/types/sqlite/index.d.ts +9 -0
- package/dist/types/sqlite/queries/eventLockTableInit.d.ts +1 -0
- package/dist/types/sqlite/queries/index.d.ts +2 -0
- package/dist/types/sqlite/queries/viewLockTableInit.d.ts +1 -0
- package/dist/types/sqlite/utils/getEventId.d.ts +5 -0
- package/dist/types/sqlite/utils/guid.d.ts +4 -0
- package/dist/types/sqlite/utils/index.d.ts +2 -0
- package/dist/types/utils/Deferred.d.ts +13 -0
- package/dist/types/utils/Lock.d.ts +30 -0
- package/dist/types/utils/MapAssertable.d.ts +11 -0
- package/dist/types/utils/assert.d.ts +20 -0
- package/dist/types/utils/clone.d.ts +1 -0
- package/dist/types/utils/extractErrorDetails.d.ts +8 -0
- package/dist/types/utils/getClassName.d.ts +4 -0
- package/dist/types/utils/getHandler.d.ts +7 -0
- package/dist/types/utils/getMessageHandlerNames.d.ts +12 -0
- package/dist/types/utils/index.d.ts +14 -0
- package/dist/types/utils/isClass.d.ts +1 -0
- package/dist/types/utils/sagaId.d.ts +6 -0
- package/dist/types/utils/setupOneTimeEmitterSubscription.d.ts +12 -0
- package/dist/types/utils/subscribe.d.ts +9 -0
- package/dist/types/utils/validateHandlers.d.ts +4 -0
- package/dist/types/workers/AbstractWorkerProjection.d.ts +25 -0
- package/dist/types/workers/WorkerProxyProjection.d.ts +25 -0
- package/dist/types/workers/index.d.ts +3 -0
- package/dist/types/workers/interfaces/IProxyProjection.d.ts +15 -0
- package/dist/types/workers/interfaces/IWorkerProjection.d.ts +19 -0
- package/dist/types/workers/interfaces/index.d.ts +2 -0
- package/dist/types/workers/protocol.d.ts +10 -0
- package/dist/types/workers/utils/ProjectionView.d.ts +2 -0
- package/dist/types/workers/utils/createWorker.d.ts +10 -0
- package/dist/types/workers/utils/createWorkerInstance.d.ts +11 -0
- package/dist/types/workers/utils/index.d.ts +5 -0
- package/dist/types/workers/utils/nodeEndpoint.d.ts +2 -0
- package/dist/types/workers/utils/workerProxyFactory.d.ts +14 -0
- package/package.json +124 -35
- package/dist/AbstractAggregate.js +0 -178
- package/dist/AbstractAggregate.js.map +0 -1
- package/dist/AbstractProjection.js +0 -121
- package/dist/AbstractProjection.js.map +0 -1
- package/dist/AbstractSaga.js +0 -99
- package/dist/AbstractSaga.js.map +0 -1
- package/dist/AggregateCommandHandler.js +0 -85
- package/dist/AggregateCommandHandler.js.map +0 -1
- package/dist/CommandBus.js +0 -77
- package/dist/CommandBus.js.map +0 -1
- package/dist/CqrsContainerBuilder.js +0 -77
- package/dist/CqrsContainerBuilder.js.map +0 -1
- package/dist/Event.js +0 -43
- package/dist/Event.js.map +0 -1
- package/dist/EventStore.js +0 -229
- package/dist/EventStore.js.map +0 -1
- package/dist/SagaEventHandler.js +0 -117
- package/dist/SagaEventHandler.js.map +0 -1
- package/dist/index.js +0 -39
- package/dist/index.js.map +0 -1
- package/dist/infrastructure/InMemoryEventStorage.js +0 -53
- package/dist/infrastructure/InMemoryEventStorage.js.map +0 -1
- package/dist/infrastructure/InMemoryLock.js +0 -68
- package/dist/infrastructure/InMemoryLock.js.map +0 -1
- package/dist/infrastructure/InMemoryMessageBus.js +0 -95
- package/dist/infrastructure/InMemoryMessageBus.js.map +0 -1
- package/dist/infrastructure/InMemorySnapshotStorage.js +0 -26
- package/dist/infrastructure/InMemorySnapshotStorage.js.map +0 -1
- package/dist/infrastructure/InMemoryView.js.map +0 -1
- package/dist/infrastructure/utils/Deferred.js.map +0 -1
- package/dist/infrastructure/utils/index.js.map +0 -1
- package/dist/infrastructure/utils/nextCycle.js.map +0 -1
- package/dist/interfaces.js.map +0 -1
- package/dist/utils/getClassName.js.map +0 -1
- package/dist/utils/getHandledMessageTypes.js +0 -18
- package/dist/utils/getHandledMessageTypes.js.map +0 -1
- package/dist/utils/getHandler.js.map +0 -1
- package/dist/utils/getMessageHandlerNames.js.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/isClass.js.map +0 -1
- package/dist/utils/setupOneTimeEmitterSubscription.js.map +0 -1
- package/dist/utils/subscribe.js +0 -39
- package/dist/utils/subscribe.js.map +0 -1
- package/dist/utils/validateHandlers.js.map +0 -1
- package/src/AbstractAggregate.ts +0 -223
- package/src/AbstractProjection.ts +0 -172
- package/src/AbstractSaga.ts +0 -118
- package/src/AggregateCommandHandler.ts +0 -129
- package/src/CommandBus.ts +0 -98
- package/src/CqrsContainerBuilder.ts +0 -120
- package/src/Event.ts +0 -43
- package/src/EventStore.ts +0 -315
- package/src/SagaEventHandler.ts +0 -161
- package/src/index.ts +0 -26
- package/src/infrastructure/InMemoryEventStorage.ts +0 -68
- package/src/infrastructure/InMemoryLock.ts +0 -73
- package/src/infrastructure/InMemoryMessageBus.ts +0 -118
- package/src/infrastructure/InMemorySnapshotStorage.ts +0 -27
- package/src/infrastructure/InMemoryView.ts +0 -221
- package/src/infrastructure/utils/Deferred.ts +0 -41
- package/src/infrastructure/utils/index.ts +0 -2
- package/src/infrastructure/utils/nextCycle.ts +0 -4
- package/src/interfaces.ts +0 -328
- package/src/utils/getClassName.ts +0 -6
- package/src/utils/getHandledMessageTypes.ts +0 -20
- package/src/utils/getHandler.ts +0 -20
- package/src/utils/getMessageHandlerNames.ts +0 -44
- package/src/utils/index.ts +0 -8
- package/src/utils/isClass.ts +0 -4
- package/src/utils/setupOneTimeEmitterSubscription.ts +0 -57
- package/src/utils/subscribe.ts +0 -51
- package/src/utils/validateHandlers.ts +0 -19
- /package/dist/{infrastructure → cjs}/utils/Deferred.js +0 -0
- /package/dist/{utils → cjs/utils}/getClassName.js +0 -0
- /package/dist/{utils → cjs/utils}/isClass.js +0 -0
package/src/interfaces.ts
DELETED
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
export type Identifier = string | number;
|
|
2
|
-
|
|
3
|
-
export interface IMessage<TPayload = any> {
|
|
4
|
-
/** Event or command type */
|
|
5
|
-
type: string;
|
|
6
|
-
|
|
7
|
-
aggregateId?: Identifier;
|
|
8
|
-
aggregateVersion?: number;
|
|
9
|
-
|
|
10
|
-
sagaId?: Identifier;
|
|
11
|
-
sagaVersion?: number;
|
|
12
|
-
|
|
13
|
-
payload?: TPayload;
|
|
14
|
-
context?: any;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export type ICommand<TPayload = any> = IMessage<TPayload>;
|
|
18
|
-
|
|
19
|
-
export type IEvent<TPayload = any> = IMessage<TPayload> & {
|
|
20
|
-
/** Unique event identifier */
|
|
21
|
-
id?: string;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* @deprecated Try to use `IEventStream` instead
|
|
26
|
-
*/
|
|
27
|
-
export type IEventSet = ReadonlyArray<Readonly<IEvent>>;
|
|
28
|
-
|
|
29
|
-
export type IEventStream = AsyncIterableIterator<Readonly<IEvent>>;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Minimum aggregate interface, as it's used by default `AggregateCommandHandler`
|
|
34
|
-
*/
|
|
35
|
-
export interface IAggregate {
|
|
36
|
-
|
|
37
|
-
/** Unique aggregate identifier */
|
|
38
|
-
readonly id: Identifier;
|
|
39
|
-
|
|
40
|
-
/** Main entry point for aggregate commands */
|
|
41
|
-
handle(command: ICommand): void | Promise<void>;
|
|
42
|
-
|
|
43
|
-
/** List of events emitted by Aggregate as a result of handling command(s) */
|
|
44
|
-
readonly changes: IEventSet;
|
|
45
|
-
|
|
46
|
-
/** An indicator if aggregate snapshot should be taken */
|
|
47
|
-
readonly shouldTakeSnapshot?: boolean;
|
|
48
|
-
|
|
49
|
-
/** Take an aggregate state snapshot and add it to the changes queue */
|
|
50
|
-
takeSnapshot(): void;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export interface IMutableAggregateState {
|
|
54
|
-
// schemaVersion?: number;
|
|
55
|
-
// constructor: IAggregateStateConstructor;
|
|
56
|
-
mutate(event: IEvent): void;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// export interface IAggregateStateConstructor extends Function {
|
|
60
|
-
// schemaVersion?: number;
|
|
61
|
-
// new(): IAggregateState;
|
|
62
|
-
// }
|
|
63
|
-
|
|
64
|
-
export type IAggregateConstructorParams<TState extends IMutableAggregateState | object | void> = {
|
|
65
|
-
/** Unique aggregate identifier */
|
|
66
|
-
id: Identifier,
|
|
67
|
-
|
|
68
|
-
/** Aggregate events, logged after latest snapshot */
|
|
69
|
-
events?: IEventSet,
|
|
70
|
-
|
|
71
|
-
/** Aggregate state instance */
|
|
72
|
-
state?: TState
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
export interface IAggregateConstructor<TState extends IMutableAggregateState | object | void> {
|
|
76
|
-
readonly handles?: string[];
|
|
77
|
-
new(options: IAggregateConstructorParams<TState>): IAggregate;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export type IAggregateFactory<TState extends IMutableAggregateState | object | void> =
|
|
81
|
-
(options: IAggregateConstructorParams<TState>) => IAggregate;
|
|
82
|
-
|
|
83
|
-
export interface ISaga {
|
|
84
|
-
/** Unique Saga ID */
|
|
85
|
-
readonly id: Identifier;
|
|
86
|
-
|
|
87
|
-
/** List of commands emitted by Saga */
|
|
88
|
-
readonly uncommittedMessages: ICommand[];
|
|
89
|
-
|
|
90
|
-
/** Main entry point for Saga events */
|
|
91
|
-
apply(event: IEvent): void | Promise<void>;
|
|
92
|
-
|
|
93
|
-
/** Reset emitted commands when they are not longer needed */
|
|
94
|
-
resetUncommittedMessages(): void;
|
|
95
|
-
|
|
96
|
-
onError?(error: Error, options: { event: IEvent, command: ICommand }): void;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
export type ISagaConstructorParams = {
|
|
100
|
-
id: Identifier,
|
|
101
|
-
events?: IEventSet
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
export type ISagaFactory = (options: ISagaConstructorParams) => ISaga;
|
|
105
|
-
|
|
106
|
-
export interface ISagaConstructor {
|
|
107
|
-
new(options: ISagaConstructorParams): ISaga;
|
|
108
|
-
|
|
109
|
-
/** List of event types that trigger new saga start */
|
|
110
|
-
readonly startsWith: string[];
|
|
111
|
-
|
|
112
|
-
/** List of events being handled by Saga */
|
|
113
|
-
readonly handles: string[];
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export interface IMessageHandler {
|
|
117
|
-
(...args: any[]): any | Promise<any>
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
export interface IObservable {
|
|
121
|
-
on(type: string, handler: IMessageHandler): void;
|
|
122
|
-
|
|
123
|
-
off(type: string, handler: IMessageHandler): void;
|
|
124
|
-
|
|
125
|
-
queue?(name: string): IObservable;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
export interface IObserver {
|
|
129
|
-
subscribe(observable: IObservable): void;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/** Commands */
|
|
133
|
-
|
|
134
|
-
export interface ICommandBus extends IObservable {
|
|
135
|
-
send(commandType: string, aggregateId: Identifier, options: { payload?: object, context?: object }):
|
|
136
|
-
Promise<IEventSet>;
|
|
137
|
-
|
|
138
|
-
sendRaw(command: ICommand):
|
|
139
|
-
Promise<IEventSet>;
|
|
140
|
-
|
|
141
|
-
on(type: string, handler: IMessageHandler): void;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
export interface ICommandHandler extends IObserver {
|
|
145
|
-
subscribe(commandBus: ICommandBus): void;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/** Events */
|
|
149
|
-
|
|
150
|
-
export type IEventQueryFilter = {
|
|
151
|
-
/** Get events emitted after this specific event */
|
|
152
|
-
afterEvent?: IEvent;
|
|
153
|
-
|
|
154
|
-
/** Get events emitted before this specific event */
|
|
155
|
-
beforeEvent?: IEvent;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export interface IEventStorage {
|
|
159
|
-
/**
|
|
160
|
-
* Create unique identifier
|
|
161
|
-
*/
|
|
162
|
-
getNewId(): Identifier | Promise<Identifier>;
|
|
163
|
-
|
|
164
|
-
commitEvents(events: IEventSet): Promise<IEventSet>;
|
|
165
|
-
|
|
166
|
-
getEvents(eventTypes?: Readonly<string[]>): IEventStream;
|
|
167
|
-
|
|
168
|
-
getAggregateEvents(aggregateId: Identifier, options?: { snapshot?: IEvent }): Promise<IEventSet>;
|
|
169
|
-
|
|
170
|
-
getSagaEvents(sagaId: Identifier, options: Pick<IEventQueryFilter, "beforeEvent">): Promise<IEventSet>;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
export interface IEventStore extends IObservable {
|
|
174
|
-
readonly snapshotsSupported?: boolean;
|
|
175
|
-
|
|
176
|
-
getNewId(): Identifier | Promise<Identifier>;
|
|
177
|
-
|
|
178
|
-
commit(events: IEventSet): Promise<IEventSet>;
|
|
179
|
-
|
|
180
|
-
getAllEvents(eventTypes?: Readonly<string[]>): IEventStream;
|
|
181
|
-
|
|
182
|
-
getAggregateEvents(aggregateId: Identifier, options?: { snapshot?: IEvent }): Promise<IEventSet>;
|
|
183
|
-
|
|
184
|
-
getSagaEvents(sagaId: Identifier, options: Pick<IEventQueryFilter, "beforeEvent">): Promise<IEventSet>;
|
|
185
|
-
|
|
186
|
-
once(messageTypes: string | string[], handler?: IMessageHandler, filter?: (e: IEvent) => boolean): Promise<IEvent>;
|
|
187
|
-
|
|
188
|
-
queue(name: string): IObservable;
|
|
189
|
-
|
|
190
|
-
registerSagaStarters(startsWith: string[] | undefined): void;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
export interface IEventReceptor extends IObserver {
|
|
194
|
-
subscribe(eventStore: IEventStore): void;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
export interface IMessageBus extends IObservable {
|
|
198
|
-
send(command: ICommand): Promise<any>;
|
|
199
|
-
publish(event: IEvent): Promise<any>;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
/** Projection */
|
|
204
|
-
|
|
205
|
-
export interface IProjection<TView extends object> extends IObserver {
|
|
206
|
-
readonly view: TView;
|
|
207
|
-
|
|
208
|
-
subscribe(eventStore: IEventStore): Promise<void>;
|
|
209
|
-
|
|
210
|
-
project(event: IEvent): Promise<void>;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
export interface IProjectionConstructor {
|
|
214
|
-
new(c?: any): IProjection<any>;
|
|
215
|
-
readonly handles?: string[];
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
// export type ProjectionViewFactoryParams = {
|
|
219
|
-
// schemaVersion: string,
|
|
220
|
-
// collectionName: string
|
|
221
|
-
// }
|
|
222
|
-
|
|
223
|
-
export interface IViewFactory<TView> {
|
|
224
|
-
(): TView;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
export interface ILockable {
|
|
228
|
-
lock(): Promise<any>;
|
|
229
|
-
unlock(): Promise<any>;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
export interface ILockableWithIndication extends ILockable {
|
|
233
|
-
locked: Readonly<boolean>;
|
|
234
|
-
once(event: 'unlocked'): Promise<void>;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
export interface IProjectionView extends ILockable {
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Indicates if view is ready for new events projecting
|
|
241
|
-
*/
|
|
242
|
-
ready: boolean;
|
|
243
|
-
|
|
244
|
-
/**
|
|
245
|
-
* Lock the view for external reads/writes
|
|
246
|
-
*/
|
|
247
|
-
lock(): Promise<boolean>;
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* Unlock external read/write operations
|
|
251
|
-
*/
|
|
252
|
-
unlock(): Promise<void>;
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Wait till the view is ready to accept new events
|
|
256
|
-
*/
|
|
257
|
-
once(eventType: "ready"): Promise<void>;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
export interface IPersistentView extends IProjectionView {
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Get last projected event
|
|
264
|
-
*/
|
|
265
|
-
getLastEvent(): Promise<IEvent | undefined>;
|
|
266
|
-
|
|
267
|
-
/**
|
|
268
|
-
* Mark event as projecting to prevent its handling by another
|
|
269
|
-
* projection instance working with the same storage.
|
|
270
|
-
*
|
|
271
|
-
* @returns False value if event is already processing or processed
|
|
272
|
-
*/
|
|
273
|
-
tryMarkAsProjecting(event: IEvent<any>): Promise<boolean>;
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
* Mark event as projected
|
|
277
|
-
*/
|
|
278
|
-
markAsProjected(event: IEvent<any>): Promise<void>;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
/** Snapshots */
|
|
283
|
-
|
|
284
|
-
type TSnapshot<TPayload = object> = {
|
|
285
|
-
/**
|
|
286
|
-
* Schema version of the data stored in `state` property.
|
|
287
|
-
* Snapshots with older schema versions must be passed thru a data migration before applying for a newer schema
|
|
288
|
-
*/
|
|
289
|
-
schemaVersion: string | number;
|
|
290
|
-
|
|
291
|
-
/**
|
|
292
|
-
* Last event that was processed before making a snapshot
|
|
293
|
-
*/
|
|
294
|
-
lastEvent: IEvent;
|
|
295
|
-
|
|
296
|
-
/**
|
|
297
|
-
* Snapshot data
|
|
298
|
-
*/
|
|
299
|
-
data: TPayload;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
interface ISnapshotStorage {
|
|
303
|
-
getSnapshot(id: Identifier): Promise<TSnapshot>;
|
|
304
|
-
saveSnapshot(id: Identifier, snapshot: TSnapshot): Promise<void>;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
type ISnapshotEvent<TPayload> = IEvent<TSnapshot<TPayload>>;
|
|
308
|
-
|
|
309
|
-
export interface IAggregateSnapshotStorage {
|
|
310
|
-
getAggregateSnapshot<TState>(aggregateId: Identifier): Promise<IEvent<TState> | undefined> | IEvent<TState> | undefined;
|
|
311
|
-
|
|
312
|
-
saveAggregateSnapshot<TState>(snapshotEvent: IEvent<TState>): Promise<void> | void;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
/** Interfaces */
|
|
317
|
-
|
|
318
|
-
export interface ILogger {
|
|
319
|
-
log(level: 'debug' | 'info' | 'warn' | 'error', message: string, meta?: { [key: string]: any }): void;
|
|
320
|
-
debug(message: string, meta?: { [key: string]: any }): void;
|
|
321
|
-
info(message: string, meta?: { [key: string]: any }): void;
|
|
322
|
-
warn(message: string, meta?: { [key: string]: any }): void;
|
|
323
|
-
error(message: string, meta?: { [key: string]: any }): void;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
export interface IExtendableLogger extends ILogger {
|
|
327
|
-
child(meta?: { [key: string]: any }): IExtendableLogger;
|
|
328
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { getMessageHandlerNames } from './getMessageHandlerNames';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Get a list of message types handled by observer
|
|
5
|
-
*/
|
|
6
|
-
export function getHandledMessageTypes(
|
|
7
|
-
observerInstanceOrClass: (object | Function) & { handles?: string[] }
|
|
8
|
-
): string[] {
|
|
9
|
-
if (!observerInstanceOrClass)
|
|
10
|
-
throw new TypeError('observerInstanceOrClass argument required');
|
|
11
|
-
|
|
12
|
-
if (observerInstanceOrClass.handles)
|
|
13
|
-
return observerInstanceOrClass.handles;
|
|
14
|
-
|
|
15
|
-
const prototype = Object.getPrototypeOf(observerInstanceOrClass);
|
|
16
|
-
if (prototype && prototype.constructor && prototype.constructor.handles)
|
|
17
|
-
return prototype.constructor.handles;
|
|
18
|
-
|
|
19
|
-
return getMessageHandlerNames(observerInstanceOrClass);
|
|
20
|
-
}
|
package/src/utils/getHandler.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { IMessageHandler } from "../interfaces";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Gets a handler for a specific message type, prefers a public (w\o _ prefix) method, if available
|
|
5
|
-
*/
|
|
6
|
-
export function getHandler(context: { [key: string]: any }, messageType: string): IMessageHandler | null {
|
|
7
|
-
if (!context || typeof context !== 'object')
|
|
8
|
-
throw new TypeError('context argument required');
|
|
9
|
-
if (typeof messageType !== 'string' || !messageType.length)
|
|
10
|
-
throw new TypeError('messageType argument must be a non-empty string');
|
|
11
|
-
|
|
12
|
-
if (messageType in context && typeof context[messageType] === 'function')
|
|
13
|
-
return context[messageType].bind(context);
|
|
14
|
-
|
|
15
|
-
const privateHandlerName = `_${messageType}`;
|
|
16
|
-
if (privateHandlerName in context && typeof context[privateHandlerName] === 'function')
|
|
17
|
-
return context[privateHandlerName].bind(context);
|
|
18
|
-
|
|
19
|
-
return null;
|
|
20
|
-
};
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
const KNOWN_METHOD_NAMES = new Set([
|
|
2
|
-
'subscribe'
|
|
3
|
-
]);
|
|
4
|
-
|
|
5
|
-
function getInheritedPropertyNames(prototype: object): string[] {
|
|
6
|
-
const parentPrototype = prototype && Object.getPrototypeOf(prototype);
|
|
7
|
-
if (!parentPrototype)
|
|
8
|
-
return [];
|
|
9
|
-
|
|
10
|
-
const propDescriptors = Object.getOwnPropertyDescriptors(parentPrototype);
|
|
11
|
-
const propNames = Object.keys(propDescriptors);
|
|
12
|
-
|
|
13
|
-
return [
|
|
14
|
-
...propNames,
|
|
15
|
-
...getInheritedPropertyNames(parentPrototype)
|
|
16
|
-
];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Get message handler names from a command/event handler class.
|
|
21
|
-
* Assumes all private method names start from underscore ("_").
|
|
22
|
-
*/
|
|
23
|
-
export function getMessageHandlerNames(observerInstanceOrClass: (object | Function)): string[] {
|
|
24
|
-
if (!observerInstanceOrClass)
|
|
25
|
-
throw new TypeError('observerInstanceOrClass argument required');
|
|
26
|
-
|
|
27
|
-
const prototype = typeof observerInstanceOrClass === 'function' ?
|
|
28
|
-
observerInstanceOrClass.prototype :
|
|
29
|
-
Object.getPrototypeOf(observerInstanceOrClass);
|
|
30
|
-
|
|
31
|
-
if (!prototype)
|
|
32
|
-
throw new TypeError('prototype cannot be resolved');
|
|
33
|
-
|
|
34
|
-
const inheritedProperties = new Set(getInheritedPropertyNames(prototype));
|
|
35
|
-
|
|
36
|
-
const propDescriptors = Object.getOwnPropertyDescriptors(prototype);
|
|
37
|
-
const propNames = Object.keys(propDescriptors);
|
|
38
|
-
|
|
39
|
-
return propNames.filter(key =>
|
|
40
|
-
!key.startsWith('_') &&
|
|
41
|
-
!inheritedProperties.has(key) &&
|
|
42
|
-
!KNOWN_METHOD_NAMES.has(key) &&
|
|
43
|
-
typeof propDescriptors[key].value === 'function');
|
|
44
|
-
}
|
package/src/utils/index.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './getClassName';
|
|
2
|
-
export * from './getHandler';
|
|
3
|
-
export * from './validateHandlers';
|
|
4
|
-
export * from './getMessageHandlerNames';
|
|
5
|
-
export * from './getHandledMessageTypes';
|
|
6
|
-
export * from './setupOneTimeEmitterSubscription';
|
|
7
|
-
export * from './subscribe';
|
|
8
|
-
export * from './isClass';
|
package/src/utils/isClass.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { IEvent, ILogger, IObservable } from "../interfaces";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Create one-time eventEmitter subscription for one or multiple events that match a filter
|
|
5
|
-
*
|
|
6
|
-
* @param {IObservable} emitter
|
|
7
|
-
* @param {string[]} messageTypes Array of event type to subscribe to
|
|
8
|
-
* @param {function(IEvent):any} [handler] Optional handler to execute for a first event received
|
|
9
|
-
* @param {function(IEvent):boolean} [filter] Optional filter to apply before executing a handler
|
|
10
|
-
* @param {ILogger} logger
|
|
11
|
-
* @return {Promise<IEvent>} Resolves to first event that passes filter
|
|
12
|
-
*/
|
|
13
|
-
export function setupOneTimeEmitterSubscription(
|
|
14
|
-
emitter: IObservable,
|
|
15
|
-
messageTypes: string[],
|
|
16
|
-
filter?: (e: IEvent) => boolean,
|
|
17
|
-
handler?: (e: IEvent) => void,
|
|
18
|
-
logger?: ILogger
|
|
19
|
-
): Promise<IEvent> {
|
|
20
|
-
if (typeof emitter !== 'object' || !emitter)
|
|
21
|
-
throw new TypeError('emitter argument must be an Object');
|
|
22
|
-
if (!Array.isArray(messageTypes) || messageTypes.some(m => !m || typeof m !== 'string'))
|
|
23
|
-
throw new TypeError('messageTypes argument must be an Array of non-empty Strings');
|
|
24
|
-
if (handler && typeof handler !== 'function')
|
|
25
|
-
throw new TypeError('handler argument, when specified, must be a Function');
|
|
26
|
-
if (filter && typeof filter !== 'function')
|
|
27
|
-
throw new TypeError('filter argument, when specified, must be a Function');
|
|
28
|
-
|
|
29
|
-
return new Promise(resolve => {
|
|
30
|
-
|
|
31
|
-
// handler will be invoked only once,
|
|
32
|
-
// even if multiple events have been emitted before subscription was destroyed
|
|
33
|
-
// https://nodejs.org/api/events.html#events_emitter_removelistener_eventname_listener
|
|
34
|
-
let handled = false;
|
|
35
|
-
|
|
36
|
-
function filteredHandler(event: IEvent) {
|
|
37
|
-
if (filter && !filter(event)) return;
|
|
38
|
-
if (handled) return;
|
|
39
|
-
handled = true;
|
|
40
|
-
|
|
41
|
-
for (const messageType of messageTypes)
|
|
42
|
-
emitter.off(messageType, filteredHandler);
|
|
43
|
-
|
|
44
|
-
logger?.debug(`'${event.type}' received, one-time subscription to '${messageTypes.join(',')}' removed`);
|
|
45
|
-
|
|
46
|
-
if (handler)
|
|
47
|
-
handler(event);
|
|
48
|
-
|
|
49
|
-
resolve(event);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
for (const messageType of messageTypes)
|
|
53
|
-
emitter.on(messageType, filteredHandler);
|
|
54
|
-
|
|
55
|
-
logger?.debug(`set up one-time ${filter ? 'filtered subscription' : 'subscription'} to '${messageTypes.join(',')}'`);
|
|
56
|
-
});
|
|
57
|
-
}
|
package/src/utils/subscribe.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { IMessageHandler, IObservable } from "../interfaces";
|
|
2
|
-
import { getHandler } from './getHandler';
|
|
3
|
-
import { getHandledMessageTypes } from './getHandledMessageTypes';
|
|
4
|
-
|
|
5
|
-
const unique = <T>(arr: T[]): T[] => [...new Set(arr)];
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Subscribe observer to observable
|
|
9
|
-
*/
|
|
10
|
-
export function subscribe(
|
|
11
|
-
observable: IObservable,
|
|
12
|
-
observer: object,
|
|
13
|
-
options: {
|
|
14
|
-
messageTypes?: string[],
|
|
15
|
-
masterHandler?: IMessageHandler,
|
|
16
|
-
queueName?: string
|
|
17
|
-
} = {}
|
|
18
|
-
) {
|
|
19
|
-
if (typeof observable !== 'object' || !observable)
|
|
20
|
-
throw new TypeError('observable argument must be an Object');
|
|
21
|
-
if (typeof observable.on !== 'function')
|
|
22
|
-
throw new TypeError('observable.on must be a Function');
|
|
23
|
-
if (typeof observer !== 'object' || !observer)
|
|
24
|
-
throw new TypeError('observer argument must be an Object');
|
|
25
|
-
|
|
26
|
-
const { masterHandler, messageTypes, queueName } = options;
|
|
27
|
-
if (masterHandler && typeof masterHandler !== 'function')
|
|
28
|
-
throw new TypeError('masterHandler parameter, when provided, must be a Function');
|
|
29
|
-
if (queueName && typeof observable.queue !== 'function')
|
|
30
|
-
throw new TypeError('observable.queue, when queueName is specified, must be a Function');
|
|
31
|
-
|
|
32
|
-
const subscribeTo = messageTypes || getHandledMessageTypes(observer);
|
|
33
|
-
if (!Array.isArray(subscribeTo))
|
|
34
|
-
throw new TypeError('either options.messageTypes, observer.handles or ObserverType.handles is required');
|
|
35
|
-
|
|
36
|
-
for (const messageType of unique(subscribeTo)) {
|
|
37
|
-
const handler = masterHandler || getHandler(observer, messageType);
|
|
38
|
-
if (!handler)
|
|
39
|
-
throw new Error(`'${messageType}' handler is not defined or not a function`);
|
|
40
|
-
|
|
41
|
-
if (queueName) {
|
|
42
|
-
if(!observable.queue)
|
|
43
|
-
throw new TypeError('Observer does not support named queues');
|
|
44
|
-
|
|
45
|
-
observable.queue(queueName).on(messageType, handler);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
observable.on(messageType, handler);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { getHandler } from './getHandler';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Ensure instance has handlers declared for all handled message types
|
|
5
|
-
*/
|
|
6
|
-
export function validateHandlers(instance: object, handlesFieldName = 'handles') {
|
|
7
|
-
if (!instance) throw new TypeError('instance argument required');
|
|
8
|
-
|
|
9
|
-
const messageTypes = Object.getPrototypeOf(instance).constructor[handlesFieldName];
|
|
10
|
-
if (messageTypes === undefined)
|
|
11
|
-
return;
|
|
12
|
-
if (!Array.isArray(messageTypes))
|
|
13
|
-
throw new TypeError('handles getter, when defined, must return an Array of Strings');
|
|
14
|
-
|
|
15
|
-
for (const type of messageTypes) {
|
|
16
|
-
if (!getHandler(instance, type))
|
|
17
|
-
throw new Error(`'${type}' handler is not defined or not a function`);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|