@rocicorp/zero 0.0.2024100800 → 0.0.202410040736

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 (849) hide show
  1. package/package.json +6 -8
  2. package/out/btree/b+tree.d.ts +0 -471
  3. package/out/btree/b+tree.d.ts.map +0 -1
  4. package/out/btree/b+tree.js +0 -1708
  5. package/out/btree/b+tree.js.map +0 -1
  6. package/out/btree/interfaces.d.ts +0 -270
  7. package/out/btree/interfaces.d.ts.map +0 -1
  8. package/out/btree/interfaces.js +0 -3
  9. package/out/btree/interfaces.js.map +0 -1
  10. package/out/btree/src/mod.d.ts +0 -2
  11. package/out/btree/src/mod.d.ts.map +0 -1
  12. package/out/btree/src/mod.js +0 -2
  13. package/out/btree/src/mod.js.map +0 -1
  14. package/out/chunk-2RUT5EQV.js +0 -28
  15. package/out/chunk-2RUT5EQV.js.map +0 -7
  16. package/out/datadog/src/datadog-log-sink.d.ts +0 -20
  17. package/out/datadog/src/datadog-log-sink.d.ts.map +0 -1
  18. package/out/datadog/src/datadog-log-sink.js +0 -231
  19. package/out/datadog/src/datadog-log-sink.js.map +0 -1
  20. package/out/datadog/src/mod.d.ts +0 -2
  21. package/out/datadog/src/mod.d.ts.map +0 -1
  22. package/out/datadog/src/mod.js +0 -2
  23. package/out/datadog/src/mod.js.map +0 -1
  24. package/out/react.js +0 -114
  25. package/out/react.js.map +0 -7
  26. package/out/replicache/src/async-iterable-to-array.d.ts +0 -2
  27. package/out/replicache/src/async-iterable-to-array.d.ts.map +0 -1
  28. package/out/replicache/src/bg-interval.d.ts +0 -3
  29. package/out/replicache/src/bg-interval.d.ts.map +0 -1
  30. package/out/replicache/src/binary-search.d.ts +0 -15
  31. package/out/replicache/src/binary-search.d.ts.map +0 -1
  32. package/out/replicache/src/broadcast-channel.d.ts +0 -3
  33. package/out/replicache/src/broadcast-channel.d.ts.map +0 -1
  34. package/out/replicache/src/btree/diff.d.ts +0 -4
  35. package/out/replicache/src/btree/diff.d.ts.map +0 -1
  36. package/out/replicache/src/btree/node.d.ts +0 -125
  37. package/out/replicache/src/btree/node.d.ts.map +0 -1
  38. package/out/replicache/src/btree/read.d.ts +0 -32
  39. package/out/replicache/src/btree/read.d.ts.map +0 -1
  40. package/out/replicache/src/btree/splice.d.ts +0 -9
  41. package/out/replicache/src/btree/splice.d.ts.map +0 -1
  42. package/out/replicache/src/btree/write.d.ts +0 -24
  43. package/out/replicache/src/btree/write.d.ts.map +0 -1
  44. package/out/replicache/src/call-default-fetch.d.ts +0 -6
  45. package/out/replicache/src/call-default-fetch.d.ts.map +0 -1
  46. package/out/replicache/src/config.d.ts +0 -13
  47. package/out/replicache/src/config.d.ts.map +0 -1
  48. package/out/replicache/src/connection-loop-delegates.d.ts +0 -20
  49. package/out/replicache/src/connection-loop-delegates.d.ts.map +0 -1
  50. package/out/replicache/src/connection-loop.d.ts +0 -28
  51. package/out/replicache/src/connection-loop.d.ts.map +0 -1
  52. package/out/replicache/src/cookies.d.ts +0 -29
  53. package/out/replicache/src/cookies.d.ts.map +0 -1
  54. package/out/replicache/src/dag/chunk.d.ts +0 -35
  55. package/out/replicache/src/dag/chunk.d.ts.map +0 -1
  56. package/out/replicache/src/dag/gc.d.ts +0 -42
  57. package/out/replicache/src/dag/gc.d.ts.map +0 -1
  58. package/out/replicache/src/dag/key-type-enum.d.ts +0 -10
  59. package/out/replicache/src/dag/key-type-enum.d.ts.map +0 -1
  60. package/out/replicache/src/dag/key.d.ts +0 -21
  61. package/out/replicache/src/dag/key.d.ts.map +0 -1
  62. package/out/replicache/src/dag/lazy-store.d.ts +0 -181
  63. package/out/replicache/src/dag/lazy-store.d.ts.map +0 -1
  64. package/out/replicache/src/dag/store-impl.d.ts +0 -38
  65. package/out/replicache/src/dag/store-impl.d.ts.map +0 -1
  66. package/out/replicache/src/dag/store.d.ts +0 -36
  67. package/out/replicache/src/dag/store.d.ts.map +0 -1
  68. package/out/replicache/src/dag/visitor.d.ts +0 -13
  69. package/out/replicache/src/dag/visitor.d.ts.map +0 -1
  70. package/out/replicache/src/db/commit.d.ts +0 -127
  71. package/out/replicache/src/db/commit.d.ts.map +0 -1
  72. package/out/replicache/src/db/index-operation-enum.d.ts +0 -6
  73. package/out/replicache/src/db/index-operation-enum.d.ts.map +0 -1
  74. package/out/replicache/src/db/index.d.ts +0 -30
  75. package/out/replicache/src/db/index.d.ts.map +0 -1
  76. package/out/replicache/src/db/meta-type-enum.d.ts +0 -12
  77. package/out/replicache/src/db/meta-type-enum.d.ts.map +0 -1
  78. package/out/replicache/src/db/read.d.ts +0 -24
  79. package/out/replicache/src/db/read.d.ts.map +0 -1
  80. package/out/replicache/src/db/rebase.d.ts +0 -10
  81. package/out/replicache/src/db/rebase.d.ts.map +0 -1
  82. package/out/replicache/src/db/scan.d.ts +0 -15
  83. package/out/replicache/src/db/scan.d.ts.map +0 -1
  84. package/out/replicache/src/db/write.d.ts +0 -39
  85. package/out/replicache/src/db/write.d.ts.map +0 -1
  86. package/out/replicache/src/error-responses.d.ts +0 -26
  87. package/out/replicache/src/error-responses.d.ts.map +0 -1
  88. package/out/replicache/src/filter-async-iterable.d.ts +0 -10
  89. package/out/replicache/src/filter-async-iterable.d.ts.map +0 -1
  90. package/out/replicache/src/format-version-enum.d.ts +0 -13
  91. package/out/replicache/src/format-version-enum.d.ts.map +0 -1
  92. package/out/replicache/src/format-version.d.ts +0 -3
  93. package/out/replicache/src/format-version.d.ts.map +0 -1
  94. package/out/replicache/src/frozen-json.d.ts +0 -35
  95. package/out/replicache/src/frozen-json.d.ts.map +0 -1
  96. package/out/replicache/src/get-default-puller.d.ts +0 -14
  97. package/out/replicache/src/get-default-puller.d.ts.map +0 -1
  98. package/out/replicache/src/get-default-pusher.d.ts +0 -10
  99. package/out/replicache/src/get-default-pusher.d.ts.map +0 -1
  100. package/out/replicache/src/hash.d.ts +0 -29
  101. package/out/replicache/src/hash.d.ts.map +0 -1
  102. package/out/replicache/src/http-request-info.d.ts +0 -6
  103. package/out/replicache/src/http-request-info.d.ts.map +0 -1
  104. package/out/replicache/src/impl.d.ts +0 -4
  105. package/out/replicache/src/impl.d.ts.map +0 -1
  106. package/out/replicache/src/index-defs.d.ts +0 -36
  107. package/out/replicache/src/index-defs.d.ts.map +0 -1
  108. package/out/replicache/src/invoke-kind-enum.d.ts +0 -6
  109. package/out/replicache/src/invoke-kind-enum.d.ts.map +0 -1
  110. package/out/replicache/src/iterable-union.d.ts +0 -5
  111. package/out/replicache/src/iterable-union.d.ts.map +0 -1
  112. package/out/replicache/src/kv/idb-store-with-mem-fallback.d.ts +0 -25
  113. package/out/replicache/src/kv/idb-store-with-mem-fallback.d.ts.map +0 -1
  114. package/out/replicache/src/kv/idb-store.d.ts +0 -18
  115. package/out/replicache/src/kv/idb-store.d.ts.map +0 -1
  116. package/out/replicache/src/kv/mem-store.d.ts +0 -23
  117. package/out/replicache/src/kv/mem-store.d.ts.map +0 -1
  118. package/out/replicache/src/kv/read-impl.d.ts +0 -11
  119. package/out/replicache/src/kv/read-impl.d.ts.map +0 -1
  120. package/out/replicache/src/kv/store.d.ts +0 -76
  121. package/out/replicache/src/kv/store.d.ts.map +0 -1
  122. package/out/replicache/src/kv/write-impl-base.d.ts +0 -18
  123. package/out/replicache/src/kv/write-impl-base.d.ts.map +0 -1
  124. package/out/replicache/src/kv/write-impl.d.ts +0 -9
  125. package/out/replicache/src/kv/write-impl.d.ts.map +0 -1
  126. package/out/replicache/src/lazy.d.ts +0 -2
  127. package/out/replicache/src/lazy.d.ts.map +0 -1
  128. package/out/replicache/src/log-options.d.ts +0 -10
  129. package/out/replicache/src/log-options.d.ts.map +0 -1
  130. package/out/replicache/src/merge-async-iterables.d.ts +0 -16
  131. package/out/replicache/src/merge-async-iterables.d.ts.map +0 -1
  132. package/out/replicache/src/mod.d.ts +0 -38
  133. package/out/replicache/src/mod.d.ts.map +0 -1
  134. package/out/replicache/src/mutation-recovery.d.ts +0 -43
  135. package/out/replicache/src/mutation-recovery.d.ts.map +0 -1
  136. package/out/replicache/src/new-client-channel.d.ts +0 -6
  137. package/out/replicache/src/new-client-channel.d.ts.map +0 -1
  138. package/out/replicache/src/on-persist-channel.d.ts +0 -10
  139. package/out/replicache/src/on-persist-channel.d.ts.map +0 -1
  140. package/out/replicache/src/patch-operation.d.ts +0 -32
  141. package/out/replicache/src/patch-operation.d.ts.map +0 -1
  142. package/out/replicache/src/pending-mutations.d.ts +0 -14
  143. package/out/replicache/src/pending-mutations.d.ts.map +0 -1
  144. package/out/replicache/src/persist/client-gc.d.ts +0 -17
  145. package/out/replicache/src/persist/client-gc.d.ts.map +0 -1
  146. package/out/replicache/src/persist/client-group-gc.d.ts +0 -10
  147. package/out/replicache/src/persist/client-group-gc.d.ts.map +0 -1
  148. package/out/replicache/src/persist/client-groups.d.ts +0 -72
  149. package/out/replicache/src/persist/client-groups.d.ts.map +0 -1
  150. package/out/replicache/src/persist/clients.d.ts +0 -155
  151. package/out/replicache/src/persist/clients.d.ts.map +0 -1
  152. package/out/replicache/src/persist/collect-idb-databases.d.ts +0 -91
  153. package/out/replicache/src/persist/collect-idb-databases.d.ts.map +0 -1
  154. package/out/replicache/src/persist/gather-mem-only-visitor.d.ts +0 -12
  155. package/out/replicache/src/persist/gather-mem-only-visitor.d.ts.map +0 -1
  156. package/out/replicache/src/persist/gather-not-cached-visitor.d.ts +0 -17
  157. package/out/replicache/src/persist/gather-not-cached-visitor.d.ts.map +0 -1
  158. package/out/replicache/src/persist/heartbeat.d.ts +0 -9
  159. package/out/replicache/src/persist/heartbeat.d.ts.map +0 -1
  160. package/out/replicache/src/persist/idb-databases-store-db-name.d.ts +0 -5
  161. package/out/replicache/src/persist/idb-databases-store-db-name.d.ts.map +0 -1
  162. package/out/replicache/src/persist/idb-databases-store.d.ts +0 -24
  163. package/out/replicache/src/persist/idb-databases-store.d.ts.map +0 -1
  164. package/out/replicache/src/persist/make-client-id.d.ts +0 -6
  165. package/out/replicache/src/persist/make-client-id.d.ts.map +0 -1
  166. package/out/replicache/src/persist/persist.d.ts +0 -26
  167. package/out/replicache/src/persist/persist.d.ts.map +0 -1
  168. package/out/replicache/src/persist/refresh.d.ts +0 -13
  169. package/out/replicache/src/persist/refresh.d.ts.map +0 -1
  170. package/out/replicache/src/process-scheduler.d.ts +0 -20
  171. package/out/replicache/src/process-scheduler.d.ts.map +0 -1
  172. package/out/replicache/src/puller.d.ts +0 -61
  173. package/out/replicache/src/puller.d.ts.map +0 -1
  174. package/out/replicache/src/pusher.d.ts +0 -33
  175. package/out/replicache/src/pusher.d.ts.map +0 -1
  176. package/out/replicache/src/replicache-impl.d.ts +0 -321
  177. package/out/replicache/src/replicache-impl.d.ts.map +0 -1
  178. package/out/replicache/src/replicache-options.d.ts +0 -209
  179. package/out/replicache/src/replicache-options.d.ts.map +0 -1
  180. package/out/replicache/src/replicache.d.ts +0 -298
  181. package/out/replicache/src/replicache.d.ts.map +0 -1
  182. package/out/replicache/src/request-idle.d.ts +0 -6
  183. package/out/replicache/src/request-idle.d.ts.map +0 -1
  184. package/out/replicache/src/scan-iterator.d.ts +0 -127
  185. package/out/replicache/src/scan-iterator.d.ts.map +0 -1
  186. package/out/replicache/src/scan-options.d.ts +0 -67
  187. package/out/replicache/src/scan-options.d.ts.map +0 -1
  188. package/out/replicache/src/set-interval-with-signal.d.ts +0 -2
  189. package/out/replicache/src/set-interval-with-signal.d.ts.map +0 -1
  190. package/out/replicache/src/size-of-value.d.ts +0 -19
  191. package/out/replicache/src/size-of-value.d.ts.map +0 -1
  192. package/out/replicache/src/subscriptions.d.ts +0 -137
  193. package/out/replicache/src/subscriptions.d.ts.map +0 -1
  194. package/out/replicache/src/sync/diff.d.ts +0 -31
  195. package/out/replicache/src/sync/diff.d.ts.map +0 -1
  196. package/out/replicache/src/sync/handle-pull-response-result-type-enum.d.ts +0 -8
  197. package/out/replicache/src/sync/handle-pull-response-result-type-enum.d.ts.map +0 -1
  198. package/out/replicache/src/sync/ids.d.ts +0 -13
  199. package/out/replicache/src/sync/ids.d.ts.map +0 -1
  200. package/out/replicache/src/sync/patch.d.ts +0 -5
  201. package/out/replicache/src/sync/patch.d.ts.map +0 -1
  202. package/out/replicache/src/sync/pull-error.d.ts +0 -9
  203. package/out/replicache/src/sync/pull-error.d.ts.map +0 -1
  204. package/out/replicache/src/sync/pull.d.ts +0 -78
  205. package/out/replicache/src/sync/pull.d.ts.map +0 -1
  206. package/out/replicache/src/sync/push.d.ts +0 -65
  207. package/out/replicache/src/sync/push.d.ts.map +0 -1
  208. package/out/replicache/src/sync/request-id.d.ts +0 -10
  209. package/out/replicache/src/sync/request-id.d.ts.map +0 -1
  210. package/out/replicache/src/sync/sync-head-name.d.ts +0 -2
  211. package/out/replicache/src/sync/sync-head-name.d.ts.map +0 -1
  212. package/out/replicache/src/test-license-key.d.ts +0 -3
  213. package/out/replicache/src/test-license-key.d.ts.map +0 -1
  214. package/out/replicache/src/to-error.d.ts +0 -2
  215. package/out/replicache/src/to-error.d.ts.map +0 -1
  216. package/out/replicache/src/transaction-closed-error.d.ts +0 -12
  217. package/out/replicache/src/transaction-closed-error.d.ts.map +0 -1
  218. package/out/replicache/src/transactions.d.ts +0 -156
  219. package/out/replicache/src/transactions.d.ts.map +0 -1
  220. package/out/replicache/src/types.d.ts +0 -57
  221. package/out/replicache/src/types.d.ts.map +0 -1
  222. package/out/replicache/src/version.d.ts +0 -5
  223. package/out/replicache/src/version.d.ts.map +0 -1
  224. package/out/replicache/src/with-transactions.d.ts +0 -23
  225. package/out/replicache/src/with-transactions.d.ts.map +0 -1
  226. package/out/shared/src/abort-error.d.ts +0 -4
  227. package/out/shared/src/abort-error.d.ts.map +0 -1
  228. package/out/shared/src/abort-error.js +0 -4
  229. package/out/shared/src/abort-error.js.map +0 -1
  230. package/out/shared/src/asserts.d.ts +0 -17
  231. package/out/shared/src/asserts.d.ts.map +0 -1
  232. package/out/shared/src/asserts.js +0 -73
  233. package/out/shared/src/asserts.js.map +0 -1
  234. package/out/shared/src/browser-env.d.ts +0 -3
  235. package/out/shared/src/browser-env.d.ts.map +0 -1
  236. package/out/shared/src/config.d.ts +0 -3
  237. package/out/shared/src/config.d.ts.map +0 -1
  238. package/out/shared/src/config.js +0 -3
  239. package/out/shared/src/config.js.map +0 -1
  240. package/out/shared/src/custom-key-map.d.ts +0 -26
  241. package/out/shared/src/custom-key-map.d.ts.map +0 -1
  242. package/out/shared/src/custom-key-map.js +0 -65
  243. package/out/shared/src/custom-key-map.js.map +0 -1
  244. package/out/shared/src/deep-clone.d.ts +0 -4
  245. package/out/shared/src/deep-clone.d.ts.map +0 -1
  246. package/out/shared/src/document-visible.d.ts +0 -9
  247. package/out/shared/src/document-visible.d.ts.map +0 -1
  248. package/out/shared/src/has-own.d.ts +0 -5
  249. package/out/shared/src/has-own.d.ts.map +0 -1
  250. package/out/shared/src/has-own.js +0 -8
  251. package/out/shared/src/has-own.js.map +0 -1
  252. package/out/shared/src/immutable.d.ts +0 -11
  253. package/out/shared/src/immutable.d.ts.map +0 -1
  254. package/out/shared/src/iterables.d.ts +0 -11
  255. package/out/shared/src/iterables.d.ts.map +0 -1
  256. package/out/shared/src/json-schema.d.ts +0 -5
  257. package/out/shared/src/json-schema.d.ts.map +0 -1
  258. package/out/shared/src/json-schema.js +0 -36
  259. package/out/shared/src/json-schema.js.map +0 -1
  260. package/out/shared/src/json.d.ts +0 -55
  261. package/out/shared/src/json.d.ts.map +0 -1
  262. package/out/shared/src/json.js +0 -164
  263. package/out/shared/src/json.js.map +0 -1
  264. package/out/shared/src/must.d.ts +0 -2
  265. package/out/shared/src/must.d.ts.map +0 -1
  266. package/out/shared/src/must.js +0 -8
  267. package/out/shared/src/must.js.map +0 -1
  268. package/out/shared/src/navigator.d.ts +0 -7
  269. package/out/shared/src/navigator.d.ts.map +0 -1
  270. package/out/shared/src/parse-big-int.d.ts +0 -2
  271. package/out/shared/src/parse-big-int.d.ts.map +0 -1
  272. package/out/shared/src/parse-big-int.js +0 -11
  273. package/out/shared/src/parse-big-int.js.map +0 -1
  274. package/out/shared/src/queue.d.ts +0 -40
  275. package/out/shared/src/queue.d.ts.map +0 -1
  276. package/out/shared/src/queue.js +0 -118
  277. package/out/shared/src/queue.js.map +0 -1
  278. package/out/shared/src/rand.d.ts +0 -7
  279. package/out/shared/src/rand.d.ts.map +0 -1
  280. package/out/shared/src/rand.js +0 -11
  281. package/out/shared/src/rand.js.map +0 -1
  282. package/out/shared/src/random-uint64.d.ts +0 -2
  283. package/out/shared/src/random-uint64.d.ts.map +0 -1
  284. package/out/shared/src/random-values.d.ts +0 -2
  285. package/out/shared/src/random-values.d.ts.map +0 -1
  286. package/out/shared/src/resolved-promises.d.ts +0 -5
  287. package/out/shared/src/resolved-promises.d.ts.map +0 -1
  288. package/out/shared/src/resolved-promises.js +0 -5
  289. package/out/shared/src/resolved-promises.js.map +0 -1
  290. package/out/shared/src/set-utils.d.ts +0 -9
  291. package/out/shared/src/set-utils.d.ts.map +0 -1
  292. package/out/shared/src/set-utils.js +0 -60
  293. package/out/shared/src/set-utils.js.map +0 -1
  294. package/out/shared/src/sleep.d.ts +0 -15
  295. package/out/shared/src/sleep.d.ts.map +0 -1
  296. package/out/shared/src/sleep.js +0 -54
  297. package/out/shared/src/sleep.js.map +0 -1
  298. package/out/shared/src/string-compare.d.ts +0 -2
  299. package/out/shared/src/string-compare.d.ts.map +0 -1
  300. package/out/shared/src/string-compare.js +0 -10
  301. package/out/shared/src/string-compare.js.map +0 -1
  302. package/out/shared/src/types.d.ts +0 -2
  303. package/out/shared/src/types.d.ts.map +0 -1
  304. package/out/shared/src/valita.d.ts +0 -27
  305. package/out/shared/src/valita.d.ts.map +0 -1
  306. package/out/shared/src/valita.js +0 -118
  307. package/out/shared/src/valita.js.map +0 -1
  308. package/out/shared/src/xxhash.d.ts +0 -3
  309. package/out/shared/src/xxhash.d.ts.map +0 -1
  310. package/out/shared/src/xxhash.js +0 -4
  311. package/out/shared/src/xxhash.js.map +0 -1
  312. package/out/zero/src/cli.d.ts +0 -3
  313. package/out/zero/src/cli.d.ts.map +0 -1
  314. package/out/zero/src/cli.js +0 -3
  315. package/out/zero/src/cli.js.map +0 -1
  316. package/out/zero/src/react.d.ts +0 -2
  317. package/out/zero/src/react.d.ts.map +0 -1
  318. package/out/zero/src/server/change-streamer.d.ts +0 -2
  319. package/out/zero/src/server/change-streamer.d.ts.map +0 -1
  320. package/out/zero/src/server/change-streamer.js +0 -2
  321. package/out/zero/src/server/change-streamer.js.map +0 -1
  322. package/out/zero/src/server/main.d.ts +0 -2
  323. package/out/zero/src/server/main.d.ts.map +0 -1
  324. package/out/zero/src/server/main.js +0 -2
  325. package/out/zero/src/server/main.js.map +0 -1
  326. package/out/zero/src/server/replicator.d.ts +0 -2
  327. package/out/zero/src/server/replicator.d.ts.map +0 -1
  328. package/out/zero/src/server/replicator.js +0 -2
  329. package/out/zero/src/server/replicator.js.map +0 -1
  330. package/out/zero/src/server/syncer.d.ts +0 -2
  331. package/out/zero/src/server/syncer.d.ts.map +0 -1
  332. package/out/zero/src/server/syncer.js +0 -2
  333. package/out/zero/src/server/syncer.js.map +0 -1
  334. package/out/zero/src/zero.d.ts +0 -2
  335. package/out/zero/src/zero.d.ts.map +0 -1
  336. package/out/zero-cache/src/config/zero-config.d.ts +0 -1509
  337. package/out/zero-cache/src/config/zero-config.d.ts.map +0 -1
  338. package/out/zero-cache/src/config/zero-config.js +0 -237
  339. package/out/zero-cache/src/config/zero-config.js.map +0 -1
  340. package/out/zero-cache/src/db/lite-tables.d.ts +0 -5
  341. package/out/zero-cache/src/db/lite-tables.d.ts.map +0 -1
  342. package/out/zero-cache/src/db/lite-tables.js +0 -75
  343. package/out/zero-cache/src/db/lite-tables.js.map +0 -1
  344. package/out/zero-cache/src/db/migration-lite.d.ts +0 -38
  345. package/out/zero-cache/src/db/migration-lite.d.ts.map +0 -1
  346. package/out/zero-cache/src/db/migration-lite.js +0 -161
  347. package/out/zero-cache/src/db/migration-lite.js.map +0 -1
  348. package/out/zero-cache/src/db/migration.d.ts +0 -38
  349. package/out/zero-cache/src/db/migration.d.ts.map +0 -1
  350. package/out/zero-cache/src/db/migration.js +0 -139
  351. package/out/zero-cache/src/db/migration.js.map +0 -1
  352. package/out/zero-cache/src/db/statements.d.ts +0 -32
  353. package/out/zero-cache/src/db/statements.d.ts.map +0 -1
  354. package/out/zero-cache/src/db/statements.js +0 -51
  355. package/out/zero-cache/src/db/statements.js.map +0 -1
  356. package/out/zero-cache/src/db/transaction-pool.d.ts +0 -187
  357. package/out/zero-cache/src/db/transaction-pool.d.ts.map +0 -1
  358. package/out/zero-cache/src/db/transaction-pool.js +0 -445
  359. package/out/zero-cache/src/db/transaction-pool.js.map +0 -1
  360. package/out/zero-cache/src/server/change-streamer.d.ts +0 -3
  361. package/out/zero-cache/src/server/change-streamer.d.ts.map +0 -1
  362. package/out/zero-cache/src/server/change-streamer.js +0 -30
  363. package/out/zero-cache/src/server/change-streamer.js.map +0 -1
  364. package/out/zero-cache/src/server/life-cycle.d.ts +0 -38
  365. package/out/zero-cache/src/server/life-cycle.d.ts.map +0 -1
  366. package/out/zero-cache/src/server/life-cycle.js +0 -110
  367. package/out/zero-cache/src/server/life-cycle.js.map +0 -1
  368. package/out/zero-cache/src/server/logging.d.ts +0 -6
  369. package/out/zero-cache/src/server/logging.d.ts.map +0 -1
  370. package/out/zero-cache/src/server/logging.js +0 -23
  371. package/out/zero-cache/src/server/logging.js.map +0 -1
  372. package/out/zero-cache/src/server/main.d.ts +0 -2
  373. package/out/zero-cache/src/server/main.d.ts.map +0 -1
  374. package/out/zero-cache/src/server/main.js +0 -94
  375. package/out/zero-cache/src/server/main.js.map +0 -1
  376. package/out/zero-cache/src/server/replicator.d.ts +0 -3
  377. package/out/zero-cache/src/server/replicator.d.ts.map +0 -1
  378. package/out/zero-cache/src/server/replicator.js +0 -36
  379. package/out/zero-cache/src/server/replicator.js.map +0 -1
  380. package/out/zero-cache/src/server/syncer.d.ts +0 -3
  381. package/out/zero-cache/src/server/syncer.d.ts.map +0 -1
  382. package/out/zero-cache/src/server/syncer.js +0 -46
  383. package/out/zero-cache/src/server/syncer.js.map +0 -1
  384. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +0 -23
  385. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +0 -1
  386. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +0 -98
  387. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +0 -1
  388. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +0 -39
  389. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +0 -1
  390. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +0 -212
  391. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +0 -1
  392. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +0 -110
  393. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +0 -1
  394. package/out/zero-cache/src/services/change-streamer/change-streamer.js +0 -7
  395. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +0 -1
  396. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +0 -19
  397. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +0 -1
  398. package/out/zero-cache/src/services/change-streamer/forwarder.js +0 -56
  399. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +0 -1
  400. package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts +0 -14
  401. package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts.map +0 -1
  402. package/out/zero-cache/src/services/change-streamer/pg/change-source.js +0 -211
  403. package/out/zero-cache/src/services/change-streamer/pg/change-source.js.map +0 -1
  404. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts +0 -6
  405. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +0 -1
  406. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +0 -192
  407. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +0 -1
  408. package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts +0 -17
  409. package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts.map +0 -1
  410. package/out/zero-cache/src/services/change-streamer/pg/lsn.js +0 -17
  411. package/out/zero-cache/src/services/change-streamer/pg/lsn.js.map +0 -1
  412. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts +0 -6
  413. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts.map +0 -1
  414. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js +0 -29
  415. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js.map +0 -1
  416. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts +0 -79
  417. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +0 -1
  418. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js +0 -237
  419. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +0 -1
  420. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +0 -5
  421. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +0 -1
  422. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js +0 -111
  423. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +0 -1
  424. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts +0 -26
  425. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +0 -1
  426. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js +0 -185
  427. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +0 -1
  428. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts +0 -11
  429. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts.map +0 -1
  430. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js +0 -86
  431. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js.map +0 -1
  432. package/out/zero-cache/src/services/change-streamer/pg/shard-config.d.ts +0 -19
  433. package/out/zero-cache/src/services/change-streamer/pg/shard-config.d.ts.map +0 -1
  434. package/out/zero-cache/src/services/change-streamer/pg/shard-config.js +0 -2
  435. package/out/zero-cache/src/services/change-streamer/pg/shard-config.js.map +0 -1
  436. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.d.ts +0 -4
  437. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.d.ts.map +0 -1
  438. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js +0 -12
  439. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js.map +0 -1
  440. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts +0 -31
  441. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +0 -1
  442. package/out/zero-cache/src/services/change-streamer/schema/change.js +0 -2
  443. package/out/zero-cache/src/services/change-streamer/schema/change.js.map +0 -1
  444. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +0 -4
  445. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +0 -1
  446. package/out/zero-cache/src/services/change-streamer/schema/init.js +0 -10
  447. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +0 -1
  448. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +0 -22
  449. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +0 -1
  450. package/out/zero-cache/src/services/change-streamer/schema/tables.js +0 -49
  451. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +0 -1
  452. package/out/zero-cache/src/services/change-streamer/storer.d.ts +0 -22
  453. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +0 -1
  454. package/out/zero-cache/src/services/change-streamer/storer.js +0 -157
  455. package/out/zero-cache/src/services/change-streamer/storer.js.map +0 -1
  456. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +0 -27
  457. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +0 -1
  458. package/out/zero-cache/src/services/change-streamer/subscriber.js +0 -70
  459. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +0 -1
  460. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +0 -21
  461. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +0 -1
  462. package/out/zero-cache/src/services/dispatcher/connect-params.js +0 -38
  463. package/out/zero-cache/src/services/dispatcher/connect-params.js.map +0 -1
  464. package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts +0 -19
  465. package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts.map +0 -1
  466. package/out/zero-cache/src/services/dispatcher/dispatcher.js +0 -54
  467. package/out/zero-cache/src/services/dispatcher/dispatcher.js.map +0 -1
  468. package/out/zero-cache/src/services/dispatcher/websocket-handoff.d.ts +0 -11
  469. package/out/zero-cache/src/services/dispatcher/websocket-handoff.d.ts.map +0 -1
  470. package/out/zero-cache/src/services/dispatcher/websocket-handoff.js +0 -33
  471. package/out/zero-cache/src/services/dispatcher/websocket-handoff.js.map +0 -1
  472. package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts +0 -57
  473. package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts.map +0 -1
  474. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +0 -137
  475. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +0 -1
  476. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +0 -28
  477. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +0 -1
  478. package/out/zero-cache/src/services/mutagen/mutagen.js +0 -256
  479. package/out/zero-cache/src/services/mutagen/mutagen.js.map +0 -1
  480. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts +0 -20
  481. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +0 -1
  482. package/out/zero-cache/src/services/mutagen/write-authorizer.js +0 -187
  483. package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +0 -1
  484. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +0 -40
  485. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +0 -1
  486. package/out/zero-cache/src/services/replicator/incremental-sync.js +0 -348
  487. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +0 -1
  488. package/out/zero-cache/src/services/replicator/notifier.d.ts +0 -30
  489. package/out/zero-cache/src/services/replicator/notifier.d.ts.map +0 -1
  490. package/out/zero-cache/src/services/replicator/notifier.js +0 -54
  491. package/out/zero-cache/src/services/replicator/notifier.js.map +0 -1
  492. package/out/zero-cache/src/services/replicator/replicator.d.ts +0 -56
  493. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +0 -1
  494. package/out/zero-cache/src/services/replicator/replicator.js +0 -27
  495. package/out/zero-cache/src/services/replicator/replicator.js.map +0 -1
  496. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +0 -35
  497. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +0 -1
  498. package/out/zero-cache/src/services/replicator/schema/change-log.js +0 -78
  499. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +0 -1
  500. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +0 -25
  501. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +0 -1
  502. package/out/zero-cache/src/services/replicator/schema/replication-state.js +0 -90
  503. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +0 -1
  504. package/out/zero-cache/src/services/runner.d.ts +0 -18
  505. package/out/zero-cache/src/services/runner.d.ts.map +0 -1
  506. package/out/zero-cache/src/services/runner.js +0 -45
  507. package/out/zero-cache/src/services/runner.js.map +0 -1
  508. package/out/zero-cache/src/services/running-state.d.ts +0 -56
  509. package/out/zero-cache/src/services/running-state.d.ts.map +0 -1
  510. package/out/zero-cache/src/services/running-state.js +0 -106
  511. package/out/zero-cache/src/services/running-state.js.map +0 -1
  512. package/out/zero-cache/src/services/service.d.ts +0 -37
  513. package/out/zero-cache/src/services/service.d.ts.map +0 -1
  514. package/out/zero-cache/src/services/service.js +0 -2
  515. package/out/zero-cache/src/services/service.js.map +0 -1
  516. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +0 -54
  517. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +0 -1
  518. package/out/zero-cache/src/services/view-syncer/client-handler.js +0 -195
  519. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +0 -1
  520. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +0 -44
  521. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +0 -1
  522. package/out/zero-cache/src/services/view-syncer/cvr-store.js +0 -386
  523. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +0 -1
  524. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +0 -146
  525. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +0 -1
  526. package/out/zero-cache/src/services/view-syncer/cvr.js +0 -446
  527. package/out/zero-cache/src/services/view-syncer/cvr.js.map +0 -1
  528. package/out/zero-cache/src/services/view-syncer/database-storage.d.ts +0 -22
  529. package/out/zero-cache/src/services/view-syncer/database-storage.d.ts.map +0 -1
  530. package/out/zero-cache/src/services/view-syncer/database-storage.js +0 -129
  531. package/out/zero-cache/src/services/view-syncer/database-storage.js.map +0 -1
  532. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +0 -108
  533. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +0 -1
  534. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +0 -300
  535. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +0 -1
  536. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +0 -54
  537. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +0 -1
  538. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +0 -181
  539. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +0 -1
  540. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts +0 -4
  541. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts.map +0 -1
  542. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js +0 -12
  543. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js.map +0 -1
  544. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +0 -783
  545. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +0 -1
  546. package/out/zero-cache/src/services/view-syncer/schema/types.js +0 -213
  547. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +0 -1
  548. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +0 -177
  549. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +0 -1
  550. package/out/zero-cache/src/services/view-syncer/snapshotter.js +0 -363
  551. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +0 -1
  552. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +0 -40
  553. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +0 -1
  554. package/out/zero-cache/src/services/view-syncer/view-syncer.js +0 -506
  555. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +0 -1
  556. package/out/zero-cache/src/types/bigint-json.d.ts +0 -26
  557. package/out/zero-cache/src/types/bigint-json.d.ts.map +0 -1
  558. package/out/zero-cache/src/types/bigint-json.js +0 -49
  559. package/out/zero-cache/src/types/bigint-json.js.map +0 -1
  560. package/out/zero-cache/src/types/error-for-client.d.ts +0 -7
  561. package/out/zero-cache/src/types/error-for-client.d.ts.map +0 -1
  562. package/out/zero-cache/src/types/error-for-client.js +0 -17
  563. package/out/zero-cache/src/types/error-for-client.js.map +0 -1
  564. package/out/zero-cache/src/types/lexi-version.d.ts +0 -29
  565. package/out/zero-cache/src/types/lexi-version.d.ts.map +0 -1
  566. package/out/zero-cache/src/types/lexi-version.js +0 -36
  567. package/out/zero-cache/src/types/lexi-version.js.map +0 -1
  568. package/out/zero-cache/src/types/lite.d.ts +0 -11
  569. package/out/zero-cache/src/types/lite.d.ts.map +0 -1
  570. package/out/zero-cache/src/types/lite.js +0 -26
  571. package/out/zero-cache/src/types/lite.js.map +0 -1
  572. package/out/zero-cache/src/types/names.d.ts +0 -5
  573. package/out/zero-cache/src/types/names.d.ts.map +0 -1
  574. package/out/zero-cache/src/types/names.js +0 -4
  575. package/out/zero-cache/src/types/names.js.map +0 -1
  576. package/out/zero-cache/src/types/pg.d.ts +0 -31
  577. package/out/zero-cache/src/types/pg.d.ts.map +0 -1
  578. package/out/zero-cache/src/types/pg.js +0 -60
  579. package/out/zero-cache/src/types/pg.js.map +0 -1
  580. package/out/zero-cache/src/types/processes.d.ts +0 -57
  581. package/out/zero-cache/src/types/processes.d.ts.map +0 -1
  582. package/out/zero-cache/src/types/processes.js +0 -115
  583. package/out/zero-cache/src/types/processes.js.map +0 -1
  584. package/out/zero-cache/src/types/row-key.d.ts +0 -37
  585. package/out/zero-cache/src/types/row-key.d.ts.map +0 -1
  586. package/out/zero-cache/src/types/row-key.js +0 -64
  587. package/out/zero-cache/src/types/row-key.js.map +0 -1
  588. package/out/zero-cache/src/types/satisfies.d.ts +0 -14
  589. package/out/zero-cache/src/types/satisfies.d.ts.map +0 -1
  590. package/out/zero-cache/src/types/satisfies.js +0 -2
  591. package/out/zero-cache/src/types/satisfies.js.map +0 -1
  592. package/out/zero-cache/src/types/schema-versions.d.ts +0 -8
  593. package/out/zero-cache/src/types/schema-versions.d.ts.map +0 -1
  594. package/out/zero-cache/src/types/schema-versions.js +0 -21
  595. package/out/zero-cache/src/types/schema-versions.js.map +0 -1
  596. package/out/zero-cache/src/types/specs.d.ts +0 -29
  597. package/out/zero-cache/src/types/specs.d.ts.map +0 -1
  598. package/out/zero-cache/src/types/specs.js +0 -2
  599. package/out/zero-cache/src/types/specs.js.map +0 -1
  600. package/out/zero-cache/src/types/sql.d.ts +0 -11
  601. package/out/zero-cache/src/types/sql.d.ts.map +0 -1
  602. package/out/zero-cache/src/types/sql.js +0 -15
  603. package/out/zero-cache/src/types/sql.js.map +0 -1
  604. package/out/zero-cache/src/types/streams.d.ts +0 -33
  605. package/out/zero-cache/src/types/streams.d.ts.map +0 -1
  606. package/out/zero-cache/src/types/streams.js +0 -141
  607. package/out/zero-cache/src/types/streams.js.map +0 -1
  608. package/out/zero-cache/src/types/subscription.d.ts +0 -158
  609. package/out/zero-cache/src/types/subscription.d.ts.map +0 -1
  610. package/out/zero-cache/src/types/subscription.js +0 -233
  611. package/out/zero-cache/src/types/subscription.js.map +0 -1
  612. package/out/zero-cache/src/types/timeout.d.ts +0 -11
  613. package/out/zero-cache/src/types/timeout.d.ts.map +0 -1
  614. package/out/zero-cache/src/types/timeout.js +0 -23
  615. package/out/zero-cache/src/types/timeout.js.map +0 -1
  616. package/out/zero-cache/src/types/url-params.d.ts +0 -10
  617. package/out/zero-cache/src/types/url-params.d.ts.map +0 -1
  618. package/out/zero-cache/src/types/url-params.js +0 -35
  619. package/out/zero-cache/src/types/url-params.js.map +0 -1
  620. package/out/zero-cache/src/workers/connection.d.ts +0 -25
  621. package/out/zero-cache/src/workers/connection.d.ts.map +0 -1
  622. package/out/zero-cache/src/workers/connection.js +0 -189
  623. package/out/zero-cache/src/workers/connection.js.map +0 -1
  624. package/out/zero-cache/src/workers/replicator.d.ts +0 -17
  625. package/out/zero-cache/src/workers/replicator.d.ts.map +0 -1
  626. package/out/zero-cache/src/workers/replicator.js +0 -77
  627. package/out/zero-cache/src/workers/replicator.js.map +0 -1
  628. package/out/zero-cache/src/workers/syncer.d.ts +0 -36
  629. package/out/zero-cache/src/workers/syncer.d.ts.map +0 -1
  630. package/out/zero-cache/src/workers/syncer.js +0 -104
  631. package/out/zero-cache/src/workers/syncer.js.map +0 -1
  632. package/out/zero-client/src/client/context.d.ts +0 -23
  633. package/out/zero-client/src/client/context.d.ts.map +0 -1
  634. package/out/zero-client/src/client/crud.d.ts +0 -52
  635. package/out/zero-client/src/client/crud.d.ts.map +0 -1
  636. package/out/zero-client/src/client/enable-analytics.d.ts +0 -3
  637. package/out/zero-client/src/client/enable-analytics.d.ts.map +0 -1
  638. package/out/zero-client/src/client/http-string.d.ts +0 -7
  639. package/out/zero-client/src/client/http-string.d.ts.map +0 -1
  640. package/out/zero-client/src/client/keys.d.ts +0 -11
  641. package/out/zero-client/src/client/keys.d.ts.map +0 -1
  642. package/out/zero-client/src/client/log-options.d.ts +0 -12
  643. package/out/zero-client/src/client/log-options.d.ts.map +0 -1
  644. package/out/zero-client/src/client/metrics.d.ts +0 -115
  645. package/out/zero-client/src/client/metrics.d.ts.map +0 -1
  646. package/out/zero-client/src/client/options.d.ts +0 -94
  647. package/out/zero-client/src/client/options.d.ts.map +0 -1
  648. package/out/zero-client/src/client/query-manager.d.ts +0 -18
  649. package/out/zero-client/src/client/query-manager.d.ts.map +0 -1
  650. package/out/zero-client/src/client/reload-error-handler.d.ts +0 -5
  651. package/out/zero-client/src/client/reload-error-handler.d.ts.map +0 -1
  652. package/out/zero-client/src/client/replicache-types.d.ts +0 -48
  653. package/out/zero-client/src/client/replicache-types.d.ts.map +0 -1
  654. package/out/zero-client/src/client/server-error.d.ts +0 -12
  655. package/out/zero-client/src/client/server-error.d.ts.map +0 -1
  656. package/out/zero-client/src/client/server-option.d.ts +0 -3
  657. package/out/zero-client/src/client/server-option.d.ts.map +0 -1
  658. package/out/zero-client/src/client/version.d.ts +0 -5
  659. package/out/zero-client/src/client/version.d.ts.map +0 -1
  660. package/out/zero-client/src/client/zero-poke-handler.d.ts +0 -28
  661. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +0 -1
  662. package/out/zero-client/src/client/zero.d.ts +0 -182
  663. package/out/zero-client/src/client/zero.d.ts.map +0 -1
  664. package/out/zero-client/src/mod.d.ts +0 -9
  665. package/out/zero-client/src/mod.d.ts.map +0 -1
  666. package/out/zero-client/src/util/nanoid.d.ts +0 -2
  667. package/out/zero-client/src/util/nanoid.d.ts.map +0 -1
  668. package/out/zero-client/src/util/socket.d.ts +0 -3
  669. package/out/zero-client/src/util/socket.d.ts.map +0 -1
  670. package/out/zero-protocol/src/ast.d.ts +0 -69
  671. package/out/zero-protocol/src/ast.d.ts.map +0 -1
  672. package/out/zero-protocol/src/ast.js +0 -64
  673. package/out/zero-protocol/src/ast.js.map +0 -1
  674. package/out/zero-protocol/src/change-desired-queries.d.ts +0 -71
  675. package/out/zero-protocol/src/change-desired-queries.d.ts.map +0 -1
  676. package/out/zero-protocol/src/change-desired-queries.js +0 -10
  677. package/out/zero-protocol/src/change-desired-queries.js.map +0 -1
  678. package/out/zero-protocol/src/clients-patch.d.ts +0 -37
  679. package/out/zero-protocol/src/clients-patch.d.ts.map +0 -1
  680. package/out/zero-protocol/src/clients-patch.js +0 -15
  681. package/out/zero-protocol/src/clients-patch.js.map +0 -1
  682. package/out/zero-protocol/src/connect.d.ts +0 -88
  683. package/out/zero-protocol/src/connect.d.ts.map +0 -1
  684. package/out/zero-protocol/src/connect.js +0 -25
  685. package/out/zero-protocol/src/connect.js.map +0 -1
  686. package/out/zero-protocol/src/delete-clients.d.ts +0 -11
  687. package/out/zero-protocol/src/delete-clients.d.ts.map +0 -1
  688. package/out/zero-protocol/src/delete-clients.js +0 -9
  689. package/out/zero-protocol/src/delete-clients.js.map +0 -1
  690. package/out/zero-protocol/src/down.d.ts +0 -114
  691. package/out/zero-protocol/src/down.d.ts.map +0 -1
  692. package/out/zero-protocol/src/down.js +0 -8
  693. package/out/zero-protocol/src/down.js.map +0 -1
  694. package/out/zero-protocol/src/entities-patch.d.ts +0 -66
  695. package/out/zero-protocol/src/entities-patch.d.ts.map +0 -1
  696. package/out/zero-protocol/src/entities-patch.js +0 -27
  697. package/out/zero-protocol/src/entities-patch.js.map +0 -1
  698. package/out/zero-protocol/src/entity.d.ts +0 -9
  699. package/out/zero-protocol/src/entity.d.ts.map +0 -1
  700. package/out/zero-protocol/src/entity.js +0 -8
  701. package/out/zero-protocol/src/entity.js.map +0 -1
  702. package/out/zero-protocol/src/error.d.ts +0 -21
  703. package/out/zero-protocol/src/error.d.ts.map +0 -1
  704. package/out/zero-protocol/src/error.js +0 -28
  705. package/out/zero-protocol/src/error.js.map +0 -1
  706. package/out/zero-protocol/src/mod.d.ts +0 -16
  707. package/out/zero-protocol/src/mod.d.ts.map +0 -1
  708. package/out/zero-protocol/src/mod.js +0 -16
  709. package/out/zero-protocol/src/mod.js.map +0 -1
  710. package/out/zero-protocol/src/ping.d.ts +0 -6
  711. package/out/zero-protocol/src/ping.d.ts.map +0 -1
  712. package/out/zero-protocol/src/ping.js +0 -4
  713. package/out/zero-protocol/src/ping.js.map +0 -1
  714. package/out/zero-protocol/src/poke.d.ts +0 -244
  715. package/out/zero-protocol/src/poke.d.ts.map +0 -1
  716. package/out/zero-protocol/src/poke.js +0 -73
  717. package/out/zero-protocol/src/poke.js.map +0 -1
  718. package/out/zero-protocol/src/pong.d.ts +0 -6
  719. package/out/zero-protocol/src/pong.d.ts.map +0 -1
  720. package/out/zero-protocol/src/pong.js +0 -4
  721. package/out/zero-protocol/src/pong.js.map +0 -1
  722. package/out/zero-protocol/src/pull.d.ts +0 -26
  723. package/out/zero-protocol/src/pull.d.ts.map +0 -1
  724. package/out/zero-protocol/src/pull.js +0 -24
  725. package/out/zero-protocol/src/pull.js.map +0 -1
  726. package/out/zero-protocol/src/push.d.ts +0 -257
  727. package/out/zero-protocol/src/push.d.ts.map +0 -1
  728. package/out/zero-protocol/src/push.js +0 -77
  729. package/out/zero-protocol/src/push.js.map +0 -1
  730. package/out/zero-protocol/src/queries-patch.d.ts +0 -103
  731. package/out/zero-protocol/src/queries-patch.d.ts.map +0 -1
  732. package/out/zero-protocol/src/queries-patch.js +0 -17
  733. package/out/zero-protocol/src/queries-patch.js.map +0 -1
  734. package/out/zero-protocol/src/up.d.ts +0 -116
  735. package/out/zero-protocol/src/up.d.ts.map +0 -1
  736. package/out/zero-protocol/src/up.js +0 -9
  737. package/out/zero-protocol/src/up.js.map +0 -1
  738. package/out/zero-protocol/src/version.d.ts +0 -6
  739. package/out/zero-protocol/src/version.d.ts.map +0 -1
  740. package/out/zero-protocol/src/version.js +0 -4
  741. package/out/zero-protocol/src/version.js.map +0 -1
  742. package/out/zero-react/src/mod.d.ts +0 -3
  743. package/out/zero-react/src/mod.d.ts.map +0 -1
  744. package/out/zero-react/src/use-query.d.ts +0 -3
  745. package/out/zero-react/src/use-query.d.ts.map +0 -1
  746. package/out/zero-react/src/use-zero.d.ts +0 -8
  747. package/out/zero-react/src/use-zero.d.ts.map +0 -1
  748. package/out/zero.js +0 -15868
  749. package/out/zero.js.map +0 -7
  750. package/out/zql/src/zql/ast/ast.d.ts +0 -84
  751. package/out/zql/src/zql/ast/ast.d.ts.map +0 -1
  752. package/out/zql/src/zql/ast/ast.js +0 -54
  753. package/out/zql/src/zql/ast/ast.js.map +0 -1
  754. package/out/zql/src/zql/builder/builder.d.ts +0 -56
  755. package/out/zql/src/zql/builder/builder.d.ts.map +0 -1
  756. package/out/zql/src/zql/builder/builder.js +0 -115
  757. package/out/zql/src/zql/builder/builder.js.map +0 -1
  758. package/out/zql/src/zql/builder/error.d.ts +0 -3
  759. package/out/zql/src/zql/builder/error.d.ts.map +0 -1
  760. package/out/zql/src/zql/builder/error.js +0 -3
  761. package/out/zql/src/zql/builder/error.js.map +0 -1
  762. package/out/zql/src/zql/builder/filter.d.ts +0 -6
  763. package/out/zql/src/zql/builder/filter.d.ts.map +0 -1
  764. package/out/zql/src/zql/builder/filter.js +0 -53
  765. package/out/zql/src/zql/builder/filter.js.map +0 -1
  766. package/out/zql/src/zql/builder/like.d.ts +0 -3
  767. package/out/zql/src/zql/builder/like.d.ts.map +0 -1
  768. package/out/zql/src/zql/builder/like.js +0 -60
  769. package/out/zql/src/zql/builder/like.js.map +0 -1
  770. package/out/zql/src/zql/ivm/array-view.d.ts +0 -42
  771. package/out/zql/src/zql/ivm/array-view.d.ts.map +0 -1
  772. package/out/zql/src/zql/ivm/change.d.ts +0 -44
  773. package/out/zql/src/zql/ivm/change.d.ts.map +0 -1
  774. package/out/zql/src/zql/ivm/change.js +0 -2
  775. package/out/zql/src/zql/ivm/change.js.map +0 -1
  776. package/out/zql/src/zql/ivm/data.d.ts +0 -72
  777. package/out/zql/src/zql/ivm/data.d.ts.map +0 -1
  778. package/out/zql/src/zql/ivm/data.js +0 -84
  779. package/out/zql/src/zql/ivm/data.js.map +0 -1
  780. package/out/zql/src/zql/ivm/filter.d.ts +0 -27
  781. package/out/zql/src/zql/ivm/filter.d.ts.map +0 -1
  782. package/out/zql/src/zql/ivm/filter.js +0 -60
  783. package/out/zql/src/zql/ivm/filter.js.map +0 -1
  784. package/out/zql/src/zql/ivm/join.d.ts +0 -37
  785. package/out/zql/src/zql/ivm/join.d.ts.map +0 -1
  786. package/out/zql/src/zql/ivm/join.js +0 -228
  787. package/out/zql/src/zql/ivm/join.js.map +0 -1
  788. package/out/zql/src/zql/ivm/lookahead-iterator.d.ts +0 -13
  789. package/out/zql/src/zql/ivm/lookahead-iterator.d.ts.map +0 -1
  790. package/out/zql/src/zql/ivm/lookahead-iterator.js +0 -45
  791. package/out/zql/src/zql/ivm/lookahead-iterator.js.map +0 -1
  792. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts +0 -10
  793. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts.map +0 -1
  794. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.js +0 -34
  795. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.js.map +0 -1
  796. package/out/zql/src/zql/ivm/memory-source.d.ts +0 -65
  797. package/out/zql/src/zql/ivm/memory-source.d.ts.map +0 -1
  798. package/out/zql/src/zql/ivm/memory-source.js +0 -508
  799. package/out/zql/src/zql/ivm/memory-source.js.map +0 -1
  800. package/out/zql/src/zql/ivm/memory-storage.d.ts +0 -18
  801. package/out/zql/src/zql/ivm/memory-storage.d.ts.map +0 -1
  802. package/out/zql/src/zql/ivm/operator.d.ts +0 -89
  803. package/out/zql/src/zql/ivm/operator.d.ts.map +0 -1
  804. package/out/zql/src/zql/ivm/operator.js +0 -2
  805. package/out/zql/src/zql/ivm/operator.js.map +0 -1
  806. package/out/zql/src/zql/ivm/schema.d.ts +0 -29
  807. package/out/zql/src/zql/ivm/schema.d.ts.map +0 -1
  808. package/out/zql/src/zql/ivm/schema.js +0 -3
  809. package/out/zql/src/zql/ivm/schema.js.map +0 -1
  810. package/out/zql/src/zql/ivm/skip.d.ts +0 -24
  811. package/out/zql/src/zql/ivm/skip.d.ts.map +0 -1
  812. package/out/zql/src/zql/ivm/skip.js +0 -113
  813. package/out/zql/src/zql/ivm/skip.js.map +0 -1
  814. package/out/zql/src/zql/ivm/source.d.ts +0 -57
  815. package/out/zql/src/zql/ivm/source.d.ts.map +0 -1
  816. package/out/zql/src/zql/ivm/source.js +0 -2
  817. package/out/zql/src/zql/ivm/source.js.map +0 -1
  818. package/out/zql/src/zql/ivm/stream.d.ts +0 -11
  819. package/out/zql/src/zql/ivm/stream.d.ts.map +0 -1
  820. package/out/zql/src/zql/ivm/stream.js +0 -19
  821. package/out/zql/src/zql/ivm/stream.js.map +0 -1
  822. package/out/zql/src/zql/ivm/take.d.ts +0 -24
  823. package/out/zql/src/zql/ivm/take.d.ts.map +0 -1
  824. package/out/zql/src/zql/ivm/take.js +0 -453
  825. package/out/zql/src/zql/ivm/take.js.map +0 -1
  826. package/out/zql/src/zql/query/query-impl.d.ts +0 -48
  827. package/out/zql/src/zql/query/query-impl.d.ts.map +0 -1
  828. package/out/zql/src/zql/query/query.d.ts +0 -131
  829. package/out/zql/src/zql/query/query.d.ts.map +0 -1
  830. package/out/zql/src/zql/query/schema.d.ts +0 -53
  831. package/out/zql/src/zql/query/schema.d.ts.map +0 -1
  832. package/out/zql/src/zql/query/typed-view.d.ts +0 -10
  833. package/out/zql/src/zql/query/typed-view.d.ts.map +0 -1
  834. package/out/zqlite/src/db.d.ts +0 -23
  835. package/out/zqlite/src/db.d.ts.map +0 -1
  836. package/out/zqlite/src/db.js +0 -117
  837. package/out/zqlite/src/db.js.map +0 -1
  838. package/out/zqlite/src/internal/sql.d.ts +0 -9
  839. package/out/zqlite/src/internal/sql.d.ts.map +0 -1
  840. package/out/zqlite/src/internal/sql.js +0 -14
  841. package/out/zqlite/src/internal/sql.js.map +0 -1
  842. package/out/zqlite/src/internal/statement-cache.d.ts +0 -67
  843. package/out/zqlite/src/internal/statement-cache.d.ts.map +0 -1
  844. package/out/zqlite/src/internal/statement-cache.js +0 -119
  845. package/out/zqlite/src/internal/statement-cache.js.map +0 -1
  846. package/out/zqlite/src/table-source.d.ts +0 -43
  847. package/out/zqlite/src/table-source.d.ts.map +0 -1
  848. package/out/zqlite/src/table-source.js +0 -393
  849. package/out/zqlite/src/table-source.js.map +0 -1
