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

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 (416) hide show
  1. package/out/analyze-query/src/bin-analyze.js +27 -38
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/ast-to-zql/src/bin.js.map +1 -1
  4. package/out/{chunk-ZZXMKAAG.js → chunk-5H7WNLPK.js} +2 -2
  5. package/out/chunk-HYS7YLNL.js +575 -0
  6. package/out/chunk-HYS7YLNL.js.map +7 -0
  7. package/out/{chunk-AIPM77UE.js → chunk-IWL6EEA6.js} +10418 -10217
  8. package/out/chunk-IWL6EEA6.js.map +7 -0
  9. package/out/{chunk-TJFNGO7E.js → chunk-JKP7HDC6.js} +15 -53
  10. package/out/chunk-JKP7HDC6.js.map +7 -0
  11. package/out/{chunk-ECUMGQGC.js → chunk-RYFBHAD4.js} +17 -4
  12. package/out/chunk-RYFBHAD4.js.map +7 -0
  13. package/out/chunk-SRLXXPNB.js +495 -0
  14. package/out/chunk-SRLXXPNB.js.map +7 -0
  15. package/out/{chunk-EZM3XBAB.js → chunk-U2KJIWVC.js} +47 -2
  16. package/out/chunk-U2KJIWVC.js.map +7 -0
  17. package/out/expo-sqlite.js +4 -4
  18. package/out/{inspector-IU2HG74I.js → inspector-GP3CBZRU.js} +1 -1
  19. package/out/inspector-GP3CBZRU.js.map +7 -0
  20. package/out/{lazy-inspector-OXIFYSSQ.js → lazy-inspector-4CO3DXP5.js} +9 -8
  21. package/out/lazy-inspector-4CO3DXP5.js.map +7 -0
  22. package/out/op-sqlite.js +3 -3
  23. package/out/react-native.js +4 -4
  24. package/out/react.js +63 -49
  25. package/out/react.js.map +2 -2
  26. package/out/replicache/src/kv/sqlite-store.d.ts +7 -1
  27. package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
  28. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  29. package/out/replicache/src/replicache-options.d.ts +3 -2
  30. package/out/replicache/src/replicache-options.d.ts.map +1 -1
  31. package/out/replicache/src/sqlite.d.ts +1 -1
  32. package/out/replicache/src/sqlite.d.ts.map +1 -1
  33. package/out/shared/src/error.d.ts +4 -0
  34. package/out/shared/src/error.d.ts.map +1 -0
  35. package/out/shared/src/error.js +70 -0
  36. package/out/shared/src/error.js.map +1 -0
  37. package/out/solid.js +52 -24
  38. package/out/solid.js.map +2 -2
  39. package/out/sqlite.js +5 -3
  40. package/out/z2s/src/compiler.d.ts +2 -2
  41. package/out/z2s/src/compiler.d.ts.map +1 -1
  42. package/out/z2s/src/compiler.js.map +1 -1
  43. package/out/z2s/src/sql.d.ts +1 -1
  44. package/out/z2s/src/sql.d.ts.map +1 -1
  45. package/out/zero/package.json +5 -3
  46. package/out/zero/src/zero-out.d.ts +3 -0
  47. package/out/zero/src/zero-out.d.ts.map +1 -0
  48. package/out/zero/src/zero-out.js +13 -0
  49. package/out/zero/src/zero-out.js.map +1 -0
  50. package/out/zero-cache/src/auth/load-permissions.d.ts +1 -1
  51. package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
  52. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  53. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  54. package/out/zero-cache/src/auth/write-authorizer.js +36 -12
  55. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  56. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  57. package/out/zero-cache/src/custom/fetch.js +8 -7
  58. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  59. package/out/zero-cache/src/custom-queries/transform-query.d.ts +3 -3
  60. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  61. package/out/zero-cache/src/custom-queries/transform-query.js +6 -7
  62. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  63. package/out/zero-cache/src/scripts/decommission.d.ts +50 -0
  64. package/out/zero-cache/src/scripts/decommission.d.ts.map +1 -0
  65. package/out/zero-cache/src/scripts/decommission.js +51 -0
  66. package/out/zero-cache/src/scripts/decommission.js.map +1 -0
  67. package/out/zero-cache/src/scripts/permissions.d.ts +1 -1
  68. package/out/zero-cache/src/scripts/permissions.d.ts.map +1 -1
  69. package/out/zero-cache/src/scripts/permissions.js +2 -2
  70. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  71. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  72. package/out/zero-cache/src/server/change-streamer.js +7 -10
  73. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  74. package/out/zero-cache/src/server/inspector-delegate.d.ts.map +1 -1
  75. package/out/zero-cache/src/server/inspector-delegate.js +2 -1
  76. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  77. package/out/zero-cache/src/services/analyze.d.ts +2 -6
  78. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  79. package/out/zero-cache/src/services/analyze.js +4 -3
  80. package/out/zero-cache/src/services/analyze.js.map +1 -1
  81. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +2 -3
  82. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +1 -1
  83. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +15 -15
  84. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  85. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts +16 -0
  86. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts.map +1 -0
  87. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +52 -0
  88. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -0
  89. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  90. package/out/zero-cache/src/services/change-streamer/storer.js +15 -1
  91. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  92. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -2
  93. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  94. package/out/zero-cache/src/services/change-streamer/subscriber.js +16 -11
  95. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  96. package/out/zero-cache/src/services/mutagen/pusher.d.ts +19 -21
  97. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  98. package/out/zero-cache/src/services/mutagen/pusher.js +11 -12
  99. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  100. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  101. package/out/zero-cache/src/services/run-ast.js +1 -0
  102. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  103. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  104. package/out/zero-cache/src/services/view-syncer/cvr-store.js +41 -14
  105. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  106. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  107. package/out/zero-cache/src/services/view-syncer/cvr.js +5 -4
  108. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  109. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +1 -0
  110. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -1
  111. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +5 -0
  112. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  113. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +1 -1
  114. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  115. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +81 -2
  116. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  117. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  118. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +24 -2
  119. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  120. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  121. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +4 -2
  122. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  123. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  124. package/out/zero-cache/src/services/view-syncer/schema/init.js +25 -0
  125. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  126. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +7 -0
  127. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  128. package/out/zero-cache/src/services/view-syncer/view-syncer.js +54 -6
  129. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  130. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  131. package/out/zero-cache/src/types/error-with-level.js +8 -3
  132. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  133. package/out/zero-cache/src/types/streams.d.ts +1 -1
  134. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  135. package/out/zero-cache/src/types/streams.js +19 -9
  136. package/out/zero-cache/src/types/streams.js.map +1 -1
  137. package/out/zero-cache/src/types/subscription.d.ts +16 -1
  138. package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
  139. package/out/zero-cache/src/types/subscription.js +41 -5
  140. package/out/zero-cache/src/types/subscription.js.map +1 -1
  141. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  142. package/out/zero-cache/src/workers/syncer.js +1 -3
  143. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  144. package/out/zero-client/src/client/bindings.d.ts +42 -0
  145. package/out/zero-client/src/client/bindings.d.ts.map +1 -0
  146. package/out/zero-client/src/client/client-error-kind-enum.d.ts +12 -12
  147. package/out/zero-client/src/client/client-error-kind-enum.d.ts.map +1 -1
  148. package/out/zero-client/src/client/connection-manager.d.ts +28 -13
  149. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  150. package/out/zero-client/src/client/connection-status-enum.d.ts +2 -0
  151. package/out/zero-client/src/client/connection-status-enum.d.ts.map +1 -1
  152. package/out/zero-client/src/client/connection.d.ts +11 -3
  153. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  154. package/out/zero-client/src/client/context.d.ts +12 -10
  155. package/out/zero-client/src/client/context.d.ts.map +1 -1
  156. package/out/zero-client/src/client/crud.d.ts +1 -1
  157. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  158. package/out/zero-client/src/client/custom.d.ts +39 -16
  159. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  160. package/out/zero-client/src/client/error.d.ts +50 -166
  161. package/out/zero-client/src/client/error.d.ts.map +1 -1
  162. package/out/zero-client/src/client/inspector/html-dialog-prompt.d.ts.map +1 -1
  163. package/out/zero-client/src/client/inspector/inspector.d.ts +3 -2
  164. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  165. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +4 -1
  166. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  167. package/out/zero-client/src/client/mutation-tracker.d.ts +10 -2
  168. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  169. package/out/zero-client/src/client/mutator-proxy.d.ts +16 -0
  170. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -0
  171. package/out/zero-client/src/client/options.d.ts +45 -22
  172. package/out/zero-client/src/client/options.d.ts.map +1 -1
  173. package/out/zero-client/src/client/query-manager.d.ts +9 -2
  174. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  175. package/out/zero-client/src/client/zero-log-context.d.ts +3 -3
  176. package/out/zero-client/src/client/zero-log-context.d.ts.map +1 -1
  177. package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
  178. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  179. package/out/zero-client/src/client/zero-rep.d.ts +7 -4
  180. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  181. package/out/zero-client/src/client/zero.d.ts +88 -18
  182. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  183. package/out/zero-client/src/mod.d.ts +17 -9
  184. package/out/zero-client/src/mod.d.ts.map +1 -1
  185. package/out/zero-client/src/types/query-result.d.ts +24 -0
  186. package/out/zero-client/src/types/query-result.d.ts.map +1 -0
  187. package/out/zero-protocol/src/analyze-query-result.d.ts +1 -0
  188. package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
  189. package/out/zero-protocol/src/analyze-query-result.js +1 -0
  190. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  191. package/out/zero-protocol/src/application-error.d.ts +27 -0
  192. package/out/zero-protocol/src/application-error.d.ts.map +1 -0
  193. package/out/zero-protocol/src/application-error.js +40 -0
  194. package/out/zero-protocol/src/application-error.js.map +1 -0
  195. package/out/zero-protocol/src/custom-queries.d.ts +27 -95
  196. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  197. package/out/zero-protocol/src/custom-queries.js +9 -24
  198. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  199. package/out/zero-protocol/src/down.d.ts +8 -9
  200. package/out/zero-protocol/src/down.d.ts.map +1 -1
  201. package/out/zero-protocol/src/error.d.ts +42 -0
  202. package/out/zero-protocol/src/error.d.ts.map +1 -1
  203. package/out/zero-protocol/src/error.js +7 -0
  204. package/out/zero-protocol/src/error.js.map +1 -1
  205. package/out/zero-protocol/src/inspect-down.d.ts +3 -0
  206. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  207. package/out/zero-protocol/src/mutations-patch.d.ts +3 -0
  208. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
  209. package/out/zero-protocol/src/poke.d.ts +2 -0
  210. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  211. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  212. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  213. package/out/zero-protocol/src/protocol-version.js +3 -1
  214. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  215. package/out/zero-protocol/src/push.d.ts +7 -0
  216. package/out/zero-protocol/src/push.d.ts.map +1 -1
  217. package/out/zero-protocol/src/push.js +1 -0
  218. package/out/zero-protocol/src/push.js.map +1 -1
  219. package/out/zero-react/src/components/inspector.d.ts +1 -1
  220. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  221. package/out/zero-react/src/components/zero-inspector.d.ts +1 -1
  222. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  223. package/out/zero-react/src/mod.d.ts +6 -2
  224. package/out/zero-react/src/mod.d.ts.map +1 -1
  225. package/out/zero-react/src/use-query.d.ts +7 -26
  226. package/out/zero-react/src/use-query.d.ts.map +1 -1
  227. package/out/zero-react/src/zero-provider.d.ts +7 -7
  228. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  229. package/out/zero-schema/src/builder/schema-builder.d.ts +1 -3
  230. package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
  231. package/out/zero-schema/src/permissions.d.ts +1 -1
  232. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  233. package/out/zero-schema/src/schema-config.d.ts +1 -1
  234. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  235. package/out/zero-server/src/adapters/drizzle.d.ts +2 -2
  236. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  237. package/out/zero-server/src/adapters/drizzle.js +4 -0
  238. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  239. package/out/zero-server/src/adapters/pg.d.ts +8 -3
  240. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  241. package/out/zero-server/src/adapters/pg.js +4 -0
  242. package/out/zero-server/src/adapters/pg.js.map +1 -1
  243. package/out/zero-server/src/adapters/postgresjs.d.ts +8 -3
  244. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  245. package/out/zero-server/src/adapters/postgresjs.js +4 -0
  246. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  247. package/out/zero-server/src/custom.d.ts +11 -8
  248. package/out/zero-server/src/custom.d.ts.map +1 -1
  249. package/out/zero-server/src/custom.js +15 -3
  250. package/out/zero-server/src/custom.js.map +1 -1
  251. package/out/zero-server/src/mod.d.ts +4 -4
  252. package/out/zero-server/src/mod.d.ts.map +1 -1
  253. package/out/zero-server/src/mod.js +4 -4
  254. package/out/zero-server/src/mod.js.map +1 -1
  255. package/out/zero-server/src/pg-query-executor.d.ts +11 -0
  256. package/out/zero-server/src/pg-query-executor.d.ts.map +1 -0
  257. package/out/zero-server/src/pg-query-executor.js +17 -0
  258. package/out/zero-server/src/pg-query-executor.js.map +1 -0
  259. package/out/zero-server/src/process-mutations.d.ts +2 -1
  260. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  261. package/out/zero-server/src/process-mutations.js +181 -68
  262. package/out/zero-server/src/process-mutations.js.map +1 -1
  263. package/out/zero-server/src/queries/process-queries.d.ts +6 -5
  264. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  265. package/out/zero-server/src/queries/process-queries.js +87 -19
  266. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  267. package/out/zero-server/src/schema.d.ts +2 -2
  268. package/out/zero-server/src/schema.d.ts.map +1 -1
  269. package/out/zero-server/src/schema.js.map +1 -1
  270. package/out/zero-server/src/zql-database.d.ts +6 -3
  271. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  272. package/out/zero-server/src/zql-database.js +17 -19
  273. package/out/zero-server/src/zql-database.js.map +1 -1
  274. package/out/zero-solid/src/mod.d.ts +8 -0
  275. package/out/zero-solid/src/mod.d.ts.map +1 -1
  276. package/out/zero-solid/src/solid-view.d.ts +3 -23
  277. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  278. package/out/zero-solid/src/use-query.d.ts +4 -4
  279. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  280. package/out/zero-solid/src/use-zero.d.ts +8 -7
  281. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  282. package/out/zero-types/src/server-schema.d.ts.map +1 -0
  283. package/out/zero-types/src/server-schema.js.map +1 -0
  284. package/out/zero.js +31 -14
  285. package/out/zql/src/builder/builder.d.ts +6 -0
  286. package/out/zql/src/builder/builder.d.ts.map +1 -1
  287. package/out/zql/src/builder/builder.js +1 -1
  288. package/out/zql/src/builder/builder.js.map +1 -1
  289. package/out/zql/src/builder/debug-delegate.d.ts +4 -0
  290. package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
  291. package/out/zql/src/builder/debug-delegate.js +17 -0
  292. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  293. package/out/zql/src/ivm/view.d.ts +3 -2
  294. package/out/zql/src/ivm/view.d.ts.map +1 -1
  295. package/out/zql/src/mutate/custom.d.ts +13 -8
  296. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  297. package/out/zql/src/mutate/custom.js.map +1 -1
  298. package/out/zql/src/planner/planner-builder.d.ts +2 -1
  299. package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
  300. package/out/zql/src/planner/planner-builder.js +33 -8
  301. package/out/zql/src/planner/planner-builder.js.map +1 -1
  302. package/out/zql/src/planner/planner-connection.d.ts +9 -3
  303. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  304. package/out/zql/src/planner/planner-connection.js +38 -82
  305. package/out/zql/src/planner/planner-connection.js.map +1 -1
  306. package/out/zql/src/planner/planner-debug.d.ts +37 -7
  307. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  308. package/out/zql/src/planner/planner-debug.js +131 -80
  309. package/out/zql/src/planner/planner-debug.js.map +1 -1
  310. package/out/zql/src/planner/planner-fan-in.d.ts +5 -3
  311. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  312. package/out/zql/src/planner/planner-fan-in.js +41 -23
  313. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  314. package/out/zql/src/planner/planner-fan-out.d.ts +5 -3
  315. package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
  316. package/out/zql/src/planner/planner-fan-out.js +22 -5
  317. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  318. package/out/zql/src/planner/planner-graph.d.ts +2 -2
  319. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  320. package/out/zql/src/planner/planner-graph.js +18 -49
  321. package/out/zql/src/planner/planner-graph.js.map +1 -1
  322. package/out/zql/src/planner/planner-join.d.ts +61 -6
  323. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  324. package/out/zql/src/planner/planner-join.js +156 -69
  325. package/out/zql/src/planner/planner-join.js.map +1 -1
  326. package/out/zql/src/planner/planner-node.d.ts +29 -2
  327. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  328. package/out/zql/src/planner/planner-source.d.ts +1 -1
  329. package/out/zql/src/planner/planner-source.d.ts.map +1 -1
  330. package/out/zql/src/planner/planner-source.js +2 -2
  331. package/out/zql/src/planner/planner-source.js.map +1 -1
  332. package/out/zql/src/planner/planner-terminus.d.ts +4 -3
  333. package/out/zql/src/planner/planner-terminus.d.ts.map +1 -1
  334. package/out/zql/src/planner/planner-terminus.js +4 -4
  335. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  336. package/out/zql/src/query/chained-query.d.ts +35 -0
  337. package/out/zql/src/query/chained-query.d.ts.map +1 -0
  338. package/out/zql/src/query/chained-query.js +66 -0
  339. package/out/zql/src/query/chained-query.js.map +1 -0
  340. package/out/zql/src/query/define-query.d.ts +51 -0
  341. package/out/zql/src/query/define-query.d.ts.map +1 -0
  342. package/out/zql/src/query/define-query.js +53 -0
  343. package/out/zql/src/query/define-query.js.map +1 -0
  344. package/out/zql/src/query/error.d.ts +4 -0
  345. package/out/zql/src/query/error.d.ts.map +1 -0
  346. package/out/zql/src/query/error.js +9 -0
  347. package/out/zql/src/query/error.js.map +1 -0
  348. package/out/zql/src/query/named.d.ts +18 -7
  349. package/out/zql/src/query/named.d.ts.map +1 -1
  350. package/out/zql/src/query/named.js +39 -13
  351. package/out/zql/src/query/named.js.map +1 -1
  352. package/out/zql/src/query/query-delegate-base.d.ts +122 -0
  353. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -0
  354. package/out/zql/src/query/query-delegate-base.js +136 -0
  355. package/out/zql/src/query/query-delegate-base.js.map +1 -0
  356. package/out/zql/src/query/query-delegate.d.ts +29 -4
  357. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  358. package/out/zql/src/query/query-impl.d.ts +27 -48
  359. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  360. package/out/zql/src/query/query-impl.js +155 -175
  361. package/out/zql/src/query/query-impl.js.map +1 -1
  362. package/out/zql/src/query/query-internals.d.ts +70 -0
  363. package/out/zql/src/query/query-internals.d.ts.map +1 -0
  364. package/out/zql/src/query/query-internals.js +21 -0
  365. package/out/zql/src/query/query-internals.js.map +1 -0
  366. package/out/zql/src/query/query.d.ts +26 -243
  367. package/out/zql/src/query/query.d.ts.map +1 -1
  368. package/out/zql/src/query/query.js +0 -1
  369. package/out/zql/src/query/query.js.map +1 -1
  370. package/out/zql/src/query/root-named-query.d.ts +33 -0
  371. package/out/zql/src/query/root-named-query.d.ts.map +1 -0
  372. package/out/zql/src/query/root-named-query.js +95 -0
  373. package/out/zql/src/query/root-named-query.js.map +1 -0
  374. package/out/zql/src/query/static-query.d.ts +5 -14
  375. package/out/zql/src/query/static-query.d.ts.map +1 -1
  376. package/out/zql/src/query/static-query.js +7 -17
  377. package/out/zql/src/query/static-query.js.map +1 -1
  378. package/out/zqlite/src/db.d.ts +2 -1
  379. package/out/zqlite/src/db.d.ts.map +1 -1
  380. package/out/zqlite/src/db.js +2 -0
  381. package/out/zqlite/src/db.js.map +1 -1
  382. package/out/zqlite/src/query-delegate.d.ts +6 -20
  383. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  384. package/out/zqlite/src/query-delegate.js +5 -29
  385. package/out/zqlite/src/query-delegate.js.map +1 -1
  386. package/out/zqlite/src/table-source.d.ts.map +1 -1
  387. package/out/zqlite/src/table-source.js +16 -0
  388. package/out/zqlite/src/table-source.js.map +1 -1
  389. package/package.json +5 -3
  390. package/out/chunk-55BOUNXO.js +0 -356
  391. package/out/chunk-55BOUNXO.js.map +0 -7
  392. package/out/chunk-AIPM77UE.js.map +0 -7
  393. package/out/chunk-ASRS2LFV.js +0 -35
  394. package/out/chunk-ASRS2LFV.js.map +0 -7
  395. package/out/chunk-ECUMGQGC.js.map +0 -7
  396. package/out/chunk-EZM3XBAB.js.map +0 -7
  397. package/out/chunk-TJFNGO7E.js.map +0 -7
  398. package/out/inspector-IU2HG74I.js.map +0 -7
  399. package/out/lazy-inspector-OXIFYSSQ.js.map +0 -7
  400. package/out/zero-client/src/client/on-error.d.ts +0 -15
  401. package/out/zero-client/src/client/on-error.d.ts.map +0 -1
  402. package/out/zero-schema/src/builder/relationship-builder.js +0 -24
  403. package/out/zero-schema/src/builder/relationship-builder.js.map +0 -1
  404. package/out/zero-schema/src/builder/schema-builder.js +0 -78
  405. package/out/zero-schema/src/builder/schema-builder.js.map +0 -1
  406. package/out/zero-schema/src/builder/table-builder.js +0 -128
  407. package/out/zero-schema/src/builder/table-builder.js.map +0 -1
  408. package/out/zero-schema/src/server-schema.d.ts.map +0 -1
  409. package/out/zero-schema/src/server-schema.js.map +0 -1
  410. package/out/zero-server/src/query.d.ts +0 -22
  411. package/out/zero-server/src/query.d.ts.map +0 -1
  412. package/out/zero-server/src/query.js +0 -61
  413. package/out/zero-server/src/query.js.map +0 -1
  414. /package/out/{chunk-ZZXMKAAG.js.map → chunk-5H7WNLPK.js.map} +0 -0
  415. /package/out/{zero-schema → zero-types}/src/server-schema.d.ts +0 -0
  416. /package/out/{zero-schema → zero-types}/src/server-schema.js +0 -0
