@rocicorp/zero 0.25.0-canary.6 → 0.25.0-canary.8

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 (1367) hide show
  1. package/out/analyze-query/src/bin-analyze.js +258 -236
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/analyze-query/src/bin-transform.js +31 -23
  4. package/out/analyze-query/src/bin-transform.js.map +1 -1
  5. package/out/analyze-query/src/explain-queries.js +13 -16
  6. package/out/analyze-query/src/explain-queries.js.map +1 -1
  7. package/out/analyze-query/src/run-ast.d.ts +3 -2
  8. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  9. package/out/analyze-query/src/run-ast.js +79 -73
  10. package/out/analyze-query/src/run-ast.js.map +1 -1
  11. package/out/ast-to-zql/src/ast-to-zql.js +146 -180
  12. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  13. package/out/ast-to-zql/src/bin.js +51 -54
  14. package/out/ast-to-zql/src/bin.js.map +1 -1
  15. package/out/ast-to-zql/src/format.js +15 -14
  16. package/out/ast-to-zql/src/format.js.map +1 -1
  17. package/out/datadog/src/datadog-log-sink.js +223 -0
  18. package/out/datadog/src/datadog-log-sink.js.map +1 -0
  19. package/out/otel/src/enabled.js +15 -15
  20. package/out/otel/src/enabled.js.map +1 -1
  21. package/out/otel/src/log-options.js +36 -31
  22. package/out/otel/src/log-options.js.map +1 -1
  23. package/out/otel/src/maybe-time.js +14 -11
  24. package/out/otel/src/maybe-time.js.map +1 -1
  25. package/out/otel/src/span.js +30 -27
  26. package/out/otel/src/span.js.map +1 -1
  27. package/out/otel/src/test-log-config.js +10 -7
  28. package/out/otel/src/test-log-config.js.map +1 -1
  29. package/out/otel/src/version.js +5 -2
  30. package/out/otel/src/version.js.map +1 -1
  31. package/out/replicache/src/async-iterable-to-array.js +11 -0
  32. package/out/replicache/src/async-iterable-to-array.js.map +1 -0
  33. package/out/replicache/src/bg-interval.js +38 -0
  34. package/out/replicache/src/bg-interval.js.map +1 -0
  35. package/out/replicache/src/btree/diff.js +8 -0
  36. package/out/replicache/src/btree/diff.js.map +1 -0
  37. package/out/replicache/src/btree/node.js +400 -0
  38. package/out/replicache/src/btree/node.js.map +1 -0
  39. package/out/replicache/src/btree/read.d.ts +3 -2
  40. package/out/replicache/src/btree/read.d.ts.map +1 -1
  41. package/out/replicache/src/btree/read.js +266 -0
  42. package/out/replicache/src/btree/read.js.map +1 -0
  43. package/out/replicache/src/btree/splice.js +83 -0
  44. package/out/replicache/src/btree/splice.js.map +1 -0
  45. package/out/replicache/src/btree/write.d.ts +1 -1
  46. package/out/replicache/src/btree/write.d.ts.map +1 -1
  47. package/out/replicache/src/btree/write.js +163 -0
  48. package/out/replicache/src/btree/write.js.map +1 -0
  49. package/out/replicache/src/call-default-fetch.js +34 -0
  50. package/out/replicache/src/call-default-fetch.js.map +1 -0
  51. package/out/replicache/src/connection-loop-delegates.js +34 -0
  52. package/out/replicache/src/connection-loop-delegates.js.map +1 -0
  53. package/out/replicache/src/connection-loop.js +251 -0
  54. package/out/replicache/src/connection-loop.js.map +1 -0
  55. package/out/replicache/src/cookies.js +40 -0
  56. package/out/replicache/src/cookies.js.map +1 -0
  57. package/out/replicache/src/dag/chunk.js +59 -0
  58. package/out/replicache/src/dag/chunk.js.map +1 -0
  59. package/out/replicache/src/dag/gc.js +117 -0
  60. package/out/replicache/src/dag/gc.js.map +1 -0
  61. package/out/replicache/src/dag/key.js +20 -0
  62. package/out/replicache/src/dag/key.js.map +1 -0
  63. package/out/replicache/src/dag/lazy-store.d.ts +2 -1
  64. package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
  65. package/out/replicache/src/dag/lazy-store.js +515 -0
  66. package/out/replicache/src/dag/lazy-store.js.map +1 -0
  67. package/out/replicache/src/dag/store-impl.js +183 -0
  68. package/out/replicache/src/dag/store-impl.js.map +1 -0
  69. package/out/replicache/src/dag/store.js +27 -0
  70. package/out/replicache/src/dag/store.js.map +1 -0
  71. package/out/replicache/src/dag/visitor.js +22 -0
  72. package/out/replicache/src/dag/visitor.js.map +1 -0
  73. package/out/replicache/src/db/commit.js +358 -0
  74. package/out/replicache/src/db/commit.js.map +1 -0
  75. package/out/replicache/src/db/index-operation-enum.js +7 -0
  76. package/out/replicache/src/db/index-operation-enum.js.map +1 -0
  77. package/out/replicache/src/db/index.js +134 -0
  78. package/out/replicache/src/db/index.js.map +1 -0
  79. package/out/replicache/src/db/meta-type-enum.js +7 -0
  80. package/out/replicache/src/db/meta-type-enum.js.map +1 -0
  81. package/out/replicache/src/db/read.d.ts +3 -2
  82. package/out/replicache/src/db/read.d.ts.map +1 -1
  83. package/out/replicache/src/db/read.js +72 -0
  84. package/out/replicache/src/db/read.js.map +1 -0
  85. package/out/replicache/src/db/rebase.d.ts +2 -2
  86. package/out/replicache/src/db/rebase.d.ts.map +1 -1
  87. package/out/replicache/src/db/rebase.js +85 -0
  88. package/out/replicache/src/db/rebase.js.map +1 -0
  89. package/out/replicache/src/db/write.d.ts +2 -1
  90. package/out/replicache/src/db/write.d.ts.map +1 -1
  91. package/out/replicache/src/db/write.js +296 -0
  92. package/out/replicache/src/db/write.js.map +1 -0
  93. package/out/replicache/src/deleted-clients.js +104 -0
  94. package/out/replicache/src/deleted-clients.js.map +1 -0
  95. package/out/replicache/src/error-responses.js +34 -0
  96. package/out/replicache/src/error-responses.js.map +1 -0
  97. package/out/replicache/src/format-version-enum.js +11 -0
  98. package/out/replicache/src/format-version-enum.js.map +1 -0
  99. package/out/{chunk-EZM3XBAB.js → replicache/src/frozen-json.js} +8 -75
  100. package/out/replicache/src/frozen-json.js.map +1 -0
  101. package/out/replicache/src/get-default-puller.js +61 -0
  102. package/out/replicache/src/get-default-puller.js.map +1 -0
  103. package/out/replicache/src/get-default-pusher.js +39 -0
  104. package/out/replicache/src/get-default-pusher.js.map +1 -0
  105. package/out/replicache/src/get-kv-store-provider.js +23 -0
  106. package/out/replicache/src/get-kv-store-provider.js.map +1 -0
  107. package/out/replicache/src/hash.js +38 -0
  108. package/out/replicache/src/hash.js.map +1 -0
  109. package/out/replicache/src/http-request-info.js +10 -0
  110. package/out/replicache/src/http-request-info.js.map +1 -0
  111. package/out/replicache/src/http-status-unauthorized.js +5 -0
  112. package/out/replicache/src/http-status-unauthorized.js.map +1 -0
  113. package/out/replicache/src/index-defs.js +32 -0
  114. package/out/replicache/src/index-defs.js.map +1 -0
  115. package/out/replicache/src/invoke-kind-enum.js +7 -0
  116. package/out/replicache/src/invoke-kind-enum.js.map +1 -0
  117. package/out/{chunk-HCZQVP5R.js → replicache/src/kv/expo-sqlite/store.js} +8 -16
  118. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -0
  119. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +80 -0
  120. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
  121. package/out/replicache/src/kv/idb-store.js +183 -0
  122. package/out/replicache/src/kv/idb-store.js.map +1 -0
  123. package/out/replicache/src/kv/mem-store.js +51 -0
  124. package/out/replicache/src/kv/mem-store.js.map +1 -0
  125. package/out/{op-sqlite.js → replicache/src/kv/op-sqlite/store.js} +7 -18
  126. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -0
  127. package/out/replicache/src/kv/op-sqlite/types.js +6 -0
  128. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -0
  129. package/out/replicache/src/kv/read-impl.js +27 -0
  130. package/out/replicache/src/kv/read-impl.js.map +1 -0
  131. package/out/{chunk-WPAQ4EPM.js → replicache/src/kv/sqlite-store.js} +15 -19
  132. package/out/replicache/src/kv/sqlite-store.js.map +1 -0
  133. package/out/{chunk-ASRS2LFV.js → replicache/src/kv/throw-if-closed.js} +4 -6
  134. package/out/replicache/src/kv/throw-if-closed.js.map +1 -0
  135. package/out/replicache/src/kv/write-impl-base.js +57 -0
  136. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  137. package/out/replicache/src/kv/write-impl.js +30 -0
  138. package/out/replicache/src/kv/write-impl.js.map +1 -0
  139. package/out/replicache/src/lazy.js +13 -0
  140. package/out/replicache/src/lazy.js.map +1 -0
  141. package/out/replicache/src/log-options.js +9 -0
  142. package/out/replicache/src/log-options.js.map +1 -0
  143. package/out/replicache/src/make-idb-name.js +13 -0
  144. package/out/replicache/src/make-idb-name.js.map +1 -0
  145. package/out/replicache/src/new-client-channel.js +51 -0
  146. package/out/replicache/src/new-client-channel.js.map +1 -0
  147. package/out/replicache/src/on-persist-channel.js +36 -0
  148. package/out/replicache/src/on-persist-channel.js.map +1 -0
  149. package/out/replicache/src/patch-operation.js +42 -0
  150. package/out/replicache/src/patch-operation.js.map +1 -0
  151. package/out/replicache/src/pending-mutations.js +16 -0
  152. package/out/replicache/src/pending-mutations.js.map +1 -0
  153. package/out/replicache/src/persist/client-gc.js +58 -0
  154. package/out/replicache/src/persist/client-gc.js.map +1 -0
  155. package/out/replicache/src/persist/client-group-gc.js +43 -0
  156. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  157. package/out/replicache/src/persist/client-groups.js +184 -0
  158. package/out/replicache/src/persist/client-groups.js.map +1 -0
  159. package/out/replicache/src/persist/clients.d.ts +3 -2
  160. package/out/replicache/src/persist/clients.d.ts.map +1 -1
  161. package/out/replicache/src/persist/clients.js +353 -0
  162. package/out/replicache/src/persist/clients.js.map +1 -0
  163. package/out/replicache/src/persist/collect-idb-databases.js +188 -0
  164. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  165. package/out/replicache/src/persist/gather-mem-only-visitor.js +27 -0
  166. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  167. package/out/replicache/src/persist/gather-not-cached-visitor.js +37 -0
  168. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  169. package/out/replicache/src/persist/heartbeat.js +48 -0
  170. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  171. package/out/replicache/src/persist/idb-databases-store-db-name.js +14 -0
  172. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  173. package/out/replicache/src/persist/idb-databases-store.js +92 -0
  174. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  175. package/out/replicache/src/persist/make-client-id.js +12 -0
  176. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  177. package/out/replicache/src/persist/persist.d.ts +2 -2
  178. package/out/replicache/src/persist/persist.d.ts.map +1 -1
  179. package/out/replicache/src/persist/persist.js +183 -0
  180. package/out/replicache/src/persist/persist.js.map +1 -0
  181. package/out/replicache/src/persist/refresh.d.ts +4 -3
  182. package/out/replicache/src/persist/refresh.d.ts.map +1 -1
  183. package/out/replicache/src/persist/refresh.js +198 -0
  184. package/out/replicache/src/persist/refresh.js.map +1 -0
  185. package/out/replicache/src/process-scheduler.js +96 -0
  186. package/out/replicache/src/process-scheduler.js.map +1 -0
  187. package/out/replicache/src/pusher.js +33 -0
  188. package/out/replicache/src/pusher.js.map +1 -0
  189. package/out/replicache/src/replicache-impl.d.ts +1 -1
  190. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  191. package/out/replicache/src/replicache-impl.js +1200 -0
  192. package/out/replicache/src/replicache-impl.js.map +1 -0
  193. package/out/replicache/src/report-error.js +6 -0
  194. package/out/replicache/src/report-error.js.map +1 -0
  195. package/out/replicache/src/request-idle.js +13 -0
  196. package/out/replicache/src/request-idle.js.map +1 -0
  197. package/out/replicache/src/scan-iterator.js +146 -0
  198. package/out/replicache/src/scan-iterator.js.map +1 -0
  199. package/out/replicache/src/scan-options.js +45 -0
  200. package/out/replicache/src/scan-options.js.map +1 -0
  201. package/out/replicache/src/set-interval-with-signal.js +12 -0
  202. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  203. package/out/replicache/src/subscriptions.js +355 -0
  204. package/out/replicache/src/subscriptions.js.map +1 -0
  205. package/out/replicache/src/sync/diff.d.ts +3 -2
  206. package/out/replicache/src/sync/diff.d.ts.map +1 -1
  207. package/out/replicache/src/sync/diff.js +72 -0
  208. package/out/replicache/src/sync/diff.js.map +1 -0
  209. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +9 -0
  210. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  211. package/out/replicache/src/sync/ids.js +9 -0
  212. package/out/replicache/src/sync/ids.js.map +1 -0
  213. package/out/replicache/src/sync/patch.js +49 -0
  214. package/out/replicache/src/sync/patch.js.map +1 -0
  215. package/out/replicache/src/sync/pull-error.js +16 -0
  216. package/out/replicache/src/sync/pull-error.js.map +1 -0
  217. package/out/replicache/src/sync/pull.d.ts +3 -2
  218. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  219. package/out/replicache/src/sync/pull.js +301 -0
  220. package/out/replicache/src/sync/pull.js.map +1 -0
  221. package/out/replicache/src/sync/push.js +88 -0
  222. package/out/replicache/src/sync/push.js.map +1 -0
  223. package/out/replicache/src/sync/request-id.js +20 -0
  224. package/out/replicache/src/sync/request-id.js.map +1 -0
  225. package/out/replicache/src/sync/sync-head-name.js +5 -0
  226. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  227. package/out/replicache/src/to-error.js +10 -0
  228. package/out/replicache/src/to-error.js.map +1 -0
  229. package/out/replicache/src/transaction-closed-error.js +19 -0
  230. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  231. package/out/replicache/src/transactions.js +152 -0
  232. package/out/replicache/src/transactions.js.map +1 -0
  233. package/out/replicache/src/version.js +5 -0
  234. package/out/replicache/src/version.js.map +1 -0
  235. package/out/replicache/src/with-transactions.js +28 -0
  236. package/out/replicache/src/with-transactions.js.map +1 -0
  237. package/out/shared/src/abort-error.js +6 -3
  238. package/out/shared/src/abort-error.js.map +1 -1
  239. package/out/shared/src/arrays.js +45 -43
  240. package/out/shared/src/arrays.js.map +1 -1
  241. package/out/shared/src/asserts.js +64 -68
  242. package/out/shared/src/asserts.js.map +1 -1
  243. package/out/shared/src/bigint-json.js +38 -42
  244. package/out/shared/src/bigint-json.js.map +1 -1
  245. package/out/shared/src/binary-search.js +18 -29
  246. package/out/shared/src/binary-search.js.map +1 -1
  247. package/out/shared/src/broadcast-channel.js +24 -0
  248. package/out/shared/src/broadcast-channel.js.map +1 -0
  249. package/out/shared/src/browser-env.js +25 -0
  250. package/out/shared/src/browser-env.js.map +1 -0
  251. package/out/shared/src/btree-set.js +464 -507
  252. package/out/shared/src/btree-set.js.map +1 -1
  253. package/out/shared/src/cache.js +34 -38
  254. package/out/shared/src/cache.js.map +1 -1
  255. package/out/shared/src/centroid.js +24 -24
  256. package/out/shared/src/centroid.js.map +1 -1
  257. package/out/shared/src/config.js +6 -3
  258. package/out/shared/src/config.js.map +1 -1
  259. package/out/shared/src/custom-key-map.js +58 -64
  260. package/out/shared/src/custom-key-map.js.map +1 -1
  261. package/out/shared/src/custom-key-set.js +51 -57
  262. package/out/shared/src/custom-key-set.js.map +1 -1
  263. package/out/shared/src/deep-clone.js +46 -0
  264. package/out/shared/src/deep-clone.js.map +1 -0
  265. package/out/shared/src/document-visible.js +74 -0
  266. package/out/shared/src/document-visible.js.map +1 -0
  267. package/out/shared/src/dotenv.js +5 -7
  268. package/out/shared/src/dotenv.js.map +1 -1
  269. package/out/shared/src/error.js +57 -56
  270. package/out/shared/src/error.js.map +1 -1
  271. package/out/shared/src/has-own.js +5 -3
  272. package/out/shared/src/has-own.js.map +1 -1
  273. package/out/shared/src/hash.js +15 -14
  274. package/out/shared/src/hash.js.map +1 -1
  275. package/out/shared/src/iterables.js +71 -73
  276. package/out/shared/src/iterables.js.map +1 -1
  277. package/out/shared/src/json-schema.js +30 -33
  278. package/out/shared/src/json-schema.js.map +1 -1
  279. package/out/shared/src/json.js +128 -143
  280. package/out/shared/src/json.js.map +1 -1
  281. package/out/shared/src/logging-test-utils.js +12 -19
  282. package/out/shared/src/logging-test-utils.js.map +1 -1
  283. package/out/shared/src/logging.js +83 -83
  284. package/out/shared/src/logging.js.map +1 -1
  285. package/out/shared/src/must.js +9 -7
  286. package/out/shared/src/must.js.map +1 -1
  287. package/out/shared/src/navigator.js +5 -0
  288. package/out/shared/src/navigator.js.map +1 -0
  289. package/out/shared/src/objects.js +21 -22
  290. package/out/shared/src/objects.js.map +1 -1
  291. package/out/shared/src/options.d.ts +2 -0
  292. package/out/shared/src/options.d.ts.map +1 -1
  293. package/out/shared/src/options.js +289 -318
  294. package/out/shared/src/options.js.map +1 -1
  295. package/out/shared/src/parse-big-int.js +12 -10
  296. package/out/shared/src/parse-big-int.js.map +1 -1
  297. package/out/shared/src/promise-race.js +20 -0
  298. package/out/shared/src/promise-race.js.map +1 -0
  299. package/out/shared/src/queue.js +119 -122
  300. package/out/shared/src/queue.js.map +1 -1
  301. package/out/shared/src/rand.js +8 -10
  302. package/out/shared/src/rand.js.map +1 -1
  303. package/out/shared/src/random-uint64.js +9 -0
  304. package/out/shared/src/random-uint64.js.map +1 -0
  305. package/out/shared/src/random-values.js +13 -0
  306. package/out/shared/src/random-values.js.map +1 -0
  307. package/out/shared/src/resolved-promises.js +12 -9
  308. package/out/shared/src/resolved-promises.js.map +1 -1
  309. package/out/shared/src/sentinels.js +13 -6
  310. package/out/shared/src/sentinels.js.map +1 -1
  311. package/out/shared/src/set-utils.js +63 -62
  312. package/out/shared/src/set-utils.js.map +1 -1
  313. package/out/shared/src/size-of-value.js +58 -0
  314. package/out/shared/src/size-of-value.js.map +1 -0
  315. package/out/shared/src/sleep.js +45 -53
  316. package/out/shared/src/sleep.js.map +1 -1
  317. package/out/shared/src/string-compare.js +12 -9
  318. package/out/shared/src/string-compare.js.map +1 -1
  319. package/out/shared/src/subscribable.js +34 -0
  320. package/out/shared/src/subscribable.js.map +1 -0
  321. package/out/shared/src/tdigest-schema.js +7 -7
  322. package/out/shared/src/tdigest-schema.js.map +1 -1
  323. package/out/shared/src/tdigest.js +247 -271
  324. package/out/shared/src/tdigest.js.map +1 -1
  325. package/out/shared/src/valita.js +195 -207
  326. package/out/shared/src/valita.js.map +1 -1
  327. package/out/z2s/src/compiler.d.ts.map +1 -1
  328. package/out/z2s/src/compiler.js +437 -310
  329. package/out/z2s/src/compiler.js.map +1 -1
  330. package/out/z2s/src/sql.js +186 -218
  331. package/out/z2s/src/sql.js.map +1 -1
  332. package/out/zero/package.json.js +9 -0
  333. package/out/zero/package.json.js.map +1 -0
  334. package/out/zero/src/adapters/drizzle.js +5 -2
  335. package/out/zero/src/adapters/drizzle.js.map +1 -1
  336. package/out/zero/src/adapters/pg.js +7 -2
  337. package/out/zero/src/adapters/pg.js.map +1 -1
  338. package/out/zero/src/adapters/postgresjs.js +7 -2
  339. package/out/zero/src/adapters/postgresjs.js.map +1 -1
  340. package/out/zero/src/analyze-query.js +1 -1
  341. package/out/zero/src/analyze-query.js.map +1 -1
  342. package/out/zero/src/ast-to-zql.js +1 -1
  343. package/out/zero/src/ast-to-zql.js.map +1 -1
  344. package/out/zero/src/build-schema.js +3 -5
  345. package/out/zero/src/build-schema.js.map +1 -1
  346. package/out/zero/src/change-protocol/v0.js +5 -3
  347. package/out/zero/src/change-protocol/v0.js.map +1 -1
  348. package/out/zero/src/cli.js +2 -2
  349. package/out/zero/src/cli.js.map +1 -1
  350. package/out/zero/src/deploy-permissions.js +1 -1
  351. package/out/zero/src/deploy-permissions.js.map +1 -1
  352. package/out/zero/src/expo-sqlite.js +5 -0
  353. package/out/zero/src/expo-sqlite.js.map +1 -0
  354. package/out/zero/src/op-sqlite.js +5 -0
  355. package/out/zero/src/op-sqlite.js.map +1 -0
  356. package/out/zero/src/pg.js +31 -3
  357. package/out/zero/src/pg.js.map +1 -1
  358. package/out/zero/src/react-native.js +13 -0
  359. package/out/zero/src/react-native.js.map +1 -0
  360. package/out/zero/src/react.js +17 -0
  361. package/out/zero/src/react.js.map +1 -0
  362. package/out/zero/src/server.js +27 -3
  363. package/out/zero/src/server.js.map +1 -1
  364. package/out/zero/src/solid.js +15 -0
  365. package/out/zero/src/solid.js.map +1 -0
  366. package/out/zero/src/sqlite.js +7 -0
  367. package/out/zero/src/sqlite.js.map +1 -0
  368. package/out/zero/src/transform-query.js +1 -1
  369. package/out/zero/src/transform-query.js.map +1 -1
  370. package/out/zero/src/zero-cache-dev.js +135 -124
  371. package/out/zero/src/zero-cache-dev.js.map +1 -1
  372. package/out/zero/src/zero-out.js +6 -6
  373. package/out/zero/src/zero-out.js.map +1 -1
  374. package/out/zero/src/zero.js +55 -0
  375. package/out/zero/src/zero.js.map +1 -0
  376. package/out/zero/src/zqlite.js +11 -3
  377. package/out/zero/src/zqlite.js.map +1 -1
  378. package/out/zero-cache/src/auth/jwt.js +33 -38
  379. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  380. package/out/zero-cache/src/auth/load-permissions.js +61 -45
  381. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  382. package/out/zero-cache/src/auth/read-authorizer.js +79 -91
  383. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  384. package/out/zero-cache/src/auth/write-authorizer.d.ts +2 -2
  385. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  386. package/out/zero-cache/src/auth/write-authorizer.js +394 -349
  387. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  388. package/out/zero-cache/src/config/network.js +42 -45
  389. package/out/zero-cache/src/config/network.js.map +1 -1
  390. package/out/zero-cache/src/config/normalize.js +86 -83
  391. package/out/zero-cache/src/config/normalize.js.map +1 -1
  392. package/out/zero-cache/src/config/zero-config.js +676 -682
  393. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  394. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  395. package/out/zero-cache/src/custom/fetch.js +166 -162
  396. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  397. package/out/zero-cache/src/custom-queries/transform-query.d.ts +7 -0
  398. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  399. package/out/zero-cache/src/custom-queries/transform-query.js +101 -106
  400. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  401. package/out/zero-cache/src/db/create.js +32 -36
  402. package/out/zero-cache/src/db/create.js.map +1 -1
  403. package/out/zero-cache/src/db/delete-lite-db.js +9 -6
  404. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  405. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  406. package/out/zero-cache/src/db/lite-tables.js +150 -174
  407. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  408. package/out/zero-cache/src/db/migration-lite.js +170 -165
  409. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  410. package/out/zero-cache/src/db/migration.js +157 -137
  411. package/out/zero-cache/src/db/migration.js.map +1 -1
  412. package/out/zero-cache/src/db/mode-enum.d.ts +2 -0
  413. package/out/zero-cache/src/db/mode-enum.d.ts.map +1 -1
  414. package/out/zero-cache/src/db/mode-enum.js +9 -3
  415. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  416. package/out/zero-cache/src/db/pg-copy.js +51 -90
  417. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  418. package/out/zero-cache/src/db/pg-to-lite.js +114 -109
  419. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  420. package/out/zero-cache/src/db/pg-type-parser.js +27 -39
  421. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  422. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +11 -6
  423. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -1
  424. package/out/zero-cache/src/db/postgres-type-class-enum.js +17 -9
  425. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +1 -1
  426. package/out/zero-cache/src/db/specs.d.ts +0 -6
  427. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  428. package/out/zero-cache/src/db/specs.js +66 -40
  429. package/out/zero-cache/src/db/specs.js.map +1 -1
  430. package/out/zero-cache/src/db/statements.d.ts +1 -1
  431. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  432. package/out/zero-cache/src/db/statements.js +59 -52
  433. package/out/zero-cache/src/db/statements.js.map +1 -1
  434. package/out/zero-cache/src/db/transaction-pool.d.ts +1 -1
  435. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  436. package/out/zero-cache/src/db/transaction-pool.js +375 -501
  437. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  438. package/out/zero-cache/src/db/warmup.js +25 -12
  439. package/out/zero-cache/src/db/warmup.js.map +1 -1
  440. package/out/zero-cache/src/observability/events.js +71 -82
  441. package/out/zero-cache/src/observability/events.js.map +1 -1
  442. package/out/zero-cache/src/observability/metrics.js +54 -32
  443. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  444. package/out/zero-cache/src/scripts/decommission.js +47 -43
  445. package/out/zero-cache/src/scripts/decommission.js.map +1 -1
  446. package/out/zero-cache/src/scripts/deploy-permissions.js +128 -118
  447. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  448. package/out/zero-cache/src/scripts/permissions.js +107 -99
  449. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  450. package/out/zero-cache/src/server/anonymous-otel-start.js +410 -366
  451. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  452. package/out/zero-cache/src/server/change-streamer.js +104 -60
  453. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  454. package/out/zero-cache/src/server/inspector-delegate.js +112 -109
  455. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  456. package/out/zero-cache/src/server/logging.d.ts +1 -1
  457. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  458. package/out/zero-cache/src/server/logging.js +26 -19
  459. package/out/zero-cache/src/server/logging.js.map +1 -1
  460. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  461. package/out/zero-cache/src/server/main.js +137 -120
  462. package/out/zero-cache/src/server/main.js.map +1 -1
  463. package/out/zero-cache/src/server/mutator.js +19 -0
  464. package/out/zero-cache/src/server/mutator.js.map +1 -0
  465. package/out/zero-cache/src/server/otel-diag-logger.d.ts +1 -1
  466. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +1 -1
  467. package/out/zero-cache/src/server/otel-diag-logger.js +67 -70
  468. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  469. package/out/zero-cache/src/server/otel-log-sink.js +40 -41
  470. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  471. package/out/zero-cache/src/server/otel-start.d.ts +1 -1
  472. package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
  473. package/out/zero-cache/src/server/otel-start.js +57 -68
  474. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  475. package/out/zero-cache/src/server/reaper.js +34 -26
  476. package/out/zero-cache/src/server/reaper.js.map +1 -1
  477. package/out/zero-cache/src/server/replicator.js +53 -31
  478. package/out/zero-cache/src/server/replicator.js.map +1 -1
  479. package/out/zero-cache/src/server/runner/main.js +6 -4
  480. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  481. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  482. package/out/zero-cache/src/server/runner/run-worker.js +46 -50
  483. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  484. package/out/zero-cache/src/server/runner/runtime.js +33 -32
  485. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  486. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  487. package/out/zero-cache/src/server/runner/zero-dispatcher.js +28 -22
  488. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  489. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  490. package/out/zero-cache/src/server/syncer.js +112 -63
  491. package/out/zero-cache/src/server/syncer.js.map +1 -1
  492. package/out/zero-cache/src/server/worker-dispatcher.d.ts +1 -1
  493. package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -1
  494. package/out/zero-cache/src/server/worker-dispatcher.js +112 -106
  495. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  496. package/out/zero-cache/src/server/worker-urls.d.ts +7 -0
  497. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -0
  498. package/out/zero-cache/src/server/worker-urls.js +21 -0
  499. package/out/zero-cache/src/server/worker-urls.js.map +1 -0
  500. package/out/zero-cache/src/services/analyze.d.ts +3 -4
  501. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  502. package/out/zero-cache/src/services/analyze.js +96 -122
  503. package/out/zero-cache/src/services/analyze.js.map +1 -1
  504. package/out/zero-cache/src/services/change-source/column-metadata.js +152 -155
  505. package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
  506. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +1 -1
  507. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
  508. package/out/zero-cache/src/services/change-source/custom/change-source.js +197 -171
  509. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  510. package/out/zero-cache/src/services/change-source/custom/sync-schema.js +11 -3
  511. package/out/zero-cache/src/services/change-source/custom/sync-schema.js.map +1 -1
  512. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
  513. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  514. package/out/zero-cache/src/services/change-source/pg/change-source.js +601 -622
  515. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  516. package/out/zero-cache/src/services/change-source/pg/decommission.js +24 -23
  517. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  518. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -1
  519. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  520. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +327 -284
  521. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  522. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +61 -69
  523. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  524. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +247 -257
  525. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  526. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +127 -119
  527. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  528. package/out/zero-cache/src/services/change-source/pg/lsn.js +20 -19
  529. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  530. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +96 -119
  531. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  532. package/out/zero-cache/src/services/change-source/pg/schema/init.js +138 -117
  533. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  534. package/out/zero-cache/src/services/change-source/pg/schema/published.js +67 -74
  535. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  536. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +199 -188
  537. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  538. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +53 -38
  539. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  540. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +11 -3
  541. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  542. package/out/zero-cache/src/services/change-source/protocol/current/control.js +9 -19
  543. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  544. package/out/zero-cache/src/services/change-source/protocol/current/data.js +143 -116
  545. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  546. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +29 -19
  547. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  548. package/out/zero-cache/src/services/change-source/protocol/current/path.js +5 -20
  549. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  550. package/out/zero-cache/src/services/change-source/protocol/current/status.js +12 -13
  551. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  552. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -1
  553. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  554. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +5 -4
  555. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  556. package/out/zero-cache/src/services/change-source/protocol/current.js +35 -7
  557. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  558. package/out/zero-cache/src/services/change-source/replica-schema.js +64 -47
  559. package/out/zero-cache/src/services/change-source/replica-schema.js.map +1 -1
  560. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +1 -1
  561. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +1 -1
  562. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +139 -157
  563. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  564. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +2 -2
  565. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  566. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +178 -158
  567. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  568. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  569. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  570. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +235 -349
  571. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  572. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +5 -1
  573. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  574. package/out/zero-cache/src/services/change-streamer/change-streamer.js +24 -22
  575. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  576. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +9 -4
  577. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +1 -1
  578. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +1 -1
  579. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  580. package/out/zero-cache/src/services/change-streamer/forwarder.js +53 -57
  581. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  582. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +40 -44
  583. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
  584. package/out/zero-cache/src/services/change-streamer/schema/init.js +82 -68
  585. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  586. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +2 -2
  587. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  588. package/out/zero-cache/src/services/change-streamer/schema/tables.js +93 -78
  589. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  590. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +58 -0
  591. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +1 -1
  592. package/out/zero-cache/src/services/change-streamer/snapshot.js +28 -18
  593. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  594. package/out/zero-cache/src/services/change-streamer/storer.d.ts +3 -2
  595. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  596. package/out/zero-cache/src/services/change-streamer/storer.js +309 -367
  597. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  598. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -1
  599. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  600. package/out/zero-cache/src/services/change-streamer/subscriber.js +83 -90
  601. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  602. package/out/zero-cache/src/services/heapz.js +21 -25
  603. package/out/zero-cache/src/services/heapz.js.map +1 -1
  604. package/out/zero-cache/src/services/http-service.d.ts +1 -1
  605. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  606. package/out/zero-cache/src/services/http-service.js +56 -59
  607. package/out/zero-cache/src/services/http-service.js.map +1 -1
  608. package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
  609. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  610. package/out/zero-cache/src/services/life-cycle.js +216 -255
  611. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  612. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +76 -130
  613. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  614. package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
  615. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  616. package/out/zero-cache/src/services/litestream/commands.js +201 -154
  617. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  618. package/out/zero-cache/src/services/mutagen/error.js +11 -6
  619. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  620. package/out/zero-cache/src/services/mutagen/mutagen.js +270 -267
  621. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  622. package/out/zero-cache/src/services/mutagen/pusher.js +351 -344
  623. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  624. package/out/zero-cache/src/services/replicator/change-processor.js +483 -530
  625. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  626. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  627. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  628. package/out/zero-cache/src/services/replicator/incremental-sync.js +97 -97
  629. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  630. package/out/zero-cache/src/services/replicator/notifier.js +28 -52
  631. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  632. package/out/zero-cache/src/services/replicator/replication-status.js +100 -83
  633. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  634. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  635. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  636. package/out/zero-cache/src/services/replicator/replicator.js +33 -26
  637. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  638. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +1 -1
  639. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  640. package/out/zero-cache/src/services/replicator/schema/change-log.js +74 -86
  641. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  642. package/out/zero-cache/src/services/replicator/schema/constants.js +5 -7
  643. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  644. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +2 -2
  645. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  646. package/out/zero-cache/src/services/replicator/schema/replication-state.js +70 -74
  647. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  648. package/out/zero-cache/src/services/run-ast.d.ts +5 -3
  649. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  650. package/out/zero-cache/src/services/run-ast.js +80 -79
  651. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  652. package/out/zero-cache/src/services/runner.d.ts +1 -1
  653. package/out/zero-cache/src/services/runner.d.ts.map +1 -1
  654. package/out/zero-cache/src/services/runner.js +40 -40
  655. package/out/zero-cache/src/services/runner.js.map +1 -1
  656. package/out/zero-cache/src/services/running-state.d.ts +1 -1
  657. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  658. package/out/zero-cache/src/services/running-state.js +122 -119
  659. package/out/zero-cache/src/services/running-state.js.map +1 -1
  660. package/out/zero-cache/src/services/statz.js +184 -162
  661. package/out/zero-cache/src/services/statz.js.map +1 -1
  662. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +40 -39
  663. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  664. package/out/zero-cache/src/services/view-syncer/client-handler.js +307 -298
  665. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  666. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  667. package/out/zero-cache/src/services/view-syncer/client-schema.js +80 -82
  668. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  669. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
  670. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +84 -94
  671. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  672. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +2 -4
  673. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  674. package/out/zero-cache/src/services/view-syncer/cvr-store.js +628 -612
  675. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  676. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +1 -1
  677. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  678. package/out/zero-cache/src/services/view-syncer/cvr.js +631 -694
  679. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  680. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +38 -60
  681. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  682. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +2 -1
  683. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  684. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +168 -158
  685. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  686. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +14 -13
  687. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  688. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +529 -467
  689. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  690. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +1 -1
  691. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  692. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +229 -277
  693. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  694. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +53 -120
  695. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  696. package/out/zero-cache/src/services/view-syncer/schema/init.js +171 -150
  697. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  698. package/out/zero-cache/src/services/view-syncer/schema/types.js +265 -257
  699. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  700. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  701. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  702. package/out/zero-cache/src/services/view-syncer/snapshotter.js +295 -338
  703. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  704. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +13 -7
  705. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  706. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -3
  707. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  708. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1485 -1307
  709. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  710. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  711. package/out/zero-cache/src/types/error-with-level.js +29 -25
  712. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  713. package/out/zero-cache/src/types/http.js +27 -14
  714. package/out/zero-cache/src/types/http.js.map +1 -1
  715. package/out/zero-cache/src/types/lexi-version.js +46 -31
  716. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  717. package/out/zero-cache/src/types/lite.js +118 -125
  718. package/out/zero-cache/src/types/lite.js.map +1 -1
  719. package/out/zero-cache/src/types/names.js +6 -3
  720. package/out/zero-cache/src/types/names.js.map +1 -1
  721. package/out/zero-cache/src/types/pg-data-type.js +74 -68
  722. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  723. package/out/zero-cache/src/types/pg-types.js +17 -72
  724. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  725. package/out/zero-cache/src/types/pg.d.ts +1 -1
  726. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  727. package/out/zero-cache/src/types/pg.js +213 -233
  728. package/out/zero-cache/src/types/pg.js.map +1 -1
  729. package/out/zero-cache/src/types/processes.d.ts +2 -2
  730. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  731. package/out/zero-cache/src/types/processes.js +95 -143
  732. package/out/zero-cache/src/types/processes.js.map +1 -1
  733. package/out/zero-cache/src/types/profiler.js +29 -30
  734. package/out/zero-cache/src/types/profiler.js.map +1 -1
  735. package/out/zero-cache/src/types/row-key.js +30 -68
  736. package/out/zero-cache/src/types/row-key.js.map +1 -1
  737. package/out/zero-cache/src/types/schema-versions.js +25 -19
  738. package/out/zero-cache/src/types/schema-versions.js.map +1 -1
  739. package/out/zero-cache/src/types/shards.js +50 -36
  740. package/out/zero-cache/src/types/shards.js.map +1 -1
  741. package/out/zero-cache/src/types/sql.js +9 -13
  742. package/out/zero-cache/src/types/sql.js.map +1 -1
  743. package/out/zero-cache/src/types/streams.js +245 -254
  744. package/out/zero-cache/src/types/streams.js.map +1 -1
  745. package/out/zero-cache/src/types/strings.js +14 -11
  746. package/out/zero-cache/src/types/strings.js.map +1 -1
  747. package/out/zero-cache/src/types/subscription.js +200 -259
  748. package/out/zero-cache/src/types/subscription.js.map +1 -1
  749. package/out/zero-cache/src/types/url-params.js +35 -30
  750. package/out/zero-cache/src/types/url-params.js.map +1 -1
  751. package/out/zero-cache/src/types/websocket-handoff.d.ts +5 -4
  752. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  753. package/out/zero-cache/src/types/websocket-handoff.js +68 -76
  754. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  755. package/out/zero-cache/src/types/ws.js +56 -59
  756. package/out/zero-cache/src/types/ws.js.map +1 -1
  757. package/out/zero-cache/src/workers/connect-params.js +44 -40
  758. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  759. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  760. package/out/zero-cache/src/workers/connection.js +277 -243
  761. package/out/zero-cache/src/workers/connection.js.map +1 -1
  762. package/out/zero-cache/src/workers/mutator.js +24 -0
  763. package/out/zero-cache/src/workers/mutator.js.map +1 -0
  764. package/out/zero-cache/src/workers/replicator.d.ts +1 -1
  765. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  766. package/out/zero-cache/src/workers/replicator.js +103 -106
  767. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  768. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +179 -147
  769. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  770. package/out/zero-cache/src/workers/syncer.d.ts +3 -3
  771. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  772. package/out/zero-cache/src/workers/syncer.js +192 -169
  773. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  774. package/out/zero-client/src/client/active-clients-manager.js +199 -0
  775. package/out/zero-client/src/client/active-clients-manager.js.map +1 -0
  776. package/out/zero-client/src/client/bindings.d.ts +8 -7
  777. package/out/zero-client/src/client/bindings.d.ts.map +1 -1
  778. package/out/zero-client/src/client/bindings.js +33 -0
  779. package/out/zero-client/src/client/bindings.js.map +1 -0
  780. package/out/zero-client/src/client/client-error-kind-enum.js +29 -0
  781. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -0
  782. package/out/zero-client/src/client/connection-manager.d.ts +12 -31
  783. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  784. package/out/zero-client/src/client/connection-manager.js +310 -0
  785. package/out/zero-client/src/client/connection-manager.js.map +1 -0
  786. package/out/zero-client/src/client/connection-status-enum.js +15 -0
  787. package/out/zero-client/src/client/connection-status-enum.js.map +1 -0
  788. package/out/zero-client/src/client/connection.d.ts +47 -4
  789. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  790. package/out/zero-client/src/client/connection.js +103 -0
  791. package/out/zero-client/src/client/connection.js.map +1 -0
  792. package/out/zero-client/src/client/context.d.ts +4 -7
  793. package/out/zero-client/src/client/context.d.ts.map +1 -1
  794. package/out/zero-client/src/client/context.js +104 -0
  795. package/out/zero-client/src/client/context.js.map +1 -0
  796. package/out/zero-client/src/client/crud.js +225 -0
  797. package/out/zero-client/src/client/crud.js.map +1 -0
  798. package/out/zero-client/src/client/custom.d.ts +12 -15
  799. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  800. package/out/zero-client/src/client/custom.js +123 -0
  801. package/out/zero-client/src/client/custom.js.map +1 -0
  802. package/out/zero-client/src/client/delete-clients-manager.d.ts +2 -2
  803. package/out/zero-client/src/client/delete-clients-manager.d.ts.map +1 -1
  804. package/out/zero-client/src/client/delete-clients-manager.js +71 -0
  805. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -0
  806. package/out/zero-client/src/client/enable-analytics.js +18 -0
  807. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  808. package/out/zero-client/src/client/error.d.ts +2 -1
  809. package/out/zero-client/src/client/error.d.ts.map +1 -1
  810. package/out/zero-client/src/client/error.js +148 -0
  811. package/out/zero-client/src/client/error.js.map +1 -0
  812. package/out/zero-client/src/client/http-string.js +11 -0
  813. package/out/zero-client/src/client/http-string.js.map +1 -0
  814. package/out/zero-client/src/client/inspector/client-group.js +27 -0
  815. package/out/zero-client/src/client/inspector/client-group.js.map +1 -0
  816. package/out/zero-client/src/client/inspector/client.js +28 -0
  817. package/out/zero-client/src/client/inspector/client.js.map +1 -0
  818. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +77 -0
  819. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
  820. package/out/zero-client/src/client/inspector/inspector.d.ts +1 -1
  821. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  822. package/out/zero-client/src/client/inspector/inspector.js +47 -0
  823. package/out/zero-client/src/client/inspector/inspector.js.map +1 -0
  824. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +1 -1
  825. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  826. package/out/zero-client/src/client/inspector/lazy-inspector.js +243 -0
  827. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
  828. package/out/zero-client/src/client/inspector/query.d.ts.map +1 -1
  829. package/out/zero-client/src/client/inspector/query.js +82 -0
  830. package/out/zero-client/src/client/inspector/query.js.map +1 -0
  831. package/out/zero-client/src/client/ivm-branch.d.ts +4 -4
  832. package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
  833. package/out/zero-client/src/client/ivm-branch.js +149 -0
  834. package/out/zero-client/src/client/ivm-branch.js.map +1 -0
  835. package/out/zero-client/src/client/keys.js +45 -0
  836. package/out/zero-client/src/client/keys.js.map +1 -0
  837. package/out/zero-client/src/client/log-options.js +60 -0
  838. package/out/zero-client/src/client/log-options.js.map +1 -0
  839. package/out/zero-client/src/client/metric-name-enum.js +15 -0
  840. package/out/zero-client/src/client/metric-name-enum.js.map +1 -0
  841. package/out/zero-client/src/client/metrics.d.ts +2 -2
  842. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  843. package/out/zero-client/src/client/metrics.js +249 -0
  844. package/out/zero-client/src/client/metrics.js.map +1 -0
  845. package/out/zero-client/src/client/mutation-tracker.d.ts +2 -2
  846. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  847. package/out/zero-client/src/client/mutation-tracker.js +363 -0
  848. package/out/zero-client/src/client/mutation-tracker.js.map +1 -0
  849. package/out/zero-client/src/client/mutator-proxy.d.ts +1 -2
  850. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -1
  851. package/out/zero-client/src/client/mutator-proxy.js +132 -0
  852. package/out/zero-client/src/client/mutator-proxy.js.map +1 -0
  853. package/out/zero-client/src/client/options.d.ts +36 -19
  854. package/out/zero-client/src/client/options.d.ts.map +1 -1
  855. package/out/zero-client/src/client/options.js +11 -0
  856. package/out/zero-client/src/client/options.js.map +1 -0
  857. package/out/zero-client/src/client/query-manager.d.ts +5 -5
  858. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  859. package/out/zero-client/src/client/query-manager.js +377 -0
  860. package/out/zero-client/src/client/query-manager.js.map +1 -0
  861. package/out/zero-client/src/client/reload-error-handler.d.ts +4 -4
  862. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  863. package/out/zero-client/src/client/reload-error-handler.js +114 -0
  864. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  865. package/out/zero-client/src/client/server-option.js +64 -0
  866. package/out/zero-client/src/client/server-option.js.map +1 -0
  867. package/out/zero-client/src/client/update-needed-reason-type-enum.js +9 -0
  868. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
  869. package/out/zero-client/src/client/version.js +5 -0
  870. package/out/zero-client/src/client/version.js.map +1 -0
  871. package/out/zero-client/src/client/zero-poke-handler.d.ts +2 -2
  872. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  873. package/out/zero-client/src/client/zero-poke-handler.js +303 -0
  874. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  875. package/out/zero-client/src/client/zero-rep.d.ts +2 -2
  876. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  877. package/out/zero-client/src/client/zero-rep.js +72 -0
  878. package/out/zero-client/src/client/zero-rep.js.map +1 -0
  879. package/out/zero-client/src/client/zero.d.ts +28 -11
  880. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  881. package/out/zero-client/src/client/zero.js +1825 -0
  882. package/out/zero-client/src/client/zero.js.map +1 -0
  883. package/out/zero-client/src/mod.d.ts +4 -12
  884. package/out/zero-client/src/mod.d.ts.map +1 -1
  885. package/out/zero-client/src/util/nanoid.js +21 -0
  886. package/out/zero-client/src/util/nanoid.js.map +1 -0
  887. package/out/zero-client/src/util/socket.js +7 -0
  888. package/out/zero-client/src/util/socket.js.map +1 -0
  889. package/out/zero-protocol/src/analyze-query-result.js +32 -24
  890. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  891. package/out/zero-protocol/src/application-error.js +35 -37
  892. package/out/zero-protocol/src/application-error.js.map +1 -1
  893. package/out/zero-protocol/src/ast.d.ts +1 -1
  894. package/out/zero-protocol/src/ast.js +296 -277
  895. package/out/zero-protocol/src/ast.js.map +1 -1
  896. package/out/zero-protocol/src/change-desired-queries.d.ts +2 -2
  897. package/out/zero-protocol/src/change-desired-queries.js +11 -7
  898. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  899. package/out/zero-protocol/src/client-schema.d.ts +2 -2
  900. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  901. package/out/zero-protocol/src/client-schema.js +40 -26
  902. package/out/zero-protocol/src/client-schema.js.map +1 -1
  903. package/out/zero-protocol/src/close-connection.js +11 -18
  904. package/out/zero-protocol/src/close-connection.js.map +1 -1
  905. package/out/zero-protocol/src/connect.d.ts +4 -4
  906. package/out/zero-protocol/src/connect.js +46 -51
  907. package/out/zero-protocol/src/connect.js.map +1 -1
  908. package/out/zero-protocol/src/custom-queries.d.ts +4 -4
  909. package/out/zero-protocol/src/custom-queries.js +61 -39
  910. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  911. package/out/zero-protocol/src/data.js +9 -4
  912. package/out/zero-protocol/src/data.js.map +1 -1
  913. package/out/zero-protocol/src/delete-clients.js +16 -9
  914. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  915. package/out/zero-protocol/src/down.d.ts +6 -6
  916. package/out/zero-protocol/src/down.js +20 -4
  917. package/out/zero-protocol/src/down.js.map +1 -1
  918. package/out/zero-protocol/src/error-kind-enum.js +41 -23
  919. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  920. package/out/zero-protocol/src/error-origin-enum.js +9 -4
  921. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  922. package/out/zero-protocol/src/error-reason-enum.js +17 -8
  923. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  924. package/out/zero-protocol/src/error.d.ts +17 -17
  925. package/out/zero-protocol/src/error.js +151 -89
  926. package/out/zero-protocol/src/error.js.map +1 -1
  927. package/out/zero-protocol/src/inspect-down.d.ts +18 -18
  928. package/out/zero-protocol/src/inspect-down.js +72 -54
  929. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  930. package/out/zero-protocol/src/inspect-up.d.ts +6 -6
  931. package/out/zero-protocol/src/inspect-up.js +38 -26
  932. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  933. package/out/zero-protocol/src/mutation-id.js +9 -5
  934. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  935. package/out/zero-protocol/src/mutation-type-enum.js +7 -3
  936. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  937. package/out/zero-protocol/src/mutations-patch.js +16 -17
  938. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  939. package/out/zero-protocol/src/ping.js +9 -4
  940. package/out/zero-protocol/src/ping.js.map +1 -1
  941. package/out/zero-protocol/src/poke.js +55 -72
  942. package/out/zero-protocol/src/poke.js.map +1 -1
  943. package/out/zero-protocol/src/pong.js +9 -4
  944. package/out/zero-protocol/src/pong.js.map +1 -1
  945. package/out/zero-protocol/src/primary-key.js +19 -5
  946. package/out/zero-protocol/src/primary-key.js.map +1 -1
  947. package/out/zero-protocol/src/protocol-version.d.ts +2 -2
  948. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  949. package/out/zero-protocol/src/protocol-version.js +7 -59
  950. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  951. package/out/zero-protocol/src/pull.js +26 -19
  952. package/out/zero-protocol/src/pull.js.map +1 -1
  953. package/out/zero-protocol/src/push.d.ts +4 -4
  954. package/out/zero-protocol/src/push.js +179 -176
  955. package/out/zero-protocol/src/push.js.map +1 -1
  956. package/out/zero-protocol/src/queries-patch.d.ts +3 -3
  957. package/out/zero-protocol/src/queries-patch.js +29 -22
  958. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  959. package/out/zero-protocol/src/query-hash.js +18 -14
  960. package/out/zero-protocol/src/query-hash.js.map +1 -1
  961. package/out/zero-protocol/src/row-patch.js +29 -20
  962. package/out/zero-protocol/src/row-patch.js.map +1 -1
  963. package/out/zero-protocol/src/up.d.ts +5 -5
  964. package/out/zero-protocol/src/up.js +18 -4
  965. package/out/zero-protocol/src/up.js.map +1 -1
  966. package/out/zero-protocol/src/version.js +9 -4
  967. package/out/zero-protocol/src/version.js.map +1 -1
  968. package/out/{inspector-GP3CBZRU.js → zero-react/src/components/inspector.js} +4 -9
  969. package/out/zero-react/src/components/inspector.js.map +1 -0
  970. package/out/{chunk-VZOYWIRW.js → zero-react/src/components/mark-icon.js} +3 -5
  971. package/out/zero-react/src/components/mark-icon.js.map +1 -0
  972. package/out/zero-react/src/components/zero-inspector.js +44 -0
  973. package/out/zero-react/src/components/zero-inspector.js.map +1 -0
  974. package/out/zero-react/src/mod.d.ts +1 -3
  975. package/out/zero-react/src/mod.d.ts.map +1 -1
  976. package/out/zero-react/src/use-query.d.ts +4 -4
  977. package/out/zero-react/src/use-query.d.ts.map +1 -1
  978. package/out/{react.js → zero-react/src/use-query.js} +25 -217
  979. package/out/zero-react/src/use-query.js.map +1 -0
  980. package/out/zero-react/src/use-zero-connection-state.d.ts +1 -1
  981. package/out/zero-react/src/use-zero-connection-state.d.ts.map +1 -1
  982. package/out/zero-react/src/use-zero-connection-state.js +14 -0
  983. package/out/zero-react/src/use-zero-connection-state.js.map +1 -0
  984. package/out/zero-react/src/use-zero-online.js +14 -0
  985. package/out/zero-react/src/use-zero-online.js.map +1 -0
  986. package/out/zero-react/src/zero-provider.d.ts +7 -6
  987. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  988. package/out/zero-react/src/zero-provider.js +59 -0
  989. package/out/zero-react/src/zero-provider.js.map +1 -0
  990. package/out/zero-schema/src/builder/relationship-builder.js +27 -0
  991. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -0
  992. package/out/zero-schema/src/builder/schema-builder.js +88 -0
  993. package/out/zero-schema/src/builder/schema-builder.js.map +1 -0
  994. package/out/zero-schema/src/builder/table-builder.js +129 -0
  995. package/out/zero-schema/src/builder/table-builder.js.map +1 -0
  996. package/out/zero-schema/src/compiled-permissions.js +23 -19
  997. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  998. package/out/zero-schema/src/name-mapper.js +43 -38
  999. package/out/zero-schema/src/name-mapper.js.map +1 -1
  1000. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  1001. package/out/zero-schema/src/permissions.js +199 -0
  1002. package/out/zero-schema/src/permissions.js.map +1 -0
  1003. package/out/zero-schema/src/schema-config.js +35 -51
  1004. package/out/zero-schema/src/schema-config.js.map +1 -1
  1005. package/out/zero-server/src/adapters/drizzle.d.ts +1 -1
  1006. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  1007. package/out/zero-server/src/adapters/drizzle.js +83 -100
  1008. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  1009. package/out/zero-server/src/adapters/pg.d.ts +4 -3
  1010. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  1011. package/out/zero-server/src/adapters/pg.js +53 -77
  1012. package/out/zero-server/src/adapters/pg.js.map +1 -1
  1013. package/out/zero-server/src/adapters/postgresjs.d.ts +2 -2
  1014. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  1015. package/out/zero-server/src/adapters/postgresjs.js +39 -57
  1016. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  1017. package/out/zero-server/src/custom.d.ts +6 -6
  1018. package/out/zero-server/src/custom.d.ts.map +1 -1
  1019. package/out/zero-server/src/custom.js +185 -117
  1020. package/out/zero-server/src/custom.js.map +1 -1
  1021. package/out/zero-server/src/logging.js +7 -4
  1022. package/out/zero-server/src/logging.js.map +1 -1
  1023. package/out/zero-server/src/mod.d.ts +2 -0
  1024. package/out/zero-server/src/mod.d.ts.map +1 -1
  1025. package/out/zero-server/src/pg-query-executor.js +17 -14
  1026. package/out/zero-server/src/pg-query-executor.js.map +1 -1
  1027. package/out/zero-server/src/process-mutations.js +293 -274
  1028. package/out/zero-server/src/process-mutations.js.map +1 -1
  1029. package/out/zero-server/src/push-processor.js +55 -31
  1030. package/out/zero-server/src/push-processor.js.map +1 -1
  1031. package/out/zero-server/src/queries/process-queries.d.ts +63 -2
  1032. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  1033. package/out/zero-server/src/queries/process-queries.js +101 -95
  1034. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  1035. package/out/zero-server/src/query-registry.d.ts +10 -0
  1036. package/out/zero-server/src/query-registry.d.ts.map +1 -0
  1037. package/out/zero-server/src/query-registry.js +35 -0
  1038. package/out/zero-server/src/query-registry.js.map +1 -0
  1039. package/out/zero-server/src/schema.js +136 -124
  1040. package/out/zero-server/src/schema.js.map +1 -1
  1041. package/out/zero-server/src/zql-database.d.ts +4 -4
  1042. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  1043. package/out/zero-server/src/zql-database.js +66 -47
  1044. package/out/zero-server/src/zql-database.js.map +1 -1
  1045. package/out/zero-solid/src/mod.d.ts +1 -2
  1046. package/out/zero-solid/src/mod.d.ts.map +1 -1
  1047. package/out/zero-solid/src/solid-view.d.ts +1 -1
  1048. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  1049. package/out/{solid.js → zero-solid/src/solid-view.js} +42 -196
  1050. package/out/zero-solid/src/solid-view.js.map +1 -0
  1051. package/out/zero-solid/src/use-query.d.ts +1 -1
  1052. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  1053. package/out/zero-solid/src/use-query.js +70 -0
  1054. package/out/zero-solid/src/use-query.js.map +1 -0
  1055. package/out/zero-solid/src/use-zero-connection-state.d.ts +1 -1
  1056. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -1
  1057. package/out/zero-solid/src/use-zero-connection-state.js +15 -0
  1058. package/out/zero-solid/src/use-zero-connection-state.js.map +1 -0
  1059. package/out/zero-solid/src/use-zero-online.js +13 -0
  1060. package/out/zero-solid/src/use-zero-online.js.map +1 -0
  1061. package/out/zero-solid/src/use-zero.d.ts +1 -1
  1062. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  1063. package/out/zero-solid/src/use-zero.js +74 -0
  1064. package/out/zero-solid/src/use-zero.js.map +1 -0
  1065. package/out/zero-types/src/format.js +7 -4
  1066. package/out/zero-types/src/format.js.map +1 -1
  1067. package/out/zero-types/src/name-mapper.js +43 -40
  1068. package/out/zero-types/src/name-mapper.js.map +1 -1
  1069. package/out/zql/src/builder/builder.d.ts +2 -1
  1070. package/out/zql/src/builder/builder.d.ts.map +1 -1
  1071. package/out/zql/src/builder/builder.js +486 -428
  1072. package/out/zql/src/builder/builder.js.map +1 -1
  1073. package/out/zql/src/builder/debug-delegate.js +68 -64
  1074. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  1075. package/out/zql/src/builder/filter.js +132 -138
  1076. package/out/zql/src/builder/filter.js.map +1 -1
  1077. package/out/zql/src/builder/like.js +44 -51
  1078. package/out/zql/src/builder/like.js.map +1 -1
  1079. package/out/zql/src/error.d.ts +5 -0
  1080. package/out/zql/src/error.d.ts.map +1 -1
  1081. package/out/zql/src/error.js +18 -6
  1082. package/out/zql/src/error.js.map +1 -1
  1083. package/out/zql/src/ivm/array-view.js +86 -92
  1084. package/out/zql/src/ivm/array-view.js.map +1 -1
  1085. package/out/zql/src/ivm/constraint.js +74 -127
  1086. package/out/zql/src/ivm/constraint.js.map +1 -1
  1087. package/out/zql/src/ivm/data.js +59 -85
  1088. package/out/zql/src/ivm/data.js.map +1 -1
  1089. package/out/zql/src/ivm/exists.js +236 -243
  1090. package/out/zql/src/ivm/exists.js.map +1 -1
  1091. package/out/zql/src/ivm/fan-in.js +50 -51
  1092. package/out/zql/src/ivm/fan-in.js.map +1 -1
  1093. package/out/zql/src/ivm/fan-out.js +48 -50
  1094. package/out/zql/src/ivm/fan-out.js.map +1 -1
  1095. package/out/zql/src/ivm/filter-operators.js +87 -87
  1096. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  1097. package/out/zql/src/ivm/filter-push.js +26 -23
  1098. package/out/zql/src/ivm/filter-push.js.map +1 -1
  1099. package/out/zql/src/ivm/filter.js +30 -32
  1100. package/out/zql/src/ivm/filter.js.map +1 -1
  1101. package/out/zql/src/ivm/flipped-join.js +343 -326
  1102. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  1103. package/out/zql/src/ivm/join-utils.js +85 -79
  1104. package/out/zql/src/ivm/join-utils.js.map +1 -1
  1105. package/out/zql/src/ivm/join.js +287 -207
  1106. package/out/zql/src/ivm/join.js.map +1 -1
  1107. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +26 -24
  1108. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  1109. package/out/zql/src/ivm/memory-source.d.ts +2 -2
  1110. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  1111. package/out/zql/src/ivm/memory-source.js +471 -489
  1112. package/out/zql/src/ivm/memory-source.js.map +1 -1
  1113. package/out/zql/src/ivm/memory-storage.js +32 -31
  1114. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  1115. package/out/zql/src/ivm/operator.js +8 -9
  1116. package/out/zql/src/ivm/operator.js.map +1 -1
  1117. package/out/zql/src/ivm/push-accumulated.js +236 -305
  1118. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  1119. package/out/zql/src/ivm/skip.js +92 -106
  1120. package/out/zql/src/ivm/skip.js.map +1 -1
  1121. package/out/zql/src/ivm/source.d.ts +3 -1
  1122. package/out/zql/src/ivm/source.d.ts.map +1 -1
  1123. package/out/zql/src/ivm/stream.js +20 -16
  1124. package/out/zql/src/ivm/stream.js.map +1 -1
  1125. package/out/zql/src/ivm/take.js +502 -456
  1126. package/out/zql/src/ivm/take.js.map +1 -1
  1127. package/out/zql/src/ivm/union-fan-in.js +156 -134
  1128. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  1129. package/out/zql/src/ivm/union-fan-out.js +46 -45
  1130. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  1131. package/out/zql/src/ivm/view-apply-change.js +246 -216
  1132. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  1133. package/out/zql/src/ivm/view.d.ts +2 -2
  1134. package/out/zql/src/ivm/view.d.ts.map +1 -1
  1135. package/out/zql/src/mutate/custom.d.ts +11 -11
  1136. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  1137. package/out/zql/src/mutate/custom.js +15 -7
  1138. package/out/zql/src/mutate/custom.js.map +1 -1
  1139. package/out/zql/src/planner/planner-builder.js +238 -172
  1140. package/out/zql/src/planner/planner-builder.js.map +1 -1
  1141. package/out/zql/src/planner/planner-connection.d.ts +7 -0
  1142. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  1143. package/out/zql/src/planner/planner-connection.js +202 -250
  1144. package/out/zql/src/planner/planner-connection.js.map +1 -1
  1145. package/out/zql/src/planner/planner-constraint.js +8 -11
  1146. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  1147. package/out/zql/src/planner/planner-debug.d.ts +2 -1
  1148. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  1149. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  1150. package/out/zql/src/planner/planner-fan-in.js +154 -159
  1151. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1152. package/out/zql/src/planner/planner-fan-out.js +71 -60
  1153. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1154. package/out/zql/src/planner/planner-graph.d.ts +7 -8
  1155. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  1156. package/out/zql/src/planner/planner-graph.js +315 -357
  1157. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1158. package/out/zql/src/planner/planner-join.d.ts +6 -2
  1159. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  1160. package/out/zql/src/planner/planner-join.js +234 -326
  1161. package/out/zql/src/planner/planner-join.js.map +1 -1
  1162. package/out/zql/src/planner/planner-node.d.ts +2 -1
  1163. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  1164. package/out/zql/src/planner/planner-source.js +23 -12
  1165. package/out/zql/src/planner/planner-source.js.map +1 -1
  1166. package/out/zql/src/planner/planner-terminus.js +28 -27
  1167. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1168. package/out/zql/src/query/complete-ordering.d.ts +5 -0
  1169. package/out/zql/src/query/complete-ordering.d.ts.map +1 -0
  1170. package/out/zql/src/query/complete-ordering.js +71 -0
  1171. package/out/zql/src/query/complete-ordering.js.map +1 -0
  1172. package/out/zql/src/query/define-query.d.ts +47 -23
  1173. package/out/zql/src/query/define-query.d.ts.map +1 -1
  1174. package/out/zql/src/query/define-query.js +45 -51
  1175. package/out/zql/src/query/define-query.js.map +1 -1
  1176. package/out/zql/src/query/error.js +12 -8
  1177. package/out/zql/src/query/error.js.map +1 -1
  1178. package/out/zql/src/query/escape-like.js +7 -0
  1179. package/out/zql/src/query/escape-like.js.map +1 -0
  1180. package/out/zql/src/query/expression.js +153 -151
  1181. package/out/zql/src/query/expression.js.map +1 -1
  1182. package/out/zql/src/query/measure-push-operator.js +42 -35
  1183. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1184. package/out/zql/src/query/metrics-delegate.js +9 -5
  1185. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1186. package/out/zql/src/query/named.d.ts +9 -5
  1187. package/out/zql/src/query/named.d.ts.map +1 -1
  1188. package/out/zql/src/query/named.js +70 -85
  1189. package/out/zql/src/query/named.js.map +1 -1
  1190. package/out/zql/src/query/query-definitions.d.ts +32 -0
  1191. package/out/zql/src/query/query-definitions.d.ts.map +1 -0
  1192. package/out/zql/src/query/query-delegate-base.d.ts +6 -14
  1193. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  1194. package/out/zql/src/query/query-delegate-base.js +118 -134
  1195. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  1196. package/out/zql/src/query/query-delegate.d.ts +6 -8
  1197. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  1198. package/out/zql/src/query/query-impl.d.ts +17 -18
  1199. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1200. package/out/zql/src/query/query-impl.js +511 -433
  1201. package/out/zql/src/query/query-impl.js.map +1 -1
  1202. package/out/zql/src/query/query-internals.d.ts +11 -13
  1203. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  1204. package/out/zql/src/query/query-internals.js +13 -19
  1205. package/out/zql/src/query/query-internals.js.map +1 -1
  1206. package/out/zql/src/query/query.d.ts +15 -16
  1207. package/out/zql/src/query/query.d.ts.map +1 -1
  1208. package/out/zql/src/query/static-query.d.ts +3 -3
  1209. package/out/zql/src/query/static-query.d.ts.map +1 -1
  1210. package/out/zql/src/query/static-query.js +41 -18
  1211. package/out/zql/src/query/static-query.js.map +1 -1
  1212. package/out/zql/src/query/ttl.js +69 -62
  1213. package/out/zql/src/query/ttl.js.map +1 -1
  1214. package/out/zql/src/query/validate-input.d.ts +15 -0
  1215. package/out/zql/src/query/validate-input.d.ts.map +1 -0
  1216. package/out/zql/src/query/validate-input.js +25 -0
  1217. package/out/zql/src/query/validate-input.js.map +1 -0
  1218. package/out/zqlite/src/database-storage.d.ts +1 -1
  1219. package/out/zqlite/src/database-storage.d.ts.map +1 -1
  1220. package/out/zqlite/src/database-storage.js +99 -102
  1221. package/out/zqlite/src/database-storage.js.map +1 -1
  1222. package/out/zqlite/src/db.js +241 -194
  1223. package/out/zqlite/src/db.js.map +1 -1
  1224. package/out/zqlite/src/explain-queries.js +13 -16
  1225. package/out/zqlite/src/explain-queries.js.map +1 -1
  1226. package/out/zqlite/src/internal/sql.js +15 -10
  1227. package/out/zqlite/src/internal/sql.js.map +1 -1
  1228. package/out/zqlite/src/internal/statement-cache.js +86 -110
  1229. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1230. package/out/zqlite/src/query-builder.js +172 -143
  1231. package/out/zqlite/src/query-builder.js.map +1 -1
  1232. package/out/zqlite/src/query-delegate.d.ts +2 -2
  1233. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  1234. package/out/zqlite/src/query-delegate.js +53 -43
  1235. package/out/zqlite/src/query-delegate.js.map +1 -1
  1236. package/out/zqlite/src/sqlite-cost-model.d.ts.map +1 -1
  1237. package/out/zqlite/src/sqlite-cost-model.js +96 -120
  1238. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1239. package/out/zqlite/src/sqlite-stat-fanout.d.ts +121 -0
  1240. package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +1 -0
  1241. package/out/zqlite/src/sqlite-stat-fanout.js +301 -0
  1242. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -0
  1243. package/out/zqlite/src/table-source.d.ts +9 -4
  1244. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1245. package/out/zqlite/src/table-source.js +424 -327
  1246. package/out/zqlite/src/table-source.js.map +1 -1
  1247. package/package.json +23 -26
  1248. package/out/chunk-424PT5DM.js +0 -23
  1249. package/out/chunk-424PT5DM.js.map +0 -7
  1250. package/out/chunk-AFADJQ2O.js +0 -1
  1251. package/out/chunk-AFADJQ2O.js.map +0 -7
  1252. package/out/chunk-ASRS2LFV.js.map +0 -7
  1253. package/out/chunk-EZM3XBAB.js.map +0 -7
  1254. package/out/chunk-HCZQVP5R.js.map +0 -7
  1255. package/out/chunk-PFM5IJC4.js +0 -495
  1256. package/out/chunk-PFM5IJC4.js.map +0 -7
  1257. package/out/chunk-TAUDS4QP.js +0 -4129
  1258. package/out/chunk-TAUDS4QP.js.map +0 -7
  1259. package/out/chunk-VZOYWIRW.js.map +0 -7
  1260. package/out/chunk-WPAQ4EPM.js.map +0 -7
  1261. package/out/chunk-WWNKZSEE.js +0 -18857
  1262. package/out/chunk-WWNKZSEE.js.map +0 -7
  1263. package/out/expo-sqlite.js +0 -11
  1264. package/out/expo-sqlite.js.map +0 -7
  1265. package/out/inspector-GP3CBZRU.js.map +0 -7
  1266. package/out/lazy-inspector-XLKVABX2.js +0 -575
  1267. package/out/lazy-inspector-XLKVABX2.js.map +0 -7
  1268. package/out/op-sqlite.js.map +0 -7
  1269. package/out/react-native.js +0 -25
  1270. package/out/react-native.js.map +0 -7
  1271. package/out/react.js.map +0 -7
  1272. package/out/shared/src/enum.js +0 -2
  1273. package/out/shared/src/enum.js.map +0 -1
  1274. package/out/shared/src/expand.js +0 -2
  1275. package/out/shared/src/expand.js.map +0 -1
  1276. package/out/shared/src/immutable.js +0 -2
  1277. package/out/shared/src/immutable.js.map +0 -1
  1278. package/out/shared/src/types.js +0 -2
  1279. package/out/shared/src/types.js.map +0 -1
  1280. package/out/shared/src/writable.js +0 -2
  1281. package/out/shared/src/writable.js.map +0 -1
  1282. package/out/solid.js.map +0 -7
  1283. package/out/sqlite.js +0 -15
  1284. package/out/sqlite.js.map +0 -7
  1285. package/out/zero/package.json +0 -195
  1286. package/out/zero/src/server/change-streamer.js +0 -2
  1287. package/out/zero/src/server/change-streamer.js.map +0 -1
  1288. package/out/zero/src/server/main.js +0 -2
  1289. package/out/zero/src/server/main.js.map +0 -1
  1290. package/out/zero/src/server/reaper.js +0 -2
  1291. package/out/zero/src/server/reaper.js.map +0 -1
  1292. package/out/zero/src/server/replicator.js +0 -2
  1293. package/out/zero/src/server/replicator.js.map +0 -1
  1294. package/out/zero/src/server/runner/main.js +0 -2
  1295. package/out/zero/src/server/runner/main.js.map +0 -1
  1296. package/out/zero/src/server/syncer.js +0 -2
  1297. package/out/zero/src/server/syncer.js.map +0 -1
  1298. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js +0 -4
  1299. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js.map +0 -1
  1300. package/out/zero-cache/src/services/change-source/protocol/mod.js +0 -5
  1301. package/out/zero-cache/src/services/change-source/protocol/mod.js.map +0 -1
  1302. package/out/zero-cache/src/services/service.js +0 -2
  1303. package/out/zero-cache/src/services/service.js.map +0 -1
  1304. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts +0 -32
  1305. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts.map +0 -1
  1306. package/out/zero-cache/src/services/view-syncer/key-columns.js +0 -75
  1307. package/out/zero-cache/src/services/view-syncer/key-columns.js.map +0 -1
  1308. package/out/zero-cache/src/types/satisfies.js +0 -2
  1309. package/out/zero-cache/src/types/satisfies.js.map +0 -1
  1310. package/out/zero-client/src/client/zero-log-context.d.ts +0 -7
  1311. package/out/zero-client/src/client/zero-log-context.d.ts.map +0 -1
  1312. package/out/zero-events/src/index.js +0 -2
  1313. package/out/zero-events/src/index.js.map +0 -1
  1314. package/out/zero-events/src/json.js +0 -2
  1315. package/out/zero-events/src/json.js.map +0 -1
  1316. package/out/zero-events/src/status.js +0 -3
  1317. package/out/zero-events/src/status.js.map +0 -1
  1318. package/out/zero-pg/src/mod.js +0 -6
  1319. package/out/zero-pg/src/mod.js.map +0 -1
  1320. package/out/zero-protocol/src/error-kind.js +0 -3
  1321. package/out/zero-protocol/src/error-kind.js.map +0 -1
  1322. package/out/zero-protocol/src/error-origin.js +0 -3
  1323. package/out/zero-protocol/src/error-origin.js.map +0 -1
  1324. package/out/zero-protocol/src/error-reason.js +0 -3
  1325. package/out/zero-protocol/src/error-reason.js.map +0 -1
  1326. package/out/zero-schema/src/table-schema.js +0 -7
  1327. package/out/zero-schema/src/table-schema.js.map +0 -1
  1328. package/out/zero-server/src/mod.js +0 -8
  1329. package/out/zero-server/src/mod.js.map +0 -1
  1330. package/out/zero-types/src/schema-value.js +0 -2
  1331. package/out/zero-types/src/schema-value.js.map +0 -1
  1332. package/out/zero-types/src/schema.js +0 -2
  1333. package/out/zero-types/src/schema.js.map +0 -1
  1334. package/out/zero-types/src/server-schema.js +0 -2
  1335. package/out/zero-types/src/server-schema.js.map +0 -1
  1336. package/out/zero.js +0 -95
  1337. package/out/zero.js.map +0 -7
  1338. package/out/zql/src/ivm/change.js +0 -2
  1339. package/out/zql/src/ivm/change.js.map +0 -1
  1340. package/out/zql/src/ivm/default-format.js +0 -2
  1341. package/out/zql/src/ivm/default-format.js.map +0 -1
  1342. package/out/zql/src/ivm/schema.js +0 -2
  1343. package/out/zql/src/ivm/schema.js.map +0 -1
  1344. package/out/zql/src/ivm/source.js +0 -2
  1345. package/out/zql/src/ivm/source.js.map +0 -1
  1346. package/out/zql/src/ivm/view.js +0 -2
  1347. package/out/zql/src/ivm/view.js.map +0 -1
  1348. package/out/zql/src/planner/planner-debug.js +0 -176
  1349. package/out/zql/src/planner/planner-debug.js.map +0 -1
  1350. package/out/zql/src/planner/planner-node.js +0 -2
  1351. package/out/zql/src/planner/planner-node.js.map +0 -1
  1352. package/out/zql/src/query/chained-query.d.ts +0 -35
  1353. package/out/zql/src/query/chained-query.d.ts.map +0 -1
  1354. package/out/zql/src/query/chained-query.js +0 -66
  1355. package/out/zql/src/query/chained-query.js.map +0 -1
  1356. package/out/zql/src/query/query-delegate.js +0 -2
  1357. package/out/zql/src/query/query-delegate.js.map +0 -1
  1358. package/out/zql/src/query/query.js +0 -8
  1359. package/out/zql/src/query/query.js.map +0 -1
  1360. package/out/zql/src/query/root-named-query.d.ts +0 -33
  1361. package/out/zql/src/query/root-named-query.d.ts.map +0 -1
  1362. package/out/zql/src/query/root-named-query.js +0 -95
  1363. package/out/zql/src/query/root-named-query.js.map +0 -1
  1364. package/out/zql/src/query/typed-view.js +0 -2
  1365. package/out/zql/src/query/typed-view.js.map +0 -1
  1366. package/out/zqlite/src/mod.js +0 -5
  1367. package/out/zqlite/src/mod.js.map +0 -1
