@rocicorp/zero 0.25.0-canary.0 → 0.25.0-canary.10

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