@rocicorp/zero 0.25.0-canary.18 → 0.25.0-canary.21

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 (228) hide show
  1. package/out/replicache/src/persist/idb-databases-store.d.ts +1 -0
  2. package/out/replicache/src/persist/idb-databases-store.d.ts.map +1 -1
  3. package/out/replicache/src/persist/idb-databases-store.js +13 -2
  4. package/out/replicache/src/persist/idb-databases-store.js.map +1 -1
  5. package/out/zero/package.json.js +1 -1
  6. package/out/zero/src/adapters/drizzle.d.ts +1 -1
  7. package/out/zero/src/adapters/drizzle.d.ts.map +1 -1
  8. package/out/zero/src/adapters/drizzle.js +4 -1
  9. package/out/zero/src/bindings.d.ts +2 -0
  10. package/out/zero/src/bindings.d.ts.map +1 -0
  11. package/out/zero/src/bindings.js +27 -0
  12. package/out/zero/src/bindings.js.map +1 -0
  13. package/out/zero/src/react.js +2 -4
  14. package/out/zero/src/react.js.map +1 -1
  15. package/out/zero/src/solid.js +2 -2
  16. package/out/zero/src/zero.js +3 -5
  17. package/out/zero-cache/src/auth/read-authorizer.d.ts +1 -1
  18. package/out/zero-cache/src/auth/read-authorizer.d.ts.map +1 -1
  19. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  20. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  21. package/out/zero-cache/src/auth/write-authorizer.js +5 -4
  22. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  23. package/out/zero-cache/src/config/zero-config.d.ts +24 -0
  24. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  25. package/out/zero-cache/src/config/zero-config.js +23 -4
  26. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  27. package/out/zero-cache/src/server/anonymous-otel-start.d.ts +10 -1
  28. package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +1 -1
  29. package/out/zero-cache/src/server/anonymous-otel-start.js +34 -18
  30. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  31. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  32. package/out/zero-cache/src/server/syncer.js +1 -0
  33. package/out/zero-cache/src/server/syncer.js.map +1 -1
  34. package/out/zero-cache/src/services/analyze.d.ts +1 -1
  35. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  36. package/out/zero-cache/src/services/analyze.js +5 -5
  37. package/out/zero-cache/src/services/analyze.js.map +1 -1
  38. package/out/zero-cache/src/services/mutagen/pusher.d.ts +4 -4
  39. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts +2 -1
  40. package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts.map +1 -1
  41. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +26 -13
  42. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  43. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts +1 -1
  44. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
  45. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +39 -15
  46. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  47. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +4 -1
  48. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  49. package/out/zero-cache/src/services/view-syncer/cvr-store.js +31 -9
  50. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  51. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +3 -0
  52. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  53. package/out/zero-cache/src/services/view-syncer/cvr.js +11 -0
  54. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  55. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +1 -1
  56. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  57. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +1 -2
  58. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  59. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +6 -6
  60. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  61. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +1 -0
  62. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  63. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +23 -10
  64. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  65. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  66. package/out/zero-cache/src/services/view-syncer/schema/init.js +31 -1
  67. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  68. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +1 -0
  69. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  70. package/out/zero-cache/src/services/view-syncer/view-syncer.js +20 -16
  71. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  72. package/out/zero-cache/src/workers/connect-params.d.ts +1 -0
  73. package/out/zero-cache/src/workers/connect-params.d.ts.map +1 -1
  74. package/out/zero-cache/src/workers/connect-params.js +2 -0
  75. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  76. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
  77. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +2 -0
  78. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  79. package/out/zero-client/src/client/bindings.d.ts +12 -41
  80. package/out/zero-client/src/client/bindings.d.ts.map +1 -1
  81. package/out/zero-client/src/client/custom.d.ts +3 -0
  82. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  83. package/out/zero-client/src/client/custom.js +3 -0
  84. package/out/zero-client/src/client/custom.js.map +1 -1
  85. package/out/zero-client/src/client/delete-clients-manager.d.ts +1 -1
  86. package/out/zero-client/src/client/delete-clients-manager.d.ts.map +1 -1
  87. package/out/zero-client/src/client/delete-clients-manager.js +30 -3
  88. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -1
  89. package/out/zero-client/src/client/make-replicache-mutators.js +1 -3
  90. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
  91. package/out/zero-client/src/client/options.d.ts +1 -1
  92. package/out/zero-client/src/client/options.js.map +1 -1
  93. package/out/zero-client/src/client/version.js +1 -1
  94. package/out/zero-client/src/client/zero.d.ts +1 -0
  95. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  96. package/out/zero-client/src/client/zero.js +43 -26
  97. package/out/zero-client/src/client/zero.js.map +1 -1
  98. package/out/zero-client/src/mod.d.ts +6 -4
  99. package/out/zero-client/src/mod.d.ts.map +1 -1
  100. package/out/zero-protocol/src/analyze-query-result.d.ts +2 -2
  101. package/out/zero-protocol/src/analyze-query-result.js +2 -2
  102. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  103. package/out/zero-protocol/src/down.d.ts +2 -2
  104. package/out/zero-protocol/src/inspect-down.d.ts +6 -6
  105. package/out/zero-protocol/src/inspect-up.d.ts +4 -4
  106. package/out/zero-protocol/src/inspect-up.js +1 -1
  107. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  108. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  109. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  110. package/out/zero-protocol/src/protocol-version.js +1 -1
  111. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  112. package/out/zero-protocol/src/up.d.ts +1 -1
  113. package/out/zero-react/src/bindings.d.ts +2 -0
  114. package/out/zero-react/src/bindings.d.ts.map +1 -0
  115. package/out/zero-react/src/mod.d.ts +1 -10
  116. package/out/zero-react/src/mod.d.ts.map +1 -1
  117. package/out/zero-react/src/{use-zero-connection-state.d.ts → use-connection-state.d.ts} +3 -3
  118. package/out/zero-react/src/use-connection-state.d.ts.map +1 -0
  119. package/out/zero-react/src/{use-zero-connection-state.js → use-connection-state.js} +3 -3
  120. package/out/zero-react/src/use-connection-state.js.map +1 -0
  121. package/out/zero-react/src/use-query.d.ts +2 -10
  122. package/out/zero-react/src/use-query.d.ts.map +1 -1
  123. package/out/zero-react/src/use-query.js +24 -22
  124. package/out/zero-react/src/use-query.js.map +1 -1
  125. package/out/zero-react/src/use-zero-online.d.ts +1 -1
  126. package/out/zero-react/src/use-zero-online.js.map +1 -1
  127. package/out/zero-react/src/zero-provider.d.ts +1 -5
  128. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  129. package/out/zero-react/src/zero-provider.js +16 -0
  130. package/out/zero-react/src/zero-provider.js.map +1 -1
  131. package/out/zero-react/src/zero.d.ts +2 -0
  132. package/out/zero-react/src/zero.d.ts.map +1 -0
  133. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  134. package/out/zero-schema/src/permissions.js +2 -8
  135. package/out/zero-schema/src/permissions.js.map +1 -1
  136. package/out/zero-server/src/custom.d.ts +3 -0
  137. package/out/zero-server/src/custom.d.ts.map +1 -1
  138. package/out/zero-server/src/custom.js +3 -0
  139. package/out/zero-server/src/custom.js.map +1 -1
  140. package/out/zero-solid/src/bindings.d.ts +2 -0
  141. package/out/zero-solid/src/bindings.d.ts.map +1 -0
  142. package/out/zero-solid/src/mod.d.ts +1 -8
  143. package/out/zero-solid/src/mod.d.ts.map +1 -1
  144. package/out/zero-solid/src/solid-view.d.ts +1 -8
  145. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  146. package/out/zero-solid/src/solid-view.js +31 -0
  147. package/out/zero-solid/src/solid-view.js.map +1 -1
  148. package/out/zero-solid/src/{use-zero-connection-state.d.ts → use-connection-state.d.ts} +3 -3
  149. package/out/zero-solid/src/use-connection-state.d.ts.map +1 -0
  150. package/out/zero-solid/src/{use-zero-connection-state.js → use-connection-state.js} +3 -3
  151. package/out/zero-solid/src/use-connection-state.js.map +1 -0
  152. package/out/zero-solid/src/use-query.d.ts +1 -7
  153. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  154. package/out/zero-solid/src/use-query.js +43 -12
  155. package/out/zero-solid/src/use-query.js.map +1 -1
  156. package/out/zero-solid/src/use-zero-online.d.ts +1 -1
  157. package/out/zero-solid/src/use-zero-online.js.map +1 -1
  158. package/out/zero-solid/src/use-zero.d.ts +1 -5
  159. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  160. package/out/zero-solid/src/use-zero.js +16 -0
  161. package/out/zero-solid/src/use-zero.js.map +1 -1
  162. package/out/zero-solid/src/zero.d.ts +2 -0
  163. package/out/zero-solid/src/zero.d.ts.map +1 -0
  164. package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
  165. package/out/zql/src/ivm/flipped-join.js +29 -27
  166. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  167. package/out/zql/src/ivm/join-utils.d.ts +7 -1
  168. package/out/zql/src/ivm/join-utils.d.ts.map +1 -1
  169. package/out/zql/src/ivm/join-utils.js +12 -0
  170. package/out/zql/src/ivm/join-utils.js.map +1 -1
  171. package/out/zql/src/ivm/join.d.ts.map +1 -1
  172. package/out/zql/src/ivm/join.js +11 -25
  173. package/out/zql/src/ivm/join.js.map +1 -1
  174. package/out/zql/src/mutate/custom.d.ts +3 -0
  175. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  176. package/out/zql/src/mutate/custom.js.map +1 -1
  177. package/out/zql/src/mutate/mutator-registry.d.ts +2 -2
  178. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -1
  179. package/out/zql/src/mutate/mutator-registry.js.map +1 -1
  180. package/out/zql/src/mutate/mutator.d.ts +1 -1
  181. package/out/zql/src/mutate/mutator.d.ts.map +1 -1
  182. package/out/zql/src/mutate/mutator.js.map +1 -1
  183. package/out/zql/src/planner/planner-debug.d.ts +3 -3
  184. package/out/zql/src/planner/planner-debug.js.map +1 -1
  185. package/out/zql/src/query/create-builder.d.ts +2 -1
  186. package/out/zql/src/query/create-builder.d.ts.map +1 -1
  187. package/out/zql/src/query/create-builder.js +3 -0
  188. package/out/zql/src/query/create-builder.js.map +1 -1
  189. package/out/zql/src/query/query-impl.d.ts +39 -6
  190. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  191. package/out/zql/src/query/query-impl.js +414 -23
  192. package/out/zql/src/query/query-impl.js.map +1 -1
  193. package/out/zql/src/query/query-registry.d.ts +2 -2
  194. package/out/zql/src/query/query-registry.d.ts.map +1 -1
  195. package/out/zql/src/query/query-registry.js.map +1 -1
  196. package/out/zql/src/query/runnable-query-impl.d.ts +2 -2
  197. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
  198. package/out/zql/src/query/runnable-query-impl.js +2 -2
  199. package/out/zql/src/query/runnable-query-impl.js.map +1 -1
  200. package/out/zql/src/query/schema-query.d.ts +4 -2
  201. package/out/zql/src/query/schema-query.d.ts.map +1 -1
  202. package/out/zql/src/query/static-query.d.ts +2 -16
  203. package/out/zql/src/query/static-query.d.ts.map +1 -1
  204. package/out/zql/src/query/static-query.js +10 -37
  205. package/out/zql/src/query/static-query.js.map +1 -1
  206. package/package.json +7 -3
  207. package/out/zero-client/src/client/bindings.js +0 -33
  208. package/out/zero-client/src/client/bindings.js.map +0 -1
  209. package/out/zero-react/src/components/inspector.d.ts +0 -9
  210. package/out/zero-react/src/components/inspector.d.ts.map +0 -1
  211. package/out/zero-react/src/components/inspector.js +0 -38
  212. package/out/zero-react/src/components/inspector.js.map +0 -1
  213. package/out/zero-react/src/components/mark-icon.d.ts +0 -3
  214. package/out/zero-react/src/components/mark-icon.d.ts.map +0 -1
  215. package/out/zero-react/src/components/mark-icon.js +0 -28
  216. package/out/zero-react/src/components/mark-icon.js.map +0 -1
  217. package/out/zero-react/src/components/zero-inspector.d.ts +0 -8
  218. package/out/zero-react/src/components/zero-inspector.d.ts.map +0 -1
  219. package/out/zero-react/src/components/zero-inspector.js +0 -44
  220. package/out/zero-react/src/components/zero-inspector.js.map +0 -1
  221. package/out/zero-react/src/use-zero-connection-state.d.ts.map +0 -1
  222. package/out/zero-react/src/use-zero-connection-state.js.map +0 -1
  223. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +0 -1
  224. package/out/zero-solid/src/use-zero-connection-state.js.map +0 -1
  225. package/out/zql/src/query/abstract-query.d.ts +0 -42
  226. package/out/zql/src/query/abstract-query.d.ts.map +0 -1
  227. package/out/zql/src/query/abstract-query.js +0 -405
  228. package/out/zql/src/query/abstract-query.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"query-registry.js","sources":["../../../../../zql/src/query/query-registry.ts"],"sourcesContent":["import type {StandardSchemaV1} from '@standard-schema/spec';\nimport {\n deepMerge,\n isPlainObject,\n type DeepMerge,\n} from '../../../shared/src/deep-merge.ts';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {must} from '../../../shared/src/must.ts';\nimport {getValueAtPath} from '../../../shared/src/object-traversal.ts';\nimport type {\n DefaultContext,\n DefaultSchema,\n} from '../../../zero-types/src/default-types.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {asQueryInternals} from './query-internals.ts';\nimport type {PullRow, Query} from './query.ts';\nimport {validateInput} from './validate-input.ts';\n\n// ----------------------------------------------------------------------------\n// CustomQuery and QueryRequest types\n// ----------------------------------------------------------------------------\n\nexport type CustomQueryTypes<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> = 'Query' & {\n readonly $tableName: TTable;\n readonly $input: TInput;\n readonly $schema: TSchema;\n readonly $return: TReturn;\n readonly $context: TContext;\n};\n\n/**\n * CustomQuery is returned from defineQueries. It is a callable that captures\n * args and can be turned into a Query via {@link QueryRequest}.\n */\nexport type CustomQuery<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined = TInput,\n TSchema extends Schema = DefaultSchema,\n TReturn = PullRow<TTable, TSchema>,\n TContext = DefaultContext,\n> = {\n readonly 'queryName': string;\n readonly 'fn': QueryDefinitionFunction<TTable, TInput, TReturn, TContext>;\n readonly '~': CustomQueryTypes<TTable, TInput, TSchema, TReturn, TContext>;\n} & CustomQueryCallable<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n\ntype CustomQueryCallable<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema = DefaultSchema,\n TReturn = PullRow<TTable, TSchema>,\n TContext = DefaultContext,\n> = [TInput] extends [undefined]\n ? () => QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>\n : undefined extends TInput\n ? {\n (): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n (\n args?: TInput,\n ): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n }\n : {\n (\n args: TInput,\n ): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n };\n\n// oxlint-disable-next-line no-explicit-any\nexport type AnyCustomQuery = CustomQuery<string, any, any, Schema, any, any>;\n\nexport function isQuery(value: unknown): value is AnyCustomQuery {\n return (\n typeof value === 'function' &&\n typeof (value as {queryName?: unknown}).queryName === 'string' &&\n typeof (value as {fn?: unknown}).fn === 'function'\n );\n}\n\nexport type QueryRequestTypes<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> = 'QueryRequest' & {\n readonly $tableName: TTable;\n readonly $input: TInput;\n readonly $output: TOutput;\n readonly $schema: TSchema;\n readonly $return: TReturn;\n readonly $context: TContext;\n};\n\nexport type QueryRequest<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> = {\n readonly 'query': CustomQuery<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >;\n readonly 'args': TInput;\n readonly '~': QueryRequestTypes<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >;\n};\n\n/**\n * A shared type that can be a query request or a query builder.\n *\n * If it is a query request, it will be converted to a {@link Query} using the context.\n * Otherwise, it will be returned as is.\n */\nexport type QueryOrQueryRequest<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> =\n | QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>\n | Query<TTable, TSchema, TReturn>;\n\n/**\n * Converts a query request to a {@link Query} using the context,\n * or returns the query as is.\n *\n * @param query - The query request or query builder to convert\n * @param context - The context to use to convert the query request\n */\nexport const addContextToQuery = <\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n>(\n query: QueryOrQueryRequest<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >,\n context: TContext,\n): Query<TTable, TSchema, TReturn> =>\n 'query' in query ? query.query.fn({ctx: context, args: query.args}) : query;\n\n// ----------------------------------------------------------------------------\n// QueryRegistry types\n// ----------------------------------------------------------------------------\n\nexport function isQueryRegistry(obj: unknown): obj is AnyQueryRegistry {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n (obj as unknown as {['~']: string})?.['~'] === 'QueryRegistry'\n );\n}\n\nexport type QueryRegistryTypes<TSchema extends Schema> = 'QueryRegistry' & {\n readonly $schema: TSchema;\n};\n\nexport type QueryRegistry<\n QD extends QueryDefinitions,\n S extends Schema,\n> = ToQueryTree<QD, S> & {\n ['~']: QueryRegistryTypes<S>;\n};\n\nexport type AnyQueryRegistry = {\n ['~']: QueryRegistryTypes<Schema>;\n [key: string]: unknown;\n};\n\ntype ToQueryTree<QD extends QueryDefinitions, S extends Schema> = {\n readonly [K in keyof QD]: QD[K] extends AnyQueryDefinition\n ? // pull types from the phantom property\n CustomQuery<\n QD[K]['~']['$tableName'],\n QD[K]['~']['$input'],\n QD[K]['~']['$output'],\n S,\n QD[K]['~']['$return'],\n QD[K]['~']['$context']\n >\n : QD[K] extends QueryDefinitions\n ? ToQueryTree<QD[K], S>\n : never;\n};\n\nexport type FromQueryTree<QD extends QueryDefinitions, S extends Schema> = {\n readonly [K in keyof QD]: QD[K] extends AnyQueryDefinition\n ? CustomQuery<\n QD[K]['~']['$tableName'],\n // intentionally left as generic to avoid variance issues\n ReadonlyJSONValue | undefined,\n ReadonlyJSONValue | undefined,\n S,\n QD[K]['~']['$return'],\n QD[K]['~']['$context']\n >\n : QD[K] extends QueryDefinitions\n ? FromQueryTree<QD[K], S>\n : never;\n}[keyof QD];\n\nexport type QueryDefinitions = {\n readonly [key: string]: AnyQueryDefinition | QueryDefinitions;\n};\n\n// ----------------------------------------------------------------------------\n// defineQuery\n// ----------------------------------------------------------------------------\n\nexport type QueryDefinitionTypes<\n TTable extends string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput,\n TReturn,\n TContext,\n> = 'QueryDefinition' & {\n readonly $tableName: TTable;\n readonly $input: TInput;\n readonly $output: TOutput;\n readonly $return: TReturn;\n readonly $context: TContext;\n};\n\n/**\n * A query definition is the return type of `defineQuery()`.\n */\nexport type QueryDefinition<\n TTable extends string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TReturn,\n TContext = DefaultContext,\n> = {\n readonly 'fn': QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>;\n readonly 'validator': StandardSchemaV1<TInput, TOutput> | undefined;\n readonly '~': QueryDefinitionTypes<\n TTable,\n TInput,\n TOutput,\n TReturn,\n TContext\n >;\n};\n\n// oxlint-disable-next-line no-explicit-any\nexport type AnyQueryDefinition = QueryDefinition<any, any, any, any, any>;\n\nexport function isQueryDefinition(f: unknown): f is AnyQueryDefinition {\n return (\n typeof f === 'object' &&\n f !== null &&\n (f as {['~']?: unknown})['~'] === 'QueryDefinition'\n );\n}\n\nexport type QueryDefinitionFunction<\n TTable extends string,\n TInput extends ReadonlyJSONValue | undefined,\n TReturn,\n TContext,\n> = (options: {args: TInput; ctx: TContext}) => Query<TTable, Schema, TReturn>;\n\n/**\n * Defines a query to be used with {@link defineQueries}.\n *\n * The query function receives an object with `args` (the query arguments) and\n * `ctx` (the context). It should return a {@link Query} built using a builder\n * created from {@link createBuilder}.\n *\n * Note: A query defined with `defineQuery` must be passed to\n * {@link defineQueries} to be usable. The query name is derived from its\n * position in the `defineQueries` object.\n *\n * @example\n * ```ts\n * const builder = createBuilder(schema);\n *\n * const queries = defineQueries({\n * // Simple query with no arguments\n * allIssues: defineQuery(() => builder.issue.orderBy('created', 'desc')),\n *\n * // Query with typed arguments\n * issueById: defineQuery(({args}: {args: {id: string}}) =>\n * builder.issue.where('id', args.id).one(),\n * ),\n *\n * // Query with validation using a Standard Schema validator (e.g., Zod)\n * issuesByStatus: defineQuery(\n * z.object({status: z.enum(['open', 'closed'])}),\n * ({args}) => builder.issue.where('status', args.status),\n * ),\n *\n * // Query using context\n * myIssues: defineQuery(({ctx}: {ctx: {userID: string}}) =>\n * builder.issue.where('creatorID', ctx.userID),\n * ),\n * });\n * ```\n *\n * @param queryFn - A function that receives `{args, ctx}` and returns a Query.\n * @returns A {@link QueryDefinition} that can be passed to {@link defineQueries}.\n *\n * @overload\n * @param validator - A Standard Schema validator for the arguments.\n * @param queryFn - A function that receives `{args, ctx}` and returns a Query.\n * @returns A {@link QueryDefinition} with validated arguments.\n */\n// Overload for no validator parameter with default inference for untyped functions\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n queryFn: QueryDefinitionFunction<TTable, TInput, TReturn, TContext>,\n): QueryDefinition<TTable, TInput, TInput, TReturn, TContext>;\n\n// Overload for validator parameter - Input and Output can be different\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n validator: StandardSchemaV1<TInput, TOutput>,\n queryFn: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>;\n\n// Implementation\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n validatorOrQueryFn:\n | StandardSchemaV1<TInput, TOutput>\n | QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n queryFn?: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext> {\n // Handle different parameter patterns\n let validator: StandardSchemaV1<TInput, TOutput> | undefined;\n let actualQueryFn: QueryDefinitionFunction<\n TTable,\n TOutput,\n TReturn,\n TContext\n >;\n\n if (typeof validatorOrQueryFn === 'function') {\n // defineQuery(queryFn) - no validator\n validator = undefined;\n actualQueryFn = validatorOrQueryFn;\n } else {\n // defineQuery(validator, queryFn) - with validator\n validator = validatorOrQueryFn;\n actualQueryFn = must(queryFn);\n }\n\n const queryDefinition: QueryDefinition<\n TTable,\n TInput,\n TOutput,\n TReturn,\n TContext\n > = {\n 'fn': actualQueryFn,\n 'validator': validator,\n '~': 'QueryDefinition' as unknown as QueryDefinitionTypes<\n TTable,\n TInput,\n TOutput,\n TReturn,\n TContext\n >,\n };\n return queryDefinition;\n}\n\n/**\n * Returns a typed version of {@link defineQuery} with the schema and context\n * types pre-specified. This enables better type inference when defining\n * queries.\n *\n * @example\n * ```ts\n * const zql = createBuilder(schema);\n *\n * // With both Schema and Context types\n * const defineAppQuery = defineQueryWithType<AppSchema, AppContext>();\n * const myQuery = defineAppQuery(({ctx}) =>\n * zql.issue.where('userID', ctx.userID),\n * );\n *\n * // With just Context type (Schema inferred)\n * const defineAppQuery = defineQueryWithType<AppContext>();\n * ```\n *\n * @typeParam S - The Zero schema type.\n * @typeParam C - The context type passed to query functions.\n * @returns A function equivalent to {@link defineQuery} but with types\n * pre-bound.\n */\nexport function defineQueryWithType<\n S extends Schema,\n C = unknown,\n>(): TypedDefineQuery<S, C>;\n\n/**\n * Returns a typed version of {@link defineQuery} with the context type\n * pre-specified.\n *\n * @typeParam C - The context type passed to query functions.\n * @returns A function equivalent to {@link defineQuery} but with the context\n * type pre-bound.\n */\nexport function defineQueryWithType<C>(): TypedDefineQuery<Schema, C>;\n\nexport function defineQueryWithType() {\n return defineQuery;\n}\n\n/**\n * The return type of defineQueryWithType. A function matching the\n * defineQuery overloads but with Schema and Context pre-bound.\n */\ntype TypedDefineQuery<TSchema extends Schema, TContext> = {\n // Without validator\n <\n TArgs extends ReadonlyJSONValue | undefined,\n TReturn,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n >(\n queryFn: QueryDefinitionFunction<TTable, TArgs, TReturn, TContext>,\n ): QueryDefinition<TTable, TArgs, TArgs, TReturn, TContext>;\n\n // With validator\n <\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TReturn,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n >(\n validator: StandardSchemaV1<TInput, TOutput>,\n queryFn: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n ): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>;\n};\n\n// ----------------------------------------------------------------------------\n// createQuery\n// ----------------------------------------------------------------------------\n\nexport function createQuery<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n>(\n name: string,\n definition: QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>,\n): CustomQuery<TTable, TInput, TOutput, TSchema, TReturn, TContext> {\n const {validator} = definition;\n\n const fn: QueryDefinitionFunction<\n TTable,\n TInput,\n TReturn,\n TContext\n > = options => {\n const validatedArgs = validator\n ? validateInput(name, options.args, validator, 'query')\n : (options.args as unknown as TOutput);\n\n return asQueryInternals(\n definition.fn({\n args: validatedArgs,\n ctx: options.ctx,\n }),\n ).nameAndArgs(\n name,\n // TODO(arv): Get rid of the array?\n // Send original input args to server (not transformed output)\n options.args === undefined ? [] : [options.args],\n );\n };\n\n const query = (\n args: TInput,\n ): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext> => ({\n args,\n '~': 'QueryRequest' as QueryRequestTypes<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >,\n 'query': query as unknown as CustomQuery<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >,\n });\n\n query.queryName = name;\n query.fn = fn;\n query['~'] = 'Query' as CustomQueryTypes<\n TTable,\n TInput,\n TSchema,\n TReturn,\n TContext\n >;\n\n return query as unknown as CustomQuery<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >;\n}\n\n// ----------------------------------------------------------------------------\n// defineQueries\n// ----------------------------------------------------------------------------\n\n/**\n * Converts query definitions created with {@link defineQuery} into callable\n * {@link Query} objects that can be invoked with arguments and a context.\n *\n * Query definitions can be nested for organization. The resulting query names\n * are dot-separated paths (e.g., `users.byId`).\n *\n * @example\n * ```ts\n * const builder = createBuilder(schema);\n *\n * const queries = defineQueries({\n * issues: defineQuery(() => builder.issue.orderBy('created', 'desc')),\n * users: {\n * byId: defineQuery(({args}: {args: {id: string}}) =>\n * builder.user.where('id', args.id),\n * ),\n * },\n * });\n *\n * // Usage:\n * const request = queries.issues.byId({id: '123'});\n * const [data] = zero.useQuery(request);\n * ```\n *\n * @param defs - An object containing query definitions or nested objects of\n * query definitions.\n * @returns An object with the same structure where each query definition is\n * converted to a {@link CustomQuery}.\n */\nexport function defineQueries<\n // let QD infer freely so defaults aren't erased by a QueryDefinitions<any, any> constraint\n const QD,\n S extends Schema = DefaultSchema,\n>(\n defs: QD & AssertQueryDefinitions<QD>,\n): QueryRegistry<EnsureQueryDefinitions<QD>, S>;\n\nexport function defineQueries<\n const TBase,\n const TOverrides,\n S extends Schema = DefaultSchema,\n>(\n base:\n | QueryRegistry<EnsureQueryDefinitions<TBase>, S>\n | (TBase & AssertQueryDefinitions<TBase>),\n overrides: TOverrides & AssertQueryDefinitions<TOverrides>,\n): QueryRegistry<\n DeepMerge<\n EnsureQueryDefinitions<TBase>,\n EnsureQueryDefinitions<TOverrides>,\n AnyQueryDefinition\n >,\n S\n>;\n\nexport function defineQueries<QD extends QueryDefinitions, S extends Schema>(\n defsOrBase: QD | QueryRegistry<QD, S>,\n overrides?: QueryDefinitions,\n): QueryRegistry<QD, S> {\n function processDefinitions(\n definitions: QueryDefinitions,\n path: string[],\n ): Record<string | symbol, unknown> {\n const result: Record<string | symbol, unknown> = {\n ['~']: 'QueryRegistry',\n };\n\n for (const [key, value] of Object.entries(definitions)) {\n path.push(key);\n const defaultName = path.join('.');\n\n if (isQueryDefinition(value)) {\n result[key] = createQuery(defaultName, value);\n } else {\n // Nested definitions\n result[key] = processDefinitions(value, path);\n }\n path.pop();\n }\n\n return result;\n }\n\n if (overrides !== undefined) {\n // Merge base and overrides\n\n let base: Record<string | symbol, unknown>;\n if (!isQueryRegistry(defsOrBase)) {\n base = processDefinitions(defsOrBase as QD, []);\n } else {\n base = defsOrBase;\n }\n\n const processed = processDefinitions(overrides, []);\n\n const merged = deepMerge(base, processed, isQueryLeaf);\n merged['~'] = 'QueryRegistry';\n return merged as QueryRegistry<QD, S>;\n }\n\n return processDefinitions(defsOrBase as QD, []) as QueryRegistry<QD, S>;\n}\n\nconst isQueryLeaf = (value: unknown): boolean =>\n !isPlainObject(value) || isQuery(value);\n\nexport type AssertQueryDefinitions<QD> = QD extends QueryDefinitions\n ? unknown\n : never;\n\nexport type EnsureQueryDefinitions<QD> = QD extends QueryDefinitions\n ? QD\n : QD extends QueryRegistry<infer InnerQD, infer _S>\n ? InnerQD\n : never;\n\n/**\n * Creates a function that can be used to define queries with a specific schema.\n */\nexport function defineQueriesWithType<\n TSchema extends Schema,\n>(): TypedDefineQueries<TSchema> {\n return defineQueries;\n}\n\n/**\n * The return type of defineQueriesWithType. A function matching the\n * defineQueries overloads but with Schema pre-bound.\n */\ntype TypedDefineQueries<S extends Schema> = {\n // Single definitions\n <QD>(\n definitions: QD & AssertQueryDefinitions<QD>,\n ): QueryRegistry<EnsureQueryDefinitions<QD>, S>;\n\n // Base and overrides\n <TBase, TOverrides>(\n base:\n | QueryRegistry<EnsureQueryDefinitions<TBase>, S>\n | (TBase & AssertQueryDefinitions<TBase>),\n overrides: TOverrides & AssertQueryDefinitions<TOverrides>,\n ): QueryRegistry<\n DeepMerge<\n EnsureQueryDefinitions<TBase>,\n EnsureQueryDefinitions<TOverrides>,\n AnyQueryDefinition\n >,\n S\n >;\n};\n\n// ----------------------------------------------------------------------------\n// getQuery / mustGetQuery\n// ----------------------------------------------------------------------------\n\nexport function getQuery<QD extends QueryDefinitions, S extends Schema>(\n queries: QueryRegistry<QD, S>,\n name: string,\n): FromQueryTree<QD, S> | undefined {\n const q = getValueAtPath(queries, name, /[.|]/);\n return q as FromQueryTree<QD, S> | undefined;\n}\n\nexport function mustGetQuery<QD extends QueryDefinitions, S extends Schema>(\n queries: QueryRegistry<QD, S>,\n name: string,\n): FromQueryTree<QD, S> {\n const query = getQuery(queries, name);\n if (query === undefined) {\n throw new Error(`Query not found: ${name}`);\n }\n return query;\n}\n"],"names":[],"mappings":";;;;;AA8EO,SAAS,QAAQ,OAAyC;AAC/D,SACE,OAAO,UAAU,cACjB,OAAQ,MAAgC,cAAc,YACtD,OAAQ,MAAyB,OAAO;AAE5C;AAqEO,MAAM,oBAAoB,CAQ/B,OAQA,YAEA,WAAW,QAAQ,MAAM,MAAM,GAAG,EAAC,KAAK,SAAS,MAAM,MAAM,KAAA,CAAK,IAAI;AAMjE,SAAS,gBAAgB,KAAuC;AACrE,SACE,OAAO,QAAQ,YACf,QAAQ,QACP,MAAqC,GAAG,MAAM;AAEnD;AAgGO,SAAS,kBAAkB,GAAqC;AACrE,SACE,OAAO,MAAM,YACb,MAAM,QACL,EAAwB,GAAG,MAAM;AAEtC;AAiFO,SAAS,YASd,oBAGA,SAC6D;AAE7D,MAAI;AACJ,MAAI;AAOJ,MAAI,OAAO,uBAAuB,YAAY;AAE5C,gBAAY;AACZ,oBAAgB;AAAA,EAClB,OAAO;AAEL,gBAAY;AACZ,oBAAgB,KAAK,OAAO;AAAA,EAC9B;AAEA,QAAM,kBAMF;AAAA,IACF,MAAM;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,EAAA;AAQP,SAAO;AACT;AAyCO,SAAS,sBAAsB;AACpC,SAAO;AACT;AAkCO,SAAS,YAQd,MACA,YACkE;AAClE,QAAM,EAAC,cAAa;AAEpB,QAAM,KAKF,CAAA,YAAW;AACb,UAAM,gBAAgB,YAClB,cAAc,MAAM,QAAQ,MAAM,WAAW,OAAO,IACnD,QAAQ;AAEb,WAAO;AAAA,MACL,WAAW,GAAG;AAAA,QACZ,MAAM;AAAA,QACN,KAAK,QAAQ;AAAA,MAAA,CACd;AAAA,IAAA,EACD;AAAA,MACA;AAAA;AAAA;AAAA,MAGA,QAAQ,SAAS,SAAY,CAAA,IAAK,CAAC,QAAQ,IAAI;AAAA,IAAA;AAAA,EAEnD;AAEA,QAAM,QAAQ,CACZ,UACuE;AAAA,IACvE;AAAA,IACA,KAAK;AAAA,IAQL,SAAS;AAAA,EAAA;AAUX,QAAM,YAAY;AAClB,QAAM,KAAK;AACX,QAAM,GAAG,IAAI;AAQb,SAAO;AAQT;AA8DO,SAAS,cACd,YACA,WACsB;AACtB,WAAS,mBACP,aACA,MACkC;AAClC,UAAM,SAA2C;AAAA,MAC/C,CAAC,GAAG,GAAG;AAAA,IAAA;AAGT,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,WAAW,GAAG;AACtD,WAAK,KAAK,GAAG;AACb,YAAM,cAAc,KAAK,KAAK,GAAG;AAEjC,UAAI,kBAAkB,KAAK,GAAG;AAC5B,eAAO,GAAG,IAAI,YAAY,aAAa,KAAK;AAAA,MAC9C,OAAO;AAEL,eAAO,GAAG,IAAI,mBAAmB,OAAO,IAAI;AAAA,MAC9C;AACA,WAAK,IAAA;AAAA,IACP;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,QAAW;AAG3B,QAAI;AACJ,QAAI,CAAC,gBAAgB,UAAU,GAAG;AAChC,aAAO,mBAAmB,YAAkB,EAAE;AAAA,IAChD,OAAO;AACL,aAAO;AAAA,IACT;AAEA,UAAM,YAAY,mBAAmB,WAAW,EAAE;AAElD,UAAM,SAAS,UAAU,MAAM,WAAW,WAAW;AACrD,WAAO,GAAG,IAAI;AACd,WAAO;AAAA,EACT;AAEA,SAAO,mBAAmB,YAAkB,EAAE;AAChD;AAEA,MAAM,cAAc,CAAC,UACnB,CAAC,cAAc,KAAK,KAAK,QAAQ,KAAK;AAejC,SAAS,wBAEiB;AAC/B,SAAO;AACT;AAgCO,SAAS,SACd,SACA,MACkC;AAClC,QAAM,IAAI,eAAe,SAAS,MAAM,MAAM;AAC9C,SAAO;AACT;AAEO,SAAS,aACd,SACA,MACsB;AACtB,QAAM,QAAQ,SAAS,SAAS,IAAI;AACpC,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI,MAAM,oBAAoB,IAAI,EAAE;AAAA,EAC5C;AACA,SAAO;AACT;"}
