@rocicorp/zero 0.25.0-canary.1 → 0.25.0-canary.11

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 (1563) hide show
  1. package/out/analyze-query/src/bin-analyze.js +268 -257
  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 +76 -74
  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-ZZXMKAAG.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/replicache/src/kv/sqlite-store.d.ts.map +1 -1
  132. package/out/{chunk-ECUMGQGC.js → replicache/src/kv/sqlite-store.js} +27 -21
  133. package/out/replicache/src/kv/sqlite-store.js.map +1 -0
  134. package/out/{chunk-ASRS2LFV.js → replicache/src/kv/throw-if-closed.js} +4 -6
  135. package/out/replicache/src/kv/throw-if-closed.js.map +1 -0
  136. package/out/replicache/src/kv/write-impl-base.js +57 -0
  137. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  138. package/out/replicache/src/kv/write-impl.js +30 -0
  139. package/out/replicache/src/kv/write-impl.js.map +1 -0
  140. package/out/replicache/src/lazy.js +13 -0
  141. package/out/replicache/src/lazy.js.map +1 -0
  142. package/out/replicache/src/log-options.js +9 -0
  143. package/out/replicache/src/log-options.js.map +1 -0
  144. package/out/replicache/src/make-idb-name.js +13 -0
  145. package/out/replicache/src/make-idb-name.js.map +1 -0
  146. package/out/replicache/src/new-client-channel.js +51 -0
  147. package/out/replicache/src/new-client-channel.js.map +1 -0
  148. package/out/replicache/src/on-persist-channel.js +36 -0
  149. package/out/replicache/src/on-persist-channel.js.map +1 -0
  150. package/out/replicache/src/patch-operation.js +42 -0
  151. package/out/replicache/src/patch-operation.js.map +1 -0
  152. package/out/replicache/src/pending-mutations.js +16 -0
  153. package/out/replicache/src/pending-mutations.js.map +1 -0
  154. package/out/replicache/src/persist/client-gc.js +58 -0
  155. package/out/replicache/src/persist/client-gc.js.map +1 -0
  156. package/out/replicache/src/persist/client-group-gc.js +43 -0
  157. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  158. package/out/replicache/src/persist/client-groups.js +184 -0
  159. package/out/replicache/src/persist/client-groups.js.map +1 -0
  160. package/out/replicache/src/persist/clients.d.ts +3 -2
  161. package/out/replicache/src/persist/clients.d.ts.map +1 -1
  162. package/out/replicache/src/persist/clients.js +353 -0
  163. package/out/replicache/src/persist/clients.js.map +1 -0
  164. package/out/replicache/src/persist/collect-idb-databases.js +188 -0
  165. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  166. package/out/replicache/src/persist/gather-mem-only-visitor.js +27 -0
  167. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  168. package/out/replicache/src/persist/gather-not-cached-visitor.js +37 -0
  169. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  170. package/out/replicache/src/persist/heartbeat.js +48 -0
  171. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  172. package/out/replicache/src/persist/idb-databases-store-db-name.js +14 -0
  173. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  174. package/out/replicache/src/persist/idb-databases-store.js +92 -0
  175. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  176. package/out/replicache/src/persist/make-client-id.js +12 -0
  177. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  178. package/out/replicache/src/persist/persist.d.ts +2 -2
  179. package/out/replicache/src/persist/persist.d.ts.map +1 -1
  180. package/out/replicache/src/persist/persist.js +183 -0
  181. package/out/replicache/src/persist/persist.js.map +1 -0
  182. package/out/replicache/src/persist/refresh.d.ts +4 -3
  183. package/out/replicache/src/persist/refresh.d.ts.map +1 -1
  184. package/out/replicache/src/persist/refresh.js +198 -0
  185. package/out/replicache/src/persist/refresh.js.map +1 -0
  186. package/out/replicache/src/process-scheduler.js +96 -0
  187. package/out/replicache/src/process-scheduler.js.map +1 -0
  188. package/out/replicache/src/pusher.js +33 -0
  189. package/out/replicache/src/pusher.js.map +1 -0
  190. package/out/replicache/src/replicache-impl.d.ts +1 -1
  191. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  192. package/out/replicache/src/replicache-impl.js +1200 -0
  193. package/out/replicache/src/replicache-impl.js.map +1 -0
  194. package/out/replicache/src/replicache-options.d.ts +3 -2
  195. package/out/replicache/src/replicache-options.d.ts.map +1 -1
  196. package/out/replicache/src/report-error.js +6 -0
  197. package/out/replicache/src/report-error.js.map +1 -0
  198. package/out/replicache/src/request-idle.js +13 -0
  199. package/out/replicache/src/request-idle.js.map +1 -0
  200. package/out/replicache/src/scan-iterator.js +146 -0
  201. package/out/replicache/src/scan-iterator.js.map +1 -0
  202. package/out/replicache/src/scan-options.js +45 -0
  203. package/out/replicache/src/scan-options.js.map +1 -0
  204. package/out/replicache/src/set-interval-with-signal.js +12 -0
  205. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  206. package/out/replicache/src/subscriptions.js +355 -0
  207. package/out/replicache/src/subscriptions.js.map +1 -0
  208. package/out/replicache/src/sync/diff.d.ts +3 -2
  209. package/out/replicache/src/sync/diff.d.ts.map +1 -1
  210. package/out/replicache/src/sync/diff.js +72 -0
  211. package/out/replicache/src/sync/diff.js.map +1 -0
  212. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +9 -0
  213. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  214. package/out/replicache/src/sync/ids.js +9 -0
  215. package/out/replicache/src/sync/ids.js.map +1 -0
  216. package/out/replicache/src/sync/patch.js +49 -0
  217. package/out/replicache/src/sync/patch.js.map +1 -0
  218. package/out/replicache/src/sync/pull-error.js +16 -0
  219. package/out/replicache/src/sync/pull-error.js.map +1 -0
  220. package/out/replicache/src/sync/pull.d.ts +3 -2
  221. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  222. package/out/replicache/src/sync/pull.js +301 -0
  223. package/out/replicache/src/sync/pull.js.map +1 -0
  224. package/out/replicache/src/sync/push.js +88 -0
  225. package/out/replicache/src/sync/push.js.map +1 -0
  226. package/out/replicache/src/sync/request-id.js +20 -0
  227. package/out/replicache/src/sync/request-id.js.map +1 -0
  228. package/out/replicache/src/sync/sync-head-name.js +5 -0
  229. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  230. package/out/replicache/src/to-error.js +10 -0
  231. package/out/replicache/src/to-error.js.map +1 -0
  232. package/out/replicache/src/transaction-closed-error.js +19 -0
  233. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  234. package/out/replicache/src/transactions.js +152 -0
  235. package/out/replicache/src/transactions.js.map +1 -0
  236. package/out/replicache/src/version.js +5 -0
  237. package/out/replicache/src/version.js.map +1 -0
  238. package/out/replicache/src/with-transactions.js +28 -0
  239. package/out/replicache/src/with-transactions.js.map +1 -0
  240. package/out/shared/src/abort-error.js +6 -3
  241. package/out/shared/src/abort-error.js.map +1 -1
  242. package/out/shared/src/arrays.js +45 -43
  243. package/out/shared/src/arrays.js.map +1 -1
  244. package/out/shared/src/asserts.js +64 -68
  245. package/out/shared/src/asserts.js.map +1 -1
  246. package/out/shared/src/bigint-json.js +38 -42
  247. package/out/shared/src/bigint-json.js.map +1 -1
  248. package/out/shared/src/binary-search.js +18 -29
  249. package/out/shared/src/binary-search.js.map +1 -1
  250. package/out/shared/src/broadcast-channel.js +24 -0
  251. package/out/shared/src/broadcast-channel.js.map +1 -0
  252. package/out/shared/src/browser-env.js +25 -0
  253. package/out/shared/src/browser-env.js.map +1 -0
  254. package/out/shared/src/btree-set.js +464 -507
  255. package/out/shared/src/btree-set.js.map +1 -1
  256. package/out/shared/src/cache.js +34 -38
  257. package/out/shared/src/cache.js.map +1 -1
  258. package/out/shared/src/centroid.js +24 -24
  259. package/out/shared/src/centroid.js.map +1 -1
  260. package/out/shared/src/config.js +6 -3
  261. package/out/shared/src/config.js.map +1 -1
  262. package/out/shared/src/custom-key-map.js +58 -64
  263. package/out/shared/src/custom-key-map.js.map +1 -1
  264. package/out/shared/src/custom-key-set.js +51 -57
  265. package/out/shared/src/custom-key-set.js.map +1 -1
  266. package/out/shared/src/deep-clone.js +46 -0
  267. package/out/shared/src/deep-clone.js.map +1 -0
  268. package/out/shared/src/deep-merge.d.ts +24 -4
  269. package/out/shared/src/deep-merge.d.ts.map +1 -1
  270. package/out/shared/src/deep-merge.js +27 -0
  271. package/out/shared/src/deep-merge.js.map +1 -0
  272. package/out/shared/src/document-visible.js +74 -0
  273. package/out/shared/src/document-visible.js.map +1 -0
  274. package/out/shared/src/dotenv.js +5 -7
  275. package/out/shared/src/dotenv.js.map +1 -1
  276. package/out/shared/src/error.d.ts +4 -0
  277. package/out/shared/src/error.d.ts.map +1 -0
  278. package/out/shared/src/error.js +71 -0
  279. package/out/shared/src/error.js.map +1 -0
  280. package/out/shared/src/has-own.js +5 -3
  281. package/out/shared/src/has-own.js.map +1 -1
  282. package/out/shared/src/hash.js +15 -14
  283. package/out/shared/src/hash.js.map +1 -1
  284. package/out/shared/src/iterables.d.ts +0 -1
  285. package/out/shared/src/iterables.d.ts.map +1 -1
  286. package/out/shared/src/iterables.js +44 -80
  287. package/out/shared/src/iterables.js.map +1 -1
  288. package/out/shared/src/json-schema.js +30 -33
  289. package/out/shared/src/json-schema.js.map +1 -1
  290. package/out/shared/src/json.js +128 -143
  291. package/out/shared/src/json.js.map +1 -1
  292. package/out/shared/src/logging-test-utils.js +12 -19
  293. package/out/shared/src/logging-test-utils.js.map +1 -1
  294. package/out/shared/src/logging.d.ts.map +1 -1
  295. package/out/shared/src/logging.js +99 -83
  296. package/out/shared/src/logging.js.map +1 -1
  297. package/out/shared/src/must.js +9 -7
  298. package/out/shared/src/must.js.map +1 -1
  299. package/out/shared/src/navigator.js +5 -0
  300. package/out/shared/src/navigator.js.map +1 -0
  301. package/out/shared/src/object-traversal.d.ts +19 -0
  302. package/out/shared/src/object-traversal.d.ts.map +1 -0
  303. package/out/shared/src/object-traversal.js +27 -0
  304. package/out/shared/src/object-traversal.js.map +1 -0
  305. package/out/shared/src/objects.js +21 -22
  306. package/out/shared/src/objects.js.map +1 -1
  307. package/out/shared/src/options.d.ts +2 -0
  308. package/out/shared/src/options.d.ts.map +1 -1
  309. package/out/shared/src/options.js +289 -318
  310. package/out/shared/src/options.js.map +1 -1
  311. package/out/shared/src/parse-big-int.js +12 -10
  312. package/out/shared/src/parse-big-int.js.map +1 -1
  313. package/out/shared/src/promise-race.js +20 -0
  314. package/out/shared/src/promise-race.js.map +1 -0
  315. package/out/shared/src/queue.js +119 -122
  316. package/out/shared/src/queue.js.map +1 -1
  317. package/out/shared/src/rand.js +8 -10
  318. package/out/shared/src/rand.js.map +1 -1
  319. package/out/shared/src/random-uint64.js +9 -0
  320. package/out/shared/src/random-uint64.js.map +1 -0
  321. package/out/shared/src/random-values.js +13 -0
  322. package/out/shared/src/random-values.js.map +1 -0
  323. package/out/shared/src/resolved-promises.js +12 -9
  324. package/out/shared/src/resolved-promises.js.map +1 -1
  325. package/out/shared/src/sentinels.js +13 -6
  326. package/out/shared/src/sentinels.js.map +1 -1
  327. package/out/shared/src/set-utils.js +63 -62
  328. package/out/shared/src/set-utils.js.map +1 -1
  329. package/out/shared/src/size-of-value.js +58 -0
  330. package/out/shared/src/size-of-value.js.map +1 -0
  331. package/out/shared/src/sleep.js +45 -53
  332. package/out/shared/src/sleep.js.map +1 -1
  333. package/out/shared/src/string-compare.js +12 -9
  334. package/out/shared/src/string-compare.js.map +1 -1
  335. package/out/shared/src/subscribable.js +34 -0
  336. package/out/shared/src/subscribable.js.map +1 -0
  337. package/out/shared/src/tdigest-schema.js +7 -7
  338. package/out/shared/src/tdigest-schema.js.map +1 -1
  339. package/out/shared/src/tdigest.js +247 -271
  340. package/out/shared/src/tdigest.js.map +1 -1
  341. package/out/shared/src/valita.js +195 -207
  342. package/out/shared/src/valita.js.map +1 -1
  343. package/out/z2s/src/compiler.d.ts +2 -2
  344. package/out/z2s/src/compiler.d.ts.map +1 -1
  345. package/out/z2s/src/compiler.js +437 -310
  346. package/out/z2s/src/compiler.js.map +1 -1
  347. package/out/z2s/src/sql.d.ts +1 -1
  348. package/out/z2s/src/sql.d.ts.map +1 -1
  349. package/out/z2s/src/sql.js +186 -218
  350. package/out/z2s/src/sql.js.map +1 -1
  351. package/out/zero/package.json.js +9 -0
  352. package/out/zero/package.json.js.map +1 -0
  353. package/out/zero/src/adapters/drizzle.js +5 -2
  354. package/out/zero/src/adapters/drizzle.js.map +1 -1
  355. package/out/zero/src/adapters/pg.js +7 -2
  356. package/out/zero/src/adapters/pg.js.map +1 -1
  357. package/out/zero/src/adapters/postgresjs.js +7 -2
  358. package/out/zero/src/adapters/postgresjs.js.map +1 -1
  359. package/out/zero/src/analyze-query.js +1 -1
  360. package/out/zero/src/analyze-query.js.map +1 -1
  361. package/out/zero/src/ast-to-zql.js +1 -1
  362. package/out/zero/src/ast-to-zql.js.map +1 -1
  363. package/out/zero/src/build-schema.js +3 -5
  364. package/out/zero/src/build-schema.js.map +1 -1
  365. package/out/zero/src/change-protocol/v0.js +5 -3
  366. package/out/zero/src/change-protocol/v0.js.map +1 -1
  367. package/out/zero/src/cli.js +2 -2
  368. package/out/zero/src/cli.js.map +1 -1
  369. package/out/zero/src/deploy-permissions.js +1 -1
  370. package/out/zero/src/deploy-permissions.js.map +1 -1
  371. package/out/zero/src/expo-sqlite.js +5 -0
  372. package/out/zero/src/expo-sqlite.js.map +1 -0
  373. package/out/zero/src/op-sqlite.js +5 -0
  374. package/out/zero/src/op-sqlite.js.map +1 -0
  375. package/out/zero/src/pg.js +29 -3
  376. package/out/zero/src/pg.js.map +1 -1
  377. package/out/zero/src/react-native.js +13 -0
  378. package/out/zero/src/react-native.js.map +1 -0
  379. package/out/zero/src/react.js +17 -0
  380. package/out/zero/src/react.js.map +1 -0
  381. package/out/zero/src/server.js +25 -3
  382. package/out/zero/src/server.js.map +1 -1
  383. package/out/zero/src/solid.js +15 -0
  384. package/out/zero/src/solid.js.map +1 -0
  385. package/out/zero/src/sqlite.js +7 -0
  386. package/out/zero/src/sqlite.js.map +1 -0
  387. package/out/zero/src/transform-query.js +1 -1
  388. package/out/zero/src/transform-query.js.map +1 -1
  389. package/out/zero/src/zero-cache-dev.js +133 -105
  390. package/out/zero/src/zero-cache-dev.js.map +1 -1
  391. package/out/zero/src/zero-out.d.ts +3 -0
  392. package/out/zero/src/zero-out.d.ts.map +1 -0
  393. package/out/zero/src/zero-out.js +13 -0
  394. package/out/zero/src/zero-out.js.map +1 -0
  395. package/out/zero/src/zero.js +67 -0
  396. package/out/zero/src/zero.js.map +1 -0
  397. package/out/zero/src/zqlite.js +11 -3
  398. package/out/zero/src/zqlite.js.map +1 -1
  399. package/out/zero-cache/src/auth/jwt.d.ts +3 -0
  400. package/out/zero-cache/src/auth/jwt.d.ts.map +1 -1
  401. package/out/zero-cache/src/auth/jwt.js +33 -38
  402. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  403. package/out/zero-cache/src/auth/load-permissions.d.ts +1 -1
  404. package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
  405. package/out/zero-cache/src/auth/load-permissions.js +61 -45
  406. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  407. package/out/zero-cache/src/auth/read-authorizer.js +79 -91
  408. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  409. package/out/zero-cache/src/auth/write-authorizer.d.ts +4 -3
  410. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  411. package/out/zero-cache/src/auth/write-authorizer.js +387 -328
  412. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  413. package/out/zero-cache/src/config/network.js +42 -45
  414. package/out/zero-cache/src/config/network.js.map +1 -1
  415. package/out/zero-cache/src/config/normalize.js +86 -83
  416. package/out/zero-cache/src/config/normalize.js.map +1 -1
  417. package/out/zero-cache/src/config/zero-config.d.ts +23 -0
  418. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  419. package/out/zero-cache/src/config/zero-config.js +694 -682
  420. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  421. package/out/zero-cache/src/custom/fetch.d.ts +5 -5
  422. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  423. package/out/zero-cache/src/custom/fetch.js +170 -162
  424. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  425. package/out/zero-cache/src/custom-queries/transform-query.d.ts +10 -3
  426. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  427. package/out/zero-cache/src/custom-queries/transform-query.js +101 -109
  428. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  429. package/out/zero-cache/src/db/create.js +32 -36
  430. package/out/zero-cache/src/db/create.js.map +1 -1
  431. package/out/zero-cache/src/db/delete-lite-db.js +9 -6
  432. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  433. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  434. package/out/zero-cache/src/db/lite-tables.js +150 -174
  435. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  436. package/out/zero-cache/src/db/migration-lite.js +170 -165
  437. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  438. package/out/zero-cache/src/db/migration.js +157 -137
  439. package/out/zero-cache/src/db/migration.js.map +1 -1
  440. package/out/zero-cache/src/db/mode-enum.d.ts +2 -0
  441. package/out/zero-cache/src/db/mode-enum.d.ts.map +1 -1
  442. package/out/zero-cache/src/db/mode-enum.js +9 -3
  443. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  444. package/out/zero-cache/src/db/pg-copy.js +51 -90
  445. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  446. package/out/zero-cache/src/db/pg-to-lite.d.ts +10 -0
  447. package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
  448. package/out/zero-cache/src/db/pg-to-lite.js +116 -97
  449. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  450. package/out/zero-cache/src/db/pg-type-parser.js +27 -39
  451. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  452. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +11 -6
  453. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -1
  454. package/out/zero-cache/src/db/postgres-type-class-enum.js +17 -9
  455. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +1 -1
  456. package/out/zero-cache/src/db/specs.d.ts +1 -7
  457. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  458. package/out/zero-cache/src/db/specs.js +66 -40
  459. package/out/zero-cache/src/db/specs.js.map +1 -1
  460. package/out/zero-cache/src/db/statements.d.ts +1 -1
  461. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  462. package/out/zero-cache/src/db/statements.js +59 -52
  463. package/out/zero-cache/src/db/statements.js.map +1 -1
  464. package/out/zero-cache/src/db/transaction-pool.d.ts +1 -1
  465. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  466. package/out/zero-cache/src/db/transaction-pool.js +372 -501
  467. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  468. package/out/zero-cache/src/db/warmup.js +25 -12
  469. package/out/zero-cache/src/db/warmup.js.map +1 -1
  470. package/out/zero-cache/src/observability/events.js +71 -82
  471. package/out/zero-cache/src/observability/events.js.map +1 -1
  472. package/out/zero-cache/src/observability/metrics.js +54 -32
  473. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  474. package/out/zero-cache/src/scripts/decommission.d.ts +50 -0
  475. package/out/zero-cache/src/scripts/decommission.d.ts.map +1 -0
  476. package/out/zero-cache/src/scripts/decommission.js +55 -0
  477. package/out/zero-cache/src/scripts/decommission.js.map +1 -0
  478. package/out/zero-cache/src/scripts/deploy-permissions.js +128 -118
  479. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  480. package/out/zero-cache/src/scripts/permissions.d.ts +1 -1
  481. package/out/zero-cache/src/scripts/permissions.d.ts.map +1 -1
  482. package/out/zero-cache/src/scripts/permissions.js +108 -100
  483. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  484. package/out/zero-cache/src/server/anonymous-otel-start.js +410 -366
  485. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  486. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  487. package/out/zero-cache/src/server/change-streamer.js +99 -64
  488. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  489. package/out/zero-cache/src/server/inspector-delegate.d.ts.map +1 -1
  490. package/out/zero-cache/src/server/inspector-delegate.js +112 -108
  491. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  492. package/out/zero-cache/src/server/logging.d.ts +1 -1
  493. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  494. package/out/zero-cache/src/server/logging.js +26 -19
  495. package/out/zero-cache/src/server/logging.js.map +1 -1
  496. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  497. package/out/zero-cache/src/server/main.js +137 -120
  498. package/out/zero-cache/src/server/main.js.map +1 -1
  499. package/out/zero-cache/src/server/mutator.js +19 -0
  500. package/out/zero-cache/src/server/mutator.js.map +1 -0
  501. package/out/zero-cache/src/server/otel-diag-logger.d.ts +1 -1
  502. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +1 -1
  503. package/out/zero-cache/src/server/otel-diag-logger.js +67 -70
  504. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  505. package/out/zero-cache/src/server/otel-log-sink.js +40 -41
  506. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  507. package/out/zero-cache/src/server/otel-start.d.ts +1 -1
  508. package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
  509. package/out/zero-cache/src/server/otel-start.js +57 -68
  510. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  511. package/out/zero-cache/src/server/reaper.js +34 -26
  512. package/out/zero-cache/src/server/reaper.js.map +1 -1
  513. package/out/zero-cache/src/server/replicator.js +53 -31
  514. package/out/zero-cache/src/server/replicator.js.map +1 -1
  515. package/out/zero-cache/src/server/runner/main.js +6 -4
  516. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  517. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  518. package/out/zero-cache/src/server/runner/run-worker.js +46 -50
  519. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  520. package/out/zero-cache/src/server/runner/runtime.js +33 -32
  521. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  522. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  523. package/out/zero-cache/src/server/runner/zero-dispatcher.js +28 -22
  524. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  525. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  526. package/out/zero-cache/src/server/syncer.js +124 -63
  527. package/out/zero-cache/src/server/syncer.js.map +1 -1
  528. package/out/zero-cache/src/server/worker-dispatcher.d.ts +1 -1
  529. package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -1
  530. package/out/zero-cache/src/server/worker-dispatcher.js +112 -106
  531. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  532. package/out/zero-cache/src/server/worker-urls.d.ts +7 -0
  533. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -0
  534. package/out/zero-cache/src/server/worker-urls.js +21 -0
  535. package/out/zero-cache/src/server/worker-urls.js.map +1 -0
  536. package/out/zero-cache/src/services/analyze.d.ts +4 -9
  537. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  538. package/out/zero-cache/src/services/analyze.js +118 -121
  539. package/out/zero-cache/src/services/analyze.js.map +1 -1
  540. package/out/zero-cache/src/services/change-source/column-metadata.d.ts +10 -3
  541. package/out/zero-cache/src/services/change-source/column-metadata.d.ts.map +1 -1
  542. package/out/zero-cache/src/services/change-source/column-metadata.js +154 -144
  543. package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
  544. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +1 -1
  545. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
  546. package/out/zero-cache/src/services/change-source/custom/change-source.js +197 -171
  547. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  548. package/out/zero-cache/src/services/change-source/custom/sync-schema.js +11 -3
  549. package/out/zero-cache/src/services/change-source/custom/sync-schema.js.map +1 -1
  550. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
  551. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  552. package/out/zero-cache/src/services/change-source/pg/change-source.js +622 -623
  553. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  554. package/out/zero-cache/src/services/change-source/pg/decommission.js +24 -23
  555. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  556. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -1
  557. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  558. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +327 -284
  559. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  560. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +2 -3
  561. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +1 -1
  562. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +61 -69
  563. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  564. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +247 -257
  565. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  566. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +127 -119
  567. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  568. package/out/zero-cache/src/services/change-source/pg/lsn.js +20 -19
  569. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  570. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +5 -5
  571. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +96 -119
  572. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  573. package/out/zero-cache/src/services/change-source/pg/schema/init.js +138 -117
  574. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  575. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +2 -2
  576. package/out/zero-cache/src/services/change-source/pg/schema/published.js +67 -74
  577. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  578. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +1 -1
  579. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +199 -188
  580. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  581. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +53 -38
  582. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  583. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +11 -3
  584. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  585. package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts +1 -0
  586. package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts.map +1 -1
  587. package/out/zero-cache/src/services/change-source/protocol/current/control.js +13 -19
  588. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  589. package/out/zero-cache/src/services/change-source/protocol/current/data.js +143 -116
  590. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  591. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +2 -0
  592. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
  593. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +29 -19
  594. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  595. package/out/zero-cache/src/services/change-source/protocol/current/json.d.ts +8 -0
  596. package/out/zero-cache/src/services/change-source/protocol/current/json.d.ts.map +1 -0
  597. package/out/zero-cache/src/services/change-source/protocol/current/json.js +19 -0
  598. package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -0
  599. package/out/zero-cache/src/services/change-source/protocol/current/path.js +5 -20
  600. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  601. package/out/zero-cache/src/services/change-source/protocol/current/status.js +12 -13
  602. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  603. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -1
  604. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  605. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +5 -4
  606. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  607. package/out/zero-cache/src/services/change-source/protocol/current.d.ts +1 -0
  608. package/out/zero-cache/src/services/change-source/protocol/current.d.ts.map +1 -1
  609. package/out/zero-cache/src/services/change-source/protocol/current.js +38 -7
  610. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  611. package/out/zero-cache/src/services/change-source/replica-schema.d.ts.map +1 -1
  612. package/out/zero-cache/src/services/change-source/replica-schema.js +67 -37
  613. package/out/zero-cache/src/services/change-source/replica-schema.js.map +1 -1
  614. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +1 -1
  615. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +1 -1
  616. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +139 -157
  617. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  618. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +11 -4
  619. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  620. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +208 -157
  621. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  622. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  623. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  624. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +242 -349
  625. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  626. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +5 -1
  627. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  628. package/out/zero-cache/src/services/change-streamer/change-streamer.js +24 -22
  629. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  630. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +9 -4
  631. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +1 -1
  632. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +1 -1
  633. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  634. package/out/zero-cache/src/services/change-streamer/forwarder.js +53 -57
  635. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  636. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts +16 -0
  637. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts.map +1 -0
  638. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +48 -0
  639. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -0
  640. package/out/zero-cache/src/services/change-streamer/schema/init.js +82 -68
  641. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  642. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +2 -2
  643. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  644. package/out/zero-cache/src/services/change-streamer/schema/tables.js +93 -78
  645. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  646. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +58 -0
  647. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +1 -1
  648. package/out/zero-cache/src/services/change-streamer/snapshot.js +28 -18
  649. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  650. package/out/zero-cache/src/services/change-streamer/storer.d.ts +3 -2
  651. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  652. package/out/zero-cache/src/services/change-streamer/storer.js +308 -353
  653. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  654. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +3 -2
  655. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  656. package/out/zero-cache/src/services/change-streamer/subscriber.js +85 -87
  657. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  658. package/out/zero-cache/src/services/heapz.js +21 -25
  659. package/out/zero-cache/src/services/heapz.js.map +1 -1
  660. package/out/zero-cache/src/services/http-service.d.ts +5 -5
  661. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  662. package/out/zero-cache/src/services/http-service.js +57 -59
  663. package/out/zero-cache/src/services/http-service.js.map +1 -1
  664. package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
  665. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  666. package/out/zero-cache/src/services/life-cycle.js +216 -255
  667. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  668. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +76 -130
  669. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  670. package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
  671. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  672. package/out/zero-cache/src/services/litestream/commands.js +201 -154
  673. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  674. package/out/zero-cache/src/services/mutagen/error.js +11 -6
  675. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  676. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +2 -1
  677. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  678. package/out/zero-cache/src/services/mutagen/mutagen.js +271 -267
  679. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  680. package/out/zero-cache/src/services/mutagen/pusher.d.ts +217 -21
  681. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  682. package/out/zero-cache/src/services/mutagen/pusher.js +354 -348
  683. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  684. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
  685. package/out/zero-cache/src/services/replicator/change-processor.js +483 -497
  686. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  687. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  688. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  689. package/out/zero-cache/src/services/replicator/incremental-sync.js +97 -97
  690. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  691. package/out/zero-cache/src/services/replicator/notifier.js +28 -52
  692. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  693. package/out/zero-cache/src/services/replicator/replication-status.d.ts +2 -0
  694. package/out/zero-cache/src/services/replicator/replication-status.d.ts.map +1 -1
  695. package/out/zero-cache/src/services/replicator/replication-status.js +113 -83
  696. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  697. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  698. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  699. package/out/zero-cache/src/services/replicator/replicator.js +33 -26
  700. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  701. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +1 -1
  702. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  703. package/out/zero-cache/src/services/replicator/schema/change-log.js +74 -86
  704. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  705. package/out/zero-cache/src/services/replicator/schema/constants.js +5 -7
  706. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  707. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +2 -2
  708. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  709. package/out/zero-cache/src/services/replicator/schema/replication-state.js +70 -74
  710. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  711. package/out/zero-cache/src/services/run-ast.d.ts +9 -3
  712. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  713. package/out/zero-cache/src/services/run-ast.js +91 -78
  714. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  715. package/out/zero-cache/src/services/runner.d.ts +1 -1
  716. package/out/zero-cache/src/services/runner.d.ts.map +1 -1
  717. package/out/zero-cache/src/services/runner.js +40 -40
  718. package/out/zero-cache/src/services/runner.js.map +1 -1
  719. package/out/zero-cache/src/services/running-state.d.ts +1 -1
  720. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  721. package/out/zero-cache/src/services/running-state.js +122 -119
  722. package/out/zero-cache/src/services/running-state.js.map +1 -1
  723. package/out/zero-cache/src/services/statz.js +184 -162
  724. package/out/zero-cache/src/services/statz.js.map +1 -1
  725. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +40 -39
  726. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  727. package/out/zero-cache/src/services/view-syncer/client-handler.js +307 -298
  728. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  729. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  730. package/out/zero-cache/src/services/view-syncer/client-schema.js +80 -82
  731. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  732. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
  733. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +84 -94
  734. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  735. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +2 -4
  736. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  737. package/out/zero-cache/src/services/view-syncer/cvr-store.js +654 -611
  738. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  739. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +1 -1
  740. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  741. package/out/zero-cache/src/services/view-syncer/cvr.js +633 -695
  742. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  743. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +1 -0
  744. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -1
  745. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +38 -55
  746. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  747. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +2 -1
  748. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  749. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +175 -85
  750. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  751. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +18 -15
  752. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  753. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +579 -462
  754. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  755. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +1 -1
  756. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  757. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +229 -277
  758. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  759. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  760. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +57 -122
  761. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  762. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  763. package/out/zero-cache/src/services/view-syncer/schema/init.js +177 -131
  764. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  765. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +4 -4
  766. package/out/zero-cache/src/services/view-syncer/schema/types.js +265 -257
  767. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  768. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  769. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  770. package/out/zero-cache/src/services/view-syncer/snapshotter.js +295 -338
  771. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  772. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +13 -7
  773. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  774. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +11 -4
  775. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  776. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1512 -1284
  777. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  778. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  779. package/out/zero-cache/src/types/error-with-level.js +30 -21
  780. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  781. package/out/zero-cache/src/types/http.js +27 -14
  782. package/out/zero-cache/src/types/http.js.map +1 -1
  783. package/out/zero-cache/src/types/lexi-version.js +46 -31
  784. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  785. package/out/zero-cache/src/types/lite.js +118 -125
  786. package/out/zero-cache/src/types/lite.js.map +1 -1
  787. package/out/zero-cache/src/types/names.js +6 -3
  788. package/out/zero-cache/src/types/names.js.map +1 -1
  789. package/out/zero-cache/src/types/pg-data-type.js +74 -68
  790. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  791. package/out/zero-cache/src/types/pg-types.js +17 -72
  792. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  793. package/out/zero-cache/src/types/pg.d.ts +1 -1
  794. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  795. package/out/zero-cache/src/types/pg.js +213 -233
  796. package/out/zero-cache/src/types/pg.js.map +1 -1
  797. package/out/zero-cache/src/types/processes.d.ts +2 -2
  798. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  799. package/out/zero-cache/src/types/processes.js +95 -143
  800. package/out/zero-cache/src/types/processes.js.map +1 -1
  801. package/out/zero-cache/src/types/profiler.js +29 -30
  802. package/out/zero-cache/src/types/profiler.js.map +1 -1
  803. package/out/zero-cache/src/types/row-key.js +30 -68
  804. package/out/zero-cache/src/types/row-key.js.map +1 -1
  805. package/out/zero-cache/src/types/schema-versions.js +25 -19
  806. package/out/zero-cache/src/types/schema-versions.js.map +1 -1
  807. package/out/zero-cache/src/types/shards.js +50 -36
  808. package/out/zero-cache/src/types/shards.js.map +1 -1
  809. package/out/zero-cache/src/types/sql.js +9 -13
  810. package/out/zero-cache/src/types/sql.js.map +1 -1
  811. package/out/zero-cache/src/types/streams.d.ts +1 -1
  812. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  813. package/out/zero-cache/src/types/streams.js +246 -245
  814. package/out/zero-cache/src/types/streams.js.map +1 -1
  815. package/out/zero-cache/src/types/strings.js +14 -11
  816. package/out/zero-cache/src/types/strings.js.map +1 -1
  817. package/out/zero-cache/src/types/subscription.d.ts +16 -1
  818. package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
  819. package/out/zero-cache/src/types/subscription.js +202 -225
  820. package/out/zero-cache/src/types/subscription.js.map +1 -1
  821. package/out/zero-cache/src/types/url-params.js +35 -30
  822. package/out/zero-cache/src/types/url-params.js.map +1 -1
  823. package/out/zero-cache/src/types/websocket-handoff.d.ts +5 -4
  824. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  825. package/out/zero-cache/src/types/websocket-handoff.js +68 -76
  826. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  827. package/out/zero-cache/src/types/ws.js +56 -59
  828. package/out/zero-cache/src/types/ws.js.map +1 -1
  829. package/out/zero-cache/src/workers/connect-params.js +44 -40
  830. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  831. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  832. package/out/zero-cache/src/workers/connection.js +282 -243
  833. package/out/zero-cache/src/workers/connection.js.map +1 -1
  834. package/out/zero-cache/src/workers/mutator.js +24 -0
  835. package/out/zero-cache/src/workers/mutator.js.map +1 -0
  836. package/out/zero-cache/src/workers/replicator.d.ts +1 -1
  837. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  838. package/out/zero-cache/src/workers/replicator.js +103 -106
  839. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  840. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +179 -147
  841. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  842. package/out/zero-cache/src/workers/syncer.d.ts +3 -3
  843. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  844. package/out/zero-cache/src/workers/syncer.js +192 -171
  845. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  846. package/out/zero-client/src/client/active-clients-manager.js +199 -0
  847. package/out/zero-client/src/client/active-clients-manager.js.map +1 -0
  848. package/out/zero-client/src/client/bindings.d.ts +43 -0
  849. package/out/zero-client/src/client/bindings.d.ts.map +1 -0
  850. package/out/zero-client/src/client/bindings.js +33 -0
  851. package/out/zero-client/src/client/bindings.js.map +1 -0
  852. package/out/zero-client/src/client/client-error-kind-enum.d.ts +12 -12
  853. package/out/zero-client/src/client/client-error-kind-enum.d.ts.map +1 -1
  854. package/out/zero-client/src/client/client-error-kind-enum.js +29 -0
  855. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -0
  856. package/out/zero-client/src/client/connection-manager.d.ts +36 -40
  857. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  858. package/out/zero-client/src/client/connection-manager.js +310 -0
  859. package/out/zero-client/src/client/connection-manager.js.map +1 -0
  860. package/out/zero-client/src/client/connection-status-enum.d.ts +2 -0
  861. package/out/zero-client/src/client/connection-status-enum.d.ts.map +1 -1
  862. package/out/zero-client/src/client/connection-status-enum.js +15 -0
  863. package/out/zero-client/src/client/connection-status-enum.js.map +1 -0
  864. package/out/zero-client/src/client/connection.d.ts +57 -6
  865. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  866. package/out/zero-client/src/client/connection.js +103 -0
  867. package/out/zero-client/src/client/connection.js.map +1 -0
  868. package/out/zero-client/src/client/context.d.ts +9 -10
  869. package/out/zero-client/src/client/context.d.ts.map +1 -1
  870. package/out/zero-client/src/client/context.js +104 -0
  871. package/out/zero-client/src/client/context.js.map +1 -0
  872. package/out/zero-client/src/client/crud.d.ts +8 -6
  873. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  874. package/out/zero-client/src/client/crud.js +225 -0
  875. package/out/zero-client/src/client/crud.js.map +1 -0
  876. package/out/zero-client/src/client/custom.d.ts +48 -25
  877. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  878. package/out/zero-client/src/client/custom.js +128 -0
  879. package/out/zero-client/src/client/custom.js.map +1 -0
  880. package/out/zero-client/src/client/delete-clients-manager.d.ts +2 -2
  881. package/out/zero-client/src/client/delete-clients-manager.d.ts.map +1 -1
  882. package/out/zero-client/src/client/delete-clients-manager.js +71 -0
  883. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -0
  884. package/out/zero-client/src/client/enable-analytics.js +18 -0
  885. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  886. package/out/zero-client/src/client/error.d.ts +51 -166
  887. package/out/zero-client/src/client/error.d.ts.map +1 -1
  888. package/out/zero-client/src/client/error.js +148 -0
  889. package/out/zero-client/src/client/error.js.map +1 -0
  890. package/out/zero-client/src/client/http-string.js +11 -0
  891. package/out/zero-client/src/client/http-string.js.map +1 -0
  892. package/out/zero-client/src/client/inspector/client-group.js +27 -0
  893. package/out/zero-client/src/client/inspector/client-group.js.map +1 -0
  894. package/out/zero-client/src/client/inspector/client.js +28 -0
  895. package/out/zero-client/src/client/inspector/client.js.map +1 -0
  896. package/out/zero-client/src/client/inspector/html-dialog-prompt.d.ts.map +1 -1
  897. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +77 -0
  898. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
  899. package/out/zero-client/src/client/inspector/inspector.d.ts +8 -3
  900. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  901. package/out/zero-client/src/client/inspector/inspector.js +54 -0
  902. package/out/zero-client/src/client/inspector/inspector.js.map +1 -0
  903. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +4 -1
  904. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  905. package/out/zero-client/src/client/inspector/lazy-inspector.js +243 -0
  906. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
  907. package/out/zero-client/src/client/inspector/query.d.ts.map +1 -1
  908. package/out/zero-client/src/client/inspector/query.js +82 -0
  909. package/out/zero-client/src/client/inspector/query.js.map +1 -0
  910. package/out/zero-client/src/client/ivm-branch.d.ts +4 -4
  911. package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
  912. package/out/zero-client/src/client/ivm-branch.js +149 -0
  913. package/out/zero-client/src/client/ivm-branch.js.map +1 -0
  914. package/out/zero-client/src/client/keys.js +45 -0
  915. package/out/zero-client/src/client/keys.js.map +1 -0
  916. package/out/zero-client/src/client/log-options.js +60 -0
  917. package/out/zero-client/src/client/log-options.js.map +1 -0
  918. package/out/zero-client/src/client/make-mutate-property.d.ts +43 -0
  919. package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -0
  920. package/out/zero-client/src/client/make-mutate-property.js +38 -0
  921. package/out/zero-client/src/client/make-mutate-property.js.map +1 -0
  922. package/out/zero-client/src/client/make-replicache-mutators.d.ts +34 -0
  923. package/out/zero-client/src/client/make-replicache-mutators.d.ts.map +1 -0
  924. package/out/zero-client/src/client/make-replicache-mutators.js +103 -0
  925. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -0
  926. package/out/zero-client/src/client/metric-name-enum.js +15 -0
  927. package/out/zero-client/src/client/metric-name-enum.js.map +1 -0
  928. package/out/zero-client/src/client/metrics.d.ts +2 -2
  929. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  930. package/out/zero-client/src/client/metrics.js +249 -0
  931. package/out/zero-client/src/client/metrics.js.map +1 -0
  932. package/out/zero-client/src/client/mutation-tracker.d.ts +12 -4
  933. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  934. package/out/zero-client/src/client/mutation-tracker.js +363 -0
  935. package/out/zero-client/src/client/mutation-tracker.js.map +1 -0
  936. package/out/zero-client/src/client/mutator-proxy.d.ts +15 -0
  937. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -0
  938. package/out/zero-client/src/client/mutator-proxy.js +132 -0
  939. package/out/zero-client/src/client/mutator-proxy.js.map +1 -0
  940. package/out/zero-client/src/client/options.d.ts +77 -24
  941. package/out/zero-client/src/client/options.d.ts.map +1 -1
  942. package/out/zero-client/src/client/options.js +11 -0
  943. package/out/zero-client/src/client/options.js.map +1 -0
  944. package/out/zero-client/src/client/query-manager.d.ts +9 -2
  945. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  946. package/out/zero-client/src/client/query-manager.js +377 -0
  947. package/out/zero-client/src/client/query-manager.js.map +1 -0
  948. package/out/zero-client/src/client/reload-error-handler.d.ts +4 -4
  949. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  950. package/out/zero-client/src/client/reload-error-handler.js +114 -0
  951. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  952. package/out/zero-client/src/client/server-option.js +64 -0
  953. package/out/zero-client/src/client/server-option.js.map +1 -0
  954. package/out/zero-client/src/client/update-needed-reason-type-enum.js +9 -0
  955. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
  956. package/out/zero-client/src/client/version.js +5 -0
  957. package/out/zero-client/src/client/version.js.map +1 -0
  958. package/out/zero-client/src/client/zero-poke-handler.d.ts +4 -4
  959. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  960. package/out/zero-client/src/client/zero-poke-handler.js +303 -0
  961. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  962. package/out/zero-client/src/client/zero-rep.d.ts +5 -2
  963. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  964. package/out/zero-client/src/client/zero-rep.js +72 -0
  965. package/out/zero-client/src/client/zero-rep.js.map +1 -0
  966. package/out/zero-client/src/client/zero.d.ts +104 -26
  967. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  968. package/out/zero-client/src/client/zero.js +1763 -0
  969. package/out/zero-client/src/client/zero.js.map +1 -0
  970. package/out/zero-client/src/mod.d.ts +24 -18
  971. package/out/zero-client/src/mod.d.ts.map +1 -1
  972. package/out/zero-client/src/types/query-result.d.ts +24 -0
  973. package/out/zero-client/src/types/query-result.d.ts.map +1 -0
  974. package/out/zero-client/src/util/nanoid.js +21 -0
  975. package/out/zero-client/src/util/nanoid.js.map +1 -0
  976. package/out/zero-client/src/util/socket.js +7 -0
  977. package/out/zero-client/src/util/socket.js.map +1 -0
  978. package/out/zero-events/src/status.d.ts +1 -1
  979. package/out/zero-events/src/status.d.ts.map +1 -1
  980. package/out/zero-protocol/src/analyze-query-result.d.ts +237 -0
  981. package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
  982. package/out/zero-protocol/src/analyze-query-result.js +159 -24
  983. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  984. package/out/zero-protocol/src/application-error.d.ts +27 -0
  985. package/out/zero-protocol/src/application-error.d.ts.map +1 -0
  986. package/out/zero-protocol/src/application-error.js +38 -0
  987. package/out/zero-protocol/src/application-error.js.map +1 -0
  988. package/out/zero-protocol/src/ast.d.ts +2 -2
  989. package/out/zero-protocol/src/ast.js +296 -277
  990. package/out/zero-protocol/src/ast.js.map +1 -1
  991. package/out/zero-protocol/src/change-desired-queries.d.ts +2 -2
  992. package/out/zero-protocol/src/change-desired-queries.js +11 -7
  993. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  994. package/out/zero-protocol/src/client-schema.d.ts +2 -2
  995. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  996. package/out/zero-protocol/src/client-schema.js +40 -26
  997. package/out/zero-protocol/src/client-schema.js.map +1 -1
  998. package/out/zero-protocol/src/close-connection.js +11 -18
  999. package/out/zero-protocol/src/close-connection.js.map +1 -1
  1000. package/out/zero-protocol/src/connect.d.ts +4 -4
  1001. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  1002. package/out/zero-protocol/src/connect.js +50 -51
  1003. package/out/zero-protocol/src/connect.js.map +1 -1
  1004. package/out/zero-protocol/src/custom-queries.d.ts +31 -99
  1005. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  1006. package/out/zero-protocol/src/custom-queries.js +61 -54
  1007. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  1008. package/out/zero-protocol/src/data.js +9 -4
  1009. package/out/zero-protocol/src/data.js.map +1 -1
  1010. package/out/zero-protocol/src/delete-clients.js +16 -9
  1011. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  1012. package/out/zero-protocol/src/down.d.ts +113 -15
  1013. package/out/zero-protocol/src/down.d.ts.map +1 -1
  1014. package/out/zero-protocol/src/down.js +20 -4
  1015. package/out/zero-protocol/src/down.js.map +1 -1
  1016. package/out/zero-protocol/src/error-kind-enum.js +41 -23
  1017. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  1018. package/out/zero-protocol/src/error-origin-enum.js +9 -4
  1019. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  1020. package/out/zero-protocol/src/error-reason-enum.js +17 -8
  1021. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  1022. package/out/zero-protocol/src/error.d.ts +59 -17
  1023. package/out/zero-protocol/src/error.d.ts.map +1 -1
  1024. package/out/zero-protocol/src/error.js +151 -82
  1025. package/out/zero-protocol/src/error.js.map +1 -1
  1026. package/out/zero-protocol/src/inspect-down.d.ts +318 -18
  1027. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  1028. package/out/zero-protocol/src/inspect-down.js +72 -54
  1029. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  1030. package/out/zero-protocol/src/inspect-up.d.ts +10 -6
  1031. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  1032. package/out/zero-protocol/src/inspect-up.js +39 -26
  1033. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  1034. package/out/zero-protocol/src/mutation-id.js +9 -5
  1035. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  1036. package/out/zero-protocol/src/mutation-type-enum.js +7 -3
  1037. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  1038. package/out/zero-protocol/src/mutations-patch.d.ts +3 -0
  1039. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
  1040. package/out/zero-protocol/src/mutations-patch.js +16 -17
  1041. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  1042. package/out/zero-protocol/src/ping.js +9 -4
  1043. package/out/zero-protocol/src/ping.js.map +1 -1
  1044. package/out/zero-protocol/src/poke.d.ts +2 -0
  1045. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  1046. package/out/zero-protocol/src/poke.js +55 -72
  1047. package/out/zero-protocol/src/poke.js.map +1 -1
  1048. package/out/zero-protocol/src/pong.js +9 -4
  1049. package/out/zero-protocol/src/pong.js.map +1 -1
  1050. package/out/zero-protocol/src/primary-key.js +19 -5
  1051. package/out/zero-protocol/src/primary-key.js.map +1 -1
  1052. package/out/zero-protocol/src/protocol-version.d.ts +2 -2
  1053. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  1054. package/out/zero-protocol/src/protocol-version.js +7 -57
  1055. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  1056. package/out/zero-protocol/src/pull.js +26 -19
  1057. package/out/zero-protocol/src/pull.js.map +1 -1
  1058. package/out/zero-protocol/src/push.d.ts +11 -4
  1059. package/out/zero-protocol/src/push.d.ts.map +1 -1
  1060. package/out/zero-protocol/src/push.js +179 -175
  1061. package/out/zero-protocol/src/push.js.map +1 -1
  1062. package/out/zero-protocol/src/queries-patch.d.ts +3 -3
  1063. package/out/zero-protocol/src/queries-patch.js +29 -22
  1064. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  1065. package/out/zero-protocol/src/query-hash.js +18 -14
  1066. package/out/zero-protocol/src/query-hash.js.map +1 -1
  1067. package/out/zero-protocol/src/row-patch.js +29 -20
  1068. package/out/zero-protocol/src/row-patch.js.map +1 -1
  1069. package/out/zero-protocol/src/up.d.ts +6 -5
  1070. package/out/zero-protocol/src/up.d.ts.map +1 -1
  1071. package/out/zero-protocol/src/up.js +18 -4
  1072. package/out/zero-protocol/src/up.js.map +1 -1
  1073. package/out/zero-protocol/src/version.js +9 -4
  1074. package/out/zero-protocol/src/version.js.map +1 -1
  1075. package/out/zero-react/src/components/inspector.d.ts +5 -3
  1076. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  1077. package/out/{inspector-IU2HG74I.js → zero-react/src/components/inspector.js} +4 -9
  1078. package/out/zero-react/src/components/inspector.js.map +1 -0
  1079. package/out/{chunk-VZOYWIRW.js → zero-react/src/components/mark-icon.js} +3 -5
  1080. package/out/zero-react/src/components/mark-icon.js.map +1 -0
  1081. package/out/zero-react/src/components/zero-inspector.d.ts +5 -3
  1082. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  1083. package/out/zero-react/src/components/zero-inspector.js +44 -0
  1084. package/out/zero-react/src/components/zero-inspector.js.map +1 -0
  1085. package/out/zero-react/src/mod.d.ts +5 -3
  1086. package/out/zero-react/src/mod.d.ts.map +1 -1
  1087. package/out/zero-react/src/use-query.d.ts +11 -28
  1088. package/out/zero-react/src/use-query.d.ts.map +1 -1
  1089. package/out/zero-react/src/use-query.js +286 -0
  1090. package/out/zero-react/src/use-query.js.map +1 -0
  1091. package/out/zero-react/src/use-zero-connection-state.d.ts +1 -1
  1092. package/out/zero-react/src/use-zero-connection-state.d.ts.map +1 -1
  1093. package/out/zero-react/src/use-zero-connection-state.js +14 -0
  1094. package/out/zero-react/src/use-zero-connection-state.js.map +1 -0
  1095. package/out/zero-react/src/use-zero-online.js +14 -0
  1096. package/out/zero-react/src/use-zero-online.js.map +1 -0
  1097. package/out/zero-react/src/zero-provider.d.ts +21 -7
  1098. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  1099. package/out/zero-react/src/zero-provider.js +61 -0
  1100. package/out/zero-react/src/zero-provider.js.map +1 -0
  1101. package/out/zero-schema/src/builder/relationship-builder.js +22 -19
  1102. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
  1103. package/out/zero-schema/src/builder/schema-builder.d.ts +1 -3
  1104. package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
  1105. package/out/zero-schema/src/builder/schema-builder.js +81 -71
  1106. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  1107. package/out/zero-schema/src/builder/table-builder.js +117 -116
  1108. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  1109. package/out/zero-schema/src/compiled-permissions.js +23 -19
  1110. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  1111. package/out/zero-schema/src/name-mapper.js +43 -38
  1112. package/out/zero-schema/src/name-mapper.js.map +1 -1
  1113. package/out/zero-schema/src/permissions.d.ts +9 -9
  1114. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  1115. package/out/{chunk-55BOUNXO.js → zero-schema/src/permissions.js} +16 -173
  1116. package/out/zero-schema/src/permissions.js.map +1 -0
  1117. package/out/zero-schema/src/schema-config.d.ts +1 -1
  1118. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  1119. package/out/zero-schema/src/schema-config.js +35 -51
  1120. package/out/zero-schema/src/schema-config.js.map +1 -1
  1121. package/out/zero-server/src/adapters/drizzle.d.ts +2 -2
  1122. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  1123. package/out/zero-server/src/adapters/drizzle.js +84 -97
  1124. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  1125. package/out/zero-server/src/adapters/pg.d.ts +8 -2
  1126. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  1127. package/out/zero-server/src/adapters/pg.js +54 -74
  1128. package/out/zero-server/src/adapters/pg.js.map +1 -1
  1129. package/out/zero-server/src/adapters/postgresjs.d.ts +7 -2
  1130. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  1131. package/out/zero-server/src/adapters/postgresjs.js +40 -54
  1132. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  1133. package/out/zero-server/src/custom.d.ts +14 -18
  1134. package/out/zero-server/src/custom.d.ts.map +1 -1
  1135. package/out/zero-server/src/custom.js +185 -105
  1136. package/out/zero-server/src/custom.js.map +1 -1
  1137. package/out/zero-server/src/logging.js +7 -4
  1138. package/out/zero-server/src/logging.js.map +1 -1
  1139. package/out/zero-server/src/mod.d.ts +5 -4
  1140. package/out/zero-server/src/mod.d.ts.map +1 -1
  1141. package/out/zero-server/src/pg-query-executor.d.ts +11 -0
  1142. package/out/zero-server/src/pg-query-executor.d.ts.map +1 -0
  1143. package/out/zero-server/src/pg-query-executor.js +20 -0
  1144. package/out/zero-server/src/pg-query-executor.js.map +1 -0
  1145. package/out/zero-server/src/process-mutations.d.ts +11 -15
  1146. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  1147. package/out/zero-server/src/process-mutations.js +341 -163
  1148. package/out/zero-server/src/process-mutations.js.map +1 -1
  1149. package/out/zero-server/src/push-processor.d.ts +5 -3
  1150. package/out/zero-server/src/push-processor.d.ts.map +1 -1
  1151. package/out/zero-server/src/push-processor.js +48 -32
  1152. package/out/zero-server/src/push-processor.js.map +1 -1
  1153. package/out/zero-server/src/queries/process-queries.d.ts +66 -4
  1154. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  1155. package/out/zero-server/src/queries/process-queries.js +101 -27
  1156. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  1157. package/out/zero-server/src/schema.d.ts +2 -2
  1158. package/out/zero-server/src/schema.d.ts.map +1 -1
  1159. package/out/zero-server/src/schema.js +136 -124
  1160. package/out/zero-server/src/schema.js.map +1 -1
  1161. package/out/zero-server/src/zql-database.d.ts +9 -6
  1162. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  1163. package/out/zero-server/src/zql-database.js +68 -51
  1164. package/out/zero-server/src/zql-database.js.map +1 -1
  1165. package/out/zero-solid/src/mod.d.ts +7 -0
  1166. package/out/zero-solid/src/mod.d.ts.map +1 -1
  1167. package/out/zero-solid/src/solid-view.d.ts +3 -23
  1168. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  1169. package/out/{solid.js → zero-solid/src/solid-view.js} +57 -182
  1170. package/out/zero-solid/src/solid-view.js.map +1 -0
  1171. package/out/zero-solid/src/use-query.d.ts +7 -6
  1172. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  1173. package/out/zero-solid/src/use-query.js +57 -0
  1174. package/out/zero-solid/src/use-query.js.map +1 -0
  1175. package/out/zero-solid/src/use-zero-connection-state.d.ts +1 -1
  1176. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -1
  1177. package/out/zero-solid/src/use-zero-connection-state.js +17 -0
  1178. package/out/zero-solid/src/use-zero-connection-state.js.map +1 -0
  1179. package/out/zero-solid/src/use-zero-online.d.ts.map +1 -1
  1180. package/out/zero-solid/src/use-zero-online.js +15 -0
  1181. package/out/zero-solid/src/use-zero-online.js.map +1 -0
  1182. package/out/zero-solid/src/use-zero.d.ts +24 -7
  1183. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  1184. package/out/zero-solid/src/use-zero.js +70 -0
  1185. package/out/zero-solid/src/use-zero.js.map +1 -0
  1186. package/out/zero-types/src/default-types.d.ts +38 -0
  1187. package/out/zero-types/src/default-types.d.ts.map +1 -0
  1188. package/out/zero-types/src/format.js +7 -4
  1189. package/out/zero-types/src/format.js.map +1 -1
  1190. package/out/zero-types/src/name-mapper.js +43 -40
  1191. package/out/zero-types/src/name-mapper.js.map +1 -1
  1192. package/out/zero-types/src/server-schema.d.ts.map +1 -0
  1193. package/out/zql/src/builder/builder.d.ts +10 -2
  1194. package/out/zql/src/builder/builder.d.ts.map +1 -1
  1195. package/out/zql/src/builder/builder.js +485 -427
  1196. package/out/zql/src/builder/builder.js.map +1 -1
  1197. package/out/zql/src/builder/debug-delegate.d.ts +4 -0
  1198. package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
  1199. package/out/zql/src/builder/debug-delegate.js +68 -47
  1200. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  1201. package/out/zql/src/builder/filter.js +132 -138
  1202. package/out/zql/src/builder/filter.js.map +1 -1
  1203. package/out/zql/src/builder/like.js +44 -51
  1204. package/out/zql/src/builder/like.js.map +1 -1
  1205. package/out/zql/src/error.d.ts +5 -0
  1206. package/out/zql/src/error.d.ts.map +1 -1
  1207. package/out/zql/src/error.js +18 -6
  1208. package/out/zql/src/error.js.map +1 -1
  1209. package/out/zql/src/ivm/array-view.d.ts +1 -1
  1210. package/out/zql/src/ivm/array-view.d.ts.map +1 -1
  1211. package/out/zql/src/ivm/array-view.js +87 -92
  1212. package/out/zql/src/ivm/array-view.js.map +1 -1
  1213. package/out/zql/src/ivm/constraint.js +74 -127
  1214. package/out/zql/src/ivm/constraint.js.map +1 -1
  1215. package/out/zql/src/ivm/data.d.ts +7 -2
  1216. package/out/zql/src/ivm/data.d.ts.map +1 -1
  1217. package/out/zql/src/ivm/data.js +62 -85
  1218. package/out/zql/src/ivm/data.js.map +1 -1
  1219. package/out/zql/src/ivm/exists.d.ts +3 -2
  1220. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  1221. package/out/zql/src/ivm/exists.js +190 -244
  1222. package/out/zql/src/ivm/exists.js.map +1 -1
  1223. package/out/zql/src/ivm/fan-in.d.ts +2 -0
  1224. package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
  1225. package/out/zql/src/ivm/fan-in.js +54 -51
  1226. package/out/zql/src/ivm/fan-in.js.map +1 -1
  1227. package/out/zql/src/ivm/fan-out.d.ts +2 -0
  1228. package/out/zql/src/ivm/fan-out.d.ts.map +1 -1
  1229. package/out/zql/src/ivm/fan-out.js +52 -50
  1230. package/out/zql/src/ivm/fan-out.js.map +1 -1
  1231. package/out/zql/src/ivm/filter-operators.d.ts +6 -2
  1232. package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
  1233. package/out/zql/src/ivm/filter-operators.js +103 -87
  1234. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  1235. package/out/zql/src/ivm/filter-push.js +26 -23
  1236. package/out/zql/src/ivm/filter-push.js.map +1 -1
  1237. package/out/zql/src/ivm/filter.d.ts +2 -0
  1238. package/out/zql/src/ivm/filter.d.ts.map +1 -1
  1239. package/out/zql/src/ivm/filter.js +34 -32
  1240. package/out/zql/src/ivm/filter.js.map +1 -1
  1241. package/out/zql/src/ivm/flipped-join.d.ts +1 -1
  1242. package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
  1243. package/out/zql/src/ivm/flipped-join.js +354 -324
  1244. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  1245. package/out/zql/src/ivm/join-utils.d.ts +2 -1
  1246. package/out/zql/src/ivm/join-utils.d.ts.map +1 -1
  1247. package/out/zql/src/ivm/join-utils.js +92 -78
  1248. package/out/zql/src/ivm/join-utils.js.map +1 -1
  1249. package/out/zql/src/ivm/join.d.ts +1 -1
  1250. package/out/zql/src/ivm/join.d.ts.map +1 -1
  1251. package/out/zql/src/ivm/join.js +305 -206
  1252. package/out/zql/src/ivm/join.js.map +1 -1
  1253. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +26 -24
  1254. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  1255. package/out/zql/src/ivm/memory-source.d.ts +3 -3
  1256. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  1257. package/out/zql/src/ivm/memory-source.js +478 -489
  1258. package/out/zql/src/ivm/memory-source.js.map +1 -1
  1259. package/out/zql/src/ivm/memory-storage.js +32 -31
  1260. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  1261. package/out/zql/src/ivm/operator.d.ts +9 -1
  1262. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  1263. package/out/zql/src/ivm/operator.js +16 -9
  1264. package/out/zql/src/ivm/operator.js.map +1 -1
  1265. package/out/zql/src/ivm/push-accumulated.d.ts +1 -1
  1266. package/out/zql/src/ivm/push-accumulated.d.ts.map +1 -1
  1267. package/out/zql/src/ivm/push-accumulated.js +236 -305
  1268. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  1269. package/out/zql/src/ivm/skip.d.ts +1 -1
  1270. package/out/zql/src/ivm/skip.d.ts.map +1 -1
  1271. package/out/zql/src/ivm/skip.js +97 -105
  1272. package/out/zql/src/ivm/skip.js.map +1 -1
  1273. package/out/zql/src/ivm/source.d.ts +3 -1
  1274. package/out/zql/src/ivm/source.d.ts.map +1 -1
  1275. package/out/zql/src/ivm/stream.js +20 -16
  1276. package/out/zql/src/ivm/stream.js.map +1 -1
  1277. package/out/zql/src/ivm/take.d.ts +1 -1
  1278. package/out/zql/src/ivm/take.d.ts.map +1 -1
  1279. package/out/zql/src/ivm/take.js +525 -451
  1280. package/out/zql/src/ivm/take.js.map +1 -1
  1281. package/out/zql/src/ivm/union-fan-in.d.ts +2 -1
  1282. package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
  1283. package/out/zql/src/ivm/union-fan-in.js +216 -132
  1284. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  1285. package/out/zql/src/ivm/union-fan-out.d.ts +1 -1
  1286. package/out/zql/src/ivm/union-fan-out.d.ts.map +1 -1
  1287. package/out/zql/src/ivm/union-fan-out.js +46 -45
  1288. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  1289. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  1290. package/out/zql/src/ivm/view-apply-change.js +247 -216
  1291. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  1292. package/out/zql/src/ivm/view.d.ts +3 -2
  1293. package/out/zql/src/ivm/view.d.ts.map +1 -1
  1294. package/out/zql/src/mutate/custom.d.ts +26 -11
  1295. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  1296. package/out/zql/src/mutate/custom.js +15 -7
  1297. package/out/zql/src/mutate/custom.js.map +1 -1
  1298. package/out/zql/src/mutate/mutator-registry.d.ts +93 -0
  1299. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -0
  1300. package/out/zql/src/mutate/mutator-registry.js +93 -0
  1301. package/out/zql/src/mutate/mutator-registry.js.map +1 -0
  1302. package/out/zql/src/mutate/mutator.d.ts +79 -0
  1303. package/out/zql/src/mutate/mutator.d.ts.map +1 -0
  1304. package/out/zql/src/mutate/mutator.js +31 -0
  1305. package/out/zql/src/mutate/mutator.js.map +1 -0
  1306. package/out/zql/src/planner/planner-builder.d.ts +2 -1
  1307. package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
  1308. package/out/zql/src/planner/planner-builder.js +237 -146
  1309. package/out/zql/src/planner/planner-builder.js.map +1 -1
  1310. package/out/zql/src/planner/planner-connection.d.ts +19 -14
  1311. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  1312. package/out/zql/src/planner/planner-connection.js +205 -291
  1313. package/out/zql/src/planner/planner-connection.js.map +1 -1
  1314. package/out/zql/src/planner/planner-constraint.js +8 -11
  1315. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  1316. package/out/zql/src/planner/planner-debug.d.ts +62 -37
  1317. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  1318. package/out/zql/src/planner/planner-debug.js +234 -117
  1319. package/out/zql/src/planner/planner-debug.js.map +1 -1
  1320. package/out/zql/src/planner/planner-fan-in.d.ts +5 -3
  1321. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  1322. package/out/zql/src/planner/planner-fan-in.js +157 -141
  1323. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1324. package/out/zql/src/planner/planner-fan-out.d.ts +5 -3
  1325. package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
  1326. package/out/zql/src/planner/planner-fan-out.js +73 -42
  1327. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1328. package/out/zql/src/planner/planner-graph.d.ts +9 -10
  1329. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  1330. package/out/zql/src/planner/planner-graph.js +323 -388
  1331. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1332. package/out/zql/src/planner/planner-join.d.ts +67 -8
  1333. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  1334. package/out/zql/src/planner/planner-join.js +239 -241
  1335. package/out/zql/src/planner/planner-join.js.map +1 -1
  1336. package/out/zql/src/planner/planner-node.d.ts +35 -3
  1337. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  1338. package/out/zql/src/planner/planner-node.js +8 -2
  1339. package/out/zql/src/planner/planner-node.js.map +1 -1
  1340. package/out/zql/src/planner/planner-source.d.ts +1 -1
  1341. package/out/zql/src/planner/planner-source.d.ts.map +1 -1
  1342. package/out/zql/src/planner/planner-source.js +23 -12
  1343. package/out/zql/src/planner/planner-source.js.map +1 -1
  1344. package/out/zql/src/planner/planner-terminus.d.ts +4 -3
  1345. package/out/zql/src/planner/planner-terminus.d.ts.map +1 -1
  1346. package/out/zql/src/planner/planner-terminus.js +28 -27
  1347. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1348. package/out/zql/src/query/abstract-query.d.ts +43 -0
  1349. package/out/zql/src/query/abstract-query.d.ts.map +1 -0
  1350. package/out/zql/src/query/abstract-query.js +408 -0
  1351. package/out/zql/src/query/abstract-query.js.map +1 -0
  1352. package/out/zql/src/query/complete-ordering.d.ts +5 -0
  1353. package/out/zql/src/query/complete-ordering.d.ts.map +1 -0
  1354. package/out/zql/src/query/complete-ordering.js +71 -0
  1355. package/out/zql/src/query/complete-ordering.js.map +1 -0
  1356. package/out/zql/src/query/create-builder.d.ts +9 -0
  1357. package/out/zql/src/query/create-builder.d.ts.map +1 -0
  1358. package/out/zql/src/query/create-builder.js +49 -0
  1359. package/out/zql/src/query/create-builder.js.map +1 -0
  1360. package/out/zql/src/query/error.d.ts +4 -0
  1361. package/out/zql/src/query/error.d.ts.map +1 -0
  1362. package/out/zql/src/query/error.js +13 -0
  1363. package/out/zql/src/query/error.js.map +1 -0
  1364. package/out/zql/src/query/escape-like.js +7 -0
  1365. package/out/zql/src/query/escape-like.js.map +1 -0
  1366. package/out/zql/src/query/expression.d.ts +5 -5
  1367. package/out/zql/src/query/expression.d.ts.map +1 -1
  1368. package/out/zql/src/query/expression.js +153 -151
  1369. package/out/zql/src/query/expression.js.map +1 -1
  1370. package/out/zql/src/query/measure-push-operator.d.ts +1 -1
  1371. package/out/zql/src/query/measure-push-operator.d.ts.map +1 -1
  1372. package/out/zql/src/query/measure-push-operator.js +42 -35
  1373. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1374. package/out/zql/src/query/metrics-delegate.js +9 -5
  1375. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1376. package/out/zql/src/query/named.d.ts +21 -12
  1377. package/out/zql/src/query/named.d.ts.map +1 -1
  1378. package/out/zql/src/query/named.js +47 -57
  1379. package/out/zql/src/query/named.js.map +1 -1
  1380. package/out/zql/src/query/query-delegate-base.d.ts +120 -0
  1381. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -0
  1382. package/out/zql/src/query/query-delegate-base.js +250 -0
  1383. package/out/zql/src/query/query-delegate-base.js.map +1 -0
  1384. package/out/zql/src/query/query-delegate.d.ts +27 -4
  1385. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  1386. package/out/zql/src/query/query-impl.d.ts +7 -62
  1387. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1388. package/out/zql/src/query/query-impl.js +33 -490
  1389. package/out/zql/src/query/query-impl.js.map +1 -1
  1390. package/out/zql/src/query/query-internals.d.ts +68 -0
  1391. package/out/zql/src/query/query-internals.d.ts.map +1 -0
  1392. package/out/zql/src/query/query-internals.js +11 -0
  1393. package/out/zql/src/query/query-internals.js.map +1 -0
  1394. package/out/zql/src/query/query-registry.d.ts +163 -0
  1395. package/out/zql/src/query/query-registry.d.ts.map +1 -0
  1396. package/out/zql/src/query/query-registry.js +123 -0
  1397. package/out/zql/src/query/query-registry.js.map +1 -0
  1398. package/out/zql/src/query/query.d.ts +65 -240
  1399. package/out/zql/src/query/query.d.ts.map +1 -1
  1400. package/out/zql/src/query/runnable-query-impl.d.ts +22 -0
  1401. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -0
  1402. package/out/zql/src/query/runnable-query-impl.js +60 -0
  1403. package/out/zql/src/query/runnable-query-impl.js.map +1 -0
  1404. package/out/zql/src/query/schema-query.d.ts +6 -0
  1405. package/out/zql/src/query/schema-query.d.ts.map +1 -0
  1406. package/out/zql/src/query/static-query.d.ts +6 -15
  1407. package/out/zql/src/query/static-query.d.ts.map +1 -1
  1408. package/out/zql/src/query/static-query.js +44 -31
  1409. package/out/zql/src/query/static-query.js.map +1 -1
  1410. package/out/zql/src/query/ttl.js +69 -62
  1411. package/out/zql/src/query/ttl.js.map +1 -1
  1412. package/out/zql/src/query/validate-input.d.ts +15 -0
  1413. package/out/zql/src/query/validate-input.d.ts.map +1 -0
  1414. package/out/zql/src/query/validate-input.js +24 -0
  1415. package/out/zql/src/query/validate-input.js.map +1 -0
  1416. package/out/zqlite/src/database-storage.d.ts +1 -1
  1417. package/out/zqlite/src/database-storage.d.ts.map +1 -1
  1418. package/out/zqlite/src/database-storage.js +99 -102
  1419. package/out/zqlite/src/database-storage.js.map +1 -1
  1420. package/out/zqlite/src/db.d.ts +2 -1
  1421. package/out/zqlite/src/db.d.ts.map +1 -1
  1422. package/out/zqlite/src/db.js +241 -192
  1423. package/out/zqlite/src/db.js.map +1 -1
  1424. package/out/zqlite/src/explain-queries.js +13 -16
  1425. package/out/zqlite/src/explain-queries.js.map +1 -1
  1426. package/out/zqlite/src/internal/sql.js +15 -10
  1427. package/out/zqlite/src/internal/sql.js.map +1 -1
  1428. package/out/zqlite/src/internal/statement-cache.js +86 -110
  1429. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1430. package/out/zqlite/src/query-builder.js +172 -143
  1431. package/out/zqlite/src/query-builder.js.map +1 -1
  1432. package/out/zqlite/src/query-delegate.d.ts +5 -19
  1433. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  1434. package/out/zqlite/src/query-delegate.js +56 -70
  1435. package/out/zqlite/src/query-delegate.js.map +1 -1
  1436. package/out/zqlite/src/sqlite-cost-model.d.ts.map +1 -1
  1437. package/out/zqlite/src/sqlite-cost-model.js +96 -120
  1438. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1439. package/out/zqlite/src/sqlite-stat-fanout.d.ts +121 -0
  1440. package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +1 -0
  1441. package/out/zqlite/src/sqlite-stat-fanout.js +301 -0
  1442. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -0
  1443. package/out/zqlite/src/table-source.d.ts +15 -4
  1444. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1445. package/out/zqlite/src/table-source.js +444 -311
  1446. package/out/zqlite/src/table-source.js.map +1 -1
  1447. package/package.json +27 -27
  1448. package/out/chunk-424PT5DM.js +0 -23
  1449. package/out/chunk-424PT5DM.js.map +0 -7
  1450. package/out/chunk-55BOUNXO.js.map +0 -7
  1451. package/out/chunk-AFADJQ2O.js +0 -1
  1452. package/out/chunk-AFADJQ2O.js.map +0 -7
  1453. package/out/chunk-AIPM77UE.js +0 -18139
  1454. package/out/chunk-AIPM77UE.js.map +0 -7
  1455. package/out/chunk-ASRS2LFV.js.map +0 -7
  1456. package/out/chunk-ECUMGQGC.js.map +0 -7
  1457. package/out/chunk-EZM3XBAB.js.map +0 -7
  1458. package/out/chunk-TJFNGO7E.js +0 -4126
  1459. package/out/chunk-TJFNGO7E.js.map +0 -7
  1460. package/out/chunk-VZOYWIRW.js.map +0 -7
  1461. package/out/chunk-ZZXMKAAG.js.map +0 -7
  1462. package/out/expo-sqlite.js +0 -11
  1463. package/out/expo-sqlite.js.map +0 -7
  1464. package/out/inspector-IU2HG74I.js.map +0 -7
  1465. package/out/lazy-inspector-OXIFYSSQ.js +0 -574
  1466. package/out/lazy-inspector-OXIFYSSQ.js.map +0 -7
  1467. package/out/op-sqlite.js.map +0 -7
  1468. package/out/react-native.js +0 -25
  1469. package/out/react-native.js.map +0 -7
  1470. package/out/react.js +0 -460
  1471. package/out/react.js.map +0 -7
  1472. package/out/shared/src/enum.js +0 -2
  1473. package/out/shared/src/enum.js.map +0 -1
  1474. package/out/shared/src/expand.js +0 -2
  1475. package/out/shared/src/expand.js.map +0 -1
  1476. package/out/shared/src/immutable.js +0 -2
  1477. package/out/shared/src/immutable.js.map +0 -1
  1478. package/out/shared/src/types.js +0 -2
  1479. package/out/shared/src/types.js.map +0 -1
  1480. package/out/shared/src/writable.js +0 -2
  1481. package/out/shared/src/writable.js.map +0 -1
  1482. package/out/solid.js.map +0 -7
  1483. package/out/sqlite.js +0 -15
  1484. package/out/sqlite.js.map +0 -7
  1485. package/out/zero/package.json +0 -193
  1486. package/out/zero/src/server/change-streamer.js +0 -2
  1487. package/out/zero/src/server/change-streamer.js.map +0 -1
  1488. package/out/zero/src/server/main.js +0 -2
  1489. package/out/zero/src/server/main.js.map +0 -1
  1490. package/out/zero/src/server/reaper.js +0 -2
  1491. package/out/zero/src/server/reaper.js.map +0 -1
  1492. package/out/zero/src/server/replicator.js +0 -2
  1493. package/out/zero/src/server/replicator.js.map +0 -1
  1494. package/out/zero/src/server/runner/main.js +0 -2
  1495. package/out/zero/src/server/runner/main.js.map +0 -1
  1496. package/out/zero/src/server/syncer.js +0 -2
  1497. package/out/zero/src/server/syncer.js.map +0 -1
  1498. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js +0 -4
  1499. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js.map +0 -1
  1500. package/out/zero-cache/src/services/change-source/protocol/mod.js +0 -5
  1501. package/out/zero-cache/src/services/change-source/protocol/mod.js.map +0 -1
  1502. package/out/zero-cache/src/services/service.js +0 -2
  1503. package/out/zero-cache/src/services/service.js.map +0 -1
  1504. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts +0 -32
  1505. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts.map +0 -1
  1506. package/out/zero-cache/src/services/view-syncer/key-columns.js +0 -75
  1507. package/out/zero-cache/src/services/view-syncer/key-columns.js.map +0 -1
  1508. package/out/zero-cache/src/types/satisfies.js +0 -2
  1509. package/out/zero-cache/src/types/satisfies.js.map +0 -1
  1510. package/out/zero-client/src/client/on-error.d.ts +0 -15
  1511. package/out/zero-client/src/client/on-error.d.ts.map +0 -1
  1512. package/out/zero-client/src/client/zero-log-context.d.ts +0 -7
  1513. package/out/zero-client/src/client/zero-log-context.d.ts.map +0 -1
  1514. package/out/zero-events/src/index.js +0 -2
  1515. package/out/zero-events/src/index.js.map +0 -1
  1516. package/out/zero-events/src/json.js +0 -2
  1517. package/out/zero-events/src/json.js.map +0 -1
  1518. package/out/zero-events/src/status.js +0 -3
  1519. package/out/zero-events/src/status.js.map +0 -1
  1520. package/out/zero-pg/src/mod.js +0 -6
  1521. package/out/zero-pg/src/mod.js.map +0 -1
  1522. package/out/zero-protocol/src/error-kind.js +0 -3
  1523. package/out/zero-protocol/src/error-kind.js.map +0 -1
  1524. package/out/zero-protocol/src/error-origin.js +0 -3
  1525. package/out/zero-protocol/src/error-origin.js.map +0 -1
  1526. package/out/zero-protocol/src/error-reason.js +0 -3
  1527. package/out/zero-protocol/src/error-reason.js.map +0 -1
  1528. package/out/zero-schema/src/server-schema.d.ts.map +0 -1
  1529. package/out/zero-schema/src/server-schema.js +0 -2
  1530. package/out/zero-schema/src/server-schema.js.map +0 -1
  1531. package/out/zero-schema/src/table-schema.js +0 -7
  1532. package/out/zero-schema/src/table-schema.js.map +0 -1
  1533. package/out/zero-server/src/mod.js +0 -8
  1534. package/out/zero-server/src/mod.js.map +0 -1
  1535. package/out/zero-server/src/query.d.ts +0 -22
  1536. package/out/zero-server/src/query.d.ts.map +0 -1
  1537. package/out/zero-server/src/query.js +0 -61
  1538. package/out/zero-server/src/query.js.map +0 -1
  1539. package/out/zero-types/src/schema-value.js +0 -2
  1540. package/out/zero-types/src/schema-value.js.map +0 -1
  1541. package/out/zero-types/src/schema.js +0 -2
  1542. package/out/zero-types/src/schema.js.map +0 -1
  1543. package/out/zero.js +0 -79
  1544. package/out/zero.js.map +0 -7
  1545. package/out/zql/src/ivm/change.js +0 -2
  1546. package/out/zql/src/ivm/change.js.map +0 -1
  1547. package/out/zql/src/ivm/default-format.js +0 -2
  1548. package/out/zql/src/ivm/default-format.js.map +0 -1
  1549. package/out/zql/src/ivm/schema.js +0 -2
  1550. package/out/zql/src/ivm/schema.js.map +0 -1
  1551. package/out/zql/src/ivm/source.js +0 -2
  1552. package/out/zql/src/ivm/source.js.map +0 -1
  1553. package/out/zql/src/ivm/view.js +0 -2
  1554. package/out/zql/src/ivm/view.js.map +0 -1
  1555. package/out/zql/src/query/query-delegate.js +0 -2
  1556. package/out/zql/src/query/query-delegate.js.map +0 -1
  1557. package/out/zql/src/query/query.js +0 -9
  1558. package/out/zql/src/query/query.js.map +0 -1
  1559. package/out/zql/src/query/typed-view.js +0 -2
  1560. package/out/zql/src/query/typed-view.js.map +0 -1
  1561. package/out/zqlite/src/mod.js +0 -5
  1562. package/out/zqlite/src/mod.js.map +0 -1
  1563. /package/out/{zero-schema → zero-types}/src/server-schema.d.ts +0 -0
