@rocicorp/zero 0.25.0-canary.2 → 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 (332) 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-COKJ5W7V.js → chunk-IWL6EEA6.js} +10134 -10131
  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 +22 -27
  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.js +5 -5
  34. package/out/shared/src/error.js.map +1 -1
  35. package/out/solid.js +11 -9
  36. package/out/solid.js.map +2 -2
  37. package/out/sqlite.js +5 -3
  38. package/out/z2s/src/compiler.d.ts +2 -2
  39. package/out/z2s/src/compiler.d.ts.map +1 -1
  40. package/out/z2s/src/compiler.js.map +1 -1
  41. package/out/z2s/src/sql.d.ts +1 -1
  42. package/out/z2s/src/sql.d.ts.map +1 -1
  43. package/out/zero/package.json +3 -2
  44. package/out/zero-cache/src/auth/load-permissions.d.ts +1 -1
  45. package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
  46. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  47. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  48. package/out/zero-cache/src/auth/write-authorizer.js +36 -12
  49. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  50. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  51. package/out/zero-cache/src/custom/fetch.js +5 -4
  52. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  53. package/out/zero-cache/src/custom-queries/transform-query.d.ts +3 -3
  54. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  55. package/out/zero-cache/src/custom-queries/transform-query.js +6 -7
  56. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  57. package/out/zero-cache/src/scripts/permissions.d.ts +1 -1
  58. package/out/zero-cache/src/scripts/permissions.d.ts.map +1 -1
  59. package/out/zero-cache/src/scripts/permissions.js +2 -2
  60. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  61. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  62. package/out/zero-cache/src/server/change-streamer.js +7 -10
  63. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  64. package/out/zero-cache/src/services/analyze.d.ts +2 -6
  65. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  66. package/out/zero-cache/src/services/analyze.js +4 -3
  67. package/out/zero-cache/src/services/analyze.js.map +1 -1
  68. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +2 -3
  69. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +1 -1
  70. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +15 -15
  71. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  72. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts +16 -0
  73. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts.map +1 -0
  74. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +52 -0
  75. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -0
  76. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  77. package/out/zero-cache/src/services/change-streamer/storer.js +15 -1
  78. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  79. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -2
  80. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  81. package/out/zero-cache/src/services/change-streamer/subscriber.js +16 -11
  82. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  83. package/out/zero-cache/src/services/mutagen/pusher.d.ts +2 -0
  84. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  85. package/out/zero-cache/src/services/mutagen/pusher.js +7 -8
  86. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  87. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  88. package/out/zero-cache/src/services/run-ast.js +1 -0
  89. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  90. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  91. package/out/zero-cache/src/services/view-syncer/cvr-store.js +41 -14
  92. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  93. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  94. package/out/zero-cache/src/services/view-syncer/cvr.js +5 -4
  95. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  96. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +1 -1
  97. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  98. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +81 -2
  99. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  100. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  101. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +24 -2
  102. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  103. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  104. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +4 -2
  105. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  106. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  107. package/out/zero-cache/src/services/view-syncer/schema/init.js +25 -0
  108. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  109. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  110. package/out/zero-cache/src/services/view-syncer/view-syncer.js +30 -5
  111. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  112. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  113. package/out/zero-cache/src/types/error-with-level.js +8 -3
  114. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  115. package/out/zero-client/src/client/bindings.d.ts +42 -0
  116. package/out/zero-client/src/client/bindings.d.ts.map +1 -0
  117. package/out/zero-client/src/client/client-error-kind-enum.d.ts +12 -12
  118. package/out/zero-client/src/client/client-error-kind-enum.d.ts.map +1 -1
  119. package/out/zero-client/src/client/connection-manager.d.ts +8 -9
  120. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  121. package/out/zero-client/src/client/context.d.ts +12 -10
  122. package/out/zero-client/src/client/context.d.ts.map +1 -1
  123. package/out/zero-client/src/client/crud.d.ts +1 -1
  124. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  125. package/out/zero-client/src/client/custom.d.ts +39 -16
  126. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  127. package/out/zero-client/src/client/error.d.ts +23 -11
  128. package/out/zero-client/src/client/error.d.ts.map +1 -1
  129. package/out/zero-client/src/client/inspector/html-dialog-prompt.d.ts.map +1 -1
  130. package/out/zero-client/src/client/inspector/inspector.d.ts +3 -2
  131. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  132. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +4 -1
  133. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  134. package/out/zero-client/src/client/mutation-tracker.d.ts +10 -2
  135. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  136. package/out/zero-client/src/client/mutator-proxy.d.ts +16 -0
  137. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -0
  138. package/out/zero-client/src/client/options.d.ts +37 -7
  139. package/out/zero-client/src/client/options.d.ts.map +1 -1
  140. package/out/zero-client/src/client/query-manager.d.ts +9 -2
  141. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  142. package/out/zero-client/src/client/zero-log-context.d.ts +3 -3
  143. package/out/zero-client/src/client/zero-log-context.d.ts.map +1 -1
  144. package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
  145. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  146. package/out/zero-client/src/client/zero-rep.d.ts +5 -4
  147. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  148. package/out/zero-client/src/client/zero.d.ts +88 -18
  149. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  150. package/out/zero-client/src/mod.d.ts +14 -9
  151. package/out/zero-client/src/mod.d.ts.map +1 -1
  152. package/out/zero-client/src/types/query-result.d.ts +5 -4
  153. package/out/zero-client/src/types/query-result.d.ts.map +1 -1
  154. package/out/zero-protocol/src/analyze-query-result.d.ts +1 -0
  155. package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
  156. package/out/zero-protocol/src/analyze-query-result.js +1 -0
  157. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  158. package/out/zero-protocol/src/application-error.d.ts +2 -8
  159. package/out/zero-protocol/src/application-error.d.ts.map +1 -1
  160. package/out/zero-protocol/src/application-error.js +3 -0
  161. package/out/zero-protocol/src/application-error.js.map +1 -1
  162. package/out/zero-protocol/src/down.d.ts +1 -0
  163. package/out/zero-protocol/src/down.d.ts.map +1 -1
  164. package/out/zero-protocol/src/inspect-down.d.ts +3 -0
  165. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  166. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  167. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  168. package/out/zero-protocol/src/protocol-version.js +2 -1
  169. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  170. package/out/zero-react/src/components/inspector.d.ts +1 -1
  171. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  172. package/out/zero-react/src/components/zero-inspector.d.ts +1 -1
  173. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  174. package/out/zero-react/src/mod.d.ts +1 -1
  175. package/out/zero-react/src/mod.d.ts.map +1 -1
  176. package/out/zero-react/src/use-query.d.ts +7 -6
  177. package/out/zero-react/src/use-query.d.ts.map +1 -1
  178. package/out/zero-react/src/zero-provider.d.ts +7 -7
  179. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  180. package/out/zero-schema/src/builder/schema-builder.d.ts +1 -3
  181. package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
  182. package/out/zero-schema/src/permissions.d.ts +1 -1
  183. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  184. package/out/zero-schema/src/schema-config.d.ts +1 -1
  185. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  186. package/out/zero-server/src/adapters/drizzle.d.ts +2 -2
  187. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  188. package/out/zero-server/src/adapters/drizzle.js +4 -0
  189. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  190. package/out/zero-server/src/adapters/pg.d.ts +8 -3
  191. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  192. package/out/zero-server/src/adapters/pg.js +4 -0
  193. package/out/zero-server/src/adapters/pg.js.map +1 -1
  194. package/out/zero-server/src/adapters/postgresjs.d.ts +8 -3
  195. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  196. package/out/zero-server/src/adapters/postgresjs.js +4 -0
  197. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  198. package/out/zero-server/src/custom.d.ts +11 -8
  199. package/out/zero-server/src/custom.d.ts.map +1 -1
  200. package/out/zero-server/src/custom.js +15 -3
  201. package/out/zero-server/src/custom.js.map +1 -1
  202. package/out/zero-server/src/mod.d.ts +0 -1
  203. package/out/zero-server/src/mod.d.ts.map +1 -1
  204. package/out/zero-server/src/mod.js +0 -1
  205. package/out/zero-server/src/mod.js.map +1 -1
  206. package/out/zero-server/src/pg-query-executor.d.ts +11 -0
  207. package/out/zero-server/src/pg-query-executor.d.ts.map +1 -0
  208. package/out/zero-server/src/pg-query-executor.js +17 -0
  209. package/out/zero-server/src/pg-query-executor.js.map +1 -0
  210. package/out/zero-server/src/process-mutations.d.ts +2 -1
  211. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  212. package/out/zero-server/src/process-mutations.js +1 -1
  213. package/out/zero-server/src/process-mutations.js.map +1 -1
  214. package/out/zero-server/src/queries/process-queries.d.ts +4 -4
  215. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  216. package/out/zero-server/src/queries/process-queries.js +5 -3
  217. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  218. package/out/zero-server/src/schema.d.ts +2 -2
  219. package/out/zero-server/src/schema.d.ts.map +1 -1
  220. package/out/zero-server/src/schema.js.map +1 -1
  221. package/out/zero-server/src/zql-database.d.ts +6 -3
  222. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  223. package/out/zero-server/src/zql-database.js +17 -19
  224. package/out/zero-server/src/zql-database.js.map +1 -1
  225. package/out/zero-solid/src/solid-view.d.ts +1 -1
  226. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  227. package/out/zero-solid/src/use-query.d.ts +4 -4
  228. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  229. package/out/zero-solid/src/use-zero.d.ts +7 -7
  230. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  231. package/out/zero-types/src/server-schema.d.ts.map +1 -0
  232. package/out/zero-types/src/server-schema.js.map +1 -0
  233. package/out/zero.js +29 -14
  234. package/out/zql/src/builder/builder.d.ts +6 -0
  235. package/out/zql/src/builder/builder.d.ts.map +1 -1
  236. package/out/zql/src/builder/builder.js +1 -1
  237. package/out/zql/src/builder/builder.js.map +1 -1
  238. package/out/zql/src/builder/debug-delegate.d.ts +4 -0
  239. package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
  240. package/out/zql/src/builder/debug-delegate.js +17 -0
  241. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  242. package/out/zql/src/ivm/view.d.ts +3 -2
  243. package/out/zql/src/ivm/view.d.ts.map +1 -1
  244. package/out/zql/src/mutate/custom.d.ts +13 -8
  245. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  246. package/out/zql/src/mutate/custom.js.map +1 -1
  247. package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
  248. package/out/zql/src/planner/planner-builder.js +27 -2
  249. package/out/zql/src/planner/planner-builder.js.map +1 -1
  250. package/out/zql/src/planner/planner-graph.js +1 -1
  251. package/out/zql/src/planner/planner-graph.js.map +1 -1
  252. package/out/zql/src/planner/planner-join.d.ts +1 -1
  253. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  254. package/out/zql/src/planner/planner-join.js +9 -5
  255. package/out/zql/src/planner/planner-join.js.map +1 -1
  256. package/out/zql/src/query/chained-query.d.ts +35 -0
  257. package/out/zql/src/query/chained-query.d.ts.map +1 -0
  258. package/out/zql/src/query/chained-query.js +66 -0
  259. package/out/zql/src/query/chained-query.js.map +1 -0
  260. package/out/zql/src/query/define-query.d.ts +51 -0
  261. package/out/zql/src/query/define-query.d.ts.map +1 -0
  262. package/out/zql/src/query/define-query.js +53 -0
  263. package/out/zql/src/query/define-query.js.map +1 -0
  264. package/out/zql/src/query/named.d.ts +18 -7
  265. package/out/zql/src/query/named.d.ts.map +1 -1
  266. package/out/zql/src/query/named.js +38 -20
  267. package/out/zql/src/query/named.js.map +1 -1
  268. package/out/zql/src/query/query-delegate-base.d.ts +122 -0
  269. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -0
  270. package/out/zql/src/query/query-delegate-base.js +136 -0
  271. package/out/zql/src/query/query-delegate-base.js.map +1 -0
  272. package/out/zql/src/query/query-delegate.d.ts +29 -4
  273. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  274. package/out/zql/src/query/query-impl.d.ts +27 -48
  275. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  276. package/out/zql/src/query/query-impl.js +155 -175
  277. package/out/zql/src/query/query-impl.js.map +1 -1
  278. package/out/zql/src/query/query-internals.d.ts +70 -0
  279. package/out/zql/src/query/query-internals.d.ts.map +1 -0
  280. package/out/zql/src/query/query-internals.js +21 -0
  281. package/out/zql/src/query/query-internals.js.map +1 -0
  282. package/out/zql/src/query/query.d.ts +26 -243
  283. package/out/zql/src/query/query.d.ts.map +1 -1
  284. package/out/zql/src/query/query.js +0 -1
  285. package/out/zql/src/query/query.js.map +1 -1
  286. package/out/zql/src/query/root-named-query.d.ts +33 -0
  287. package/out/zql/src/query/root-named-query.d.ts.map +1 -0
  288. package/out/zql/src/query/root-named-query.js +95 -0
  289. package/out/zql/src/query/root-named-query.js.map +1 -0
  290. package/out/zql/src/query/static-query.d.ts +5 -14
  291. package/out/zql/src/query/static-query.d.ts.map +1 -1
  292. package/out/zql/src/query/static-query.js +7 -17
  293. package/out/zql/src/query/static-query.js.map +1 -1
  294. package/out/zqlite/src/db.d.ts +2 -1
  295. package/out/zqlite/src/db.d.ts.map +1 -1
  296. package/out/zqlite/src/db.js +2 -0
  297. package/out/zqlite/src/db.js.map +1 -1
  298. package/out/zqlite/src/query-delegate.d.ts +6 -20
  299. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  300. package/out/zqlite/src/query-delegate.js +5 -29
  301. package/out/zqlite/src/query-delegate.js.map +1 -1
  302. package/out/zqlite/src/table-source.d.ts.map +1 -1
  303. package/out/zqlite/src/table-source.js +16 -0
  304. package/out/zqlite/src/table-source.js.map +1 -1
  305. package/package.json +3 -2
  306. package/out/chunk-ASRS2LFV.js +0 -35
  307. package/out/chunk-ASRS2LFV.js.map +0 -7
  308. package/out/chunk-COKJ5W7V.js.map +0 -7
  309. package/out/chunk-ECUMGQGC.js.map +0 -7
  310. package/out/chunk-EZM3XBAB.js.map +0 -7
  311. package/out/chunk-TJFNGO7E.js.map +0 -7
  312. package/out/chunk-YWU2DZ23.js +0 -372
  313. package/out/chunk-YWU2DZ23.js.map +0 -7
  314. package/out/inspector-IU2HG74I.js.map +0 -7
  315. package/out/lazy-inspector-OXIFYSSQ.js.map +0 -7
  316. package/out/zero-client/src/client/on-error.d.ts +0 -15
  317. package/out/zero-client/src/client/on-error.d.ts.map +0 -1
  318. package/out/zero-schema/src/builder/relationship-builder.js +0 -24
  319. package/out/zero-schema/src/builder/relationship-builder.js.map +0 -1
  320. package/out/zero-schema/src/builder/schema-builder.js +0 -78
  321. package/out/zero-schema/src/builder/schema-builder.js.map +0 -1
  322. package/out/zero-schema/src/builder/table-builder.js +0 -128
  323. package/out/zero-schema/src/builder/table-builder.js.map +0 -1
  324. package/out/zero-schema/src/server-schema.d.ts.map +0 -1
  325. package/out/zero-schema/src/server-schema.js.map +0 -1
  326. package/out/zero-server/src/query.d.ts +0 -22
  327. package/out/zero-server/src/query.d.ts.map +0 -1
  328. package/out/zero-server/src/query.js +0 -61
  329. package/out/zero-server/src/query.js.map +0 -1
  330. /package/out/{chunk-ZZXMKAAG.js.map → chunk-5H7WNLPK.js.map} +0 -0
  331. /package/out/{zero-schema → zero-types}/src/server-schema.d.ts +0 -0
  332. /package/out/{zero-schema → zero-types}/src/server-schema.js +0 -0