@@ -1,395 +1,337 @@
1
- import { PG_SERIALIZATION_FAILURE } from '@drdgvhbh/postgres-error-codes';
2
- import { LogContext } from '@rocicorp/logger';
3
- import { resolver } from '@rocicorp/resolver';
4
- import postgres from 'postgres';
1
+ import { PG_SERIALIZATION_FAILURE } from "@drdgvhbh/postgres-error-codes";
2
+ import { resolver } from "@rocicorp/resolver";
3
+ import postgres from "postgres";
5
4
  import { AbortError } from "../../../../shared/src/abort-error.js";
6
5
  import { assert } from "../../../../shared/src/asserts.js";
7
- import {} from "../../../../shared/src/bigint-json.js";
6
+ import "../../../../shared/src/bigint-json.js";
8
7
  import { Queue } from "../../../../shared/src/queue.js";
9
8
  import { promiseVoid } from "../../../../shared/src/resolved-promises.js";
10
- import * as Mode from "../../db/mode-enum.js";
9
+ import { SERIALIZABLE, READONLY } from "../../db/mode-enum.js";
11
10
  import { TransactionPool } from "../../db/transaction-pool.js";
12
11
  import { disableStatementTimeout } from "../../types/pg.js";
13
12
  import { cdcSchema } from "../../types/shards.js";
