@rocicorp/zero 0.25.0-canary.8 → 0.25.0-canary.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/out/shared/src/deep-merge.d.ts +20 -3
  2. package/out/shared/src/deep-merge.d.ts.map +1 -1
  3. package/out/shared/src/deep-merge.js +27 -0
  4. package/out/shared/src/deep-merge.js.map +1 -0
  5. package/out/shared/src/logging.d.ts.map +1 -1
  6. package/out/shared/src/logging.js +25 -9
  7. package/out/shared/src/logging.js.map +1 -1
  8. package/out/shared/src/object-traversal.d.ts +19 -0
  9. package/out/shared/src/object-traversal.d.ts.map +1 -0
  10. package/out/shared/src/object-traversal.js +27 -0
  11. package/out/shared/src/object-traversal.js.map +1 -0
  12. package/out/zero/package.json.js +1 -1
  13. package/out/zero/src/pg.js +0 -2
  14. package/out/zero/src/pg.js.map +1 -1
  15. package/out/zero/src/server.js +0 -2
  16. package/out/zero/src/server.js.map +1 -1
  17. package/out/zero/src/zero.js +19 -3
  18. package/out/zero/src/zero.js.map +1 -1
  19. package/out/zero-cache/src/auth/jwt.d.ts +3 -0
  20. package/out/zero-cache/src/auth/jwt.d.ts.map +1 -1
  21. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  22. package/out/zero-cache/src/auth/write-authorizer.d.ts +2 -1
  23. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  24. package/out/zero-cache/src/auth/write-authorizer.js +1 -11
  25. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  26. package/out/zero-cache/src/config/zero-config.d.ts +27 -0
  27. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  28. package/out/zero-cache/src/config/zero-config.js +35 -7
  29. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  30. package/out/zero-cache/src/custom/fetch.d.ts +5 -5
  31. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  32. package/out/zero-cache/src/custom/fetch.js +14 -11
  33. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  34. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  35. package/out/zero-cache/src/custom-queries/transform-query.js +2 -4
  36. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  37. package/out/zero-cache/src/db/specs.d.ts +1 -1
  38. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  39. package/out/zero-cache/src/server/change-streamer.js +9 -9
  40. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  41. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  42. package/out/zero-cache/src/server/syncer.js +20 -8
  43. package/out/zero-cache/src/server/syncer.js.map +1 -1
  44. package/out/zero-cache/src/services/analyze.d.ts +1 -1
  45. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  46. package/out/zero-cache/src/services/analyze.js +10 -1
  47. package/out/zero-cache/src/services/analyze.js.map +1 -1
  48. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +5 -5
  49. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +2 -2
  50. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +1 -1
  51. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +11 -2
  52. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  53. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +36 -0
  54. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  55. package/out/zero-cache/src/services/http-service.d.ts +5 -4
  56. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  57. package/out/zero-cache/src/services/http-service.js +15 -10
  58. package/out/zero-cache/src/services/http-service.js.map +1 -1
  59. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +2 -1
  60. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  61. package/out/zero-cache/src/services/mutagen/mutagen.js +3 -2
  62. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  63. package/out/zero-cache/src/services/mutagen/pusher.d.ts +198 -0
  64. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  65. package/out/zero-cache/src/services/mutagen/pusher.js +5 -5
  66. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  67. package/out/zero-cache/src/services/run-ast.d.ts +4 -0
  68. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  69. package/out/zero-cache/src/services/run-ast.js +8 -1
  70. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  71. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  72. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +2 -1
  73. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  74. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  75. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +15 -8
  76. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  77. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +4 -4
  78. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  79. package/out/zero-cache/src/services/view-syncer/view-syncer.js +48 -25
  80. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  81. package/out/zero-cache/src/workers/connection.js +20 -15
  82. package/out/zero-cache/src/workers/connection.js.map +1 -1
  83. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  84. package/out/zero-cache/src/workers/syncer.js +3 -3
  85. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  86. package/out/zero-client/src/client/bindings.d.ts +4 -4
  87. package/out/zero-client/src/client/bindings.d.ts.map +1 -1
  88. package/out/zero-client/src/client/bindings.js.map +1 -1
  89. package/out/zero-client/src/client/connection.d.ts +1 -1
  90. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  91. package/out/zero-client/src/client/connection.js +1 -1
  92. package/out/zero-client/src/client/connection.js.map +1 -1
  93. package/out/zero-client/src/client/crud.d.ts +7 -5
  94. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  95. package/out/zero-client/src/client/crud.js +7 -7
  96. package/out/zero-client/src/client/crud.js.map +1 -1
  97. package/out/zero-client/src/client/custom.d.ts +7 -5
  98. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  99. package/out/zero-client/src/client/custom.js +12 -7
  100. package/out/zero-client/src/client/custom.js.map +1 -1
  101. package/out/zero-client/src/client/inspector/inspector.d.ts +5 -1
  102. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  103. package/out/zero-client/src/client/inspector/inspector.js +7 -0
  104. package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
  105. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  106. package/out/zero-client/src/client/inspector/lazy-inspector.js +13 -13
  107. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
  108. package/out/zero-client/src/client/make-mutate-property.d.ts +43 -0
  109. package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -0
  110. package/out/zero-client/src/client/make-mutate-property.js +38 -0
  111. package/out/zero-client/src/client/make-mutate-property.js.map +1 -0
  112. package/out/zero-client/src/client/make-replicache-mutators.d.ts +34 -0
  113. package/out/zero-client/src/client/make-replicache-mutators.d.ts.map +1 -0
  114. package/out/zero-client/src/client/make-replicache-mutators.js +103 -0
  115. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -0
  116. package/out/zero-client/src/client/options.d.ts +39 -27
  117. package/out/zero-client/src/client/options.d.ts.map +1 -1
  118. package/out/zero-client/src/client/options.js.map +1 -1
  119. package/out/zero-client/src/client/version.js +1 -1
  120. package/out/zero-client/src/client/zero.d.ts +23 -33
  121. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  122. package/out/zero-client/src/client/zero.js +52 -118
  123. package/out/zero-client/src/client/zero.js.map +1 -1
  124. package/out/zero-client/src/mod.d.ts +12 -7
  125. package/out/zero-client/src/mod.d.ts.map +1 -1
  126. package/out/zero-protocol/src/analyze-query-result.d.ts +236 -0
  127. package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
  128. package/out/zero-protocol/src/analyze-query-result.js +128 -2
  129. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  130. package/out/zero-protocol/src/ast.d.ts +1 -1
  131. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  132. package/out/zero-protocol/src/connect.js +4 -0
  133. package/out/zero-protocol/src/connect.js.map +1 -1
  134. package/out/zero-protocol/src/custom-queries.d.ts +1 -1
  135. package/out/zero-protocol/src/down.d.ts +99 -0
  136. package/out/zero-protocol/src/down.d.ts.map +1 -1
  137. package/out/zero-protocol/src/error.d.ts +4 -4
  138. package/out/zero-protocol/src/inspect-down.d.ts +297 -0
  139. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  140. package/out/zero-protocol/src/inspect-up.d.ts +4 -0
  141. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  142. package/out/zero-protocol/src/inspect-up.js +2 -1
  143. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  144. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  145. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  146. package/out/zero-protocol/src/protocol-version.js +1 -1
  147. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  148. package/out/zero-protocol/src/push.d.ts +1 -1
  149. package/out/zero-protocol/src/up.d.ts +1 -0
  150. package/out/zero-protocol/src/up.d.ts.map +1 -1
  151. package/out/zero-react/src/components/inspector.d.ts +3 -2
  152. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  153. package/out/zero-react/src/components/inspector.js.map +1 -1
  154. package/out/zero-react/src/components/zero-inspector.d.ts +3 -2
  155. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  156. package/out/zero-react/src/components/zero-inspector.js.map +1 -1
  157. package/out/zero-react/src/use-query.d.ts +5 -4
  158. package/out/zero-react/src/use-query.d.ts.map +1 -1
  159. package/out/zero-react/src/use-query.js +4 -3
  160. package/out/zero-react/src/use-query.js.map +1 -1
  161. package/out/zero-react/src/zero-provider.d.ts +7 -7
  162. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  163. package/out/zero-react/src/zero-provider.js.map +1 -1
  164. package/out/zero-schema/src/builder/schema-builder.js +1 -1
  165. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  166. package/out/zero-server/src/custom.d.ts +4 -5
  167. package/out/zero-server/src/custom.d.ts.map +1 -1
  168. package/out/zero-server/src/custom.js.map +1 -1
  169. package/out/zero-server/src/mod.d.ts +0 -1
  170. package/out/zero-server/src/mod.d.ts.map +1 -1
  171. package/out/zero-server/src/process-mutations.d.ts +9 -14
  172. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  173. package/out/zero-server/src/process-mutations.js +151 -105
  174. package/out/zero-server/src/process-mutations.js.map +1 -1
  175. package/out/zero-server/src/push-processor.d.ts +5 -3
  176. package/out/zero-server/src/push-processor.d.ts.map +1 -1
  177. package/out/zero-server/src/push-processor.js +17 -25
  178. package/out/zero-server/src/push-processor.js.map +1 -1
  179. package/out/zero-server/src/queries/process-queries.js +1 -1
  180. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  181. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  182. package/out/zero-server/src/zql-database.js +1 -1
  183. package/out/zero-server/src/zql-database.js.map +1 -1
  184. package/out/zero-solid/src/use-query.d.ts +3 -3
  185. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  186. package/out/zero-solid/src/use-query.js +27 -38
  187. package/out/zero-solid/src/use-query.js.map +1 -1
  188. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -1
  189. package/out/zero-solid/src/use-zero-connection-state.js +7 -5
  190. package/out/zero-solid/src/use-zero-connection-state.js.map +1 -1
  191. package/out/zero-solid/src/use-zero-online.d.ts.map +1 -1
  192. package/out/zero-solid/src/use-zero-online.js +7 -5
  193. package/out/zero-solid/src/use-zero-online.js.map +1 -1
  194. package/out/zero-solid/src/use-zero.d.ts +6 -5
  195. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  196. package/out/zero-solid/src/use-zero.js +2 -6
  197. package/out/zero-solid/src/use-zero.js.map +1 -1
  198. package/out/zql/src/builder/builder.d.ts +2 -1
  199. package/out/zql/src/builder/builder.d.ts.map +1 -1
  200. package/out/zql/src/builder/builder.js +4 -3
  201. package/out/zql/src/builder/builder.js.map +1 -1
  202. package/out/zql/src/mutate/custom.d.ts +15 -6
  203. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  204. package/out/zql/src/mutate/custom.js +6 -6
  205. package/out/zql/src/mutate/custom.js.map +1 -1
  206. package/out/zql/src/mutate/mutator-registry.d.ts +142 -0
  207. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -0
  208. package/out/zql/src/mutate/mutator-registry.js +97 -0
  209. package/out/zql/src/mutate/mutator-registry.js.map +1 -0
  210. package/out/zql/src/mutate/mutator.d.ts +98 -0
  211. package/out/zql/src/mutate/mutator.d.ts.map +1 -0
  212. package/out/zql/src/mutate/mutator.js +35 -0
  213. package/out/zql/src/mutate/mutator.js.map +1 -0
  214. package/out/zql/src/planner/planner-connection.d.ts +7 -15
  215. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  216. package/out/zql/src/planner/planner-connection.js +30 -24
  217. package/out/zql/src/planner/planner-connection.js.map +1 -1
  218. package/out/zql/src/planner/planner-debug.d.ts +37 -43
  219. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  220. package/out/zql/src/planner/planner-debug.js +242 -0
  221. package/out/zql/src/planner/planner-debug.js.map +1 -0
  222. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  223. package/out/zql/src/planner/planner-fan-in.js +11 -8
  224. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  225. package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
  226. package/out/zql/src/planner/planner-fan-out.js +11 -8
  227. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  228. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  229. package/out/zql/src/planner/planner-graph.js +13 -5
  230. package/out/zql/src/planner/planner-graph.js.map +1 -1
  231. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  232. package/out/zql/src/planner/planner-join.js +12 -9
  233. package/out/zql/src/planner/planner-join.js.map +1 -1
  234. package/out/zql/src/planner/planner-node.d.ts +4 -0
  235. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  236. package/out/zql/src/planner/planner-node.js +8 -0
  237. package/out/zql/src/planner/planner-node.js.map +1 -0
  238. package/out/zql/src/query/create-builder.d.ts +7 -0
  239. package/out/zql/src/query/create-builder.d.ts.map +1 -0
  240. package/out/zql/src/query/create-builder.js +44 -0
  241. package/out/zql/src/query/create-builder.js.map +1 -0
  242. package/out/zql/src/query/named.d.ts +1 -7
  243. package/out/zql/src/query/named.d.ts.map +1 -1
  244. package/out/zql/src/query/named.js +0 -21
  245. package/out/zql/src/query/named.js.map +1 -1
  246. package/out/zql/src/query/query-impl.d.ts +4 -3
  247. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  248. package/out/zql/src/query/query-impl.js +3 -0
  249. package/out/zql/src/query/query-impl.js.map +1 -1
  250. package/out/zql/src/query/query-internals.js +0 -4
  251. package/out/zql/src/query/query-internals.js.map +1 -1
  252. package/out/zql/src/query/query-registry.d.ts +253 -0
  253. package/out/zql/src/query/query-registry.d.ts.map +1 -0
  254. package/out/zql/src/query/query-registry.js +131 -0
  255. package/out/zql/src/query/query-registry.js.map +1 -0
  256. package/out/zql/src/query/query.d.ts +16 -1
  257. package/out/zql/src/query/query.d.ts.map +1 -1
  258. package/out/zql/src/query/schema-query.d.ts +6 -0
  259. package/out/zql/src/query/schema-query.d.ts.map +1 -0
  260. package/out/zql/src/query/validate-input.js +12 -13
  261. package/out/zql/src/query/validate-input.js.map +1 -1
  262. package/package.json +2 -1
  263. package/out/zero-server/src/query-registry.d.ts +0 -10
  264. package/out/zero-server/src/query-registry.d.ts.map +0 -1
  265. package/out/zero-server/src/query-registry.js +0 -35
  266. package/out/zero-server/src/query-registry.js.map +0 -1
  267. package/out/zql/src/query/define-query.d.ts +0 -75
  268. package/out/zql/src/query/define-query.d.ts.map +0 -1
  269. package/out/zql/src/query/define-query.js +0 -47
  270. package/out/zql/src/query/define-query.js.map +0 -1
  271. package/out/zql/src/query/query-definitions.d.ts +0 -32
  272. package/out/zql/src/query/query-definitions.d.ts.map +0 -1
