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

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 (394) hide show
  1. package/out/{chunk-MXPHMVU7.js → chunk-COKJ5W7V.js} +2527 -540
  2. package/out/chunk-COKJ5W7V.js.map +7 -0
  3. package/out/{chunk-4RB4OYLQ.js → chunk-TJFNGO7E.js} +3 -2
  4. package/out/{chunk-BJ2CGCME.js → chunk-YWU2DZ23.js} +20 -4
  5. package/out/chunk-YWU2DZ23.js.map +7 -0
  6. package/out/{lazy-inspector-2SW772W4.js → lazy-inspector-OXIFYSSQ.js} +2 -2
  7. package/out/react.js +59 -28
  8. package/out/react.js.map +4 -4
  9. package/out/replicache/src/dag/lazy-store.d.ts +1 -1
  10. package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
  11. package/out/replicache/src/log-options.d.ts +1 -1
  12. package/out/replicache/src/log-options.d.ts.map +1 -1
  13. package/out/replicache/src/persist/collect-idb-databases.d.ts +3 -3
  14. package/out/replicache/src/persist/collect-idb-databases.d.ts.map +1 -1
  15. package/out/replicache/src/replicache-options.d.ts +1 -1
  16. package/out/replicache/src/replicache-options.d.ts.map +1 -1
  17. package/out/shared/src/error.d.ts +4 -0
  18. package/out/shared/src/error.d.ts.map +1 -0
  19. package/out/shared/src/error.js +70 -0
  20. package/out/shared/src/error.js.map +1 -0
  21. package/out/shared/src/options.d.ts +1 -1
  22. package/out/shared/src/options.d.ts.map +1 -1
  23. package/out/shared/src/promise-race.d.ts +17 -0
  24. package/out/shared/src/promise-race.d.ts.map +1 -0
  25. package/out/solid.js +61 -22
  26. package/out/solid.js.map +4 -4
  27. package/out/z2s/src/compiler.d.ts +1 -1
  28. package/out/z2s/src/compiler.d.ts.map +1 -1
  29. package/out/z2s/src/compiler.js +1 -1
  30. package/out/z2s/src/compiler.js.map +1 -1
  31. package/out/z2s/src/sql.d.ts.map +1 -1
  32. package/out/z2s/src/sql.js +1 -1
  33. package/out/z2s/src/sql.js.map +1 -1
  34. package/out/zero/package.json +6 -4
  35. package/out/zero/src/zero-out.d.ts +3 -0
  36. package/out/zero/src/zero-out.d.ts.map +1 -0
  37. package/out/zero/src/zero-out.js +13 -0
  38. package/out/zero/src/zero-out.js.map +1 -0
  39. package/out/zero-cache/src/config/zero-config.d.ts +12 -0
  40. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  41. package/out/zero-cache/src/config/zero-config.js +36 -0
  42. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  43. package/out/zero-cache/src/custom/fetch.d.ts +3 -1
  44. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  45. package/out/zero-cache/src/custom/fetch.js +104 -27
  46. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  47. package/out/zero-cache/src/custom-queries/transform-query.d.ts +2 -6
  48. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  49. package/out/zero-cache/src/custom-queries/transform-query.js +42 -41
  50. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  51. package/out/zero-cache/src/db/create.d.ts +4 -0
  52. package/out/zero-cache/src/db/create.d.ts.map +1 -1
  53. package/out/zero-cache/src/db/create.js +7 -9
  54. package/out/zero-cache/src/db/create.js.map +1 -1
  55. package/out/zero-cache/src/db/lite-tables.js +2 -2
  56. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  57. package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
  58. package/out/zero-cache/src/db/pg-to-lite.js +7 -6
  59. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  60. package/out/zero-cache/src/db/specs.d.ts +12 -12
  61. package/out/zero-cache/src/scripts/decommission.d.ts +50 -0
  62. package/out/zero-cache/src/scripts/decommission.d.ts.map +1 -0
  63. package/out/zero-cache/src/scripts/decommission.js +51 -0
  64. package/out/zero-cache/src/scripts/decommission.js.map +1 -0
  65. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  66. package/out/zero-cache/src/server/change-streamer.js +1 -1
  67. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  68. package/out/zero-cache/src/server/inspector-delegate.d.ts.map +1 -1
  69. package/out/zero-cache/src/server/inspector-delegate.js +6 -1
  70. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  71. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  72. package/out/zero-cache/src/server/syncer.js +1 -1
  73. package/out/zero-cache/src/server/syncer.js.map +1 -1
  74. package/out/zero-cache/src/services/change-source/pg/change-source.js +1 -0
  75. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  76. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +1 -1
  77. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +1 -1
  78. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +1 -1
  79. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  80. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +25 -25
  81. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +10 -10
  82. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +5 -5
  83. package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts +16 -16
  84. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +24 -24
  85. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +2 -1
  86. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  87. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +18 -2
  88. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  89. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +8 -8
  90. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  91. package/out/zero-cache/src/services/mutagen/mutagen.js +9 -7
  92. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  93. package/out/zero-cache/src/services/mutagen/pusher.d.ts +21 -25
  94. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  95. package/out/zero-cache/src/services/mutagen/pusher.js +78 -60
  96. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  97. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +3 -1
  98. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  99. package/out/zero-cache/src/services/view-syncer/client-handler.js +10 -6
  100. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  101. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  102. package/out/zero-cache/src/services/view-syncer/client-schema.js +6 -3
  103. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  104. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +4 -4
  105. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  106. package/out/zero-cache/src/services/view-syncer/cvr-store.js +15 -6
  107. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  108. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  109. package/out/zero-cache/src/services/view-syncer/cvr.js +4 -2
  110. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  111. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +1 -0
  112. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -1
  113. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +5 -0
  114. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  115. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts.map +1 -1
  116. package/out/zero-cache/src/services/view-syncer/key-columns.js +4 -2
  117. package/out/zero-cache/src/services/view-syncer/key-columns.js.map +1 -1
  118. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +1 -1
  119. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  120. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +19 -2
  121. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  122. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +7 -0
  123. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  124. package/out/zero-cache/src/services/view-syncer/view-syncer.js +91 -32
  125. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  126. package/out/zero-cache/src/types/error-with-level.d.ts +9 -0
  127. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -0
  128. package/out/zero-cache/src/types/error-with-level.js +24 -0
  129. package/out/zero-cache/src/types/error-with-level.js.map +1 -0
  130. package/out/zero-cache/src/types/lite.d.ts +15 -13
  131. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  132. package/out/zero-cache/src/types/lite.js +17 -5
  133. package/out/zero-cache/src/types/lite.js.map +1 -1
  134. package/out/zero-cache/src/types/pg-data-type.d.ts +73 -0
  135. package/out/zero-cache/src/types/pg-data-type.d.ts.map +1 -0
  136. package/out/zero-cache/src/types/pg-data-type.js +76 -0
  137. package/out/zero-cache/src/types/pg-data-type.js.map +1 -0
  138. package/out/zero-cache/src/types/pg.d.ts +1 -73
  139. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  140. package/out/zero-cache/src/types/pg.js +0 -77
  141. package/out/zero-cache/src/types/pg.js.map +1 -1
  142. package/out/zero-cache/src/types/processes.d.ts +1 -1
  143. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  144. package/out/zero-cache/src/types/processes.js.map +1 -1
  145. package/out/zero-cache/src/types/schema-versions.d.ts +7 -3
  146. package/out/zero-cache/src/types/schema-versions.d.ts.map +1 -1
  147. package/out/zero-cache/src/types/schema-versions.js +7 -5
  148. package/out/zero-cache/src/types/schema-versions.js.map +1 -1
  149. package/out/zero-cache/src/types/streams.d.ts +1 -1
  150. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  151. package/out/zero-cache/src/types/streams.js +19 -9
  152. package/out/zero-cache/src/types/streams.js.map +1 -1
  153. package/out/zero-cache/src/types/subscription.d.ts +17 -2
  154. package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
  155. package/out/zero-cache/src/types/subscription.js +42 -6
  156. package/out/zero-cache/src/types/subscription.js.map +1 -1
  157. package/out/zero-cache/src/types/websocket-handoff.d.ts +3 -3
  158. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  159. package/out/zero-cache/src/types/websocket-handoff.js +6 -4
  160. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  161. package/out/zero-cache/src/workers/connection.d.ts +6 -1
  162. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  163. package/out/zero-cache/src/workers/connection.js +26 -9
  164. package/out/zero-cache/src/workers/connection.js.map +1 -1
  165. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
  166. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +7 -1
  167. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  168. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  169. package/out/zero-cache/src/workers/syncer.js +22 -4
  170. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  171. package/out/zero-client/src/client/client-error-kind-enum.d.ts +8 -0
  172. package/out/zero-client/src/client/client-error-kind-enum.d.ts.map +1 -1
  173. package/out/zero-client/src/client/connection-manager.d.ts +82 -14
  174. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  175. package/out/zero-client/src/client/connection-status-enum.d.ts +4 -0
  176. package/out/zero-client/src/client/connection-status-enum.d.ts.map +1 -1
  177. package/out/zero-client/src/client/connection.d.ts +53 -0
  178. package/out/zero-client/src/client/connection.d.ts.map +1 -0
  179. package/out/zero-client/src/client/error.d.ts +51 -24
  180. package/out/zero-client/src/client/error.d.ts.map +1 -1
  181. package/out/zero-client/src/client/ivm-branch.d.ts +2 -2
  182. package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
  183. package/out/zero-client/src/client/metrics.d.ts +9 -0
  184. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  185. package/out/zero-client/src/client/mutation-tracker.d.ts +5 -4
  186. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  187. package/out/zero-client/src/client/options.d.ts +15 -18
  188. package/out/zero-client/src/client/options.d.ts.map +1 -1
  189. package/out/zero-client/src/client/query-manager.d.ts +5 -4
  190. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  191. package/out/zero-client/src/client/zero-rep.d.ts +3 -1
  192. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  193. package/out/zero-client/src/client/zero.d.ts +27 -5
  194. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  195. package/out/zero-client/src/mod.d.ts +12 -1
  196. package/out/zero-client/src/mod.d.ts.map +1 -1
  197. package/out/zero-client/src/types/query-result.d.ts +23 -0
  198. package/out/zero-client/src/types/query-result.d.ts.map +1 -0
  199. package/out/zero-protocol/src/application-error.d.ts +33 -0
  200. package/out/zero-protocol/src/application-error.d.ts.map +1 -0
  201. package/out/zero-protocol/src/application-error.js +37 -0
  202. package/out/zero-protocol/src/application-error.js.map +1 -0
  203. package/out/zero-protocol/src/custom-queries.d.ts +56 -53
  204. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  205. package/out/zero-protocol/src/custom-queries.js +16 -14
  206. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  207. package/out/zero-protocol/src/down.d.ts +8 -10
  208. package/out/zero-protocol/src/down.d.ts.map +1 -1
  209. package/out/zero-protocol/src/error-kind-enum.d.ts +65 -0
  210. package/out/zero-protocol/src/error-kind-enum.d.ts.map +1 -1
  211. package/out/zero-protocol/src/error-kind-enum.js +2 -0
  212. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  213. package/out/zero-protocol/src/error-origin-enum.d.ts +7 -0
  214. package/out/zero-protocol/src/error-origin-enum.d.ts.map +1 -0
  215. package/out/zero-protocol/src/error-origin-enum.js +4 -0
  216. package/out/zero-protocol/src/error-origin-enum.js.map +1 -0
  217. package/out/zero-protocol/src/error-origin.d.ts +5 -0
  218. package/out/zero-protocol/src/error-origin.d.ts.map +1 -0
  219. package/out/zero-protocol/src/error-origin.js +3 -0
  220. package/out/zero-protocol/src/error-origin.js.map +1 -0
  221. package/out/zero-protocol/src/error-reason-enum.d.ts +15 -0
  222. package/out/zero-protocol/src/error-reason-enum.d.ts.map +1 -0
  223. package/out/zero-protocol/src/error-reason-enum.js +8 -0
  224. package/out/zero-protocol/src/error-reason-enum.js.map +1 -0
  225. package/out/zero-protocol/src/error-reason.d.ts +5 -0
  226. package/out/zero-protocol/src/error-reason.d.ts.map +1 -0
  227. package/out/zero-protocol/src/error-reason.js +3 -0
  228. package/out/zero-protocol/src/error-reason.js.map +1 -0
  229. package/out/zero-protocol/src/error.d.ts +181 -1
  230. package/out/zero-protocol/src/error.d.ts.map +1 -1
  231. package/out/zero-protocol/src/error.js +71 -2
  232. package/out/zero-protocol/src/error.js.map +1 -1
  233. package/out/zero-protocol/src/mutation-id.d.ts +7 -0
  234. package/out/zero-protocol/src/mutation-id.d.ts.map +1 -0
  235. package/out/zero-protocol/src/mutation-id.js +6 -0
  236. package/out/zero-protocol/src/mutation-id.js.map +1 -0
  237. package/out/zero-protocol/src/mutations-patch.d.ts +6 -3
  238. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
  239. package/out/zero-protocol/src/mutations-patch.js +2 -1
  240. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  241. package/out/zero-protocol/src/poke.d.ts +2 -0
  242. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  243. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  244. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  245. package/out/zero-protocol/src/protocol-version.js +3 -1
  246. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  247. package/out/zero-protocol/src/push.d.ts +145 -13
  248. package/out/zero-protocol/src/push.d.ts.map +1 -1
  249. package/out/zero-protocol/src/push.js +35 -13
  250. package/out/zero-protocol/src/push.js.map +1 -1
  251. package/out/zero-react/src/mod.d.ts +7 -2
  252. package/out/zero-react/src/mod.d.ts.map +1 -1
  253. package/out/zero-react/src/use-query.d.ts +1 -21
  254. package/out/zero-react/src/use-query.d.ts.map +1 -1
  255. package/out/zero-react/src/use-zero-connection-state.d.ts +9 -0
  256. package/out/zero-react/src/use-zero-connection-state.d.ts.map +1 -0
  257. package/out/zero-react/src/use-zero-online.d.ts +2 -0
  258. package/out/zero-react/src/use-zero-online.d.ts.map +1 -1
  259. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  260. package/out/zero-server/src/mod.d.ts +5 -4
  261. package/out/zero-server/src/mod.d.ts.map +1 -1
  262. package/out/zero-server/src/mod.js +5 -4
  263. package/out/zero-server/src/mod.js.map +1 -1
  264. package/out/zero-server/src/process-mutations.d.ts +3 -3
  265. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  266. package/out/zero-server/src/process-mutations.js +181 -68
  267. package/out/zero-server/src/process-mutations.js.map +1 -1
  268. package/out/zero-server/src/queries/process-queries.d.ts +4 -3
  269. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  270. package/out/zero-server/src/queries/process-queries.js +85 -19
  271. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  272. package/out/zero-server/src/schema.js +1 -1
  273. package/out/zero-server/src/schema.js.map +1 -1
  274. package/out/zero-server/src/zql-database.d.ts +1 -1
  275. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  276. package/out/zero-server/src/zql-database.js.map +1 -1
  277. package/out/zero-solid/src/mod.d.ts +11 -2
  278. package/out/zero-solid/src/mod.d.ts.map +1 -1
  279. package/out/zero-solid/src/solid-view.d.ts +3 -23
  280. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  281. package/out/zero-solid/src/use-query.d.ts +1 -1
  282. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  283. package/out/zero-solid/src/use-zero-connection-state.d.ts +10 -0
  284. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -0
  285. package/out/zero-solid/src/use-zero-online.d.ts +1 -7
  286. package/out/zero-solid/src/use-zero-online.d.ts.map +1 -1
  287. package/out/zero-solid/src/use-zero.d.ts +1 -0
  288. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  289. package/out/zero.js +15 -3
  290. package/out/zql/src/builder/builder.d.ts +2 -1
  291. package/out/zql/src/builder/builder.d.ts.map +1 -1
  292. package/out/zql/src/builder/builder.js +5 -1
  293. package/out/zql/src/builder/builder.js.map +1 -1
  294. package/out/zql/src/ivm/data.d.ts +1 -1
  295. package/out/zql/src/ivm/data.d.ts.map +1 -1
  296. package/out/zql/src/ivm/data.js.map +1 -1
  297. package/out/zql/src/ivm/filter-push.d.ts +1 -1
  298. package/out/zql/src/ivm/filter-push.d.ts.map +1 -1
  299. package/out/zql/src/ivm/filter-push.js.map +1 -1
  300. package/out/zql/src/ivm/memory-source.d.ts +2 -2
  301. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  302. package/out/zql/src/ivm/memory-source.js.map +1 -1
  303. package/out/zql/src/ivm/source.d.ts +1 -1
  304. package/out/zql/src/ivm/source.d.ts.map +1 -1
  305. package/out/zql/src/ivm/take.d.ts +1 -1
  306. package/out/zql/src/ivm/take.d.ts.map +1 -1
  307. package/out/zql/src/ivm/take.js.map +1 -1
  308. package/out/zql/src/planner/planner-builder.d.ts +15 -0
  309. package/out/zql/src/planner/planner-builder.d.ts.map +1 -0
  310. package/out/zql/src/planner/planner-builder.js +180 -0
  311. package/out/zql/src/planner/planner-builder.js.map +1 -0
  312. package/out/zql/src/planner/planner-connection.d.ts +125 -0
  313. package/out/zql/src/planner/planner-connection.d.ts.map +1 -0
  314. package/out/zql/src/planner/planner-connection.js +257 -0
  315. package/out/zql/src/planner/planner-connection.js.map +1 -0
  316. package/out/zql/src/planner/planner-constraint.d.ts +14 -0
  317. package/out/zql/src/planner/planner-constraint.d.ts.map +1 -0
  318. package/out/zql/src/planner/planner-constraint.js +12 -0
  319. package/out/zql/src/planner/planner-constraint.js.map +1 -0
  320. package/out/zql/src/planner/planner-debug.d.ts +148 -0
  321. package/out/zql/src/planner/planner-debug.d.ts.map +1 -0
  322. package/out/zql/src/planner/planner-debug.js +176 -0
  323. package/out/zql/src/planner/planner-debug.js.map +1 -0
  324. package/out/zql/src/planner/planner-fan-in.d.ts +39 -0
  325. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -0
  326. package/out/zql/src/planner/planner-fan-in.js +167 -0
  327. package/out/zql/src/planner/planner-fan-in.js.map +1 -0
  328. package/out/zql/src/planner/planner-fan-out.d.ts +23 -0
  329. package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -0
  330. package/out/zql/src/planner/planner-fan-out.js +62 -0
  331. package/out/zql/src/planner/planner-fan-out.js.map +1 -0
  332. package/out/zql/src/planner/planner-graph.d.ts +103 -0
  333. package/out/zql/src/planner/planner-graph.d.ts.map +1 -0
  334. package/out/zql/src/planner/planner-graph.js +380 -0
  335. package/out/zql/src/planner/planner-graph.js.map +1 -0
  336. package/out/zql/src/planner/planner-join.d.ts +136 -0
  337. package/out/zql/src/planner/planner-join.d.ts.map +1 -0
  338. package/out/zql/src/planner/planner-join.js +329 -0
  339. package/out/zql/src/planner/planner-join.js.map +1 -0
  340. package/out/zql/src/planner/planner-node.d.ts +48 -0
  341. package/out/zql/src/planner/planner-node.d.ts.map +1 -0
  342. package/out/zql/src/planner/planner-node.js +2 -0
  343. package/out/zql/src/planner/planner-node.js.map +1 -0
  344. package/out/zql/src/planner/planner-source.d.ts +11 -0
  345. package/out/zql/src/planner/planner-source.d.ts.map +1 -0
  346. package/out/zql/src/planner/planner-source.js +13 -0
  347. package/out/zql/src/planner/planner-source.js.map +1 -0
  348. package/out/zql/src/planner/planner-terminus.d.ts +17 -0
  349. package/out/zql/src/planner/planner-terminus.d.ts.map +1 -0
  350. package/out/zql/src/planner/planner-terminus.js +28 -0
  351. package/out/zql/src/planner/planner-terminus.js.map +1 -0
  352. package/out/zql/src/query/error.d.ts +4 -0
  353. package/out/zql/src/query/error.d.ts.map +1 -0
  354. package/out/zql/src/query/error.js +9 -0
  355. package/out/zql/src/query/error.js.map +1 -0
  356. package/out/zql/src/query/expression.d.ts +2 -2
  357. package/out/zql/src/query/expression.d.ts.map +1 -1
  358. package/out/zql/src/query/expression.js.map +1 -1
  359. package/out/zql/src/query/named.d.ts.map +1 -1
  360. package/out/zql/src/query/named.js +9 -1
  361. package/out/zql/src/query/named.js.map +1 -1
  362. package/out/zql/src/query/query-delegate.d.ts +3 -3
  363. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  364. package/out/zql/src/query/query-impl.d.ts +8 -8
  365. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  366. package/out/zql/src/query/query-impl.js.map +1 -1
  367. package/out/zql/src/query/query.d.ts +3 -3
  368. package/out/zql/src/query/query.d.ts.map +1 -1
  369. package/out/zql/src/query/static-query.d.ts +1 -1
  370. package/out/zql/src/query/static-query.d.ts.map +1 -1
  371. package/out/zql/src/query/static-query.js.map +1 -1
  372. package/out/zql/src/query/typed-view.d.ts +1 -1
  373. package/out/zql/src/query/typed-view.d.ts.map +1 -1
  374. package/out/zqlite/src/query-delegate.d.ts +1 -1
  375. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  376. package/out/zqlite/src/query-delegate.js.map +1 -1
  377. package/out/zqlite/src/sqlite-cost-model.d.ts +17 -0
  378. package/out/zqlite/src/sqlite-cost-model.d.ts.map +1 -0
  379. package/out/zqlite/src/sqlite-cost-model.js +134 -0
  380. package/out/zqlite/src/sqlite-cost-model.js.map +1 -0
  381. package/out/zqlite/src/table-source.d.ts +1 -1
  382. package/out/zqlite/src/table-source.d.ts.map +1 -1
  383. package/out/zqlite/src/table-source.js.map +1 -1
  384. package/package.json +6 -4
  385. package/out/chunk-BJ2CGCME.js.map +0 -7
  386. package/out/chunk-MXPHMVU7.js.map +0 -7
  387. package/out/zero-cache/src/types/error-for-client.d.ts +0 -23
  388. package/out/zero-cache/src/types/error-for-client.d.ts.map +0 -1
  389. package/out/zero-cache/src/types/error-for-client.js +0 -28
  390. package/out/zero-cache/src/types/error-for-client.js.map +0 -1
  391. package/out/zero-client/src/client/ping-result-enum.d.ts +0 -5
  392. package/out/zero-client/src/client/ping-result-enum.d.ts.map +0 -1
  393. /package/out/{chunk-4RB4OYLQ.js.map → chunk-TJFNGO7E.js.map} +0 -0
  394. /package/out/{lazy-inspector-2SW772W4.js.map → lazy-inspector-OXIFYSSQ.js.map} +0 -0
