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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1466) hide show
  1. package/out/_virtual/{_@oxc-project_runtime@0.130.0/helpers → _@oxc-project_runtime@0.154.0/helpers/esm}/usingCtx.js +2 -2
  2. package/out/analyze-query/src/analyze-cli.d.ts.map +1 -1
  3. package/out/analyze-query/src/analyze-cli.js +6 -4
  4. package/out/analyze-query/src/analyze-cli.js.map +1 -1
  5. package/out/analyze-query/src/bin-transform.js +4 -3
  6. package/out/analyze-query/src/bin-transform.js.map +1 -1
  7. package/out/analyze-query/src/zql-chain.d.ts +23 -0
  8. package/out/analyze-query/src/zql-chain.d.ts.map +1 -0
  9. package/out/analyze-query/src/zql-chain.js +170 -0
  10. package/out/analyze-query/src/zql-chain.js.map +1 -0
  11. package/out/ast-to-zql/src/ast-to-zql.d.ts.map +1 -1
  12. package/out/ast-to-zql/src/ast-to-zql.js +61 -20
  13. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  14. package/out/ast-to-zql/src/bin.js +4 -3
  15. package/out/ast-to-zql/src/bin.js.map +1 -1
  16. package/out/ast-to-zql/src/format.js.map +1 -1
  17. package/out/datadog/src/datadog-log-sink.js +5 -4
  18. package/out/datadog/src/datadog-log-sink.js.map +1 -1
  19. package/out/otel/src/log-options.js.map +1 -1
  20. package/out/replicache/src/btree/node.d.ts +0 -2
  21. package/out/replicache/src/btree/node.d.ts.map +1 -1
  22. package/out/replicache/src/btree/node.js +14 -12
  23. package/out/replicache/src/btree/node.js.map +1 -1
  24. package/out/replicache/src/btree/read.js +4 -2
  25. package/out/replicache/src/btree/read.js.map +1 -1
  26. package/out/replicache/src/btree/splice.js.map +1 -1
  27. package/out/replicache/src/btree/write.js +9 -5
  28. package/out/replicache/src/btree/write.js.map +1 -1
  29. package/out/replicache/src/config.js +1 -2
  30. package/out/replicache/src/connection-loop.d.ts.map +1 -1
  31. package/out/replicache/src/connection-loop.js +1 -1
  32. package/out/replicache/src/connection-loop.js.map +1 -1
  33. package/out/replicache/src/dag/chunk.js +1 -1
  34. package/out/replicache/src/dag/gc.js.map +1 -1
  35. package/out/replicache/src/dag/lazy-store.js +8 -7
  36. package/out/replicache/src/dag/lazy-store.js.map +1 -1
  37. package/out/replicache/src/dag/store-impl.js +1 -1
  38. package/out/replicache/src/dag/store-impl.js.map +1 -1
  39. package/out/replicache/src/dag/visitor.js.map +1 -1
  40. package/out/replicache/src/db/commit.d.ts +0 -1
  41. package/out/replicache/src/db/commit.d.ts.map +1 -1
  42. package/out/replicache/src/db/commit.js +5 -3
  43. package/out/replicache/src/db/commit.js.map +1 -1
  44. package/out/replicache/src/db/read.js +1 -1
  45. package/out/replicache/src/db/read.js.map +1 -1
  46. package/out/replicache/src/db/rebase.js.map +1 -1
  47. package/out/replicache/src/db/write.d.ts +0 -2
  48. package/out/replicache/src/db/write.d.ts.map +1 -1
  49. package/out/replicache/src/db/write.js +5 -2
  50. package/out/replicache/src/db/write.js.map +1 -1
  51. package/out/replicache/src/deleted-clients.d.ts +0 -2
  52. package/out/replicache/src/deleted-clients.d.ts.map +1 -1
  53. package/out/replicache/src/deleted-clients.js +5 -3
  54. package/out/replicache/src/deleted-clients.js.map +1 -1
  55. package/out/replicache/src/expo-sqlite.js +1 -2
  56. package/out/replicache/src/frozen-json.d.ts +0 -1
  57. package/out/replicache/src/frozen-json.d.ts.map +1 -1
  58. package/out/replicache/src/frozen-json.js +1 -1
  59. package/out/replicache/src/frozen-json.js.map +1 -1
  60. package/out/replicache/src/get-default-puller.js +1 -1
  61. package/out/replicache/src/hash.js +1 -1
  62. package/out/replicache/src/hash.js.map +1 -1
  63. package/out/replicache/src/impl.js +1 -2
  64. package/out/replicache/src/index-defs.d.ts +0 -2
  65. package/out/replicache/src/index-defs.d.ts.map +1 -1
  66. package/out/replicache/src/index-defs.js +5 -3
  67. package/out/replicache/src/index-defs.js.map +1 -1
  68. package/out/replicache/src/kv/expo-sqlite/store.d.ts +0 -1
  69. package/out/replicache/src/kv/expo-sqlite/store.d.ts.map +1 -1
  70. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
  71. package/out/replicache/src/kv/idb-store.js +2 -2
  72. package/out/replicache/src/kv/idb-store.js.map +1 -1
  73. package/out/replicache/src/kv/mem-fallback-store.js +1 -1
  74. package/out/replicache/src/kv/mem-fallback-store.js.map +1 -1
  75. package/out/replicache/src/kv/mem-store.js.map +1 -1
  76. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -1
  77. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -1
  78. package/out/replicache/src/kv/read-impl.js.map +1 -1
  79. package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
  80. package/out/replicache/src/kv/sqlite-store.js +8 -4
  81. package/out/replicache/src/kv/sqlite-store.js.map +1 -1
  82. package/out/replicache/src/kv/throw-if-closed.d.ts +0 -3
  83. package/out/replicache/src/kv/throw-if-closed.d.ts.map +1 -1
  84. package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
  85. package/out/replicache/src/kv/write-impl-base.js +4 -1
  86. package/out/replicache/src/kv/write-impl-base.js.map +1 -1
  87. package/out/replicache/src/kv/write-impl.js.map +1 -1
  88. package/out/replicache/src/log-options.js +2 -1
  89. package/out/replicache/src/log-options.js.map +1 -1
  90. package/out/replicache/src/make-idb-name.js +1 -1
  91. package/out/replicache/src/new-client-channel.js +9 -7
  92. package/out/replicache/src/new-client-channel.js.map +1 -1
  93. package/out/replicache/src/on-persist-channel.js +1 -1
  94. package/out/replicache/src/on-persist-channel.js.map +1 -1
  95. package/out/replicache/src/op-sqlite.js +1 -2
  96. package/out/replicache/src/pending-mutations.js +2 -1
  97. package/out/replicache/src/pending-mutations.js.map +1 -1
  98. package/out/replicache/src/persist/client-gc.js +2 -2
  99. package/out/replicache/src/persist/client-gc.js.map +1 -1
  100. package/out/replicache/src/persist/client-group-gc.d.ts +0 -7
  101. package/out/replicache/src/persist/client-group-gc.d.ts.map +1 -1
  102. package/out/replicache/src/persist/client-group-gc.js +1 -1
  103. package/out/replicache/src/persist/client-group-gc.js.map +1 -1
  104. package/out/replicache/src/persist/client-groups.js +1 -1
  105. package/out/replicache/src/persist/client-groups.js.map +1 -1
  106. package/out/replicache/src/persist/clients.js +1 -1
  107. package/out/replicache/src/persist/clients.js.map +1 -1
  108. package/out/replicache/src/persist/collect-idb-databases.js +5 -4
  109. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -1
  110. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -1
  111. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -1
  112. package/out/replicache/src/persist/heartbeat.js +2 -2
  113. package/out/replicache/src/persist/heartbeat.js.map +1 -1
  114. package/out/replicache/src/persist/idb-databases-store.js +1 -1
  115. package/out/replicache/src/persist/idb-databases-store.js.map +1 -1
  116. package/out/replicache/src/persist/make-client-id.js +1 -1
  117. package/out/replicache/src/persist/make-client-id.js.map +1 -1
  118. package/out/replicache/src/persist/persist.js +3 -2
  119. package/out/replicache/src/persist/persist.js.map +1 -1
  120. package/out/replicache/src/persist/refresh.js +8 -5
  121. package/out/replicache/src/persist/refresh.js.map +1 -1
  122. package/out/replicache/src/process-scheduler.js +1 -1
  123. package/out/replicache/src/process-scheduler.js.map +1 -1
  124. package/out/replicache/src/replicache-impl.d.ts +2 -7
  125. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  126. package/out/replicache/src/replicache-impl.js +21 -18
  127. package/out/replicache/src/replicache-impl.js.map +1 -1
  128. package/out/replicache/src/scan-iterator.js.map +1 -1
  129. package/out/replicache/src/scan-options.js +7 -6
  130. package/out/replicache/src/scan-options.js.map +1 -1
  131. package/out/replicache/src/sqlite.js +1 -2
  132. package/out/replicache/src/subscriptions.js +1 -1
  133. package/out/replicache/src/subscriptions.js.map +1 -1
  134. package/out/replicache/src/sync/diff.js +3 -1
  135. package/out/replicache/src/sync/diff.js.map +1 -1
  136. package/out/replicache/src/sync/ids.js.map +1 -1
  137. package/out/replicache/src/sync/patch.d.ts +0 -5
  138. package/out/replicache/src/sync/patch.d.ts.map +1 -1
  139. package/out/replicache/src/sync/patch.js +2 -4
  140. package/out/replicache/src/sync/patch.js.map +1 -1
  141. package/out/replicache/src/sync/pull.d.ts +0 -1
  142. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  143. package/out/replicache/src/sync/pull.js +3 -1
  144. package/out/replicache/src/sync/pull.js.map +1 -1
  145. package/out/replicache/src/sync/push.d.ts +2 -1
  146. package/out/replicache/src/sync/push.d.ts.map +1 -1
  147. package/out/replicache/src/sync/push.js.map +1 -1
  148. package/out/replicache/src/sync/request-id.js +1 -1
  149. package/out/replicache/src/sync/request-id.js.map +1 -1
  150. package/out/replicache/src/transactions.js +1 -1
  151. package/out/replicache/src/transactions.js.map +1 -1
  152. package/out/replicache/src/types.d.ts +2 -1
  153. package/out/replicache/src/types.d.ts.map +1 -1
  154. package/out/shared/src/arrays.js +4 -1
  155. package/out/shared/src/arrays.js.map +1 -1
  156. package/out/shared/src/asserts.d.ts +0 -5
  157. package/out/shared/src/asserts.d.ts.map +1 -1
  158. package/out/shared/src/asserts.js.map +1 -1
  159. package/out/shared/src/bigint-json.d.ts +9 -0
  160. package/out/shared/src/bigint-json.d.ts.map +1 -1
  161. package/out/shared/src/bigint-json.js +27 -2
  162. package/out/shared/src/bigint-json.js.map +1 -1
  163. package/out/shared/src/broadcast-channel.js +1 -1
  164. package/out/shared/src/browser-env.d.ts +0 -17
  165. package/out/shared/src/browser-env.d.ts.map +1 -1
  166. package/out/shared/src/browser-env.js.map +1 -1
  167. package/out/shared/src/btree-set.js +11 -8
  168. package/out/shared/src/btree-set.js.map +1 -1
  169. package/out/shared/src/cache.js.map +1 -1
  170. package/out/shared/src/config.js +1 -1
  171. package/out/shared/src/custom-key-map.js.map +1 -1
  172. package/out/shared/src/custom-key-set.js.map +1 -1
  173. package/out/shared/src/deep-clone.d.ts +0 -1
  174. package/out/shared/src/deep-clone.d.ts.map +1 -1
  175. package/out/shared/src/deep-clone.js.map +1 -1
  176. package/out/shared/src/document-visible.js +1 -1
  177. package/out/shared/src/document-visible.js.map +1 -1
  178. package/out/shared/src/dotenv.js.map +1 -1
  179. package/out/shared/src/error.js +1 -1
  180. package/out/shared/src/error.js.map +1 -1
  181. package/out/shared/src/expand.d.ts +0 -3
  182. package/out/shared/src/expand.d.ts.map +1 -1
  183. package/out/shared/src/hash.js +2 -2
  184. package/out/shared/src/hash.js.map +1 -1
  185. package/out/shared/src/immutable.d.ts +1 -1
  186. package/out/shared/src/immutable.d.ts.map +1 -1
  187. package/out/shared/src/iterables.d.ts +0 -1
  188. package/out/shared/src/iterables.d.ts.map +1 -1
  189. package/out/shared/src/iterables.js.map +1 -1
  190. package/out/shared/src/json-schema.js.map +1 -1
  191. package/out/shared/src/json.js.map +1 -1
  192. package/out/shared/src/logging-test-utils.js.map +1 -1
  193. package/out/shared/src/logging.js +1 -1
  194. package/out/shared/src/logging.js.map +1 -1
  195. package/out/shared/src/navigator.js +1 -1
  196. package/out/shared/src/options-types.d.ts +1 -1
  197. package/out/shared/src/options-types.d.ts.map +1 -1
  198. package/out/shared/src/options.d.ts +2 -3
  199. package/out/shared/src/options.d.ts.map +1 -1
  200. package/out/shared/src/options.js +8 -11
  201. package/out/shared/src/options.js.map +1 -1
  202. package/out/shared/src/promise-race.js +1 -1
  203. package/out/shared/src/promise-race.js.map +1 -1
  204. package/out/shared/src/queue.js +1 -1
  205. package/out/shared/src/queue.js.map +1 -1
  206. package/out/shared/src/record-proxy.js.map +1 -1
  207. package/out/shared/src/resolved-promises.d.ts +0 -4
  208. package/out/shared/src/resolved-promises.d.ts.map +1 -1
  209. package/out/shared/src/resolved-promises.js +0 -1
  210. package/out/shared/src/resolved-promises.js.map +1 -1
  211. package/out/shared/src/resolver.d.ts +9 -0
  212. package/out/shared/src/resolver.d.ts.map +1 -0
  213. package/out/shared/src/resolver.js +6 -0
  214. package/out/shared/src/resolver.js.map +1 -0
  215. package/out/shared/src/ring-buffer.js.map +1 -1
  216. package/out/shared/src/size-of-value.js +7 -10
  217. package/out/shared/src/size-of-value.js.map +1 -1
  218. package/out/shared/src/sleep.js +1 -1
  219. package/out/shared/src/sleep.js.map +1 -1
  220. package/out/shared/src/sorted-entries.js.map +1 -1
  221. package/out/shared/src/tdigest-schema.js.map +1 -1
  222. package/out/shared/src/tdigest.d.ts +0 -1
  223. package/out/shared/src/tdigest.d.ts.map +1 -1
  224. package/out/shared/src/tdigest.js.map +1 -1
  225. package/out/shared/src/valita.js +1 -1
  226. package/out/shared/src/valita.js.map +1 -1
  227. package/out/z2s/src/compiler.d.ts +1 -1
  228. package/out/z2s/src/compiler.d.ts.map +1 -1
  229. package/out/z2s/src/compiler.js +344 -9
  230. package/out/z2s/src/compiler.js.map +1 -1
  231. package/out/z2s/src/sql.d.ts +9 -5
  232. package/out/z2s/src/sql.d.ts.map +1 -1
  233. package/out/z2s/src/sql.js +58 -11
  234. package/out/z2s/src/sql.js.map +1 -1
  235. package/out/zero/package.js +210 -189
  236. package/out/zero/package.js.map +1 -1
  237. package/out/zero/src/adapters/drizzle.js +1 -2
  238. package/out/zero/src/adapters/kysely.js +1 -2
  239. package/out/zero/src/adapters/pg.js +1 -2
  240. package/out/zero/src/adapters/postgresjs.js +1 -2
  241. package/out/zero/src/adapters/prisma.js +1 -2
  242. package/out/zero/src/analyze.js +1 -2
  243. package/out/zero/src/bindings.js +4 -4
  244. package/out/zero/src/change-protocol/v0.js +1 -2
  245. package/out/zero/src/expo-sqlite.js +1 -2
  246. package/out/zero/src/op-sqlite.js +1 -2
  247. package/out/zero/src/react-native.js.map +1 -1
  248. package/out/zero/src/sqlite.js +1 -2
  249. package/out/zero/src/zero-cache-dev.js +11 -10
  250. package/out/zero/src/zero-cache-dev.js.map +1 -1
  251. package/out/zero/src/zero-out.js +2 -1
  252. package/out/zero/src/zero-out.js.map +1 -1
  253. package/out/zero-cache/src/auth/auth.js +1 -1
  254. package/out/zero-cache/src/auth/auth.js.map +1 -1
  255. package/out/zero-cache/src/auth/jwt.js +4 -1
  256. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  257. package/out/zero-cache/src/auth/load-permissions.js +1 -1
  258. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  259. package/out/zero-cache/src/auth/read-authorizer.js +3 -2
  260. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  261. package/out/zero-cache/src/auth/write-authorizer.js +16 -20
  262. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  263. package/out/zero-cache/src/config/network.js +1 -1
  264. package/out/zero-cache/src/config/network.js.map +1 -1
  265. package/out/zero-cache/src/config/server-context.js.map +1 -1
  266. package/out/zero-cache/src/config/zero-config.d.ts +23 -11
  267. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  268. package/out/zero-cache/src/config/zero-config.js +51 -4
  269. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  270. package/out/zero-cache/src/custom/fetch.js +1 -1
  271. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  272. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  273. package/out/zero-cache/src/db/create.js +1 -1
  274. package/out/zero-cache/src/db/create.js.map +1 -1
  275. package/out/zero-cache/src/db/index-predicate.js.map +1 -1
  276. package/out/zero-cache/src/db/lite-tables.d.ts +2 -2
  277. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  278. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  279. package/out/zero-cache/src/db/migration-lite.js +1 -1
  280. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  281. package/out/zero-cache/src/db/migration.js +5 -3
  282. package/out/zero-cache/src/db/migration.js.map +1 -1
  283. package/out/zero-cache/src/db/pg-copy-binary.js +4 -3
  284. package/out/zero-cache/src/db/pg-copy-binary.js.map +1 -1
  285. package/out/zero-cache/src/db/pg-copy.js +0 -1
  286. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  287. package/out/zero-cache/src/db/pg-to-lite.js +1 -1
  288. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  289. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  290. package/out/zero-cache/src/db/run-transaction.js.map +1 -1
  291. package/out/zero-cache/src/db/specs.d.ts +3 -4
  292. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  293. package/out/zero-cache/src/db/specs.js +1 -1
  294. package/out/zero-cache/src/db/specs.js.map +1 -1
  295. package/out/zero-cache/src/db/sqlite-corruption.js.map +1 -1
  296. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  297. package/out/zero-cache/src/db/statements.js +9 -2
  298. package/out/zero-cache/src/db/statements.js.map +1 -1
  299. package/out/zero-cache/src/db/transaction-pool.js +6 -4
  300. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  301. package/out/zero-cache/src/db/warmup.js.map +1 -1
  302. package/out/zero-cache/src/observability/events.js +1 -1
  303. package/out/zero-cache/src/observability/events.js.map +1 -1
  304. package/out/zero-cache/src/observability/log-throttle.js.map +1 -1
  305. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  306. package/out/zero-cache/src/scripts/deploy-permissions.js +5 -3
  307. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  308. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  309. package/out/zero-cache/src/server/anonymous-otel-start.js +2 -1
  310. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  311. package/out/zero-cache/src/server/change-streamer.js +35 -11
  312. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  313. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  314. package/out/zero-cache/src/server/logging.js +1 -1
  315. package/out/zero-cache/src/server/logging.js.map +1 -1
  316. package/out/zero-cache/src/server/main.js +2 -2
  317. package/out/zero-cache/src/server/main.js.map +1 -1
  318. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  319. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  320. package/out/zero-cache/src/server/reaper.js +2 -2
  321. package/out/zero-cache/src/server/reaper.js.map +1 -1
  322. package/out/zero-cache/src/server/replicator.js +1 -1
  323. package/out/zero-cache/src/server/replicator.js.map +1 -1
  324. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  325. package/out/zero-cache/src/server/runner/run-worker.js +12 -8
  326. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  327. package/out/zero-cache/src/server/runner/runtime.js +2 -1
  328. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  329. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts +9 -1
  330. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  331. package/out/zero-cache/src/server/runner/zero-dispatcher.js +29 -2
  332. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  333. package/out/zero-cache/src/server/shadow-syncer.js +1 -1
  334. package/out/zero-cache/src/server/shadow-syncer.js.map +1 -1
  335. package/out/zero-cache/src/server/slot-keeper.js.map +1 -1
  336. package/out/zero-cache/src/server/syncer-assigner.js.map +1 -1
  337. package/out/zero-cache/src/server/syncer.js +10 -5
  338. package/out/zero-cache/src/server/syncer.js.map +1 -1
  339. package/out/zero-cache/src/server/worker-dispatcher.js +1 -1
  340. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  341. package/out/zero-cache/src/server/worker-urls.js.map +1 -1
  342. package/out/zero-cache/src/services/analyze.js +2 -2
  343. package/out/zero-cache/src/services/analyze.js.map +1 -1
  344. package/out/zero-cache/src/services/change-source/common/backfill-manager.js +3 -3
  345. package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
  346. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +1 -1
  347. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
  348. package/out/zero-cache/src/services/change-source/common/init-cleanup.js.map +1 -1
  349. package/out/zero-cache/src/services/change-source/common/replica-restore.js.map +1 -1
  350. package/out/zero-cache/src/services/change-source/common/replica-schema.js +4 -4
  351. package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
  352. package/out/zero-cache/src/services/change-source/custom/change-source.js +3 -3
  353. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  354. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +1 -1
  355. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +3 -3
  356. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
  357. package/out/zero-cache/src/services/change-source/pg/change-source-init.js +52 -27
  358. package/out/zero-cache/src/services/change-source/pg/change-source-init.js.map +1 -1
  359. package/out/zero-cache/src/services/change-source/pg/change-source.js +70 -15
  360. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  361. package/out/zero-cache/src/services/change-source/pg/decommission.js +2 -1
  362. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  363. package/out/zero-cache/src/services/change-source/pg/fork-request.js +54 -0
  364. package/out/zero-cache/src/services/change-source/pg/fork-request.js.map +1 -0
  365. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +9 -7
  366. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  367. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  368. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  369. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +4 -3
  370. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  371. package/out/zero-cache/src/services/change-source/pg/lsn.d.ts +0 -2
  372. package/out/zero-cache/src/services/change-source/pg/lsn.d.ts.map +1 -1
  373. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  374. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.js +2 -2
  375. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.js.map +1 -1
  376. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.js +1 -1
  377. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.js.map +1 -1
  378. package/out/zero-cache/src/services/change-source/pg/replication-slots.js +9 -3
  379. package/out/zero-cache/src/services/change-source/pg/replication-slots.js.map +1 -1
  380. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +0 -12
  381. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -1
  382. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +5 -3
  383. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  384. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts +1 -1
  385. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts.map +1 -1
  386. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.js +13 -12
  387. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.js.map +1 -1
  388. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  389. package/out/zero-cache/src/services/change-source/pg/schema/published.js +2 -2
  390. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  391. package/out/zero-cache/src/services/change-source/pg/schema/replica-stage-enum.js.map +1 -1
  392. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +9 -6
  393. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  394. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts +0 -1
  395. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts.map +1 -1
  396. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +1 -1
  397. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  398. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.js +1 -1
  399. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.js.map +1 -1
  400. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  401. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  402. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +1 -0
  403. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
  404. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  405. package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts +3 -0
  406. package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts.map +1 -1
  407. package/out/zero-cache/src/services/change-source/protocol/current/status.js +2 -1
  408. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  409. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -0
  410. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  411. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  412. package/out/zero-cache/src/services/change-source/protocol/current.js +1 -1
  413. package/out/zero-cache/src/services/change-source/protocol/mod.js +1 -2
  414. package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.js.map +1 -1
  415. package/out/zero-cache/src/services/change-streamer/backfill-state.js +1 -1
  416. package/out/zero-cache/src/services/change-streamer/backfill-state.js.map +1 -1
  417. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.js +6 -6
  418. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.js.map +1 -1
  419. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +56 -21
  420. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  421. package/out/zero-cache/src/services/change-streamer/broadcast.js +2 -2
  422. package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -1
  423. package/out/zero-cache/src/services/change-streamer/change-log-codec.js +2 -3
  424. package/out/zero-cache/src/services/change-streamer/change-log-codec.js.map +1 -1
  425. package/out/zero-cache/src/services/change-streamer/change-log-initializer.js +3 -3
  426. package/out/zero-cache/src/services/change-streamer/change-log-initializer.js.map +1 -1
  427. package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.js.map +1 -1
  428. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +4 -2
  429. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  430. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +49 -30
  431. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  432. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  433. package/out/zero-cache/src/services/change-streamer/drain-tracker.js +1 -1
  434. package/out/zero-cache/src/services/change-streamer/drain-tracker.js.map +1 -1
  435. package/out/zero-cache/src/services/change-streamer/forwarder.js +11 -10
  436. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  437. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.js +81 -12
  438. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.js.map +1 -1
  439. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js +4 -4
  440. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js.map +1 -1
  441. package/out/zero-cache/src/services/change-streamer/replica-poller.js +2 -2
  442. package/out/zero-cache/src/services/change-streamer/replica-poller.js.map +1 -1
  443. package/out/zero-cache/src/services/change-streamer/restore-admission.js +12 -1
  444. package/out/zero-cache/src/services/change-streamer/restore-admission.js.map +1 -1
  445. package/out/zero-cache/src/services/change-streamer/schema/init.js +1 -1
  446. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  447. package/out/zero-cache/src/services/change-streamer/schema/tables.js +1 -1
  448. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  449. package/out/zero-cache/src/services/change-streamer/server-start-metrics.js +42 -0
  450. package/out/zero-cache/src/services/change-streamer/server-start-metrics.js.map +1 -0
  451. package/out/zero-cache/src/services/change-streamer/snapshot-message.js +1 -2
  452. package/out/zero-cache/src/services/change-streamer/snapshot-message.js.map +1 -1
  453. package/out/zero-cache/src/services/change-streamer/snapshot-reservations.js.map +1 -1
  454. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js +2 -2
  455. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js.map +1 -1
  456. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.js +2 -2
  457. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.js.map +1 -1
  458. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.js.map +1 -1
  459. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.js.map +1 -1
  460. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.js +4 -6
  461. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.js.map +1 -1
  462. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.js +3 -5
  463. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.js.map +1 -1
  464. package/out/zero-cache/src/services/change-streamer/storer.js +4 -4
  465. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  466. package/out/zero-cache/src/services/change-streamer/subscribe.js.map +1 -1
  467. package/out/zero-cache/src/services/change-streamer/subscriber.js +8 -7
  468. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  469. package/out/zero-cache/src/services/change-streamer/upstream-acker.js +0 -1
  470. package/out/zero-cache/src/services/change-streamer/upstream-acker.js.map +1 -1
  471. package/out/zero-cache/src/services/heapz.js +2 -1
  472. package/out/zero-cache/src/services/heapz.js.map +1 -1
  473. package/out/zero-cache/src/services/http-service.d.ts +8 -2
  474. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  475. package/out/zero-cache/src/services/http-service.js +19 -5
  476. package/out/zero-cache/src/services/http-service.js.map +1 -1
  477. package/out/zero-cache/src/services/life-cycle.d.ts +19 -0
  478. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  479. package/out/zero-cache/src/services/life-cycle.js +55 -3
  480. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  481. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +4 -2
  482. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  483. package/out/zero-cache/src/services/litestream/commands.js +4 -4
  484. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  485. package/out/zero-cache/src/services/litestream/litestream-checkpointer.js +2 -2
  486. package/out/zero-cache/src/services/litestream/litestream-checkpointer.js.map +1 -1
  487. package/out/zero-cache/src/services/litestream/litestream-controller.js.map +1 -1
  488. package/out/zero-cache/src/services/litestream/metrics.js.map +1 -1
  489. package/out/zero-cache/src/services/litestream/restore-progress.js.map +1 -1
  490. package/out/zero-cache/src/services/mutagen/mutagen.js +3 -4
  491. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  492. package/out/zero-cache/src/services/mutagen/pusher.js +61 -17
  493. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  494. package/out/zero-cache/src/services/plannerz.d.ts +4 -12
  495. package/out/zero-cache/src/services/plannerz.d.ts.map +1 -1
  496. package/out/zero-cache/src/services/plannerz.js +6 -7
  497. package/out/zero-cache/src/services/plannerz.js.map +1 -1
  498. package/out/zero-cache/src/services/profz.js +5 -3
  499. package/out/zero-cache/src/services/profz.js.map +1 -1
  500. package/out/zero-cache/src/services/replicator/change-log-cookies.js.map +1 -1
  501. package/out/zero-cache/src/services/replicator/change-log-db.js +4 -3
  502. package/out/zero-cache/src/services/replicator/change-log-db.js.map +1 -1
  503. package/out/zero-cache/src/services/replicator/change-log-stream-writer.js.map +1 -1
  504. package/out/zero-cache/src/services/replicator/change-processor.js +1 -1
  505. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  506. package/out/zero-cache/src/services/replicator/drain-handler.js +1 -1
  507. package/out/zero-cache/src/services/replicator/drain-handler.js.map +1 -1
  508. package/out/zero-cache/src/services/replicator/incremental-sync.js +4 -4
  509. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  510. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  511. package/out/zero-cache/src/services/replicator/replication-status.js +4 -3
  512. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  513. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  514. package/out/zero-cache/src/services/replicator/reporter/recorder.js +2 -2
  515. package/out/zero-cache/src/services/replicator/reporter/recorder.js.map +1 -1
  516. package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts +2 -11
  517. package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts.map +1 -1
  518. package/out/zero-cache/src/services/replicator/reporter/report-schema.js.map +1 -1
  519. package/out/zero-cache/src/services/replicator/schema/backfilling.js +2 -2
  520. package/out/zero-cache/src/services/replicator/schema/backfilling.js.map +1 -1
  521. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +19 -17
  522. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  523. package/out/zero-cache/src/services/replicator/schema/change-log.js +31 -15
  524. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  525. package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts +0 -7
  526. package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts.map +1 -1
  527. package/out/zero-cache/src/services/replicator/schema/column-metadata.js +1 -1
  528. package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
  529. package/out/zero-cache/src/services/replicator/schema/replication-state.js +10 -7
  530. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  531. package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -1
  532. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.js +1 -1
  533. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.js.map +1 -1
  534. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.js +1 -1
  535. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.js.map +1 -1
  536. package/out/zero-cache/src/services/replicator/write-worker-client.js +2 -2
  537. package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -1
  538. package/out/zero-cache/src/services/replicator/write-worker.js +3 -3
  539. package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -1
  540. package/out/zero-cache/src/services/run-ast.js +1 -1
  541. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  542. package/out/zero-cache/src/services/runner.js.map +1 -1
  543. package/out/zero-cache/src/services/running-state.js +1 -1
  544. package/out/zero-cache/src/services/running-state.js.map +1 -1
  545. package/out/zero-cache/src/services/shadow-sync/shadow-sync-service.js.map +1 -1
  546. package/out/zero-cache/src/services/statz.js +4 -3
  547. package/out/zero-cache/src/services/statz.js.map +1 -1
  548. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +2 -2
  549. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  550. package/out/zero-cache/src/services/view-syncer/advancement-metrics.js.map +1 -1
  551. package/out/zero-cache/src/services/view-syncer/batch-pacer.js.map +1 -1
  552. package/out/zero-cache/src/services/view-syncer/client-handler.js +71 -24
  553. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  554. package/out/zero-cache/src/services/view-syncer/client-schema.js +46 -6
  555. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  556. package/out/zero-cache/src/services/view-syncer/connection-context-manager.js.map +1 -1
  557. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +2 -2
  558. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  559. package/out/zero-cache/src/services/view-syncer/cvr-store.js +12 -7
  560. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  561. package/out/zero-cache/src/services/view-syncer/cvr.js +12 -4
  562. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  563. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.js +1 -1
  564. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.js.map +1 -1
  565. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +2 -2
  566. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  567. package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.js.map +1 -1
  568. package/out/zero-cache/src/services/view-syncer/hydration-budget.js.map +1 -1
  569. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.js +2 -2
  570. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.js.map +1 -1
  571. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +6 -4
  572. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  573. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +112 -21
  574. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  575. package/out/zero-cache/src/services/view-syncer/plan-warnings.js.map +1 -1
  576. package/out/zero-cache/src/services/view-syncer/push-cost.js.map +1 -1
  577. package/out/zero-cache/src/services/view-syncer/push-cutoff.js.map +1 -1
  578. package/out/zero-cache/src/services/view-syncer/query-covering.js +2 -2
  579. package/out/zero-cache/src/services/view-syncer/query-covering.js.map +1 -1
  580. package/out/zero-cache/src/services/view-syncer/query-shape.js.map +1 -1
  581. package/out/zero-cache/src/services/view-syncer/query-stats.js +1 -1
  582. package/out/zero-cache/src/services/view-syncer/query-stats.js.map +1 -1
  583. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +2 -2
  584. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  585. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  586. package/out/zero-cache/src/services/view-syncer/schema/types.js +2 -16
  587. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  588. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.js +7 -1
  589. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.js.map +1 -1
  590. package/out/zero-cache/src/services/view-syncer/snapshotter.js +13 -9
  591. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  592. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  593. package/out/zero-cache/src/services/view-syncer/view-syncer.js +52 -28
  594. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  595. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  596. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  597. package/out/zero-cache/src/types/lite.d.ts +0 -1
  598. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  599. package/out/zero-cache/src/types/lite.js +1 -1
  600. package/out/zero-cache/src/types/lite.js.map +1 -1
  601. package/out/zero-cache/src/types/pg-data-type.js +1 -1
  602. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  603. package/out/zero-cache/src/types/pg-types.d.ts +0 -40
  604. package/out/zero-cache/src/types/pg-types.d.ts.map +1 -1
  605. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  606. package/out/zero-cache/src/types/pg.js +6 -4
  607. package/out/zero-cache/src/types/pg.js.map +1 -1
  608. package/out/zero-cache/src/types/poke-chunk.d.ts +0 -1
  609. package/out/zero-cache/src/types/poke-chunk.d.ts.map +1 -1
  610. package/out/zero-cache/src/types/poke-chunk.js +1 -1
  611. package/out/zero-cache/src/types/poke-chunk.js.map +1 -1
  612. package/out/zero-cache/src/types/processes.js +5 -5
  613. package/out/zero-cache/src/types/processes.js.map +1 -1
  614. package/out/zero-cache/src/types/profiler.js +1 -1
  615. package/out/zero-cache/src/types/profiler.js.map +1 -1
  616. package/out/zero-cache/src/types/row-key.d.ts +0 -5
  617. package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
  618. package/out/zero-cache/src/types/row-key.js +8 -1
  619. package/out/zero-cache/src/types/row-key.js.map +1 -1
  620. package/out/zero-cache/src/types/sql.js.map +1 -1
  621. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  622. package/out/zero-cache/src/types/streams.js +11 -10
  623. package/out/zero-cache/src/types/streams.js.map +1 -1
  624. package/out/zero-cache/src/types/strings.js.map +1 -1
  625. package/out/zero-cache/src/types/subscription.js +1 -1
  626. package/out/zero-cache/src/types/subscription.js.map +1 -1
  627. package/out/zero-cache/src/types/timeout.js +1 -1
  628. package/out/zero-cache/src/types/websocket-handoff.d.ts +4 -7
  629. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  630. package/out/zero-cache/src/types/websocket-handoff.js +16 -2
  631. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  632. package/out/zero-cache/src/types/ws.d.ts +2 -1
  633. package/out/zero-cache/src/types/ws.d.ts.map +1 -1
  634. package/out/zero-cache/src/types/ws.js.map +1 -1
  635. package/out/zero-cache/src/workers/connection.d.ts +1 -2
  636. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  637. package/out/zero-cache/src/workers/connection.js +10 -8
  638. package/out/zero-cache/src/workers/connection.js.map +1 -1
  639. package/out/zero-cache/src/workers/mutator.js +1 -1
  640. package/out/zero-cache/src/workers/mutator.js.map +1 -1
  641. package/out/zero-cache/src/workers/rehome.d.ts +15 -0
  642. package/out/zero-cache/src/workers/rehome.d.ts.map +1 -0
  643. package/out/zero-cache/src/workers/rehome.js +36 -0
  644. package/out/zero-cache/src/workers/rehome.js.map +1 -0
  645. package/out/zero-cache/src/workers/replicator.js +5 -4
  646. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  647. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +9 -1
  648. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  649. package/out/zero-cache/src/workers/syncer.js +32 -7
  650. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  651. package/out/zero-client/src/client/active-clients-manager.d.ts.map +1 -1
  652. package/out/zero-client/src/client/active-clients-manager.js +2 -2
  653. package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
  654. package/out/zero-client/src/client/bindings.d.ts +1 -1
  655. package/out/zero-client/src/client/bindings.d.ts.map +1 -1
  656. package/out/zero-client/src/client/bindings.js +11 -11
  657. package/out/zero-client/src/client/connection-manager.js +1 -1
  658. package/out/zero-client/src/client/connection-manager.js.map +1 -1
  659. package/out/zero-client/src/client/connection.js +1 -1
  660. package/out/zero-client/src/client/connection.js.map +1 -1
  661. package/out/zero-client/src/client/context.d.ts +7 -1
  662. package/out/zero-client/src/client/context.d.ts.map +1 -1
  663. package/out/zero-client/src/client/context.js +7 -0
  664. package/out/zero-client/src/client/context.js.map +1 -1
  665. package/out/zero-client/src/client/crud-impl.d.ts.map +1 -1
  666. package/out/zero-client/src/client/crud-impl.js +172 -3
  667. package/out/zero-client/src/client/crud-impl.js.map +1 -1
  668. package/out/zero-client/src/client/crud.d.ts +2 -8
  669. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  670. package/out/zero-client/src/client/crud.js.map +1 -1
  671. package/out/zero-client/src/client/custom.d.ts +0 -2
  672. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  673. package/out/zero-client/src/client/custom.js +42 -3
  674. package/out/zero-client/src/client/custom.js.map +1 -1
  675. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -1
  676. package/out/zero-client/src/client/enable-analytics.d.ts +0 -1
  677. package/out/zero-client/src/client/enable-analytics.d.ts.map +1 -1
  678. package/out/zero-client/src/client/enable-analytics.js +1 -0
  679. package/out/zero-client/src/client/enable-analytics.js.map +1 -1
  680. package/out/zero-client/src/client/error.d.ts +4 -5
  681. package/out/zero-client/src/client/error.d.ts.map +1 -1
  682. package/out/zero-client/src/client/error.js.map +1 -1
  683. package/out/zero-client/src/client/inspector/client-group.js.map +1 -1
  684. package/out/zero-client/src/client/inspector/client.js.map +1 -1
  685. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +1 -1
  686. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -1
  687. package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
  688. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
  689. package/out/zero-client/src/client/inspector/query.js.map +1 -1
  690. package/out/zero-client/src/client/ivm-branch.d.ts +62 -2
  691. package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
  692. package/out/zero-client/src/client/ivm-branch.js +153 -34
  693. package/out/zero-client/src/client/ivm-branch.js.map +1 -1
  694. package/out/zero-client/src/client/keys.d.ts +33 -1
  695. package/out/zero-client/src/client/keys.d.ts.map +1 -1
  696. package/out/zero-client/src/client/keys.js +49 -7
  697. package/out/zero-client/src/client/keys.js.map +1 -1
  698. package/out/zero-client/src/client/log-options.js.map +1 -1
  699. package/out/zero-client/src/client/make-replicache-mutators.js +5 -3
  700. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
  701. package/out/zero-client/src/client/metrics.js +3 -5
  702. package/out/zero-client/src/client/metrics.js.map +1 -1
  703. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  704. package/out/zero-client/src/client/mutation-tracker.js +1 -1
  705. package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
  706. package/out/zero-client/src/client/mutator-proxy.js.map +1 -1
  707. package/out/zero-client/src/client/options.d.ts +0 -4
  708. package/out/zero-client/src/client/options.d.ts.map +1 -1
  709. package/out/zero-client/src/client/options.js.map +1 -1
  710. package/out/zero-client/src/client/query-manager.js +2 -2
  711. package/out/zero-client/src/client/query-manager.js.map +1 -1
  712. package/out/zero-client/src/client/reload-error-handler.js +4 -3
  713. package/out/zero-client/src/client/reload-error-handler.js.map +1 -1
  714. package/out/zero-client/src/client/replicache-types.d.ts +3 -2
  715. package/out/zero-client/src/client/replicache-types.d.ts.map +1 -1
  716. package/out/zero-client/src/client/version.js +1 -1
  717. package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -2
  718. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  719. package/out/zero-client/src/client/zero-poke-handler.js +30 -2
  720. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
  721. package/out/zero-client/src/client/zero-rep.d.ts +1 -1
  722. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  723. package/out/zero-client/src/client/zero-rep.js +2 -15
  724. package/out/zero-client/src/client/zero-rep.js.map +1 -1
  725. package/out/zero-client/src/client/zero.d.ts +1 -5
  726. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  727. package/out/zero-client/src/client/zero.js +21 -13
  728. package/out/zero-client/src/client/zero.js.map +1 -1
  729. package/out/zero-client/src/mod.d.ts +3 -3
  730. package/out/zero-client/src/mod.d.ts.map +1 -1
  731. package/out/zero-client/src/mod.js +23 -23
  732. package/out/zero-client/src/types/client-state.d.ts +0 -6
  733. package/out/zero-client/src/types/client-state.d.ts.map +1 -1
  734. package/out/zero-client/src/util/nanoid.js.map +1 -1
  735. package/out/zero-permissions/src/permissions.d.ts +1 -12
  736. package/out/zero-permissions/src/permissions.d.ts.map +1 -1
  737. package/out/zero-permissions/src/permissions.js +3 -3
  738. package/out/zero-permissions/src/permissions.js.map +1 -1
  739. package/out/zero-pg/src/mod.js +9 -9
  740. package/out/zero-protocol/src/aggregate-table.d.ts +15 -0
  741. package/out/zero-protocol/src/aggregate-table.d.ts.map +1 -0
  742. package/out/zero-protocol/src/aggregate-table.js +5 -0
  743. package/out/zero-protocol/src/aggregate-table.js.map +1 -0
  744. package/out/zero-protocol/src/analyze-query-result.js +1 -1
  745. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  746. package/out/zero-protocol/src/application-error.js.map +1 -1
  747. package/out/zero-protocol/src/ast.d.ts +140 -8
  748. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  749. package/out/zero-protocol/src/ast.js +264 -28
  750. package/out/zero-protocol/src/ast.js.map +1 -1
  751. package/out/zero-protocol/src/change-desired-queries.d.ts +0 -20
  752. package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
  753. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  754. package/out/zero-protocol/src/client-schema.d.ts +2 -5
  755. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  756. package/out/zero-protocol/src/client-schema.js.map +1 -1
  757. package/out/zero-protocol/src/close-connection.d.ts +0 -8
  758. package/out/zero-protocol/src/close-connection.d.ts.map +1 -1
  759. package/out/zero-protocol/src/close-connection.js.map +1 -1
  760. package/out/zero-protocol/src/connect.d.ts +0 -12
  761. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  762. package/out/zero-protocol/src/connect.js.map +1 -1
  763. package/out/zero-protocol/src/custom-queries.d.ts +3 -17
  764. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  765. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  766. package/out/zero-protocol/src/data.d.ts +0 -1
  767. package/out/zero-protocol/src/data.d.ts.map +1 -1
  768. package/out/zero-protocol/src/data.js +3 -1
  769. package/out/zero-protocol/src/data.js.map +1 -1
  770. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  771. package/out/zero-protocol/src/down.d.ts +27 -27
  772. package/out/zero-protocol/src/down.js.map +1 -1
  773. package/out/zero-protocol/src/error.js.map +1 -1
  774. package/out/zero-protocol/src/inspect-down.d.ts +1 -3
  775. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  776. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  777. package/out/zero-protocol/src/inspect-up.d.ts +0 -28
  778. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  779. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  780. package/out/zero-protocol/src/mutate-server.d.ts +0 -21
  781. package/out/zero-protocol/src/mutate-server.d.ts.map +1 -1
  782. package/out/zero-protocol/src/mutate-server.js.map +1 -1
  783. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  784. package/out/zero-protocol/src/mutation-type-enum.d.ts +0 -1
  785. package/out/zero-protocol/src/mutation-type-enum.d.ts.map +1 -1
  786. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  787. package/out/zero-protocol/src/mutation.d.ts +2 -4
  788. package/out/zero-protocol/src/mutation.d.ts.map +1 -1
  789. package/out/zero-protocol/src/mutation.js.map +1 -1
  790. package/out/zero-protocol/src/mutations-patch.d.ts +0 -33
  791. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
  792. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  793. package/out/zero-protocol/src/ping.d.ts +0 -2
  794. package/out/zero-protocol/src/ping.d.ts.map +1 -1
  795. package/out/zero-protocol/src/ping.js.map +1 -1
  796. package/out/zero-protocol/src/poke.d.ts +3 -2
  797. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  798. package/out/zero-protocol/src/poke.js +1 -1
  799. package/out/zero-protocol/src/poke.js.map +1 -1
  800. package/out/zero-protocol/src/pong.d.ts +0 -2
  801. package/out/zero-protocol/src/pong.d.ts.map +1 -1
  802. package/out/zero-protocol/src/pong.js.map +1 -1
  803. package/out/zero-protocol/src/primary-key.js.map +1 -1
  804. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  805. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  806. package/out/zero-protocol/src/protocol-version.js +1 -0
  807. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  808. package/out/zero-protocol/src/pull.d.ts +2 -7
  809. package/out/zero-protocol/src/pull.d.ts.map +1 -1
  810. package/out/zero-protocol/src/pull.js.map +1 -1
  811. package/out/zero-protocol/src/push.d.ts +1 -3
  812. package/out/zero-protocol/src/push.d.ts.map +1 -1
  813. package/out/zero-protocol/src/push.js.map +1 -1
  814. package/out/zero-protocol/src/queries-patch.d.ts +0 -16
  815. package/out/zero-protocol/src/queries-patch.d.ts.map +1 -1
  816. package/out/zero-protocol/src/queries-patch.js +1 -1
  817. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  818. package/out/zero-protocol/src/query-hash-visitor.d.ts.map +1 -1
  819. package/out/zero-protocol/src/query-hash-visitor.js +38 -0
  820. package/out/zero-protocol/src/query-hash-visitor.js.map +1 -1
  821. package/out/zero-protocol/src/query-hash.js +2 -2
  822. package/out/zero-protocol/src/query-server.d.ts +2 -41
  823. package/out/zero-protocol/src/query-server.d.ts.map +1 -1
  824. package/out/zero-protocol/src/query-server.js.map +1 -1
  825. package/out/zero-protocol/src/row-patch.js.map +1 -1
  826. package/out/zero-protocol/src/up.d.ts +60 -60
  827. package/out/zero-protocol/src/up.js +1 -1
  828. package/out/zero-protocol/src/up.js.map +1 -1
  829. package/out/zero-protocol/src/update-auth.js.map +1 -1
  830. package/out/zero-protocol/src/version.d.ts +0 -1
  831. package/out/zero-protocol/src/version.d.ts.map +1 -1
  832. package/out/zero-protocol/src/version.js.map +1 -1
  833. package/out/zero-react/src/bindings.js +11 -11
  834. package/out/zero-react/src/mod.js +5 -5
  835. package/out/zero-react/src/use-query.d.ts +3 -1
  836. package/out/zero-react/src/use-query.d.ts.map +1 -1
  837. package/out/zero-react/src/use-query.js +6 -4
  838. package/out/zero-react/src/use-query.js.map +1 -1
  839. package/out/zero-react/src/zero-provider.d.ts +1 -1
  840. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  841. package/out/zero-react/src/zero-provider.js +2 -1
  842. package/out/zero-react/src/zero-provider.js.map +1 -1
  843. package/out/zero-react/src/zero.js +23 -23
  844. package/out/zero-schema/src/builder/relationship-builder.d.ts +0 -2
  845. package/out/zero-schema/src/builder/relationship-builder.d.ts.map +1 -1
  846. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
  847. package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
  848. package/out/zero-schema/src/builder/schema-builder.js +5 -2
  849. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  850. package/out/zero-schema/src/builder/table-builder.d.ts +1 -1
  851. package/out/zero-schema/src/builder/table-builder.d.ts.map +1 -1
  852. package/out/zero-schema/src/builder/table-builder.js +1 -1
  853. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  854. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  855. package/out/zero-schema/src/name-mapper.d.ts.map +1 -1
  856. package/out/zero-schema/src/name-mapper.js +14 -9
  857. package/out/zero-schema/src/name-mapper.js.map +1 -1
  858. package/out/zero-schema/src/schema-config.d.ts +0 -1
  859. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  860. package/out/zero-schema/src/schema-config.js +1 -1
  861. package/out/zero-schema/src/schema-config.js.map +1 -1
  862. package/out/zero-schema/src/table-schema.d.ts +3 -11
  863. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  864. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  865. package/out/zero-server/src/adapters/kysely.js.map +1 -1
  866. package/out/zero-server/src/adapters/pg.js.map +1 -1
  867. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  868. package/out/zero-server/src/adapters/prisma.js.map +1 -1
  869. package/out/zero-server/src/closable-db-transaction.js.map +1 -1
  870. package/out/zero-server/src/custom.js +2 -2
  871. package/out/zero-server/src/custom.js.map +1 -1
  872. package/out/zero-server/src/mod.js +8 -8
  873. package/out/zero-server/src/process-mutations.js.map +1 -1
  874. package/out/zero-server/src/push-processor.js.map +1 -1
  875. package/out/zero-server/src/queries/process-queries.d.ts +2 -4
  876. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  877. package/out/zero-server/src/queries/process-queries.js +2 -1
  878. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  879. package/out/zero-server/src/schema.d.ts.map +1 -1
  880. package/out/zero-server/src/schema.js +20 -9
  881. package/out/zero-server/src/schema.js.map +1 -1
  882. package/out/zero-server/src/zql-database.js.map +1 -1
  883. package/out/zero-solid/src/bindings.js +11 -11
  884. package/out/zero-solid/src/mod.js +5 -5
  885. package/out/zero-solid/src/solid-view.d.ts +0 -2
  886. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  887. package/out/zero-solid/src/solid-view.js +4 -4
  888. package/out/zero-solid/src/solid-view.js.map +1 -1
  889. package/out/zero-solid/src/use-connection-state.js +2 -1
  890. package/out/zero-solid/src/use-connection-state.js.map +1 -1
  891. package/out/zero-solid/src/use-query.js.map +1 -1
  892. package/out/zero-solid/src/use-zero-online.js +2 -1
  893. package/out/zero-solid/src/use-zero-online.js.map +1 -1
  894. package/out/zero-solid/src/use-zero.js +3 -2
  895. package/out/zero-solid/src/use-zero.js.map +1 -1
  896. package/out/zero-solid/src/zero.js +23 -23
  897. package/out/zero-types/src/format.d.ts +13 -0
  898. package/out/zero-types/src/format.d.ts.map +1 -1
  899. package/out/zero-types/src/format.js.map +1 -1
  900. package/out/zero-types/src/name-mapper.d.ts +16 -1
  901. package/out/zero-types/src/name-mapper.d.ts.map +1 -1
  902. package/out/zero-types/src/name-mapper.js +12 -0
  903. package/out/zero-types/src/name-mapper.js.map +1 -1
  904. package/out/zero-types/src/schema-value.d.ts +5 -2
  905. package/out/zero-types/src/schema-value.d.ts.map +1 -1
  906. package/out/zero-types/src/schema-value.js +15 -0
  907. package/out/zero-types/src/schema-value.js.map +1 -0
  908. package/out/zero-types/src/schema.d.ts +1 -1
  909. package/out/zero-types/src/schema.d.ts.map +1 -1
  910. package/out/zero-types/src/server-schema.d.ts +18 -0
  911. package/out/zero-types/src/server-schema.d.ts.map +1 -1
  912. package/out/zql/src/builder/builder.d.ts +124 -9
  913. package/out/zql/src/builder/builder.d.ts.map +1 -1
  914. package/out/zql/src/builder/builder.js +295 -23
  915. package/out/zql/src/builder/builder.js.map +1 -1
  916. package/out/zql/src/builder/correlated-predicate-pushdown.js.map +1 -1
  917. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  918. package/out/zql/src/builder/filter.d.ts +1 -2
  919. package/out/zql/src/builder/filter.d.ts.map +1 -1
  920. package/out/zql/src/builder/filter.js +41 -3
  921. package/out/zql/src/builder/filter.js.map +1 -1
  922. package/out/zql/src/builder/like.js +0 -1
  923. package/out/zql/src/builder/like.js.map +1 -1
  924. package/out/zql/src/error.d.ts +0 -5
  925. package/out/zql/src/error.d.ts.map +1 -1
  926. package/out/zql/src/error.js.map +1 -1
  927. package/out/zql/src/ivm/aggregate.d.ts +188 -0
  928. package/out/zql/src/ivm/aggregate.d.ts.map +1 -0
  929. package/out/zql/src/ivm/aggregate.js +470 -0
  930. package/out/zql/src/ivm/aggregate.js.map +1 -0
  931. package/out/zql/src/ivm/array-view.d.ts +1 -1
  932. package/out/zql/src/ivm/array-view.d.ts.map +1 -1
  933. package/out/zql/src/ivm/array-view.js +3 -3
  934. package/out/zql/src/ivm/array-view.js.map +1 -1
  935. package/out/zql/src/ivm/cap.d.ts +1 -1
  936. package/out/zql/src/ivm/cap.d.ts.map +1 -1
  937. package/out/zql/src/ivm/cap.js +14 -6
  938. package/out/zql/src/ivm/cap.js.map +1 -1
  939. package/out/zql/src/ivm/constraint.d.ts +0 -7
  940. package/out/zql/src/ivm/constraint.d.ts.map +1 -1
  941. package/out/zql/src/ivm/constraint.js +3 -2
  942. package/out/zql/src/ivm/constraint.js.map +1 -1
  943. package/out/zql/src/ivm/data.d.ts +15 -2
  944. package/out/zql/src/ivm/data.d.ts.map +1 -1
  945. package/out/zql/src/ivm/data.js +15 -1
  946. package/out/zql/src/ivm/data.js.map +1 -1
  947. package/out/zql/src/ivm/deferred-input.js +1 -1
  948. package/out/zql/src/ivm/deferred-input.js.map +1 -1
  949. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  950. package/out/zql/src/ivm/exists.js +32 -22
  951. package/out/zql/src/ivm/exists.js.map +1 -1
  952. package/out/zql/src/ivm/fan-in.js +1 -1
  953. package/out/zql/src/ivm/fan-in.js.map +1 -1
  954. package/out/zql/src/ivm/fan-out.js.map +1 -1
  955. package/out/zql/src/ivm/filter-operators.d.ts +5 -0
  956. package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
  957. package/out/zql/src/ivm/filter-operators.js +1 -1
  958. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  959. package/out/zql/src/ivm/filter-push.js.map +1 -1
  960. package/out/zql/src/ivm/filter.js.map +1 -1
  961. package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
  962. package/out/zql/src/ivm/flipped-join.js +4 -5
  963. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  964. package/out/zql/src/ivm/group-by.d.ts +98 -0
  965. package/out/zql/src/ivm/group-by.d.ts.map +1 -0
  966. package/out/zql/src/ivm/group-by.js +384 -0
  967. package/out/zql/src/ivm/group-by.js.map +1 -0
  968. package/out/zql/src/ivm/join-index-tap.js.map +1 -1
  969. package/out/zql/src/ivm/join-index.d.ts.map +1 -1
  970. package/out/zql/src/ivm/join-index.js +2 -1
  971. package/out/zql/src/ivm/join-index.js.map +1 -1
  972. package/out/zql/src/ivm/join-utils.d.ts.map +1 -1
  973. package/out/zql/src/ivm/join-utils.js +13 -14
  974. package/out/zql/src/ivm/join-utils.js.map +1 -1
  975. package/out/zql/src/ivm/join.d.ts.map +1 -1
  976. package/out/zql/src/ivm/join.js +7 -4
  977. package/out/zql/src/ivm/join.js.map +1 -1
  978. package/out/zql/src/ivm/lift-field.d.ts +54 -0
  979. package/out/zql/src/ivm/lift-field.d.ts.map +1 -0
  980. package/out/zql/src/ivm/lift-field.js +168 -0
  981. package/out/zql/src/ivm/lift-field.js.map +1 -0
  982. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +1 -1
  983. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  984. package/out/zql/src/ivm/memory-source.d.ts +3 -2
  985. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  986. package/out/zql/src/ivm/memory-source.js +36 -27
  987. package/out/zql/src/ivm/memory-source.js.map +1 -1
  988. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  989. package/out/zql/src/ivm/operator.d.ts +6 -0
  990. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  991. package/out/zql/src/ivm/operator.js +2 -2
  992. package/out/zql/src/ivm/operator.js.map +1 -1
  993. package/out/zql/src/ivm/push-accumulated.js +1 -2
  994. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  995. package/out/zql/src/ivm/schema.d.ts +1 -0
  996. package/out/zql/src/ivm/schema.d.ts.map +1 -1
  997. package/out/zql/src/ivm/skip-yields.js.map +1 -1
  998. package/out/zql/src/ivm/skip.js.map +1 -1
  999. package/out/zql/src/ivm/source.d.ts +21 -0
  1000. package/out/zql/src/ivm/source.d.ts.map +1 -1
  1001. package/out/zql/src/ivm/source.js.map +1 -1
  1002. package/out/zql/src/ivm/stream.d.ts +0 -1
  1003. package/out/zql/src/ivm/stream.d.ts.map +1 -1
  1004. package/out/zql/src/ivm/stream.js.map +1 -1
  1005. package/out/zql/src/ivm/take-gate.js.map +1 -1
  1006. package/out/zql/src/ivm/take.d.ts.map +1 -1
  1007. package/out/zql/src/ivm/take.js +8 -9
  1008. package/out/zql/src/ivm/take.js.map +1 -1
  1009. package/out/zql/src/ivm/union-fan-in.d.ts +0 -1
  1010. package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
  1011. package/out/zql/src/ivm/union-fan-in.js +1 -1
  1012. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  1013. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  1014. package/out/zql/src/ivm/view-apply-change.d.ts +8 -33
  1015. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  1016. package/out/zql/src/ivm/view-apply-change.js +23 -3
  1017. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  1018. package/out/zql/src/mutate/crud.d.ts +1 -3
  1019. package/out/zql/src/mutate/crud.d.ts.map +1 -1
  1020. package/out/zql/src/mutate/crud.js +2 -1
  1021. package/out/zql/src/mutate/crud.js.map +1 -1
  1022. package/out/zql/src/mutate/mutator-registry.d.ts +1 -1
  1023. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -1
  1024. package/out/zql/src/mutate/mutator-registry.js.map +1 -1
  1025. package/out/zql/src/mutate/mutator.d.ts +1 -1
  1026. package/out/zql/src/mutate/mutator.d.ts.map +1 -1
  1027. package/out/zql/src/mutate/mutator.js.map +1 -1
  1028. package/out/zql/src/planner/planner-builder.js +1 -1
  1029. package/out/zql/src/planner/planner-builder.js.map +1 -1
  1030. package/out/zql/src/planner/planner-connection.js.map +1 -1
  1031. package/out/zql/src/planner/planner-debug.d.ts +11 -10
  1032. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  1033. package/out/zql/src/planner/planner-debug.js +4 -0
  1034. package/out/zql/src/planner/planner-debug.js.map +1 -1
  1035. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1036. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1037. package/out/zql/src/planner/planner-filter.js.map +1 -1
  1038. package/out/zql/src/planner/planner-graph.js +1 -5
  1039. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1040. package/out/zql/src/planner/planner-join.js +1 -1
  1041. package/out/zql/src/planner/planner-join.js.map +1 -1
  1042. package/out/zql/src/planner/planner-node.d.ts +0 -1
  1043. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  1044. package/out/zql/src/planner/planner-node.js.map +1 -1
  1045. package/out/zql/src/planner/planner-source.js.map +1 -1
  1046. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1047. package/out/zql/src/planner/planner-warnings.d.ts +3 -3
  1048. package/out/zql/src/planner/planner-warnings.d.ts.map +1 -1
  1049. package/out/zql/src/planner/planner-warnings.js.map +1 -1
  1050. package/out/zql/src/query/create-builder.js +2 -1
  1051. package/out/zql/src/query/create-builder.js.map +1 -1
  1052. package/out/zql/src/query/expression.d.ts +49 -24
  1053. package/out/zql/src/query/expression.d.ts.map +1 -1
  1054. package/out/zql/src/query/expression.js +62 -6
  1055. package/out/zql/src/query/expression.js.map +1 -1
  1056. package/out/zql/src/query/measure-push-operator.js +1 -1
  1057. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1058. package/out/zql/src/query/named.js +2 -1
  1059. package/out/zql/src/query/named.js.map +1 -1
  1060. package/out/zql/src/query/query-delegate-base.d.ts +8 -7
  1061. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  1062. package/out/zql/src/query/query-delegate-base.js +14 -6
  1063. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  1064. package/out/zql/src/query/query-delegate.d.ts +1 -4
  1065. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  1066. package/out/zql/src/query/query-impl.d.ts +17 -3
  1067. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1068. package/out/zql/src/query/query-impl.js +242 -9
  1069. package/out/zql/src/query/query-impl.js.map +1 -1
  1070. package/out/zql/src/query/query-internals.d.ts +0 -3
  1071. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  1072. package/out/zql/src/query/query-internals.js.map +1 -1
  1073. package/out/zql/src/query/query-registry.d.ts +5 -5
  1074. package/out/zql/src/query/query-registry.d.ts.map +1 -1
  1075. package/out/zql/src/query/query-registry.js +1 -1
  1076. package/out/zql/src/query/query-registry.js.map +1 -1
  1077. package/out/zql/src/query/query-transitions.js +1 -1
  1078. package/out/zql/src/query/query-transitions.js.map +1 -1
  1079. package/out/zql/src/query/query.d.ts +321 -20
  1080. package/out/zql/src/query/query.d.ts.map +1 -1
  1081. package/out/zql/src/query/runnable-query-impl.d.ts +1 -19
  1082. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
  1083. package/out/zql/src/query/runnable-query-impl.js +2 -1
  1084. package/out/zql/src/query/runnable-query-impl.js.map +1 -1
  1085. package/out/zql/src/query/static-query.js.map +1 -1
  1086. package/out/zql/src/query/ttl.d.ts +2 -3
  1087. package/out/zql/src/query/ttl.d.ts.map +1 -1
  1088. package/out/zql/src/query/ttl.js +8 -8
  1089. package/out/zql/src/query/ttl.js.map +1 -1
  1090. package/out/zql/src/query/validate-input.js.map +1 -1
  1091. package/out/zqlite/src/database-storage.js +195 -26
  1092. package/out/zqlite/src/database-storage.js.map +1 -1
  1093. package/out/zqlite/src/db.d.ts +47 -1
  1094. package/out/zqlite/src/db.d.ts.map +1 -1
  1095. package/out/zqlite/src/db.js +121 -21
  1096. package/out/zqlite/src/db.js.map +1 -1
  1097. package/out/zqlite/src/explain-queries.js.map +1 -1
  1098. package/out/zqlite/src/fetch-sql.d.ts +27 -0
  1099. package/out/zqlite/src/fetch-sql.d.ts.map +1 -0
  1100. package/out/zqlite/src/fetch-sql.js +112 -0
  1101. package/out/zqlite/src/fetch-sql.js.map +1 -0
  1102. package/out/zqlite/src/index-usage.js.map +1 -1
  1103. package/out/zqlite/src/internal/sql-inline.js.map +1 -1
  1104. package/out/zqlite/src/internal/sql.js.map +1 -1
  1105. package/out/zqlite/src/internal/statement-cache.d.ts +7 -0
  1106. package/out/zqlite/src/internal/statement-cache.d.ts.map +1 -1
  1107. package/out/zqlite/src/internal/statement-cache.js +11 -4
  1108. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1109. package/out/zqlite/src/mod.js +5 -5
  1110. package/out/zqlite/src/pending-delta.d.ts.map +1 -1
  1111. package/out/zqlite/src/pending-delta.js +4 -3
  1112. package/out/zqlite/src/pending-delta.js.map +1 -1
  1113. package/out/zqlite/src/query-builder.d.ts +23 -4
  1114. package/out/zqlite/src/query-builder.d.ts.map +1 -1
  1115. package/out/zqlite/src/query-builder.js +135 -19
  1116. package/out/zqlite/src/query-builder.js.map +1 -1
  1117. package/out/zqlite/src/query-delegate.js.map +1 -1
  1118. package/out/zqlite/src/resolve-scalar-subqueries.js +2 -5
  1119. package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
  1120. package/out/zqlite/src/sqlite-cost-model.js +3 -2
  1121. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1122. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
  1123. package/out/zqlite/src/table-source.d.ts +20 -3
  1124. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1125. package/out/zqlite/src/table-source.js +110 -42
  1126. package/out/zqlite/src/table-source.js.map +1 -1
  1127. package/package.json +39 -39
  1128. package/out/analyze-query/src/bin-analyze.d.ts +0 -2
  1129. package/out/analyze-query/src/bin-analyze.d.ts.map +0 -1
  1130. package/out/analyze-query/src/bin-analyze.js +0 -283
  1131. package/out/analyze-query/src/bin-analyze.js.map +0 -1
  1132. package/out/otel/src/maybe-time.d.ts +0 -3
  1133. package/out/otel/src/maybe-time.d.ts.map +0 -1
  1134. package/out/otel/src/maybe-time.js +0 -15
  1135. package/out/otel/src/maybe-time.js.map +0 -1
  1136. package/out/shared/src/cache.d.ts +0 -22
  1137. package/out/shared/src/cache.d.ts.map +0 -1
  1138. package/out/shared/src/custom-key-map.d.ts +0 -26
  1139. package/out/shared/src/custom-key-map.d.ts.map +0 -1
  1140. package/out/shared/src/custom-key-set.d.ts +0 -25
  1141. package/out/shared/src/custom-key-set.d.ts.map +0 -1
  1142. package/out/shared/src/logging-test-utils.d.ts +0 -12
  1143. package/out/shared/src/logging-test-utils.d.ts.map +0 -1
  1144. package/out/shared/src/sorted-entries.d.ts +0 -2
  1145. package/out/shared/src/sorted-entries.d.ts.map +0 -1
  1146. package/out/zero/src/analyze-query.d.ts +0 -3
  1147. package/out/zero/src/analyze-query.d.ts.map +0 -1
  1148. package/out/zero/src/analyze-query.js +0 -3
  1149. package/out/zero/src/server/change-streamer.d.ts +0 -2
  1150. package/out/zero/src/server/change-streamer.d.ts.map +0 -1
  1151. package/out/zero/src/server/main.d.ts +0 -2
  1152. package/out/zero/src/server/main.d.ts.map +0 -1
  1153. package/out/zero/src/server/reaper.d.ts +0 -2
  1154. package/out/zero/src/server/reaper.d.ts.map +0 -1
  1155. package/out/zero/src/server/replicator.d.ts +0 -2
  1156. package/out/zero/src/server/replicator.d.ts.map +0 -1
  1157. package/out/zero/src/server/syncer.d.ts +0 -2
  1158. package/out/zero/src/server/syncer.d.ts.map +0 -1
  1159. package/out/zero-cache/src/auth/jwt.d.ts +0 -12
  1160. package/out/zero-cache/src/auth/jwt.d.ts.map +0 -1
  1161. package/out/zero-cache/src/auth/load-permissions.d.ts +0 -17
  1162. package/out/zero-cache/src/auth/load-permissions.d.ts.map +0 -1
  1163. package/out/zero-cache/src/auth/write-authorizer.d.ts +0 -28
  1164. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +0 -1
  1165. package/out/zero-cache/src/config/server-context.d.ts +0 -16
  1166. package/out/zero-cache/src/config/server-context.d.ts.map +0 -1
  1167. package/out/zero-cache/src/custom/fetch.d.ts +0 -38
  1168. package/out/zero-cache/src/custom/fetch.d.ts.map +0 -1
  1169. package/out/zero-cache/src/custom/metrics.d.ts +0 -31
  1170. package/out/zero-cache/src/custom/metrics.d.ts.map +0 -1
  1171. package/out/zero-cache/src/custom-queries/transform-query.d.ts +0 -68
  1172. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +0 -1
  1173. package/out/zero-cache/src/db/create.d.ts +0 -12
  1174. package/out/zero-cache/src/db/create.d.ts.map +0 -1
  1175. package/out/zero-cache/src/db/delete-lite-db.d.ts +0 -2
  1176. package/out/zero-cache/src/db/delete-lite-db.d.ts.map +0 -1
  1177. package/out/zero-cache/src/db/index-predicate.d.ts +0 -4
  1178. package/out/zero-cache/src/db/index-predicate.d.ts.map +0 -1
  1179. package/out/zero-cache/src/db/migration-lite.d.ts +0 -78
  1180. package/out/zero-cache/src/db/migration-lite.d.ts.map +0 -1
  1181. package/out/zero-cache/src/db/migration.d.ts +0 -80
  1182. package/out/zero-cache/src/db/migration.d.ts.map +0 -1
  1183. package/out/zero-cache/src/db/pg-copy-binary.d.ts +0 -101
  1184. package/out/zero-cache/src/db/pg-copy-binary.d.ts.map +0 -1
  1185. package/out/zero-cache/src/db/pg-copy.d.ts +0 -30
  1186. package/out/zero-cache/src/db/pg-copy.d.ts.map +0 -1
  1187. package/out/zero-cache/src/db/pg-type-parser.d.ts +0 -15
  1188. package/out/zero-cache/src/db/pg-type-parser.d.ts.map +0 -1
  1189. package/out/zero-cache/src/db/transaction-pool.d.ts +0 -205
  1190. package/out/zero-cache/src/db/transaction-pool.d.ts.map +0 -1
  1191. package/out/zero-cache/src/db/warmup.d.ts +0 -4
  1192. package/out/zero-cache/src/db/warmup.d.ts.map +0 -1
  1193. package/out/zero-cache/src/observability/events.d.ts +0 -15
  1194. package/out/zero-cache/src/observability/events.d.ts.map +0 -1
  1195. package/out/zero-cache/src/observability/log-throttle.d.ts +0 -44
  1196. package/out/zero-cache/src/observability/log-throttle.d.ts.map +0 -1
  1197. package/out/zero-cache/src/server/anonymous-otel-start.d.ts +0 -21
  1198. package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +0 -1
  1199. package/out/zero-cache/src/server/change-streamer.d.ts +0 -3
  1200. package/out/zero-cache/src/server/change-streamer.d.ts.map +0 -1
  1201. package/out/zero-cache/src/server/inspector-delegate.d.ts +0 -71
  1202. package/out/zero-cache/src/server/inspector-delegate.d.ts.map +0 -1
  1203. package/out/zero-cache/src/server/main.d.ts +0 -3
  1204. package/out/zero-cache/src/server/main.d.ts.map +0 -1
  1205. package/out/zero-cache/src/server/otel-diag-logger.d.ts +0 -16
  1206. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +0 -1
  1207. package/out/zero-cache/src/server/otel-start.d.ts +0 -3
  1208. package/out/zero-cache/src/server/otel-start.d.ts.map +0 -1
  1209. package/out/zero-cache/src/server/priority-op.d.ts +0 -8
  1210. package/out/zero-cache/src/server/priority-op.d.ts.map +0 -1
  1211. package/out/zero-cache/src/server/reaper.d.ts +0 -3
  1212. package/out/zero-cache/src/server/reaper.d.ts.map +0 -1
  1213. package/out/zero-cache/src/server/replicator.d.ts +0 -10
  1214. package/out/zero-cache/src/server/replicator.d.ts.map +0 -1
  1215. package/out/zero-cache/src/server/slot-keeper.d.ts +0 -26
  1216. package/out/zero-cache/src/server/slot-keeper.d.ts.map +0 -1
  1217. package/out/zero-cache/src/server/syncer.d.ts +0 -3
  1218. package/out/zero-cache/src/server/syncer.d.ts.map +0 -1
  1219. package/out/zero-cache/src/services/analyze.d.ts +0 -9
  1220. package/out/zero-cache/src/services/analyze.d.ts.map +0 -1
  1221. package/out/zero-cache/src/services/change-source/change-source.d.ts +0 -32
  1222. package/out/zero-cache/src/services/change-source/change-source.d.ts.map +0 -1
  1223. package/out/zero-cache/src/services/change-source/common/backfill-manager.d.ts +0 -57
  1224. package/out/zero-cache/src/services/change-source/common/backfill-manager.d.ts.map +0 -1
  1225. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.d.ts +0 -55
  1226. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.d.ts.map +0 -1
  1227. package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts +0 -24
  1228. package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts.map +0 -1
  1229. package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts +0 -115
  1230. package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts.map +0 -1
  1231. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts +0 -14
  1232. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts.map +0 -1
  1233. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +0 -25
  1234. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +0 -1
  1235. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.d.ts +0 -14
  1236. package/out/zero-cache/src/services/change-source/pg/backfill-metadata.d.ts.map +0 -1
  1237. package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts +0 -36
  1238. package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts.map +0 -1
  1239. package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts +0 -65
  1240. package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts.map +0 -1
  1241. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +0 -115
  1242. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +0 -1
  1243. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +0 -155
  1244. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +0 -1
  1245. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +0 -17
  1246. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +0 -1
  1247. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.d.ts +0 -28
  1248. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.d.ts.map +0 -1
  1249. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.d.ts +0 -76
  1250. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.d.ts.map +0 -1
  1251. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts +0 -169
  1252. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts.map +0 -1
  1253. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts +0 -16
  1254. package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts.map +0 -1
  1255. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.d.ts +0 -15
  1256. package/out/zero-cache/src/services/change-source/pg/replication-slot-health.d.ts.map +0 -1
  1257. package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts +0 -127
  1258. package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts.map +0 -1
  1259. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts +0 -9
  1260. package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +0 -1
  1261. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts +0 -68
  1262. package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts.map +0 -1
  1263. package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts +0 -72
  1264. package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts.map +0 -1
  1265. package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts +0 -50
  1266. package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts.map +0 -1
  1267. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.d.ts +0 -14
  1268. package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.d.ts.map +0 -1
  1269. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +0 -18
  1270. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +0 -1
  1271. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts +0 -98
  1272. package/out/zero-cache/src/services/change-streamer/broadcast.d.ts.map +0 -1
  1273. package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts +0 -34
  1274. package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts.map +0 -1
  1275. package/out/zero-cache/src/services/change-streamer/change-log-compare-digest.d.ts +0 -34
  1276. package/out/zero-cache/src/services/change-streamer/change-log-compare-digest.d.ts.map +0 -1
  1277. package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts +0 -158
  1278. package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts.map +0 -1
  1279. package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.d.ts +0 -19
  1280. package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.d.ts.map +0 -1
  1281. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +0 -78
  1282. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +0 -1
  1283. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +0 -143
  1284. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +0 -1
  1285. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +0 -586
  1286. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +0 -1
  1287. package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts +0 -24
  1288. package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts.map +0 -1
  1289. package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts +0 -15
  1290. package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts.map +0 -1
  1291. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +0 -49
  1292. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +0 -1
  1293. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts +0 -53
  1294. package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts.map +0 -1
  1295. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.d.ts +0 -88
  1296. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.d.ts.map +0 -1
  1297. package/out/zero-cache/src/services/change-streamer/replica-poller.d.ts +0 -15
  1298. package/out/zero-cache/src/services/change-streamer/replica-poller.d.ts.map +0 -1
  1299. package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts +0 -243
  1300. package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts.map +0 -1
  1301. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +0 -6
  1302. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +0 -1
  1303. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +0 -152
  1304. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +0 -1
  1305. package/out/zero-cache/src/services/change-streamer/shard-sampling.d.ts +0 -11
  1306. package/out/zero-cache/src/services/change-streamer/shard-sampling.d.ts.map +0 -1
  1307. package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts +0 -92
  1308. package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts.map +0 -1
  1309. package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts +0 -36
  1310. package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts.map +0 -1
  1311. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +0 -22
  1312. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +0 -1
  1313. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.d.ts +0 -99
  1314. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.d.ts.map +0 -1
  1315. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.d.ts +0 -83
  1316. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.d.ts.map +0 -1
  1317. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.d.ts +0 -121
  1318. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.d.ts.map +0 -1
  1319. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.d.ts +0 -73
  1320. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.d.ts.map +0 -1
  1321. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.d.ts +0 -62
  1322. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.d.ts.map +0 -1
  1323. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts +0 -114
  1324. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts.map +0 -1
  1325. package/out/zero-cache/src/services/change-streamer/storer.d.ts +0 -276
  1326. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +0 -1
  1327. package/out/zero-cache/src/services/change-streamer/subscribe.d.ts +0 -485
  1328. package/out/zero-cache/src/services/change-streamer/subscribe.d.ts.map +0 -1
  1329. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +0 -194
  1330. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +0 -1
  1331. package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts +0 -52
  1332. package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts.map +0 -1
  1333. package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts +0 -57
  1334. package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts.map +0 -1
  1335. package/out/zero-cache/src/services/litestream/commands.d.ts +0 -77
  1336. package/out/zero-cache/src/services/litestream/commands.d.ts.map +0 -1
  1337. package/out/zero-cache/src/services/litestream/litestream-controller.d.ts +0 -78
  1338. package/out/zero-cache/src/services/litestream/litestream-controller.d.ts.map +0 -1
  1339. package/out/zero-cache/src/services/litestream/metrics.d.ts +0 -31
  1340. package/out/zero-cache/src/services/litestream/metrics.d.ts.map +0 -1
  1341. package/out/zero-cache/src/services/litestream/restore-progress.d.ts +0 -24
  1342. package/out/zero-cache/src/services/litestream/restore-progress.d.ts.map +0 -1
  1343. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +0 -40
  1344. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +0 -1
  1345. package/out/zero-cache/src/services/mutagen/pusher.d.ts +0 -63
  1346. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +0 -1
  1347. package/out/zero-cache/src/services/replicator/change-log-db.d.ts +0 -368
  1348. package/out/zero-cache/src/services/replicator/change-log-db.d.ts.map +0 -1
  1349. package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts +0 -56
  1350. package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts.map +0 -1
  1351. package/out/zero-cache/src/services/replicator/change-processor.d.ts +0 -37
  1352. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +0 -1
  1353. package/out/zero-cache/src/services/replicator/drain-handler.d.ts +0 -82
  1354. package/out/zero-cache/src/services/replicator/drain-handler.d.ts.map +0 -1
  1355. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +0 -25
  1356. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +0 -1
  1357. package/out/zero-cache/src/services/replicator/notifier.d.ts +0 -9
  1358. package/out/zero-cache/src/services/replicator/notifier.d.ts.map +0 -1
  1359. package/out/zero-cache/src/services/replicator/replication-status.d.ts +0 -71
  1360. package/out/zero-cache/src/services/replicator/replication-status.d.ts.map +0 -1
  1361. package/out/zero-cache/src/services/replicator/replicator.d.ts +0 -86
  1362. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +0 -1
  1363. package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts +0 -55
  1364. package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts.map +0 -1
  1365. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts +0 -132
  1366. package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts.map +0 -1
  1367. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.d.ts +0 -120
  1368. package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.d.ts.map +0 -1
  1369. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +0 -111
  1370. package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +0 -1
  1371. package/out/zero-cache/src/services/run-ast.d.ts +0 -39
  1372. package/out/zero-cache/src/services/run-ast.d.ts.map +0 -1
  1373. package/out/zero-cache/src/services/runner.d.ts +0 -19
  1374. package/out/zero-cache/src/services/runner.d.ts.map +0 -1
  1375. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts +0 -17
  1376. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts.map +0 -1
  1377. package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts +0 -26
  1378. package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts.map +0 -1
  1379. package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts +0 -79
  1380. package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts.map +0 -1
  1381. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +0 -79
  1382. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +0 -1
  1383. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts +0 -5
  1384. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +0 -1
  1385. package/out/zero-cache/src/services/view-syncer/connection-context-manager.d.ts +0 -184
  1386. package/out/zero-cache/src/services/view-syncer/connection-context-manager.d.ts.map +0 -1
  1387. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts +0 -22
  1388. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +0 -1
  1389. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +0 -128
  1390. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +0 -1
  1391. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +0 -294
  1392. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +0 -1
  1393. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts +0 -81
  1394. package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts.map +0 -1
  1395. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +0 -45
  1396. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +0 -1
  1397. package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.d.ts +0 -53
  1398. package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.d.ts.map +0 -1
  1399. package/out/zero-cache/src/services/view-syncer/hydration-budget.d.ts +0 -33
  1400. package/out/zero-cache/src/services/view-syncer/hydration-budget.d.ts.map +0 -1
  1401. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts +0 -51
  1402. package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts.map +0 -1
  1403. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +0 -34
  1404. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +0 -1
  1405. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +0 -296
  1406. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +0 -1
  1407. package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts +0 -7
  1408. package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts.map +0 -1
  1409. package/out/zero-cache/src/services/view-syncer/push-cost.d.ts +0 -132
  1410. package/out/zero-cache/src/services/view-syncer/push-cost.d.ts.map +0 -1
  1411. package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts +0 -55
  1412. package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts.map +0 -1
  1413. package/out/zero-cache/src/services/view-syncer/query-covering.d.ts +0 -28
  1414. package/out/zero-cache/src/services/view-syncer/query-covering.d.ts.map +0 -1
  1415. package/out/zero-cache/src/services/view-syncer/query-shape.d.ts +0 -25
  1416. package/out/zero-cache/src/services/view-syncer/query-shape.d.ts.map +0 -1
  1417. package/out/zero-cache/src/services/view-syncer/query-stats.d.ts +0 -89
  1418. package/out/zero-cache/src/services/view-syncer/query-stats.d.ts.map +0 -1
  1419. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +0 -90
  1420. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +0 -1
  1421. package/out/zero-cache/src/services/view-syncer/row-set-signature.d.ts +0 -17
  1422. package/out/zero-cache/src/services/view-syncer/row-set-signature.d.ts.map +0 -1
  1423. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +0 -86
  1424. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +0 -1
  1425. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts +0 -5
  1426. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +0 -1
  1427. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +0 -563
  1428. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +0 -1
  1429. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts +0 -95
  1430. package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts.map +0 -1
  1431. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +0 -412
  1432. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +0 -1
  1433. package/out/zero-cache/src/services/view-syncer/tracer.d.ts +0 -2
  1434. package/out/zero-cache/src/services/view-syncer/tracer.d.ts.map +0 -1
  1435. package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts +0 -10
  1436. package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts.map +0 -1
  1437. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +0 -133
  1438. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +0 -1
  1439. package/out/zero-cache/src/types/pg-patch.d.ts +0 -21
  1440. package/out/zero-cache/src/types/pg-patch.d.ts.map +0 -1
  1441. package/out/zero-cache/src/types/pg-versions.d.ts +0 -3
  1442. package/out/zero-cache/src/types/pg-versions.d.ts.map +0 -1
  1443. package/out/zero-cache/src/workers/replicator.d.ts +0 -57
  1444. package/out/zero-cache/src/workers/replicator.d.ts.map +0 -1
  1445. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts +0 -14
  1446. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +0 -1
  1447. package/out/zero-cache/src/workers/syncer.d.ts +0 -67
  1448. package/out/zero-cache/src/workers/syncer.d.ts.map +0 -1
  1449. package/out/zero-events/src/index.d.ts +0 -27
  1450. package/out/zero-events/src/index.d.ts.map +0 -1
  1451. package/out/zero-events/src/json.d.ts +0 -20
  1452. package/out/zero-events/src/json.d.ts.map +0 -1
  1453. package/out/zero-events/src/status.d.ts +0 -144
  1454. package/out/zero-events/src/status.d.ts.map +0 -1
  1455. package/out/zqlite/src/database-storage.d.ts +0 -24
  1456. package/out/zqlite/src/database-storage.d.ts.map +0 -1
  1457. package/out/zqlite/src/explain-queries.d.ts +0 -4
  1458. package/out/zqlite/src/explain-queries.d.ts.map +0 -1
  1459. package/out/zqlite/src/internal/sql-inline.d.ts +0 -13
  1460. package/out/zqlite/src/internal/sql-inline.d.ts.map +0 -1
  1461. package/out/zqlite/src/resolve-scalar-subqueries.d.ts +0 -72
  1462. package/out/zqlite/src/resolve-scalar-subqueries.d.ts.map +0 -1
  1463. package/out/zqlite/src/sqlite-cost-model.d.ts +0 -17
  1464. package/out/zqlite/src/sqlite-cost-model.d.ts.map +0 -1
  1465. package/out/zqlite/src/sqlite-stat-fanout.d.ts +0 -121
  1466. package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"query-delegate-base.js","names":[],"sources":["../../../../../zql/src/query/query-delegate-base.ts"],"sourcesContent":["import {resolver} from '@rocicorp/resolver';\nimport type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {ErroredQuery} from '../../../zero-protocol/src/custom-queries.ts';\nimport {\n hashOfAST,\n hashOfNameAndArgs,\n} from '../../../zero-protocol/src/query-hash.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {buildPipeline} from '../builder/builder.ts';\nimport {ArrayView} from '../ivm/array-view.ts';\nimport {DeferredInput} from '../ivm/deferred-input.ts';\nimport type {FilterInput} from '../ivm/filter-operators.ts';\nimport {MemoryStorage} from '../ivm/memory-storage.ts';\nimport type {Input, InputBase, Storage} from '../ivm/operator.ts';\nimport type {Source, SourceInput} from '../ivm/source.ts';\nimport type {Format, ViewFactory} from '../ivm/view.ts';\nimport type {MetricMap} from './metrics-delegate.ts';\nimport type {CustomQueryID} from './named.ts';\nimport type {\n AttachPipeline,\n CommitListener,\n GotCallback,\n QueryDelegate,\n} from './query-delegate.ts';\nimport {asQueryInternals, type QueryInternals} from './query-internals.ts';\nimport type {\n HumanReadable,\n MaterializeOptions,\n PreloadOptions,\n Query,\n RunOptions,\n} from './query.ts';\nimport {DEFAULT_PRELOAD_TTL_MS, DEFAULT_TTL_MS, type TTL} from './ttl.ts';\nimport type {TypedView} from './typed-view.ts';\n\n/**\n * Base class that provides default implementations for common QueryDelegate methods.\n * Subclasses can override specific methods as needed.\n */\nexport abstract class QueryDelegateBase implements QueryDelegate {\n /**\n * Default implementation that just calls applyViewUpdates synchronously.\n * Override if you need custom batching behavior (e.g., SolidJS).\n */\n batchViewUpdates<T>(applyViewUpdates: () => T): T {\n return applyViewUpdates();\n }\n\n /**\n * Default implementation returns MemoryStorage.\n * Override if you need custom storage.\n */\n createStorage(): Storage {\n return new MemoryStorage();\n }\n\n /**\n * Default implementation calls materializeImpl.\n * Override if you need custom materialization behavior.\n */\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: undefined,\n options?: MaterializeOptions,\n ): TypedView<HumanReadable<TReturn>>;\n\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T;\n\n /**\n * Materialize a query into a custom view using a provided factory function.\n */\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T;\n\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T {\n return materializeImpl(query, this, factory, options);\n }\n\n /**\n * Default implementation calls runImpl.\n * Override if you need custom query execution (e.g., TestPGQueryDelegate).\n */\n run<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n options?: RunOptions,\n ): Promise<HumanReadable<TReturn>> {\n return runImpl(query, this, options);\n }\n\n /**\n * Default implementation calls preloadImpl.\n * Override if you need custom preload behavior.\n */\n preload<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n options?: PreloadOptions,\n ): {\n cleanup: () => void;\n complete: Promise<void>;\n cached: Promise<void>;\n } {\n return preloadImpl(query, this, options);\n }\n\n /**\n * Default no-op implementation for decorateSourceInput.\n * Override if you need to wrap or instrument source inputs.\n */\n decorateSourceInput(input: SourceInput, _queryID: string): Input {\n return input;\n }\n\n /**\n * Default no-op implementation for decorateInput.\n * Override if you need to wrap or instrument inputs.\n */\n decorateInput(input: Input, _name: string): Input {\n return input;\n }\n\n /**\n * Default no-op implementation for decorateFilterInput.\n * Override if you need to wrap or instrument filter inputs.\n */\n decorateFilterInput(input: FilterInput, _name: string): FilterInput {\n return input;\n }\n\n /**\n * Default no-op implementation for addEdge.\n * Override if you need to track graph edges (e.g., visualization).\n */\n addEdge(_source: InputBase, _dest: InputBase): void {\n // No-op\n }\n\n /**\n * Default no-op implementation for addMetric.\n * Override if you need to collect metrics.\n */\n addMetric<K extends keyof MetricMap>(\n _metric: K,\n _value: number,\n ..._args: MetricMap[K]\n ): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to track server queries (e.g., ZeroContext, test delegates).\n */\n addServerQuery(_ast: AST, _ttl: TTL, _gotCallback?: GotCallback): () => void {\n return () => {};\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to track custom queries (e.g., ZeroContext, test delegates).\n */\n addCustomQuery(\n _ast: AST,\n _customQueryID: CustomQueryID,\n _ttl: TTL,\n _gotCallback?: GotCallback,\n ): () => void {\n return () => {};\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to handle query updates.\n */\n updateServerQuery(_ast: AST, _ttl: TTL): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to handle custom query updates.\n */\n updateCustomQuery(_customQueryID: CustomQueryID, _ttl: TTL): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to flush query changes.\n */\n flushQueryChanges(): void {\n // No-op\n }\n\n /**\n * Called when a transaction commits. Override to add custom behavior.\n * Default implementation returns a no-op cleanup function.\n */\n onTransactionCommit(_cb: CommitListener): () => void {\n return () => {};\n }\n\n /**\n * Validates run options. Override to add custom validation.\n * Default implementation is a no-op.\n */\n assertValidRunOptions(_options?: RunOptions): void {\n // No-op\n }\n\n abstract readonly defaultQueryComplete: boolean;\n\n /**\n * Default: pipelines can always be built immediately. Override (together\n * with `onPipelinesReady`) to defer pipeline construction.\n */\n get pipelinesReady(): boolean {\n return true;\n }\n\n onPipelinesReady(_attach: AttachPipeline): () => void {\n throw new Error(\n 'onPipelinesReady called on a delegate whose pipelines are always ready',\n );\n }\n\n // BuilderDelegate methods - must be implemented\n abstract getSource(name: string): Source | undefined;\n}\n\n// oxlint-disable-next-line require-await\nexport async function runImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n>(\n query: Query<TTable, TSchema, TReturn>,\n delegate: QueryDelegate,\n options?: RunOptions,\n): Promise<HumanReadable<TReturn>> {\n delegate.assertValidRunOptions(options);\n const v: TypedView<HumanReadable<TReturn>> = materializeImpl(\n query,\n delegate,\n undefined,\n {\n ttl: options?.ttl,\n },\n );\n if (options?.type === 'complete' || options?.type === 'cached') {\n // 'cached' is satisfied by a result the server confirmed on a previous\n // connection, or by this connection confirming it, whichever comes first.\n const acceptCached = options.type === 'cached';\n return new Promise(resolve => {\n v.addListener((data, type) => {\n if (type === 'complete' || (acceptCached && type === 'cached')) {\n v.destroy();\n resolve(data as HumanReadable<TReturn>);\n } else if (type === 'error') {\n v.destroy();\n resolve(Promise.reject(data));\n }\n });\n });\n }\n\n options?.type satisfies 'unknown' | undefined;\n\n // A snapshot of what the view holds right now. While the delegate's\n // pipelines are not ready the view is deferred and this is empty; 'unknown'\n // has never waited for the local data, so it does not wait for that either.\n const ret = v.data;\n v.destroy();\n return ret;\n}\n\nexport function preloadImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n>(\n query: Query<TTable, TSchema, TReturn>,\n delegate: QueryDelegate,\n options?: PreloadOptions,\n): {\n cleanup: () => void;\n complete: Promise<void>;\n cached: Promise<void>;\n} {\n const qi = asQueryInternals(query);\n const ttl = options?.ttl ?? DEFAULT_PRELOAD_TTL_MS;\n const completeResolver = resolver<void>();\n const cachedResolver = resolver<void>();\n const {promise: complete} = completeResolver;\n const {promise: cached} = cachedResolver;\n // A caller may ignore either promise; a query error must not surface as an\n // unhandled rejection through the one nobody awaits.\n void complete.catch(() => {});\n void cached.catch(() => {});\n const {customQueryID, ast} = qi;\n const gotCallback: GotCallback = (got, error) => {\n if (error) {\n // The query cannot be satisfied; neither waiter should hang.\n cachedResolver.reject(error);\n completeResolver.reject(error);\n return;\n }\n // Only a server confirmation on this connection resolves `complete`;\n // `cached` is also satisfied by one from a previous connection.\n if (got === true) {\n cachedResolver.resolve();\n completeResolver.resolve();\n } else if (got === 'cached') {\n cachedResolver.resolve();\n }\n };\n const cleanup = customQueryID\n ? delegate.addCustomQuery(ast, customQueryID, ttl, gotCallback)\n : delegate.addServerQuery(ast, ttl, gotCallback);\n if (delegate.defaultQueryComplete) {\n // A delegate whose results are complete from the start (a server-side\n // one) has no got callback to drive the waiters.\n cachedResolver.resolve();\n completeResolver.resolve();\n }\n return {\n cleanup,\n complete,\n cached,\n };\n}\n\nexport function materializeImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n>(\n query: Query<TTable, TSchema, TReturn>,\n delegate: QueryDelegate,\n factory: ViewFactory<\n TTable,\n TSchema,\n TReturn,\n T\n // oxlint-disable-next-line no-explicit-any\n > = arrayViewFactory as any,\n options?: MaterializeOptions,\n): T {\n let ttl: TTL = options?.ttl ?? DEFAULT_TTL_MS;\n\n const qi = asQueryInternals(query);\n const {ast, format, customQueryID} = qi;\n\n const queryID = customQueryID\n ? hashOfNameAndArgs(customQueryID.name, customQueryID.args)\n : hashOfAST(qi.ast);\n const queryCompleteResolver = resolver<true>();\n // When the delegate cannot build pipelines yet, the view starts over an\n // empty DeferredInput and is hydrated later. A view must not report\n // `complete` until it has actually been hydrated, so completion is gated on\n // both the server's \"got\" and the pipeline being attached.\n const deferPipeline = !delegate.pipelinesReady;\n let attached = !deferPipeline;\n // The last got report: `true` once the server confirmed the query on this\n // connection, `'cached'` while the store holds a previous connection's\n // confirmed result, `false` otherwise.\n let got: boolean | 'cached' = delegate.defaultQueryComplete;\n let queryComplete: boolean | ErroredQuery = attached && got === true;\n const updateTTL = customQueryID\n ? (newTTL: TTL) => delegate.updateCustomQuery(customQueryID, newTTL)\n : (newTTL: TTL) => delegate.updateServerQuery(ast, newTTL);\n\n // Completion, and the end-to-end metric, require both the server's \"got\"\n // and the pipeline being attached: until then the view is still empty.\n const maybeResolveComplete = () => {\n if (attached && got === true && queryComplete !== true) {\n delegate.addMetric(\n 'query-materialization-end-to-end',\n performance.now() - t0,\n queryID,\n ast,\n );\n queryComplete = true;\n queryCompleteResolver.resolve(true);\n }\n };\n\n // The view, seen as its optional hooks. Only views that implement\n // `markCached`/`unmarkCached` (e.g. ArrayView) surface 'cached'; for any\n // other factory the optional calls are no-ops. The registration path can\n // report 'cached' synchronously, before the view below exists, so this\n // stays undefined until then and the mark is applied afterwards.\n let viewHooks: OptionalViewHooks | undefined;\n\n // Like 'complete', 'cached' is a claim about the rows the view holds, so it\n // waits for the view to exist and its pipeline to be attached. Once the\n // server has confirmed the query on this connection, 'complete' supersedes\n // it and the mark is skipped.\n const maybeMarkCached = () => {\n // Only while the query is still incomplete: 'complete' supersedes the\n // mark, and an error that arrived before attach must not be preceded by\n // a 'cached' notification.\n if (attached && got === 'cached' && queryComplete === false) {\n viewHooks?.markCached?.();\n }\n };\n\n let destroyed = false;\n const gotCallback: GotCallback = (value, error) => {\n if (destroyed) {\n // The delegate may keep this callback registered for a while after\n // destroy (removals are deferred while mutations are pending); a dead\n // view must not be driven, nor its listeners fired.\n return;\n }\n if (error) {\n queryCompleteResolver.reject(error);\n queryComplete = error;\n return;\n }\n\n got = value;\n if (got === 'cached') {\n maybeMarkCached();\n } else if (got === false) {\n // The got key was deleted (eviction) before the server confirmed the\n // query on this connection.\n viewHooks?.unmarkCached?.();\n } else {\n maybeResolveComplete();\n }\n };\n\n let removeCommitObserver: (() => void) | undefined;\n let removePendingAttach: (() => void) | undefined;\n const onDestroy = () => {\n destroyed = true;\n removePendingAttach?.();\n removePendingAttach = undefined;\n input.destroy();\n removeCommitObserver?.();\n removeAddedQuery();\n };\n\n const t0 = performance.now();\n\n const removeAddedQuery = customQueryID\n ? delegate.addCustomQuery(ast, customQueryID, ttl, gotCallback)\n : delegate.addServerQuery(ast, ttl, gotCallback);\n\n const deferred = deferPipeline\n ? newDeferredInput(ast, delegate, queryID)\n : undefined;\n // No type annotation here: annotating this as `Input` widens it enough that\n // the view type loses the pipeline's concrete schema, and `Zero.run` then\n // stops rejecting a query built from a schema with legacy queries enabled\n // (custom.test.ts covers that rejection).\n const input = deferred ?? buildPipeline(ast, delegate, queryID);\n\n const view = delegate.batchViewUpdates(() =>\n (factory ?? arrayViewFactory)(\n query,\n input,\n format,\n onDestroy,\n cb => {\n removeCommitObserver = delegate.onTransactionCommit(cb);\n },\n queryComplete || queryCompleteResolver.promise,\n updateTTL,\n ),\n );\n\n if (!deferred) {\n delegate.addMetric(\n 'query-materialization-client',\n performance.now() - t0,\n queryID,\n );\n } else {\n // Registered after the factory ran so a throwing factory leaves nothing\n // behind.\n removePendingAttach = delegate.onPipelinesReady(() => {\n removePendingAttach = undefined;\n if (deferred.destroyed) {\n return () => {};\n }\n const t1 = performance.now();\n try {\n viewHooks?.holdData?.();\n deferred.attach();\n } catch (e) {\n // Surface the failure on this view and let the delegate decide how\n // to log it. Other pending pipelines are unaffected.\n const error: ErroredQuery = {\n error: 'app',\n id: queryID,\n name: customQueryID?.name ?? '',\n message: e instanceof Error ? e.message : String(e),\n };\n queryComplete = error;\n queryCompleteResolver.reject(error);\n throw e;\n }\n const hydrateMs = performance.now() - t1;\n // The view holds its rows now but must not say so yet: the delegate\n // releases every view hydrated in the same batch together.\n return () => {\n if (destroyed) {\n return;\n }\n attached = true;\n viewHooks?.releaseData?.();\n delegate.addMetric('query-materialization-client', hydrateMs, queryID);\n maybeResolveComplete();\n maybeMarkCached();\n };\n });\n }\n\n viewHooks = view as OptionalViewHooks;\n maybeMarkCached();\n\n return view as T;\n}\n\n/**\n * Creates the placeholder input for a query whose pipeline cannot be built yet.\n *\n * `Input.getSchema()` is unconditional, so the placeholder needs the schema up\n * front. It is captured by building a pipeline and immediately destroying it:\n * building only connects to the sources, while the indexes and rows -- the\n * expensive part this deferral exists to postpone -- are read on the first\n * fetch. Measured at ~5us against ~500us for a single 100 row fetch.\n *\n * Building here also means a query that cannot be built at all (an unknown\n * table, `not(exists())` on the client) still throws from `materialize()`,\n * as it did before hydration was deferred.\n */\nfunction newDeferredInput(\n ast: AST,\n delegate: QueryDelegate,\n queryID: string,\n): DeferredInput {\n const build = () => buildPipeline(ast, delegate, queryID);\n const probe = build();\n try {\n return new DeferredInput(probe.getSchema(), build);\n } finally {\n probe.destroy();\n }\n}\n\n/**\n * Optional methods `materialize` calls on a view when it has them (ArrayView\n * does). See {@link ViewFactory} for what a custom view needs to know.\n */\ntype OptionalViewHooks = {\n // Surface the 'cached' result type. Views without these never show it.\n markCached?: (() => void) | undefined;\n unmarkCached?: (() => void) | undefined;\n // Keep showing the current snapshot until `releaseData()` (or the next\n // flush), and notify nobody until that flush, so a deferred view does not\n // show rows ahead of its release.\n holdData?: (() => void) | undefined;\n // Called at the release: show the hydrated rows through `data` again, but\n // leave notifying listeners to the flush that follows all the releases.\n releaseData?: (() => void) | undefined;\n};\n\nfunction arrayViewFactory<\n TTable extends string,\n TSchema extends Schema,\n TReturn,\n>(\n _query: QueryInternals<TTable, TSchema, TReturn>,\n input: Input,\n format: Format,\n onDestroy: () => void,\n onTransactionCommit: (cb: () => void) => void,\n queryComplete: true | ErroredQuery | Promise<true>,\n updateTTL: (ttl: TTL) => void,\n): TypedView<HumanReadable<TReturn>> {\n const v = new ArrayView<HumanReadable<TReturn>>(\n input,\n format,\n queryComplete,\n updateTTL,\n );\n v.onDestroy = onDestroy;\n onTransactionCommit(() => v.flush());\n return v;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"query-delegate-base.js","names":["hashOfNameAndArgs"],"sources":["../../../../../zql/src/query/query-delegate-base.ts"],"sourcesContent":["import {resolver} from '../../../shared/src/resolver.ts';\nimport type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {ErroredQuery} from '../../../zero-protocol/src/custom-queries.ts';\nimport {\n hashOfAST,\n hashOfNameAndArgs,\n} from '../../../zero-protocol/src/query-hash.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {buildPipeline, groupViewInput} from '../builder/builder.ts';\nimport {ArrayView} from '../ivm/array-view.ts';\nimport {DeferredInput} from '../ivm/deferred-input.ts';\nimport type {FilterInput} from '../ivm/filter-operators.ts';\nimport {MemoryStorage} from '../ivm/memory-storage.ts';\nimport type {Input, InputBase, Storage} from '../ivm/operator.ts';\nimport type {Source, SourceInput} from '../ivm/source.ts';\nimport type {Format, ViewFactory} from '../ivm/view.ts';\nimport type {MetricMap} from './metrics-delegate.ts';\nimport type {CustomQueryID} from './named.ts';\nimport type {\n AttachPipeline,\n CommitListener,\n GotCallback,\n QueryDelegate,\n} from './query-delegate.ts';\nimport {asQueryInternals, type QueryInternals} from './query-internals.ts';\nimport type {\n HumanReadable,\n MaterializeOptions,\n PreloadOptions,\n Query,\n RunOptions,\n} from './query.ts';\nimport {DEFAULT_PRELOAD_TTL_MS, DEFAULT_TTL_MS, type TTL} from './ttl.ts';\nimport type {TypedView} from './typed-view.ts';\n\n/**\n * Base class that provides default implementations for common QueryDelegate methods.\n * Subclasses can override specific methods as needed.\n */\nexport abstract class QueryDelegateBase implements QueryDelegate {\n /**\n * Default implementation that just calls applyViewUpdates synchronously.\n * Override if you need custom batching behavior (e.g., SolidJS).\n */\n batchViewUpdates<T>(applyViewUpdates: () => T): T {\n return applyViewUpdates();\n }\n\n /**\n * Default implementation returns MemoryStorage.\n * Override if you need custom storage.\n */\n createStorage(): Storage {\n return new MemoryStorage();\n }\n\n /**\n * Default implementation calls materializeImpl.\n * Override if you need custom materialization behavior.\n */\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: undefined,\n options?: MaterializeOptions,\n ): TypedView<HumanReadable<TReturn>>;\n\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T;\n\n /**\n * Materialize a query into a custom view using a provided factory function.\n */\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T;\n\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T {\n return materializeImpl(query, this, factory, options);\n }\n\n /**\n * Default implementation calls runImpl.\n * Override if you need custom query execution (e.g., TestPGQueryDelegate).\n */\n run<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n options?: RunOptions,\n ): Promise<HumanReadable<TReturn>> {\n return runImpl(query, this, options);\n }\n\n /**\n * Default implementation calls preloadImpl.\n * Override if you need custom preload behavior.\n */\n preload<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n options?: PreloadOptions,\n ): {\n cleanup: () => void;\n complete: Promise<void>;\n cached: Promise<void>;\n } {\n return preloadImpl(query, this, options);\n }\n\n /**\n * Default no-op implementation for decorateSourceInput.\n * Override if you need to wrap or instrument source inputs.\n */\n decorateSourceInput(input: SourceInput, _queryID: string): Input {\n return input;\n }\n\n /**\n * Default no-op implementation for decorateInput.\n * Override if you need to wrap or instrument inputs.\n */\n decorateInput(input: Input, _name: string): Input {\n return input;\n }\n\n /**\n * Default no-op implementation for decorateFilterInput.\n * Override if you need to wrap or instrument filter inputs.\n */\n decorateFilterInput(input: FilterInput, _name: string): FilterInput {\n return input;\n }\n\n /**\n * Default no-op implementation for addEdge.\n * Override if you need to track graph edges (e.g., visualization).\n */\n addEdge(_source: InputBase, _dest: InputBase): void {\n // No-op\n }\n\n /**\n * Default no-op implementation for addMetric.\n * Override if you need to collect metrics.\n */\n addMetric<K extends keyof MetricMap>(\n _metric: K,\n _value: number,\n ..._args: MetricMap[K]\n ): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to track server queries (e.g., ZeroContext, test delegates).\n */\n addServerQuery(_ast: AST, _ttl: TTL, _gotCallback?: GotCallback): () => void {\n return () => {};\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to track custom queries (e.g., ZeroContext, test delegates).\n */\n addCustomQuery(\n _ast: AST,\n _customQueryID: CustomQueryID,\n _ttl: TTL,\n _gotCallback?: GotCallback,\n ): () => void {\n return () => {};\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to handle query updates.\n */\n updateServerQuery(_ast: AST, _ttl: TTL): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to handle custom query updates.\n */\n updateCustomQuery(_customQueryID: CustomQueryID, _ttl: TTL): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to flush query changes.\n */\n flushQueryChanges(): void {\n // No-op\n }\n\n /**\n * Called when a transaction commits. Override to add custom behavior.\n * Default implementation returns a no-op cleanup function.\n */\n onTransactionCommit(_cb: CommitListener): () => void {\n return () => {};\n }\n\n /**\n * Validates run options. Override to add custom validation.\n * Default implementation is a no-op.\n */\n assertValidRunOptions(_options?: RunOptions): void {\n // No-op\n }\n\n abstract readonly defaultQueryComplete: boolean;\n\n /**\n * Default: pipelines can always be built immediately. Override (together\n * with `onPipelinesReady`) to defer pipeline construction.\n */\n get pipelinesReady(): boolean {\n return true;\n }\n\n onPipelinesReady(_attach: AttachPipeline): () => void {\n throw new Error(\n 'onPipelinesReady called on a delegate whose pipelines are always ready',\n );\n }\n\n // BuilderDelegate methods - must be implemented\n abstract getSource(name: string): Source | undefined;\n}\n\n// oxlint-disable-next-line require-await\nasync function runImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n>(\n query: Query<TTable, TSchema, TReturn>,\n delegate: QueryDelegate,\n options?: RunOptions,\n): Promise<HumanReadable<TReturn>> {\n delegate.assertValidRunOptions(options);\n const v: TypedView<HumanReadable<TReturn>> = materializeImpl(\n query,\n delegate,\n undefined,\n {\n ttl: options?.ttl,\n },\n );\n if (options?.type === 'complete' || options?.type === 'cached') {\n // 'cached' is satisfied by a result the server confirmed on a previous\n // connection, or by this connection confirming it, whichever comes first.\n const acceptCached = options.type === 'cached';\n return new Promise(resolve => {\n v.addListener((data, type) => {\n if (type === 'complete' || (acceptCached && type === 'cached')) {\n v.destroy();\n resolve(data as HumanReadable<TReturn>);\n } else if (type === 'error') {\n v.destroy();\n resolve(Promise.reject(data));\n }\n });\n });\n }\n\n options?.type satisfies 'unknown' | undefined;\n\n // A snapshot of what the view holds right now. While the delegate's\n // pipelines are not ready the view is deferred and this is empty; 'unknown'\n // has never waited for the local data, so it does not wait for that either.\n const ret = v.data;\n v.destroy();\n return ret;\n}\n\nfunction preloadImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n>(\n query: Query<TTable, TSchema, TReturn>,\n delegate: QueryDelegate,\n options?: PreloadOptions,\n): {\n cleanup: () => void;\n complete: Promise<void>;\n cached: Promise<void>;\n} {\n const qi = asQueryInternals(query);\n const ttl = options?.ttl ?? DEFAULT_PRELOAD_TTL_MS;\n const completeResolver = resolver<void>();\n const cachedResolver = resolver<void>();\n const {promise: complete} = completeResolver;\n const {promise: cached} = cachedResolver;\n // A caller may ignore either promise; a query error must not surface as an\n // unhandled rejection through the one nobody awaits.\n void complete.catch(() => {});\n void cached.catch(() => {});\n const {customQueryID, ast} = qi;\n const gotCallback: GotCallback = (got, error) => {\n if (error) {\n // The query cannot be satisfied; neither waiter should hang.\n cachedResolver.reject(error);\n completeResolver.reject(error);\n return;\n }\n // Only a server confirmation on this connection resolves `complete`;\n // `cached` is also satisfied by one from a previous connection.\n if (got === true) {\n cachedResolver.resolve();\n completeResolver.resolve();\n } else if (got === 'cached') {\n cachedResolver.resolve();\n }\n };\n const cleanup = customQueryID\n ? delegate.addCustomQuery(ast, customQueryID, ttl, gotCallback)\n : delegate.addServerQuery(ast, ttl, gotCallback);\n if (delegate.defaultQueryComplete) {\n // A delegate whose results are complete from the start (a server-side\n // one) has no got callback to drive the waiters.\n cachedResolver.resolve();\n completeResolver.resolve();\n }\n return {\n cleanup,\n complete,\n cached,\n };\n}\n\n/**\n * The ID a materialized query is registered with the server under: the hash of\n * its name and args for a named query, of its AST otherwise.\n */\nexport function queryIDOf({\n ast,\n customQueryID,\n}: {\n readonly ast: AST;\n readonly customQueryID: CustomQueryID | undefined;\n}): string {\n return customQueryID\n ? hashOfNameAndArgs(customQueryID.name, customQueryID.args)\n : hashOfAST(ast);\n}\n\nfunction materializeImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n>(\n query: Query<TTable, TSchema, TReturn>,\n delegate: QueryDelegate,\n factory: ViewFactory<\n TTable,\n TSchema,\n TReturn,\n T\n // oxlint-disable-next-line no-explicit-any\n > = arrayViewFactory as any,\n options?: MaterializeOptions,\n): T {\n let ttl: TTL = options?.ttl ?? DEFAULT_TTL_MS;\n\n const qi = asQueryInternals(query);\n const {ast, format, customQueryID} = qi;\n\n const queryID = queryIDOf(qi);\n const queryCompleteResolver = resolver<true>();\n // When the delegate cannot build pipelines yet, the view starts over an\n // empty DeferredInput and is hydrated later. A view must not report\n // `complete` until it has actually been hydrated, so completion is gated on\n // both the server's \"got\" and the pipeline being attached.\n const deferPipeline = !delegate.pipelinesReady;\n let attached = !deferPipeline;\n // The last got report: `true` once the server confirmed the query on this\n // connection, `'cached'` while the store holds a previous connection's\n // confirmed result, `false` otherwise.\n let got: boolean | 'cached' = delegate.defaultQueryComplete;\n let queryComplete: boolean | ErroredQuery = attached && got === true;\n const updateTTL = customQueryID\n ? (newTTL: TTL) => delegate.updateCustomQuery(customQueryID, newTTL)\n : (newTTL: TTL) => delegate.updateServerQuery(ast, newTTL);\n\n // Completion, and the end-to-end metric, require both the server's \"got\"\n // and the pipeline being attached: until then the view is still empty.\n const maybeResolveComplete = () => {\n if (attached && got === true && queryComplete !== true) {\n delegate.addMetric(\n 'query-materialization-end-to-end',\n performance.now() - t0,\n queryID,\n ast,\n );\n queryComplete = true;\n queryCompleteResolver.resolve(true);\n }\n };\n\n // The view, seen as its optional hooks. Only views that implement\n // `markCached`/`unmarkCached` (e.g. ArrayView) surface 'cached'; for any\n // other factory the optional calls are no-ops. The registration path can\n // report 'cached' synchronously, before the view below exists, so this\n // stays undefined until then and the mark is applied afterwards.\n let viewHooks: OptionalViewHooks | undefined;\n\n // Like 'complete', 'cached' is a claim about the rows the view holds, so it\n // waits for the view to exist and its pipeline to be attached. Once the\n // server has confirmed the query on this connection, 'complete' supersedes\n // it and the mark is skipped.\n const maybeMarkCached = () => {\n // Only while the query is still incomplete: 'complete' supersedes the\n // mark, and an error that arrived before attach must not be preceded by\n // a 'cached' notification.\n if (attached && got === 'cached' && queryComplete === false) {\n viewHooks?.markCached?.();\n }\n };\n\n let destroyed = false;\n const gotCallback: GotCallback = (value, error) => {\n if (destroyed) {\n // The delegate may keep this callback registered for a while after\n // destroy (removals are deferred while mutations are pending); a dead\n // view must not be driven, nor its listeners fired.\n return;\n }\n if (error) {\n queryCompleteResolver.reject(error);\n queryComplete = error;\n return;\n }\n\n got = value;\n if (got === 'cached') {\n maybeMarkCached();\n } else if (got === false) {\n // The got key was deleted (eviction) before the server confirmed the\n // query on this connection.\n viewHooks?.unmarkCached?.();\n } else {\n maybeResolveComplete();\n }\n };\n\n let removeCommitObserver: (() => void) | undefined;\n let removePendingAttach: (() => void) | undefined;\n const onDestroy = () => {\n destroyed = true;\n removePendingAttach?.();\n removePendingAttach = undefined;\n viewInput.destroy();\n removeCommitObserver?.();\n removeAddedQuery();\n };\n\n const t0 = performance.now();\n\n const removeAddedQuery = customQueryID\n ? delegate.addCustomQuery(ast, customQueryID, ttl, gotCallback)\n : delegate.addServerQuery(ast, ttl, gotCallback);\n\n const deferred = deferPipeline\n ? newDeferredInput(ast, delegate, queryID)\n : undefined;\n // No type annotation here: annotating this as `Input` widens it enough that\n // the view type loses the pipeline's concrete schema, and `Zero.run` then\n // stops rejecting a query built from a schema with legacy queries enabled\n // (custom.test.ts covers that rejection).\n const input = deferred ?? buildPipeline(ast, delegate, queryID);\n // A view of a grouped query shows only its columns and value.\n const viewInput = ast.groupBy ? groupViewInput(input, ast, delegate) : input;\n\n const view = delegate.batchViewUpdates(() =>\n (factory ?? arrayViewFactory)(\n query,\n viewInput,\n format,\n onDestroy,\n cb => {\n removeCommitObserver = delegate.onTransactionCommit(cb);\n },\n queryComplete || queryCompleteResolver.promise,\n updateTTL,\n ),\n );\n\n if (!deferred) {\n delegate.addMetric(\n 'query-materialization-client',\n performance.now() - t0,\n queryID,\n );\n } else {\n // Registered after the factory ran so a throwing factory leaves nothing\n // behind.\n removePendingAttach = delegate.onPipelinesReady(() => {\n removePendingAttach = undefined;\n if (deferred.destroyed) {\n return () => {};\n }\n const t1 = performance.now();\n try {\n viewHooks?.holdData?.();\n deferred.attach();\n } catch (e) {\n // Surface the failure on this view and let the delegate decide how\n // to log it. Other pending pipelines are unaffected.\n const error: ErroredQuery = {\n error: 'app',\n id: queryID,\n name: customQueryID?.name ?? '',\n message: e instanceof Error ? e.message : String(e),\n };\n queryComplete = error;\n queryCompleteResolver.reject(error);\n throw e;\n }\n const hydrateMs = performance.now() - t1;\n // The view holds its rows now but must not say so yet: the delegate\n // releases every view hydrated in the same batch together.\n return () => {\n if (destroyed) {\n return;\n }\n attached = true;\n viewHooks?.releaseData?.();\n delegate.addMetric('query-materialization-client', hydrateMs, queryID);\n maybeResolveComplete();\n maybeMarkCached();\n };\n });\n }\n\n viewHooks = view as OptionalViewHooks;\n maybeMarkCached();\n\n return view as T;\n}\n\n/**\n * Creates the placeholder input for a query whose pipeline cannot be built yet.\n *\n * `Input.getSchema()` is unconditional, so the placeholder needs the schema up\n * front. It is captured by building a pipeline and immediately destroying it:\n * building only connects to the sources, while the indexes and rows -- the\n * expensive part this deferral exists to postpone -- are read on the first\n * fetch. Measured at ~5us against ~500us for a single 100 row fetch.\n *\n * Building here also means a query that cannot be built at all (an unknown\n * table, `not(exists())` on the client) still throws from `materialize()`,\n * as it did before hydration was deferred.\n */\nfunction newDeferredInput(\n ast: AST,\n delegate: QueryDelegate,\n queryID: string,\n): DeferredInput {\n const build = () => buildPipeline(ast, delegate, queryID);\n const probe = build();\n try {\n return new DeferredInput(probe.getSchema(), build);\n } finally {\n probe.destroy();\n }\n}\n\n/**\n * Optional methods `materialize` calls on a view when it has them (ArrayView\n * does). See {@link ViewFactory} for what a custom view needs to know.\n */\ntype OptionalViewHooks = {\n // Surface the 'cached' result type. Views without these never show it.\n markCached?: (() => void) | undefined;\n unmarkCached?: (() => void) | undefined;\n // Keep showing the current snapshot until `releaseData()` (or the next\n // flush), and notify nobody until that flush, so a deferred view does not\n // show rows ahead of its release.\n holdData?: (() => void) | undefined;\n // Called at the release: show the hydrated rows through `data` again, but\n // leave notifying listeners to the flush that follows all the releases.\n releaseData?: (() => void) | undefined;\n};\n\nfunction arrayViewFactory<\n TTable extends string,\n TSchema extends Schema,\n TReturn,\n>(\n _query: QueryInternals<TTable, TSchema, TReturn>,\n input: Input,\n format: Format,\n onDestroy: () => void,\n onTransactionCommit: (cb: () => void) => void,\n queryComplete: true | ErroredQuery | Promise<true>,\n updateTTL: (ttl: TTL) => void,\n): TypedView<HumanReadable<TReturn>> {\n const v = new ArrayView<HumanReadable<TReturn>>(\n input,\n format,\n queryComplete,\n updateTTL,\n );\n v.onDestroy = onDestroy;\n onTransactionCommit(() => v.flush());\n return v;\n}\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import type { AST } from '../../../zero-protocol/src/ast.ts';
2
2
  import type { ErroredQuery } from '../../../zero-protocol/src/custom-queries.ts';
3
3
  import type { Schema } from '../../../zero-types/src/schema.ts';
4
4
  import type { BuilderDelegate } from '../builder/builder.ts';
5
- import type { Format, ViewFactory } from '../ivm/view.ts';
5
+ import type { ViewFactory } from '../ivm/view.ts';
6
6
  import type { MetricsDelegate } from './metrics-delegate.ts';
7
7
  import type { CustomQueryID } from './named.ts';
8
8
  import type { HumanReadable, MaterializeOptions, PreloadOptions, Query, RunOptions } from './query.ts';
@@ -19,9 +19,6 @@ export type CommitListener = () => void;
19
19
  * complete-waiters — freshness stays a promise only the connection can keep.
20
20
  */
21
21
  export type GotCallback = (got: boolean | 'cached', error?: ErroredQuery) => void;
22
- export interface NewQueryDelegate {
23
- newQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn>(schema: TSchema, table: TTable, ast: AST, format: Format): Query<TTable, TSchema, TReturn>;
24
- }
25
22
  /**
26
23
  * Builds and hydrates a deferred pipeline. Returns the function that exposes
27
24
  * the result. See {@link QueryDelegate.onPipelinesReady}.
@@ -1 +1 @@
1
- {"version":3,"file":"query-delegate.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-delegate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-delegate.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-delegate.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { type ReadonlyJSONValue } from '../../../shared/src/json.ts';
2
- import { type AST, type NormalizedAST, type Parameter, type SimpleOperator, type System } from '../../../zero-protocol/src/ast.ts';
2
+ import { type AggregateFunction, type AST, type NormalizedAST, type Parameter, type SimpleOperator, type System } from '../../../zero-protocol/src/ast.ts';
3
3
  import type { Schema } from '../../../zero-types/src/schema.ts';
4
4
  import type { Format, ViewFactory } from '../ivm/view.ts';
5
- import { type ExpressionFactory, ExpressionBuilder } from './expression.ts';
5
+ import { type ExpressionFactory, type JsonAggregateSelector, ExpressionBuilder } from './expression.ts';
6
6
  import type { CustomQueryID } from './named.ts';
7
7
  import { type QueryInternals, queryInternalsTag } from './query-internals.ts';
8
- import type { AnyQuery, ExistsOptions, GetFilterType, HumanReadable, PreloadOptions, PullRow, Query, RunOptions } from './query.ts';
8
+ import type { AnyQuery, AggregateResult, ExistsOptions, GetFilterType, GroupedQuery, HumanReadable, PreloadOptions, PullRow, Query, RunOptions } from './query.ts';
9
9
  import type { TTL } from './ttl.ts';
10
10
  import type { TypedView } from './typed-view.ts';
11
11
  type GetFilterTypeAny = GetFilterType<any, any, any>;
@@ -38,6 +38,20 @@ export declare class QueryImpl<TTable extends keyof TSchema['tables'] & string,
38
38
  nameAndArgs(name: string, args: ReadonlyArray<ReadonlyJSONValue>): Query<TTable, TSchema, TReturn>;
39
39
  hash(): string;
40
40
  one(): Query<TTable, TSchema, TReturn | undefined>;
41
+ count(): Query<TTable, TSchema, AggregateResult<number>>;
42
+ sum(field: string | JsonAggregateSelector): Query<TTable, TSchema, AggregateResult<number | null>>;
43
+ avg(field: string | JsonAggregateSelector): Query<TTable, TSchema, AggregateResult<number | null>>;
44
+ min(field: string | JsonAggregateSelector): Query<TTable, TSchema, AggregateResult<any>>;
45
+ max(field: string | JsonAggregateSelector): Query<TTable, TSchema, AggregateResult<any>>;
46
+ distinct(...columns: readonly string[]): Query<TTable, TSchema, any>;
47
+ groupBy(...columns: readonly string[]): GroupedQuery<TTable, TSchema, any>;
48
+ /**
49
+ * The rows of `groupBy(...columns)` reduced by `fn`, each with the value
50
+ * under the function's name, as plain rows: the AST's `groupBy` and
51
+ * `aggregate` together. Interned on this query, like any other step.
52
+ * Internal: {@link GroupedQueryImpl} calls it.
53
+ */
54
+ groupAggregate(columns: readonly string[], fn: AggregateFunction, selector: string | JsonAggregateSelector | undefined): AnyQuery;
41
55
  whereExists(relationship: string, cbOrOptions?: ((q: AnyQuery) => AnyQuery) | ExistsOptions, options?: ExistsOptions): Query<TTable, TSchema, TReturn>;
42
56
  related(relationship: string, cb?: (q: AnyQuery) => AnyQuery): Query<TTable, TSchema, any>;
43
57
  where(fieldOrExpressionFactory: string | ExpressionFactory<TTable, TSchema>, opOrValue?: SimpleOperator | GetFilterTypeAny | Parameter, value?: GetFilterTypeAny | Parameter): Query<TTable, TSchema, TReturn, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"query-impl.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-impl.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-impl.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,GAAG,EAGR,KAAK,aAAa,EAClB,KAAK,SAAS,EAGd,KAAK,cAAc,EACnB,KAAK,MAAM,EAOZ,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAI9D,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAE1B,iBAAiB,EAIlB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAC,KAAK,cAAc,EAAE,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAO5E,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,EACd,OAAO,EACP,KAAK,EACL,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE/C,KAAK,gBAAgB,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAErD,KAAK,gBAAgB,CAAC,OAAO,SAAS,MAAM,IAAI,CAC9C,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EAEP,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,eAAe,EAAE,MAAM,GAAG,SAAS,KAChC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEzC,wBAAgB,QAAQ,CACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAQxD;AAED,wBAAgB,YAAY,CAC1B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAElC,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAIrC;AA+FD;;;;;;;;GAQG;AACH,qBAAa,SAAS,CACpB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAElC,YACE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAC/B,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;;IAE1C,QAAQ,CAAC,CAAC,iBAAiB,CAAC,QAAQ;IAKpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAIxB,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IA0BlD,YACE,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAUpC;IA6DD,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAE1D;IAED,OAAO,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG;QAClC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACvB,CAEA;IAED,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,WAAW,CAAC,CAAC,EACX,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EACjD,GAAG,CAAC,EAAE,GAAG,GACR,CAAC,CAAC;IAQL,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,CAAC,iBAAiB,CAAC,GACrC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAajC;IAED,IAAI,IAAI,MAAM,CAab;IA+CD,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC,CAejD;IAqED,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAMvD;IAED,GAAG,CACD,KAAK,EAAE,MAAM,GAAG,qBAAqB,GACpC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAMxD;IAED,GAAG,CACD,KAAK,EAAE,MAAM,GAAG,qBAAqB,GACpC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAMxD;IAED,GAAG,CACD,KAAK,EAAE,MAAM,GAAG,qBAAqB,GACpC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAM9C;IAED,GAAG,CACD,KAAK,EAAE,MAAM,GAAG,qBAAqB,GACpC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAM9C;IAED,QAAQ,CAAC,GAAG,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAWnE;IAED,OAAO,CAAC,GAAG,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAOzE;IAED;;;;;OAKG;IACH,cAAc,CACZ,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,EAAE,EAAE,iBAAiB,EACrB,QAAQ,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,GACnD,QAAQ,CAoBV;IAqED,WAAW,CACT,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,QAAQ,CAAC,GAAG,aAAa,EACzD,OAAO,CAAC,EAAE,aAAa,GACtB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAQjC;IAED,OAAO,CACL,YAAY,EAAE,MAAM,EACpB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,QAAQ,GAC7B,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAqR7B;IAMD,KAAK,CACH,wBAAwB,EAAE,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,SAAS,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAAG,SAAS,EACzD,KAAK,CAAC,EAAE,gBAAgB,GAAG,SAAS,GACnC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CA+EtC;IAED,KAAK,CACH,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC,EAC3D,IAAI,CAAC,EAAE;QAAC,SAAS,EAAE,OAAO,CAAA;KAAC,GAC1B,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAwBjC;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAyBpD;IAED,OAAO,CAAC,SAAS,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAClE,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,KAAK,GAAG,MAAM,GACxB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CA6BjC;IAuHD,IAAI,GAAG,IAAI,aAAa,CAEvB;IAED,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAStD;CACF;AAqDD,wBAAgB,WAAW,CACzB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,EACP,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAGzE"}
