@powerhousedao/reactor 6.0.0-dev.7 → 6.0.0-dev.78

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 (376) hide show
  1. package/dist/src/cache/collection-membership-cache.d.ts +13 -0
  2. package/dist/src/cache/collection-membership-cache.d.ts.map +1 -0
  3. package/dist/src/cache/document-meta-cache.d.ts.map +1 -1
  4. package/dist/src/cache/kysely-operation-index.d.ts +6 -1
  5. package/dist/src/cache/kysely-operation-index.d.ts.map +1 -1
  6. package/dist/src/cache/kysely-write-cache.d.ts +9 -2
  7. package/dist/src/cache/kysely-write-cache.d.ts.map +1 -1
  8. package/dist/src/cache/operation-index-types.d.ts +16 -2
  9. package/dist/src/cache/operation-index-types.d.ts.map +1 -1
  10. package/dist/src/cache/write/interfaces.d.ts +7 -2
  11. package/dist/src/cache/write/interfaces.d.ts.map +1 -1
  12. package/dist/src/client/reactor-client.d.ts +13 -10
  13. package/dist/src/client/reactor-client.d.ts.map +1 -1
  14. package/dist/src/client/types.d.ts +25 -6
  15. package/dist/src/client/types.d.ts.map +1 -1
  16. package/dist/src/core/reactor-builder.d.ts +23 -10
  17. package/dist/src/core/reactor-builder.d.ts.map +1 -1
  18. package/dist/src/core/reactor-client-builder.d.ts +5 -4
  19. package/dist/src/core/reactor-client-builder.d.ts.map +1 -1
  20. package/dist/src/core/reactor.d.ts +20 -80
  21. package/dist/src/core/reactor.d.ts.map +1 -1
  22. package/dist/src/core/types.d.ts +64 -28
  23. package/dist/src/core/types.d.ts.map +1 -1
  24. package/dist/src/core/utils.d.ts +39 -3
  25. package/dist/src/core/utils.d.ts.map +1 -1
  26. package/dist/src/events/types.d.ts +35 -10
  27. package/dist/src/events/types.d.ts.map +1 -1
  28. package/dist/src/executor/document-action-handler.d.ts +37 -0
  29. package/dist/src/executor/document-action-handler.d.ts.map +1 -0
  30. package/dist/src/executor/signature-verifier.d.ts +9 -0
  31. package/dist/src/executor/signature-verifier.d.ts.map +1 -0
  32. package/dist/src/executor/simple-job-executor-manager.d.ts +6 -1
  33. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
  34. package/dist/src/executor/simple-job-executor.d.ts +6 -46
  35. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  36. package/dist/src/executor/types.d.ts +1 -3
  37. package/dist/src/executor/types.d.ts.map +1 -1
  38. package/dist/src/executor/util.d.ts +12 -2
  39. package/dist/src/executor/util.d.ts.map +1 -1
  40. package/dist/src/index.d.ts +11 -9
  41. package/dist/src/index.d.ts.map +1 -1
  42. package/dist/src/index.js +20208 -61
  43. package/dist/src/job-tracker/in-memory-job-tracker.d.ts +4 -3
  44. package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -1
  45. package/dist/src/job-tracker/interfaces.d.ts +3 -1
  46. package/dist/src/job-tracker/interfaces.d.ts.map +1 -1
  47. package/dist/src/logging/console.d.ts +1 -22
  48. package/dist/src/logging/console.d.ts.map +1 -1
  49. package/dist/src/logging/types.d.ts +1 -11
  50. package/dist/src/logging/types.d.ts.map +1 -1
  51. package/dist/src/processors/index.d.ts +1 -1
  52. package/dist/src/processors/index.d.ts.map +1 -1
  53. package/dist/src/processors/processor-manager.d.ts +19 -6
  54. package/dist/src/processors/processor-manager.d.ts.map +1 -1
  55. package/dist/src/processors/relational/types.d.ts +2 -0
  56. package/dist/src/processors/relational/types.d.ts.map +1 -0
  57. package/dist/src/processors/relational/utils.d.ts +2 -0
  58. package/dist/src/processors/relational/utils.d.ts.map +1 -0
  59. package/dist/src/processors/utils.d.ts +3 -2
  60. package/dist/src/processors/utils.d.ts.map +1 -1
  61. package/dist/src/queue/job-execution-handle.d.ts +3 -0
  62. package/dist/src/queue/job-execution-handle.d.ts.map +1 -1
  63. package/dist/src/queue/queue.d.ts +30 -1
  64. package/dist/src/queue/queue.d.ts.map +1 -1
  65. package/dist/src/queue/types.d.ts +4 -3
  66. package/dist/src/queue/types.d.ts.map +1 -1
  67. package/dist/src/read-models/base-read-model.d.ts +11 -9
  68. package/dist/src/read-models/base-read-model.d.ts.map +1 -1
  69. package/dist/src/read-models/coordinator.d.ts +2 -2
  70. package/dist/src/read-models/coordinator.d.ts.map +1 -1
  71. package/dist/src/read-models/document-view.d.ts +7 -4
  72. package/dist/src/read-models/document-view.d.ts.map +1 -1
  73. package/dist/src/read-models/interfaces.d.ts +1 -1
  74. package/dist/src/read-models/interfaces.d.ts.map +1 -1
  75. package/dist/src/read-models/types.d.ts +16 -0
  76. package/dist/src/read-models/types.d.ts.map +1 -1
  77. package/dist/src/registry/document-model-resolver.d.ts +29 -0
  78. package/dist/src/registry/document-model-resolver.d.ts.map +1 -0
  79. package/dist/src/registry/implementation.d.ts +4 -0
  80. package/dist/src/registry/implementation.d.ts.map +1 -1
  81. package/dist/src/registry/index.d.ts +3 -1
  82. package/dist/src/registry/index.d.ts.map +1 -1
  83. package/dist/src/registry/interfaces.d.ts +8 -0
  84. package/dist/src/registry/interfaces.d.ts.map +1 -1
  85. package/dist/src/shared/awaiter.d.ts +2 -2
  86. package/dist/src/shared/awaiter.d.ts.map +1 -1
  87. package/dist/src/shared/collect-all-pages.d.ts +7 -0
  88. package/dist/src/shared/collect-all-pages.d.ts.map +1 -0
  89. package/dist/src/shared/drive-url.d.ts +15 -0
  90. package/dist/src/shared/drive-url.d.ts.map +1 -0
  91. package/dist/src/shared/errors.d.ts +9 -0
  92. package/dist/src/shared/errors.d.ts.map +1 -1
  93. package/dist/src/shared/factories.d.ts +6 -2
  94. package/dist/src/shared/factories.d.ts.map +1 -1
  95. package/dist/src/shared/types.d.ts +32 -6
  96. package/dist/src/shared/types.d.ts.map +1 -1
  97. package/dist/src/signer/passthrough-signer.d.ts +1 -1
  98. package/dist/src/signer/passthrough-signer.d.ts.map +1 -1
  99. package/dist/src/storage/interfaces.d.ts +238 -124
  100. package/dist/src/storage/interfaces.d.ts.map +1 -1
  101. package/dist/src/storage/kysely/document-indexer.d.ts +17 -18
  102. package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -1
  103. package/dist/src/storage/kysely/store.d.ts +5 -4
  104. package/dist/src/storage/kysely/store.d.ts.map +1 -1
  105. package/dist/src/storage/kysely/sync-cursor-storage.d.ts +1 -1
  106. package/dist/src/storage/kysely/sync-cursor-storage.d.ts.map +1 -1
  107. package/dist/src/storage/kysely/sync-dead-letter-storage.d.ts +17 -0
  108. package/dist/src/storage/kysely/sync-dead-letter-storage.d.ts.map +1 -0
  109. package/dist/src/storage/kysely/types.d.ts +22 -0
  110. package/dist/src/storage/kysely/types.d.ts.map +1 -1
  111. package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts +3 -0
  112. package/dist/src/storage/migrations/011_add_cursor_type_column.d.ts.map +1 -0
  113. package/dist/src/storage/migrations/012_add_source_remote_column.d.ts +3 -0
  114. package/dist/src/storage/migrations/012_add_source_remote_column.d.ts.map +1 -0
  115. package/dist/src/storage/migrations/013_create_sync_dead_letters_table.d.ts +3 -0
  116. package/dist/src/storage/migrations/013_create_sync_dead_letters_table.d.ts.map +1 -0
  117. package/dist/src/storage/migrations/014_create_processor_cursor_table.d.ts +3 -0
  118. package/dist/src/storage/migrations/014_create_processor_cursor_table.d.ts.map +1 -0
  119. package/dist/src/storage/migrations/migrator.d.ts.map +1 -1
  120. package/dist/src/subs/default-error-handler.d.ts.map +1 -1
  121. package/dist/src/subs/subscription-notification-read-model.d.ts +3 -2
  122. package/dist/src/subs/subscription-notification-read-model.d.ts.map +1 -1
  123. package/dist/src/sync/batch-aggregator.d.ts +25 -0
  124. package/dist/src/sync/batch-aggregator.d.ts.map +1 -0
  125. package/dist/src/sync/buffered-mailbox.d.ts +36 -0
  126. package/dist/src/sync/buffered-mailbox.d.ts.map +1 -0
  127. package/dist/src/sync/channels/gql-req-channel.d.ts +121 -0
  128. package/dist/src/sync/channels/gql-req-channel.d.ts.map +1 -0
  129. package/dist/src/sync/channels/gql-request-channel-factory.d.ts +32 -0
  130. package/dist/src/sync/channels/gql-request-channel-factory.d.ts.map +1 -0
  131. package/dist/src/sync/channels/gql-res-channel.d.ts +31 -0
  132. package/dist/src/sync/channels/gql-res-channel.d.ts.map +1 -0
  133. package/dist/src/sync/channels/gql-response-channel-factory.d.ts +13 -0
  134. package/dist/src/sync/channels/gql-response-channel-factory.d.ts.map +1 -0
  135. package/dist/src/sync/channels/index.d.ts +6 -4
  136. package/dist/src/sync/channels/index.d.ts.map +1 -1
  137. package/dist/src/sync/channels/interval-poll-timer.d.ts +40 -0
  138. package/dist/src/sync/channels/interval-poll-timer.d.ts.map +1 -0
  139. package/dist/src/sync/channels/poll-timer.d.ts +14 -0
  140. package/dist/src/sync/channels/poll-timer.d.ts.map +1 -0
  141. package/dist/src/sync/channels/utils.d.ts +15 -1
  142. package/dist/src/sync/channels/utils.d.ts.map +1 -1
  143. package/dist/src/sync/index.d.ts +11 -7
  144. package/dist/src/sync/index.d.ts.map +1 -1
  145. package/dist/src/sync/interfaces.d.ts +42 -19
  146. package/dist/src/sync/interfaces.d.ts.map +1 -1
  147. package/dist/src/sync/mailbox.d.ts +51 -12
  148. package/dist/src/sync/mailbox.d.ts.map +1 -1
  149. package/dist/src/sync/sync-awaiter.d.ts +34 -0
  150. package/dist/src/sync/sync-awaiter.d.ts.map +1 -0
  151. package/dist/src/sync/sync-builder.d.ts +5 -1
  152. package/dist/src/sync/sync-builder.d.ts.map +1 -1
  153. package/dist/src/sync/sync-manager.d.ts +22 -8
  154. package/dist/src/sync/sync-manager.d.ts.map +1 -1
  155. package/dist/src/sync/sync-operation.d.ts +4 -2
  156. package/dist/src/sync/sync-operation.d.ts.map +1 -1
  157. package/dist/src/sync/sync-status-tracker.d.ts +31 -0
  158. package/dist/src/sync/sync-status-tracker.d.ts.map +1 -0
  159. package/dist/src/sync/types.d.ts +107 -2
  160. package/dist/src/sync/types.d.ts.map +1 -1
  161. package/dist/src/sync/utils.d.ts +37 -2
  162. package/dist/src/sync/utils.d.ts.map +1 -1
  163. package/dist/src/utils/reshuffle.d.ts +22 -5
  164. package/dist/src/utils/reshuffle.d.ts.map +1 -1
  165. package/package.json +24 -20
  166. package/dist/src/actions/index.js +0 -76
  167. package/dist/src/actions/index.js.map +0 -1
  168. package/dist/src/cache/buffer/ring-buffer.js +0 -69
  169. package/dist/src/cache/buffer/ring-buffer.js.map +0 -1
  170. package/dist/src/cache/document-meta-cache-types.js +0 -2
  171. package/dist/src/cache/document-meta-cache-types.js.map +0 -1
  172. package/dist/src/cache/document-meta-cache.js +0 -128
  173. package/dist/src/cache/document-meta-cache.js.map +0 -1
  174. package/dist/src/cache/index.js +0 -2
  175. package/dist/src/cache/index.js.map +0 -1
  176. package/dist/src/cache/kysely-operation-index.js +0 -250
  177. package/dist/src/cache/kysely-operation-index.js.map +0 -1
  178. package/dist/src/cache/kysely-write-cache.js +0 -388
  179. package/dist/src/cache/kysely-write-cache.js.map +0 -1
  180. package/dist/src/cache/lru/lru-tracker.js +0 -96
  181. package/dist/src/cache/lru/lru-tracker.js.map +0 -1
  182. package/dist/src/cache/operation-index-types.js +0 -4
  183. package/dist/src/cache/operation-index-types.js.map +0 -1
  184. package/dist/src/cache/write/interfaces.js +0 -2
  185. package/dist/src/cache/write/interfaces.js.map +0 -1
  186. package/dist/src/cache/write-cache-types.js +0 -2
  187. package/dist/src/cache/write-cache-types.js.map +0 -1
  188. package/dist/src/client/reactor-client.js +0 -406
  189. package/dist/src/client/reactor-client.js.map +0 -1
  190. package/dist/src/client/types.js +0 -14
  191. package/dist/src/client/types.js.map +0 -1
  192. package/dist/src/core/reactor-builder.js +0 -231
  193. package/dist/src/core/reactor-builder.js.map +0 -1
  194. package/dist/src/core/reactor-client-builder.js +0 -123
  195. package/dist/src/core/reactor-client-builder.js.map +0 -1
  196. package/dist/src/core/reactor.js +0 -981
  197. package/dist/src/core/reactor.js.map +0 -1
  198. package/dist/src/core/types.js +0 -2
  199. package/dist/src/core/types.js.map +0 -1
  200. package/dist/src/core/utils.js +0 -171
  201. package/dist/src/core/utils.js.map +0 -1
  202. package/dist/src/events/event-bus.js +0 -53
  203. package/dist/src/events/event-bus.js.map +0 -1
  204. package/dist/src/events/interfaces.js +0 -2
  205. package/dist/src/events/interfaces.js.map +0 -1
  206. package/dist/src/events/types.js +0 -28
  207. package/dist/src/events/types.js.map +0 -1
  208. package/dist/src/executor/interfaces.js +0 -2
  209. package/dist/src/executor/interfaces.js.map +0 -1
  210. package/dist/src/executor/simple-job-executor-manager.js +0 -233
  211. package/dist/src/executor/simple-job-executor-manager.js.map +0 -1
  212. package/dist/src/executor/simple-job-executor.js +0 -898
  213. package/dist/src/executor/simple-job-executor.js.map +0 -1
  214. package/dist/src/executor/types.js +0 -11
  215. package/dist/src/executor/types.js.map +0 -1
  216. package/dist/src/executor/util.js +0 -184
  217. package/dist/src/executor/util.js.map +0 -1
  218. package/dist/src/index.js.map +0 -1
  219. package/dist/src/job-tracker/in-memory-job-tracker.js +0 -112
  220. package/dist/src/job-tracker/in-memory-job-tracker.js.map +0 -1
  221. package/dist/src/job-tracker/index.js +0 -2
  222. package/dist/src/job-tracker/index.js.map +0 -1
  223. package/dist/src/job-tracker/interfaces.js +0 -2
  224. package/dist/src/job-tracker/interfaces.js.map +0 -1
  225. package/dist/src/logging/console.js +0 -108
  226. package/dist/src/logging/console.js.map +0 -1
  227. package/dist/src/logging/types.js +0 -2
  228. package/dist/src/logging/types.js.map +0 -1
  229. package/dist/src/processors/index.js +0 -2
  230. package/dist/src/processors/index.js.map +0 -1
  231. package/dist/src/processors/processor-manager.js +0 -165
  232. package/dist/src/processors/processor-manager.js.map +0 -1
  233. package/dist/src/processors/types.d.ts +0 -63
  234. package/dist/src/processors/types.d.ts.map +0 -1
  235. package/dist/src/processors/types.js +0 -2
  236. package/dist/src/processors/types.js.map +0 -1
  237. package/dist/src/processors/utils.js +0 -58
  238. package/dist/src/processors/utils.js.map +0 -1
  239. package/dist/src/queue/interfaces.js +0 -2
  240. package/dist/src/queue/interfaces.js.map +0 -1
  241. package/dist/src/queue/job-execution-handle.js +0 -62
  242. package/dist/src/queue/job-execution-handle.js.map +0 -1
  243. package/dist/src/queue/queue.js +0 -384
  244. package/dist/src/queue/queue.js.map +0 -1
  245. package/dist/src/queue/types.js +0 -19
  246. package/dist/src/queue/types.js.map +0 -1
  247. package/dist/src/read-models/base-read-model.js +0 -143
  248. package/dist/src/read-models/base-read-model.js.map +0 -1
  249. package/dist/src/read-models/coordinator.js +0 -72
  250. package/dist/src/read-models/coordinator.js.map +0 -1
  251. package/dist/src/read-models/document-view.js +0 -375
  252. package/dist/src/read-models/document-view.js.map +0 -1
  253. package/dist/src/read-models/interfaces.js +0 -2
  254. package/dist/src/read-models/interfaces.js.map +0 -1
  255. package/dist/src/read-models/types.js +0 -2
  256. package/dist/src/read-models/types.js.map +0 -1
  257. package/dist/src/registry/implementation.js +0 -216
  258. package/dist/src/registry/implementation.js.map +0 -1
  259. package/dist/src/registry/index.js +0 -2
  260. package/dist/src/registry/index.js.map +0 -1
  261. package/dist/src/registry/interfaces.js +0 -2
  262. package/dist/src/registry/interfaces.js.map +0 -1
  263. package/dist/src/shared/awaiter.js +0 -123
  264. package/dist/src/shared/awaiter.js.map +0 -1
  265. package/dist/src/shared/consistency-tracker.js +0 -123
  266. package/dist/src/shared/consistency-tracker.js.map +0 -1
  267. package/dist/src/shared/errors.js +0 -75
  268. package/dist/src/shared/errors.js.map +0 -1
  269. package/dist/src/shared/factories.js +0 -33
  270. package/dist/src/shared/factories.js.map +0 -1
  271. package/dist/src/shared/types.js +0 -38
  272. package/dist/src/shared/types.js.map +0 -1
  273. package/dist/src/shared/utils.js +0 -8
  274. package/dist/src/shared/utils.js.map +0 -1
  275. package/dist/src/signer/passthrough-signer.js +0 -19
  276. package/dist/src/signer/passthrough-signer.js.map +0 -1
  277. package/dist/src/signer/types.js +0 -2
  278. package/dist/src/signer/types.js.map +0 -1
  279. package/dist/src/storage/consistency-aware-legacy-storage.d.ts +0 -33
  280. package/dist/src/storage/consistency-aware-legacy-storage.d.ts.map +0 -1
  281. package/dist/src/storage/consistency-aware-legacy-storage.js +0 -65
  282. package/dist/src/storage/consistency-aware-legacy-storage.js.map +0 -1
  283. package/dist/src/storage/index.js +0 -3
  284. package/dist/src/storage/index.js.map +0 -1
  285. package/dist/src/storage/interfaces.js +0 -19
  286. package/dist/src/storage/interfaces.js.map +0 -1
  287. package/dist/src/storage/kysely/document-indexer.js +0 -350
  288. package/dist/src/storage/kysely/document-indexer.js.map +0 -1
  289. package/dist/src/storage/kysely/keyframe-store.js +0 -64
  290. package/dist/src/storage/kysely/keyframe-store.js.map +0 -1
  291. package/dist/src/storage/kysely/store.js +0 -233
  292. package/dist/src/storage/kysely/store.js.map +0 -1
  293. package/dist/src/storage/kysely/sync-cursor-storage.js +0 -93
  294. package/dist/src/storage/kysely/sync-cursor-storage.js.map +0 -1
  295. package/dist/src/storage/kysely/sync-remote-storage.js +0 -133
  296. package/dist/src/storage/kysely/sync-remote-storage.js.map +0 -1
  297. package/dist/src/storage/kysely/types.js +0 -2
  298. package/dist/src/storage/kysely/types.js.map +0 -1
  299. package/dist/src/storage/migrations/001_create_operation_table.js +0 -41
  300. package/dist/src/storage/migrations/001_create_operation_table.js.map +0 -1
  301. package/dist/src/storage/migrations/002_create_keyframe_table.js +0 -27
  302. package/dist/src/storage/migrations/002_create_keyframe_table.js.map +0 -1
  303. package/dist/src/storage/migrations/003_create_document_table.js +0 -10
  304. package/dist/src/storage/migrations/003_create_document_table.js.map +0 -1
  305. package/dist/src/storage/migrations/004_create_document_relationship_table.js +0 -35
  306. package/dist/src/storage/migrations/004_create_document_relationship_table.js.map +0 -1
  307. package/dist/src/storage/migrations/005_create_indexer_state_table.js +0 -10
  308. package/dist/src/storage/migrations/005_create_indexer_state_table.js.map +0 -1
  309. package/dist/src/storage/migrations/006_create_document_snapshot_table.js +0 -49
  310. package/dist/src/storage/migrations/006_create_document_snapshot_table.js.map +0 -1
  311. package/dist/src/storage/migrations/007_create_slug_mapping_table.js +0 -24
  312. package/dist/src/storage/migrations/007_create_slug_mapping_table.js.map +0 -1
  313. package/dist/src/storage/migrations/008_create_view_state_table.js +0 -10
  314. package/dist/src/storage/migrations/008_create_view_state_table.js.map +0 -1
  315. package/dist/src/storage/migrations/009_create_operation_index_tables.js +0 -50
  316. package/dist/src/storage/migrations/009_create_operation_index_tables.js.map +0 -1
  317. package/dist/src/storage/migrations/010_create_sync_tables.js +0 -43
  318. package/dist/src/storage/migrations/010_create_sync_tables.js.map +0 -1
  319. package/dist/src/storage/migrations/index.js +0 -3
  320. package/dist/src/storage/migrations/index.js.map +0 -1
  321. package/dist/src/storage/migrations/migrator.js +0 -78
  322. package/dist/src/storage/migrations/migrator.js.map +0 -1
  323. package/dist/src/storage/migrations/run-migrations.js +0 -58
  324. package/dist/src/storage/migrations/run-migrations.js.map +0 -1
  325. package/dist/src/storage/migrations/types.js +0 -2
  326. package/dist/src/storage/migrations/types.js.map +0 -1
  327. package/dist/src/storage/txn.js +0 -42
  328. package/dist/src/storage/txn.js.map +0 -1
  329. package/dist/src/subs/default-error-handler.js +0 -27
  330. package/dist/src/subs/default-error-handler.js.map +0 -1
  331. package/dist/src/subs/react-subscription-manager.js +0 -185
  332. package/dist/src/subs/react-subscription-manager.js.map +0 -1
  333. package/dist/src/subs/subscription-notification-read-model.js +0 -62
  334. package/dist/src/subs/subscription-notification-read-model.js.map +0 -1
  335. package/dist/src/subs/types.js +0 -2
  336. package/dist/src/subs/types.js.map +0 -1
  337. package/dist/src/sync/channels/composite-channel-factory.d.ts +0 -30
  338. package/dist/src/sync/channels/composite-channel-factory.d.ts.map +0 -1
  339. package/dist/src/sync/channels/composite-channel-factory.js +0 -87
  340. package/dist/src/sync/channels/composite-channel-factory.js.map +0 -1
  341. package/dist/src/sync/channels/gql-channel-factory.d.ts +0 -25
  342. package/dist/src/sync/channels/gql-channel-factory.d.ts.map +0 -1
  343. package/dist/src/sync/channels/gql-channel-factory.js +0 -76
  344. package/dist/src/sync/channels/gql-channel-factory.js.map +0 -1
  345. package/dist/src/sync/channels/gql-channel.d.ts +0 -118
  346. package/dist/src/sync/channels/gql-channel.d.ts.map +0 -1
  347. package/dist/src/sync/channels/gql-channel.js +0 -423
  348. package/dist/src/sync/channels/gql-channel.js.map +0 -1
  349. package/dist/src/sync/channels/index.js +0 -6
  350. package/dist/src/sync/channels/index.js.map +0 -1
  351. package/dist/src/sync/channels/polling-channel.d.ts +0 -39
  352. package/dist/src/sync/channels/polling-channel.d.ts.map +0 -1
  353. package/dist/src/sync/channels/polling-channel.js +0 -72
  354. package/dist/src/sync/channels/polling-channel.js.map +0 -1
  355. package/dist/src/sync/channels/utils.js +0 -96
  356. package/dist/src/sync/channels/utils.js.map +0 -1
  357. package/dist/src/sync/errors.js +0 -17
  358. package/dist/src/sync/errors.js.map +0 -1
  359. package/dist/src/sync/index.js +0 -9
  360. package/dist/src/sync/index.js.map +0 -1
  361. package/dist/src/sync/interfaces.js +0 -2
  362. package/dist/src/sync/interfaces.js.map +0 -1
  363. package/dist/src/sync/mailbox.js +0 -59
  364. package/dist/src/sync/mailbox.js.map +0 -1
  365. package/dist/src/sync/sync-builder.js +0 -39
  366. package/dist/src/sync/sync-builder.js.map +0 -1
  367. package/dist/src/sync/sync-manager.js +0 -266
  368. package/dist/src/sync/sync-manager.js.map +0 -1
  369. package/dist/src/sync/sync-operation.js +0 -63
  370. package/dist/src/sync/sync-operation.js.map +0 -1
  371. package/dist/src/sync/types.js +0 -16
  372. package/dist/src/sync/types.js.map +0 -1
  373. package/dist/src/sync/utils.js +0 -78
  374. package/dist/src/sync/utils.js.map +0 -1
  375. package/dist/src/utils/reshuffle.js +0 -47
  376. package/dist/src/utils/reshuffle.js.map +0 -1
