@powerhousedao/reactor 6.0.0-dev.25 → 6.0.0-dev.250

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 (409) hide show
  1. package/dist/index.d.ts +4594 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +10037 -0
  4. package/dist/index.js.map +1 -0
  5. package/package.json +25 -20
  6. package/dist/src/actions/index.d.ts +0 -24
  7. package/dist/src/actions/index.d.ts.map +0 -1
  8. package/dist/src/actions/index.js +0 -76
  9. package/dist/src/actions/index.js.map +0 -1
  10. package/dist/src/cache/buffer/ring-buffer.d.ts +0 -37
  11. package/dist/src/cache/buffer/ring-buffer.d.ts.map +0 -1
  12. package/dist/src/cache/buffer/ring-buffer.js +0 -69
  13. package/dist/src/cache/buffer/ring-buffer.js.map +0 -1
  14. package/dist/src/cache/document-meta-cache-types.d.ts +0 -114
  15. package/dist/src/cache/document-meta-cache-types.d.ts.map +0 -1
  16. package/dist/src/cache/document-meta-cache-types.js +0 -2
  17. package/dist/src/cache/document-meta-cache-types.js.map +0 -1
  18. package/dist/src/cache/document-meta-cache.d.ts +0 -30
  19. package/dist/src/cache/document-meta-cache.d.ts.map +0 -1
  20. package/dist/src/cache/document-meta-cache.js +0 -128
  21. package/dist/src/cache/document-meta-cache.js.map +0 -1
  22. package/dist/src/cache/index.d.ts +0 -3
  23. package/dist/src/cache/index.d.ts.map +0 -1
  24. package/dist/src/cache/index.js +0 -2
  25. package/dist/src/cache/index.js.map +0 -1
  26. package/dist/src/cache/kysely-operation-index.d.ts +0 -16
  27. package/dist/src/cache/kysely-operation-index.d.ts.map +0 -1
  28. package/dist/src/cache/kysely-operation-index.js +0 -265
  29. package/dist/src/cache/kysely-operation-index.js.map +0 -1
  30. package/dist/src/cache/kysely-write-cache.d.ts +0 -134
  31. package/dist/src/cache/kysely-write-cache.d.ts.map +0 -1
  32. package/dist/src/cache/kysely-write-cache.js +0 -388
  33. package/dist/src/cache/kysely-write-cache.js.map +0 -1
  34. package/dist/src/cache/lru/lru-tracker.d.ts +0 -15
  35. package/dist/src/cache/lru/lru-tracker.d.ts.map +0 -1
  36. package/dist/src/cache/lru/lru-tracker.js +0 -96
  37. package/dist/src/cache/lru/lru-tracker.js.map +0 -1
  38. package/dist/src/cache/operation-index-types.d.ts +0 -51
  39. package/dist/src/cache/operation-index-types.d.ts.map +0 -1
  40. package/dist/src/cache/operation-index-types.js +0 -4
  41. package/dist/src/cache/operation-index-types.js.map +0 -1
  42. package/dist/src/cache/write/interfaces.d.ts +0 -83
  43. package/dist/src/cache/write/interfaces.d.ts.map +0 -1
  44. package/dist/src/cache/write/interfaces.js +0 -2
  45. package/dist/src/cache/write/interfaces.js.map +0 -1
  46. package/dist/src/cache/write-cache-types.d.ts +0 -42
  47. package/dist/src/cache/write-cache-types.d.ts.map +0 -1
  48. package/dist/src/cache/write-cache-types.js +0 -2
  49. package/dist/src/cache/write-cache-types.js.map +0 -1
  50. package/dist/src/client/reactor-client.d.ts +0 -121
  51. package/dist/src/client/reactor-client.d.ts.map +0 -1
  52. package/dist/src/client/reactor-client.js +0 -425
  53. package/dist/src/client/reactor-client.js.map +0 -1
  54. package/dist/src/client/types.d.ts +0 -253
  55. package/dist/src/client/types.d.ts.map +0 -1
  56. package/dist/src/client/types.js +0 -14
  57. package/dist/src/client/types.js.map +0 -1
  58. package/dist/src/core/reactor-builder.d.ts +0 -47
  59. package/dist/src/core/reactor-builder.d.ts.map +0 -1
  60. package/dist/src/core/reactor-builder.js +0 -231
  61. package/dist/src/core/reactor-builder.js.map +0 -1
  62. package/dist/src/core/reactor-client-builder.d.ts +0 -49
  63. package/dist/src/core/reactor-client-builder.d.ts.map +0 -1
  64. package/dist/src/core/reactor-client-builder.js +0 -123
  65. package/dist/src/core/reactor-client-builder.js.map +0 -1
  66. package/dist/src/core/reactor.d.ts +0 -116
  67. package/dist/src/core/reactor.d.ts.map +0 -1
  68. package/dist/src/core/reactor.js +0 -986
  69. package/dist/src/core/reactor.js.map +0 -1
  70. package/dist/src/core/types.d.ts +0 -277
  71. package/dist/src/core/types.d.ts.map +0 -1
  72. package/dist/src/core/types.js +0 -2
  73. package/dist/src/core/types.js.map +0 -1
  74. package/dist/src/core/utils.d.ts +0 -59
  75. package/dist/src/core/utils.d.ts.map +0 -1
  76. package/dist/src/core/utils.js +0 -171
  77. package/dist/src/core/utils.js.map +0 -1
  78. package/dist/src/events/event-bus.d.ts +0 -8
  79. package/dist/src/events/event-bus.d.ts.map +0 -1
  80. package/dist/src/events/event-bus.js +0 -53
  81. package/dist/src/events/event-bus.js.map +0 -1
  82. package/dist/src/events/interfaces.d.ts +0 -27
  83. package/dist/src/events/interfaces.d.ts.map +0 -1
  84. package/dist/src/events/interfaces.js +0 -2
  85. package/dist/src/events/interfaces.js.map +0 -1
  86. package/dist/src/events/types.d.ts +0 -69
  87. package/dist/src/events/types.d.ts.map +0 -1
  88. package/dist/src/events/types.js +0 -28
  89. package/dist/src/events/types.js.map +0 -1
  90. package/dist/src/executor/interfaces.d.ts +0 -49
  91. package/dist/src/executor/interfaces.d.ts.map +0 -1
  92. package/dist/src/executor/interfaces.js +0 -2
  93. package/dist/src/executor/interfaces.js.map +0 -1
  94. package/dist/src/executor/simple-job-executor-manager.d.ts +0 -34
  95. package/dist/src/executor/simple-job-executor-manager.d.ts.map +0 -1
  96. package/dist/src/executor/simple-job-executor-manager.js +0 -236
  97. package/dist/src/executor/simple-job-executor-manager.js.map +0 -1
  98. package/dist/src/executor/simple-job-executor.d.ts +0 -80
  99. package/dist/src/executor/simple-job-executor.d.ts.map +0 -1
  100. package/dist/src/executor/simple-job-executor.js +0 -898
  101. package/dist/src/executor/simple-job-executor.js.map +0 -1
  102. package/dist/src/executor/types.d.ts +0 -93
  103. package/dist/src/executor/types.d.ts.map +0 -1
  104. package/dist/src/executor/types.js +0 -11
  105. package/dist/src/executor/types.js.map +0 -1
  106. package/dist/src/executor/util.d.ts +0 -74
  107. package/dist/src/executor/util.d.ts.map +0 -1
  108. package/dist/src/executor/util.js +0 -184
  109. package/dist/src/executor/util.js.map +0 -1
  110. package/dist/src/index.d.ts +0 -53
  111. package/dist/src/index.d.ts.map +0 -1
  112. package/dist/src/index.js +0 -62
  113. package/dist/src/index.js.map +0 -1
  114. package/dist/src/job-tracker/in-memory-job-tracker.d.ts +0 -26
  115. package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +0 -1
  116. package/dist/src/job-tracker/in-memory-job-tracker.js +0 -112
  117. package/dist/src/job-tracker/in-memory-job-tracker.js.map +0 -1
  118. package/dist/src/job-tracker/index.d.ts +0 -3
  119. package/dist/src/job-tracker/index.d.ts.map +0 -1
  120. package/dist/src/job-tracker/index.js +0 -2
  121. package/dist/src/job-tracker/index.js.map +0 -1
  122. package/dist/src/job-tracker/interfaces.d.ts +0 -41
  123. package/dist/src/job-tracker/interfaces.d.ts.map +0 -1
  124. package/dist/src/job-tracker/interfaces.js +0 -2
  125. package/dist/src/job-tracker/interfaces.js.map +0 -1
  126. package/dist/src/logging/console.d.ts +0 -23
  127. package/dist/src/logging/console.d.ts.map +0 -1
  128. package/dist/src/logging/console.js +0 -108
  129. package/dist/src/logging/console.js.map +0 -1
  130. package/dist/src/logging/types.d.ts +0 -12
  131. package/dist/src/logging/types.d.ts.map +0 -1
  132. package/dist/src/logging/types.js +0 -2
  133. package/dist/src/logging/types.js.map +0 -1
  134. package/dist/src/processors/index.d.ts +0 -3
  135. package/dist/src/processors/index.d.ts.map +0 -1
  136. package/dist/src/processors/index.js +0 -2
  137. package/dist/src/processors/index.js.map +0 -1
  138. package/dist/src/processors/processor-manager.d.ts +0 -38
  139. package/dist/src/processors/processor-manager.d.ts.map +0 -1
  140. package/dist/src/processors/processor-manager.js +0 -165
  141. package/dist/src/processors/processor-manager.js.map +0 -1
  142. package/dist/src/processors/types.d.ts +0 -63
  143. package/dist/src/processors/types.d.ts.map +0 -1
  144. package/dist/src/processors/types.js +0 -2
  145. package/dist/src/processors/types.js.map +0 -1
  146. package/dist/src/processors/utils.d.ts +0 -10
  147. package/dist/src/processors/utils.d.ts.map +0 -1
  148. package/dist/src/processors/utils.js +0 -59
  149. package/dist/src/processors/utils.js.map +0 -1
  150. package/dist/src/queue/interfaces.d.ts +0 -103
  151. package/dist/src/queue/interfaces.d.ts.map +0 -1
  152. package/dist/src/queue/interfaces.js +0 -2
  153. package/dist/src/queue/interfaces.js.map +0 -1
  154. package/dist/src/queue/job-execution-handle.d.ts +0 -25
  155. package/dist/src/queue/job-execution-handle.d.ts.map +0 -1
  156. package/dist/src/queue/job-execution-handle.js +0 -62
  157. package/dist/src/queue/job-execution-handle.js.map +0 -1
  158. package/dist/src/queue/queue.d.ts +0 -81
  159. package/dist/src/queue/queue.d.ts.map +0 -1
  160. package/dist/src/queue/queue.js +0 -384
  161. package/dist/src/queue/queue.js.map +0 -1
  162. package/dist/src/queue/types.d.ts +0 -73
  163. package/dist/src/queue/types.d.ts.map +0 -1
  164. package/dist/src/queue/types.js +0 -19
  165. package/dist/src/queue/types.js.map +0 -1
  166. package/dist/src/read-models/base-read-model.d.ts +0 -60
  167. package/dist/src/read-models/base-read-model.d.ts.map +0 -1
  168. package/dist/src/read-models/base-read-model.js +0 -143
  169. package/dist/src/read-models/base-read-model.js.map +0 -1
  170. package/dist/src/read-models/coordinator.d.ts +0 -39
  171. package/dist/src/read-models/coordinator.d.ts.map +0 -1
  172. package/dist/src/read-models/coordinator.js +0 -72
  173. package/dist/src/read-models/coordinator.js.map +0 -1
  174. package/dist/src/read-models/document-view.d.ts +0 -24
  175. package/dist/src/read-models/document-view.d.ts.map +0 -1
  176. package/dist/src/read-models/document-view.js +0 -356
  177. package/dist/src/read-models/document-view.js.map +0 -1
  178. package/dist/src/read-models/interfaces.d.ts +0 -29
  179. package/dist/src/read-models/interfaces.d.ts.map +0 -1
  180. package/dist/src/read-models/interfaces.js +0 -2
  181. package/dist/src/read-models/interfaces.js.map +0 -1
  182. package/dist/src/read-models/types.d.ts +0 -47
  183. package/dist/src/read-models/types.d.ts.map +0 -1
  184. package/dist/src/read-models/types.js +0 -2
  185. package/dist/src/read-models/types.js.map +0 -1
  186. package/dist/src/registry/implementation.d.ts +0 -70
  187. package/dist/src/registry/implementation.d.ts.map +0 -1
  188. package/dist/src/registry/implementation.js +0 -216
  189. package/dist/src/registry/implementation.js.map +0 -1
  190. package/dist/src/registry/index.d.ts +0 -3
  191. package/dist/src/registry/index.d.ts.map +0 -1
  192. package/dist/src/registry/index.js +0 -2
  193. package/dist/src/registry/index.js.map +0 -1
  194. package/dist/src/registry/interfaces.d.ts +0 -100
  195. package/dist/src/registry/interfaces.d.ts.map +0 -1
  196. package/dist/src/registry/interfaces.js +0 -2
  197. package/dist/src/registry/interfaces.js.map +0 -1
  198. package/dist/src/shared/awaiter.d.ts +0 -35
  199. package/dist/src/shared/awaiter.d.ts.map +0 -1
  200. package/dist/src/shared/awaiter.js +0 -123
  201. package/dist/src/shared/awaiter.js.map +0 -1
  202. package/dist/src/shared/consistency-tracker.d.ts +0 -48
  203. package/dist/src/shared/consistency-tracker.d.ts.map +0 -1
  204. package/dist/src/shared/consistency-tracker.js +0 -123
  205. package/dist/src/shared/consistency-tracker.js.map +0 -1
  206. package/dist/src/shared/drive-url.d.ts +0 -15
  207. package/dist/src/shared/drive-url.d.ts.map +0 -1
  208. package/dist/src/shared/drive-url.js +0 -17
  209. package/dist/src/shared/drive-url.js.map +0 -1
  210. package/dist/src/shared/errors.d.ts +0 -41
  211. package/dist/src/shared/errors.d.ts.map +0 -1
  212. package/dist/src/shared/errors.js +0 -75
  213. package/dist/src/shared/errors.js.map +0 -1
  214. package/dist/src/shared/factories.d.ts +0 -16
  215. package/dist/src/shared/factories.d.ts.map +0 -1
  216. package/dist/src/shared/factories.js +0 -33
  217. package/dist/src/shared/factories.js.map +0 -1
  218. package/dist/src/shared/types.d.ts +0 -140
  219. package/dist/src/shared/types.d.ts.map +0 -1
  220. package/dist/src/shared/types.js +0 -38
  221. package/dist/src/shared/types.js.map +0 -1
  222. package/dist/src/shared/utils.d.ts +0 -3
  223. package/dist/src/shared/utils.d.ts.map +0 -1
  224. package/dist/src/shared/utils.js +0 -8
  225. package/dist/src/shared/utils.js.map +0 -1
  226. package/dist/src/signer/passthrough-signer.d.ts +0 -12
  227. package/dist/src/signer/passthrough-signer.d.ts.map +0 -1
  228. package/dist/src/signer/passthrough-signer.js +0 -19
  229. package/dist/src/signer/passthrough-signer.js.map +0 -1
  230. package/dist/src/signer/types.d.ts +0 -17
  231. package/dist/src/signer/types.d.ts.map +0 -1
  232. package/dist/src/signer/types.js +0 -2
  233. package/dist/src/signer/types.js.map +0 -1
  234. package/dist/src/storage/consistency-aware-legacy-storage.d.ts +0 -33
  235. package/dist/src/storage/consistency-aware-legacy-storage.d.ts.map +0 -1
  236. package/dist/src/storage/consistency-aware-legacy-storage.js +0 -65
  237. package/dist/src/storage/consistency-aware-legacy-storage.js.map +0 -1
  238. package/dist/src/storage/index.d.ts +0 -4
  239. package/dist/src/storage/index.d.ts.map +0 -1
  240. package/dist/src/storage/index.js +0 -3
  241. package/dist/src/storage/index.js.map +0 -1
  242. package/dist/src/storage/interfaces.d.ts +0 -453
  243. package/dist/src/storage/interfaces.d.ts.map +0 -1
  244. package/dist/src/storage/interfaces.js +0 -19
  245. package/dist/src/storage/interfaces.js.map +0 -1
  246. package/dist/src/storage/kysely/document-indexer.d.ts +0 -28
  247. package/dist/src/storage/kysely/document-indexer.d.ts.map +0 -1
  248. package/dist/src/storage/kysely/document-indexer.js +0 -350
  249. package/dist/src/storage/kysely/document-indexer.js.map +0 -1
  250. package/dist/src/storage/kysely/keyframe-store.d.ts +0 -15
  251. package/dist/src/storage/kysely/keyframe-store.d.ts.map +0 -1
  252. package/dist/src/storage/kysely/keyframe-store.js +0 -64
  253. package/dist/src/storage/kysely/keyframe-store.js.map +0 -1
  254. package/dist/src/storage/kysely/store.d.ts +0 -16
  255. package/dist/src/storage/kysely/store.d.ts.map +0 -1
  256. package/dist/src/storage/kysely/store.js +0 -246
  257. package/dist/src/storage/kysely/store.js.map +0 -1
  258. package/dist/src/storage/kysely/sync-cursor-storage.d.ts +0 -13
  259. package/dist/src/storage/kysely/sync-cursor-storage.d.ts.map +0 -1
  260. package/dist/src/storage/kysely/sync-cursor-storage.js +0 -93
  261. package/dist/src/storage/kysely/sync-cursor-storage.js.map +0 -1
  262. package/dist/src/storage/kysely/sync-remote-storage.d.ts +0 -13
  263. package/dist/src/storage/kysely/sync-remote-storage.d.ts.map +0 -1
  264. package/dist/src/storage/kysely/sync-remote-storage.js +0 -133
  265. package/dist/src/storage/kysely/sync-remote-storage.js.map +0 -1
  266. package/dist/src/storage/kysely/types.d.ts +0 -135
  267. package/dist/src/storage/kysely/types.d.ts.map +0 -1
  268. package/dist/src/storage/kysely/types.js +0 -2
  269. package/dist/src/storage/kysely/types.js.map +0 -1
  270. package/dist/src/storage/migrations/001_create_operation_table.d.ts +0 -3
  271. package/dist/src/storage/migrations/001_create_operation_table.d.ts.map +0 -1
  272. package/dist/src/storage/migrations/001_create_operation_table.js +0 -41
  273. package/dist/src/storage/migrations/001_create_operation_table.js.map +0 -1
  274. package/dist/src/storage/migrations/002_create_keyframe_table.d.ts +0 -3
  275. package/dist/src/storage/migrations/002_create_keyframe_table.d.ts.map +0 -1
  276. package/dist/src/storage/migrations/002_create_keyframe_table.js +0 -27
  277. package/dist/src/storage/migrations/002_create_keyframe_table.js.map +0 -1
  278. package/dist/src/storage/migrations/003_create_document_table.d.ts +0 -3
  279. package/dist/src/storage/migrations/003_create_document_table.d.ts.map +0 -1
  280. package/dist/src/storage/migrations/003_create_document_table.js +0 -10
  281. package/dist/src/storage/migrations/003_create_document_table.js.map +0 -1
  282. package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts +0 -3
  283. package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts.map +0 -1
  284. package/dist/src/storage/migrations/004_create_document_relationship_table.js +0 -35
  285. package/dist/src/storage/migrations/004_create_document_relationship_table.js.map +0 -1
  286. package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts +0 -3
  287. package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts.map +0 -1
  288. package/dist/src/storage/migrations/005_create_indexer_state_table.js +0 -10
  289. package/dist/src/storage/migrations/005_create_indexer_state_table.js.map +0 -1
  290. package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts +0 -3
  291. package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts.map +0 -1
  292. package/dist/src/storage/migrations/006_create_document_snapshot_table.js +0 -49
  293. package/dist/src/storage/migrations/006_create_document_snapshot_table.js.map +0 -1
  294. package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts +0 -3
  295. package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts.map +0 -1
  296. package/dist/src/storage/migrations/007_create_slug_mapping_table.js +0 -24
  297. package/dist/src/storage/migrations/007_create_slug_mapping_table.js.map +0 -1
  298. package/dist/src/storage/migrations/008_create_view_state_table.d.ts +0 -3
  299. package/dist/src/storage/migrations/008_create_view_state_table.d.ts.map +0 -1
  300. package/dist/src/storage/migrations/008_create_view_state_table.js +0 -10
  301. package/dist/src/storage/migrations/008_create_view_state_table.js.map +0 -1
  302. package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts +0 -3
  303. package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts.map +0 -1
  304. package/dist/src/storage/migrations/009_create_operation_index_tables.js +0 -50
  305. package/dist/src/storage/migrations/009_create_operation_index_tables.js.map +0 -1
  306. package/dist/src/storage/migrations/010_create_sync_tables.d.ts +0 -3
  307. package/dist/src/storage/migrations/010_create_sync_tables.d.ts.map +0 -1
  308. package/dist/src/storage/migrations/010_create_sync_tables.js +0 -43
  309. package/dist/src/storage/migrations/010_create_sync_tables.js.map +0 -1
  310. package/dist/src/storage/migrations/index.d.ts +0 -3
  311. package/dist/src/storage/migrations/index.d.ts.map +0 -1
  312. package/dist/src/storage/migrations/index.js +0 -3
  313. package/dist/src/storage/migrations/index.js.map +0 -1
  314. package/dist/src/storage/migrations/migrator.d.ts +0 -6
  315. package/dist/src/storage/migrations/migrator.d.ts.map +0 -1
  316. package/dist/src/storage/migrations/migrator.js +0 -78
  317. package/dist/src/storage/migrations/migrator.js.map +0 -1
  318. package/dist/src/storage/migrations/run-migrations.d.ts +0 -2
  319. package/dist/src/storage/migrations/run-migrations.d.ts.map +0 -1
  320. package/dist/src/storage/migrations/run-migrations.js +0 -58
  321. package/dist/src/storage/migrations/run-migrations.js.map +0 -1
  322. package/dist/src/storage/migrations/types.d.ts +0 -9
  323. package/dist/src/storage/migrations/types.d.ts.map +0 -1
  324. package/dist/src/storage/migrations/types.js +0 -2
  325. package/dist/src/storage/migrations/types.js.map +0 -1
  326. package/dist/src/storage/txn.d.ts +0 -15
  327. package/dist/src/storage/txn.d.ts.map +0 -1
  328. package/dist/src/storage/txn.js +0 -42
  329. package/dist/src/storage/txn.js.map +0 -1
  330. package/dist/src/subs/default-error-handler.d.ts +0 -13
  331. package/dist/src/subs/default-error-handler.d.ts.map +0 -1
  332. package/dist/src/subs/default-error-handler.js +0 -27
  333. package/dist/src/subs/default-error-handler.js.map +0 -1
  334. package/dist/src/subs/react-subscription-manager.d.ts +0 -45
  335. package/dist/src/subs/react-subscription-manager.d.ts.map +0 -1
  336. package/dist/src/subs/react-subscription-manager.js +0 -185
  337. package/dist/src/subs/react-subscription-manager.js.map +0 -1
  338. package/dist/src/subs/subscription-notification-read-model.d.ts +0 -17
  339. package/dist/src/subs/subscription-notification-read-model.d.ts.map +0 -1
  340. package/dist/src/subs/subscription-notification-read-model.js +0 -62
  341. package/dist/src/subs/subscription-notification-read-model.js.map +0 -1
  342. package/dist/src/subs/types.d.ts +0 -64
  343. package/dist/src/subs/types.d.ts.map +0 -1
  344. package/dist/src/subs/types.js +0 -2
  345. package/dist/src/subs/types.js.map +0 -1
  346. package/dist/src/sync/channels/composite-channel-factory.d.ts +0 -32
  347. package/dist/src/sync/channels/composite-channel-factory.d.ts.map +0 -1
  348. package/dist/src/sync/channels/composite-channel-factory.js +0 -88
  349. package/dist/src/sync/channels/composite-channel-factory.js.map +0 -1
  350. package/dist/src/sync/channels/gql-channel-factory.d.ts +0 -27
  351. package/dist/src/sync/channels/gql-channel-factory.d.ts.map +0 -1
  352. package/dist/src/sync/channels/gql-channel-factory.js +0 -77
  353. package/dist/src/sync/channels/gql-channel-factory.js.map +0 -1
  354. package/dist/src/sync/channels/gql-channel.d.ts +0 -120
  355. package/dist/src/sync/channels/gql-channel.d.ts.map +0 -1
  356. package/dist/src/sync/channels/gql-channel.js +0 -436
  357. package/dist/src/sync/channels/gql-channel.js.map +0 -1
  358. package/dist/src/sync/channels/index.d.ts +0 -6
  359. package/dist/src/sync/channels/index.d.ts.map +0 -1
  360. package/dist/src/sync/channels/index.js +0 -6
  361. package/dist/src/sync/channels/index.js.map +0 -1
  362. package/dist/src/sync/channels/polling-channel.d.ts +0 -39
  363. package/dist/src/sync/channels/polling-channel.d.ts.map +0 -1
  364. package/dist/src/sync/channels/polling-channel.js +0 -72
  365. package/dist/src/sync/channels/polling-channel.js.map +0 -1
  366. package/dist/src/sync/channels/utils.d.ts +0 -30
  367. package/dist/src/sync/channels/utils.d.ts.map +0 -1
  368. package/dist/src/sync/channels/utils.js +0 -96
  369. package/dist/src/sync/channels/utils.js.map +0 -1
  370. package/dist/src/sync/errors.d.ts +0 -10
  371. package/dist/src/sync/errors.d.ts.map +0 -1
  372. package/dist/src/sync/errors.js +0 -17
  373. package/dist/src/sync/errors.js.map +0 -1
  374. package/dist/src/sync/index.d.ts +0 -12
  375. package/dist/src/sync/index.d.ts.map +0 -1
  376. package/dist/src/sync/index.js +0 -9
  377. package/dist/src/sync/index.js.map +0 -1
  378. package/dist/src/sync/interfaces.d.ts +0 -182
  379. package/dist/src/sync/interfaces.d.ts.map +0 -1
  380. package/dist/src/sync/interfaces.js +0 -2
  381. package/dist/src/sync/interfaces.js.map +0 -1
  382. package/dist/src/sync/mailbox.d.ts +0 -21
  383. package/dist/src/sync/mailbox.d.ts.map +0 -1
  384. package/dist/src/sync/mailbox.js +0 -59
  385. package/dist/src/sync/mailbox.js.map +0 -1
  386. package/dist/src/sync/sync-builder.d.ts +0 -19
  387. package/dist/src/sync/sync-builder.d.ts.map +0 -1
  388. package/dist/src/sync/sync-builder.js +0 -39
  389. package/dist/src/sync/sync-builder.js.map +0 -1
  390. package/dist/src/sync/sync-manager.d.ts +0 -37
  391. package/dist/src/sync/sync-manager.d.ts.map +0 -1
  392. package/dist/src/sync/sync-manager.js +0 -267
  393. package/dist/src/sync/sync-manager.js.map +0 -1
  394. package/dist/src/sync/sync-operation.d.ts +0 -28
  395. package/dist/src/sync/sync-operation.d.ts.map +0 -1
  396. package/dist/src/sync/sync-operation.js +0 -63
  397. package/dist/src/sync/sync-operation.js.map +0 -1
  398. package/dist/src/sync/types.d.ts +0 -62
  399. package/dist/src/sync/types.d.ts.map +0 -1
  400. package/dist/src/sync/types.js +0 -16
  401. package/dist/src/sync/types.js.map +0 -1
  402. package/dist/src/sync/utils.d.ts +0 -36
  403. package/dist/src/sync/utils.d.ts.map +0 -1
  404. package/dist/src/sync/utils.js +0 -78
  405. package/dist/src/sync/utils.js.map +0 -1
  406. package/dist/src/utils/reshuffle.d.ts +0 -40
  407. package/dist/src/utils/reshuffle.d.ts.map +0 -1
  408. package/dist/src/utils/reshuffle.js +0 -70
  409. package/dist/src/utils/reshuffle.js.map +0 -1
