@rocicorp/zero 0.12.2025012601 → 0.12.2025012800

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 (452) hide show
  1. package/out/advanced.js +2 -2
  2. package/out/{chunk-F5QR3K72.js → chunk-424PT5DM.js} +1 -1
  3. package/out/{chunk-JZD6FXRT.js → chunk-MJYDJPXG.js} +37 -43
  4. package/out/{chunk-JZD6FXRT.js.map → chunk-MJYDJPXG.js.map} +3 -3
  5. package/out/{chunk-I5GSZARI.js → chunk-QAAJZ32T.js} +1 -1
  6. package/out/{chunk-I5GSZARI.js.map → chunk-QAAJZ32T.js.map} +1 -1
  7. package/out/datadog/src/mod.d.ts +1 -1
  8. package/out/react.js +1 -1
  9. package/out/react.js.map +1 -1
  10. package/out/replicache/src/btree/diff.d.ts +2 -2
  11. package/out/replicache/src/btree/node.d.ts +8 -8
  12. package/out/replicache/src/btree/read.d.ts +6 -6
  13. package/out/replicache/src/btree/write.d.ts +7 -7
  14. package/out/replicache/src/call-default-fetch.d.ts +1 -1
  15. package/out/replicache/src/config.d.ts +1 -1
  16. package/out/replicache/src/connection-loop-delegates.d.ts +2 -2
  17. package/out/replicache/src/connection-loop.d.ts +1 -1
  18. package/out/replicache/src/cookies.d.ts +2 -2
  19. package/out/replicache/src/dag/chunk.d.ts +1 -1
  20. package/out/replicache/src/dag/gc.d.ts +2 -2
  21. package/out/replicache/src/dag/key.d.ts +2 -2
  22. package/out/replicache/src/dag/lazy-store.d.ts +5 -5
  23. package/out/replicache/src/dag/store-impl.d.ts +5 -5
  24. package/out/replicache/src/dag/store.d.ts +3 -3
  25. package/out/replicache/src/dag/visitor.d.ts +3 -3
  26. package/out/replicache/src/db/commit.d.ts +8 -8
  27. package/out/replicache/src/db/index.d.ts +7 -7
  28. package/out/replicache/src/db/read.d.ts +8 -8
  29. package/out/replicache/src/db/rebase.d.ts +7 -7
  30. package/out/replicache/src/db/scan.d.ts +1 -1
  31. package/out/replicache/src/db/write.d.ts +14 -14
  32. package/out/replicache/src/filter-async-iterable.d.ts +1 -1
  33. package/out/replicache/src/format-version.d.ts +2 -2
  34. package/out/replicache/src/frozen-json.d.ts +2 -2
  35. package/out/replicache/src/get-default-puller.d.ts +1 -1
  36. package/out/replicache/src/get-default-pusher.d.ts +1 -1
  37. package/out/replicache/src/hash.d.ts +1 -1
  38. package/out/replicache/src/impl.d.ts +3 -3
  39. package/out/replicache/src/index-defs.d.ts +1 -1
  40. package/out/replicache/src/kv/idb-store-with-mem-fallback.d.ts +1 -1
  41. package/out/replicache/src/kv/idb-store.d.ts +1 -1
  42. package/out/replicache/src/kv/idb-store.d.ts.map +1 -1
  43. package/out/replicache/src/kv/mem-store.d.ts +1 -1
  44. package/out/replicache/src/kv/read-impl.d.ts +2 -2
  45. package/out/replicache/src/kv/store.d.ts +1 -1
  46. package/out/replicache/src/kv/write-impl-base.d.ts +3 -3
  47. package/out/replicache/src/kv/write-impl.d.ts +3 -3
  48. package/out/replicache/src/merge-async-iterables.d.ts +1 -1
  49. package/out/replicache/src/mod.d.ts +36 -36
  50. package/out/replicache/src/mutation-recovery.d.ts +8 -8
  51. package/out/replicache/src/new-client-channel.d.ts +1 -1
  52. package/out/replicache/src/on-persist-channel.d.ts +1 -1
  53. package/out/replicache/src/patch-operation.d.ts +1 -1
  54. package/out/replicache/src/pending-mutations.d.ts +3 -3
  55. package/out/replicache/src/persist/client-gc.d.ts +3 -3
  56. package/out/replicache/src/persist/client-group-gc.d.ts +2 -2
  57. package/out/replicache/src/persist/client-groups.d.ts +5 -5
  58. package/out/replicache/src/persist/clients.d.ts +9 -9
  59. package/out/replicache/src/persist/collect-idb-databases.d.ts +3 -3
  60. package/out/replicache/src/persist/gather-mem-only-visitor.d.ts +4 -4
  61. package/out/replicache/src/persist/gather-not-cached-visitor.d.ts +5 -5
  62. package/out/replicache/src/persist/heartbeat.d.ts +3 -3
  63. package/out/replicache/src/persist/idb-databases-store.d.ts +1 -1
  64. package/out/replicache/src/persist/persist.d.ts +6 -6
  65. package/out/replicache/src/persist/refresh.d.ts +7 -7
  66. package/out/replicache/src/process-scheduler.d.ts +1 -1
  67. package/out/replicache/src/puller.d.ts +6 -6
  68. package/out/replicache/src/pusher.d.ts +3 -3
  69. package/out/replicache/src/replicache-impl.d.ts +12 -12
  70. package/out/replicache/src/replicache-options.d.ts +5 -5
  71. package/out/replicache/src/replicache.d.ts +10 -10
  72. package/out/replicache/src/scan-iterator.d.ts +6 -6
  73. package/out/replicache/src/scan-options.d.ts +2 -2
  74. package/out/replicache/src/subscriptions.d.ts +7 -7
  75. package/out/replicache/src/subscriptions.d.ts.map +1 -1
  76. package/out/replicache/src/sync/diff.d.ts +6 -6
  77. package/out/replicache/src/sync/ids.d.ts +1 -1
  78. package/out/replicache/src/sync/patch.d.ts +2 -2
  79. package/out/replicache/src/sync/pull.d.ts +11 -11
  80. package/out/replicache/src/sync/push.d.ts +4 -4
  81. package/out/replicache/src/sync/request-id.d.ts +1 -1
  82. package/out/replicache/src/transactions.d.ts +9 -9
  83. package/out/replicache/src/types.d.ts +5 -5
  84. package/out/shared/src/btree-set.js +1 -1
  85. package/out/shared/src/deep-clone.d.ts +1 -1
  86. package/out/shared/src/iterables.js +1 -1
  87. package/out/shared/src/json-schema.d.ts +1 -1
  88. package/out/shared/src/json-schema.js +3 -3
  89. package/out/shared/src/json.js +3 -3
  90. package/out/shared/src/options.d.ts +1 -1
  91. package/out/shared/src/options.js +3 -3
  92. package/out/shared/src/queue.js +1 -1
  93. package/out/shared/src/random-values.d.ts +1 -1
  94. package/out/shared/src/random-values.d.ts.map +1 -1
  95. package/out/shared/src/sleep.js +1 -1
  96. package/out/solid.js +3 -3
  97. package/out/solid.js.map +1 -1
  98. package/out/zero/src/advanced.d.ts +1 -1
  99. package/out/zero/src/build-schema.d.ts +1 -1
  100. package/out/zero/src/build-schema.js +1 -1
  101. package/out/zero/src/change-protocol.d.ts +1 -1
  102. package/out/zero/src/change-protocol.js +1 -1
  103. package/out/zero/src/cli.d.ts +1 -1
  104. package/out/zero/src/cli.js +1 -1
  105. package/out/zero/src/react.d.ts +1 -1
  106. package/out/zero/src/server/change-streamer.d.ts +1 -1
  107. package/out/zero/src/server/change-streamer.js +1 -1
  108. package/out/zero/src/server/main.d.ts +1 -1
  109. package/out/zero/src/server/main.js +1 -1
  110. package/out/zero/src/server/multi/main.d.ts +1 -1
  111. package/out/zero/src/server/multi/main.js +1 -1
  112. package/out/zero/src/server/replicator.d.ts +1 -1
  113. package/out/zero/src/server/replicator.js +1 -1
  114. package/out/zero/src/server/syncer.d.ts +1 -1
  115. package/out/zero/src/server/syncer.js +1 -1
  116. package/out/zero/src/solid.d.ts +1 -1
  117. package/out/zero/src/zero-cache-dev.js +3 -3
  118. package/out/zero/src/zero.d.ts +1 -1
  119. package/out/zero-advanced/src/mod.d.ts +8 -8
  120. package/out/zero-advanced/src/mod.d.ts.map +1 -1
  121. package/out/zero-cache/src/auth/jwt.d.ts +1 -1
  122. package/out/zero-cache/src/auth/load-schema.d.ts +3 -3
  123. package/out/zero-cache/src/auth/load-schema.d.ts.map +1 -1
  124. package/out/zero-cache/src/auth/load-schema.js +3 -3
  125. package/out/zero-cache/src/auth/load-schema.js.map +1 -1
  126. package/out/zero-cache/src/auth/read-authorizer.d.ts +2 -2
  127. package/out/zero-cache/src/auth/read-authorizer.d.ts.map +1 -1
  128. package/out/zero-cache/src/auth/read-authorizer.js +3 -3
  129. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  130. package/out/zero-cache/src/auth/write-authorizer.d.ts +5 -5
  131. package/out/zero-cache/src/auth/write-authorizer.js +14 -14
  132. package/out/zero-cache/src/config/zero-config.d.ts +2 -2
  133. package/out/zero-cache/src/config/zero-config.js +6 -6
  134. package/out/zero-cache/src/db/create.d.ts +1 -1
  135. package/out/zero-cache/src/db/create.js +1 -1
  136. package/out/zero-cache/src/db/lite-tables.d.ts +2 -2
  137. package/out/zero-cache/src/db/lite-tables.js +5 -5
  138. package/out/zero-cache/src/db/migration-lite.d.ts +2 -2
  139. package/out/zero-cache/src/db/migration-lite.js +4 -4
  140. package/out/zero-cache/src/db/migration.d.ts +2 -2
  141. package/out/zero-cache/src/db/migration.js +3 -3
  142. package/out/zero-cache/src/db/pg-to-lite.d.ts +2 -2
  143. package/out/zero-cache/src/db/pg-to-lite.js +5 -5
  144. package/out/zero-cache/src/db/short-lived-client.d.ts +1 -1
  145. package/out/zero-cache/src/db/short-lived-client.js +1 -1
  146. package/out/zero-cache/src/db/specs.d.ts +4 -4
  147. package/out/zero-cache/src/db/specs.js +3 -3
  148. package/out/zero-cache/src/db/statements.d.ts +2 -2
  149. package/out/zero-cache/src/db/statements.js +2 -2
  150. package/out/zero-cache/src/db/transaction-pool.d.ts +4 -4
  151. package/out/zero-cache/src/db/transaction-pool.js +3 -3
  152. package/out/zero-cache/src/server/change-streamer.d.ts +1 -1
  153. package/out/zero-cache/src/server/change-streamer.js +13 -13
  154. package/out/zero-cache/src/server/logging.d.ts +1 -1
  155. package/out/zero-cache/src/server/logging.js +2 -2
  156. package/out/zero-cache/src/server/main.d.ts +1 -1
  157. package/out/zero-cache/src/server/main.js +13 -13
  158. package/out/zero-cache/src/server/multi/config.d.ts +2 -2
  159. package/out/zero-cache/src/server/multi/config.js +3 -3
  160. package/out/zero-cache/src/server/multi/main.d.ts +1 -1
  161. package/out/zero-cache/src/server/multi/main.js +8 -8
  162. package/out/zero-cache/src/server/multi/runtime.js +1 -1
  163. package/out/zero-cache/src/server/multi/tenant-dispatcher.d.ts +2 -2
  164. package/out/zero-cache/src/server/multi/tenant-dispatcher.js +2 -2
  165. package/out/zero-cache/src/server/replicator.d.ts +1 -1
  166. package/out/zero-cache/src/server/replicator.js +10 -10
  167. package/out/zero-cache/src/server/syncer.d.ts +1 -1
  168. package/out/zero-cache/src/server/syncer.js +21 -21
  169. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +8 -8
  170. package/out/zero-cache/src/services/change-source/pg/change-source.js +24 -24
  171. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +2 -2
  172. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +15 -15
  173. package/out/zero-cache/src/services/change-source/pg/lsn.d.ts +2 -2
  174. package/out/zero-cache/src/services/change-source/pg/lsn.js +2 -2
  175. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +1 -1
  176. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +3 -3
  177. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts +2 -2
  178. package/out/zero-cache/src/services/change-source/pg/schema/init.js +3 -3
  179. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +1 -1
  180. package/out/zero-cache/src/services/change-source/pg/schema/published.js +3 -3
  181. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +4 -4
  182. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +7 -7
  183. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts +1 -1
  184. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +4 -4
  185. package/out/zero-cache/src/services/change-source/pg/sync-schema.d.ts +2 -2
  186. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +3 -3
  187. package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts +1 -1
  188. package/out/zero-cache/src/services/change-source/protocol/current/control.js +1 -1
  189. package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts +14 -14
  190. package/out/zero-cache/src/services/change-source/protocol/current/data.js +3 -3
  191. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +16 -16
  192. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +4 -4
  193. package/out/zero-cache/src/services/change-source/protocol/current/mod.d.ts +6 -6
  194. package/out/zero-cache/src/services/change-source/protocol/current/mod.js +6 -6
  195. package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts +1 -1
  196. package/out/zero-cache/src/services/change-source/protocol/current/status.js +1 -1
  197. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -1
  198. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +2 -2
  199. package/out/zero-cache/src/services/change-source/protocol/mod.d.ts +1 -1
  200. package/out/zero-cache/src/services/change-source/protocol/mod.js +1 -1
  201. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +4 -4
  202. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +7 -7
  203. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +6 -6
  204. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +13 -13
  205. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +10 -10
  206. package/out/zero-cache/src/services/change-streamer/change-streamer.js +3 -3
  207. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +2 -2
  208. package/out/zero-cache/src/services/change-streamer/forwarder.js +2 -2
  209. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +1 -1
  210. package/out/zero-cache/src/services/change-streamer/schema/init.js +2 -2
  211. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +3 -3
  212. package/out/zero-cache/src/services/change-streamer/schema/tables.js +2 -2
  213. package/out/zero-cache/src/services/change-streamer/storer.d.ts +6 -6
  214. package/out/zero-cache/src/services/change-streamer/storer.js +9 -9
  215. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +5 -5
  216. package/out/zero-cache/src/services/change-streamer/subscriber.js +5 -5
  217. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +1 -1
  218. package/out/zero-cache/src/services/dispatcher/connect-params.js +3 -3
  219. package/out/zero-cache/src/services/dispatcher/sync-dispatcher.d.ts +2 -2
  220. package/out/zero-cache/src/services/dispatcher/sync-dispatcher.js +4 -4
  221. package/out/zero-cache/src/services/dispatcher/websocket-handoff.d.ts +2 -2
  222. package/out/zero-cache/src/services/dispatcher/websocket-handoff.js +3 -3
  223. package/out/zero-cache/src/services/http-service.d.ts +1 -1
  224. package/out/zero-cache/src/services/http-service.js +2 -2
  225. package/out/zero-cache/src/services/life-cycle.d.ts +2 -2
  226. package/out/zero-cache/src/services/life-cycle.js +2 -2
  227. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +1 -1
  228. package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
  229. package/out/zero-cache/src/services/litestream/commands.js +2 -2
  230. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +8 -8
  231. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  232. package/out/zero-cache/src/services/mutagen/mutagen.js +14 -14
  233. package/out/zero-cache/src/services/replicator/change-processor.d.ts +23 -0
  234. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -0
  235. package/out/zero-cache/src/services/replicator/change-processor.js +415 -0
  236. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -0
  237. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +5 -27
  238. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  239. package/out/zero-cache/src/services/replicator/incremental-sync.js +9 -421
  240. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  241. package/out/zero-cache/src/services/replicator/notifier.d.ts +2 -2
  242. package/out/zero-cache/src/services/replicator/notifier.js +1 -1
  243. package/out/zero-cache/src/services/replicator/replicator.d.ts +5 -5
  244. package/out/zero-cache/src/services/replicator/replicator.js +3 -3
  245. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +6 -6
  246. package/out/zero-cache/src/services/replicator/schema/change-log.js +4 -4
  247. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +3 -3
  248. package/out/zero-cache/src/services/replicator/schema/replication-state.js +3 -3
  249. package/out/zero-cache/src/services/runner.d.ts +1 -1
  250. package/out/zero-cache/src/services/running-state.d.ts +1 -1
  251. package/out/zero-cache/src/services/running-state.js +2 -2
  252. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +7 -7
  253. package/out/zero-cache/src/services/view-syncer/client-handler.js +9 -9
  254. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +6 -6
  255. package/out/zero-cache/src/services/view-syncer/cvr-store.js +17 -17
  256. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +6 -6
  257. package/out/zero-cache/src/services/view-syncer/cvr.js +8 -8
  258. package/out/zero-cache/src/services/view-syncer/database-storage.d.ts +2 -2
  259. package/out/zero-cache/src/services/view-syncer/database-storage.js +1 -1
  260. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +1 -1
  261. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts +2 -2
  262. package/out/zero-cache/src/services/view-syncer/key-columns.js +3 -3
  263. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +6 -6
  264. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +8 -8
  265. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +2 -2
  266. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +4 -4
  267. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts +1 -1
  268. package/out/zero-cache/src/services/view-syncer/schema/init.js +2 -2
  269. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +12 -12
  270. package/out/zero-cache/src/services/view-syncer/schema/types.js +4 -4
  271. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +5 -5
  272. package/out/zero-cache/src/services/view-syncer/snapshotter.js +12 -12
  273. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +9 -9
  274. package/out/zero-cache/src/services/view-syncer/view-syncer.js +20 -20
  275. package/out/zero-cache/src/types/bigint-json.d.ts +1 -1
  276. package/out/zero-cache/src/types/bigint-json.js +1 -1
  277. package/out/zero-cache/src/types/error-for-client.d.ts +1 -1
  278. package/out/zero-cache/src/types/lexi-version.js +2 -2
  279. package/out/zero-cache/src/types/lite.d.ts +4 -4
  280. package/out/zero-cache/src/types/lite.js +2 -2
  281. package/out/zero-cache/src/types/pg.d.ts +3 -3
  282. package/out/zero-cache/src/types/pg.js +2 -2
  283. package/out/zero-cache/src/types/row-key.d.ts +1 -1
  284. package/out/zero-cache/src/types/row-key.js +3 -3
  285. package/out/zero-cache/src/types/schema-versions.d.ts +1 -1
  286. package/out/zero-cache/src/types/schema-versions.js +2 -2
  287. package/out/zero-cache/src/types/streams.d.ts +2 -2
  288. package/out/zero-cache/src/types/streams.js +4 -4
  289. package/out/zero-cache/src/types/subscription.d.ts +1 -1
  290. package/out/zero-cache/src/types/timeout.js +1 -1
  291. package/out/zero-cache/src/workers/connection.d.ts +5 -5
  292. package/out/zero-cache/src/workers/connection.js +9 -9
  293. package/out/zero-cache/src/workers/replicator.d.ts +5 -5
  294. package/out/zero-cache/src/workers/replicator.js +4 -4
  295. package/out/zero-cache/src/workers/syncer.d.ts +8 -8
  296. package/out/zero-cache/src/workers/syncer.js +10 -10
  297. package/out/zero-client/src/client/context.d.ts +6 -6
  298. package/out/zero-client/src/client/crud.d.ts +6 -6
  299. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  300. package/out/zero-client/src/client/keys.d.ts +2 -2
  301. package/out/zero-client/src/client/log-options.d.ts +2 -2
  302. package/out/zero-client/src/client/log-options.d.ts.map +1 -1
  303. package/out/zero-client/src/client/metrics.d.ts +2 -2
  304. package/out/zero-client/src/client/options.d.ts +3 -3
  305. package/out/zero-client/src/client/query-manager.d.ts +6 -6
  306. package/out/zero-client/src/client/reload-error-handler.d.ts +1 -1
  307. package/out/zero-client/src/client/replicache-types.d.ts +1 -1
  308. package/out/zero-client/src/client/server-error.d.ts +2 -2
  309. package/out/zero-client/src/client/server-option.d.ts +1 -1
  310. package/out/zero-client/src/client/zero-poke-handler.d.ts +4 -4
  311. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  312. package/out/zero-client/src/client/zero.d.ts +12 -12
  313. package/out/zero-client/src/mod.d.ts +17 -17
  314. package/out/zero-client/src/mod.d.ts.map +1 -1
  315. package/out/zero-client/src/util/socket.d.ts +1 -1
  316. package/out/zero-protocol/src/ast-hash.d.ts +1 -1
  317. package/out/zero-protocol/src/ast-hash.js +2 -2
  318. package/out/zero-protocol/src/ast.d.ts +2 -2
  319. package/out/zero-protocol/src/ast.js +5 -5
  320. package/out/zero-protocol/src/change-desired-queries.d.ts +3 -3
  321. package/out/zero-protocol/src/change-desired-queries.js +2 -2
  322. package/out/zero-protocol/src/clients-patch.d.ts +1 -1
  323. package/out/zero-protocol/src/clients-patch.js +1 -1
  324. package/out/zero-protocol/src/connect.d.ts +3 -3
  325. package/out/zero-protocol/src/connect.js +2 -2
  326. package/out/zero-protocol/src/data.d.ts +3 -3
  327. package/out/zero-protocol/src/data.js +2 -2
  328. package/out/zero-protocol/src/delete-clients.d.ts +1 -1
  329. package/out/zero-protocol/src/delete-clients.js +1 -1
  330. package/out/zero-protocol/src/down.d.ts +6 -6
  331. package/out/zero-protocol/src/down.js +7 -7
  332. package/out/zero-protocol/src/error.d.ts +1 -1
  333. package/out/zero-protocol/src/error.js +2 -2
  334. package/out/zero-protocol/src/mod.d.ts +14 -14
  335. package/out/zero-protocol/src/mod.js +14 -14
  336. package/out/zero-protocol/src/ping.d.ts +1 -1
  337. package/out/zero-protocol/src/ping.js +1 -1
  338. package/out/zero-protocol/src/poke.d.ts +9 -9
  339. package/out/zero-protocol/src/poke.js +5 -5
  340. package/out/zero-protocol/src/pong.d.ts +1 -1
  341. package/out/zero-protocol/src/pong.js +1 -1
  342. package/out/zero-protocol/src/primary-key.d.ts +1 -1
  343. package/out/zero-protocol/src/primary-key.js +1 -1
  344. package/out/zero-protocol/src/protocol-version.js +1 -1
  345. package/out/zero-protocol/src/pull.d.ts +1 -1
  346. package/out/zero-protocol/src/pull.js +2 -2
  347. package/out/zero-protocol/src/push.d.ts +26 -26
  348. package/out/zero-protocol/src/push.js +5 -5
  349. package/out/zero-protocol/src/queries-patch.d.ts +4 -4
  350. package/out/zero-protocol/src/queries-patch.js +2 -2
  351. package/out/zero-protocol/src/row-patch.d.ts +5 -5
  352. package/out/zero-protocol/src/row-patch.js +4 -4
  353. package/out/zero-protocol/src/up.d.ts +7 -7
  354. package/out/zero-protocol/src/up.js +7 -7
  355. package/out/zero-protocol/src/up.js.map +1 -1
  356. package/out/zero-protocol/src/version.d.ts +1 -1
  357. package/out/zero-protocol/src/version.js +1 -1
  358. package/out/zero-protocol/src/warm.d.ts +1 -1
  359. package/out/zero-protocol/src/warm.js +1 -1
  360. package/out/zero-react/src/mod.d.ts +8 -8
  361. package/out/zero-react/src/use-query.d.ts +4 -4
  362. package/out/zero-react/src/use-zero.d.ts +2 -2
  363. package/out/zero-schema/src/build-schema-options.d.ts +1 -1
  364. package/out/zero-schema/src/build-schema-options.js +1 -1
  365. package/out/zero-schema/src/build-schema.js +5 -5
  366. package/out/zero-schema/src/build-schema.js.map +1 -1
  367. package/out/zero-schema/src/builder/relationship-builder.d.ts +2 -2
  368. package/out/zero-schema/src/builder/schema-builder.d.ts +3 -3
  369. package/out/zero-schema/src/builder/schema-builder.js +1 -1
  370. package/out/zero-schema/src/builder/table-builder.d.ts +3 -3
  371. package/out/zero-schema/src/compiled-permissions.d.ts +18 -18
  372. package/out/zero-schema/src/compiled-permissions.js +2 -2
  373. package/out/zero-schema/src/mod.d.ts +4 -4
  374. package/out/zero-schema/src/mod.d.ts.map +1 -1
  375. package/out/zero-schema/src/permissions.d.ts +5 -5
  376. package/out/zero-schema/src/schema-config.d.ts +4 -4
  377. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  378. package/out/zero-schema/src/schema-config.js +4 -4
  379. package/out/zero-schema/src/schema-config.js.map +1 -1
  380. package/out/zero-schema/src/table-schema.d.ts +1 -1
  381. package/out/zero-solid/src/create-zero.d.ts +2 -2
  382. package/out/zero-solid/src/create-zero.d.ts.map +1 -1
  383. package/out/zero-solid/src/mod.d.ts +2 -2
  384. package/out/zero-solid/src/solid-view.d.ts +3 -3
  385. package/out/zero-solid/src/use-query.d.ts +3 -3
  386. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  387. package/out/zero.js +3 -3
  388. package/out/zql/src/builder/builder.d.ts +7 -7
  389. package/out/zql/src/builder/builder.js +10 -10
  390. package/out/zql/src/builder/filter.d.ts +2 -2
  391. package/out/zql/src/builder/filter.js +2 -2
  392. package/out/zql/src/builder/like.d.ts +1 -1
  393. package/out/zql/src/builder/like.js +1 -1
  394. package/out/zql/src/ivm/array-view.d.ts +4 -4
  395. package/out/zql/src/ivm/array-view.js +2 -2
  396. package/out/zql/src/ivm/change.d.ts +2 -2
  397. package/out/zql/src/ivm/constraint.d.ts +2 -2
  398. package/out/zql/src/ivm/constraint.js +3 -3
  399. package/out/zql/src/ivm/data.d.ts +3 -3
  400. package/out/zql/src/ivm/data.js +1 -1
  401. package/out/zql/src/ivm/exists.d.ts +6 -6
  402. package/out/zql/src/ivm/exists.js +7 -7
  403. package/out/zql/src/ivm/fan-in.d.ts +6 -6
  404. package/out/zql/src/ivm/fan-in.js +4 -4
  405. package/out/zql/src/ivm/fan-out.d.ts +5 -5
  406. package/out/zql/src/ivm/filter-push.d.ts +3 -3
  407. package/out/zql/src/ivm/filter-push.d.ts.map +1 -1
  408. package/out/zql/src/ivm/filter-push.js +2 -2
  409. package/out/zql/src/ivm/filter-push.js.map +1 -1
  410. package/out/zql/src/ivm/filter.d.ts +5 -5
  411. package/out/zql/src/ivm/filter.js +2 -2
  412. package/out/zql/src/ivm/join.d.ts +7 -7
  413. package/out/zql/src/ivm/join.js +4 -4
  414. package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts +3 -3
  415. package/out/zql/src/ivm/memory-source.d.ts +11 -11
  416. package/out/zql/src/ivm/memory-source.js +9 -9
  417. package/out/zql/src/ivm/memory-storage.d.ts +3 -3
  418. package/out/zql/src/ivm/operator.d.ts +7 -7
  419. package/out/zql/src/ivm/operator.js +1 -1
  420. package/out/zql/src/ivm/schema.d.ts +4 -4
  421. package/out/zql/src/ivm/skip.d.ts +6 -6
  422. package/out/zql/src/ivm/skip.js +2 -2
  423. package/out/zql/src/ivm/source.d.ts +3 -3
  424. package/out/zql/src/ivm/take.d.ts +6 -6
  425. package/out/zql/src/ivm/take.js +8 -8
  426. package/out/zql/src/ivm/view-apply-change.d.ts +3 -3
  427. package/out/zql/src/ivm/view-apply-change.js +2 -2
  428. package/out/zql/src/ivm/view.d.ts +4 -4
  429. package/out/zql/src/query/auth-query.d.ts +7 -7
  430. package/out/zql/src/query/auth-query.js +2 -2
  431. package/out/zql/src/query/dnf.d.ts +1 -1
  432. package/out/zql/src/query/dnf.js +2 -2
  433. package/out/zql/src/query/expression.d.ts +3 -4
  434. package/out/zql/src/query/expression.d.ts.map +1 -1
  435. package/out/zql/src/query/expression.js +2 -2
  436. package/out/zql/src/query/query-impl.d.ts +8 -8
  437. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  438. package/out/zql/src/query/query-impl.js +7 -7
  439. package/out/zql/src/query/query-impl.js.map +1 -1
  440. package/out/zql/src/query/query-internal.d.ts +4 -4
  441. package/out/zql/src/query/query.d.ts +7 -10
  442. package/out/zql/src/query/query.d.ts.map +1 -1
  443. package/out/zql/src/query/typed-view.d.ts +1 -1
  444. package/out/zqlite/src/db.js +2 -2
  445. package/out/zqlite/src/internal/statement-cache.d.ts +1 -1
  446. package/out/zqlite/src/internal/statement-cache.d.ts.map +1 -1
  447. package/out/zqlite/src/internal/statement-cache.js +1 -1
  448. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  449. package/out/zqlite/src/table-source.d.ts +6 -6
  450. package/out/zqlite/src/table-source.js +11 -11
  451. package/package.json +4 -4
  452. /package/out/{chunk-F5QR3K72.js.map → chunk-424PT5DM.js.map} +0 -0