@@ -1,11 +1,24 @@
1
- import type { OperationWithContext } from "../storage/interfaces.js";
2
- import type { ChannelHealth, RemoteFilter } from "./types.js";
1
+ import type { OperationWithContext } from "@powerhousedao/shared/document-model";
2
+ import { type OperationIndexEntry } from "../cache/operation-index-types.js";
3
+ import type { JobWriteReadyEvent } from "../events/types.js";
4
+ import type { PreparedBatch } from "./batch-aggregator.js";
5
+ import type { IMailbox } from "./mailbox.js";
6
+ import { SyncOperation } from "./sync-operation.js";
7
+ import { type ChannelHealth, type RemoteFilter } from "./types.js";
3
8
  export type OperationBatch = {
4
9
  documentId: string;
5
10
  branch: string;
6
11
  scope: string;
7
12
  operations: OperationWithContext[];
8
13
  };
14
+ /**
15
+ * Trims a mailbox using the jobIds from a batch.
16
+ */
17
+ export declare function trimMailboxFromBatch(mailbox: IMailbox, batch: PreparedBatch): void;
18
+ /**
19
+ * Trims a mailbox using the ack ordinal.
20
+ */
21
+ export declare function trimMailboxFromAckOrdinal(mailbox: IMailbox, ackOrdinal: number): void;
9
22
  /**
10
23
  * Filters operations based on a remote's filter criteria.
11
24
  *
@@ -32,5 +45,27 @@ export declare function createIdleHealth(): ChannelHealth;
32
45
  * This ensures operations are grouped for efficient processing while maintaining
33
46
  * causality across documents and scopes.
34
47
  */