@@ -1,372 +0,0 @@
1
- import {
2
- AbstractQuery,
3
- ExpressionBuilder,
4
- clientToServer,
5
- defaultFormat,
6
- newQuery,
7
- newQuerySymbol
8
- } from "./chunk-COKJ5W7V.js";
9
- import {
10
- mapCondition,
11
- toStaticParam
12
- } from "./chunk-TJFNGO7E.js";
13
- import {
14
- assert
15
- } from "./chunk-EZM3XBAB.js";
16
-
17
- // ../zero-schema/src/builder/relationship-builder.ts
18
- function relationships(table2, cb) {
19
- const relationships2 = cb({ many, one });
20
- return {
21
- name: table2.schema.name,
22
- relationships: relationships2
23
- };
24
- }
25
- function many(...args) {
26
- return args.map((arg) => ({
27
- sourceField: arg.sourceField,
28
- destField: arg.destField,
29
- destSchema: arg.destSchema.schema.name,
30
- cardinality: "many"
31
- }));
32
- }
33
- function one(...args) {
34
- return args.map((arg) => ({
35
- sourceField: arg.sourceField,
36
- destField: arg.destField,
37
- destSchema: arg.destSchema.schema.name,
38
- cardinality: "one"
39
- }));
40
- }
41
-
42
- // ../zql/src/query/static-query.ts
43
- var StaticQuery = class _StaticQuery extends AbstractQuery {
44
- constructor(schema, tableName, ast, format, system = "permissions", customQueryID, currentJunction) {
45
- super(
46
- void 0,
47
- schema,
48
- tableName,
49
- ast,
50
- format,
51
- system,
52
- customQueryID,
53
- currentJunction
54
- );
55
- }
56
- expressionBuilder() {
57
- return new ExpressionBuilder(this._exists);
58
- }
59
- [newQuerySymbol](_delegate, schema, tableName, ast, format, customQueryID, currentJunction) {
60
- return new _StaticQuery(
61
- schema,
62
- tableName,
63
- ast,
64
- format,
65
- "permissions",
66
- customQueryID,
67
- currentJunction
68
- );
69
- }
70
- get ast() {
71
- return this._completeAst();
72
- }
73
- materialize() {
74
- throw new Error("StaticQuery cannot be materialized");
75
- }
76
- run() {
77
- return Promise.reject(new Error("StaticQuery cannot be run"));
78
- }
79
- preload() {
80
- throw new Error("StaticQuery cannot be preloaded");
81
- }
82
- };
83
-
84
- // ../zero-schema/src/permissions.ts
85
- var ANYONE_CAN = [
86
- (_, eb) => eb.and()
87
- ];
88
- var ANYONE_CAN_DO_ANYTHING = {
89
- row: {
90
- select: ANYONE_CAN,
91
- insert: ANYONE_CAN,
92
- update: {
93
- preMutation: ANYONE_CAN,
94
- postMutation: ANYONE_CAN
95
- },
96
- delete: ANYONE_CAN
97
- }
98
- };
99
- var NOBODY_CAN = [];
100
- async function definePermissions(schema, definer) {
101
- const expressionBuilders = {};
102
- for (const name of Object.keys(schema.tables)) {
103
- expressionBuilders[name] = new StaticQuery(
104
- schema,
105
- name,
106
- { table: name },
107
- defaultFormat
108
- ).expressionBuilder();
109
- }
110
- const config = await definer();
111
- return compilePermissions(schema, config, expressionBuilders);
112
- }
113
- function compilePermissions(schema, authz, expressionBuilders) {
114
- if (!authz) {
115
- return void 0;
116
- }
117
- const nameMapper = clientToServer(schema.tables);
118
- const ret = { tables: {} };
119
- for (const [tableName, tableConfig] of Object.entries(authz)) {
120
- const serverName = schema.tables[tableName].serverName ?? tableName;
121
- ret.tables[serverName] = {
122
- row: compileRowConfig(
123
- nameMapper,
124
- tableName,
125
- tableConfig.row,
126
- expressionBuilders[tableName]
127
- ),
128
- cell: compileCellConfig(
129
- nameMapper,
130
- tableName,
131
- tableConfig.cell,
132
- expressionBuilders[tableName]
133
- )
134
- };
135
- }
136
- return ret;
137
- }
138
- function compileRowConfig(clientToServer2, tableName, rowRules, expressionBuilder) {
139
- if (!rowRules) {
140
- return void 0;
141
- }
142
- return {
143
- select: compileRules(
144
- clientToServer2,
145
- tableName,
146
- rowRules.select,
147
- expressionBuilder
148
- ),
149
- insert: compileRules(
150
- clientToServer2,
151
- tableName,
152
- rowRules.insert,
153
- expressionBuilder
154
- ),
155
- update: {
156
- preMutation: compileRules(
157
- clientToServer2,
158
- tableName,
159
- rowRules.update?.preMutation,
160
- expressionBuilder
161
- ),
162
- postMutation: compileRules(
163
- clientToServer2,
164
- tableName,
165
- rowRules.update?.postMutation,
166
- expressionBuilder
167
- )
168
- },
169
- delete: compileRules(
170
- clientToServer2,
171
- tableName,
172
- rowRules.delete,
173
- expressionBuilder
174
- )
175
- };
176
- }
177
- function compileRules(clientToServer2, tableName, rules, expressionBuilder) {
178
- if (!rules) {
179
- return void 0;
180
- }
181
- return rules.map((rule) => {
182
- const cond = rule(authDataRef, expressionBuilder);
183
- return ["allow", mapCondition(cond, tableName, clientToServer2)];
184
- });
185
- }
186
- function compileCellConfig(clientToServer2, tableName, cellRules, expressionBuilder) {
187
- if (!cellRules) {
188
- return void 0;
189
- }
190
- const ret = {};
191
- for (const [columnName, rules] of Object.entries(cellRules)) {
192
- ret[columnName] = {
193
- select: compileRules(
194
- clientToServer2,
195
- tableName,
196
- rules.select,
197
- expressionBuilder
198
- ),
199
- insert: compileRules(
200
- clientToServer2,
201
- tableName,
202
- rules.insert,
203
- expressionBuilder
204
- ),
205
- update: {
206
- preMutation: compileRules(
207
- clientToServer2,
208
- tableName,
209
- rules.update?.preMutation,
210
- expressionBuilder
211
- ),
212
- postMutation: compileRules(
213
- clientToServer2,
214
- tableName,
215
- rules.update?.postMutation,
216
- expressionBuilder
217
- )
218
- },
219
- delete: compileRules(
220
- clientToServer2,
221
- tableName,
222
- rules.delete,
223
- expressionBuilder
224
- )
225
- };
226
- }
227
- return ret;
228
- }
229
- var CallTracker = class _CallTracker {
230
- #anchor;
231
- #path;
232
- constructor(anchor, path) {
233
- this.#anchor = anchor;
234
- this.#path = path;
235
- }
236
- get(target, prop) {
237
- if (prop === toStaticParam) {
238
- return target[toStaticParam];
239
- }
240
- assert(typeof prop === "string");
241
- const path = [...this.#path, prop];
242
- return new Proxy(
243
- {
244
- [toStaticParam]: () => staticParam(this.#anchor, path)
245
- },
246
- new _CallTracker(this.#anchor, path)
247
- );
248
- }
249
- };
250
- function baseTracker(anchor) {
251
- return new Proxy(
252
- {
253
- [toStaticParam]: () => {
254
- throw new Error("no JWT field specified");
255
- }
256
- },
257
- new CallTracker(anchor, [])
258
- );
259
- }
260
- var authDataRef = baseTracker("authData");
261
- var preMutationRowRef = baseTracker("preMutationRow");
262
- function staticParam(anchorClass, field) {
263
- return {
264
- type: "static",
265
- anchor: anchorClass,
266
- // for backwards compatibility
267
- field: field.length === 1 ? field[0] : field
268
- };
269
- }
270
-
271
- // ../zql/src/query/escape-like.ts
272
- function escapeLike(val) {
273
- return val.replace(/[%_]/g, "\\$&");
274
- }
275
-
276
- // ../zql/src/query/error.ts
277
- var QueryParseError = class extends Error {
278
- constructor(opts) {
279
- super(
280
- opts?.cause instanceof Error ? `Failed to parse arguments for query: ${opts.cause.message}` : `Failed to parse arguments for query`,
281
- opts
282
- );
283
- this.name = "QueryParseError";
284
- }
285
- };
286
-
287
- // ../zql/src/query/named.ts
288
- function normalizeParser(parser) {
289
- if (parser) {
290
- if ("parse" in parser) {
291
- return parser.parse.bind(parser);
292
- }
293
- return parser;
294
- }
295
- return void 0;
296
- }
297
- function syncedQuery(name, parser, fn) {
298
- const impl = syncedQueryImpl(name, fn, false);
299
- const ret = (...args) => impl(void 0, args);
300
- ret.queryName = name;
301
- ret.parse = normalizeParser(parser);
302
- ret.takesContext = false;
303
- return ret;
304
- }
305
- function syncedQueryWithContext(name, parser, fn) {
306
- const impl = syncedQueryImpl(name, fn, true);
307
- const ret = (context, ...args) => impl(context, args);
308
- ret.queryName = name;
309
- ret.parse = normalizeParser(parser);
310
- ret.takesContext = true;
311
- return ret;
312
- }
313
- function syncedQueryImpl(name, fn, takesContext) {
314
- return (context, args) => {
315
- const q = takesContext ? fn(context, ...args) : fn(...args);
316
- return q.nameAndArgs(name, args);
317
- };
318
- }
319
- function withValidation(fn) {
320
- if (!fn.parse) {
321
- throw new Error("ret does not have a parse function defined");
322
- }
323
- const ret = (context, ...args) => {
324
- const f = fn;
325
- let parsed;
326
- try {
327
- parsed = f.parse(args);
328
- } catch (error) {
329
- throw new QueryParseError({ cause: error });
330
- }
331
- return f.takesContext ? f(context, ...parsed) : f(...parsed);
332
- };
333
- ret.queryName = fn.queryName;
334
- ret.parse = fn.parse;
335
- ret.takesContext = true;
336
- return ret;
337
- }
338
- function createBuilder(s) {
339
- return makeQueryBuilders(s);
340
- }
341
- function makeQueryBuilders(schema) {
342
- return new Proxy(
343
- {},
344
- {
345
- get: (target, prop) => {
346
- if (prop in target) {
347
- return target[prop];
348
- }
349
- if (!(prop in schema.tables)) {
350
- throw new Error(`Table ${prop} does not exist in schema`);
351
- }
352
- const q = newQuery(void 0, schema, prop);
353
- target[prop] = q;
354
- return q;
355
- }
356
- }
357
- );
358
- }
359
-
360
- export {
361
- relationships,
362
- ANYONE_CAN,
363
- ANYONE_CAN_DO_ANYTHING,
364
- NOBODY_CAN,
365
- definePermissions,
366
- escapeLike,
367
- syncedQuery,
368
- syncedQueryWithContext,
369
- withValidation,
370
- createBuilder
371
- };
372
- //# sourceMappingURL=chunk-YWU2DZ23.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../zero-schema/src/builder/relationship-builder.ts", "../../zql/src/query/static-query.ts", "../../zero-schema/src/permissions.ts", "../../zql/src/query/escape-like.ts", "../../zql/src/query/error.ts", "../../zql/src/query/named.ts"],
4
- "sourcesContent": ["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport type {Relationship, TableSchema} from '../table-schema.ts';\nimport type {TableBuilderWithColumns} from './table-builder.ts';\n\ntype ConnectArg<TSourceField, TDestField, TDest extends TableSchema> = {\n readonly sourceField: TSourceField;\n readonly destField: TDestField;\n readonly destSchema: TableBuilderWithColumns<TDest>;\n};\n\ntype ManyConnection<TSourceField, TDestField, TDest extends TableSchema> = {\n readonly sourceField: TSourceField;\n readonly destField: TDestField;\n readonly destSchema: TDest['name'];\n readonly cardinality: 'many';\n};\n\ntype OneConnection<TSourceField, TDestField, TDest extends TableSchema> = {\n readonly sourceField: TSourceField;\n readonly destField: TDestField;\n readonly destSchema: TDest['name'];\n readonly cardinality: 'one';\n};\n\ntype Prev = [-1, 0, 1, 2, 3, 4, 5, 6];\n\nexport type PreviousSchema<\n TSource extends TableSchema,\n K extends number,\n TDests extends TableSchema[],\n> = K extends 0 ? TSource : TDests[Prev[K]];\n\nexport type Relationships = {\n name: string; // table name\n relationships: Record<string, Relationship>; // relationships for that table\n};\n\n// Overloaded types for better inference\ntype ManyConnector<TSource extends TableSchema> = {\n // Single direct relationship\n <TDest extends TableSchema>(\n arg: ConnectArg<\n readonly (keyof TSource['columns'] & string)[],\n readonly (keyof TDest['columns'] & string)[],\n TDest\n >,\n ): [\n ManyConnection<\n readonly (keyof TSource['columns'] & string)[],\n readonly (keyof TDest['columns'] & string)[],\n TDest\n >,\n ];\n\n // Junction relationship (two hops)\n <TJunction extends TableSchema, TDest extends TableSchema>(\n firstHop: ConnectArg<\n readonly (keyof TSource['columns'] & string)[],\n readonly (keyof TJunction['columns'] & string)[],\n TJunction\n >,\n secondHop: ConnectArg<\n readonly (keyof TJunction['columns'] & string)[],\n readonly (keyof TDest['columns'] & string)[],\n TDest\n >,\n ): [\n ManyConnection<\n readonly (keyof TSource['columns'] & string)[],\n readonly (keyof TJunction['columns'] & string)[],\n TJunction\n >,\n ManyConnection<\n readonly (keyof TJunction['columns'] & string)[],\n readonly (keyof TDest['columns'] & string)[],\n TDest\n >,\n ];\n};\n\ntype OneConnector<TSource extends TableSchema> = {\n // Single direct relationship\n <TDest extends TableSchema>(\n arg: ConnectArg<\n readonly (keyof TSource['columns'] & string)[],\n readonly (keyof TDest['columns'] & string)[],\n TDest\n >,\n ): [\n OneConnection<\n readonly (keyof TSource['columns'] & string)[],\n readonly (keyof TDest['columns'] & string)[],\n TDest\n >,\n ];\n\n // Two-hop relationship (e.g., invoice_line -> invoice -> customer)\n <TIntermediate extends TableSchema, TDest extends TableSchema>(\n firstHop: ConnectArg<\n readonly (keyof TSource['columns'] & string)[],\n readonly (keyof TIntermediate['columns'] & string)[],\n TIntermediate\n >,\n secondHop: ConnectArg<\n readonly (keyof TIntermediate['columns'] & string)[],\n readonly (keyof TDest['columns'] & string)[],\n TDest\n >,\n ): [\n OneConnection<\n readonly (keyof TSource['columns'] & string)[],\n readonly (keyof TIntermediate['columns'] & string)[],\n TIntermediate\n >,\n OneConnection<\n readonly (keyof TIntermediate['columns'] & string)[],\n readonly (keyof TDest['columns'] & string)[],\n TDest\n >,\n ];\n};\n\nexport function relationships<\n TSource extends TableSchema,\n TRelationships extends Record<string, Relationship>,\n>(\n table: TableBuilderWithColumns<TSource>,\n cb: (connects: {\n many: ManyConnector<TSource>;\n one: OneConnector<TSource>;\n }) => TRelationships,\n): {name: TSource['name']; relationships: TRelationships} {\n const relationships = cb({many, one} as any);\n\n return {\n name: table.schema.name,\n relationships,\n };\n}\n\nfunction many(\n ...args: readonly ConnectArg<any, any, TableSchema>[]\n): ManyConnection<any, any, any>[] {\n return args.map(arg => ({\n sourceField: arg.sourceField,\n destField: arg.destField,\n destSchema: arg.destSchema.schema.name,\n cardinality: 'many',\n }));\n}\n\nfunction one(\n ...args: readonly ConnectArg<any, any, TableSchema>[]\n): OneConnection<any, any, any>[] {\n return args.map(arg => ({\n sourceField: arg.sourceField,\n destField: arg.destField,\n destSchema: arg.destSchema.schema.name,\n cardinality: 'one',\n }));\n}\n", "import type {AST, System} from '../../../zero-protocol/src/ast.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {defaultFormat} from '../ivm/default-format.ts';\nimport type {Format} from '../ivm/view.ts';\nimport {ExpressionBuilder} from './expression.ts';\nimport type {CustomQueryID} from './named.ts';\nimport type {QueryDelegate} from './query-delegate.ts';\nimport {AbstractQuery, newQuerySymbol} from './query-impl.ts';\nimport type {HumanReadable, PullRow, Query} from './query.ts';\nimport type {TypedView} from './typed-view.ts';\n\nexport function staticQuery<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n>(schema: TSchema, tableName: TTable): Query<TSchema, TTable> {\n return new StaticQuery<TSchema, TTable>(\n schema,\n tableName,\n {table: tableName},\n defaultFormat,\n );\n}\n\n/**\n * A query that cannot be run.\n * Only serves to generate ASTs.\n */\nexport class StaticQuery<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn = PullRow<TTable, TSchema>,\n> extends AbstractQuery<TSchema, TTable, TReturn> {\n constructor(\n schema: TSchema,\n tableName: TTable,\n ast: AST,\n format: Format,\n system: System = 'permissions',\n customQueryID?: CustomQueryID,\n currentJunction?: string,\n ) {\n super(\n undefined,\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n );\n }\n\n expressionBuilder() {\n return new ExpressionBuilder(this._exists);\n }\n\n protected [newQuerySymbol]<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n >(\n _delegate: QueryDelegate | undefined,\n schema: TSchema,\n tableName: TTable,\n ast: AST,\n format: Format,\n customQueryID: CustomQueryID | undefined,\n currentJunction: string | undefined,\n ): StaticQuery<TSchema, TTable, TReturn> {\n return new StaticQuery(\n schema,\n tableName,\n ast,\n format,\n 'permissions',\n customQueryID,\n currentJunction,\n );\n }\n\n get ast() {\n return this._completeAst();\n }\n\n materialize(): TypedView<HumanReadable<TReturn>> {\n throw new Error('StaticQuery cannot be materialized');\n }\n\n run(): Promise<HumanReadable<TReturn>> {\n return Promise.reject(new Error('StaticQuery cannot be run'));\n }\n\n preload(): {\n cleanup: () => void;\n complete: Promise<void>;\n } {\n throw new Error('StaticQuery cannot be preloaded');\n }\n}\n", "import {assert} from '../../shared/src/asserts.ts';\nimport {\n mapCondition,\n toStaticParam,\n type Condition,\n type Parameter,\n} from '../../zero-protocol/src/ast.ts';\nimport {defaultFormat} from '../../zero-types/src/format.ts';\nimport type {ExpressionBuilder} from '../../zql/src/query/expression.ts';\nimport type {Query} from '../../zql/src/query/query.ts';\nimport {StaticQuery} from '../../zql/src/query/static-query.ts';\nimport type {Schema} from './builder/schema-builder.ts';\nimport type {\n AssetPermissions as CompiledAssetPermissions,\n PermissionsConfig as CompiledPermissionsConfig,\n} from './compiled-permissions.ts';\nimport {clientToServer, NameMapper} from './name-mapper.ts';\n\nexport const ANYONE_CAN = [\n (_: unknown, eb: ExpressionBuilder<Schema, never>) => eb.and(),\n];\n\n/**\n * @deprecated Use {@link ANYONE_CAN} instead.\n */\nexport const ANYONE_CAN_DO_ANYTHING = {\n row: {\n select: ANYONE_CAN,\n insert: ANYONE_CAN,\n update: {\n preMutation: ANYONE_CAN,\n postMutation: ANYONE_CAN,\n },\n delete: ANYONE_CAN,\n },\n};\n\nexport const NOBODY_CAN = [];\n\nexport type Anchor = 'authData' | 'preMutationRow';\n\nexport type Queries<TSchema extends Schema> = {\n [K in keyof TSchema['tables']]: Query<Schema, K & string>;\n};\n\nexport type PermissionRule<\n TAuthDataShape,\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n> = (\n authData: TAuthDataShape,\n eb: ExpressionBuilder<TSchema, TTable>,\n) => Condition;\n\nexport type AssetPermissions<\n TAuthDataShape,\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n> = {\n // Why an array of rules?: https://github.com/rocicorp/mono/pull/3184/files#r1869680716\n select?: PermissionRule<TAuthDataShape, TSchema, TTable>[] | undefined;\n /**\n * @deprecated Use Mutators instead.\n * @see {@link https://zero.rocicorp.dev/docs/writing-data}\n */\n insert?: PermissionRule<TAuthDataShape, TSchema, TTable>[] | undefined;\n /**\n * @deprecated Use Mutators instead.\n * @see {@link https://zero.rocicorp.dev/docs/writing-data}\n */\n update?:\n | {\n preMutation?: PermissionRule<TAuthDataShape, TSchema, TTable>[];\n postMutation?: PermissionRule<TAuthDataShape, TSchema, TTable>[];\n }\n | undefined;\n /**\n * @deprecated Use Mutators instead.\n * @see {@link https://zero.rocicorp.dev/docs/writing-data}\n */\n delete?: PermissionRule<TAuthDataShape, TSchema, TTable>[] | undefined;\n};\n\nexport type PermissionsConfig<TAuthDataShape, TSchema extends Schema> = {\n [K in keyof TSchema['tables']]?: {\n row?: AssetPermissions<TAuthDataShape, TSchema, K & string> | undefined;\n cell?:\n | {\n [C in keyof TSchema['tables'][K]['columns']]?: Omit<\n AssetPermissions<TAuthDataShape, TSchema, K & string>,\n 'cell'\n >;\n }\n | undefined;\n };\n};\n\nexport async function definePermissions<TAuthDataShape, TSchema extends Schema>(\n schema: TSchema,\n definer: () =>\n | Promise<PermissionsConfig<TAuthDataShape, TSchema>>\n | PermissionsConfig<TAuthDataShape, TSchema>,\n): Promise<CompiledPermissionsConfig | undefined> {\n const expressionBuilders = {} as Record<\n string,\n ExpressionBuilder<Schema, string>\n >;\n for (const name of Object.keys(schema.tables)) {\n expressionBuilders[name] = new StaticQuery(\n schema,\n name,\n {table: name},\n defaultFormat,\n ).expressionBuilder();\n }\n\n const config = await definer();\n return compilePermissions(schema, config, expressionBuilders);\n}\n\nfunction compilePermissions<TAuthDataShape, TSchema extends Schema>(\n schema: TSchema,\n authz: PermissionsConfig<TAuthDataShape, TSchema> | undefined,\n expressionBuilders: Record<string, ExpressionBuilder<Schema, string>>,\n): CompiledPermissionsConfig | undefined {\n if (!authz) {\n return undefined;\n }\n const nameMapper = clientToServer(schema.tables);\n const ret: CompiledPermissionsConfig = {tables: {}};\n for (const [tableName, tableConfig] of Object.entries(authz)) {\n const serverName = schema.tables[tableName].serverName ?? tableName;\n ret.tables[serverName] = {\n row: compileRowConfig(\n nameMapper,\n tableName,\n tableConfig.row,\n expressionBuilders[tableName],\n ),\n cell: compileCellConfig(\n nameMapper,\n tableName,\n tableConfig.cell,\n expressionBuilders[tableName],\n ),\n };\n }\n\n return ret;\n}\n\nfunction compileRowConfig<\n TAuthDataShape,\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n>(\n clientToServer: NameMapper,\n tableName: TTable,\n rowRules: AssetPermissions<TAuthDataShape, TSchema, TTable> | undefined,\n expressionBuilder: ExpressionBuilder<TSchema, TTable>,\n): CompiledAssetPermissions | undefined {\n if (!rowRules) {\n return undefined;\n }\n return {\n select: compileRules(\n clientToServer,\n tableName,\n rowRules.select,\n expressionBuilder,\n ),\n insert: compileRules(\n clientToServer,\n tableName,\n rowRules.insert,\n expressionBuilder,\n ),\n update: {\n preMutation: compileRules(\n clientToServer,\n tableName,\n rowRules.update?.preMutation,\n expressionBuilder,\n ),\n postMutation: compileRules(\n clientToServer,\n tableName,\n rowRules.update?.postMutation,\n expressionBuilder,\n ),\n },\n delete: compileRules(\n clientToServer,\n tableName,\n rowRules.delete,\n expressionBuilder,\n ),\n };\n}\n\n/**\n * What is this \"allow\" and why are permissions policies an array of rules?\n *\n * Please read: https://github.com/rocicorp/mono/pull/3184/files#r1869680716\n */\nfunction compileRules<\n TAuthDataShape,\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n>(\n clientToServer: NameMapper,\n tableName: TTable,\n rules: PermissionRule<TAuthDataShape, TSchema, TTable>[] | undefined,\n expressionBuilder: ExpressionBuilder<TSchema, TTable>,\n): ['allow', Condition][] | undefined {\n if (!rules) {\n return undefined;\n }\n\n return rules.map(rule => {\n const cond = rule(authDataRef as TAuthDataShape, expressionBuilder);\n return ['allow', mapCondition(cond, tableName, clientToServer)] as const;\n });\n}\n\nfunction compileCellConfig<\n TAuthDataShape,\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n>(\n clientToServer: NameMapper,\n tableName: TTable,\n cellRules:\n | Record<string, AssetPermissions<TAuthDataShape, TSchema, TTable>>\n | undefined,\n expressionBuilder: ExpressionBuilder<TSchema, TTable>,\n): Record<string, CompiledAssetPermissions> | undefined {\n if (!cellRules) {\n return undefined;\n }\n const ret: Record<string, CompiledAssetPermissions> = {};\n for (const [columnName, rules] of Object.entries(cellRules)) {\n ret[columnName] = {\n select: compileRules(\n clientToServer,\n tableName,\n rules.select,\n expressionBuilder,\n ),\n insert: compileRules(\n clientToServer,\n tableName,\n rules.insert,\n expressionBuilder,\n ),\n update: {\n preMutation: compileRules(\n clientToServer,\n tableName,\n rules.update?.preMutation,\n expressionBuilder,\n ),\n postMutation: compileRules(\n clientToServer,\n tableName,\n rules.update?.postMutation,\n expressionBuilder,\n ),\n },\n delete: compileRules(\n clientToServer,\n tableName,\n rules.delete,\n expressionBuilder,\n ),\n };\n }\n return ret;\n}\n\nclass CallTracker {\n readonly #anchor: Anchor;\n readonly #path: string[];\n constructor(anchor: Anchor, path: string[]) {\n this.#anchor = anchor;\n this.#path = path;\n }\n\n get(target: {[toStaticParam]: () => Parameter}, prop: string | symbol) {\n if (prop === toStaticParam) {\n return target[toStaticParam];\n }\n assert(typeof prop === 'string');\n const path = [...this.#path, prop];\n return new Proxy(\n {\n [toStaticParam]: () => staticParam(this.#anchor, path),\n },\n new CallTracker(this.#anchor, path),\n );\n }\n}\n\nfunction baseTracker(anchor: Anchor) {\n return new Proxy(\n {\n [toStaticParam]: () => {\n throw new Error('no JWT field specified');\n },\n },\n new CallTracker(anchor, []),\n );\n}\n\nexport const authDataRef = baseTracker('authData');\nexport const preMutationRowRef = baseTracker('preMutationRow');\nexport function staticParam(\n anchorClass: 'authData' | 'preMutationRow',\n field: string | string[],\n): Parameter {\n return {\n type: 'static',\n anchor: anchorClass,\n // for backwards compatibility\n field: field.length === 1 ? field[0] : field,\n };\n}\n", "export function escapeLike(val: string) {\n return val.replace(/[%_]/g, '\\\\$&');\n}\n", "export class QueryParseError extends Error {\n constructor(opts: ErrorOptions) {\n super(\n opts?.cause instanceof Error\n ? `Failed to parse arguments for query: ${opts.cause.message}`\n : `Failed to parse arguments for query`,\n opts,\n );\n this.name = 'QueryParseError';\n }\n}\n", "/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {SchemaQuery} from '../mutate/custom.ts';\nimport {QueryParseError} from './error.ts';\nimport {newQuery} from './query-impl.ts';\nimport type {Query} from './query.ts';\n\nexport type QueryFn<\n TContext,\n TTakesContext extends boolean,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends Query<any, any, any>,\n> = TTakesContext extends false\n ? {(...args: TArg): TReturnQuery}\n : {(context: TContext, ...args: TArg): TReturnQuery};\n\nexport type SyncedQuery<\n TName extends string,\n TContext,\n TTakesContext extends boolean,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends Query<any, any, any>,\n> = QueryFn<TContext, TTakesContext, TArg, TReturnQuery> & {\n queryName: TName;\n parse: ParseFn<TArg> | undefined;\n takesContext: TTakesContext;\n};\n\nfunction normalizeParser<T extends ReadonlyJSONValue[]>(\n parser: ParseFn<T> | HasParseFn<T> | undefined,\n): ParseFn<T> | undefined {\n if (parser) {\n if ('parse' in parser) {\n return parser.parse.bind(parser);\n }\n return parser;\n }\n return undefined;\n}\n\nexport function syncedQuery<\n TName extends string,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends Query<any, any, any>,\n>(\n name: TName,\n parser: ParseFn<TArg> | HasParseFn<TArg> | undefined,\n fn: QueryFn<unknown, false, TArg, TReturnQuery>,\n): SyncedQuery<TName, unknown, false, TArg, TReturnQuery> {\n const impl = syncedQueryImpl(name, fn, false);\n const ret: any = (...args: TArg) => impl(undefined, args);\n ret.queryName = name;\n ret.parse = normalizeParser(parser);\n ret.takesContext = false;\n return ret;\n}\n\nexport function syncedQueryWithContext<\n TName extends string,\n TContext,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends Query<any, any, any>,\n>(\n name: TName,\n parser: ParseFn<TArg> | HasParseFn<TArg> | undefined,\n fn: QueryFn<TContext, true, TArg, TReturnQuery>,\n): SyncedQuery<TName, TContext, true, TArg, TReturnQuery> {\n const impl = syncedQueryImpl(name, fn, true);\n const ret: any = (context: TContext, ...args: TArg) => impl(context, args);\n ret.queryName = name;\n ret.parse = normalizeParser(parser);\n ret.takesContext = true;\n return ret;\n}\n\nfunction syncedQueryImpl<\n TName extends string,\n TContext,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends Query<any, any, any>,\n>(name: TName, fn: any, takesContext: boolean) {\n return (context: TContext, args: TArg) => {\n const q = takesContext ? fn(context, ...args) : fn(...args);\n return q.nameAndArgs(name, args) as TReturnQuery;\n };\n}\n\nexport function withValidation<T extends SyncedQuery<any, any, any, any, any>>(\n fn: T,\n): T extends SyncedQuery<infer N, infer C, any, any, infer R>\n ? SyncedQuery<N, C, true, ReadonlyJSONValue[], R>\n : never {\n if (!fn.parse) {\n throw new Error('ret does not have a parse function defined');\n }\n const ret: any = (context: unknown, ...args: unknown[]) => {\n const f = fn as any;\n\n // oxlint-disable-next-line no-explicit-any\n let parsed: any;\n try {\n parsed = f.parse(args);\n } catch (error) {\n throw new QueryParseError({cause: error});\n }\n\n return f.takesContext ? f(context, ...parsed) : f(...parsed);\n };\n ret.queryName = fn.queryName;\n ret.parse = fn.parse;\n ret.takesContext = true;\n\n return ret;\n}\n\nexport type ParseFn<T extends ReadonlyJSONValue[]> = (args: unknown[]) => T;\n\nexport type HasParseFn<T extends ReadonlyJSONValue[]> = {\n parse: ParseFn<T>;\n};\n\nexport type Parser<T extends ReadonlyJSONValue[]> = ParseFn<T> | HasParseFn<T>;\n\nexport type CustomQueryID = {\n name: string;\n args: ReadonlyArray<ReadonlyJSONValue>;\n};\n\n/**\n * Returns a set of query builders for the given schema.\n */\nexport function createBuilder<S extends Schema>(s: S): SchemaQuery<S> {\n return makeQueryBuilders(s) as SchemaQuery<S>;\n}\n\n/**\n * This produces the query builders for a given schema.\n * For use in Zero on the server to process custom queries.\n */\nfunction makeQueryBuilders<S extends Schema>(schema: S): SchemaQuery<S> {\n return new Proxy(\n {},\n {\n get: (\n target: Record<\n string,\n Omit<Query<S, string, any>, 'materialize' | 'preload'>\n >,\n prop: string,\n ) => {\n if (prop in target) {\n return target[prop];\n }\n\n if (!(prop in schema.tables)) {\n throw new Error(`Table ${prop} does not exist in schema`);\n }\n\n const q = newQuery(undefined, schema, prop);\n target[prop] = q;\n return q;\n },\n },\n ) as SchemaQuery<S>;\n}\n"],
5
- "mappings": "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",
6
- "names": ["table", "relationships", "clientToServer"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../zero-react/src/components/inspector.tsx"],
4
- "sourcesContent": ["import type {CustomMutatorDefs} from '../../../zero-client/src/client/custom.ts';\nimport type {Zero} from '../../../zero-client/src/client/zero.ts';\nimport type {Schema} from '../../../zero-schema/src/builder/schema-builder.ts';\nimport {MarkIcon} from './mark-icon.tsx';\n\nexport default function Inspector<\n S extends Schema,\n MD extends CustomMutatorDefs | undefined = undefined,\n>({zero, onClose}: {zero: Zero<S, MD>; onClose: () => void}) {\n return (\n <dialog\n open\n style={{\n alignItems: 'center',\n backgroundColor: 'white',\n borderRadius: '8px 0 0 0',\n bottom: 0,\n boxShadow: '0 4px 8px rgba(0, 0, 0, 0.1)',\n color: 'black',\n display: 'flex',\n height: 'fit-content',\n marginRight: 0,\n opacity: 0.95,\n padding: '0.25em 0.5em',\n position: 'fixed',\n width: 'fit-content',\n zIndex: 1000,\n }}\n >\n <MarkIcon style={{margin: '0.5em'}} />\n <div>Zero v{zero.version}</div>\n <button onClick={onClose} style={{padding: '0.5em'}}>\n \u2716\uFE0E\n </button>\n </dialog>\n );\n}\n"],
5
- "mappings": ";;;;;;AA6BM,cACA,YADA;AAxBS,SAAR,UAGL,EAAC,MAAM,QAAO,GAA6C;AAC3D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAI;AAAA,MACJ,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,iBAAiB;AAAA,QACjB,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,OAAO;AAAA,QACP,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,SAAS;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AAAA,MAEA;AAAA,4BAAC,YAAS,OAAO,EAAC,QAAQ,QAAO,GAAG;AAAA,QACpC,qBAAC,SAAI;AAAA;AAAA,UAAO,KAAK;AAAA,WAAQ;AAAA,QACzB,oBAAC,YAAO,SAAS,SAAS,OAAO,EAAC,SAAS,QAAO,GAAG,0BAErD;AAAA;AAAA;AAAA,EACF;AAEJ;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../zero-client/src/client/inspector/html-dialog-prompt.ts", "../../ast-to-zql/src/ast-to-zql.ts", "../../zero-client/src/client/inspector/query.ts", "../../zero-client/src/client/inspector/lazy-inspector.ts"],
4
- "sourcesContent": ["/**\n * Checks if we can create HTML elements and are in a browser document context\n */\nfunction canUseHTMLDialog(): boolean {\n try {\n // Check if we're in a test environment (vitest sets this)\n if (\n typeof globalThis !== 'undefined' &&\n '__vitest_worker__' in globalThis\n ) {\n return false;\n }\n\n return (\n typeof document !== 'undefined' &&\n typeof document.createElement === 'function' &&\n typeof HTMLDialogElement !== 'undefined' &&\n document.body !== null &&\n // Make sure we can actually create a dialog element\n document.createElement('dialog') instanceof HTMLDialogElement\n );\n } catch {\n return false;\n }\n}\n\n/**\n * Creates a password prompt using HTML <dialog> element\n */\nexport function createHTMLPasswordPrompt(\n message: string,\n): Promise<string | null> {\n if (!canUseHTMLDialog()) {\n // Fallback to browser prompt if HTML dialog is not available\n return Promise.resolve(prompt(message));\n }\n\n return new Promise<string | null>(resolve => {\n // Shared CSS constants\n const reset = 'all:revert;';\n const w = 'rgba(255,255,255,';\n const white = w + '1)';\n const whiteTransp = w + '0.4)';\n const r1 = '0.25rem';\n const font = `font-family:system-ui,sans-serif;color:${white};`;\n const btnBase = `${reset}${font}cursor:pointer;font-size:1rem;font-weight:500;border:none;padding:0.4rem 0.75rem;border-radius:${r1};background:`;\n\n const dialog = document.createElement('dialog');\n dialog.style.cssText = `${reset}${font}background:rgba(0,0,0,0.95);padding:2rem;border:1px solid ${whiteTransp};border-radius:0.5rem;`;\n\n // Prevent keydown from escaping the dialog which can be interfered by other\n // listeners (e.g. global hotkeys)\n dialog.addEventListener('keydown', e => {\n e.stopPropagation();\n });\n\n dialog.oncancel = () => {\n dialog.remove();\n resolve(null);\n };\n\n const form = document.createElement('form');\n form.method = 'dialog';\n form.style.cssText = `${reset}margin:0;`;\n\n const messagePara = document.createElement('p');\n messagePara.style.cssText = `${reset}${font}font-size:1.5rem;margin:0 0 1rem 0;`;\n messagePara.append(message);\n\n const passwordInput = document.createElement('input');\n passwordInput.type = 'password';\n passwordInput.placeholder = 'Admin password';\n passwordInput.autocomplete = 'current-password';\n passwordInput.autofocus = true;\n passwordInput.style.cssText = `${reset}${font}font-size:1rem;display:block;margin:0 0 1rem 0;padding:0.5rem;background:rgba(0,0,0,0.5);border:1px solid ${whiteTransp};border-radius:${r1};`;\n\n const buttonDiv = document.createElement('div');\n buttonDiv.style.cssText = reset;\n\n const cancelBtn = document.createElement('button');\n cancelBtn.type = 'reset';\n cancelBtn.append('Cancel');\n cancelBtn.style.cssText = btnBase + w + '0.25);';\n\n const okBtn = document.createElement('button');\n okBtn.type = 'submit';\n okBtn.value = 'ok';\n okBtn.append('OK');\n okBtn.style.cssText = btnBase + 'rgba(19,106,235,1);margin-right:0.5rem;';\n\n buttonDiv.append(okBtn, cancelBtn);\n form.append(messagePara, passwordInput, buttonDiv);\n dialog.append(form);\n\n form.onreset = () => {\n dialog.close();\n };\n\n dialog.onclose = () => {\n // debugger;\n if (dialog.returnValue === 'ok') {\n resolve(passwordInput.value || null);\n } else {\n resolve(null);\n }\n dialog.remove();\n };\n\n document.body.append(dialog);\n dialog.showModal();\n });\n}\n", "import {unreachable} from '../../shared/src/asserts.ts';\nimport {must} from '../../shared/src/must.ts';\nimport type {\n AST,\n Condition,\n Conjunction,\n CorrelatedSubquery,\n CorrelatedSubqueryCondition,\n Disjunction,\n LiteralReference,\n Ordering,\n Parameter,\n SimpleCondition,\n ValuePosition,\n} from '../../zero-protocol/src/ast.ts';\nimport {SUBQ_PREFIX} from '../../zero-protocol/src/ast.ts';\n\n/**\n * Converts an AST to the equivalent query builder code.\n * This is useful for debugging and understanding queries.\n *\n * @example\n * ```\n * const ast = query.issue.where('id', '=', 123)[astSymbol];\n * console.log(astToZQL(ast)); // outputs: .where('id', '=', 123)\n * ```\n */\nexport function astToZQL(ast: AST): string {\n let code = '';\n\n // Handle where conditions\n if (ast.where) {\n code += transformCondition(ast.where, '.where', new Set());\n }\n\n // Handle related subqueries\n if (ast.related && ast.related.length > 0) {\n for (const related of ast.related) {\n if (related.hidden) {\n const nestedRelated = related.subquery.related?.[0];\n if (nestedRelated) {\n code += transformRelated(nestedRelated);\n }\n } else {\n code += transformRelated(related);\n }\n }\n }\n\n // Handle orderBy\n if (ast.orderBy && ast.orderBy.length > 0) {\n code += transformOrder(ast.orderBy);\n }\n\n // Handle limit\n if (ast.limit !== undefined) {\n code += `.limit(${ast.limit})`;\n }\n\n // Handle start\n if (ast.start) {\n const {row, exclusive} = ast.start;\n code += `.start(${JSON.stringify(row)}${\n exclusive ? '' : ', { inclusive: true }'\n })`;\n }\n\n return code;\n}\n\ntype Args = Set<string>;\n\ntype Prefix = '.where' | 'cmp';\n\nfunction transformCondition(\n condition: Condition,\n prefix: Prefix,\n args: Args,\n): string {\n switch (condition.type) {\n case 'simple':\n return transformSimpleCondition(condition, prefix);\n case 'and':\n case 'or':\n return transformLogicalCondition(condition, prefix, args);\n case 'correlatedSubquery':\n return transformExistsCondition(condition, prefix, args);\n default:\n unreachable(condition);\n }\n}\n\nfunction transformSimpleCondition(\n condition: SimpleCondition,\n prefix: Prefix,\n): string {\n const {left, op, right} = condition;\n\n const leftCode = transformValuePosition(left);\n const rightCode = transformValuePosition(right);\n\n // Handle the shorthand form for equals\n if (op === '=') {\n return `${prefix}(${leftCode}, ${rightCode})`;\n }\n\n return `${prefix}(${leftCode}, '${op}', ${rightCode})`;\n}\n\nfunction transformLogicalCondition(\n condition: Conjunction | Disjunction,\n prefix: Prefix,\n args: Args,\n): string {\n const {type, conditions} = condition;\n\n // For single condition, no need for logical operator\n if (conditions.length === 1) {\n return transformCondition(conditions[0], prefix, args);\n }\n\n // Generate multiple where calls for top-level AND conditions\n if (type === 'and') {\n const parts = conditions.map(c => transformCondition(c, prefix, args));\n // Simply concatenate the where conditions\n if (prefix === '.where') {\n return parts.join('');\n }\n args.add('and');\n return 'and(' + parts.join(', ') + ')';\n }\n\n args = new Set<string>();\n\n // Handle nested conditions with a callback for OR conditions and nested ANDs/ORs\n const conditionsCode = conditions\n .map(c => transformCondition(c, 'cmp', args))\n .join(', ');\n\n args.add('cmp');\n args.add(type);\n const argsCode = [...args].sort().join(', ');\n\n return `.where(({${argsCode}}) => ${type}(${conditionsCode}))`;\n}\n\nfunction transformExistsCondition(\n condition: CorrelatedSubqueryCondition,\n prefix: '.where' | 'cmp',\n args: Set<string>,\n): string {\n const {related, op} = condition;\n const relationship = extractRelationshipName(related);\n\n const nextSubquery = getNextExistsSubquery(related);\n\n // Check if subquery has additional properties\n const hasSubQueryProps =\n nextSubquery.where ||\n (nextSubquery.related && nextSubquery.related.length > 0) ||\n nextSubquery.orderBy ||\n nextSubquery.limit;\n\n if (op === 'EXISTS') {\n const flipped = condition.flip ? ', {flip: true}' : '';\n if (!hasSubQueryProps) {\n if (prefix === '.where') {\n return `.whereExists('${relationship}'${flipped})`;\n }\n args.add('exists');\n return `exists('${relationship}'${flipped})`;\n }\n\n if (prefix === '.where') {\n return `.whereExists('${relationship}', q => q${astToZQL(nextSubquery)}${flipped})`;\n }\n prefix satisfies 'cmp';\n args.add('exists');\n return `exists('${relationship}', q => q${astToZQL(nextSubquery)}${flipped})`;\n }\n\n op satisfies 'NOT EXISTS';\n\n if (hasSubQueryProps) {\n if (prefix === '.where') {\n return `.where(({exists, not}) => not(exists('${relationship}', q => q${astToZQL(\n nextSubquery,\n )})))`;\n }\n prefix satisfies 'cmp';\n args.add('not');\n args.add('exists');\n return `not(exists('${relationship}', q => q${astToZQL(nextSubquery)}))`;\n }\n\n if (prefix === '.where') {\n return `.where(({exists, not}) => not(exists('${relationship}')))`;\n }\n args.add('not');\n args.add('exists');\n\n return `not(exists('${relationship}')))`;\n}\n\n// If the `exists` is applied against a junction edge, both hops will have the same alias and both hops will be exists conditions.\nfunction getNextExistsSubquery(related: CorrelatedSubquery): AST {\n if (\n related.subquery.where?.type === 'correlatedSubquery' &&\n related.subquery.where.related.subquery.alias?.includes(\n SUBQ_PREFIX + 'zhidden_',\n )\n ) {\n return getNextExistsSubquery(related.subquery.where.related);\n }\n\n return related.subquery;\n}\n\nfunction extractRelationshipName(related: CorrelatedSubquery): string {\n const alias = must(related.subquery.alias);\n return alias.startsWith(SUBQ_PREFIX)\n ? alias.substring(SUBQ_PREFIX.length)\n : alias;\n}\n\nfunction transformRelated(related: CorrelatedSubquery): string {\n const {alias} = related.subquery;\n if (!alias) return '';\n\n const relationship = alias;\n let code = `.related('${relationship}'`;\n\n // If the subquery has additional filters or configurations\n if (\n related.subquery.where ||\n (related.subquery.related && related.subquery.related.length > 0) ||\n related.subquery.orderBy ||\n related.subquery.limit\n ) {\n code += ', q => q' + astToZQL(related.subquery);\n }\n\n code += ')';\n return code;\n}\n\nfunction transformOrder(orderBy: Ordering): string {\n let code = '';\n for (const [field, direction] of orderBy) {\n code += `.orderBy('${field}', '${direction}')`;\n }\n return code;\n}\n\nfunction transformValuePosition(value: ValuePosition): string {\n switch (value.type) {\n case 'literal':\n return transformLiteral(value);\n case 'column':\n return `'${value.name}'`;\n case 'static':\n return transformParameter(value);\n default:\n unreachable(value);\n }\n}\n\nfunction transformLiteral(literal: LiteralReference): string {\n if (literal.value === null) {\n return 'null';\n }\n if (Array.isArray(literal.value)) {\n return JSON.stringify(literal.value);\n }\n if (typeof literal.value === 'string') {\n return `'${literal.value.replace(/'/g, \"\\\\'\")}'`;\n }\n return String(literal.value);\n}\n\nfunction transformParameter(param: Parameter): string {\n const fieldStr = Array.isArray(param.field)\n ? `[${param.field.map(f => `'${f}'`).join(', ')}]`\n : `'${param.field}'`;\n\n return `authParam(${fieldStr})`;\n}\n", "import {astToZQL} from '../../../../ast-to-zql/src/ast-to-zql.ts';\nimport {assert} from '../../../../shared/src/asserts.ts';\nimport type {ReadonlyJSONValue} from '../../../../shared/src/json.ts';\nimport type {AnalyzeQueryResult} from '../../../../zero-protocol/src/analyze-query-result.ts';\nimport type {AST} from '../../../../zero-protocol/src/ast.ts';\nimport {\n type InspectQueryRow,\n inspectAnalyzeQueryDownSchema,\n} from '../../../../zero-protocol/src/inspect-down.ts';\nimport type {AnalyzeQueryOptions} from '../../../../zero-protocol/src/inspect-up.ts';\nimport {type TTL, normalizeTTL} from '../../../../zql/src/query/ttl.ts';\nimport {\n type ExtendedInspectorDelegate,\n type GetWebSocket,\n type Metrics,\n mergeMetrics,\n rpc,\n} from './lazy-inspector.ts';\n\nexport class Query {\n readonly #socket: GetWebSocket;\n\n readonly name: string | null;\n readonly args: ReadonlyArray<ReadonlyJSONValue> | null;\n readonly got: boolean;\n readonly ttl: TTL;\n readonly inactivatedAt: Date | null;\n readonly rowCount: number;\n readonly deleted: boolean;\n readonly id: string;\n readonly clientID: string;\n readonly metrics: Metrics | null;\n readonly clientZQL: string | null;\n readonly serverZQL: string | null;\n readonly #serverAST: AST | null;\n\n readonly hydrateClient: number | null;\n readonly hydrateServer: number | null;\n readonly hydrateTotal: number | null;\n\n readonly updateClientP50: number | null;\n readonly updateClientP95: number | null;\n readonly updateServerP50: number | null;\n readonly updateServerP95: number | null;\n\n constructor(\n row: InspectQueryRow,\n delegate: ExtendedInspectorDelegate,\n socket: GetWebSocket,\n ) {\n this.#socket = socket;\n\n const {ast, queryID, inactivatedAt} = row;\n // Use own properties to make this more useful in dev tools. For example, in\n // Chrome dev tools, if you do console.table(queries) you'll see the\n // properties in the table, if these were getters you would not see them in the table.\n this.clientID = row.clientID;\n this.id = queryID;\n this.inactivatedAt =\n inactivatedAt === null ? null : new Date(inactivatedAt);\n this.ttl = normalizeTTL(row.ttl);\n this.name = row.name;\n this.args = row.args;\n this.got = row.got;\n this.rowCount = row.rowCount;\n this.deleted = row.deleted;\n this.#serverAST = ast;\n this.serverZQL = ast ? ast.table + astToZQL(ast) : null;\n const clientAST = delegate.getAST(queryID);\n this.clientZQL = clientAST ? clientAST.table + astToZQL(clientAST) : null;\n\n // Merge client and server metrics\n const clientMetrics = delegate.getQueryMetrics(queryID);\n const serverMetrics = row.metrics;\n\n const merged = mergeMetrics(clientMetrics, serverMetrics);\n this.metrics = merged;\n\n const percentile = (\n name: keyof typeof merged,\n percentile: number,\n ): number | null => {\n if (!merged?.[name]) {\n return null;\n }\n const n = merged[name].quantile(percentile);\n return Number.isNaN(n) ? null : n;\n };\n\n // Extract hydration metrics (median values) - handle NaN by defaulting to 0\n this.hydrateClient = percentile('query-materialization-client', 0.5);\n this.hydrateServer = percentile('query-materialization-server', 0.5);\n this.hydrateTotal = percentile('query-materialization-end-to-end', 0.5);\n\n // Extract update metrics (P50 and P95) - handle NaN by defaulting to 0\n this.updateClientP50 = percentile('query-update-client', 0.5);\n this.updateClientP95 = percentile('query-update-client', 0.95);\n\n this.updateServerP50 = percentile('query-update-server', 0.5);\n this.updateServerP95 = percentile('query-update-server', 0.95);\n }\n\n async analyze(options?: AnalyzeQueryOptions): Promise<AnalyzeQueryResult> {\n assert(this.#serverAST, 'No server AST available for this query');\n return rpc(\n await this.#socket(),\n {\n op: 'analyze-query',\n value: this.#serverAST,\n options,\n },\n inspectAnalyzeQueryDownSchema,\n );\n }\n}\n", "import type {BTreeRead} from '../../../../replicache/src/btree/read.ts';\nimport type {Read} from '../../../../replicache/src/dag/store.ts';\nimport {readFromHash} from '../../../../replicache/src/db/read.ts';\nimport * as FormatVersion from '../../../../replicache/src/format-version-enum.ts';\nimport {getClientGroup} from '../../../../replicache/src/persist/client-groups.ts';\nimport {\n getClient,\n getClients,\n type ClientMap,\n} from '../../../../replicache/src/persist/clients.ts';\nimport type {ReplicacheImpl} from '../../../../replicache/src/replicache-impl.ts';\nimport {withRead} from '../../../../replicache/src/with-transactions.ts';\nimport {assert} from '../../../../shared/src/asserts.ts';\nimport type {ReadonlyJSONValue} from '../../../../shared/src/json.ts';\nimport {mapValues} from '../../../../shared/src/objects.ts';\nimport {TDigest, type ReadonlyTDigest} from '../../../../shared/src/tdigest.ts';\nimport * as valita from '../../../../shared/src/valita.ts';\nimport type {AnalyzeQueryResult} from '../../../../zero-protocol/src/analyze-query-result.ts';\nimport type {AST} from '../../../../zero-protocol/src/ast.ts';\nimport type {Row} from '../../../../zero-protocol/src/data.ts';\nimport {\n inspectAnalyzeQueryDownSchema,\n inspectAuthenticatedDownSchema,\n inspectMetricsDownSchema,\n inspectQueriesDownSchema,\n inspectVersionDownSchema,\n type InspectDownBody,\n type InspectQueryRow,\n type ServerMetrics as ServerMetricsJSON,\n} from '../../../../zero-protocol/src/inspect-down.ts';\nimport type {\n AnalyzeQueryOptions,\n InspectUpBody,\n} from '../../../../zero-protocol/src/inspect-up.ts';\nimport type {\n ClientMetricMap,\n ServerMetricMap,\n} from '../../../../zql/src/query/metrics-delegate.ts';\nimport type {AnyQuery} from '../../../../zql/src/query/query-impl.ts';\nimport {nanoid} from '../../util/nanoid.ts';\nimport {ENTITIES_KEY_PREFIX} from '../keys.ts';\nimport type {MutatorDefs} from '../replicache-types.ts';\nimport {Client} from './client.ts';\nimport {createHTMLPasswordPrompt} from './html-dialog-prompt.ts';\nimport {type Lazy} from './inspector.ts';\nimport {Query} from './query.ts';\n\nexport type GetWebSocket = () => Promise<WebSocket>;\n\nexport type Metrics = {\n readonly [K in keyof (ClientMetricMap & ServerMetricMap)]: ReadonlyTDigest;\n};\n\ntype DistributiveOmit<T, K extends string> = T extends object\n ? Omit<T, K>\n : never;\n\nexport async function rpc<T extends InspectDownBody>(\n socket: WebSocket,\n arg: DistributiveOmit<InspectUpBody, 'id'>,\n downSchema: valita.Type<T>,\n): Promise<T['value']> {\n try {\n return await rpcNoAuthTry(socket, arg, downSchema);\n } catch (e) {\n if (e instanceof UnauthenticatedError) {\n const password = await createHTMLPasswordPrompt('Enter password:');\n if (password) {\n // Do authenticate rpc\n const authRes = await rpcNoAuthTry(\n socket,\n {op: 'authenticate', value: password},\n inspectAuthenticatedDownSchema,\n );\n if (authRes) {\n // If authentication is successful, retry the original RPC\n return rpcNoAuthTry(socket, arg, downSchema);\n }\n }\n throw new Error('Authentication failed');\n }\n throw e;\n }\n}\n\nfunction rpcNoAuthTry<T extends InspectDownBody>(\n socket: WebSocket,\n arg: DistributiveOmit<InspectUpBody, 'id'>,\n downSchema: valita.Type<T>,\n): Promise<T['value']> {\n return new Promise((resolve, reject) => {\n const id = nanoid();\n const f = (ev: MessageEvent) => {\n const msg = JSON.parse(ev.data);\n if (msg[0] === 'inspect') {\n const body = msg[1];\n if (body.id !== id) {\n return;\n }\n const res = valita.test(body, downSchema);\n if (res.ok) {\n if (res.value.op === 'error') {\n reject(new Error(res.value.value));\n } else {\n resolve(res.value.value);\n }\n } else {\n // Check if we got un authenticated/false response\n const authRes = valita.test(body, inspectAuthenticatedDownSchema);\n if (authRes.ok) {\n // Handle authenticated response\n assert(\n authRes.value.value === false,\n 'Expected unauthenticated response',\n );\n reject(new UnauthenticatedError());\n }\n\n reject(res.error);\n }\n socket.removeEventListener('message', f);\n }\n };\n socket.addEventListener('message', f);\n socket.send(JSON.stringify(['inspect', {...arg, id}]));\n });\n} // T extends forces T to be resolved\n\nexport function mergeMetrics(\n clientMetrics: ClientMetrics | undefined,\n serverMetrics: ServerMetricsJSON | null | undefined,\n): ClientMetrics & ServerMetrics {\n return {\n ...(clientMetrics ?? newClientMetrics()),\n ...(serverMetrics\n ? convertServerMetrics(serverMetrics)\n : newServerMetrics()),\n };\n}\n\nfunction newClientMetrics(): ClientMetrics {\n return {\n 'query-materialization-client': new TDigest(),\n 'query-materialization-end-to-end': new TDigest(),\n 'query-update-client': new TDigest(),\n };\n}\n\nfunction newServerMetrics(): ServerMetrics {\n return {\n 'query-materialization-server': new TDigest(),\n 'query-update-server': new TDigest(),\n };\n}\n\nfunction convertServerMetrics(metrics: ServerMetricsJSON): ServerMetrics {\n return mapValues(metrics, v => TDigest.fromJSON(v));\n}\n\nexport async function inspectorMetrics(\n delegate: ExtendedInspectorDelegate,\n): Promise<Metrics> {\n const clientMetrics = delegate.metrics;\n const serverMetricsJSON = await rpc(\n await delegate.getSocket(),\n {op: 'metrics'},\n inspectMetricsDownSchema,\n );\n return mergeMetrics(clientMetrics, serverMetricsJSON);\n}\n\nexport function inspectorClients(\n delegate: ExtendedInspectorDelegate,\n): Promise<Client[]> {\n return withDagRead(delegate, dagRead => clients(delegate, dagRead));\n}\n\nexport function inspectorClientsWithQueries(\n delegate: ExtendedInspectorDelegate,\n): Promise<Client[]> {\n return withDagRead(delegate, dagRead =>\n clientsWithQueries(delegate, dagRead),\n );\n}\n\nasync function withDagRead<T>(\n delegate: ExtendedInspectorDelegate,\n f: (dagRead: Read) => Promise<T>,\n): Promise<T> {\n const {rep} = delegate;\n await rep.refresh();\n await rep.persist();\n return withRead(rep.perdag, f);\n}\n\nasync function getBTree(dagRead: Read, clientID: string): Promise<BTreeRead> {\n const client = await getClient(clientID, dagRead);\n assert(client, `Client not found: ${clientID}`);\n const {clientGroupID} = client;\n const clientGroup = await getClientGroup(clientGroupID, dagRead);\n assert(clientGroup, `Client group not found: ${clientGroupID}`);\n const dbRead = await readFromHash(\n clientGroup.headHash,\n dagRead,\n FormatVersion.Latest,\n );\n return dbRead.map;\n}\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\ntype MapEntry<T extends ReadonlyMap<any, any>> =\n T extends ReadonlyMap<infer K, infer V> ? readonly [K, V] : never;\n\nasync function clients(\n delegate: ExtendedInspectorDelegate,\n dagRead: Read,\n predicate: (entry: MapEntry<ClientMap>) => boolean = () => true,\n): Promise<Client[]> {\n const clients = await getClients(dagRead);\n return [...clients.entries()]\n .filter(predicate)\n .map(\n ([clientID, {clientGroupID}]) =>\n new Client(delegate, clientID, clientGroupID),\n );\n}\n\nasync function clientsWithQueries(\n delegate: ExtendedInspectorDelegate,\n dagRead: Read,\n predicate: (entry: MapEntry<ClientMap>) => boolean = () => true,\n): Promise<Client[]> {\n const allClients = await clients(delegate, dagRead, predicate);\n const clientsWithQueries: Client[] = [];\n await Promise.all(\n allClients.map(async client => {\n const queries = await client.queries();\n if (queries.length > 0) {\n clientsWithQueries.push(client);\n }\n }),\n );\n return clientsWithQueries;\n}\n\nexport async function clientGroupClients(\n delegate: ExtendedInspectorDelegate,\n clientGroupID: Promise<string> | string,\n): Promise<Client[]> {\n const id = await clientGroupID;\n return withDagRead(delegate, dagRead =>\n clients(delegate, dagRead, ([_, v]) => v.clientGroupID === id),\n );\n}\n\nexport async function clientGroupClientsWithQueries(\n delegate: ExtendedInspectorDelegate,\n clientGroupID: Promise<string> | string,\n): Promise<Client[]> {\n const id = await clientGroupID;\n return withDagRead(delegate, dagRead =>\n clientsWithQueries(delegate, dagRead, ([_, v]) => v.clientGroupID === id),\n );\n}\n\nexport async function clientGroupQueries(\n delegate: ExtendedInspectorDelegate,\n): Promise<Query[]> {\n const rows: InspectQueryRow[] = await rpc(\n await delegate.getSocket(),\n {op: 'queries'},\n inspectQueriesDownSchema,\n );\n return rows.map(row => new Query(row, delegate, delegate.getSocket));\n}\n\nexport function clientMap(\n delegate: ExtendedInspectorDelegate,\n clientID: string,\n): Promise<Map<string, ReadonlyJSONValue>> {\n return withDagRead(delegate, async dagRead => {\n const tree = await getBTree(dagRead, clientID);\n const map = new Map<string, ReadonlyJSONValue>();\n for await (const [key, value] of tree.scan('')) {\n map.set(key, value);\n }\n return map;\n });\n}\n\nexport function clientRows(\n delegate: ExtendedInspectorDelegate,\n clientID: string,\n tableName: string,\n): Promise<Row[]> {\n return withDagRead(delegate, async dagRead => {\n const prefix = ENTITIES_KEY_PREFIX + tableName + '/';\n const tree = await getBTree(dagRead, clientID);\n const rows: Row[] = [];\n for await (const [key, value] of tree.scan(prefix)) {\n if (!key.startsWith(prefix)) {\n break;\n }\n rows.push(value as Row);\n }\n return rows;\n });\n}\n\nexport async function serverVersion(\n delegate: ExtendedInspectorDelegate,\n): Promise<string> {\n return rpc(\n await delegate.getSocket(),\n {op: 'version'},\n inspectVersionDownSchema,\n );\n}\n\nexport async function clientQueries(\n delegate: ExtendedInspectorDelegate,\n clientID: string,\n): Promise<Query[]> {\n const rows: InspectQueryRow[] = await rpc(\n await delegate.getSocket(),\n {op: 'queries', clientID},\n inspectQueriesDownSchema,\n );\n return rows.map(row => new Query(row, delegate, delegate.getSocket));\n}\n\nexport async function analyzeQuery(\n delegate: ExtendedInspectorDelegate,\n query: AnyQuery,\n options?: AnalyzeQueryOptions,\n): Promise<AnalyzeQueryResult> {\n const {customQueryID} = query;\n const queryParameters = customQueryID\n ? {name: customQueryID.name, args: customQueryID.args}\n : {ast: query.ast};\n\n return rpc(\n await delegate.getSocket(),\n {\n op: 'analyze-query',\n ...queryParameters,\n options,\n },\n inspectAnalyzeQueryDownSchema,\n );\n}\n\nclass UnauthenticatedError extends Error {}\n\nexport interface InspectorDelegate {\n getQueryMetrics(hash: string): ClientMetrics | undefined;\n getAST(queryID: string): AST | undefined;\n readonly metrics: ClientMetrics;\n}\n\nexport interface ExtendedInspectorDelegate extends InspectorDelegate {\n readonly rep: Rep;\n readonly getSocket: () => Promise<WebSocket>;\n lazy: Promise<Lazy>;\n}\n\nexport type Rep = ReplicacheImpl<MutatorDefs>;\n\nexport type ClientMetrics = {\n readonly [K in keyof ClientMetricMap]: ReadonlyTDigest;\n};\n\nexport type ServerMetrics = {\n readonly [K in keyof ServerMetricMap]: ReadonlyTDigest;\n};\n"],
5
- "mappings": "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",
6
- "names": ["percentile", "clients", "clientsWithQueries"]
7
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * Callback function invoked when an error occurs within a Zero instance.
3
- *
4
- * @param message - A descriptive error message explaining what went wrong
5
- * @param rest - Additional context or error details. These are typically:
6
- * - Error objects with stack traces
7
- * - JSON-serializable data related to the error context
8
- * - State information at the time of the error
9
- */
10
- export type OnError = (message: string, ...rest: unknown[]) => void;
11
- /**
12
- * Type representing the parameter types of the {@link OnError} callback.
13
- */
14
- export type OnErrorParameters = Parameters<OnError>;
15
- //# sourceMappingURL=on-error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"on-error.d.ts","sourceRoot":"","sources":["../../../../../zero-client/src/client/on-error.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC"}
@@ -1,24 +0,0 @@
1
- export function relationships(table, cb) {
2
- const relationships = cb({ many, one });
3
- return {
4
- name: table.schema.name,
5
- relationships,
6
- };
7
- }
8
- function many(...args) {
9
- return args.map(arg => ({
10
- sourceField: arg.sourceField,
11
- destField: arg.destField,
12
- destSchema: arg.destSchema.schema.name,
13
- cardinality: 'many',
14
- }));
15
- }
16
- function one(...args) {
17
- return args.map(arg => ({
18
- sourceField: arg.sourceField,
19
- destField: arg.destField,
20
- destSchema: arg.destSchema.schema.name,
21
- cardinality: 'one',
22
- }));
23
- }
24
- //# sourceMappingURL=relationship-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relationship-builder.js","sourceRoot":"","sources":["../../../../../zero-schema/src/builder/relationship-builder.ts"],"names":[],"mappings":"AA0HA,MAAM,UAAU,aAAa,CAI3B,KAAuC,EACvC,EAGoB;IAEpB,MAAM,aAAa,GAAG,EAAE,CAAC,EAAC,IAAI,EAAE,GAAG,EAAQ,CAAC,CAAC;IAE7C,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;QACvB,aAAa;KACd,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CACX,GAAG,IAAkD;IAErD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;QACtC,WAAW,EAAE,MAAM;KACpB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,GAAG,CACV,GAAG,IAAkD;IAErD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;QACtC,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC,CAAC;AACN,CAAC"}