@rocicorp/zero 1.12.0-canary.7 → 1.12.0-canary.9

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 (518) hide show
  1. package/out/replicache/src/btree/node.d.ts +0 -2
  2. package/out/replicache/src/btree/node.d.ts.map +1 -1
  3. package/out/replicache/src/btree/node.js.map +1 -1
  4. package/out/replicache/src/connection-loop.d.ts.map +1 -1
  5. package/out/replicache/src/connection-loop.js +1 -1
  6. package/out/replicache/src/connection-loop.js.map +1 -1
  7. package/out/replicache/src/db/commit.d.ts +0 -1
  8. package/out/replicache/src/db/commit.d.ts.map +1 -1
  9. package/out/replicache/src/db/commit.js +1 -1
  10. package/out/replicache/src/db/commit.js.map +1 -1
  11. package/out/replicache/src/db/write.d.ts +0 -2
  12. package/out/replicache/src/db/write.d.ts.map +1 -1
  13. package/out/replicache/src/db/write.js +1 -1
  14. package/out/replicache/src/db/write.js.map +1 -1
  15. package/out/replicache/src/deleted-clients.d.ts +0 -2
  16. package/out/replicache/src/deleted-clients.d.ts.map +1 -1
  17. package/out/replicache/src/deleted-clients.js +1 -1
  18. package/out/replicache/src/deleted-clients.js.map +1 -1
  19. package/out/replicache/src/frozen-json.d.ts +0 -1
  20. package/out/replicache/src/frozen-json.d.ts.map +1 -1
  21. package/out/replicache/src/frozen-json.js.map +1 -1
  22. package/out/replicache/src/index-defs.d.ts +0 -2
  23. package/out/replicache/src/index-defs.d.ts.map +1 -1
  24. package/out/replicache/src/index-defs.js +1 -1
  25. package/out/replicache/src/index-defs.js.map +1 -1
  26. package/out/replicache/src/kv/expo-sqlite/store.d.ts +0 -1
  27. package/out/replicache/src/kv/expo-sqlite/store.d.ts.map +1 -1
  28. package/out/replicache/src/kv/expo-sqlite/store.js +1 -1
  29. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
  30. package/out/replicache/src/kv/idb-store.js +1 -1
  31. package/out/replicache/src/kv/idb-store.js.map +1 -1
  32. package/out/replicache/src/kv/throw-if-closed.d.ts +0 -3
  33. package/out/replicache/src/kv/throw-if-closed.d.ts.map +1 -1
  34. package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
  35. package/out/replicache/src/persist/client-group-gc.d.ts +0 -7
  36. package/out/replicache/src/persist/client-group-gc.d.ts.map +1 -1
  37. package/out/replicache/src/persist/client-group-gc.js +1 -1
  38. package/out/replicache/src/persist/client-group-gc.js.map +1 -1
  39. package/out/replicache/src/process-scheduler.js +1 -1
  40. package/out/replicache/src/process-scheduler.js.map +1 -1
  41. package/out/replicache/src/replicache-impl.d.ts +2 -7
  42. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  43. package/out/replicache/src/replicache-impl.js +1 -1
  44. package/out/replicache/src/replicache-impl.js.map +1 -1
  45. package/out/replicache/src/sync/patch.d.ts +0 -5
  46. package/out/replicache/src/sync/patch.d.ts.map +1 -1
  47. package/out/replicache/src/sync/patch.js +1 -1
  48. package/out/replicache/src/sync/patch.js.map +1 -1
  49. package/out/replicache/src/sync/pull.d.ts +0 -1
  50. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  51. package/out/replicache/src/sync/pull.js.map +1 -1
  52. package/out/replicache/src/sync/push.d.ts +2 -1
  53. package/out/replicache/src/sync/push.d.ts.map +1 -1
  54. package/out/replicache/src/sync/push.js.map +1 -1
  55. package/out/replicache/src/types.d.ts +2 -1
  56. package/out/replicache/src/types.d.ts.map +1 -1
  57. package/out/shared/src/asserts.d.ts +0 -5
  58. package/out/shared/src/asserts.d.ts.map +1 -1
  59. package/out/shared/src/asserts.js +1 -1
  60. package/out/shared/src/asserts.js.map +1 -1
  61. package/out/shared/src/browser-env.d.ts +0 -17
  62. package/out/shared/src/browser-env.d.ts.map +1 -1
  63. package/out/shared/src/browser-env.js.map +1 -1
  64. package/out/shared/src/deep-clone.d.ts +0 -1
  65. package/out/shared/src/deep-clone.d.ts.map +1 -1
  66. package/out/shared/src/deep-clone.js +1 -1
  67. package/out/shared/src/deep-clone.js.map +1 -1
  68. package/out/shared/src/document-visible.js +1 -1
  69. package/out/shared/src/document-visible.js.map +1 -1
  70. package/out/shared/src/expand.d.ts +0 -3
  71. package/out/shared/src/expand.d.ts.map +1 -1
  72. package/out/shared/src/immutable.d.ts +1 -1
  73. package/out/shared/src/immutable.d.ts.map +1 -1
  74. package/out/shared/src/iterables.d.ts +0 -1
  75. package/out/shared/src/iterables.d.ts.map +1 -1
  76. package/out/shared/src/iterables.js.map +1 -1
  77. package/out/shared/src/logging-test-utils.js +1 -1
  78. package/out/shared/src/logging-test-utils.js.map +1 -1
  79. package/out/shared/src/options-types.d.ts +1 -1
  80. package/out/shared/src/options-types.d.ts.map +1 -1
  81. package/out/shared/src/options.d.ts +2 -3
  82. package/out/shared/src/options.d.ts.map +1 -1
  83. package/out/shared/src/options.js +1 -1
  84. package/out/shared/src/options.js.map +1 -1
  85. package/out/shared/src/promise-race.js +1 -1
  86. package/out/shared/src/promise-race.js.map +1 -1
  87. package/out/shared/src/queue.js +1 -1
  88. package/out/shared/src/queue.js.map +1 -1
  89. package/out/shared/src/resolved-promises.d.ts +0 -4
  90. package/out/shared/src/resolved-promises.d.ts.map +1 -1
  91. package/out/shared/src/resolved-promises.js +0 -1
  92. package/out/shared/src/resolved-promises.js.map +1 -1
  93. package/out/shared/src/resolver.d.ts +9 -0
  94. package/out/shared/src/resolver.d.ts.map +1 -0
  95. package/out/shared/src/resolver.js +6 -0
  96. package/out/shared/src/resolver.js.map +1 -0
  97. package/out/shared/src/sleep.js +1 -1
  98. package/out/shared/src/sleep.js.map +1 -1
  99. package/out/shared/src/tdigest.d.ts +0 -1
  100. package/out/shared/src/tdigest.d.ts.map +1 -1
  101. package/out/shared/src/tdigest.js.map +1 -1
  102. package/out/z2s/src/sql.d.ts +1 -5
  103. package/out/z2s/src/sql.d.ts.map +1 -1
  104. package/out/z2s/src/sql.js.map +1 -1
  105. package/out/zero/package.js +2 -3
  106. package/out/zero/package.js.map +1 -1
  107. package/out/zero/src/zero-cache-dev.js +1 -1
  108. package/out/zero/src/zero-cache-dev.js.map +1 -1
  109. package/out/zero-cache/src/config/zero-config.d.ts +14 -11
  110. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  111. package/out/zero-cache/src/config/zero-config.js +23 -0
  112. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  113. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  114. package/out/zero-cache/src/db/migration.js +1 -1
  115. package/out/zero-cache/src/db/migration.js.map +1 -1
  116. package/out/zero-cache/src/db/pg-copy-binary.js +1 -1
  117. package/out/zero-cache/src/db/pg-copy-binary.js.map +1 -1
  118. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  119. package/out/zero-cache/src/db/specs.d.ts +3 -4
  120. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  121. package/out/zero-cache/src/db/specs.js +5 -7
  122. package/out/zero-cache/src/db/specs.js.map +1 -1
  123. package/out/zero-cache/src/db/transaction-pool.js +2 -2
  124. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  125. package/out/zero-cache/src/observability/events.js +1 -1
  126. package/out/zero-cache/src/observability/events.js.map +1 -1
  127. package/out/zero-cache/src/server/change-streamer.js +1 -1
  128. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  129. package/out/zero-cache/src/server/main.js +1 -1
  130. package/out/zero-cache/src/server/main.js.map +1 -1
  131. package/out/zero-cache/src/server/runner/run-worker.js +1 -1
  132. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  133. package/out/zero-cache/src/services/change-source/common/backfill-manager.js +1 -1
  134. package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
  135. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +1 -1
  136. package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
  137. package/out/zero-cache/src/services/change-source/common/replica-restore.js.map +1 -1
  138. package/out/zero-cache/src/services/change-source/custom/change-source.js +1 -1
  139. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  140. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +1 -1
  141. package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
  142. package/out/zero-cache/src/services/change-source/pg/change-source.js +1 -1
  143. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  144. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +1 -1
  145. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  146. package/out/zero-cache/src/services/change-source/pg/lsn.d.ts +0 -2
  147. package/out/zero-cache/src/services/change-source/pg/lsn.d.ts.map +1 -1
  148. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  149. package/out/zero-cache/src/services/change-source/pg/replication-slots.js +1 -1
  150. package/out/zero-cache/src/services/change-source/pg/replication-slots.js.map +1 -1
  151. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +0 -12
  152. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -1
  153. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +5 -3
  154. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  155. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts +1 -1
  156. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts.map +1 -1
  157. package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.js.map +1 -1
  158. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts +0 -1
  159. package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts.map +1 -1
  160. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  161. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +1 -1
  162. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  163. package/out/zero-cache/src/services/change-streamer/broadcast.js +1 -1
  164. package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -1
  165. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +1 -1
  166. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  167. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +1 -1
  168. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  169. package/out/zero-cache/src/services/change-streamer/change-streamer.js +1 -1
  170. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  171. package/out/zero-cache/src/services/change-streamer/drain-tracker.js +1 -1
  172. package/out/zero-cache/src/services/change-streamer/drain-tracker.js.map +1 -1
  173. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js +2 -2
  174. package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js.map +1 -1
  175. package/out/zero-cache/src/services/change-streamer/restore-admission.js +2 -2
  176. package/out/zero-cache/src/services/change-streamer/restore-admission.js.map +1 -1
  177. package/out/zero-cache/src/services/change-streamer/schema/tables.js +1 -1
  178. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  179. package/out/zero-cache/src/services/change-streamer/snapshot-message.js +2 -3
  180. package/out/zero-cache/src/services/change-streamer/snapshot-message.js.map +1 -1
  181. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js +2 -2
  182. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js.map +1 -1
  183. package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.js.map +1 -1
  184. package/out/zero-cache/src/services/change-streamer/storer.js +1 -1
  185. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  186. package/out/zero-cache/src/services/change-streamer/subscribe.js +1 -1
  187. package/out/zero-cache/src/services/change-streamer/subscribe.js.map +1 -1
  188. package/out/zero-cache/src/services/change-streamer/subscriber.js +1 -1
  189. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  190. package/out/zero-cache/src/services/life-cycle.js +1 -1
  191. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  192. package/out/zero-cache/src/services/litestream/commands.js +1 -1
  193. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  194. package/out/zero-cache/src/services/litestream/metrics.js.map +1 -1
  195. package/out/zero-cache/src/services/mutagen/mutagen.js +2 -2
  196. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  197. package/out/zero-cache/src/services/mutagen/pusher.js +57 -14
  198. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  199. package/out/zero-cache/src/services/plannerz.d.ts +4 -12
  200. package/out/zero-cache/src/services/plannerz.d.ts.map +1 -1
  201. package/out/zero-cache/src/services/plannerz.js +1 -3
  202. package/out/zero-cache/src/services/plannerz.js.map +1 -1
  203. package/out/zero-cache/src/services/replicator/change-log-db.js +1 -1
  204. package/out/zero-cache/src/services/replicator/change-log-db.js.map +1 -1
  205. package/out/zero-cache/src/services/replicator/change-log-stream-writer.js +1 -1
  206. package/out/zero-cache/src/services/replicator/change-log-stream-writer.js.map +1 -1
  207. package/out/zero-cache/src/services/replicator/drain-handler.js +1 -1
  208. package/out/zero-cache/src/services/replicator/drain-handler.js.map +1 -1
  209. package/out/zero-cache/src/services/replicator/reporter/recorder.js +1 -1
  210. package/out/zero-cache/src/services/replicator/reporter/recorder.js.map +1 -1
  211. package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts +2 -11
  212. package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts.map +1 -1
  213. package/out/zero-cache/src/services/replicator/reporter/report-schema.js +1 -1
  214. package/out/zero-cache/src/services/replicator/reporter/report-schema.js.map +1 -1
  215. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +0 -10
  216. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  217. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  218. package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts +0 -7
  219. package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts.map +1 -1
  220. package/out/zero-cache/src/services/replicator/schema/column-metadata.js +1 -1
  221. package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
  222. package/out/zero-cache/src/services/replicator/write-worker-client.js +1 -1
  223. package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -1
  224. package/out/zero-cache/src/services/running-state.js +1 -1
  225. package/out/zero-cache/src/services/running-state.js.map +1 -1
  226. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  227. package/out/zero-cache/src/services/view-syncer/connection-context-manager.js.map +1 -1
  228. package/out/zero-cache/src/services/view-syncer/cvr-store.js +1 -1
  229. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  230. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  231. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +2 -2
  232. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  233. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  234. package/out/zero-cache/src/services/view-syncer/query-stats.js.map +1 -1
  235. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +1 -1
  236. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  237. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +1 -1
  238. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  239. package/out/zero-cache/src/services/view-syncer/schema/types.js +3 -17
  240. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  241. package/out/zero-cache/src/services/view-syncer/snapshotter.js +1 -1
  242. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  243. package/out/zero-cache/src/services/view-syncer/view-syncer.js +13 -10
  244. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  245. package/out/zero-cache/src/types/lite.d.ts +0 -1
  246. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  247. package/out/zero-cache/src/types/lite.js +2 -2
  248. package/out/zero-cache/src/types/lite.js.map +1 -1
  249. package/out/zero-cache/src/types/pg-types.d.ts +0 -40
  250. package/out/zero-cache/src/types/pg-types.d.ts.map +1 -1
  251. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  252. package/out/zero-cache/src/types/poke-chunk.js +1 -1
  253. package/out/zero-cache/src/types/poke-chunk.js.map +1 -1
  254. package/out/zero-cache/src/types/row-key.d.ts +0 -5
  255. package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
  256. package/out/zero-cache/src/types/row-key.js.map +1 -1
  257. package/out/zero-cache/src/types/streams.js +1 -1
  258. package/out/zero-cache/src/types/streams.js.map +1 -1
  259. package/out/zero-cache/src/types/subscription.js +1 -1
  260. package/out/zero-cache/src/types/subscription.js.map +1 -1
  261. package/out/zero-cache/src/types/websocket-handoff.d.ts +0 -6
  262. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  263. package/out/zero-cache/src/types/websocket-handoff.js +8 -2
  264. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  265. package/out/zero-cache/src/types/ws.d.ts +2 -1
  266. package/out/zero-cache/src/types/ws.d.ts.map +1 -1
  267. package/out/zero-cache/src/types/ws.js +1 -1
  268. package/out/zero-cache/src/types/ws.js.map +1 -1
  269. package/out/zero-cache/src/workers/connection.js +4 -1
  270. package/out/zero-cache/src/workers/connection.js.map +1 -1
  271. package/out/zero-cache/src/workers/mutator.js +1 -1
  272. package/out/zero-cache/src/workers/mutator.js.map +1 -1
  273. package/out/zero-cache/src/workers/syncer.js +45 -3
  274. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  275. package/out/zero-client/src/client/active-clients-manager.d.ts.map +1 -1
  276. package/out/zero-client/src/client/active-clients-manager.js +1 -1
  277. package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
  278. package/out/zero-client/src/client/connection-manager.js +1 -1
  279. package/out/zero-client/src/client/connection-manager.js.map +1 -1
  280. package/out/zero-client/src/client/crud.d.ts +2 -8
  281. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  282. package/out/zero-client/src/client/crud.js +1 -1
  283. package/out/zero-client/src/client/crud.js.map +1 -1
  284. package/out/zero-client/src/client/custom.d.ts +0 -2
  285. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  286. package/out/zero-client/src/client/custom.js +1 -1
  287. package/out/zero-client/src/client/custom.js.map +1 -1
  288. package/out/zero-client/src/client/enable-analytics.d.ts +0 -1
  289. package/out/zero-client/src/client/enable-analytics.d.ts.map +1 -1
  290. package/out/zero-client/src/client/enable-analytics.js +2 -1
  291. package/out/zero-client/src/client/enable-analytics.js.map +1 -1
  292. package/out/zero-client/src/client/error.d.ts +4 -5
  293. package/out/zero-client/src/client/error.d.ts.map +1 -1
  294. package/out/zero-client/src/client/error.js.map +1 -1
  295. package/out/zero-client/src/client/keys.d.ts +0 -1
  296. package/out/zero-client/src/client/keys.d.ts.map +1 -1
  297. package/out/zero-client/src/client/keys.js +4 -2
  298. package/out/zero-client/src/client/keys.js.map +1 -1
  299. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  300. package/out/zero-client/src/client/mutation-tracker.js +1 -1
  301. package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
  302. package/out/zero-client/src/client/options.d.ts +0 -4
  303. package/out/zero-client/src/client/options.d.ts.map +1 -1
  304. package/out/zero-client/src/client/options.js.map +1 -1
  305. package/out/zero-client/src/client/replicache-types.d.ts +3 -2
  306. package/out/zero-client/src/client/replicache-types.d.ts.map +1 -1
  307. package/out/zero-client/src/client/version.js +1 -1
  308. package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -2
  309. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  310. package/out/zero-client/src/client/zero-poke-handler.js +1 -1
  311. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
  312. package/out/zero-client/src/client/zero.d.ts +1 -5
  313. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  314. package/out/zero-client/src/client/zero.js +1 -1
  315. package/out/zero-client/src/client/zero.js.map +1 -1
  316. package/out/zero-client/src/types/client-state.d.ts +0 -6
  317. package/out/zero-client/src/types/client-state.d.ts.map +1 -1
  318. package/out/zero-permissions/src/permissions.d.ts +1 -12
  319. package/out/zero-permissions/src/permissions.d.ts.map +1 -1
  320. package/out/zero-permissions/src/permissions.js +1 -2
  321. package/out/zero-permissions/src/permissions.js.map +1 -1
  322. package/out/zero-protocol/src/ast.d.ts +0 -4
  323. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  324. package/out/zero-protocol/src/ast.js +1 -2
  325. package/out/zero-protocol/src/ast.js.map +1 -1
  326. package/out/zero-protocol/src/change-desired-queries.d.ts +0 -20
  327. package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
  328. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  329. package/out/zero-protocol/src/client-schema.d.ts +2 -5
  330. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  331. package/out/zero-protocol/src/client-schema.js +1 -1
  332. package/out/zero-protocol/src/client-schema.js.map +1 -1
  333. package/out/zero-protocol/src/close-connection.d.ts +0 -8
  334. package/out/zero-protocol/src/close-connection.d.ts.map +1 -1
  335. package/out/zero-protocol/src/close-connection.js +1 -1
  336. package/out/zero-protocol/src/close-connection.js.map +1 -1
  337. package/out/zero-protocol/src/connect.d.ts +0 -12
  338. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  339. package/out/zero-protocol/src/connect.js +1 -1
  340. package/out/zero-protocol/src/connect.js.map +1 -1
  341. package/out/zero-protocol/src/custom-queries.d.ts +3 -17
  342. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  343. package/out/zero-protocol/src/custom-queries.js +1 -1
  344. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  345. package/out/zero-protocol/src/data.d.ts +0 -1
  346. package/out/zero-protocol/src/data.d.ts.map +1 -1
  347. package/out/zero-protocol/src/data.js +1 -1
  348. package/out/zero-protocol/src/data.js.map +1 -1
  349. package/out/zero-protocol/src/down.d.ts +27 -27
  350. package/out/zero-protocol/src/inspect-down.d.ts +82 -84
  351. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  352. package/out/zero-protocol/src/inspect-down.js +1 -1
  353. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  354. package/out/zero-protocol/src/inspect-up.d.ts +0 -28
  355. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  356. package/out/zero-protocol/src/inspect-up.js +1 -1
  357. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  358. package/out/zero-protocol/src/mutate-server.d.ts +0 -21
  359. package/out/zero-protocol/src/mutate-server.d.ts.map +1 -1
  360. package/out/zero-protocol/src/mutate-server.js +1 -1
  361. package/out/zero-protocol/src/mutate-server.js.map +1 -1
  362. package/out/zero-protocol/src/mutation-type-enum.d.ts +0 -1
  363. package/out/zero-protocol/src/mutation-type-enum.d.ts.map +1 -1
  364. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  365. package/out/zero-protocol/src/mutation.d.ts +2 -4
  366. package/out/zero-protocol/src/mutation.d.ts.map +1 -1
  367. package/out/zero-protocol/src/mutation.js +1 -1
  368. package/out/zero-protocol/src/mutation.js.map +1 -1
  369. package/out/zero-protocol/src/mutations-patch.d.ts +0 -33
  370. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
  371. package/out/zero-protocol/src/mutations-patch.js +1 -1
  372. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  373. package/out/zero-protocol/src/ping.d.ts +0 -2
  374. package/out/zero-protocol/src/ping.d.ts.map +1 -1
  375. package/out/zero-protocol/src/ping.js +1 -1
  376. package/out/zero-protocol/src/ping.js.map +1 -1
  377. package/out/zero-protocol/src/poke.d.ts +3 -2
  378. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  379. package/out/zero-protocol/src/poke.js +1 -1
  380. package/out/zero-protocol/src/poke.js.map +1 -1
  381. package/out/zero-protocol/src/pong.d.ts +0 -2
  382. package/out/zero-protocol/src/pong.d.ts.map +1 -1
  383. package/out/zero-protocol/src/pong.js +1 -1
  384. package/out/zero-protocol/src/pong.js.map +1 -1
  385. package/out/zero-protocol/src/pull.d.ts +2 -7
  386. package/out/zero-protocol/src/pull.d.ts.map +1 -1
  387. package/out/zero-protocol/src/pull.js +1 -1
  388. package/out/zero-protocol/src/pull.js.map +1 -1
  389. package/out/zero-protocol/src/push.d.ts +1 -3
  390. package/out/zero-protocol/src/push.d.ts.map +1 -1
  391. package/out/zero-protocol/src/push.js +1 -1
  392. package/out/zero-protocol/src/push.js.map +1 -1
  393. package/out/zero-protocol/src/queries-patch.d.ts +0 -16
  394. package/out/zero-protocol/src/queries-patch.d.ts.map +1 -1
  395. package/out/zero-protocol/src/queries-patch.js +1 -1
  396. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  397. package/out/zero-protocol/src/query-server.d.ts +2 -41
  398. package/out/zero-protocol/src/query-server.d.ts.map +1 -1
  399. package/out/zero-protocol/src/query-server.js +1 -1
  400. package/out/zero-protocol/src/query-server.js.map +1 -1
  401. package/out/zero-protocol/src/up.d.ts +42 -42
  402. package/out/zero-protocol/src/version.d.ts +0 -1
  403. package/out/zero-protocol/src/version.d.ts.map +1 -1
  404. package/out/zero-protocol/src/version.js.map +1 -1
  405. package/out/zero-react/src/use-query.js +1 -1
  406. package/out/zero-react/src/use-query.js.map +1 -1
  407. package/out/zero-schema/src/builder/relationship-builder.d.ts +0 -2
  408. package/out/zero-schema/src/builder/relationship-builder.d.ts.map +1 -1
  409. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
  410. package/out/zero-schema/src/builder/table-builder.d.ts +1 -1
  411. package/out/zero-schema/src/builder/table-builder.d.ts.map +1 -1
  412. package/out/zero-schema/src/builder/table-builder.js +1 -1
  413. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  414. package/out/zero-schema/src/schema-config.d.ts +0 -1
  415. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  416. package/out/zero-schema/src/schema-config.js +1 -1
  417. package/out/zero-schema/src/schema-config.js.map +1 -1
  418. package/out/zero-schema/src/table-schema.d.ts +3 -11
  419. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  420. package/out/zero-server/src/queries/process-queries.d.ts +2 -4
  421. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  422. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  423. package/out/zero-solid/src/solid-view.d.ts +0 -2
  424. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  425. package/out/zero-solid/src/solid-view.js +1 -1
  426. package/out/zero-solid/src/solid-view.js.map +1 -1
  427. package/out/zero-types/src/name-mapper.d.ts +2 -1
  428. package/out/zero-types/src/name-mapper.d.ts.map +1 -1
  429. package/out/zero-types/src/name-mapper.js.map +1 -1
  430. package/out/zero-types/src/schema-value.d.ts +3 -2
  431. package/out/zero-types/src/schema-value.d.ts.map +1 -1
  432. package/out/zero-types/src/schema.d.ts +1 -1
  433. package/out/zero-types/src/schema.d.ts.map +1 -1
  434. package/out/zql/src/builder/builder.d.ts +1 -11
  435. package/out/zql/src/builder/builder.d.ts.map +1 -1
  436. package/out/zql/src/builder/builder.js +1 -1
  437. package/out/zql/src/builder/builder.js.map +1 -1
  438. package/out/zql/src/builder/filter.d.ts +0 -1
  439. package/out/zql/src/builder/filter.d.ts.map +1 -1
  440. package/out/zql/src/builder/filter.js.map +1 -1
  441. package/out/zql/src/error.d.ts +0 -5
  442. package/out/zql/src/error.d.ts.map +1 -1
  443. package/out/zql/src/error.js.map +1 -1
  444. package/out/zql/src/ivm/constraint.d.ts +0 -7
  445. package/out/zql/src/ivm/constraint.d.ts.map +1 -1
  446. package/out/zql/src/ivm/constraint.js +1 -1
  447. package/out/zql/src/ivm/constraint.js.map +1 -1
  448. package/out/zql/src/ivm/data.d.ts +0 -1
  449. package/out/zql/src/ivm/data.d.ts.map +1 -1
  450. package/out/zql/src/ivm/data.js.map +1 -1
  451. package/out/zql/src/ivm/memory-source.d.ts +1 -2
  452. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  453. package/out/zql/src/ivm/memory-source.js +1 -1
  454. package/out/zql/src/ivm/memory-source.js.map +1 -1
  455. package/out/zql/src/ivm/stream.d.ts +0 -1
  456. package/out/zql/src/ivm/stream.d.ts.map +1 -1
  457. package/out/zql/src/ivm/stream.js.map +1 -1
  458. package/out/zql/src/ivm/union-fan-in.d.ts +0 -1
  459. package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
  460. package/out/zql/src/ivm/union-fan-in.js +1 -1
  461. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  462. package/out/zql/src/ivm/view-apply-change.d.ts +5 -35
  463. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  464. package/out/zql/src/ivm/view-apply-change.js +1 -1
  465. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  466. package/out/zql/src/mutate/crud.d.ts +1 -3
  467. package/out/zql/src/mutate/crud.d.ts.map +1 -1
  468. package/out/zql/src/mutate/crud.js +1 -1
  469. package/out/zql/src/mutate/crud.js.map +1 -1
  470. package/out/zql/src/mutate/mutator-registry.d.ts +1 -1
  471. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -1
  472. package/out/zql/src/mutate/mutator-registry.js.map +1 -1
  473. package/out/zql/src/mutate/mutator.d.ts +1 -1
  474. package/out/zql/src/mutate/mutator.d.ts.map +1 -1
  475. package/out/zql/src/mutate/mutator.js.map +1 -1
  476. package/out/zql/src/planner/planner-debug.d.ts +10 -9
  477. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  478. package/out/zql/src/planner/planner-debug.js.map +1 -1
  479. package/out/zql/src/planner/planner-node.d.ts +0 -1
  480. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  481. package/out/zql/src/planner/planner-node.js.map +1 -1
  482. package/out/zql/src/planner/planner-warnings.d.ts +3 -3
  483. package/out/zql/src/planner/planner-warnings.d.ts.map +1 -1
  484. package/out/zql/src/planner/planner-warnings.js.map +1 -1
  485. package/out/zql/src/query/expression.d.ts +0 -22
  486. package/out/zql/src/query/expression.d.ts.map +1 -1
  487. package/out/zql/src/query/expression.js +1 -1
  488. package/out/zql/src/query/expression.js.map +1 -1
  489. package/out/zql/src/query/query-delegate-base.d.ts +0 -7
  490. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  491. package/out/zql/src/query/query-delegate-base.js +2 -2
  492. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  493. package/out/zql/src/query/query-delegate.d.ts +1 -4
  494. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  495. package/out/zql/src/query/query-internals.d.ts +0 -3
  496. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  497. package/out/zql/src/query/query-internals.js.map +1 -1
  498. package/out/zql/src/query/query-registry.d.ts +5 -5
  499. package/out/zql/src/query/query-registry.d.ts.map +1 -1
  500. package/out/zql/src/query/query-registry.js.map +1 -1
  501. package/out/zql/src/query/query.d.ts +2 -13
  502. package/out/zql/src/query/query.d.ts.map +1 -1
  503. package/out/zql/src/query/runnable-query-impl.d.ts +1 -19
  504. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
  505. package/out/zql/src/query/runnable-query-impl.js +1 -1
  506. package/out/zql/src/query/runnable-query-impl.js.map +1 -1
  507. package/out/zql/src/query/ttl.d.ts +2 -3
  508. package/out/zql/src/query/ttl.d.ts.map +1 -1
  509. package/out/zql/src/query/ttl.js.map +1 -1
  510. package/out/zqlite/src/query-builder.d.ts +0 -2
  511. package/out/zqlite/src/query-builder.d.ts.map +1 -1
  512. package/out/zqlite/src/query-builder.js +1 -1
  513. package/out/zqlite/src/query-builder.js.map +1 -1
  514. package/out/zqlite/src/table-source.d.ts +0 -1
  515. package/out/zqlite/src/table-source.d.ts.map +1 -1
  516. package/out/zqlite/src/table-source.js +1 -1
  517. package/out/zqlite/src/table-source.js.map +1 -1
  518. package/package.json +2 -3