48
+ /**
49
+ * Sorts envelopes by the timestamp of their first operation.
50
+ * Envelopes without operations are placed at the end.
51
+ */
52
+ export declare function sortEnvelopesByFirstOperationTimestamp<T extends {
53
+ operations?: ReadonlyArray<{
54
+ operation: {
55
+ timestampUtcMs: string;
56
+ };
57
+ }> | null | undefined;
58
+ }>(envelopes: T[]): T[];
35
59
  export declare function batchOperationsByDocument(operations: OperationWithContext[]): OperationBatch[];
60
+ export declare function getMaxOrdinal(operations: OperationWithContext[]): number;
61
+ export declare function filterByCollectionMembership(operations: OperationWithContext[], collectionId: string, collectionMemberships?: Record<string, string[]>): OperationWithContext[];
62
+ export declare function toOperationWithContext(entry: OperationIndexEntry): OperationWithContext;
63
+ /**
64
+ * Merges SyncOperations that share the same (documentId, scope, branch) into
65
+ * a single SyncOperation per group. Within each group, operations are sorted
66
+ * by context.ordinal. The merged SyncOperation keeps the first group member's
67
+ * jobId; all other jobIds are remapped so external dependencies still resolve.
68
+ */
69
+ export declare function consolidateSyncOperations(syncOps: SyncOperation[]): SyncOperation[];
70
+ export declare function mergeCollectionMemberships(events: JobWriteReadyEvent[]): Record<string, string[]>;
36
71
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sync/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,oBAAoB,EAAE,EAClC,MAAM,EAAE,YAAY,GACnB,oBAAoB,EAAE,CAmBxB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,oBAAoB,EAAE,GACjC,cAAc,EAAE,CAsClB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sync/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,aAAa,GACnB,IAAI,CAuBN;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,QAAQ,EACjB,UAAU,EAAE,MAAM,QA0BnB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,oBAAoB,EAAE,EAClC,MAAM,EAAE,YAAY,GACnB,oBAAoB,EAAE,CAmBxB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED;;;;;;;;;;;GAWG;AACH;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,CAAC,SAAS;IACR,UAAU,CAAC,EACP,aAAa,CAAC;QAAE,SAAS,EAAE;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,GACxD,IAAI,GACJ,SAAS,CAAC;CACf,EACD,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAWrB;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,oBAAoB,EAAE,GACjC,cAAc,EAAE,CAsClB;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAKxE;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,oBAAoB,EAAE,EAClC,YAAY,EAAE,MAAM,EACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC/C,oBAAoB,EAAE,CAYxB;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,mBAAmB,GACzB,oBAAoB,CAkBtB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,aAAa,EAAE,GACvB,aAAa,EAAE,CAiFjB;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,kBAAkB,EAAE,GAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA2C1B"}
@@ -1,8 +1,12 @@
1
1
  type OperationIndex = {
2
2
  index: number;
3
3
  skip: number;
4
- id?: string;
5
- timestampUtcMs?: string;
4
+ id: string;
5
+ timestampUtcMs: string;
6
+ action?: {
7
+ id?: string;
8
+ type?: string;
9
+ };
6
10
  };
