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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/out/analyze-query/src/bin-analyze.js +27 -38
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/ast-to-zql/src/bin.js.map +1 -1
  4. package/out/{chunk-ZZXMKAAG.js → chunk-5H7WNLPK.js} +2 -2
  5. package/out/chunk-HYS7YLNL.js +575 -0
  6. package/out/chunk-HYS7YLNL.js.map +7 -0
  7. package/out/{chunk-AIPM77UE.js → chunk-IWL6EEA6.js} +10418 -10217
  8. package/out/chunk-IWL6EEA6.js.map +7 -0
  9. package/out/{chunk-TJFNGO7E.js → chunk-JKP7HDC6.js} +15 -53
  10. package/out/chunk-JKP7HDC6.js.map +7 -0
  11. package/out/{chunk-ECUMGQGC.js → chunk-RYFBHAD4.js} +17 -4
  12. package/out/chunk-RYFBHAD4.js.map +7 -0
  13. package/out/chunk-SRLXXPNB.js +495 -0
  14. package/out/chunk-SRLXXPNB.js.map +7 -0
  15. package/out/{chunk-EZM3XBAB.js → chunk-U2KJIWVC.js} +47 -2
  16. package/out/chunk-U2KJIWVC.js.map +7 -0
  17. package/out/expo-sqlite.js +4 -4
  18. package/out/{inspector-IU2HG74I.js → inspector-GP3CBZRU.js} +1 -1
  19. package/out/inspector-GP3CBZRU.js.map +7 -0
  20. package/out/{lazy-inspector-OXIFYSSQ.js → lazy-inspector-4CO3DXP5.js} +9 -8
  21. package/out/lazy-inspector-4CO3DXP5.js.map +7 -0
  22. package/out/op-sqlite.js +3 -3
  23. package/out/react-native.js +4 -4
  24. package/out/react.js +63 -49
  25. package/out/react.js.map +2 -2
  26. package/out/replicache/src/kv/sqlite-store.d.ts +7 -1
  27. package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
  28. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  29. package/out/replicache/src/replicache-options.d.ts +3 -2
  30. package/out/replicache/src/replicache-options.d.ts.map +1 -1
  31. package/out/replicache/src/sqlite.d.ts +1 -1
  32. package/out/replicache/src/sqlite.d.ts.map +1 -1
  33. package/out/shared/src/error.d.ts +4 -0
  34. package/out/shared/src/error.d.ts.map +1 -0
  35. package/out/shared/src/error.js +70 -0
  36. package/out/shared/src/error.js.map +1 -0
  37. package/out/solid.js +52 -24
  38. package/out/solid.js.map +2 -2
  39. package/out/sqlite.js +5 -3
  40. package/out/z2s/src/compiler.d.ts +2 -2
  41. package/out/z2s/src/compiler.d.ts.map +1 -1
  42. package/out/z2s/src/compiler.js.map +1 -1
  43. package/out/z2s/src/sql.d.ts +1 -1
  44. package/out/z2s/src/sql.d.ts.map +1 -1
  45. package/out/zero/package.json +5 -3
  46. package/out/zero/src/zero-out.d.ts +3 -0
  47. package/out/zero/src/zero-out.d.ts.map +1 -0
  48. package/out/zero/src/zero-out.js +13 -0
  49. package/out/zero/src/zero-out.js.map +1 -0
  50. package/out/zero-cache/src/auth/load-permissions.d.ts +1 -1
  51. package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
  52. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  53. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  54. package/out/zero-cache/src/auth/write-authorizer.js +36 -12
  55. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  56. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  57. package/out/zero-cache/src/custom/fetch.js +8 -7
  58. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  59. package/out/zero-cache/src/custom-queries/transform-query.d.ts +3 -3
  60. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  61. package/out/zero-cache/src/custom-queries/transform-query.js +6 -7
  62. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  63. package/out/zero-cache/src/scripts/decommission.d.ts +50 -0
  64. package/out/zero-cache/src/scripts/decommission.d.ts.map +1 -0
  65. package/out/zero-cache/src/scripts/decommission.js +51 -0
  66. package/out/zero-cache/src/scripts/decommission.js.map +1 -0
  67. package/out/zero-cache/src/scripts/permissions.d.ts +1 -1
  68. package/out/zero-cache/src/scripts/permissions.d.ts.map +1 -1
  69. package/out/zero-cache/src/scripts/permissions.js +2 -2
  70. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  71. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  72. package/out/zero-cache/src/server/change-streamer.js +7 -10
  73. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  74. package/out/zero-cache/src/server/inspector-delegate.d.ts.map +1 -1
  75. package/out/zero-cache/src/server/inspector-delegate.js +2 -1
  76. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  77. package/out/zero-cache/src/services/analyze.d.ts +2 -6
  78. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  79. package/out/zero-cache/src/services/analyze.js +4 -3
  80. package/out/zero-cache/src/services/analyze.js.map +1 -1
  81. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +2 -3
  82. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +1 -1
  83. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +15 -15
  84. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  85. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts +16 -0
  86. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts.map +1 -0
  87. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +52 -0
  88. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -0
  89. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  90. package/out/zero-cache/src/services/change-streamer/storer.js +15 -1
  91. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  92. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -2
  93. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  94. package/out/zero-cache/src/services/change-streamer/subscriber.js +16 -11
  95. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  96. package/out/zero-cache/src/services/mutagen/pusher.d.ts +19 -21
  97. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  98. package/out/zero-cache/src/services/mutagen/pusher.js +11 -12
  99. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  100. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  101. package/out/zero-cache/src/services/run-ast.js +1 -0
  102. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  103. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  104. package/out/zero-cache/src/services/view-syncer/cvr-store.js +41 -14
  105. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  106. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  107. package/out/zero-cache/src/services/view-syncer/cvr.js +5 -4
  108. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  109. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +1 -0
  110. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -1
  111. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +5 -0
  112. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  113. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +1 -1
  114. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  115. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +81 -2
  116. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  117. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  118. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +24 -2
  119. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  120. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  121. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +4 -2
  122. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  123. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  124. package/out/zero-cache/src/services/view-syncer/schema/init.js +25 -0
  125. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  126. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +7 -0
  127. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  128. package/out/zero-cache/src/services/view-syncer/view-syncer.js +54 -6
  129. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  130. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  131. package/out/zero-cache/src/types/error-with-level.js +8 -3
  132. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  133. package/out/zero-cache/src/types/streams.d.ts +1 -1
  134. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  135. package/out/zero-cache/src/types/streams.js +19 -9
  136. package/out/zero-cache/src/types/streams.js.map +1 -1
  137. package/out/zero-cache/src/types/subscription.d.ts +16 -1
  138. package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
  139. package/out/zero-cache/src/types/subscription.js +41 -5
  140. package/out/zero-cache/src/types/subscription.js.map +1 -1
  141. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  142. package/out/zero-cache/src/workers/syncer.js +1 -3
  143. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  144. package/out/zero-client/src/client/bindings.d.ts +42 -0
  145. package/out/zero-client/src/client/bindings.d.ts.map +1 -0
  146. package/out/zero-client/src/client/client-error-kind-enum.d.ts +12 -12
  147. package/out/zero-client/src/client/client-error-kind-enum.d.ts.map +1 -1
  148. package/out/zero-client/src/client/connection-manager.d.ts +28 -13
  149. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  150. package/out/zero-client/src/client/connection-status-enum.d.ts +2 -0
  151. package/out/zero-client/src/client/connection-status-enum.d.ts.map +1 -1
  152. package/out/zero-client/src/client/connection.d.ts +11 -3
  153. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  154. package/out/zero-client/src/client/context.d.ts +12 -10
  155. package/out/zero-client/src/client/context.d.ts.map +1 -1
  156. package/out/zero-client/src/client/crud.d.ts +1 -1
  157. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  158. package/out/zero-client/src/client/custom.d.ts +39 -16
  159. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  160. package/out/zero-client/src/client/error.d.ts +50 -166
  161. package/out/zero-client/src/client/error.d.ts.map +1 -1
  162. package/out/zero-client/src/client/inspector/html-dialog-prompt.d.ts.map +1 -1
  163. package/out/zero-client/src/client/inspector/inspector.d.ts +3 -2
  164. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  165. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +4 -1
  166. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  167. package/out/zero-client/src/client/mutation-tracker.d.ts +10 -2
  168. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  169. package/out/zero-client/src/client/mutator-proxy.d.ts +16 -0
  170. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -0
  171. package/out/zero-client/src/client/options.d.ts +45 -22
  172. package/out/zero-client/src/client/options.d.ts.map +1 -1
  173. package/out/zero-client/src/client/query-manager.d.ts +9 -2
  174. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  175. package/out/zero-client/src/client/zero-log-context.d.ts +3 -3
  176. package/out/zero-client/src/client/zero-log-context.d.ts.map +1 -1
  177. package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
  178. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  179. package/out/zero-client/src/client/zero-rep.d.ts +7 -4
  180. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  181. package/out/zero-client/src/client/zero.d.ts +88 -18
  182. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  183. package/out/zero-client/src/mod.d.ts +17 -9
  184. package/out/zero-client/src/mod.d.ts.map +1 -1
  185. package/out/zero-client/src/types/query-result.d.ts +24 -0
  186. package/out/zero-client/src/types/query-result.d.ts.map +1 -0
  187. package/out/zero-protocol/src/analyze-query-result.d.ts +1 -0
  188. package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
  189. package/out/zero-protocol/src/analyze-query-result.js +1 -0
  190. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  191. package/out/zero-protocol/src/application-error.d.ts +27 -0
  192. package/out/zero-protocol/src/application-error.d.ts.map +1 -0
  193. package/out/zero-protocol/src/application-error.js +40 -0
  194. package/out/zero-protocol/src/application-error.js.map +1 -0
  195. package/out/zero-protocol/src/custom-queries.d.ts +27 -95
  196. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  197. package/out/zero-protocol/src/custom-queries.js +9 -24
  198. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  199. package/out/zero-protocol/src/down.d.ts +8 -9
  200. package/out/zero-protocol/src/down.d.ts.map +1 -1
  201. package/out/zero-protocol/src/error.d.ts +42 -0
  202. package/out/zero-protocol/src/error.d.ts.map +1 -1
  203. package/out/zero-protocol/src/error.js +7 -0
  204. package/out/zero-protocol/src/error.js.map +1 -1
  205. package/out/zero-protocol/src/inspect-down.d.ts +3 -0
  206. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  207. package/out/zero-protocol/src/mutations-patch.d.ts +3 -0
  208. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
  209. package/out/zero-protocol/src/poke.d.ts +2 -0
  210. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  211. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  212. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  213. package/out/zero-protocol/src/protocol-version.js +3 -1
  214. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  215. package/out/zero-protocol/src/push.d.ts +7 -0
  216. package/out/zero-protocol/src/push.d.ts.map +1 -1
  217. package/out/zero-protocol/src/push.js +1 -0
  218. package/out/zero-protocol/src/push.js.map +1 -1
  219. package/out/zero-react/src/components/inspector.d.ts +1 -1
  220. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  221. package/out/zero-react/src/components/zero-inspector.d.ts +1 -1
  222. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  223. package/out/zero-react/src/mod.d.ts +6 -2
  224. package/out/zero-react/src/mod.d.ts.map +1 -1
  225. package/out/zero-react/src/use-query.d.ts +7 -26
  226. package/out/zero-react/src/use-query.d.ts.map +1 -1
  227. package/out/zero-react/src/zero-provider.d.ts +7 -7
  228. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  229. package/out/zero-schema/src/builder/schema-builder.d.ts +1 -3
  230. package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
  231. package/out/zero-schema/src/permissions.d.ts +1 -1
  232. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  233. package/out/zero-schema/src/schema-config.d.ts +1 -1
  234. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  235. package/out/zero-server/src/adapters/drizzle.d.ts +2 -2
  236. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  237. package/out/zero-server/src/adapters/drizzle.js +4 -0
  238. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  239. package/out/zero-server/src/adapters/pg.d.ts +8 -3
  240. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  241. package/out/zero-server/src/adapters/pg.js +4 -0
  242. package/out/zero-server/src/adapters/pg.js.map +1 -1
  243. package/out/zero-server/src/adapters/postgresjs.d.ts +8 -3
  244. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  245. package/out/zero-server/src/adapters/postgresjs.js +4 -0
  246. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  247. package/out/zero-server/src/custom.d.ts +11 -8
  248. package/out/zero-server/src/custom.d.ts.map +1 -1
  249. package/out/zero-server/src/custom.js +15 -3
  250. package/out/zero-server/src/custom.js.map +1 -1
  251. package/out/zero-server/src/mod.d.ts +4 -4
  252. package/out/zero-server/src/mod.d.ts.map +1 -1
  253. package/out/zero-server/src/mod.js +4 -4
  254. package/out/zero-server/src/mod.js.map +1 -1
  255. package/out/zero-server/src/pg-query-executor.d.ts +11 -0
  256. package/out/zero-server/src/pg-query-executor.d.ts.map +1 -0
  257. package/out/zero-server/src/pg-query-executor.js +17 -0
  258. package/out/zero-server/src/pg-query-executor.js.map +1 -0
  259. package/out/zero-server/src/process-mutations.d.ts +2 -1
  260. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  261. package/out/zero-server/src/process-mutations.js +181 -68
  262. package/out/zero-server/src/process-mutations.js.map +1 -1
  263. package/out/zero-server/src/queries/process-queries.d.ts +6 -5
  264. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  265. package/out/zero-server/src/queries/process-queries.js +87 -19
  266. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  267. package/out/zero-server/src/schema.d.ts +2 -2
  268. package/out/zero-server/src/schema.d.ts.map +1 -1
  269. package/out/zero-server/src/schema.js.map +1 -1
  270. package/out/zero-server/src/zql-database.d.ts +6 -3
  271. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  272. package/out/zero-server/src/zql-database.js +17 -19
  273. package/out/zero-server/src/zql-database.js.map +1 -1
  274. package/out/zero-solid/src/mod.d.ts +8 -0
  275. package/out/zero-solid/src/mod.d.ts.map +1 -1
  276. package/out/zero-solid/src/solid-view.d.ts +3 -23
  277. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  278. package/out/zero-solid/src/use-query.d.ts +4 -4
  279. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  280. package/out/zero-solid/src/use-zero.d.ts +8 -7
  281. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  282. package/out/zero-types/src/server-schema.d.ts.map +1 -0
  283. package/out/zero-types/src/server-schema.js.map +1 -0
  284. package/out/zero.js +31 -14
  285. package/out/zql/src/builder/builder.d.ts +6 -0
  286. package/out/zql/src/builder/builder.d.ts.map +1 -1
  287. package/out/zql/src/builder/builder.js +1 -1
  288. package/out/zql/src/builder/builder.js.map +1 -1
  289. package/out/zql/src/builder/debug-delegate.d.ts +4 -0
  290. package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
  291. package/out/zql/src/builder/debug-delegate.js +17 -0
  292. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  293. package/out/zql/src/ivm/view.d.ts +3 -2
  294. package/out/zql/src/ivm/view.d.ts.map +1 -1
  295. package/out/zql/src/mutate/custom.d.ts +13 -8
  296. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  297. package/out/zql/src/mutate/custom.js.map +1 -1
  298. package/out/zql/src/planner/planner-builder.d.ts +2 -1
  299. package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
  300. package/out/zql/src/planner/planner-builder.js +33 -8
  301. package/out/zql/src/planner/planner-builder.js.map +1 -1
  302. package/out/zql/src/planner/planner-connection.d.ts +9 -3
  303. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  304. package/out/zql/src/planner/planner-connection.js +38 -82
  305. package/out/zql/src/planner/planner-connection.js.map +1 -1
  306. package/out/zql/src/planner/planner-debug.d.ts +37 -7
  307. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  308. package/out/zql/src/planner/planner-debug.js +131 -80
  309. package/out/zql/src/planner/planner-debug.js.map +1 -1
  310. package/out/zql/src/planner/planner-fan-in.d.ts +5 -3
  311. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  312. package/out/zql/src/planner/planner-fan-in.js +41 -23
  313. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  314. package/out/zql/src/planner/planner-fan-out.d.ts +5 -3
  315. package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
  316. package/out/zql/src/planner/planner-fan-out.js +22 -5
  317. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  318. package/out/zql/src/planner/planner-graph.d.ts +2 -2
  319. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  320. package/out/zql/src/planner/planner-graph.js +18 -49
  321. package/out/zql/src/planner/planner-graph.js.map +1 -1
  322. package/out/zql/src/planner/planner-join.d.ts +61 -6
  323. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  324. package/out/zql/src/planner/planner-join.js +156 -69
  325. package/out/zql/src/planner/planner-join.js.map +1 -1
  326. package/out/zql/src/planner/planner-node.d.ts +29 -2
  327. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  328. package/out/zql/src/planner/planner-source.d.ts +1 -1
  329. package/out/zql/src/planner/planner-source.d.ts.map +1 -1
  330. package/out/zql/src/planner/planner-source.js +2 -2
  331. package/out/zql/src/planner/planner-source.js.map +1 -1
  332. package/out/zql/src/planner/planner-terminus.d.ts +4 -3
  333. package/out/zql/src/planner/planner-terminus.d.ts.map +1 -1
  334. package/out/zql/src/planner/planner-terminus.js +4 -4
  335. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  336. package/out/zql/src/query/chained-query.d.ts +35 -0
  337. package/out/zql/src/query/chained-query.d.ts.map +1 -0
  338. package/out/zql/src/query/chained-query.js +66 -0
  339. package/out/zql/src/query/chained-query.js.map +1 -0
  340. package/out/zql/src/query/define-query.d.ts +51 -0
  341. package/out/zql/src/query/define-query.d.ts.map +1 -0
  342. package/out/zql/src/query/define-query.js +53 -0
  343. package/out/zql/src/query/define-query.js.map +1 -0
  344. package/out/zql/src/query/error.d.ts +4 -0
  345. package/out/zql/src/query/error.d.ts.map +1 -0
  346. package/out/zql/src/query/error.js +9 -0
  347. package/out/zql/src/query/error.js.map +1 -0
  348. package/out/zql/src/query/named.d.ts +18 -7
  349. package/out/zql/src/query/named.d.ts.map +1 -1
  350. package/out/zql/src/query/named.js +39 -13
  351. package/out/zql/src/query/named.js.map +1 -1
  352. package/out/zql/src/query/query-delegate-base.d.ts +122 -0
  353. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -0
  354. package/out/zql/src/query/query-delegate-base.js +136 -0
  355. package/out/zql/src/query/query-delegate-base.js.map +1 -0
  356. package/out/zql/src/query/query-delegate.d.ts +29 -4
  357. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  358. package/out/zql/src/query/query-impl.d.ts +27 -48
  359. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  360. package/out/zql/src/query/query-impl.js +155 -175
  361. package/out/zql/src/query/query-impl.js.map +1 -1
  362. package/out/zql/src/query/query-internals.d.ts +70 -0
  363. package/out/zql/src/query/query-internals.d.ts.map +1 -0
  364. package/out/zql/src/query/query-internals.js +21 -0
  365. package/out/zql/src/query/query-internals.js.map +1 -0
  366. package/out/zql/src/query/query.d.ts +26 -243
  367. package/out/zql/src/query/query.d.ts.map +1 -1
  368. package/out/zql/src/query/query.js +0 -1
  369. package/out/zql/src/query/query.js.map +1 -1
  370. package/out/zql/src/query/root-named-query.d.ts +33 -0
  371. package/out/zql/src/query/root-named-query.d.ts.map +1 -0
  372. package/out/zql/src/query/root-named-query.js +95 -0
  373. package/out/zql/src/query/root-named-query.js.map +1 -0
  374. package/out/zql/src/query/static-query.d.ts +5 -14
  375. package/out/zql/src/query/static-query.d.ts.map +1 -1
  376. package/out/zql/src/query/static-query.js +7 -17
  377. package/out/zql/src/query/static-query.js.map +1 -1
  378. package/out/zqlite/src/db.d.ts +2 -1
  379. package/out/zqlite/src/db.d.ts.map +1 -1
  380. package/out/zqlite/src/db.js +2 -0
  381. package/out/zqlite/src/db.js.map +1 -1
  382. package/out/zqlite/src/query-delegate.d.ts +6 -20
  383. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  384. package/out/zqlite/src/query-delegate.js +5 -29
  385. package/out/zqlite/src/query-delegate.js.map +1 -1
  386. package/out/zqlite/src/table-source.d.ts.map +1 -1
  387. package/out/zqlite/src/table-source.js +16 -0
  388. package/out/zqlite/src/table-source.js.map +1 -1
  389. package/package.json +5 -3
  390. package/out/chunk-55BOUNXO.js +0 -356
  391. package/out/chunk-55BOUNXO.js.map +0 -7
  392. package/out/chunk-AIPM77UE.js.map +0 -7
  393. package/out/chunk-ASRS2LFV.js +0 -35
  394. package/out/chunk-ASRS2LFV.js.map +0 -7
  395. package/out/chunk-ECUMGQGC.js.map +0 -7
  396. package/out/chunk-EZM3XBAB.js.map +0 -7
  397. package/out/chunk-TJFNGO7E.js.map +0 -7
  398. package/out/inspector-IU2HG74I.js.map +0 -7
  399. package/out/lazy-inspector-OXIFYSSQ.js.map +0 -7
  400. package/out/zero-client/src/client/on-error.d.ts +0 -15
  401. package/out/zero-client/src/client/on-error.d.ts.map +0 -1
  402. package/out/zero-schema/src/builder/relationship-builder.js +0 -24
  403. package/out/zero-schema/src/builder/relationship-builder.js.map +0 -1
  404. package/out/zero-schema/src/builder/schema-builder.js +0 -78
  405. package/out/zero-schema/src/builder/schema-builder.js.map +0 -1
  406. package/out/zero-schema/src/builder/table-builder.js +0 -128
  407. package/out/zero-schema/src/builder/table-builder.js.map +0 -1
  408. package/out/zero-schema/src/server-schema.d.ts.map +0 -1
  409. package/out/zero-schema/src/server-schema.js.map +0 -1
  410. package/out/zero-server/src/query.d.ts +0 -22
  411. package/out/zero-server/src/query.d.ts.map +0 -1
  412. package/out/zero-server/src/query.js +0 -61
  413. package/out/zero-server/src/query.js.map +0 -1
  414. /package/out/{chunk-ZZXMKAAG.js.map → chunk-5H7WNLPK.js.map} +0 -0
  415. /package/out/{zero-schema → zero-types}/src/server-schema.d.ts +0 -0
  416. /package/out/{zero-schema → zero-types}/src/server-schema.js +0 -0