@@ -5,7 +5,8 @@ import { SUBQ_PREFIX, insertRelated, normalizeAST, normalizeCondition, normalize
5
5
  import { defaultFormat } from "../../../zero-types/src/format.js";
6
6
  import { hashOfQueryInternals } from "../../../zero-protocol/src/query-hash-visitor.js";
7
7
  import { NotImplementedError } from "../error.js";
8
- import { ExpressionBuilder, and, cmp, simplifyCondition } from "./expression.js";
8
+ import { isSyntheticColumn } from "../ivm/aggregate.js";
9
+ import { ExpressionBuilder, aggregateFromSelector, and, cmp, simplifyCondition } from "./expression.js";
9
10
  import { queryInternalsTag } from "./query-internals.js";
10
11
  import { HashIndex, Transitions } from "./query-transitions.js";
11
12
  //#region ../zql/src/query/query-impl.ts
@@ -28,7 +29,7 @@ var rootsBySchema = /* @__PURE__ */ new WeakMap();
28
29
  * count; each one has to be checked.
29
30
  */
30
31
  function isRootAST(ast, tableName) {
31
- return ast.table === tableName && ast.schema === void 0 && ast.alias === void 0 && ast.where === void 0 && ast.related === void 0 && ast.start === void 0 && ast.limit === void 0 && ast.orderBy === void 0;
32
+ return ast.table === tableName && ast.schema === void 0 && ast.alias === void 0 && ast.where === void 0 && ast.related === void 0 && ast.start === void 0 && ast.limit === void 0 && ast.orderBy === void 0 && ast.aggregate === void 0 && ast.groupBy === void 0;
32
33
  }
33
34
  function newQueryInternal(schema, tableName, ast, format, system) {
34
35
  const interned = format === defaultFormat && isRootAST(ast, tableName);
@@ -189,6 +190,8 @@ var QueryImpl = class {
189
190
  return this.#system === other.#system && this.#currentJunction === other.#currentJunction && this.customQueryID?.name === other.customQueryID?.name && deepEqual(this.customQueryID?.args, other.customQueryID?.args) && deepEqual(this.format, other.format) && deepEqual(this.#ast, other.#ast);
190
191
  }
191
192
  one() {
193
+ this.#assertNotAggregated("one");
194
+ this.#assertNotDistinct("one");
192
195
  return this.#derive("one", void 0, void 0, () => this.#newQuery(this.#tableName, {
193
196
  ...this.#ast,
194
197
  limit: 1
@@ -197,6 +200,109 @@ var QueryImpl = class {
197
200
  singular: true
198
201
  }, this.customQueryID, this.#currentJunction));
199
202
  }
203
+ /**
204
+ * A bound goes in the same AST fields whether it is applied before or after
205
+ * an aggregate, where it bounds the rows the aggregate reduces. So it must
206
+ * come first: `q.limit(10).count()`, not `q.count().limit(10)`.
207
+ */
208
+ #assertNotAggregated(method) {
209
+ const { aggregate } = this.format;
210
+ if (aggregate) throw new Error(`${method}() must come before ${aggregate.fn}(): it bounds the rows the aggregate reduces`);
211
+ }
212
+ /** `method` doesn't apply to the rows of a `distinct()` or `groupBy()` yet. */
213
+ #assertNotDistinct(method) {
214
+ if (this.#ast.groupBy) throw new Error(`${method}() does not support ${this.#ast.aggregate ? "groupBy()" : "distinct()"} yet`);
215
+ }
216
+ #aggregate(fn, selector) {
217
+ this.#assertNotAggregated(fn);
218
+ const distinct = this.#ast.groupBy;
219
+ if (distinct && (fn !== "count" || this.#ast.aggregate)) this.#assertNotDistinct(fn);
220
+ if (this.customQueryID) throw new Error(`${fn}() cannot be applied to the named query "${this.customQueryID.name}": put it in the query's definition`);
221
+ const aggregate = distinct ? {
222
+ fn,
223
+ distinct
224
+ } : aggregateFromSelector(fn, selector);
225
+ const { field, path } = aggregate;
226
+ return this.#derive(AGGREGATE_KEYS[fn], field, path, () => this.#newQuery(this.#tableName, {
227
+ ...this.#ast,
228
+ groupBy: void 0,
229
+ aggregate
230
+ }, {
231
+ ...this.format,
232
+ singular: true,
233
+ aggregate
234
+ }, this.customQueryID, this.#currentJunction));
235
+ }
236
+ count() {
237
+ return this.#aggregate("count");
238
+ }
239
+ sum(field) {
240
+ return this.#aggregate("sum", field);
241
+ }
242
+ avg(field) {
243
+ return this.#aggregate("avg", field);
244
+ }
245
+ min(field) {
246
+ return this.#aggregate("min", field);
247
+ }
248
+ max(field) {
249
+ return this.#aggregate("max", field);
250
+ }
251
+ distinct(...columns) {
252
+ this.#assertGroupable("distinct", columns);
253
+ return this.#derive("distinct", JSON.stringify(columns), void 0, () => this.#newQuery(this.#tableName, {
254
+ ...this.#ast,
255
+ groupBy: columns
256
+ }, this.format, this.customQueryID, this.#currentJunction));
257
+ }
258
+ groupBy(...columns) {
259
+ this.#assertGroupable("groupBy", columns);
260
+ return new GroupedQueryImpl(this, columns);
261
+ }
262
+ /**
263
+ * The rows of `groupBy(...columns)` reduced by `fn`, each with the value
264
+ * under the function's name, as plain rows: the AST's `groupBy` and
265
+ * `aggregate` together. Interned on this query, like any other step.
266
+ * Internal: {@link GroupedQueryImpl} calls it.
267
+ */
268
+ groupAggregate(columns, fn, selector) {
269
+ if (columns.includes(fn)) throw new Error(`groupBy(): the column "${fn}" has the same name as the ${fn}() value`);
270
+ const aggregate = aggregateFromSelector(fn, selector);
271
+ return this.#derive(`groupBy:${fn}`, JSON.stringify([columns, aggregate.field ?? null]), aggregate.path, () => this.#newQuery(this.#tableName, {
272
+ ...this.#ast,
273
+ groupBy: columns,
274
+ aggregate
275
+ }, this.format, this.customQueryID, this.#currentJunction));
276
+ }
277
+ /**
278
+ * Checks the columns of `method()` (`distinct` or `groupBy`), and that the
279
+ * query so far can be grouped by them.
280
+ */
281
+ #assertGroupable(method, columns) {
282
+ this.#assertNotAggregated(method);
283
+ this.#assertNotDistinct(method);
284
+ if (this.customQueryID) throw new Error(`${method}() cannot be applied to the named query "${this.customQueryID.name}": put it in the query's definition`);
285
+ if (columns.length === 0) throw new Error(`${method}() needs at least one column`);
286
+ const tableColumns = this.#schema.tables[this.#tableName].columns;
287
+ columns.forEach((col, i) => {
288
+ const colSchema = tableColumns[col];
289
+ if (colSchema === void 0) throw new Error(`${method}(): "${col}" is not a column of "${this.#tableName}"`);
290
+ if (colSchema.type === "json") throw new Error(`${method}() does not support the json column "${col}"`);
291
+ if (columns.indexOf(col) !== i) throw new Error(`${method}(): "${col}" is named twice`);
292
+ if (isSyntheticColumn(col)) throw new Error(`${method}(): "${col}" is the name of a synthetic column, which a grouped row has too`);
293
+ });
294
+ const { limit, start, orderBy, related } = this.#ast;
295
+ if (limit !== void 0 || start !== void 0) throw new Error(`${method}() does not support limit(), start() or one() yet`);
296
+ if (related !== void 0) throw new Error(`${method}() does not support related() yet`);
297
+ for (const [col] of orderBy ?? []) this.#assertGroupColumn(col, columns);
298
+ }
299
+ /**
300
+ * The rows of a `distinct()` or `groupBy()` can only be ordered by its
301
+ * columns.
302
+ */
303
+ #assertGroupColumn(col, columns) {
304
+ if (!columns.includes(col)) throw new Error(`orderBy("${col}"): the rows can only be ordered by the grouped columns (${columns.map((c) => JSON.stringify(c)).join(", ")})`);
305
+ }
200
306
  whereExists(relationship, cbOrOptions, options) {
201
307
  const cb = typeof cbOrOptions === "function" ? cbOrOptions : void 0;
202
308
  const opts = typeof cbOrOptions === "function" ? options : cbOrOptions;
@@ -205,6 +311,7 @@ var QueryImpl = class {
205
311
  related(relationship, cb) {
206
312
  if (relationship.startsWith("zsubq_")) throw new Error(`Relationship names may not start with "${SUBQ_PREFIX}". That is a reserved prefix.`);
207
313
  cb = cb ?? ((q) => q);
314
+ this.#assertNotDistinct("related");
208
315
  const related = this.#schema.relationships[this.#tableName][relationship];
209
316
  assert(related, "Invalid relationship");
210
317
  if (isOneHop(related)) {
@@ -214,9 +321,11 @@ var QueryImpl = class {
214
321
  singular: cardinality === "one"
215
322
  }, this.customQueryID, void 0));
216
323
  const subQuery = asQueryImpl(cb(q));
324
+ assertSubqueryNotGrouped(subQuery, "related");
217
325
  assert(isCompoundKey(sourceField), "The source of a relationship must specify at last 1 field");
218
326
  assert(isCompoundKey(destField), "The destination of a relationship must specify at last 1 field");
219
327
  assert(sourceField.length === destField.length, "The source and destination of a relationship must have the same number of fields");
328
+ assert(!subQuery.format.aggregate || subQuery.#ast.related === void 0, "an aggregate relationship does not support related() on its subquery");
220
329
  return this.#derive(relatedKey(relationship), astID(subQuery.#ast), void 0, () => this.#newQuery(this.#tableName, {
221
330
  ...this.#ast,
222
331
  related: insertRelated(this.#ast.related, {
@@ -224,8 +333,12 @@ var QueryImpl = class {
224
333
  parentField: sourceField,
225
334
  childField: destField
226
335
  },
227
- subquery: subQuery.#ast,
228
- system: this.#system
336
+ subquery: subQuery.format.aggregate ? {
337
+ ...subQuery.#ast,
338
+ aggregate: void 0
339
+ } : subQuery.#ast,
340
+ system: this.#system,
341
+ aggregate: subQuery.format.aggregate
229
342
  })
230
343
  }, {
231
344
  ...this.format,
@@ -243,12 +356,74 @@ var QueryImpl = class {
243
356
  relationships: {},
244
357
  singular: secondRelation.cardinality === "one"
245
358
  }, this.customQueryID, relationship))));