7
11
  /**
8
12
  * Sorts operations by index and skip number.
@@ -10,9 +14,16 @@ type OperationIndex = {
10
14
  */
11
15
  export declare function sortOperations<TOpIndex extends OperationIndex>(operations: TOpIndex[]): TOpIndex[];
12
16
  /**
13
- * Reshuffles operations by timestamp only, ignoring their original index values.
17
+ * Reshuffles operations by timestamp, then applies deterministic tie-breaking.
14
18
  * Used for merging concurrent operations from different branches.
15
19
  *
20
+ * For strict document-structure actions (e.g., CREATE_DOCUMENT/UPGRADE_DOCUMENT),
21
+ * logical index (index - skip) is prioritized to preserve causal replay order.
22
+ *
23
+ * For other actions, action ID is prioritized to ensure a canonical cross-reactor order
24
+ * for concurrent operations that may have diverged local indices due to prior reshuffles.
25
+ * Logical index and operation ID are then used as deterministic tie-breakers.
26
+ *
16
27
  * Example:
17
28
  * [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, 2:0, B3:0, B4:2, B5:0]
18
29
  * GC => [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, B4:2, B5:0]
@@ -20,11 +31,17 @@ export declare function sortOperations<TOpIndex extends OperationIndex>(operatio
20
31
  * Reshuffle(6:4) => [6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
21
32
  * merge => [0:0, 1:0, 6:4, 7:0, 8:0, 9:0, 10:0, 11:0]
22
33
  */
