@powerhousedao/reactor 4.1.0-dev.12 → 4.1.0-dev.121

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 (366) hide show
  1. package/dist/src/cache/buffer/ring-buffer.d.ts +37 -0
  2. package/dist/src/cache/buffer/ring-buffer.d.ts.map +1 -0
  3. package/dist/src/cache/buffer/ring-buffer.js +69 -0
  4. package/dist/src/cache/buffer/ring-buffer.js.map +1 -0
  5. package/dist/src/cache/index.d.ts +3 -0
  6. package/dist/src/cache/index.d.ts.map +1 -0
  7. package/dist/src/cache/index.js +2 -0
  8. package/dist/src/cache/index.js.map +1 -0
  9. package/dist/src/cache/kysely-operation-index.d.ts +13 -0
  10. package/dist/src/cache/kysely-operation-index.d.ts.map +1 -0
  11. package/dist/src/cache/kysely-operation-index.js +207 -0
  12. package/dist/src/cache/kysely-operation-index.js.map +1 -0
  13. package/dist/src/cache/kysely-write-cache.d.ts +134 -0
  14. package/dist/src/cache/kysely-write-cache.d.ts.map +1 -0
  15. package/dist/src/cache/kysely-write-cache.js +375 -0
  16. package/dist/src/cache/kysely-write-cache.js.map +1 -0
  17. package/dist/src/cache/lru/lru-tracker.d.ts +15 -0
  18. package/dist/src/cache/lru/lru-tracker.d.ts.map +1 -0
  19. package/dist/src/cache/lru/lru-tracker.js +96 -0
  20. package/dist/src/cache/lru/lru-tracker.js.map +1 -0
  21. package/dist/src/cache/operation-index-types.d.ts +49 -0
  22. package/dist/src/cache/operation-index-types.d.ts.map +1 -0
  23. package/dist/src/cache/operation-index-types.js +4 -0
  24. package/dist/src/cache/operation-index-types.js.map +1 -0
  25. package/dist/src/cache/write/interfaces.d.ts +83 -0
  26. package/dist/src/cache/write/interfaces.d.ts.map +1 -0
  27. package/dist/src/cache/write/interfaces.js +2 -0
  28. package/dist/src/cache/write/interfaces.js.map +1 -0
  29. package/dist/src/cache/write-cache-types.d.ts +42 -0
  30. package/dist/src/cache/write-cache-types.d.ts.map +1 -0
  31. package/dist/src/cache/write-cache-types.js +2 -0
  32. package/dist/src/cache/write-cache-types.js.map +1 -0
  33. package/dist/src/client/reactor-client.d.ts +103 -0
  34. package/dist/src/client/reactor-client.d.ts.map +1 -0
  35. package/dist/src/client/reactor-client.js +184 -0
  36. package/dist/src/client/reactor-client.js.map +1 -0
  37. package/dist/src/client/types.d.ts +213 -0
  38. package/dist/src/client/types.d.ts.map +1 -0
  39. package/dist/src/client/types.js +14 -0
  40. package/dist/src/client/types.js.map +1 -0
  41. package/dist/src/core/builder.d.ts +20 -0
  42. package/dist/src/core/builder.d.ts.map +1 -0
  43. package/dist/src/core/builder.js +47 -0
  44. package/dist/src/core/builder.js.map +1 -0
  45. package/dist/src/core/reactor-builder.d.ts +37 -0
  46. package/dist/src/core/reactor-builder.d.ts.map +1 -0
  47. package/dist/src/core/reactor-builder.js +138 -0
  48. package/dist/src/core/reactor-builder.js.map +1 -0
  49. package/dist/src/core/reactor.d.ts +111 -0
  50. package/dist/src/core/reactor.d.ts.map +1 -0
  51. package/dist/src/core/reactor.js +952 -0
  52. package/dist/src/core/reactor.js.map +1 -0
  53. package/dist/src/core/types.d.ts +183 -0
  54. package/dist/src/core/types.d.ts.map +1 -0
  55. package/dist/src/core/types.js +2 -0
  56. package/dist/src/core/types.js.map +1 -0
  57. package/dist/src/core/utils.d.ts +51 -0
  58. package/dist/src/core/utils.d.ts.map +1 -0
  59. package/dist/src/core/utils.js +141 -0
  60. package/dist/src/core/utils.js.map +1 -0
  61. package/dist/src/events/event-bus.d.ts +3 -3
  62. package/dist/src/events/event-bus.d.ts.map +1 -1
  63. package/dist/src/events/event-bus.js.map +1 -1
  64. package/dist/src/events/interfaces.d.ts +1 -1
  65. package/dist/src/events/interfaces.d.ts.map +1 -1
  66. package/dist/src/events/types.d.ts +31 -1
  67. package/dist/src/events/types.d.ts.map +1 -1
  68. package/dist/src/events/types.js +7 -0
  69. package/dist/src/events/types.js.map +1 -1
  70. package/dist/src/executor/interfaces.d.ts +31 -54
  71. package/dist/src/executor/interfaces.d.ts.map +1 -1
  72. package/dist/src/executor/simple-job-executor-manager.d.ts +32 -0
  73. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -0
  74. package/dist/src/executor/simple-job-executor-manager.js +214 -0
  75. package/dist/src/executor/simple-job-executor-manager.js.map +1 -0
  76. package/dist/src/executor/simple-job-executor.d.ts +62 -0
  77. package/dist/src/executor/simple-job-executor.d.ts.map +1 -0
  78. package/dist/src/executor/simple-job-executor.js +705 -0
  79. package/dist/src/executor/simple-job-executor.js.map +1 -0
  80. package/dist/src/executor/types.d.ts +32 -8
  81. package/dist/src/executor/types.d.ts.map +1 -1
  82. package/dist/src/executor/types.js.map +1 -1
  83. package/dist/src/executor/util.d.ts +65 -0
  84. package/dist/src/executor/util.d.ts.map +1 -0
  85. package/dist/src/executor/util.js +154 -0
  86. package/dist/src/executor/util.js.map +1 -0
  87. package/dist/src/index.d.ts +35 -3
  88. package/dist/src/index.d.ts.map +1 -1
  89. package/dist/src/index.js +43 -2
  90. package/dist/src/index.js.map +1 -1
  91. package/dist/src/job-tracker/in-memory-job-tracker.d.ts +16 -0
  92. package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -0
  93. package/dist/src/job-tracker/in-memory-job-tracker.js +84 -0
  94. package/dist/src/job-tracker/in-memory-job-tracker.js.map +1 -0
  95. package/dist/src/job-tracker/index.d.ts +3 -0
  96. package/dist/src/job-tracker/index.d.ts.map +1 -0
  97. package/dist/src/job-tracker/index.js +2 -0
  98. package/dist/src/job-tracker/index.js.map +1 -0
  99. package/dist/src/job-tracker/interfaces.d.ts +42 -0
  100. package/dist/src/job-tracker/interfaces.d.ts.map +1 -0
  101. package/dist/src/job-tracker/interfaces.js +2 -0
  102. package/dist/src/job-tracker/interfaces.js.map +1 -0
  103. package/dist/src/queue/interfaces.d.ts +46 -5
  104. package/dist/src/queue/interfaces.d.ts.map +1 -1
  105. package/dist/src/queue/job-execution-handle.d.ts +25 -0
  106. package/dist/src/queue/job-execution-handle.d.ts.map +1 -0
  107. package/dist/src/queue/job-execution-handle.js +62 -0
  108. package/dist/src/queue/job-execution-handle.js.map +1 -0
  109. package/dist/src/queue/queue.d.ts +56 -5
  110. package/dist/src/queue/queue.d.ts.map +1 -1
  111. package/dist/src/queue/queue.js +284 -36
  112. package/dist/src/queue/queue.js.map +1 -1
  113. package/dist/src/queue/types.d.ts +38 -5
  114. package/dist/src/queue/types.d.ts.map +1 -1
  115. package/dist/src/queue/types.js +12 -0
  116. package/dist/src/queue/types.js.map +1 -1
  117. package/dist/src/read-models/coordinator.d.ts +38 -0
  118. package/dist/src/read-models/coordinator.d.ts.map +1 -0
  119. package/dist/src/read-models/coordinator.js +72 -0
  120. package/dist/src/read-models/coordinator.js.map +1 -0
  121. package/dist/src/read-models/document-view.d.ts +24 -0
  122. package/dist/src/read-models/document-view.d.ts.map +1 -0
  123. package/dist/src/read-models/document-view.js +368 -0
  124. package/dist/src/read-models/document-view.js.map +1 -0
  125. package/dist/src/read-models/interfaces.d.ts +29 -0
  126. package/dist/src/read-models/interfaces.d.ts.map +1 -0
  127. package/dist/src/read-models/interfaces.js +2 -0
  128. package/dist/src/read-models/interfaces.js.map +1 -0
  129. package/dist/src/read-models/types.d.ts +46 -0
  130. package/dist/src/read-models/types.d.ts.map +1 -0
  131. package/dist/src/read-models/types.js +2 -0
  132. package/dist/src/read-models/types.js.map +1 -0
  133. package/dist/src/registry/implementation.d.ts +62 -0
  134. package/dist/src/registry/implementation.d.ts.map +1 -0
  135. package/dist/src/registry/implementation.js +96 -0
  136. package/dist/src/registry/implementation.js.map +1 -0
  137. package/dist/src/registry/index.d.ts +3 -0
  138. package/dist/src/registry/index.d.ts.map +1 -0
  139. package/dist/src/registry/index.js +2 -0
  140. package/dist/src/registry/index.js.map +1 -0
  141. package/dist/src/registry/interfaces.d.ts +39 -0
  142. package/dist/src/registry/interfaces.d.ts.map +1 -0
  143. package/dist/src/registry/interfaces.js +2 -0
  144. package/dist/src/registry/interfaces.js.map +1 -0
  145. package/dist/src/shared/awaiter.d.ts +32 -0
  146. package/dist/src/shared/awaiter.d.ts.map +1 -0
  147. package/dist/src/shared/awaiter.js +132 -0
  148. package/dist/src/shared/awaiter.js.map +1 -0
  149. package/dist/src/shared/consistency-tracker.d.ts +48 -0
  150. package/dist/src/shared/consistency-tracker.d.ts.map +1 -0
  151. package/dist/src/shared/consistency-tracker.js +123 -0
  152. package/dist/src/shared/consistency-tracker.js.map +1 -0
  153. package/dist/src/shared/errors.d.ts +17 -0
  154. package/dist/src/shared/errors.d.ts.map +1 -0
  155. package/dist/src/shared/errors.js +33 -0
  156. package/dist/src/shared/errors.js.map +1 -0
  157. package/dist/src/shared/factories.d.ts +16 -0
  158. package/dist/src/shared/factories.d.ts.map +1 -0
  159. package/dist/src/shared/factories.js +33 -0
  160. package/dist/src/shared/factories.js.map +1 -0
  161. package/dist/src/shared/types.d.ts +126 -20
  162. package/dist/src/shared/types.d.ts.map +1 -1
  163. package/dist/src/shared/types.js +35 -1
  164. package/dist/src/shared/types.js.map +1 -1
  165. package/dist/src/shared/utils.d.ts +3 -0
  166. package/dist/src/shared/utils.d.ts.map +1 -0
  167. package/dist/src/shared/utils.js +8 -0
  168. package/dist/src/shared/utils.js.map +1 -0
  169. package/dist/src/signer/passthrough-signer.d.ts +6 -0
  170. package/dist/src/signer/passthrough-signer.d.ts.map +1 -0
  171. package/dist/src/signer/passthrough-signer.js +6 -0
  172. package/dist/src/signer/passthrough-signer.js.map +1 -0
  173. package/dist/src/signer/types.d.ts +15 -0
  174. package/dist/src/signer/types.d.ts.map +1 -0
  175. package/dist/src/signer/types.js +2 -0
  176. package/dist/src/signer/types.js.map +1 -0
  177. package/dist/src/storage/index.d.ts +4 -0
  178. package/dist/src/storage/index.d.ts.map +1 -0
  179. package/dist/src/storage/index.js +3 -0
  180. package/dist/src/storage/index.js.map +1 -0
  181. package/dist/src/storage/interfaces.d.ts +335 -0
  182. package/dist/src/storage/interfaces.d.ts.map +1 -0
  183. package/dist/src/storage/interfaces.js +19 -0
  184. package/dist/src/storage/interfaces.js.map +1 -0
  185. package/dist/src/storage/kysely/document-indexer.d.ts +28 -0
  186. package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -0
  187. package/dist/src/storage/kysely/document-indexer.js +350 -0
  188. package/dist/src/storage/kysely/document-indexer.js.map +1 -0
  189. package/dist/src/storage/kysely/keyframe-store.d.ts +15 -0
  190. package/dist/src/storage/kysely/keyframe-store.d.ts.map +1 -0
  191. package/dist/src/storage/kysely/keyframe-store.js +64 -0
  192. package/dist/src/storage/kysely/keyframe-store.js.map +1 -0
  193. package/dist/src/storage/kysely/store.d.ts +15 -0
  194. package/dist/src/storage/kysely/store.d.ts.map +1 -0
  195. package/dist/src/storage/kysely/store.js +196 -0
  196. package/dist/src/storage/kysely/store.js.map +1 -0
  197. package/dist/src/storage/kysely/sync-cursor-storage.d.ts +13 -0
  198. package/dist/src/storage/kysely/sync-cursor-storage.d.ts.map +1 -0
  199. package/dist/src/storage/kysely/sync-cursor-storage.js +93 -0
  200. package/dist/src/storage/kysely/sync-cursor-storage.js.map +1 -0
  201. package/dist/src/storage/kysely/sync-remote-storage.d.ts +13 -0
  202. package/dist/src/storage/kysely/sync-remote-storage.d.ts.map +1 -0
  203. package/dist/src/storage/kysely/sync-remote-storage.js +134 -0
  204. package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -0
  205. package/dist/src/storage/kysely/types.d.ts +135 -0
  206. package/dist/src/storage/kysely/types.d.ts.map +1 -0
  207. package/dist/src/storage/kysely/types.js +2 -0
  208. package/dist/src/storage/kysely/types.js.map +1 -0
  209. package/dist/src/storage/migrations/001_create_operation_table.d.ts +3 -0
  210. package/dist/src/storage/migrations/001_create_operation_table.d.ts.map +1 -0
  211. package/dist/src/storage/migrations/001_create_operation_table.js +40 -0
  212. package/dist/src/storage/migrations/001_create_operation_table.js.map +1 -0
  213. package/dist/src/storage/migrations/002_create_keyframe_table.d.ts +3 -0
  214. package/dist/src/storage/migrations/002_create_keyframe_table.d.ts.map +1 -0
  215. package/dist/src/storage/migrations/002_create_keyframe_table.js +27 -0
  216. package/dist/src/storage/migrations/002_create_keyframe_table.js.map +1 -0
  217. package/dist/src/storage/migrations/003_create_document_table.d.ts +3 -0
  218. package/dist/src/storage/migrations/003_create_document_table.d.ts.map +1 -0
  219. package/dist/src/storage/migrations/003_create_document_table.js +10 -0
  220. package/dist/src/storage/migrations/003_create_document_table.js.map +1 -0
  221. package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts +3 -0
  222. package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts.map +1 -0
  223. package/dist/src/storage/migrations/004_create_document_relationship_table.js +35 -0
  224. package/dist/src/storage/migrations/004_create_document_relationship_table.js.map +1 -0
  225. package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts +3 -0
  226. package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts.map +1 -0
  227. package/dist/src/storage/migrations/005_create_indexer_state_table.js +10 -0
  228. package/dist/src/storage/migrations/005_create_indexer_state_table.js.map +1 -0
  229. package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts +3 -0
  230. package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts.map +1 -0
  231. package/dist/src/storage/migrations/006_create_document_snapshot_table.js +49 -0
  232. package/dist/src/storage/migrations/006_create_document_snapshot_table.js.map +1 -0
  233. package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts +3 -0
  234. package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts.map +1 -0
  235. package/dist/src/storage/migrations/007_create_slug_mapping_table.js +24 -0
  236. package/dist/src/storage/migrations/007_create_slug_mapping_table.js.map +1 -0
  237. package/dist/src/storage/migrations/008_create_view_state_table.d.ts +3 -0
  238. package/dist/src/storage/migrations/008_create_view_state_table.d.ts.map +1 -0
  239. package/dist/src/storage/migrations/008_create_view_state_table.js +9 -0
  240. package/dist/src/storage/migrations/008_create_view_state_table.js.map +1 -0
  241. package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts +3 -0
  242. package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts.map +1 -0
  243. package/dist/src/storage/migrations/009_create_operation_index_tables.js +50 -0
  244. package/dist/src/storage/migrations/009_create_operation_index_tables.js.map +1 -0
  245. package/dist/src/storage/migrations/010_create_sync_tables.d.ts +3 -0
  246. package/dist/src/storage/migrations/010_create_sync_tables.d.ts.map +1 -0
  247. package/dist/src/storage/migrations/010_create_sync_tables.js +43 -0
  248. package/dist/src/storage/migrations/010_create_sync_tables.js.map +1 -0
  249. package/dist/src/storage/migrations/index.d.ts +3 -0
  250. package/dist/src/storage/migrations/index.d.ts.map +1 -0
  251. package/dist/src/storage/migrations/index.js +3 -0
  252. package/dist/src/storage/migrations/index.js.map +1 -0
  253. package/dist/src/storage/migrations/migrator.d.ts +5 -0
  254. package/dist/src/storage/migrations/migrator.d.ts.map +1 -0
  255. package/dist/src/storage/migrations/migrator.js +55 -0
  256. package/dist/src/storage/migrations/migrator.js.map +1 -0
  257. package/dist/src/storage/migrations/run-migrations.d.ts +2 -0
  258. package/dist/src/storage/migrations/run-migrations.d.ts.map +1 -0
  259. package/dist/src/storage/migrations/run-migrations.js +58 -0
  260. package/dist/src/storage/migrations/run-migrations.js.map +1 -0
  261. package/dist/src/storage/migrations/types.d.ts +9 -0
  262. package/dist/src/storage/migrations/types.d.ts.map +1 -0
  263. package/dist/src/storage/migrations/types.js +2 -0
  264. package/dist/src/storage/migrations/types.js.map +1 -0
  265. package/dist/src/storage/txn.d.ts +15 -0
  266. package/dist/src/storage/txn.d.ts.map +1 -0
  267. package/dist/src/storage/txn.js +43 -0
  268. package/dist/src/storage/txn.js.map +1 -0
  269. package/dist/src/subs/default-error-handler.d.ts +13 -0
  270. package/dist/src/subs/default-error-handler.d.ts.map +1 -0
  271. package/dist/src/subs/default-error-handler.js +27 -0
  272. package/dist/src/subs/default-error-handler.js.map +1 -0
  273. package/dist/src/subs/react-subscription-manager.d.ts +45 -0
  274. package/dist/src/subs/react-subscription-manager.d.ts.map +1 -0
  275. package/dist/src/subs/react-subscription-manager.js +185 -0
  276. package/dist/src/subs/react-subscription-manager.js.map +1 -0
  277. package/dist/src/subs/types.d.ts +64 -0
  278. package/dist/src/subs/types.d.ts.map +1 -0
  279. package/dist/src/subs/types.js +2 -0
  280. package/dist/src/subs/types.js.map +1 -0
  281. package/dist/src/sync/channels/index.d.ts +3 -0
  282. package/dist/src/sync/channels/index.d.ts.map +1 -0
  283. package/dist/src/sync/channels/index.js +3 -0
  284. package/dist/src/sync/channels/index.js.map +1 -0
  285. package/dist/src/sync/channels/internal-channel.d.ts +57 -0
  286. package/dist/src/sync/channels/internal-channel.d.ts.map +1 -0
  287. package/dist/src/sync/channels/internal-channel.js +106 -0
  288. package/dist/src/sync/channels/internal-channel.js.map +1 -0
  289. package/dist/src/sync/channels/utils.d.ts +15 -0
  290. package/dist/src/sync/channels/utils.d.ts.map +1 -0
  291. package/dist/src/sync/channels/utils.js +26 -0
  292. package/dist/src/sync/channels/utils.js.map +1 -0
  293. package/dist/src/sync/errors.d.ts +10 -0
  294. package/dist/src/sync/errors.d.ts.map +1 -0
  295. package/dist/src/sync/errors.js +17 -0
  296. package/dist/src/sync/errors.js.map +1 -0
  297. package/dist/src/sync/index.d.ts +12 -0
  298. package/dist/src/sync/index.d.ts.map +1 -0
  299. package/dist/src/sync/index.js +9 -0
  300. package/dist/src/sync/index.js.map +1 -0
  301. package/dist/src/sync/interfaces.d.ts +150 -0
  302. package/dist/src/sync/interfaces.d.ts.map +1 -0
  303. package/dist/src/sync/interfaces.js +2 -0
  304. package/dist/src/sync/interfaces.js.map +1 -0
  305. package/dist/src/sync/mailbox.d.ts +21 -0
  306. package/dist/src/sync/mailbox.d.ts.map +1 -0
  307. package/dist/src/sync/mailbox.js +59 -0
  308. package/dist/src/sync/mailbox.js.map +1 -0
  309. package/dist/src/sync/sync-builder.d.ts +17 -0
  310. package/dist/src/sync/sync-builder.d.ts.map +1 -0
  311. package/dist/src/sync/sync-builder.js +29 -0
  312. package/dist/src/sync/sync-builder.js.map +1 -0
  313. package/dist/src/sync/sync-manager.d.ts +33 -0
  314. package/dist/src/sync/sync-manager.d.ts.map +1 -0
  315. package/dist/src/sync/sync-manager.js +196 -0
  316. package/dist/src/sync/sync-manager.js.map +1 -0
  317. package/dist/src/sync/sync-operation.d.ts +28 -0
  318. package/dist/src/sync/sync-operation.d.ts.map +1 -0
  319. package/dist/src/sync/sync-operation.js +63 -0
  320. package/dist/src/sync/sync-operation.js.map +1 -0
  321. package/dist/src/sync/types.d.ts +61 -0
  322. package/dist/src/sync/types.d.ts.map +1 -0
  323. package/dist/src/sync/types.js +16 -0
  324. package/dist/src/sync/types.js.map +1 -0
  325. package/dist/src/sync/utils.d.ts +17 -0
  326. package/dist/src/sync/utils.d.ts.map +1 -0
  327. package/dist/src/sync/utils.js +34 -0
  328. package/dist/src/sync/utils.js.map +1 -0
  329. package/dist/src/utils/reshuffle.d.ts +30 -0
  330. package/dist/src/utils/reshuffle.d.ts.map +1 -0
  331. package/dist/src/utils/reshuffle.js +47 -0
  332. package/dist/src/utils/reshuffle.js.map +1 -0
  333. package/package.json +23 -7
  334. package/dist/bench/end-to-end-flow.bench.d.ts +0 -2
  335. package/dist/bench/end-to-end-flow.bench.d.ts.map +0 -1
  336. package/dist/bench/end-to-end-flow.bench.js +0 -256
  337. package/dist/bench/end-to-end-flow.bench.js.map +0 -1
  338. package/dist/bench/event-bus.bench.d.ts +0 -2
  339. package/dist/bench/event-bus.bench.d.ts.map +0 -1
  340. package/dist/bench/event-bus.bench.js +0 -238
  341. package/dist/bench/event-bus.bench.js.map +0 -1
  342. package/dist/bench/queue-only.bench.d.ts +0 -2
  343. package/dist/bench/queue-only.bench.d.ts.map +0 -1
  344. package/dist/bench/queue-only.bench.js +0 -40
  345. package/dist/bench/queue-only.bench.js.map +0 -1
  346. package/dist/bench/reactor-throughput.bench.d.ts +0 -2
  347. package/dist/bench/reactor-throughput.bench.d.ts.map +0 -1
  348. package/dist/bench/reactor-throughput.bench.js +0 -137
  349. package/dist/bench/reactor-throughput.bench.js.map +0 -1
  350. package/dist/src/executor/job-executor.d.ts +0 -62
  351. package/dist/src/executor/job-executor.d.ts.map +0 -1
  352. package/dist/src/executor/job-executor.js +0 -325
  353. package/dist/src/executor/job-executor.js.map +0 -1
  354. package/dist/test/event-bus.test.d.ts +0 -2
  355. package/dist/test/event-bus.test.d.ts.map +0 -1
  356. package/dist/test/event-bus.test.js +0 -532
  357. package/dist/test/event-bus.test.js.map +0 -1
  358. package/dist/test/job-executor.test.d.ts +0 -2
  359. package/dist/test/job-executor.test.d.ts.map +0 -1
  360. package/dist/test/job-executor.test.js +0 -581
  361. package/dist/test/job-executor.test.js.map +0 -1
  362. package/dist/test/queue.test.d.ts +0 -2
  363. package/dist/test/queue.test.d.ts.map +0 -1
  364. package/dist/test/queue.test.js +0 -396
  365. package/dist/test/queue.test.js.map +0 -1
  366. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,15 +1,36 @@
