node-cqrs 1.0.0 → 1.1.0-alpha.1

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 (273) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/README.md +115 -101
  3. package/dist/cjs/AbstractProjection.js +43 -18
  4. package/dist/cjs/AbstractProjection.js.map +1 -1
  5. package/dist/cjs/AggregateCommandHandler.js +27 -13
  6. package/dist/cjs/AggregateCommandHandler.js.map +1 -1
  7. package/dist/cjs/CqrsContainerBuilder.js +6 -1
  8. package/dist/cjs/CqrsContainerBuilder.js.map +1 -1
  9. package/dist/cjs/EventDispatchPipeline.js +12 -2
  10. package/dist/cjs/EventDispatchPipeline.js.map +1 -1
  11. package/dist/cjs/EventDispatcher.js +39 -10
  12. package/dist/cjs/EventDispatcher.js.map +1 -1
  13. package/dist/cjs/EventStore.js +7 -2
  14. package/dist/cjs/EventStore.js.map +1 -1
  15. package/dist/cjs/SagaEventHandler.js +54 -40
  16. package/dist/cjs/SagaEventHandler.js.map +1 -1
  17. package/dist/cjs/in-memory/InMemoryEventStorage.js +39 -24
  18. package/dist/cjs/in-memory/InMemoryEventStorage.js.map +1 -1
  19. package/dist/cjs/in-memory/InMemoryMessageBus.js +11 -5
  20. package/dist/cjs/in-memory/InMemoryMessageBus.js.map +1 -1
  21. package/dist/cjs/interfaces/IDispatchPipelineProcessor.js.map +1 -1
  22. package/dist/cjs/interfaces/IMessageMeta.js +3 -0
  23. package/dist/cjs/interfaces/IMessageMeta.js.map +1 -0
  24. package/dist/cjs/interfaces/IObservable.js.map +1 -1
  25. package/dist/cjs/interfaces/index.js +1 -0
  26. package/dist/cjs/interfaces/index.js.map +1 -1
  27. package/dist/cjs/mongodb/AbstractMongoAccessor.js +51 -0
  28. package/dist/cjs/mongodb/AbstractMongoAccessor.js.map +1 -0
  29. package/dist/cjs/mongodb/AbstractMongoObjectProjection.js +26 -0
  30. package/dist/cjs/mongodb/AbstractMongoObjectProjection.js.map +1 -0
  31. package/dist/cjs/mongodb/AbstractMongoView.js +57 -0
  32. package/dist/cjs/mongodb/AbstractMongoView.js.map +1 -0
  33. package/dist/cjs/mongodb/IContainer.js +3 -0
  34. package/dist/cjs/mongodb/IContainer.js.map +1 -0
  35. package/dist/cjs/mongodb/MongoEventLocker.js +104 -0
  36. package/dist/cjs/mongodb/MongoEventLocker.js.map +1 -0
  37. package/dist/cjs/mongodb/MongoEventStorage.js +200 -0
  38. package/dist/cjs/mongodb/MongoEventStorage.js.map +1 -0
  39. package/dist/cjs/mongodb/MongoObjectStorage.js +101 -0
  40. package/dist/cjs/mongodb/MongoObjectStorage.js.map +1 -0
  41. package/dist/cjs/mongodb/MongoObjectView.js +41 -0
  42. package/dist/cjs/mongodb/MongoObjectView.js.map +1 -0
  43. package/dist/cjs/mongodb/MongoProjectionDataParams.js +3 -0
  44. package/dist/cjs/mongodb/MongoProjectionDataParams.js.map +1 -0
  45. package/dist/cjs/mongodb/MongoViewLocker.js +136 -0
  46. package/dist/cjs/mongodb/MongoViewLocker.js.map +1 -0
  47. package/dist/cjs/mongodb/index.js +28 -0
  48. package/dist/cjs/mongodb/index.js.map +1 -0
  49. package/dist/cjs/mongodb/registerExitCleanup.js +28 -0
  50. package/dist/cjs/mongodb/registerExitCleanup.js.map +1 -0
  51. package/dist/cjs/mongodb/utils/getEventId.js +14 -0
  52. package/dist/cjs/mongodb/utils/getEventId.js.map +1 -0
  53. package/dist/cjs/mongodb/utils/index.js +18 -0
  54. package/dist/cjs/mongodb/utils/index.js.map +1 -0
  55. package/dist/cjs/rabbitmq/RabbitMqCommandBus.js +21 -8
  56. package/dist/cjs/rabbitmq/RabbitMqCommandBus.js.map +1 -1
  57. package/dist/cjs/rabbitmq/RabbitMqEventBus.js +2 -2
  58. package/dist/cjs/rabbitmq/RabbitMqEventBus.js.map +1 -1
  59. package/dist/cjs/rabbitmq/RabbitMqGateway.js +89 -64
  60. package/dist/cjs/rabbitmq/RabbitMqGateway.js.map +1 -1
  61. package/dist/cjs/redis/AbstractRedisAccessor.js +51 -0
  62. package/dist/cjs/redis/AbstractRedisAccessor.js.map +1 -0
  63. package/dist/cjs/redis/AbstractRedisProjection.js +26 -0
  64. package/dist/cjs/redis/AbstractRedisProjection.js.map +1 -0
  65. package/dist/cjs/redis/IContainer.js +3 -0
  66. package/dist/cjs/redis/IContainer.js.map +1 -0
  67. package/dist/cjs/redis/RedisEventLocker.js +96 -0
  68. package/dist/cjs/redis/RedisEventLocker.js.map +1 -0
  69. package/dist/cjs/redis/RedisObjectStorage.js +125 -0
  70. package/dist/cjs/redis/RedisObjectStorage.js.map +1 -0
  71. package/dist/cjs/redis/RedisProjectionDataParams.js +3 -0
  72. package/dist/cjs/redis/RedisProjectionDataParams.js.map +1 -0
  73. package/dist/cjs/redis/RedisView.js +81 -0
  74. package/dist/cjs/redis/RedisView.js.map +1 -0
  75. package/dist/cjs/redis/RedisViewLocker.js +111 -0
  76. package/dist/cjs/redis/RedisViewLocker.js.map +1 -0
  77. package/dist/cjs/redis/index.js +30 -0
  78. package/dist/cjs/redis/index.js.map +1 -0
  79. package/dist/cjs/redis/utils/getEventId.js +14 -0
  80. package/dist/cjs/redis/utils/getEventId.js.map +1 -0
  81. package/dist/cjs/redis/utils/index.js +18 -0
  82. package/dist/cjs/redis/utils/index.js.map +1 -0
  83. package/dist/cjs/sqlite/AbstractSqliteView.js.map +1 -1
  84. package/dist/cjs/sqlite/SqliteEventStorage.js +215 -0
  85. package/dist/cjs/sqlite/SqliteEventStorage.js.map +1 -0
  86. package/dist/cjs/sqlite/SqliteObjectStorage.js +6 -6
  87. package/dist/cjs/sqlite/SqliteObjectStorage.js.map +1 -1
  88. package/dist/cjs/sqlite/SqliteObjectView.js.map +1 -1
  89. package/dist/cjs/sqlite/index.js +1 -0
  90. package/dist/cjs/sqlite/index.js.map +1 -1
  91. package/dist/cjs/sqlite/utils/bufferToGuid.js +9 -0
  92. package/dist/cjs/sqlite/utils/bufferToGuid.js.map +1 -0
  93. package/dist/cjs/sqlite/utils/getEventId.js +2 -5
  94. package/dist/cjs/sqlite/utils/getEventId.js.map +1 -1
  95. package/dist/cjs/sqlite/utils/guid.js +1 -1
  96. package/dist/cjs/sqlite/utils/guid.js.map +1 -1
  97. package/dist/cjs/sqlite/utils/index.js +1 -0
  98. package/dist/cjs/sqlite/utils/index.js.map +1 -1
  99. package/dist/cjs/telemetry/index.js +20 -0
  100. package/dist/cjs/telemetry/index.js.map +1 -0
  101. package/dist/cjs/telemetry/recordSpanError.js +19 -0
  102. package/dist/cjs/telemetry/recordSpanError.js.map +1 -0
  103. package/dist/cjs/telemetry/spanAttributes.js +26 -0
  104. package/dist/cjs/telemetry/spanAttributes.js.map +1 -0
  105. package/dist/cjs/telemetry/spanContext.js +25 -0
  106. package/dist/cjs/telemetry/spanContext.js.map +1 -0
  107. package/dist/cjs/utils/MapAssertable.js +25 -1
  108. package/dist/cjs/utils/MapAssertable.js.map +1 -1
  109. package/dist/esm/AbstractProjection.js +32 -7
  110. package/dist/esm/AbstractProjection.js.map +1 -1
  111. package/dist/esm/AggregateCommandHandler.js +22 -8
  112. package/dist/esm/AggregateCommandHandler.js.map +1 -1
  113. package/dist/esm/CqrsContainerBuilder.js +6 -1
  114. package/dist/esm/CqrsContainerBuilder.js.map +1 -1
  115. package/dist/esm/EventDispatchPipeline.js +12 -2
  116. package/dist/esm/EventDispatchPipeline.js.map +1 -1
  117. package/dist/esm/EventDispatcher.js +33 -4
  118. package/dist/esm/EventDispatcher.js.map +1 -1
  119. package/dist/esm/EventStore.js +7 -2
  120. package/dist/esm/EventStore.js.map +1 -1
  121. package/dist/esm/SagaEventHandler.js +42 -28
  122. package/dist/esm/SagaEventHandler.js.map +1 -1
  123. package/dist/esm/in-memory/InMemoryEventStorage.js +25 -10
  124. package/dist/esm/in-memory/InMemoryEventStorage.js.map +1 -1
  125. package/dist/esm/in-memory/InMemoryMessageBus.js +11 -5
  126. package/dist/esm/in-memory/InMemoryMessageBus.js.map +1 -1
  127. package/dist/esm/interfaces/IDispatchPipelineProcessor.js.map +1 -1
  128. package/dist/esm/interfaces/IMessageMeta.js +2 -0
  129. package/dist/esm/interfaces/IMessageMeta.js.map +1 -0
  130. package/dist/esm/interfaces/IObservable.js.map +1 -1
  131. package/dist/esm/interfaces/index.js +1 -0
  132. package/dist/esm/interfaces/index.js.map +1 -1
  133. package/dist/esm/mongodb/AbstractMongoAccessor.js +47 -0
  134. package/dist/esm/mongodb/AbstractMongoAccessor.js.map +1 -0
  135. package/dist/esm/mongodb/AbstractMongoObjectProjection.js +22 -0
  136. package/dist/esm/mongodb/AbstractMongoObjectProjection.js.map +1 -0
  137. package/dist/esm/mongodb/AbstractMongoView.js +53 -0
  138. package/dist/esm/mongodb/AbstractMongoView.js.map +1 -0
  139. package/dist/esm/mongodb/IContainer.js +2 -0
  140. package/dist/esm/mongodb/IContainer.js.map +1 -0
  141. package/dist/esm/mongodb/MongoEventLocker.js +100 -0
  142. package/dist/esm/mongodb/MongoEventLocker.js.map +1 -0
  143. package/dist/esm/mongodb/MongoEventStorage.js +196 -0
  144. package/dist/esm/mongodb/MongoEventStorage.js.map +1 -0
  145. package/dist/esm/mongodb/MongoObjectStorage.js +97 -0
  146. package/dist/esm/mongodb/MongoObjectStorage.js.map +1 -0
  147. package/dist/esm/mongodb/MongoObjectView.js +37 -0
  148. package/dist/esm/mongodb/MongoObjectView.js.map +1 -0
  149. package/dist/esm/mongodb/MongoProjectionDataParams.js +2 -0
  150. package/dist/esm/mongodb/MongoProjectionDataParams.js.map +1 -0
  151. package/dist/esm/mongodb/MongoViewLocker.js +132 -0
  152. package/dist/esm/mongodb/MongoViewLocker.js.map +1 -0
  153. package/dist/esm/mongodb/index.js +12 -0
  154. package/dist/esm/mongodb/index.js.map +1 -0
  155. package/dist/esm/mongodb/registerExitCleanup.js +24 -0
  156. package/dist/esm/mongodb/registerExitCleanup.js.map +1 -0
  157. package/dist/esm/mongodb/utils/getEventId.js +10 -0
  158. package/dist/esm/mongodb/utils/getEventId.js.map +1 -0
  159. package/dist/esm/mongodb/utils/index.js +2 -0
  160. package/dist/esm/mongodb/utils/index.js.map +1 -0
  161. package/dist/esm/rabbitmq/RabbitMqCommandBus.js +21 -8
  162. package/dist/esm/rabbitmq/RabbitMqCommandBus.js.map +1 -1
  163. package/dist/esm/rabbitmq/RabbitMqEventBus.js +2 -2
  164. package/dist/esm/rabbitmq/RabbitMqEventBus.js.map +1 -1
  165. package/dist/esm/rabbitmq/RabbitMqGateway.js +69 -44
  166. package/dist/esm/rabbitmq/RabbitMqGateway.js.map +1 -1
  167. package/dist/esm/redis/AbstractRedisAccessor.js +47 -0
  168. package/dist/esm/redis/AbstractRedisAccessor.js.map +1 -0
  169. package/dist/esm/redis/AbstractRedisProjection.js +22 -0
  170. package/dist/esm/redis/AbstractRedisProjection.js.map +1 -0
  171. package/dist/esm/redis/IContainer.js +2 -0
  172. package/dist/esm/redis/IContainer.js.map +1 -0
  173. package/dist/esm/redis/RedisEventLocker.js +92 -0
  174. package/dist/esm/redis/RedisEventLocker.js.map +1 -0
  175. package/dist/esm/redis/RedisObjectStorage.js +121 -0
  176. package/dist/esm/redis/RedisObjectStorage.js.map +1 -0
  177. package/dist/esm/redis/RedisProjectionDataParams.js +2 -0
  178. package/dist/esm/redis/RedisProjectionDataParams.js.map +1 -0
  179. package/dist/esm/redis/RedisView.js +77 -0
  180. package/dist/esm/redis/RedisView.js.map +1 -0
  181. package/dist/esm/redis/RedisViewLocker.js +107 -0
  182. package/dist/esm/redis/RedisViewLocker.js.map +1 -0
  183. package/dist/esm/redis/index.js +14 -0
  184. package/dist/esm/redis/index.js.map +1 -0
  185. package/dist/esm/redis/utils/getEventId.js +10 -0
  186. package/dist/esm/redis/utils/getEventId.js.map +1 -0
  187. package/dist/esm/redis/utils/index.js +2 -0
  188. package/dist/esm/redis/utils/index.js.map +1 -0
  189. package/dist/esm/sqlite/AbstractSqliteView.js.map +1 -1
  190. package/dist/esm/sqlite/SqliteEventStorage.js +211 -0
  191. package/dist/esm/sqlite/SqliteEventStorage.js.map +1 -0
  192. package/dist/esm/sqlite/SqliteObjectStorage.js +7 -7
  193. package/dist/esm/sqlite/SqliteObjectStorage.js.map +1 -1
  194. package/dist/esm/sqlite/SqliteObjectView.js.map +1 -1
  195. package/dist/esm/sqlite/index.js +1 -0
  196. package/dist/esm/sqlite/index.js.map +1 -1
  197. package/dist/esm/sqlite/utils/bufferToGuid.js +5 -0
  198. package/dist/esm/sqlite/utils/bufferToGuid.js.map +1 -0
  199. package/dist/esm/sqlite/utils/getEventId.js +2 -2
  200. package/dist/esm/sqlite/utils/getEventId.js.map +1 -1
  201. package/dist/esm/sqlite/utils/guid.js +1 -1
  202. package/dist/esm/sqlite/utils/guid.js.map +1 -1
  203. package/dist/esm/sqlite/utils/index.js +1 -0
  204. package/dist/esm/sqlite/utils/index.js.map +1 -1
  205. package/dist/esm/telemetry/index.js +4 -0
  206. package/dist/esm/telemetry/index.js.map +1 -0
  207. package/dist/esm/telemetry/recordSpanError.js +16 -0
  208. package/dist/esm/telemetry/recordSpanError.js.map +1 -0
  209. package/dist/esm/telemetry/spanAttributes.js +23 -0
  210. package/dist/esm/telemetry/spanAttributes.js.map +1 -0
  211. package/dist/esm/telemetry/spanContext.js +22 -0
  212. package/dist/esm/telemetry/spanContext.js.map +1 -0
  213. package/dist/esm/utils/MapAssertable.js +25 -1
  214. package/dist/esm/utils/MapAssertable.js.map +1 -1
  215. package/dist/types/AbstractProjection.d.ts +3 -1
  216. package/dist/types/AggregateCommandHandler.d.ts +3 -3
  217. package/dist/types/EventDispatchPipeline.d.ts +3 -1
  218. package/dist/types/EventDispatcher.d.ts +9 -1
  219. package/dist/types/EventStore.d.ts +4 -2
  220. package/dist/types/SagaEventHandler.d.ts +3 -3
  221. package/dist/types/in-memory/InMemoryEventStorage.d.ts +2 -1
  222. package/dist/types/in-memory/InMemoryMessageBus.d.ts +3 -3
  223. package/dist/types/interfaces/ICommandBus.d.ts +3 -2
  224. package/dist/types/interfaces/IContainer.d.ts +7 -0
  225. package/dist/types/interfaces/IDispatchPipelineProcessor.d.ts +2 -0
  226. package/dist/types/interfaces/IEventDispatcher.d.ts +3 -0
  227. package/dist/types/interfaces/IMessageMeta.d.ts +4 -0
  228. package/dist/types/interfaces/IObservable.d.ts +2 -1
  229. package/dist/types/interfaces/index.d.ts +1 -0
  230. package/dist/types/mongodb/AbstractMongoAccessor.d.ts +26 -0
  231. package/dist/types/mongodb/AbstractMongoObjectProjection.d.ts +8 -0
  232. package/dist/types/mongodb/AbstractMongoView.d.ts +25 -0
  233. package/dist/types/mongodb/IContainer.d.ts +11 -0
  234. package/dist/types/mongodb/MongoEventLocker.d.ts +47 -0
  235. package/dist/types/mongodb/MongoEventStorage.d.ts +27 -0
  236. package/dist/types/mongodb/MongoObjectStorage.d.ts +26 -0
  237. package/dist/types/mongodb/MongoObjectView.d.ts +16 -0
  238. package/dist/types/mongodb/MongoProjectionDataParams.d.ts +14 -0
  239. package/dist/types/mongodb/MongoViewLocker.d.ts +43 -0
  240. package/dist/types/mongodb/index.d.ts +11 -0
  241. package/dist/types/mongodb/registerExitCleanup.d.ts +10 -0
  242. package/dist/types/mongodb/utils/getEventId.d.ts +5 -0
  243. package/dist/types/mongodb/utils/index.d.ts +1 -0
  244. package/dist/types/rabbitmq/IContainer.d.ts +2 -2
  245. package/dist/types/rabbitmq/RabbitMqCommandBus.d.ts +5 -4
  246. package/dist/types/rabbitmq/RabbitMqEventBus.d.ts +2 -2
  247. package/dist/types/rabbitmq/RabbitMqGateway.d.ts +4 -4
  248. package/dist/types/redis/AbstractRedisAccessor.d.ts +26 -0
  249. package/dist/types/redis/AbstractRedisProjection.d.ts +8 -0
  250. package/dist/types/redis/IContainer.d.ts +7 -0
  251. package/dist/types/redis/RedisEventLocker.d.ts +36 -0
  252. package/dist/types/redis/RedisObjectStorage.d.ts +26 -0
  253. package/dist/types/redis/RedisProjectionDataParams.d.ts +21 -0
  254. package/dist/types/redis/RedisView.d.ts +33 -0
  255. package/dist/types/redis/RedisViewLocker.d.ts +35 -0
  256. package/dist/types/redis/index.d.ts +13 -0
  257. package/dist/types/redis/utils/getEventId.d.ts +5 -0
  258. package/dist/types/redis/utils/index.d.ts +1 -0
  259. package/dist/types/sqlite/AbstractSqliteView.d.ts +2 -2
  260. package/dist/types/sqlite/SqliteEventStorage.d.ts +18 -0
  261. package/dist/types/sqlite/SqliteObjectStorage.d.ts +7 -7
  262. package/dist/types/sqlite/SqliteObjectView.d.ts +7 -7
  263. package/dist/types/sqlite/index.d.ts +1 -0
  264. package/dist/types/sqlite/utils/bufferToGuid.d.ts +4 -0
  265. package/dist/types/sqlite/utils/getEventId.d.ts +1 -1
  266. package/dist/types/sqlite/utils/guid.d.ts +2 -1
  267. package/dist/types/sqlite/utils/index.d.ts +1 -0
  268. package/dist/types/telemetry/index.d.ts +3 -0
  269. package/dist/types/telemetry/recordSpanError.d.ts +6 -0
  270. package/dist/types/telemetry/spanAttributes.d.ts +14 -0
  271. package/dist/types/telemetry/spanContext.d.ts +12 -0
  272. package/dist/types/utils/MapAssertable.d.ts +8 -0
  273. package/package.json +43 -13
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryEventStorage.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryEventStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InMemoryEventStorage.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryEventStorage.ts"],"names":[],"mappings":"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"}
@@ -50,10 +50,16 @@ export class InMemoryMessageBus {
50
50
  throw new Error(`No ${messageType} subscribers found`);
51
51
  this.handlers.get(messageType)?.delete(handler);
52
52
  }