@@ -1,10 +1,11 @@
1
1
  import {
2
+ IDBDatabasesStore,
2
3
  throwIfStoreClosed,
3
4
  throwIfTransactionClosed
4
- } from "./chunk-ASRS2LFV.js";
5
+ } from "./chunk-HYS7YLNL.js";
5
6
  import {
6
7
  deepFreeze
7
- } from "./chunk-EZM3XBAB.js";
8
+ } from "./chunk-U2KJIWVC.js";
8
9
 
9
10
  // ../replicache/src/kv/sqlite-store.ts
10
11
  import { RWLock } from "@rocicorp/lock";
@@ -211,10 +212,22 @@ function dropStore(name, createDelegate) {
211
212
  tempDelegate.destroy();
212
213
  return Promise.resolve();
213
214
  }
215
+ async function dropAllProviderDatabases(storeProvider) {
216
+ const idbDatabasesStore = new IDBDatabasesStore(storeProvider.create);
217
+ const databases = await idbDatabasesStore.getDatabases();
218
+ const dbNames = Object.values(databases).map((db) => db.name);
219
+ await Promise.all(
220
+ dbNames.map(async (name) => {
221
+ await storeProvider.drop(name);
222
+ await idbDatabasesStore.deleteDatabases([name]);
223
+ })
224
+ );
225
+ }
214
226
 