@@ -1,143 +0,0 @@
1
- /**
2
- * Base class for read models that provides catch-up/rewind functionality.
3
- * Handles initialization, state tracking via ViewState table, and consistency tracking.
4
- * Subclasses should override indexOperations() with their specific indexing logic.
5
- */
6
- export class BaseReadModel {
7
- db;
8
- operationIndex;
9
- writeCache;
10
- consistencyTracker;
11
- readModelId;
12
- lastOrdinal = 0;
13
- constructor(db, operationIndex, writeCache, consistencyTracker, readModelId) {
14
- this.db = db;
15
- this.operationIndex = operationIndex;
16
- this.writeCache = writeCache;
17
- this.consistencyTracker = consistencyTracker;
18
- this.readModelId = readModelId;
19
- }
20
- /**
21
- * Initializes the read model by loading state and catching up on missed operations.
22
- */
23
- async init() {
24
- const viewState = await this.loadState();
25
- if (viewState !== undefined) {
26
- this.lastOrdinal = viewState;
27
- const missedOperations = await this.operationIndex.getSinceOrdinal(this.lastOrdinal);
28
- if (missedOperations.items.length > 0) {
29
- const opsWithState = await this.rebuildStateForOperations(missedOperations.items);
30
- await this.indexOperations(opsWithState);
31
- }
32
- }
33
- else {
34
- await this.initializeState();
35
- const allOperations = await this.operationIndex.getSinceOrdinal(0);
36
- if (allOperations.items.length > 0) {
37
- const opsWithState = await this.rebuildStateForOperations(allOperations.items);
38
- await this.indexOperations(opsWithState);
39
- }
40
- }
41
- }
42
- /**
43
- * Indexes operations into the read model.
44
- * Subclasses should override this method to implement their specific indexing logic.
45
- * The overriding method should call saveState() and updateConsistencyTracker() at the end.
46
- */
47
- async indexOperations(items) {
48
- if (items.length === 0)
49
- return;
50
- await this.db.transaction().execute(async (trx) => {
51
- await this.saveState(trx, items);
52
- });
53
- this.updateConsistencyTracker(items);
54
- }
55
- /**
56
- * Waits for the read model to reach the specified consistency level.
57
- */
58
- async waitForConsistency(token, timeoutMs, signal) {
59
- if (token.coordinates.length === 0) {
60
- return;
61
- }
62
- await this.consistencyTracker.waitFor(token.coordinates, timeoutMs, signal);
63
- }
64
- /**
65
- * Rebuilds document state for each operation using the write cache.
66
- */
67
- async rebuildStateForOperations(operations) {
68
- const result = [];
69
- for (const op of operations) {
70
- const { documentId, scope, branch } = op.context;
71
- const targetRevision = op.operation.index;
72
- const document = await this.writeCache.getState(documentId, scope, branch, targetRevision);
73
- result.push({
74
- operation: op.operation,
75
- context: {
76
- ...op.context,
77
- resultingState: JSON.stringify(document),
78
- },
79
- });
80
- }
81
- return result;
82
- }
83
- /**
84
- * Loads the last processed ordinal from the ViewState table.
85
- * Returns undefined if no state exists for this read model.
86
- */
87
- async loadState() {
88
- const viewStateDb = this.db;
89
- const row = await viewStateDb
90
- .selectFrom("ViewState")
91
- .select("lastOrdinal")
92
- .where("readModelId", "=", this.readModelId)
93
- .executeTakeFirst();
94
- return row?.lastOrdinal;
95
- }
96
- /**
97
- * Initializes the ViewState row for this read model.
98
- */
99
- async initializeState() {
100
- const viewStateDb = this.db;
101
- await viewStateDb
102
- .insertInto("ViewState")
103
- .values({
104
- readModelId: this.readModelId,
105
- lastOrdinal: 0,
106
- })
107
- .execute();
108
- }
109
- /**
110
- * Saves the last processed ordinal to the ViewState table.
111
- * Should be called at the end of indexOperations() within a transaction.
112
- */
113
- async saveState(trx, items) {
114
- const maxOrdinal = Math.max(...items.map((item) => item.context.ordinal));
115
- this.lastOrdinal = maxOrdinal;
116
- await trx
117
- .updateTable("ViewState")
118
- .set({
119
- lastOrdinal: maxOrdinal,
120
- lastOperationTimestamp: new Date(),
121
- })
122
- .where("readModelId", "=", this.readModelId)
123
- .execute();
124
- }
125
- /**
126
- * Updates the consistency tracker with the processed operations.
127
- * Should be called at the end of indexOperations() after the transaction commits.
128
- */
129
- updateConsistencyTracker(items) {
130
- const coordinates = [];
131
- for (let i = 0; i < items.length; i++) {
132
- const item = items[i];
133
- coordinates.push({
134
- documentId: item.context.documentId,
135
- scope: item.context.scope,
136
- branch: item.context.branch,
137
- operationIndex: item.operation.index,
138
- });
139
- }
140
- this.consistencyTracker.update(coordinates);
141
- }
142
- }
143
- //# sourceMappingURL=base-read-model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-read-model.js","sourceRoot":"","sources":["../../../src/read-models/base-read-model.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
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
- readonly preReady: IReadModel[];
19
- readonly postReady: IReadModel[];
20
- private unsubscribe?;
21
- private isRunning;
22
- constructor(eventBus: IEventBus, preReady: IReadModel[], postReady: IReadModel[]);
23
- /**
24
- * Start listening for operation events and updating read models.
25
- * Can be called multiple times safely (subsequent calls are no-ops).
26
- */
27
- start(): void;
28
- /**
29
- * Stop listening and clean up subscriptions.
30
- * Can be called multiple times safely (subsequent calls are no-ops).
31
- */
32
- stop(): void;
33
- /**
34
- * Handle operation written events by updating all read models in parallel.
35
- * Errors from individual read models are collected and re-thrown as an aggregate.
36
- */
37
- private handleOperationWritten;
38
- }
39
- //# sourceMappingURL=coordinator.d.ts.map
@@ -1 +0,0 @@
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;aACA,QAAQ,EAAE,UAAU,EAAE;aACtB,SAAS,EAAE,UAAU,EAAE;IANzC,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,SAAS,CAAS;gBAGhB,QAAQ,EAAE,SAAS,EACX,QAAQ,EAAE,UAAU,EAAE,EACtB,SAAS,EAAE,UAAU,EAAE;IAKzC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAgBb;;;OAGG;IACH,IAAI,IAAI,IAAI;IAaZ;;;OAGG;YACW,sBAAsB;CAwBrC"}
@@ -1,72 +0,0 @@
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
- preReady;
18
- postReady;
19
- unsubscribe;
20
- isRunning = false;
21
- constructor(eventBus, preReady, postReady) {
22
- this.eventBus = eventBus;
23
- this.preReady = preReady;
24
- this.postReady = postReady;
25
- //
26
- }
27
- /**
28
- * Start listening for operation events and updating read models.
29
- * Can be called multiple times safely (subsequent calls are no-ops).
30
- */
31
- start() {
32
- if (this.isRunning) {
33
- return;
34
- }
35
- // Subscribe to OPERATION_WRITTEN events
36
- this.unsubscribe = this.eventBus.subscribe(OperationEventTypes.OPERATION_WRITTEN, async (type, event) => {
37
- await this.handleOperationWritten(event);
38
- });
39
- this.isRunning = true;
40
- }
41
- /**
42
- * Stop listening and clean up subscriptions.
43
- * Can be called multiple times safely (subsequent calls are no-ops).
44
- */
45
- stop() {
46
- if (!this.isRunning) {
47
- return;
48
- }
49
- if (this.unsubscribe) {
50
- this.unsubscribe();
51
- this.unsubscribe = undefined;
52
- }
53
- this.isRunning = false;
54
- }
55
- /**
56
- * Handle operation written events by updating all read models in parallel.
57
- * Errors from individual read models are collected and re-thrown as an aggregate.
58
- */
59
- async handleOperationWritten(event) {
60
- // Index into pre-ready read models in parallel
61
- await Promise.all(this.preReady.map((readModel) => readModel.indexOperations(event.operations)));
62
- // Emit OPERATIONS_READY event after all pre-ready read models have completed
63
- const readyEvent = {
64
- jobId: event.jobId,
65
- operations: event.operations,
66
- };
67
- await this.eventBus.emit(OperationEventTypes.OPERATIONS_READY, readyEvent);
68
- // Process post-ready read models (e.g., subscription notifications)
69
- await Promise.all(this.postReady.map((readModel) => readModel.indexOperations(event.operations)));
70
- }
71
- }
72
- //# sourceMappingURL=coordinator.js.map
@@ -1 +0,0 @@
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;IACQ;IACA;IANV,WAAW,CAAe;IAC1B,SAAS,GAAG,KAAK,CAAC;IAE1B,YACU,QAAmB,EACX,QAAsB,EACtB,SAAuB;QAF/B,aAAQ,GAAR,QAAQ,CAAW;QACX,aAAQ,GAAR,QAAQ,CAAc;QACtB,cAAS,GAAT,SAAS,CAAc;QAEvC,EAAE;IACJ,CAAC;IAED;;;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,+CAA+C;QAC/C,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC9B,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAC5C,CACF,CAAC;QAEF,6EAA6E;QAC7E,MAAM,UAAU,GAAyB;YACvC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC;QACF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAE3E,oEAAoE;QACpE,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC/B,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAC5C,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -1,24 +0,0 @@
1
- import type { PHDocument } from "document-model";
2
- import type { Kysely } from "kysely";
3
- import type { IOperationIndex } from "../cache/operation-index-types.js";
4
- import type { IWriteCache } from "../cache/write/interfaces.js";
5
- import type { IConsistencyTracker } from "../shared/consistency-tracker.js";
6
- import type { ConsistencyToken } from "../shared/types.js";
7
- import type { IDocumentView, IOperationStore, OperationWithContext, PagedResults, PagingOptions, ViewFilter } from "../storage/interfaces.js";
8
- import type { Database as StorageDatabase } from "../storage/kysely/types.js";
9
- import { BaseReadModel } from "./base-read-model.js";
10
- import type { DocumentViewDatabase } from "./types.js";
11
- type Database = StorageDatabase & DocumentViewDatabase;
12
- export declare class KyselyDocumentView extends BaseReadModel implements IDocumentView {
13
- private operationStore;
14
- private _db;
15
- constructor(db: Kysely<Database>, operationStore: IOperationStore, operationIndex: IOperationIndex, writeCache: IWriteCache, consistencyTracker: IConsistencyTracker);
16
- indexOperations(items: OperationWithContext[]): Promise<void>;
17
- exists(documentIds: string[], consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<boolean[]>;
18
- get<TDocument extends PHDocument>(documentId: string, view?: ViewFilter, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<TDocument>;
19
- getByIdOrSlug<TDocument extends PHDocument>(identifier: string, view?: ViewFilter, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<TDocument>;
20
- findByType(type: string, view?: ViewFilter, paging?: PagingOptions, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<PagedResults<PHDocument>>;
21
- resolveSlug(slug: string, view?: ViewFilter, consistencyToken?: ConsistencyToken, signal?: AbortSignal): Promise<string | undefined>;
22
- }
23
- export {};
24
- //# sourceMappingURL=document-view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"document-view.d.ts","sourceRoot":"","sources":["../../../src/read-models/document-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EACV,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB,KAAK,QAAQ,GAAG,eAAe,GAAG,oBAAoB,CAAC;AAEvD,qBAAa,kBAAmB,SAAQ,aAAc,YAAW,aAAa;IAK1E,OAAO,CAAC,cAAc;IAJxB,OAAO,CAAC,GAAG,CAAmB;gBAG5B,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EACZ,cAAc,EAAE,eAAe,EACvC,cAAc,EAAE,eAAe,EAC/B,UAAU,EAAE,WAAW,EACvB,kBAAkB,EAAE,mBAAmB;IAY1B,eAAe,CAAC,KAAK,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0KtE,MAAM,CACV,WAAW,EAAE,MAAM,EAAE,EACrB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,EAAE,CAAC;IA0Bf,GAAG,CAAC,SAAS,SAAS,UAAU,EACpC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,UAAU,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,CAAC;IA4Ef,aAAa,CAAC,SAAS,SAAS,UAAU,EAC9C,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,UAAU,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,CAAC;IAsDf,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,aAAa,EACtB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAsE9B,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,UAAU,EACjB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CA2C/B"}
@@ -1,356 +0,0 @@
1
- import { v4 as uuidv4 } from "uuid";
2
- import { BaseReadModel } from "./base-read-model.js";
3
- export class KyselyDocumentView extends BaseReadModel {
4
- operationStore;
5
- _db;
6
- constructor(db, operationStore, operationIndex, writeCache, consistencyTracker) {
7
- super(db, operationIndex, writeCache, consistencyTracker, "document-view");
8
- this.operationStore = operationStore;
9
- this._db = db;
10
- }
11
- async indexOperations(items) {
12
- if (items.length === 0)
13
- return;
14
- await this._db.transaction().execute(async (trx) => {
15
- for (const item of items) {
16
- const { operation, context } = item;
17
- const { documentId, scope, branch, documentType, resultingState } = context;
18
- const { index, hash } = operation;
19
- if (!resultingState) {
20
- throw new Error(`Missing resultingState in context for operation ${operation.id || "unknown"}. ` +
21
- `IDocumentView requires resultingState from upstream - it does not rebuild documents.`);
22
- }
23
- let fullState = {};
24
- try {
25
- fullState = JSON.parse(resultingState);
26
- }
27
- catch (error) {
28
- throw new Error(`Failed to parse resultingState for operation ${operation.id || "unknown"}: ${error instanceof Error ? error.message : String(error)}`);
29
- }
30
- const operationType = operation.action.type;
31
- let scopesToIndex;
32
- if (operationType === "CREATE_DOCUMENT") {
33
- scopesToIndex = Object.entries(fullState).filter(([key]) => key === "header" || key === "document" || key === "auth");
34
- }
35
- else if (operationType === "UPGRADE_DOCUMENT") {
36
- const scopeStatesToIndex = [];
37
- for (const [scopeName, scopeState] of Object.entries(fullState)) {
38
- if (scopeName === "header") {
39
- scopeStatesToIndex.push([scopeName, scopeState]);
40
- continue;
41
- }
42
- if (scopeName === scope) {
43
- scopeStatesToIndex.push([scopeName, scopeState]);
44
- continue;
45
- }
46
- const existingSnapshot = await trx
47
- .selectFrom("DocumentSnapshot")
48
- .select("scope")
49
- .where("documentId", "=", documentId)
50
- .where("scope", "=", scopeName)
51
- .where("branch", "=", branch)
52
- .executeTakeFirst();
53
- if (!existingSnapshot) {
54
- scopeStatesToIndex.push([scopeName, scopeState]);
55
- }
56
- }
57
- scopesToIndex = scopeStatesToIndex;
58
- }
59
- else {
60
- scopesToIndex = [];
61
- if (fullState.header !== undefined) {
62
- scopesToIndex.push(["header", fullState.header]);
63
- }
64
- if (fullState[scope] !== undefined) {
65
- scopesToIndex.push([scope, fullState[scope]]);
66
- }
67
- else {
68
- scopesToIndex.push([scope, {}]);
69
- }
70
- }
71
- for (const [scopeName, scopeState] of scopesToIndex) {
72
- const existingSnapshot = await trx
73
- .selectFrom("DocumentSnapshot")
74
- .selectAll()
75
- .where("documentId", "=", documentId)
76
- .where("scope", "=", scopeName)
77
- .where("branch", "=", branch)
78
- .executeTakeFirst();
79
- const newState = typeof scopeState === "object" && scopeState !== null
80
- ? scopeState
81
- : {};
82
- let slug = existingSnapshot?.slug ?? null;
83
- let name = existingSnapshot?.name ?? null;
84
- if (scopeName === "header") {
85
- const headerSlug = newState.slug;
86
- const headerName = newState.name;
87
- if (typeof headerSlug === "string") {
88
- slug = headerSlug;
89
- }
90
- if (typeof headerName === "string") {
91
- name = headerName;
92
- }
93
- if (slug && slug !== documentId) {
94
- await trx
95
- .insertInto("SlugMapping")
96
- .values({
97
- slug,
98
- documentId,
99
- scope: scopeName,
100
- branch,
101
- })
102
- .onConflict((oc) => oc.column("slug").doUpdateSet({
103
- documentId,
104
- scope: scopeName,
105
- branch,
106
- }))
107
- .execute();
108
- }
109
- }
110
- if (existingSnapshot) {
111
- await trx
112
- .updateTable("DocumentSnapshot")
113
- .set({
114
- lastOperationIndex: index,
115
- lastOperationHash: hash,
116
- lastUpdatedAt: new Date(),
117
- snapshotVersion: existingSnapshot.snapshotVersion + 1,
118
- content: newState,
119
- slug,
120
- name,
121
- })
122
- .where("documentId", "=", documentId)
123
- .where("scope", "=", scopeName)
124
- .where("branch", "=", branch)
125
- .execute();
126
- }
127
- else {
128
- const snapshot = {
129
- id: uuidv4(),
130
- documentId,
131
- slug,
132
- name,
133
- scope: scopeName,
134
- branch,
135
- content: newState,
136
- documentType,
137
- lastOperationIndex: index,
138
- lastOperationHash: hash,
139
- identifiers: null,
140
- metadata: null,
141
- deletedAt: null,
142
- };
143
- await trx.insertInto("DocumentSnapshot").values(snapshot).execute();
144
- }
145
- }
146
- }
147
- await this.saveState(trx, items);
148
- });
149
- this.updateConsistencyTracker(items);
150
- }
151
- async exists(documentIds, consistencyToken, signal) {
152
- if (consistencyToken) {
153
- await this.waitForConsistency(consistencyToken, undefined, signal);
154
- }
155
- if (signal?.aborted) {
156
- throw new Error("Operation aborted");
157
- }
158
- if (documentIds.length === 0) {
159
- return [];
160
- }
161
- const snapshots = await this._db
162
- .selectFrom("DocumentSnapshot")
163
- .select(["documentId"])
164
- .where("documentId", "in", documentIds)
165
- .where("isDeleted", "=", false)
166
- .distinct()
167
- .execute();
168
- const existingIds = new Set(snapshots.map((s) => s.documentId));
169
- return documentIds.map((id) => existingIds.has(id));
170
- }
171
- async get(documentId, view, consistencyToken, signal) {
172
- if (consistencyToken) {
173
- await this.waitForConsistency(consistencyToken, undefined, signal);
174
- }
175
- if (signal?.aborted) {
176
- throw new Error("Operation aborted");
177
- }
178
- const branch = view?.branch || "main";
179
- let scopesToQuery;
180
- if (view?.scopes && view.scopes.length > 0) {
181
- scopesToQuery = [...new Set(["header", "document", ...view.scopes])];
182
- }
183
- else {
184
- scopesToQuery = [];
185
- }
186
- let query = this._db
187
- .selectFrom("DocumentSnapshot")
188
- .selectAll()
189
- .where("documentId", "=", documentId)
190
- .where("branch", "=", branch)
191
- .where("isDeleted", "=", false);
192
- if (scopesToQuery.length > 0) {
193
- query = query.where("scope", "in", scopesToQuery);
194
- }
195
- const snapshots = await query.execute();
196
- if (snapshots.length === 0) {
197
- throw new Error(`Document not found: ${documentId}`);
198
- }
199
- if (signal?.aborted) {
200
- throw new Error("Operation aborted");
201
- }
202
- const headerSnapshot = snapshots.find((s) => s.scope === "header");
203
- if (!headerSnapshot) {
204
- throw new Error(`Document header not found: ${documentId}`);
205
- }
206
- const header = headerSnapshot.content;
207
- const revisions = await this.operationStore.getRevisions(documentId, branch, signal);
208
- header.revision = revisions.revision;
209
- header.lastModifiedAtUtcIso = revisions.latestTimestamp;
210
- const state = {};
211
- for (const snapshot of snapshots) {
212
- if (snapshot.scope === "header") {
213
- continue;
214
- }
215
- state[snapshot.scope] = snapshot.content;
216
- }
217
- const document = {
218
- header,
219
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
220
- state: state,
221
- operations: {},
222
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
223
- initialState: state,
224
- clipboard: [],
225
- };
226
- return document;
227
- }
228
- async getByIdOrSlug(identifier, view, consistencyToken, signal) {
229
- if (consistencyToken) {
230
- await this.waitForConsistency(consistencyToken, undefined, signal);
231
- }
232
- if (signal?.aborted) {
233
- throw new Error("Operation aborted");
234
- }
235
- const branch = view?.branch || "main";
236
- const idCheckPromise = this._db
237
- .selectFrom("DocumentSnapshot")
238
- .select("documentId")
239
- .where("documentId", "=", identifier)
240
- .where("branch", "=", branch)
241
- .where("isDeleted", "=", false)
242
- .executeTakeFirst();
243
- const slugCheckPromise = this._db
244
- .selectFrom("SlugMapping")
245
- .select("documentId")
246
- .where("slug", "=", identifier)
247
- .where("branch", "=", branch)
248
- .executeTakeFirst();
249
- const [idMatch, slugMatch] = await Promise.all([
250
- idCheckPromise,
251
- slugCheckPromise,
252
- ]);
253
- if (signal?.aborted) {
254
- throw new Error("Operation aborted");
255
- }
256
- const idMatchDocId = idMatch?.documentId;
257
- const slugMatchDocId = slugMatch?.documentId;
258
- if (idMatchDocId && slugMatchDocId && idMatchDocId !== slugMatchDocId) {
259
- throw new Error(`Ambiguous identifier "${identifier}": matches both document ID "${idMatchDocId}" and slug for document ID "${slugMatchDocId}". ` +
260
- `Please use get() for ID or resolveSlug() + get() for slug to be explicit.`);
261
- }
262
- const resolvedDocumentId = idMatchDocId || slugMatchDocId;
263
- if (!resolvedDocumentId) {
264
- throw new Error(`Document not found: ${identifier}`);
265
- }
266
- return this.get(resolvedDocumentId, view, undefined, signal);
267
- }
268
- async findByType(type, view, paging, consistencyToken, signal) {
269
- if (consistencyToken) {
270
- await this.waitForConsistency(consistencyToken, undefined, signal);
271
- }
272
- if (signal?.aborted) {
273
- throw new Error("Operation aborted");
274
- }
275
- const branch = view?.branch || "main";
276
- const startIndex = paging?.cursor ? parseInt(paging.cursor) : 0;
277
- const limit = paging?.limit || 100;
278
- const documents = [];
279
- const processedDocumentIds = new Set();
280
- const allDocumentIds = [];
281
- const snapshots = await this._db
282
- .selectFrom("DocumentSnapshot")
283
- .selectAll()
284
- .where("documentType", "=", type)
285
- .where("branch", "=", branch)
286
- .where("isDeleted", "=", false)
287
- .orderBy("lastUpdatedAt", "desc")
288
- .execute();
289
- if (signal?.aborted) {
290
- throw new Error("Operation aborted");
291
- }
292
- for (const snapshot of snapshots) {
293
- if (processedDocumentIds.has(snapshot.documentId)) {
294
- continue;
295
- }
296
- processedDocumentIds.add(snapshot.documentId);
297
- allDocumentIds.push(snapshot.documentId);
298
- }
299
- const docsToFetch = allDocumentIds.slice(startIndex, startIndex + limit);
300
- for (const documentId of docsToFetch) {
301
- if (signal?.aborted) {
302
- throw new Error("Operation aborted");
303
- }
304
- try {
305
- const document = await this.get(documentId, view, undefined, signal);
306
- documents.push(document);
307
- }
308
- catch {
309
- continue;
310
- }
311
- }
312
- const hasMore = allDocumentIds.length > startIndex + limit;
313
- const nextCursor = hasMore ? String(startIndex + limit) : undefined;
314
- return {
315
- items: documents,
316
- nextCursor,
317
- hasMore,
318
- };
319
- }
320
- async resolveSlug(slug, view, consistencyToken, signal) {
321
- if (consistencyToken) {
322
- await this.waitForConsistency(consistencyToken, undefined, signal);
323
- }
324
- if (signal?.aborted) {
325
- throw new Error("Operation aborted");
326
- }
327
- const branch = view?.branch || "main";
328
- const mapping = await this._db
329
- .selectFrom("SlugMapping")
330
- .select("documentId")
331
- .where("slug", "=", slug)
332
- .where("branch", "=", branch)
333
- .executeTakeFirst();
334
- if (!mapping) {
335
- return undefined;
336
- }
337
- if (signal?.aborted) {
338
- throw new Error("Operation aborted");
339
- }
340
- if (view?.scopes && view.scopes.length > 0) {
341
- const scopeCheck = await this._db
342
- .selectFrom("DocumentSnapshot")
343
- .select("scope")
344
- .where("documentId", "=", mapping.documentId)
345
- .where("branch", "=", branch)
346
- .where("scope", "in", view.scopes)
347
- .where("isDeleted", "=", false)
348
- .executeTakeFirst();
349
- if (!scopeCheck) {
350
- return undefined;
351
- }
352
- }
353
- return mapping.documentId;
354
- }
355
- }
356
- //# sourceMappingURL=document-view.js.map