1
- import { QueueEventTypes } from "./types.js";
1
+ import { JobExecutionHandle } from "./job-execution-handle.js";
2
+ import { JobQueueState, QueueEventTypes } from "./types.js";
2
3
  /**
3
4
  * In-memory implementation of the IQueue interface.
4
5
  * Organizes jobs by documentId, scope, and branch to ensure proper ordering.
6
+ * Ensures serial execution per document by tracking executing jobs.
7
+ * Implements dependency management through queue hints.
5
8
  */
6
9
  export class InMemoryQueue {
7
10
  eventBus;
8
11
  queues = new Map();
9
- jobIndex = new Map(); // jobId -> queueKey mapping
12
+ jobIdToQueueKey = new Map();
13
+ docIdToJobId = new Map();
14
+ jobIdToDocId = new Map();
15
+ completedJobs = new Set();
16
+ jobIndex = new Map();
17
+ isBlocked = false;
18
+ onDrainedCallback;
10
19
  constructor(eventBus) {
11
20
  this.eventBus = eventBus;
12
21
  }
22
+ toErrorInfo(error) {
23
+ if (error instanceof Error) {
24
+ return {
25
+ message: error.message,
26
+ stack: error.stack || new Error().stack || "",
27
+ };
28
+ }
29
+ return {
30
+ message: error,
31
+ stack: new Error().stack || "",
32
+ };
33
+ }
13
34
  /**
14
35
  * Creates a unique key for a document/scope/branch combination
15
36
  */
@@ -27,13 +48,70 @@ export class InMemoryQueue {
27
48
  }
28
49
  return queue;
29
50
  }