@@ -26,11 +26,9 @@ import { CRUD_MUTATION_NAME, mapCRUD } from "../../../zero-protocol/src/push.js"
26
26
  import { nullableVersionSchema } from "../../../zero-protocol/src/version.js";
27
27
  import { clientSchemaFrom } from "../../../zero-schema/src/builder/schema-builder.js";
28
28
  import { clientToServer } from "../../../zero-schema/src/name-mapper.js";
29
- import { customMutatorKey } from "../../../zql/src/mutate/custom.js";
30
- import { wrapCustomQuery } from "../../../zql/src/query/define-query.js";
29
+ import { iterateMutators, isMutatorRegistry } from "../../../zql/src/mutate/mutator-registry.js";
30
+ import { createBuilder } from "../../../zql/src/query/create-builder.js";
31
31
  import { isClientMetric } from "../../../zql/src/query/metrics-delegate.js";
32
- import { newQuery } from "../../../zql/src/query/query-impl.js";
33
- import { isQueryInternals } from "../../../zql/src/query/query-internals.js";
34
32
  import "../../../zero-protocol/src/ast.js";
35
33
  import { nanoid } from "../util/nanoid.js";
36
34
  import { send } from "../util/socket.js";
@@ -41,8 +39,7 @@ import { ConnectionManager, throwIfConnectionError } from "./connection-manager.
41
39
  import { Connected, Closed, Disconnected, Connecting, Error as Error$1, NeedsAuth } from "./connection-status-enum.js";