@@ -1,744 +1,682 @@
1
1
  import { assert } from "../../../../shared/src/asserts.js";
2
- import { stringify, } from "../../../../shared/src/bigint-json.js";
3
- import { recordQuery } from "../../server/anonymous-otel-start.js";
2
+ import "../../../../shared/src/bigint-json.js";
4
3
  import { CustomKeyMap } from "../../../../shared/src/custom-key-map.js";
5
- import { deepEqual, } from "../../../../shared/src/json.js";
4
+ import { deepEqual } from "../../../../shared/src/json.js";
6
5
  import { must } from "../../../../shared/src/must.js";
7
- import { difference, intersection, union, } from "../../../../shared/src/set-utils.js";
6
+ import { union, intersection, difference } from "../../../../shared/src/set-utils.js";
8
7
  import { stringCompare } from "../../../../shared/src/string-compare.js";
9
- import { clampTTL, compareTTL, DEFAULT_TTL_MS, } from "../../../../zql/src/query/ttl.js";
8
+ import { ZeroCache } from "../../../../zero-protocol/src/error-origin-enum.js";
9
+ import { ProtocolError } from "../../../../zero-protocol/src/error.js";
10
+ import { DEFAULT_TTL_MS, compareTTL, clampTTL } from "../../../../zql/src/query/ttl.js";
11
+ import { recordQuery } from "../../server/anonymous-otel-start.js";
10
12
  import { rowIDString } from "../../types/row-key.js";