@@ -0,0 +1,415 @@
1
+ import { SqliteError } from '@rocicorp/zero-sqlite3';
2
+ import { AbortError } from "../../../../shared/src/abort-error.js";
3
+ import { assert, unreachable } from "../../../../shared/src/asserts.js";
4
+ import { must } from "../../../../shared/src/must.js";
5
+ import { columnDef, createIndexStatement, createTableStatement, } from "../../db/create.js";
6
+ import { listIndexes, listTables } from "../../db/lite-tables.js";
7
+ import { mapPostgresToLite, mapPostgresToLiteColumn, mapPostgresToLiteIndex, } from "../../db/pg-to-lite.js";
8
+ import { stringify } from "../../types/bigint-json.js";
9
+ import { liteRow } from "../../types/lite.js";
10
+ import { liteTableName } from "../../types/names.js";
11
+ import { id } from "../../types/sql.js";
12
+ import { logDeleteOp, logResetOp, logSetOp, logTruncateOp, } from "./schema/change-log.js";
13
+ import { ZERO_VERSION_COLUMN_NAME, updateReplicationWatermark, } from "./schema/replication-state.js";
14
+ /**
15
+ * The ChangeProcessor partitions the stream of messages into transactions
16
+ * by creating a {@link TransactionProcessor} when a transaction begins, and dispatching
17
+ * messages to it until the commit is received.
18
+ *
19
+ * From https://www.postgresql.org/docs/current/protocol-logical-replication.html#PROTOCOL-LOGICAL-MESSAGES-FLOW :
20
+ *
21
+ * "The logical replication protocol sends individual transactions one by one.
22
+ * This means that all messages between a pair of Begin and Commit messages
23
+ * belong to the same transaction."
24
+ */
25
+ // Exported for testing.
26
+ export class ChangeProcessor {
27
+ #db;
28
+ #txMode;
29
+ #failService;
30
+ // The TransactionProcessor lazily loads table specs into this Map,
31
+ // and reloads them after a schema change. It is cached here to avoid
32
+ // reading them from the DB on every transaction.
33
+ #tableSpecs = new Map();
34
+ #currentTx = null;
35
+ #failure;
36
+ constructor(db, txMode, failService) {
37
+ this.#db = db;
38
+ this.#txMode = txMode;
39
+ this.#failService = failService;
40
+ }
41
+ #fail(lc, err) {
42
+ if (!this.#failure) {
43
+ this.#currentTx?.abort(lc); // roll back any pending transaction.
44
+ this.#failure = ensureError(err);
45
+ if (!(err instanceof AbortError)) {
46
+ // Propagate the failure up to the service.
47
+ lc.error?.('Message Processing failed:', this.#failure);
48
+ this.#failService(lc, this.#failure);
49
+ }
50
+ }
51
+ }
52
+ abort(lc) {
53
+ this.#fail(lc, new AbortError());
54
+ }
55
+ /** @return If a transaction was committed. */
56
+ processMessage(lc, downstream) {
57
+ const [type, message] = downstream;
58
+ if (this.#failure) {
59
+ lc.debug?.(`Dropping ${message.tag}`);
60
+ return false;
61
+ }
62
+ try {
63
+ const watermark = type === 'begin'
64
+ ? downstream[2].commitWatermark
65
+ : type === 'commit'
66
+ ? downstream[2].watermark
67
+ : undefined;
68
+ return this.#processMessage(lc, message, watermark);
69
+ }
70
+ catch (e) {
71
+ this.#fail(lc, e);
72
+ }
73
+ return false;
74
+ }
75
+ #beginTransaction(lc, commitVersion) {
76
+ let start = Date.now();
77
+ for (let i = 0;; i++) {
78
+ try {
79
+ return new TransactionProcessor(lc, this.#db, this.#txMode, this.#tableSpecs, commitVersion);
80
+ }
81
+ catch (e) {
82
+ // The db occasionally errors with a 'database is locked' error when
83
+ // being concurrently processed by `litestream replicate`, even with
84
+ // a long busy_timeout. Retry once to see if any deadlock situation
85
+ // was resolved when aborting the first attempt.
86
+ if (e instanceof SqliteError) {
87
+ lc.error?.(`${e.code} after ${Date.now() - start} ms (attempt ${i + 1})`, e);
88
+ if (i === 0) {
89
+ // retry once
90
+ start = Date.now();
91
+ continue;
92
+ }
93
+ }
94
+ throw e;
95
+ }
96
+ }
97
+ }
98
+ /** @return If a transaction was committed. */
99
+ #processMessage(lc, msg, watermark) {
100
+ if (msg.tag === 'begin') {
101
+ if (this.#currentTx) {
102
+ throw new Error(`Already in a transaction ${stringify(msg)}`);
103
+ }
104
+ this.#currentTx = this.#beginTransaction(lc, must(watermark));
105
+ return false;
106
+ }
107
+ // For non-begin messages, there should be a #currentTx set.
108
+ const tx = this.#currentTx;
109
+ if (!tx) {
110
+ throw new Error(`Received message outside of transaction: ${stringify(msg)}`);
111
+ }
112
+ if (msg.tag === 'commit') {
113
+ // Undef this.#currentTx to allow the assembly of the next transaction.
114
+ this.#currentTx = null;
115
+ assert(watermark);
116
+ tx.processCommit(msg, watermark);
117
+ return true;
118
+ }
119
+ if (msg.tag === 'rollback') {
120
+ this.#currentTx?.abort(lc);
121
+ this.#currentTx = null;
122
+ return false;
123
+ }
124
+ switch (msg.tag) {
125
+ case 'insert':
126
+ tx.processInsert(msg);
127
+ break;
128
+ case 'update':
129
+ tx.processUpdate(msg);
130
+ break;
131
+ case 'delete':
132
+ tx.processDelete(msg);
133
+ break;
134
+ case 'truncate':
135
+ tx.processTruncate(msg);
136
+ break;
137
+ case 'create-table':
138
+ tx.processCreateTable(msg);
139
+ break;
140
+ case 'rename-table':
141
+ tx.processRenameTable(msg);
142
+ break;
143
+ case 'add-column':
144
+ tx.processAddColumn(msg);
145
+ break;
146
+ case 'update-column':
147
+ tx.processUpdateColumn(msg);
148
+ break;
149
+ case 'drop-column':
150
+ tx.processDropColumn(msg);
151
+ break;
152
+ case 'drop-table':
153
+ tx.processDropTable(msg);
154
+ break;
155
+ case 'create-index':
156
+ tx.processCreateIndex(msg);
157
+ break;
158
+ case 'drop-index':
159
+ tx.processDropIndex(msg);
160
+ break;
161
+ default:
162
+ unreachable(msg);
163
+ }
164
+ return false;
165
+ }
166
+ }
167
+ /**
168
+ * The {@link TransactionProcessor} handles the sequence of messages from
169
+ * upstream, from `BEGIN` to `COMMIT` and executes the corresponding mutations
170
+ * on the {@link postgres.TransactionSql} on the replica.
171
+ *
172
+ * When applying row contents to the replica, the `_0_version` column is added / updated,
173
+ * and a corresponding entry in the `ChangeLog` is added. The version value is derived
174
+ * from the watermark of the preceding transaction (stored as the `nextStateVersion` in the
175
+ * `ReplicationState` table).
176
+ *
177
+ * Side note: For non-streaming Postgres transactions, the commitEndLsn (and thus
178
+ * commit watermark) is available in the `begin` message, so it could theoretically
179
+ * be used for the row version of changes within the transaction. However, the
180
+ * commitEndLsn is not available in the streaming (in-progress) transaction
181
+ * protocol, and may not be available for CDC streams of other upstream types.
182
+ * Therefore, the zero replication protocol is designed to not require the commit
183
+ * watermark when a transaction begins.
184
+ *
185
+ * Also of interest is the fact that all INSERT Messages are logically applied as
186
+ * UPSERTs. See {@link processInsert} for the underlying motivation.
187
+ */
188
+ class TransactionProcessor {
189
+ #lc;
190
+ #startMs;
191
+ #db;
192
+ #version;
193
+ #tableSpecs;
194
+ constructor(lc, db, txMode, tableSpecs, commitVersion) {
195
+ this.#startMs = Date.now();
196
+ if (txMode === 'CONCURRENT') {
197
+ // Although the Replicator / Incremental Syncer is the only writer of the replica,
198
+ // a `BEGIN CONCURRENT` transaction is used to allow View Syncers to simulate
199
+ // (i.e. and `ROLLBACK`) changes on historic snapshots of the database for the
200
+ // purpose of IVM).
201
+ //
202
+ // This TransactionProcessor is the only logic that will actually
203
+ // `COMMIT` any transactions to the replica.
204
+ db.beginConcurrent();
205
+ }
206
+ else {
207
+ // For the backup-replicator (i.e. replication-manager), there are no View Syncers
208
+ // and thus BEGIN CONCURRENT is not necessary. In fact, BEGIN CONCURRENT can cause
209
+ // deadlocks with forced wal-checkpoints (which `litestream replicate` performs),
210
+ // so it is important to use vanilla transactions in this configuration.
211
+ db.beginImmediate();
212
+ }
213
+ this.#db = db;
214
+ this.#version = commitVersion;
215
+ this.#lc = lc.withContext('version', commitVersion);
216
+ this.#tableSpecs = tableSpecs;
217
+ if (this.#tableSpecs.size === 0) {
218
+ this.#reloadTableSpecs();
219
+ }
220
+ }
221
+ #reloadTableSpecs() {
222
+ this.#tableSpecs.clear();
223
+ for (const spec of listTables(this.#db.db)) {
224
+ this.#tableSpecs.set(spec.name, spec);
225
+ }
226
+ }
227
+ #tableSpec(name) {
228
+ return must(this.#tableSpecs.get(name), `Unknown table ${name}`);
229
+ }
230
+ processInsert(insert) {
231
+ const table = liteTableName(insert.relation);
232
+ const newRow = liteRow(insert.new, this.#tableSpec(table));
233
+ const row = {
234
+ ...newRow,
235
+ [ZERO_VERSION_COLUMN_NAME]: this.#version,
236
+ };
237
+ const columns = Object.keys(row).map(c => id(c));
238
+ this.#db.run(`
239
+ INSERT INTO ${id(table)} (${columns.join(',')})
240
+ VALUES (${new Array(columns.length).fill('?').join(',')})
241
+ `, Object.values(row));
242
+ if (insert.relation.keyColumns.length === 0) {
243
+ // INSERTs can be replicated for rows without a PRIMARY KEY or a
244
+ // UNIQUE INDEX. These are written to the replica but not recorded
245
+ // in the changeLog, because these rows cannot participate in IVM.
246
+ //
247
+ // (Once the table schema has been corrected to include a key, the
248
+ // associated schema change will reset pipelines and data can be
249
+ // loaded via hydration.)
250
+ return;
251
+ }
252
+ const key = Object.fromEntries(insert.relation.keyColumns.map(col => [col, newRow[col]]));
253
+ logSetOp(this.#db, this.#version, table, key);
254
+ }
255
+ processUpdate(update) {
256
+ const table = liteTableName(update.relation);
257
+ const newRow = liteRow(update.new, this.#tableSpec(table));
258
+ const row = {
259
+ ...newRow,
260
+ [ZERO_VERSION_COLUMN_NAME]: this.#version,
261
+ };
262
+ // update.key is set with the old values if the key has changed.
263
+ const oldKey = update.key
264
+ ? liteRow(update.key, this.#tableSpec(table))
265
+ : null;
266
+ const newKey = Object.fromEntries(update.relation.keyColumns.map(col => [col, newRow[col]]));
267
+ const currKey = oldKey ?? newKey;
268
+ const setExprs = Object.keys(row).map(col => `${id(col)}=?`);
269
+ const conds = Object.keys(currKey).map(col => `${id(col)}=?`);
270
+ this.#db.run(`
271
+ UPDATE ${id(table)}
272
+ SET ${setExprs.join(',')}
273
+ WHERE ${conds.join(' AND ')}
274
+ `, [...Object.values(row), ...Object.values(currKey)]);
275
+ if (oldKey) {
276
+ logDeleteOp(this.#db, this.#version, table, oldKey);
277
+ }
278
+ logSetOp(this.#db, this.#version, table, newKey);
279
+ }
280
+ processDelete(del) {
281
+ // REPLICA IDENTITY DEFAULT means the `key` must be set.
282
+ // https://www.postgresql.org/docs/current/protocol-logicalrep-message-formats.html
283
+ assert(del.relation.replicaIdentity === 'default');
284
+ const table = liteTableName(del.relation);
285
+ const rowKey = liteRow(del.key, this.#tableSpec(table));
286
+ const conds = Object.keys(rowKey).map(col => `${id(col)}=?`);
287
+ this.#db.run(`DELETE FROM ${id(table)} WHERE ${conds.join(' AND ')}`, Object.values(rowKey));
288
+ logDeleteOp(this.#db, this.#version, table, rowKey);
289
+ }
290
+ processTruncate(truncate) {
291
+ for (const relation of truncate.relations) {
292
+ const table = liteTableName(relation);
293
+ // Update replica data.
294
+ this.#db.run(`DELETE FROM ${id(table)}`);
295
+ // Update change log.
296
+ logTruncateOp(this.#db, this.#version, table);
297
+ }
298
+ }
299
+ processCreateTable(create) {
300
+ const table = mapPostgresToLite(create.spec);
301
+ this.#db.db.exec(createTableStatement(table));
302
+ this.#logResetOp(table.name);
303
+ this.#lc.info?.(create.tag, table.name);
304
+ }
305
+ processRenameTable(rename) {
306
+ const oldName = liteTableName(rename.old);
307
+ const newName = liteTableName(rename.new);
308
+ this.#db.db.exec(`ALTER TABLE ${id(oldName)} RENAME TO ${id(newName)}`);
309
+ this.#bumpVersions(newName);
310
+ this.#logResetOp(oldName);
311
+ this.#lc.info?.(rename.tag, oldName, newName);
312
+ }
313
+ processAddColumn(msg) {
314
+ const table = liteTableName(msg.table);
315
+ const { name } = msg.column;
316
+ const spec = mapPostgresToLiteColumn(table, msg.column);
317
+ this.#db.db.exec(`ALTER TABLE ${id(table)} ADD ${id(name)} ${columnDef(spec)}`);
318
+ this.#bumpVersions(table);
319
+ this.#lc.info?.(msg.tag, table, msg.column);
320
+ }
321
+ processUpdateColumn(msg) {
322
+ const table = liteTableName(msg.table);
323
+ let oldName = msg.old.name;
324
+ const newName = msg.new.name;
325
+ const oldSpec = mapPostgresToLiteColumn(table, msg.old);
326
+ const newSpec = mapPostgresToLiteColumn(table, msg.new);
327
+ // The only updates that are relevant are the column name and the data type.
328
+ if (oldName === newName && oldSpec.dataType === newSpec.dataType) {
329
+ this.#lc.info?.(msg.tag, 'no thing to update', oldSpec, newSpec);
330
+ return;
331
+ }
332
+ // If the data type changes, we have to make a new column with the new data type
333
+ // and copy the values over.
334
+ if (oldSpec.dataType !== newSpec.dataType) {
335
+ // Remember (and drop) the indexes that reference the column.
336
+ const indexes = listIndexes(this.#db.db).filter(idx => idx.tableName === table && oldName in idx.columns);
337
+ const stmts = indexes.map(idx => `DROP INDEX IF EXISTS ${id(idx.name)};`);
338
+ const tmpName = `tmp.${newName}`;
339
+ stmts.push(`
340
+ ALTER TABLE ${id(table)} ADD ${id(tmpName)} ${columnDef(newSpec)};
341
+ UPDATE ${id(table)} SET ${id(tmpName)} = ${id(oldName)};
342
+ ALTER TABLE ${id(table)} DROP ${id(oldName)};
343
+ `);
344
+ for (const idx of indexes) {
345
+ // Re-create the indexes to reference the new column.
346
+ idx.columns[tmpName] = idx.columns[oldName];
347
+ delete idx.columns[oldName];
348
+ stmts.push(createIndexStatement(idx));
349
+ }
350
+ this.#db.db.exec(stmts.join(''));
351
+ oldName = tmpName;
352
+ }
353
+ if (oldName !== newName) {
354
+ this.#db.db.exec(`ALTER TABLE ${id(table)} RENAME ${id(oldName)} TO ${id(newName)}`);
355
+ }
356
+ this.#bumpVersions(table);
357
+ this.#lc.info?.(msg.tag, table, msg.new);
358
+ }
359
+ processDropColumn(msg) {
360
+ const table = liteTableName(msg.table);
361
+ const { column } = msg;
362
+ this.#db.db.exec(`ALTER TABLE ${id(table)} DROP ${id(column)}`);
363
+ this.#bumpVersions(table);
364
+ this.#lc.info?.(msg.tag, table, column);
365
+ }
366
+ processDropTable(drop) {
367
+ const name = liteTableName(drop.id);
368
+ this.#db.db.exec(`DROP TABLE IF EXISTS ${id(name)}`);
369
+ this.#logResetOp(name);
370
+ this.#lc.info?.(drop.tag, name);
371
+ }
372
+ processCreateIndex(create) {
373
+ const index = mapPostgresToLiteIndex(create.spec);
374
+ this.#db.db.exec(createIndexStatement(index));
375
+ // indexes affect tables visibility (e.g. sync-ability is gated on
376
+ // having a unique index), so reset pipelines to refresh table schemas.
377
+ this.#logResetOp(index.tableName);
378
+ this.#lc.info?.(create.tag, index.name);
379
+ }
380
+ processDropIndex(drop) {
381
+ const name = liteTableName(drop.id);
382
+ this.#db.db.exec(`DROP INDEX IF EXISTS ${id(name)}`);
383
+ this.#lc.info?.(drop.tag, name);
384
+ }
385
+ #bumpVersions(table) {
386
+ this.#db.run(`UPDATE ${id(table)} SET ${id(ZERO_VERSION_COLUMN_NAME)} = ?`, this.#version);
387
+ this.#logResetOp(table);
388
+ }
389
+ #logResetOp(table) {
390
+ logResetOp(this.#db, this.#version, table);
391
+ this.#reloadTableSpecs();
392
+ }
393
+ processCommit(commit, watermark) {
394
+ if (watermark !== this.#version) {
395
+ throw new Error(`'commit' version ${watermark} does not match 'begin' version ${this.#version}: ${stringify(commit)}`);
396
+ }
397
+ updateReplicationWatermark(this.#db, watermark);
398
+ this.#db.commit();
399
+ const elapsedMs = Date.now() - this.#startMs;
400
+ this.#lc.debug?.(`Committed tx@${this.#version} (${elapsedMs} ms)`);
401
+ }
402
+ abort(lc) {
403
+ lc.info?.(`aborting transaction ${this.#version}`);
404
+ this.#db.rollback();
405
+ }
406
+ }
407
+ function ensureError(err) {
408
+ if (err instanceof Error) {
409
+ return err;
410
+ }
411
+ const error = new Error();
412
+ error.cause = err;
413
+ return error;
414
+ }
415
+ //# sourceMappingURL=change-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-processor.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/change-processor.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,13 @@
1
1
  import type { LogContext } from '@rocicorp/logger';
2
- import { Database } from '../../../../zqlite/src/db.js';
3
- import { StatementRunner } from '../../db/statements.js';
4
- import type { Source } from '../../types/streams.js';
5
- import type { ChangeStreamData } from '../change-source/protocol/current/downstream.js';
6
- import type { ChangeStreamer } from '../change-streamer/change-streamer.js';
7
- import type { ReplicaState, ReplicatorMode } from './replicator.js';
8
- type TransactionMode = 'IMMEDIATE' | 'CONCURRENT';
2
+ import { Database } from '../../../../zqlite/src/db.ts';
3
+ import type { Source } from '../../types/streams.ts';
4
+ import type { ChangeStreamer } from '../change-streamer/change-streamer.ts';
5
+ import type { ReplicaState, ReplicatorMode } from './replicator.ts';
9
6
  /**
10
7
  * The {@link IncrementalSyncer} manages a logical replication stream from upstream,
11
8
  * handling application lifecycle events (start, stop) and retrying the
12
9
  * connection with exponential backoff. The actual handling of the logical
13
- * replication messages is done by the {@link MessageProcessor}.
10
+ * replication messages is done by the {@link ChangeProcessor}.
14
11
  */
15
12
  export declare class IncrementalSyncer {
16
13
  #private;
@@ -19,23 +16,4 @@ export declare class IncrementalSyncer {
19
16
  subscribe(): Source<ReplicaState>;
20
17
  stop(lc: LogContext, err?: unknown): void;
21
18
  }
22
- /**
23
- * The {@link MessageProcessor} partitions the stream of messages into transactions
24
- * by creating a {@link TransactionProcessor} when a transaction begins, and dispatching
25
- * messages to it until the commit is received.
26
- *
27
- * From https://www.postgresql.org/docs/current/protocol-logical-replication.html#PROTOCOL-LOGICAL-MESSAGES-FLOW :
28
- *
29
- * "The logical replication protocol sends individual transactions one by one.
30
- * This means that all messages between a pair of Begin and Commit messages
31
- * belong to the same transaction."
32
- */
33
- export declare class MessageProcessor {
34
- #private;
35
- constructor(db: StatementRunner, txMode: TransactionMode, failService: (lc: LogContext, err: unknown) => void);
36
- abort(lc: LogContext): void;
37
- /** @return If a transaction was committed. */
38
- processMessage(lc: LogContext, downstream: ChangeStreamData): boolean;
39
- }
40
- export {};
41
19
  //# sourceMappingURL=incremental-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"incremental-sync.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/incremental-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAKjD,OAAO,EAAC,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAatD,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAMvD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAiBnD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AACtF,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,uCAAuC,CAAC;AAG/C,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAalE,KAAK,eAAe,GAAG,WAAW,GAAG,YAAY,CAAC;AAElD;;;;;GAKG;AACH,qBAAa,iBAAiB;;gBAW1B,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,cAAc;IAUhB,GAAG,CAAC,EAAE,EAAE,UAAU;IAqDxB,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC;IAIjC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,OAAO;CAGnC;AAWD;;;;;;;;;;GAUG;AAEH,qBAAa,gBAAgB;;gBAezB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI;IAqBrD,KAAK,CAAC,EAAE,EAAE,UAAU;IAIpB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO;CAwItE"}
1
+ {"version":3,"file":"incremental-sync.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/incremental-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAEtD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,uCAAuC,CAAC;AAI/C,OAAO,KAAK,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAGlE;;;;;GAKG;AACH,qBAAa,iBAAiB;;gBAW1B,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,cAAc;IAUhB,GAAG,CAAC,EAAE,EAAE,UAAU;IAqDxB,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC;IAIjC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,OAAO;CAGnC"}