53
- async send(commandOrType, aggregateId, options) {
54
- const command = typeof commandOrType === 'string'
55
- ? { type: commandOrType, aggregateId, ...options }
56
- : commandOrType;
53
+ async send(commandOrType, aggregateIdOrMeta, options) {
54
+ let command;
55
+ let meta;
56
+ if (typeof commandOrType === 'string') {
57
+ command = { type: commandOrType, aggregateId: aggregateIdOrMeta, ...options };
58
+ }
59
+ else {
60
+ command = commandOrType;
61
+ meta = aggregateIdOrMeta;
62
+ }
57
63
  assertMessage(command, 'command');
58
64
  const handlers = this.handlers.get(command.type);
59
65
  if (!handlers || !handlers.size)
@@ -61,7 +67,7 @@ export class InMemoryMessageBus {
61
67
  if (handlers.size > 1)
62
68
  throw new Error(`More than one '${command.type}' subscriber found`);
63
69
  const commandHandler = handlers.values().next().value;
64
- return commandHandler(command);
70
+ return commandHandler(command, meta);
65
71
  }
66
72
  /** @deprecated Use {@link send} */
67
73
  sendRaw(command) {
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryMessageBus.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryMessageBus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InMemoryMessageBus.js","sourceRoot":"","sources":["../../../src/in-memory/InMemoryMessageBus.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IDispatchPipelineProcessor.js","sourceRoot":"","sources":["../../../src/interfaces/IDispatchPipelineProcessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAmCzC,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAY,EAAqC,EAAE,CAC9F,QAAQ,CAAC,GAAG,CAAC;OACV,SAAS,IAAI,GAAG;OAChB,OAAQ,GAAkC,CAAC,OAAO,KAAK,UAAU,CAAC"}
1
+ {"version":3,"file":"IDispatchPipelineProcessor.js","sourceRoot":"","sources":["../../../src/interfaces/IDispatchPipelineProcessor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAqCzC,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAY,EAAqC,EAAE,CAC9F,QAAQ,CAAC,GAAG,CAAC;OACV,SAAS,IAAI,GAAG;OAChB,OAAQ,GAAkC,CAAC,OAAO,KAAK,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IMessageMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IMessageMeta.js","sourceRoot":"","sources":["../../../src/interfaces/IMessageMeta.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"IObservable.js","sourceRoot":"","sources":["../../../src/interfaces/IObservable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAmBzC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAY,EAAsB,EAAE,CAChE,QAAQ,CAAC,GAAG,CAAC;OACV,IAAI,IAAI,GAAG;OACX,OAAO,GAAG,CAAC,EAAE,KAAK,UAAU;OAC5B,KAAK,IAAI,GAAG;OACZ,OAAO,GAAG,CAAC,GAAG,KAAK,UAAU,CAAC"}
1
+ {"version":3,"file":"IObservable.js","sourceRoot":"","sources":["../../../src/interfaces/IObservable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAmBzC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAY,EAAsB,EAAE,CAChE,QAAQ,CAAC,GAAG,CAAC;OACV,IAAI,IAAI,GAAG;OACX,OAAO,GAAG,CAAC,EAAE,KAAK,UAAU;OAC5B,KAAK,IAAI,GAAG;OACZ,OAAO,GAAG,CAAC,GAAG,KAAK,UAAU,CAAC"}
@@ -18,6 +18,7 @@ export * from "./IIdentifierProvider.js";
18
18
  export * from "./ILocker.js";
19
19
  export * from "./ILogger.js";
20
20
  export * from "./IMessage.js";
21
+ export * from "./IMessageMeta.js";
21
22
  export * from "./IMutableState.js";
22
23
  export * from "./IObjectStorage.js";
23
24
  export * from "./IObservable.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iCAAiC,CAAC;AAChD,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iCAAiC,CAAC;AAChD,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { Lock } from "../utils/index.js";
2
+ /**
3
+ * Abstract base class for accessing a MongoDB database.
4
+ *
5
+ * Manages the database connection lifecycle, ensuring initialization via `assertConnection`.
6
+ * Supports providing a Db instance directly or a factory function for lazy initialization.
7
+ *
8
+ * Subclasses must implement the `initialize` method for specific setup tasks
9
+ * (e.g. creating collections or indexes).
10
+ */
11
+ export class AbstractMongoAccessor {
12
+ db;
13
+ #dbFactory;
14
+ #initLocker = new Lock();
15
+ #initialized = false;
16
+ constructor(c) {
17
+ if (!c.viewModelMongoDb && !c.viewModelMongoDbFactory)
18
+ throw new TypeError('either viewModelMongoDb or viewModelMongoDbFactory argument required');
19
+ this.db = c.viewModelMongoDb;
20
+ this.#dbFactory = c.viewModelMongoDbFactory;
21
+ }
22
+ /**
23
+ * Ensures that the MongoDB connection is initialized.
24
+ * Uses a lock to prevent race conditions during concurrent initialization attempts.
25
+ * If the database is not already set, it creates one using the provided factory
26
+ * and then calls the `initialize` method.
27
+ *
28
+ * This method is idempotent and safe to call multiple times.
29
+ */
30
+ async assertConnection() {
31
+ if (this.#initialized)
32
+ return;
33
+ try {
34
+ await this.#initLocker.acquire();
35
+ if (this.#initialized)
36
+ return;
37
+ if (!this.db)
38
+ this.db = await this.#dbFactory();
39
+ await this.initialize(this.db);
40
+ this.#initialized = true;
41
+ }
42
+ finally {
43
+ this.#initLocker.release();
44
+ }
45
+ }
46
+ }
47
+ //# sourceMappingURL=AbstractMongoAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractMongoAccessor.js","sourceRoot":"","sources":["../../../src/mongodb/AbstractMongoAccessor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,OAAgB,qBAAqB;IAEhC,EAAE,CAAiB;IACpB,UAAU,CAAuC;IACjD,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;IAClC,YAAY,GAAG,KAAK,CAAC;IAErB,YAAY,CAA4E;QACvF,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,uBAAuB;YACpD,MAAM,IAAI,SAAS,CAAC,sEAAsE,CAAC,CAAC;QAE7F,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,uBAAuB,CAAC;IAC7C,CAAC;IAID;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB;QACrB,IAAI,IAAI,CAAC,YAAY;YACpB,OAAO;QAER,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,YAAY;gBACpB,OAAO;YAER,IAAI,CAAC,IAAI,CAAC,EAAE;gBACX,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,UAAW,EAAE,CAAC;YAEpC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1B,CAAC;gBACO,CAAC;YACR,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,22 @@
1
+ import { AbstractProjection } from "../AbstractProjection.js";
2
+ import { MongoObjectView } from "./MongoObjectView.js";
3
+ export class AbstractMongoObjectProjection extends AbstractProjection {
4
+ static get tableName() {
5
+ throw new Error('tableName is not defined');
6
+ }
7
+ static get schemaVersion() {
8
+ throw new Error('schemaVersion is not defined');
9
+ }
10
+ constructor({ viewModelMongoDb, viewModelMongoDbFactory, logger }) {
11
+ super({ logger });
12
+ this.view = new MongoObjectView({
13
+ schemaVersion: new.target.schemaVersion,
14
+ projectionName: new.target.name,
15
+ viewModelMongoDb,
16
+ viewModelMongoDbFactory,
17
+ tableNamePrefix: new.target.tableName,
18
+ logger
19
+ });
20
+ }
21
+ }
22
+ //# sourceMappingURL=AbstractMongoObjectProjection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractMongoObjectProjection.js","sourceRoot":"","sources":["../../../src/mongodb/AbstractMongoObjectProjection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,OAAgB,6BAAiC,SAAQ,kBAAsC;IAEpG,MAAM,KAAK,SAAS;QACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,aAAa;QACvB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACjD,CAAC;IAED,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,EACsB;QAEpF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAElB,IAAI,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC;YAC/B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;YACvC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;YAC/B,gBAAgB;YAChB,uBAAuB;YACvB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS;YACrC,MAAM;SACN,CAAC,CAAC;IACJ,CAAC;CACD"}
@@ -0,0 +1,53 @@
1
+ import { MongoViewLocker } from "./MongoViewLocker.js";
2
+ import { MongoEventLocker } from "./MongoEventLocker.js";
3
+ import { AbstractMongoAccessor } from "./AbstractMongoAccessor.js";
4
+ import { assertString } from "../utils/assert.js";
5
+ /**
6
+ * Base class for MongoDB-backed projection views with restore locking and last-processed-event tracking
7
+ */
8
+ export class AbstractMongoView extends AbstractMongoAccessor {
9
+ schemaVersion;
10
+ viewLocker;
11
+ eventLocker;
12
+ logger;
13
+ get ready() {
14
+ return this.viewLocker.ready;
15
+ }
16
+ constructor(options) {
17
+ assertString(options.projectionName, 'projectionName');
18
+ assertString(options.schemaVersion, 'schemaVersion');
19
+ super(options);
20
+ this.schemaVersion = options.schemaVersion;
21
+ this.viewLocker = new MongoViewLocker(options);
22
+ this.eventLocker = new MongoEventLocker(options);
23
+ this.logger = options.logger && 'child' in options.logger ?
24
+ options.logger.child({ serviceName: new.target.name }) :
25
+ options.logger;
26
+ }
27
+ // eslint-disable-next-line class-methods-use-this
28
+ initialize(_db) {
29
+ // Lockers initialize themselves on first use
30
+ }
31
+ async lock() {
32
+ return this.viewLocker.lock();
33
+ }
34
+ async unlock() {
35
+ await this.viewLocker.unlock();
36
+ }
37
+ once(event) {
38
+ return this.viewLocker.once(event);
39
+ }
40
+ getLastEvent() {
41
+ return this.eventLocker.getLastEvent();
42
+ }
43
+ tryMarkAsProjecting(event) {
44
+ return this.eventLocker.tryMarkAsProjecting(event);
45
+ }
46
+ markAsProjected(event) {
47
+ return this.eventLocker.markAsProjected(event);
48
+ }
49
+ markAsLastEvent(event) {
50
+ return this.eventLocker.markAsLastEvent(event);
51
+ }
52
+ }
53
+ //# sourceMappingURL=AbstractMongoView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractMongoView.js","sourceRoot":"","sources":["../../../src/mongodb/AbstractMongoView.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAA8B,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAA+B,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,MAAM,OAAgB,iBAAkB,SAAQ,qBAAqB;IAEjD,aAAa,CAAS;IACtB,UAAU,CAAkB;IAC5B,WAAW,CAAmB;IACvC,MAAM,CAAsB;IAEtC,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,YAAY,OAEY;QACvB,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACvD,YAAY,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAErD,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;YAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,MAAM,CAAC;IACjB,CAAC;IAED,kDAAkD;IACxC,UAAU,CAAC,GAAO;QAC3B,6CAA6C;IAC9C,CAAC;IAED,KAAK,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM;QACX,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,KAAc;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,YAAY;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAED,mBAAmB,CAAC,KAAa;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,eAAe,CAAC,KAAa;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,eAAe,CAAC,KAAa;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;CACD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IContainer.js","sourceRoot":"","sources":["../../../src/mongodb/IContainer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,100 @@
1
+ import { assertNonNegativeInteger, assertString } from "../utils/assert.js";
2
+ import { AbstractMongoAccessor } from "./AbstractMongoAccessor.js";
3
+ import { getEventId } from "./utils/index.js";
4
+ /**
5
+ * MongoDB-backed implementation of IEventLocker.
6
+ *
7
+ * Uses two collections:
8
+ * - `ncqrs_event_locks`: tracks per-event processing state
9
+ * - `ncqrs_view_locks`: stores the last processed event per projection
10
+ *
11
+ * Event lock state machine: nil → processing → processed
12
+ */
13
+ export class MongoEventLocker extends AbstractMongoAccessor {
14
+ static DEFAULT_EVENT_LOCK_TTL = 15_000;
15
+ static DEFAULT_EVENT_LOCKS_COLLECTION = 'ncqrs_event_locks';
16
+ static DEFAULT_VIEW_LOCKS_COLLECTION = 'ncqrs_view_locks';
17
+ #lockIdPrefix;
18
+ #viewLockId;
19
+ #eventLockTtl;
20
+ #eventLocksCollectionName;
21
+ #viewLocksCollectionName;
22
+ #eventLocksCollection;
23
+ #viewLocksCollection;
24
+ constructor(o) {
25
+ super(o);
26
+ assertString(o.projectionName, 'projectionName');
27
+ assertString(o.schemaVersion, 'schemaVersion');
28
+ if (o.eventLockTtl !== undefined)
29
+ assertNonNegativeInteger(o.eventLockTtl, 'eventLockTtl');
30
+ if (o.eventLocksCollection !== undefined)
31
+ assertString(o.eventLocksCollection, 'eventLocksCollection');
32
+ if (o.viewLocksCollection !== undefined)
33
+ assertString(o.viewLocksCollection, 'viewLocksCollection');
34
+ this.#eventLocksCollectionName = o.eventLocksCollection ?? MongoEventLocker.DEFAULT_EVENT_LOCKS_COLLECTION;
35
+ this.#viewLocksCollectionName = o.viewLocksCollection ?? MongoEventLocker.DEFAULT_VIEW_LOCKS_COLLECTION;
36
+ this.#lockIdPrefix = `${o.projectionName}:${o.schemaVersion}`;
37
+ this.#viewLockId = `${o.projectionName}:${o.schemaVersion}`;
38
+ this.#eventLockTtl = o.eventLockTtl ?? MongoEventLocker.DEFAULT_EVENT_LOCK_TTL;
39
+ }
40
+ async initialize(db) {
41
+ this.#eventLocksCollection = db.collection(this.#eventLocksCollectionName);
42
+ this.#viewLocksCollection = db.collection(this.#viewLocksCollectionName);
43
+ await this.#eventLocksCollection.createIndex({ processingAt: 1 }, { sparse: true });
44
+ }
45
+ #eventLockId(eventId) {
46
+ return `${this.#lockIdPrefix}:${eventId}`;
47
+ }
48
+ async tryMarkAsProjecting(event) {
49
+ await this.assertConnection();
50
+ const eventId = getEventId(event);
51
+ const lockId = this.#eventLockId(eventId);
52
+ const now = new Date();
53
+ const lockExpiry = new Date(now.getTime() - this.#eventLockTtl);
54
+ // Claim an expired lock if one exists
55
+ const updateResult = await this.#eventLocksCollection.updateOne({
56
+ _id: lockId,
57
+ processedAt: null,
58
+ $or: [
59
+ { processingAt: null },
60
+ { processingAt: { $exists: false } },
61
+ { processingAt: { $lt: lockExpiry } }
62
+ ]
63
+ }, { $set: { processingAt: now, processedAt: null } });
64
+ if (updateResult.modifiedCount === 1)
65
+ return true;
66
+ // No existing document matched — try to insert a fresh lock
67
+ try {
68
+ await this.#eventLocksCollection.insertOne({ _id: lockId, processingAt: now, processedAt: null });
69
+ return true;
70
+ }
71
+ catch (err) {
72
+ if (typeof err === 'object' && err !== null && 'code' in err && err.code === 11000)
73
+ return false; // Document exists and is actively locked
74
+ throw err;
75
+ }
76
+ }
77
+ async markAsProjected(event) {
78
+ await this.assertConnection();
79
+ const eventId = getEventId(event);
80
+ const lockId = this.#eventLockId(eventId);
81
+ const result = await this.#eventLocksCollection.findOneAndUpdate({ _id: lockId, processedAt: null }, { $set: { processedAt: new Date() } });
82
+ if (!result)
83
+ throw new Error(`Event ${event.id} could not be marked as processed`);
84
+ }
85
+ async markAsLastEvent(event) {
86
+ await this.assertConnection();
87
+ await this.#viewLocksCollection.updateOne({ _id: this.#viewLockId }, {
88
+ $set: { lastEvent: JSON.stringify(event) },
89
+ $setOnInsert: { _id: this.#viewLockId }
90
+ }, { upsert: true });
91
+ }
92
+ async getLastEvent() {
93
+ await this.assertConnection();
94
+ const doc = await this.#viewLocksCollection.findOne({ _id: this.#viewLockId });
95
+ if (!doc?.lastEvent)
96
+ return undefined;
97
+ return JSON.parse(doc.lastEvent);
98
+ }
99
+ }
100
+ //# sourceMappingURL=MongoEventLocker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoEventLocker.js","sourceRoot":"","sources":["../../../src/mongodb/MongoEventLocker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAsC9C;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAiB,SAAQ,qBAAqB;IAE1D,MAAM,CAAC,sBAAsB,GAAG,MAAM,CAAC;IACvC,MAAM,CAAC,8BAA8B,GAAG,mBAAmB,CAAC;IAC5D,MAAM,CAAC,6BAA6B,GAAG,kBAAkB,CAAC;IAEjD,aAAa,CAAS;IACtB,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,yBAAyB,CAAS;IAClC,wBAAwB,CAAS;IAC1C,qBAAqB,CAA4C;IACjE,oBAAoB,CAA2C;IAE/D,YAAY,CACa;QACxB,KAAK,CAAC,CAAC,CAAC,CAAC;QAET,YAAY,CAAC,CAAC,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACjD,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS;YAC/B,wBAAwB,CAAC,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC,CAAC,oBAAoB,KAAK,SAAS;YACvC,YAAY,CAAC,CAAC,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC,mBAAmB,KAAK,SAAS;YACtC,YAAY,CAAC,CAAC,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;QAE5D,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC,oBAAoB,IAAI,gBAAgB,CAAC,8BAA8B,CAAC;QAC3G,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC,mBAAmB,IAAI,gBAAgB,CAAC,6BAA6B,CAAC;QACxG,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QAC9D,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5D,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,YAAY,IAAI,gBAAgB,CAAC,sBAAsB,CAAC;IAChF,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,EAAM;QAChC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,UAAU,CAAoB,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC9F,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,UAAU,CAAmB,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAE3F,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,YAAY,CAAC,OAAe;QAC3B,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,OAAO,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAAa;QACtC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QAEhE,sCAAsC;QACtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,qBAAsB,CAAC,SAAS,CAC/D;YACC,GAAG,EAAE,MAAM;YACX,WAAW,EAAE,IAAI;YACjB,GAAG,EAAE;gBACJ,EAAE,YAAY,EAAE,IAAI,EAAE;gBACtB,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;gBACpC,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE;aACrC;SACD,EACD,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAClD,CAAC;QAEF,IAAI,YAAY,CAAC,aAAa,KAAK,CAAC;YACnC,OAAO,IAAI,CAAC;QAEb,4DAA4D;QAC5D,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,qBAAsB,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACnG,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,GAAY,EAAE,CAAC;YACrB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,IAAI,GAAG,IAAK,GAAwB,CAAC,IAAI,KAAK,KAAK;gBACvG,OAAO,KAAK,CAAC,CAAC,yCAAyC;YAExD,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAa;QAClC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAsB,CAAC,gBAAgB,CAChE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAClC,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,CACrC,CAAC;QAEF,IAAI,CAAC,MAAM;YACV,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE,mCAAmC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAa;QAClC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,MAAM,IAAI,CAAC,oBAAqB,CAAC,SAAS,CACzC,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,EACzB;YACC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC1C,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE;SACvC,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CAChB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QACjB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,oBAAqB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,GAAG,EAAE,SAAS;YAClB,OAAO,SAAS,CAAC;QAElB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC"}
@@ -0,0 +1,196 @@
1
+ import { ObjectId } from 'mongodb';
2
+ import { parseSagaId } from "../utils/index.js";
3
+ import { ConcurrencyError } from "../errors/index.js";
4
+ import { assertFunction, assertString } from "../utils/assert.js";
5
+ import { registerExitCleanup } from "./registerExitCleanup.js";
6
+ function toObjectId(id) {
7
+ return new ObjectId(String(id));
8
+ }
9
+ function isHexObjectId(value) {
10
+ return typeof value === 'string' && value.length === 24 && /^[0-9a-f]{24}$/i.test(value);
11
+ }
12
+ function toObjectIdOrString(aggregateId) {
13
+ if (isHexObjectId(aggregateId))
14
+ return toObjectId(aggregateId);
15
+ return String(aggregateId);
16
+ }
17
+ function toEvent(doc) {
18
+ const { _id, aggregateId, ...rest } = doc;
19
+ return {
20
+ ...rest,
21
+ id: _id.toHexString(),
22
+ ...aggregateId && {
23
+ aggregateId: aggregateId instanceof ObjectId ? aggregateId.toHexString() : aggregateId
24
+ }
25
+ };
26
+ }
27
+ function toEventDocument(event) {
28
+ const { id, aggregateId, ...rest } = event;
29
+ return {
30
+ ...rest,
31
+ _id: id !== undefined ? toObjectId(id) : new ObjectId(),
32
+ ...aggregateId && {
33
+ aggregateId: toObjectIdOrString(aggregateId)
34
+ }
35
+ };
36
+ }
37
+ /**
38
+ * MongoDB-backed event storage for node-cqrs.
39
+ * Implements IEventStorageReader, IIdentifierProvider, and IDispatchPipelineProcessor.
40
+ */
41
+ export class MongoEventStorage {
42
+ static EVENTS_COLLECTION = 'events';
43
+ #initPromise;
44
+ constructor({ mongoDbFactory, mongoEventStorageConfig, process }) {
45
+ assertFunction(mongoDbFactory, 'mongoDbFactory');
46
+ const collectionName = mongoEventStorageConfig?.collection ?? MongoEventStorage.EVENTS_COLLECTION;
47
+ assertString(collectionName, 'mongoEventStorageConfig.collection');
48
+ this.#initPromise = MongoEventStorage.#init(mongoDbFactory, collectionName);
49
+ if (process) {
50
+ registerExitCleanup(process, async () => {
51
+ const { db } = await this.#initPromise;
52
+ await db.client.close();
53
+ });
54
+ }
55
+ }
56
+ static async #init(factory, collectionName) {
57
+ const db = await factory();
58
+ const collection = db.collection(collectionName);
59
+ await Promise.all([
60
+ collection.createIndex({ aggregateId: 1, aggregateVersion: 1 }, { unique: true, sparse: true }),
61
+ collection.createIndex({ 'sagaOrigins.$**': 1 }),
62
+ collection.createIndex({ type: 1, _id: 1 })
63
+ ]);
64
+ return { db, collection };
65
+ }
66
+ // eslint-disable-next-line class-methods-use-this
67
+ getNewId() {
68
+ return new ObjectId().toHexString();
69
+ }
70
+ async commitEvents(events, options) {
71
+ if (options?.ignoreConcurrencyError)
72
+ throw new Error('ignoreConcurrencyError is not supported by MongoEventStorage');
73
+ const { collection } = await this.#initPromise;
74
+ const docs = events.map(toEventDocument);
75
+ const insertedIds = [];
76
+ try {
77
+ for (const doc of docs) {
78
+ await collection.insertOne(doc);
79
+ insertedIds.push(doc._id);
80
+ }
81
+ }
82
+ catch (err) {
83
+ if (insertedIds.length)
84
+ await collection.deleteMany({ _id: { $in: insertedIds } });
85
+ if (typeof err === 'object' && err !== null && 'code' in err && err.code === 11000)
86
+ throw new ConcurrencyError('Concurrency conflict: duplicate event version');
87
+ throw err;
88
+ }
89
+ docs.forEach((doc, i) => {
90
+ events[i].id = doc._id.toHexString();
91
+ });
92
+ return events;
93
+ }
94
+ async *getAggregateEvents(aggregateId, options) {
95
+ const { collection } = await this.#initPromise;
96
+ const filter = {
97
+ aggregateId: toObjectIdOrString(aggregateId)
98
+ };
99
+ const snapshotVersion = options?.snapshot?.aggregateVersion;
100
+ if (snapshotVersion !== undefined)
101
+ filter.aggregateVersion = { $gt: snapshotVersion };
102
+ const hasTypeFilter = options?.eventTypes !== undefined && options.eventTypes.length > 0;
103
+ if (hasTypeFilter)
104
+ filter.type = { $in: options.eventTypes };
105
+ const cursor = collection.find(filter, {
106
+ sort: { aggregateVersion: 1 }
107
+ });
108
+ let lastDoc;
109
+ for await (const doc of cursor) {
110
+ lastDoc = doc;
111
+ yield toEvent(doc);
112
+ }
113
+ if (options?.tail === 'last' && hasTypeFilter) {
114
+ const tailFilter = {
115
+ aggregateId: toObjectIdOrString(aggregateId),
116
+ ...snapshotVersion && {
117
+ aggregateVersion: { $gt: snapshotVersion }
118
+ }
119
+ };
120
+ const tailDoc = await collection.findOne(tailFilter, {
121
+ sort: { aggregateVersion: -1 }
122
+ });
123
+ if (tailDoc && (!lastDoc || tailDoc._id.toHexString() !== lastDoc._id.toHexString()))
124
+ yield toEvent(tailDoc);
125
+ }
126
+ }
127
+ async *getSagaEvents(sagaId, { beforeEvent }) {
128
+ if (typeof beforeEvent?.id !== 'string' || !beforeEvent.id.length)
129
+ throw new TypeError('beforeEvent.id must be a non-empty String');
130
+ const { sagaDescriptor, originEventId } = parseSagaId(sagaId);
131
+ if (beforeEvent.sagaOrigins?.[sagaDescriptor] !== originEventId)
132
+ throw new TypeError('beforeEvent.sagaOrigins does not match sagaId');
133
+ const { collection } = await this.#initPromise;
134
+ const originObjectId = toObjectId(originEventId);
135
+ const beforeObjectId = toObjectId(beforeEvent.id);
136
+ const [originDoc, beforeDoc] = await Promise.all([
137
+ collection.findOne({ _id: originObjectId }),
138
+ collection.findOne({ _id: beforeObjectId })
139
+ ]);
140
+ if (!originDoc)
141
+ throw new Error(`origin event ${originEventId} not found`);
142
+ if (!beforeDoc)
143
+ throw new Error(`beforeEvent ${beforeEvent.id} not found`);
144
+ const filter = {
145
+ $or: [
146
+ { _id: originObjectId },
147
+ {
148
+ [`sagaOrigins.${sagaDescriptor}`]: originEventId,
149
+ _id: {
150
+ $gt: originObjectId,
151
+ $lt: beforeObjectId
152
+ }
153
+ }
154
+ ]
155
+ };
156
+ const cursor = collection.find(filter, {
157
+ sort: { _id: 1 }
158
+ });
159
+ for await (const doc of cursor)
160
+ yield toEvent(doc);
161
+ }
162
+ async *getEventsByTypes(eventTypes, options) {
163
+ if (options?.afterEvent !== undefined && (typeof options.afterEvent.id !== 'string' || !options.afterEvent.id.length))
164
+ throw new TypeError('options.afterEvent.id must be a non-empty String');
165
+ const { collection } = await this.#initPromise;
166
+ const filter = {
167
+ type: { $in: eventTypes }
168
+ };
169
+ if (options?.afterEvent?.id)
170
+ filter._id = { $gt: toObjectId(options.afterEvent.id) };
171
+ const cursor = collection.find(filter, {
172
+ sort: { _id: 1 }
173
+ });
174
+ for await (const doc of cursor)
175
+ yield toEvent(doc);
176
+ }
177
+ /**
178
+ * Processes a batch of dispatch pipeline items, commits the events to MongoDB,
179
+ * and returns the original batch.
180
+ *
181
+ * This method is part of the `IDispatchPipelineProcessor` interface.
182
+ */
183
+ async process(batch) {
184
+ const events = [];
185
+ for (const { event } of batch) {
186
+ if (!event)
187
+ throw new Error('Event batch does not contain `event`');
188
+ events.push(event);
189
+ }
190
+ await this.commitEvents(events, {
191
+ ignoreConcurrencyError: batch[0]?.ignoreConcurrencyError
192
+ });
193
+ return batch;
194
+ }
195
+ }
196
+ //# sourceMappingURL=MongoEventStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoEventStorage.js","sourceRoot":"","sources":["../../../src/mongodb/MongoEventStorage.ts"],"names":[],"mappings":"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"}