42
40
  import { ConnectionImpl } from "./connection.js";
43
41
  import { ZeroContext } from "./context.js";
44
- import { makeCRUDMutator, makeCRUDMutate } from "./crud.js";
45
- import { makeReplicacheMutator } from "./custom.js";
42
+ import { makeCRUDMutate } from "./crud.js";
46
43
  import { DeleteClientsManager } from "./delete-clients-manager.js";
47
44
  import { shouldEnableAnalytics } from "./enable-analytics.js";
48
45
  import { ClientError, getErrorConnectionTransition, NO_STATUS_TRANSITION, isClientError, isAuthError, isServerError, getBackoffParams } from "./error.js";
@@ -50,6 +47,8 @@ import { toWSString, appendPath } from "./http-string.js";
50
47
  import { Inspector } from "./inspector/inspector.js";
51
48
  import { IVMSourceBranch } from "./ivm-branch.js";
52
49
  import { createLogOptions } from "./log-options.js";
50
+ import { makeMutateProperty } from "./make-mutate-property.js";
51
+ import { makeReplicacheMutators } from "./make-replicache-mutators.js";
53
52
  import { MetricManager, REPORT_INTERVAL_MS, shouldReportConnectError, getLastConnectErrorValue, DID_NOT_CONNECT_VALUE } from "./metrics.js";