215
227
  export {
216
228
  SQLiteStore,
217
229
  clearAllNamedStoresForTesting,
218
- dropStore
230
+ dropStore,
231
+ dropAllProviderDatabases
219
232
  };
220
- //# sourceMappingURL=chunk-ECUMGQGC.js.map
233
+ //# sourceMappingURL=chunk-RYFBHAD4.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../replicache/src/kv/sqlite-store.ts"],
4
+ "sourcesContent": ["import {RWLock} from '@rocicorp/lock';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {deepFreeze} from '../frozen-json.ts';\nimport {IDBDatabasesStore} from '../persist/idb-databases-store.ts';\nimport type {Read, Store, StoreProvider, Write} from './store.ts';\nimport {\n throwIfStoreClosed,\n throwIfTransactionClosed,\n} from './throw-if-closed.ts';\n\n/**\n * A SQLite prepared statement.\n *\n * `run` executes the statement with optional parameters.\n * `all` executes the statement and returns the result rows.\n * `finalize` releases the statement.\n */\nexport interface PreparedStatement {\n firstValue(params: string[]): Promise<unknown>;\n exec(params: string[]): Promise<void>;\n}\n\nexport interface SQLiteDatabase {\n /**\n * Close the database connection.\n */\n close(): void;\n\n /**\n * Destroy or delete the database (e.g. delete file).\n */\n destroy(): void;\n\n /**\n * Prepare a SQL string, returning a statement you can execute.\n * E.g. `const stmt = db.prepare(\"SELECT * FROM todos WHERE id=?\");`\n */\n prepare(sql: string): PreparedStatement;\n\n // for PRAGMA statements, schema creation and transaction control.\n execSync(sql: string): void;\n}\n\nexport type CreateSQLiteDatabase = (\n filename: string,\n opts?: SQLiteStoreOptions,\n) => SQLiteDatabase;\n\n/**\n * SQLite-based implementation of the Store interface using a configurable delegate.\n * Supports shared connections between multiple store instances with the same name,\n * providing efficient resource utilization and proper transaction isolation.\n * Uses parameterized queries for safety and performance.\n */\nexport class SQLiteStore implements Store {\n readonly #filename: string;\n readonly #entry: StoreEntry;\n\n #closed = false;\n\n constructor(\n name: string,\n create: CreateSQLiteDatabase,\n opts?: SQLiteStoreOptions,\n ) {\n this.#filename = safeFilename(name);\n this.#entry = getOrCreateEntry(name, create, opts);\n }\n\n async read(): Promise<Read> {\n throwIfStoreClosed(this);\n\n const entry = this.#entry;\n const {db, lock, preparedStatements} = entry;\n const release = await lock.read();\n\n // Start shared read transaction if this is the first reader\n // This ensures consistent reads across all concurrent readers\n if (entry.activeReaders === 0) {\n db.execSync('BEGIN');\n }\n entry.activeReaders++;\n\n return new SQLiteStoreRead(() => {\n entry.activeReaders--;\n // Commit shared read transaction when last reader finishes\n if (entry.activeReaders === 0) {\n db.execSync('COMMIT');\n }\n release();\n }, preparedStatements);\n }\n\n async write(): Promise<Write> {\n throwIfStoreClosed(this);\n\n const {lock, db, preparedStatements} = this.#entry;\n const release = await lock.write();\n\n // At this point, RWLock guarantees no active readers\n // The last reader would have already committed the shared transaction\n\n db.execSync('BEGIN IMMEDIATE');\n\n return new SQLiteWrite(release, db, preparedStatements);\n }\n\n async close(): Promise<void> {\n if (this.#closed) {\n return;\n }\n\n const {lock, db} = this.#entry;\n // Wait for all readers and writers to finish.\n const writeRelease = await lock.write();\n\n // Handle reference counting for shared stores - only close database\n // when this is the last store instance using it\n decrementStoreRefCount(this.#filename, db);\n\n this.#closed = true;\n writeRelease();\n }\n\n get closed(): boolean {\n return this.#closed;\n }\n}\n\nexport function safeFilename(name: string): string {\n return name.replace(/[^a-zA-Z0-9]/g, '_');\n}\n\nexport type PreparedStatements = {\n has: PreparedStatement;\n get: PreparedStatement;\n put: PreparedStatement;\n del: PreparedStatement;\n};\n\nexport interface SQLiteStoreOptions {\n // Common options\n busyTimeout?: number;\n journalMode?: 'WAL' | 'DELETE';\n synchronous?: 'NORMAL' | 'FULL';\n readUncommitted?: boolean;\n}\n\n/**\n * Common database setup logic shared between expo-sqlite and op-sqlite implementations.\n * Configures SQLite pragmas, creates the entry table, and prepares common statements.\n */\n\nexport function setupDatabase(\n delegate: SQLiteDatabase,\n opts?: SQLiteStoreOptions,\n): PreparedStatements {\n // Configure SQLite pragmas for optimal performance\n delegate.execSync(`PRAGMA busy_timeout = ${opts?.busyTimeout ?? 200}`);\n delegate.execSync(`PRAGMA journal_mode = '${opts?.journalMode ?? 'WAL'}'`);\n delegate.execSync(`PRAGMA synchronous = '${opts?.synchronous ?? 'NORMAL'}'`);\n delegate.execSync(\n `PRAGMA read_uncommitted = ${Boolean(opts?.readUncommitted)}`,\n );\n\n // Create the entry table\n delegate.execSync(`\n CREATE TABLE IF NOT EXISTS entry (\n key TEXT PRIMARY KEY, \n value TEXT NOT NULL\n ) WITHOUT ROWID\n `);\n\n // Prepare common statements\n return {\n has: delegate.prepare(`SELECT 1 FROM entry WHERE key = ? LIMIT 1`),\n get: delegate.prepare('SELECT value FROM entry WHERE key = ?'),\n put: delegate.prepare(\n 'INSERT OR REPLACE INTO entry (key, value) VALUES (?, ?)',\n ),\n del: delegate.prepare('DELETE FROM entry WHERE key = ?'),\n };\n}\n\nexport class SQLiteStoreRead implements Read {\n #release: () => void;\n #closed = false;\n #preparedStatements: PreparedStatements;\n\n constructor(release: () => void, preparedStatements: PreparedStatements) {\n this.#release = release;\n this.#preparedStatements = preparedStatements;\n }\n\n async has(key: string): Promise<boolean> {\n throwIfTransactionClosed(this);\n const value = await this.#preparedStatements.has.firstValue([key]);\n return value !== undefined;\n }\n\n async get(key: string): Promise<ReadonlyJSONValue | undefined> {\n throwIfTransactionClosed(this);\n const value = await this.#preparedStatements.get.firstValue([key]);\n if (!value) {\n return undefined;\n }\n\n const parsedValue = JSON.parse(value as string) as ReadonlyJSONValue;\n return deepFreeze(parsedValue);\n }\n\n release(): void {\n if (!this.#closed) {\n this.#closed = true;\n this.#release();\n }\n }\n\n get closed(): boolean {\n return this.#closed;\n }\n}\n\nexport class SQLiteWrite implements Write {\n readonly #release: () => void;\n readonly #dbDelegate: SQLiteDatabase;\n readonly #preparedStatements: PreparedStatements;\n #committed = false;\n #closed = false;\n\n constructor(\n release: () => void,\n dbDelegate: SQLiteDatabase,\n preparedStatements: PreparedStatements,\n ) {\n this.#release = release;\n this.#dbDelegate = dbDelegate;\n this.#preparedStatements = preparedStatements;\n }\n\n async has(key: string): Promise<boolean> {\n throwIfTransactionClosed(this);\n const value = await this.#preparedStatements.has.firstValue([key]);\n return value !== undefined;\n }\n\n async get(key: string): Promise<ReadonlyJSONValue | undefined> {\n throwIfTransactionClosed(this);\n const value = await this.#preparedStatements.get.firstValue([key]);\n if (!value) {\n return undefined;\n }\n\n const parsedValue = JSON.parse(value as string) as ReadonlyJSONValue;\n return deepFreeze(parsedValue);\n }\n\n async put(key: string, value: ReadonlyJSONValue): Promise<void> {\n throwIfTransactionClosed(this);\n await this.#preparedStatements.put.exec([key, JSON.stringify(value)]);\n }\n\n async del(key: string): Promise<void> {\n throwIfTransactionClosed(this);\n await this.#preparedStatements.del.exec([key]);\n }\n\n // oxlint-disable-next-line require-await\n async commit(): Promise<void> {\n throwIfTransactionClosed(this);\n this.#dbDelegate.execSync('COMMIT');\n this.#committed = true;\n }\n\n release(): void {\n if (!this.#closed) {\n this.#closed = true;\n\n if (!this.#committed) {\n this.#dbDelegate.execSync('ROLLBACK');\n }\n\n this.#release();\n }\n }\n\n get closed(): boolean {\n return this.#closed;\n }\n}\n\ntype StoreEntry = {\n readonly lock: RWLock;\n readonly db: SQLiteDatabase;\n refCount: number;\n activeReaders: number;\n preparedStatements: PreparedStatements;\n};\n\n// Global map to share database connections between multiple store instances with the same name\nconst stores = new Map<string, StoreEntry>();\n\n/**\n * Gets an existing store entry or creates a new one if it doesn't exist.\n * This implements the shared connection pattern where multiple stores with the same\n * name share the same database connection, lock, and delegate.\n */\nfunction getOrCreateEntry(\n name: string,\n create: (filename: string, opts?: SQLiteStoreOptions) => SQLiteDatabase,\n opts?: SQLiteStoreOptions,\n): StoreEntry {\n const filename = safeFilename(name);\n const entry = stores.get(filename);\n\n if (entry) {\n entry.refCount++;\n return entry;\n }\n\n const dbDelegate = create(filename, opts);\n const preparedStatements = setupDatabase(dbDelegate, opts);\n\n const lock = new RWLock();\n\n const newEntry: StoreEntry = {\n lock,\n db: dbDelegate,\n refCount: 1,\n activeReaders: 0,\n preparedStatements,\n };\n stores.set(filename, newEntry);\n return newEntry;\n}\n\n/**\n * Decrements the reference count for a shared store and cleans up resources\n * when the last reference is released.\n */\n\nfunction decrementStoreRefCount(\n filename: string,\n dbDelegate: SQLiteDatabase,\n): void {\n const entry = stores.get(filename);\n if (entry) {\n entry.refCount--;\n if (entry.refCount <= 0) {\n dbDelegate.close();\n stores.delete(filename);\n }\n }\n}\nexport function clearAllNamedStoresForTesting(): void {\n for (const entry of stores.values()) {\n entry.db.close();\n }\n stores.clear();\n}\n\nexport function dropStore(\n name: string,\n createDelegate: (\n filename: string,\n opts?: SQLiteStoreOptions,\n ) => SQLiteDatabase,\n): Promise<void> {\n const filename = safeFilename(name);\n const entry = stores.get(filename);\n if (entry) {\n entry.db.close();\n stores.delete(filename);\n }\n\n // Create a temporary delegate to handle database deletion\n const tempDelegate = createDelegate(filename);\n tempDelegate.destroy();\n\n return Promise.resolve();\n}\n\n/**\n * Drops all databases associated with a store provider.\n *\n * TEMPORARY: Only used for testing.\n */\nexport async function dropAllProviderDatabases(\n storeProvider: StoreProvider,\n): Promise<void> {\n const idbDatabasesStore = new IDBDatabasesStore(storeProvider.create);\n\n const databases = await idbDatabasesStore.getDatabases();\n const dbNames = Object.values(databases).map(db => db.name);\n\n await Promise.all(\n dbNames.map(async name => {\n await storeProvider.drop(name);\n await idbDatabasesStore.deleteDatabases([name]);\n }),\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,495 @@
1
+ import {
2
+ AbstractQuery,
3
+ ExpressionBuilder,
4
+ clientToServer,
5
+ defaultFormat,
6
+ queryWithContext
7
+ } from "./chunk-IWL6EEA6.js";
8
+ import {
9
+ mapCondition,
10
+ toStaticParam
11
+ } from "./chunk-JKP7HDC6.js";
12
+ import {
13
+ assert
14
+ } from "./chunk-U2KJIWVC.js";
15
+
16
+ // ../zero-schema/src/builder/relationship-builder.ts
17
+ function relationships(table2, cb) {
18
+ const relationships2 = cb({ many, one });
19
+ return {
20
+ name: table2.schema.name,
21
+ relationships: relationships2
22
+ };
23
+ }
24
+ function many(...args) {
25
+ return args.map((arg) => ({
26
+ sourceField: arg.sourceField,
27
+ destField: arg.destField,
28
+ destSchema: arg.destSchema.schema.name,
29
+ cardinality: "many"
30
+ }));
31
+ }
32
+ function one(...args) {
33
+ return args.map((arg) => ({
34
+ sourceField: arg.sourceField,
35
+ destField: arg.destField,
36
+ destSchema: arg.destSchema.schema.name,
37
+ cardinality: "one"
38
+ }));
39
+ }
40
+
41
+ // ../zql/src/query/static-query.ts
42
+ var StaticQuery = class _StaticQuery extends AbstractQuery {
43
+ constructor(schema, tableName, ast, format, system = "permissions", customQueryID, currentJunction) {
44
+ super(
45
+ schema,
46
+ tableName,
47
+ ast,
48
+ format,
49
+ system,
50
+ customQueryID,
51
+ currentJunction,
52
+ (tableName2, ast2, format2, _customQueryID, _currentJunction) => new _StaticQuery(
53
+ schema,
54
+ tableName2,
55
+ ast2,
56
+ format2,
57
+ system,
58
+ customQueryID,
59
+ currentJunction
60
+ )
61
+ );
62
+ }
63
+ expressionBuilder() {
64
+ return new ExpressionBuilder(this._exists);
65
+ }
66
+ };
67
+
68
+ // ../zero-schema/src/permissions.ts
69
+ var ANYONE_CAN = [
70
+ (_, eb) => eb.and()
71
+ ];
72
+ var ANYONE_CAN_DO_ANYTHING = {
73
+ row: {
74
+ select: ANYONE_CAN,
75
+ insert: ANYONE_CAN,
76
+ update: {
77
+ preMutation: ANYONE_CAN,
78
+ postMutation: ANYONE_CAN
79
+ },
80
+ delete: ANYONE_CAN
81
+ }
82
+ };
83
+ var NOBODY_CAN = [];
84
+ async function definePermissions(schema, definer) {
85
+ const expressionBuilders = {};
86
+ for (const name of Object.keys(schema.tables)) {
87
+ expressionBuilders[name] = new StaticQuery(
88
+ schema,
89
+ name,
90
+ { table: name },
91
+ defaultFormat
92
+ ).expressionBuilder();
93
+ }
94
+ const config = await definer();
95
+ return compilePermissions(schema, config, expressionBuilders);
96
+ }
97
+ function compilePermissions(schema, authz, expressionBuilders) {
98
+ if (!authz) {
99
+ return void 0;
100
+ }
101
+ const nameMapper = clientToServer(schema.tables);
102
+ const ret = { tables: {} };
103
+ for (const [tableName, tableConfig] of Object.entries(authz)) {
104
+ const serverName = schema.tables[tableName].serverName ?? tableName;
105
+ ret.tables[serverName] = {
106
+ row: compileRowConfig(
107
+ nameMapper,
108
+ tableName,
109
+ tableConfig.row,
110
+ expressionBuilders[tableName]
111
+ ),
112
+ cell: compileCellConfig(
113
+ nameMapper,
114
+ tableName,
115
+ tableConfig.cell,
116
+ expressionBuilders[tableName]
117
+ )
118
+ };
119
+ }
120
+ return ret;
121
+ }
122
+ function compileRowConfig(clientToServer2, tableName, rowRules, expressionBuilder) {
123
+ if (!rowRules) {
124
+ return void 0;
125
+ }
126
+ return {
127
+ select: compileRules(
128
+ clientToServer2,
129
+ tableName,
130
+ rowRules.select,
131
+ expressionBuilder
132
+ ),
133
+ insert: compileRules(
134
+ clientToServer2,
135
+ tableName,
136
+ rowRules.insert,
137
+ expressionBuilder
138
+ ),
139
+ update: {
140
+ preMutation: compileRules(
141
+ clientToServer2,
142
+ tableName,
143
+ rowRules.update?.preMutation,
144
+ expressionBuilder
145
+ ),
146
+ postMutation: compileRules(
147
+ clientToServer2,
148
+ tableName,
149
+ rowRules.update?.postMutation,
150
+ expressionBuilder
151
+ )
152
+ },
153
+ delete: compileRules(
154
+ clientToServer2,
155
+ tableName,
156
+ rowRules.delete,
157
+ expressionBuilder
158
+ )
159
+ };
160
+ }
161
+ function compileRules(clientToServer2, tableName, rules, expressionBuilder) {
162
+ if (!rules) {
163
+ return void 0;
164
+ }
165
+ return rules.map((rule) => {
166
+ const cond = rule(authDataRef, expressionBuilder);
167
+ return ["allow", mapCondition(cond, tableName, clientToServer2)];
168
+ });
169
+ }
170
+ function compileCellConfig(clientToServer2, tableName, cellRules, expressionBuilder) {
171
+ if (!cellRules) {
172
+ return void 0;
173
+ }
174
+ const ret = {};
175
+ for (const [columnName, rules] of Object.entries(cellRules)) {
176
+ ret[columnName] = {
177
+ select: compileRules(
178
+ clientToServer2,
179
+ tableName,
180
+ rules.select,
181
+ expressionBuilder
182
+ ),
183
+ insert: compileRules(
184
+ clientToServer2,
185
+ tableName,
186
+ rules.insert,
187
+ expressionBuilder
188
+ ),
189
+ update: {
190
+ preMutation: compileRules(
191
+ clientToServer2,
192
+ tableName,
193
+ rules.update?.preMutation,
194
+ expressionBuilder
195
+ ),
196
+ postMutation: compileRules(
197
+ clientToServer2,
198
+ tableName,
199
+ rules.update?.postMutation,
200
+ expressionBuilder
201
+ )
202
+ },
203
+ delete: compileRules(
204
+ clientToServer2,
205
+ tableName,
206
+ rules.delete,
207
+ expressionBuilder
208
+ )
209
+ };
210
+ }
211
+ return ret;
212
+ }
213
+ var CallTracker = class _CallTracker {
214
+ #anchor;
215
+ #path;
216
+ constructor(anchor, path) {
217
+ this.#anchor = anchor;
218
+ this.#path = path;
219
+ }
220
+ get(target, prop) {
221
+ if (prop === toStaticParam) {
222
+ return target[toStaticParam];
223
+ }
224
+ assert(typeof prop === "string");
225
+ const path = [...this.#path, prop];
226
+ return new Proxy(
227
+ {
228
+ [toStaticParam]: () => staticParam(this.#anchor, path)
229
+ },
230
+ new _CallTracker(this.#anchor, path)
231
+ );
232
+ }
233
+ };
234
+ function baseTracker(anchor) {
235
+ return new Proxy(
236
+ {
237
+ [toStaticParam]: () => {
238
+ throw new Error("no JWT field specified");
239
+ }
240
+ },
241
+ new CallTracker(anchor, [])
242
+ );
243
+ }
244
+ var authDataRef = baseTracker("authData");
245
+ var preMutationRowRef = baseTracker("preMutationRow");
246
+ function staticParam(anchorClass, field) {
247
+ return {
248
+ type: "static",
249
+ anchor: anchorClass,
250
+ // for backwards compatibility
251
+ field: field.length === 1 ? field[0] : field
252
+ };
253
+ }
254
+
255
+ // ../zql/src/query/chained-query.ts
256
+ var ChainedQuery = class _ChainedQuery {
257
+ #parent;
258
+ #chainFn;
259
+ #q;
260
+ constructor(parent, chainFn) {
261
+ this.#parent = parent;
262
+ this.#chainFn = chainFn;
263
+ }
264
+ withContext(ctx) {
265
+ if (this.#q) {
266
+ return this.#q;
267
+ }
268
+ const parentQuery = this.#parent.withContext(ctx);
269
+ this.#q = this.#chainFn(parentQuery);
270
+ return this.#q;
271
+ }
272
+ #withChain(fn) {
273
+ return new _ChainedQuery(
274
+ this,
275
+ fn
276
+ );
277
+ }
278
+ // Query interface methods
279
+ one() {
280
+ return this.#withChain((q) => q.one());
281
+ }
282
+ whereExists(relationship, cbOrOptions, options) {
283
+ if (typeof cbOrOptions === "function") {
284
+ return this.#withChain(
285
+ (q) => q.whereExists(
286
+ relationship,
287
+ cbOrOptions,
288
+ options
289
+ )
290
+ );
291
+ }
292
+ return this.#withChain(
293
+ (q) => q.whereExists(relationship, cbOrOptions)
294
+ );
295
+ }
296
+ related(relationship, cb) {
297
+ if (cb) {
298
+ return this.#withChain(
299
+ (q) => q.related(
300
+ relationship,
301
+ cb
302
+ )
303
+ );
304
+ }
305
+ return this.#withChain(
306
+ (q) => q.related(relationship)
307
+ );
308
+ }
309
+ where(fieldOrExpressionFactory, opOrValue, value) {
310
+ if (typeof fieldOrExpressionFactory === "function") {
311
+ return this.#withChain((q) => q.where(fieldOrExpressionFactory));
312
+ }
313
+ if (value !== void 0) {
314
+ return this.#withChain(
315
+ (q) => (
316
+ // Cast to bypass TypeScript's strict type checking - this proxy method needs runtime flexibility
317
+ q.where(fieldOrExpressionFactory, opOrValue, value)
318
+ )
319
+ );
320
+ }
321
+ return this.#withChain(
322
+ (q) => (
323
+ // Cast to bypass TypeScript's strict type checking - this proxy method needs runtime flexibility
324
+ q.where(fieldOrExpressionFactory, opOrValue)
325
+ )
326
+ );
327
+ }
328
+ start(row, opts) {
329
+ return this.#withChain((q) => q.start(row, opts));
330
+ }
331
+ limit(limit) {
332
+ return this.#withChain((q) => q.limit(limit));
333
+ }
334
+ orderBy(field, direction) {
335
+ return this.#withChain((q) => q.orderBy(field, direction));
336
+ }
337
+ };
338
+
339
+ // ../zql/src/query/root-named-query.ts
340
+ var RootNamedQuery = class {
341
+ #name;
342
+ #input;
343
+ #func;
344
+ #validator;
345
+ #cachedQuery;
346
+ constructor(name, func, input, validator) {
347
+ this.#name = name;
348
+ this.#func = func;
349
+ this.#input = input;
350
+ this.#validator = validator;
351
+ }
352
+ withContext(ctx) {
353
+ if (this.#cachedQuery) {
354
+ return this.#cachedQuery;
355
+ }
356
+ let output;
357
+ if (!this.#validator) {
358
+ output = this.#input;
359
+ } else {
360
+ const result = this.#validator["~standard"].validate(this.#input);
361
+ if (result instanceof Promise) {
362
+ throw new Error(
363
+ `Async validators are not supported. Query name ${this.#name}`
364
+ );
365
+ }
366
+ if (result.issues) {
367
+ throw new Error(
368
+ `Validation failed for query ${this.#name}: ${result.issues.map((issue) => issue.message).join(", ")}`
369
+ );
370
+ }
371
+ output = result.value;
372
+ }
373
+ this.#cachedQuery = queryWithContext(
374
+ this.#func({ ctx, args: output }),
375
+ ctx
376
+ ).nameAndArgs(
377
+ this.#name,
378
+ this.#input === void 0 ? [] : [this.#input]
379
+ );
380
+ return this.#cachedQuery;
381
+ }
382
+ #withChain(fn) {
383
+ return new ChainedQuery(
384
+ this,
385
+ fn
386
+ );
387
+ }
388
+ // Query interface methods
389
+ one() {
390
+ return this.#withChain((q) => q.one());
391
+ }
392
+ whereExists(relationship, cbOrOptions, options) {
393
+ if (typeof cbOrOptions === "function") {
394
+ return this.#withChain(
395
+ (q) => q.whereExists(
396
+ relationship,
397
+ cbOrOptions,
398
+ options
399
+ )
400
+ );
401
+ }
402
+ return this.#withChain(
403
+ (q) => q.whereExists(relationship, cbOrOptions)
404
+ );
405
+ }
406
+ related(relationship, cb) {
407
+ if (cb) {
408
+ return this.#withChain(
409
+ (q) => q.related(
410
+ relationship,
411
+ cb
412
+ )
413
+ );
414
+ }
415
+ return this.#withChain(
416
+ (q) => q.related(relationship)
417
+ );
418
+ }
419
+ where(fieldOrExpressionFactory, opOrValue, value) {
420
+ if (typeof fieldOrExpressionFactory === "function") {
421
+ return this.#withChain((q) => q.where(fieldOrExpressionFactory));
422
+ }
423
+ if (value !== void 0) {
424
+ return this.#withChain(
425
+ (q) => (
426
+ // Cast to bypass TypeScript's strict type checking - this proxy method needs runtime flexibility
427
+ q.where(fieldOrExpressionFactory, opOrValue, value)
428
+ )
429
+ );
430
+ }
431
+ return this.#withChain(
432
+ (q) => (
433
+ // Cast to bypass TypeScript's strict type checking - this proxy method needs runtime flexibility
434
+ q.where(fieldOrExpressionFactory, opOrValue)
435
+ )
436
+ );
437
+ }
438
+ start(row, opts) {
439
+ return this.#withChain((q) => q.start(row, opts));
440
+ }
441
+ limit(limit) {
442
+ return this.#withChain((q) => q.limit(limit));
443
+ }
444
+ orderBy(field, direction) {
445
+ return this.#withChain((q) => q.orderBy(field, direction));
446
+ }
447
+ get customQueryID() {
448
+ return {
449
+ name: this.#name,
450
+ args: this.#input === void 0 ? [] : [this.#input]
451
+ };
452
+ }
453
+ };
454
+
455
+ // ../zql/src/query/define-query.ts
456
+ function defineQuery(name, optionsOrQueryFn, queryFn) {
457
+ let defineOptions;
458
+ let actualQueryFn;
459
+ if (typeof optionsOrQueryFn === "function") {
460
+ defineOptions = void 0;
461
+ actualQueryFn = optionsOrQueryFn;
462
+ } else {
463
+ defineOptions = optionsOrQueryFn;
464
+ actualQueryFn = queryFn;
465
+ }
466
+ const f = ((args) => new RootNamedQuery(
467
+ name,
468
+ actualQueryFn,
469
+ args,
470
+ defineOptions?.validator
471
+ ));
472
+ f.queryName = name;
473
+ return f;
474
+ }
475
+ function defineQueryWithContextType() {
476
+ return defineQuery;
477
+ }
478
+
479
+ // ../zql/src/query/escape-like.ts
480
+ function escapeLike(val) {
481
+ return val.replace(/[%_]/g, "\\$&");
482
+ }
483
+
484
+ export {
485
+ relationships,
486
+ ANYONE_CAN,
487
+ ANYONE_CAN_DO_ANYTHING,
488
+ NOBODY_CAN,
489
+ definePermissions,
490
+ RootNamedQuery,
491
+ defineQuery,
492
+ defineQueryWithContextType,
493
+ escapeLike
494
+ };
495
+ //# sourceMappingURL=chunk-SRLXXPNB.js.map