@@ -1 +1 @@
1
- {"version":3,"file":"schema-config.js","names":["v.readonlyObject","v","v.literalUnion","v.readonly"],"sources":["../../../../zero-schema/src/schema-config.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\nimport {compoundKeySchema} from '../../zero-protocol/src/ast.ts';\nimport {valueTypeSchema} from '../../zero-protocol/src/client-schema.ts';\nimport {primaryKeySchema} from '../../zero-protocol/src/primary-key.ts';\nimport type {Schema} from '../../zero-types/src/schema.ts';\nimport {type PermissionsConfig} from './compiled-permissions.ts';\nimport type {Relationship, TableSchema} from './table-schema.ts';\n\nexport type SchemaConfig = {\n schema: Schema;\n permissions: PermissionsConfig;\n};\n\nconst relationshipPart = v.readonlyObject({\n sourceField: compoundKeySchema,\n destField: compoundKeySchema,\n destSchema: v.string(),\n cardinality: v.literalUnion('one', 'many'),\n});\n\nexport const relationshipSchema: v.Type<Relationship> = v.union(\n v.readonly(v.tuple([relationshipPart])),\n v.readonly(v.tuple([relationshipPart, relationshipPart])),\n);\n\nexport const schemaValueSchema = v.readonlyObject({\n type: valueTypeSchema,\n serverName: v.string().optional(),\n optional: v.boolean().optional(),\n});\n\nexport const tableSchemaSchema: v.Type<TableSchema> = v.readonlyObject({\n name: v.string(),\n serverName: v.string().optional(),\n columns: v.record(schemaValueSchema),\n primaryKey: primaryKeySchema,\n});\n\nexport const schemaSchema = v.readonlyObject({\n tables: v.record(tableSchemaSchema),\n relationships: v.record(v.record(relationshipSchema)),\n enableLegacyQueries: v.boolean().optional(),\n enableLegacyMutators: v.boolean().optional(),\n});\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isSchemaConfig(value: any): value is SchemaConfig {\n // oxlint-disable-next-line eqeqeq\n return value != null && 'schema' in value;\n}\n"],"mappings":";;;;;;AAaA,IAAM,mBAAmBA,eAAiB;CACxC,aAAa;CACb,WAAW;CACX,YAAYC,eAAE,OAAO;CACrB,aAAaC,aAAe,OAAO,MAAM;AAC3C,CAAC;AAED,IAAa,qBAA2CD,eAAE,MACxDE,SAAWF,eAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,GACtCE,SAAWF,eAAE,MAAM,CAAC,kBAAkB,gBAAgB,CAAC,CAAC,CAC1D;AAEA,IAAa,oBAAoBD,eAAiB;CAChD,MAAM;CACN,YAAYC,eAAE,OAAO,CAAC,CAAC,SAAS;CAChC,UAAUA,eAAE,QAAQ,CAAC,CAAC,SAAS;AACjC,CAAC;AAED,IAAa,oBAAyCD,eAAiB;CACrE,MAAMC,eAAE,OAAO;CACf,YAAYA,eAAE,OAAO,CAAC,CAAC,SAAS;CAChC,SAASA,eAAE,OAAO,iBAAiB;CACnC,YAAY;AACd,CAAC;AAE2BD,eAAiB;CAC3C,QAAQC,eAAE,OAAO,iBAAiB;CAClC,eAAeA,eAAE,OAAOA,eAAE,OAAO,kBAAkB,CAAC;CACpD,qBAAqBA,eAAE,QAAQ,CAAC,CAAC,SAAS;CAC1C,sBAAsBA,eAAE,QAAQ,CAAC,CAAC,SAAS;AAC7C,CAAC;AAGD,SAAgB,eAAe,OAAmC;CAEhE,OAAO,SAAS,QAAQ,YAAY;AACtC"}
1
+ {"version":3,"file":"schema-config.js","names":["v.readonlyObject","v","v.literalUnion","v.readonly"],"sources":["../../../../zero-schema/src/schema-config.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\nimport {compoundKeySchema} from '../../zero-protocol/src/ast.ts';\nimport {valueTypeSchema} from '../../zero-protocol/src/client-schema.ts';\nimport {primaryKeySchema} from '../../zero-protocol/src/primary-key.ts';\nimport type {Schema} from '../../zero-types/src/schema.ts';\nimport {type PermissionsConfig} from './compiled-permissions.ts';\nimport type {Relationship, TableSchema} from './table-schema.ts';\n\nexport type SchemaConfig = {\n schema: Schema;\n permissions: PermissionsConfig;\n};\n\nconst relationshipPart = v.readonlyObject({\n sourceField: compoundKeySchema,\n destField: compoundKeySchema,\n destSchema: v.string(),\n cardinality: v.literalUnion('one', 'many'),\n});\n\nexport const relationshipSchema: v.Type<Relationship> = v.union(\n v.readonly(v.tuple([relationshipPart])),\n v.readonly(v.tuple([relationshipPart, relationshipPart])),\n);\n\nexport const schemaValueSchema = v.readonlyObject({\n type: valueTypeSchema,\n serverName: v.string().optional(),\n optional: v.boolean().optional(),\n});\n\nconst tableSchemaSchema: v.Type<TableSchema> = v.readonlyObject({\n name: v.string(),\n serverName: v.string().optional(),\n columns: v.record(schemaValueSchema),\n primaryKey: primaryKeySchema,\n});\n\nexport const schemaSchema = v.readonlyObject({\n tables: v.record(tableSchemaSchema),\n relationships: v.record(v.record(relationshipSchema)),\n enableLegacyQueries: v.boolean().optional(),\n enableLegacyMutators: v.boolean().optional(),\n});\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isSchemaConfig(value: any): value is SchemaConfig {\n // oxlint-disable-next-line eqeqeq\n return value != null && 'schema' in value;\n}\n"],"mappings":";;;;;;AAaA,IAAM,mBAAmBA,eAAiB;CACxC,aAAa;CACb,WAAW;CACX,YAAYC,eAAE,OAAO;CACrB,aAAaC,aAAe,OAAO,MAAM;AAC3C,CAAC;AAED,IAAa,qBAA2CD,eAAE,MACxDE,SAAWF,eAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,GACtCE,SAAWF,eAAE,MAAM,CAAC,kBAAkB,gBAAgB,CAAC,CAAC,CAC1D;AAEA,IAAa,oBAAoBD,eAAiB;CAChD,MAAM;CACN,YAAYC,eAAE,OAAO,CAAC,CAAC,SAAS;CAChC,UAAUA,eAAE,QAAQ,CAAC,CAAC,SAAS;AACjC,CAAC;AAED,IAAM,oBAAyCD,eAAiB;CAC9D,MAAMC,eAAE,OAAO;CACf,YAAYA,eAAE,OAAO,CAAC,CAAC,SAAS;CAChC,SAASA,eAAE,OAAO,iBAAiB;CACnC,YAAY;AACd,CAAC;AAE2BD,eAAiB;CAC3C,QAAQC,eAAE,OAAO,iBAAiB;CAClC,eAAeA,eAAE,OAAOA,eAAE,OAAO,kBAAkB,CAAC;CACpD,qBAAqBA,eAAE,QAAQ,CAAC,CAAC,SAAS;CAC1C,sBAAsBA,eAAE,QAAQ,CAAC,CAAC,SAAS;AAC7C,CAAC;AAGD,SAAgB,eAAe,OAAmC;CAEhE,OAAO,SAAS,QAAQ,YAAY;AACtC"}
@@ -1,18 +1,10 @@
1
- import type { ColumnTypeName, SchemaValue, SchemaValueToTSType, SchemaValueWithCustomType, TypeNameToTypeMap, ValueType } from '../../zero-types/src/schema-value.ts';
2
- import type { Cardinality, LastInTuple, Relationship, RelationshipsSchema, TableSchema } from '../../zero-types/src/schema.ts';
3
- export type { Cardinality, ColumnTypeName, LastInTuple, Relationship, RelationshipsSchema, SchemaValue, SchemaValueToTSType, SchemaValueWithCustomType, TableSchema, TypeNameToTypeMap, ValueType, };
4
- export type AtLeastOne<T> = readonly [T, ...T[]];
5
- export declare function atLeastOne<T>(arr: readonly T[]): AtLeastOne<T>;
1
+ import type { SchemaValue, SchemaValueWithCustomType, ValueType } from '../../zero-types/src/schema-value.ts';
2
+ import type { Relationship, TableSchema } from '../../zero-types/src/schema.ts';
3
+ export type { Relationship, SchemaValue, SchemaValueWithCustomType, TableSchema, ValueType, };
6
4
  export type Opaque<BaseType, BrandType = unknown> = BaseType & {
7
5
  readonly [base]: BaseType;
8
6
  readonly [brand]: BrandType;
9
7
  };