1
+ {"version":3,"file":"query-registry.js","sources":["../../../../../zql/src/query/query-registry.ts"],"sourcesContent":["import type {StandardSchemaV1} from '@standard-schema/spec';\nimport {\n deepMerge,\n isPlainObject,\n type DeepMerge,\n} from '../../../shared/src/deep-merge.ts';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {must} from '../../../shared/src/must.ts';\nimport {getValueAtPath} from '../../../shared/src/object-traversal.ts';\nimport type {\n DefaultContext,\n DefaultSchema,\n} from '../../../zero-types/src/default-types.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {asQueryInternals} from './query-internals.ts';\nimport type {PullRow, Query} from './query.ts';\nimport {validateInput} from './validate-input.ts';\n\n// ----------------------------------------------------------------------------\n// CustomQuery and QueryRequest types\n// ----------------------------------------------------------------------------\n\nexport type CustomQueryTypes<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> = 'Query' & {\n readonly $tableName: TTable;\n readonly $input: TInput;\n readonly $schema: TSchema;\n readonly $return: TReturn;\n readonly $context: TContext;\n};\n\n/**\n * CustomQuery is returned from defineQueries. It is a callable that captures\n * args and can be turned into a Query via {@link QueryRequest}.\n */\nexport type CustomQuery<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined = TInput,\n TSchema extends Schema = DefaultSchema,\n TReturn = PullRow<TTable, TSchema>,\n TContext = DefaultContext,\n> = {\n readonly 'queryName': string;\n readonly 'fn': QueryDefinitionFunction<TTable, TInput, TReturn, TContext>;\n readonly '~': CustomQueryTypes<TTable, TInput, TSchema, TReturn, TContext>;\n} & CustomQueryCallable<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n\ntype CustomQueryCallable<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> = [TInput] extends [undefined]\n ? () => QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>\n : undefined extends TInput\n ? {\n (): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n (\n args?: TInput,\n ): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n }\n : {\n (\n args: TInput,\n ): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n };\n\n// oxlint-disable-next-line no-explicit-any\nexport type AnyCustomQuery = CustomQuery<string, any, any, Schema, any, any>;\n\nexport function isQuery<S extends Schema>(\n value: unknown,\n // oxlint-disable-next-line no-explicit-any\n): value is CustomQuery<string, any, any, S, any, any> {\n return (\n typeof value === 'function' &&\n typeof (value as {queryName?: unknown}).queryName === 'string' &&\n typeof (value as {fn?: unknown}).fn === 'function'\n );\n}\n\nexport type QueryRequestTypes<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> = 'QueryRequest' & {\n readonly $tableName: TTable;\n readonly $input: TInput;\n readonly $output: TOutput;\n readonly $schema: TSchema;\n readonly $return: TReturn;\n readonly $context: TContext;\n};\n\nexport type QueryRequest<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> = {\n readonly 'query': CustomQuery<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >;\n readonly 'args': TInput;\n readonly '~': QueryRequestTypes<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >;\n};\n\n/**\n * A shared type that can be a query request or a query builder.\n *\n * If it is a query request, it will be converted to a {@link Query} using the context.\n * Otherwise, it will be returned as is.\n */\nexport type QueryOrQueryRequest<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> =\n | QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>\n | Query<TTable, TSchema, TReturn>;\n\n/**\n * Converts a query request to a {@link Query} using the context,\n * or returns the query as is.\n *\n * @param query - The query request or query builder to convert\n * @param context - The context to use to convert the query request\n */\nexport const addContextToQuery = <\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n>(\n query: QueryOrQueryRequest<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >,\n context: TContext,\n): Query<TTable, TSchema, TReturn> =>\n 'query' in query ? query.query.fn({ctx: context, args: query.args}) : query;\n\n// ----------------------------------------------------------------------------\n// QueryRegistry types\n// ----------------------------------------------------------------------------\n\nexport function isQueryRegistry(obj: unknown): obj is AnyQueryRegistry {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n (obj as unknown as {['~']: string})?.['~'] === 'QueryRegistry'\n );\n}\n\nexport type QueryRegistryTypes<TSchema extends Schema> = 'QueryRegistry' & {\n readonly $schema: TSchema;\n};\n\nexport type QueryRegistry<\n QD extends QueryDefinitions,\n S extends Schema,\n> = ToQueryTree<QD, S> & {\n ['~']: QueryRegistryTypes<S>;\n};\n\nexport type AnyQueryRegistry = {\n ['~']: QueryRegistryTypes<Schema>;\n [key: string]: unknown;\n};\n\ntype ToQueryTree<QD extends QueryDefinitions, S extends Schema> = {\n readonly [K in keyof QD]: QD[K] extends AnyQueryDefinition\n ? // pull types from the phantom property\n CustomQuery<\n QD[K]['~']['$tableName'],\n QD[K]['~']['$input'],\n QD[K]['~']['$output'],\n S,\n QD[K]['~']['$return'],\n QD[K]['~']['$context']\n >\n : QD[K] extends QueryDefinitions\n ? ToQueryTree<QD[K], S>\n : never;\n};\n\nexport type FromQueryTree<QD extends QueryDefinitions, S extends Schema> = {\n readonly [K in keyof QD]: QD[K] extends AnyQueryDefinition\n ? CustomQuery<\n QD[K]['~']['$tableName'],\n // intentionally left as generic to avoid variance issues\n ReadonlyJSONValue | undefined,\n ReadonlyJSONValue | undefined,\n S,\n QD[K]['~']['$return'],\n QD[K]['~']['$context']\n >\n : QD[K] extends QueryDefinitions\n ? FromQueryTree<QD[K], S>\n : never;\n}[keyof QD];\n\nexport type QueryDefinitions = {\n readonly [key: string]: AnyQueryDefinition | QueryDefinitions;\n};\n\n// ----------------------------------------------------------------------------\n// defineQuery\n// ----------------------------------------------------------------------------\n\nexport type QueryDefinitionTypes<\n TTable extends string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput,\n TReturn,\n TContext,\n> = 'QueryDefinition' & {\n readonly $tableName: TTable;\n readonly $input: TInput;\n readonly $output: TOutput;\n readonly $return: TReturn;\n readonly $context: TContext;\n};\n\n/**\n * A query definition is the return type of `defineQuery()`.\n */\nexport type QueryDefinition<\n TTable extends string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TReturn,\n TContext = DefaultContext,\n> = {\n readonly 'fn': QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>;\n readonly 'validator': StandardSchemaV1<TInput, TOutput> | undefined;\n readonly '~': QueryDefinitionTypes<\n TTable,\n TInput,\n TOutput,\n TReturn,\n TContext\n >;\n};\n\n// oxlint-disable-next-line no-explicit-any\nexport type AnyQueryDefinition = QueryDefinition<any, any, any, any, any>;\n\nexport function isQueryDefinition(f: unknown): f is AnyQueryDefinition {\n return (\n typeof f === 'object' &&\n f !== null &&\n (f as {['~']?: unknown})['~'] === 'QueryDefinition'\n );\n}\n\nexport type QueryDefinitionFunction<\n TTable extends string,\n TInput extends ReadonlyJSONValue | undefined,\n TReturn,\n TContext,\n> = (options: {args: TInput; ctx: TContext}) => Query<TTable, Schema, TReturn>;\n\n/**\n * Defines a query to be used with {@link defineQueries}.\n *\n * The query function receives an object with `args` (the query arguments) and\n * `ctx` (the context). It should return a {@link Query} built using a builder\n * created from {@link createBuilder}.\n *\n * Note: A query defined with `defineQuery` must be passed to\n * {@link defineQueries} to be usable. The query name is derived from its\n * position in the `defineQueries` object.\n *\n * @example\n * ```ts\n * const builder = createBuilder(schema);\n *\n * const queries = defineQueries({\n * // Simple query with no arguments\n * allIssues: defineQuery(() => builder.issue.orderBy('created', 'desc')),\n *\n * // Query with typed arguments\n * issueById: defineQuery(({args}: {args: {id: string}}) =>\n * builder.issue.where('id', args.id).one(),\n * ),\n *\n * // Query with validation using a Standard Schema validator (e.g., Zod)\n * issuesByStatus: defineQuery(\n * z.object({status: z.enum(['open', 'closed'])}),\n * ({args}) => builder.issue.where('status', args.status),\n * ),\n *\n * // Query using context\n * myIssues: defineQuery(({ctx}: {ctx: {userID: string}}) =>\n * builder.issue.where('creatorID', ctx.userID),\n * ),\n * });\n * ```\n *\n * @param queryFn - A function that receives `{args, ctx}` and returns a Query.\n * @returns A {@link QueryDefinition} that can be passed to {@link defineQueries}.\n *\n * @overload\n * @param validator - A Standard Schema validator for the arguments.\n * @param queryFn - A function that receives `{args, ctx}` and returns a Query.\n * @returns A {@link QueryDefinition} with validated arguments.\n */\n// Overload for no validator parameter with default inference for untyped functions\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n queryFn: QueryDefinitionFunction<TTable, TInput, TReturn, TContext>,\n): QueryDefinition<TTable, TInput, TInput, TReturn, TContext>;\n\n// Overload for validator parameter - Input and Output can be different\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n validator: StandardSchemaV1<TInput, TOutput>,\n queryFn: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>;\n\n// Implementation\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n validatorOrQueryFn:\n | StandardSchemaV1<TInput, TOutput>\n | QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n queryFn?: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext> {\n // Handle different parameter patterns\n let validator: StandardSchemaV1<TInput, TOutput> | undefined;\n let actualQueryFn: QueryDefinitionFunction<\n TTable,\n TOutput,\n TReturn,\n TContext\n >;\n\n if (typeof validatorOrQueryFn === 'function') {\n // defineQuery(queryFn) - no validator\n validator = undefined;\n actualQueryFn = validatorOrQueryFn;\n } else {\n // defineQuery(validator, queryFn) - with validator\n validator = validatorOrQueryFn;\n actualQueryFn = must(queryFn);\n }\n\n const queryDefinition: QueryDefinition<\n TTable,\n TInput,\n TOutput,\n TReturn,\n TContext\n > = {\n 'fn': actualQueryFn,\n 'validator': validator,\n '~': 'QueryDefinition' as unknown as QueryDefinitionTypes<\n TTable,\n TInput,\n TOutput,\n TReturn,\n TContext\n >,\n };\n return queryDefinition;\n}\n\n/**\n * Returns a typed version of {@link defineQuery} with the schema and context\n * types pre-specified. This enables better type inference when defining\n * queries.\n *\n * @example\n * ```ts\n * const zql = createBuilder(schema);\n *\n * // With both Schema and Context types\n * const defineAppQuery = defineQueryWithType<AppSchema, AppContext>();\n * const myQuery = defineAppQuery(({ctx}) =>\n * zql.issue.where('userID', ctx.userID),\n * );\n *\n * // With just Context type (Schema inferred)\n * const defineAppQuery = defineQueryWithType<AppContext>();\n * ```\n *\n * @typeParam S - The Zero schema type.\n * @typeParam C - The context type passed to query functions.\n * @returns A function equivalent to {@link defineQuery} but with types\n * pre-bound.\n */\nexport function defineQueryWithType<\n S extends Schema,\n C = unknown,\n>(): TypedDefineQuery<S, C>;\n\n/**\n * Returns a typed version of {@link defineQuery} with the context type\n * pre-specified.\n *\n * @typeParam C - The context type passed to query functions.\n * @returns A function equivalent to {@link defineQuery} but with the context\n * type pre-bound.\n */\nexport function defineQueryWithType<C>(): TypedDefineQuery<Schema, C>;\n\nexport function defineQueryWithType() {\n return defineQuery;\n}\n\n/**\n * The return type of defineQueryWithType. A function matching the\n * defineQuery overloads but with Schema and Context pre-bound.\n */\ntype TypedDefineQuery<TSchema extends Schema, TContext> = {\n // Without validator\n <\n TArgs extends ReadonlyJSONValue | undefined,\n TReturn,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n >(\n queryFn: QueryDefinitionFunction<TTable, TArgs, TReturn, TContext>,\n ): QueryDefinition<TTable, TArgs, TArgs, TReturn, TContext>;\n\n // With validator\n <\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TReturn,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n >(\n validator: StandardSchemaV1<TInput, TOutput>,\n queryFn: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n ): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>;\n};\n\n// ----------------------------------------------------------------------------\n// createQuery\n// ----------------------------------------------------------------------------\n\nexport function createQuery<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n>(\n name: string,\n definition: QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>,\n): CustomQuery<TTable, TInput, TOutput, TSchema, TReturn, TContext> {\n const {validator} = definition;\n\n const fn: QueryDefinitionFunction<\n TTable,\n TInput,\n TReturn,\n TContext\n > = options => {\n const validatedArgs = validator\n ? validateInput(name, options.args, validator, 'query')\n : (options.args as unknown as TOutput);\n\n return asQueryInternals(\n definition.fn({\n args: validatedArgs,\n ctx: options.ctx,\n }),\n ).nameAndArgs(\n name,\n // TODO(arv): Get rid of the array?\n // Send original input args to server (not transformed output)\n options.args === undefined ? [] : [options.args],\n );\n };\n\n const query = (\n args: TInput,\n ): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext> => ({\n args,\n '~': 'QueryRequest' as QueryRequestTypes<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >,\n 'query': query as unknown as CustomQuery<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >,\n });\n\n query.queryName = name;\n query.fn = fn;\n query['~'] = 'Query' as CustomQueryTypes<\n TTable,\n TInput,\n TSchema,\n TReturn,\n TContext\n >;\n\n return query as unknown as CustomQuery<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >;\n}\n\n// ----------------------------------------------------------------------------\n// defineQueries\n// ----------------------------------------------------------------------------\n\n/**\n * Converts query definitions created with {@link defineQuery} into callable\n * {@link Query} objects that can be invoked with arguments and a context.\n *\n * Query definitions can be nested for organization. The resulting query names\n * are dot-separated paths (e.g., `users.byId`).\n *\n * @example\n * ```ts\n * const builder = createBuilder(schema);\n *\n * const queries = defineQueries({\n * issues: defineQuery(() => builder.issue.orderBy('created', 'desc')),\n * users: {\n * byId: defineQuery(({args}: {args: {id: string}}) =>\n * builder.user.where('id', args.id),\n * ),\n * },\n * });\n *\n * // Usage:\n * const request = queries.issues.byId({id: '123'});\n * const [data] = zero.useQuery(request);\n * ```\n *\n * @param defs - An object containing query definitions or nested objects of\n * query definitions.\n * @returns An object with the same structure where each query definition is\n * converted to a {@link CustomQuery}.\n */\nexport function defineQueries<\n // let QD infer freely so defaults aren't erased by a QueryDefinitions<any, any> constraint\n const QD,\n S extends Schema = DefaultSchema,\n>(\n defs: QD & AssertQueryDefinitions<QD>,\n): QueryRegistry<EnsureQueryDefinitions<QD>, S>;\n\nexport function defineQueries<\n const TBase,\n const TOverrides,\n S extends Schema = DefaultSchema,\n>(\n base:\n | QueryRegistry<EnsureQueryDefinitions<TBase>, S>\n | (TBase & AssertQueryDefinitions<TBase>),\n overrides: TOverrides & AssertQueryDefinitions<TOverrides>,\n): QueryRegistry<\n DeepMerge<\n EnsureQueryDefinitions<TBase>,\n EnsureQueryDefinitions<TOverrides>,\n AnyQueryDefinition\n >,\n S\n>;\n\nexport function defineQueries<QD extends QueryDefinitions, S extends Schema>(\n defsOrBase: QD | QueryRegistry<QD, S>,\n overrides?: QueryDefinitions,\n): QueryRegistry<QD, S> {\n function processDefinitions(\n definitions: QueryDefinitions,\n path: string[],\n ): Record<string | symbol, unknown> {\n const result: Record<string | symbol, unknown> = {\n ['~']: 'QueryRegistry',\n };\n\n for (const [key, value] of Object.entries(definitions)) {\n path.push(key);\n const defaultName = path.join('.');\n\n if (isQueryDefinition(value)) {\n result[key] = createQuery(defaultName, value);\n } else {\n // Nested definitions\n result[key] = processDefinitions(value, path);\n }\n path.pop();\n }\n\n return result;\n }\n\n if (overrides !== undefined) {\n // Merge base and overrides\n\n let base: Record<string | symbol, unknown>;\n if (!isQueryRegistry(defsOrBase)) {\n base = processDefinitions(defsOrBase, []);\n } else {\n base = defsOrBase;\n }\n\n const processed = processDefinitions(overrides, []);\n\n const merged = deepMerge(base, processed, isQueryLeaf);\n merged['~'] = 'QueryRegistry';\n return merged as QueryRegistry<QD, S>;\n }\n\n return processDefinitions(defsOrBase as QD, []) as QueryRegistry<QD, S>;\n}\n\nconst isQueryLeaf = (value: unknown): boolean =>\n !isPlainObject(value) || isQuery(value);\n\nexport type AssertQueryDefinitions<QD> = QD extends QueryDefinitions\n ? unknown\n : never;\n\nexport type EnsureQueryDefinitions<QD> = QD extends QueryDefinitions\n ? QD\n : QD extends QueryRegistry<infer InnerQD, infer _S>\n ? InnerQD\n : never;\n\n/**\n * Creates a function that can be used to define queries with a specific schema.\n */\nexport function defineQueriesWithType<\n TSchema extends Schema,\n>(): TypedDefineQueries<TSchema> {\n return defineQueries;\n}\n\n/**\n * The return type of defineQueriesWithType. A function matching the\n * defineQueries overloads but with Schema pre-bound.\n */\ntype TypedDefineQueries<S extends Schema> = {\n // Single definitions\n <QD>(\n definitions: QD & AssertQueryDefinitions<QD>,\n ): QueryRegistry<EnsureQueryDefinitions<QD>, S>;\n\n // Base and overrides\n <TBase, TOverrides>(\n base:\n | QueryRegistry<EnsureQueryDefinitions<TBase>, S>\n | (TBase & AssertQueryDefinitions<TBase>),\n overrides: TOverrides & AssertQueryDefinitions<TOverrides>,\n ): QueryRegistry<\n DeepMerge<\n EnsureQueryDefinitions<TBase>,\n EnsureQueryDefinitions<TOverrides>,\n AnyQueryDefinition\n >,\n S\n >;\n};\n\n// ----------------------------------------------------------------------------\n// getQuery / mustGetQuery\n// ----------------------------------------------------------------------------\n\nexport function getQuery<QD extends QueryDefinitions, S extends Schema>(\n queries: QueryRegistry<QD, S>,\n name: string,\n): FromQueryTree<QD, S> | undefined {\n const q = getValueAtPath(queries, name, /[.|]/);\n return q as FromQueryTree<QD, S> | undefined;\n}\n\nexport function mustGetQuery<QD extends QueryDefinitions, S extends Schema>(\n queries: QueryRegistry<QD, S>,\n name: string,\n): FromQueryTree<QD, S> {\n const query = getQuery(queries, name);\n if (query === undefined) {\n throw new Error(`Query not found: ${name}`);\n }\n return query;\n}\n"],"names":[],"mappings":";;;;;AA8EO,SAAS,QACd,OAEqD;AACrD,SACE,OAAO,UAAU,cACjB,OAAQ,MAAgC,cAAc,YACtD,OAAQ,MAAyB,OAAO;AAE5C;AAqEO,MAAM,oBAAoB,CAQ/B,OAQA,YAEA,WAAW,QAAQ,MAAM,MAAM,GAAG,EAAC,KAAK,SAAS,MAAM,MAAM,KAAA,CAAK,IAAI;AAMjE,SAAS,gBAAgB,KAAuC;AACrE,SACE,OAAO,QAAQ,YACf,QAAQ,QACP,MAAqC,GAAG,MAAM;AAEnD;AAgGO,SAAS,kBAAkB,GAAqC;AACrE,SACE,OAAO,MAAM,YACb,MAAM,QACL,EAAwB,GAAG,MAAM;AAEtC;AAiFO,SAAS,YASd,oBAGA,SAC6D;AAE7D,MAAI;AACJ,MAAI;AAOJ,MAAI,OAAO,uBAAuB,YAAY;AAE5C,gBAAY;AACZ,oBAAgB;AAAA,EAClB,OAAO;AAEL,gBAAY;AACZ,oBAAgB,KAAK,OAAO;AAAA,EAC9B;AAEA,QAAM,kBAMF;AAAA,IACF,MAAM;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,EAAA;AAQP,SAAO;AACT;AAyCO,SAAS,sBAAsB;AACpC,SAAO;AACT;AAkCO,SAAS,YAQd,MACA,YACkE;AAClE,QAAM,EAAC,cAAa;AAEpB,QAAM,KAKF,CAAA,YAAW;AACb,UAAM,gBAAgB,YAClB,cAAc,MAAM,QAAQ,MAAM,WAAW,OAAO,IACnD,QAAQ;AAEb,WAAO;AAAA,MACL,WAAW,GAAG;AAAA,QACZ,MAAM;AAAA,QACN,KAAK,QAAQ;AAAA,MAAA,CACd;AAAA,IAAA,EACD;AAAA,MACA;AAAA;AAAA;AAAA,MAGA,QAAQ,SAAS,SAAY,CAAA,IAAK,CAAC,QAAQ,IAAI;AAAA,IAAA;AAAA,EAEnD;AAEA,QAAM,QAAQ,CACZ,UACuE;AAAA,IACvE;AAAA,IACA,KAAK;AAAA,IAQL,SAAS;AAAA,EAAA;AAUX,QAAM,YAAY;AAClB,QAAM,KAAK;AACX,QAAM,GAAG,IAAI;AAQb,SAAO;AAQT;AA8DO,SAAS,cACd,YACA,WACsB;AACtB,WAAS,mBACP,aACA,MACkC;AAClC,UAAM,SAA2C;AAAA,MAC/C,CAAC,GAAG,GAAG;AAAA,IAAA;AAGT,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,WAAW,GAAG;AACtD,WAAK,KAAK,GAAG;AACb,YAAM,cAAc,KAAK,KAAK,GAAG;AAEjC,UAAI,kBAAkB,KAAK,GAAG;AAC5B,eAAO,GAAG,IAAI,YAAY,aAAa,KAAK;AAAA,MAC9C,OAAO;AAEL,eAAO,GAAG,IAAI,mBAAmB,OAAO,IAAI;AAAA,MAC9C;AACA,WAAK,IAAA;AAAA,IACP;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,QAAW;AAG3B,QAAI;AACJ,QAAI,CAAC,gBAAgB,UAAU,GAAG;AAChC,aAAO,mBAAmB,YAAY,EAAE;AAAA,IAC1C,OAAO;AACL,aAAO;AAAA,IACT;AAEA,UAAM,YAAY,mBAAmB,WAAW,EAAE;AAElD,UAAM,SAAS,UAAU,MAAM,WAAW,WAAW;AACrD,WAAO,GAAG,IAAI;AACd,WAAO;AAAA,EACT;AAEA,SAAO,mBAAmB,YAAkB,EAAE;AAChD;AAEA,MAAM,cAAc,CAAC,UACnB,CAAC,cAAc,KAAK,KAAK,QAAQ,KAAK;AAejC,SAAS,wBAEiB;AAC/B,SAAO;AACT;AAgCO,SAAS,SACd,SACA,MACkC;AAClC,QAAM,IAAI,eAAe,SAAS,MAAM,MAAM;AAC9C,SAAO;AACT;AAEO,SAAS,aACd,SACA,MACsB;AACtB,QAAM,QAAQ,SAAS,SAAS,IAAI;AACpC,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI,MAAM,oBAAoB,IAAI,EAAE;AAAA,EAC5C;AACA,SAAO;AACT;"}
@@ -1,14 +1,14 @@
1
1
  import type { AST, System } from '../../../zero-protocol/src/ast.ts';