23
- export declare function reshuffleByTimestamp<TOp extends OperationIndex>(startIndex: OperationIndex, opsA: TOp[], opsB: TOp[]): TOp[];
34
+ export declare function reshuffleByTimestamp<TOp extends OperationIndex>(startIndex: {
35
+ index: number;
36
+ skip: number;
37
+ }, opsA: TOp[], opsB: TOp[]): TOp[];
24
38
  /**
25
39
  * Reshuffles operations by timestamp first, then by original index value.
26
40
  * Used for merging concurrent operations while preserving index ordering for operations with same timestamp.
27
41
  */
28
- export declare function reshuffleByTimestampAndIndex<TOp extends OperationIndex>(startIndex: OperationIndex, opsA: TOp[], opsB: TOp[]): TOp[];
42
+ export declare function reshuffleByTimestampAndIndex<TOp extends OperationIndex>(startIndex: {
43
+ index: number;
44
+ skip: number;
45
+ }, opsA: TOp[], opsB: TOp[]): TOp[];
29
46
  export {};
30
47
  //# sourceMappingURL=reshuffle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reshuffle.d.ts","sourceRoot":"","sources":["../../../src/utils/reshuffle.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,SAAS,cAAc,EAC5D,UAAU,EAAE,QAAQ,EAAE,GACrB,QAAQ,EAAE,CAKZ;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,SAAS,cAAc,EAC7D,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,GAAG,EAAE,EACX,IAAI,EAAE,GAAG,EAAE,GACV,GAAG,EAAE,CAYP;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,SAAS,cAAc,EACrE,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,GAAG,EAAE,EACX,IAAI,EAAE,GAAG,EAAE,GACV,GAAG,EAAE,CAaP"}