51
+ /**
52
+ * Check if a document has any jobs currently executing
53
+ */
54
+ isDocumentExecuting(documentId) {
55
+ const executingSet = this.docIdToJobId.get(documentId);
56
+ return executingSet ? executingSet.size > 0 : false;
57
+ }
58
+ /**
59
+ * Mark a job as executing for its document
60
+ */
61
+ markJobExecuting(job) {
62
+ let executingSet = this.docIdToJobId.get(job.documentId);
63
+ if (!executingSet) {
64
+ executingSet = new Set();
65
+ this.docIdToJobId.set(job.documentId, executingSet);
66
+ }
67
+ executingSet.add(job.id);
68
+ this.jobIdToDocId.set(job.id, job.documentId);
69
+ }
70
+ /**
71
+ * Mark a job as no longer executing for its document
72
+ */
73
+ markJobComplete(jobId, documentId) {
74
+ const executingSet = this.docIdToJobId.get(documentId);
75
+ if (executingSet) {
76
+ executingSet.delete(jobId);
77
+ if (executingSet.size === 0) {
78
+ this.docIdToJobId.delete(documentId);
79
+ }
80
+ }
81
+ this.jobIdToDocId.delete(jobId);
82
+ }
83
+ /**
84
+ * Check if all dependencies for a job have been completed
85
+ */
86
+ areDependenciesMet(job) {
87
+ if (job.queueHint.length === 0) {
88
+ return true;
89
+ }
90
+ return job.queueHint.every((depId) => this.completedJobs.has(depId));
91
+ }
92
+ /**
93
+ * Get the next job that has all its dependencies met
94
+ */
95
+ getNextJobWithMetDependencies(queue) {
96
+ for (const job of queue) {
97
+ if (this.areDependenciesMet(job)) {
98
+ return job;
99
+ }
100
+ }
101
+ return null;
102
+ }
30
103
  async enqueue(job) {
104
+ // Throw error if queue is blocked
105
+ if (this.isBlocked) {
106
+ throw new Error("Queue is blocked");
107
+ }
31
108
  const queueKey = this.createQueueKey(job.documentId, job.scope, job.branch);
32
109
  const queue = this.getQueue(queueKey);
33
110
  // Add job to the end of the queue (FIFO)
34
111
  queue.push(job);
35
- // Track job location for removal
36
- this.jobIndex.set(job.id, queueKey);
112
+ // Track job location for removal and dependency resolution
113
+ this.jobIdToQueueKey.set(job.id, queueKey);
114
+ this.jobIndex.set(job.id, job);
37
115
  // Emit job available event
38
116
  const eventData = {
39
117
  documentId: job.documentId,
@@ -43,94 +121,264 @@ export class InMemoryQueue {
43
121
  };
44
122
  await this.eventBus.emit(QueueEventTypes.JOB_AVAILABLE, eventData);
45
123
  }
46
- async dequeue(documentId, scope, branch) {
124
+ dequeue(documentId, scope, branch, signal) {
47
125
  const queueKey = this.createQueueKey(documentId, scope, branch);
48
126
  const queue = this.queues.get(queueKey);
127
+ if (signal?.aborted) {
128
+ return Promise.reject(new Error("Operation aborted"));
129
+ }
49
130
  if (!queue || queue.length === 0) {
50
- return null;
131
+ return Promise.resolve(null);
51
132
  }
52
- // Remove job from the front of the queue (FIFO)
53
- const job = queue.shift();
54
- // Remove from job index
55
- this.jobIndex.delete(job.id);
133
+ // Find the first job with met dependencies
134
+ const job = this.getNextJobWithMetDependencies(queue);
135
+ if (!job) {
136
+ return Promise.resolve(null);
137
+ }
138
+ // Remove job from queue
139
+ const jobIndex = queue.indexOf(job);
140
+ queue.splice(jobIndex, 1);
141
+ // Remove from queue tracking but keep in job index for retry
142
+ this.jobIdToQueueKey.delete(job.id);
143
+ // Mark this job as executing for its document
144
+ this.markJobExecuting(job);
56
145
  // Clean up empty queue
57
146
  if (queue.length === 0) {
58
147
  this.queues.delete(queueKey);
59
148
  }
60
- return job;
149
+ // Create and return the execution handle
150
+ const handle = new JobExecutionHandle(job, JobQueueState.READY, {
151
+ onStart: () => {
152
+ // Job is now running
153
+ },
154
+ onComplete: () => {
155
+ void this.completeJob(job.id);
156
+ },
157
+ onFail: (error) => {
158
+ void this.failJob(job.id, error);
159
+ },
160
+ });
161
+ return Promise.resolve(handle);
61
162
  }
62
- async dequeueNext() {
63
- // Find the first non-empty queue and dequeue from it
163
+ dequeueNext(signal) {
164
+ if (signal?.aborted) {
165
+ return Promise.reject(new Error("Operation aborted"));
166
+ }
167
+ // Find the first non-empty queue for a document that's not currently executing
64
168
  for (const [queueKey, queue] of this.queues.entries()) {
65
169
  if (queue.length > 0) {
66
- const job = queue.shift();
67
- // Remove from job index
68
- this.jobIndex.delete(job.id);
69
- // Clean up empty queue
70
- if (queue.length === 0) {
71
- this.queues.delete(queueKey);
170
+ // Find the first job with met dependencies
171
+ const job = this.getNextJobWithMetDependencies(queue);
172
+ if (!job) {
173
+ continue; // No job with met dependencies in this queue
174
+ }
175
+ // Only dequeue if the document is not currently executing jobs
176
+ if (!this.isDocumentExecuting(job.documentId)) {
177
+ // Remove job from queue
178
+ const jobIdx = queue.indexOf(job);
179
+ queue.splice(jobIdx, 1);
180
+ // Remove from queue tracking but keep in job index for retry
181
+ this.jobIdToQueueKey.delete(job.id);
182
+ // Keep job in jobIndex so we can retry it if needed
183
+ // Mark this job as executing for its document
184
+ this.markJobExecuting(job);
185
+ // Clean up empty queue
186
+ if (queue.length === 0) {
187
+ this.queues.delete(queueKey);
188
+ }
189
+ // Create and return the execution handle
190
+ const handle = new JobExecutionHandle(job, JobQueueState.READY, {
191
+ onStart: () => {
192
+ // Job is now running
193
+ },
194
+ onComplete: () => {
195
+ void this.completeJob(job.id);
196
+ },
197
+ onFail: (error) => {
198
+ void this.failJob(job.id, error);
199
+ },
200
+ });
201
+ return Promise.resolve(handle);
72
202
  }
73
- return job;
74
203
  }
75
204
  }
76
- return null;
205
+ return Promise.resolve(null);
77
206
  }
78
- async size(documentId, scope, branch) {
207
+ size(documentId, scope, branch) {
79
208
  const queueKey = this.createQueueKey(documentId, scope, branch);
80
209
  const queue = this.queues.get(queueKey);
81
- return queue ? queue.length : 0;
210
+ return Promise.resolve(queue ? queue.length : 0);
82
211
  }
83
- async totalSize() {
212
+ totalSize() {
84
213
  let total = 0;
85
214
  for (const queue of this.queues.values()) {
86
215
  total += queue.length;
87
216
  }
88
- return total;
217
+ return Promise.resolve(total);
89
218
  }
90
- async remove(jobId) {
91
- const queueKey = this.jobIndex.get(jobId);
219
+ remove(jobId) {
220
+ const queueKey = this.jobIdToQueueKey.get(jobId);
92
221
  if (!queueKey) {
93
- return false;
222
+ return Promise.resolve(false);
94
223
  }
95
224
  const queue = this.queues.get(queueKey);
96
225
  if (!queue) {
97
226
  // Clean up orphaned index entry
227
+ this.jobIdToQueueKey.delete(jobId);
98
228
  this.jobIndex.delete(jobId);
99
- return false;
229
+ return Promise.resolve(false);
100
230
  }
101
- const jobIndex = queue.findIndex((job) => job.id === jobId);
102
- if (jobIndex === -1) {
231
+ const jobIdx = queue.findIndex((job) => job.id === jobId);
232
+ if (jobIdx === -1) {
103
233
  // Clean up orphaned index entry
234
+ this.jobIdToQueueKey.delete(jobId);
104
235
  this.jobIndex.delete(jobId);
105
- return false;
236
+ return Promise.resolve(false);
106
237
  }
107
238
  // Remove job from queue
108
- queue.splice(jobIndex, 1);
239
+ queue.splice(jobIdx, 1);
109
240
  // Remove from job index
241
+ this.jobIdToQueueKey.delete(jobId);
110
242
  this.jobIndex.delete(jobId);
111
243
  // Clean up empty queue
112
244
  if (queue.length === 0) {
113
245
  this.queues.delete(queueKey);
114
246
  }
115
- return true;
247
+ return Promise.resolve(true);
116
248
  }
117
- async clear(documentId, scope, branch) {
249
+ clear(documentId, scope, branch) {
118
250
  const queueKey = this.createQueueKey(documentId, scope, branch);
119
251
  const queue = this.queues.get(queueKey);
120
252
  if (queue) {
121
253
  // Remove all jobs from the job index
122
254
  for (const job of queue) {
255
+ this.jobIdToQueueKey.delete(job.id);
123
256
  this.jobIndex.delete(job.id);
124
257
  }
125
258
  // Remove the queue
126
259
  this.queues.delete(queueKey);
127
260
  }
261
+ return Promise.resolve();
128
262
  }
129
- async clearAll() {
263
+ clearAll() {
130
264
  // Clear all job indices
265
+ this.jobIdToQueueKey.clear();
131
266
  this.jobIndex.clear();
267
+ this.completedJobs.clear();
132
268
  // Clear all queues
133
269
  this.queues.clear();
270
+ return Promise.resolve();
271
+ }
272
+ hasJobs() {
273
+ return Promise.resolve(this.queues.size > 0 &&
274
+ Array.from(this.queues.values()).some((q) => q.length > 0));
275
+ }
276
+ async completeJob(jobId) {
277
+ // Get the documentId for the executing job
278
+ const documentId = this.jobIdToDocId.get(jobId);
279
+ if (documentId) {
280
+ // Mark the job as no longer executing
281
+ this.markJobComplete(jobId, documentId);
282
+ }
283
+ // Track the job as completed for dependency resolution
284
+ this.completedJobs.add(jobId);
285
+ // Remove from job index
286
+ this.jobIndex.delete(jobId);
287
+ // For in-memory queue, completing just removes the job
288
+ // In a persistent queue, this would update the job status
289
+ await this.remove(jobId);
290
+ // Check if queue is now drained
291
+ this.checkDrained();
292
+ }
293
+ async failJob(jobId, error) {
294
+ // Get the documentId for the executing job
295
+ const documentId = this.jobIdToDocId.get(jobId);
296
+ if (documentId) {
297
+ // Mark the job as no longer executing
298
+ this.markJobComplete(jobId, documentId);
299
+ }
300
+ // update the job lastError and errorHistory
301
+ const job = this.jobIndex.get(jobId);
302
+ if (job) {
303
+ job.lastError = error;
304
+ if (error) {
305
+ job.errorHistory.push(error);
306
+ }
307
+ }
308
+ // Remove from job index
309
+ this.jobIndex.delete(jobId);
310
+ // For in-memory queue, failing just removes the job
311
+ // In a persistent queue, this would update the job status and store the error
312
+ await this.remove(jobId);
313
+ // Check if queue is now drained
314
+ this.checkDrained();
315
+ }
316
+ async retryJob(jobId, error) {
317
+ // Get the job from the index (it might be executing, not in queue)
318
+ const job = this.jobIndex.get(jobId);
319
+ if (!job) {
320
+ return;
321
+ }
322
+ // update the job lastError
323
+ job.lastError = error;
324
+ // Mark it as no longer executing if it was
325
+ const documentId = this.jobIdToDocId.get(jobId);
326
+ if (documentId) {
327
+ this.markJobComplete(jobId, documentId);
328
+ }
329
+ // Remove from indices
330
+ this.jobIndex.delete(jobId);
331
+ this.jobIdToQueueKey.delete(jobId);
332
+ // Add error to history
333
+ if (error) {
334
+ job.errorHistory.push(error);
335
+ }
336
+ // Update retry count
337
+ const updatedJob = {
338
+ ...job,
339
+ retryCount: (job.retryCount || 0) + 1,
340
+ lastError: error,
341
+ };
342
+ // Re-enqueue with updated retry count
343
+ await this.enqueue(updatedJob);
344
+ }
345
+ /**
346
+ * Check if the queue is drained and call the callback if it is
347
+ */
348
+ checkDrained() {
349
+ if (this.isDrained && this.onDrainedCallback) {
350
+ const callback = this.onDrainedCallback;
351
+ this.onDrainedCallback = undefined;
352
+ callback();
353
+ }
354
+ }
355
+ /**
356
+ * Returns true if and only if all jobs have been resolved.
357
+ */
358
+ get isDrained() {
359
+ // Queue is drained if there are no pending jobs and no executing jobs
360
+ const hasPendingJobs = this.queues.size > 0 &&
361
+ Array.from(this.queues.values()).some((q) => q.length > 0);
362
+ const hasExecutingJobs = this.docIdToJobId.size > 0 &&
363
+ Array.from(this.docIdToJobId.values()).some((set) => set.size > 0);
364
+ return !hasPendingJobs && !hasExecutingJobs;
365
+ }
366
+ /**
367
+ * Blocks the queue from accepting new jobs.
368
+ * @param onDrained - Optional callback to call when the queue is drained
369
+ */
370
+ block(onDrained) {
371
+ this.isBlocked = true;
372
+ this.onDrainedCallback = onDrained;
373
+ // Check if already drained
374
+ this.checkDrained();
375
+ }
376
+ /**
377
+ * Unblocks the queue from accepting new jobs.
378
+ */
379
+ unblock() {
380
+ this.isBlocked = false;
381
+ this.onDrainedCallback = undefined;
134
382
  }
135
383
  }
136
384
  //# sourceMappingURL=queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IAUJ;IATZ,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;IAClC,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;IAClC,SAAS,GAAG,KAAK,CAAC;IAClB,iBAAiB,CAAc;IAEvC,YAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAEnC,WAAW,CAAC,KAAqB;QACvC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE;aAC9C,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE;SAC/B,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,UAAkB,EAClB,KAAa,EACb,MAAc;QAEd,OAAO,GAAG,UAAU,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,QAAgB;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,UAAkB;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACtD,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,GAAQ;QAC/B,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACtD,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAAa,EAAE,UAAkB;QACvD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,GAAQ;QACjC,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACK,6BAA6B,CAAC,KAAY;QAChD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAQ;QACpB,kCAAkC;QAClC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEtC,yCAAyC;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhB,2DAA2D;QAC3D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAE/B,2BAA2B;QAC3B,MAAM,SAAS,GAAsB;YACnC,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,KAAK,EAAE,GAAG,CAAC,EAAE;SACd,CAAC;QAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,CACL,UAAkB,EAClB,KAAa,EACb,MAAc,EACd,MAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,2CAA2C;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,wBAAwB;QACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE1B,6DAA6D;QAC7D,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEpC,8CAA8C;QAC9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE3B,uBAAuB;QACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAED,yCAAyC;QACzC,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,EAAE;YAC9D,OAAO,EAAE,GAAG,EAAE;gBACZ,qBAAqB;YACvB,CAAC;YACD,UAAU,EAAE,GAAG,EAAE;gBACf,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,EAAE,CAAC,KAAgB,EAAE,EAAE;gBAC3B,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,WAAW,CAAC,MAAoB;QAC9B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,+EAA+E;QAC/E,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,2CAA2C;gBAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,SAAS,CAAC,6CAA6C;gBACzD,CAAC;gBAED,+DAA+D;gBAC/D,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9C,wBAAwB;oBACxB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAClC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBAExB,6DAA6D;oBAC7D,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACpC,oDAAoD;oBAEpD,8CAA8C;oBAC9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBAE3B,uBAAuB;oBACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC/B,CAAC;oBAED,yCAAyC;oBACzC,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,EAAE;wBAC9D,OAAO,EAAE,GAAG,EAAE;4BACZ,qBAAqB;wBACvB,CAAC;wBACD,UAAU,EAAE,GAAG,EAAE;4BACf,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAChC,CAAC;wBACD,MAAM,EAAE,CAAC,KAAgB,EAAE,EAAE;4BAC3B,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;wBACnC,CAAC;qBACF,CAAC,CAAC;oBAEH,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,UAAkB,EAAE,KAAa,EAAE,MAAc;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,SAAS;QACP,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,gCAAgC;YAChC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;QAC1D,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,gCAAgC;YAChC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,wBAAwB;QACxB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAExB,wBAAwB;QACxB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5B,uBAAuB;QACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAkB,EAAE,KAAa,EAAE,MAAc;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,qCAAqC;YACrC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC;YAED,mBAAmB;YACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,wBAAwB;QACxB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAE3B,mBAAmB;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAEpB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,OAAO,OAAO,CAAC,OAAO,CACpB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAC7D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,2CAA2C;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,sCAAsC;YACtC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,uDAAuD;QACvD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE9B,wBAAwB;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5B,uDAAuD;QACvD,0DAA0D;QAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEzB,gCAAgC;QAChC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,KAAiB;QAC5C,2CAA2C;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,sCAAsC;YACtC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,4CAA4C;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,KAAK,EAAE,CAAC;gBACV,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5B,oDAAoD;QACpD,8EAA8E;QAC9E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEzB,gCAAgC;QAChC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,KAAiB;QAC7C,mEAAmE;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;QAEtB,2CAA2C;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnC,uBAAuB;QACvB,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,qBAAqB;QACrB,MAAM,UAAU,GAAQ;YACtB,GAAG,GAAG;YACN,UAAU,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC;YACrC,SAAS,EAAE,KAAK;SACjB,CAAC;QAEF,sCAAsC;QACtC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACxC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,sEAAsE;QACtE,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,gBAAgB,GACpB,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAErE,OAAO,CAAC,cAAc,IAAI,CAAC,gBAAgB,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAsB;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QAEnC,2BAA2B;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACrC,CAAC;CACF"}
@@ -1,24 +1,57 @@
1
- import { Operation } from "#shared/types.js";
1
+ import type { Action, Operation } from "document-model";
2
+ import type { ErrorInfo } from "../shared/types.js";
3
+ export type JobKind = "mutation" | "load";
4
+ /**
5
+ * State of a job in the queue
6
+ */
7
+ export declare enum JobQueueState {
8
+ UNKNOWN = -1,
9
+ PREPROCESSING = 0,
10
+ PENDING = 1,
11
+ READY = 2,
12
+ RUNNING = 3,
13
+ RESOLVED = 4
14
+ }
15
+ /**
16
+ * Interface for a job execution handle
17
+ */
18
+ export interface IJobExecutionHandle {
19
+ readonly job: Job;
20
+ readonly state: JobQueueState;
21
+ start(): void;
22
+ complete(): void;
23
+ fail(error: ErrorInfo): void;
24
+ }
2
25
  /**
3
26
  * Represents a job to be executed by the job executor
4
27
  */
5
28
  export type Job = {
6
29
  /** Unique identifier for the job */
7
30
  id: string;
31
+ /** Classification of the job so executors can switch behavior */
32
+ kind: JobKind;
8
33
  /** The document ID this job operates on */
9
34
  documentId: string;
10
- /** The scope of the operation */
35
+ /** The scope of the operations */
11
36
  scope: string;
12
- /** The branch of the operation */
37
+ /** The branch of the operations */
13
38
  branch: string;
14
- /** The operation to be executed */
15
- operation: Operation;
39
+ /** The actions to be executed (processed sequentially) */
40
+ actions: Action[];
41
+ /** Pre-existing operations to import (used for load jobs) */
42
+ operations: Operation[];
16
43
  /** Timestamp when the job was created */
17
44
  createdAt: string;
45
+ /** The hint for the queue to use for ordering the job */
46
+ queueHint: string[];
18
47
  /** Number of retry attempts */
19
48
  retryCount?: number;
20
49
  /** Maximum number of retries allowed */
21
50
  maxRetries?: number;
51
+ /** Last error if job failed */
52
+ lastError?: ErrorInfo;
53
+ /** History of all errors from each attempt (ordered) */
54
+ errorHistory: ErrorInfo[];
22
55
  };
23
56
  /**
24
57
  * Event types for the queue system
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/queue/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG;IAChB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IAEX,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IAEnB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IAEd,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IAEf,mCAAmC;IACnC,SAAS,EAAE,SAAS,CAAC;IAErB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAElB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;CAElB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/queue/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAE1C;;GAEG;AACH,oBAAY,aAAa;IACvB,OAAO,KAAK;IACZ,aAAa,IAAI;IACjB,OAAO,IAAI;IACX,KAAK,IAAI;IACT,OAAO,IAAI;IACX,QAAQ,IAAI;CACb;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAE9B,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,IAAI,IAAI,CAAC;IACjB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG;IAChB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IAEX,iEAAiE;IACjE,IAAI,EAAE,OAAO,CAAC;IAEd,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IAEnB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IAEd,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IAEf,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,6DAA6D;IAC7D,UAAU,EAAE,SAAS,EAAE,CAAC;IAExB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAElB,yDAAyD;IACzD,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,wDAAwD;IACxD,YAAY,EAAE,SAAS,EAAE,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;CAElB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
@@ -1,3 +1,15 @@
1
+ /**
2
+ * State of a job in the queue
3
+ */
4
+ export var JobQueueState;
5
+ (function (JobQueueState) {
6
+ JobQueueState[JobQueueState["UNKNOWN"] = -1] = "UNKNOWN";
7
+ JobQueueState[JobQueueState["PREPROCESSING"] = 0] = "PREPROCESSING";
8
+ JobQueueState[JobQueueState["PENDING"] = 1] = "PENDING";
9
+ JobQueueState[JobQueueState["READY"] = 2] = "READY";
10
+ JobQueueState[JobQueueState["RUNNING"] = 3] = "RUNNING";
11
+ JobQueueState[JobQueueState["RESOLVED"] = 4] = "RESOLVED";
12
+ })(JobQueueState || (JobQueueState = {}));
1
13
  /**
2
14
  * Event types for the queue system
3
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/queue/types.ts"],"names":[],"mappings":"AA+BA;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,KAAK;CACZ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/queue/types.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,wDAAY,CAAA;IACZ,mEAAiB,CAAA;IACjB,uDAAW,CAAA;IACX,mDAAS,CAAA;IACT,uDAAW,CAAA;IACX,yDAAY,CAAA;AACd,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AA0DD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,KAAK;CACZ,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { IEventBus } from "../events/interfaces.js";
2
+ import type { IReadModel, IReadModelCoordinator } from "./interfaces.js";
3
+ /**
4
+ * Coordinates read model synchronization by listening to operation write events
5
+ * and updating all registered read models in parallel.
6
+ *
7
+ * This coordinator is responsible for:
8
+ * - Subscribing to OPERATION_WRITTEN events from the event bus
9
+ * - Distributing operation updates to all registered read models
10
+ * - Managing the lifecycle of read model subscriptions
11
+ *
12
+ * Read models are updated asynchronously and in parallel to avoid blocking
13
+ * the write path. Errors in read model updates are propagated through the
14
+ * event bus but do not affect the write operation success.
15
+ */
16
+ export declare class ReadModelCoordinator implements IReadModelCoordinator {
17
+ private eventBus;
18
+ private readModels;
19
+ private unsubscribe?;
20
+ private isRunning;
21
+ constructor(eventBus: IEventBus, readModels: IReadModel[]);
22
+ /**
23
+ * Start listening for operation events and updating read models.
24
+ * Can be called multiple times safely (subsequent calls are no-ops).
25
+ */
26
+ start(): void;
27
+ /**
28
+ * Stop listening and clean up subscriptions.
29
+ * Can be called multiple times safely (subsequent calls are no-ops).
30
+ */
31
+ stop(): void;
32
+ /**
33
+ * Handle operation written events by updating all read models in parallel.
34
+ * Errors from individual read models are collected and re-thrown as an aggregate.
35
+ */
36
+ private handleOperationWritten;
37
+ }
38
+ //# sourceMappingURL=coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../../src/read-models/coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAOzD,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;;;;;;;;;;;GAYG;AACH,qBAAa,oBAAqB,YAAW,qBAAqB;IAK9D,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,SAAS,CAAS;gBAGhB,QAAQ,EAAE,SAAS,EACnB,UAAU,EAAE,UAAU,EAAE;IAGlC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAgBb;;;OAGG;IACH,IAAI,IAAI,IAAI;IAaZ;;;OAGG;YACW,sBAAsB;CAsBrC"}
@@ -0,0 +1,72 @@
1
+ import { OperationEventTypes, } from "../events/types.js";
2
+ /**
3
+ * Coordinates read model synchronization by listening to operation write events
4
+ * and updating all registered read models in parallel.
5
+ *
6
+ * This coordinator is responsible for:
7
+ * - Subscribing to OPERATION_WRITTEN events from the event bus
8
+ * - Distributing operation updates to all registered read models
9
+ * - Managing the lifecycle of read model subscriptions
10
+ *
11
+ * Read models are updated asynchronously and in parallel to avoid blocking
12
+ * the write path. Errors in read model updates are propagated through the
13
+ * event bus but do not affect the write operation success.
14
+ */
15
+ export class ReadModelCoordinator {
16
+ eventBus;
17
+ readModels;
18
+ unsubscribe;
19
+ isRunning = false;
20
+ constructor(eventBus, readModels) {
21
+ this.eventBus = eventBus;
22
+ this.readModels = readModels;
23
+ }
24
+ /**
25
+ * Start listening for operation events and updating read models.
26
+ * Can be called multiple times safely (subsequent calls are no-ops).
27
+ */
28
+ start() {
29
+ if (this.isRunning) {
30
+ return;
31
+ }
32
+ // Subscribe to OPERATION_WRITTEN events
33
+ this.unsubscribe = this.eventBus.subscribe(OperationEventTypes.OPERATION_WRITTEN, async (type, event) => {
34
+ await this.handleOperationWritten(event);
35
+ });
36
+ this.isRunning = true;
37
+ }
38
+ /**
39
+ * Stop listening and clean up subscriptions.
40
+ * Can be called multiple times safely (subsequent calls are no-ops).
41
+ */
42
+ stop() {
43
+ if (!this.isRunning) {
44
+ return;
45
+ }
46
+ if (this.unsubscribe) {
47
+ this.unsubscribe();
48
+ this.unsubscribe = undefined;
49
+ }
50
+ this.isRunning = false;
51
+ }
52
+ /**
53
+ * Handle operation written events by updating all read models in parallel.
54
+ * Errors from individual read models are collected and re-thrown as an aggregate.
55
+ */
56
+ async handleOperationWritten(event) {
57
+ // Index into all read models in parallel
58
+ // If any read model fails, the error will be collected by the event bus
59
+ await Promise.all(this.readModels.map((readModel) => readModel.indexOperations(event.operations)));
60
+ // Emit OPERATIONS_READY event after all read models have completed
61
+ // Use fire-and-forget pattern to avoid blocking
62
+ const readyEvent = {
63
+ operations: event.operations,
64
+ };
65
+ this.eventBus
66
+ .emit(OperationEventTypes.OPERATIONS_READY, readyEvent)
67
+ .catch(() => {
68
+ // No-op: Event emission is fire-and-forget
69
+ });
70
+ }
71
+ }
72
+ //# sourceMappingURL=coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../src/read-models/coordinator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,GAIpB,MAAM,oBAAoB,CAAC;AAG5B;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,oBAAoB;IAKrB;IACA;IALF,WAAW,CAAe;IAC1B,SAAS,GAAG,KAAK,CAAC;IAE1B,YACU,QAAmB,EACnB,UAAwB;QADxB,aAAQ,GAAR,QAAQ,CAAW;QACnB,eAAU,GAAV,UAAU,CAAc;IAC/B,CAAC;IAEJ;;;OAGG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CACxC,mBAAmB,CAAC,iBAAiB,EACrC,KAAK,EAAE,IAAI,EAAE,KAA4B,EAAE,EAAE;YAC3C,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,sBAAsB,CAClC,KAA4B;QAE5B,yCAAyC;QACzC,wEAAwE;QACxE,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAChC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAC5C,CACF,CAAC;QAEF,mEAAmE;QACnE,gDAAgD;QAChD,MAAM,UAAU,GAAyB;YACvC,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC;QACF,IAAI,CAAC,QAAQ;aACV,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,UAAU,CAAC;aACtD,KAAK,CAAC,GAAG,EAAE;YACV,2CAA2C;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC;CACF"}