@@ -0,0 +1,257 @@
1
+ import { assert } from "../../../shared/src/asserts.js";
2
+ import { mergeConstraints, } from "./planner-constraint.js";
3
+ /**
4
+ * Represents a connection to a source (table scan).
5
+ *
6
+ * # Dual State Pattern
7
+ * Like all planner nodes, PlannerConnection separates:
8
+ * 1. immutable structure: Ordering, filters, cost model (set at construction)
9
+ * 2. mutable state: Pinned status, constraints (mutated during planning)
10
+ *
11
+ * # Cost Estimation
12
+ * The ordering and filters determine the initial cost. As planning progresses,
13
+ * constraints from parent joins refine the cost estimate.
14
+ *
15
+ * # Constraint Flow
16
+ * When a connection is pinned as the outer loop, it reveals constraints for
17
+ * connected joins. These constraints propagate through the graph, allowing
18
+ * other connections to update their cost estimates.
19
+ *
20
+ * Example:
21
+ *
22
+ * ```ts
23
+ * builder.issue.whereExists('assignee', a => a.where('name', 'Alice'))
24
+ * ```
25
+ *
26
+ * ```
27
+ * [issue] [assignee]
28
+ * | |
29
+ * | +-- where name = 'Alice'
30
+ * \ /
31
+ * \ /
32
+ * [join]
33
+ * |
34
+ * ```
35
+ *
36
+ * - Initial state: Both connections have no constraints, costs are unconstrained
37
+ * - If `issue` chosen first: Reveals constraint `assignee_id` for assignee connection
38
+ * - If `assignee` chosen first: Reveals constraint `assignee_id` for issue connection
39
+ * - Updated costs guide the next selection
40
+ *
41
+ * # Lifecycle
42
+ * 1. Construct with immutable structure (ordering, filters, cost model)
43
+ * 2. Wire to output node during graph construction
44
+ * 3. Planning mutates pinned status and accumulates constraints
45
+ * 4. reset() clears mutable state for replanning
46
+ */
47
+ export class PlannerConnection {
48
+ kind = 'connection';
49
+ // ========================================================================
50
+ // IMMUTABLE STRUCTURE (set during construction, never changes)
51
+ // ========================================================================
52
+ #sort;
53
+ #filters;
54
+ #model;
55
+ table;
56
+ name; // Human-readable name for debugging (defaults to table name)
57
+ #baseConstraints; // Constraints from parent correlation
58
+ #baseLimit; // Original limit from query structure (never modified)
59
+ selectivity; // Fraction of rows passing filters (1.0 = no filtering)
60
+ #output; // Set once during graph construction
61
+ // ========================================================================
62
+ // MUTABLE PLANNING STATE (changes during plan search)
63
+ // ========================================================================
64
+ /**
65
+ * Current limit during planning. Can be cleared (set to undefined) when a
66
+ * parent join is flipped, indicating this connection is now in an outer loop
67
+ * and should not be limited by EXISTS semantics.
68
+ */
69
+ limit;
70
+ /**
71
+ * Constraints accumulated from parent joins during planning.
72
+ * Key is a path through the graph (e.g., "0,1" for branch pattern [0,1]).
73
+ *
74
+ * Undefined constraints are possible when a FO converts to UFO and only
75
+ * a single join in the UFO is flipped - other branches report undefined.
76
+ */
77
+ #constraints;
78
+ #isRoot;
79
+ /**
80
+ * Cached per-constraint costs to avoid redundant cost model calls.
81
+ * Maps constraint key (branch pattern string) to computed cost.
82
+ * Invalidated when constraints change.
83
+ */
84
+ #cachedConstraintCosts = new Map();
85
+ constructor(table, model, sort, filters, isRoot, baseConstraints, limit, name) {
86
+ this.table = table;
87
+ this.name = name ?? table;
88
+ this.#sort = sort;
89
+ this.#filters = filters;
90
+ this.#model = model;
91
+ this.#baseConstraints = baseConstraints;
92
+ this.#baseLimit = limit;
93
+ this.limit = limit;
94
+ this.#constraints = new Map();
95
+ this.#isRoot = isRoot;
96
+ // Compute selectivity for EXISTS child connections (baseLimit === 1)
97
+ // Selectivity = fraction of rows that pass filters
98
+ if (limit !== undefined && filters) {
99
+ const costWithFilters = model(table, sort, filters, undefined);
100
+ const costWithoutFilters = model(table, sort, undefined, undefined);
101
+ this.selectivity =
102
+ costWithoutFilters.rows > 0
103
+ ? costWithFilters.rows / costWithoutFilters.rows
104
+ : 1.0;
105
+ }
106
+ else {
107
+ // Root connections or connections without filters
108
+ this.selectivity = 1.0;
109
+ }
110
+ }
111
+ setOutput(node) {
112
+ this.#output = node;
113
+ }
114
+ get output() {
115
+ assert(this.#output !== undefined, 'Output not set');
116
+ return this.#output;
117
+ }
118
+ closestJoinOrSource() {
119
+ return 'connection';
120
+ }
121
+ /**
122
+ * Constraints are uniquely identified by their path through the
123
+ * graph.
124
+ *
125
+ * FO represents all sub-joins as a single path.
126
+ * UFO represents each sub-join as a separate path.
127
+ * The first branch in a UFO will match the path of FO so no re-set needs to happen
128
+ * when swapping from FO to UFO.
129
+ *
130
+ * FO swaps to UFO when a join inside FO-FI gets flipped.
131
+ *
132
+ * The max of the last element of the paths is the number of
133
+ * root branches.
134
+ */
135
+ propagateConstraints(path, c, from, planDebugger) {
136
+ const key = path.join(',');
137
+ this.#constraints.set(key, c);
138
+ // Constraints changed, invalidate cost caches
139
+ this.#cachedConstraintCosts.clear();
140
+ planDebugger?.log({
141
+ type: 'node-constraint',
142
+ nodeType: 'connection',
143
+ node: this.name,
144
+ branchPattern: path,
145
+ constraint: c,
146
+ from: from?.kind ?? 'unknown',
147
+ });
148
+ }
149
+ estimateCost(downstreamChildSelectivity, branchPattern, planDebugger) {
150
+ // Branch pattern specified - return cost for this specific branch
151
+ const key = branchPattern.join(',');
152
+ // Check per-constraint cache first
153
+ let cost = this.#cachedConstraintCosts.get(key);
154
+ if (cost !== undefined) {
155
+ return cost;
156
+ }
157
+ // Cache miss - compute and cache
158
+ const constraint = this.#constraints.get(key);
159
+ // Merge base constraints with propagated constraints
160
+ const mergedConstraint = mergeConstraints(this.#baseConstraints, constraint);
161
+ const { startupCost, rows } = this.#model(this.table, this.#sort, this.#filters, mergedConstraint);
162
+ cost = {
163
+ startupCost,
164
+ scanEst: this.limit === undefined
165
+ ? rows
166
+ : Math.min(rows, this.limit / downstreamChildSelectivity),
167
+ cost: 0,
168
+ returnedRows: rows,
169
+ selectivity: this.selectivity,
170
+ limit: this.limit,
171
+ };
172
+ this.#cachedConstraintCosts.set(key, cost);
173
+ planDebugger?.log({
174
+ type: 'node-cost',
175
+ nodeType: 'connection',
176
+ node: this.name,
177
+ branchPattern,
178
+ downstreamChildSelectivity,
179
+ costEstimate: cost,
180
+ filters: this.#filters,
181
+ });
182
+ return cost;
183
+ }
184
+ /**
185
+ * Remove the limit from this connection.
186
+ * Called when a parent join is flipped, making this connection part of an
187
+ * outer loop that should produce all rows rather than stopping at the limit.
188
+ */
189
+ unlimit() {
190
+ if (this.#isRoot) {
191
+ // We cannot unlimit root connections
192
+ return;
193
+ }
194
+ if (this.limit !== undefined) {
195
+ this.limit = undefined;
196
+ // Limit changes do not impact connection costs.
197
+ // Limit is taken into account at the join level.
198
+ // Given that, we do not need to invalidate cost caches here.
199
+ }
200
+ }
201
+ /**
202
+ * Propagate unlimiting when a parent join is flipped.
203
+ * For connections, we simply remove the limit.
204
+ */
205
+ propagateUnlimitFromFlippedJoin() {
206
+ this.unlimit();
207
+ }
208
+ reset() {
209
+ this.#constraints.clear();
210
+ this.limit = this.#baseLimit;
211
+ // Clear all cost caches
212
+ this.#cachedConstraintCosts.clear();
213
+ }
214
+ /**
215
+ * Capture constraint state for snapshotting.
216
+ * Used by PlannerGraph to save/restore planning state.
217
+ */
218
+ captureConstraints() {
219
+ return new Map(this.#constraints);
220
+ }
221
+ /**
222
+ * Restore constraint state from a snapshot.
223
+ * Used by PlannerGraph to restore planning state.
224
+ */
225
+ restoreConstraints(constraints) {
226
+ this.#constraints.clear();
227
+ for (const [key, value] of constraints) {
228
+ this.#constraints.set(key, value);
229
+ }
230
+ // Constraints changed, invalidate cost caches
231
+ this.#cachedConstraintCosts.clear();
232
+ }
233
+ /**
234
+ * Get current constraints for debugging.
235
+ * Returns a copy of the constraints map.
236
+ */
237
+ getConstraintsForDebug() {
238
+ return new Map(this.#constraints);
239
+ }
240
+ /**
241
+ * Get filters for debugging.
242
+ * Returns the filters applied to this connection.
243
+ */
244
+ getFiltersForDebug() {
245
+ return this.#filters;
246
+ }
247
+ /**
248
+ * Get estimated cost for each constraint branch.
249
+ * Returns a map of constraint key to cost estimate.
250
+ * Forces cost calculation if not already cached.
251
+ */
252
+ getConstraintCostsForDebug() {
253
+ // Return copy of cached costs
254
+ return new Map(this.#cachedConstraintCosts);
255
+ }
256
+ }
257
+ //# sourceMappingURL=planner-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-connection.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * We do not know the value a constraint will take until runtime.
3
+ *
4
+ * However, we do know the column.
5
+ *
6
+ * E.g., we know that `issue.assignee_id` will be constrained to typeof issue.assignee_id.
7
+ */
8
+ export type PlannerConstraint = Record<string, undefined>;
9
+ /**
10
+ * Multiple flipped joins will contribute extra constraints to a parent join.
11
+ * These need to be merged.
12
+ */
13
+ export declare function mergeConstraints(a: PlannerConstraint | undefined, b: PlannerConstraint | undefined): PlannerConstraint | undefined;
14
+ //# sourceMappingURL=planner-constraint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-constraint.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-constraint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,iBAAiB,GAAG,SAAS,EAChC,CAAC,EAAE,iBAAiB,GAAG,SAAS,GAC/B,iBAAiB,GAAG,SAAS,CAI/B"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Multiple flipped joins will contribute extra constraints to a parent join.
3
+ * These need to be merged.
4
+ */
5
+ export function mergeConstraints(a, b) {
6
+ if (!a)
7
+ return b;
8
+ if (!b)
9
+ return a;
10
+ return { ...a, ...b };
11
+ }
12
+ //# sourceMappingURL=planner-constraint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-constraint.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-constraint.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAAgC,EAChC,CAAgC;IAEhC,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,OAAO,EAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAC,CAAC;AACtB,CAAC"}
@@ -0,0 +1,148 @@
1
+ import type { Condition } from '../../../zero-protocol/src/ast.ts';
2
+ import type { PlannerConstraint } from './planner-constraint.ts';
3
+ import type { CostEstimate, JoinType } from './planner-node.ts';
4
+ /**
5
+ * Structured debug events emitted during query planning.
6
+ * These events can be accumulated, printed, or analyzed to understand
7
+ * the planner's decision-making process.
8
+ */
9
+ /**
10
+ * Starting a new planning attempt with a different root connection.
11
+ */
12
+ export type AttemptStartEvent = {
13
+ type: 'attempt-start';
14
+ attemptNumber: number;
15
+ totalAttempts: number;
16
+ };
17
+ /**
18
+ * Snapshot of connection costs before selecting the next connection.
19
+ */
20
+ export type ConnectionCostsEvent = {
21
+ type: 'connection-costs';
22
+ attemptNumber: number;
23
+ costs: Array<{
24
+ connection: string;
25
+ cost: number;
26
+ costEstimate: CostEstimate;
27
+ pinned: boolean;
28
+ constraints: Map<string, PlannerConstraint | undefined>;
29
+ constraintCosts: Map<string, CostEstimate>;
30
+ }>;
31
+ };
32
+ /**
33
+ * A connection was chosen and pinned.
34
+ */
35
+ export type ConnectionSelectedEvent = {
36
+ type: 'connection-selected';
37
+ attemptNumber: number;
38
+ connection: string;
39
+ cost: number;
40
+ isRoot: boolean;
41
+ };
42
+ /**
43
+ * Constraints have been propagated through the graph.
44
+ */
45
+ export type ConstraintsPropagatedEvent = {
46
+ type: 'constraints-propagated';
47
+ attemptNumber: number;
48
+ connectionConstraints: Array<{
49
+ connection: string;
50
+ constraints: Map<string, PlannerConstraint | undefined>;
51
+ constraintCosts: Map<string, CostEstimate>;
52
+ }>;
53
+ };
54
+ /**
55
+ * A complete plan was found for this attempt.
56
+ */
57
+ export type PlanCompleteEvent = {
58
+ type: 'plan-complete';
59
+ attemptNumber: number;
60
+ totalCost: number;
61
+ flipPattern: number;
62
+ joinStates: Array<{
63
+ join: string;
64
+ type: JoinType;
65
+ }>;
66
+ planSnapshot?: unknown;
67
+ };
68
+ /**
69
+ * Planning attempt failed (e.g., unflippable join).
70
+ */
71
+ export type PlanFailedEvent = {
72
+ type: 'plan-failed';
73
+ attemptNumber: number;
74
+ reason: string;
75
+ };
76
+ /**
77
+ * The best plan across all attempts was selected.
78
+ */
79
+ export type BestPlanSelectedEvent = {
80
+ type: 'best-plan-selected';
81
+ bestAttemptNumber: number;
82
+ totalCost: number;
83
+ flipPattern: number;
84
+ joinStates: Array<{
85
+ join: string;
86
+ type: JoinType;
87
+ }>;
88
+ };
89
+ /**
90
+ * A node computed its cost estimate during planning.
91
+ * Emitted by nodes during estimateCost() traversal.
92
+ * attemptNumber is added by the debugger.
93
+ */
94
+ export type NodeCostEvent = {
95
+ type: 'node-cost';
96
+ attemptNumber?: number;
97
+ nodeType: 'connection' | 'join' | 'fan-out' | 'fan-in' | 'terminus';
98
+ node: string;
99
+ branchPattern: number[];
100
+ downstreamChildSelectivity: number;
101
+ costEstimate: CostEstimate;
102
+ filters?: Condition | undefined;
103
+ joinType?: JoinType | undefined;
104
+ };
105
+ /**
106
+ * A node received constraints during constraint propagation.
107
+ * Emitted by nodes during propagateConstraints() traversal.
108
+ * attemptNumber is added by the debugger.
109
+ */
110
+ export type NodeConstraintEvent = {
111
+ type: 'node-constraint';
112
+ attemptNumber?: number;
113
+ nodeType: 'connection' | 'join' | 'fan-out' | 'fan-in' | 'terminus';
114
+ node: string;
115
+ branchPattern: number[];
116
+ constraint: PlannerConstraint | undefined;
117
+ from: string;
118
+ };
119
+ /**
120
+ * Union of all debug event types.
121
+ */
122
+ export type PlanDebugEvent = AttemptStartEvent | ConnectionCostsEvent | ConnectionSelectedEvent | ConstraintsPropagatedEvent | PlanCompleteEvent | PlanFailedEvent | BestPlanSelectedEvent | NodeCostEvent | NodeConstraintEvent;
123
+ /**
124
+ * Interface for objects that receive debug events during planning.
125
+ */
126
+ export interface PlanDebugger {
127
+ log(event: PlanDebugEvent): void;
128
+ }
129
+ /**
130
+ * Simple accumulator debugger that stores all events.
131
+ * Useful for tests and debugging.
132
+ */
133
+ export declare class AccumulatorDebugger implements PlanDebugger {
134
+ readonly events: PlanDebugEvent[];
135
+ private currentAttempt;
136
+ log(event: PlanDebugEvent): void;
137
+ /**
138
+ * Get all events of a specific type.
139
+ */
140
+ getEvents<T extends PlanDebugEvent['type']>(type: T): Extract<PlanDebugEvent, {
141
+ type: T;
142
+ }>[];
143
+ /**
144
+ * Format events as a human-readable string.
145
+ */
146
+ format(): string;
147
+ }
148
+ //# sourceMappingURL=planner-debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-debug.d.ts","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-debug.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Simple accumulator debugger that stores all events.
3
+ * Useful for tests and debugging.
4
+ */
5
+ export class AccumulatorDebugger {
6
+ events = [];
7
+ currentAttempt = 0;
8
+ log(event) {
9
+ // Track current attempt number
10
+ if (event.type === 'attempt-start') {
11
+ this.currentAttempt = event.attemptNumber;
12
+ }
13
+ // Add attempt number to node events
14
+ if (event.type === 'node-cost' || event.type === 'node-constraint') {
15
+ event.attemptNumber =
16
+ this.currentAttempt;
17
+ }
18
+ this.events.push(event);
19
+ }
20
+ /**
21
+ * Get all events of a specific type.
22
+ */
23
+ getEvents(type) {
24
+ return this.events.filter(e => e.type === type);
25
+ }
26
+ /**
27
+ * Format events as a human-readable string.
28
+ */
29
+ format() {
30
+ const lines = [];
31
+ // Group events by attempt
32
+ const eventsByAttempt = new Map();
33
+ let bestPlanEvent;
34
+ for (const event of this.events) {
35
+ if ('attemptNumber' in event) {
36
+ const attempt = event.attemptNumber;
37
+ let attemptEvents = eventsByAttempt.get(attempt);
38
+ if (!attemptEvents) {
39
+ attemptEvents = [];
40
+ eventsByAttempt.set(attempt, attemptEvents);
41
+ }
42
+ attemptEvents.push(event);
43
+ }
44
+ else if (event.type === 'best-plan-selected') {
45
+ // Save for displaying at the end
46
+ bestPlanEvent = event;
47
+ }
48
+ }
49
+ // Format each attempt as a compact summary
50
+ for (const [attemptNum, events] of eventsByAttempt.entries()) {
51
+ lines.push(...formatAttemptSummary(attemptNum, events));
52
+ lines.push(''); // Blank line between attempts
53
+ }
54
+ // Show the final plan selection
55
+ if (bestPlanEvent) {
56
+ lines.push('─'.repeat(60));
57
+ lines.push(`✓ Best plan: Attempt ${bestPlanEvent.bestAttemptNumber + 1} (cost=${bestPlanEvent.totalCost.toFixed(2)})`);
58
+ if (bestPlanEvent.joinStates.length > 0) {
59
+ lines.push(' Join types:');
60
+ for (const j of bestPlanEvent.joinStates) {
61
+ lines.push(` ${j.join}: ${j.type}`);
62
+ }
63
+ }
64
+ lines.push('─'.repeat(60));
65
+ }
66
+ return lines.join('\n');
67
+ }
68
+ }
69
+ /**
70
+ * Format a constraint object as a human-readable string.
71
+ */
72
+ function formatConstraint(constraint) {
73
+ if (!constraint)
74
+ return '{}';
75
+ const keys = Object.keys(constraint);
76
+ if (keys.length === 0)
77
+ return '{}';
78
+ return '{' + keys.join(', ') + '}';
79
+ }
80
+ /**
81
+ * Format a Condition (filter) as a human-readable string.
82
+ */
83
+ function formatFilter(filter) {
84
+ if (!filter)
85
+ return 'none';
86
+ switch (filter.type) {
87
+ case 'simple':
88
+ return `${filter.left.type === 'column' ? filter.left.name : JSON.stringify(filter.left)} ${filter.op} ${filter.right.type === 'literal' ? JSON.stringify(filter.right.value) : JSON.stringify(filter.right)}`;
89
+ case 'and':
90
+ return `(${filter.conditions.map(formatFilter).join(' AND ')})`;
91
+ case 'or':
92
+ return `(${filter.conditions.map(formatFilter).join(' OR ')})`;
93
+ case 'correlatedSubquery':
94
+ return `EXISTS(${filter.related.subquery.table})`;
95
+ default:
96
+ return JSON.stringify(filter);
97
+ }
98
+ }
99
+ /**
100
+ * Format a compact summary for a single planning attempt.
101
+ */
102
+ function formatAttemptSummary(attemptNum, events) {
103
+ const lines = [];
104
+ // Find the attempt-start event to get total attempts
105
+ const startEvent = events.find(e => e.type === 'attempt-start');
106
+ const totalAttempts = startEvent?.totalAttempts ?? '?';
107
+ // Calculate number of bits needed for pattern
108
+ const numBits = typeof totalAttempts === 'number'
109
+ ? Math.ceil(Math.log2(totalAttempts)) || 1
110
+ : 1;
111
+ const bitPattern = attemptNum.toString(2).padStart(numBits, '0');
112
+ lines.push(`[Attempt ${attemptNum + 1}/${totalAttempts}] Pattern ${attemptNum} (${bitPattern})`);
113
+ // Collect connection costs (use array to preserve all connections, including duplicates)
114
+ const connectionCostEvents = [];
115
+ const connectionConstraintEvents = [];
116
+ for (const event of events) {
117
+ if (event.type === 'node-cost' && event.nodeType === 'connection') {
118
+ connectionCostEvents.push(event);
119
+ }
120
+ if (event.type === 'node-constraint' && event.nodeType === 'connection') {
121
+ connectionConstraintEvents.push(event);
122
+ }
123
+ }
124
+ // Show connection summary
125
+ if (connectionCostEvents.length > 0) {
126
+ lines.push(' Connections:');
127
+ for (const cost of connectionCostEvents) {
128
+ // Find matching constraint event (same node name and branch pattern)
129
+ const constraint = connectionConstraintEvents.find(c => c.node === cost.node &&
130
+ c.branchPattern.join(',') === cost.branchPattern.join(','))?.constraint;
131
+ const constraintStr = formatConstraint(constraint);
132
+ const filterStr = formatFilter(cost.filters);
133
+ const limitStr = cost.costEstimate.limit !== undefined
134
+ ? cost.costEstimate.limit.toString()
135
+ : 'none';
136
+ lines.push(` ${cost.node}:`);
137
+ lines.push(` cost=${cost.costEstimate.cost.toFixed(2)}, startup=${cost.costEstimate.startupCost.toFixed(2)}, scan=${cost.costEstimate.scanEst.toFixed(2)}`);
138
+ lines.push(` rows=${cost.costEstimate.returnedRows.toFixed(2)}, selectivity=${cost.costEstimate.selectivity.toFixed(8)}, limit=${limitStr}`);
139
+ lines.push(` downstreamChildSelectivity=${cost.downstreamChildSelectivity.toFixed(8)}`);
140
+ lines.push(` constraints=${constraintStr}`);
141
+ lines.push(` filters=${filterStr}`);
142
+ }
143
+ }
144
+ // Collect join costs from node-cost events
145
+ const joinCosts = [];
146
+ for (const event of events) {
147
+ if (event.type === 'node-cost' && event.nodeType === 'join') {
148
+ joinCosts.push(event);
149
+ }
150
+ }
151
+ if (joinCosts.length > 0) {
152
+ lines.push(' Joins:');
153
+ for (const cost of joinCosts) {
154
+ const typeStr = cost.joinType ? ` (${cost.joinType})` : '';
155
+ const limitStr = cost.costEstimate.limit !== undefined
156
+ ? cost.costEstimate.limit.toString()
157
+ : 'none';
158
+ lines.push(` ${cost.node}${typeStr}:`);
159
+ lines.push(` cost=${cost.costEstimate.cost.toFixed(2)}, startup=${cost.costEstimate.startupCost.toFixed(2)}, scan=${cost.costEstimate.scanEst.toFixed(2)}`);
160
+ lines.push(` rows=${cost.costEstimate.returnedRows.toFixed(2)}, selectivity=${cost.costEstimate.selectivity.toFixed(8)}, limit=${limitStr}`);
161
+ lines.push(` downstreamChildSelectivity=${cost.downstreamChildSelectivity.toFixed(8)}`);
162
+ }
163
+ }
164
+ // Find completion/failure events
165
+ const completeEvent = events.find(e => e.type === 'plan-complete');
166
+ const failedEvent = events.find(e => e.type === 'plan-failed');
167
+ // Show final status
168
+ if (completeEvent) {
169
+ lines.push(` ✓ Plan complete: total cost = ${completeEvent.totalCost.toFixed(2)}`);
170
+ }
171
+ else if (failedEvent) {
172
+ lines.push(` ✗ Plan failed: ${failedEvent.reason}`);
173
+ }
174
+ return lines;
175
+ }
176
+ //# sourceMappingURL=planner-debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner-debug.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-debug.ts"],"names":[],"mappings":"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"}