11
13
  import { upstreamSchema } from "../../types/shards.js";
12
- import {} from "./cvr-store.js";
13
- import { KeyColumns } from "./key-columns.js";
14
- import { cmpVersions, maxVersion, oneAfter, } from "./schema/types.js";
14
+ import "./cvr-store.js";
15
+ import { cmpVersions, maxVersion, oneAfter } from "./schema/types.js";
15
16
  import { ttlClockAsNumber } from "./ttl-clock.js";
16
- import { ProtocolError } from "../../../../zero-protocol/src/error.js";
17
- import { ErrorOrigin } from "../../../../zero-protocol/src/error-origin.js";
18
- const CLIENT_LMID_QUERY_ID = 'lmids';
19
- const CLIENT_MUTATION_RESULTS_QUERY_ID = 'mutationResults';
17
+ const CLIENT_LMID_QUERY_ID = "lmids";
18
+ const CLIENT_MUTATION_RESULTS_QUERY_ID = "mutationResults";
20
19
  function assertNotInternal(query) {
21
- if (query.type === 'internal') {
22
- // This should never happen for behaving clients, as query ids should be hashes.
23
- throw new Error(`Query ID ${query.id} is reserved for internal use`);
24
- }
20
+ if (query.type === "internal") {
21
+ throw new Error(`Query ID ${query.id} is reserved for internal use`);
22
+ }
25
23
  }
