node-cqrs 1.0.0-rc.2 → 1.0.0-rc.20

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.
Files changed (354) hide show
  1. package/CHANGELOG.md +244 -83
  2. package/dist/AbstractAggregate.js +62 -40
  3. package/dist/AbstractAggregate.js.map +1 -1
  4. package/dist/AbstractProjection.js +64 -47
  5. package/dist/AbstractProjection.js.map +1 -1
  6. package/dist/AbstractSaga.js.map +1 -1
  7. package/dist/AggregateCommandHandler.js +44 -20
  8. package/dist/AggregateCommandHandler.js.map +1 -1
  9. package/dist/CommandBus.js +6 -10
  10. package/dist/CommandBus.js.map +1 -1
  11. package/dist/CqrsContainerBuilder.js +12 -3
  12. package/dist/CqrsContainerBuilder.js.map +1 -1
  13. package/dist/Event.js +0 -24
  14. package/dist/Event.js.map +1 -1
  15. package/dist/EventDispatchPipeline.js +81 -0
  16. package/dist/EventDispatchPipeline.js.map +1 -0
  17. package/dist/EventDispatcher.js +94 -0
  18. package/dist/EventDispatcher.js.map +1 -0
  19. package/dist/EventStore.js +63 -141
  20. package/dist/EventStore.js.map +1 -1
  21. package/dist/SagaEventHandler.js +3 -2
  22. package/dist/SagaEventHandler.js.map +1 -1
  23. package/dist/in-memory/InMemoryEventStorage.js +73 -0
  24. package/dist/in-memory/InMemoryEventStorage.js.map +1 -0
  25. package/dist/in-memory/InMemoryLock.js +40 -0
  26. package/dist/in-memory/InMemoryLock.js.map +1 -0
  27. package/dist/{infrastructure → in-memory}/InMemoryMessageBus.js +28 -27
  28. package/dist/in-memory/InMemoryMessageBus.js.map +1 -0
  29. package/dist/in-memory/InMemorySnapshotStorage.js +70 -0
  30. package/dist/in-memory/InMemorySnapshotStorage.js.map +1 -0
  31. package/dist/{infrastructure → in-memory}/InMemoryView.js +13 -9
  32. package/dist/in-memory/InMemoryView.js.map +1 -0
  33. package/dist/in-memory/index.js +22 -0
  34. package/dist/in-memory/index.js.map +1 -0
  35. package/dist/{infrastructure → in-memory}/utils/index.js +0 -1
  36. package/dist/in-memory/utils/index.js.map +1 -0
  37. package/dist/{infrastructure → in-memory}/utils/nextCycle.js +1 -1
  38. package/dist/in-memory/utils/nextCycle.js.map +1 -0
  39. package/dist/index.js +3 -8
  40. package/dist/index.js.map +1 -1
  41. package/dist/{interfaces.js → interfaces/IAggregate.js} +1 -2
  42. package/dist/interfaces/IAggregate.js.map +1 -0
  43. package/dist/interfaces/IAggregateSnapshotStorage.js +3 -0
  44. package/dist/interfaces/IAggregateSnapshotStorage.js.map +1 -0
  45. package/dist/interfaces/ICommand.js +3 -0
  46. package/dist/interfaces/ICommand.js.map +1 -0
  47. package/dist/interfaces/ICommandBus.js +3 -0
  48. package/dist/interfaces/ICommandBus.js.map +1 -0
  49. package/dist/interfaces/IContainer.js +3 -0
  50. package/dist/interfaces/IContainer.js.map +1 -0
  51. package/dist/interfaces/IDispatchPipelineProcessor.js +9 -0
  52. package/dist/interfaces/IDispatchPipelineProcessor.js.map +1 -0
  53. package/dist/interfaces/IEvent.js +10 -0
  54. package/dist/interfaces/IEvent.js.map +1 -0
  55. package/dist/interfaces/IEventBus.js +9 -0
  56. package/dist/interfaces/IEventBus.js.map +1 -0
  57. package/dist/interfaces/IEventDispatcher.js +3 -0
  58. package/dist/interfaces/IEventDispatcher.js.map +1 -0
  59. package/dist/interfaces/IEventLocker.js +10 -0
  60. package/dist/interfaces/IEventLocker.js.map +1 -0
  61. package/dist/interfaces/IEventReceptor.js +3 -0
  62. package/dist/interfaces/IEventReceptor.js.map +1 -0
  63. package/dist/interfaces/IEventSet.js +8 -0
  64. package/dist/interfaces/IEventSet.js.map +1 -0
  65. package/dist/interfaces/IEventStorageReader.js +13 -0
  66. package/dist/interfaces/IEventStorageReader.js.map +1 -0
  67. package/dist/interfaces/IEventStorageWriter.js +3 -0
  68. package/dist/interfaces/IEventStorageWriter.js.map +1 -0
  69. package/dist/interfaces/IEventStore.js +3 -0
  70. package/dist/interfaces/IEventStore.js.map +1 -0
  71. package/dist/interfaces/IEventStream.js +3 -0
  72. package/dist/interfaces/IEventStream.js.map +1 -0
  73. package/dist/interfaces/IIdentifierProvider.js +9 -0
  74. package/dist/interfaces/IIdentifierProvider.js.map +1 -0
  75. package/dist/interfaces/ILogger.js +3 -0
  76. package/dist/interfaces/ILogger.js.map +1 -0
  77. package/dist/interfaces/IMessage.js +9 -0
  78. package/dist/interfaces/IMessage.js.map +1 -0
  79. package/dist/interfaces/IMessageBus.js +3 -0
  80. package/dist/interfaces/IMessageBus.js.map +1 -0
  81. package/dist/interfaces/IObjectStorage.js +3 -0
  82. package/dist/interfaces/IObjectStorage.js.map +1 -0
  83. package/dist/interfaces/IObservable.js +11 -0
  84. package/dist/interfaces/IObservable.js.map +1 -0
  85. package/dist/interfaces/IObserver.js +3 -0
  86. package/dist/interfaces/IObserver.js.map +1 -0
  87. package/dist/interfaces/IProjection.js +3 -0
  88. package/dist/interfaces/IProjection.js.map +1 -0
  89. package/dist/interfaces/ISaga.js +3 -0
  90. package/dist/interfaces/ISaga.js.map +1 -0
  91. package/dist/interfaces/IViewLocker.js +17 -0
  92. package/dist/interfaces/IViewLocker.js.map +1 -0
  93. package/dist/interfaces/Identifier.js +3 -0
  94. package/dist/interfaces/Identifier.js.map +1 -0
  95. package/dist/interfaces/index.js +44 -0
  96. package/dist/interfaces/index.js.map +1 -0
  97. package/dist/interfaces/isObject.js +9 -0
  98. package/dist/interfaces/isObject.js.map +1 -0
  99. package/dist/rabbitmq/IContainer.js +3 -0
  100. package/dist/rabbitmq/IContainer.js.map +1 -0
  101. package/dist/rabbitmq/RabbitMqEventBus.js +89 -0
  102. package/dist/rabbitmq/RabbitMqEventBus.js.map +1 -0
  103. package/dist/rabbitmq/RabbitMqEventInjector.js +55 -0
  104. package/dist/rabbitmq/RabbitMqEventInjector.js.map +1 -0
  105. package/dist/rabbitmq/RabbitMqGateway.js +349 -0
  106. package/dist/rabbitmq/RabbitMqGateway.js.map +1 -0
  107. package/dist/rabbitmq/TerminationHandler.js +31 -0
  108. package/dist/rabbitmq/TerminationHandler.js.map +1 -0
  109. package/dist/rabbitmq/index.js +20 -0
  110. package/dist/rabbitmq/index.js.map +1 -0
  111. package/dist/sqlite/AbstractSqliteAccessor.js +50 -0
  112. package/dist/sqlite/AbstractSqliteAccessor.js.map +1 -0
  113. package/dist/sqlite/AbstractSqliteObjectProjection.js +26 -0
  114. package/dist/sqlite/AbstractSqliteObjectProjection.js.map +1 -0
  115. package/dist/sqlite/AbstractSqliteView.js +44 -0
  116. package/dist/sqlite/AbstractSqliteView.js.map +1 -0
  117. package/dist/sqlite/IContainer.js +3 -0
  118. package/dist/sqlite/IContainer.js.map +1 -0
  119. package/dist/sqlite/SqliteEventLocker.js +94 -0
  120. package/dist/sqlite/SqliteEventLocker.js.map +1 -0
  121. package/dist/sqlite/SqliteObjectStorage.js +113 -0
  122. package/dist/sqlite/SqliteObjectStorage.js.map +1 -0
  123. package/dist/sqlite/SqliteObjectView.js +46 -0
  124. package/dist/sqlite/SqliteObjectView.js.map +1 -0
  125. package/dist/sqlite/SqliteProjectionDataParams.js +3 -0
  126. package/dist/sqlite/SqliteProjectionDataParams.js.map +1 -0
  127. package/dist/sqlite/SqliteViewLocker.js +121 -0
  128. package/dist/sqlite/SqliteViewLocker.js.map +1 -0
  129. package/dist/sqlite/index.js +25 -0
  130. package/dist/sqlite/index.js.map +1 -0
  131. package/dist/sqlite/queries/eventLockTableInit.js +15 -0
  132. package/dist/sqlite/queries/eventLockTableInit.js.map +1 -0
  133. package/dist/sqlite/queries/index.js +19 -0
  134. package/dist/sqlite/queries/index.js.map +1 -0
  135. package/dist/sqlite/queries/viewLockTableInit.js +14 -0
  136. package/dist/sqlite/queries/viewLockTableInit.js.map +1 -0
  137. package/dist/sqlite/utils/getEventId.js +11 -0
  138. package/dist/sqlite/utils/getEventId.js.map +1 -0
  139. package/dist/sqlite/utils/guid.js +9 -0
  140. package/dist/sqlite/utils/guid.js.map +1 -0
  141. package/dist/sqlite/utils/index.js +19 -0
  142. package/dist/sqlite/utils/index.js.map +1 -0
  143. package/dist/tsconfig.tsbuildinfo +1 -0
  144. package/dist/utils/Deferred.js.map +1 -0
  145. package/dist/utils/Lock.js +86 -0
  146. package/dist/utils/Lock.js.map +1 -0
  147. package/dist/utils/MapAssertable.js +30 -0
  148. package/dist/utils/MapAssertable.js.map +1 -0
  149. package/dist/utils/delay.js +13 -0
  150. package/dist/utils/delay.js.map +1 -0
  151. package/dist/utils/getHandler.js +2 -3
  152. package/dist/utils/getHandler.js.map +1 -1
  153. package/dist/utils/getMessageHandlerNames.js +2 -6
  154. package/dist/utils/getMessageHandlerNames.js.map +1 -1
  155. package/dist/utils/index.js +8 -3
  156. package/dist/utils/index.js.map +1 -1
  157. package/dist/utils/iteratorToArray.js +10 -0
  158. package/dist/utils/iteratorToArray.js.map +1 -0
  159. package/dist/utils/notEmpty.js +6 -0
  160. package/dist/utils/notEmpty.js.map +1 -0
  161. package/dist/utils/setupOneTimeEmitterSubscription.js.map +1 -1
  162. package/dist/utils/subscribe.js +16 -4
  163. package/dist/utils/subscribe.js.map +1 -1
  164. package/dist/utils/validateHandlers.js.map +1 -1
  165. package/eslint.config.mjs +839 -0
  166. package/package.json +68 -30
  167. package/src/AbstractAggregate.ts +83 -56
  168. package/src/AbstractProjection.ts +107 -69
  169. package/src/AbstractSaga.ts +3 -3
  170. package/src/AggregateCommandHandler.ts +69 -46
  171. package/src/CommandBus.ts +14 -13
  172. package/src/CqrsContainerBuilder.ts +28 -29
  173. package/src/Event.ts +1 -26
  174. package/src/EventDispatchPipeline.ts +99 -0
  175. package/src/EventDispatcher.ts +126 -0
  176. package/src/EventStore.ts +93 -181
  177. package/src/SagaEventHandler.ts +7 -8
  178. package/src/in-memory/InMemoryEventStorage.ts +108 -0
  179. package/src/in-memory/InMemoryLock.ts +43 -0
  180. package/src/{infrastructure → in-memory}/InMemoryMessageBus.ts +34 -32
  181. package/src/in-memory/InMemorySnapshotStorage.ts +89 -0
  182. package/src/{infrastructure → in-memory}/InMemoryView.ts +23 -24
  183. package/src/in-memory/index.ts +5 -0
  184. package/src/{infrastructure → in-memory}/utils/index.ts +0 -1
  185. package/src/{infrastructure → in-memory}/utils/nextCycle.ts +1 -1
  186. package/src/index.ts +2 -7
  187. package/src/interfaces/IAggregate.ts +68 -0
  188. package/src/interfaces/IAggregateSnapshotStorage.ts +11 -0
  189. package/src/interfaces/ICommand.ts +3 -0
  190. package/src/interfaces/ICommandBus.ts +16 -0
  191. package/src/interfaces/IContainer.ts +33 -0
  192. package/src/interfaces/IDispatchPipelineProcessor.ts +35 -0
  193. package/src/interfaces/IEvent.ts +14 -0
  194. package/src/interfaces/IEventBus.ts +11 -0
  195. package/src/interfaces/IEventDispatcher.ts +7 -0
  196. package/src/interfaces/IEventLocker.ts +34 -0
  197. package/src/interfaces/IEventReceptor.ts +6 -0
  198. package/src/interfaces/IEventSet.ts +7 -0
  199. package/src/interfaces/IEventStorageReader.ts +44 -0
  200. package/src/interfaces/IEventStorageWriter.ts +10 -0
  201. package/src/interfaces/IEventStore.ts +13 -0
  202. package/src/interfaces/IEventStream.ts +3 -0
  203. package/src/interfaces/IIdentifierProvider.ts +17 -0
  204. package/src/interfaces/ILogger.ts +11 -0
  205. package/src/interfaces/IMessage.ts +22 -0
  206. package/src/interfaces/IMessageBus.ts +8 -0
  207. package/src/interfaces/IObjectStorage.ts +13 -0
  208. package/src/interfaces/IObservable.ts +31 -0
  209. package/src/interfaces/IObserver.ts +5 -0
  210. package/src/interfaces/IProjection.ts +20 -0
  211. package/src/interfaces/ISaga.ts +38 -0
  212. package/src/interfaces/IViewLocker.ts +46 -0
  213. package/src/interfaces/Identifier.ts +1 -0
  214. package/src/interfaces/index.ts +27 -0
  215. package/src/interfaces/isObject.ts +5 -0
  216. package/src/rabbitmq/IContainer.ts +16 -0
  217. package/src/rabbitmq/RabbitMqEventBus.ts +105 -0
  218. package/src/rabbitmq/RabbitMqEventInjector.ts +66 -0
  219. package/src/rabbitmq/RabbitMqGateway.ts +474 -0
  220. package/src/rabbitmq/TerminationHandler.ts +31 -0
  221. package/src/rabbitmq/index.ts +3 -0
  222. package/src/sqlite/AbstractSqliteAccessor.ts +58 -0
  223. package/src/sqlite/AbstractSqliteObjectProjection.ts +31 -0
  224. package/src/sqlite/AbstractSqliteView.ts +53 -0
  225. package/src/sqlite/IContainer.ts +8 -0
  226. package/src/sqlite/SqliteEventLocker.ts +137 -0
  227. package/src/sqlite/SqliteObjectStorage.ts +142 -0
  228. package/src/sqlite/SqliteObjectView.ts +58 -0
  229. package/src/sqlite/SqliteProjectionDataParams.ts +16 -0
  230. package/src/sqlite/SqliteViewLocker.ts +171 -0
  231. package/src/sqlite/index.ts +8 -0
  232. package/src/sqlite/queries/eventLockTableInit.ts +10 -0
  233. package/src/sqlite/queries/index.ts +2 -0
  234. package/src/sqlite/queries/viewLockTableInit.ts +9 -0
  235. package/src/sqlite/utils/getEventId.ts +8 -0
  236. package/src/sqlite/utils/guid.ts +4 -0
  237. package/src/sqlite/utils/index.ts +2 -0
  238. package/src/utils/Lock.ts +99 -0
  239. package/src/utils/MapAssertable.ts +30 -0
  240. package/src/utils/delay.ts +8 -0
  241. package/src/utils/getHandler.ts +4 -4
  242. package/src/utils/getMessageHandlerNames.ts +2 -8
  243. package/src/utils/index.ts +8 -3
  244. package/src/utils/iteratorToArray.ts +6 -0
  245. package/src/utils/notEmpty.ts +1 -0
  246. package/src/utils/setupOneTimeEmitterSubscription.ts +5 -3
  247. package/src/utils/subscribe.ts +20 -6
  248. package/src/utils/validateHandlers.ts +2 -1
  249. package/types/AbstractAggregate.d.ts +61 -0
  250. package/types/AbstractProjection.d.ts +60 -0
  251. package/types/AbstractSaga.d.ts +31 -0
  252. package/types/AggregateCommandHandler.d.ts +20 -0
  253. package/types/CommandBus.d.ts +27 -0
  254. package/types/CqrsContainerBuilder.d.ts +21 -0
  255. package/types/Event.d.ts +9 -0
  256. package/types/EventDispatchPipeline.d.ts +18 -0
  257. package/types/EventDispatcher.d.ts +39 -0
  258. package/types/EventStore.d.ts +34 -0
  259. package/types/SagaEventHandler.d.ts +21 -0
  260. package/types/in-memory/InMemoryEventStorage.d.ts +24 -0
  261. package/types/in-memory/InMemoryLock.d.ts +21 -0
  262. package/types/in-memory/InMemoryMessageBus.d.ts +36 -0
  263. package/types/in-memory/InMemorySnapshotStorage.d.ts +37 -0
  264. package/types/in-memory/InMemoryView.d.ts +53 -0
  265. package/types/in-memory/index.d.ts +5 -0
  266. package/types/in-memory/utils/index.d.ts +1 -0
  267. package/types/in-memory/utils/nextCycle.d.ts +4 -0
  268. package/types/index.d.ts +13 -0
  269. package/types/interfaces/IAggregate.d.ts +51 -0
  270. package/types/interfaces/IAggregateSnapshotStorage.d.ts +7 -0
  271. package/types/interfaces/ICommand.d.ts +2 -0
  272. package/types/interfaces/ICommandBus.d.ts +14 -0
  273. package/types/interfaces/IContainer.d.ts +27 -0
  274. package/types/interfaces/IDispatchPipelineProcessor.d.ts +25 -0
  275. package/types/interfaces/IEvent.d.ts +6 -0
  276. package/types/interfaces/IEventBus.d.ts +6 -0
  277. package/types/interfaces/IEventDispatcher.d.ts +6 -0
  278. package/types/interfaces/IEventLocker.d.ts +24 -0
  279. package/types/interfaces/IEventReceptor.d.ts +5 -0
  280. package/types/interfaces/IEventSet.d.ts +3 -0
  281. package/types/interfaces/IEventStorageReader.d.ts +28 -0
  282. package/types/interfaces/IEventStorageWriter.d.ts +8 -0
  283. package/types/interfaces/IEventStore.d.ts +9 -0
  284. package/types/interfaces/IEventStream.d.ts +2 -0
  285. package/types/interfaces/IIdentifierProvider.d.ts +10 -0
  286. package/types/interfaces/ILogger.d.ts +22 -0
  287. package/types/interfaces/IMessage.d.ts +12 -0
  288. package/types/interfaces/IMessageBus.d.ts +7 -0
  289. package/types/interfaces/IObjectStorage.d.ts +8 -0
  290. package/types/interfaces/IObservable.d.ts +19 -0
  291. package/types/interfaces/IObserver.d.ts +4 -0
  292. package/types/interfaces/IProjection.d.ts +17 -0
  293. package/types/interfaces/ISaga.d.ts +30 -0
  294. package/types/interfaces/IViewLocker.d.ts +34 -0
  295. package/types/interfaces/Identifier.d.ts +1 -0
  296. package/types/interfaces/index.d.ts +27 -0
  297. package/types/interfaces/isObject.d.ts +1 -0
  298. package/types/rabbitmq/IContainer.d.ts +14 -0
  299. package/types/rabbitmq/RabbitMqEventBus.d.ts +42 -0
  300. package/types/rabbitmq/RabbitMqEventInjector.d.ts +13 -0
  301. package/types/rabbitmq/RabbitMqGateway.d.ts +79 -0
  302. package/types/rabbitmq/TerminationHandler.d.ts +10 -0
  303. package/types/rabbitmq/index.d.ts +3 -0
  304. package/types/sqlite/AbstractSqliteAccessor.d.ts +25 -0
  305. package/types/sqlite/AbstractSqliteObjectProjection.d.ts +8 -0
  306. package/types/sqlite/AbstractSqliteView.d.ts +18 -0
  307. package/types/sqlite/IContainer.d.ts +7 -0
  308. package/types/sqlite/SqliteEventLocker.d.ts +28 -0
  309. package/types/sqlite/SqliteObjectStorage.d.ts +16 -0
  310. package/types/sqlite/SqliteObjectView.d.ts +16 -0
  311. package/types/sqlite/SqliteProjectionDataParams.d.ts +14 -0
  312. package/types/sqlite/SqliteViewLocker.d.ts +30 -0
  313. package/types/sqlite/index.d.ts +8 -0
  314. package/types/sqlite/queries/eventLockTableInit.d.ts +1 -0
  315. package/types/sqlite/queries/index.d.ts +2 -0
  316. package/types/sqlite/queries/viewLockTableInit.d.ts +1 -0
  317. package/types/sqlite/utils/getEventId.d.ts +5 -0
  318. package/types/sqlite/utils/guid.d.ts +4 -0
  319. package/types/sqlite/utils/index.d.ts +2 -0
  320. package/types/utils/Deferred.d.ts +13 -0
  321. package/types/utils/Lock.d.ts +22 -0
  322. package/types/utils/MapAssertable.d.ts +11 -0
  323. package/types/utils/delay.d.ts +5 -0
  324. package/types/utils/getClassName.d.ts +4 -0
  325. package/types/utils/getHandler.d.ts +7 -0
  326. package/types/utils/getMessageHandlerNames.d.ts +5 -0
  327. package/types/utils/index.d.ts +13 -0
  328. package/types/utils/isClass.d.ts +1 -0
  329. package/types/utils/iteratorToArray.d.ts +1 -0
  330. package/types/utils/notEmpty.d.ts +1 -0
  331. package/types/utils/setupOneTimeEmitterSubscription.d.ts +12 -0
  332. package/types/utils/subscribe.d.ts +13 -0
  333. package/types/utils/validateHandlers.d.ts +4 -0
  334. package/dist/infrastructure/InMemoryEventStorage.js +0 -53
  335. package/dist/infrastructure/InMemoryEventStorage.js.map +0 -1
  336. package/dist/infrastructure/InMemoryLock.js +0 -68
  337. package/dist/infrastructure/InMemoryLock.js.map +0 -1
  338. package/dist/infrastructure/InMemoryMessageBus.js.map +0 -1
  339. package/dist/infrastructure/InMemorySnapshotStorage.js +0 -26
  340. package/dist/infrastructure/InMemorySnapshotStorage.js.map +0 -1
  341. package/dist/infrastructure/InMemoryView.js.map +0 -1
  342. package/dist/infrastructure/utils/Deferred.js.map +0 -1
  343. package/dist/infrastructure/utils/index.js.map +0 -1
  344. package/dist/infrastructure/utils/nextCycle.js.map +0 -1
  345. package/dist/interfaces.js.map +0 -1
  346. package/dist/utils/getHandledMessageTypes.js +0 -18
  347. package/dist/utils/getHandledMessageTypes.js.map +0 -1
  348. package/src/infrastructure/InMemoryEventStorage.ts +0 -68
  349. package/src/infrastructure/InMemoryLock.ts +0 -73
  350. package/src/infrastructure/InMemorySnapshotStorage.ts +0 -27
  351. package/src/interfaces.ts +0 -328
  352. package/src/utils/getHandledMessageTypes.ts +0 -20
  353. /package/dist/{infrastructure/utils → utils}/Deferred.js +0 -0
  354. /package/src/{infrastructure/utils → utils}/Deferred.ts +0 -0
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventDispatcher = void 0;
4
+ const interfaces_1 = require("./interfaces");
5
+ const in_memory_1 = require("./in-memory");
6
+ const EventDispatchPipeline_1 = require("./EventDispatchPipeline");
7
+ class EventDispatcher {
8
+ /** Default pipeline name */
9
+ static DEFAULT_PIPELINE = 'default';
10
+ /** Default maximum number of parallel batches for newly created pipelines */
11
+ static DEFAULT_CONCURRENT_LIMIT = 100;
12
+ /** Default router that uses `meta.origin` as the pipeline name */
13
+ static DEFAULT_ROUTER = (_e, meta) => meta?.origin;
14
+ /**
15
+ * Event bus where dispatched messages are delivered after processing.
16
+ * If not provided in the constructor, defaults to an instance of `InMemoryMessageBus`.
17
+ */
18
+ eventBus;
19
+ /**
20
+ * Default maximum number of parallel batches for newly created pipelines.
21
+ */
22
+ concurrentLimit;
23
+ /** Router that selects a pipeline name given events and meta */
24
+ eventDispatchRouter;
25
+ #pipelines = new Map();
26
+ constructor(o) {
27
+ this.eventBus = o?.eventBus ?? new in_memory_1.InMemoryMessageBus();
28
+ this.concurrentLimit = o?.eventDispatcherConfig?.concurrentLimit ?? EventDispatcher.DEFAULT_CONCURRENT_LIMIT;
29
+ this.eventDispatchRouter = o?.eventDispatchRouter ?? EventDispatcher.DEFAULT_ROUTER;
30
+ if (o?.eventDispatchPipelines) {
31
+ // Initialize pipelines if provided
32
+ for (const [name, processors] of Object.entries(o.eventDispatchPipelines))
33
+ this.addPipeline(name, processors);
34
+ }
35
+ else if (o?.eventDispatchPipeline) {
36
+ // Single pipeline provided becomes the default pipeline
37
+ this.addPipeline(EventDispatcher.DEFAULT_PIPELINE, o.eventDispatchPipeline);
38
+ }
39
+ else {
40
+ // Ensure default pipeline exists at minimum
41
+ this.addPipeline(EventDispatcher.DEFAULT_PIPELINE, []);
42
+ }
43
+ }
44
+ /** Add or create the default pipeline processors */
45
+ addPipelineProcessors(eventDispatchPipeline, pipelineName) {
46
+ if (!Array.isArray(eventDispatchPipeline))
47
+ throw new TypeError('eventDispatchPipeline argument must be an Array');
48
+ for (const processor of eventDispatchPipeline)
49
+ this.addPipelineProcessor(processor, pipelineName);
50
+ }
51
+ /** Adds a single processor to the default pipeline */
52
+ addPipelineProcessor(preprocessor, pipelineName) {
53
+ const pipeline = this.#pipelines.get(pipelineName ?? EventDispatcher.DEFAULT_PIPELINE);
54
+ if (!pipeline)
55
+ throw new Error(`Pipeline "${pipelineName ?? EventDispatcher.DEFAULT_PIPELINE}" does not exist`);
56
+ pipeline.addProcessor(preprocessor);
57
+ }
58
+ /** Create a named pipeline with processors and optional concurrency limit */
59
+ addPipeline(name, processors = [], options) {
60
+ if (!name)
61
+ throw new TypeError('pipeline name required');
62
+ if (this.#pipelines.has(name))
63
+ throw new Error(`pipeline "${name}" already exists`);
64
+ const pipeline = new EventDispatchPipeline_1.EventDispatchPipeline(this.eventBus, options?.concurrentLimit ?? this.concurrentLimit);
65
+ for (const p of processors)
66
+ pipeline.addProcessor(p);
67
+ this.#pipelines.set(name, pipeline);
68
+ return pipeline;
69
+ }
70
+ /** Dispatch events through a routed pipeline and publish to the shared eventBus */
71
+ async dispatch(events, meta) {
72
+ if (!(0, interfaces_1.isEventSet)(events) || events.length === 0)
73
+ throw new TypeError('dispatch requires a non-empty array of events');
74
+ let resolve;
75
+ let reject;
76
+ const promise = new Promise((res, rej) => {
77
+ resolve = res;
78
+ reject = rej;
79
+ });
80
+ const envelope = {
81
+ data: events.map(event => ({ event, ...meta })),
82
+ resolve,
83
+ reject
84
+ };
85
+ const desired = this.eventDispatchRouter?.(events, meta) ?? EventDispatcher.DEFAULT_PIPELINE;
86
+ const pipeline = this.#pipelines.get(desired) ?? this.#pipelines.get(EventDispatcher.DEFAULT_PIPELINE);
87
+ if (!pipeline)
88
+ throw new Error(`No "${desired}" pipeline configured`);
89
+ pipeline.push(envelope);
90
+ return promise;
91
+ }
92
+ }
93
+ exports.EventDispatcher = EventDispatcher;
94
+ //# sourceMappingURL=EventDispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventDispatcher.js","sourceRoot":"","sources":["../src/EventDispatcher.ts"],"names":[],"mappings":"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"}
@@ -1,82 +1,67 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventStore = void 0;
4
+ const interfaces_1 = require("./interfaces");
4
5
  const utils_1 = require("./utils");
5
- const Event = require("./Event");
6
- const isIEventStorage = (storage) => storage
7
- && typeof storage.getNewId === 'function'
8
- && typeof storage.commitEvents === 'function'
9
- && typeof storage.getEvents === 'function'
10
- && typeof storage.getAggregateEvents === 'function'
11
- && typeof storage.getSagaEvents === 'function';
12
- const isIObservable = (obj) => obj
13
- && typeof obj.on === 'function'
14
- && typeof obj.off === 'function';
15
- const isIMessageBus = (bus) => bus
16
- && isIObservable(bus)
17
- && typeof bus.send === 'function'
18
- && typeof bus.publish === 'function';
19
- const SNAPSHOT_EVENT_TYPE = 'snapshot';
6
+ const EventDispatcher_1 = require("./EventDispatcher");
20
7
  class EventStore {
21
- #publishAsync;
22
- #validator;
23
- #logger;
24
- #storage;
25
- #messageBus;
8
+ #identifierProvider;
9
+ #eventStorageReader;
26
10
  #snapshotStorage;
27
- #sagaStarters = [];
28
- /** Whether storage supports aggregate snapshots */
29
- get snapshotsSupported() {
30
- return Boolean(this.#snapshotStorage);
31
- }
32
- constructor({ storage, messageBus, snapshotStorage, eventValidator = Event.validate, eventStoreConfig, logger }) {
33
- if (!storage)
34
- throw new TypeError('storage argument required');
35
- if (!isIEventStorage(storage))
11
+ eventBus;
12
+ #eventDispatcher;
13
+ #sagaStarters = new Set();
14
+ #logger;
15
+ constructor({ eventStorageReader, identifierProvider = (0, interfaces_1.isIdentifierProvider)(eventStorageReader) ? eventStorageReader : undefined, snapshotStorage, eventBus, eventDispatcher, logger }) {
16
+ if (!eventStorageReader)
17
+ throw new TypeError('eventStorageReader argument required');
18
+ if (!identifierProvider)
19
+ throw new TypeError('identifierProvider argument required');
20
+ if (!(0, interfaces_1.isIEventStorageReader)(eventStorageReader))
36
21
  throw new TypeError('storage does not implement IEventStorage interface');
37
- if (!isIMessageBus(messageBus))
38
- throw new TypeError('messageBus does not implement IMessageBus interface');
39
- this.#publishAsync = eventStoreConfig?.publishAsync ?? true;
40
- this.#validator = eventValidator;
22
+ if (eventBus && !(0, interfaces_1.isIEventBus)(eventBus))
23
+ throw new TypeError('eventBus does not implement IMessageBus interface');
24
+ this.#eventStorageReader = eventStorageReader;
25
+ this.#identifierProvider = identifierProvider;
26
+ this.#snapshotStorage = snapshotStorage;
27
+ this.#eventDispatcher = eventDispatcher ?? new EventDispatcher_1.EventDispatcher({ eventBus });
28
+ this.eventBus = eventBus ?? this.#eventDispatcher.eventBus;
41
29
  this.#logger = logger && 'child' in logger ?
42
30
  logger.child({ service: (0, utils_1.getClassName)(this) }) :
43
31
  logger;
44
- this.#storage = storage;
45
- this.#snapshotStorage = snapshotStorage;
46
- this.#messageBus = messageBus;
47
32
  }
48
- /** Retrieve new ID from the storage */
33
+ /**
34
+ * Generates and returns a new unique identifier using the configured identifier provider.
35
+ *
36
+ * @returns A promise resolving to a unique identifier suitable for aggregates, sagas, and events.
37
+ */
49
38
  async getNewId() {
50
- return this.#storage.getNewId();
39
+ return this.#identifierProvider.getNewId();
51
40
  }
52
- /** Retrieve all events of specific types */
53
- async *getAllEvents(eventTypes) {
54
- if (eventTypes && !Array.isArray(eventTypes))
55
- throw new TypeError('eventTypes, if specified, must be an Array');
56
- this.#logger?.debug(`retrieving ${eventTypes ? eventTypes.join(', ') : 'all'} events...`);
57
- const eventsIterable = await this.#storage.getEvents(eventTypes);
41
+ async *getEventsByTypes(eventTypes, options) {
42
+ if (!Array.isArray(eventTypes))
43
+ throw new TypeError('eventTypes argument must be an Array');
44
+ this.#logger?.debug(`retrieving ${eventTypes.join(', ')} events...`);
45
+ const eventsIterable = await this.#eventStorageReader.getEventsByTypes(eventTypes, options);
58
46
  yield* eventsIterable;
59
- this.#logger?.debug(`${eventTypes ? eventTypes.join(', ') : 'all'} events retrieved`);
47
+ this.#logger?.debug(`${eventTypes.join(', ')} events retrieved`);
60
48
  }
61
49
  /** Retrieve all events of specific Aggregate */
62
- async getAggregateEvents(aggregateId) {
50
+ async *getAggregateEvents(aggregateId) {
63
51
  if (!aggregateId)
64
52
  throw new TypeError('aggregateId argument required');
65
53
  this.#logger?.debug(`retrieving event stream for aggregate ${aggregateId}...`);
66
54
  const snapshot = this.#snapshotStorage ?
67
55
  await this.#snapshotStorage.getAggregateSnapshot(aggregateId) :
68
56
  undefined;
69
- const events = [];
70
57
  if (snapshot)
71
- events.push(snapshot);
72
- const eventsIterable = await this.#storage.getAggregateEvents(aggregateId, { snapshot });
73
- for await (const event of eventsIterable)
74
- events.push(event);
75
- this.#logger?.debug(`${Event.describeMultiple(events)} retrieved`);
76
- return events;
58
+ yield snapshot;
59
+ const eventsIterable = await this.#eventStorageReader.getAggregateEvents(aggregateId, { snapshot });
60
+ yield* eventsIterable;
61
+ this.#logger?.debug(`all events for aggregate ${aggregateId} retrieved`);
77
62
  }
78
63
  /** Retrieve events of specific Saga */
79
- async getSagaEvents(sagaId, filter) {
64
+ async *getSagaEvents(sagaId, filter) {
80
65
  if (!sagaId)
81
66
  throw new TypeError('sagaId argument required');
82
67
  if (!filter)
@@ -86,46 +71,39 @@ class EventStore {
86
71
  if (filter.beforeEvent.sagaVersion === undefined)
87
72
  throw new TypeError('filter.beforeEvent.sagaVersion argument required');
88
73
  this.#logger?.debug(`retrieving event stream for saga ${sagaId}, v${filter.beforeEvent.sagaVersion}...`);
89
- const events = [];
90
- const eventsIterable = await this.#storage.getSagaEvents(sagaId, filter);
91
- for await (const event of eventsIterable)
92
- events.push(event);
93
- this.#logger?.debug(`${Event.describeMultiple(events)} retrieved`);
94
- return events;
74
+ const eventsIterable = await this.#eventStorageReader.getSagaEvents(sagaId, filter);
75
+ yield* eventsIterable;
76
+ this.#logger?.debug(`all events for saga ${sagaId} retrieved`);
95
77
  }
96
78
  /**
97
79
  * Register event types that start sagas.
98
80
  * Upon such event commit a new sagaId will be assigned
99
81
  */
100
82
  registerSagaStarters(eventTypes = []) {
101
- const uniqueEventTypes = eventTypes.filter(e => !this.#sagaStarters.includes(e));
102
- this.#sagaStarters.push(...uniqueEventTypes);
83
+ for (const eventType of eventTypes)
84
+ this.#sagaStarters.add(eventType);
103
85
  }
104
86
  /**
105
87
  * Validate events, commit to storage and publish to messageBus, if needed
106
88
  *
107
- * @param {IEventSet} events - a set of events to commit
108
- * @returns {Promise<IEventSet>} - resolves to signed and committed events
89
+ * @param events - a set of events to commit
90
+ * @returns Signed and committed events
109
91
  */
110
- async commit(events) {
111
- if (!Array.isArray(events))
112
- throw new TypeError('events argument must be an Array');
113
- const containsSagaStarters = this.#sagaStarters.length && events.some(e => this.#sagaStarters.includes(e.type));
114
- const augmentedEvents = containsSagaStarters ?
115
- await this.#attachSagaIdToSagaStarterEvents(events) :
116
- events;
117
- const eventStreamWithoutSnapshots = await this.save(augmentedEvents);
118
- // after events are saved to the persistent storage,
119
- // publish them to the event bus (i.e. RabbitMq)
120
- if (this.#messageBus)
121
- await this.publish(eventStreamWithoutSnapshots);
122
- return eventStreamWithoutSnapshots;
92
+ async dispatch(events) {
93
+ if (!(0, interfaces_1.isEventSet)(events) || events.length === 0)
94
+ throw new TypeError('dispatch requires a non-empty array of events');
95
+ const augmentedEvents = await this.#attachSagaIdToSagaStarterEvents(events);
96
+ return this.#eventDispatcher.dispatch(augmentedEvents, { origin: 'internal' });
123
97
  }
124
- /** Generate and attach sagaId to events that start new sagas */
98
+ /**
99
+ * Generate and attach sagaId to events that start new sagas
100
+ */
125
101
  async #attachSagaIdToSagaStarterEvents(events) {
102
+ if (!this.#sagaStarters.size)
103
+ return events;
126
104
  const augmentedEvents = [];
127
105
  for (const event of events) {
128
- if (this.#sagaStarters.includes(event.type)) {
106
+ if (this.#sagaStarters.has(event.type)) {
129
107
  if (event.sagaId)
130
108
  throw new Error(`Event "${event.type}" already contains sagaId. Multiple sagas with same event type are not supported`);
131
109
  event.sagaId = await this.getNewId();
@@ -138,77 +116,21 @@ class EventStore {
138
116
  }
139
117
  return augmentedEvents;
140
118
  }
141
- /** Save events to the persistent storage(s) */
142
- async save(events) {
143
- if (!Array.isArray(events))
144
- throw new TypeError('events argument must be an Array');
145
- const snapshotEvents = events.filter(e => e.type === SNAPSHOT_EVENT_TYPE);
146
- if (snapshotEvents.length > 1)
147
- throw new Error(`cannot commit a stream with more than 1 ${SNAPSHOT_EVENT_TYPE} event`);
148
- if (snapshotEvents.length && !this.snapshotsSupported)
149
- throw new Error(`${SNAPSHOT_EVENT_TYPE} event type is not supported by the storage`);
150
- const snapshot = snapshotEvents[0];
151
- const eventsWithoutSnapshot = events.filter(e => e !== snapshot);
152
- this.#logger?.debug(`validating ${Event.describeMultiple(eventsWithoutSnapshot)}...`);
153
- eventsWithoutSnapshot.forEach(this.#validator);
154
- this.#logger?.debug(`saving ${Event.describeMultiple(eventsWithoutSnapshot)}...`);
155
- await Promise.all([
156
- this.#storage.commitEvents(eventsWithoutSnapshot),
157
- snapshot ?
158
- this.#snapshotStorage?.saveAggregateSnapshot(snapshot) :
159
- undefined
160
- ]);
161
- return eventsWithoutSnapshot;
162
- }
163
- /**
164
- * After events are
165
- */
166
- async publish(events) {
167
- if (this.#publishAsync) {
168
- this.#logger?.debug(`publishing ${Event.describeMultiple(events)} asynchronously...`);
169
- setImmediate(() => this.#publishEvents(events));
170
- }
171
- else {
172
- this.#logger?.debug(`publishing ${Event.describeMultiple(events)} synchronously...`);
173
- await this.#publishEvents(events);
174
- }
175
- }
176
- async #publishEvents(events) {
177
- try {
178
- await Promise.all(events.map(event => this.#messageBus.publish(event)));
179
- this.#logger?.debug(`${Event.describeMultiple(events)} published`);
180
- }
181
- catch (error) {
182
- this.#logger?.error(`${Event.describeMultiple(events)} publishing failed: ${error.message}`, {
183
- stack: error.stack
184
- });
185
- throw error;
186
- }
187
- }
188
- /** Setup a listener for a specific event type */
189
119
  on(messageType, handler) {
190
- if (typeof messageType !== 'string' || !messageType.length)
191
- throw new TypeError('messageType argument must be a non-empty String');
192
- if (typeof handler !== 'function')
193
- throw new TypeError('handler argument must be a Function');
194
- if (arguments.length !== 2)
195
- throw new TypeError(`2 arguments are expected, but ${arguments.length} received`);
196
- this.#messageBus.on(messageType, handler);
120
+ this.eventBus.on(messageType, handler);
197
121
  }
198
- /** Remove previously installed listener */
199
122
  off(messageType, handler) {
200
- this.#messageBus.off(messageType, handler);
123
+ this.eventBus.off(messageType, handler);
201
124
  }
202
- /** Get or create a named queue, which delivers events to a single handler only */
203
125
  queue(name) {
204
- if (typeof this.#messageBus.queue !== 'function')
205
- throw new Error('Named queues are not supported by the underlying message bus');
206
- return this.#messageBus.queue(name);
126
+ if (!this.eventBus.queue)
127
+ throw new Error('Injected eventBus does not support named queues');
128
+ return this.eventBus.queue(name);
207
129
  }
208
130
  /** Creates one-time subscription for one or multiple events that match a filter */
209
131
  once(messageTypes, handler, filter) {
210
132
  const subscribeTo = Array.isArray(messageTypes) ? messageTypes : [messageTypes];
211
- return (0, utils_1.setupOneTimeEmitterSubscription)(this.#messageBus, subscribeTo, filter, handler, this.#logger);
133
+ return (0, utils_1.setupOneTimeEmitterSubscription)(this.eventBus, subscribeTo, filter, handler, this.#logger);
212
134
  }
213
135
  }
214
136
  exports.EventStore = EventStore;
@@ -1 +1 @@
1
- {"version":3,"file":"EventStore.js","sourceRoot":"","sources":["../src/EventStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventStore.js","sourceRoot":"","sources":["../src/EventStore.ts"],"names":[],"mappings":"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"}
@@ -54,7 +54,7 @@ class SagaEventHandler {
54
54
  subscribe(eventStore) {
55
55
  (0, utils_1.subscribe)(eventStore, this, {
56
56
  messageTypes: [...this.#startsWith, ...this.#handles],
57
- masterHandler: e => this.handle(e),
57
+ masterHandler: this.handle,
58
58
  queueName: this.#queueName
59
59
  });
60
60
  }
@@ -107,7 +107,8 @@ class SagaEventHandler {
107
107
  async #restoreSaga(event) {
108
108
  if (!event.sagaId)
109
109
  throw new TypeError(`${Event.describe(event)} does not contain sagaId`);
110
- const events = await this.#eventStore.getSagaEvents(event.sagaId, { beforeEvent: event });
110
+ const eventsIterable = this.#eventStore.getSagaEvents(event.sagaId, { beforeEvent: event });
111
+ const events = await (0, utils_1.iteratorToArray)(eventsIterable);
111
112
  const saga = this.#sagaFactory.call(null, { id: event.sagaId, events });
112
113
  this.#logger?.info(`Saga state restored from ${events.length} event(s)`);
113
114
  return saga;
@@ -1 +1 @@
1
- {"version":3,"file":"SagaEventHandler.js","sourceRoot":"","sources":["../src/SagaEventHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SagaEventHandler.js","sourceRoot":"","sources":["../src/SagaEventHandler.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAcjC,mCAIiB;AAEjB;;;;;GAKG;AACH,MAAa,gBAAgB;IAE5B,WAAW,CAAc;IACzB,WAAW,CAAc;IACzB,UAAU,CAAU;IACpB,OAAO,CAAW;IAClB,YAAY,CAAyB;IACrC,WAAW,CAAW;IACtB,QAAQ,CAAW;IAEnB,YAAY,OAMX;QACA,IAAI,CAAC,OAAO;YACX,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,UAAU;YACtB,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,UAAU;YACtB,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QAE7D,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,MAAM,CAAC;QAEhB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAA4B,CAAC;YAEtD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC;QAClC,CAAC;aACI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;gBACrC,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;gBAClC,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;YAElE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;YACxC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;YACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,CAAC;aACI,CAAC;YACL,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED,0CAA0C;IAC1C,SAAS,CAAC,UAAuB;QAChC,IAAA,iBAAS,EAAC,UAAU,EAAE,IAAI,EAAE;YAC3B,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YACrD,aAAa,EAAE,IAAI,CAAC,MAAM;YAC1B,SAAS,EAAE,IAAI,CAAC,UAAU;SAC1B,CAAC,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,MAAM,CAAC,KAAa;QACzB,IAAI,CAAC,KAAK;YACT,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,IAAI;YACd,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAErD,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,kBAAkB,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1B,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEhC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,YAAY,OAAO;YACvB,MAAM,CAAC,CAAC;QAET,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEtC,+DAA+D;QAC/D,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM;YAClC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAW,EAAE,KAAkB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC1C,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,aAAa,WAAW,CAAC,CAAC;QAE9H,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAEhC,2CAA2C;YAC3C,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;gBAC/D,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAEjC,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,GAAQ,EAAE,CAAC;gBACjB,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBACxC,+BAA+B;oBAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBACvC,CAAC;qBACI,CAAC;oBACL,MAAM,GAAG,CAAC;gBACX,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,qBAAqB;IACrB,KAAK,CAAC,WAAW;QAChB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,oCAAoC;IACpC,KAAK,CAAC,YAAY,CAAC,KAAa;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM;YAChB,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAEzE,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAe,EAAC,cAAc,CAAC,CAAC;QAErD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,4BAA4B,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;QAEzE,OAAO,IAAI,CAAC;IACb,CAAC;CACD;AArID,4CAqIC"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemoryEventStorage = void 0;
4
+ const utils_1 = require("./utils");
5
+ /**
6
+ * A simple event storage implementation intended to use for tests only.
7
+ * Storage content resets on each app restart.
8
+ */
9
+ class InMemoryEventStorage {
10
+ #nextId = 0;
11
+ #events = [];
12
+ getNewId() {
13
+ this.#nextId += 1;
14
+ return String(this.#nextId);
15
+ }
16
+ async commitEvents(events) {
17
+ await (0, utils_1.nextCycle)();
18
+ this.#events = this.#events.concat(events);
19
+ await (0, utils_1.nextCycle)();
20
+ return events;
21
+ }
22
+ async *getAggregateEvents(aggregateId, options) {
23
+ await (0, utils_1.nextCycle)();
24
+ const afterVersion = options?.snapshot?.aggregateVersion;
25
+ const results = !afterVersion ?
26
+ this.#events.filter(e => e.aggregateId === aggregateId) :
27
+ this.#events.filter(e => e.aggregateId === aggregateId &&
28
+ e.aggregateVersion !== undefined &&
29
+ e.aggregateVersion > afterVersion);
30
+ await (0, utils_1.nextCycle)();
31
+ yield* results;
32
+ }
33
+ async *getSagaEvents(sagaId, { beforeEvent }) {
34
+ await (0, utils_1.nextCycle)();
35
+ const results = this.#events.filter(e => e.sagaId === sagaId &&
36
+ e.sagaVersion !== undefined &&
37
+ beforeEvent.sagaVersion !== undefined &&
38
+ e.sagaVersion < beforeEvent.sagaVersion);
39
+ await (0, utils_1.nextCycle)();
40
+ yield* results;
41
+ }
42
+ async *getEventsByTypes(eventTypes, options) {
43
+ await (0, utils_1.nextCycle)();
44
+ const lastEventId = options?.afterEvent?.id;
45
+ if (options?.afterEvent && !lastEventId)
46
+ throw new TypeError('options.afterEvent.id is required');
47
+ let offsetFound = !lastEventId;
48
+ for (const event of this.#events) {
49
+ if (!offsetFound)
50
+ offsetFound = event.id === lastEventId;
51
+ else if (!eventTypes || eventTypes.includes(event.type))
52
+ yield event;
53
+ }
54
+ }
55
+ /**
56
+ * Processes a batch of dispatch pipeline items, extracts the events,
57
+ * commits them to the in-memory storage, and returns the original batch.
58
+ *
59
+ * This method is part of the `IDispatchPipelineProcessor` interface.
60
+ */
61
+ async process(batch) {
62
+ const events = [];
63
+ for (const { event } of batch) {
64
+ if (!event)
65
+ throw new Error('Event batch does not contain `event`');
66
+ events.push(event);
67
+ }
68
+ await this.commitEvents(events);
69
+ return batch;
70
+ }
71
+ }
72
+ exports.InMemoryEventStorage = InMemoryEventStorage;
73
+ //# sourceMappingURL=InMemoryEventStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryEventStorage.js","sourceRoot":"","sources":["../../src/in-memory/InMemoryEventStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemoryLock = void 0;
4
+ const utils_1 = require("../utils");
5
+ class InMemoryLock {
6
+ #lockMarker;
7
+ /**
8
+ * Indicates if lock is acquired
9
+ */
10
+ get locked() {
11
+ return !!this.#lockMarker;
12
+ }
13
+ /**
14
+ * Acquire the lock on the current instance.
15
+ * Resolves when the lock is successfully acquired
16
+ */
17
+ async lock() {
18
+ while (this.locked)
19
+ await this.once('unlocked');
20
+ this.#lockMarker = new utils_1.Deferred();
21
+ }
22
+ /**
23
+ * Release the lock acquired earlier
24
+ */
25
+ async unlock() {
26
+ this.#lockMarker?.resolve();
27
+ this.#lockMarker = undefined;
28
+ }
29
+ /**
30
+ * Wait until the lock is released.
31
+ * Resolves immediately if the lock is not acquired
32
+ */
33
+ once(event) {
34
+ if (event !== 'unlocked')
35
+ throw new TypeError(`Unexpected event type: ${event}`);
36
+ return this.#lockMarker?.promise ?? Promise.resolve();
37
+ }
38
+ }
39
+ exports.InMemoryLock = InMemoryLock;
40
+ //# sourceMappingURL=InMemoryLock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryLock.js","sourceRoot":"","sources":["../../src/in-memory/InMemoryLock.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AAEpC,MAAa,YAAY;IAExB,WAAW,CAA6B;IAExC;;OAEG;IACH,IAAI,MAAM;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,MAAM;YACjB,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAQ,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACX,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,KAAiB;QACrB,IAAI,KAAK,KAAK,UAAU;YACvB,MAAM,IAAI,SAAS,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;QAExD,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC;CACD;AAxCD,oCAwCC"}