54
53
  import { MutationTracker } from "./mutation-tracker.js";
55
54
  import { MutatorProxy } from "./mutator-proxy.js";
@@ -98,45 +97,6 @@ function onClientStateNotFoundServerReason(serverErrMsg) {
98
97
  }
99
98
  const ON_CLIENT_STATE_NOT_FOUND_REASON_CLIENT = "The local persistent state needed to synchronize this client has been garbage collected.";
100
99
  const CLOSE_CODE_NORMAL = 1e3;
101
- function registerQueries(schema, queries, contextHolder, lc) {
102
- const rv = {};
103
- for (const name of Object.keys(schema.tables)) {
104
- rv[name] = newQuery(schema, name);
105
- }
106
- if (queries) {
107
- const processQueries = (queriesToProcess, target, namespacePrefix = []) => {
108
- for (const [key, value] of Object.entries(queriesToProcess)) {
109
- if (typeof value === "function") {
110
- const queryName = [...namespacePrefix, key].join(".");
111
- const targetValue = target[key];
112
- if (isQueryInternals(targetValue)) {
113
- lc.debug?.(
114
- `Query key "${[...namespacePrefix, key].join(".")}" conflicts with an existing table name.`
115
- );
116
- }
117
- target[key] = wrapCustomQuery(queryName, value, contextHolder);
118
- } else {
119
- let existing = target[key];
120
- if (isQueryInternals(existing)) {
121
- lc.debug?.(
122
- `Query namespace "${[...namespacePrefix, key].join(".")}" conflicts with an existing table name.`
123
- );
124
- }
125
- if (existing === void 0) {
126
- existing = {};
127
- target[key] = existing;
128
- }
129
- processQueries(value, existing, [
130
- ...namespacePrefix,
131
- key
132
- ]);
133
- }
134
- }
135
- };
136
- processQueries(queries, rv);
137
- }
138
- return rv;
139
- }
140
100
  class Zero {
141
101
  version = version;
142
102
  #rep;
@@ -223,6 +183,11 @@ class Zero {
223
183
  // 2. client successfully connects
224
184
  #totalToConnectStart = void 0;
225
185
  #options;
186
+ /**
187
+ * Query builders for each table in the schema.
188
+ *
189
+ * @deprecated Use {@linkcode createBuilder} to create query builders instead.
190
+ */
226
191
  query;
227
192
  // TODO: Metrics needs to be rethought entirely as we're not going to
228
193
  // send metrics to customer server.
@@ -254,7 +219,8 @@ class Zero {
254
219
  message: "ZeroOptions.userID must not be empty."
255
220
  });
256
221
  }