26
- export function getMutationResultsQuery(upstreamSchema, clientGroupID) {
27
- return {
28
- id: CLIENT_MUTATION_RESULTS_QUERY_ID,
29
- type: 'internal',
30
- ast: {
31
- schema: '',
32
- table: `${upstreamSchema}.mutations`,
33
- where: {
34
- type: 'and',
35
- conditions: [
36
- {
37
- type: 'simple',
38
- left: {
39
- type: 'column',
40
- name: 'clientGroupID',
41
- },
42
- op: '=',
43
- right: {
44
- type: 'literal',
45
- value: clientGroupID,
46
- },
47
- },
48
- ],
24
+ function getMutationResultsQuery(upstreamSchema2, clientGroupID) {
25
+ return {
26
+ id: CLIENT_MUTATION_RESULTS_QUERY_ID,
27
+ type: "internal",
28
+ ast: {
29
+ schema: "",
30
+ table: `${upstreamSchema2}.mutations`,
31
+ where: {
32
+ type: "and",
33
+ conditions: [
34
+ {
35
+ type: "simple",
36
+ left: {
37
+ type: "column",
38
+ name: "clientGroupID"
49
39
  },
50
- orderBy: [
51
- ['clientGroupID', 'asc'],
52
- ['clientID', 'asc'],
53
- ['mutationID', 'asc'],
54
- ],
55
- },
56
- };
57
- }
58
- /**
59
- * The base CVRUpdater contains logic common to the {@link CVRConfigDrivenUpdater} and
60
- * {@link CVRQueryDrivenUpdater}. The CVRUpdater class itself is exported for updating
61
- * the `lastActive` time of the CVR in the absence of any changes to the CVR contents.
62
- * Although activity is automatically tracked when the CVR contents change, there may be
63
- * edge cases in which a client actively connects to a CVR that doesn't itself change.
64
- * Calling `new CVRUpdater(...).flush()` will explicitly update the active index and
65
- * prevent the CVR from being garbage collected.
66
- */
67
- export class CVRUpdater {
68
- _orig;
69
- _cvr;
70
- _cvrStore;
71
- /**
72
- * @param cvrStore The CVRStore to use for storage
73
- * @param cvr The current CVR
74
- */
75
- constructor(cvrStore, cvr, replicaVersion) {
76
- this._cvrStore = cvrStore;
77
- this._orig = cvr;
78
- this._cvr = structuredClone(cvr); // mutable deep copy
79
- this._cvr.replicaVersion = replicaVersion;
80
- }
81
- _setVersion(version) {
82
- assert(cmpVersions(this._cvr.version, version) < 0);
83
- this._cvr.version = version;
84
- return version;
85
- }
86
- /**
87
- * Ensures that the new CVR has a higher version than the original.
88
- * This method is idempotent in that it will always return the same
89
- * (possibly bumped) version.
90
- */
91
- _ensureNewVersion() {
92
- if (cmpVersions(this._orig.version, this._cvr.version) === 0) {
93
- this._setVersion(oneAfter(this._cvr.version));
94
- }
95
- return this._cvr.version;
96
- }
97
- async flush(lc, lastConnectTime, lastActive, ttlClock) {
98
- this._cvr.ttlClock = ttlClock;
99
- this._cvr.lastActive = lastActive;
100
- const flushed = await this._cvrStore.flush(lc, this._orig.version, this._cvr, lastConnectTime);
101
- if (!flushed) {
102
- return { cvr: this._orig, flushed: false };
103
- }
104
- return { cvr: this._cvr, flushed };
40
+ op: "=",
41
+ right: {
42
+ type: "literal",
43
+ value: clientGroupID
44
+ }
45
+ }
46
+ ]
47
+ },
48
+ orderBy: [
49
+ ["clientGroupID", "asc"],
50
+ ["clientID", "asc"],
51
+ ["mutationID", "asc"]
52
+ ]
105
53
  }
54
+ };
106
55
  }
107
- /**
108
- * A {@link CVRConfigDrivenUpdater} is used for updating a CVR with config-driven
109
- * changes. Note that this may result in row deletion (e.g. if queries get dropped),
110
- * but the `stateVersion` of the CVR does not change.
111
- */
112
- export class CVRConfigDrivenUpdater extends CVRUpdater {
113
- #shard;
114
- constructor(cvrStore, cvr, shard) {
115
- super(cvrStore, cvr, cvr.replicaVersion);
116
- this.#shard = shard;
56
+ class CVRUpdater {
57
+ _orig;
58
+ _cvr;
59
+ _cvrStore;
60
+ /**
61
+ * @param cvrStore The CVRStore to use for storage
62
+ * @param cvr The current CVR
63
+ */
64
+ constructor(cvrStore, cvr, replicaVersion) {
65
+ this._cvrStore = cvrStore;
66
+ this._orig = cvr;
67
+ this._cvr = structuredClone(cvr);
68
+ this._cvr.replicaVersion = replicaVersion;
69
+ }
70
+ _setVersion(version) {
71
+ assert(cmpVersions(this._cvr.version, version) < 0);
72
+ this._cvr.version = version;
73
+ return version;
74
+ }
75
+ /**
76
+ * Ensures that the new CVR has a higher version than the original.
77
+ * This method is idempotent in that it will always return the same
78
+ * (possibly bumped) version.
79
+ */
80
+ _ensureNewVersion() {
81
+ if (cmpVersions(this._orig.version, this._cvr.version) === 0) {
82
+ this._setVersion(oneAfter(this._cvr.version));
117
83
  }
118
- ensureClient(id) {
119
- let client = this._cvr.clients[id];
120
- if (client) {
121
- return client;
122
- }
123
- // Add the ClientRecord and PutPatch
124
- client = { id, desiredQueryIDs: [] };
125
- this._cvr.clients[id] = client;
126
- this._ensureNewVersion();
127
- this._cvrStore.insertClient(client);
128
- if (!this._cvr.queries[CLIENT_LMID_QUERY_ID]) {
129
- const lmidsQuery = {
130
- id: CLIENT_LMID_QUERY_ID,
131
- ast: {
132
- schema: '',
133
- table: `${upstreamSchema(this.#shard)}.clients`,
134
- where: {
135
- type: 'simple',
136
- left: {
137
- type: 'column',
138
- name: 'clientGroupID',
139
- },
140
- op: '=',
141
- right: {
142
- type: 'literal',
143
- value: this._cvr.id,
144
- },
145
- },
146
- orderBy: [
147
- ['clientGroupID', 'asc'],
148
- ['clientID', 'asc'],
149
- ],
150
- },
151
- type: 'internal',
152
- };
153
- this._cvr.queries[CLIENT_LMID_QUERY_ID] = lmidsQuery;
154
- this._cvrStore.putQuery(lmidsQuery);
155
- }
156
- if (!this._cvr.queries[CLIENT_MUTATION_RESULTS_QUERY_ID]) {
157
- const mutationResultsQuery = getMutationResultsQuery(upstreamSchema(this.#shard), this._cvr.id);
158
- this._cvr.queries[CLIENT_MUTATION_RESULTS_QUERY_ID] =
159
- mutationResultsQuery;
160
- this._cvrStore.putQuery(mutationResultsQuery);
161
- }
162
- return client;
84
+ return this._cvr.version;
85
+ }
86
+ async flush(lc, lastConnectTime, lastActive, ttlClock) {
87
+ this._cvr.ttlClock = ttlClock;
88
+ this._cvr.lastActive = lastActive;
89
+ const flushed = await this._cvrStore.flush(
90
+ lc,
91
+ this._orig.version,
92
+ this._cvr,
93
+ lastConnectTime
94
+ );
95
+ if (!flushed) {
96
+ return { cvr: this._orig, flushed: false };
163
97
  }
164
- setClientSchema(lc, clientSchema) {
165
- if (this._cvr.clientSchema === null) {
166
- this._cvr.clientSchema = clientSchema;
167
- this._cvrStore.putInstance(this._cvr);
168
- }
169
- else if (!deepEqual(this._cvr.clientSchema, clientSchema)) {
170
- // This should not be possible with a correct Zero client, as clients
171
- // of a CVR should all have the same schema (given that the schema hash
172
- // is part of the idb key). In fact, clients joining an existing group
173
- // (i.e. non-empty baseCookie) do not send the clientSchema message.
174
- lc.warn?.(`New schema ${JSON.stringify(clientSchema)} does not match existing schema ${JSON.stringify(this._cvr.clientSchema)}`);
175
- throw new ProtocolError({
176
- kind: 'InvalidConnectionRequest',
177
- message: `Provided schema does not match previous schema`,
178
- origin: ErrorOrigin.ZeroCache,
179
- });
180
- }
98
+ return { cvr: this._cvr, flushed };
99
+ }
100
+ }
101
+ class CVRConfigDrivenUpdater extends CVRUpdater {
102
+ #shard;
103
+ constructor(cvrStore, cvr, shard) {
104
+ super(cvrStore, cvr, cvr.replicaVersion);
105
+ this.#shard = shard;
106
+ }
107
+ ensureClient(id) {
108
+ let client = this._cvr.clients[id];
109
+ if (client) {
110
+ return client;
181
111
  }
182
- putDesiredQueries(clientID, queries) {
183
- const patches = [];
184
- const client = this.ensureClient(clientID);
185
- const current = new Set(client.desiredQueryIDs);
186
- // Find the new/changed desired queries.
187
- const needed = new Set();
188
- const recordQueryForTelemetry = (q) => {
189
- const { ast, name, args } = q;
190
- if (ast) {
191
- recordQuery('crud');
192
- }
193
- else if (name && args) {
194
- recordQuery('custom');
195
- }
196
- };
197
- for (const q of queries) {
198
- const { hash, ttl = DEFAULT_TTL_MS } = q;
199
- const query = this._cvr.queries[hash];
200
- if (!query) {
201
- // New query - record for telemetry
202
- recordQueryForTelemetry(q);
203
- needed.add(hash);
204
- continue;
205
- }
206
- if (query.type === 'internal') {
207
- continue;
208
- }
209
- const oldClientState = query.clientState[clientID];
210
- // Old query was inactivated or never desired by this client.
211
- if (!oldClientState || oldClientState.inactivatedAt !== undefined) {
212
- // Reactivated query - record for telemetry
213
- recordQueryForTelemetry(q);
214
- needed.add(hash);
215
- continue;
216
- }
217
- if (compareTTL(ttl, oldClientState.ttl) > 0) {
218
- // TTL update only - don't record for telemetry
219
- needed.add(hash);
112
+ client = { id, desiredQueryIDs: [] };
113
+ this._cvr.clients[id] = client;
114
+ this._ensureNewVersion();
115
+ this._cvrStore.insertClient(client);
116
+ if (!this._cvr.queries[CLIENT_LMID_QUERY_ID]) {
117
+ const lmidsQuery = {
118
+ id: CLIENT_LMID_QUERY_ID,
119
+ ast: {
120
+ schema: "",
121
+ table: `${upstreamSchema(this.#shard)}.clients`,
122
+ where: {
123
+ type: "simple",
124
+ left: {
125
+ type: "column",
126
+ name: "clientGroupID"
127
+ },
128
+ op: "=",
129
+ right: {
130
+ type: "literal",
131
+ value: this._cvr.id
220
132
  }
221
- }
222
- if (needed.size === 0) {
223
- return patches;
224
- }
225
- const newVersion = this._ensureNewVersion();
226
- client.desiredQueryIDs = [...union(current, needed)].sort(stringCompare);
227
- for (const id of needed) {
228
- const q = must(queries.find(({ hash }) => hash === id));
229
- const { ast, name, args } = q;
230
- const ttl = clampTTL(q.ttl ?? DEFAULT_TTL_MS);
231
- const query = this._cvr.queries[id] ?? newQueryRecord(id, ast, name, args);
232
- assertNotInternal(query);
233
- const inactivatedAt = undefined;
234
- query.clientState[clientID] = {
235
- inactivatedAt,
236
- ttl,
237
- version: newVersion,
238
- };
239
- this._cvr.queries[id] = query;
240
- patches.push({
241
- toVersion: newVersion,
242
- patch: { type: 'query', op: 'put', id, clientID },
243
- });
244
- this._cvrStore.putQuery(query);
245
- this._cvrStore.putDesiredQuery(newVersion, query, client, false, inactivatedAt, ttl);
246
- }
247
- return patches;
248
- }
249
- markDesiredQueriesAsInactive(clientID, queryHashes, ttlClock) {
250
- return this.#deleteQueries(clientID, queryHashes, ttlClock);
251
- }
252
- deleteDesiredQueries(clientID, queryHashes) {
253
- return this.#deleteQueries(clientID, queryHashes, undefined);
133
+ },
134
+ orderBy: [
135
+ ["clientGroupID", "asc"],
136
+ ["clientID", "asc"]
137
+ ]
138
+ },
139
+ type: "internal"
140
+ };
141
+ this._cvr.queries[CLIENT_LMID_QUERY_ID] = lmidsQuery;
142
+ this._cvrStore.putQuery(lmidsQuery);
254
143
  }
255
- #deleteQueries(clientID, queryHashes, inactivatedAt) {
256
- const patches = [];
257
- const client = this.ensureClient(clientID);
258
- const current = new Set(client.desiredQueryIDs);
259
- const unwanted = new Set(queryHashes);
260
- const remove = intersection(unwanted, current);
261
- if (remove.size === 0) {
262
- return patches;
263
- }
264
- const newVersion = this._ensureNewVersion();
265
- client.desiredQueryIDs = [...difference(current, remove)].sort(stringCompare);
266
- for (const id of remove) {
267
- const query = this._cvr.queries[id];
268
- if (!query) {
269
- continue; // Query itself has already been removed. Should not happen?
270
- }
271
- assertNotInternal(query);
272
- let ttl = DEFAULT_TTL_MS;
273
- if (inactivatedAt === undefined) {
274
- delete query.clientState[clientID];
275
- }
276
- else {
277
- // client state can be missing if the query never transformed so we never
278
- // recorded it.
279
- const clientState = query.clientState[clientID];
280
- if (clientState !== undefined) {
281
- assert(clientState.inactivatedAt === undefined, `Query ${id} is already inactivated`);
282
- ({ ttl } = clientState);
283
- query.clientState[clientID] = {
284
- inactivatedAt,
285
- ttl,
286
- version: newVersion,
287
- };
288
- }
289
- }
290
- this._cvrStore.putQuery(query);
291
- this._cvrStore.putDesiredQuery(newVersion, query, client, true, inactivatedAt, ttl);
292
- patches.push({
293
- toVersion: newVersion,
294
- patch: { type: 'query', op: 'del', id, clientID },
295
- });
296
- }
297
- return patches;
144
+ if (!this._cvr.queries[CLIENT_MUTATION_RESULTS_QUERY_ID]) {
145
+ const mutationResultsQuery = getMutationResultsQuery(
146
+ upstreamSchema(this.#shard),
147
+ this._cvr.id
148
+ );
149
+ this._cvr.queries[CLIENT_MUTATION_RESULTS_QUERY_ID] = mutationResultsQuery;
150
+ this._cvrStore.putQuery(mutationResultsQuery);
298
151
  }
299
- clearDesiredQueries(clientID) {
300
- const client = this.ensureClient(clientID);
301
- return this.#deleteQueries(clientID, client.desiredQueryIDs, undefined);
152
+ return client;
153
+ }
154
+ setClientSchema(lc, clientSchema) {
155
+ if (this._cvr.clientSchema === null) {
156
+ this._cvr.clientSchema = clientSchema;
157
+ this._cvrStore.putInstance(this._cvr);
158
+ } else if (!deepEqual(this._cvr.clientSchema, clientSchema)) {
159
+ lc.warn?.(
160
+ `New schema ${JSON.stringify(
161
+ clientSchema
162
+ )} does not match existing schema ${JSON.stringify(
163
+ this._cvr.clientSchema
164
+ )}`
165
+ );
166
+ throw new ProtocolError({
167
+ kind: "InvalidConnectionRequest",
168
+ message: `Provided schema does not match previous schema`,
169
+ origin: ZeroCache
170
+ });
302
171
  }
303
- deleteClient(clientID, ttlClock) {
304
- // clientID might not be part of this client group but if it is, this delete
305
- // may generate changes to the desired queries.
306
- const client = this._cvr.clients[clientID];
307
- if (!client) {
308
- // Clients in different client groups are no longer deleted, leaving
309
- // cleanup to inactive CVR purging logic.
310
- return [];
311
- }
312
- // When a client is deleted we mark all of its desired queries as inactive.
313
- // They will then be removed when the queries expire.
314
- const patches = this.markDesiredQueriesAsInactive(clientID, client.desiredQueryIDs, ttlClock);
315
- delete this._cvr.clients[clientID];
316
- this._cvrStore.deleteClient(clientID);
317
- return patches;
172
+ }
173
+ putDesiredQueries(clientID, queries) {
174
+ const patches = [];
175
+ const client = this.ensureClient(clientID);
176
+ const current = new Set(client.desiredQueryIDs);
177
+ const needed = /* @__PURE__ */ new Set();
178
+ const recordQueryForTelemetry = (q) => {
179
+ const { ast, name, args } = q;
180
+ if (ast) {
181
+ recordQuery("crud");
182
+ } else if (name && args) {
183
+ recordQuery("custom");
184
+ }
185
+ };
186
+ for (const q of queries) {
187
+ const { hash, ttl = DEFAULT_TTL_MS } = q;
188
+ const query = this._cvr.queries[hash];
189
+ if (!query) {
190
+ recordQueryForTelemetry(q);
191
+ needed.add(hash);
192
+ continue;
193
+ }
194
+ if (query.type === "internal") {
195
+ continue;
196
+ }
197
+ const oldClientState = query.clientState[clientID];
198
+ if (!oldClientState || oldClientState.inactivatedAt !== void 0) {
199
+ recordQueryForTelemetry(q);
200
+ needed.add(hash);
201
+ continue;
202
+ }
203
+ if (compareTTL(ttl, oldClientState.ttl) > 0) {
204
+ needed.add(hash);
205
+ }
318
206
  }
319
- }
320
- /**
321
- * A {@link CVRQueryDrivenUpdater} is used for updating a CVR after making queries.
322
- * The caller should invoke:
323
- *
324
- * * {@link trackQueries} for queries that are being executed or removed.
325
- * * {@link received} for all rows received from the executed queries
326
- * * {@link deleteUnreferencedRows} to remove any rows that have
327
- * fallen out of the query result view.
328
- * * {@link flush}
329
- *
330
- * After flushing, the caller should perform any necessary catchup of
331
- * config and row patches for clients that are behind. See
332
- * {@link CVRStore.catchupConfigPatches} and {@link CVRStore.catchupRowPatches}.
333
- */
334
- export class CVRQueryDrivenUpdater extends CVRUpdater {
335
- #removedOrExecutedQueryIDs = new Set();
336
- #receivedRows = new CustomKeyMap(rowIDString);
337
- #replacedRows = new CustomKeyMap(rowIDString);
338
- #lastPatches = new CustomKeyMap(rowIDString);
339
- #existingRows = undefined;
340
- /**
341
- * @param stateVersion The `stateVersion` at which the queries were executed.
342
- */
343
- constructor(cvrStore, cvr, stateVersion, replicaVersion) {
344
- super(cvrStore, cvr, replicaVersion);
345
- assert(
346
- // We should either be setting the cvr.replicaVersion for the first time, or it should
347
- // be something newer than the current cvr.replicaVersion. Otherwise, the CVR should
348
- // have been rejected by the ViewSyncer.
349
- (cvr.replicaVersion ?? replicaVersion) <= replicaVersion, `Cannot sync from an older replicaVersion: CVR=${cvr.replicaVersion}, DB=${replicaVersion}`);
350
- assert(stateVersion >= cvr.version.stateVersion);
351
- if (stateVersion > cvr.version.stateVersion) {
352
- this._setVersion({ stateVersion });
353
- }
207
+ if (needed.size === 0) {
208
+ return patches;
354
209
  }
355
- /**
356
- * Initiates the tracking of the specified `executed` and `removed` queries.
357
- * This kicks of a lookup of existing {@link RowRecord}s currently associated
358
- * with those queries, which will be used to reconcile the rows to keep
359
- * after all rows have been {@link received()}.
360
- *
361
- * "transformed" queries are queries that are currently
362
- * gotten and running in the pipeline driver but
363
- * received a new transformation hash due to an auth token
364
- * update.
365
- *
366
- * @returns The new CVRVersion to be used when all changes are committed.
367
- */
368
- trackQueries(lc, executed, removed) {
369
- assert(this.#existingRows === undefined, `trackQueries already called`);
370
- const queryPatches = [
371
- executed.map(q => this.#trackExecuted(q.id, q.transformationHash)),
372
- removed.map(q => this.#trackRemoved(q.id)),
373
- ].flat(2);
374
- this.#existingRows = this.#lookupRowsForExecutedAndRemovedQueries(lc);
375
- return {
376
- newVersion: this._cvr.version,
377
- queryPatches: queryPatches.map(patch => ({
378
- patch,
379
- toVersion: this._cvr.version,
380
- })),
381
- };
210
+ const newVersion = this._ensureNewVersion();
211
+ client.desiredQueryIDs = [...union(current, needed)].sort(stringCompare);
212
+ for (const id of needed) {
213
+ const q = must(queries.find(({ hash }) => hash === id));
214
+ const { ast, name, args } = q;
215
+ const ttl = clampTTL(q.ttl ?? DEFAULT_TTL_MS);
216
+ const query = this._cvr.queries[id] ?? newQueryRecord(id, ast, name, args);
217
+ assertNotInternal(query);
218
+ const inactivatedAt = void 0;
219
+ query.clientState[clientID] = {
220
+ inactivatedAt,
221
+ ttl,
222
+ version: newVersion
223
+ };
224
+ this._cvr.queries[id] = query;
225
+ patches.push({
226
+ toVersion: newVersion,
227
+ patch: { type: "query", op: "put", id, clientID }
228
+ });
229
+ this._cvrStore.putQuery(query);
230
+ this._cvrStore.putDesiredQuery(
231
+ newVersion,
232
+ query,
233
+ client,
234
+ false,
235
+ inactivatedAt,
236
+ ttl
237
+ );
382
238
  }
383
- async #lookupRowsForExecutedAndRemovedQueries(lc) {
384
- const results = new CustomKeyMap(rowIDString);
385
- if (this.#removedOrExecutedQueryIDs.size === 0) {
386
- // Query-less update. This can happen for config only changes.
387
- return [];
388
- }
389
- // Utilizes the in-memory RowCache.
390
- const allRowRecords = (await this._cvrStore.getRowRecords()).values();
391
- let total = 0;
392
- for (const existing of allRowRecords) {
393
- total++;
394
- assert(existing.refCounts !== null); // allRowRecords does not include null.
395
- for (const id of Object.keys(existing.refCounts)) {
396
- if (this.#removedOrExecutedQueryIDs.has(id)) {
397
- results.set(existing.id, existing);
398
- break;
399
- }
400
- }
401
- }
402
- lc.debug?.(`found ${results.size} (of ${total}) rows for executed / removed queries ${[
403
- ...this.#removedOrExecutedQueryIDs,
404
- ]}`);
405
- return results.values();
239
+ return patches;
240
+ }
241
+ markDesiredQueriesAsInactive(clientID, queryHashes, ttlClock) {
242
+ return this.#deleteQueries(clientID, queryHashes, ttlClock);
243
+ }
244
+ deleteDesiredQueries(clientID, queryHashes) {
245
+ return this.#deleteQueries(clientID, queryHashes, void 0);
246
+ }
247
+ #deleteQueries(clientID, queryHashes, inactivatedAt) {
248
+ const patches = [];
249
+ const client = this.ensureClient(clientID);
250
+ const current = new Set(client.desiredQueryIDs);
251
+ const unwanted = new Set(queryHashes);
252
+ const remove = intersection(unwanted, current);
253
+ if (remove.size === 0) {
254
+ return patches;
406
255
  }
407
- /**
408
- * Tracks an executed query, ensures that it is marked as "gotten",
409
- * updating the CVR and creating put patches if necessary.
410
- *
411
- * This must be called for all executed queries.
412
- */
413
- #trackExecuted(queryID, transformationHash) {
414
- assert(!this.#removedOrExecutedQueryIDs.has(queryID));
415
- this.#removedOrExecutedQueryIDs.add(queryID);
416
- let gotQueryPatch;
417
- const query = this._cvr.queries[queryID];
418
- if (query.transformationHash !== transformationHash) {
419
- const transformationVersion = this._ensureNewVersion();
420
- if (query.type !== 'internal' && query.patchVersion === undefined) {
421
- // client query: desired -> gotten
422
- query.patchVersion = transformationVersion;
423
- gotQueryPatch = {
424
- type: 'query',
425
- op: 'put',
426
- id: query.id,
427
- };
428
- }
429
- query.transformationHash = transformationHash;
430
- query.transformationVersion = transformationVersion;
431
- this._cvrStore.updateQuery(query);
256
+ const newVersion = this._ensureNewVersion();
257
+ client.desiredQueryIDs = [...difference(current, remove)].sort(
258
+ stringCompare
259
+ );
260
+ for (const id of remove) {
261
+ const query = this._cvr.queries[id];
262
+ if (!query) {
263
+ continue;
264
+ }
265
+ assertNotInternal(query);
266
+ let ttl = DEFAULT_TTL_MS;
267
+ if (inactivatedAt === void 0) {
268
+ delete query.clientState[clientID];
269
+ } else {
270
+ const clientState = query.clientState[clientID];
271
+ if (clientState !== void 0) {
272
+ assert(
273
+ clientState.inactivatedAt === void 0,
274
+ `Query ${id} is already inactivated`
275
+ );
276
+ ttl = clampTTL(clientState.ttl);
277
+ query.clientState[clientID] = {
278
+ inactivatedAt,
279
+ ttl,
280
+ version: newVersion
281
+ };
432
282
  }
433
- return gotQueryPatch ? [gotQueryPatch] : [];
283
+ }
284
+ this._cvrStore.putQuery(query);
285
+ this._cvrStore.putDesiredQuery(
286
+ newVersion,
287
+ query,
288
+ client,
289
+ true,
290
+ inactivatedAt,
291
+ ttl
292
+ );
293
+ patches.push({
294
+ toVersion: newVersion,
295
+ patch: { type: "query", op: "del", id, clientID }
296
+ });
434
297
  }
435
- /**
436
- * Tracks a query removed from the "gotten" set. In addition to producing the
437
- * appropriate patches for deleting the query, the removed query is taken into
438
- * account when computing the final row records in
439
- * {@link deleteUnreferencedRows}.
440
- * Namely, any rows with columns that are no longer referenced by a
441
- * query are deleted.
442
- *
443
- * This must only be called on queries that are not "desired" by any client.
444
- */
445
- #trackRemoved(queryID) {
446
- const query = this._cvr.queries[queryID];
447
- assertNotInternal(query);
448
- assert(!this.#removedOrExecutedQueryIDs.has(queryID));
449
- this.#removedOrExecutedQueryIDs.add(queryID);
450
- delete this._cvr.queries[queryID];
451
- const newVersion = this._ensureNewVersion();
452
- const queryPatch = { type: 'query', op: 'del', id: queryID };
453
- this._cvrStore.markQueryAsDeleted(newVersion, queryPatch);
454
- return [queryPatch];
298
+ return patches;
299
+ }
300
+ clearDesiredQueries(clientID) {
301
+ const client = this.ensureClient(clientID);
302
+ return this.#deleteQueries(clientID, client.desiredQueryIDs, void 0);
303
+ }
304
+ deleteClient(clientID, ttlClock) {
305
+ const client = this._cvr.clients[clientID];
306
+ if (!client) {
307
+ return [];
455
308
  }
456
- /**
457
- * Asserts that a new version has already been set.
458
- *
459
- * After {@link #executed} and {@link #removed} are called, we must have properly
460
- * decided on the final CVR version because the poke-start message declares the
461
- * final cookie (i.e. version), and that must be sent before any poke parts
462
- * generated from {@link received} are sent.
463
- */
464
- #assertNewVersion() {
465
- assert(cmpVersions(this._orig.version, this._cvr.version) < 0);
466
- return this._cvr.version;
309
+ const patches = this.markDesiredQueriesAsInactive(
310
+ clientID,
311
+ client.desiredQueryIDs,
312
+ ttlClock
313
+ );
314
+ delete this._cvr.clients[clientID];
315
+ this._cvrStore.deleteClient(clientID);
316
+ return patches;
317
+ }
318
+ }
319
+ class CVRQueryDrivenUpdater extends CVRUpdater {
320
+ #removedOrExecutedQueryIDs = /* @__PURE__ */ new Set();
321
+ #receivedRows = new CustomKeyMap(
322
+ rowIDString
323
+ );
324
+ #lastPatches = new CustomKeyMap(rowIDString);
325
+ #existingRows = void 0;
326
+ /**
327
+ * @param stateVersion The `stateVersion` at which the queries were executed.
328
+ */
329
+ constructor(cvrStore, cvr, stateVersion, replicaVersion) {
330
+ super(cvrStore, cvr, replicaVersion);
331
+ assert(
332
+ // We should either be setting the cvr.replicaVersion for the first time, or it should
333
+ // be something newer than the current cvr.replicaVersion. Otherwise, the CVR should
334
+ // have been rejected by the ViewSyncer.
335
+ (cvr.replicaVersion ?? replicaVersion) <= replicaVersion,
336
+ `Cannot sync from an older replicaVersion: CVR=${cvr.replicaVersion}, DB=${replicaVersion}`
337
+ );
338
+ assert(stateVersion >= cvr.version.stateVersion);
339
+ if (stateVersion > cvr.version.stateVersion) {
340
+ this._setVersion({ stateVersion });
467
341
  }
468
- updatedVersion() {
469
- return this._cvr.version;
342
+ }
343
+ /**
344
+ * Initiates the tracking of the specified `executed` and `removed` queries.
345
+ * This kicks of a lookup of existing {@link RowRecord}s currently associated
346
+ * with those queries, which will be used to reconcile the rows to keep
347
+ * after all rows have been {@link received()}.
348
+ *
349
+ * "transformed" queries are queries that are currently
350
+ * gotten and running in the pipeline driver but
351
+ * received a new transformation hash due to an auth token
352
+ * update.
353
+ *
354
+ * @returns The new CVRVersion to be used when all changes are committed.
355
+ */
356
+ trackQueries(lc, executed, removed) {
357
+ assert(this.#existingRows === void 0, `trackQueries already called`);
358
+ const queryPatches = [
359
+ executed.map((q) => this.#trackExecuted(q.id, q.transformationHash)),
360
+ removed.map((q) => this.#trackRemoved(q.id))
361
+ ].flat(2);
362
+ this.#existingRows = this.#lookupRowsForExecutedAndRemovedQueries(lc);
363
+ return {
364
+ newVersion: this._cvr.version,
365
+ queryPatches: queryPatches.map((patch) => ({
366
+ patch,
367
+ toVersion: this._cvr.version
368
+ }))
369
+ };
370
+ }
371
+ async #lookupRowsForExecutedAndRemovedQueries(lc) {
372
+ const results = new CustomKeyMap(rowIDString);
373
+ if (this.#removedOrExecutedQueryIDs.size === 0) {
374
+ return [];
470
375
  }
471
- #keyColumns;
472
- /**
473
- * Tracks rows received from executing queries. This will update row records
474
- * and row patches if the received rows have a new version. The method also
475
- * returns (put) patches to be returned to update their state, versioned by
476
- * patchVersion so that only the patches new to the clients are sent.
477
- */
478
- async received(lc, rows) {
479
- const patches = [];
480
- const existingRows = await this._cvrStore.getRowRecords();
481
- this.#keyColumns ??= new KeyColumns(existingRows.values());
482
- for (const [id, update] of rows.entries()) {
483
- const { contents, version, refCounts } = update;
484
- let existing = existingRows.get(id);
485
- if (!existing && contents) {
486
- // See if the row being put is referenced in the CVR using a different ID.
487
- const oldID = this.#keyColumns.getOldRowID(id, contents);
488
- if (oldID) {
489
- existing = existingRows.get(oldID);
490
- if (existing && !this.#replacedRows.get(oldID)) {
491
- lc.debug?.(`replacing ${stringify(oldID)} with ${stringify(id)}`);
492
- this.#replacedRows.set(oldID, true);
493
- this._cvrStore.delRowRecord(oldID);
494
- // Force the updates for these rows to happen, even if they look like
495
- // no-ops on their own.
496
- this._cvrStore.forceUpdates(oldID, id);
497
- }
498
- }
499
- }
500
- // Accumulate all received refCounts to determine which rows to prune.
501
- const previouslyReceived = this.#receivedRows.get(id);
502
- const merged = previouslyReceived !== undefined
503
- ? mergeRefCounts(previouslyReceived, refCounts)
504
- : mergeRefCounts(existing?.refCounts, refCounts, this.#removedOrExecutedQueryIDs);
505
- this.#receivedRows.set(id, merged);
506
- const newRowVersion = merged === null ? undefined : version;
507
- const patchVersion = existing && existing.rowVersion === newRowVersion
508
- ? existing.patchVersion // existing row is unchanged
509
- : this.#assertNewVersion();
510
- // Note: for determining what to commit to the CVR store, use the
511
- // `version` of the update even if `merged` is null (i.e. don't
512
- // use `newRowVersion`). This will be deduped by the cvr-store flush
513
- // if it is redundant. In rare cases--namely, if the row key has
514
- // changed--we _do_ want to add row-put for the new row key with
515
- // `refCounts: null` in order to correctly record a delete patch
516
- // for that row, as the row with the old key will be removed.
517
- const rowVersion = version ?? existing?.rowVersion;
518
- if (rowVersion) {
519
- this._cvrStore.putRowRecord({
520
- id,
521
- rowVersion,
522
- patchVersion,
523
- refCounts: merged,
524
- });
525
- }
526
- else {
527
- // This means that a row that was not in the CVR was added during
528
- // this update, and then subsequently removed. Since there's no
529
- // corresponding row in the CVR itself, cancel the previous put.
530
- // Note that we still send a 'del' patch to the client in order to
531
- // cancel the previous 'put' patch.
532
- this._cvrStore.delRowRecord(id);
533
- }
534
- // Dedupe against the lastPatch sent for the row, and ensure that
535
- // toVersion never backtracks (lest it be undesirably filtered).
536
- const lastPatch = this.#lastPatches.get(id);
537
- const toVersion = maxVersion(patchVersion, lastPatch?.toVersion);
538
- if (merged === null) {
539
- // All refCounts have gone to zero, if row was previously synced
540
- // delete it.
541
- if (existing || previouslyReceived) {
542
- // dedupe
543
- if (lastPatch?.rowVersion !== null) {
544
- patches.push({
545
- patch: {
546
- type: 'row',
547
- op: 'del',
548
- id,
549
- },
550
- toVersion,
551
- });
552
- this.#lastPatches.set(id, { rowVersion: null, toVersion });
553
- }
554
- }
555
- }
556
- else if (contents) {
557
- assert(rowVersion);
558
- // dedupe
559
- if (!lastPatch?.rowVersion || lastPatch.rowVersion < rowVersion) {
560
- patches.push({
561
- patch: {
562
- type: 'row',
563
- op: 'put',
564
- id,
565
- contents,
566
- },
567
- toVersion,
568
- });
569
- this.#lastPatches.set(id, { rowVersion, toVersion });
570
- }
571
- }
376
+ const allRowRecords = (await this._cvrStore.getRowRecords()).values();
377
+ let total = 0;
378
+ for (const existing of allRowRecords) {
379
+ total++;
380
+ assert(existing.refCounts !== null);
381
+ for (const id of Object.keys(existing.refCounts)) {
382
+ if (this.#removedOrExecutedQueryIDs.has(id)) {
383
+ results.set(existing.id, existing);
384
+ break;
572
385
  }
573
- return patches;
386
+ }
574
387
  }
575
- /**
576
- * Computes and updates the row records based on:
577
- * * The {@link #executed} queries
578
- * * The {@link #removed} queries
579
- * * The {@link received} rows
580
- *
581
- * Returns the final delete and patch ops that must be sent to the client
582
- * to delete rows that are no longer referenced by any query.
583
- *
584
- * This is Step [5] of the
585
- * [CVR Sync Algorithm](https://www.notion.so/replicache/Sync-and-Client-View-Records-CVR-a18e02ec3ec543449ea22070855ff33d?pvs=4#7874f9b80a514be2b8cd5cf538b88d37).
586
- */
587
- async deleteUnreferencedRows(lc) {
588
- if (this.#removedOrExecutedQueryIDs.size === 0) {
589
- // Query-less update. This can happen for config-only changes.
590
- assert(this.#receivedRows.size === 0);
591
- return [];
592
- }
593
- // patches to send to the client.
594
- const patches = [];
595
- const start = Date.now();
596
- assert(this.#existingRows, `trackQueries() was not called`);
597
- for (const existing of await this.#existingRows) {
598
- const deletedID = this.#deleteUnreferencedRow(existing);
599
- if (deletedID === null) {
600
- continue;
601
- }
388
+ lc.debug?.(
389
+ `found ${results.size} (of ${total}) rows for executed / removed queries ${[
390
+ ...this.#removedOrExecutedQueryIDs
391
+ ]}`
392
+ );
393
+ return results.values();
394
+ }
395
+ /**
396
+ * Tracks an executed query, ensures that it is marked as "gotten",
397
+ * updating the CVR and creating put patches if necessary.
398
+ *
399
+ * This must be called for all executed queries.
400
+ */
401
+ #trackExecuted(queryID, transformationHash) {
402
+ assert(!this.#removedOrExecutedQueryIDs.has(queryID));
403
+ this.#removedOrExecutedQueryIDs.add(queryID);
404
+ let gotQueryPatch;
405
+ const query = this._cvr.queries[queryID];
406
+ if (query.transformationHash !== transformationHash) {
407
+ const transformationVersion = this._ensureNewVersion();
408
+ if (query.type !== "internal" && query.patchVersion === void 0) {
409
+ query.patchVersion = transformationVersion;
410
+ gotQueryPatch = {
411
+ type: "query",
412
+ op: "put",
413
+ id: query.id
414
+ };
415
+ }
416
+ query.transformationHash = transformationHash;
417
+ query.transformationVersion = transformationVersion;
418
+ this._cvrStore.updateQuery(query);
419
+ }
420
+ return gotQueryPatch ? [gotQueryPatch] : [];
421
+ }
422
+ /**
423
+ * Tracks a query removed from the "gotten" set. In addition to producing the
424
+ * appropriate patches for deleting the query, the removed query is taken into
425
+ * account when computing the final row records in
426
+ * {@link deleteUnreferencedRows}.
427
+ * Namely, any rows with columns that are no longer referenced by a
428
+ * query are deleted.
429
+ *
430
+ * This must only be called on queries that are not "desired" by any client.
431
+ */
432
+ #trackRemoved(queryID) {
433
+ const query = this._cvr.queries[queryID];
434
+ assertNotInternal(query);
435
+ assert(!this.#removedOrExecutedQueryIDs.has(queryID));
436
+ this.#removedOrExecutedQueryIDs.add(queryID);
437
+ delete this._cvr.queries[queryID];
438
+ const newVersion = this._ensureNewVersion();
439
+ const queryPatch = { type: "query", op: "del", id: queryID };
440
+ this._cvrStore.markQueryAsDeleted(newVersion, queryPatch);
441
+ return [queryPatch];
442
+ }
443
+ /**
444
+ * Asserts that a new version has already been set.
445
+ *
446
+ * After {@link #executed} and {@link #removed} are called, we must have properly
447
+ * decided on the final CVR version because the poke-start message declares the
448
+ * final cookie (i.e. version), and that must be sent before any poke parts
449
+ * generated from {@link received} are sent.
450
+ */
451
+ #assertNewVersion() {
452
+ assert(cmpVersions(this._orig.version, this._cvr.version) < 0);
453
+ return this._cvr.version;
454
+ }
455
+ updatedVersion() {
456
+ return this._cvr.version;
457
+ }
458
+ /**
459
+ * Tracks rows received from executing queries. This will update row records
460
+ * and row patches if the received rows have a new version. The method also
461
+ * returns (put) patches to be returned to update their state, versioned by
462
+ * patchVersion so that only the patches new to the clients are sent.
463
+ */
464
+ async received(_lc, rows) {
465
+ const patches = [];
466
+ const existingRows = await this._cvrStore.getRowRecords();
467
+ for (const [id, update] of rows.entries()) {
468
+ const { contents, version, refCounts } = update;
469
+ let existing = existingRows.get(id);
470
+ const previouslyReceived = this.#receivedRows.get(id);
471
+ const merged = previouslyReceived !== void 0 ? mergeRefCounts(previouslyReceived, refCounts) : mergeRefCounts(
472
+ existing?.refCounts,
473
+ refCounts,
474
+ this.#removedOrExecutedQueryIDs
475
+ );
476
+ this.#receivedRows.set(id, merged);
477
+ const newRowVersion = merged === null ? void 0 : version;
478
+ const patchVersion = existing && existing.rowVersion === newRowVersion ? existing.patchVersion : this.#assertNewVersion();
479
+ const rowVersion = version ?? existing?.rowVersion;
480
+ if (rowVersion) {
481
+ this._cvrStore.putRowRecord({
482
+ id,
483
+ rowVersion,
484
+ patchVersion,
485
+ refCounts: merged
486
+ });
487
+ } else {
488
+ this._cvrStore.delRowRecord(id);
489
+ }
490
+ const lastPatch = this.#lastPatches.get(id);
491
+ const toVersion = maxVersion(patchVersion, lastPatch?.toVersion);
492
+ if (merged === null) {
493
+ if (existing || previouslyReceived) {
494
+ if (lastPatch?.rowVersion !== null) {
602
495
  patches.push({
603
- toVersion: this._cvr.version,
604
- patch: { type: 'row', op: 'del', id: deletedID },
496
+ patch: {
497
+ type: "row",
498
+ op: "del",
499
+ id
500
+ },
501
+ toVersion
605
502
  });
503
+ this.#lastPatches.set(id, { rowVersion: null, toVersion });
504
+ }
606
505
  }
607
- lc?.debug?.(`computed ${patches.length} delete patches (${Date.now() - start} ms)`);
608
- return patches;
609
- }
610
- #deleteUnreferencedRow(existing) {
611
- if (this.#receivedRows.get(existing.id) ||
612
- this.#replacedRows.get(existing.id)) {
613
- return null;
506
+ } else if (contents) {
507
+ assert(rowVersion);
508
+ if (!lastPatch?.rowVersion || lastPatch.rowVersion < rowVersion) {
509
+ patches.push({
510
+ patch: {
511
+ type: "row",
512
+ op: "put",
513
+ id,
514
+ contents
515
+ },
516
+ toVersion
517
+ });
518
+ this.#lastPatches.set(id, { rowVersion, toVersion });
614
519
  }
615
- const newRefCounts = mergeRefCounts(existing.refCounts, undefined, this.#removedOrExecutedQueryIDs);
616
- // If a row is still referenced, we update the refCounts but not the
617
- // patchVersion (as the existence and contents of the row have not
618
- // changed from the clients' perspective). If the row is deleted, it
619
- // gets a new patchVersion (and corresponding poke).
620
- const patchVersion = newRefCounts
621
- ? existing.patchVersion
622
- : this.#assertNewVersion();
623
- const rowRecord = {
624
- ...existing,
625
- patchVersion,
626
- refCounts: newRefCounts,
627
- };
628
- this._cvrStore.putRowRecord(rowRecord);
629
- // Return the id to delete if no longer referenced.
630
- return newRefCounts ? null : existing.id;
520
+ }
631
521
  }
632
- }
633
- function mergeRefCounts(existing, received, removeHashes) {
634
- let merged = {};
635
- if (!existing) {
636
- merged = received ?? {};
522
+ return patches;
523
+ }
524
+ /**
525
+ * Computes and updates the row records based on:
526
+ * * The {@link #executed} queries
527
+ * * The {@link #removed} queries
528
+ * * The {@link received} rows
529
+ *
530
+ * Returns the final delete and patch ops that must be sent to the client
531
+ * to delete rows that are no longer referenced by any query.
532
+ *
533
+ * This is Step [5] of the
534
+ * [CVR Sync Algorithm](https://www.notion.so/replicache/Sync-and-Client-View-Records-CVR-a18e02ec3ec543449ea22070855ff33d?pvs=4#7874f9b80a514be2b8cd5cf538b88d37).
535
+ */
536
+ async deleteUnreferencedRows(lc) {
537
+ if (this.#removedOrExecutedQueryIDs.size === 0) {
538
+ assert(this.#receivedRows.size === 0);
539
+ return [];
637
540
  }
638
- else {
639
- [existing, received].forEach((refCounts, i) => {
640
- if (!refCounts) {
641
- return;
642
- }
643
- for (const [hash, count] of Object.entries(refCounts)) {
644
- if (i === 0 /* existing */ && removeHashes?.has(hash)) {
645
- continue; // removeHashes from existing row.
646
- }
647
- merged[hash] = (merged[hash] ?? 0) + count;
648
- if (merged[hash] === 0) {
649
- delete merged[hash];
650
- }
651
- }
652
- return merged;
653
- });
541
+ const patches = [];
542
+ const start = Date.now();
543
+ assert(this.#existingRows, `trackQueries() was not called`);
544
+ for (const existing of await this.#existingRows) {
545
+ const deletedID = this.#deleteUnreferencedRow(existing);
546
+ if (deletedID === null) {
547
+ continue;
548
+ }
549
+ patches.push({
550
+ toVersion: this._cvr.version,
551
+ patch: { type: "row", op: "del", id: deletedID }
552
+ });
553
+ }
554
+ lc?.debug?.(
555
+ `computed ${patches.length} delete patches (${Date.now() - start} ms)`
556
+ );
557
+ return patches;
558
+ }
559
+ #deleteUnreferencedRow(existing) {
560
+ if (this.#receivedRows.get(existing.id)) {
561
+ return null;
654
562
  }
655
- return Object.values(merged).some(v => v > 0) ? merged : null;
563
+ const newRefCounts = mergeRefCounts(
564
+ existing.refCounts,
565
+ void 0,
566
+ this.#removedOrExecutedQueryIDs
567
+ );
568
+ const patchVersion = newRefCounts ? existing.patchVersion : this.#assertNewVersion();
569
+ const rowRecord = {
570
+ ...existing,
571
+ patchVersion,
572
+ refCounts: newRefCounts
573
+ };
574
+ this._cvrStore.putRowRecord(rowRecord);
575
+ return newRefCounts ? null : existing.id;
576
+ }
656
577
  }
657
- /**
658
- * The query must be inactive for all clients to be considered inactive.
659
- * This is because expiration is defined that way: a query is expired for a client group
660
- * only if it is expired for all clients in the group.
661
- *
662
- * If all clients have inactivated the query, we return
663
- * the one with the expiration furthest in the future.
664
- */
665
- export function getInactiveQueries(cvr) {
666
- // We no longer support a TTL larger than 10 minutes.
667
- const inactive = new Map();
668
- for (const [queryID, query] of Object.entries(cvr.queries)) {
669
- if (query.type === 'internal') {
670
- continue;
671
- }
672
- for (const clientState of Object.values(query.clientState)) {
673
- // 1. Take the longest TTL
674
- // 2. If the query is not inactivated (for any client), do not return it
675
- const { inactivatedAt, ttl } = clientState;
676
- const existing = inactive.get(queryID);
677
- if (inactivatedAt === undefined) {
678
- if (existing) {
679
- inactive.delete(queryID);
680
- }
681
- break;
682
- }
683
- const clampedTTL = clampTTL(ttl);
684
- if (existing) {
685
- // The stored one might be too large because from a previous version of
686
- // zero
687
- const existingTTL = clampTTL(existing.ttl);
688
- // Use the last eviction time.
689
- if (existingTTL + ttlClockAsNumber(existing.inactivatedAt) <
690
- ttlClockAsNumber(inactivatedAt) + clampedTTL) {
691
- existing.ttl = clampedTTL;
692
- existing.inactivatedAt = inactivatedAt;
693
- }
694
- }
695
- else {
696
- inactive.set(queryID, {
697
- hash: queryID,
698
- inactivatedAt,
699
- ttl: clampedTTL,
700
- });
701
- }
578
+ function mergeRefCounts(existing, received, removeHashes) {
579
+ let merged = {};
580
+ if (!existing) {
581
+ merged = received ?? {};
582
+ } else {
583
+ [existing, received].forEach((refCounts, i) => {
584
+ if (!refCounts) {
585
+ return;
586
+ }
587
+ for (const [hash, count] of Object.entries(refCounts)) {
588
+ if (i === 0 && removeHashes?.has(hash)) {
589
+ continue;
702
590
  }
703
- }
704
- // First sort all the queries that have TTL. Oldest first.
705
- return [...inactive.values()].sort((a, b) => {
706
- if (a.ttl === b.ttl) {
707
- return (ttlClockAsNumber(a.inactivatedAt) - ttlClockAsNumber(b.inactivatedAt));
591
+ merged[hash] = (merged[hash] ?? 0) + count;
592
+ if (merged[hash] === 0) {
593
+ delete merged[hash];
708
594
  }
709
- return (ttlClockAsNumber(a.inactivatedAt) +
710
- a.ttl -
711
- ttlClockAsNumber(b.inactivatedAt) -
712
- b.ttl);
595
+ }
596
+ return merged;
713
597
  });
598
+ }
599
+ return Object.values(merged).some((v) => v > 0) ? merged : null;
714
600
  }
715
- export function nextEvictionTime(cvr) {
716
- let next;
717
- for (const { inactivatedAt, ttl } of getInactiveQueries(cvr)) {
718
- const expire = ttlClockAsNumber(inactivatedAt) + ttl;
719
- if (next === undefined || expire < next) {
720
- next = expire;
601
+ function getInactiveQueries(cvr) {
602
+ const inactive = /* @__PURE__ */ new Map();
603
+ for (const [queryID, query] of Object.entries(cvr.queries)) {
604
+ if (query.type === "internal") {
605
+ continue;
606
+ }
607
+ for (const clientState of Object.values(query.clientState)) {
608
+ const { inactivatedAt, ttl } = clientState;
609
+ const existing = inactive.get(queryID);
610
+ if (inactivatedAt === void 0) {
611
+ if (existing) {
612
+ inactive.delete(queryID);
613
+ }
614
+ break;
615
+ }
616
+ const clampedTTL = clampTTL(ttl);
617
+ if (existing) {
618
+ const existingTTL = clampTTL(existing.ttl);
619
+ if (existingTTL + ttlClockAsNumber(existing.inactivatedAt) < ttlClockAsNumber(inactivatedAt) + clampedTTL) {
620
+ existing.ttl = clampedTTL;
621
+ existing.inactivatedAt = inactivatedAt;
721
622
  }
623
+ } else {
624
+ inactive.set(queryID, {
625
+ hash: queryID,
626
+ inactivatedAt,
627
+ ttl: clampedTTL
628
+ });
629
+ }
722
630
  }
723
- return next;
631
+ }
632
+ return [...inactive.values()].sort((a, b) => {
633
+ if (a.ttl === b.ttl) {
634
+ return ttlClockAsNumber(a.inactivatedAt) - ttlClockAsNumber(b.inactivatedAt);
635
+ }
636
+ return ttlClockAsNumber(a.inactivatedAt) + a.ttl - ttlClockAsNumber(b.inactivatedAt) - b.ttl;
637
+ });
724
638
  }
725
- function newQueryRecord(id, ast, name, args) {
726
- if (ast !== undefined) {
727
- assert(name === undefined && args === undefined, 'Cannot provide name or args with ast');
728
- return {
729
- id,
730
- type: 'client',
731
- ast,
732
- clientState: {},
733
- };
639
+ function nextEvictionTime(cvr) {
640
+ let next;
641
+ for (const { inactivatedAt, ttl } of getInactiveQueries(cvr)) {
642
+ const expire = ttlClockAsNumber(inactivatedAt) + ttl;
643
+ if (next === void 0 || expire < next) {
644
+ next = expire;
734
645
  }
735
- assert(name !== undefined && args !== undefined, 'Must provide name and args');
646
+ }
647
+ return next;
648
+ }
649
+ function newQueryRecord(id, ast, name, args) {
650
+ if (ast !== void 0) {
651
+ assert(
652
+ name === void 0 && args === void 0,
653
+ "Cannot provide name or args with ast"
654
+ );
736
655
  return {
737
- id,
738
- type: 'custom',
739
- name,
740
- args,
741
- clientState: {},
656
+ id,
657
+ type: "client",
658
+ ast,
659
+ clientState: {}
742
660
  };
661
+ }
662
+ assert(
663
+ name !== void 0 && args !== void 0,
664
+ "Must provide name and args"
665
+ );
666
+ return {
667
+ id,
668
+ type: "custom",
669
+ name,
670
+ args,
671
+ clientState: {}
672
+ };
743
673
  }
744
- //# sourceMappingURL=cvr.js.map
674
+ export {
675
+ CVRConfigDrivenUpdater,
676
+ CVRQueryDrivenUpdater,
677
+ CVRUpdater,
678
+ getInactiveQueries,
679
+ getMutationResultsQuery,
680
+ nextEvictionTime
681
+ };
682
+ //# sourceMappingURL=cvr.js.map