@@ -1,5 +1,32 @@
1
1
  import { assert } from "../../../shared/src/asserts.js";
2
2
  import { mergeConstraints, } from "./planner-constraint.js";
3
+ /**
4
+ * Translate constraints for a flipped join from parent space to child space.
5
+ * Matches the runtime behavior of FlippedJoin.fetch() which translates
6
+ * parent constraints to child constraints using index-based key mapping.
7
+ *
8
+ * Example:
9
+ * parentConstraint = {issueID: undefined, projectID: undefined}
10
+ * childConstraint = {id: undefined, projectID: undefined}
11
+ * incomingConstraint = {issueID: 5}
12
+ * result = {id: 5} // issueID at index 0 maps to id at index 0
13
+ */
14
+ function translateConstraintsForFlippedJoin(incomingConstraint, parentConstraint, childConstraint) {
15
+ if (!incomingConstraint)
16
+ return undefined;
17
+ const parentKeys = Object.keys(parentConstraint);
18
+ const childKeys = Object.keys(childConstraint);
19
+ const translated = {};
20
+ for (const [key, value] of Object.entries(incomingConstraint)) {
21
+ const index = parentKeys.indexOf(key);
22
+ if (index !== -1) {
23
+ // Found this key in parent at position `index`
24
+ // Map to child key at same position
25
+ translated[childKeys[index]] = value;
26
+ }
27
+ }
28
+ return Object.keys(translated).length > 0 ? translated : undefined;
29
+ }
3
30
  /**
4
31
  * Semi-join overhead multiplier.
5
32
  *
@@ -16,7 +43,7 @@ import { mergeConstraints, } from "./planner-constraint.js";
16
43
  * Flipped joins have a different overhead in that they become unlimited. This
17
44
  * is accounted for when propagating unlimits rather than here.
18
45
  */