@@ -1,212 +0,0 @@
1
- import { LogContext } from '@rocicorp/logger';
2
- import { oneAfter } from '../../types/lexi-version.js';
3
- import { Subscription } from '../../types/subscription.js';
4
- import { RunningState } from '../running-state.js';
5
- import { ErrorType, } from './change-streamer.js';
6
- import { Forwarder } from './forwarder.js';
7
- import { initChangeStreamerSchema } from './schema/init.js';
8
- import { ensureReplicationConfig, } from './schema/tables.js';
9
- import { Storer } from './storer.js';
10
- import { Subscriber } from './subscriber.js';
11
- /**
12
- * Performs initialization and schema migrations to initialize a ChangeStreamerImpl.
13
- */
14
- export async function initializeStreamer(lc, changeDB, changeSource, replicationConfig) {
15
- // Make sure the ChangeLog DB is set up.
16
- await initChangeStreamerSchema(lc, changeDB);
17
- await ensureReplicationConfig(lc, changeDB, replicationConfig);
18
- const { replicaVersion } = replicationConfig;
19
- return new ChangeStreamerImpl(lc, changeDB, replicaVersion, changeSource);
20
- }
21
- /**
22
- * Upstream-agnostic dispatch of messages in a {@link ChangeStream} to a
23
- * {@link Forwarder} and {@link Storer} to execute the forward-store-ack
24
- * procedure described in {@link ChangeStreamer}.
25
- *
26
- * ### Subscriber Catchup
27
- *
28
- * Connecting clients first need to be "caught up" to the current watermark
29
- * (from stored change log entries) before new entries are forwarded to
30
- * them. This is non-trivial because the replication stream may be in the
31
- * middle of a pending streamed Transaction for which some entries have
32
- * already been forwarded but are not yet committed to the store.
33
- *
34
- *
35
- * ```
36
- * ------------------------------- - - - - - - - - - - - - - - - - - - -
37
- * | Historic changes in storage | Pending (streamed) tx | Next tx
38
- * ------------------------------- - - - - - - - - - - - - - - - - - - -
39
- * Replication stream
40
- * > > > > > > > > >
41
- * ^ ---> required catchup ---> ^
42
- * Subscriber watermark Subscription begins
43
- * ```
44
- *
45
- * Preemptively buffering the changes of every pending transaction
46
- * would be wasteful and consume too much memory for large transactions.
47
- *
48
- * Instead, the streamer synchronously dispatches changes and subscriptions
49
- * to the {@link Forwarder} and the {@link Storer} such that the two
50
- * components are aligned as to where in the stream the subscription started.
51
- * The two components then coordinate catchup and handoff via the
52
- * {@link Subscriber} object with the following algorithm:
53
- *
54
- * * If the streamer is in the middle of a pending Transaction, the
55
- * Subscriber is "queued" on both the Forwarder and the Storer. In this
56
- * state, new changes are *not* forwarded to the Subscriber, and catchup
57
- * is not yet executed.
58
- * * Once the commit message for the pending Transaction is processed
59
- * by the Storer, it begins catchup on the Subscriber (with a READONLY
60
- * snapshot so that it does not block subsequent storage operations).
61
- * This catchup is thus guaranteed to load the change log entries of
62
- * that last Transaction.
63
- * * When the Forwarder processes that same commit message, it moves the
64
- * Subscriber from the "queued" to the "active" set of clients such that
65
- * the Subscriber begins receiving new changes, starting from the next
66
- * Transaction.
67
- * * The Subscriber does not forward those changes, however, if its catchup
68
- * is not complete. Until then, it buffers the changes in memory.
69
- * * Once catchup is complete, the buffered changes are immediately sent
70
- * and the Subscriber henceforth forwards changes as they are received.
71
- *
72
- * In the (common) case where the streamer is not in the middle of a pending
73
- * transaction when a subscription begins, the Storer begins catchup
74
- * immediately and the Forwarder directly adds the Subscriber to its active
75
- * set. However, the Subscriber still buffers any forwarded messages until
76
- * its catchup is complete.
77
- *
78
- * ### Watermarks and ordering
79
- *
80
- * The ChangeStreamerService depends on its {@link ChangeSource} to send
81
- * changes in contiguous [`begin`, `data` ..., `data`, `commit`] sequences
82
- * in commit order. This follows Postgres's Logical Replication Protocol
83
- * Message Flow:
84
- *
85
- * https://www.postgresql.org/docs/16/protocol-logical-replication.html#PROTOCOL-LOGICAL-MESSAGES-FLOW
86
- *
87
- * > The logical replication protocol sends individual transactions one by one.
88
- * > This means that all messages between a pair of Begin and Commit messages belong to the same transaction.
89
- *
90
- * In order to correctly replay (new) and filter (old) messages to subscribers
91
- * at different points in the replication stream, these changes must be assigned
92
- * watermarks such that they preserve the order in which they were received
93
- * from the ChangeSource.
94
- *
95
- * A previous implementation incorrectly derived these watermarks from the Postgres
96
- * Log Sequence Numbers (LSN) of each message. However, LSNs from concurrent,
97
- * non-conflicting transactions can overlap, which can result in a `begin` message
98
- * with an earlier LSN arriving after a `commit` message. For example, the
99
- * changes for these transactions:
100
- *
101
- * ```
102
- * LSN: 1 2 3 4 5 6 7 8 9 10
103
- * tx1: begin data data data commit
104
- * tx2: begin data data data commit
105
- * ```
106
- *
107
- * will arrive as:
108
- *
109
- * ```
110
- * begin1, data2, data4, data6, commit8, begin3, data5, data7, data9, commit10
111
- * ```
112
- *
113
- * Thus, LSN of non-commit messages are not suitable for tracking the sorting
114
- * order of the replication stream.
115
- *
116
- * Instead, the ChangeStreamer uses the following algorithm for deterministic
117
- * catchup and filtering of changes:
118
- *
119
- * * A `commit` message is assigned to a watermark corresponding to its LSN.
120
- * These are guaranteed to be in commit order by definition.
121
- *
122
- * * `begin` and `data` messages are assigned to the watermark of the
123
- * preceding `commit` (the previous transaction, or the replication
124
- * slot's starting LSN) plus 1. This guarantees that they will be sorted
125
- * after the previously commit transaction even if their LSNs came before it.
126
- * This is referred to as the `preCommitWatermark`.
127
- *
128
- * * In the ChangeLog DB, messages have a secondary sort column `pos`, which is
129
- * the position of the message within its transaction, with the `begin` message
130
- * starting at `0`. This guarantees that `begin` and `data` messages will be
131
- * fetched in the original ChangeSource order during catchup.
132
- *
133
- * `begin` and `data` messages share the same watermark, but this is sufficient for
134
- * Subscriber filtering because subscribers only know about the `commit` watermarks
135
- * exposed in the `Downstream` `Commit` message. The Subscriber object thus compares
136
- * the internal watermarks of the incoming messages against the commit watermark of
137
- * the caller, updating the watermark at every `Commit` message that is forwarded.
138
- */
139
- class ChangeStreamerImpl {
140
- id;
141
- #lc;
142
- #replicaVersion;
143
- #source;
144
- #storer;
145
- #forwarder;
146
- #state = new RunningState('ChangeStreamer');
147
- #stream;
148
- constructor(lc, changeDB, replicaVersion, source) {
149
- this.id = `change-streamer`;
150
- this.#lc = lc.withContext('component', 'change-streamer');
151
- this.#replicaVersion = replicaVersion;
152
- this.#source = source;
153
- this.#storer = new Storer(lc, changeDB, commit => this.#stream?.acks.push(commit));
154
- this.#forwarder = new Forwarder();
155
- }
156
- async run() {
157
- this.#storer.run().catch(e => this.stop(e));
158
- while (this.#state.shouldRun()) {
159
- let err;
160
- try {
161
- const startAfter = await this.#storer.getLastStoredWatermark();
162
- const stream = await this.#source.startStream(startAfter ?? this.#replicaVersion);
163
- this.#stream = stream;
164
- let preCommitWatermark = stream.initialWatermark;
165
- for await (const change of stream.changes) {
166
- this.#state.resetBackoff();
167
- let watermark;
168
- if (change[0] !== 'commit') {
169
- watermark = preCommitWatermark;
170
- }
171
- else {
172
- watermark = change[2].watermark;
173
- preCommitWatermark = oneAfter(watermark); // For the next transaction.
174
- }
175
- this.#storer.store([watermark, change]);
176
- this.#forwarder.forward([watermark, change]);
177
- }
178
- }
179
- catch (e) {
180
- err = e;
181
- }
182
- finally {
183
- this.#stream?.changes.cancel();
184
- this.#stream = undefined;
185
- }
186
- await this.#state.backoff(this.#lc, err);
187
- }
188
- this.#lc.info?.('ChangeStreamer stopped');
189
- }
190
- subscribe(ctx) {
191
- const { id, watermark } = ctx;
192
- const downstream = Subscription.create({
193
- cleanup: () => this.#forwarder.remove(subscriber),
194
- });
195
- const subscriber = new Subscriber(id, watermark, downstream);
196
- if (ctx.replicaVersion !== this.#replicaVersion) {
197
- subscriber.close(ErrorType.WrongReplicaVersion);
198
- }
199
- else {
200
- this.#lc.debug?.(`adding subscriber ${subscriber.id}`);
201
- this.#forwarder.add(subscriber);
202
- this.#storer.catchup(subscriber);
203
- }
204
- return downstream;
205
- }
206
- async stop(err) {
207
- this.#state.stop(this.#lc, err);
208
- this.#stream?.changes.cancel();
209
- await this.#storer.stop();
210
- }
211
- }
212
- //# sourceMappingURL=change-streamer-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"change-streamer-service.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-service.ts"],"names":[],"mappings":"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"}
@@ -1,110 +0,0 @@
1
- import type { Source } from '../../types/streams.js';
2
- import type { Service } from '../service.js';
3
- import type { Change, DataChange, MessageBegin, MessageCommit } from './schema/change.js';
4
- /**
5
- * The ChangeStreamer is the component between replicators ("subscribers")
6
- * and a canonical upstream source of changes (e.g. a Postgres logical
7
- * replication slot). It facilitates multiple subscribers without incurring
8
- * the associated upstream expense (e.g. PG replication slots are resource
9
- * intensive) with a "forward-store-ack" procedure.
10
- *
11
- * * Changes from the upstream source are immediately **forwarded** to
12
- * connected subscribers to minimize latency.
13
- *
14
- * * They are then **stored** in a separate DB to facilitate catchup
15
- * of connecting subscribers that are behind.
16
- *
17
- * * **Acknowledgements** are sent upstream after they are successfully
18
- * stored.
19
- *
20
- * **Cleanup** (Not yet implemented)
21
- *
22
- * Unlike Postgres replication slots, in which the progress of a static
23
- * subscriber is tracked in the replication slot, the ChangeStreamer
24
- * supports a dynamic set of subscribers (i.e.. zero-caches) that can
25
- * can continually change.
26
- *
27
- * However, it is not the case that the ChangeStreamer needs to support
28
- * arbitrarily old subscribers. Because the replica is continually
29
- * backed up to a global location and used to initialize new subscriber
30
- * tasks, an initial subscription request from a subscriber constitutes
31
- * a signal for how "behind" a new subscriber task can be. This is
32
- * reflected in the {@link SubscriberContext}, which indicates whether
33
- * the watermark corresponds to an "initial" watermark derived from the
34
- * replica at task startup.
35
- *
36
- * The ChangeStreamer uses a combination of this signal with ACK
37
- * responses from connected subscribers to determine the watermark up
38
- * to which it is safe to purge old change log entries.
39
- */
40
- export interface ChangeStreamer {
41
- /**
42
- * Subscribes to changes based on the supplied subscriber `ctx`,
43
- * which indicates the watermark at which the subscriber is up to
44
- * date.
45
- */
46
- subscribe(ctx: SubscriberContext): Source<Downstream>;
47
- }
48
- export type SubscriberContext = {
49
- /**
50
- * Subscriber id. This is only used for debugging.
51
- */
52
- id: string;
53
- /**
54
- * The ChangeStreamer will return an Error if the subscriber is
55
- * on a different replica version (i.e. the initial snapshot associated
56
- * with the replication slot).
57
- */
58
- replicaVersion: string;
59
- /**
60
- * The watermark up to which the subscriber is up to date.
61
- * Only changes after the watermark will be streamed.
62
- */
63
- watermark: string;
64
- /**
65
- * Whether this is the first subscription request made by the task,
66
- * i.e. indicating that the watermark comes from a restored replica
67
- * backup. The ChangeStreamer uses this to determine which changes
68
- * are safe to purge from the Storer.
69
- */
70
- initial: boolean;
71
- };
72
- export type ChangeEntry = {
73
- change: Change;
74
- /**
75
- * Note that it is technically possible for multiple changes to have
76
- * the same watermark, but that of a commit is guaranteed to be final,
77
- * so subscribers should only store the watermark of commit changes.
78
- */
79
- watermark: string;
80
- };
81
- export declare const enum ErrorType {
82
- Unknown = 0,
83
- WrongReplicaVersion = 1,
84
- WatermarkTooOld = 2
85
- }
86
- export type SubscriptionError = {
87
- type: ErrorType;
88
- message?: string | undefined;
89
- };
90
- export type Begin = ['begin', MessageBegin];
91
- export type Data = ['data', DataChange];
92
- export type Commit = ['commit', MessageCommit, {
93
- watermark: string;
94
- }];
95
- export type Error = ['error', SubscriptionError];
96
- export type DownstreamChange = Begin | Data | Commit;
97
- /**
98
- * A stream of transactions, each starting with a {@link MessageBegin},
99
- * containing one or more {@link DataChange}s, and ending with a
100
- * {@link MessageCommit}. The 'commit' tuple includes a `watermark` that
101
- * should be stored with the committed data and used for resuming
102
- * a subscription (e.g. in the {@link SubscriberContext}).
103
- *
104
- * A {@link SubscriptionError} indicates an unrecoverable error that requires
105
- * manual intervention (e.g. configuration / operational error).
106
- */
107
- export type Downstream = DownstreamChange | Error;
108
- export interface ChangeStreamerService extends ChangeStreamer, Service {
109
- }
110
- //# sourceMappingURL=change-streamer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"change-streamer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EACV,YAAY,EACZ,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IAEH,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;CACvD;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,0BAAkB,SAAS;IACzB,OAAO,IAAA;IACP,mBAAmB,IAAA;IACnB,eAAe,IAAA;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC5C,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACxC,MAAM,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AACpE,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,KAAK,CAAC;AAElD,MAAM,WAAW,qBAAsB,SAAQ,cAAc,EAAE,OAAO;CAAG"}
@@ -1,7 +0,0 @@
1
- export var ErrorType;
2
- (function (ErrorType) {
3
- ErrorType[ErrorType["Unknown"] = 0] = "Unknown";
4
- ErrorType[ErrorType["WrongReplicaVersion"] = 1] = "WrongReplicaVersion";
5
- ErrorType[ErrorType["WatermarkTooOld"] = 2] = "WatermarkTooOld";
6
- })(ErrorType || (ErrorType = {}));
7
- //# sourceMappingURL=change-streamer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"change-streamer.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer.ts"],"names":[],"mappings":"AA8FA,MAAM,CAAN,IAAkB,SAIjB;AAJD,WAAkB,SAAS;IACzB,+CAAO,CAAA;IACP,uEAAmB,CAAA;IACnB,+DAAe,CAAA;AACjB,CAAC,EAJiB,SAAS,KAAT,SAAS,QAI1B"}
@@ -1,19 +0,0 @@
1
- import type { WatermarkedChange } from './change-streamer-service.js';
2
- import { Subscriber } from './subscriber.js';
3
- export declare class Forwarder {
4
- #private;
5
- /**
6
- * `add()` is called in lock step with `Storer.catchup()` so that the
7
- * two components have an equivalent interpretation of whether a Transaction is
8
- * currently being streamed.
9
- */
10
- add(sub: Subscriber): void;
11
- remove(sub: Subscriber): void;
12
- /**
13
- * `forward()` is called in lockstep with `Storer.store()` so that the
14
- * two components have an equivalent interpretation of whether a Transaction is
15
- * currently being streamed.
16
- */
17
- forward(entry: WatermarkedChange): void;
18
- }
19
- //# sourceMappingURL=forwarder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"forwarder.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/forwarder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAE3C,qBAAa,SAAS;;IAKpB;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,UAAU;IAQnB,MAAM,CAAC,GAAG,EAAE,UAAU;IAMtB;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,iBAAiB;CA0BjC"}
@@ -1,56 +0,0 @@
1
- import { Subscriber } from './subscriber.js';
2
- export class Forwarder {
3
- #active = new Set();
4
- #queued = new Set();
5
- #inTransaction = false;
6
- /**
7
- * `add()` is called in lock step with `Storer.catchup()` so that the
8
- * two components have an equivalent interpretation of whether a Transaction is
9
- * currently being streamed.
10
- */
11
- add(sub) {
12
- if (this.#inTransaction) {
13
- this.#queued.add(sub);
14
- }
15
- else {
16
- this.#active.add(sub);
17
- }
18
- }
19
- remove(sub) {
20
- this.#active.delete(sub);
21
- this.#queued.delete(sub);
22
- sub.close();
23
- }
24
- /**
25
- * `forward()` is called in lockstep with `Storer.store()` so that the
26
- * two components have an equivalent interpretation of whether a Transaction is
27
- * currently being streamed.
28
- */
29
- forward(entry) {
30
- const [type] = entry[1];
31
- for (const active of this.#active.values()) {
32
- active.send(entry);
33
- }
34
- switch (type) {
35
- case 'begin':
36
- // While in a Transaction, all added subscribers are "queued" so that no
37
- // messages are forwarded to them. This state corresponds to being queued
38
- // for catchup in the Storer, which will retrieve historic changes
39
- // and call catchup() once the current transaction is committed.
40
- this.#inTransaction = true;
41
- break;
42
- case 'commit':
43
- // Upon commit, all queued subscribers are transferred to the active set.
44
- // This means that they can receive messages starting from the next transaction.
45
- // Note that if catchup is still in progress (in the Storer), these messages
46
- // will be buffered in the backlog until catchup completes.
47
- this.#inTransaction = false;
48
- for (const sub of this.#queued.values()) {
49
- this.#active.add(sub);
50
- }
51
- this.#queued.clear();
52
- break;
53
- }
54
- }
55
- }
56
- //# sourceMappingURL=forwarder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"forwarder.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/forwarder.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAE3C,MAAM,OAAO,SAAS;IACX,OAAO,GAAG,IAAI,GAAG,EAAc,CAAC;IAChC,OAAO,GAAG,IAAI,GAAG,EAAc,CAAC;IACzC,cAAc,GAAG,KAAK,CAAC;IAEvB;;;;OAIG;IACH,GAAG,CAAC,GAAe;QACjB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAe;QACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,GAAG,CAAC,KAAK,EAAE,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAwB;QAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,wEAAwE;gBACxE,yEAAyE;gBACzE,kEAAkE;gBAClE,gEAAgE;gBAChE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,MAAM;YACR,KAAK,QAAQ;gBACX,yEAAyE;gBACzE,gFAAgF;gBAChF,4EAA4E;gBAC5E,2DAA2D;gBAC3D,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;gBAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;oBACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM;QACV,CAAC;IACH,CAAC;CACF"}
@@ -1,14 +0,0 @@
1
- import { LogContext } from '@rocicorp/logger';
2
- import type { ChangeSource } from '../change-streamer-service.js';
3
- import type { ReplicationConfig } from '../schema/tables.js';
4
- import type { ShardConfig } from './shard-config.js';
5
- /**
6
- * Initializes a Postgres change source, including the initial sync of the
7
- * replica, before streaming changes from the corresponding logical replication
8
- * stream.
9
- */
10
- export declare function initializeChangeSource(lc: LogContext, upstreamURI: string, shard: ShardConfig, replicaDbFile: string): Promise<{
11
- replicationConfig: ReplicationConfig;
12
- changeSource: ChangeSource;
13
- }>;
14
- //# sourceMappingURL=change-source.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"change-source.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/pg/change-source.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAsB5C,OAAO,KAAK,EAAC,YAAY,EAAe,MAAM,+BAA+B,CAAC;AAG9E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAI3D,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAMnD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,UAAU,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAC,CAAC,CAkC7E"}
@@ -1,211 +0,0 @@
1
- import { PG_ADMIN_SHUTDOWN } from '@drdgvhbh/postgres-error-codes';
2
- import { LogContext } from '@rocicorp/logger';
3
- import { resolver } from '@rocicorp/resolver';
4
- import { LogicalReplicationService, Pgoutput, PgoutputPlugin, } from 'pg-logical-replication';
5
- import { DatabaseError } from 'pg-protocol';
6
- import { AbortError } from '../../../../../shared/src/abort-error.js';
7
- import { deepEqual } from '../../../../../shared/src/json.js';
8
- import { sleep } from '../../../../../shared/src/sleep.js';
9
- import { StatementRunner } from '../../../db/statements.js';
10
- import { stringify } from '../../../types/bigint-json.js';
11
- import { max, oneAfter } from '../../../types/lexi-version.js';
12
- import { pgClient, registerPostgresTypeParsers, } from '../../../types/pg.js';
13
- import { Subscription } from '../../../types/subscription.js';
14
- import { Database } from '../../../../../zqlite/src/db.js';
15
- import { getSubscriptionState } from '../../replicator/schema/replication-state.js';
16
- import { replicationSlot } from './initial-sync.js';
17
- import { fromLexiVersion, toLexiVersion } from './lsn.js';
18
- import { INTERNAL_PUBLICATION_PREFIX } from './schema/zero.js';
19
- import { initSyncSchema } from './sync-schema.js';
20
- // BigInt support from LogicalReplicationService.
21
- registerPostgresTypeParsers();
22
- /**
23
- * Initializes a Postgres change source, including the initial sync of the
24
- * replica, before streaming changes from the corresponding logical replication
25
- * stream.
26
- */
27
- export async function initializeChangeSource(lc, upstreamURI, shard, replicaDbFile) {
28
- await initSyncSchema(lc, 'change-streamer', shard, replicaDbFile, upstreamURI);
29
- const replica = new Database(lc, replicaDbFile);
30
- const replicationConfig = getSubscriptionState(new StatementRunner(replica));
31
- replica.close();
32
- if (shard.publications.length) {
33
- // Verify that the publications match what has been synced.
34
- const requested = [...shard.publications].sort();
35
- const replicated = replicationConfig.publications
36
- .filter(p => !p.startsWith(INTERNAL_PUBLICATION_PREFIX))
37
- .sort();
38
- if (!deepEqual(requested, replicated)) {
39
- throw new Error(`Invalid ShardConfig. Requested publications [${requested}] do not match synced publications: [${replicated}]`);
40
- }
41
- }
42
- const changeSource = new PostgresChangeSource(lc, upstreamURI, shard.id, replicationConfig);
43
- return { replicationConfig, changeSource };
44
- }
45
- /**
46
- * Postgres implementation of a {@link ChangeSource} backed by a logical
47
- * replication stream.
48
- */
49
- class PostgresChangeSource {
50
- #lc;
51
- #upstreamUri;
52
- #shardID;
53
- #replicationConfig;
54
- constructor(lc, upstreamUri, shardID, replicationConfig) {
55
- this.#lc = lc.withContext('component', 'change-source');
56
- this.#upstreamUri = upstreamUri;
57
- this.#shardID = shardID;
58
- this.#replicationConfig = replicationConfig;
59
- }
60
- async startStream(clientWatermark) {
61
- const db = pgClient(this.#lc, this.#upstreamUri);
62
- const slot = replicationSlot(this.#shardID);
63
- const clientStart = oneAfter(clientWatermark);
64
- try {
65
- let lastLSN = '0/0';
66
- const ack = (commit) => {
67
- if (commit) {
68
- const { watermark } = commit[2];
69
- lastLSN = fromLexiVersion(watermark);
70
- }
71
- void service.acknowledge(lastLSN);
72
- };
73
- const changes = Subscription.create({
74
- cleanup: () => service.stop(),
75
- });
76
- // To avoid a race condition when handing off the replication stream
77
- // between tasks, query the `confirmed_flush_lsn` for the replication
78
- // slot only after the replication stream starts, as that is when it
79
- // is guaranteed not to change (i.e. until we ACK a commit).
80
- const { promise: nextWatermark, resolve, reject } = resolver();
81
- const service = new LogicalReplicationService({ connectionString: this.#upstreamUri }, { acknowledge: { auto: false, timeoutSeconds: 0 } })
82
- .on('start', () => this.getNextWatermark(db, slot, clientStart)
83
- .then(resolve)
84
- .catch(e => reject(translateError(e))))
85
- .on('heartbeat', (_lsn, _time, respond) => {
86
- respond && ack();
87
- })
88
- .on('data', (lsn, msg) => {
89
- const change = messageToDownstream(lsn, msg);
90
- if (change) {
91
- changes.push(change);
92
- }
93
- })
94
- .on('error', err => {
95
- this.#lc.error?.('error from upstream postgres', err);
96
- changes.fail(err);
97
- });
98
- await this.stopExistingReplicationSlotSubscriber(db, slot);
99
- this.#lc.info?.(`starting replication stream @${slot}`);
100
- service
101
- .subscribe(new PgoutputPlugin({
102
- protoVersion: 1,
103
- publicationNames: this.#replicationConfig.publications,
104
- }), slot, fromLexiVersion(clientStart))
105
- .catch(e => {
106
- const err = translateError(e);
107
- reject(err);
108
- changes.fail(err);
109
- })
110
- .finally(() => changes.cancel());
111
- const initialWatermark = await nextWatermark;
112
- this.#lc.info?.(`replication stream@${slot} started at ${initialWatermark}`);
113
- return { initialWatermark, changes, acks: { push: ack } };
114
- }
115
- finally {
116
- await db.end();
117
- }
118
- }
119
- async stopExistingReplicationSlotSubscriber(db, slot) {
120
- const result = await db `
121
- SELECT pg_terminate_backend(active_pid), active_pid as pid
122
- FROM pg_replication_slots WHERE slot_name = ${slot} and active = true`;
123
- if (result.length === 0) {
124
- this.#lc.debug?.(`no existing subscriber to replication slot`);
125
- }
126
- else {
127
- const { pid } = result[0];
128
- this.#lc.info?.(`signaled subscriber ${pid} to shut down`);
129
- // This reduces flakiness in which unit tests often fail with
130
- // an error when starting the replication stream:
131
- //
132
- // error: replication slot "zero_slot_change_source_test_id" is active for PID 268
133
- //
134
- // Presumably, waiting for small interval before connecting to Postgres
135
- // would also reduce this occurrence in production.
136
- await sleep(5);
137
- }
138
- }
139
- // Sometimes the `confirmed_flush_lsn` gets wiped, e.g.
140
- //
141
- // ```
142
- // slot_name | restart_lsn | confirmed_flush_lsn
143
- // -----------+-------------+---------------------
144
- // zero_slot | 8F/38ACB2F8 | 0/1
145
- // ```
146
- //
147
- // Using the greatest of three values should always yield a correct result:
148
- // * `clientWatermark` : ahead of `confirmed_flush_lsn` if an ACK was lost,
149
- // or if the `confirmed_flush_lsn` was wiped.
150
- // * `confirmed_flush_lsn`: ahead of the `clientWatermark` if the ChangeDB was wiped.
151
- // * `restart_lsn` : if both the `confirmed_flush_lsn` and ChangeDB were wiped.
152
- async getNextWatermark(db, slot, clientStart) {
153
- const result = await db `
154
- SELECT restart_lsn as restart, confirmed_flush_lsn as confirmed FROM pg_replication_slots
155
- WHERE slot_name = ${slot}`;
156
- if (result.length === 0) {
157
- throw new Error(`Upstream is missing replication slot ${slot}`);
158
- }
159
- const { restart, confirmed } = result[0];
160
- const confirmedWatermark = toLexiVersion(confirmed);
161
- const restartWatermark = toLexiVersion(restart);
162
- this.#lc.info?.(`confirmed_flush_lsn:${confirmed}, restart_lsn:${restart}, clientWatermark:${fromLexiVersion(clientStart)}`);
163
- return max(oneAfter(confirmedWatermark), oneAfter(restartWatermark), clientStart);
164
- }
165
- }
166
- function messageToDownstream(lsn, msg) {
167
- const change = msg;
168
- const { tag } = change;
169
- switch (tag) {
170
- case 'begin':
171
- return ['begin', change];
172
- case 'insert':
173
- case 'update':
174
- case 'delete':
175
- case 'truncate':
176
- return ['data', change];
177
- case 'commit': {
178
- const watermark = toLexiVersion(lsn);
179
- return ['commit', change, { watermark }];
180
- }
181
- default:
182
- change; // All Change types are covered.
183
- // But we can technically receive other Message types.
184
- switch (msg.tag) {
185
- case 'relation':
186
- return undefined; // Explicitly ignored. Schema handling is TODO.
187
- case 'type':
188
- throw new Error(`Custom types are not supported (received "${msg.typeName}")`);
189
- case 'origin':
190
- // We do not set the `origin` option in the pgoutput parameters:
191
- // https://www.postgresql.org/docs/current/protocol-logical-replication.html#PROTOCOL-LOGICAL-REPLICATION-PARAMS
192
- throw new Error(`Unexpected ORIGIN message ${stringify(msg)}`);
193
- case 'message':
194
- // We do not set the `messages` option in the pgoutput parameters:
195
- // https://www.postgresql.org/docs/current/protocol-logical-replication.html#PROTOCOL-LOGICAL-REPLICATION-PARAMS
196
- throw new Error(`Unexpected MESSAGE message ${stringify(msg)}`);
197
- default:
198
- throw new Error(`Unexpected message type ${stringify(msg)}`);
199
- }
200
- }
201
- }
202
- function translateError(e) {
203
- if (!(e instanceof Error)) {
204
- return new Error(String(e));
205
- }
206
- if (e instanceof DatabaseError && e.code === PG_ADMIN_SHUTDOWN) {
207
- return new AbortError(e.message, { cause: e });
208
- }
209
- return e;
210
- }
211
- //# sourceMappingURL=change-source.js.map