14
- import {} from "../change-source/protocol/current/downstream.js";
15
- import {} from "./change-streamer.js";
16
- import * as ErrorType from "./error-type-enum.js";
17
- import { AutoResetSignal, markResetRequired, } from "./schema/tables.js";
18
- import { Subscriber } from "./subscriber.js";
19
- // Technically, any threshold is fine because the point of back pressure
20
- // is to adjust the rate of incoming messages, and the size of the pending
21
- // work queue does not affect that mechanism.
22
- //
23
- // However, it is theoretically possible to exceed the available memory if
24
- // the size of changes is very large. This threshold can be improved by
25
- // roughly measuring the size of the enqueued contents and setting the
26
- // threshold based on available memory.
27
- //
28
- // TODO: switch to a message size-based thresholding when migrating over
29
- // to stringified JSON messages, which will bound the computation involved
30
- // in measuring the size of row messages.
31
- const QUEUE_SIZE_BACK_PRESSURE_THRESHOLD = 100_000;
32
- /**
33
- * Handles the storage of changes and the catchup of subscribers
34
- * that are behind.
35
- *
36
- * In the context of catchup and cleanup, it is the responsibility of the
37
- * Storer to decide whether a client can be caught up, or whether the
38
- * changes needed to catch a client up have been purged.
39
- *
40
- * **Maintained invariant**: The Change DB is only empty for a
41
- * completely new replica (i.e. initial-sync with no changes from the
42
- * replication stream).
43
- * * In this case, all new subscribers are expected start from the
44
- * `replicaVersion`, which is the version at which initial sync
45
- * was performed, and any attempts to catchup from a different
46
- * point fail.
47
- *
48
- * Conversely, if non-initial changes have flowed through the system
49
- * (i.e. via the replication stream), the ChangeDB must *not* be empty,
50
- * and the earliest change in the `changeLog` represents the earliest
51
- * "commit" from (after) which a subscriber can be caught up.
52
- * * Any attempts to catchup from an earlier point must fail with
53
- * a `WatermarkTooOld` error.
54
- * * Failure to do so could result in streaming changes to the
55
- * subscriber such that there is a gap in its replication history.
56
- *
57
- * Note: Subscribers (i.e. `incremental-syncer`) consider an "error" signal
58
- * an unrecoverable error and shut down in response. This allows the
59
- * production system to replace it with a new task and fresh copy of the
60
- * replica backup.
61
- */
62
- export class Storer {
63
- id = 'storer';
64
- #lc;
65
- #shard;
66
- #taskID;
67
- #discoveryAddress;
68
- #discoveryProtocol;
69
- #db;
70
- #replicaVersion;
71
- #onConsumed;
72
- #onFatal;
73
- #queue = new Queue();
74
- #running = false;
75
- constructor(lc, shard, taskID, discoveryAddress, discoveryProtocol, db, replicaVersion, onConsumed, onFatal) {
76
- this.#lc = lc;
77
- this.#shard = shard;
78
- this.#taskID = taskID;
79
- this.#discoveryAddress = discoveryAddress;
80
- this.#discoveryProtocol = discoveryProtocol;
81
- this.#db = db;
82
- this.#replicaVersion = replicaVersion;
83
- this.#onConsumed = onConsumed;
84
- this.#onFatal = onFatal;
85
- }
86
- // For readability in SQL statements.
87
- #cdc(table) {
88
- return this.#db(`${cdcSchema(this.#shard)}.${table}`);
89
- }
90
- async assumeOwnership() {
91
- const db = this.#db;
92
- const owner = this.#taskID;
93
- const ownerAddress = this.#discoveryAddress;
94
- const ownerProtocol = this.#discoveryProtocol;
95
- // we omit `ws://` so that old view syncer versions that are not expecting the protocol continue to not get it
96
- const addressWithProtocol = ownerProtocol === 'ws'
97
- ? ownerAddress
98
- : `${ownerProtocol}://${ownerAddress}`;
99
- await db `UPDATE ${this.#cdc('replicationState')} SET ${db({ owner, ownerAddress: addressWithProtocol })}`;
100
- this.#lc.info?.(`assumed ownership at ${addressWithProtocol}`);
101
- }
102
- async getLastWatermarkToStartStream() {
103
- // Before starting or restarting a stream from the change source,
104
- // wait for all queued changes to be processed so that we pick up
105
- // from the right spot.
106
- const { promise: ready, resolve } = resolver();
107
- this.#queue.enqueue(['ready', resolve]);
108
- await ready;
109
- const [{ lastWatermark }] = await this.#db `
110
- SELECT "lastWatermark" FROM ${this.#cdc('replicationState')}`;
111
- return lastWatermark;
112
- }
113
- purgeRecordsBefore(watermark) {
114
- return this.#db.begin(Mode.SERIALIZABLE, async (sql) => {
115
- disableStatementTimeout(sql);
116
- // Check ownership before performing the purge. The server is expected to
117
- // exit immediately when an ownership change is detected, but checking
118
- // explicitly guards against race conditions.
119
- const [{ owner }] = await sql `
120
- SELECT * FROM ${this.#cdc('replicationState')}`;
121
- if (owner !== this.#taskID) {
122
- this.#lc.error?.(`Change log purge requested (${watermark}) while no longer owner`);
123
- void this.stop();
124
- return 0;
125
- }
126
- const [{ deleted }] = await sql `
13
+ import "../change-source/protocol/current/downstream.js";
14
+ import "./change-streamer.js";
15
+ import { WatermarkTooOld } from "./error-type-enum.js";
16
+ import { AutoResetSignal, markResetRequired } from "./schema/tables.js";
17
+ const QUEUE_SIZE_BACK_PRESSURE_THRESHOLD = 1e5;
18
+ class Storer {
19
+ id = "storer";
20
+ #lc;
21
+ #shard;
22
+ #taskID;
23
+ #discoveryAddress;
24
+ #discoveryProtocol;
25
+ #db;
26
+ #replicaVersion;
27
+ #onConsumed;
28
+ #onFatal;
29
+ #queue = new Queue();
30
+ #running = false;
31
+ constructor(lc, shard, taskID, discoveryAddress, discoveryProtocol, db, replicaVersion, onConsumed, onFatal) {
32
+ this.#lc = lc;
33
+ this.#shard = shard;
34
+ this.#taskID = taskID;
35
+ this.#discoveryAddress = discoveryAddress;
36
+ this.#discoveryProtocol = discoveryProtocol;
37
+ this.#db = db;
38
+ this.#replicaVersion = replicaVersion;
39
+ this.#onConsumed = onConsumed;
40
+ this.#onFatal = onFatal;
41
+ }
42
+ // For readability in SQL statements.
43
+ #cdc(table) {
44
+ return this.#db(`${cdcSchema(this.#shard)}.${table}`);
45
+ }
46
+ async assumeOwnership() {
47
+ const db = this.#db;
48
+ const owner = this.#taskID;
49
+ const ownerAddress = this.#discoveryAddress;
50
+ const ownerProtocol = this.#discoveryProtocol;
51
+ const addressWithProtocol = ownerProtocol === "ws" ? ownerAddress : `${ownerProtocol}://${ownerAddress}`;
52
+ await db`UPDATE ${this.#cdc("replicationState")} SET ${db({ owner, ownerAddress: addressWithProtocol })}`;
53
+ this.#lc.info?.(`assumed ownership at ${addressWithProtocol}`);
54
+ }
55
+ async getLastWatermarkToStartStream() {
56
+ const { promise: ready, resolve } = resolver();
57
+ this.#queue.enqueue(["ready", resolve]);
58
+ await ready;
59
+ const [{ lastWatermark }] = await this.#db`
60
+ SELECT "lastWatermark" FROM ${this.#cdc("replicationState")}`;
61
+ return lastWatermark;
62
+ }
63
+ async getMinWatermarkForCatchup() {
64
+ const [{ minWatermark }] = await this.#db`
65
+ SELECT min(watermark) as "minWatermark" FROM ${this.#cdc("changeLog")}`;
66
+ return minWatermark;
67
+ }
68
+ purgeRecordsBefore(watermark) {
69
+ return this.#db.begin(SERIALIZABLE, async (sql) => {
70
+ disableStatementTimeout(sql);
71
+ const [{ owner }] = await sql`
72
+ SELECT * FROM ${this.#cdc("replicationState")}`;
73
+ if (owner !== this.#taskID) {
74
+ this.#lc.error?.(
75
+ `Change log purge requested (${watermark}) while no longer owner`
76
+ );
77
+ void this.stop();
78
+ return 0;
79
+ }
80
+ const [{ deleted }] = await sql`
127
81
  WITH purged AS (
128
- DELETE FROM ${this.#cdc('changeLog')} WHERE watermark < ${watermark}
82
+ DELETE FROM ${this.#cdc("changeLog")} WHERE watermark < ${watermark}
129
83
  RETURNING watermark, pos
130
84
  ) SELECT COUNT(*) as deleted FROM purged;`;
131
- return Number(deleted);
132
- });
133
- }
134
- store(entry) {
135
- this.#queue.enqueue(['change', entry]);
85
+ return Number(deleted);
86
+ });
87
+ }
88
+ store(entry) {
89
+ this.#queue.enqueue(["change", entry]);
90
+ }
91
+ abort() {
92
+ this.#queue.enqueue(["abort"]);
93
+ }
94
+ status(s) {
95
+ this.#queue.enqueue(s);
96
+ }
97
+ catchup(subscriber, mode) {
98
+ this.#queue.enqueue(["subscriber", { subscriber, mode }]);
99
+ }
100
+ #readyForMore = null;
101
+ readyForMore() {
102
+ if (!this.#running) {
103
+ return void 0;
136
104
  }
137
- abort() {
138
- this.#queue.enqueue(['abort']);
105
+ if (this.#readyForMore === null && this.#queue.size() > QUEUE_SIZE_BACK_PRESSURE_THRESHOLD) {
106
+ this.#lc.warn?.(
107
+ `applying back pressure with ${this.#queue.size()} queued changes`
108
+ );
109
+ this.#readyForMore = resolver();
139
110
  }
140
- status(s) {
141
- this.#queue.enqueue(s);
111
+ return this.#readyForMore?.promise;
112
+ }
113
+ #maybeReleaseBackPressure() {
114
+ if (this.#readyForMore !== null && // Wait for at least 10% of the threshold to free up.
115
+ this.#queue.size() < QUEUE_SIZE_BACK_PRESSURE_THRESHOLD * 0.9) {
116
+ this.#lc.info?.(
117
+ `releasing back pressure with ${this.#queue.size()} queued changes`
118
+ );
119
+ this.#readyForMore.resolve();
120
+ this.#readyForMore = null;
142
121
  }