19
- const SEMI_JOIN_OVERHEAD_MULTIPLIER = 1.5;
46
+ // const SEMI_JOIN_OVERHEAD_MULTIPLIER = 1.5;
20
47
  /**
21
48
  * Represents a join between two data streams (parent and child).
22
49
  *
@@ -56,8 +83,10 @@ export class PlannerJoin {
56
83
  #output; // Set once during graph construction
57
84
  // Reset between planning attempts
58
85
  #type;
59
- constructor(parent, child, parentConstraint, childConstraint, flippable, planId) {
60
- this.#type = 'semi';
86
+ #initialType;
87
+ constructor(parent, child, parentConstraint, childConstraint, flippable, planId, initialType = 'semi') {
88
+ this.#type = initialType;
89
+ this.#initialType = initialType;
61
90
  this.#parent = parent;
62
91
  this.#child = child;
63
92
  this.#childConstraint = childConstraint;
@@ -97,9 +126,13 @@ export class PlannerJoin {
97
126
  return this.#flippable;
98
127
  }
99
128
  /**
100
- * Propagate unlimiting through the child subgraph when this join is flipped.
101
- * When a join is flipped, the child becomes the outer loop and should produce
102
- * all rows rather than stopping at an EXISTS limit.
129
+ * Propagate unlimiting when this join is flipped.
130
+ * When a join is flipped:
131
+ * 1. Child becomes outer loop produces all rows (unlimited)
132
+ * 2. Parent is fetched once per child row → effectively unlimited
133
+ *
134
+ * Example: If child produces 896 rows, parent is fetched 896 times.
135
+ * Even if each fetch returns 1 row, parent produces 896 total rows.
103
136
  *
104
137
  * Propagation rules:
105
138
  * - Connection: call unlimit()
@@ -109,7 +142,8 @@ export class PlannerJoin {
109
142
  */
