@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
@@ -0,0 +1,271 @@
1
+ import { assert } from "../../../shared/src/asserts.js";
2
+ import { must } from "../../../shared/src/must.js";
3
+ import { planIdSymbol } from "../../../zero-protocol/src/ast.js";
4
+ import { PlannerFanIn } from "./planner-fan-in.js";
5
+ import { PlannerFanOut } from "./planner-fan-out.js";
6
+ import { PlannerGraph } from "./planner-graph.js";
7
+ import { PlannerJoin } from "./planner-join.js";
8
+ import { PlannerTerminus } from "./planner-terminus.js";
9
+ function wireOutput(from, to) {
10
+ switch (from.kind) {
11
+ case "connection":
12
+ case "join":
13
+ case "fan-in":
14
+ from.setOutput(to);
15
+ break;
16
+ case "fan-out":
17
+ from.addOutput(to);
18
+ break;
19
+ case "terminus":
20
+ assert(false, "Terminus nodes cannot have outputs");
21
+ }
22
+ }
23
+ function buildPlanGraph(ast, model, isRoot, baseConstraints) {
24
+ const graph = new PlannerGraph();
25
+ let nextPlanId = 0;
26
+ const source = graph.addSource(ast.table, model);
27
+ const connection = source.connect(
28
+ ast.orderBy ?? [],
29
+ ast.where,
30
+ isRoot,
31
+ baseConstraints,
32
+ ast.limit
33
+ );
34
+ graph.connections.push(connection);
35
+ let end = connection;
36
+ if (ast.where) {
37
+ end = processCondition(
38
+ ast.where,
39
+ end,
40
+ graph,
41
+ model,
42
+ ast.table,
43
+ () => nextPlanId++
44
+ );
45
+ }
46
+ const terminus = new PlannerTerminus(end);
47
+ wireOutput(end, terminus);
48
+ graph.setTerminus(terminus);
49
+ const subPlans = {};
50
+ if (ast.related) {
51
+ for (const csq of ast.related) {
52
+ const alias = must(
53
+ csq.subquery.alias,
54
+ "Related subquery must have alias"
55
+ );
56
+ const childConstraints = extractConstraint(
57
+ csq.correlation.childField,
58
+ csq.subquery.table
59
+ );
60
+ subPlans[alias] = buildPlanGraph(
61
+ csq.subquery,
62
+ model,
63
+ true,
64
+ childConstraints
65
+ );
66
+ }
67
+ }
68
+ return { plan: graph, subPlans };
69
+ }
70
+ function processCondition(condition, input, graph, model, parentTable, getPlanId) {
71
+ switch (condition.type) {
72
+ case "simple":
73
+ return input;
74
+ case "and":
75
+ return processAnd(condition, input, graph, model, parentTable, getPlanId);
76
+ case "or":
77
+ return processOr(condition, input, graph, model, parentTable, getPlanId);
78
+ case "correlatedSubquery":
79
+ return processCorrelatedSubquery(
80
+ condition,
81
+ input,
82
+ graph,
83
+ model,
84
+ parentTable,
85
+ getPlanId
86
+ );
87
+ }
88
+ }
89
+ function processAnd(condition, input, graph, model, parentTable, getPlanId) {
90
+ let end = input;
91
+ for (const subCondition of condition.conditions) {
92
+ end = processCondition(
93
+ subCondition,
94
+ end,
95
+ graph,
96
+ model,
97
+ parentTable,
98
+ getPlanId
99
+ );
100
+ }
101
+ return end;
102
+ }
103
+ function processOr(condition, input, graph, model, parentTable, getPlanId) {
104
+ const subqueryConditions = condition.conditions.filter(
105
+ (c) => c.type === "correlatedSubquery" || hasCorrelatedSubquery(c)
106
+ );
107
+ if (subqueryConditions.length === 0) {
108
+ return input;
109
+ }
110
+ const fanOut = new PlannerFanOut(input);
111
+ graph.fanOuts.push(fanOut);
112
+ wireOutput(input, fanOut);
113
+ const branches = [];
114
+ for (const subCondition of subqueryConditions) {
115
+ const branch = processCondition(
116
+ subCondition,
117
+ fanOut,
118
+ graph,
119
+ model,
120
+ parentTable,
121
+ getPlanId
122
+ );
123
+ branches.push(branch);
124
+ fanOut.addOutput(branch);
125
+ }
126
+ const fanIn = new PlannerFanIn(branches);
127
+ graph.fanIns.push(fanIn);
128
+ for (const branch of branches) {
129
+ wireOutput(branch, fanIn);
130
+ }
131
+ return fanIn;
132
+ }
133
+ function processCorrelatedSubquery(condition, input, graph, model, parentTable, getPlanId) {
134
+ const { related } = condition;
135
+ const childTable = related.subquery.table;
136
+ const childSource = graph.hasSource(childTable) ? graph.getSource(childTable) : graph.addSource(childTable, model);
137
+ const childConnection = childSource.connect(
138
+ related.subquery.orderBy ?? [],
139
+ related.subquery.where,
140
+ false,
141
+ void 0,
142
+ // no base constraints for EXISTS/NOT EXISTS
143
+ condition.op === "EXISTS" ? 1 : void 0
144
+ );
145
+ graph.connections.push(childConnection);
146
+ let childEnd = childConnection;
147
+ if (related.subquery.where) {
148
+ childEnd = processCondition(
149
+ related.subquery.where,
150
+ childEnd,
151
+ graph,
152
+ model,
153
+ childTable,
154
+ getPlanId
155
+ );
156
+ }
157
+ const parentConstraint = extractConstraint(
158
+ related.correlation.parentField
159
+ );
160
+ const childConstraint = extractConstraint(
161
+ related.correlation.childField
162
+ );
163
+ const planId = getPlanId();
164
+ condition[planIdSymbol] = planId;
165
+ const isNotExists = condition.op === "NOT EXISTS";
166
+ const manualFlip = condition.flip;
167
+ let flippable;
168
+ let initialType;
169
+ if (isNotExists) {
170
+ flippable = false;
171
+ initialType = "semi";
172
+ } else if (manualFlip === true) {
173
+ flippable = false;
174
+ initialType = "flipped";
175
+ } else if (manualFlip === false) {
176
+ flippable = false;
177
+ initialType = "semi";
178
+ } else {
179
+ flippable = true;
180
+ initialType = "semi";
181
+ }
182
+ const join = new PlannerJoin(
183
+ input,
184
+ childEnd,
185
+ parentConstraint,
186
+ childConstraint,
187
+ flippable,
188
+ planId,
189
+ initialType
190
+ );
191
+ graph.joins.push(join);
192
+ wireOutput(input, join);
193
+ wireOutput(childEnd, join);
194
+ return join;
195
+ }
196
+ function hasCorrelatedSubquery(condition) {
197
+ if (condition.type === "correlatedSubquery") {
198
+ return true;
199
+ }
200
+ if (condition.type === "and" || condition.type === "or") {
201
+ return condition.conditions.some(hasCorrelatedSubquery);
202
+ }
203
+ return false;
204
+ }
205
+ function extractConstraint(fields, _tableName) {
206
+ return Object.fromEntries(fields.map((field) => [field, void 0]));
207
+ }
208
+ function planRecursively(plans, planDebugger) {
209
+ for (const subPlan of Object.values(plans.subPlans)) {
210
+ planRecursively(subPlan, planDebugger);
211
+ }
212
+ plans.plan.plan(planDebugger);
213
+ }
214
+ function planQuery(ast, model, planDebugger) {
215
+ const plans = buildPlanGraph(ast, model, true);
216
+ planRecursively(plans, planDebugger);
217
+ return applyPlansToAST(ast, plans);
218
+ }
219
+ function applyToCondition(condition, flippedIds) {
220
+ if (condition.type === "simple") {
221
+ return condition;
222
+ }
223
+ if (condition.type === "correlatedSubquery") {
224
+ const planId = condition[planIdSymbol];
225
+ const shouldFlip = planId !== void 0 && flippedIds.has(planId);
226
+ return {
227
+ ...condition,
228
+ flip: shouldFlip,
229
+ related: {
230
+ ...condition.related,
231
+ subquery: {
232
+ ...condition.related.subquery,
233
+ where: condition.related.subquery.where ? applyToCondition(condition.related.subquery.where, flippedIds) : void 0
234
+ }
235
+ }
236
+ };
237
+ }
238
+ return {
239
+ ...condition,
240
+ conditions: condition.conditions.map((c) => applyToCondition(c, flippedIds))
241
+ };
242
+ }
243
+ function applyPlansToAST(ast, plans) {
244
+ const flippedIds = /* @__PURE__ */ new Set();
245
+ for (const join of plans.plan.joins) {
246
+ if (join.type === "flipped" && join.planId !== void 0) {
247
+ flippedIds.add(join.planId);
248
+ }
249
+ }
250
+ return {
251
+ ...ast,
252
+ where: ast.where ? applyToCondition(ast.where, flippedIds) : void 0,
253
+ related: ast.related?.map((csq) => {
254
+ const alias = must(
255
+ csq.subquery.alias,
256
+ "Related subquery must have alias"
257
+ );
258
+ const subPlan = plans.subPlans[alias];
259
+ return {
260
+ ...csq,
261
+ subquery: subPlan ? applyPlansToAST(csq.subquery, subPlan) : csq.subquery
262
+ };
263
+ })
264
+ };
265
+ }
266
+ export {
267
+ applyPlansToAST,
268
+ buildPlanGraph,
269
+ planQuery
270
+ };
271
+ //# sourceMappingURL=planner-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-builder.js","sources":["../../../../../zql/src/planner/planner-builder.ts"],"sourcesContent":["import {assert} from '../../../shared/src/asserts.ts';\nimport {must} from '../../../shared/src/must.ts';\nimport type {\n AST,\n Condition,\n Conjunction,\n CorrelatedSubqueryCondition,\n Disjunction,\n} from '../../../zero-protocol/src/ast.ts';\nimport {planIdSymbol} from '../../../zero-protocol/src/ast.ts';\nimport type {ConnectionCostModel} from './planner-connection.ts';\nimport type {PlannerConstraint} from './planner-constraint.ts';\nimport type {PlanDebugger} from './planner-debug.ts';\nimport {PlannerFanIn} from './planner-fan-in.ts';\nimport {PlannerFanOut} from './planner-fan-out.ts';\nimport {PlannerGraph} from './planner-graph.ts';\nimport {PlannerJoin} from './planner-join.ts';\nimport type {PlannerNode} from './planner-node.ts';\nimport {PlannerTerminus} from './planner-terminus.ts';\n\nfunction wireOutput(from: PlannerNode, to: PlannerNode): void {\n switch (from.kind) {\n case 'connection':\n case 'join':\n case 'fan-in':\n from.setOutput(to);\n break;\n case 'fan-out':\n from.addOutput(to);\n break;\n case 'terminus':\n assert(false, 'Terminus nodes cannot have outputs');\n }\n}\n\nexport type Plans = {\n plan: PlannerGraph;\n subPlans: {[key: string]: Plans};\n};\n\nexport function buildPlanGraph(\n ast: AST,\n model: ConnectionCostModel,\n isRoot: boolean,\n baseConstraints?: PlannerConstraint,\n): Plans {\n const graph = new PlannerGraph();\n let nextPlanId = 0;\n\n const source = graph.addSource(ast.table, model);\n const connection = source.connect(\n ast.orderBy ?? [],\n ast.where,\n isRoot,\n baseConstraints,\n ast.limit,\n );\n graph.connections.push(connection);\n\n let end: PlannerNode = connection;\n if (ast.where) {\n end = processCondition(\n ast.where,\n end,\n graph,\n model,\n ast.table,\n () => nextPlanId++,\n );\n }\n\n const terminus = new PlannerTerminus(end);\n wireOutput(end, terminus);\n graph.setTerminus(terminus);\n\n const subPlans: {[key: string]: Plans} = {};\n if (ast.related) {\n for (const csq of ast.related) {\n const alias = must(\n csq.subquery.alias,\n 'Related subquery must have alias',\n );\n const childConstraints = extractConstraint(\n csq.correlation.childField,\n csq.subquery.table,\n );\n subPlans[alias] = buildPlanGraph(\n csq.subquery,\n model,\n true,\n childConstraints,\n );\n }\n }\n\n return {plan: graph, subPlans};\n}\n\nfunction processCondition(\n condition: Condition,\n input: Exclude<PlannerNode, PlannerTerminus>,\n graph: PlannerGraph,\n model: ConnectionCostModel,\n parentTable: string,\n getPlanId: () => number,\n): Exclude<PlannerNode, PlannerTerminus> {\n switch (condition.type) {\n case 'simple':\n return input;\n case 'and':\n return processAnd(condition, input, graph, model, parentTable, getPlanId);\n case 'or':\n return processOr(condition, input, graph, model, parentTable, getPlanId);\n case 'correlatedSubquery':\n return processCorrelatedSubquery(\n condition,\n input,\n graph,\n model,\n parentTable,\n getPlanId,\n );\n }\n}\n\nfunction processAnd(\n condition: Conjunction,\n input: Exclude<PlannerNode, PlannerTerminus>,\n graph: PlannerGraph,\n model: ConnectionCostModel,\n parentTable: string,\n getPlanId: () => number,\n): Exclude<PlannerNode, PlannerTerminus> {\n let end = input;\n for (const subCondition of condition.conditions) {\n end = processCondition(\n subCondition,\n end,\n graph,\n model,\n parentTable,\n getPlanId,\n );\n }\n return end;\n}\n\nfunction processOr(\n condition: Disjunction,\n input: Exclude<PlannerNode, PlannerTerminus>,\n graph: PlannerGraph,\n model: ConnectionCostModel,\n parentTable: string,\n getPlanId: () => number,\n): Exclude<PlannerNode, PlannerTerminus> {\n const subqueryConditions = condition.conditions.filter(\n c => c.type === 'correlatedSubquery' || hasCorrelatedSubquery(c),\n );\n\n if (subqueryConditions.length === 0) {\n return input;\n }\n\n const fanOut = new PlannerFanOut(input);\n graph.fanOuts.push(fanOut);\n wireOutput(input, fanOut);\n\n const branches: Exclude<PlannerNode, PlannerTerminus>[] = [];\n for (const subCondition of subqueryConditions) {\n const branch = processCondition(\n subCondition,\n fanOut,\n graph,\n model,\n parentTable,\n getPlanId,\n );\n branches.push(branch);\n fanOut.addOutput(branch);\n }\n\n const fanIn = new PlannerFanIn(branches);\n graph.fanIns.push(fanIn);\n for (const branch of branches) {\n wireOutput(branch, fanIn);\n }\n\n return fanIn;\n}\n\nfunction processCorrelatedSubquery(\n condition: CorrelatedSubqueryCondition,\n input: Exclude<PlannerNode, PlannerTerminus>,\n graph: PlannerGraph,\n model: ConnectionCostModel,\n parentTable: string,\n getPlanId: () => number,\n): Exclude<PlannerNode, PlannerTerminus> {\n const {related} = condition;\n const childTable = related.subquery.table;\n\n const childSource = graph.hasSource(childTable)\n ? graph.getSource(childTable)\n : graph.addSource(childTable, model);\n\n const childConnection = childSource.connect(\n related.subquery.orderBy ?? [],\n related.subquery.where,\n false,\n undefined, // no base constraints for EXISTS/NOT EXISTS\n condition.op === 'EXISTS' ? 1 : undefined,\n );\n graph.connections.push(childConnection);\n\n let childEnd: PlannerNode = childConnection;\n if (related.subquery.where) {\n childEnd = processCondition(\n related.subquery.where,\n childEnd,\n graph,\n model,\n childTable,\n getPlanId,\n );\n }\n\n const parentConstraint = extractConstraint(\n related.correlation.parentField,\n parentTable,\n );\n const childConstraint = extractConstraint(\n related.correlation.childField,\n childTable,\n );\n\n const planId = getPlanId();\n condition[planIdSymbol] = planId;\n\n // Determine flippability and initial type based on flip flag and operator\n const isNotExists = condition.op === 'NOT EXISTS';\n const manualFlip = condition.flip;\n\n let flippable: boolean;\n let initialType: 'semi' | 'flipped';\n\n if (isNotExists) {\n // NOT EXISTS joins can never be flipped\n flippable = false;\n initialType = 'semi';\n } else if (manualFlip === true) {\n // User explicitly requested flip=true: start flipped, don't allow planner to change\n flippable = false;\n initialType = 'flipped';\n } else if (manualFlip === false) {\n // User explicitly requested flip=false: start semi, don't allow planner to change\n flippable = false;\n initialType = 'semi';\n } else {\n // flip is undefined: planner can decide\n flippable = true;\n initialType = 'semi';\n }\n\n const join = new PlannerJoin(\n input,\n childEnd,\n parentConstraint,\n childConstraint,\n flippable,\n planId,\n initialType,\n );\n graph.joins.push(join);\n\n wireOutput(input, join);\n wireOutput(childEnd, join);\n\n return join;\n}\n\nfunction hasCorrelatedSubquery(condition: Condition): boolean {\n if (condition.type === 'correlatedSubquery') {\n return true;\n }\n if (condition.type === 'and' || condition.type === 'or') {\n return condition.conditions.some(hasCorrelatedSubquery);\n }\n return false;\n}\n\nfunction extractConstraint(\n fields: readonly string[],\n _tableName: string,\n): PlannerConstraint {\n return Object.fromEntries(fields.map(field => [field, undefined]));\n}\n\nfunction planRecursively(plans: Plans, planDebugger?: PlanDebugger): void {\n for (const subPlan of Object.values(plans.subPlans)) {\n planRecursively(subPlan, planDebugger);\n }\n plans.plan.plan(planDebugger);\n}\n\nexport function planQuery(\n ast: AST,\n model: ConnectionCostModel,\n planDebugger?: PlanDebugger,\n): AST {\n const plans = buildPlanGraph(ast, model, true);\n planRecursively(plans, planDebugger);\n return applyPlansToAST(ast, plans);\n}\n\nfunction applyToCondition(\n condition: Condition,\n flippedIds: Set<number>,\n): Condition {\n if (condition.type === 'simple') {\n return condition;\n }\n\n if (condition.type === 'correlatedSubquery') {\n const planId = (condition as unknown as Record<symbol, number>)[\n planIdSymbol\n ];\n const shouldFlip = planId !== undefined && flippedIds.has(planId);\n\n return {\n ...condition,\n flip: shouldFlip,\n related: {\n ...condition.related,\n subquery: {\n ...condition.related.subquery,\n where: condition.related.subquery.where\n ? applyToCondition(condition.related.subquery.where, flippedIds)\n : undefined,\n },\n },\n };\n }\n\n return {\n ...condition,\n conditions: condition.conditions.map(c => applyToCondition(c, flippedIds)),\n };\n}\n\nexport function applyPlansToAST(ast: AST, plans: Plans): AST {\n const flippedIds = new Set<number>();\n for (const join of plans.plan.joins) {\n if (join.type === 'flipped' && join.planId !== undefined) {\n flippedIds.add(join.planId);\n }\n }\n\n return {\n ...ast,\n where: ast.where ? applyToCondition(ast.where, flippedIds) : undefined,\n related: ast.related?.map(csq => {\n const alias = must(\n csq.subquery.alias,\n 'Related subquery must have alias',\n );\n const subPlan = plans.subPlans[alias];\n return {\n ...csq,\n subquery: subPlan\n ? applyPlansToAST(csq.subquery, subPlan)\n : csq.subquery,\n };\n }),\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ import type { Condition, Ordering } from '../../../zero-protocol/src/ast.ts';
2
+ import { type PlannerConstraint } from './planner-constraint.ts';
3
+ import type { PlanDebugger } from './planner-debug.ts';
4
+ import type { CostEstimate, JoinOrConnection, PlannerNode } from './planner-node.ts';
5
+ /**
6
+ * Represents a connection to a source (table scan).
7
+ *
8
+ * # Dual State Pattern
9
+ * Like all planner nodes, PlannerConnection separates:
10
+ * 1. immutable structure: Ordering, filters, cost model (set at construction)
11
+ * 2. mutable state: Pinned status, constraints (mutated during planning)
12
+ *
13
+ * # Cost Estimation
14
+ * The ordering and filters determine the initial cost. As planning progresses,
15
+ * constraints from parent joins refine the cost estimate.
16
+ *
17
+ * # Constraint Flow
18
+ * When a connection is pinned as the outer loop, it reveals constraints for
19
+ * connected joins. These constraints propagate through the graph, allowing
20
+ * other connections to update their cost estimates.
21
+ *
22
+ * Example:
23
+ *
24
+ * ```ts
25
+ * builder.issue.whereExists('assignee', a => a.where('name', 'Alice'))
26
+ * ```
27
+ *
28
+ * ```
29
+ * [issue] [assignee]
30
+ * | |
31
+ * | +-- where name = 'Alice'
32
+ * \ /
33
+ * \ /
34
+ * [join]
35
+ * |
36
+ * ```
37
+ *
38
+ * - Initial state: Both connections have no constraints, costs are unconstrained
39
+ * - If `issue` chosen first: Reveals constraint `assignee_id` for assignee connection
40
+ * - If `assignee` chosen first: Reveals constraint `assignee_id` for issue connection
41
+ * - Updated costs guide the next selection
42
+ *
43
+ * # Lifecycle
44
+ * 1. Construct with immutable structure (ordering, filters, cost model)
45
+ * 2. Wire to output node during graph construction
46
+ * 3. Planning mutates pinned status and accumulates constraints
47
+ * 4. reset() clears mutable state for replanning
48
+ */
49
+ export declare class PlannerConnection {
50
+ #private;
51
+ readonly kind: "connection";
52
+ readonly table: string;
53
+ readonly name: string;
54
+ readonly selectivity: number;
55
+ /**
56
+ * Current limit during planning. Can be cleared (set to undefined) when a
57
+ * parent join is flipped, indicating this connection is now in an outer loop
58
+ * and should not be limited by EXISTS semantics.
59
+ */
60
+ limit: number | undefined;
61
+ constructor(table: string, model: ConnectionCostModel, sort: Ordering, filters: Condition | undefined, isRoot: boolean, baseConstraints?: PlannerConstraint, limit?: number, name?: string);
62
+ setOutput(node: PlannerNode): void;
63
+ get output(): PlannerNode;
64
+ closestJoinOrSource(): JoinOrConnection;
65
+ /**
66
+ * Constraints are uniquely identified by their path through the
67
+ * graph.
68
+ *
69
+ * FO represents all sub-joins as a single path.
70
+ * UFO represents each sub-join as a separate path.
71
+ * The first branch in a UFO will match the path of FO so no re-set needs to happen
72
+ * when swapping from FO to UFO.
73
+ *
74
+ * FO swaps to UFO when a join inside FO-FI gets flipped.
75
+ *
76
+ * The max of the last element of the paths is the number of
77
+ * root branches.
78
+ */
79
+ propagateConstraints(path: number[], c: PlannerConstraint | undefined, from?: PlannerNode, planDebugger?: PlanDebugger): void;
80
+ estimateCost(downstreamChildSelectivity: number, branchPattern: number[], planDebugger?: PlanDebugger): CostEstimate;
81
+ /**
82
+ * Remove the limit from this connection.
83
+ * Called when a parent join is flipped, making this connection part of an
84
+ * outer loop that should produce all rows rather than stopping at the limit.
85
+ */
86
+ unlimit(): void;
87
+ /**
88
+ * Propagate unlimiting when a parent join is flipped.
89
+ * For connections, we simply remove the limit.
90
+ */
91
+ propagateUnlimitFromFlippedJoin(): void;
92
+ reset(): void;
93
+ /**
94
+ * Capture constraint state for snapshotting.
95
+ * Used by PlannerGraph to save/restore planning state.
96
+ */
97
+ captureConstraints(): Map<string, PlannerConstraint | undefined>;
98
+ /**
99
+ * Restore constraint state from a snapshot.
100
+ * Used by PlannerGraph to restore planning state.
101
+ */
102
+ restoreConstraints(constraints: Map<string, PlannerConstraint | undefined>): void;
103
+ /** Get current constraints for debugging. */
104
+ getConstraintsForDebug(): Record<string, PlannerConstraint | undefined>;
105
+ /** Get filters for debugging. */
106
+ getFiltersForDebug(): Condition | undefined;
107
+ /** Get sort/ordering for debugging. */
108
+ getSortForDebug(): Ordering;
109
+ /** Get estimated cost for each constraint branch. */
110
+ getConstraintCostsForDebug(): Record<string, CostEstimate>;
111
+ }
112
+ type FanoutEst = {
113
+ fanout: number;
114
+ confidence: 'high' | 'med' | 'none';
115
+ };
116
+ export type FanoutCostModel = (columns: string[]) => FanoutEst;
117
+ export type CostModelCost = {
118
+ startupCost: number;
119
+ rows: number;
120
+ fanout: FanoutCostModel;
121
+ };
122
+ export type ConnectionCostModel = (table: string, sort: Ordering, filters: Condition | undefined, constraint: PlannerConstraint | undefined) => CostModelCost;
123
+ export {};
124
+ //# sourceMappingURL=planner-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-connection.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBAAa,iBAAiB;;IAC5B,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IAQtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAM7B;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;gBAqBxB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,MAAM,EAAE,OAAO,EACf,eAAe,CAAC,EAAE,iBAAiB,EACnC,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM;IA4Bf,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIlC,IAAI,MAAM,IAAI,WAAW,CAGxB;IAED,mBAAmB,IAAI,gBAAgB;IAIvC;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAClB,IAAI,EAAE,MAAM,EAAE,EACd,CAAC,EAAE,iBAAiB,GAAG,SAAS,EAChC,IAAI,CAAC,EAAE,WAAW,EAClB,YAAY,CAAC,EAAE,YAAY,GAC1B,IAAI;IAgBP,YAAY,CACV,0BAA0B,EAAE,MAAM,EAClC,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY;IAqDf;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAaf;;;OAGG;IACH,+BAA+B,IAAI,IAAI;IAIvC,KAAK;IAOL;;;OAGG;IACH,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAIhE;;;OAGG;IACH,kBAAkB,CAChB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,GACtD,IAAI;IASP,6CAA6C;IAC7C,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAQvE,iCAAiC;IACjC,kBAAkB,IAAI,SAAS,GAAG,SAAS;IAI3C,uCAAuC;IACvC,eAAe,IAAI,QAAQ;IAI3B,qDAAqD;IACrD,0BAA0B,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;CAO3D;AAED,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;CACrC,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAS,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,CAChC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,UAAU,EAAE,iBAAiB,GAAG,SAAS,KACtC,aAAa,CAAC"}
@@ -0,0 +1,215 @@
1
+ import { assert } from "../../../shared/src/asserts.js";
2
+ import { mergeConstraints } from "./planner-constraint.js";
3
+ import { omitFanout } from "./planner-node.js";
4
+ class PlannerConnection {
5
+ kind = "connection";
6
+ // ========================================================================
7
+ // IMMUTABLE STRUCTURE (set during construction, never changes)
8
+ // ========================================================================
9
+ #sort;
10
+ #filters;
11
+ #model;
12
+ table;
13
+ name;
14
+ // Human-readable name for debugging (defaults to table name)
15
+ #baseConstraints;
16
+ // Constraints from parent correlation
17
+ #baseLimit;
18
+ // Original limit from query structure (never modified)
19
+ selectivity;
20
+ // Fraction of rows passing filters (1.0 = no filtering)
21
+ #output;
22
+ // Set once during graph construction
23
+ // ========================================================================
24
+ // MUTABLE PLANNING STATE (changes during plan search)
25
+ // ========================================================================
26
+ /**
27
+ * Current limit during planning. Can be cleared (set to undefined) when a
28
+ * parent join is flipped, indicating this connection is now in an outer loop
29
+ * and should not be limited by EXISTS semantics.
30
+ */
31
+ limit;
32
+ /**
33
+ * Constraints accumulated from parent joins during planning.
34
+ * Key is a path through the graph (e.g., "0,1" for branch pattern [0,1]).
35
+ *
36
+ * Undefined constraints are possible when a FO converts to UFO and only
37
+ * a single join in the UFO is flipped - other branches report undefined.
38
+ */
39
+ #constraints;
40
+ #isRoot;
41
+ /**
42
+ * Cached per-constraint costs to avoid redundant cost model calls.
43
+ * Maps constraint key (branch pattern string) to computed cost.
44
+ * Invalidated when constraints change.
45
+ */
46
+ #cachedConstraintCosts = /* @__PURE__ */ new Map();
47
+ constructor(table, model, sort, filters, isRoot, baseConstraints, limit, name) {
48
+ this.table = table;
49
+ this.name = name ?? table;
50
+ this.#sort = sort;
51
+ this.#filters = filters;
52
+ this.#model = model;
53
+ this.#baseConstraints = baseConstraints;
54
+ this.#baseLimit = limit;
55
+ this.limit = limit;
56
+ this.#constraints = /* @__PURE__ */ new Map();
57
+ this.#isRoot = isRoot;
58
+ if (limit !== void 0 && filters) {
59
+ const costWithFilters = model(table, sort, filters, void 0);
60
+ const costWithoutFilters = model(table, sort, void 0, void 0);
61
+ this.selectivity = costWithoutFilters.rows > 0 ? costWithFilters.rows / costWithoutFilters.rows : 1;
62
+ } else {
63
+ this.selectivity = 1;
64
+ }
65
+ }
66
+ setOutput(node) {
67
+ this.#output = node;
68
+ }
69
+ get output() {
70
+ assert(this.#output !== void 0, "Output not set");
71
+ return this.#output;
72
+ }
73
+ closestJoinOrSource() {
74
+ return "connection";
75
+ }
76
+ /**
77
+ * Constraints are uniquely identified by their path through the
78
+ * graph.
79
+ *
80
+ * FO represents all sub-joins as a single path.
81
+ * UFO represents each sub-join as a separate path.
82
+ * The first branch in a UFO will match the path of FO so no re-set needs to happen
83
+ * when swapping from FO to UFO.
84
+ *
85
+ * FO swaps to UFO when a join inside FO-FI gets flipped.
86
+ *
87
+ * The max of the last element of the paths is the number of
88
+ * root branches.
89
+ */
90
+ propagateConstraints(path, c, from, planDebugger) {
91
+ const key = path.join(",");
92
+ this.#constraints.set(key, c);
93
+ this.#cachedConstraintCosts.clear();
94
+ planDebugger?.log({
95
+ type: "node-constraint",
96
+ nodeType: "connection",
97
+ node: this.name,
98
+ branchPattern: path,
99
+ constraint: c,
100
+ from: from?.kind ?? "unknown"
101
+ });
102
+ }
103
+ estimateCost(downstreamChildSelectivity, branchPattern, planDebugger) {
104
+ const key = branchPattern.join(",");
105
+ let cost = this.#cachedConstraintCosts.get(key);
106
+ if (cost !== void 0) {
107
+ return cost;
108
+ }
109
+ const constraint = this.#constraints.get(key);
110
+ const mergedConstraint = mergeConstraints(
111
+ this.#baseConstraints,
112
+ constraint
113
+ );
114
+ const { startupCost, fanout, rows } = this.#model(
115
+ this.table,
116
+ this.#sort,
117
+ this.#filters,
118
+ mergedConstraint
119
+ );
120
+ cost = {
121
+ startupCost,
122
+ scanEst: this.limit === void 0 ? rows : Math.min(rows, this.limit / downstreamChildSelectivity),
123
+ cost: 0,
124
+ returnedRows: rows,
125
+ selectivity: this.selectivity,
126
+ limit: this.limit,
127
+ fanout
128
+ };
129
+ this.#cachedConstraintCosts.set(key, cost);
130
+ if (planDebugger) {
131
+ planDebugger.log({
132
+ type: "node-cost",
133
+ nodeType: "connection",
134
+ node: this.name,
135
+ branchPattern,
136
+ downstreamChildSelectivity,
137
+ costEstimate: omitFanout(cost),
138
+ filters: this.#filters,
139
+ ordering: this.#sort
140
+ });
141
+ }
142
+ return cost;
143
+ }
144
+ /**
145
+ * Remove the limit from this connection.
146
+ * Called when a parent join is flipped, making this connection part of an
147
+ * outer loop that should produce all rows rather than stopping at the limit.
148
+ */
149
+ unlimit() {
150
+ if (this.#isRoot) {
151
+ return;
152
+ }
153
+ if (this.limit !== void 0) {
154
+ this.limit = void 0;
155
+ }
156
+ }
157
+ /**
158
+ * Propagate unlimiting when a parent join is flipped.
159
+ * For connections, we simply remove the limit.
160
+ */
161
+ propagateUnlimitFromFlippedJoin() {
162
+ this.unlimit();
163
+ }
164
+ reset() {
165
+ this.#constraints.clear();
166
+ this.limit = this.#baseLimit;
167
+ this.#cachedConstraintCosts.clear();
168
+ }
169
+ /**
170
+ * Capture constraint state for snapshotting.
171
+ * Used by PlannerGraph to save/restore planning state.
172
+ */
173
+ captureConstraints() {
174
+ return new Map(this.#constraints);
175
+ }
176
+ /**
177
+ * Restore constraint state from a snapshot.
178
+ * Used by PlannerGraph to restore planning state.
179
+ */
180
+ restoreConstraints(constraints) {
181
+ this.#constraints.clear();
182
+ for (const [key, value] of constraints) {
183
+ this.#constraints.set(key, value);
184
+ }
185
+ this.#cachedConstraintCosts.clear();
186
+ }
187
+ /** Get current constraints for debugging. */
188
+ getConstraintsForDebug() {
189
+ const record = {};
190
+ for (const [key, value] of this.#constraints) {
191
+ record[key] = value;
192
+ }
193
+ return record;
194
+ }
195
+ /** Get filters for debugging. */
196
+ getFiltersForDebug() {
197
+ return this.#filters;
198
+ }
199
+ /** Get sort/ordering for debugging. */
200
+ getSortForDebug() {
201
+ return this.#sort;
202
+ }
203
+ /** Get estimated cost for each constraint branch. */
204
+ getConstraintCostsForDebug() {
205
+ const record = {};
206
+ for (const [key, value] of this.#cachedConstraintCosts) {
207
+ record[key] = value;
208
+ }
209
+ return record;
210
+ }
211
+ }
212
+ export {
213
+ PlannerConnection
214
+ };
215
+ //# sourceMappingURL=planner-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-connection.js","sources":["../../../../../zql/src/planner/planner-connection.ts"],"sourcesContent":["import {assert} from '../../../shared/src/asserts.ts';\nimport type {Condition, Ordering} from '../../../zero-protocol/src/ast.ts';\nimport {\n mergeConstraints,\n type PlannerConstraint,\n} from './planner-constraint.ts';\nimport type {PlanDebugger} from './planner-debug.ts';\nimport {omitFanout} from './planner-node.ts';\nimport type {\n CostEstimate,\n JoinOrConnection,\n PlannerNode,\n} from './planner-node.ts';\n\n/**\n * Represents a connection to a source (table scan).\n *\n * # Dual State Pattern\n * Like all planner nodes, PlannerConnection separates:\n * 1. immutable structure: Ordering, filters, cost model (set at construction)\n * 2. mutable state: Pinned status, constraints (mutated during planning)\n *\n * # Cost Estimation\n * The ordering and filters determine the initial cost. As planning progresses,\n * constraints from parent joins refine the cost estimate.\n *\n * # Constraint Flow\n * When a connection is pinned as the outer loop, it reveals constraints for\n * connected joins. These constraints propagate through the graph, allowing\n * other connections to update their cost estimates.\n *\n * Example:\n *\n * ```ts\n * builder.issue.whereExists('assignee', a => a.where('name', 'Alice'))\n * ```\n *\n * ```\n * [issue] [assignee]\n * | |\n * | +-- where name = 'Alice'\n * \\ /\n * \\ /\n * [join]\n * |\n * ```\n *\n * - Initial state: Both connections have no constraints, costs are unconstrained\n * - If `issue` chosen first: Reveals constraint `assignee_id` for assignee connection\n * - If `assignee` chosen first: Reveals constraint `assignee_id` for issue connection\n * - Updated costs guide the next selection\n *\n * # Lifecycle\n * 1. Construct with immutable structure (ordering, filters, cost model)\n * 2. Wire to output node during graph construction\n * 3. Planning mutates pinned status and accumulates constraints\n * 4. reset() clears mutable state for replanning\n */\nexport class PlannerConnection {\n readonly kind = 'connection' as const;\n\n // ========================================================================\n // IMMUTABLE STRUCTURE (set during construction, never changes)\n // ========================================================================\n readonly #sort: Ordering;\n readonly #filters: Condition | undefined;\n readonly #model: ConnectionCostModel;\n readonly table: string;\n readonly name: string; // Human-readable name for debugging (defaults to table name)\n readonly #baseConstraints: PlannerConstraint | undefined; // Constraints from parent correlation\n readonly #baseLimit: number | undefined; // Original limit from query structure (never modified)\n readonly selectivity: number; // Fraction of rows passing filters (1.0 = no filtering)\n #output?: PlannerNode | undefined; // Set once during graph construction\n\n // ========================================================================\n // MUTABLE PLANNING STATE (changes during plan search)\n // ========================================================================\n /**\n * Current limit during planning. Can be cleared (set to undefined) when a\n * parent join is flipped, indicating this connection is now in an outer loop\n * and should not be limited by EXISTS semantics.\n */\n limit: number | undefined;\n\n /**\n * Constraints accumulated from parent joins during planning.\n * Key is a path through the graph (e.g., \"0,1\" for branch pattern [0,1]).\n *\n * Undefined constraints are possible when a FO converts to UFO and only\n * a single join in the UFO is flipped - other branches report undefined.\n */\n readonly #constraints: Map<string, PlannerConstraint | undefined>;\n\n readonly #isRoot: boolean;\n\n /**\n * Cached per-constraint costs to avoid redundant cost model calls.\n * Maps constraint key (branch pattern string) to computed cost.\n * Invalidated when constraints change.\n */\n #cachedConstraintCosts: Map<string, CostEstimate> = new Map();\n\n constructor(\n table: string,\n model: ConnectionCostModel,\n sort: Ordering,\n filters: Condition | undefined,\n isRoot: boolean,\n baseConstraints?: PlannerConstraint,\n limit?: number,\n name?: string,\n ) {\n this.table = table;\n this.name = name ?? table;\n this.#sort = sort;\n this.#filters = filters;\n this.#model = model;\n this.#baseConstraints = baseConstraints;\n this.#baseLimit = limit;\n this.limit = limit;\n this.#constraints = new Map();\n this.#isRoot = isRoot;\n\n // Compute selectivity for EXISTS child connections (baseLimit === 1)\n // Selectivity = fraction of rows that pass filters\n if (limit !== undefined && filters) {\n const costWithFilters = model(table, sort, filters, undefined);\n const costWithoutFilters = model(table, sort, undefined, undefined);\n this.selectivity =\n costWithoutFilters.rows > 0\n ? costWithFilters.rows / costWithoutFilters.rows\n : 1.0;\n } else {\n // Root connections or connections without filters\n this.selectivity = 1.0;\n }\n }\n\n setOutput(node: PlannerNode): void {\n this.#output = node;\n }\n\n get output(): PlannerNode {\n assert(this.#output !== undefined, 'Output not set');\n return this.#output;\n }\n\n closestJoinOrSource(): JoinOrConnection {\n return 'connection';\n }\n\n /**\n * Constraints are uniquely identified by their path through the\n * graph.\n *\n * FO represents all sub-joins as a single path.\n * UFO represents each sub-join as a separate path.\n * The first branch in a UFO will match the path of FO so no re-set needs to happen\n * when swapping from FO to UFO.\n *\n * FO swaps to UFO when a join inside FO-FI gets flipped.\n *\n * The max of the last element of the paths is the number of\n * root branches.\n */\n propagateConstraints(\n path: number[],\n c: PlannerConstraint | undefined,\n from?: PlannerNode,\n planDebugger?: PlanDebugger,\n ): void {\n const key = path.join(',');\n this.#constraints.set(key, c);\n // Constraints changed, invalidate cost caches\n this.#cachedConstraintCosts.clear();\n\n planDebugger?.log({\n type: 'node-constraint',\n nodeType: 'connection',\n node: this.name,\n branchPattern: path,\n constraint: c,\n from: from?.kind ?? 'unknown',\n });\n }\n\n estimateCost(\n downstreamChildSelectivity: number,\n branchPattern: number[],\n planDebugger?: PlanDebugger,\n ): CostEstimate {\n // Branch pattern specified - return cost for this specific branch\n const key = branchPattern.join(',');\n\n // Check per-constraint cache first\n let cost = this.#cachedConstraintCosts.get(key);\n if (cost !== undefined) {\n return cost;\n }\n\n // Cache miss - compute and cache\n const constraint = this.#constraints.get(key);\n // Merge base constraints with propagated constraints\n const mergedConstraint = mergeConstraints(\n this.#baseConstraints,\n constraint,\n );\n const {startupCost, fanout, rows} = this.#model(\n this.table,\n this.#sort,\n this.#filters,\n mergedConstraint,\n );\n cost = {\n startupCost,\n scanEst:\n this.limit === undefined\n ? rows\n : Math.min(rows, this.limit / downstreamChildSelectivity),\n cost: 0,\n returnedRows: rows,\n selectivity: this.selectivity,\n limit: this.limit,\n fanout,\n };\n this.#cachedConstraintCosts.set(key, cost);\n\n if (planDebugger) {\n planDebugger.log({\n type: 'node-cost',\n nodeType: 'connection',\n node: this.name,\n branchPattern,\n downstreamChildSelectivity,\n costEstimate: omitFanout(cost),\n filters: this.#filters,\n ordering: this.#sort,\n });\n }\n\n return cost;\n }\n\n /**\n * Remove the limit from this connection.\n * Called when a parent join is flipped, making this connection part of an\n * outer loop that should produce all rows rather than stopping at the limit.\n */\n unlimit(): void {\n if (this.#isRoot) {\n // We cannot unlimit root connections\n return;\n }\n if (this.limit !== undefined) {\n this.limit = undefined;\n // Limit changes do not impact connection costs.\n // Limit is taken into account at the join level.\n // Given that, we do not need to invalidate cost caches here.\n }\n }\n\n /**\n * Propagate unlimiting when a parent join is flipped.\n * For connections, we simply remove the limit.\n */\n propagateUnlimitFromFlippedJoin(): void {\n this.unlimit();\n }\n\n reset() {\n this.#constraints.clear();\n this.limit = this.#baseLimit;\n // Clear all cost caches\n this.#cachedConstraintCosts.clear();\n }\n\n /**\n * Capture constraint state for snapshotting.\n * Used by PlannerGraph to save/restore planning state.\n */\n captureConstraints(): Map<string, PlannerConstraint | undefined> {\n return new Map(this.#constraints);\n }\n\n /**\n * Restore constraint state from a snapshot.\n * Used by PlannerGraph to restore planning state.\n */\n restoreConstraints(\n constraints: Map<string, PlannerConstraint | undefined>,\n ): void {\n this.#constraints.clear();\n for (const [key, value] of constraints) {\n this.#constraints.set(key, value);\n }\n // Constraints changed, invalidate cost caches\n this.#cachedConstraintCosts.clear();\n }\n\n /** Get current constraints for debugging. */\n getConstraintsForDebug(): Record<string, PlannerConstraint | undefined> {\n const record: Record<string, PlannerConstraint | undefined> = {};\n for (const [key, value] of this.#constraints) {\n record[key] = value;\n }\n return record;\n }\n\n /** Get filters for debugging. */\n getFiltersForDebug(): Condition | undefined {\n return this.#filters;\n }\n\n /** Get sort/ordering for debugging. */\n getSortForDebug(): Ordering {\n return this.#sort;\n }\n\n /** Get estimated cost for each constraint branch. */\n getConstraintCostsForDebug(): Record<string, CostEstimate> {\n const record: Record<string, CostEstimate> = {};\n for (const [key, value] of this.#cachedConstraintCosts) {\n record[key] = value;\n }\n return record;\n }\n}\n\ntype FanoutEst = {\n fanout: number;\n confidence: 'high' | 'med' | 'none';\n};\nexport type FanoutCostModel = (columns: string[]) => FanoutEst;\n\nexport type CostModelCost = {\n startupCost: number;\n rows: number;\n fanout: FanoutCostModel;\n};\nexport type ConnectionCostModel = (\n table: string,\n sort: Ordering,\n filters: Condition | undefined,\n constraint: PlannerConstraint | undefined,\n) => CostModelCost;\n"],"names":[],"mappings":"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"}