359
+ assertSubqueryNotGrouped(sq, "related");
246
360
  const { sourceField: firstSource, destField: firstDest } = firstRelation;
247
361
  const { sourceField: secondSource, destField: secondDest } = secondRelation;
248
362
  assert(isCompoundKey(firstSource), "Invalid relationship");
249
363
  assert(isCompoundKey(firstDest), "Invalid relationship");
250
364
  assert(isCompoundKey(secondSource), "Invalid relationship");
251
365
  assert(isCompoundKey(secondDest), "Invalid relationship");
366
+ if (sq.format.aggregate) {
367
+ assert(sq.#ast.related === void 0 && sq.#ast.limit === void 0 && sq.#ast.start === void 0, "an aggregate over a junction relationship does not yet support related/limit/start on the destination");
368
+ const aggregate = sq.format.aggregate;
369
+ const { fn } = aggregate;
370
+ const correlation = {
371
+ parentField: firstSource,
372
+ childField: firstDest
373
+ };
374
+ const junctionWhere = normalizeCondition({
375
+ type: "correlatedSubquery",
376
+ op: "EXISTS",
377
+ related: {
378
+ correlation: {
379
+ parentField: secondSource,
380
+ childField: secondDest
381
+ },
382
+ subquery: {
383
+ ...sq.#ast,
384
+ aggregate: void 0
385
+ },
386
+ system: this.#system
387
+ }
388
+ });
389
+ const format = {
390
+ ...this.format,
391
+ relationships: {
392
+ ...this.format.relationships,
393
+ [relationship]: sq.format
394
+ }
395
+ };
396
+ return this.#derive(relatedKey(relationship), astID(sq.#ast), void 0, () => this.#newQuery(this.#tableName, {
397
+ ...this.#ast,
398
+ related: insertRelated(this.#ast.related, fn === "count" ? {
399
+ correlation,
400
+ subquery: {
401
+ ...tableAST(junctionSchema, relationship),
402
+ where: junctionWhere
403
+ },
404
+ system: this.#system,
405
+ aggregate: { fn: "count" }
406
+ } : {
407
+ correlation,
408
+ subquery: {
409
+ ...tableAST(junctionSchema, relationship),
410
+ related: [normalizedRelated({
411
+ correlation: {
412
+ parentField: secondSource,
413
+ childField: secondDest
414
+ },
415
+ subquery: {
416
+ ...sq.#ast,
417
+ aggregate: void 0
418
+ },
419
+ system: this.#system
420
+ })]
421
+ },
422
+ system: this.#system,
423
+ aggregate
424
+ })
425
+ }, format, this.customQueryID, this.#currentJunction));
426
+ }
252
427
  return this.#derive(relatedKey(relationship), astID(sq.#ast), void 0, () => this.#newQuery(this.#tableName, {
