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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1332) hide show
  1. package/out/analyze-query/src/bin-analyze.js +258 -236
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/analyze-query/src/bin-transform.js +31 -23
  4. package/out/analyze-query/src/bin-transform.js.map +1 -1
  5. package/out/analyze-query/src/explain-queries.js +13 -16
  6. package/out/analyze-query/src/explain-queries.js.map +1 -1
  7. package/out/analyze-query/src/run-ast.d.ts +3 -2
  8. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  9. package/out/analyze-query/src/run-ast.js +79 -73
  10. package/out/analyze-query/src/run-ast.js.map +1 -1
  11. package/out/ast-to-zql/src/ast-to-zql.js +146 -180
  12. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  13. package/out/ast-to-zql/src/bin.js +51 -54
  14. package/out/ast-to-zql/src/bin.js.map +1 -1
  15. package/out/ast-to-zql/src/format.js +15 -14
  16. package/out/ast-to-zql/src/format.js.map +1 -1
  17. package/out/datadog/src/datadog-log-sink.js +223 -0
  18. package/out/datadog/src/datadog-log-sink.js.map +1 -0
  19. package/out/otel/src/enabled.js +15 -15
  20. package/out/otel/src/enabled.js.map +1 -1
  21. package/out/otel/src/log-options.js +36 -31
  22. package/out/otel/src/log-options.js.map +1 -1
  23. package/out/otel/src/maybe-time.js +14 -11
  24. package/out/otel/src/maybe-time.js.map +1 -1
  25. package/out/otel/src/span.js +30 -27
  26. package/out/otel/src/span.js.map +1 -1
  27. package/out/otel/src/test-log-config.js +10 -7
  28. package/out/otel/src/test-log-config.js.map +1 -1
  29. package/out/otel/src/version.js +5 -2
  30. package/out/otel/src/version.js.map +1 -1
  31. package/out/replicache/src/async-iterable-to-array.js +11 -0
  32. package/out/replicache/src/async-iterable-to-array.js.map +1 -0
  33. package/out/replicache/src/bg-interval.js +38 -0
  34. package/out/replicache/src/bg-interval.js.map +1 -0
  35. package/out/replicache/src/btree/diff.js +8 -0
  36. package/out/replicache/src/btree/diff.js.map +1 -0
  37. package/out/replicache/src/btree/node.js +400 -0
  38. package/out/replicache/src/btree/node.js.map +1 -0
  39. package/out/replicache/src/btree/read.d.ts +3 -2
  40. package/out/replicache/src/btree/read.d.ts.map +1 -1
  41. package/out/replicache/src/btree/read.js +266 -0
  42. package/out/replicache/src/btree/read.js.map +1 -0
  43. package/out/replicache/src/btree/splice.js +83 -0
  44. package/out/replicache/src/btree/splice.js.map +1 -0
  45. package/out/replicache/src/btree/write.d.ts +1 -1
  46. package/out/replicache/src/btree/write.d.ts.map +1 -1
  47. package/out/replicache/src/btree/write.js +163 -0
  48. package/out/replicache/src/btree/write.js.map +1 -0
  49. package/out/replicache/src/call-default-fetch.js +34 -0
  50. package/out/replicache/src/call-default-fetch.js.map +1 -0
  51. package/out/replicache/src/connection-loop-delegates.js +34 -0
  52. package/out/replicache/src/connection-loop-delegates.js.map +1 -0
  53. package/out/replicache/src/connection-loop.js +251 -0
  54. package/out/replicache/src/connection-loop.js.map +1 -0
  55. package/out/replicache/src/cookies.js +40 -0
  56. package/out/replicache/src/cookies.js.map +1 -0
  57. package/out/replicache/src/dag/chunk.js +59 -0
  58. package/out/replicache/src/dag/chunk.js.map +1 -0
  59. package/out/replicache/src/dag/gc.js +117 -0
  60. package/out/replicache/src/dag/gc.js.map +1 -0
  61. package/out/replicache/src/dag/key.js +20 -0
  62. package/out/replicache/src/dag/key.js.map +1 -0
  63. package/out/replicache/src/dag/lazy-store.d.ts +2 -1
  64. package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
  65. package/out/replicache/src/dag/lazy-store.js +515 -0
  66. package/out/replicache/src/dag/lazy-store.js.map +1 -0
  67. package/out/replicache/src/dag/store-impl.js +183 -0
  68. package/out/replicache/src/dag/store-impl.js.map +1 -0
  69. package/out/replicache/src/dag/store.js +27 -0
  70. package/out/replicache/src/dag/store.js.map +1 -0
  71. package/out/replicache/src/dag/visitor.js +22 -0
  72. package/out/replicache/src/dag/visitor.js.map +1 -0
  73. package/out/replicache/src/db/commit.js +358 -0
  74. package/out/replicache/src/db/commit.js.map +1 -0
  75. package/out/replicache/src/db/index-operation-enum.js +7 -0
  76. package/out/replicache/src/db/index-operation-enum.js.map +1 -0
  77. package/out/replicache/src/db/index.js +134 -0
  78. package/out/replicache/src/db/index.js.map +1 -0
  79. package/out/replicache/src/db/meta-type-enum.js +7 -0
  80. package/out/replicache/src/db/meta-type-enum.js.map +1 -0
  81. package/out/replicache/src/db/read.d.ts +3 -2
  82. package/out/replicache/src/db/read.d.ts.map +1 -1
  83. package/out/replicache/src/db/read.js +72 -0
  84. package/out/replicache/src/db/read.js.map +1 -0
  85. package/out/replicache/src/db/rebase.d.ts +2 -2
  86. package/out/replicache/src/db/rebase.d.ts.map +1 -1
  87. package/out/replicache/src/db/rebase.js +85 -0
  88. package/out/replicache/src/db/rebase.js.map +1 -0
  89. package/out/replicache/src/db/write.d.ts +2 -1
  90. package/out/replicache/src/db/write.d.ts.map +1 -1
  91. package/out/replicache/src/db/write.js +296 -0
  92. package/out/replicache/src/db/write.js.map +1 -0
  93. package/out/replicache/src/deleted-clients.js +104 -0
  94. package/out/replicache/src/deleted-clients.js.map +1 -0
  95. package/out/replicache/src/error-responses.js +34 -0
  96. package/out/replicache/src/error-responses.js.map +1 -0
  97. package/out/replicache/src/format-version-enum.js +11 -0
  98. package/out/replicache/src/format-version-enum.js.map +1 -0
  99. package/out/{chunk-EZM3XBAB.js → replicache/src/frozen-json.js} +8 -75
  100. package/out/replicache/src/frozen-json.js.map +1 -0
  101. package/out/replicache/src/get-default-puller.js +61 -0
  102. package/out/replicache/src/get-default-puller.js.map +1 -0
  103. package/out/replicache/src/get-default-pusher.js +39 -0
  104. package/out/replicache/src/get-default-pusher.js.map +1 -0
  105. package/out/replicache/src/get-kv-store-provider.js +23 -0
  106. package/out/replicache/src/get-kv-store-provider.js.map +1 -0
  107. package/out/replicache/src/hash.js +38 -0
  108. package/out/replicache/src/hash.js.map +1 -0
  109. package/out/replicache/src/http-request-info.js +10 -0
  110. package/out/replicache/src/http-request-info.js.map +1 -0
  111. package/out/replicache/src/http-status-unauthorized.js +5 -0
  112. package/out/replicache/src/http-status-unauthorized.js.map +1 -0
  113. package/out/replicache/src/index-defs.js +32 -0
  114. package/out/replicache/src/index-defs.js.map +1 -0
  115. package/out/replicache/src/invoke-kind-enum.js +7 -0
  116. package/out/replicache/src/invoke-kind-enum.js.map +1 -0
  117. package/out/{chunk-HCZQVP5R.js → replicache/src/kv/expo-sqlite/store.js} +8 -16
  118. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -0
  119. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +80 -0
  120. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
  121. package/out/replicache/src/kv/idb-store.js +183 -0
  122. package/out/replicache/src/kv/idb-store.js.map +1 -0
  123. package/out/replicache/src/kv/mem-store.js +51 -0
  124. package/out/replicache/src/kv/mem-store.js.map +1 -0
  125. package/out/{op-sqlite.js → replicache/src/kv/op-sqlite/store.js} +7 -18
  126. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -0
  127. package/out/replicache/src/kv/op-sqlite/types.js +6 -0
  128. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -0
  129. package/out/replicache/src/kv/read-impl.js +27 -0
  130. package/out/replicache/src/kv/read-impl.js.map +1 -0
  131. package/out/{chunk-WPAQ4EPM.js → replicache/src/kv/sqlite-store.js} +15 -19
  132. package/out/replicache/src/kv/sqlite-store.js.map +1 -0
  133. package/out/{chunk-ASRS2LFV.js → replicache/src/kv/throw-if-closed.js} +4 -6
  134. package/out/replicache/src/kv/throw-if-closed.js.map +1 -0
  135. package/out/replicache/src/kv/write-impl-base.js +57 -0
  136. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  137. package/out/replicache/src/kv/write-impl.js +30 -0
  138. package/out/replicache/src/kv/write-impl.js.map +1 -0
  139. package/out/replicache/src/lazy.js +13 -0
  140. package/out/replicache/src/lazy.js.map +1 -0
  141. package/out/replicache/src/log-options.js +9 -0
  142. package/out/replicache/src/log-options.js.map +1 -0
  143. package/out/replicache/src/make-idb-name.js +13 -0
  144. package/out/replicache/src/make-idb-name.js.map +1 -0
  145. package/out/replicache/src/new-client-channel.js +51 -0
  146. package/out/replicache/src/new-client-channel.js.map +1 -0
  147. package/out/replicache/src/on-persist-channel.js +36 -0
  148. package/out/replicache/src/on-persist-channel.js.map +1 -0
  149. package/out/replicache/src/patch-operation.js +42 -0
  150. package/out/replicache/src/patch-operation.js.map +1 -0
  151. package/out/replicache/src/pending-mutations.js +16 -0
  152. package/out/replicache/src/pending-mutations.js.map +1 -0
  153. package/out/replicache/src/persist/client-gc.js +58 -0
  154. package/out/replicache/src/persist/client-gc.js.map +1 -0
  155. package/out/replicache/src/persist/client-group-gc.js +43 -0
  156. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  157. package/out/replicache/src/persist/client-groups.js +184 -0
  158. package/out/replicache/src/persist/client-groups.js.map +1 -0
  159. package/out/replicache/src/persist/clients.d.ts +3 -2
  160. package/out/replicache/src/persist/clients.d.ts.map +1 -1
  161. package/out/replicache/src/persist/clients.js +353 -0
  162. package/out/replicache/src/persist/clients.js.map +1 -0
  163. package/out/replicache/src/persist/collect-idb-databases.js +188 -0
  164. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  165. package/out/replicache/src/persist/gather-mem-only-visitor.js +27 -0
  166. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  167. package/out/replicache/src/persist/gather-not-cached-visitor.js +37 -0
  168. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  169. package/out/replicache/src/persist/heartbeat.js +48 -0
  170. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  171. package/out/replicache/src/persist/idb-databases-store-db-name.js +14 -0
  172. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  173. package/out/replicache/src/persist/idb-databases-store.js +92 -0
  174. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  175. package/out/replicache/src/persist/make-client-id.js +12 -0
  176. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  177. package/out/replicache/src/persist/persist.d.ts +2 -2
  178. package/out/replicache/src/persist/persist.d.ts.map +1 -1
  179. package/out/replicache/src/persist/persist.js +183 -0
  180. package/out/replicache/src/persist/persist.js.map +1 -0
  181. package/out/replicache/src/persist/refresh.d.ts +4 -3
  182. package/out/replicache/src/persist/refresh.d.ts.map +1 -1
  183. package/out/replicache/src/persist/refresh.js +198 -0
  184. package/out/replicache/src/persist/refresh.js.map +1 -0
  185. package/out/replicache/src/process-scheduler.js +96 -0
  186. package/out/replicache/src/process-scheduler.js.map +1 -0
  187. package/out/replicache/src/pusher.js +33 -0
  188. package/out/replicache/src/pusher.js.map +1 -0
  189. package/out/replicache/src/replicache-impl.d.ts +1 -1
  190. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  191. package/out/replicache/src/replicache-impl.js +1200 -0
  192. package/out/replicache/src/replicache-impl.js.map +1 -0
  193. package/out/replicache/src/report-error.js +6 -0
  194. package/out/replicache/src/report-error.js.map +1 -0
  195. package/out/replicache/src/request-idle.js +13 -0
  196. package/out/replicache/src/request-idle.js.map +1 -0
  197. package/out/replicache/src/scan-iterator.js +146 -0
  198. package/out/replicache/src/scan-iterator.js.map +1 -0
  199. package/out/replicache/src/scan-options.js +45 -0
  200. package/out/replicache/src/scan-options.js.map +1 -0
  201. package/out/replicache/src/set-interval-with-signal.js +12 -0
  202. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  203. package/out/replicache/src/subscriptions.js +355 -0
  204. package/out/replicache/src/subscriptions.js.map +1 -0
  205. package/out/replicache/src/sync/diff.d.ts +3 -2
  206. package/out/replicache/src/sync/diff.d.ts.map +1 -1
  207. package/out/replicache/src/sync/diff.js +72 -0
  208. package/out/replicache/src/sync/diff.js.map +1 -0
  209. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +9 -0
  210. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  211. package/out/replicache/src/sync/ids.js +9 -0
  212. package/out/replicache/src/sync/ids.js.map +1 -0
  213. package/out/replicache/src/sync/patch.js +49 -0
  214. package/out/replicache/src/sync/patch.js.map +1 -0
  215. package/out/replicache/src/sync/pull-error.js +16 -0
  216. package/out/replicache/src/sync/pull-error.js.map +1 -0
  217. package/out/replicache/src/sync/pull.d.ts +3 -2
  218. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  219. package/out/replicache/src/sync/pull.js +301 -0
  220. package/out/replicache/src/sync/pull.js.map +1 -0
  221. package/out/replicache/src/sync/push.js +88 -0
  222. package/out/replicache/src/sync/push.js.map +1 -0
  223. package/out/replicache/src/sync/request-id.js +20 -0
  224. package/out/replicache/src/sync/request-id.js.map +1 -0
  225. package/out/replicache/src/sync/sync-head-name.js +5 -0
  226. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  227. package/out/replicache/src/to-error.js +10 -0
  228. package/out/replicache/src/to-error.js.map +1 -0
  229. package/out/replicache/src/transaction-closed-error.js +19 -0
  230. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  231. package/out/replicache/src/transactions.js +152 -0
  232. package/out/replicache/src/transactions.js.map +1 -0
  233. package/out/replicache/src/version.js +5 -0
  234. package/out/replicache/src/version.js.map +1 -0
  235. package/out/replicache/src/with-transactions.js +28 -0
  236. package/out/replicache/src/with-transactions.js.map +1 -0
  237. package/out/shared/src/abort-error.js +6 -3
  238. package/out/shared/src/abort-error.js.map +1 -1
  239. package/out/shared/src/arrays.js +45 -43
  240. package/out/shared/src/arrays.js.map +1 -1
  241. package/out/shared/src/asserts.js +64 -68
  242. package/out/shared/src/asserts.js.map +1 -1
  243. package/out/shared/src/bigint-json.js +38 -42
  244. package/out/shared/src/bigint-json.js.map +1 -1
  245. package/out/shared/src/binary-search.js +18 -29
  246. package/out/shared/src/binary-search.js.map +1 -1
  247. package/out/shared/src/broadcast-channel.js +24 -0
  248. package/out/shared/src/broadcast-channel.js.map +1 -0
  249. package/out/shared/src/browser-env.js +25 -0
  250. package/out/shared/src/browser-env.js.map +1 -0
  251. package/out/shared/src/btree-set.js +464 -507
  252. package/out/shared/src/btree-set.js.map +1 -1
  253. package/out/shared/src/cache.js +34 -38
  254. package/out/shared/src/cache.js.map +1 -1
  255. package/out/shared/src/centroid.js +24 -24
  256. package/out/shared/src/centroid.js.map +1 -1
  257. package/out/shared/src/config.js +6 -3
  258. package/out/shared/src/config.js.map +1 -1
  259. package/out/shared/src/custom-key-map.js +58 -64
  260. package/out/shared/src/custom-key-map.js.map +1 -1
  261. package/out/shared/src/custom-key-set.js +51 -57
  262. package/out/shared/src/custom-key-set.js.map +1 -1
  263. package/out/shared/src/deep-clone.js +46 -0
  264. package/out/shared/src/deep-clone.js.map +1 -0
  265. package/out/shared/src/document-visible.js +74 -0
  266. package/out/shared/src/document-visible.js.map +1 -0
  267. package/out/shared/src/dotenv.js +5 -7
  268. package/out/shared/src/dotenv.js.map +1 -1
  269. package/out/shared/src/error.js +57 -56
  270. package/out/shared/src/error.js.map +1 -1
  271. package/out/shared/src/has-own.js +5 -3
  272. package/out/shared/src/has-own.js.map +1 -1
  273. package/out/shared/src/hash.js +15 -14
  274. package/out/shared/src/hash.js.map +1 -1
  275. package/out/shared/src/iterables.js +71 -73
  276. package/out/shared/src/iterables.js.map +1 -1
  277. package/out/shared/src/json-schema.js +30 -33
  278. package/out/shared/src/json-schema.js.map +1 -1
  279. package/out/shared/src/json.js +128 -143
  280. package/out/shared/src/json.js.map +1 -1
  281. package/out/shared/src/logging-test-utils.js +12 -19
  282. package/out/shared/src/logging-test-utils.js.map +1 -1
  283. package/out/shared/src/logging.js +83 -83
  284. package/out/shared/src/logging.js.map +1 -1
  285. package/out/shared/src/must.js +9 -7
  286. package/out/shared/src/must.js.map +1 -1
  287. package/out/shared/src/navigator.js +5 -0
  288. package/out/shared/src/navigator.js.map +1 -0
  289. package/out/shared/src/objects.js +21 -22
  290. package/out/shared/src/objects.js.map +1 -1
  291. package/out/shared/src/options.js +289 -322
  292. package/out/shared/src/options.js.map +1 -1
  293. package/out/shared/src/parse-big-int.js +12 -10
  294. package/out/shared/src/parse-big-int.js.map +1 -1
  295. package/out/shared/src/promise-race.js +20 -0
  296. package/out/shared/src/promise-race.js.map +1 -0
  297. package/out/shared/src/queue.js +119 -122
  298. package/out/shared/src/queue.js.map +1 -1
  299. package/out/shared/src/rand.js +8 -10
  300. package/out/shared/src/rand.js.map +1 -1
  301. package/out/shared/src/random-uint64.js +9 -0
  302. package/out/shared/src/random-uint64.js.map +1 -0
  303. package/out/shared/src/random-values.js +13 -0
  304. package/out/shared/src/random-values.js.map +1 -0
  305. package/out/shared/src/resolved-promises.js +12 -9
  306. package/out/shared/src/resolved-promises.js.map +1 -1
  307. package/out/shared/src/sentinels.js +13 -6
  308. package/out/shared/src/sentinels.js.map +1 -1
  309. package/out/shared/src/set-utils.js +63 -62
  310. package/out/shared/src/set-utils.js.map +1 -1
  311. package/out/shared/src/size-of-value.js +58 -0
  312. package/out/shared/src/size-of-value.js.map +1 -0
  313. package/out/shared/src/sleep.js +45 -53
  314. package/out/shared/src/sleep.js.map +1 -1
  315. package/out/shared/src/string-compare.js +12 -9
  316. package/out/shared/src/string-compare.js.map +1 -1
  317. package/out/shared/src/subscribable.js +34 -0
  318. package/out/shared/src/subscribable.js.map +1 -0
  319. package/out/shared/src/tdigest-schema.js +7 -7
  320. package/out/shared/src/tdigest-schema.js.map +1 -1
  321. package/out/shared/src/tdigest.js +247 -271
  322. package/out/shared/src/tdigest.js.map +1 -1
  323. package/out/shared/src/valita.js +195 -207
  324. package/out/shared/src/valita.js.map +1 -1
  325. package/out/z2s/src/compiler.d.ts.map +1 -1
  326. package/out/z2s/src/compiler.js +437 -310
  327. package/out/z2s/src/compiler.js.map +1 -1
  328. package/out/z2s/src/sql.js +186 -218
  329. package/out/z2s/src/sql.js.map +1 -1
  330. package/out/zero/package.json.js +9 -0
  331. package/out/zero/package.json.js.map +1 -0
  332. package/out/zero/src/adapters/drizzle.js +5 -2
  333. package/out/zero/src/adapters/drizzle.js.map +1 -1
  334. package/out/zero/src/adapters/pg.js +7 -2
  335. package/out/zero/src/adapters/pg.js.map +1 -1
  336. package/out/zero/src/adapters/postgresjs.js +7 -2
  337. package/out/zero/src/adapters/postgresjs.js.map +1 -1
  338. package/out/zero/src/analyze-query.js +1 -1
  339. package/out/zero/src/analyze-query.js.map +1 -1
  340. package/out/zero/src/ast-to-zql.js +1 -1
  341. package/out/zero/src/ast-to-zql.js.map +1 -1
  342. package/out/zero/src/build-schema.js +3 -5
  343. package/out/zero/src/build-schema.js.map +1 -1
  344. package/out/zero/src/change-protocol/v0.js +5 -3
  345. package/out/zero/src/change-protocol/v0.js.map +1 -1
  346. package/out/zero/src/cli.js +2 -2
  347. package/out/zero/src/cli.js.map +1 -1
  348. package/out/zero/src/deploy-permissions.js +1 -1
  349. package/out/zero/src/deploy-permissions.js.map +1 -1
  350. package/out/zero/src/expo-sqlite.js +5 -0
  351. package/out/zero/src/expo-sqlite.js.map +1 -0
  352. package/out/zero/src/op-sqlite.js +5 -0
  353. package/out/zero/src/op-sqlite.js.map +1 -0
  354. package/out/zero/src/pg.js +31 -3
  355. package/out/zero/src/pg.js.map +1 -1
  356. package/out/zero/src/react-native.js +13 -0
  357. package/out/zero/src/react-native.js.map +1 -0
  358. package/out/zero/src/react.js +17 -0
  359. package/out/zero/src/react.js.map +1 -0
  360. package/out/zero/src/server.js +27 -3
  361. package/out/zero/src/server.js.map +1 -1
  362. package/out/zero/src/solid.js +15 -0
  363. package/out/zero/src/solid.js.map +1 -0
  364. package/out/zero/src/sqlite.js +7 -0
  365. package/out/zero/src/sqlite.js.map +1 -0
  366. package/out/zero/src/transform-query.js +1 -1
  367. package/out/zero/src/transform-query.js.map +1 -1
  368. package/out/zero/src/zero-cache-dev.js +135 -126
  369. package/out/zero/src/zero-cache-dev.js.map +1 -1
  370. package/out/zero/src/zero-out.js +6 -6
  371. package/out/zero/src/zero-out.js.map +1 -1
  372. package/out/zero/src/zero.js +55 -0
  373. package/out/zero/src/zero.js.map +1 -0
  374. package/out/zero/src/zqlite.js +11 -3
  375. package/out/zero/src/zqlite.js.map +1 -1
  376. package/out/zero-cache/src/auth/jwt.js +33 -38
  377. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  378. package/out/zero-cache/src/auth/load-permissions.js +61 -45
  379. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  380. package/out/zero-cache/src/auth/read-authorizer.js +79 -91
  381. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  382. package/out/zero-cache/src/auth/write-authorizer.d.ts +2 -2
  383. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  384. package/out/zero-cache/src/auth/write-authorizer.js +394 -349
  385. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  386. package/out/zero-cache/src/config/network.js +42 -45
  387. package/out/zero-cache/src/config/network.js.map +1 -1
  388. package/out/zero-cache/src/config/normalize.js +86 -83
  389. package/out/zero-cache/src/config/normalize.js.map +1 -1
  390. package/out/zero-cache/src/config/zero-config.js +676 -682
  391. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  392. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  393. package/out/zero-cache/src/custom/fetch.js +166 -162
  394. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  395. package/out/zero-cache/src/custom-queries/transform-query.d.ts +7 -0
  396. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  397. package/out/zero-cache/src/custom-queries/transform-query.js +101 -106
  398. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  399. package/out/zero-cache/src/db/create.js +32 -36
  400. package/out/zero-cache/src/db/create.js.map +1 -1
  401. package/out/zero-cache/src/db/delete-lite-db.js +9 -6
  402. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  403. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  404. package/out/zero-cache/src/db/lite-tables.js +150 -174
  405. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  406. package/out/zero-cache/src/db/migration-lite.js +170 -165
  407. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  408. package/out/zero-cache/src/db/migration.js +157 -137
  409. package/out/zero-cache/src/db/migration.js.map +1 -1
  410. package/out/zero-cache/src/db/mode-enum.js +9 -4
  411. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  412. package/out/zero-cache/src/db/pg-copy.js +51 -90
  413. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  414. package/out/zero-cache/src/db/pg-to-lite.js +114 -109
  415. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  416. package/out/zero-cache/src/db/pg-type-parser.js +27 -39
  417. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  418. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +11 -6
  419. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -1
  420. package/out/zero-cache/src/db/postgres-type-class-enum.js +17 -9
  421. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +1 -1
  422. package/out/zero-cache/src/db/specs.d.ts +0 -6
  423. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  424. package/out/zero-cache/src/db/specs.js +66 -40
  425. package/out/zero-cache/src/db/specs.js.map +1 -1
  426. package/out/zero-cache/src/db/statements.d.ts +1 -1
  427. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  428. package/out/zero-cache/src/db/statements.js +59 -52
  429. package/out/zero-cache/src/db/statements.js.map +1 -1
  430. package/out/zero-cache/src/db/transaction-pool.d.ts +1 -1
  431. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  432. package/out/zero-cache/src/db/transaction-pool.js +375 -501
  433. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  434. package/out/zero-cache/src/db/warmup.js +25 -12
  435. package/out/zero-cache/src/db/warmup.js.map +1 -1
  436. package/out/zero-cache/src/observability/events.js +71 -82
  437. package/out/zero-cache/src/observability/events.js.map +1 -1
  438. package/out/zero-cache/src/observability/metrics.js +54 -32
  439. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  440. package/out/zero-cache/src/scripts/decommission.js +47 -43
  441. package/out/zero-cache/src/scripts/decommission.js.map +1 -1
  442. package/out/zero-cache/src/scripts/deploy-permissions.js +128 -118
  443. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  444. package/out/zero-cache/src/scripts/permissions.js +107 -99
  445. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  446. package/out/zero-cache/src/server/anonymous-otel-start.js +410 -366
  447. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  448. package/out/zero-cache/src/server/change-streamer.js +104 -60
  449. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  450. package/out/zero-cache/src/server/inspector-delegate.js +112 -109
  451. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  452. package/out/zero-cache/src/server/logging.d.ts +1 -1
  453. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  454. package/out/zero-cache/src/server/logging.js +26 -19
  455. package/out/zero-cache/src/server/logging.js.map +1 -1
  456. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  457. package/out/zero-cache/src/server/main.js +137 -120
  458. package/out/zero-cache/src/server/main.js.map +1 -1
  459. package/out/zero-cache/src/server/mutator.js +19 -0
  460. package/out/zero-cache/src/server/mutator.js.map +1 -0
  461. package/out/zero-cache/src/server/otel-diag-logger.d.ts +1 -1
  462. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +1 -1
  463. package/out/zero-cache/src/server/otel-diag-logger.js +67 -70
  464. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  465. package/out/zero-cache/src/server/otel-log-sink.js +40 -41
  466. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  467. package/out/zero-cache/src/server/otel-start.d.ts +1 -1
  468. package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
  469. package/out/zero-cache/src/server/otel-start.js +57 -68
  470. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  471. package/out/zero-cache/src/server/reaper.js +34 -26
  472. package/out/zero-cache/src/server/reaper.js.map +1 -1
  473. package/out/zero-cache/src/server/replicator.js +53 -31
  474. package/out/zero-cache/src/server/replicator.js.map +1 -1
  475. package/out/zero-cache/src/server/runner/main.js +6 -4
  476. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  477. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  478. package/out/zero-cache/src/server/runner/run-worker.js +46 -50
  479. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  480. package/out/zero-cache/src/server/runner/runtime.js +33 -32
  481. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  482. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  483. package/out/zero-cache/src/server/runner/zero-dispatcher.js +28 -22
  484. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  485. package/out/zero-cache/src/server/syncer.js +112 -63
  486. package/out/zero-cache/src/server/syncer.js.map +1 -1
  487. package/out/zero-cache/src/server/worker-dispatcher.d.ts +1 -1
  488. package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -1
  489. package/out/zero-cache/src/server/worker-dispatcher.js +112 -106
  490. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  491. package/out/zero-cache/src/server/worker-urls.d.ts +7 -0
  492. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -0
  493. package/out/zero-cache/src/server/worker-urls.js +21 -0
  494. package/out/zero-cache/src/server/worker-urls.js.map +1 -0
  495. package/out/zero-cache/src/services/analyze.d.ts +3 -4
  496. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  497. package/out/zero-cache/src/services/analyze.js +96 -122
  498. package/out/zero-cache/src/services/analyze.js.map +1 -1
  499. package/out/zero-cache/src/services/change-source/column-metadata.js +152 -155
  500. package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
  501. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +1 -1
  502. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
  503. package/out/zero-cache/src/services/change-source/custom/change-source.js +197 -171
  504. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  505. package/out/zero-cache/src/services/change-source/custom/sync-schema.js +11 -3
  506. package/out/zero-cache/src/services/change-source/custom/sync-schema.js.map +1 -1
  507. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
  508. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  509. package/out/zero-cache/src/services/change-source/pg/change-source.js +601 -622
  510. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  511. package/out/zero-cache/src/services/change-source/pg/decommission.js +24 -23
  512. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  513. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -1
  514. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  515. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +327 -284
  516. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  517. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +61 -69
  518. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  519. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +247 -257
  520. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  521. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +127 -119
  522. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  523. package/out/zero-cache/src/services/change-source/pg/lsn.js +20 -19
  524. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  525. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +96 -119
  526. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  527. package/out/zero-cache/src/services/change-source/pg/schema/init.js +138 -117
  528. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  529. package/out/zero-cache/src/services/change-source/pg/schema/published.js +67 -74
  530. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  531. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +199 -188
  532. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  533. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +53 -38
  534. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  535. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +11 -3
  536. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  537. package/out/zero-cache/src/services/change-source/protocol/current/control.js +9 -19
  538. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  539. package/out/zero-cache/src/services/change-source/protocol/current/data.js +143 -116
  540. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  541. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +29 -19
  542. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  543. package/out/zero-cache/src/services/change-source/protocol/current/path.js +5 -20
  544. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  545. package/out/zero-cache/src/services/change-source/protocol/current/status.js +12 -13
  546. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  547. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -1
  548. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  549. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +5 -4
  550. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  551. package/out/zero-cache/src/services/change-source/protocol/current.js +35 -7
  552. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  553. package/out/zero-cache/src/services/change-source/replica-schema.js +64 -47
  554. package/out/zero-cache/src/services/change-source/replica-schema.js.map +1 -1
  555. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +139 -161
  556. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  557. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +2 -2
  558. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  559. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +178 -158
  560. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  561. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  562. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  563. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +234 -355
  564. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  565. package/out/zero-cache/src/services/change-streamer/change-streamer.js +24 -26
  566. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  567. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +9 -4
  568. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +1 -1
  569. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +1 -1
  570. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  571. package/out/zero-cache/src/services/change-streamer/forwarder.js +53 -57
  572. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  573. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +40 -44
  574. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
  575. package/out/zero-cache/src/services/change-streamer/schema/init.js +82 -68
  576. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  577. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +2 -2
  578. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  579. package/out/zero-cache/src/services/change-streamer/schema/tables.js +93 -78
  580. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  581. package/out/zero-cache/src/services/change-streamer/snapshot.js +28 -37
  582. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  583. package/out/zero-cache/src/services/change-streamer/storer.d.ts +2 -2
  584. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  585. package/out/zero-cache/src/services/change-streamer/storer.js +309 -372
  586. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  587. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -1
  588. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  589. package/out/zero-cache/src/services/change-streamer/subscriber.js +83 -90
  590. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  591. package/out/zero-cache/src/services/heapz.js +21 -25
  592. package/out/zero-cache/src/services/heapz.js.map +1 -1
  593. package/out/zero-cache/src/services/http-service.d.ts +1 -1
  594. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  595. package/out/zero-cache/src/services/http-service.js +56 -59
  596. package/out/zero-cache/src/services/http-service.js.map +1 -1
  597. package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
  598. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  599. package/out/zero-cache/src/services/life-cycle.js +216 -255
  600. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  601. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +76 -130
  602. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  603. package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
  604. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  605. package/out/zero-cache/src/services/litestream/commands.js +193 -178
  606. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  607. package/out/zero-cache/src/services/mutagen/error.js +11 -6
  608. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  609. package/out/zero-cache/src/services/mutagen/mutagen.js +270 -267
  610. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  611. package/out/zero-cache/src/services/mutagen/pusher.js +351 -344
  612. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  613. package/out/zero-cache/src/services/replicator/change-processor.js +483 -530
  614. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  615. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  616. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  617. package/out/zero-cache/src/services/replicator/incremental-sync.js +97 -97
  618. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  619. package/out/zero-cache/src/services/replicator/notifier.js +28 -52
  620. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  621. package/out/zero-cache/src/services/replicator/replication-status.js +100 -83
  622. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  623. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  624. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  625. package/out/zero-cache/src/services/replicator/replicator.js +33 -26
  626. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  627. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +1 -1
  628. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  629. package/out/zero-cache/src/services/replicator/schema/change-log.js +74 -86
  630. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  631. package/out/zero-cache/src/services/replicator/schema/constants.js +5 -7
  632. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  633. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +2 -2
  634. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  635. package/out/zero-cache/src/services/replicator/schema/replication-state.js +70 -74
  636. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  637. package/out/zero-cache/src/services/run-ast.d.ts +5 -3
  638. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  639. package/out/zero-cache/src/services/run-ast.js +80 -79
  640. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  641. package/out/zero-cache/src/services/runner.d.ts +1 -1
  642. package/out/zero-cache/src/services/runner.d.ts.map +1 -1
  643. package/out/zero-cache/src/services/runner.js +40 -40
  644. package/out/zero-cache/src/services/runner.js.map +1 -1
  645. package/out/zero-cache/src/services/running-state.d.ts +1 -1
  646. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  647. package/out/zero-cache/src/services/running-state.js +122 -119
  648. package/out/zero-cache/src/services/running-state.js.map +1 -1
  649. package/out/zero-cache/src/services/statz.js +184 -162
  650. package/out/zero-cache/src/services/statz.js.map +1 -1
  651. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +40 -39
  652. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  653. package/out/zero-cache/src/services/view-syncer/client-handler.js +307 -298
  654. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  655. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  656. package/out/zero-cache/src/services/view-syncer/client-schema.js +80 -82
  657. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  658. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +83 -92
  659. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  660. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +2 -4
  661. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  662. package/out/zero-cache/src/services/view-syncer/cvr-store.js +628 -616
  663. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  664. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +1 -1
  665. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  666. package/out/zero-cache/src/services/view-syncer/cvr.js +631 -694
  667. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  668. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +38 -60
  669. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  670. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +2 -1
  671. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  672. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +168 -158
  673. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  674. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +14 -13
  675. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  676. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +529 -482
  677. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  678. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +229 -280
  679. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  680. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +53 -120
  681. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  682. package/out/zero-cache/src/services/view-syncer/schema/init.js +171 -150
  683. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  684. package/out/zero-cache/src/services/view-syncer/schema/types.js +265 -257
  685. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  686. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  687. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  688. package/out/zero-cache/src/services/view-syncer/snapshotter.js +295 -338
  689. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  690. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +13 -7
  691. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  692. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -3
  693. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  694. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1485 -1307
  695. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  696. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  697. package/out/zero-cache/src/types/error-with-level.js +29 -25
  698. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  699. package/out/zero-cache/src/types/http.js +27 -14
  700. package/out/zero-cache/src/types/http.js.map +1 -1
  701. package/out/zero-cache/src/types/lexi-version.js +46 -31
  702. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  703. package/out/zero-cache/src/types/lite.js +118 -125
  704. package/out/zero-cache/src/types/lite.js.map +1 -1
  705. package/out/zero-cache/src/types/names.js +6 -3
  706. package/out/zero-cache/src/types/names.js.map +1 -1
  707. package/out/zero-cache/src/types/pg-data-type.js +74 -68
  708. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  709. package/out/zero-cache/src/types/pg-types.js +17 -72
  710. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  711. package/out/zero-cache/src/types/pg.d.ts +1 -1
  712. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  713. package/out/zero-cache/src/types/pg.js +213 -233
  714. package/out/zero-cache/src/types/pg.js.map +1 -1
  715. package/out/zero-cache/src/types/processes.d.ts +2 -2
  716. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  717. package/out/zero-cache/src/types/processes.js +95 -143
  718. package/out/zero-cache/src/types/processes.js.map +1 -1
  719. package/out/zero-cache/src/types/profiler.js +29 -30
  720. package/out/zero-cache/src/types/profiler.js.map +1 -1
  721. package/out/zero-cache/src/types/row-key.js +30 -68
  722. package/out/zero-cache/src/types/row-key.js.map +1 -1
  723. package/out/zero-cache/src/types/schema-versions.js +25 -19
  724. package/out/zero-cache/src/types/schema-versions.js.map +1 -1
  725. package/out/zero-cache/src/types/shards.js +50 -36
  726. package/out/zero-cache/src/types/shards.js.map +1 -1
  727. package/out/zero-cache/src/types/sql.js +9 -13
  728. package/out/zero-cache/src/types/sql.js.map +1 -1
  729. package/out/zero-cache/src/types/streams.js +245 -254
  730. package/out/zero-cache/src/types/streams.js.map +1 -1
  731. package/out/zero-cache/src/types/strings.js +14 -11
  732. package/out/zero-cache/src/types/strings.js.map +1 -1
  733. package/out/zero-cache/src/types/subscription.js +200 -259
  734. package/out/zero-cache/src/types/subscription.js.map +1 -1
  735. package/out/zero-cache/src/types/url-params.js +35 -30
  736. package/out/zero-cache/src/types/url-params.js.map +1 -1
  737. package/out/zero-cache/src/types/websocket-handoff.d.ts +3 -2
  738. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  739. package/out/zero-cache/src/types/websocket-handoff.js +68 -76
  740. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  741. package/out/zero-cache/src/types/ws.js +56 -59
  742. package/out/zero-cache/src/types/ws.js.map +1 -1
  743. package/out/zero-cache/src/workers/connect-params.js +44 -40
  744. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  745. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  746. package/out/zero-cache/src/workers/connection.js +277 -243
  747. package/out/zero-cache/src/workers/connection.js.map +1 -1
  748. package/out/zero-cache/src/workers/mutator.js +24 -0
  749. package/out/zero-cache/src/workers/mutator.js.map +1 -0
  750. package/out/zero-cache/src/workers/replicator.d.ts +1 -1
  751. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  752. package/out/zero-cache/src/workers/replicator.js +103 -106
  753. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  754. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +179 -147
  755. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  756. package/out/zero-cache/src/workers/syncer.d.ts +3 -3
  757. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  758. package/out/zero-cache/src/workers/syncer.js +192 -169
  759. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  760. package/out/zero-client/src/client/active-clients-manager.js +199 -0
  761. package/out/zero-client/src/client/active-clients-manager.js.map +1 -0
  762. package/out/zero-client/src/client/bindings.d.ts +8 -7
  763. package/out/zero-client/src/client/bindings.d.ts.map +1 -1
  764. package/out/zero-client/src/client/bindings.js +33 -0
  765. package/out/zero-client/src/client/bindings.js.map +1 -0
  766. package/out/zero-client/src/client/client-error-kind-enum.js +29 -0
  767. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -0
  768. package/out/zero-client/src/client/connection-manager.d.ts +12 -31
  769. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  770. package/out/zero-client/src/client/connection-manager.js +310 -0
  771. package/out/zero-client/src/client/connection-manager.js.map +1 -0
  772. package/out/zero-client/src/client/connection-status-enum.js +15 -0
  773. package/out/zero-client/src/client/connection-status-enum.js.map +1 -0
  774. package/out/zero-client/src/client/connection.d.ts +45 -2
  775. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  776. package/out/zero-client/src/client/connection.js +103 -0
  777. package/out/zero-client/src/client/connection.js.map +1 -0
  778. package/out/zero-client/src/client/context.d.ts +3 -6
  779. package/out/zero-client/src/client/context.d.ts.map +1 -1
  780. package/out/zero-client/src/client/context.js +104 -0
  781. package/out/zero-client/src/client/context.js.map +1 -0
  782. package/out/zero-client/src/client/crud.js +225 -0
  783. package/out/zero-client/src/client/crud.js.map +1 -0
  784. package/out/zero-client/src/client/custom.d.ts +9 -12
  785. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  786. package/out/zero-client/src/client/custom.js +123 -0
  787. package/out/zero-client/src/client/custom.js.map +1 -0
  788. package/out/zero-client/src/client/delete-clients-manager.js +71 -0
  789. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -0
  790. package/out/zero-client/src/client/enable-analytics.js +18 -0
  791. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  792. package/out/zero-client/src/client/error.d.ts +2 -1
  793. package/out/zero-client/src/client/error.d.ts.map +1 -1
  794. package/out/zero-client/src/client/error.js +148 -0
  795. package/out/zero-client/src/client/error.js.map +1 -0
  796. package/out/zero-client/src/client/http-string.js +11 -0
  797. package/out/zero-client/src/client/http-string.js.map +1 -0
  798. package/out/zero-client/src/client/inspector/client-group.js +27 -0
  799. package/out/zero-client/src/client/inspector/client-group.js.map +1 -0
  800. package/out/zero-client/src/client/inspector/client.js +28 -0
  801. package/out/zero-client/src/client/inspector/client.js.map +1 -0
  802. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +77 -0
  803. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
  804. package/out/zero-client/src/client/inspector/inspector.d.ts +1 -1
  805. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  806. package/out/zero-client/src/client/inspector/inspector.js +47 -0
  807. package/out/zero-client/src/client/inspector/inspector.js.map +1 -0
  808. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +1 -1
  809. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  810. package/out/zero-client/src/client/inspector/lazy-inspector.js +243 -0
  811. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
  812. package/out/zero-client/src/client/inspector/query.d.ts.map +1 -1
  813. package/out/zero-client/src/client/inspector/query.js +82 -0
  814. package/out/zero-client/src/client/inspector/query.js.map +1 -0
  815. package/out/zero-client/src/client/ivm-branch.d.ts +4 -4
  816. package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
  817. package/out/zero-client/src/client/ivm-branch.js +149 -0
  818. package/out/zero-client/src/client/ivm-branch.js.map +1 -0
  819. package/out/zero-client/src/client/keys.js +45 -0
  820. package/out/zero-client/src/client/keys.js.map +1 -0
  821. package/out/zero-client/src/client/log-options.js +60 -0
  822. package/out/zero-client/src/client/log-options.js.map +1 -0
  823. package/out/zero-client/src/client/metric-name-enum.js +15 -0
  824. package/out/zero-client/src/client/metric-name-enum.js.map +1 -0
  825. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  826. package/out/zero-client/src/client/metrics.js +249 -0
  827. package/out/zero-client/src/client/metrics.js.map +1 -0
  828. package/out/zero-client/src/client/mutation-tracker.js +363 -0
  829. package/out/zero-client/src/client/mutation-tracker.js.map +1 -0
  830. package/out/zero-client/src/client/mutator-proxy.d.ts +1 -2
  831. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -1
  832. package/out/zero-client/src/client/mutator-proxy.js +132 -0
  833. package/out/zero-client/src/client/mutator-proxy.js.map +1 -0
  834. package/out/zero-client/src/client/options.d.ts +36 -19
  835. package/out/zero-client/src/client/options.d.ts.map +1 -1
  836. package/out/zero-client/src/client/options.js +11 -0
  837. package/out/zero-client/src/client/options.js.map +1 -0
  838. package/out/zero-client/src/client/query-manager.d.ts +4 -4
  839. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  840. package/out/zero-client/src/client/query-manager.js +377 -0
  841. package/out/zero-client/src/client/query-manager.js.map +1 -0
  842. package/out/zero-client/src/client/reload-error-handler.d.ts +1 -1
  843. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  844. package/out/zero-client/src/client/reload-error-handler.js +114 -0
  845. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  846. package/out/zero-client/src/client/server-option.js +64 -0
  847. package/out/zero-client/src/client/server-option.js.map +1 -0
  848. package/out/zero-client/src/client/update-needed-reason-type-enum.js +9 -0
  849. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
  850. package/out/zero-client/src/client/version.js +5 -0
  851. package/out/zero-client/src/client/version.js.map +1 -0
  852. package/out/zero-client/src/client/zero-poke-handler.js +303 -0
  853. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  854. package/out/zero-client/src/client/zero-rep.d.ts +2 -2
  855. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  856. package/out/zero-client/src/client/zero-rep.js +72 -0
  857. package/out/zero-client/src/client/zero-rep.js.map +1 -0
  858. package/out/zero-client/src/client/zero.d.ts +26 -9
  859. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  860. package/out/zero-client/src/client/zero.js +1825 -0
  861. package/out/zero-client/src/client/zero.js.map +1 -0
  862. package/out/zero-client/src/mod.d.ts +4 -12
  863. package/out/zero-client/src/mod.d.ts.map +1 -1
  864. package/out/zero-client/src/util/nanoid.js +21 -0
  865. package/out/zero-client/src/util/nanoid.js.map +1 -0
  866. package/out/zero-client/src/util/socket.js +7 -0
  867. package/out/zero-client/src/util/socket.js.map +1 -0
  868. package/out/zero-protocol/src/analyze-query-result.js +32 -24
  869. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  870. package/out/zero-protocol/src/application-error.js +35 -37
  871. package/out/zero-protocol/src/application-error.js.map +1 -1
  872. package/out/zero-protocol/src/ast.d.ts +1 -1
  873. package/out/zero-protocol/src/ast.js +296 -277
  874. package/out/zero-protocol/src/ast.js.map +1 -1
  875. package/out/zero-protocol/src/change-desired-queries.d.ts +2 -2
  876. package/out/zero-protocol/src/change-desired-queries.js +11 -7
  877. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  878. package/out/zero-protocol/src/client-schema.d.ts +2 -2
  879. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  880. package/out/zero-protocol/src/client-schema.js +40 -26
  881. package/out/zero-protocol/src/client-schema.js.map +1 -1
  882. package/out/zero-protocol/src/close-connection.js +11 -18
  883. package/out/zero-protocol/src/close-connection.js.map +1 -1
  884. package/out/zero-protocol/src/connect.d.ts +4 -4
  885. package/out/zero-protocol/src/connect.js +46 -51
  886. package/out/zero-protocol/src/connect.js.map +1 -1
  887. package/out/zero-protocol/src/custom-queries.d.ts +4 -4
  888. package/out/zero-protocol/src/custom-queries.js +61 -39
  889. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  890. package/out/zero-protocol/src/data.js +9 -4
  891. package/out/zero-protocol/src/data.js.map +1 -1
  892. package/out/zero-protocol/src/delete-clients.js +16 -9
  893. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  894. package/out/zero-protocol/src/down.d.ts +6 -6
  895. package/out/zero-protocol/src/down.js +20 -4
  896. package/out/zero-protocol/src/down.js.map +1 -1
  897. package/out/zero-protocol/src/error-kind-enum.js +41 -23
  898. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  899. package/out/zero-protocol/src/error-origin-enum.js +9 -4
  900. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  901. package/out/zero-protocol/src/error-reason-enum.js +17 -8
  902. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  903. package/out/zero-protocol/src/error.d.ts +17 -17
  904. package/out/zero-protocol/src/error.js +151 -89
  905. package/out/zero-protocol/src/error.js.map +1 -1
  906. package/out/zero-protocol/src/inspect-down.d.ts +18 -18
  907. package/out/zero-protocol/src/inspect-down.js +72 -54
  908. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  909. package/out/zero-protocol/src/inspect-up.d.ts +6 -6
  910. package/out/zero-protocol/src/inspect-up.js +38 -26
  911. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  912. package/out/zero-protocol/src/mutation-id.js +9 -5
  913. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  914. package/out/zero-protocol/src/mutation-type-enum.js +7 -3
  915. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  916. package/out/zero-protocol/src/mutations-patch.js +16 -17
  917. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  918. package/out/zero-protocol/src/ping.js +9 -4
  919. package/out/zero-protocol/src/ping.js.map +1 -1
  920. package/out/zero-protocol/src/poke.js +55 -72
  921. package/out/zero-protocol/src/poke.js.map +1 -1
  922. package/out/zero-protocol/src/pong.js +9 -4
  923. package/out/zero-protocol/src/pong.js.map +1 -1
  924. package/out/zero-protocol/src/primary-key.js +19 -5
  925. package/out/zero-protocol/src/primary-key.js.map +1 -1
  926. package/out/zero-protocol/src/protocol-version.d.ts +2 -2
  927. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  928. package/out/zero-protocol/src/protocol-version.js +7 -59
  929. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  930. package/out/zero-protocol/src/pull.js +26 -19
  931. package/out/zero-protocol/src/pull.js.map +1 -1
  932. package/out/zero-protocol/src/push.d.ts +4 -4
  933. package/out/zero-protocol/src/push.js +179 -176
  934. package/out/zero-protocol/src/push.js.map +1 -1
  935. package/out/zero-protocol/src/queries-patch.d.ts +3 -3
  936. package/out/zero-protocol/src/queries-patch.js +29 -22
  937. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  938. package/out/zero-protocol/src/query-hash.js +18 -14
  939. package/out/zero-protocol/src/query-hash.js.map +1 -1
  940. package/out/zero-protocol/src/row-patch.js +29 -20
  941. package/out/zero-protocol/src/row-patch.js.map +1 -1
  942. package/out/zero-protocol/src/up.d.ts +5 -5
  943. package/out/zero-protocol/src/up.js +18 -4
  944. package/out/zero-protocol/src/up.js.map +1 -1
  945. package/out/zero-protocol/src/version.js +9 -4
  946. package/out/zero-protocol/src/version.js.map +1 -1
  947. package/out/{inspector-GP3CBZRU.js → zero-react/src/components/inspector.js} +4 -9
  948. package/out/zero-react/src/components/inspector.js.map +1 -0
  949. package/out/{chunk-VZOYWIRW.js → zero-react/src/components/mark-icon.js} +3 -5
  950. package/out/zero-react/src/components/mark-icon.js.map +1 -0
  951. package/out/zero-react/src/components/zero-inspector.js +44 -0
  952. package/out/zero-react/src/components/zero-inspector.js.map +1 -0
  953. package/out/zero-react/src/mod.d.ts +1 -3
  954. package/out/zero-react/src/mod.d.ts.map +1 -1
  955. package/out/zero-react/src/use-query.d.ts +4 -4
  956. package/out/zero-react/src/use-query.d.ts.map +1 -1
  957. package/out/{react.js → zero-react/src/use-query.js} +25 -217
  958. package/out/zero-react/src/use-query.js.map +1 -0
  959. package/out/zero-react/src/use-zero-connection-state.d.ts +1 -1
  960. package/out/zero-react/src/use-zero-connection-state.d.ts.map +1 -1
  961. package/out/zero-react/src/use-zero-connection-state.js +14 -0
  962. package/out/zero-react/src/use-zero-connection-state.js.map +1 -0
  963. package/out/zero-react/src/use-zero-online.js +14 -0
  964. package/out/zero-react/src/use-zero-online.js.map +1 -0
  965. package/out/zero-react/src/zero-provider.d.ts +7 -6
  966. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  967. package/out/zero-react/src/zero-provider.js +59 -0
  968. package/out/zero-react/src/zero-provider.js.map +1 -0
  969. package/out/zero-schema/src/builder/relationship-builder.js +27 -0
  970. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -0
  971. package/out/zero-schema/src/builder/schema-builder.js +88 -0
  972. package/out/zero-schema/src/builder/schema-builder.js.map +1 -0
  973. package/out/zero-schema/src/builder/table-builder.js +129 -0
  974. package/out/zero-schema/src/builder/table-builder.js.map +1 -0
  975. package/out/zero-schema/src/compiled-permissions.js +23 -19
  976. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  977. package/out/zero-schema/src/name-mapper.js +43 -38
  978. package/out/zero-schema/src/name-mapper.js.map +1 -1
  979. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  980. package/out/zero-schema/src/permissions.js +199 -0
  981. package/out/zero-schema/src/permissions.js.map +1 -0
  982. package/out/zero-schema/src/schema-config.js +35 -51
  983. package/out/zero-schema/src/schema-config.js.map +1 -1
  984. package/out/zero-server/src/adapters/drizzle.d.ts +1 -1
  985. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  986. package/out/zero-server/src/adapters/drizzle.js +83 -100
  987. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  988. package/out/zero-server/src/adapters/pg.d.ts +3 -2
  989. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  990. package/out/zero-server/src/adapters/pg.js +53 -77
  991. package/out/zero-server/src/adapters/pg.js.map +1 -1
  992. package/out/zero-server/src/adapters/postgresjs.d.ts +1 -1
  993. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  994. package/out/zero-server/src/adapters/postgresjs.js +39 -57
  995. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  996. package/out/zero-server/src/custom.d.ts +6 -6
  997. package/out/zero-server/src/custom.d.ts.map +1 -1
  998. package/out/zero-server/src/custom.js +185 -117
  999. package/out/zero-server/src/custom.js.map +1 -1
  1000. package/out/zero-server/src/logging.js +7 -4
  1001. package/out/zero-server/src/logging.js.map +1 -1
  1002. package/out/zero-server/src/mod.d.ts +2 -0
  1003. package/out/zero-server/src/mod.d.ts.map +1 -1
  1004. package/out/zero-server/src/pg-query-executor.js +17 -14
  1005. package/out/zero-server/src/pg-query-executor.js.map +1 -1
  1006. package/out/zero-server/src/process-mutations.js +293 -274
  1007. package/out/zero-server/src/process-mutations.js.map +1 -1
  1008. package/out/zero-server/src/push-processor.js +55 -31
  1009. package/out/zero-server/src/push-processor.js.map +1 -1
  1010. package/out/zero-server/src/queries/process-queries.d.ts +63 -2
  1011. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  1012. package/out/zero-server/src/queries/process-queries.js +101 -95
  1013. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  1014. package/out/zero-server/src/query-registry.d.ts +10 -0
  1015. package/out/zero-server/src/query-registry.d.ts.map +1 -0
  1016. package/out/zero-server/src/query-registry.js +35 -0
  1017. package/out/zero-server/src/query-registry.js.map +1 -0
  1018. package/out/zero-server/src/schema.js +136 -124
  1019. package/out/zero-server/src/schema.js.map +1 -1
  1020. package/out/zero-server/src/zql-database.d.ts +4 -4
  1021. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  1022. package/out/zero-server/src/zql-database.js +66 -47
  1023. package/out/zero-server/src/zql-database.js.map +1 -1
  1024. package/out/zero-solid/src/mod.d.ts +1 -2
  1025. package/out/zero-solid/src/mod.d.ts.map +1 -1
  1026. package/out/zero-solid/src/solid-view.d.ts +1 -1
  1027. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  1028. package/out/{solid.js → zero-solid/src/solid-view.js} +42 -196
  1029. package/out/zero-solid/src/solid-view.js.map +1 -0
  1030. package/out/zero-solid/src/use-query.d.ts +1 -1
  1031. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  1032. package/out/zero-solid/src/use-query.js +70 -0
  1033. package/out/zero-solid/src/use-query.js.map +1 -0
  1034. package/out/zero-solid/src/use-zero-connection-state.d.ts +1 -1
  1035. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -1
  1036. package/out/zero-solid/src/use-zero-connection-state.js +15 -0
  1037. package/out/zero-solid/src/use-zero-connection-state.js.map +1 -0
  1038. package/out/zero-solid/src/use-zero-online.js +13 -0
  1039. package/out/zero-solid/src/use-zero-online.js.map +1 -0
  1040. package/out/zero-solid/src/use-zero.d.ts +1 -1
  1041. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  1042. package/out/zero-solid/src/use-zero.js +74 -0
  1043. package/out/zero-solid/src/use-zero.js.map +1 -0
  1044. package/out/zero-types/src/format.js +7 -4
  1045. package/out/zero-types/src/format.js.map +1 -1
  1046. package/out/zero-types/src/name-mapper.js +43 -40
  1047. package/out/zero-types/src/name-mapper.js.map +1 -1
  1048. package/out/zql/src/builder/builder.d.ts +2 -1
  1049. package/out/zql/src/builder/builder.d.ts.map +1 -1
  1050. package/out/zql/src/builder/builder.js +486 -428
  1051. package/out/zql/src/builder/builder.js.map +1 -1
  1052. package/out/zql/src/builder/debug-delegate.js +68 -64
  1053. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  1054. package/out/zql/src/builder/filter.js +132 -138
  1055. package/out/zql/src/builder/filter.js.map +1 -1
  1056. package/out/zql/src/builder/like.js +44 -51
  1057. package/out/zql/src/builder/like.js.map +1 -1
  1058. package/out/zql/src/error.d.ts +5 -0
  1059. package/out/zql/src/error.d.ts.map +1 -1
  1060. package/out/zql/src/error.js +18 -6
  1061. package/out/zql/src/error.js.map +1 -1
  1062. package/out/zql/src/ivm/array-view.js +86 -92
  1063. package/out/zql/src/ivm/array-view.js.map +1 -1
  1064. package/out/zql/src/ivm/constraint.js +74 -127
  1065. package/out/zql/src/ivm/constraint.js.map +1 -1
  1066. package/out/zql/src/ivm/data.js +59 -85
  1067. package/out/zql/src/ivm/data.js.map +1 -1
  1068. package/out/zql/src/ivm/exists.js +236 -243
  1069. package/out/zql/src/ivm/exists.js.map +1 -1
  1070. package/out/zql/src/ivm/fan-in.js +50 -51
  1071. package/out/zql/src/ivm/fan-in.js.map +1 -1
  1072. package/out/zql/src/ivm/fan-out.js +48 -50
  1073. package/out/zql/src/ivm/fan-out.js.map +1 -1
  1074. package/out/zql/src/ivm/filter-operators.js +87 -87
  1075. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  1076. package/out/zql/src/ivm/filter-push.js +26 -23
  1077. package/out/zql/src/ivm/filter-push.js.map +1 -1
  1078. package/out/zql/src/ivm/filter.js +30 -32
  1079. package/out/zql/src/ivm/filter.js.map +1 -1
  1080. package/out/zql/src/ivm/flipped-join.js +343 -326
  1081. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  1082. package/out/zql/src/ivm/join-utils.js +85 -79
  1083. package/out/zql/src/ivm/join-utils.js.map +1 -1
  1084. package/out/zql/src/ivm/join.js +287 -207
  1085. package/out/zql/src/ivm/join.js.map +1 -1
  1086. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +26 -24
  1087. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  1088. package/out/zql/src/ivm/memory-source.d.ts +2 -2
  1089. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  1090. package/out/zql/src/ivm/memory-source.js +471 -489
  1091. package/out/zql/src/ivm/memory-source.js.map +1 -1
  1092. package/out/zql/src/ivm/memory-storage.js +32 -31
  1093. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  1094. package/out/zql/src/ivm/operator.js +8 -9
  1095. package/out/zql/src/ivm/operator.js.map +1 -1
  1096. package/out/zql/src/ivm/push-accumulated.js +236 -305
  1097. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  1098. package/out/zql/src/ivm/skip.js +92 -106
  1099. package/out/zql/src/ivm/skip.js.map +1 -1
  1100. package/out/zql/src/ivm/source.d.ts +3 -1
  1101. package/out/zql/src/ivm/source.d.ts.map +1 -1
  1102. package/out/zql/src/ivm/stream.js +20 -16
  1103. package/out/zql/src/ivm/stream.js.map +1 -1
  1104. package/out/zql/src/ivm/take.js +502 -456
  1105. package/out/zql/src/ivm/take.js.map +1 -1
  1106. package/out/zql/src/ivm/union-fan-in.js +156 -134
  1107. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  1108. package/out/zql/src/ivm/union-fan-out.js +46 -45
  1109. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  1110. package/out/zql/src/ivm/view-apply-change.js +246 -216
  1111. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  1112. package/out/zql/src/ivm/view.d.ts +2 -2
  1113. package/out/zql/src/ivm/view.d.ts.map +1 -1
  1114. package/out/zql/src/mutate/custom.d.ts +10 -10
  1115. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  1116. package/out/zql/src/mutate/custom.js +15 -7
  1117. package/out/zql/src/mutate/custom.js.map +1 -1
  1118. package/out/zql/src/planner/planner-builder.js +238 -172
  1119. package/out/zql/src/planner/planner-builder.js.map +1 -1
  1120. package/out/zql/src/planner/planner-connection.js +202 -251
  1121. package/out/zql/src/planner/planner-connection.js.map +1 -1
  1122. package/out/zql/src/planner/planner-constraint.js +8 -11
  1123. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  1124. package/out/zql/src/planner/planner-fan-in.js +154 -164
  1125. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1126. package/out/zql/src/planner/planner-fan-out.js +71 -60
  1127. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1128. package/out/zql/src/planner/planner-graph.d.ts +6 -6
  1129. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  1130. package/out/zql/src/planner/planner-graph.js +315 -338
  1131. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1132. package/out/zql/src/planner/planner-join.js +234 -342
  1133. package/out/zql/src/planner/planner-join.js.map +1 -1
  1134. package/out/zql/src/planner/planner-source.js +23 -12
  1135. package/out/zql/src/planner/planner-source.js.map +1 -1
  1136. package/out/zql/src/planner/planner-terminus.js +28 -27
  1137. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1138. package/out/zql/src/query/complete-ordering.d.ts +5 -0
  1139. package/out/zql/src/query/complete-ordering.d.ts.map +1 -0
  1140. package/out/zql/src/query/complete-ordering.js +71 -0
  1141. package/out/zql/src/query/complete-ordering.js.map +1 -0
  1142. package/out/zql/src/query/define-query.d.ts +47 -23
  1143. package/out/zql/src/query/define-query.d.ts.map +1 -1
  1144. package/out/zql/src/query/define-query.js +45 -51
  1145. package/out/zql/src/query/define-query.js.map +1 -1
  1146. package/out/zql/src/query/error.js +12 -8
  1147. package/out/zql/src/query/error.js.map +1 -1
  1148. package/out/zql/src/query/escape-like.js +7 -0
  1149. package/out/zql/src/query/escape-like.js.map +1 -0
  1150. package/out/zql/src/query/expression.js +153 -151
  1151. package/out/zql/src/query/expression.js.map +1 -1
  1152. package/out/zql/src/query/measure-push-operator.js +42 -35
  1153. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1154. package/out/zql/src/query/metrics-delegate.js +9 -5
  1155. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1156. package/out/zql/src/query/named.d.ts +9 -5
  1157. package/out/zql/src/query/named.d.ts.map +1 -1
  1158. package/out/zql/src/query/named.js +70 -85
  1159. package/out/zql/src/query/named.js.map +1 -1
  1160. package/out/zql/src/query/query-definitions.d.ts +32 -0
  1161. package/out/zql/src/query/query-definitions.d.ts.map +1 -0
  1162. package/out/zql/src/query/query-delegate-base.d.ts +6 -14
  1163. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  1164. package/out/zql/src/query/query-delegate-base.js +118 -134
  1165. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  1166. package/out/zql/src/query/query-delegate.d.ts +6 -8
  1167. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  1168. package/out/zql/src/query/query-impl.d.ts +17 -18
  1169. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1170. package/out/zql/src/query/query-impl.js +511 -433
  1171. package/out/zql/src/query/query-impl.js.map +1 -1
  1172. package/out/zql/src/query/query-internals.d.ts +11 -13
  1173. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  1174. package/out/zql/src/query/query-internals.js +13 -19
  1175. package/out/zql/src/query/query-internals.js.map +1 -1
  1176. package/out/zql/src/query/query.d.ts +15 -16
  1177. package/out/zql/src/query/query.d.ts.map +1 -1
  1178. package/out/zql/src/query/static-query.d.ts +3 -3
  1179. package/out/zql/src/query/static-query.d.ts.map +1 -1
  1180. package/out/zql/src/query/static-query.js +41 -18
  1181. package/out/zql/src/query/static-query.js.map +1 -1
  1182. package/out/zql/src/query/ttl.js +69 -62
  1183. package/out/zql/src/query/ttl.js.map +1 -1
  1184. package/out/zql/src/query/validate-input.d.ts +15 -0
  1185. package/out/zql/src/query/validate-input.d.ts.map +1 -0
  1186. package/out/zql/src/query/validate-input.js +25 -0
  1187. package/out/zql/src/query/validate-input.js.map +1 -0
  1188. package/out/zqlite/src/database-storage.d.ts +1 -1
  1189. package/out/zqlite/src/database-storage.d.ts.map +1 -1
  1190. package/out/zqlite/src/database-storage.js +99 -102
  1191. package/out/zqlite/src/database-storage.js.map +1 -1
  1192. package/out/zqlite/src/db.js +241 -194
  1193. package/out/zqlite/src/db.js.map +1 -1
  1194. package/out/zqlite/src/explain-queries.js +13 -16
  1195. package/out/zqlite/src/explain-queries.js.map +1 -1
  1196. package/out/zqlite/src/internal/sql.js +15 -10
  1197. package/out/zqlite/src/internal/sql.js.map +1 -1
  1198. package/out/zqlite/src/internal/statement-cache.js +86 -110
  1199. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1200. package/out/zqlite/src/query-builder.js +172 -143
  1201. package/out/zqlite/src/query-builder.js.map +1 -1
  1202. package/out/zqlite/src/query-delegate.d.ts +2 -2
  1203. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  1204. package/out/zqlite/src/query-delegate.js +53 -43
  1205. package/out/zqlite/src/query-delegate.js.map +1 -1
  1206. package/out/zqlite/src/sqlite-cost-model.js +94 -125
  1207. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1208. package/out/zqlite/src/sqlite-stat-fanout.js +277 -353
  1209. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
  1210. package/out/zqlite/src/table-source.d.ts +9 -4
  1211. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1212. package/out/zqlite/src/table-source.js +424 -327
  1213. package/out/zqlite/src/table-source.js.map +1 -1
  1214. package/package.json +22 -25
  1215. package/out/chunk-424PT5DM.js +0 -23
  1216. package/out/chunk-424PT5DM.js.map +0 -7
  1217. package/out/chunk-AFADJQ2O.js +0 -1
  1218. package/out/chunk-AFADJQ2O.js.map +0 -7
  1219. package/out/chunk-ASRS2LFV.js.map +0 -7
  1220. package/out/chunk-EZM3XBAB.js.map +0 -7
  1221. package/out/chunk-FODUNUAD.js +0 -18850
  1222. package/out/chunk-FODUNUAD.js.map +0 -7
  1223. package/out/chunk-HCZQVP5R.js.map +0 -7
  1224. package/out/chunk-S633A55A.js +0 -495
  1225. package/out/chunk-S633A55A.js.map +0 -7
  1226. package/out/chunk-TAUDS4QP.js +0 -4129
  1227. package/out/chunk-TAUDS4QP.js.map +0 -7
  1228. package/out/chunk-VZOYWIRW.js.map +0 -7
  1229. package/out/chunk-WPAQ4EPM.js.map +0 -7
  1230. package/out/expo-sqlite.js +0 -11
  1231. package/out/expo-sqlite.js.map +0 -7
  1232. package/out/inspector-GP3CBZRU.js.map +0 -7
  1233. package/out/lazy-inspector-XLKVABX2.js +0 -575
  1234. package/out/lazy-inspector-XLKVABX2.js.map +0 -7
  1235. package/out/op-sqlite.js.map +0 -7
  1236. package/out/react-native.js +0 -25
  1237. package/out/react-native.js.map +0 -7
  1238. package/out/react.js.map +0 -7
  1239. package/out/shared/src/enum.js +0 -2
  1240. package/out/shared/src/enum.js.map +0 -1
  1241. package/out/shared/src/expand.js +0 -2
  1242. package/out/shared/src/expand.js.map +0 -1
  1243. package/out/shared/src/immutable.js +0 -2
  1244. package/out/shared/src/immutable.js.map +0 -1
  1245. package/out/shared/src/types.js +0 -2
  1246. package/out/shared/src/types.js.map +0 -1
  1247. package/out/shared/src/writable.js +0 -2
  1248. package/out/shared/src/writable.js.map +0 -1
  1249. package/out/solid.js.map +0 -7
  1250. package/out/sqlite.js +0 -15
  1251. package/out/sqlite.js.map +0 -7
  1252. package/out/zero/package.json +0 -195
  1253. package/out/zero/src/server/change-streamer.js +0 -2
  1254. package/out/zero/src/server/change-streamer.js.map +0 -1
  1255. package/out/zero/src/server/main.js +0 -2
  1256. package/out/zero/src/server/main.js.map +0 -1
  1257. package/out/zero/src/server/reaper.js +0 -2
  1258. package/out/zero/src/server/reaper.js.map +0 -1
  1259. package/out/zero/src/server/replicator.js +0 -2
  1260. package/out/zero/src/server/replicator.js.map +0 -1
  1261. package/out/zero/src/server/runner/main.js +0 -2
  1262. package/out/zero/src/server/runner/main.js.map +0 -1
  1263. package/out/zero/src/server/syncer.js +0 -2
  1264. package/out/zero/src/server/syncer.js.map +0 -1
  1265. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js +0 -4
  1266. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js.map +0 -1
  1267. package/out/zero-cache/src/services/change-source/protocol/mod.js +0 -5
  1268. package/out/zero-cache/src/services/change-source/protocol/mod.js.map +0 -1
  1269. package/out/zero-cache/src/services/service.js +0 -2
  1270. package/out/zero-cache/src/services/service.js.map +0 -1
  1271. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts +0 -32
  1272. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts.map +0 -1
  1273. package/out/zero-cache/src/services/view-syncer/key-columns.js +0 -75
  1274. package/out/zero-cache/src/services/view-syncer/key-columns.js.map +0 -1
  1275. package/out/zero-cache/src/types/satisfies.js +0 -2
  1276. package/out/zero-cache/src/types/satisfies.js.map +0 -1
  1277. package/out/zero-events/src/index.js +0 -2
  1278. package/out/zero-events/src/index.js.map +0 -1
  1279. package/out/zero-events/src/json.js +0 -2
  1280. package/out/zero-events/src/json.js.map +0 -1
  1281. package/out/zero-events/src/status.js +0 -3
  1282. package/out/zero-events/src/status.js.map +0 -1
  1283. package/out/zero-pg/src/mod.js +0 -6
  1284. package/out/zero-pg/src/mod.js.map +0 -1
  1285. package/out/zero-protocol/src/error-kind.js +0 -3
  1286. package/out/zero-protocol/src/error-kind.js.map +0 -1
  1287. package/out/zero-protocol/src/error-origin.js +0 -3
  1288. package/out/zero-protocol/src/error-origin.js.map +0 -1
  1289. package/out/zero-protocol/src/error-reason.js +0 -3
  1290. package/out/zero-protocol/src/error-reason.js.map +0 -1
  1291. package/out/zero-schema/src/table-schema.js +0 -7
  1292. package/out/zero-schema/src/table-schema.js.map +0 -1
  1293. package/out/zero-server/src/mod.js +0 -8
  1294. package/out/zero-server/src/mod.js.map +0 -1
  1295. package/out/zero-types/src/schema-value.js +0 -2
  1296. package/out/zero-types/src/schema-value.js.map +0 -1
  1297. package/out/zero-types/src/schema.js +0 -2
  1298. package/out/zero-types/src/schema.js.map +0 -1
  1299. package/out/zero-types/src/server-schema.js +0 -2
  1300. package/out/zero-types/src/server-schema.js.map +0 -1
  1301. package/out/zero.js +0 -95
  1302. package/out/zero.js.map +0 -7
  1303. package/out/zql/src/ivm/change.js +0 -2
  1304. package/out/zql/src/ivm/change.js.map +0 -1
  1305. package/out/zql/src/ivm/default-format.js +0 -2
  1306. package/out/zql/src/ivm/default-format.js.map +0 -1
  1307. package/out/zql/src/ivm/schema.js +0 -2
  1308. package/out/zql/src/ivm/schema.js.map +0 -1
  1309. package/out/zql/src/ivm/source.js +0 -2
  1310. package/out/zql/src/ivm/source.js.map +0 -1
  1311. package/out/zql/src/ivm/view.js +0 -2
  1312. package/out/zql/src/ivm/view.js.map +0 -1
  1313. package/out/zql/src/planner/planner-debug.js +0 -176
  1314. package/out/zql/src/planner/planner-debug.js.map +0 -1
  1315. package/out/zql/src/planner/planner-node.js +0 -2
  1316. package/out/zql/src/planner/planner-node.js.map +0 -1
  1317. package/out/zql/src/query/chained-query.d.ts +0 -35
  1318. package/out/zql/src/query/chained-query.d.ts.map +0 -1
  1319. package/out/zql/src/query/chained-query.js +0 -66
  1320. package/out/zql/src/query/chained-query.js.map +0 -1
  1321. package/out/zql/src/query/query-delegate.js +0 -2
  1322. package/out/zql/src/query/query-delegate.js.map +0 -1
  1323. package/out/zql/src/query/query.js +0 -8
  1324. package/out/zql/src/query/query.js.map +0 -1
  1325. package/out/zql/src/query/root-named-query.d.ts +0 -33
  1326. package/out/zql/src/query/root-named-query.d.ts.map +0 -1
  1327. package/out/zql/src/query/root-named-query.js +0 -95
  1328. package/out/zql/src/query/root-named-query.js.map +0 -1
  1329. package/out/zql/src/query/typed-view.js +0 -2
  1330. package/out/zql/src/query/typed-view.js.map +0 -1
  1331. package/out/zqlite/src/mod.js +0 -5
  1332. package/out/zqlite/src/mod.js.map +0 -1