10
8
  declare const base: unique symbol;
11
9
  declare const brand: unique symbol;
12
- export type IsOpaque<T> = T extends {
13
- readonly [brand]: any;
14
- } ? true : false;
15
- export type ExpandRecursiveSkipOpaque<T> = IsOpaque<T> extends true ? T : T extends object ? T extends infer O ? {
16
- [K in keyof O]: ExpandRecursiveSkipOpaque<O[K]>;
17
- } : never : T;
18
10
  //# sourceMappingURL=table-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/table-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,SAAS,EACV,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAExC,YAAY,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,yBAAyB,EACzB,WAAW,EACX,iBAAiB,EACjB,SAAS,GACV,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAEjD,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAK9D;AAED,MAAM,MAAM,MAAM,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,IAAI,QAAQ,GAAG;IAC7D,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC;AAEF,OAAO,CAAC,MAAM,IAAI,EAAE,OAAO,MAAM,CAAC;AAClC,OAAO,CAAC,MAAM,KAAK,EAAE,OAAO,MAAM,CAAC;AAEnC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS;IAElC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;CACvB,GACG,IAAI,GACJ,KAAK,CAAC;AAEV,MAAM,MAAM,yBAAyB,CAAC,CAAC,IACrC,QAAQ,CAAC,CAAC,CAAC,SAAS,IAAI,GACpB,CAAC,GACD,CAAC,SAAS,MAAM,GACd,CAAC,SAAS,MAAM,CAAC,GACf;KAAE,CAAC,IAAI,MAAM,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAC,GACjD,KAAK,GACP,CAAC,CAAC"}