110
143
  propagateUnlimit() {
111
144
  assert(this.#type === 'flipped', 'Can only unlimit a flipped join');
112
- propagateUnlimitToNode(this.#child);
145
+ this.#parent.propagateUnlimitFromFlippedJoin();
146
+ this.#child.propagateUnlimitFromFlippedJoin(); // Up the child chain
113
147
  }
114
148
  /**
115
149
  * Called when a parent join is flipped and this join is part of its child subgraph.
@@ -118,73 +152,139 @@ export class PlannerJoin {
118
152
  */
119
153
  propagateUnlimitFromFlippedJoin() {
120
154
  if (this.#type === 'semi') {
121
- propagateUnlimitToNode(this.#parent);
155
+ this.#parent.propagateUnlimitFromFlippedJoin();
122
156
  }
123
157
  // For flipped joins, stop propagation
124
158
  }
125
- propagateConstraints(branchPattern, constraint) {
159
+ propagateConstraints(branchPattern, constraint, from, planDebugger) {
160
+ planDebugger?.log({
161
+ type: 'node-constraint',
162
+ nodeType: 'join',
163
+ node: this.getName(),
164
+ branchPattern,
165
+ constraint,
166
+ from: from ? getNodeName(from) : 'unknown',
167
+ });
126
168
  if (this.#type === 'semi') {
127
169
  // A semi-join always has constraints for its child.
128
170
  // They are defined by the correlation between parent and child.
129
- this.#child.propagateConstraints(branchPattern, this.#childConstraint, this);
171
+ this.#child.propagateConstraints(branchPattern, this.#childConstraint, this, planDebugger);
130
172
  // A semi-join forwards constraints to its parent.
131
- this.#parent.propagateConstraints(branchPattern, constraint, this);
173
+ this.#parent.propagateConstraints(branchPattern, constraint, this, planDebugger);
132
174
  }
133
175
  else if (this.#type === 'flipped') {
134
- // A flipped join has no constraints to pass to its child.
135
- // It is a standalone fetch that is relying on the filters of the child
136
- // connection to do the heavy work.
137
- this.#child.propagateConstraints(branchPattern, undefined, this);
176
+ // A flipped join translates constraints from parent space to child space.
177
+ // This matches FlippedJoin.fetch() runtime behavior where parent constraints
178
+ // on join keys are translated to child constraints.
179
+ // Example: If parent has {issueID: 5} and join maps issueID→id,
180
+ // child gets {id: 5} allowing index usage.
181
+ const translatedConstraint = translateConstraintsForFlippedJoin(constraint, this.#parentConstraint, this.#childConstraint);
182
+ this.#child.propagateConstraints(branchPattern, translatedConstraint, this, planDebugger);
138
183
  // A flipped join will have constraints to send to its parent.
139
184
  // - The constraints its output sent
140
185
  // - The constraints its child creates
141
- this.#parent.propagateConstraints(branchPattern, mergeConstraints(constraint, this.#parentConstraint), this);
186
+ this.#parent.propagateConstraints(branchPattern, mergeConstraints(constraint, this.#parentConstraint), this, planDebugger);
142
187
  }
143
188
  }
144
189
  reset() {
145
- this.#type = 'semi';
146
- }
147
- estimateCost(branchPattern) {
148
- const parentCost = this.#parent.estimateCost(branchPattern);
149
- const childCost = this.#child.estimateCost(branchPattern);
150
- let scanEst = parentCost.rows;
151
- if (this.#type === 'semi' && parentCost.limit !== undefined) {
152
- if (childCost.selectivity !== 0) {
153
- scanEst = Math.min(scanEst, parentCost.limit / childCost.selectivity);
154
- }
190
+ this.#type = this.#initialType;
191
+ }
192
+ estimateCost(
193
+ /**
194
+ * This argument is to deal with consecutive `andExists` statements.
195
+ * Each one will constrain how often a parent row passes all constraints.
196
+ * This means that we have to scan more and more parent rows the more
197
+ * constraints we add.
198
+ */
199
+ downstreamChildSelectivity,
200
+ /**
201
+ * branchPattern uniquely identifies OR branches in the graph.
202
+ * Each path through an OR will have unique constraints to apply to the source
203
+ * connection.
204
+ * branchPattern allows us to correlate a path through the graph
205
+ * to the constraints that should be applied for that path.
206
+ *
207
+ * Example graph:
208
+ * UFO
209
+ * / \
210
+ * J1 J2
211
+ * \ /
212
+ * UFI
213
+ *
214
+ * J1 and J2 are joins inside an OR (FO).
215
+ * branchPattern [0] = path through J1
216
+ * branchPattern [1] = path through J2
217
+ *
218
+ * If many ORs are nested, branchPattern will have multiple elements
219
+ * representing each level of OR.
220
+ *
221
+ * If no joins are flipped within the `OR`, then only a single
222
+ * branchPattern element will be needed, as FO represents all sub-joins
223
+ * as a single path.
224
+ */
225
+ branchPattern, planDebugger) {
226
+ /**
227
+ * downstreamChildSelectivity accumulates up a parent chain, not
228
+ * up child chains. Child chains represent independent sub-graphs.
229
+ * So we pass 1 for `downstreamChildSelectivity` when estimating child cost.
230
+ * Put another way, downstreamChildSelectivity impacts how many parent
231
+ * rows are returned.
232
+ */
233
+ const child = this.#child.estimateCost(1, branchPattern, planDebugger);
234
+ /**
235
+ * How selective is the graph from this point forward?
236
+ * If we are _very_ selective then we must scan more parent rows
237
+ * before finding a match.
238
+ * E.g., if childSelectivity = 0.1 and downstreamChildSelectivity = 0.5
239
+ * then we only pass 5% of parent rows (0.1 * 0.5 = 0.05).
240
+ *
241
+ * This is used to estimate how many rows will be pulled from the parent
242
+ * when trying to satisfy downstream constraints and a limit.
243
+ *
244
+ * NOTE: We do not know if the probabilities are correlated so we assume independence.
245
+ * This is a fundamental limitation of the planner.
246
+ */
247
+ const parent = this.#parent.estimateCost(
248
+ // Selectivity flows up the graph from child to parent
249
+ // so we can determine the total selectivity of all ANDed exists checks.
250
+ child.selectivity * downstreamChildSelectivity, branchPattern, planDebugger);
251
+ let costEstimate;
252
+ if (this.type === 'semi') {
253
+ costEstimate = {
254
+ startupCost: parent.startupCost,
255
+ scanEst: parent.limit === undefined
256
+ ? parent.returnedRows
257
+ : Math.min(parent.returnedRows, parent.limit / downstreamChildSelectivity),
258
+ cost: parent.cost +
259
+ parent.scanEst * (child.startupCost + child.cost + child.scanEst),
260
+ returnedRows: parent.returnedRows * child.selectivity,
261
+ selectivity: child.selectivity * parent.selectivity,
262
+ limit: parent.limit,
263
+ };
155
264
  }
156
- if (this.#parent.closestJoinOrSource() === 'join') {
157
- // if the parent is a join, we're in a pipeline rather than nesting of joins.
158
- const pipelineCost = this.#type === 'flipped'
159
- ? childCost.startupCost +
160
- childCost.runningCost *
161
- (parentCost.startupCost + parentCost.runningCost)
162
- : parentCost.runningCost +
163
- SEMI_JOIN_OVERHEAD_MULTIPLIER *
164
- scanEst *
165
- (childCost.startupCost + childCost.runningCost);
166
- return {
167
- rows: parentCost.rows,
168
- runningCost: pipelineCost,
169
- startupCost: parentCost.startupCost,
170
- selectivity: parentCost.selectivity,
171
- limit: parentCost.limit,
265
+ else {
266
+ costEstimate = {
267
+ startupCost: child.startupCost,
268
+ scanEst: parent.limit === undefined
269
+ ? parent.returnedRows
270
+ : Math.min(parent.returnedRows * child.returnedRows, parent.limit / downstreamChildSelectivity),
271
+ cost: child.cost +
272
+ child.scanEst * (parent.startupCost + parent.cost + parent.scanEst),
273
+ returnedRows: parent.returnedRows * child.returnedRows * child.selectivity,
274
+ selectivity: parent.selectivity * child.selectivity,
275
+ limit: parent.limit,
172
276
  };
173
277
  }
174
- // if the parent is a source, we're in a nested loop join
175
- const nestedLoopCost = this.#type === 'flipped'
176
- ? childCost.runningCost *
177
- (parentCost.startupCost + parentCost.runningCost)
178
- : SEMI_JOIN_OVERHEAD_MULTIPLIER *
179
- scanEst *
180
- (childCost.startupCost + childCost.runningCost);
181
- return {
182
- rows: parentCost.rows,
183
- runningCost: nestedLoopCost,
184
- startupCost: parentCost.startupCost,
185
- selectivity: parentCost.selectivity,
186
- limit: parentCost.limit,
187
- };
278
+ planDebugger?.log({
279
+ type: 'node-cost',
280
+ nodeType: 'join',
281
+ node: this.getName(),
282
+ branchPattern,
283
+ downstreamChildSelectivity,
284
+ costEstimate,
285
+ joinType: this.#type,
286
+ });
287
+ return costEstimate;
188
288
  }
189
289
  /**
190
290
  * Get a human-readable name for this join for debugging.
@@ -230,17 +330,4 @@ function getNodeName(node) {
230
330
  return 'terminus';
231
331
  }
232
332
  }
233
- /**
234
- * Propagate unlimiting through a node in the planner graph.
235
- * Called recursively to unlimit all nodes in a subgraph when a join is flipped.
236
- *
237
- * This calls the propagateUnlimitFromFlippedJoin() method on each node,
238
- * which implements the type-specific logic.
239
- */
240
- function propagateUnlimitToNode(node) {
241
- if ('propagateUnlimitFromFlippedJoin' in node &&
242
- typeof node.propagateUnlimitFromFlippedJoin === 'function') {
243
- node.propagateUnlimitFromFlippedJoin();
244
- }
245
- }
246
333
  //# sourceMappingURL=planner-join.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner-join.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planner-join.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,36 @@ import type { PlannerTerminus } from './planner-terminus.ts';
9
9
  */
10
10
  export type PlannerNode = PlannerJoin | PlannerConnection | PlannerFanOut | PlannerFanIn | PlannerTerminus;
11
11
  export type CostEstimate = {
12
- rows: number;
13
- runningCost: number;
14
12
  startupCost: number;
13
+ scanEst: number;
14
+ /**
15
+ * The cumulative cost to run the pipeline so far.
16
+ *
17
+ * In a semi-join, each row output by the parent is multiplied by the cost to evaluate the child.
18
+ * In a flipped join, each row output by the child is multiplied by the cost to evaluate the parent.
19
+ *
20
+ * "each row output by the parent" is determined by the downstreamChildSelectivity parameter in combination
21
+ * with the limit or the rows output by the parent node.
22
+ *
23
+ * We pull on the parent and stop when hitting a limit or exhausting rows.
24
+ */
25
+ cost: number;
26
+ /**
27
+ * The number of rows output from a node.
28
+ * - For a connection, this is the estimated number of rows returned by the source query.
29
+ * - For a semi-join, this is the estimated number of rows that pass the semi-join filter.
30
+ * - For a flipped join, this is the estimated number of rows that match all child rows.
31
+ * - For fan-in, this is the sum of the rows from each input.
32
+ * - For fan-out, this is the rows from its input.
33
+ */
34
+ returnedRows: number;
35
+ /**
36
+ * The selectivity of the node.
37
+ * For a connection, this is the fraction of rows passing filters (1.0 = no filtering).
38
+ * For joins, this is the fraction of parent rows that match child rows.
39
+ * For fan-in, this is the probability of a match in any branch, assuming independent events.
40
+ * For fan-out, this is the selectivity of its input.
41
+ */
15
42
  selectivity: number;
16
43
  limit: number | undefined;
17
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"planner-node.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,iBAAiB,GACjB,aAAa,GACb,YAAY,GACZ,eAAe,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"planner-node.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,iBAAiB,GACjB,aAAa,GACb,YAAY,GACZ,eAAe,CAAC;AAEpB,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC"}
@@ -6,6 +6,6 @@ export declare class PlannerSource {
6
6
  #private;
7
7
  readonly name: string;
8
8
  constructor(name: string, model: ConnectionCostModel);
9
- connect(sort: Ordering, filters: Condition | undefined, baseConstraints?: PlannerConstraint, limit?: number): PlannerConnection;
9
+ connect(sort: Ordering, filters: Condition | undefined, isRoot: boolean, baseConstraints?: PlannerConstraint, limit?: number): PlannerConnection;
10
10
  }
11
11
  //# sourceMappingURL=planner-source.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner-source.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE/D,YAAY,EAAC,mBAAmB,EAAC,CAAC;AAElC,qBAAa,aAAa;;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAGV,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;IAKpD,OAAO,CACL,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,eAAe,CAAC,EAAE,iBAAiB,EACnC,KAAK,CAAC,EAAE,MAAM,GACb,iBAAiB;CAUrB"}
1
+ {"version":3,"file":"planner-source.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE/D,YAAY,EAAC,mBAAmB,EAAC,CAAC;AAElC,qBAAa,aAAa;;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAGV,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;IAKpD,OAAO,CACL,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,SAAS,GAAG,SAAS,EAC9B,MAAM,EAAE,OAAO,EACf,eAAe,CAAC,EAAE,iBAAiB,EACnC,KAAK,CAAC,EAAE,MAAM,GACb,iBAAiB;CAWrB"}
@@ -6,8 +6,8 @@ export class PlannerSource {
6
6
  this.name = name;
7
7
  this.#model = model;
8
8
  }
9
- connect(sort, filters, baseConstraints, limit) {
10
- return new PlannerConnection(this.name, this.#model, sort, filters, baseConstraints, limit);
9
+ connect(sort, filters, isRoot, baseConstraints, limit) {
10
+ return new PlannerConnection(this.name, this.#model, sort, filters, isRoot, baseConstraints, limit);
11
11
  }
12
12
  }
13
13
  //# sourceMappingURL=planner-source.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner-source.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-source.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,GAElB,MAAM,yBAAyB,CAAC;AAKjC,MAAM,OAAO,aAAa;IACf,IAAI,CAAS;IACb,MAAM,CAAsB;IAErC,YAAY,IAAY,EAAE,KAA0B;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,OAAO,CACL,IAAc,EACd,OAA8B,EAC9B,eAAmC,EACnC,KAAc;QAEd,OAAO,IAAI,iBAAiB,CAC1B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,IAAI,EACJ,OAAO,EACP,eAAe,EACf,KAAK,CACN,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"planner-source.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-source.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,GAElB,MAAM,yBAAyB,CAAC;AAKjC,MAAM,OAAO,aAAa;IACf,IAAI,CAAS;IACb,MAAM,CAAsB;IAErC,YAAY,IAAY,EAAE,KAA0B;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,OAAO,CACL,IAAc,EACd,OAA8B,EAC9B,MAAe,EACf,eAAmC,EACnC,KAAc;QAEd,OAAO,IAAI,iBAAiB,CAC1B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,IAAI,EACJ,OAAO,EACP,MAAM,EACN,eAAe,EACf,KAAK,CACN,CAAC;IACJ,CAAC;CACF"}
@@ -1,12 +1,13 @@
1
+ import type { PlanDebugger } from './planner-debug.ts';
1
2
  import type { CostEstimate, JoinOrConnection, PlannerNode } from './planner-node.ts';
2
3
  export declare class PlannerTerminus {
3
4
  #private;
4
5
  readonly kind: "terminus";
5
- constructor(input: PlannerNode);
6
+ constructor(input: Exclude<PlannerNode, PlannerTerminus>);
6
7
  get pinned(): boolean;
7
8
  closestJoinOrSource(): JoinOrConnection;
8
- propagateConstraints(): void;
9
- estimateCost(): CostEstimate;
9
+ propagateConstraints(planDebugger?: PlanDebugger): void;
10
+ estimateCost(planDebugger?: PlanDebugger): CostEstimate;
10
11
  /**
11
12
  * Propagate unlimiting when a parent join is flipped.
12
13
  * Terminus doesn't participate in unlimiting.
@@ -1 +1 @@
1
- {"version":3,"file":"planner-terminus.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-terminus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,eAAe;;IAC1B,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;gBAGxB,KAAK,EAAE,WAAW;IAI9B,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,oBAAoB,IAAI,IAAI;IAI5B,YAAY,IAAI,YAAY;IAK5B;;;OAGG;IACH,+BAA+B,IAAI,IAAI;CAGxC"}
1
+ {"version":3,"file":"planner-terminus.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-terminus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,eAAe;;IAC1B,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;gBAGxB,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC;IAIxD,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,mBAAmB,IAAI,gBAAgB;IAIvC,oBAAoB,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;IAIvD,YAAY,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,YAAY;IAKvD;;;OAGG;IACH,+BAA+B,IAAI,IAAI;CAGxC"}
@@ -10,12 +10,12 @@ export class PlannerTerminus {
10
10
  closestJoinOrSource() {
11
11
  return this.#input.closestJoinOrSource();
12
12
  }
13
- propagateConstraints() {
14
- this.#input.propagateConstraints([], undefined, this);
13
+ propagateConstraints(planDebugger) {
14
+ this.#input.propagateConstraints([], undefined, this, planDebugger);
15
15
  }
16
- estimateCost() {
16
+ estimateCost(planDebugger) {
17
17
  // Terminus starts the cost estimation flow with empty branch pattern
18
- return this.#input.estimateCost([]);
18
+ return this.#input.estimateCost(1, [], planDebugger);
19
19
  }
20
20
  /**
21
21
  * Propagate unlimiting when a parent join is flipped.
@@ -1 +1 @@
1
- {"version":3,"file":"planner-terminus.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-terminus.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,UAAmB,CAAC;IAC3B,MAAM,CAAc;IAE7B,YAAY,KAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC3C,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,YAAY;QACV,qEAAqE;QACrE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,+BAA+B;QAC7B,mDAAmD;IACrD,CAAC;CACF"}
1
+ {"version":3,"file":"planner-terminus.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-terminus.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,UAAmB,CAAC;IAC3B,MAAM,CAAwC;IAEvD,YAAY,KAA4C;QACtD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC3C,CAAC;IAED,oBAAoB,CAAC,YAA2B;QAC9C,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtE,CAAC;IAED,YAAY,CAAC,YAA2B;QACtC,qEAAqE;QACrE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,+BAA+B;QAC7B,mDAAmD;IACrD,CAAC;CACF"}
@@ -0,0 +1,35 @@
1
+ import type { SimpleOperator } from '../../../zero-protocol/src/ast.ts';
2
+ import type { Schema } from '../../../zero-types/src/schema.ts';
3
+ import type { ExpressionFactory, ParameterReference } from './expression.ts';
4
+ import type { AvailableRelationships, DestTableName, ExistsOptions, GetFilterType, NoCompoundTypeSelector, PullRow, PullTableSchema, Query } from './query.ts';
5
+ /**
6
+ * Function type for chaining one query to another.
7
+ */
8
+ type ChainQuery<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn1, TReturn2, TContext> = (q: Query<TSchema, TTable, TReturn1, TContext>) => Query<TSchema, TTable, TReturn2, TContext>;
9
+ export type AnyChainQuery = ChainQuery<Schema, string, PullRow<string, Schema>, PullRow<string, Schema>, unknown>;
10
+ /**
11
+ * Chained query that applies a transformation function to a parent query.
12
+ * This represents a query operation that builds on top of another query.
13
+ */
14
+ export declare class ChainedQuery<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext> implements Query<TSchema, TTable, TReturn, TContext> {
15
+ #private;
16
+ constructor(parent: {
17
+ withContext(ctx: TContext): Query<TSchema, TTable, unknown>;
18
+ }, chainFn: AnyChainQuery);
19
+ withContext(ctx: TContext): Query<TSchema, TTable, TReturn>;
20
+ one(): ChainedQuery<TSchema, TTable, TReturn | undefined, TContext>;
21
+ whereExists<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship, options?: ExistsOptions): ChainedQuery<TSchema, TTable, TReturn, TContext>;
22
+ whereExists<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship, cb: (q: Query<TSchema, DestTableName<TTable, TSchema, TRelationship>, TContext>) => Query<TSchema, string, TContext>, options?: ExistsOptions): ChainedQuery<TSchema, TTable, TReturn, TContext>;
23
+ related<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship): ChainedQuery<TSchema, TTable, TReturn & Record<string, unknown>, TContext>;
24
+ related<TRelationship extends AvailableRelationships<TTable, TSchema>, TSub extends Query<TSchema, string, unknown>>(relationship: TRelationship, cb: (q: Query<TSchema, DestTableName<TTable, TSchema, TRelationship>, TContext>) => TSub): ChainedQuery<TSchema, TTable, TReturn & Record<string, unknown>, TContext>;
25
+ where<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>, TOperator extends SimpleOperator>(field: TSelector, op: TOperator, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, TOperator> | ParameterReference): ChainedQuery<TSchema, TTable, TReturn, TContext>;
26
+ where<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>>(field: TSelector, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, '='> | ParameterReference): ChainedQuery<TSchema, TTable, TReturn, TContext>;
27
+ where(expressionFactory: ExpressionFactory<TSchema, TTable>): ChainedQuery<TSchema, TTable, TReturn, TContext>;
28
+ start(row: Partial<PullRow<TTable, TSchema>>, opts?: {
29
+ inclusive: boolean;
30
+ }): ChainedQuery<TSchema, TTable, TReturn, TContext>;
31
+ limit(limit: number): ChainedQuery<TSchema, TTable, TReturn, TContext>;
32
+ orderBy<TSelector extends keyof PullTableSchema<TTable, TSchema>['columns']>(field: TSelector, direction: 'asc' | 'desc'): ChainedQuery<TSchema, TTable, TReturn, TContext>;
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=chained-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chained-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/chained-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ var _a;
2
+ /**
3
+ * Chained query that applies a transformation function to a parent query.
4
+ * This represents a query operation that builds on top of another query.
5
+ */
6
+ export class ChainedQuery {
7
+ #parent;
8
+ #chainFn;
9
+ #q;
10
+ constructor(parent, chainFn) {
11
+ this.#parent = parent;
12
+ this.#chainFn = chainFn;
13
+ }
14
+ withContext(ctx) {
15
+ if (this.#q) {
16
+ return this.#q;
17
+ }
18
+ // This is a chained query - get the parent query and apply the chain function
19
+ const parentQuery = this.#parent.withContext(ctx);
20
+ this.#q = this.#chainFn(parentQuery);
21
+ return this.#q;
22
+ }
23
+ #withChain(fn) {
24
+ return new _a(this, fn);
25
+ }
26
+ // Query interface methods
27
+ one() {
28
+ return this.#withChain(q => q.one());
29
+ }
30
+ whereExists(relationship, cbOrOptions, options) {
31
+ if (typeof cbOrOptions === 'function') {
32
+ return this.#withChain(q => q.whereExists(relationship, cbOrOptions, options));
33
+ }
34
+ return this.#withChain(q => q.whereExists(relationship, cbOrOptions));
35
+ }
36
+ related(relationship, cb) {
37
+ if (cb) {
38
+ return this.#withChain(q => q.related(relationship, cb));
39
+ }
40
+ return this.#withChain(q => q.related(relationship));
41
+ }
42
+ where(fieldOrExpressionFactory, opOrValue, value) {
43
+ if (typeof fieldOrExpressionFactory === 'function') {
44
+ return this.#withChain(q => q.where(fieldOrExpressionFactory));
45
+ }
46
+ if (value !== undefined) {
47
+ return this.#withChain(q =>
48
+ // Cast to bypass TypeScript's strict type checking - this proxy method needs runtime flexibility
49
+ q.where(fieldOrExpressionFactory, opOrValue, value));
50
+ }
51
+ return this.#withChain(q =>
52
+ // Cast to bypass TypeScript's strict type checking - this proxy method needs runtime flexibility
53
+ q.where(fieldOrExpressionFactory, opOrValue));
54
+ }
55
+ start(row, opts) {
56
+ return this.#withChain(q => q.start(row, opts));
57
+ }
58
+ limit(limit) {
59
+ return this.#withChain(q => q.limit(limit));
60
+ }
61
+ orderBy(field, direction) {
62
+ return this.#withChain(q => q.orderBy(field, direction));
63
+ }
64
+ }
65
+ _a = ChainedQuery;
66
+ //# sourceMappingURL=chained-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chained-query.js","sourceRoot":"","sources":["../../../../../zql/src/query/chained-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { StandardSchemaV1 } from '@standard-schema/spec';
2
+ import type { ReadonlyJSONValue } from '../../../shared/src/json.ts';
3
+ import type { Schema } from '../../../zero-types/src/schema.ts';
4
+ import type { Query } from './query.ts';
5
+ export type DefineQueryOptions<Input, Output> = {
6
+ validator?: StandardSchemaV1<Input, Output> | undefined;
7
+ };
8
+ /**
9
+ * Function type for root query functions that take context and args.
10
+ */
11
+ export type DefineQueryFunc<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TArgs> = (options: {
12
+ ctx: TContext;
13
+ args: TArgs;
14
+ }) => Query<TSchema, TTable, TReturn, TContext>;
15
+ export type NamedQueryFunction<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends ReadonlyJSONValue | undefined> = ([TOutput] extends [undefined] ? (() => Query<TSchema, TTable, TReturn, TContext>) & ((args: undefined) => Query<TSchema, TTable, TReturn, TContext>) : undefined extends TOutput ? (args?: TInput) => Query<TSchema, TTable, TReturn, TContext> : (args: TInput) => Query<TSchema, TTable, TReturn, TContext>) & {
16
+ queryName: TName;
17
+ };
18
+ export type AnyNamedQueryFunction = NamedQueryFunction<string, Schema, string, any, any, ReadonlyJSONValue | undefined, ReadonlyJSONValue | undefined>;
19
+ export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TArgs extends ReadonlyJSONValue | undefined>(name: TName, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TArgs>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TArgs, TArgs>;
20
+ export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends ReadonlyJSONValue | undefined = TOutput>(name: TName, options: DefineQueryOptions<TInput, TOutput>, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TOutput, TInput>;
21
+ export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TArgs extends ReadonlyJSONValue | undefined>(name: TName, options: {}, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TArgs>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TArgs, TArgs>;
22
+ /**
23
+ * Creates a type-safe query definition function that is parameterized by a
24
+ * custom context type.
25
+ *
26
+ * This utility allows you to define queries with explicit context typing,
27
+ * ensuring that the query function receives the correct context type. It
28
+ * returns a function that can be used to define named queries with schema,
29
+ * table, input, and output types.
30
+ *
31
+ * @typeParam TContext - The type of the context object that will be passed to
32
+ * the query function.
33
+ *
34
+ * @returns A function for defining named queries with the specified context
35
+ * type.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * const defineQuery = defineQueryWithContextType<MyContext>();
40
+ * const myQuery = defineQuery(
41
+ * "getUser",
42
+ * {validator: z.string()},
43
+ * ({ctx, args}) => {
44
+ * ctx satisfies MyContext;
45
+ * ...
46
+ * },
47
+ * );
48
+ * ```
49
+ */
50
+ export declare function defineQueryWithContextType<TContext>(): <TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TOutput extends ReadonlyJSONValue | undefined, TInput extends ReadonlyJSONValue | undefined = TOutput>(name: TName, optionsOrQueryFn: DefineQueryOptions<TInput, TOutput> | DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>, queryFn?: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>) => NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TOutput, TInput>;
51
+ //# sourceMappingURL=define-query.d.ts.map