143
- catchup(subscriber, mode) {
144
- this.#queue.enqueue(['subscriber', { subscriber, mode }]);
122
+ }
123
+ async run() {
124
+ this.#running = true;
125
+ try {
126
+ await this.#processQueue();
127
+ } finally {
128
+ this.#running = false;
129
+ this.#lc.info?.("storer stopped");
145
130
  }
146
- #readyForMore = null;
147
- readyForMore() {
148
- if (!this.#running) {
149
- return undefined;
131
+ }
132
+ async #processQueue() {
133
+ let tx = null;
134
+ let msg;
135
+ const catchupQueue = [];
136
+ while ((msg = await this.#queue.dequeue()) !== "stop") {
137
+ this.#maybeReleaseBackPressure();
138
+ const [msgType] = msg;
139
+ switch (msgType) {
140
+ case "ready": {
141
+ const signalReady = msg[1];
142
+ signalReady();
143
+ continue;
150
144
  }
151
- if (this.#readyForMore === null &&
152
- this.#queue.size() > QUEUE_SIZE_BACK_PRESSURE_THRESHOLD) {
153
- this.#lc.warn?.(`applying back pressure with ${this.#queue.size()} queued changes`);
154
- this.#readyForMore = resolver();
145
+ case "subscriber": {
146
+ const subscriber = msg[1];
147
+ if (tx) {
148
+ catchupQueue.push(subscriber);
149
+ } else {
150
+ await this.#startCatchup([subscriber]);
151
+ }
152
+ continue;
155
153
  }
156
- return this.#readyForMore?.promise;
157
- }
158
- #maybeReleaseBackPressure() {
159
- if (this.#readyForMore !== null &&
160
- // Wait for at least 10% of the threshold to free up.
161
- this.#queue.size() < QUEUE_SIZE_BACK_PRESSURE_THRESHOLD * 0.9) {
162
- this.#lc.info?.(`releasing back pressure with ${this.#queue.size()} queued changes`);
163
- this.#readyForMore.resolve();
164
- this.#readyForMore = null;
165
- }
166
- }
167
- async run() {
168
- this.#running = true;
169
- try {
170
- await this.#processQueue();
154
+ case "status":
155
+ this.#onConsumed(msg);
156
+ continue;
157
+ case "abort": {
158
+ if (tx) {
159
+ tx.pool.abort();
160
+ await tx.pool.done();
161
+ tx = null;
162
+ }
163
+ continue;
171
164
  }
172
- finally {
173
- this.#running = false;
174
- this.#lc.info?.('storer stopped');
165
+ }
166
+ const [watermark, downstream] = msg[1];
167
+ const [tag, change] = downstream;
168
+ if (tag === "begin") {
169
+ assert(!tx, "received BEGIN in the middle of a transaction");
170
+ const { promise, resolve, reject } = resolver();
171
+ tx = {
172
+ pool: new TransactionPool(
173
+ this.#lc.withContext("watermark", watermark),
174
+ SERIALIZABLE
175
+ ),
176
+ preCommitWatermark: watermark,
177
+ pos: 0,
178
+ startingReplicationState: promise
179
+ };
180
+ tx.pool.run(this.#db);
181
+ void tx.pool.process((tx2) => {
182
+ tx2`
183
+ SELECT * FROM ${this.#cdc("replicationState")}`.then(
184
+ ([result]) => resolve(result),
185
+ reject
186
+ );
187
+ return [];
188
+ });
189
+ } else {
190
+ assert(tx, `received ${tag} outside of transaction`);
191
+ tx.pos++;
192
+ }
193
+ const entry = {
194
+ watermark: tag === "commit" ? watermark : tx.preCommitWatermark,
195
+ precommit: tag === "commit" ? tx.preCommitWatermark : null,
196
+ pos: tx.pos,
197
+ change
198
+ };
199
+ const processed = tx.pool.process((tx2) => [
200
+ tx2`
201
+ INSERT INTO ${this.#cdc("changeLog")} ${tx2(entry)}`
202
+ ]);
203
+ if (tag === "data" && tx.pos % 1e4 === 0) {
204
+ await processed;
205
+ }
206
+ if (tag === "commit") {
207
+ const { owner } = await tx.startingReplicationState;
208
+ if (owner !== this.#taskID) {
209
+ tx.pool.fail(
210
+ new AbortError(`changeLog ownership has been assumed by ${owner}`)
211
+ );
212
+ } else {
213
+ const lastWatermark = watermark;
214
+ void tx.pool.process((tx2) => [
215
+ tx2`
216
+ UPDATE ${this.#cdc("replicationState")} SET ${tx2({ lastWatermark })}`
217
+ ]);
218
+ tx.pool.setDone();
175
219
  }
176
- }
177
- async #processQueue() {
178
- let tx = null;
179
- let msg;
180
- const catchupQueue = [];
181
- while ((msg = await this.#queue.dequeue()) !== 'stop') {
182
- this.#maybeReleaseBackPressure();
183
- const [msgType] = msg;
184
- switch (msgType) {
185
- case 'ready': {
186
- const signalReady = msg[1];
187
- signalReady();
188
- continue;
189
- }
190
- case 'subscriber': {
191
- const subscriber = msg[1];
192
- if (tx) {
193
- catchupQueue.push(subscriber); // Wait for the current tx to complete.
194
- }
195
- else {
196
- await this.#startCatchup([subscriber]); // Catch up immediately.
197
- }
198
- continue;
199
- }
200
- case 'status':
201
- this.#onConsumed(msg);
202
- continue;
203
- case 'abort': {
204
- if (tx) {
205
- tx.pool.abort();
206
- await tx.pool.done();
207
- tx = null;
208
- }
209
- continue;
210
- }
211
- }
212
- // msgType === 'change'
213
- const [watermark, downstream] = msg[1];
214
- const [tag, change] = downstream;
215
- if (tag === 'begin') {
216
- assert(!tx, 'received BEGIN in the middle of a transaction');
217
- const { promise, resolve, reject } = resolver();
218
- tx = {
219
- pool: new TransactionPool(this.#lc.withContext('watermark', watermark), Mode.SERIALIZABLE),
220
- preCommitWatermark: watermark,
221
- pos: 0,
222
- startingReplicationState: promise,
223
- };
224
- tx.pool.run(this.#db);
225
- // Pipeline a read of the current ReplicationState,
226
- // which will be checked before committing.
227
- void tx.pool.process(tx => {
228
- tx `
229
- SELECT * FROM ${this.#cdc('replicationState')}`.then(([result]) => resolve(result), reject);
230
- return [];
231
- });
232
- }
233
- else {
234
- assert(tx, `received ${tag} outside of transaction`);
235
- tx.pos++;
236
- }
237
- const entry = {
238
- watermark: tag === 'commit' ? watermark : tx.preCommitWatermark,
239
- precommit: tag === 'commit' ? tx.preCommitWatermark : null,
240
- pos: tx.pos,
241
- change: change,
242
- };
243
- const processed = tx.pool.process(tx => [
244
- tx `
245
- INSERT INTO ${this.#cdc('changeLog')} ${tx(entry)}`,
246
- ]);
247
- if (tag === 'data' && tx.pos % 10_000 === 0) {
248
- // Backpressure is exerted on commit when awaiting tx.pool.done().
249
- // However, backpressure checks need to be regularly done for
250
- // very large transactions in order to avoid memory blowup.
251
- await processed;
252
- }
253
- if (tag === 'commit') {
254
- const { owner } = await tx.startingReplicationState;
255
- if (owner !== this.#taskID) {
256
- // Ownership change reflected in the replicationState read in 'begin'.
257
- tx.pool.fail(new AbortError(`changeLog ownership has been assumed by ${owner}`));
258
- }
259
- else {
260
- // Update the replication state.
261
- const lastWatermark = watermark;
262
- void tx.pool.process(tx => [
263
- tx `
264
- UPDATE ${this.#cdc('replicationState')} SET ${tx({ lastWatermark })}`,
265
- ]);
266
- tx.pool.setDone();
267
- }
268
- try {
269
- await tx.pool.done();
270
- }
271
- catch (e) {
272
- if (e instanceof postgres.PostgresError &&
273
- e.code === PG_SERIALIZATION_FAILURE) {
274
- // Ownership change happened after the replicationState was read in 'begin'.
275
- throw new AbortError(`changeLog ownership has changed`, { cause: e });
276
- }
277
- throw e;
278
- }
279
- tx = null;
280
- // ACK the LSN to the upstream Postgres.
281
- this.#onConsumed(downstream);
282
- // Before beginning the next transaction, open a READONLY snapshot to
283
- // concurrently catchup any queued subscribers.
284
- await this.#startCatchup(catchupQueue.splice(0));
285
- }
286
- else if (tag === 'rollback') {
287
- // Aborted transactions are not stored in the changeLog. Abort the current tx
288
- // and process catchup of subscribers that were waiting for it to end.
289
- tx.pool.abort();
290
- await tx.pool.done();
291
- tx = null;
292
- await this.#startCatchup(catchupQueue.splice(0));
293
- }
220
+ try {
221
+ await tx.pool.done();
222
+ } catch (e) {
223
+ if (e instanceof postgres.PostgresError && e.code === PG_SERIALIZATION_FAILURE) {
224
+ throw new AbortError(`changeLog ownership has changed`, { cause: e });
225
+ }
226
+ throw e;
294
227
  }
228
+ tx = null;
229
+ this.#onConsumed(downstream);
230
+ await this.#startCatchup(catchupQueue.splice(0));
231
+ } else if (tag === "rollback") {
232
+ tx.pool.abort();
233
+ await tx.pool.done();
234
+ tx = null;
235
+ await this.#startCatchup(catchupQueue.splice(0));
236
+ }
295
237
  }
296
- async #startCatchup(subs) {
297
- if (subs.length === 0) {
298
- return;
299
- }
300
- const reader = new TransactionPool(this.#lc.withContext('pool', 'catchup'), Mode.READONLY);
301
- reader.run(this.#db);
302
- // Ensure that the transaction has started (and is thus holding a snapshot
303
- // of the database) before continuing on to commit more changes. This is
304
- // done by waiting for a no-op task to be processed by the pool, which
305
- // indicates that the BEGIN statement has been sent to the database.
306
- await reader.processReadTask(() => { });
307
- // Run the actual catchup queries in the background. Errors are handled in
308
- // #catchup() by disconnecting the associated subscriber.
309
- void Promise.all(subs.map(sub => this.#catchup(sub, reader))).finally(() => reader.setDone());
238
+ }
239
+ async #startCatchup(subs) {
240
+ if (subs.length === 0) {
241
+ return;
310
242
  }
311
- async #catchup({ subscriber: sub, mode }, reader) {
312
- try {
313
- await reader.processReadTask(async (tx) => {
314
- const start = Date.now();
315
- // When starting from initial-sync, there won't be a change with a watermark
316
- // equal to the replica version. This is the empty changeLog scenario.
317
- let watermarkFound = sub.watermark === this.#replicaVersion;
318
- let count = 0;
319
- let lastBatchConsumed;
320
- for await (const entries of tx `
321
- SELECT watermark, change FROM ${this.#cdc('changeLog')}
243
+ const reader = new TransactionPool(
244
+ this.#lc.withContext("pool", "catchup"),
245
+ READONLY
246
+ );
247
+ reader.run(this.#db);
248
+ await reader.processReadTask(() => {
249
+ });
250
+ void Promise.all(subs.map((sub) => this.#catchup(sub, reader))).finally(
251
+ () => reader.setDone()
252
+ );
253
+ }
254
+ async #catchup({ subscriber: sub, mode }, reader) {
255
+ try {
256
+ await reader.processReadTask(async (tx) => {
257
+ const start = Date.now();
258
+ let watermarkFound = sub.watermark === this.#replicaVersion;
259
+ let count = 0;
260
+ let lastBatchConsumed;
261
+ for await (const entries of tx`
262
+ SELECT watermark, change FROM ${this.#cdc("changeLog")}
322
263
  WHERE watermark >= ${sub.watermark}
323
- ORDER BY watermark, pos`.cursor(2000)) {
324
- // Wait for the last batch of entries to be consumed by the
325
- // subscriber before sending down the current batch. This pipelining
326
- // allows one batch of changes to be received from the change-db
327
- // while the previous batch of changes are sent to the subscriber,
328
- // resulting in flow control that caps the number of changes
329
- // referenced in memory to 2 * batch-size.
330
- const start = performance.now();
331
- await lastBatchConsumed;
332
- const elapsed = performance.now() - start;
333
- if (lastBatchConsumed) {
334
- (elapsed > 100 ? this.#lc.info : this.#lc.debug)?.(`waited ${elapsed.toFixed(3)} ms for ${sub.id} to consume last batch of catchup entries`);
335
- }
336
- for (const entry of entries) {
337
- if (entry.watermark === sub.watermark) {
338
- // This should be the first entry.
339
- // Catchup starts from *after* the watermark.
340
- watermarkFound = true;
341
- }
342
- else if (watermarkFound) {
343
- lastBatchConsumed = sub.catchup(toDownstream(entry)).result;
344
- count++;
345
- }
346
- else if (mode === 'backup') {
347
- throw new AutoResetSignal(`backup replica at watermark ${sub.watermark} is behind change db: ${entry.watermark})`);
348
- }
349
- else {
350
- this.#lc.warn?.(`rejecting subscriber at watermark ${sub.watermark} (earliest watermark: ${entry.watermark})`);
351
- sub.close(ErrorType.WatermarkTooOld, `earliest supported watermark is ${entry.watermark} (requested ${sub.watermark})`);
352
- return;
353
- }
354
- }
355
- }
356
- if (watermarkFound) {
357
- await lastBatchConsumed;
358
- this.#lc.info?.(`caught up ${sub.id} with ${count} changes (${Date.now() - start} ms)`);
359
- }
360
- else {
361
- this.#lc.warn?.(`subscriber at watermark ${sub.watermark} is ahead of latest watermark`);
362
- }
363
- // Flushes the backlog of messages buffered during catchup and
364
- // allows the subscription to forward subsequent messages immediately.
365
- sub.setCaughtUp();
366
- });
367
- }
368
- catch (err) {
369
- this.#lc.error?.(`error while catching up subscriber ${sub.id}`, err);
370
- if (err instanceof AutoResetSignal) {
371
- await markResetRequired(this.#db, this.#shard);
372
- this.#onFatal(err);
264
+ ORDER BY watermark, pos`.cursor(2e3)) {
265
+ const start2 = performance.now();
266
+ await lastBatchConsumed;
267
+ const elapsed = performance.now() - start2;
268
+ if (lastBatchConsumed) {
269
+ (elapsed > 100 ? this.#lc.info : this.#lc.debug)?.(
270
+ `waited ${elapsed.toFixed(3)} ms for ${sub.id} to consume last batch of catchup entries`
271
+ );
272
+ }
273
+ for (const entry of entries) {
274
+ if (entry.watermark === sub.watermark) {
275
+ watermarkFound = true;
276
+ } else if (watermarkFound) {
277
+ lastBatchConsumed = sub.catchup(toDownstream(entry)).result;
278
+ count++;
279
+ } else if (mode === "backup") {
280
+ throw new AutoResetSignal(
281
+ `backup replica at watermark ${sub.watermark} is behind change db: ${entry.watermark})`
282
+ );
283
+ } else {
284
+ this.#lc.warn?.(
285
+ `rejecting subscriber at watermark ${sub.watermark} (earliest watermark: ${entry.watermark})`
286
+ );
287
+ sub.close(
288
+ WatermarkTooOld,
289
+ `earliest supported watermark is ${entry.watermark} (requested ${sub.watermark})`
290
+ );
291
+ return;
373
292
  }
374
- sub.fail(err);
293
+ }
375
294
  }
295
+ if (watermarkFound) {
296
+ await lastBatchConsumed;
297
+ this.#lc.info?.(
298
+ `caught up ${sub.id} with ${count} changes (${Date.now() - start} ms)`
299
+ );
300
+ } else {
301
+ this.#lc.warn?.(
302
+ `subscriber at watermark ${sub.watermark} is ahead of latest watermark`
303
+ );
304
+ }
305
+ sub.setCaughtUp();
306
+ });
307
+ } catch (err) {
308
+ this.#lc.error?.(`error while catching up subscriber ${sub.id}`, err);
309
+ if (err instanceof AutoResetSignal) {
310
+ await markResetRequired(this.#db, this.#shard);
311
+ this.#onFatal(err);
312
+ }
313
+ sub.fail(err);
376
314
  }
377
- stop() {
378
- this.#queue.enqueue('stop');
379
- return promiseVoid;
380
- }
315
+ }
316
+ stop() {
317
+ this.#queue.enqueue("stop");
318
+ return promiseVoid;
319
+ }
381
320
  }
382
321
  function toDownstream(entry) {
383
- const { watermark, change } = entry;
384
- switch (change.tag) {
385
- case 'begin':
386
- return [watermark, ['begin', change, { commitWatermark: watermark }]];
387
- case 'commit':
388
- return [watermark, ['commit', change, { watermark }]];
389
- case 'rollback':
390
- return [watermark, ['rollback', change]];
391
- default:
392
- return [watermark, ['data', change]];
393
- }
322
+ const { watermark, change } = entry;
323
+ switch (change.tag) {
324
+ case "begin":
325
+ return [watermark, ["begin", change, { commitWatermark: watermark }]];
326
+ case "commit":
327
+ return [watermark, ["commit", change, { watermark }]];
328
+ case "rollback":
329
+ return [watermark, ["rollback", change]];
330
+ default:
331
+ return [watermark, ["data", change]];
332
+ }
394
333
  }
395
- //# sourceMappingURL=storer.js.map
334
+ export {
335
+ Storer
336
+ };
337
+ //# sourceMappingURL=storer.js.map