1
+ {"version":3,"file":"reshuffle.d.ts","sourceRoot":"","sources":["../../../src/utils/reshuffle.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAUF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,SAAS,cAAc,EAC5D,UAAU,EAAE,QAAQ,EAAE,GACrB,QAAQ,EAAE,CAKZ;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,SAAS,cAAc,EAC7D,UAAU,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC3C,IAAI,EAAE,GAAG,EAAE,EACX,IAAI,EAAE,GAAG,EAAE,GACV,GAAG,EAAE,CAuCP;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,SAAS,cAAc,EACrE,UAAU,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC3C,IAAI,EAAE,GAAG,EAAE,EACX,IAAI,EAAE,GAAG,EAAE,GACV,GAAG,EAAE,CAoBP"}
package/package.json CHANGED
@@ -1,18 +1,17 @@
1
1
  {
2
2
  "name": "@powerhousedao/reactor",
3
- "version": "6.0.0-dev.7",
3
+ "version": "6.0.0-dev.78",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "url": "https://github.com/powerhouse-inc/powerhouse",
7
7
  "directory": "packages/reactor"
8
8
  },
9
9
  "type": "module",
10
- "types": "./dist/src/index.d.ts",
11
10
  "exports": {
12
- ".": "./dist/src/index.js"
13
- },
14
- "imports": {
15
- "#*": "./dist/src/*"
11
+ ".": {
12
+ "types": "./dist/src/index.d.ts",
13
+ "import": "./dist/src/index.js"
14
+ }
16
15
  },
17
16
  "files": [
18
17
  "./dist/src"
@@ -23,25 +22,30 @@
23
22
  "keywords": [],
24
23
  "author": "",
25
24
  "license": "AGPL-3.0-only",
26
- "dependencies": {
27
- "@electric-sql/pglite": "0.2.17",
28
- "kysely": "^0.28.2",
29
- "kysely-pglite-dialect": "^1.1.1",
30
- "uuid": "^11.0.5",
31
- "document-drive": "6.0.0-dev.7",
32
- "document-model": "6.0.0-dev.7"
33
- },
34
25
  "devDependencies": {
26
+ "@electric-sql/pglite": "0.3.15",
27
+ "kysely": "0.28.11",
28
+ "kysely-pglite-dialect": "1.2.0",
29
+ "uuid": "^11.0.5",
35
30
  "@vitest/coverage-v8": "^3.2.4",
31
+ "prettier": "3.8.1",
36
32
  "tinybench": "^2.9.0",
37
- "tsx": "^4.19.2",
38
- "typescript": "^5.7.3",
39
- "vitest": "^3.2.4"
33
+ "tsx": "4.21.0",
34
+ "vitest": "3.2.4",
35
+ "@types/bun": "1.3.8",
36
+ "document-drive": "6.0.0-dev.78",
37
+ "document-model": "6.0.0-dev.78",
38
+ "@powerhousedao/shared": "6.0.0-dev.78"
39
+ },
40
+ "peerDependencies": {
41
+ "@electric-sql/pglite": ">=0.3.15",
42
+ "document-drive": "6.0.0-dev.78",
43
+ "document-model": "6.0.0-dev.78"
40
44
  },
41
45
  "scripts": {
42
- "build": "pnpm run build:tsc",
43
- "build:tsc": "tsc --build",
44
46
  "prebuild": "pnpm run clean",
47
+ "build": "tsc",
48
+ "build:bundle": "bun run ./bundle.ts",
45
49
  "test": "vitest run --coverage --printConsoleTrace=true --silent=false",
46
50
  "test:watch": "vitest --coverage",
47
51
  "lint": "eslint",
@@ -49,7 +53,7 @@
49
53
  "bench:sync": "node --import tsx bench/two-reactor-sync.bench.ts",
50
54
  "clean": "rimraf dist",
51
55
  "clean:node_modules": "rimraf node_modules",
52
- "claude": "pnpm build && pnpm test && npx prettier --write \"**/*.ts\" && pnpm lint",
56
+ "claude": "pnpm build && pnpm test && pnpm exec prettier --write \"**/*.ts\" && pnpm lint",
53
57
  "migrate": "tsx src/storage/migrations/run-migrations.ts",
54
58
  "migrate:status": "tsx src/storage/migrations/run-migrations.ts status"
55
59
  }
@@ -1,76 +0,0 @@
1
- import { actions as documentActions, generateId } from "document-model";
2
- export { documentActions };
3
- /**
4
- * Creates a CREATE_DOCUMENT action for document creation.
5
- */
6
- export function createDocumentAction(input) {
7
- return {
8
- id: generateId(),
9
- type: "CREATE_DOCUMENT",
10
- scope: "document",
11
- timestampUtcMs: new Date().toISOString(),
12
- input,
13
- };
14
- }
15
- /**
16
- * Creates an UPGRADE_DOCUMENT action to set initial document state.
17
- */
18
- export function upgradeDocumentAction(input) {
19
- return {
20
- id: generateId(),
21
- type: "UPGRADE_DOCUMENT",
22
- scope: "document",
23
- timestampUtcMs: new Date().toISOString(),
24
- input,
25
- };
26
- }
27
- /**
28
- * Creates a DELETE_DOCUMENT action for document deletion.
29
- */
30
- export function deleteDocumentAction(documentId) {
31
- const input = {
32
- documentId,
33
- };
34
- return {
35
- id: generateId(),
36
- type: "DELETE_DOCUMENT",
37
- scope: "document",
38
- timestampUtcMs: new Date().toISOString(),
39
- input,
40
- };
41
- }
42
- /**
43
- * Creates an ADD_RELATIONSHIP action to establish a parent-child relationship.
44
- */
45
- export function addRelationshipAction(sourceId, targetId, relationshipType = "child") {
46
- const input = {
47
- sourceId,
48
- targetId,
49
- relationshipType,
50
- };
51
- return {
52
- id: generateId(),
53
- type: "ADD_RELATIONSHIP",
54
- scope: "document",
55
- timestampUtcMs: new Date().toISOString(),
56
- input,
57
- };
58
- }
59
- /**
60
- * Creates a REMOVE_RELATIONSHIP action to remove a parent-child relationship.
61
- */
62
- export function removeRelationshipAction(sourceId, targetId, relationshipType = "child") {
63
- const input = {
64
- sourceId,
65
- targetId,
66
- relationshipType,
67
- };
68
- return {
69
- id: generateId(),
70
- type: "REMOVE_RELATIONSHIP",
71
- scope: "document",
72
- timestampUtcMs: new Date().toISOString(),
73
- input,
74
- };
75
- }
76
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/actions/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAgC;IACnE,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,UAAU;QACjB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACxC,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAiC;IAEjC,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,UAAU;QACjB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACxC,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,MAAM,KAAK,GAA8B;QACvC,UAAU;KACX,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,UAAU;QACjB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACxC,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,QAAgB,EAChB,mBAA2B,OAAO;IAElC,MAAM,KAAK,GAA+B;QACxC,QAAQ;QACR,QAAQ;QACR,gBAAgB;KACjB,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,UAAU;QACjB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACxC,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAgB,EAChB,QAAgB,EAChB,mBAA2B,OAAO;IAElC,MAAM,KAAK,GAAkC;QAC3C,QAAQ;QACR,QAAQ;QACR,gBAAgB;KACjB,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,UAAU,EAAE;QAChB,IAAI,EAAE,qBAAqB;QAC3B,KAAK,EAAE,UAAU;QACjB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACxC,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -1,69 +0,0 @@
1
- /**
2
- * RingBuffer is a generic circular buffer implementation that stores a fixed number
3
- * of items. When the buffer is full, new items overwrite the oldest items.
4
- *
5
- * This implementation maintains O(1) time complexity for push operations and provides
6
- * items in chronological order (oldest to newest) via getAll().
7
- *
8
- * @template T - The type of items stored in the buffer
9
- */
10
- export class RingBuffer {
11
- buffer;
12
- head = 0;
13
- size = 0;
14
- capacity;
15
- constructor(capacity) {
16
- if (capacity <= 0) {
17
- throw new Error("Ring buffer capacity must be greater than 0");
18
- }
19
- this.capacity = capacity;
20
- this.buffer = new Array(capacity);
21
- }
22
- /**
23
- * Adds an item to the buffer. If the buffer is full, overwrites the oldest item.
24
- *
25
- * @param item - The item to add
26
- */
27
- push(item) {
28
- const index = (this.head + this.size) % this.capacity;
29
- if (this.size < this.capacity) {
30
- this.buffer[index] = item;
31
- this.size++;
32
- }
33
- else {
34
- this.buffer[this.head] = item;
35
- this.head = (this.head + 1) % this.capacity;
36
- }
37
- }
38
- /**
39
- * Returns all items in the buffer in chronological order (oldest to newest).
40
- *
41
- * @returns Array of items in insertion order
42
- */
43
- getAll() {
44
- if (this.size === 0) {
45
- return [];
46
- }
47
- const result = [];
48
- for (let i = 0; i < this.size; i++) {
49
- const index = (this.head + i) % this.capacity;
50
- result.push(this.buffer[index]);
51
- }
52
- return result;
53
- }
54
- /**
55
- * Clears all items from the buffer.
56
- */
57
- clear() {
58
- this.buffer = new Array(this.capacity);
59
- this.head = 0;
60
- this.size = 0;
61
- }
62
- /**
63
- * Gets the current number of items in the buffer.
64
- */
65
- get length() {
66
- return this.size;
67
- }
68
- }
69
- //# sourceMappingURL=ring-buffer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ring-buffer.js","sourceRoot":"","sources":["../../../../src/cache/buffer/ring-buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,CAAM;IACZ,IAAI,GAAW,CAAC,CAAC;IACjB,IAAI,GAAW,CAAC,CAAC;IACjB,QAAQ,CAAS;IAEzB,YAAY,QAAgB;QAC1B,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAI,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,IAAO;QACV,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEtD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=document-meta-cache-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document-meta-cache-types.js","sourceRoot":"","sources":["../../../src/cache/document-meta-cache-types.ts"],"names":[],"mappings":""}
@@ -1,128 +0,0 @@
1
- import { applyDeleteDocumentAction, applyUpgradeDocumentAction, createDocumentFromAction, } from "../executor/util.js";
2
- import { LRUTracker } from "./lru/lru-tracker.js";
3
- /**
4
- * In-memory document metadata cache with LRU eviction.
5
- *
6
- * Caches PHDocumentState per (documentId, branch) key. On cache miss,
7
- * rebuilds from document scope operations. Provides an explicit cross-scope
8
- * contract for accessing document scope metadata.
9
- *
10
- * **Thread Safety:**
11
- * Not thread-safe. Designed for single-threaded job executor environment.
12
- */
13
- export class DocumentMetaCache {
14
- cache;
15
- lruTracker;
16
- operationStore;
17
- config;
18
- constructor(operationStore, config) {
19
- this.operationStore = operationStore;
20
- this.config = {
21
- maxDocuments: config.maxDocuments,
22
- };
23
- this.cache = new Map();
24
- this.lruTracker = new LRUTracker();
25
- }
26
- async startup() {
27
- return Promise.resolve();
28
- }
29
- async shutdown() {
30
- return Promise.resolve();
31
- }
32
- async getDocumentMeta(documentId, branch, signal) {
33
- if (signal?.aborted) {
34
- throw new Error("Operation aborted");
35
- }
36
- const key = this.makeKey(documentId, branch);
37
- const cached = this.cache.get(key);
38
- if (cached) {
39
- this.lruTracker.touch(key);
40
- return cached;
41
- }
42
- const meta = await this.rebuildLatest(documentId, branch, signal);
43
- this.putDocumentMeta(documentId, branch, meta);
44
- return meta;
45
- }
46
- async rebuildAtRevision(documentId, branch, targetRevision, signal) {
47
- if (signal?.aborted) {
48
- throw new Error("Operation aborted");
49
- }
50
- return this.rebuildFromOperations(documentId, branch, targetRevision, signal);
51
- }
52
- putDocumentMeta(documentId, branch, meta) {
53
- const key = this.makeKey(documentId, branch);
54
- if (!this.cache.has(key) && this.cache.size >= this.config.maxDocuments) {
55
- const evictKey = this.lruTracker.evict();
56
- if (evictKey) {
57
- this.cache.delete(evictKey);
58
- }
59
- }
60
- this.cache.set(key, structuredClone(meta));
61
- this.lruTracker.touch(key);
62
- }
63
- invalidate(documentId, branch) {
64
- let evicted = 0;
65
- if (branch === undefined) {
66
- for (const key of this.cache.keys()) {
67
- if (key.startsWith(`${documentId}:`)) {
68
- this.cache.delete(key);
69
- this.lruTracker.remove(key);
70
- evicted++;
71
- }
72
- }
73
- }
74
- else {
75
- const key = this.makeKey(documentId, branch);
76
- if (this.cache.has(key)) {
77
- this.cache.delete(key);
78
- this.lruTracker.remove(key);
79
- evicted = 1;
80
- }
81
- }
82
- return evicted;
83
- }
84
- clear() {
85
- this.cache.clear();
86
- this.lruTracker.clear();
87
- }
88
- makeKey(documentId, branch) {
89
- return `${documentId}:${branch}`;
90
- }
91
- async rebuildLatest(documentId, branch, signal) {
92
- return this.rebuildFromOperations(documentId, branch, undefined, signal);
93
- }
94
- async rebuildFromOperations(documentId, branch, targetRevision, signal) {
95
- const docScopeOps = await this.operationStore.getSince(documentId, "document", branch, -1, undefined, signal);
96
- if (docScopeOps.items.length === 0) {
97
- throw new Error(`Document ${documentId} not found`);
98
- }
99
- const createOp = docScopeOps.items[0];
100
- if (createOp.action.type !== "CREATE_DOCUMENT") {
101
- throw new Error(`Invalid document: first operation must be CREATE_DOCUMENT, found ${createOp.action.type}`);
102
- }
103
- const createAction = createOp.action;
104
- const documentType = createAction.input.model;
105
- let document = createDocumentFromAction(createAction);
106
- let documentScopeRevision = 0;
107
- for (const op of docScopeOps.items) {
108
- if (targetRevision !== undefined && op.index > targetRevision) {
109
- break;
110
- }
111
- documentScopeRevision = op.index;
112
- if (op.action.type === "UPGRADE_DOCUMENT") {
113
- const upgradeAction = op.action;
114
- document = applyUpgradeDocumentAction(document, upgradeAction);
115
- }
116
- else if (op.action.type === "DELETE_DOCUMENT") {
117
- document = applyDeleteDocumentAction(document, op.action);
118
- }
119
- // for now, we are skipping relationship operations
120
- }
121
- return {
122
- state: document.state.document,
123
- documentType,
124
- documentScopeRevision: documentScopeRevision + 1,
125
- };
126
- }
127
- }
128
- //# sourceMappingURL=document-meta-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document-meta-cache.js","sourceRoot":"","sources":["../../../src/cache/document-meta-cache.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { KyselyOperationIndex } from "./kysely-operation-index.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cache/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}