@@ -1,258 +1,209 @@
1
1
  import { assert } from "../../../shared/src/asserts.js";
2
- import { mergeConstraints, } from "./planner-constraint.js";
3
- /**
4
- * Represents a connection to a source (table scan).
5
- *
6
- * # Dual State Pattern
7
- * Like all planner nodes, PlannerConnection separates:
8
- * 1. immutable structure: Ordering, filters, cost model (set at construction)
9
- * 2. mutable state: Pinned status, constraints (mutated during planning)
10
- *
11
- * # Cost Estimation
12
- * The ordering and filters determine the initial cost. As planning progresses,
13
- * constraints from parent joins refine the cost estimate.
14
- *
15
- * # Constraint Flow
16
- * When a connection is pinned as the outer loop, it reveals constraints for
17
- * connected joins. These constraints propagate through the graph, allowing
18
- * other connections to update their cost estimates.
19
- *
20
- * Example:
21
- *
22
- * ```ts
23
- * builder.issue.whereExists('assignee', a => a.where('name', 'Alice'))
24
- * ```
25
- *
26
- * ```
27
- * [issue] [assignee]
28
- * | |
29
- * | +-- where name = 'Alice'
30
- * \ /
31
- * \ /
32
- * [join]
33
- * |
34
- * ```
35
- *
36
- * - Initial state: Both connections have no constraints, costs are unconstrained
37
- * - If `issue` chosen first: Reveals constraint `assignee_id` for assignee connection
38
- * - If `assignee` chosen first: Reveals constraint `assignee_id` for issue connection
39
- * - Updated costs guide the next selection
40
- *
41
- * # Lifecycle
42
- * 1. Construct with immutable structure (ordering, filters, cost model)
43
- * 2. Wire to output node during graph construction
44
- * 3. Planning mutates pinned status and accumulates constraints
45
- * 4. reset() clears mutable state for replanning
46
- */
47
- export class PlannerConnection {
48
- kind = 'connection';
49
- // ========================================================================
50
- // IMMUTABLE STRUCTURE (set during construction, never changes)
51
- // ========================================================================
52
- #sort;
53
- #filters;
54
- #model;
55
- table;
56
- name; // Human-readable name for debugging (defaults to table name)
57
- #baseConstraints; // Constraints from parent correlation
58
- #baseLimit; // Original limit from query structure (never modified)
59
- selectivity; // Fraction of rows passing filters (1.0 = no filtering)
60
- #output; // Set once during graph construction
61
- // ========================================================================
62
- // MUTABLE PLANNING STATE (changes during plan search)
63
- // ========================================================================
64
- /**
65
- * Current limit during planning. Can be cleared (set to undefined) when a
66
- * parent join is flipped, indicating this connection is now in an outer loop
67
- * and should not be limited by EXISTS semantics.
68
- */
69
- limit;
70
- /**
71
- * Constraints accumulated from parent joins during planning.
72
- * Key is a path through the graph (e.g., "0,1" for branch pattern [0,1]).
73
- *
74
- * Undefined constraints are possible when a FO converts to UFO and only
75
- * a single join in the UFO is flipped - other branches report undefined.
76
- */
77
- #constraints;
78
- #isRoot;
79
- /**
80
- * Cached per-constraint costs to avoid redundant cost model calls.
81
- * Maps constraint key (branch pattern string) to computed cost.
82
- * Invalidated when constraints change.
83
- */
84
- #cachedConstraintCosts = new Map();
85
- constructor(table, model, sort, filters, isRoot, baseConstraints, limit, name) {
86
- this.table = table;
87
- this.name = name ?? table;
88
- this.#sort = sort;
89
- this.#filters = filters;
90
- this.#model = model;
91
- this.#baseConstraints = baseConstraints;
92
- this.#baseLimit = limit;
93
- this.limit = limit;
94
- this.#constraints = new Map();
95
- this.#isRoot = isRoot;
96
- // Compute selectivity for EXISTS child connections (baseLimit === 1)
97
- // Selectivity = fraction of rows that pass filters
98
- if (limit !== undefined && filters) {
99
- const costWithFilters = model(table, sort, filters, undefined);
100
- const costWithoutFilters = model(table, sort, undefined, undefined);
101
- this.selectivity =
102
- costWithoutFilters.rows > 0
103
- ? costWithFilters.rows / costWithoutFilters.rows
104
- : 1.0;
105
- }
106
- else {
107
- // Root connections or connections without filters
108
- this.selectivity = 1.0;
109
- }
2
+ import { mergeConstraints } from "./planner-constraint.js";
3
+ class PlannerConnection {
4
+ kind = "connection";
5
+ // ========================================================================
6
+ // IMMUTABLE STRUCTURE (set during construction, never changes)
7
+ // ========================================================================
8
+ #sort;
9
+ #filters;
10
+ #model;
11
+ table;
12
+ name;
13
+ // Human-readable name for debugging (defaults to table name)
14
+ #baseConstraints;
15
+ // Constraints from parent correlation
16
+ #baseLimit;
17
+ // Original limit from query structure (never modified)
18
+ selectivity;
19
+ // Fraction of rows passing filters (1.0 = no filtering)
20
+ #output;
21
+ // Set once during graph construction
22
+ // ========================================================================
23
+ // MUTABLE PLANNING STATE (changes during plan search)
24
+ // ========================================================================
25
+ /**
26
+ * Current limit during planning. Can be cleared (set to undefined) when a
27
+ * parent join is flipped, indicating this connection is now in an outer loop
28
+ * and should not be limited by EXISTS semantics.
29
+ */
30
+ limit;
31
+ /**
32
+ * Constraints accumulated from parent joins during planning.
33
+ * Key is a path through the graph (e.g., "0,1" for branch pattern [0,1]).
34
+ *
35
+ * Undefined constraints are possible when a FO converts to UFO and only
36
+ * a single join in the UFO is flipped - other branches report undefined.
37
+ */
38
+ #constraints;
39
+ #isRoot;
40
+ /**
41
+ * Cached per-constraint costs to avoid redundant cost model calls.
42
+ * Maps constraint key (branch pattern string) to computed cost.
43
+ * Invalidated when constraints change.
44
+ */
45
+ #cachedConstraintCosts = /* @__PURE__ */ new Map();
46
+ constructor(table, model, sort, filters, isRoot, baseConstraints, limit, name) {
47
+ this.table = table;
48
+ this.name = name ?? table;
49
+ this.#sort = sort;
50
+ this.#filters = filters;
51
+ this.#model = model;
52
+ this.#baseConstraints = baseConstraints;
53
+ this.#baseLimit = limit;
54
+ this.limit = limit;
55
+ this.#constraints = /* @__PURE__ */ new Map();
56
+ this.#isRoot = isRoot;
57
+ if (limit !== void 0 && filters) {
58
+ const costWithFilters = model(table, sort, filters, void 0);
59
+ const costWithoutFilters = model(table, sort, void 0, void 0);
60
+ this.selectivity = costWithoutFilters.rows > 0 ? costWithFilters.rows / costWithoutFilters.rows : 1;
61
+ } else {
62
+ this.selectivity = 1;
110
63
  }
111
- setOutput(node) {
112
- this.#output = node;
64
+ }
65
+ setOutput(node) {
66
+ this.#output = node;
67
+ }
68
+ get output() {
69
+ assert(this.#output !== void 0, "Output not set");
70
+ return this.#output;
71
+ }
72
+ closestJoinOrSource() {
73
+ return "connection";
74
+ }
75
+ /**
76
+ * Constraints are uniquely identified by their path through the
77
+ * graph.
78
+ *
79
+ * FO represents all sub-joins as a single path.
80
+ * UFO represents each sub-join as a separate path.
81
+ * The first branch in a UFO will match the path of FO so no re-set needs to happen
82
+ * when swapping from FO to UFO.
83
+ *
84
+ * FO swaps to UFO when a join inside FO-FI gets flipped.
85
+ *
86
+ * The max of the last element of the paths is the number of
87
+ * root branches.
88
+ */
89
+ propagateConstraints(path, c, from, planDebugger) {
90
+ const key = path.join(",");
91
+ this.#constraints.set(key, c);
92
+ this.#cachedConstraintCosts.clear();
93
+ planDebugger?.log({
94
+ type: "node-constraint",
95
+ nodeType: "connection",
96
+ node: this.name,
97
+ branchPattern: path,
98
+ constraint: c,
99
+ from: from?.kind ?? "unknown"
100
+ });
101
+ }
102
+ estimateCost(downstreamChildSelectivity, branchPattern, planDebugger) {
103
+ const key = branchPattern.join(",");
104
+ let cost = this.#cachedConstraintCosts.get(key);
105
+ if (cost !== void 0) {
106
+ return cost;
113
107
  }
114
- get output() {
115
- assert(this.#output !== undefined, 'Output not set');
116
- return this.#output;
108
+ const constraint = this.#constraints.get(key);
109
+ const mergedConstraint = mergeConstraints(
110
+ this.#baseConstraints,
111
+ constraint
112
+ );
113
+ const { startupCost, fanout, rows } = this.#model(
114
+ this.table,
115
+ this.#sort,
116
+ this.#filters,
117
+ mergedConstraint
118
+ );
119
+ cost = {
120
+ startupCost,
121
+ scanEst: this.limit === void 0 ? rows : Math.min(rows, this.limit / downstreamChildSelectivity),
122
+ cost: 0,
123
+ returnedRows: rows,
124
+ selectivity: this.selectivity,
125
+ limit: this.limit,
126
+ fanout
127
+ };
128
+ this.#cachedConstraintCosts.set(key, cost);
129
+ planDebugger?.log({
130
+ type: "node-cost",
131
+ nodeType: "connection",
132
+ node: this.name,
133
+ branchPattern,
134
+ downstreamChildSelectivity,
135
+ costEstimate: cost,
136
+ filters: this.#filters
137
+ });
138
+ return cost;
139
+ }
140
+ /**
141
+ * Remove the limit from this connection.
142
+ * Called when a parent join is flipped, making this connection part of an
143
+ * outer loop that should produce all rows rather than stopping at the limit.
144
+ */
145
+ unlimit() {
146
+ if (this.#isRoot) {
147
+ return;
117
148
  }
118
- closestJoinOrSource() {
119
- return 'connection';
149
+ if (this.limit !== void 0) {
150
+ this.limit = void 0;
120
151
  }
121
- /**
122
- * Constraints are uniquely identified by their path through the
123
- * graph.
124
- *
125
- * FO represents all sub-joins as a single path.
126
- * UFO represents each sub-join as a separate path.
127
- * The first branch in a UFO will match the path of FO so no re-set needs to happen
128
- * when swapping from FO to UFO.
129
- *
130
- * FO swaps to UFO when a join inside FO-FI gets flipped.
131
- *
132
- * The max of the last element of the paths is the number of
133
- * root branches.
134
- */
135
- propagateConstraints(path, c, from, planDebugger) {
136
- const key = path.join(',');
137
- this.#constraints.set(key, c);
138
- // Constraints changed, invalidate cost caches
139
- this.#cachedConstraintCosts.clear();
140
- planDebugger?.log({
141
- type: 'node-constraint',
142
- nodeType: 'connection',
143
- node: this.name,
144
- branchPattern: path,
145
- constraint: c,
146
- from: from?.kind ?? 'unknown',
147
- });
148
- }
149
- estimateCost(downstreamChildSelectivity, branchPattern, planDebugger) {
150
- // Branch pattern specified - return cost for this specific branch
151
- const key = branchPattern.join(',');
152
- // Check per-constraint cache first
153
- let cost = this.#cachedConstraintCosts.get(key);
154
- if (cost !== undefined) {
155
- return cost;
156
- }
157
- // Cache miss - compute and cache
158
- const constraint = this.#constraints.get(key);
159
- // Merge base constraints with propagated constraints
160
- const mergedConstraint = mergeConstraints(this.#baseConstraints, constraint);
161
- const { startupCost, fanout, rows } = this.#model(this.table, this.#sort, this.#filters, mergedConstraint);
162
- cost = {
163
- startupCost,
164
- scanEst: this.limit === undefined
165
- ? rows
166
- : Math.min(rows, this.limit / downstreamChildSelectivity),
167
- cost: 0,
168
- returnedRows: rows,
169
- selectivity: this.selectivity,
170
- limit: this.limit,
171
- fanout,
172
- };
173
- this.#cachedConstraintCosts.set(key, cost);
174
- planDebugger?.log({
175
- type: 'node-cost',
176
- nodeType: 'connection',
177
- node: this.name,
178
- branchPattern,
179
- downstreamChildSelectivity,
180
- costEstimate: cost,
181
- filters: this.#filters,
182
- });
183
- return cost;
184
- }
185
- /**
186
- * Remove the limit from this connection.
187
- * Called when a parent join is flipped, making this connection part of an
188
- * outer loop that should produce all rows rather than stopping at the limit.
189
- */
190
- unlimit() {
191
- if (this.#isRoot) {
192
- // We cannot unlimit root connections
193
- return;
194
- }
195
- if (this.limit !== undefined) {
196
- this.limit = undefined;
197
- // Limit changes do not impact connection costs.
198
- // Limit is taken into account at the join level.
199
- // Given that, we do not need to invalidate cost caches here.
200
- }
201
- }
202
- /**
203
- * Propagate unlimiting when a parent join is flipped.
204
- * For connections, we simply remove the limit.
205
- */
206
- propagateUnlimitFromFlippedJoin() {
207
- this.unlimit();
208
- }
209
- reset() {
210
- this.#constraints.clear();
211
- this.limit = this.#baseLimit;
212
- // Clear all cost caches
213
- this.#cachedConstraintCosts.clear();
214
- }
215
- /**
216
- * Capture constraint state for snapshotting.
217
- * Used by PlannerGraph to save/restore planning state.
218
- */
219
- captureConstraints() {
220
- return new Map(this.#constraints);
221
- }
222
- /**
223
- * Restore constraint state from a snapshot.
224
- * Used by PlannerGraph to restore planning state.
225
- */
226
- restoreConstraints(constraints) {
227
- this.#constraints.clear();
228
- for (const [key, value] of constraints) {
229
- this.#constraints.set(key, value);
230
- }
231
- // Constraints changed, invalidate cost caches
232
- this.#cachedConstraintCosts.clear();
233
- }
234
- /**
235
- * Get current constraints for debugging.
236
- * Returns a copy of the constraints map.
237
- */
238
- getConstraintsForDebug() {
239
- return new Map(this.#constraints);
240
- }
241
- /**
242
- * Get filters for debugging.
243
- * Returns the filters applied to this connection.
244
- */
245
- getFiltersForDebug() {
246
- return this.#filters;
247
- }
248
- /**
249
- * Get estimated cost for each constraint branch.
250
- * Returns a map of constraint key to cost estimate.
251
- * Forces cost calculation if not already cached.
252
- */
253
- getConstraintCostsForDebug() {
254
- // Return copy of cached costs
255
- return new Map(this.#cachedConstraintCosts);
152
+ }
153
+ /**
154
+ * Propagate unlimiting when a parent join is flipped.
155
+ * For connections, we simply remove the limit.
156
+ */
157
+ propagateUnlimitFromFlippedJoin() {
158
+ this.unlimit();
159
+ }
160
+ reset() {
161
+ this.#constraints.clear();
162
+ this.limit = this.#baseLimit;
163
+ this.#cachedConstraintCosts.clear();
164
+ }
165
+ /**
166
+ * Capture constraint state for snapshotting.
167
+ * Used by PlannerGraph to save/restore planning state.
168
+ */
169
+ captureConstraints() {
170
+ return new Map(this.#constraints);
171
+ }
172
+ /**
173
+ * Restore constraint state from a snapshot.
174
+ * Used by PlannerGraph to restore planning state.
175
+ */
176
+ restoreConstraints(constraints) {
177
+ this.#constraints.clear();
178
+ for (const [key, value] of constraints) {
179
+ this.#constraints.set(key, value);
256
180
  }
181
+ this.#cachedConstraintCosts.clear();
182
+ }
183
+ /**
184
+ * Get current constraints for debugging.
185
+ * Returns a copy of the constraints map.
186
+ */
187
+ getConstraintsForDebug() {
188
+ return new Map(this.#constraints);
189
+ }
190
+ /**
191
+ * Get filters for debugging.
192
+ * Returns the filters applied to this connection.
193
+ */
194
+ getFiltersForDebug() {
195
+ return this.#filters;
196
+ }
197
+ /**
198
+ * Get estimated cost for each constraint branch.
199
+ * Returns a map of constraint key to cost estimate.
200
+ * Forces cost calculation if not already cached.
201
+ */
202
+ getConstraintCostsForDebug() {
203
+ return new Map(this.#cachedConstraintCosts);
204
+ }
257
205
  }
258
- //# sourceMappingURL=planner-connection.js.map
206
+ export {
207
+ PlannerConnection
208
+ };
209
+ //# sourceMappingURL=planner-connection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner-connection.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-connection.ts"],"names":[],"mappings":"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"}
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 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 planDebugger?.log({\n type: 'node-cost',\n nodeType: 'connection',\n node: this.name,\n branchPattern,\n downstreamChildSelectivity,\n costEstimate: cost,\n filters: this.#filters,\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 /**\n * Get current constraints for debugging.\n * Returns a copy of the constraints map.\n */\n getConstraintsForDebug(): Map<string, PlannerConstraint | undefined> {\n return new Map(this.#constraints);\n }\n\n /**\n * Get filters for debugging.\n * Returns the filters applied to this connection.\n */\n getFiltersForDebug(): Condition | undefined {\n return this.#filters;\n }\n\n /**\n * Get estimated cost for each constraint branch.\n * Returns a map of constraint key to cost estimate.\n * Forces cost calculation if not already cached.\n */\n getConstraintCostsForDebug(): Map<string, CostEstimate> {\n // Return copy of cached costs\n return new Map(this.#cachedConstraintCosts);\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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"}
@@ -1,12 +1,9 @@
1
- /**
2
- * Multiple flipped joins will contribute extra constraints to a parent join.
3
- * These need to be merged.
4
- */
5
- export function mergeConstraints(a, b) {
6
- if (!a)
7
- return b;
8
- if (!b)
9
- return a;
10
- return { ...a, ...b };
1
+ function mergeConstraints(a, b) {
2
+ if (!a) return b;
3
+ if (!b) return a;
4
+ return { ...a, ...b };
11
5
  }
12
- //# sourceMappingURL=planner-constraint.js.map
6
+ export {
7
+ mergeConstraints
8
+ };
9
+ //# sourceMappingURL=planner-constraint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner-constraint.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-constraint.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAAgC,EAChC,CAAgC;IAEhC,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,OAAO,EAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"planner-constraint.js","sources":["../../../../../zql/src/planner/planner-constraint.ts"],"sourcesContent":["/**\n * We do not know the value a constraint will take until runtime.\n *\n * However, we do know the column.\n *\n * E.g., we know that `issue.assignee_id` will be constrained to typeof issue.assignee_id.\n */\nexport type PlannerConstraint = Record<string, undefined>;\n\n/**\n * Multiple flipped joins will contribute extra constraints to a parent join.\n * These need to be merged.\n */\nexport function mergeConstraints(\n a: PlannerConstraint | undefined,\n b: PlannerConstraint | undefined,\n): PlannerConstraint | undefined {\n if (!a) return b;\n if (!b) return a;\n return {...a, ...b};\n}\n"],"names":[],"mappings":"AAaO,SAAS,iBACd,GACA,GAC+B;AAC/B,MAAI,CAAC,EAAG,QAAO;AACf,MAAI,CAAC,EAAG,QAAO;AACf,SAAO,EAAC,GAAG,GAAG,GAAG,EAAA;AACnB;"}