253
428
  ...this.#ast,
254
429
  related: insertRelated(this.#ast.related, {
@@ -321,6 +496,8 @@ var QueryImpl = class {
321
496
  });
322
497
  }
323
498
  start(row, opts) {
499
+ this.#assertNotAggregated("start");
500
+ this.#assertNotDistinct("start");
324
501
  return this.#derive(opts?.inclusive ? "start:inclusive" : "start:exclusive", valueTag(row), void 0, () => this.#newQuery(this.#tableName, {
325
502
  ...this.#ast,
326
503
  start: {
@@ -330,6 +507,8 @@ var QueryImpl = class {
330
507
  }, this.format, this.customQueryID, this.#currentJunction));
331
508
  }
332
509
  limit(limit) {
510
+ this.#assertNotAggregated("limit");
511
+ this.#assertNotDistinct("limit");
333
512
  if (limit < 0) throw new Error("Limit must be non-negative");
334
513
  if ((limit | 0) !== limit) throw new Error("Limit must be an integer");
335
514
  if (this.#currentJunction) throw new NotImplementedError("Limit is not supported in junction relationships yet. Junction relationship being limited: " + this.#currentJunction);
@@ -340,6 +519,7 @@ var QueryImpl = class {
340
519
  }
341
520
  orderBy(field, direction) {
342
521
  if (this.#currentJunction) throw new NotImplementedError("Order by is not supported in junction relationships yet. Junction relationship being ordered: " + this.#currentJunction);
522
+ if (this.#ast.groupBy) this.#assertGroupColumn(field, this.#ast.groupBy);
343
523
  return this.#derive(direction === "asc" ? "orderBy:asc" : "orderBy:desc", field, void 0, () => this.#newQuery(this.#tableName, {
344
524
  ...this.#ast,
345
525
  orderBy: [...this.#ast.orderBy ?? [], [field, direction]]
@@ -356,6 +536,8 @@ var QueryImpl = class {
356
536
  assert(isCompoundKey(sourceField), "Invalid relationship");
357
537
  assert(isCompoundKey(destField), "Invalid relationship");
358
538
  const subQuery = asQueryImpl(cb(this.#deriveBounded(`existsBase:${relationship}`, () => this.#newQuery(destTableName, tableAST(destTableName, `${SUBQ_PREFIX}${relationship}`), defaultFormat, this.customQueryID, void 0))));
539
+ assert(subQuery.#ast.aggregate === void 0, "exists() does not support an aggregate subquery");
540
+ assertSubqueryNotGrouped(subQuery, "exists");
359
541
  astID(subQuery.#ast);
360
542
  return {
361
543
  type: "correlatedSubquery",
@@ -381,6 +563,8 @@ var QueryImpl = class {
381
563
  const { destSchema } = secondRelation;
382
564
  const junctionSchema = firstRelation.destSchema;
383
565
  const queryToDest = cb(this.#deriveBounded(`existsJunctionBase:${relationship}`, () => this.#newQuery(destSchema, tableAST(destSchema, `${SUBQ_PREFIX}zhidden_${relationship}`), defaultFormat, this.customQueryID, relationship)));
566
+ assert(asQueryImpl(queryToDest).#ast.aggregate === void 0, "exists() does not support an aggregate subquery");
567
+ assertSubqueryNotGrouped(asQueryImpl(queryToDest), "exists");
384
568
  return {
385
569
  type: "correlatedSubquery",
386
570
  related: {
@@ -420,6 +604,42 @@ var QueryImpl = class {
420
604
  return this.#expressionBuilder ??= new ExpressionBuilder(this.#exists.bind(this));
421
605
  }
422
606
  };
607
+ /**
608
+ * The {@link GroupedQuery} of `query.groupBy(...columns)`. It only holds the
609
+ * grouping: each aggregate is a query derived from `query`, so asking for the
610
+ * same one twice gives the same query.
611
+ */
612
+ var GroupedQueryImpl = class {
613
+ #query;
614
+ #columns;
615
+ constructor(query, columns) {
616
+ this.#query = query;
617
+ this.#columns = columns;
618
+ }
619
+ count() {
620
+ return this.#query.groupAggregate(this.#columns, "count", void 0);
621
+ }
622
+ sum(selector) {
623
+ return this.#query.groupAggregate(this.#columns, "sum", selector);
624
+ }
625
+ avg(selector) {
626
+ return this.#query.groupAggregate(this.#columns, "avg", selector);
627
+ }
628
+ min(selector) {
629
+ return this.#query.groupAggregate(this.#columns, "min", selector);
630
+ }
631
+ max(selector) {
632
+ return this.#query.groupAggregate(this.#columns, "max", selector);
633
+ }
634
+ };
635
+ /**
636
+ * A subquery of `related()` or `exists()` can't be a `distinct()` or a
637
+ * `groupBy()` yet.
638
+ */
639
+ function assertSubqueryNotGrouped(sq, method) {
640
+ const { groupBy, aggregate } = sq.ast;
641
+ if (groupBy || aggregate?.distinct) throw new Error(`${method}() does not support a ${groupBy && aggregate ? "groupBy()" : "distinct()"} subquery yet`);
642
+ }
423
643
  function asQueryImpl(q) {
424
644
  assert(q instanceof QueryImpl, "Expected QueryImpl instance");
425
645
  return q;
@@ -454,8 +674,16 @@ function astID(ast) {
454
674
  */
455
675
  var whereKeys = /* @__PURE__ */ new Map();
456
676
  function whereKey(column, op) {
457
- return getOrInsertComputed(getOrInsertComputed(whereKeys, column, newMap), op, (op) => `where:${column}:${op}`);
677
+ const byOp = getOrInsertComputed(whereKeys, column, newMap);
678
+ return getOrInsertComputed(byOp, op, (op) => `where:${column}:${op}`);
458
679
  }
680
+ var AGGREGATE_KEYS = {
681
+ count: "aggregate:count",
682
+ sum: "aggregate:sum",
683
+ avg: "aggregate:avg",
684
+ min: "aggregate:min",
685
+ max: "aggregate:max"
686
+ };
459
687
  var relatedKeys = /* @__PURE__ */ new Map();
460
688
  var newRelatedKey = (relationship) => `related:${relationship}`;
461
689
  function relatedKey(relationship) {
@@ -541,9 +769,14 @@ function tri(b) {
541
769
  */
542
770
  function condKey(cond) {
543
771
  switch (cond.type) {
544
- case "simple":
545
- if (cond.left.type !== "column") return;
546
- return `S${enc(cond.left.name)}${enc(cond.op)}${rightTag(cond.right)}`;
772
+ case "simple": {
773
+ const { left } = cond;
774
+ switch (left.type) {
775
+ case "column": return `S${enc(left.name)}${enc(cond.op)}${rightTag(cond.right)}`;
776
+ case "json": return `J${enc(left.value.name)}${valueTag(left.path)}${enc(cond.op)}${rightTag(cond.right)}`;
777
+ default: return;
778
+ }
779
+ }
547
780
  case "correlatedSubquery": {
548
781
  const id = astIDs.get(cond.related.subquery);
549
782
  return id === void 0 ? void 0 : `E${id}:${enc(cond.op)}${tri(cond.flip)}${tri(cond.scalar)}`;
@@ -588,6 +821,6 @@ function isTwoHop(r) {
588
821
  return r.length === 2;
589
822
  }
590
823
  //#endregion
591
- export { QueryImpl, newQuery, newQueryImpl };
824
+ export { QueryImpl, asQueryImpl, newQuery, newQueryImpl };
592
825
 
593
826
  //# sourceMappingURL=query-impl.js.map