2
2
  import type { Schema } from '../../../zero-types/src/schema.ts';
3
3
  import type { Format, ViewFactory } from '../ivm/view.ts';
4
- import { AbstractQuery } from './abstract-query.ts';
5
4
  import type { CustomQueryID } from './named.ts';
6
5
  import type { QueryDelegate } from './query-delegate.ts';
6
+ import { QueryImpl } from './query-impl.ts';
7
7
  import type { HumanReadable, PreloadOptions, PullRow, Query, RunOptions } from './query.ts';
8
8
  import type { TTL } from './ttl.ts';
9
9
  import type { TypedView } from './typed-view.ts';
10
10
  export declare function newRunnableQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema>(delegate: QueryDelegate, schema: TSchema, table: TTable): Query<TTable, TSchema>;
11
- export declare class RunnableQueryImpl<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn = PullRow<TTable, TSchema>> extends AbstractQuery<TTable, TSchema, TReturn> implements Query<TTable, TSchema, TReturn> {
11
+ export declare class RunnableQueryImpl<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn = PullRow<TTable, TSchema>> extends QueryImpl<TTable, TSchema, TReturn> implements Query<TTable, TSchema, TReturn> {
12
12
  #private;
13
13
  constructor(delegate: QueryDelegate, schema: TSchema, tableName: TTable, ast?: AST, format?: Format, system?: System, customQueryID?: CustomQueryID, currentJunction?: string);
14
14
  run(options?: RunOptions): Promise<HumanReadable<TReturn>>;
@@ -1 +1 @@
1
- {"version":3,"file":"runnable-query-impl.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/runnable-query-impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EAEb,cAAc,EACd,OAAO,EACP,KAAK,EACL,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE/C,wBAAgB,gBAAgB,CAC9B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EAEtB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CASxB;AAED,qBAAa,iBAAiB,CAC1B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAEpC,SAAQ,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAC9C,YAAW,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;;gBAKxC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,GAAwB,EAC7B,MAAM,GAAE,MAAsB,EAC9B,MAAM,GAAE,MAAiB,EACzB,aAAa,CAAC,EAAE,aAAa,EAC7B,eAAe,CAAC,EAAE,MAAM;IAyB1B,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAI1D,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG;QACjC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB;IAID,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzD,WAAW,CAAC,CAAC,EACX,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EACjD,GAAG,CAAC,EAAE,GAAG,GACR,CAAC;CAkBL"}
1
+ {"version":3,"file":"runnable-query-impl.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/runnable-query-impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EACV,aAAa,EAEb,cAAc,EACd,OAAO,EACP,KAAK,EACL,UAAU,EACX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE/C,wBAAgB,gBAAgB,CAC9B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EAEtB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CASxB;AAED,qBAAa,iBAAiB,CAC1B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAEpC,SAAQ,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAC1C,YAAW,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;;gBAKxC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,GAAwB,EAC7B,MAAM,GAAE,MAAsB,EAC9B,MAAM,GAAE,MAAiB,EACzB,aAAa,CAAC,EAAE,aAAa,EAC7B,eAAe,CAAC,EAAE,MAAM;IAyBjB,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAI1D,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG;QAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB;IAIQ,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzD,WAAW,CAAC,CAAC,EACpB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EACjD,GAAG,CAAC,EAAE,GAAG,GACR,CAAC;CAkBL"}
@@ -1,5 +1,5 @@
1
1
  import { defaultFormat } from "../../../zero-types/src/format.js";
2
- import { AbstractQuery } from "./abstract-query.js";
2
+ import { QueryImpl } from "./query-impl.js";
3
3
  function newRunnableQuery(delegate, schema, table) {
4
4
  return new RunnableQueryImpl(
5
5
  delegate,
@@ -10,7 +10,7 @@ function newRunnableQuery(delegate, schema, table) {
10
10
  void 0
11
11
  );
12
12
  }
13
- class RunnableQueryImpl extends AbstractQuery {
13
+ class RunnableQueryImpl extends QueryImpl {
14
14
  #delegate;
15
15
  constructor(delegate, schema, tableName, ast = { table: tableName }, format = defaultFormat, system = "client", customQueryID, currentJunction) {
16
16
  super(
@@ -1 +1 @@
1
- {"version":3,"file":"runnable-query-impl.js","sources":["../../../../../zql/src/query/runnable-query-impl.ts"],"sourcesContent":["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, ViewFactory} from '../ivm/view.ts';\nimport {AbstractQuery} from './abstract-query.ts';\nimport type {CustomQueryID} from './named.ts';\nimport type {QueryDelegate} from './query-delegate.ts';\nimport type {\n HumanReadable,\n MaterializeOptions,\n PreloadOptions,\n PullRow,\n Query,\n RunOptions,\n} from './query.ts';\nimport type {TTL} from './ttl.ts';\nimport type {TypedView} from './typed-view.ts';\n\nexport function newRunnableQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n>(\n delegate: QueryDelegate,\n schema: TSchema,\n table: TTable,\n): Query<TTable, TSchema> {\n return new RunnableQueryImpl(\n delegate,\n schema,\n table,\n {table},\n defaultFormat,\n undefined,\n );\n}\n\nexport class RunnableQueryImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn = PullRow<TTable, TSchema>,\n >\n extends AbstractQuery<TTable, TSchema, TReturn>\n implements Query<TTable, TSchema, TReturn>\n{\n readonly #delegate: QueryDelegate;\n\n constructor(\n delegate: QueryDelegate,\n schema: TSchema,\n tableName: TTable,\n ast: AST = {table: tableName},\n format: Format = defaultFormat,\n system: System = 'client',\n customQueryID?: CustomQueryID,\n currentJunction?: string,\n ) {\n super(\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n (tableName, ast, format, customQueryID, currentJunction) =>\n new RunnableQueryImpl(\n delegate,\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n ),\n );\n this.#delegate = delegate;\n }\n\n run(options?: RunOptions): Promise<HumanReadable<TReturn>> {\n return this.#delegate.run(this, options);\n }\n\n preload(options?: PreloadOptions): {\n cleanup: () => void;\n complete: Promise<void>;\n } {\n return this.#delegate.preload(this, options);\n }\n\n materialize(ttl?: TTL): TypedView<HumanReadable<TReturn>>;\n materialize<T>(\n factory: ViewFactory<TTable, TSchema, TReturn, T>,\n ttl?: TTL,\n ): T;\n materialize<T>(\n factory?: unknown,\n ttl?: unknown,\n ): T | TypedView<HumanReadable<TReturn>> {\n let actualFactory: ViewFactory<TTable, TSchema, TReturn, T> | undefined;\n let options: MaterializeOptions | undefined;\n\n if (typeof factory === 'function') {\n actualFactory = factory as ViewFactory<TTable, TSchema, TReturn, T>;\n options = {ttl: ttl as TTL | undefined};\n } else {\n actualFactory = undefined;\n options = {ttl: factory as TTL | undefined};\n }\n\n return this.#delegate.materialize(this, actualFactory, options);\n }\n}\n"],"names":["tableName","ast","format","customQueryID","currentJunction"],"mappings":";;AAkBO,SAAS,iBAId,UACA,QACA,OACwB;AACxB,SAAO,IAAI;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAC,MAAA;AAAA,IACD;AAAA,IACA;AAAA,EAAA;AAEJ;AAEO,MAAM,0BAKH,cAEV;AAAA,EACW;AAAA,EAET,YACE,UACA,QACA,WACA,MAAW,EAAC,OAAO,UAAA,GACnB,SAAiB,eACjB,SAAiB,UACjB,eACA,iBACA;AACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAACA,YAAWC,MAAKC,SAAQC,gBAAeC,qBACtC,IAAI;AAAA,QACF;AAAA,QACA;AAAA,QACAJ;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACA;AAAA,QACAC;AAAAA,QACAC;AAAAA,MAAA;AAAA,IACF;AAEJ,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,IAAI,SAAuD;AACzD,WAAO,KAAK,UAAU,IAAI,MAAM,OAAO;AAAA,EACzC;AAAA,EAEA,QAAQ,SAGN;AACA,WAAO,KAAK,UAAU,QAAQ,MAAM,OAAO;AAAA,EAC7C;AAAA,EAOA,YACE,SACA,KACuC;AACvC,QAAI;AACJ,QAAI;AAEJ,QAAI,OAAO,YAAY,YAAY;AACjC,sBAAgB;AAChB,gBAAU,EAAC,IAAA;AAAA,IACb,OAAO;AACL,sBAAgB;AAChB,gBAAU,EAAC,KAAK,QAAA;AAAA,IAClB;AAEA,WAAO,KAAK,UAAU,YAAY,MAAM,eAAe,OAAO;AAAA,EAChE;AACF;"}
1
+ {"version":3,"file":"runnable-query-impl.js","sources":["../../../../../zql/src/query/runnable-query-impl.ts"],"sourcesContent":["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, ViewFactory} from '../ivm/view.ts';\nimport type {CustomQueryID} from './named.ts';\nimport type {QueryDelegate} from './query-delegate.ts';\nimport {QueryImpl} from './query-impl.ts';\nimport type {\n HumanReadable,\n MaterializeOptions,\n PreloadOptions,\n PullRow,\n Query,\n RunOptions,\n} from './query.ts';\nimport type {TTL} from './ttl.ts';\nimport type {TypedView} from './typed-view.ts';\n\nexport function newRunnableQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n>(\n delegate: QueryDelegate,\n schema: TSchema,\n table: TTable,\n): Query<TTable, TSchema> {\n return new RunnableQueryImpl(\n delegate,\n schema,\n table,\n {table},\n defaultFormat,\n undefined,\n );\n}\n\nexport class RunnableQueryImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn = PullRow<TTable, TSchema>,\n >\n extends QueryImpl<TTable, TSchema, TReturn>\n implements Query<TTable, TSchema, TReturn>\n{\n readonly #delegate: QueryDelegate;\n\n constructor(\n delegate: QueryDelegate,\n schema: TSchema,\n tableName: TTable,\n ast: AST = {table: tableName},\n format: Format = defaultFormat,\n system: System = 'client',\n customQueryID?: CustomQueryID,\n currentJunction?: string,\n ) {\n super(\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n (tableName, ast, format, customQueryID, currentJunction) =>\n new RunnableQueryImpl(\n delegate,\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n ),\n );\n this.#delegate = delegate;\n }\n\n override run(options?: RunOptions): Promise<HumanReadable<TReturn>> {\n return this.#delegate.run(this, options);\n }\n\n override preload(options?: PreloadOptions): {\n cleanup: () => void;\n complete: Promise<void>;\n } {\n return this.#delegate.preload(this, options);\n }\n\n override materialize(ttl?: TTL): TypedView<HumanReadable<TReturn>>;\n override materialize<T>(\n factory: ViewFactory<TTable, TSchema, TReturn, T>,\n ttl?: TTL,\n ): T;\n override materialize<T>(\n factory?: unknown,\n ttl?: unknown,\n ): T | TypedView<HumanReadable<TReturn>> {\n let actualFactory: ViewFactory<TTable, TSchema, TReturn, T> | undefined;\n let options: MaterializeOptions | undefined;\n\n if (typeof factory === 'function') {\n actualFactory = factory as ViewFactory<TTable, TSchema, TReturn, T>;\n options = {ttl: ttl as TTL | undefined};\n } else {\n actualFactory = undefined;\n options = {ttl: factory as TTL | undefined};\n }\n\n return this.#delegate.materialize(this, actualFactory, options);\n }\n}\n"],"names":["tableName","ast","format","customQueryID","currentJunction"],"mappings":";;AAkBO,SAAS,iBAId,UACA,QACA,OACwB;AACxB,SAAO,IAAI;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAC,MAAA;AAAA,IACD;AAAA,IACA;AAAA,EAAA;AAEJ;AAEO,MAAM,0BAKH,UAEV;AAAA,EACW;AAAA,EAET,YACE,UACA,QACA,WACA,MAAW,EAAC,OAAO,UAAA,GACnB,SAAiB,eACjB,SAAiB,UACjB,eACA,iBACA;AACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAACA,YAAWC,MAAKC,SAAQC,gBAAeC,qBACtC,IAAI;AAAA,QACF;AAAA,QACA;AAAA,QACAJ;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACA;AAAA,QACAC;AAAAA,QACAC;AAAAA,MAAA;AAAA,IACF;AAEJ,SAAK,YAAY;AAAA,EACnB;AAAA,EAES,IAAI,SAAuD;AAClE,WAAO,KAAK,UAAU,IAAI,MAAM,OAAO;AAAA,EACzC;AAAA,EAES,QAAQ,SAGf;AACA,WAAO,KAAK,UAAU,QAAQ,MAAM,OAAO;AAAA,EAC7C;AAAA,EAOS,YACP,SACA,KACuC;AACvC,QAAI;AACJ,QAAI;AAEJ,QAAI,OAAO,YAAY,YAAY;AACjC,sBAAgB;AAChB,gBAAU,EAAC,IAAA;AAAA,IACb,OAAO;AACL,sBAAgB;AAChB,gBAAU,EAAC,KAAK,QAAA;AAAA,IAClB;AAEA,WAAO,KAAK,UAAU,YAAY,MAAM,eAAe,OAAO;AAAA,EAChE;AACF;"}
@@ -1,6 +1,8 @@
1
1
  import type { Schema } from '../../../zero-types/src/schema.ts';
2
2
  import type { Query } from './query.ts';
3
- export type SchemaQuery<S extends Schema> = {
3
+ export type SchemaQuery<S extends Schema, ForceEnable extends boolean = false> = ForceEnable extends true ? {
4
4
  readonly [K in keyof S['tables'] & string]: Query<K, S>;
5
- };
5
+ } : S['enableLegacyQueries'] extends true ? {
6
+ readonly [K in keyof S['tables'] & string]: Query<K, S>;
7
+ } : undefined;
6
8
  //# sourceMappingURL=schema-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/schema-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAEtC,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI;IAK1C,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;CACxD,CAAC"}
1
+ {"version":3,"file":"schema-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/schema-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAMtC,MAAM,MAAM,WAAW,CACrB,CAAC,SAAS,MAAM,EAChB,WAAW,SAAS,OAAO,GAAG,KAAK,IACjC,WAAW,SAAS,IAAI,GACxB;IACE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;CACxD,GACD,CAAC,CAAC,qBAAqB,CAAC,SAAS,IAAI,GACnC;IACE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;CACxD,GACD,SAAS,CAAC"}
@@ -1,19 +1,5 @@
1
- import type { AST, System } from '../../../zero-protocol/src/ast.ts';
2
1
  import type { Schema } from '../../../zero-types/src/schema.ts';
3
- import type { Format } from '../ivm/view.ts';
4
- import { AbstractQuery } from './abstract-query.ts';
5
- import { ExpressionBuilder } from './expression.ts';
6
- import type { CustomQueryID } from './named.ts';
7
2
  import type { PullRow, Query } from './query.ts';
8
- export type AnyStaticQuery = StaticQuery<string, Schema, any>;
9
- export declare function staticQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn = PullRow<TTable, TSchema>>(schema: TSchema, tableName: TTable): Query<TTable, TSchema, TReturn>;
10
- /**
11
- * A query that cannot be run.
12
- * Only serves to generate ASTs.
13
- */
14
- export declare class StaticQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn = PullRow<TTable, TSchema>> extends AbstractQuery<TTable, TSchema, TReturn> {
15
- constructor(schema: TSchema, tableName: TTable, ast: AST, format: Format, system?: System, customQueryID?: CustomQueryID, currentJunction?: string);
16
- expressionBuilder(): ExpressionBuilder<string, Schema>;
17
- }
18
- export declare function asStaticQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn>(q: Query<TTable, TSchema, TReturn>): StaticQuery<TTable, TSchema, TReturn>;
3
+ export declare function newStaticQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn = PullRow<TTable, TSchema>>(schema: TSchema, tableName: TTable): Query<TTable, TSchema, TReturn>;
4
+ export declare function newExpressionBuilder<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema>(schema: TSchema, tableName: TTable): import("./expression.ts").ExpressionBuilder<string, Schema>;
19
5
  //# sourceMappingURL=static-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"static-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/static-query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,YAAY,CAAC;AAG/C,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AAE9D,wBAAgB,WAAW,CACzB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAOrE;AAED;;;GAGG;AACH,qBAAa,WAAW,CACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAClC,SAAQ,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;gBAE7C,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAsB,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,eAAe,CAAC,EAAE,MAAM;IAuB1B,iBAAiB;CAGlB;AAED,wBAAgB,aAAa,CAC3B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,EACP,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAG3E"}
1
+ {"version":3,"file":"static-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/static-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAG9D,OAAO,KAAK,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,YAAY,CAAC;AAE/C,wBAAgB,cAAc,CAC5B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAQrE;AAED,wBAAgB,oBAAoB,CAClC,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,+DAGnC"}
@@ -1,47 +1,20 @@
1
- import { assert } from "../../../shared/src/asserts.js";
2
1
  import { defaultFormat } from "../../../zero-types/src/format.js";
3
- import { AbstractQuery } from "./abstract-query.js";
4
- import { ExpressionBuilder } from "./expression.js";
5
- function staticQuery(schema, tableName) {
6
- return new StaticQuery(
2
+ import { newQueryImpl } from "./query-impl.js";
3
+ function newStaticQuery(schema, tableName) {
4
+ return newQueryImpl(
7
5
  schema,
8
6
  tableName,
9
7
  { table: tableName },
10
- defaultFormat
8
+ defaultFormat,
9
+ "permissions"
11
10
  );
12
11
  }
13
- class StaticQuery extends AbstractQuery {
14
- constructor(schema, tableName, ast, format, system = "permissions", customQueryID, currentJunction) {
15
- super(
16
- schema,
17
- tableName,
18
- ast,
19
- format,
20
- system,
21
- customQueryID,
22
- currentJunction,
23
- (tableName2, ast2, format2, _customQueryID, currentJunction2) => new StaticQuery(
24
- schema,
25
- tableName2,
26
- ast2,
27
- format2,
28
- system,
29
- customQueryID,
30
- currentJunction2
31
- )
32
- );
33
- }
34
- expressionBuilder() {
35
- return new ExpressionBuilder(this._exists);
36
- }
37
- }
38
- function asStaticQuery(q) {
39
- assert(q instanceof StaticQuery);
40
- return q;
12
+ function newExpressionBuilder(schema, tableName) {
13
+ const q = newStaticQuery(schema, tableName);
14
+ return q.expressionBuilder();
41
15
  }
42
16
  export {
43
- StaticQuery,
44
- asStaticQuery,
45
- staticQuery
17
+ newExpressionBuilder,
18
+ newStaticQuery
46
19
  };
47
20
  //# sourceMappingURL=static-query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"static-query.js","sources":["../../../../../zql/src/query/static-query.ts"],"sourcesContent":["import {assert} from '../../../shared/src/asserts.ts';\nimport 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 {AbstractQuery} from './abstract-query.ts';\nimport {ExpressionBuilder} from './expression.ts';\nimport type {CustomQueryID} from './named.ts';\nimport type {PullRow, Query} from './query.ts';\n\n// oxlint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyStaticQuery = StaticQuery<string, Schema, any>;\n\nexport function staticQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn = PullRow<TTable, TSchema>,\n>(schema: TSchema, tableName: TTable): Query<TTable, TSchema, TReturn> {\n return new StaticQuery<TTable, TSchema, TReturn>(\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 TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn = PullRow<TTable, TSchema>,\n> extends AbstractQuery<TTable, TSchema, 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 schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n (tableName, ast, format, _customQueryID, currentJunction) =>\n new StaticQuery(\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n ),\n );\n }\n\n expressionBuilder() {\n return new ExpressionBuilder(this._exists);\n }\n}\n\nexport function asStaticQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n>(q: Query<TTable, TSchema, TReturn>): StaticQuery<TTable, TSchema, TReturn> {\n assert(q instanceof StaticQuery);\n return q;\n}\n"],"names":["tableName","ast","format","currentJunction"],"mappings":";;;;AAaO,SAAS,YAId,QAAiB,WAAoD;AACrE,SAAO,IAAI;AAAA,IACT;AAAA,IACA;AAAA,IACA,EAAC,OAAO,UAAA;AAAA,IACR;AAAA,EAAA;AAEJ;AAMO,MAAM,oBAIH,cAAwC;AAAA,EAChD,YACE,QACA,WACA,KACA,QACA,SAAiB,eACjB,eACA,iBACA;AACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAACA,YAAWC,MAAKC,SAAQ,gBAAgBC,qBACvC,IAAI;AAAA,QACF;AAAA,QACAH;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACA;AAAA,QACA;AAAA,QACAC;AAAAA,MAAA;AAAA,IACF;AAAA,EAEN;AAAA,EAEA,oBAAoB;AAClB,WAAO,IAAI,kBAAkB,KAAK,OAAO;AAAA,EAC3C;AACF;AAEO,SAAS,cAId,GAA2E;AAC3E,SAAO,aAAa,WAAW;AAC/B,SAAO;AACT;"}
1
+ {"version":3,"file":"static-query.js","sources":["../../../../../zql/src/query/static-query.ts"],"sourcesContent":["import type {Schema} from '../../../zero-types/src/schema.ts';\nimport {defaultFormat} from '../ivm/default-format.ts';\nimport {newQueryImpl, type QueryImpl} from './query-impl.ts';\nimport type {PullRow, Query} from './query.ts';\n\nexport function newStaticQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn = PullRow<TTable, TSchema>,\n>(schema: TSchema, tableName: TTable): Query<TTable, TSchema, TReturn> {\n return newQueryImpl(\n schema,\n tableName,\n {table: tableName},\n defaultFormat,\n 'permissions',\n );\n}\n\nexport function newExpressionBuilder<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n>(schema: TSchema, tableName: TTable) {\n const q = newStaticQuery(schema, tableName);\n return (q as QueryImpl<TTable, TSchema>).expressionBuilder();\n}\n"],"names":[],"mappings":";;AAKO,SAAS,eAId,QAAiB,WAAoD;AACrE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,EAAC,OAAO,UAAA;AAAA,IACR;AAAA,IACA;AAAA,EAAA;AAEJ;AAEO,SAAS,qBAGd,QAAiB,WAAmB;AACpC,QAAM,IAAI,eAAe,QAAQ,SAAS;AAC1C,SAAQ,EAAiC,kBAAA;AAC3C;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rocicorp/zero",
3
- "version": "0.25.0-canary.18",
3
+ "version": "0.25.0-canary.21",
4
4
  "description": "Zero is a web framework for serverless web development.",
5
5
  "author": "Rocicorp, Inc.",
6
6
  "repository": {
@@ -47,6 +47,7 @@
47
47
  "@rocicorp/logger": "^5.4.0",
48
48
  "@rocicorp/resolver": "^1.0.2",
49
49
  "@rocicorp/zero-sqlite3": "^1.0.12",
50
+ "@standard-schema/spec": "^1.0.0",
50
51
  "@types/basic-auth": "^1.1.8",
51
52
  "basic-auth": "^2.0.1",
52
53
  "chalk": "^5.3.0",
@@ -70,7 +71,6 @@
70
71
  "postgres": "^3.4.4",
71
72
  "prettier": "^3.5.3",
72
73
  "semver": "^7.5.4",
73
- "@standard-schema/spec": "^1.0.0",
74
74
  "tsx": "^4.19.1",
75
75
  "url-pattern": "^1.0.3",
76
76
  "urlpattern-polyfill": "^10.1.0",
@@ -82,13 +82,13 @@
82
82
  "@vitest/runner": "3.2.4",
83
83
  "analyze-query": "0.0.0",
84
84
  "ast-to-zql": "0.0.0",
85
- "vite": "6.2.1",
86
85
  "expo-sqlite": ">=15",
87
86
  "replicache": "15.2.1",
88
87
  "shared": "0.0.0",
89
88
  "typedoc": "^0.28.2",
90
89
  "typedoc-plugin-markdown": "^4.6.1",
91
90
  "typescript": "~5.9.3",
91
+ "vite": "6.2.1",
92
92
  "vitest": "3.2.4",
93
93
  "zero-cache": "0.0.0",
94
94
  "zero-client": "0.0.0",
@@ -119,6 +119,10 @@
119
119
  "types": "./out/zero/src/zero.d.ts",
120
120
  "default": "./out/zero/src/zero.js"
121
121
  },
122
+ "./bindings": {
123
+ "types": "./out/zero/src/bindings.d.ts",
124
+ "default": "./out/zero/src/bindings.js"
125
+ },
122
126
  "./change-protocol/v0": {
123
127
  "types": "./out/zero/src/change-protocol/v0.d.ts",
124
128
  "default": "./out/zero/src/change-protocol/v0.js"
@@ -1,33 +0,0 @@
1
- import { asQueryInternals } from "../../../zql/src/query/query-internals.js";
2
- const zeroDelegates = /* @__PURE__ */ new WeakMap();
3
- function registerZeroDelegate(zero, delegate) {
4
- zeroDelegates.set(zero, delegate);
5
- }
6
- function mustGetDelegate(zero) {
7
- const delegate = zeroDelegates.get(zero);
8
- if (!delegate) {
9
- throw new Error("Zero instance not registered with bindings");
10
- }
11
- return delegate;
12
- }
13
- function bindingsForZero(zero) {
14
- const delegate = mustGetDelegate(zero);
15
- return {
16
- materialize(query, factory, options) {
17
- return delegate.materialize(query, factory, options);
18
- },
19
- hash(query) {
20
- const queryInternals = asQueryInternals(query);
21
- return queryInternals.hash();
22
- },
23
- format(query) {
24
- const queryInternals = asQueryInternals(query);
25
- return queryInternals.format;
26
- }
27
- };
28
- }
29
- export {
30
- bindingsForZero,
31
- registerZeroDelegate
32
- };
33
- //# sourceMappingURL=bindings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bindings.js","sources":["../../../../../zero-client/src/client/bindings.ts"],"sourcesContent":["import type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {Format, ViewFactory} from '../../../zql/src/ivm/view.ts';\nimport type {QueryDelegate} from '../../../zql/src/query/query-delegate.ts';\nimport {asQueryInternals} from '../../../zql/src/query/query-internals.ts';\nimport type {\n HumanReadable,\n MaterializeOptions,\n Query,\n} from '../../../zql/src/query/query.ts';\nimport type {TypedView} from '../../../zql/src/query/typed-view.ts';\nimport type {CustomMutatorDefs} from './custom.ts';\nimport type {Zero} from './zero.ts';\n\n/**\n * Internal WeakMap to store QueryDelegate for each Zero instance.\n * This is populated by Zero's constructor and allows bindings to access\n * the delegate without exposing it as a public API.\n */\nconst zeroDelegates = new WeakMap<\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n Zero<any, any, any>,\n QueryDelegate\n>();\n\nexport function registerZeroDelegate<\n TSchema extends Schema,\n MD extends CustomMutatorDefs | undefined,\n TContext,\n>(zero: Zero<TSchema, MD, TContext>, delegate: QueryDelegate): void {\n zeroDelegates.set(zero, delegate);\n}\n\nfunction mustGetDelegate<\n TSchema extends Schema,\n MD extends CustomMutatorDefs | undefined,\n TContext,\n>(zero: Zero<TSchema, MD, TContext>): QueryDelegate {\n const delegate = zeroDelegates.get(zero);\n if (!delegate) {\n throw new Error('Zero instance not registered with bindings');\n }\n return delegate;\n}\n\n/**\n * Bindings interface for Zero instances, providing methods to materialize queries\n * and extract query metadata.\n *\n * @internal This API is for bindings only, not end users.\n */\nexport interface BindingsForZero<TSchema extends Schema> {\n /**\n * Materialize a query into a reactive view without a custom factory.\n * Returns a TypedView that automatically updates when underlying data changes.\n */\n materialize<TTable extends keyof TSchema['tables'] & string, TReturn>(\n query: Query<TTable, TSchema, TReturn>,\n factory?: undefined,\n options?: MaterializeOptions,\n ): TypedView<HumanReadable<TReturn>>;\n\n /**\n * Materialize a query into a reactive view using a custom factory.\n * The factory can transform the view into a framework-specific reactive object.\n */\n materialize<TTable extends keyof TSchema['tables'] & string, TReturn, T>(\n query: Query<TTable, TSchema, TReturn>,\n factory: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T;\n\n /**\n * Compute the hash of a query for caching and deduplication purposes.\n */\n hash<TTable extends keyof TSchema['tables'] & string, TReturn>(\n query: Query<TTable, TSchema, TReturn>,\n ): string;\n\n /**\n * Get the format/schema of a query's result set.\n */\n format<TTable extends keyof TSchema['tables'] & string, TReturn>(\n query: Query<TTable, TSchema, TReturn>,\n ): Format;\n}\n\n/**\n * Create a bindings object for a Zero instance.\n * This provides low-level access to query materialization and metadata extraction.\n *\n * @internal This API is for bindings only, not end users.\n */\nexport function bindingsForZero<\n TSchema extends Schema,\n MD extends CustomMutatorDefs | undefined,\n TContext,\n>(zero: Zero<TSchema, MD, TContext>): BindingsForZero<TSchema> {\n const delegate = mustGetDelegate(zero);\n\n return {\n materialize<TTable extends keyof TSchema['tables'] & string, TReturn, T>(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ) {\n return delegate.materialize(query, factory, options);\n },\n\n hash<TTable extends keyof TSchema['tables'] & string, TReturn>(\n query: Query<TTable, TSchema, TReturn>,\n ): string {\n const queryInternals = asQueryInternals(query);\n return queryInternals.hash();\n },\n\n format<TTable extends keyof TSchema['tables'] & string, TReturn>(\n query: Query<TTable, TSchema, TReturn>,\n ): Format {\n const queryInternals = asQueryInternals(query);\n return queryInternals.format;\n },\n };\n}\n"],"names":[],"mappings":";AAkBA,MAAM,oCAAoB,QAAA;AAMnB,SAAS,qBAId,MAAmC,UAA+B;AAClE,gBAAc,IAAI,MAAM,QAAQ;AAClC;AAEA,SAAS,gBAIP,MAAkD;AAClD,QAAM,WAAW,cAAc,IAAI,IAAI;AACvC,MAAI,CAAC,UAAU;AACb,UAAM,IAAI,MAAM,4CAA4C;AAAA,EAC9D;AACA,SAAO;AACT;AAkDO,SAAS,gBAId,MAA6D;AAC7D,QAAM,WAAW,gBAAgB,IAAI;AAErC,SAAO;AAAA,IACL,YACE,OACA,SACA,SACA;AACA,aAAO,SAAS,YAAY,OAAO,SAAS,OAAO;AAAA,IACrD;AAAA,IAEA,KACE,OACQ;AACR,YAAM,iBAAiB,iBAAiB,KAAK;AAC7C,aAAO,eAAe,KAAA;AAAA,IACxB;AAAA,IAEA,OACE,OACQ;AACR,YAAM,iBAAiB,iBAAiB,KAAK;AAC7C,aAAO,eAAe;AAAA,IACxB;AAAA,EAAA;AAEJ;"}
@@ -1,9 +0,0 @@
1
- import type { CustomMutatorDefs } from '../../../zero-client/src/client/custom.ts';
2
- import type { Zero } from '../../../zero-client/src/client/zero.ts';
3
- import type { DefaultContext, DefaultSchema } from '../../../zero-types/src/default-types.ts';
4
- import type { Schema } from '../../../zero-types/src/schema.ts';
5
- export default function Inspector<S extends Schema = DefaultSchema, MD extends CustomMutatorDefs | undefined = undefined, Context = DefaultContext>({ zero, onClose }: {
6
- zero: Zero<S, MD, Context>;
7
- onClose: () => void;
8
- }): import("react/jsx-runtime").JSX.Element;
9
- //# sourceMappingURL=inspector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../../../../zero-react/src/components/inspector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,yCAAyC,CAAC;AAClE,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACd,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAG9D,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,CAAC,SAAS,MAAM,GAAG,aAAa,EAChC,EAAE,SAAS,iBAAiB,GAAG,SAAS,GAAG,SAAS,EACpD,OAAO,GAAG,cAAc,EACxB,EAAC,IAAI,EAAE,OAAO,EAAC,EAAE;IAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAC,2CA4BnE"}
@@ -1,38 +0,0 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { MarkIcon } from "./mark-icon.js";
3
- function Inspector({ zero, onClose }) {
4
- return /* @__PURE__ */ jsxs(
5
- "dialog",
6
- {
7
- open: true,
8
- style: {
9
- alignItems: "center",
10
- backgroundColor: "white",
11
- borderRadius: "8px 0 0 0",
12
- bottom: 0,
13
- boxShadow: "0 4px 8px rgba(0, 0, 0, 0.1)",
14
- color: "black",
15
- display: "flex",
16
- height: "fit-content",
17
- marginRight: 0,
18
- opacity: 0.95,
19
- padding: "0.25em 0.5em",
20
- position: "fixed",
21
- width: "fit-content",
22
- zIndex: 1e3
23
- },
24
- children: [
25
- /* @__PURE__ */ jsx(MarkIcon, { style: { margin: "0.5em" } }),
26
- /* @__PURE__ */ jsxs("div", { children: [
27
- "Zero v",
28
- zero.version
29
- ] }),
30
- /* @__PURE__ */ jsx("button", { onClick: onClose, style: { padding: "0.5em" }, children: "✖︎" })
31
- ]
32
- }
33
- );
34
- }
35
- export {
36
- Inspector as default
37
- };
38
- //# sourceMappingURL=inspector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspector.js","sources":["../../../../../zero-react/src/components/inspector.tsx"],"sourcesContent":["import type {CustomMutatorDefs} from '../../../zero-client/src/client/custom.ts';\nimport type {Zero} from '../../../zero-client/src/client/zero.ts';\nimport type {\n DefaultContext,\n DefaultSchema,\n} from '../../../zero-types/src/default-types.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {MarkIcon} from './mark-icon.tsx';\n\nexport default function Inspector<\n S extends Schema = DefaultSchema,\n MD extends CustomMutatorDefs | undefined = undefined,\n Context = DefaultContext,\n>({zero, onClose}: {zero: Zero<S, MD, Context>; 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 ✖︎\n </button>\n </dialog>\n );\n}\n"],"names":[],"mappings":";;AASA,SAAwB,UAItB,EAAC,MAAM,WAA6D;AACpE,SACE;AAAA,IAAC;AAAA,IAAA;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,MAAA;AAAA,MAGV,UAAA;AAAA,QAAA,oBAAC,UAAA,EAAS,OAAO,EAAC,QAAQ,WAAU;AAAA,6BACnC,OAAA,EAAI,UAAA;AAAA,UAAA;AAAA,UAAO,KAAK;AAAA,QAAA,GAAQ;AAAA,QACzB,oBAAC,YAAO,SAAS,SAAS,OAAO,EAAC,SAAS,QAAA,GAAU,UAAA,KAAA,CAErD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -1,3 +0,0 @@
1
- import type { FC, SVGProps } from 'react';
2
- export declare const MarkIcon: FC<SVGProps<SVGSVGElement>>;
3
- //# sourceMappingURL=mark-icon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mark-icon.d.ts","sourceRoot":"","sources":["../../../../../zero-react/src/components/mark-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,EAAE,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAExC,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAiBhD,CAAC"}
@@ -1,28 +0,0 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- const MarkIcon = (props) => /* @__PURE__ */ jsxs(
3
- "svg",
4
- {
5
- width: "18",
6
- height: "18",
7
- viewBox: "0 0 24 24",
8
- fill: "none",
9
- xmlns: "http://www.w3.org/2000/svg",
10
- ...props,
11
- children: [
12
- /* @__PURE__ */ jsx("title", { children: "Show Zero Inspector" }),
13
- /* @__PURE__ */ jsx(
14
- "path",
15
- {
16
- fillRule: "evenodd",
17
- clipRule: "evenodd",
18
- d: "M0.407235 15.1075C-0.661857 11.1041 0.374032 6.65546 3.51478 3.51471C8.20106 -1.17157 15.799 -1.17157 20.4854 3.51471C20.8969 3.92627 21.2723 4.36029 21.6115 4.81284L17.6063 8.81802H12.7576L16.7275 4.84814C13.3994 2.64322 8.87135 3.00687 5.9391 5.93909C4.24366 7.63455 3.40687 9.86362 3.42896 12.0857L0.407235 15.1075ZM18.0609 18.0609C15.1287 20.9931 10.6006 21.3568 7.27247 19.1519L11.2423 15.182H6.39356L2.38844 19.1872C2.72767 19.6397 3.10316 20.0737 3.51466 20.4853C8.20094 25.1716 15.799 25.1716 20.4852 20.4853C23.626 17.3445 24.6619 12.8959 23.5927 8.89255L20.5709 11.9143C20.593 14.1364 19.7564 16.3654 18.0609 18.0609Z",
19
- fill: "currentColor"
20
- }
21
- )
22
- ]
23
- }
24
- );
25
- export {
26
- MarkIcon
27
- };
28
- //# sourceMappingURL=mark-icon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mark-icon.js","sources":["../../../../../zero-react/src/components/mark-icon.tsx"],"sourcesContent":["import type {FC, SVGProps} from 'react';\n\nexport const MarkIcon: FC<SVGProps<SVGSVGElement>> = props => (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <title>Show Zero Inspector</title>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0.407235 15.1075C-0.661857 11.1041 0.374032 6.65546 3.51478 3.51471C8.20106 -1.17157 15.799 -1.17157 20.4854 3.51471C20.8969 3.92627 21.2723 4.36029 21.6115 4.81284L17.6063 8.81802H12.7576L16.7275 4.84814C13.3994 2.64322 8.87135 3.00687 5.9391 5.93909C4.24366 7.63455 3.40687 9.86362 3.42896 12.0857L0.407235 15.1075ZM18.0609 18.0609C15.1287 20.9931 10.6006 21.3568 7.27247 19.1519L11.2423 15.182H6.39356L2.38844 19.1872C2.72767 19.6397 3.10316 20.0737 3.51466 20.4853C8.20094 25.1716 15.799 25.1716 20.4852 20.4853C23.626 17.3445 24.6619 12.8959 23.5927 8.89255L20.5709 11.9143C20.593 14.1364 19.7564 16.3654 18.0609 18.0609Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n"],"names":[],"mappings":";AAEO,MAAM,WAAwC,CAAA,UACnD;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ,UAAA;AAAA,MAAA,oBAAC,WAAM,UAAA,sBAAA,CAAmB;AAAA,MAC1B;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAS;AAAA,UACT,UAAS;AAAA,UACT,GAAE;AAAA,UACF,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACP;AAAA,EAAA;AACF;"}
@@ -1,8 +0,0 @@
1
- import type { CustomMutatorDefs } from '../../../zero-client/src/client/custom.ts';
2
- import type { Zero } from '../../../zero-client/src/client/zero.ts';
3
- import type { DefaultContext, DefaultSchema } from '../../../zero-types/src/default-types.ts';
4
- import type { Schema } from '../../../zero-types/src/schema.ts';
5
- export declare function ZeroInspector<S extends Schema = DefaultSchema, MD extends CustomMutatorDefs | undefined = undefined, Context = DefaultContext>({ zero }: {
6
- zero: Zero<S, MD, Context>;
7
- }): JSX.Element;
8
- //# sourceMappingURL=zero-inspector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zero-inspector.d.ts","sourceRoot":"","sources":["../../../../../zero-react/src/components/zero-inspector.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,yCAAyC,CAAC;AAClE,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACd,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAK9D,wBAAgB,aAAa,CAC3B,CAAC,SAAS,MAAM,GAAG,aAAa,EAChC,EAAE,SAAS,iBAAiB,GAAG,SAAS,GAAG,SAAS,EACpD,OAAO,GAAG,cAAc,EACxB,EAAC,IAAI,EAAC,EAAE;IAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;CAAC,GAAG,GAAG,CAAC,OAAO,CAkCnD"}
@@ -1,44 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { lazy, useState, Suspense } from "react";
3
- import { MarkIcon } from "./mark-icon.js";
4
- const Inspector = lazy(() => import("./inspector.js"));
5
- function ZeroInspector({ zero }) {
6
- const [show, setShow] = useState(false);
7
- return show ? /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx("div", { children: "Loading Inspector..." }), children: /* @__PURE__ */ jsx(
8
- Inspector,
9
- {
10
- zero,
11
- onClose: () => setShow(false)
12
- }
13
- ) }) : /* @__PURE__ */ jsx(
14
- "button",
15
- {
16
- onClick: () => setShow(!show),
17
- style: {
18
- position: "fixed",
19
- bottom: 0,
20
- right: 0,
21
- zIndex: 1e3,
22
- padding: "5px",
23
- color: "white",
24
- backgroundColor: "#333",
25
- borderTopLeftRadius: "8px",
26
- opacity: 0.95
27
- },
28
- children: /* @__PURE__ */ jsx(
29
- MarkIcon,
30
- {
31
- style: {
32
- width: "20px",
33
- height: "20px",
34
- fill: "currentColor"
35
- }
36
- }
37
- )
38
- }
39
- );
40
- }
41
- export {
42
- ZeroInspector
43
- };
44
- //# sourceMappingURL=zero-inspector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zero-inspector.js","sources":["../../../../../zero-react/src/components/zero-inspector.tsx"],"sourcesContent":["import {lazy, Suspense, useState} from 'react';\nimport type {CustomMutatorDefs} from '../../../zero-client/src/client/custom.ts';\nimport type {Zero} from '../../../zero-client/src/client/zero.ts';\nimport type {\n DefaultContext,\n DefaultSchema,\n} from '../../../zero-types/src/default-types.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {MarkIcon} from './mark-icon.tsx';\n\nconst Inspector = lazy(() => import('./inspector.tsx'));\n\nexport function ZeroInspector<\n S extends Schema = DefaultSchema,\n MD extends CustomMutatorDefs | undefined = undefined,\n Context = DefaultContext,\n>({zero}: {zero: Zero<S, MD, Context>}): JSX.Element {\n const [show, setShow] = useState(false);\n return show ? (\n <Suspense fallback={<div>Loading Inspector...</div>}>\n <Inspector\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n zero={zero as any}\n onClose={() => setShow(false)}\n />\n </Suspense>\n ) : (\n <button\n onClick={() => setShow(!show)}\n style={{\n position: 'fixed',\n bottom: 0,\n right: 0,\n zIndex: 1000,\n padding: '5px',\n color: 'white',\n backgroundColor: '#333',\n borderTopLeftRadius: '8px',\n opacity: 0.95,\n }}\n >\n <MarkIcon\n style={{\n width: '20px',\n height: '20px',\n fill: 'currentColor',\n }}\n />\n </button>\n );\n}\n"],"names":[],"mappings":";;;AAUA,MAAM,YAAY,KAAK,MAAM,OAAO,gBAAiB,CAAC;AAE/C,SAAS,cAId,EAAC,QAAkD;AACnD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,SAAO,OACL,oBAAC,UAAA,EAAS,UAAU,oBAAC,OAAA,EAAI,kCAAoB,GAC3C,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC;AAAA,MACA,SAAS,MAAM,QAAQ,KAAK;AAAA,IAAA;AAAA,EAAA,GAEhC,IAEA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAM,QAAQ,CAAC,IAAI;AAAA,MAC5B,OAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,QACP,iBAAiB;AAAA,QACjB,qBAAqB;AAAA,QACrB,SAAS;AAAA,MAAA;AAAA,MAGX,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,UAAA;AAAA,QACR;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-zero-connection-state.d.ts","sourceRoot":"","sources":["../../../../zero-react/src/use-zero-connection-state.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,4CAA4C,CAAC;AAGhF;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,CAOxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-zero-connection-state.js","sources":["../../../../zero-react/src/use-zero-connection-state.tsx"],"sourcesContent":["import {useSyncExternalStore} from 'react';\nimport type {ConnectionState} from '../../zero-client/src/client/connection.ts';\nimport {useZero} from './zero-provider.tsx';\n\n/**\n * Hook to subscribe to the connection status of the Zero instance.\n *\n * @returns The connection status of the Zero instance.\n * @see {@link ConnectionState} for more details on the connection state.\n */\nexport function useZeroConnectionState(): ConnectionState {\n const zero = useZero();\n return useSyncExternalStore(\n zero.connection.state.subscribe,\n () => zero.connection.state.current,\n () => zero.connection.state.current,\n );\n}\n"],"names":[],"mappings":";;AAUO,SAAS,yBAA0C;AACxD,QAAM,OAAO,QAAA;AACb,SAAO;AAAA,IACL,KAAK,WAAW,MAAM;AAAA,IACtB,MAAM,KAAK,WAAW,MAAM;AAAA,IAC5B,MAAM,KAAK,WAAW,MAAM;AAAA,EAAA;AAEhC;"}