node-cqrs 1.0.0-rc.42 → 1.0.0-rc.44

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 (313) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/CONTRIBUTING.md +12 -2
  3. package/README.md +58 -1
  4. package/dist/cjs/AbstractAggregate.js +0 -53
  5. package/dist/cjs/AbstractAggregate.js.map +1 -1
  6. package/dist/cjs/AbstractProjection.js +0 -36
  7. package/dist/cjs/AbstractProjection.js.map +1 -1
  8. package/dist/cjs/AbstractSaga.js +1 -24
  9. package/dist/cjs/AbstractSaga.js.map +1 -1
  10. package/dist/cjs/AggregateCommandHandler.js +31 -42
  11. package/dist/cjs/AggregateCommandHandler.js.map +1 -1
  12. package/dist/cjs/CommandBus.js +0 -12
  13. package/dist/cjs/CommandBus.js.map +1 -1
  14. package/dist/cjs/CqrsContainerBuilder.js +0 -11
  15. package/dist/cjs/CqrsContainerBuilder.js.map +1 -1
  16. package/dist/cjs/Event.js +0 -6
  17. package/dist/cjs/Event.js.map +1 -1
  18. package/dist/cjs/EventDispatchPipeline.js +0 -1
  19. package/dist/cjs/EventDispatchPipeline.js.map +1 -1
  20. package/dist/cjs/EventDispatcher.js +0 -18
  21. package/dist/cjs/EventDispatcher.js.map +1 -1
  22. package/dist/cjs/EventIdAugmentor.js +0 -6
  23. package/dist/cjs/EventIdAugmentor.js.map +1 -1
  24. package/dist/cjs/EventStore.js +3 -18
  25. package/dist/cjs/EventStore.js.map +1 -1
  26. package/dist/cjs/SagaEventHandler.js +0 -12
  27. package/dist/cjs/SagaEventHandler.js.map +1 -1
  28. package/dist/cjs/errors/ConcurrencyError.js +0 -6
  29. package/dist/cjs/errors/ConcurrencyError.js.map +1 -1
  30. package/dist/cjs/in-memory/InMemoryEventStorage.js +0 -10
  31. package/dist/cjs/in-memory/InMemoryEventStorage.js.map +1 -1
  32. package/dist/cjs/in-memory/InMemoryLock.js +0 -14
  33. package/dist/cjs/in-memory/InMemoryLock.js.map +1 -1
  34. package/dist/cjs/in-memory/InMemoryMessageBus.js +0 -24
  35. package/dist/cjs/in-memory/InMemoryMessageBus.js.map +1 -1
  36. package/dist/cjs/in-memory/InMemorySnapshotStorage.js +0 -27
  37. package/dist/cjs/in-memory/InMemorySnapshotStorage.js.map +1 -1
  38. package/dist/cjs/in-memory/InMemoryView.js +2 -36
  39. package/dist/cjs/in-memory/InMemoryView.js.map +1 -1
  40. package/dist/cjs/in-memory/utils/nextCycle.js +0 -3
  41. package/dist/cjs/in-memory/utils/nextCycle.js.map +1 -1
  42. package/dist/cjs/interfaces/IViewLocker.js +0 -6
  43. package/dist/cjs/interfaces/IViewLocker.js.map +1 -1
  44. package/dist/cjs/rabbitmq/RabbitMqEventBus.js +0 -23
  45. package/dist/cjs/rabbitmq/RabbitMqEventBus.js.map +1 -1
  46. package/dist/cjs/rabbitmq/RabbitMqGateway.js +4 -66
  47. package/dist/cjs/rabbitmq/RabbitMqGateway.js.map +1 -1
  48. package/dist/cjs/rabbitmq/utils/registerExitCleanup.js +0 -8
  49. package/dist/cjs/rabbitmq/utils/registerExitCleanup.js.map +1 -1
  50. package/dist/cjs/sqlite/AbstractSqliteAccessor.js +0 -16
  51. package/dist/cjs/sqlite/AbstractSqliteAccessor.js.map +1 -1
  52. package/dist/cjs/sqlite/AbstractSqliteView.js +0 -3
  53. package/dist/cjs/sqlite/AbstractSqliteView.js.map +1 -1
  54. package/dist/cjs/sqlite/SqliteEventLocker.js +3 -3
  55. package/dist/cjs/sqlite/SqliteEventLocker.js.map +1 -1
  56. package/dist/cjs/sqlite/SqliteObjectStorage.js +0 -3
  57. package/dist/cjs/sqlite/SqliteObjectStorage.js.map +1 -1
  58. package/dist/cjs/sqlite/SqliteObjectView.js +0 -5
  59. package/dist/cjs/sqlite/SqliteObjectView.js.map +1 -1
  60. package/dist/cjs/sqlite/queries/eventLockTableInit.js +1 -1
  61. package/dist/cjs/sqlite/utils/getEventId.js +0 -3
  62. package/dist/cjs/sqlite/utils/getEventId.js.map +1 -1
  63. package/dist/cjs/sqlite/utils/guid.js +0 -3
  64. package/dist/cjs/sqlite/utils/guid.js.map +1 -1
  65. package/dist/cjs/utils/Deferred.js +0 -3
  66. package/dist/cjs/utils/Deferred.js.map +1 -1
  67. package/dist/cjs/utils/Lock.js +0 -27
  68. package/dist/cjs/utils/Lock.js.map +1 -1
  69. package/dist/cjs/utils/MapAssertable.js +0 -6
  70. package/dist/cjs/utils/MapAssertable.js.map +1 -1
  71. package/dist/cjs/utils/assert.js +5 -0
  72. package/dist/cjs/utils/assert.js.map +1 -1
  73. package/dist/cjs/utils/getClassName.js +0 -3
  74. package/dist/cjs/utils/getClassName.js.map +1 -1
  75. package/dist/cjs/utils/getHandler.js +0 -3
  76. package/dist/cjs/utils/getHandler.js.map +1 -1
  77. package/dist/cjs/utils/getMessageHandlerNames.js +0 -4
  78. package/dist/cjs/utils/getMessageHandlerNames.js.map +1 -1
  79. package/dist/cjs/utils/sagaId.js +0 -1
  80. package/dist/cjs/utils/sagaId.js.map +1 -1
  81. package/dist/cjs/utils/setupOneTimeEmitterSubscription.js +1 -14
  82. package/dist/cjs/utils/setupOneTimeEmitterSubscription.js.map +1 -1
  83. package/dist/cjs/utils/subscribe.js +1 -7
  84. package/dist/cjs/utils/subscribe.js.map +1 -1
  85. package/dist/cjs/utils/validateHandlers.js +0 -3
  86. package/dist/cjs/utils/validateHandlers.js.map +1 -1
  87. package/dist/cjs/workers/AbstractWorkerProjection.js +19 -83
  88. package/dist/cjs/workers/AbstractWorkerProjection.js.map +1 -1
  89. package/dist/cjs/workers/WorkerProxyProjection.js +2 -7
  90. package/dist/cjs/workers/WorkerProxyProjection.js.map +1 -1
  91. package/dist/cjs/workers/index.js +1 -0
  92. package/dist/cjs/workers/index.js.map +1 -1
  93. package/dist/cjs/workers/interfaces/IProxyProjection.js +3 -0
  94. package/dist/cjs/workers/interfaces/IProxyProjection.js.map +1 -0
  95. package/dist/cjs/workers/interfaces/IWorkerProjection.js +3 -0
  96. package/dist/cjs/workers/interfaces/IWorkerProjection.js.map +1 -0
  97. package/dist/cjs/workers/interfaces/index.js +3 -0
  98. package/dist/cjs/workers/interfaces/index.js.map +1 -0
  99. package/dist/cjs/workers/protocol.js.map +1 -1
  100. package/dist/cjs/workers/utils/ProjectionView.js +3 -0
  101. package/dist/cjs/workers/utils/ProjectionView.js.map +1 -0
  102. package/dist/cjs/workers/utils/createWorker.js +0 -10
  103. package/dist/cjs/workers/utils/createWorker.js.map +1 -1
  104. package/dist/cjs/workers/utils/createWorkerInstance.js +59 -0
  105. package/dist/cjs/workers/utils/createWorkerInstance.js.map +1 -0
  106. package/dist/cjs/workers/utils/index.js +2 -0
  107. package/dist/cjs/workers/utils/index.js.map +1 -1
  108. package/dist/cjs/workers/utils/nodeEndpoint.js +0 -2
  109. package/dist/cjs/workers/utils/nodeEndpoint.js.map +1 -1
  110. package/dist/cjs/workers/utils/workerProxyFactory.js +21 -0
  111. package/dist/cjs/workers/utils/workerProxyFactory.js.map +1 -0
  112. package/dist/esm/AbstractAggregate.js +0 -53
  113. package/dist/esm/AbstractAggregate.js.map +1 -1
  114. package/dist/esm/AbstractProjection.js +0 -36
  115. package/dist/esm/AbstractProjection.js.map +1 -1
  116. package/dist/esm/AbstractSaga.js +2 -25
  117. package/dist/esm/AbstractSaga.js.map +1 -1
  118. package/dist/esm/AggregateCommandHandler.js +32 -43
  119. package/dist/esm/AggregateCommandHandler.js.map +1 -1
  120. package/dist/esm/CommandBus.js +0 -12
  121. package/dist/esm/CommandBus.js.map +1 -1
  122. package/dist/esm/CqrsContainerBuilder.js +0 -11
  123. package/dist/esm/CqrsContainerBuilder.js.map +1 -1
  124. package/dist/esm/Event.js +0 -6
  125. package/dist/esm/Event.js.map +1 -1
  126. package/dist/esm/EventDispatchPipeline.js +0 -1
  127. package/dist/esm/EventDispatchPipeline.js.map +1 -1
  128. package/dist/esm/EventDispatcher.js +0 -18
  129. package/dist/esm/EventDispatcher.js.map +1 -1
  130. package/dist/esm/EventIdAugmentor.js +0 -6
  131. package/dist/esm/EventIdAugmentor.js.map +1 -1
  132. package/dist/esm/EventStore.js +4 -19
  133. package/dist/esm/EventStore.js.map +1 -1
  134. package/dist/esm/SagaEventHandler.js +0 -12
  135. package/dist/esm/SagaEventHandler.js.map +1 -1
  136. package/dist/esm/errors/ConcurrencyError.js +0 -6
  137. package/dist/esm/errors/ConcurrencyError.js.map +1 -1
  138. package/dist/esm/in-memory/InMemoryEventStorage.js +0 -10
  139. package/dist/esm/in-memory/InMemoryEventStorage.js.map +1 -1
  140. package/dist/esm/in-memory/InMemoryLock.js +0 -14
  141. package/dist/esm/in-memory/InMemoryLock.js.map +1 -1
  142. package/dist/esm/in-memory/InMemoryMessageBus.js +0 -24
  143. package/dist/esm/in-memory/InMemoryMessageBus.js.map +1 -1
  144. package/dist/esm/in-memory/InMemorySnapshotStorage.js +0 -27
  145. package/dist/esm/in-memory/InMemorySnapshotStorage.js.map +1 -1
  146. package/dist/esm/in-memory/InMemoryView.js +2 -36
  147. package/dist/esm/in-memory/InMemoryView.js.map +1 -1
  148. package/dist/esm/in-memory/utils/nextCycle.js +0 -3
  149. package/dist/esm/in-memory/utils/nextCycle.js.map +1 -1
  150. package/dist/esm/interfaces/IViewLocker.js +0 -6
  151. package/dist/esm/interfaces/IViewLocker.js.map +1 -1
  152. package/dist/esm/rabbitmq/RabbitMqEventBus.js +0 -23
  153. package/dist/esm/rabbitmq/RabbitMqEventBus.js.map +1 -1
  154. package/dist/esm/rabbitmq/RabbitMqGateway.js +4 -66
  155. package/dist/esm/rabbitmq/RabbitMqGateway.js.map +1 -1
  156. package/dist/esm/rabbitmq/utils/registerExitCleanup.js +0 -8
  157. package/dist/esm/rabbitmq/utils/registerExitCleanup.js.map +1 -1
  158. package/dist/esm/sqlite/AbstractSqliteAccessor.js +0 -16
  159. package/dist/esm/sqlite/AbstractSqliteAccessor.js.map +1 -1
  160. package/dist/esm/sqlite/AbstractSqliteView.js +0 -3
  161. package/dist/esm/sqlite/AbstractSqliteView.js.map +1 -1
  162. package/dist/esm/sqlite/SqliteEventLocker.js +3 -3
  163. package/dist/esm/sqlite/SqliteEventLocker.js.map +1 -1
  164. package/dist/esm/sqlite/SqliteObjectStorage.js +0 -3
  165. package/dist/esm/sqlite/SqliteObjectStorage.js.map +1 -1
  166. package/dist/esm/sqlite/SqliteObjectView.js +0 -5
  167. package/dist/esm/sqlite/SqliteObjectView.js.map +1 -1
  168. package/dist/esm/sqlite/queries/eventLockTableInit.js +1 -1
  169. package/dist/esm/sqlite/utils/getEventId.js +0 -3
  170. package/dist/esm/sqlite/utils/getEventId.js.map +1 -1
  171. package/dist/esm/sqlite/utils/guid.js +0 -3
  172. package/dist/esm/sqlite/utils/guid.js.map +1 -1
  173. package/dist/esm/utils/Deferred.js +0 -3
  174. package/dist/esm/utils/Deferred.js.map +1 -1
  175. package/dist/esm/utils/Lock.js +0 -27
  176. package/dist/esm/utils/Lock.js.map +1 -1
  177. package/dist/esm/utils/MapAssertable.js +0 -6
  178. package/dist/esm/utils/MapAssertable.js.map +1 -1
  179. package/dist/esm/utils/assert.js +4 -0
  180. package/dist/esm/utils/assert.js.map +1 -1
  181. package/dist/esm/utils/getClassName.js +0 -3
  182. package/dist/esm/utils/getClassName.js.map +1 -1
  183. package/dist/esm/utils/getHandler.js +0 -3
  184. package/dist/esm/utils/getHandler.js.map +1 -1
  185. package/dist/esm/utils/getMessageHandlerNames.js +0 -4
  186. package/dist/esm/utils/getMessageHandlerNames.js.map +1 -1
  187. package/dist/esm/utils/sagaId.js +0 -1
  188. package/dist/esm/utils/sagaId.js.map +1 -1
  189. package/dist/esm/utils/setupOneTimeEmitterSubscription.js +2 -15
  190. package/dist/esm/utils/setupOneTimeEmitterSubscription.js.map +1 -1
  191. package/dist/esm/utils/subscribe.js +2 -8
  192. package/dist/esm/utils/subscribe.js.map +1 -1
  193. package/dist/esm/utils/validateHandlers.js +0 -3
  194. package/dist/esm/utils/validateHandlers.js.map +1 -1
  195. package/dist/esm/workers/AbstractWorkerProjection.js +21 -52
  196. package/dist/esm/workers/AbstractWorkerProjection.js.map +1 -1
  197. package/dist/esm/workers/WorkerProxyProjection.js +3 -8
  198. package/dist/esm/workers/WorkerProxyProjection.js.map +1 -1
  199. package/dist/esm/workers/index.js +1 -0
  200. package/dist/esm/workers/index.js.map +1 -1
  201. package/dist/esm/workers/interfaces/IProxyProjection.js +2 -0
  202. package/dist/esm/workers/interfaces/IProxyProjection.js.map +1 -0
  203. package/dist/esm/workers/interfaces/IWorkerProjection.js +2 -0
  204. package/dist/esm/workers/interfaces/IWorkerProjection.js.map +1 -0
  205. package/dist/esm/workers/interfaces/index.js +2 -0
  206. package/dist/esm/workers/interfaces/index.js.map +1 -0
  207. package/dist/esm/workers/protocol.js.map +1 -1
  208. package/dist/esm/workers/utils/ProjectionView.js +2 -0
  209. package/dist/esm/workers/utils/ProjectionView.js.map +1 -0
  210. package/dist/esm/workers/utils/createWorker.js +0 -10
  211. package/dist/esm/workers/utils/createWorker.js.map +1 -1
  212. package/dist/esm/workers/utils/createWorkerInstance.js +23 -0
  213. package/dist/esm/workers/utils/createWorkerInstance.js.map +1 -0
  214. package/dist/esm/workers/utils/index.js +2 -0
  215. package/dist/esm/workers/utils/index.js.map +1 -1
  216. package/dist/esm/workers/utils/nodeEndpoint.js +0 -2
  217. package/dist/esm/workers/utils/nodeEndpoint.js.map +1 -1
  218. package/dist/esm/workers/utils/workerProxyFactory.js +18 -0
  219. package/dist/esm/workers/utils/workerProxyFactory.js.map +1 -0
  220. package/eslint.config.mjs +3 -1
  221. package/package.json +20 -12
  222. package/src/AbstractSaga.ts +3 -3
  223. package/src/AggregateCommandHandler.ts +51 -28
  224. package/src/CommandBus.ts +0 -3
  225. package/src/CqrsContainerBuilder.ts +4 -0
  226. package/src/EventStore.ts +7 -4
  227. package/src/in-memory/InMemoryView.ts +2 -5
  228. package/src/interfaces/IAggregate.ts +2 -1
  229. package/src/interfaces/IContainer.ts +12 -1
  230. package/src/sqlite/SqliteEventLocker.ts +3 -3
  231. package/src/sqlite/queries/eventLockTableInit.ts +1 -1
  232. package/src/utils/assert.ts +5 -0
  233. package/src/utils/getMessageHandlerNames.ts +19 -4
  234. package/src/utils/setupOneTimeEmitterSubscription.ts +2 -2
  235. package/src/utils/subscribe.ts +2 -2
  236. package/src/workers/AbstractWorkerProjection.ts +44 -49
  237. package/src/workers/WorkerProxyProjection.ts +15 -23
  238. package/src/workers/index.ts +1 -0
  239. package/src/workers/interfaces/IProxyProjection.ts +23 -0
  240. package/src/workers/interfaces/IWorkerProjection.ts +26 -0
  241. package/src/workers/interfaces/index.ts +2 -0
  242. package/src/workers/protocol.ts +0 -8
  243. package/src/workers/utils/ProjectionView.ts +3 -0
  244. package/src/workers/utils/createWorkerInstance.ts +52 -0
  245. package/src/workers/utils/index.ts +3 -0
  246. package/src/workers/utils/workerProxyFactory.ts +62 -0
  247. package/tsconfig.esm.json +1 -0
  248. package/types/AbstractAggregate.d.ts +0 -52
  249. package/types/AbstractProjection.d.ts +0 -47
  250. package/types/AbstractSaga.d.ts +0 -23
  251. package/types/AggregateCommandHandler.d.ts +0 -9
  252. package/types/CommandBus.d.ts +0 -17
  253. package/types/CqrsContainerBuilder.d.ts +0 -8
  254. package/types/Event.d.ts +0 -6
  255. package/types/EventDispatcher.d.ts +0 -15
  256. package/types/EventIdAugmentor.d.ts +0 -6
  257. package/types/EventStore.d.ts +1 -15
  258. package/types/SagaEventHandler.d.ts +0 -8
  259. package/types/errors/ConcurrencyError.d.ts +0 -6
  260. package/types/in-memory/InMemoryEventStorage.d.ts +0 -10
  261. package/types/in-memory/InMemoryLock.d.ts +0 -14
  262. package/types/in-memory/InMemoryMessageBus.d.ts +0 -20
  263. package/types/in-memory/InMemorySnapshotStorage.d.ts +0 -27
  264. package/types/in-memory/InMemoryView.d.ts +0 -27
  265. package/types/in-memory/utils/nextCycle.d.ts +0 -3
  266. package/types/interfaces/IAggregate.d.ts +0 -49
  267. package/types/interfaces/IContainer.d.ts +1 -3
  268. package/types/interfaces/IDispatchPipelineProcessor.d.ts +0 -17
  269. package/types/interfaces/IEvent.d.ts +0 -1
  270. package/types/interfaces/IEventLocker.d.ts +0 -17
  271. package/types/interfaces/IEventStorageReader.d.ts +0 -27
  272. package/types/interfaces/IIdentifierProvider.d.ts +0 -5
  273. package/types/interfaces/IMessage.d.ts +0 -12
  274. package/types/interfaces/IMutableState.d.ts +0 -9
  275. package/types/interfaces/IObservable.d.ts +0 -6
  276. package/types/interfaces/IObservableQueueProvider.d.ts +0 -3
  277. package/types/interfaces/IProjection.d.ts +0 -3
  278. package/types/interfaces/ISaga.d.ts +0 -19
  279. package/types/interfaces/IViewLocker.d.ts +0 -27
  280. package/types/rabbitmq/RabbitMqEventBus.d.ts +0 -23
  281. package/types/rabbitmq/RabbitMqGateway.d.ts +0 -64
  282. package/types/rabbitmq/utils/registerExitCleanup.d.ts +0 -7
  283. package/types/sqlite/AbstractSqliteAccessor.d.ts +0 -16
  284. package/types/sqlite/AbstractSqliteView.d.ts +0 -3
  285. package/types/sqlite/SqliteEventLocker.d.ts +0 -11
  286. package/types/sqlite/SqliteObjectView.d.ts +0 -3
  287. package/types/sqlite/SqliteProjectionDataParams.d.ts +0 -10
  288. package/types/sqlite/SqliteViewLocker.d.ts +0 -10
  289. package/types/sqlite/utils/getEventId.d.ts +0 -3
  290. package/types/sqlite/utils/guid.d.ts +0 -3
  291. package/types/utils/Deferred.d.ts +0 -3
  292. package/types/utils/Lock.d.ts +0 -14
  293. package/types/utils/MapAssertable.d.ts +0 -6
  294. package/types/utils/assert.d.ts +1 -0
  295. package/types/utils/getClassName.d.ts +0 -3
  296. package/types/utils/getHandler.d.ts +0 -3
  297. package/types/utils/getMessageHandlerNames.d.ts +4 -5
  298. package/types/utils/setupOneTimeEmitterSubscription.d.ts +0 -10
  299. package/types/utils/subscribe.d.ts +0 -3
  300. package/types/utils/validateHandlers.d.ts +0 -3
  301. package/types/workers/AbstractWorkerProjection.d.ts +7 -29
  302. package/types/workers/WorkerProxyProjection.d.ts +7 -19
  303. package/types/workers/index.d.ts +1 -0
  304. package/types/workers/interfaces/IProxyProjection.d.ts +11 -0
  305. package/types/workers/interfaces/IWorkerProjection.d.ts +10 -0
  306. package/types/workers/interfaces/index.d.ts +2 -0
  307. package/types/workers/protocol.d.ts +0 -6
  308. package/types/workers/utils/ProjectionView.d.ts +2 -0
  309. package/types/workers/utils/createWorker.d.ts +0 -7
  310. package/types/workers/utils/createWorkerInstance.d.ts +3 -0
  311. package/types/workers/utils/index.d.ts +3 -0
  312. package/types/workers/utils/workerProxyFactory.d.ts +6 -0
  313. package/src/workers/readme.md +0 -90