257
- const server = getServer(options.server);
222
+ const cacheURL = options.cacheURL ?? options.server;
223
+ const server = getServer(cacheURL);
258
224
  this.#enableAnalytics = shouldEnableAnalytics(
259
225
  server,
260
226
  false
@@ -281,6 +247,7 @@ class Zero {
281
247
  this.#onlineManager.subscribe(onOnlineChange);
282
248
  }
283
249
  this.#options = options;
250
+ this.query = createBuilder(schema);
284
251
  this.#logOptions = this.#createLogOptions({
285
252
  consoleLogLevel: options.logLevel ?? "warn",
286
253
  server: null,
@@ -299,22 +266,6 @@ class Zero {
299
266
  };
300
267
  syncConnectionState(this.#connectionManager.state);
301
268
  this.#connectionManager.subscribe(syncConnectionState);
302
- const { enableLegacyMutators = true, enableLegacyQueries = true } = schema;
303
- const replicacheMutators = {
304
- [CRUD_MUTATION_NAME]: enableLegacyMutators ? makeCRUDMutator(schema) : () => Promise.reject(
305
- new ClientError({
306
- kind: Internal,
307
- message: "Zero CRUD mutators are not enabled."
308
- })
309
- )
310
- };
311
- this.#ivmMain = new IVMSourceBranch(schema.tables);
312
- function assertUnique(key) {
313
- assert(
314
- replicacheMutators[key] === void 0,
315
- `A mutator, or mutator namespace, has already been defined for ${key}`
316
- );
317
- }
318
269
  const sink = logOptions.logSink;
319
270
  const lc = new LogContext(logOptions.logLevel, {}, sink);
320
271
  this.#mutationTracker = new MutationTracker(
@@ -322,33 +273,21 @@ class Zero {
322
273
  (upTo) => this.#send(["ackMutationResponses", upTo]),
323
274
  (error) => this.#disconnect(lc, error)
324
275
  );
325
- if (options.mutators) {
326
- const processMutators = (mutators, namespacePrefix = []) => {
327
- for (const [key, value] of Object.entries(mutators)) {
328
- if (typeof value === "function") {
329
- const fullKey = customMutatorKey(...namespacePrefix, key);
330
- assertUnique(fullKey);
331
- replicacheMutators[fullKey] = makeReplicacheMutator(
332
- lc,
333
- value,
334
- schema
335
- );
336
- } else if (typeof value === "object") {
337
- processMutators(value, [...namespacePrefix, key]);
338
- } else {
339
- unreachable();
340
- }
341
- }
342
- };
343
- processMutators(options.mutators);
344
- }
276
+ this.#ivmMain = new IVMSourceBranch(schema.tables);
277
+ const { enableLegacyQueries = true } = schema;
278
+ const replicacheMutators = makeReplicacheMutators(
279
+ schema,
280
+ options.mutators,
281
+ this.context,
282
+ lc
283
+ );
345
284
  this.storageKey = storageKey ?? "";
346
285
  const { clientSchema, hash } = clientSchemaFrom(schema);
347
286
  this.#clientSchema = clientSchema;
348
287
  const nameKey = JSON.stringify({
349
288
  storageKey: this.storageKey,
350
289
  mutateUrl: options.mutateURL ?? "",
351
- queryUrl: options.getQueriesURL ?? ""
290
+ queryUrl: options.queryURL ?? options.getQueriesURL ?? ""
352
291
  });
353
292
  const hashedKey = h64(nameKey).toString(36);
354
293
  const replicacheOptions = {
@@ -452,35 +391,33 @@ class Zero {
452
391
  });
453
392
  this.#onClientStateNotFound = onClientStateNotFoundCallback;
454
393
  this.#rep.onClientStateNotFound = onClientStateNotFoundCallback;
455
- const { mutate, mutateBatch } = makeCRUDMutate(schema, rep.mutate);
456
394
  const mutatorProxy = new MutatorProxy(
457
395
  this.#connectionManager,
458
396
  this.#mutationTracker
459
397
  );
460
- if (options.mutators) {
461
- const exposeMutators = (mutators, target, namespacePrefix = []) => {
462
- for (const [key, value] of Object.entries(mutators)) {
463
- if (typeof value === "function") {
464
- const fullKey = customMutatorKey(...namespacePrefix, key);
465
- target[key] = mutatorProxy.wrapCustomMutator(
466
- must(rep.mutate[fullKey])
467
- );
468
- } else if (typeof value === "object" && value !== null) {
469
- let existing = target[key];
470
- if (existing === void 0) {
471
- existing = {};
472
- target[key] = existing;
473
- }
474
- exposeMutators(value, existing, [
475
- ...namespacePrefix,
476
- key
477
- ]);
478
- }
479
- }
480
- };
481
- exposeMutators(options.mutators, mutate);
398
+ const { mutators } = options;
399
+ const registeredMutators = new Set(
400
+ isMutatorRegistry(mutators) ? iterateMutators(mutators) : void 0
401
+ );
402
+ const callableMutate = (mr) => {
403
+ if (!registeredMutators.has(mr.mutator)) {
404
+ throw new Error(
405
+ `Mutator "${mr.mutator.mutatorName}" is not registered. Mutators must be registered with the Zero constructor before use.`
406
+ );
407
+ }
408
+ const repMutator = rep.mutate[mr.mutator.mutatorName];
409
+ return mutatorProxy.wrapCustomMutator(repMutator)(mr.args);
410
+ };
411
+ const mutateBatch = makeCRUDMutate(schema, rep.mutate, callableMutate);
412
+ if (mutators && !isMutatorRegistry(mutators)) {
413
+ makeMutateProperty(
414
+ mutators,
415
+ mutatorProxy,
416
+ callableMutate,
417
+ rep.mutate
418
+ );
482
419
  }
483
- this.mutate = mutate;
420
+ this.mutate = callableMutate;
484
421
  this.mutateBatch = mutateBatch;
485
422
  this.#queryManager = new QueryManager(
486
423
  this.#lc,
@@ -503,12 +440,6 @@ class Zero {
503
440
  this.#lc,
504
441
  this.#rep.clientGroupID
505
442
  );
506
- this.query = registerQueries(
507
- schema,
508
- this.#options.queries,
509
- this,
510
- lc
511
- );
512
443
  reportReloadReason(this.#lc);
513
444
  this.#metrics = new MetricManager({
514
445
  reportIntervalMs: REPORT_INTERVAL_MS,
@@ -590,7 +521,7 @@ class Zero {
590
521
  * ```
591
522
  */
592
523
  preload(query, options) {
593
- return this.#zeroContext.preload(query, options);
524
+ return this.#zeroContext.preload(query.toQuery(this.context), options);
594
525
  }
595
526
  /**
596
527
  * Executes a query once and returns the results.
@@ -613,12 +544,13 @@ class Zero {
613
544
  * ```
614
545
  */
615
546
  run(query, runOptions) {
616
- return this.#zeroContext.run(query, runOptions);
547
+ return this.#zeroContext.run(query.toQuery(this.context), runOptions);
617
548
  }
618
549
  get context() {
619
550
  return this.#options.context;
620
551
  }
621
552
  materialize(query, factoryOrOptions, maybeOptions) {
553
+ const q = query.toQuery(this.context);
622
554
  let factory;
623
555
  let options;
624
556
  if (typeof factoryOrOptions === "function") {
@@ -627,7 +559,7 @@ class Zero {
627
559
  } else {
628
560
  options = factoryOrOptions;
629
561
  }
630
- return this.#zeroContext.materialize(query, factory, options);
562
+ return this.#zeroContext.materialize(q, factory, options);
631
563
  }
632
564
  /**
633
565
  * The server URL that this Zero instance is configured with.
@@ -715,6 +647,8 @@ class Zero {
715
647
  *
716
648
  * `mutateBatch` is not allowed inside another `mutateBatch` call. Doing so
717
649
  * will throw an error.
650
+ *
651
+ * @deprecated Use `zero.mutate(mutationRequest)`
718
652
  */
719
653
  mutateBatch;
720
654
  /**
@@ -1034,7 +968,7 @@ ${error.errorBody.message}`, error);
1034
968
  // Henceforth it is stored with the CVR and verified automatically.
1035
969
  ...this.#connectCookie === null ? { clientSchema } : {},
1036
970
  userPushURL: this.#options.mutateURL,
1037
- userQueryURL: this.#options.getQueriesURL
971
+ userQueryURL: this.#options.queryURL ?? this.#options.getQueriesURL
1038
972
  }
1039
973
  ]);
1040
974
  this.#deletedClients = void 0;
@@ -1120,7 +1054,7 @@ ${error.errorBody.message}`, error);
1120
1054
  this.#options.logLevel === "debug",
1121
1055
  lc,
1122
1056
  this.#options.mutateURL,
1123
- this.#options.getQueriesURL,
1057
+ this.#options.queryURL ?? this.#options.getQueriesURL,
1124
1058
  additionalConnectParams,
1125
1059
  await this.#activeClientsManager,
1126
1060
  this.#options.maxHeaderLength