1
+ {"version":3,"file":"table-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/table-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,yBAAyB,EACzB,SAAS,EACV,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAC,YAAY,EAAE,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAE9E,YAAY,EACV,YAAY,EACZ,WAAW,EACX,yBAAyB,EACzB,WAAW,EACX,SAAS,GACV,CAAC;AAEF,MAAM,MAAM,MAAM,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,IAAI,QAAQ,GAAG;IAC7D,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC;AAEF,OAAO,CAAC,MAAM,IAAI,EAAE,OAAO,MAAM,CAAC;AAClC,OAAO,CAAC,MAAM,KAAK,EAAE,OAAO,MAAM,CAAC"}
@@ -32,7 +32,7 @@ export declare function handleTransformRequest<S extends Schema>(cb: (name: stri
32
32
  * Parsed query params accepted by {@link handleQueryRequest} when the
33
33
  * incoming request URL has already been handled by your framework.
34
34
  */
35
- export type QuerySearchParams = URLSearchParams | Record<string, string>;
35
+ type QuerySearchParams = URLSearchParams | Record<string, string>;
36
36
  export type HandleQueryRequestArgs<S extends Schema> = {
37
37
  /** Callback that transforms each requested query into a `Query`. */
38
38
  handler: QueryRequestHandler;
@@ -77,7 +77,5 @@ export declare function handleQueryRequest<S extends Schema>(transformQuery: Que
77
77
  export type QueryRequestHandler = (name: string, args: ReadonlyJSONValue | undefined) => AnyQuery;
78
78
  /** @deprecated Use `QueryRequestHandler` instead. */
79
79
  export type TransformQueryFunction = QueryRequestHandler;
80
- export type LegacyQueryRequestHandler = (name: string, args: readonly ReadonlyJSONValue[]) => MaybePromise<{
81
- query: AnyQuery;
82
- } | AnyQuery>;
80
+ export {};
83
81
  //# sourceMappingURL=process-queries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"process-queries.d.ts","sourceRoot":"","sources":["../../../../../zero-server/src/queries/process-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAW/D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,4CAA4C,CAAC;AAE9E,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAG9D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,iCAAiC,CAAC;AAG9D;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EACtD,EAAE,EAAE,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,iBAAiB,EAAE,KAC/B,YAAY,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAC,GAAG,QAAQ,CAAC,EAC/C,MAAM,EAAE,CAAC,EACT,iBAAiB,EAAE,OAAO,GAAG,iBAAiB,EAC9C,QAAQ,GAAE,QAAiB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAKxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EACrD,EAAE,EAAE,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,iBAAiB,EAAE,KAC/B,YAAY,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAC,GAAG,QAAQ,CAAC,EAC/C,MAAM,EAAE,CAAC,EACT,iBAAiB,EAAE,OAAO,GAAG,iBAAiB,EAC9C,QAAQ,GAAE,QAAiB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAKxB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEzE,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,IAAI;IACrD,oEAAoE;IACpE,OAAO,EAAE,mBAAmB,CAAC;IAC7B,mDAAmD;IACnD,MAAM,EAAE,CAAC,CAAC;IACV;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACjC,GAAG,CACA;IACE,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;CAClB,GACD;IACE,yDAAyD;IACzD,KAAK,EAAE,iBAAiB,CAAC;IACzB,kDAAkD;IAClD,IAAI,EAAE,iBAAiB,CAAC;CACzB,CACJ,CAAC;AAuBF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,aAAa,CAAC,CAAC;AAE1B;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,cAAc,EAAE,mBAAmB,EACnC,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE1B;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,cAAc,EAAE,mBAAmB,EACnC,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,aAAa,CAAC,CAAC;AA6K1B;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,GAAG,SAAS,KAChC,QAAQ,CAAC;AAEd,qDAAqD;AACrD,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAEzD,MAAM,MAAM,yBAAyB,GAAG,CACtC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,iBAAiB,EAAE,KAC/B,YAAY,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAC,GAAG,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"process-queries.d.ts","sourceRoot":"","sources":["../../../../../zero-server/src/queries/process-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;AAW/D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,4CAA4C,CAAC;AAE9E,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAG9D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,iCAAiC,CAAC;AAG9D;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EACtD,EAAE,EAAE,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,iBAAiB,EAAE,KAC/B,YAAY,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAC,GAAG,QAAQ,CAAC,EAC/C,MAAM,EAAE,CAAC,EACT,iBAAiB,EAAE,OAAO,GAAG,iBAAiB,EAC9C,QAAQ,GAAE,QAAiB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAKxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EACrD,EAAE,EAAE,CACF,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,iBAAiB,EAAE,KAC/B,YAAY,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAC,GAAG,QAAQ,CAAC,EAC/C,MAAM,EAAE,CAAC,EACT,iBAAiB,EAAE,OAAO,GAAG,iBAAiB,EAC9C,QAAQ,GAAE,QAAiB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAKxB;AAED;;;GAGG;AACH,KAAK,iBAAiB,GAAG,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElE,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,IAAI;IACrD,oEAAoE;IACpE,OAAO,EAAE,mBAAmB,CAAC;IAC7B,mDAAmD;IACnD,MAAM,EAAE,CAAC,CAAC;IACV;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACjC,GAAG,CACA;IACE,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;CAClB,GACD;IACE,yDAAyD;IACzD,KAAK,EAAE,iBAAiB,CAAC;IACzB,kDAAkD;IAClD,IAAI,EAAE,iBAAiB,CAAC;CACzB,CACJ,CAAC;AAuBF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,aAAa,CAAC,CAAC;AAE1B;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,cAAc,EAAE,mBAAmB,EACnC,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE1B;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,cAAc,EAAE,mBAAmB,EACnC,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,aAAa,CAAC,CAAC;AA6K1B;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,GAAG,SAAS,KAChC,QAAQ,CAAC;AAEd,qDAAqD;AACrD,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"process-queries.js","names":["v.parse","ErrorKind.TransformFailed","ErrorOrigin.Server","ErrorReason.Parse","ErrorReason.Internal"],"sources":["../../../../../zero-server/src/queries/process-queries.ts"],"sourcesContent":["import type {LogLevel} from '@rocicorp/logger';\nimport {assert} from '../../../shared/src/asserts.ts';\nimport {getErrorDetails, getErrorMessage} from '../../../shared/src/error.ts';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport type {MaybePromise} from '../../../shared/src/types.ts';\nimport * as v from '../../../shared/src/valita.ts';\nimport {mapAST} from '../../../zero-protocol/src/ast.ts';\nimport {\n transformRequestMessageSchema,\n type TransformRequestMessage,\n type TransformResponseBody,\n} from '../../../zero-protocol/src/custom-queries.ts';\nimport {ErrorKind} from '../../../zero-protocol/src/error-kind.ts';\nimport {ErrorOrigin} from '../../../zero-protocol/src/error-origin.ts';\nimport {ErrorReason} from '../../../zero-protocol/src/error-reason.ts';\nimport type {QueryResponse} from '../../../zero-protocol/src/query-server.ts';\nimport {clientToServer} from '../../../zero-schema/src/name-mapper.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {QueryParseError} from '../../../zql/src/query/error.ts';\nimport {asQueryInternals} from '../../../zql/src/query/query-internals.ts';\nimport type {AnyQuery} from '../../../zql/src/query/query.ts';\nimport {createLogContext} from '../logging.ts';\n\n/**\n * Invokes the callback `cb` for each query in the request or JSON body.\n * The callback should return a Query or Promise<Query> that is the transformed result.\n *\n * This function will call `cb` in parallel for each query found in the request.\n *\n * If you need to limit concurrency, you can use a library like `p-limit` to wrap the `cb` function.\n * @deprecated Use {@link handleQueryRequest} instead.\n */\nexport function handleGetQueriesRequest<S extends Schema>(\n cb: (\n name: string,\n args: readonly ReadonlyJSONValue[],\n ) => MaybePromise<{query: AnyQuery} | AnyQuery>,\n schema: S,\n requestOrJsonBody: Request | ReadonlyJSONValue,\n logLevel: LogLevel = 'info',\n): Promise<QueryResponse> {\n return transform(\n normalizeLegacyQueryRequestArgs(cb, schema, requestOrJsonBody, logLevel),\n 'getQueries',\n );\n}\n\n/**\n * Invokes the callback `cb` for each query in the request or JSON body.\n * The callback should return a Query or Promise<Query> that is the transformed result.\n *\n * This function will call `cb` in parallel for each query found in the request.\n *\n * If you need to limit concurrency, you can use a library like `p-limit` to wrap the `cb` function.\n * @deprecated Use {@link handleQueryRequest} instead.\n */\nexport function handleTransformRequest<S extends Schema>(\n cb: (\n name: string,\n args: readonly ReadonlyJSONValue[],\n ) => MaybePromise<{query: AnyQuery} | AnyQuery>,\n schema: S,\n requestOrJsonBody: Request | ReadonlyJSONValue,\n logLevel: LogLevel = 'info',\n): Promise<QueryResponse> {\n return transform(\n normalizeLegacyQueryRequestArgs(cb, schema, requestOrJsonBody, logLevel),\n 'transform',\n );\n}\n\n/**\n * Parsed query params accepted by {@link handleQueryRequest} when the\n * incoming request URL has already been handled by your framework.\n */\nexport type QuerySearchParams = URLSearchParams | Record<string, string>;\n\nexport type HandleQueryRequestArgs<S extends Schema> = {\n /** Callback that transforms each requested query into a `Query`. */\n handler: QueryRequestHandler;\n /** Schema used when building the returned ASTs. */\n schema: S;\n /**\n * Authenticated user ID. Null or undefined means the user is logged out.\n */\n userID: string | null | undefined;\n /** Optional log level for request parsing and execution. */\n logLevel?: LogLevel | undefined;\n} & (\n | {\n /** Fetch request containing the `/query` JSON body. */\n request: Request;\n }\n | {\n /** Parsed query params from the `/query` request URL. */\n query: QuerySearchParams;\n /** Parsed JSON body from the `/query` request. */\n body: ReadonlyJSONValue;\n }\n);\n\ntype NormalizedQueryRequestArgs<S extends Schema> = {\n readonly schema: S;\n readonly handler: LegacyQueryRequestHandler;\n // Note: semantics of undefined differ from HandleQueryRequestArgs.userID.\n // Here, undefined means the app didn't provide a user ID - we do not know if\n // the user is logged in or not. This is legacy behavior needed to support\n // deprecated signatures of handleQueryRequest which did not receive userID\n // from app.\n readonly userID: string | null | undefined;\n readonly logLevel: LogLevel;\n} & (\n | {\n readonly type: 'request';\n readonly request: Request;\n }\n | {\n readonly type: 'body';\n readonly jsonBody: ReadonlyJSONValue;\n }\n);\n\n/**\n * Process a `/query` request from a Fetch `Request`.\n */\nexport function handleQueryRequest<S extends Schema>(\n input: HandleQueryRequestArgs<S>,\n): Promise<QueryResponse>;\n\n/**\n * @deprecated Pass a single object instead:\n * `handleQueryRequest({handler, schema, request, userID, logLevel})`.\n */\nexport function handleQueryRequest<S extends Schema>(\n transformQuery: QueryRequestHandler,\n schema: S,\n request: Request,\n logLevel?: LogLevel,\n): Promise<QueryResponse>;\n\n/**\n * @deprecated Pass a single object instead:\n * `handleQueryRequest({handler, schema, body, userID, logLevel})`.\n */\nexport function handleQueryRequest<S extends Schema>(\n transformQuery: QueryRequestHandler,\n schema: S,\n jsonBody: ReadonlyJSONValue,\n logLevel?: LogLevel,\n): Promise<QueryResponse>;\n\nexport function handleQueryRequest<S extends Schema>(\n inputOrTransformQuery: HandleQueryRequestArgs<S> | QueryRequestHandler,\n schema?: S,\n requestOrJsonBody?: Request | ReadonlyJSONValue,\n logLevel?: LogLevel,\n): Promise<QueryResponse> {\n const normalized =\n typeof inputOrTransformQuery === 'object' &&\n 'handler' in inputOrTransformQuery\n ? normalizeQueryRequestInput(inputOrTransformQuery)\n : normalizeLegacyQueryRequestArgs(\n wrapQueryRequestHandler(inputOrTransformQuery),\n schema,\n requestOrJsonBody,\n logLevel,\n );\n\n return transform(normalized, 'query');\n}\n\nfunction normalizeQueryRequestInput<S extends Schema>(\n input: HandleQueryRequestArgs<S>,\n): NormalizedQueryRequestArgs<S> {\n return 'request' in input\n ? normalizeLegacyQueryRequestArgs(\n wrapQueryRequestHandler(input.handler),\n input.schema,\n input.request,\n input.logLevel,\n input.userID ?? null,\n )\n : normalizeLegacyQueryRequestArgs(\n wrapQueryRequestHandler(input.handler),\n input.schema,\n input.body,\n input.logLevel,\n input.userID ?? null,\n );\n}\n\nfunction normalizeLegacyQueryRequestArgs<S extends Schema>(\n handler: LegacyQueryRequestHandler,\n schema: S | undefined,\n requestOrJsonBody: Request | ReadonlyJSONValue | undefined,\n logLevel: LogLevel | undefined,\n userID?: string | null,\n): NormalizedQueryRequestArgs<S> {\n assert(\n typeof schema !== 'undefined',\n 'Schema must be provided when using handleQueryRequest',\n );\n\n if (requestOrJsonBody instanceof Request) {\n return {\n type: 'request',\n handler,\n schema,\n request: requestOrJsonBody,\n userID,\n logLevel: logLevel ?? 'info',\n };\n }\n\n assert(\n typeof requestOrJsonBody !== 'undefined',\n 'JSON body cannot be undefined',\n );\n\n return {\n type: 'body',\n handler,\n schema,\n jsonBody: requestOrJsonBody,\n userID,\n logLevel: logLevel ?? 'info',\n };\n}\n\nasync function transform<S extends Schema>(\n args: NormalizedQueryRequestArgs<S>,\n apiName: 'query' | 'transform' | 'getQueries',\n): Promise<QueryResponse> {\n const lc = createLogContext(args.logLevel).withContext('TransformRequest');\n let parsed: TransformRequestMessage;\n let queryIDs: string[] = [];\n try {\n let body: ReadonlyJSONValue;\n if (args.type === 'request') {\n body = await args.request.json();\n } else {\n body = args.jsonBody;\n }\n\n // Strip, so a newer zero-cache can add fields to the request.\n parsed = v.parse(body, transformRequestMessageSchema, 'strip');\n\n queryIDs = parsed[1].map(r => r.id);\n } catch (error) {\n lc.error?.(`Failed to parse ${apiName} request`, error);\n\n const message = `Failed to parse ${apiName} request: ${getErrorMessage(error)}`;\n const details = getErrorDetails(error);\n\n return {\n kind: ErrorKind.TransformFailed,\n origin: ErrorOrigin.Server,\n reason: ErrorReason.Parse,\n message,\n queryIDs,\n ...(details ? {details} : {}),\n };\n }\n\n try {\n const nameMapper = clientToServer(args.schema.tables);\n\n const responses: TransformResponseBody = await Promise.all(\n parsed[1].map(async req => {\n let finalQuery: AnyQuery;\n try {\n const result = await args.handler(req.name, req.args);\n finalQuery = 'query' in result ? result.query : result;\n } catch (error) {\n const message = getErrorMessage(error);\n const details = getErrorDetails(error);\n\n return {\n error: error instanceof QueryParseError ? 'parse' : 'app',\n id: req.id,\n name: req.name,\n message,\n ...(details ? {details} : {}),\n };\n }\n\n try {\n const q = asQueryInternals(finalQuery);\n const ast = mapAST(q.ast, nameMapper);\n\n return {\n id: req.id,\n name: req.name,\n ast,\n };\n } catch (error) {\n lc.error?.('Failed to map AST', error);\n throw error;\n }\n }),\n );\n\n return {\n kind: 'QueryResponse',\n queries: responses,\n ...(typeof args.userID !== 'undefined' ? {userID: args.userID} : {}),\n } as const satisfies QueryResponse;\n } catch (e) {\n const message = getErrorMessage(e);\n const details = getErrorDetails(e);\n\n return {\n kind: ErrorKind.TransformFailed,\n origin: ErrorOrigin.Server,\n reason: ErrorReason.Internal,\n message,\n queryIDs,\n ...(details ? {details} : {}),\n };\n }\n}\n\n/**\n * A function that transforms a query by name and arguments into a Query object.\n *\n * @param name - The name of the query (can be dot-separated for nested queries)\n * @param args - The arguments to pass to the query (can be undefined)\n * @returns A Query object\n */\nexport type QueryRequestHandler = (\n name: string,\n args: ReadonlyJSONValue | undefined,\n) => AnyQuery;\n\n/** @deprecated Use `QueryRequestHandler` instead. */\nexport type TransformQueryFunction = QueryRequestHandler;\n\nexport type LegacyQueryRequestHandler = (\n name: string,\n args: readonly ReadonlyJSONValue[],\n) => MaybePromise<{query: AnyQuery} | AnyQuery>;\n\nfunction wrapQueryRequestHandler(\n handler: QueryRequestHandler,\n): LegacyQueryRequestHandler {\n return (name, args) => handler(name, args[0]);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"process-queries.js","names":["v.parse","ErrorKind.TransformFailed","ErrorOrigin.Server","ErrorReason.Parse","ErrorReason.Internal"],"sources":["../../../../../zero-server/src/queries/process-queries.ts"],"sourcesContent":["import type {LogLevel} from '@rocicorp/logger';\nimport {assert} from '../../../shared/src/asserts.ts';\nimport {getErrorDetails, getErrorMessage} from '../../../shared/src/error.ts';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport type {MaybePromise} from '../../../shared/src/types.ts';\nimport * as v from '../../../shared/src/valita.ts';\nimport {mapAST} from '../../../zero-protocol/src/ast.ts';\nimport {\n transformRequestMessageSchema,\n type TransformRequestMessage,\n type TransformResponseBody,\n} from '../../../zero-protocol/src/custom-queries.ts';\nimport {ErrorKind} from '../../../zero-protocol/src/error-kind.ts';\nimport {ErrorOrigin} from '../../../zero-protocol/src/error-origin.ts';\nimport {ErrorReason} from '../../../zero-protocol/src/error-reason.ts';\nimport type {QueryResponse} from '../../../zero-protocol/src/query-server.ts';\nimport {clientToServer} from '../../../zero-schema/src/name-mapper.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {QueryParseError} from '../../../zql/src/query/error.ts';\nimport {asQueryInternals} from '../../../zql/src/query/query-internals.ts';\nimport type {AnyQuery} from '../../../zql/src/query/query.ts';\nimport {createLogContext} from '../logging.ts';\n\n/**\n * Invokes the callback `cb` for each query in the request or JSON body.\n * The callback should return a Query or Promise<Query> that is the transformed result.\n *\n * This function will call `cb` in parallel for each query found in the request.\n *\n * If you need to limit concurrency, you can use a library like `p-limit` to wrap the `cb` function.\n * @deprecated Use {@link handleQueryRequest} instead.\n */\nexport function handleGetQueriesRequest<S extends Schema>(\n cb: (\n name: string,\n args: readonly ReadonlyJSONValue[],\n ) => MaybePromise<{query: AnyQuery} | AnyQuery>,\n schema: S,\n requestOrJsonBody: Request | ReadonlyJSONValue,\n logLevel: LogLevel = 'info',\n): Promise<QueryResponse> {\n return transform(\n normalizeLegacyQueryRequestArgs(cb, schema, requestOrJsonBody, logLevel),\n 'getQueries',\n );\n}\n\n/**\n * Invokes the callback `cb` for each query in the request or JSON body.\n * The callback should return a Query or Promise<Query> that is the transformed result.\n *\n * This function will call `cb` in parallel for each query found in the request.\n *\n * If you need to limit concurrency, you can use a library like `p-limit` to wrap the `cb` function.\n * @deprecated Use {@link handleQueryRequest} instead.\n */\nexport function handleTransformRequest<S extends Schema>(\n cb: (\n name: string,\n args: readonly ReadonlyJSONValue[],\n ) => MaybePromise<{query: AnyQuery} | AnyQuery>,\n schema: S,\n requestOrJsonBody: Request | ReadonlyJSONValue,\n logLevel: LogLevel = 'info',\n): Promise<QueryResponse> {\n return transform(\n normalizeLegacyQueryRequestArgs(cb, schema, requestOrJsonBody, logLevel),\n 'transform',\n );\n}\n\n/**\n * Parsed query params accepted by {@link handleQueryRequest} when the\n * incoming request URL has already been handled by your framework.\n */\ntype QuerySearchParams = URLSearchParams | Record<string, string>;\n\nexport type HandleQueryRequestArgs<S extends Schema> = {\n /** Callback that transforms each requested query into a `Query`. */\n handler: QueryRequestHandler;\n /** Schema used when building the returned ASTs. */\n schema: S;\n /**\n * Authenticated user ID. Null or undefined means the user is logged out.\n */\n userID: string | null | undefined;\n /** Optional log level for request parsing and execution. */\n logLevel?: LogLevel | undefined;\n} & (\n | {\n /** Fetch request containing the `/query` JSON body. */\n request: Request;\n }\n | {\n /** Parsed query params from the `/query` request URL. */\n query: QuerySearchParams;\n /** Parsed JSON body from the `/query` request. */\n body: ReadonlyJSONValue;\n }\n);\n\ntype NormalizedQueryRequestArgs<S extends Schema> = {\n readonly schema: S;\n readonly handler: LegacyQueryRequestHandler;\n // Note: semantics of undefined differ from HandleQueryRequestArgs.userID.\n // Here, undefined means the app didn't provide a user ID - we do not know if\n // the user is logged in or not. This is legacy behavior needed to support\n // deprecated signatures of handleQueryRequest which did not receive userID\n // from app.\n readonly userID: string | null | undefined;\n readonly logLevel: LogLevel;\n} & (\n | {\n readonly type: 'request';\n readonly request: Request;\n }\n | {\n readonly type: 'body';\n readonly jsonBody: ReadonlyJSONValue;\n }\n);\n\n/**\n * Process a `/query` request from a Fetch `Request`.\n */\nexport function handleQueryRequest<S extends Schema>(\n input: HandleQueryRequestArgs<S>,\n): Promise<QueryResponse>;\n\n/**\n * @deprecated Pass a single object instead:\n * `handleQueryRequest({handler, schema, request, userID, logLevel})`.\n */\nexport function handleQueryRequest<S extends Schema>(\n transformQuery: QueryRequestHandler,\n schema: S,\n request: Request,\n logLevel?: LogLevel,\n): Promise<QueryResponse>;\n\n/**\n * @deprecated Pass a single object instead:\n * `handleQueryRequest({handler, schema, body, userID, logLevel})`.\n */\nexport function handleQueryRequest<S extends Schema>(\n transformQuery: QueryRequestHandler,\n schema: S,\n jsonBody: ReadonlyJSONValue,\n logLevel?: LogLevel,\n): Promise<QueryResponse>;\n\nexport function handleQueryRequest<S extends Schema>(\n inputOrTransformQuery: HandleQueryRequestArgs<S> | QueryRequestHandler,\n schema?: S,\n requestOrJsonBody?: Request | ReadonlyJSONValue,\n logLevel?: LogLevel,\n): Promise<QueryResponse> {\n const normalized =\n typeof inputOrTransformQuery === 'object' &&\n 'handler' in inputOrTransformQuery\n ? normalizeQueryRequestInput(inputOrTransformQuery)\n : normalizeLegacyQueryRequestArgs(\n wrapQueryRequestHandler(inputOrTransformQuery),\n schema,\n requestOrJsonBody,\n logLevel,\n );\n\n return transform(normalized, 'query');\n}\n\nfunction normalizeQueryRequestInput<S extends Schema>(\n input: HandleQueryRequestArgs<S>,\n): NormalizedQueryRequestArgs<S> {\n return 'request' in input\n ? normalizeLegacyQueryRequestArgs(\n wrapQueryRequestHandler(input.handler),\n input.schema,\n input.request,\n input.logLevel,\n input.userID ?? null,\n )\n : normalizeLegacyQueryRequestArgs(\n wrapQueryRequestHandler(input.handler),\n input.schema,\n input.body,\n input.logLevel,\n input.userID ?? null,\n );\n}\n\nfunction normalizeLegacyQueryRequestArgs<S extends Schema>(\n handler: LegacyQueryRequestHandler,\n schema: S | undefined,\n requestOrJsonBody: Request | ReadonlyJSONValue | undefined,\n logLevel: LogLevel | undefined,\n userID?: string | null,\n): NormalizedQueryRequestArgs<S> {\n assert(\n typeof schema !== 'undefined',\n 'Schema must be provided when using handleQueryRequest',\n );\n\n if (requestOrJsonBody instanceof Request) {\n return {\n type: 'request',\n handler,\n schema,\n request: requestOrJsonBody,\n userID,\n logLevel: logLevel ?? 'info',\n };\n }\n\n assert(\n typeof requestOrJsonBody !== 'undefined',\n 'JSON body cannot be undefined',\n );\n\n return {\n type: 'body',\n handler,\n schema,\n jsonBody: requestOrJsonBody,\n userID,\n logLevel: logLevel ?? 'info',\n };\n}\n\nasync function transform<S extends Schema>(\n args: NormalizedQueryRequestArgs<S>,\n apiName: 'query' | 'transform' | 'getQueries',\n): Promise<QueryResponse> {\n const lc = createLogContext(args.logLevel).withContext('TransformRequest');\n let parsed: TransformRequestMessage;\n let queryIDs: string[] = [];\n try {\n let body: ReadonlyJSONValue;\n if (args.type === 'request') {\n body = await args.request.json();\n } else {\n body = args.jsonBody;\n }\n\n // Strip, so a newer zero-cache can add fields to the request.\n parsed = v.parse(body, transformRequestMessageSchema, 'strip');\n\n queryIDs = parsed[1].map(r => r.id);\n } catch (error) {\n lc.error?.(`Failed to parse ${apiName} request`, error);\n\n const message = `Failed to parse ${apiName} request: ${getErrorMessage(error)}`;\n const details = getErrorDetails(error);\n\n return {\n kind: ErrorKind.TransformFailed,\n origin: ErrorOrigin.Server,\n reason: ErrorReason.Parse,\n message,\n queryIDs,\n ...(details ? {details} : {}),\n };\n }\n\n try {\n const nameMapper = clientToServer(args.schema.tables);\n\n const responses: TransformResponseBody = await Promise.all(\n parsed[1].map(async req => {\n let finalQuery: AnyQuery;\n try {\n const result = await args.handler(req.name, req.args);\n finalQuery = 'query' in result ? result.query : result;\n } catch (error) {\n const message = getErrorMessage(error);\n const details = getErrorDetails(error);\n\n return {\n error: error instanceof QueryParseError ? 'parse' : 'app',\n id: req.id,\n name: req.name,\n message,\n ...(details ? {details} : {}),\n };\n }\n\n try {\n const q = asQueryInternals(finalQuery);\n const ast = mapAST(q.ast, nameMapper);\n\n return {\n id: req.id,\n name: req.name,\n ast,\n };\n } catch (error) {\n lc.error?.('Failed to map AST', error);\n throw error;\n }\n }),\n );\n\n return {\n kind: 'QueryResponse',\n queries: responses,\n ...(typeof args.userID !== 'undefined' ? {userID: args.userID} : {}),\n } as const satisfies QueryResponse;\n } catch (e) {\n const message = getErrorMessage(e);\n const details = getErrorDetails(e);\n\n return {\n kind: ErrorKind.TransformFailed,\n origin: ErrorOrigin.Server,\n reason: ErrorReason.Internal,\n message,\n queryIDs,\n ...(details ? {details} : {}),\n };\n }\n}\n\n/**\n * A function that transforms a query by name and arguments into a Query object.\n *\n * @param name - The name of the query (can be dot-separated for nested queries)\n * @param args - The arguments to pass to the query (can be undefined)\n * @returns A Query object\n */\nexport type QueryRequestHandler = (\n name: string,\n args: ReadonlyJSONValue | undefined,\n) => AnyQuery;\n\n/** @deprecated Use `QueryRequestHandler` instead. */\nexport type TransformQueryFunction = QueryRequestHandler;\n\ntype LegacyQueryRequestHandler = (\n name: string,\n args: readonly ReadonlyJSONValue[],\n) => MaybePromise<{query: AnyQuery} | AnyQuery>;\n\nfunction wrapQueryRequestHandler(\n handler: QueryRequestHandler,\n): LegacyQueryRequestHandler {\n return (name, args) => handler(name, args[0]);\n}\n"],"mappings":"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"}
@@ -1,9 +1,7 @@
1
1
  import { type SetStoreFunction } from 'solid-js/store';
2
2
  import { type Change, type Entry, type ErroredQuery, type Format, type Input, type Output, type Query, type QueryResultDetails, type Schema, type TTL } from './zero.ts';
3
3
  export type State = [Entry, QueryResultDetails];
4
- export declare const COMPLETE: QueryResultDetails;
5
4
  export declare const UNKNOWN: QueryResultDetails;
6
- export declare const CACHED: QueryResultDetails;
7
5
  /**
8
6
  * SolidView bridges Zero's incremental view updates with Solid's reactive
9
7
  * store.
@@ -1 +1 @@
1
- {"version":3,"file":"solid-view.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/solid-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAUzE,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,KAAK,EAEV,KAAK,MAAM,EACX,KAAK,KAAK,EAEV,KAAK,kBAAkB,EACvB,KAAK,MAAM,EAEX,KAAK,GAAG,EACT,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;AAEhD,eAAO,MAAM,QAAQ,EAAE,kBAAsD,CAAC;AAC9E,eAAO,MAAM,OAAO,EAAE,kBAAqD,CAAC;AAC5E,eAAO,MAAM,MAAM,EAAE,kBAAoD,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBAAa,SAAU,YAAW,MAAM;;IAyBtC,YACE,KAAK,EAAE,KAAK,EACZ,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,EAC7C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,IAAI,EACrB,aAAa,EAAE,IAAI,GAAG,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,EAClD,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,EAC7B,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,EACjC,KAAK,EAAE,MAAM,IAAI,EAmDlB;IAgBD,OAAO,IAAI,IAAI,CAEd;IAED;;;;;OAKG;IACH,UAAU,IAAI,IAAI,CAIjB;IAED,8EAA8E;IAC9E,YAAY,IAAI,IAAI,CAInB;IAED;;;;;OAKG;IACH,QAAQ,IAAI,IAAI,CAEf;IA+CD,IAAI,CAAC,MAAM,EAAE,MAAM,oBAgBlB;IAyCD,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAExB;CACF;AAsDD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,EACjC,KAAK,CAAC,EAAE,MAAM,IAAI,IAGhB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,UAEC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAChC,KAAK,UACJ,MAAM,aACH,MAAM,IAAI,uBACA,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,iBAC9B,IAAI,GAAG,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,aACvC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,eAiBhC"}
1
+ {"version":3,"file":"solid-view.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/solid-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAUzE,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,KAAK,EAEV,KAAK,MAAM,EACX,KAAK,KAAK,EAEV,KAAK,kBAAkB,EACvB,KAAK,MAAM,EAEX,KAAK,GAAG,EACT,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;AAGhD,eAAO,MAAM,OAAO,EAAE,kBAAqD,CAAC;AAG5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBAAa,SAAU,YAAW,MAAM;;IAyBtC,YACE,KAAK,EAAE,KAAK,EACZ,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,EAC7C,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,IAAI,EACrB,aAAa,EAAE,IAAI,GAAG,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,EAClD,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,EAC7B,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,EACjC,KAAK,EAAE,MAAM,IAAI,EAmDlB;IAgBD,OAAO,IAAI,IAAI,CAEd;IAED;;;;;OAKG;IACH,UAAU,IAAI,IAAI,CAIjB;IAED,8EAA8E;IAC9E,YAAY,IAAI,IAAI,CAInB;IAED;;;;;OAKG;IACH,QAAQ,IAAI,IAAI,CAEf;IA+CD,IAAI,CAAC,MAAM,EAAE,MAAM,oBAgBlB;IAyCD,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAExB;CACF;AAsDD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,EACjC,KAAK,CAAC,EAAE,MAAM,IAAI,IAGhB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,UAEC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAChC,KAAK,UACJ,MAAM,aACH,MAAM,IAAI,uBACA,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,iBAC9B,IAAI,GAAG,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,aACvC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,eAiBhC"}
@@ -219,6 +219,6 @@ function createSolidViewFactory(setState, retry) {
219
219
  return solidViewFactory;
220
220
  }
221
221
  //#endregion
222
- export { CACHED, COMPLETE, SolidView, UNKNOWN, createSolidViewFactory };
222
+ export { SolidView, UNKNOWN, createSolidViewFactory };
223
223
 
224
224
  //# sourceMappingURL=solid-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solid-view.js","names":[],"sources":["../../../../zero-solid/src/solid-view.ts"],"sourcesContent":["import {produce, reconcile, type SetStoreFunction} from 'solid-js/store';\nimport {emptyArray} from '../../shared/src/sentinels.ts';\nimport {ChangeIndex} from '../../zql/src/ivm/change-index.ts';\nimport {ChangeType} from '../../zql/src/ivm/change-type.ts';\nimport {\n applyChange,\n idSymbol,\n skipYields,\n type ViewChange,\n} from './bindings.ts';\nimport {\n type AnyViewFactory,\n type Change,\n type Entry,\n type ErroredQuery,\n type Format,\n type Input,\n type Node,\n type Output,\n type Query,\n type QueryErrorDetails,\n type QueryResultDetails,\n type Schema,\n type Stream,\n type TTL,\n} from './zero.ts';\n\nexport type State = [Entry, QueryResultDetails];\n\nexport const COMPLETE: QueryResultDetails = Object.freeze({type: 'complete'});\nexport const UNKNOWN: QueryResultDetails = Object.freeze({type: 'unknown'});\nexport const CACHED: QueryResultDetails = Object.freeze({type: 'cached'});\n\n/**\n * SolidView bridges Zero's incremental view updates with Solid's reactive\n * store.\n *\n * The challenge: Zero pushes individual row changes (add/remove/edit) as they\n * arrive, but updating Solid's store on each push is expensive. We batch\n * changes until transaction commit, then apply them all at once.\n *\n * Two code paths optimize for different scenarios:\n *\n * 1. BULK INSERT (builderRoot path): When building from empty, we skip\n * Solid's reactive tracking entirely and build a plain JS object. This is\n * 5x faster for large initial loads. Uses reconcile() to diff the final\n * result into Solid.\n *\n * 2. INCREMENTAL UPDATE (#pendingChanges path): For existing views, we queue\n * changes and apply them in-place within a produce() draft. produce()\n * creates a mutable draft, applyChange mutates it directly, then produce()\n * handles diffing and reactivity.\n *\n *\n * push(change)\n * │\n * ▼\n * ┌─────────────────────────────────┐\n * │ builderRoot defined? │\n * │ (building from empty) │\n * └─────────────────────────────────┘\n * │yes │no\n * ▼ ▼\n * Build plain JS Queue in\n * object (fast) #pendingChanges\n * │ │\n * └───────┬───────────┘\n * ▼\n * onTransactionCommit()\n * │\n * ┌───────┴──────────┐\n * │ │\n * builderRoot produce(draft =>\n * → reconcile() applyChange(draft, ..., mutate: true))\n */\nexport class SolidView implements Output {\n readonly #input: Input;\n readonly #format: Format;\n readonly #onDestroy: () => void;\n readonly #retry: () => void;\n\n #setState: SetStoreFunction<State>;\n\n // Optimization: if the store is currently empty we build up\n // the view on a plain old JS object stored at #builderRoot, and return\n // that for the new state on transaction commit. This avoids building up\n // large views from scratch via solid produce. The proxy object used by\n // solid produce is slow and in this case we don't care about solid tracking\n // the fine grained changes (everything has changed, it's all new). For a\n // test case with a view with 3000 rows, each row having 2 children, this\n // optimization reduced #applyChanges time from 743ms to 133ms.\n #builderRoot: Entry | undefined;\n #pendingChanges: ViewChange[] = [];\n // A result type transition requested while row changes are waiting for the\n // next commit. It is applied with them, so a cached claim never reaches the\n // store before the rows it is about.\n #pendingResultType: ((prev: State) => State) | undefined;\n #held = false;\n readonly #updateTTL: (ttl: TTL) => void;\n\n constructor(\n input: Input,\n onTransactionCommit: (cb: () => void) => void,\n format: Format,\n onDestroy: () => void,\n queryComplete: true | ErroredQuery | Promise<true>,\n updateTTL: (ttl: TTL) => void,\n setState: SetStoreFunction<State>,\n retry: () => void,\n ) {\n this.#input = input;\n onTransactionCommit(this.#onTransactionCommit);\n this.#format = format;\n this.#onDestroy = onDestroy;\n this.#updateTTL = updateTTL;\n this.#retry = retry;\n\n input.setOutput(this);\n\n const initialRoot = this.#createEmptyRoot();\n this.#applyChangesToRoot(\n skipYields(input.fetch({})),\n node => ({type: 'add', node}),\n initialRoot,\n );\n\n this.#setState = setState;\n this.#setState(\n reconcile(\n [\n initialRoot,\n queryComplete === true\n ? COMPLETE\n : 'error' in queryComplete\n ? this.#makeError(queryComplete)\n : UNKNOWN,\n ],\n {\n // solidjs's types want a string, but a symbol works\n key: idSymbol as unknown as string,\n },\n ),\n );\n\n if (isEmptyRoot(initialRoot)) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n\n if (queryComplete !== true && !('error' in queryComplete)) {\n void queryComplete\n .then(() => {\n this.#setState(prev => [prev[0], COMPLETE]);\n })\n .catch((error: ErroredQuery) => {\n // Through the pending path: a deferred attach that fails is\n // published with the commit of its batch, not during it.\n this.#transitionResultType(prev => [prev[0], this.#makeError(error)]);\n });\n }\n }\n\n #makeError(error: ErroredQuery): QueryErrorDetails {\n const message = error.message ?? 'An unknown error occurred';\n return {\n type: 'error',\n retry: this.#retry,\n refetch: this.#retry,\n error: {\n type: error.error,\n message,\n ...(error.details ? {details: error.details} : {}),\n },\n };\n }\n\n destroy(): void {\n this.#onDestroy();\n }\n\n /**\n * The store holds the server-confirmed result of this query from a\n * previous connection. Never downgrades 'complete'/'error'; freshness stays\n * a promise only the connection can keep, so nothing that waits on\n * 'complete' resolves here.\n */\n markCached(): void {\n this.#transitionResultType(prev =>\n prev[1].type === 'unknown' ? [prev[0], CACHED] : prev,\n );\n }\n\n /** The got key was deleted (eviction) before this connection confirmed it. */\n unmarkCached(): void {\n this.#transitionResultType(prev =>\n prev[1].type === 'cached' ? [prev[0], UNKNOWN] : prev,\n );\n }\n\n /**\n * Called before a deferred pipeline hydrates this view over several tasks\n * (see `ViewFactory`). Rows already only reach the store at commit; this\n * makes result type transitions wait for that commit too, including when\n * the hydration produced no rows.\n */\n holdData(): void {\n this.#held = true;\n }\n\n #transitionResultType(transition: (prev: State) => State): void {\n if (this.#held || this.#hasUncommittedChanges()) {\n // The last requested transition wins; each is a no-op unless the state\n // it expects is current, so the net effect at commit is correct.\n this.#pendingResultType = transition;\n } else {\n this.#setState(transition);\n }\n }\n\n #hasUncommittedChanges(): boolean {\n return (\n (this.#builderRoot !== undefined && !isEmptyRoot(this.#builderRoot)) ||\n this.#pendingChanges.length > 0\n );\n }\n\n #onTransactionCommit = () => {\n this.#held = false;\n const builderRoot = this.#builderRoot;\n if (builderRoot) {\n if (!isEmptyRoot(builderRoot)) {\n this.#setState(\n 0,\n reconcile(builderRoot, {\n // solidjs's types want a string, but a symbol works\n key: idSymbol as unknown as string,\n }),\n );\n this.#builderRoot = undefined;\n }\n } else {\n try {\n this.#applyChanges(this.#pendingChanges, c => c);\n } finally {\n this.#pendingChanges = [];\n }\n }\n const pendingResultType = this.#pendingResultType;\n if (pendingResultType) {\n this.#pendingResultType = undefined;\n this.#setState(pendingResultType);\n }\n };\n\n push(change: Change) {\n // Delay updating the solid store state until the transaction commit\n // (because each update of the solid store is quite expensive). If\n // this.#builderRoot is defined apply the changes to it (we are building\n // from an empty root), otherwise queue the changes to be applied\n // using produce at the end of the transaction but read the relationships\n // now as they are only valid to read when the push is received.\n if (this.#builderRoot) {\n this.#applyChangeToRoot(\n materializeRelationships(change),\n this.#builderRoot,\n );\n } else {\n this.#pendingChanges.push(materializeRelationships(change));\n }\n return emptyArray;\n }\n\n #applyChanges<T>(changes: Iterable<T>, mapper: (v: T) => ViewChange): void {\n this.#setState(\n produce((draftState: State) => {\n this.#applyChangesToRoot<T>(changes, mapper, draftState[0]);\n if (isEmptyRoot(draftState[0])) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n }),\n );\n }\n\n #applyChangesToRoot<T>(\n changes: Iterable<T>,\n mapper: (v: T) => ViewChange,\n root: Entry,\n ) {\n for (const change of changes) {\n this.#applyChangeToRoot(mapper(change), root);\n }\n }\n\n #applyChangeToRoot(change: ViewChange, root: Entry) {\n applyChange(\n root,\n change,\n this.#input.getSchema(),\n '',\n this.#format,\n true /* withIDs */,\n true /* mutate */,\n );\n }\n\n #createEmptyRoot(): Entry {\n return {\n '': this.#format.singular ? undefined : [],\n };\n }\n\n updateTTL(ttl: TTL): void {\n this.#updateTTL(ttl);\n }\n}\n\nfunction materializeRelationships(change: Change): ViewChange {\n switch (change[ChangeIndex.TYPE]) {\n case ChangeType.ADD:\n return {\n type: 'add',\n node: materializeNodeRelationships(change[ChangeIndex.NODE]),\n };\n case ChangeType.REMOVE:\n return {\n type: 'remove',\n node: materializeNodeRelationships(change[ChangeIndex.NODE]),\n };\n case ChangeType.CHILD:\n return {\n type: 'child',\n node: {row: change[ChangeIndex.NODE].row},\n child: {\n relationshipName: change[ChangeIndex.CHILD_DATA].relationshipName,\n change: materializeRelationships(\n change[ChangeIndex.CHILD_DATA].change,\n ),\n },\n };\n case ChangeType.EDIT:\n return {\n type: 'edit',\n node: {row: change[ChangeIndex.NODE].row},\n oldNode: {row: change[ChangeIndex.OLD_NODE].row},\n };\n }\n}\n\nfunction materializeNodeRelationships(node: Node): Node {\n const relationships: Record<string, () => Stream<Node>> = {};\n for (const relationship in node.relationships) {\n const materialized: Node[] = [];\n for (const n of skipYields(node.relationships[relationship]())) {\n materialized.push(materializeNodeRelationships(n));\n }\n relationships[relationship] = () => materialized;\n }\n return {\n row: node.row,\n relationships,\n };\n}\n\nfunction isEmptyRoot(entry: Entry) {\n const data = entry[''];\n return data === undefined || (Array.isArray(data) && data.length === 0);\n}\n\nexport function createSolidViewFactory(\n setState: SetStoreFunction<State>,\n retry?: () => void,\n) {\n function solidViewFactory<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n _query: Query<TTable, TSchema, TReturn>,\n input: Input,\n format: Format,\n onDestroy: () => void,\n onTransactionCommit: (cb: () => void) => void,\n queryComplete: true | ErroredQuery | Promise<true>,\n updateTTL: (ttl: TTL) => void,\n ) {\n return new SolidView(\n input,\n onTransactionCommit,\n format,\n onDestroy,\n queryComplete,\n updateTTL,\n setState,\n retry || (() => {}),\n );\n }\n\n solidViewFactory satisfies AnyViewFactory;\n\n return solidViewFactory;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"solid-view.js","names":[],"sources":["../../../../zero-solid/src/solid-view.ts"],"sourcesContent":["import {produce, reconcile, type SetStoreFunction} from 'solid-js/store';\nimport {emptyArray} from '../../shared/src/sentinels.ts';\nimport {ChangeIndex} from '../../zql/src/ivm/change-index.ts';\nimport {ChangeType} from '../../zql/src/ivm/change-type.ts';\nimport {\n applyChange,\n idSymbol,\n skipYields,\n type ViewChange,\n} from './bindings.ts';\nimport {\n type AnyViewFactory,\n type Change,\n type Entry,\n type ErroredQuery,\n type Format,\n type Input,\n type Node,\n type Output,\n type Query,\n type QueryErrorDetails,\n type QueryResultDetails,\n type Schema,\n type Stream,\n type TTL,\n} from './zero.ts';\n\nexport type State = [Entry, QueryResultDetails];\n\nconst COMPLETE: QueryResultDetails = Object.freeze({type: 'complete'});\nexport const UNKNOWN: QueryResultDetails = Object.freeze({type: 'unknown'});\nconst CACHED: QueryResultDetails = Object.freeze({type: 'cached'});\n\n/**\n * SolidView bridges Zero's incremental view updates with Solid's reactive\n * store.\n *\n * The challenge: Zero pushes individual row changes (add/remove/edit) as they\n * arrive, but updating Solid's store on each push is expensive. We batch\n * changes until transaction commit, then apply them all at once.\n *\n * Two code paths optimize for different scenarios:\n *\n * 1. BULK INSERT (builderRoot path): When building from empty, we skip\n * Solid's reactive tracking entirely and build a plain JS object. This is\n * 5x faster for large initial loads. Uses reconcile() to diff the final\n * result into Solid.\n *\n * 2. INCREMENTAL UPDATE (#pendingChanges path): For existing views, we queue\n * changes and apply them in-place within a produce() draft. produce()\n * creates a mutable draft, applyChange mutates it directly, then produce()\n * handles diffing and reactivity.\n *\n *\n * push(change)\n * │\n * ▼\n * ┌─────────────────────────────────┐\n * │ builderRoot defined? │\n * │ (building from empty) │\n * └─────────────────────────────────┘\n * │yes │no\n * ▼ ▼\n * Build plain JS Queue in\n * object (fast) #pendingChanges\n * │ │\n * └───────┬───────────┘\n * ▼\n * onTransactionCommit()\n * │\n * ┌───────┴──────────┐\n * │ │\n * builderRoot produce(draft =>\n * → reconcile() applyChange(draft, ..., mutate: true))\n */\nexport class SolidView implements Output {\n readonly #input: Input;\n readonly #format: Format;\n readonly #onDestroy: () => void;\n readonly #retry: () => void;\n\n #setState: SetStoreFunction<State>;\n\n // Optimization: if the store is currently empty we build up\n // the view on a plain old JS object stored at #builderRoot, and return\n // that for the new state on transaction commit. This avoids building up\n // large views from scratch via solid produce. The proxy object used by\n // solid produce is slow and in this case we don't care about solid tracking\n // the fine grained changes (everything has changed, it's all new). For a\n // test case with a view with 3000 rows, each row having 2 children, this\n // optimization reduced #applyChanges time from 743ms to 133ms.\n #builderRoot: Entry | undefined;\n #pendingChanges: ViewChange[] = [];\n // A result type transition requested while row changes are waiting for the\n // next commit. It is applied with them, so a cached claim never reaches the\n // store before the rows it is about.\n #pendingResultType: ((prev: State) => State) | undefined;\n #held = false;\n readonly #updateTTL: (ttl: TTL) => void;\n\n constructor(\n input: Input,\n onTransactionCommit: (cb: () => void) => void,\n format: Format,\n onDestroy: () => void,\n queryComplete: true | ErroredQuery | Promise<true>,\n updateTTL: (ttl: TTL) => void,\n setState: SetStoreFunction<State>,\n retry: () => void,\n ) {\n this.#input = input;\n onTransactionCommit(this.#onTransactionCommit);\n this.#format = format;\n this.#onDestroy = onDestroy;\n this.#updateTTL = updateTTL;\n this.#retry = retry;\n\n input.setOutput(this);\n\n const initialRoot = this.#createEmptyRoot();\n this.#applyChangesToRoot(\n skipYields(input.fetch({})),\n node => ({type: 'add', node}),\n initialRoot,\n );\n\n this.#setState = setState;\n this.#setState(\n reconcile(\n [\n initialRoot,\n queryComplete === true\n ? COMPLETE\n : 'error' in queryComplete\n ? this.#makeError(queryComplete)\n : UNKNOWN,\n ],\n {\n // solidjs's types want a string, but a symbol works\n key: idSymbol as unknown as string,\n },\n ),\n );\n\n if (isEmptyRoot(initialRoot)) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n\n if (queryComplete !== true && !('error' in queryComplete)) {\n void queryComplete\n .then(() => {\n this.#setState(prev => [prev[0], COMPLETE]);\n })\n .catch((error: ErroredQuery) => {\n // Through the pending path: a deferred attach that fails is\n // published with the commit of its batch, not during it.\n this.#transitionResultType(prev => [prev[0], this.#makeError(error)]);\n });\n }\n }\n\n #makeError(error: ErroredQuery): QueryErrorDetails {\n const message = error.message ?? 'An unknown error occurred';\n return {\n type: 'error',\n retry: this.#retry,\n refetch: this.#retry,\n error: {\n type: error.error,\n message,\n ...(error.details ? {details: error.details} : {}),\n },\n };\n }\n\n destroy(): void {\n this.#onDestroy();\n }\n\n /**\n * The store holds the server-confirmed result of this query from a\n * previous connection. Never downgrades 'complete'/'error'; freshness stays\n * a promise only the connection can keep, so nothing that waits on\n * 'complete' resolves here.\n */\n markCached(): void {\n this.#transitionResultType(prev =>\n prev[1].type === 'unknown' ? [prev[0], CACHED] : prev,\n );\n }\n\n /** The got key was deleted (eviction) before this connection confirmed it. */\n unmarkCached(): void {\n this.#transitionResultType(prev =>\n prev[1].type === 'cached' ? [prev[0], UNKNOWN] : prev,\n );\n }\n\n /**\n * Called before a deferred pipeline hydrates this view over several tasks\n * (see `ViewFactory`). Rows already only reach the store at commit; this\n * makes result type transitions wait for that commit too, including when\n * the hydration produced no rows.\n */\n holdData(): void {\n this.#held = true;\n }\n\n #transitionResultType(transition: (prev: State) => State): void {\n if (this.#held || this.#hasUncommittedChanges()) {\n // The last requested transition wins; each is a no-op unless the state\n // it expects is current, so the net effect at commit is correct.\n this.#pendingResultType = transition;\n } else {\n this.#setState(transition);\n }\n }\n\n #hasUncommittedChanges(): boolean {\n return (\n (this.#builderRoot !== undefined && !isEmptyRoot(this.#builderRoot)) ||\n this.#pendingChanges.length > 0\n );\n }\n\n #onTransactionCommit = () => {\n this.#held = false;\n const builderRoot = this.#builderRoot;\n if (builderRoot) {\n if (!isEmptyRoot(builderRoot)) {\n this.#setState(\n 0,\n reconcile(builderRoot, {\n // solidjs's types want a string, but a symbol works\n key: idSymbol as unknown as string,\n }),\n );\n this.#builderRoot = undefined;\n }\n } else {\n try {\n this.#applyChanges(this.#pendingChanges, c => c);\n } finally {\n this.#pendingChanges = [];\n }\n }\n const pendingResultType = this.#pendingResultType;\n if (pendingResultType) {\n this.#pendingResultType = undefined;\n this.#setState(pendingResultType);\n }\n };\n\n push(change: Change) {\n // Delay updating the solid store state until the transaction commit\n // (because each update of the solid store is quite expensive). If\n // this.#builderRoot is defined apply the changes to it (we are building\n // from an empty root), otherwise queue the changes to be applied\n // using produce at the end of the transaction but read the relationships\n // now as they are only valid to read when the push is received.\n if (this.#builderRoot) {\n this.#applyChangeToRoot(\n materializeRelationships(change),\n this.#builderRoot,\n );\n } else {\n this.#pendingChanges.push(materializeRelationships(change));\n }\n return emptyArray;\n }\n\n #applyChanges<T>(changes: Iterable<T>, mapper: (v: T) => ViewChange): void {\n this.#setState(\n produce((draftState: State) => {\n this.#applyChangesToRoot<T>(changes, mapper, draftState[0]);\n if (isEmptyRoot(draftState[0])) {\n this.#builderRoot = this.#createEmptyRoot();\n }\n }),\n );\n }\n\n #applyChangesToRoot<T>(\n changes: Iterable<T>,\n mapper: (v: T) => ViewChange,\n root: Entry,\n ) {\n for (const change of changes) {\n this.#applyChangeToRoot(mapper(change), root);\n }\n }\n\n #applyChangeToRoot(change: ViewChange, root: Entry) {\n applyChange(\n root,\n change,\n this.#input.getSchema(),\n '',\n this.#format,\n true /* withIDs */,\n true /* mutate */,\n );\n }\n\n #createEmptyRoot(): Entry {\n return {\n '': this.#format.singular ? undefined : [],\n };\n }\n\n updateTTL(ttl: TTL): void {\n this.#updateTTL(ttl);\n }\n}\n\nfunction materializeRelationships(change: Change): ViewChange {\n switch (change[ChangeIndex.TYPE]) {\n case ChangeType.ADD:\n return {\n type: 'add',\n node: materializeNodeRelationships(change[ChangeIndex.NODE]),\n };\n case ChangeType.REMOVE:\n return {\n type: 'remove',\n node: materializeNodeRelationships(change[ChangeIndex.NODE]),\n };\n case ChangeType.CHILD:\n return {\n type: 'child',\n node: {row: change[ChangeIndex.NODE].row},\n child: {\n relationshipName: change[ChangeIndex.CHILD_DATA].relationshipName,\n change: materializeRelationships(\n change[ChangeIndex.CHILD_DATA].change,\n ),\n },\n };\n case ChangeType.EDIT:\n return {\n type: 'edit',\n node: {row: change[ChangeIndex.NODE].row},\n oldNode: {row: change[ChangeIndex.OLD_NODE].row},\n };\n }\n}\n\nfunction materializeNodeRelationships(node: Node): Node {\n const relationships: Record<string, () => Stream<Node>> = {};\n for (const relationship in node.relationships) {\n const materialized: Node[] = [];\n for (const n of skipYields(node.relationships[relationship]())) {\n materialized.push(materializeNodeRelationships(n));\n }\n relationships[relationship] = () => materialized;\n }\n return {\n row: node.row,\n relationships,\n };\n}\n\nfunction isEmptyRoot(entry: Entry) {\n const data = entry[''];\n return data === undefined || (Array.isArray(data) && data.length === 0);\n}\n\nexport function createSolidViewFactory(\n setState: SetStoreFunction<State>,\n retry?: () => void,\n) {\n function solidViewFactory<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n _query: Query<TTable, TSchema, TReturn>,\n input: Input,\n format: Format,\n onDestroy: () => void,\n onTransactionCommit: (cb: () => void) => void,\n queryComplete: true | ErroredQuery | Promise<true>,\n updateTTL: (ttl: TTL) => void,\n ) {\n return new SolidView(\n input,\n onTransactionCommit,\n format,\n onDestroy,\n queryComplete,\n updateTTL,\n setState,\n retry || (() => {}),\n );\n }\n\n solidViewFactory satisfies AnyViewFactory;\n\n return solidViewFactory;\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { JSONValue, ReadonlyJSONValue } from '../../shared/src/json.ts';
2
2
  export type Value = JSONValue | ReadonlyJSONValue | undefined;
3
- export type ColumnNames = {
3
+ type ColumnNames = {
4
4
  [src: string]: string;
5
5
  };
6
6
  export type DestNames = {
@@ -17,4 +17,5 @@ export declare class NameMapper {
17
17
  row<V extends Value>(table: string, row: Readonly<Record<string, V>>): Readonly<Record<string, V>>;
18
18
  columns<Columns extends readonly string[] | undefined>(table: string, cols: Columns): Columns;
19
19
  }
20
+ export {};
20
21
  //# sourceMappingURL=name-mapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"name-mapper.d.ts","sourceRoot":"","sources":["../../../../zero-types/src/name-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAI3E,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAE9D,MAAM,MAAM,WAAW,GAAG;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,CAAC;AAElD,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,qBAAa,UAAU;;IAGrB,YAAY,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAEzC;IAWD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7B;IAED,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhD;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C;IAED,GAAG,CAAC,CAAC,SAAS,KAAK,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAY7B;IAED,OAAO,CAAC,OAAO,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,EACnD,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,GACZ,OAAO,CAQT;CACF"}
1
+ {"version":3,"file":"name-mapper.d.ts","sourceRoot":"","sources":["../../../../zero-types/src/name-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAI3E,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAE9D,KAAK,WAAW,GAAG;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,qBAAa,UAAU;;IAGrB,YAAY,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAEzC;IAWD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7B;IAED,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhD;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C;IAED,GAAG,CAAC,CAAC,SAAS,KAAK,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAY7B;IAED,OAAO,CAAC,OAAO,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,EACnD,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,GACZ,OAAO,CAQT;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"name-mapper.js","names":[],"sources":["../../../../zero-types/src/name-mapper.ts"],"sourcesContent":["import type {JSONValue, ReadonlyJSONValue} from '../../shared/src/json.ts';\n\n// Value type from zero-protocol (JSONValue/ReadonlyJSONValue | undefined)\n// Defined here to avoid circular dependency with zero-protocol\nexport type Value = JSONValue | ReadonlyJSONValue | undefined;\n\nexport type ColumnNames = {[src: string]: string};\n\nexport type DestNames = {\n tableName: string;\n columns: ColumnNames;\n allColumnsSame: boolean;\n};\n\nexport class NameMapper {\n readonly #tables = new Map<string, DestNames>();\n\n constructor(tables: Map<string, DestNames>) {\n this.#tables = tables;\n }\n\n #getTable(src: string): DestNames {\n const table = this.#tables.get(src);\n if (!table) {\n // log-leak-ignore -- a table name is schema, not customer data\n throw new Error(`unknown table \"${src}\"`);\n }\n return table;\n }\n\n tableName(src: string): string {\n return this.#getTable(src).tableName;\n }\n\n tableNameIfKnown(src: string): string | undefined {\n return this.#tables.get(src)?.tableName;\n }\n\n columnName(table: string, src: string): string {\n const dst = this.#getTable(table).columns[src];\n if (!dst) {\n // log-leak-ignore -- table and column names are schema, not customer data\n throw new Error(`unknown column \"${src}\" of \"${table}\" table`);\n }\n return dst;\n }\n\n row<V extends Value>(\n table: string,\n row: Readonly<Record<string, V>>,\n ): Readonly<Record<string, V>> {\n const dest = this.#getTable(table);\n const {allColumnsSame, columns} = dest;\n if (allColumnsSame) {\n return row;\n }\n const clientRow: Record<string, V> = {};\n for (const col in row) {\n // Note: columns with unknown names simply pass through.\n clientRow[columns[col] ?? col] = row[col];\n }\n return clientRow;\n }\n\n columns<Columns extends readonly string[] | undefined>(\n table: string,\n cols: Columns,\n ): Columns {\n const dest = this.#getTable(table);\n const {allColumnsSame, columns} = dest;\n\n // Note: Columns not defined in the schema simply pass through.\n return cols === undefined || allColumnsSame\n ? cols\n : (cols.map(col => columns[col] ?? col) as unknown as Columns);\n }\n}\n"],"mappings":";AAcA,IAAa,aAAb,MAAwB;CACtB,0BAAmB,IAAI,IAAuB;CAE9C,YAAY,QAAgC;EAC1C,KAAK,UAAU;CACjB;CAEA,UAAU,KAAwB;EAChC,MAAM,QAAQ,KAAK,QAAQ,IAAI,GAAG;EAClC,IAAI,CAAC,OAEH,MAAM,IAAI,MAAM,kBAAkB,IAAI,EAAE;EAE1C,OAAO;CACT;CAEA,UAAU,KAAqB;EAC7B,OAAO,KAAK,UAAU,GAAG,CAAC,CAAC;CAC7B;CAEA,iBAAiB,KAAiC;EAChD,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,EAAE;CAChC;CAEA,WAAW,OAAe,KAAqB;EAC7C,MAAM,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,QAAQ;EAC1C,IAAI,CAAC,KAEH,MAAM,IAAI,MAAM,mBAAmB,IAAI,QAAQ,MAAM,QAAQ;EAE/D,OAAO;CACT;CAEA,IACE,OACA,KAC6B;EAE7B,MAAM,EAAC,gBAAgB,YADV,KAAK,UAAU,KACM;EAClC,IAAI,gBACF,OAAO;EAET,MAAM,YAA+B,CAAC;EACtC,KAAK,MAAM,OAAO,KAEhB,UAAU,QAAQ,QAAQ,OAAO,IAAI;EAEvC,OAAO;CACT;CAEA,QACE,OACA,MACS;EAET,MAAM,EAAC,gBAAgB,YADV,KAAK,UAAU,KACM;EAGlC,OAAO,SAAS,KAAA,KAAa,iBACzB,OACC,KAAK,KAAI,QAAO,QAAQ,QAAQ,GAAG;CAC1C;AACF"}
1
+ {"version":3,"file":"name-mapper.js","names":[],"sources":["../../../../zero-types/src/name-mapper.ts"],"sourcesContent":["import type {JSONValue, ReadonlyJSONValue} from '../../shared/src/json.ts';\n\n// Value type from zero-protocol (JSONValue/ReadonlyJSONValue | undefined)\n// Defined here to avoid circular dependency with zero-protocol\nexport type Value = JSONValue | ReadonlyJSONValue | undefined;\n\ntype ColumnNames = {[src: string]: string};\n\nexport type DestNames = {\n tableName: string;\n columns: ColumnNames;\n allColumnsSame: boolean;\n};\n\nexport class NameMapper {\n readonly #tables = new Map<string, DestNames>();\n\n constructor(tables: Map<string, DestNames>) {\n this.#tables = tables;\n }\n\n #getTable(src: string): DestNames {\n const table = this.#tables.get(src);\n if (!table) {\n // log-leak-ignore -- a table name is schema, not customer data\n throw new Error(`unknown table \"${src}\"`);\n }\n return table;\n }\n\n tableName(src: string): string {\n return this.#getTable(src).tableName;\n }\n\n tableNameIfKnown(src: string): string | undefined {\n return this.#tables.get(src)?.tableName;\n }\n\n columnName(table: string, src: string): string {\n const dst = this.#getTable(table).columns[src];\n if (!dst) {\n // log-leak-ignore -- table and column names are schema, not customer data\n throw new Error(`unknown column \"${src}\" of \"${table}\" table`);\n }\n return dst;\n }\n\n row<V extends Value>(\n table: string,\n row: Readonly<Record<string, V>>,\n ): Readonly<Record<string, V>> {\n const dest = this.#getTable(table);\n const {allColumnsSame, columns} = dest;\n if (allColumnsSame) {\n return row;\n }\n const clientRow: Record<string, V> = {};\n for (const col in row) {\n // Note: columns with unknown names simply pass through.\n clientRow[columns[col] ?? col] = row[col];\n }\n return clientRow;\n }\n\n columns<Columns extends readonly string[] | undefined>(\n table: string,\n cols: Columns,\n ): Columns {\n const dest = this.#getTable(table);\n const {allColumnsSame, columns} = dest;\n\n // Note: Columns not defined in the schema simply pass through.\n return cols === undefined || allColumnsSame\n ? cols\n : (cols.map(col => columns[col] ?? col) as unknown as Columns);\n }\n}\n"],"mappings":";AAcA,IAAa,aAAb,MAAwB;CACtB,0BAAmB,IAAI,IAAuB;CAE9C,YAAY,QAAgC;EAC1C,KAAK,UAAU;CACjB;CAEA,UAAU,KAAwB;EAChC,MAAM,QAAQ,KAAK,QAAQ,IAAI,GAAG;EAClC,IAAI,CAAC,OAEH,MAAM,IAAI,MAAM,kBAAkB,IAAI,EAAE;EAE1C,OAAO;CACT;CAEA,UAAU,KAAqB;EAC7B,OAAO,KAAK,UAAU,GAAG,CAAC,CAAC;CAC7B;CAEA,iBAAiB,KAAiC;EAChD,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,EAAE;CAChC;CAEA,WAAW,OAAe,KAAqB;EAC7C,MAAM,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,QAAQ;EAC1C,IAAI,CAAC,KAEH,MAAM,IAAI,MAAM,mBAAmB,IAAI,QAAQ,MAAM,QAAQ;EAE/D,OAAO;CACT;CAEA,IACE,OACA,KAC6B;EAE7B,MAAM,EAAC,gBAAgB,YADV,KAAK,UAAU,KACM;EAClC,IAAI,gBACF,OAAO;EAET,MAAM,YAA+B,CAAC;EACtC,KAAK,MAAM,OAAO,KAEhB,UAAU,QAAQ,QAAQ,OAAO,IAAI;EAEvC,OAAO;CACT;CAEA,QACE,OACA,MACS;EAET,MAAM,EAAC,gBAAgB,YADV,KAAK,UAAU,KACM;EAGlC,OAAO,SAAS,KAAA,KAAa,iBACzB,OACC,KAAK,KAAI,QAAO,QAAQ,QAAQ,GAAG;CAC1C;AACF"}
@@ -16,14 +16,14 @@ export type SchemaValueWithCustomType<T> = {
16
16
  optional?: boolean | undefined;
17
17
  customType: T;
18
18
  };
19
- export type TypeNameToTypeMap = {
19
+ type TypeNameToTypeMap = {
20
20
  string: string;
21
21
  number: number;
22
22
  boolean: boolean;
23
23
  null: null;
24
24
  json: any;
25
25
  };
26
- export type ColumnTypeName<T extends SchemaValue | ValueType> = T extends SchemaValue ? T['type'] : T;
26
+ type ColumnTypeName<T extends SchemaValue | ValueType> = T extends SchemaValue ? T['type'] : T;
27
27
  /**
28
28
  * Given a schema value, return the TypeScript type.
29
29
  *
@@ -33,4 +33,5 @@ export type ColumnTypeName<T extends SchemaValue | ValueType> = T extends Schema
33
33
  export type SchemaValueToTSType<T extends SchemaValue | ValueType> = T extends ValueType ? TypeNameToTypeMap[T] : T extends {
34
34
  optional: true;
35
35
  } ? (T extends SchemaValueWithCustomType<infer V> ? V : TypeNameToTypeMap[ColumnTypeName<T>]) | null : T extends SchemaValueWithCustomType<infer V> ? V : TypeNameToTypeMap[ColumnTypeName<T>];
36
+ export {};
36
37
  //# sourceMappingURL=schema-value.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-value.d.ts","sourceRoot":"","sources":["../../../../zero-types/src/schema-value.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAC/B;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GACD,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAEjC,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI;IACzC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IAEX,IAAI,EAAE,GAAG,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,IAC1D,CAAC,SAAS,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAExC;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,IAC/D,CAAC,SAAS,SAAS,GACf,iBAAiB,CAAC,CAAC,CAAC,GACpB,CAAC,SAAS;IACN,QAAQ,EAAE,IAAI,CAAC;CAChB,GAEG,CAAC,CAAC,SAAS,yBAAyB,CAAC,MAAM,CAAC,CAAC,GACzC,CAAC,GACD,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GACzC,IAAI,GACR,CAAC,SAAS,yBAAyB,CAAC,MAAM,CAAC,CAAC,GAC1C,CAAC,GACD,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"schema-value.d.ts","sourceRoot":"","sources":["../../../../zero-types/src/schema-value.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,OAAO,IAC/B;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GACD,yBAAyB,CAAC,CAAC,CAAC,CAAC;AAEjC,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI;IACzC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC;CACf,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IAEX,IAAI,EAAE,GAAG,CAAC;CACX,CAAC;AAEF,KAAK,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,IAAI,CAAC,SAAS,WAAW,GAC1E,CAAC,CAAC,MAAM,CAAC,GACT,CAAC,CAAC;AAEN;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,IAC/D,CAAC,SAAS,SAAS,GACf,iBAAiB,CAAC,CAAC,CAAC,GACpB,CAAC,SAAS;IACN,QAAQ,EAAE,IAAI,CAAC;CAChB,GAEG,CAAC,CAAC,SAAS,yBAAyB,CAAC,MAAM,CAAC,CAAC,GACzC,CAAC,GACD,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GACzC,IAAI,GACR,CAAC,SAAS,yBAAyB,CAAC,MAAM,CAAC,CAAC,GAC1C,CAAC,GACD,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -24,7 +24,7 @@ export type TableSchema = {
24
24
  export type RelationshipsSchema = {
25
25
  readonly [name: string]: Relationship;
26
26
  };
27
- export type Cardinality = 'one' | 'many';
27
+ type Cardinality = 'one' | 'many';
28
28
  type Connection = {
29
29
  readonly sourceField: readonly string[];
30
30
  readonly destField: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../zero-types/src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;AAEzC,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,SAAS,CAAC,UAAU,CAAC,GACrB,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAEtC,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAC1E,CAAC,GACD,CAAC,SAAS,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GACnC,CAAC,GACD,CAAC,SAAS,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,GAC5C,CAAC,GACD,KAAK,CAAC;AAEd;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,MAAM,EAAE;QAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAA;KAAC,CAAC;IACzD,QAAQ,CAAC,aAAa,EAAE;QAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAA;KAAC,CAAC;IACxE;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnD;;;;;;OAMG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrD,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../zero-types/src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAExD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC;CACvC,CAAC;AAEF,KAAK,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;AAElC,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,SAAS,CAAC,UAAU,CAAC,GACrB,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAEtC,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAC1E,CAAC,GACD,CAAC,SAAS,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GACnC,CAAC,GACD,CAAC,SAAS,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,GAC5C,CAAC,GACD,KAAK,CAAC;AAEd;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,MAAM,EAAE;QAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAA;KAAC,CAAC;IACzD,QAAQ,CAAC,aAAa,EAAE;QAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAA;KAAC,CAAC;IACxE;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnD;;;;;;OAMG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACrD,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import type { LogContext } from '@rocicorp/logger';
2
2
  import type { JSONValue } from '../../../shared/src/json.ts';
3
- import type { AST, Condition, Disjunction, Ordering } from '../../../zero-protocol/src/ast.ts';
3
+ import type { AST, Condition, Disjunction } from '../../../zero-protocol/src/ast.ts';
4
4
  import type { Row } from '../../../zero-protocol/src/data.ts';
5
- import type { PrimaryKey } from '../../../zero-protocol/src/primary-key.ts';
6
5
  import { type FilterInput } from '../ivm/filter-operators.ts';
7
6
  import type { Input, InputBase, Storage } from '../ivm/operator.ts';
8
7
  import type { Source, SourceInput } from '../ivm/source.ts';
@@ -107,16 +106,7 @@ export interface BuilderDelegate {
107
106
  */
108
107
  export declare function buildPipeline(ast: AST, delegate: BuilderDelegate, queryID: string, costModel?: ConnectionCostModel, lc?: LogContext, planDebugger?: PlanDebugger): Input;
109
108
  export declare function bindStaticParameters(ast: AST, staticQueryParameters: StaticQueryParameters | undefined): AST;
110
- /**
111
- * Checks if a condition tree contains any NOT EXISTS operations.
112
- * Recursively checks AND/OR branches but does not recurse into nested subqueries
113
- * (those are checked when buildPipelineInternal processes them).
114
- */
115
- export declare function assertNoNotExists(condition: Condition): void;
116
- export declare function applyOr(input: FilterInput, condition: Disjunction, delegate: BuilderDelegate, name: string): FilterInput;
117
109
  export declare function groupSubqueryConditions(condition: Disjunction): [subqueryConditions: Condition[], otherConditions: NoSubqueryCondition[]];
118
- export declare function isNotAndDoesNotContainSubquery(condition: Condition): condition is NoSubqueryCondition;
119
- export declare function assertOrderingIncludesPK(ordering: Ordering, pk: PrimaryKey): void;
120
110
  export declare function conditionIncludesFlippedSubqueryAtAnyLevel(cond: Condition): boolean;
121
111
  export declare function partitionBranches(conditions: readonly Condition[], predicate: (c: Condition) => boolean): readonly [Condition[], Condition[]];
122
112
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/builder/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/builder/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EACV,GAAG,EAGH,SAAS,EAIT,WAAW,EAKZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,oCAAoC,CAAC;AAK5D,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAK1D,OAAO,EAAY,KAAK,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAG9D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClD,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAElC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAE/C;;;;;;OAMG;IACH,QAAQ,CAAC,kCAAkC,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAElE;;;;;;;;;OASG;IACH,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAE1D;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEjD;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAEjD,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAElD,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAEnE,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAEhE;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAEpD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,mBAAmB,EAC/B,EAAE,CAAC,EAAE,UAAU,EACf,YAAY,CAAC,EAAE,YAAY,GAC1B,KAAK,CA2CP;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,OAsDzD;AAqeD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,WAAW,6EAa7D;AAqLD,wBAAgB,0CAA0C,CACxD,IAAI,EAAE,SAAS,GACd,OAAO,CAWT;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,OAAO,uCAYrC"}
@@ -434,6 +434,6 @@ function partitionBranches(conditions, predicate) {
434
434
  return [matched, notMatched];
435
435
  }
436
436
  //#endregion
437
- export { applyOr, assertNoNotExists, bindStaticParameters, buildPipeline, conditionIncludesFlippedSubqueryAtAnyLevel, groupSubqueryConditions, isNotAndDoesNotContainSubquery, partitionBranches };
437
+ export { bindStaticParameters, buildPipeline, conditionIncludesFlippedSubqueryAtAnyLevel, groupSubqueryConditions, partitionBranches };
438
438
 
439
439
  //# sourceMappingURL=builder.js.map