package/CHANGELOG.md CHANGED
@@ -1,3 +1,41 @@
1
+ # [1.0.0-rc.44](https://github.com/snatalenko/node-cqrs/compare/v1.0.0-rc.43...v1.0.0-rc.44) (2026-03-18)
2
+
3
+
4
+ ### Internal Fixes
5
+
6
+ * Upgrade di0 to latest stable version with resolvers ([5f2c9ad](https://github.com/snatalenko/node-cqrs/commit/5f2c9adfd101bb53e7250db95c89f1cbd1730362))
7
+
8
+
9
+ # [1.0.0-rc.43](https://github.com/snatalenko/node-cqrs/compare/v1.0.0-rc.42...v1.0.0-rc.43) (2026-03-18)
10
+
11
+
12
+ ### Changes
13
+
14
+ * Allow extending WorkerProxyProjection via workerProxyFactory custom proxy type ([c9860b6](https://github.com/snatalenko/node-cqrs/commit/c9860b605a52e0cf0be167917b66e5efeb0fe29c))
15
+
16
+ ### Fixes
17
+
18
+ * All errors being ignored with concurrency resolution set to 'ignore' ([0cb10bc](https://github.com/snatalenko/node-cqrs/commit/0cb10bcaef5ec76050b14caf6d5ad710a005b6d0))
19
+
20
+ ### Documentation
21
+
22
+ * Update package description and keywords ([15ef847](https://github.com/snatalenko/node-cqrs/commit/15ef847b4b7dc7007f38423580704604901fc588))
23
+ * Add AbstractWorkerProjection description to readme.md ([dd3952c](https://github.com/snatalenko/node-cqrs/commit/dd3952cc79d8a5762cd5b5bc320429ac9d0e7403))
24
+
25
+ ### Tests
26
+
27
+ * Migrate chai+sinon tests to pure jest and remove legacy deps ([86840dd](https://github.com/snatalenko/node-cqrs/commit/86840dd7313e6af217fb74b7c32227d09860433b))
28
+
29
+ ### Build System
30
+
31
+ * Remove comments from compiled dists ([d7124bd](https://github.com/snatalenko/node-cqrs/commit/d7124bdb47d8cef12280f404146b4f4d8e0ae1e7))
32
+
33
+ ### Internal Fixes
34
+
35
+ * Allow EventStore to resolve reader from eventStorage alias ([91cd778](https://github.com/snatalenko/node-cqrs/commit/91cd778171ed1ace11802a4ef1fb05384de11433))
36
+ * Update dependencies ([8c7478e](https://github.com/snatalenko/node-cqrs/commit/8c7478e6f569426c8ad94fed9bc84a159f31bf1c))
37
+
38
+
1
39
  # [1.0.0-rc.42](https://github.com/snatalenko/node-cqrs/compare/v1.0.0-rc.41...v1.0.0-rc.42) (2026-02-27)
2
40
 
3
41
 
package/CONTRIBUTING.md CHANGED
@@ -66,7 +66,7 @@ npm run lint # Run ESLint
66
66
  ### Running a single test file
67
67
 
68
68
  ```bash
69
- npm t tests/unit/CommandBus.test.ts
69
+ npm test tests/unit/CommandBus.test.ts
70
70
  ```
71
71
 
72
72
  ## Browser bundle
@@ -130,7 +130,17 @@ Code style and formatting are enforced via [EditorConfig](https://editorconfig.o
130
130
  - **Type-only imports:** Use the `type` keyword for imports that are only used as types
131
131
  - **`.ts` file extensions in imports:** Always use explicit `.ts` extensions in relative import paths
132
132
 
133
- Please run `npm run lint` before opening a PR.
133
+ ## Verification
134
+
135
+ Run the following checks to verify your changes:
136
+
137
+ ```bash
138
+ npm test # Unit tests pass
139
+ npm run lint # No lint errors
140
+ npm run build # ESM and CJS build successfully
141
+ npm run examples # Examples run without errors
142
+ npm run test:examples # Example unit tests pass
143
+ ```
134
144
 
135
145
  ## Pull requests
136
146
 
package/README.md CHANGED
@@ -430,7 +430,64 @@ import { RabbitMqEventBus, RabbitMqGateway } from 'node-cqrs/rabbitmq';
430
430
  import { AbstractWorkerProjection } from 'node-cqrs/workers';
431
431
  ```
432
432
 
433
- - [AbstractWorkerProjection](src/workers/AbstractWorkerProjection.ts) - projection base class for running handlers and views in a worker thread
433
+ Workers are an execution mode for projections.
434
+
435
+ You still define one projection class, but it runs as:
436
+ 1. A real projection inside a worker thread (handles events, mutates the view).
437
+ 2. A proxy projection in the main thread (forwards calls to the worker and exposes the remote view).
438
+
439
+ This lets you keep your projection code unchanged while moving heavy work off the main thread.
440
+
441
+ Quickstart:
442
+ 1. Create your projection by extending `AbstractWorkerProjection`.
443
+ 2. In the worker module, call `YourProjection.createInstanceInWorkerThread()`.
444
+ 3. In your app container, register `YourProjection.workerProxyFactory` and use it like a normal projection.
445
+
446
+ Worker module example (CJS):
447
+
448
+ ```js
449
+ const { AbstractWorkerProjection } = require('node-cqrs/workers');
450
+
451
+ class CounterView {
452
+ counter = 0;
453
+ increment() { this.counter += 1; }
454
+ getCounter() { return this.counter; }
455
+ }
456
+
457
+ class CounterProjection extends AbstractWorkerProjection {
458
+ static get workerModulePath() {
459
+ return __filename;
460
+ }
461
+
462
+ constructor() {
463
+ super({ view: new CounterView() });
464
+ }
465
+
466
+ somethingHappened() {
467
+ this.view.increment();
468
+ }
469
+ }
470
+
471
+ CounterProjection.createInstanceInWorkerThread();
472
+ module.exports = CounterProjection;
473
+ ```
474
+
475
+ Main thread usage (DI):
476
+
477
+ ```js
478
+ const CounterProjection = require('./CounterProjection.cjs');
479
+ const { ContainerBuilder } = require('node-cqrs');
480
+
481
+ const builder = new ContainerBuilder();
482
+ builder.registerProjection(CounterProjection.workerProxyFactory, 'counterView');
483
+
484
+ const { eventStore, counterView } = builder.container();
485
+ await eventStore.dispatch([{ id: '1', type: 'somethingHappened', payload: {} }]);
486
+ const counter = await counterView.getCounter();
487
+ ```
488
+
489
+ `workerModulePath` should point to executable JavaScript (`__filename` in CJS, `fileURLToPath(import.meta.url)` in ESM).
490
+ If you need a custom proxy projection, you can still use `workerProxyFactory(...)` directly (advanced usage).
434
491
 
435
492
 
436
493
  ## Examples
@@ -4,41 +4,16 @@ exports.AbstractAggregate = void 0;
4
4
  const AggregateCommandHandler_ts_1 = require("./AggregateCommandHandler.js");
5
5
  const index_ts_1 = require("./interfaces/index.js");
6
6
  const index_ts_2 = require("./utils/index.js");
7
- /**
8
- * Base class for Aggregate definition
9
- */
10
7
  class AbstractAggregate {
11
- /**
12
- * List of command names handled by the Aggregate.
13
- *
14
- * Can be overridden in the Aggregate implementation to explicitly define supported commands.
15
- * If not overridden, all public methods will be treated as command handlers by default.
16
- *
17
- * @example ['createUser', 'changePassword'];
18
- */
19
8
  static get handles() {
20
9
  return (0, index_ts_2.getMessageHandlerNames)(this);
21
10
  }
22
- /**
23
- * Optional list of event types that are required to restore the aggregate state.
24
- *
25
- * @see IAggregateConstructor
26
- */
27
11
  static get restoresFrom() {
28
12
  return undefined;
29
13
  }
30
- /**
31
- * Defines retry behavior when a ConcurrencyError is thrown during event dispatch.
32
- *
33
- * @see IAggregateConstructor
34
- */
35
14
  static get retryOnConcurrencyError() {
36
15
  return undefined;
37
16
  }
38
- /**
39
- * Convenience helper to create an `AggregateCommandHandler` for this aggregate type and
40
- * subscribe it to the provided `commandBus`.
41
- */
42
17
  static register(eventStore, commandBus) {
43
18
  const handler = new AggregateCommandHandler_ts_1.AggregateCommandHandler({ aggregateType: this, eventStore });
44
19
  handler.subscribe(commandBus);
@@ -47,33 +22,18 @@ class AbstractAggregate {
47
22
  #id;
48
23
  #version = 0;
49
24
  #snapshotVersion;
50
- /** List of emitted events */
51
25
  changes = [];
52
- /** Internal aggregate state */
53
26
  state;
54
- /** Command being handled by aggregate */
55
27
  command;
56
- /** Unique aggregate instance identifier */
57
28
  get id() {
58
29
  return this.#id;
59
30
  }
60
- /** Aggregate instance version */
61
31
  get version() {
62
32
  return this.#version;
63
33
  }
64
- /** Restored snapshot version */
65
34
  get snapshotVersion() {
66
35
  return this.#snapshotVersion;
67
36
  }
68
- /**
69
- * Override to define whether an aggregate state snapshot should be taken
70
- *
71
- * @example
72
- * // create snapshot every 50 events if new events were emitted
73
- * return !!this.changes.length
74
- * && this.version - (this.snapshotVersion ?? 0) > 50;
75
- */
76
- // eslint-disable-next-line class-methods-use-this
77
37
  get shouldTakeSnapshot() {
78
38
  return false;
79
39
  }
@@ -91,7 +51,6 @@ class AbstractAggregate {
91
51
  if (events)
92
52
  events.forEach(event => this.mutate(event));
93
53
  }
94
- /** Mutate aggregate state and increment aggregate version */
95
54
  mutate(event) {
96
55
  if (event.aggregateVersion !== undefined)
97
56
  this.#version = event.aggregateVersion;
@@ -108,7 +67,6 @@ class AbstractAggregate {
108
67
  }
109
68
  this.#version += 1;
110
69
  }
111
- /** Pass command to command handler */
112
70
  async handle(command) {
113
71
  (0, index_ts_2.assertMessage)(command, 'command');
114
72
  const handler = (0, index_ts_2.getHandler)(this, command.type);
@@ -126,10 +84,6 @@ class AbstractAggregate {
126
84
  this.command = undefined;
127
85
  }
128
86
  }
129
- /**
130
- * Get the events emitted during commands processing.
131
- * If a snapshot should be taken, the snapshot event is added to the end.
132
- */
133
87
  getUncommittedEvents(offset) {
134
88
  if (this.shouldTakeSnapshot)
135
89
  this.takeSnapshot();
@@ -141,7 +95,6 @@ class AbstractAggregate {
141
95
  this.emitRaw(event);
142
96
  return event;
143
97
  }
144
- /** Format event based on a current aggregate state and a command being executed */
145
98
  makeEvent(type, payload, sourceCommand) {
146
99
  const event = {
147
100
  aggregateId: this.id,
@@ -150,7 +103,6 @@ class AbstractAggregate {
150
103
  payload
151
104
  };
152
105
  if (sourceCommand) {
153
- // augment event with command context
154
106
  const { context, sagaOrigins } = sourceCommand;
155
107
  if (context !== undefined)
156
108
  event.context = context;
@@ -159,32 +111,27 @@ class AbstractAggregate {
159
111
  }
160
112
  return event;
161
113
  }
162
- /** Register aggregate event and mutate aggregate state */
163
114
  emitRaw(event) {
164
115
  (0, index_ts_2.assertDefined)(event?.aggregateId, 'event.aggregateId');
165
116
  (0, index_ts_2.assertNumber)(event?.aggregateVersion, 'event.aggregateVersion');
166
117
  this.mutate(event);
167
118
  this.changes.push(event);
168
119
  }
169
- /** Create an aggregate state snapshot */
170
120
  makeSnapshot() {
171
121
  if (!this.state)
172
122
  throw new Error('state property is empty, either define state or override makeSnapshot method');
173
123
  return (0, index_ts_2.clone)(this.state);
174
124
  }
175
- /** Add snapshot event to the collection of emitted events */
176
125
  takeSnapshot() {
177
126
  const snapshotEvent = this.emit(index_ts_1.SNAPSHOT_EVENT_TYPE, this.makeSnapshot());
178
127
  this.#snapshotVersion = snapshotEvent.aggregateVersion;
179
128
  }
180
- /** Restore aggregate state from a snapshot */
181
129
  restoreSnapshot(snapshotEvent) {
182
130
  (0, index_ts_2.assertSnapshotEvent)(snapshotEvent, 'snapshotEvent');
183
131
  if (!this.state)
184
132
  throw new Error('state property is empty, either defined state or override restoreSnapshot method');
185
133
  Object.assign(this.state, (0, index_ts_2.clone)(snapshotEvent.payload));
186
134
  }
187
- /** Get human-readable aggregate identifier */
188
135
  toString() {
189
136
  return `${(0, index_ts_2.getClassName)(this)} ${this.id} (v${this.version})`;
190
137
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractAggregate.js","sourceRoot":"","sources":["../../src/AbstractAggregate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractAggregate.js","sourceRoot":"","sources":["../../src/AbstractAggregate.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,7 @@ const Event_ts_1 = require("./Event.js");
5
5
  const InMemoryView_ts_1 = require("./in-memory/InMemoryView.js");
6
6
  const index_ts_1 = require("./interfaces/index.js");
7
7
  const index_ts_2 = require("./utils/index.js");
8
- /**
9
- * Base class for Projection definition
10
- */
11
8
  class AbstractProjection {
12
- /**
13
- * List of event types handled by the projection. Can be overridden in the projection implementation.
14
- * If not overridden, event types will be inferred from handler methods defined on the Projection class.
15
- */
16
9
  static get handles() {
17
10
  return (0, index_ts_2.getMessageHandlerNames)(this);
18
11
  }
@@ -20,20 +13,12 @@ class AbstractProjection {
20
13
  #viewLocker;
21
14
  #eventLocker;
22
15
  _logger;
23
- /**
24
- * The default view associated with the projection.
25
- * Can optionally implement IViewLocker and/or IEventLocker.
26
- */
27
16
  get view() {
28
17
  return this.#view ?? (this.#view = new InMemoryView_ts_1.InMemoryView());
29
18
  }
30
19
  set view(value) {
31
20
  this.#view = value;
32
21
  }
33
- /**
34
- * Manages view restoration state to prevent early access to an inconsistent view
35
- * or conflicts from concurrent restoration by other processes.
36
- */
37
22
  get _viewLocker() {
38
23
  if (this.#viewLocker === undefined)
39
24
  this.#viewLocker = (0, index_ts_1.isViewLocker)(this.view) ? this.view : null;
@@ -42,9 +27,6 @@ class AbstractProjection {
42
27
  set _viewLocker(value) {
43
28
  this.#viewLocker = value;
44
29
  }
45
- /**
46
- * Tracks event processing state to prevent concurrent handling by multiple processes.
47
- */
48
30
  get _eventLocker() {
49
31
  if (this.#eventLocker === undefined)
50
32
  this.#eventLocker = (0, index_ts_1.isEventLocker)(this.view) ? this.view : null;
@@ -62,16 +44,11 @@ class AbstractProjection {
62
44
  logger.child({ service: (0, index_ts_2.getClassName)(this) }) :
63
45
  logger;
64
46
  }
65
- /**
66
- * Subscribe to event store
67
- * and restore view state from not yet projected events
68
- */
69
47
  subscribe(eventStore) {
70
48
  (0, index_ts_2.subscribe)(eventStore, this, {
71
49
  masterHandler: this.project
72
50
  });
73
51
  }
74
- /** Pass event to projection event handler */
75
52
  async project(event) {
76
53
  if (this._viewLocker && !this._viewLocker.ready) {
77
54
  this._logger?.debug(`view is locked, awaiting until it is ready to process ${(0, Event_ts_1.describe)(event)}`);
@@ -80,7 +57,6 @@ class AbstractProjection {
80
57
  }
81
58
  return this._project(event);
82
59
  }
83
- /** Pass event to projection event handler, without awaiting for restore operation to complete */
84
60
  async _project(event) {
85
61
  const handler = (0, index_ts_2.getHandler)(this, event.type);
86
62
  if (!handler)
@@ -94,12 +70,6 @@ class AbstractProjection {
94
70
  if (this._eventLocker)
95
71
  await this._eventLocker.markAsProjected(event);
96
72
  }
97
- /**
98
- * Restore view state from not-yet-projected events.
99
- *
100
- * Lock the view to ensure same restoring procedure
101
- * won't be performed by another projection instance.
102
- * */
103
73
  async restore(eventStore) {
104
74
  if (this._viewLocker)
105
75
  await this._viewLocker.lock();
@@ -107,7 +77,6 @@ class AbstractProjection {
107
77
  if (this._viewLocker)
108
78
  this._viewLocker.unlock();
109
79
  }
110
- /** Restore view state from not-yet-projected events */
111
80
  async _restore(eventStore) {
112
81
  (0, index_ts_2.assertFunction)(eventStore?.getEventsByTypes, 'eventStore.getEventsByTypes');
113
82
  let lastEvent;
@@ -131,11 +100,6 @@ class AbstractProjection {
131
100
  }
132
101
  this._logger?.info(`view restored from ${eventsCount} event(s) in ${Date.now() - startTs} ms`);
133
102
  }
134
- /**
135
- * Handle error on restoring.
136
- *
137
- * Logs and throws error by default
138
- */
139
103
  _onRestoringError(error, event) {
140
104
  const errorMessage = error instanceof Error ? error.message : String(error);
141
105
  this._logger?.error(`view restoring has failed (view remains locked): ${errorMessage}`, {
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractProjection.js","sourceRoot":"","sources":["../../src/AbstractProjection.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AACtC,iEAA2D;AAC3D,oDAW+B;AAE/B,+CAO0B;AAwB1B;;GAEG;AACH,MAAsB,kBAAkB;IAEvC;;;OAGG;IACH,MAAM,KAAK,OAAO;QACjB,OAAO,IAAA,iCAAsB,EAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAS;IACd,WAAW,CAAsB;IACjC,YAAY,CAAuB;IACzB,OAAO,CAAW;IAE5B;;;OAGG;IACH,IAAW,IAAI;QACd,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,8BAAY,EAAW,CAAC,CAAC;IACjE,CAAC;IAED,IAAc,IAAI,CAAC,KAAY;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,IAAc,WAAW;QACxB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YACjC,IAAI,CAAC,WAAW,GAAG,IAAA,uBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAE/D,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,IAAc,WAAW,CAAC,KAAqC;QAC9D,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAc,YAAY;QACzB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAClC,IAAI,CAAC,YAAY,GAAG,IAAA,wBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAEjE,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,IAAc,YAAY,CAAC,KAAsC;QAChE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,YAAY,EACX,IAAI,EACJ,UAAU,EACV,WAAW,EACX,MAAM,KAC8B,EAAE;QACtC,IAAA,2BAAgB,EAAC,IAAI,CAAC,CAAC;QAEvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAEhC,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,OAAO,IAAI,MAAM,CAAC,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,uBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC;IACT,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,UAAuB;QAChC,IAAA,oBAAS,EAAC,UAAU,EAAE,IAAI,EAAE;YAC3B,aAAa,EAAE,IAAI,CAAC,OAAO;SAC3B,CAAC,CAAC;IACJ,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,OAAO,CAAC,KAAa;QAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACjD,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,yDAAyD,IAAA,mBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,6BAA6B,IAAA,mBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,iGAAiG;IACvF,KAAK,CAAC,QAAQ,CAAC,KAAa;QACrC,MAAM,OAAO,GAAG,IAAA,qBAAU,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YACX,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,4CAA4C,CAAC,CAAC;QAE7E,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC7E,IAAI,CAAC,iBAAiB;gBACrB,OAAO;QACT,CAAC;QAED,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,YAAY;YACpB,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED;;;;;SAKK;IACL,KAAK,CAAC,OAAO,CAAC,UAA+B;QAC5C,IAAI,IAAI,CAAC,WAAW;YACnB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAE/B,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,WAAW;YACnB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,uDAAuD;IAC7C,KAAK,CAAC,QAAQ,CAAC,UAA+B;QACvD,IAAA,yBAAc,EAAC,UAAU,EAAE,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;QAE5E,IAAI,SAA6B,CAAC;QAElC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACvD,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,SAAS,CAAC,CAAC,CAAC,gBAAgB,IAAA,mBAAQ,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC;QAEzG,MAAM,YAAY,GAAI,IAAI,CAAC,WAAyC,CAAC,OAAO,CAAC;QAC7E,MAAM,cAAc,GAAG,UAAU,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5F,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC3B,WAAW,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,GAAY,EAAE,CAAC;gBACrB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,WAAW,gBAAgB,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,KAAK,CAAC,CAAC;IAChG,CAAC;IAED;;;;OAIG;IACO,iBAAiB,CAAC,KAAc,EAAE,KAAa;QACxD,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,oDAAoD,YAAY,EAAE,EAAE;YACvF,OAAO,EAAE,IAAA,uBAAY,EAAC,IAAI,CAAC;YAC3B,KAAK;YACL,KAAK;SACL,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC;IACb,CAAC;CACD;AA/KD,gDA+KC"}
1
+ {"version":3,"file":"AbstractProjection.js","sourceRoot":"","sources":["../../src/AbstractProjection.ts"],"names":[],"mappings":"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"}
@@ -3,26 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractSaga = void 0;
4
4
  const SagaEventHandler_ts_1 = require("./SagaEventHandler.js");
5
5
  const index_ts_1 = require("./utils/index.js");
6
- /**
7
- * Base class for Saga definition
8
- */
9
6
  class AbstractSaga {
10
- /**
11
- * Optional list of events that start new saga.
12
- *
13
- * When not defined, saga start is inferred by the absence of `message.sagaOrigins[sagaDescriptor]`.
14
- */
15
7
  static get startsWith() {
16
8
  return undefined;
17
9
  }
18
- /** List of event types being handled by Saga, can be overridden in Saga implementation */
19
10
  static get handles() {
20
11
  return (0, index_ts_1.getMessageHandlerNames)(this);
21
12
  }
22
- /**
23
- * Convenience helper to create a `SagaEventHandler` for this saga type and subscribe it to
24
- * the provided `eventStore`.
25
- */
26
13
  static register(eventStore, commandBus) {
27
14
  const handler = new SagaEventHandler_ts_1.SagaEventHandler({
28
15
  sagaType: this,
@@ -32,11 +19,9 @@ class AbstractSaga {
32
19
  handler.subscribe(eventStore);
33
20
  return handler;
34
21
  }
35
- /** Saga ID */
36
22
  get id() {
37
23
  return this.#id;
38
24
  }
39
- /** Saga version */
40
25
  get version() {
41
26
  return this.#version;
42
27
  }
@@ -45,9 +30,6 @@ class AbstractSaga {
45
30
  #version = 0;
46
31
  #messages = [];
47
32
  #handling = false;
48
- /**
49
- * Creates an instance of AbstractSaga
50
- */
51
33
  constructor(options) {
52
34
  (0, index_ts_1.assertDefined)(options, 'options');
53
35
  (0, index_ts_1.assertDefined)(options.id, 'options.id');
@@ -57,7 +39,6 @@ class AbstractSaga {
57
39
  (0, index_ts_1.validateHandlers)(this, 'startsWith');
58
40
  (0, index_ts_1.validateHandlers)(this, 'handles');
59
41
  }
60
- /** Modify saga state by applying an event */
61
42
  mutate(event) {
62
43
  (0, index_ts_1.assertEvent)(event, 'event');
63
44
  if (this.state) {
@@ -69,14 +50,12 @@ class AbstractSaga {
69
50
  }
70
51
  this.#version += 1;
71
52
  }
72
- /** Process saga event and return produced commands */
73
53
  async handle(event) {
74
54
  (0, index_ts_1.assertEvent)(event, 'event');
75
55
  if (this.#handling)
76
56
  throw new Error('Another event is being processed, concurrent handling is not allowed');
77
57
  const handler = (0, index_ts_1.getHandler)(this, event.type);
78
- if (!handler)
79
- throw new Error(`'${event.type}' handler is not defined or not a function`);
58
+ (0, index_ts_1.assertFunction)(handler, `${event.type} handler`);
80
59
  this.#handling = true;
81
60
  this.#messages.length = 0;
82
61
  try {
@@ -96,12 +75,10 @@ class AbstractSaga {
96
75
  payload
97
76
  });
98
77
  }
99
- /** Put a command to the execution queue */
100
78
  enqueueRaw(command) {
101
79
  (0, index_ts_1.assertMessage)(command, 'command');
102
80
  this.#messages.push(command);
103
81
  }
104
- /** Get human-readable Saga name */
105
82
  toString() {
106
83
  return `${(0, index_ts_1.getClassName)(this)} ${this.id} (v${this.version})`;
107
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSaga.js","sourceRoot":"","sources":["../../src/AbstractSaga.ts"],"names":[],"mappings":";;;AAIA,+DAAyD;AACzD,+CAS0B;AAE1B;;GAEG;AACH,MAAsB,YAAY;IAEjC;;;;OAIG;IACH,MAAM,KAAK,UAAU;QACpB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,0FAA0F;IAC1F,MAAM,KAAK,OAAO;QACjB,OAAO,IAAA,iCAAsB,EAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAEd,UAAuB,EACvB,UAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,sCAAgB,CAAC;YACpC,QAAQ,EAAE,IAAI;YACd,UAAU;YACV,UAAU;SACV,CAAC,CAAC;QACH,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC9B,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,cAAc;IACd,IAAI,EAAE;QACL,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAES,KAAK,CAA0B;IAEzC,GAAG,CAAa;IAChB,QAAQ,GAAG,CAAC,CAAC;IACb,SAAS,GAAe,EAAE,CAAC;IAC3B,SAAS,GAAG,KAAK,CAAC;IAElB;;OAEG;IACH,YAAY,OAA+B;QAC1C,IAAA,wBAAa,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClC,IAAA,wBAAa,EAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACxC,IAAI,OAAO,CAAC,MAAM;YACjB,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAE9D,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC;QAEtB,IAAA,2BAAgB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACrC,IAAA,2BAAgB,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,6CAA6C;IAC7C,MAAM,CAAC,KAAa;QACnB,IAAA,sBAAW,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACnB,IAAA,qBAAU,EAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,OAAO;gBACV,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,sDAAsD;IACtD,KAAK,CAAC,MAAM,CAAC,KAAa;QACzB,IAAA,sBAAW,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,SAAS;YACjB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAEzF,MAAM,OAAO,GAAG,IAAA,qBAAU,EAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YACX,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,4CAA4C,CAAC,CAAC;QAE7E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1B,IAAI,CAAC;YACJ,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;gBACO,CAAC;YACR,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACxB,CAAC;IACF,CAAC;IAMS,OAAO,CAAI,WAAmB,EAAE,WAAwB,EAAE,OAAW;QAC9E,IAAA,uBAAY,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAEzC,IAAI,CAAC,UAAU,CAAC;YACf,WAAW;YACX,IAAI,EAAE,WAAW;YACjB,OAAO;SACP,CAAC,CAAC;IACJ,CAAC;IAED,2CAA2C;IACjC,UAAU,CAAC,OAAiB;QACrC,IAAA,wBAAa,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,mCAAmC;IACnC,QAAQ;QACP,OAAO,GAAG,IAAA,uBAAY,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,OAAO,GAAG,CAAC;IAC9D,CAAC;CACD;AAlID,oCAkIC"}
1
+ {"version":3,"file":"AbstractSaga.js","sourceRoot":"","sources":["../../src/AbstractSaga.ts"],"names":[],"mappings":"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"}