@rocicorp/zero 0.25.0-canary.8 → 0.25.0-canary.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/shared/src/deep-merge.d.ts +20 -3
- package/out/shared/src/deep-merge.d.ts.map +1 -1
- package/out/shared/src/deep-merge.js +27 -0
- package/out/shared/src/deep-merge.js.map +1 -0
- package/out/shared/src/logging.d.ts.map +1 -1
- package/out/shared/src/logging.js +25 -9
- package/out/shared/src/logging.js.map +1 -1
- package/out/shared/src/object-traversal.d.ts +19 -0
- package/out/shared/src/object-traversal.d.ts.map +1 -0
- package/out/shared/src/object-traversal.js +27 -0
- package/out/shared/src/object-traversal.js.map +1 -0
- package/out/zero/package.json.js +1 -1
- package/out/zero/src/pg.js +0 -2
- package/out/zero/src/pg.js.map +1 -1
- package/out/zero/src/server.js +0 -2
- package/out/zero/src/server.js.map +1 -1
- package/out/zero/src/zero.js +19 -3
- package/out/zero/src/zero.js.map +1 -1
- package/out/zero-cache/src/auth/jwt.d.ts +3 -0
- package/out/zero-cache/src/auth/jwt.d.ts.map +1 -1
- package/out/zero-cache/src/auth/jwt.js.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts +2 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +1 -11
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +27 -0
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +35 -7
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/custom/fetch.d.ts +5 -5
- package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
- package/out/zero-cache/src/custom/fetch.js +14 -11
- package/out/zero-cache/src/custom/fetch.js.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.js +2 -4
- package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
- package/out/zero-cache/src/db/specs.d.ts +1 -1
- package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +9 -9
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +20 -8
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/services/analyze.d.ts +1 -1
- package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
- package/out/zero-cache/src/services/analyze.js +10 -1
- package/out/zero-cache/src/services/analyze.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +5 -5
- package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +2 -2
- package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +11 -2
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +36 -0
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
- package/out/zero-cache/src/services/http-service.d.ts +5 -4
- package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/http-service.js +15 -10
- package/out/zero-cache/src/services/http-service.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +2 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +3 -2
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts +198 -0
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +5 -5
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/run-ast.d.ts +4 -0
- package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
- package/out/zero-cache/src/services/run-ast.js +8 -1
- package/out/zero-cache/src/services/run-ast.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js +2 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +15 -8
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +4 -4
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +48 -25
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/workers/connection.js +20 -15
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +3 -3
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/bindings.d.ts +4 -4
- package/out/zero-client/src/client/bindings.d.ts.map +1 -1
- package/out/zero-client/src/client/bindings.js.map +1 -1
- package/out/zero-client/src/client/connection.d.ts +1 -1
- package/out/zero-client/src/client/connection.d.ts.map +1 -1
- package/out/zero-client/src/client/connection.js +1 -1
- package/out/zero-client/src/client/connection.js.map +1 -1
- package/out/zero-client/src/client/crud.d.ts +7 -5
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/crud.js +7 -7
- package/out/zero-client/src/client/crud.js.map +1 -1
- package/out/zero-client/src/client/custom.d.ts +7 -5
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.js +12 -7
- package/out/zero-client/src/client/custom.js.map +1 -1
- package/out/zero-client/src/client/inspector/inspector.d.ts +5 -1
- package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/inspector.js +7 -0
- package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.js +13 -13
- package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
- package/out/zero-client/src/client/make-mutate-property.d.ts +43 -0
- package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -0
- package/out/zero-client/src/client/make-mutate-property.js +38 -0
- package/out/zero-client/src/client/make-mutate-property.js.map +1 -0
- package/out/zero-client/src/client/make-replicache-mutators.d.ts +34 -0
- package/out/zero-client/src/client/make-replicache-mutators.d.ts.map +1 -0
- package/out/zero-client/src/client/make-replicache-mutators.js +103 -0
- package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -0
- package/out/zero-client/src/client/options.d.ts +39 -27
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/options.js.map +1 -1
- package/out/zero-client/src/client/version.js +1 -1
- package/out/zero-client/src/client/zero.d.ts +23 -33
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +52 -118
- package/out/zero-client/src/client/zero.js.map +1 -1
- package/out/zero-client/src/mod.d.ts +12 -7
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-protocol/src/analyze-query-result.d.ts +236 -0
- package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
- package/out/zero-protocol/src/analyze-query-result.js +128 -2
- package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
- package/out/zero-protocol/src/ast.d.ts +1 -1
- package/out/zero-protocol/src/connect.d.ts.map +1 -1
- package/out/zero-protocol/src/connect.js +4 -0
- package/out/zero-protocol/src/connect.js.map +1 -1
- package/out/zero-protocol/src/custom-queries.d.ts +1 -1
- package/out/zero-protocol/src/down.d.ts +99 -0
- package/out/zero-protocol/src/down.d.ts.map +1 -1
- package/out/zero-protocol/src/error.d.ts +4 -4
- package/out/zero-protocol/src/inspect-down.d.ts +297 -0
- package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
- package/out/zero-protocol/src/inspect-up.d.ts +4 -0
- package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
- package/out/zero-protocol/src/inspect-up.js +2 -1
- package/out/zero-protocol/src/inspect-up.js.map +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
- package/out/zero-protocol/src/protocol-version.js +1 -1
- package/out/zero-protocol/src/protocol-version.js.map +1 -1
- package/out/zero-protocol/src/push.d.ts +1 -1
- package/out/zero-protocol/src/up.d.ts +1 -0
- package/out/zero-protocol/src/up.d.ts.map +1 -1
- package/out/zero-react/src/components/inspector.d.ts +3 -2
- package/out/zero-react/src/components/inspector.d.ts.map +1 -1
- package/out/zero-react/src/components/inspector.js.map +1 -1
- package/out/zero-react/src/components/zero-inspector.d.ts +3 -2
- package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
- package/out/zero-react/src/components/zero-inspector.js.map +1 -1
- package/out/zero-react/src/use-query.d.ts +5 -4
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-react/src/use-query.js +4 -3
- package/out/zero-react/src/use-query.js.map +1 -1
- package/out/zero-react/src/zero-provider.d.ts +7 -7
- package/out/zero-react/src/zero-provider.d.ts.map +1 -1
- package/out/zero-react/src/zero-provider.js.map +1 -1
- package/out/zero-schema/src/builder/schema-builder.js +1 -1
- package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
- package/out/zero-server/src/custom.d.ts +4 -5
- package/out/zero-server/src/custom.d.ts.map +1 -1
- package/out/zero-server/src/custom.js.map +1 -1
- package/out/zero-server/src/mod.d.ts +0 -1
- package/out/zero-server/src/mod.d.ts.map +1 -1
- package/out/zero-server/src/process-mutations.d.ts +9 -14
- package/out/zero-server/src/process-mutations.d.ts.map +1 -1
- package/out/zero-server/src/process-mutations.js +151 -105
- package/out/zero-server/src/process-mutations.js.map +1 -1
- package/out/zero-server/src/push-processor.d.ts +5 -3
- package/out/zero-server/src/push-processor.d.ts.map +1 -1
- package/out/zero-server/src/push-processor.js +17 -25
- package/out/zero-server/src/push-processor.js.map +1 -1
- package/out/zero-server/src/queries/process-queries.js +1 -1
- package/out/zero-server/src/queries/process-queries.js.map +1 -1
- package/out/zero-server/src/zql-database.d.ts.map +1 -1
- package/out/zero-server/src/zql-database.js +1 -1
- package/out/zero-server/src/zql-database.js.map +1 -1
- package/out/zero-solid/src/use-query.d.ts +3 -3
- package/out/zero-solid/src/use-query.d.ts.map +1 -1
- package/out/zero-solid/src/use-query.js +27 -38
- package/out/zero-solid/src/use-query.js.map +1 -1
- package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -1
- package/out/zero-solid/src/use-zero-connection-state.js +7 -5
- package/out/zero-solid/src/use-zero-connection-state.js.map +1 -1
- package/out/zero-solid/src/use-zero-online.d.ts.map +1 -1
- package/out/zero-solid/src/use-zero-online.js +7 -5
- package/out/zero-solid/src/use-zero-online.js.map +1 -1
- package/out/zero-solid/src/use-zero.d.ts +6 -5
- package/out/zero-solid/src/use-zero.d.ts.map +1 -1
- package/out/zero-solid/src/use-zero.js +2 -6
- package/out/zero-solid/src/use-zero.js.map +1 -1
- package/out/zql/src/builder/builder.d.ts +2 -1
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +4 -3
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/mutate/custom.d.ts +15 -6
- package/out/zql/src/mutate/custom.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.js +6 -6
- package/out/zql/src/mutate/custom.js.map +1 -1
- package/out/zql/src/mutate/mutator-registry.d.ts +142 -0
- package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -0
- package/out/zql/src/mutate/mutator-registry.js +97 -0
- package/out/zql/src/mutate/mutator-registry.js.map +1 -0
- package/out/zql/src/mutate/mutator.d.ts +98 -0
- package/out/zql/src/mutate/mutator.d.ts.map +1 -0
- package/out/zql/src/mutate/mutator.js +35 -0
- package/out/zql/src/mutate/mutator.js.map +1 -0
- package/out/zql/src/planner/planner-connection.d.ts +7 -15
- package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
- package/out/zql/src/planner/planner-connection.js +30 -24
- package/out/zql/src/planner/planner-connection.js.map +1 -1
- package/out/zql/src/planner/planner-debug.d.ts +37 -43
- package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
- package/out/zql/src/planner/planner-debug.js +242 -0
- package/out/zql/src/planner/planner-debug.js.map +1 -0
- package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
- package/out/zql/src/planner/planner-fan-in.js +11 -8
- package/out/zql/src/planner/planner-fan-in.js.map +1 -1
- package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
- package/out/zql/src/planner/planner-fan-out.js +11 -8
- package/out/zql/src/planner/planner-fan-out.js.map +1 -1
- package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
- package/out/zql/src/planner/planner-graph.js +13 -5
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/planner/planner-join.d.ts.map +1 -1
- package/out/zql/src/planner/planner-join.js +12 -9
- package/out/zql/src/planner/planner-join.js.map +1 -1
- package/out/zql/src/planner/planner-node.d.ts +4 -0
- package/out/zql/src/planner/planner-node.d.ts.map +1 -1
- package/out/zql/src/planner/planner-node.js +8 -0
- package/out/zql/src/planner/planner-node.js.map +1 -0
- package/out/zql/src/query/create-builder.d.ts +7 -0
- package/out/zql/src/query/create-builder.d.ts.map +1 -0
- package/out/zql/src/query/create-builder.js +44 -0
- package/out/zql/src/query/create-builder.js.map +1 -0
- package/out/zql/src/query/named.d.ts +1 -7
- package/out/zql/src/query/named.d.ts.map +1 -1
- package/out/zql/src/query/named.js +0 -21
- package/out/zql/src/query/named.js.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +4 -3
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +3 -0
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-internals.js +0 -4
- package/out/zql/src/query/query-internals.js.map +1 -1
- package/out/zql/src/query/query-registry.d.ts +253 -0
- package/out/zql/src/query/query-registry.d.ts.map +1 -0
- package/out/zql/src/query/query-registry.js +131 -0
- package/out/zql/src/query/query-registry.js.map +1 -0
- package/out/zql/src/query/query.d.ts +16 -1
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/schema-query.d.ts +6 -0
- package/out/zql/src/query/schema-query.d.ts.map +1 -0
- package/out/zql/src/query/validate-input.js +12 -13
- package/out/zql/src/query/validate-input.js.map +1 -1
- package/package.json +2 -1
- package/out/zero-server/src/query-registry.d.ts +0 -10
- package/out/zero-server/src/query-registry.d.ts.map +0 -1
- package/out/zero-server/src/query-registry.js +0 -35
- package/out/zero-server/src/query-registry.js.map +0 -1
- package/out/zql/src/query/define-query.d.ts +0 -75
- package/out/zql/src/query/define-query.d.ts.map +0 -1
- package/out/zql/src/query/define-query.js +0 -47
- package/out/zql/src/query/define-query.js.map +0 -1
- package/out/zql/src/query/query-definitions.d.ts +0 -32
- package/out/zql/src/query/query-definitions.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-queries.js","sources":["../../../../../zero-server/src/queries/process-queries.ts"],"sourcesContent":["import type {LogContext, LogLevel} from '@rocicorp/logger';\nimport {getErrorDetails, getErrorMessage} from '../../../shared/src/error.ts';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport type {MaybePromise} from '../../../shared/src/types.ts';\nimport * as v from '../../../shared/src/valita.ts';\nimport {mapAST} from '../../../zero-protocol/src/ast.ts';\nimport {\n transformRequestMessageSchema,\n type TransformRequestMessage,\n type TransformResponseBody,\n type TransformResponseMessage,\n} from '../../../zero-protocol/src/custom-queries.ts';\nimport {ErrorKind} from '../../../zero-protocol/src/error-kind.ts';\nimport {ErrorOrigin} from '../../../zero-protocol/src/error-origin.ts';\nimport {ErrorReason} from '../../../zero-protocol/src/error-reason.ts';\nimport {clientToServer} from '../../../zero-schema/src/name-mapper.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {QueryParseError} from '../../../zql/src/query/error.ts';\nimport {asQueryInternals} from '../../../zql/src/query/query-internals.ts';\nimport type {AnyQuery} from '../../../zql/src/query/query.ts';\nimport {createLogContext} from '../logging.ts';\n\n/**\n * Invokes the callback `cb` for each query in the request or JSON body.\n * The callback should return a Query or Promise<Query> that is the transformed result.\n *\n * This function will call `cb` in parallel for each query found in the request.\n *\n * If you need to limit concurrency, you can use a library like `p-limit` to wrap the `cb` function.\n * @deprecated Use {@linkcode handleTransformRequest} instead.\n */\nexport function handleGetQueriesRequest<S extends Schema>(\n cb: (\n name: string,\n args: readonly ReadonlyJSONValue[],\n ) => MaybePromise<{query: AnyQuery} | AnyQuery>,\n schema: S,\n requestOrJsonBody: Request | ReadonlyJSONValue,\n logLevel: LogLevel = 'info',\n): Promise<TransformResponseMessage> {\n const lc = createLogContext(logLevel).withContext('GetQueries');\n return transform(cb, schema, requestOrJsonBody, lc, 'get');\n}\n\nasync function transform<S extends Schema>(\n cb: (\n name: string,\n args: readonly ReadonlyJSONValue[],\n ) => MaybePromise<{query: AnyQuery} | AnyQuery>,\n schema: S,\n requestOrJsonBody: Request | ReadonlyJSONValue,\n lc: LogContext,\n apiName: 'get' | 'transform',\n): Promise<TransformResponseMessage> {\n let parsed: TransformRequestMessage;\n let queryIDs: string[] = [];\n try {\n let body: ReadonlyJSONValue;\n if (requestOrJsonBody instanceof Request) {\n body = await requestOrJsonBody.json();\n } else {\n body = requestOrJsonBody;\n }\n\n parsed = v.parse(body, transformRequestMessageSchema);\n\n queryIDs = parsed[1].map(r => r.id);\n } catch (error) {\n lc.error?.(`Failed to parse ${apiName} queries request`, error);\n\n const message = `Failed to parse
|
|
1
|
+
{"version":3,"file":"process-queries.js","sources":["../../../../../zero-server/src/queries/process-queries.ts"],"sourcesContent":["import type {LogContext, LogLevel} from '@rocicorp/logger';\nimport {getErrorDetails, getErrorMessage} from '../../../shared/src/error.ts';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport type {MaybePromise} from '../../../shared/src/types.ts';\nimport * as v from '../../../shared/src/valita.ts';\nimport {mapAST} from '../../../zero-protocol/src/ast.ts';\nimport {\n transformRequestMessageSchema,\n type TransformRequestMessage,\n type TransformResponseBody,\n type TransformResponseMessage,\n} from '../../../zero-protocol/src/custom-queries.ts';\nimport {ErrorKind} from '../../../zero-protocol/src/error-kind.ts';\nimport {ErrorOrigin} from '../../../zero-protocol/src/error-origin.ts';\nimport {ErrorReason} from '../../../zero-protocol/src/error-reason.ts';\nimport {clientToServer} from '../../../zero-schema/src/name-mapper.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {QueryParseError} from '../../../zql/src/query/error.ts';\nimport {asQueryInternals} from '../../../zql/src/query/query-internals.ts';\nimport type {AnyQuery} from '../../../zql/src/query/query.ts';\nimport {createLogContext} from '../logging.ts';\n\n/**\n * Invokes the callback `cb` for each query in the request or JSON body.\n * The callback should return a Query or Promise<Query> that is the transformed result.\n *\n * This function will call `cb` in parallel for each query found in the request.\n *\n * If you need to limit concurrency, you can use a library like `p-limit` to wrap the `cb` function.\n * @deprecated Use {@linkcode handleTransformRequest} instead.\n */\nexport function handleGetQueriesRequest<S extends Schema>(\n cb: (\n name: string,\n args: readonly ReadonlyJSONValue[],\n ) => MaybePromise<{query: AnyQuery} | AnyQuery>,\n schema: S,\n requestOrJsonBody: Request | ReadonlyJSONValue,\n logLevel: LogLevel = 'info',\n): Promise<TransformResponseMessage> {\n const lc = createLogContext(logLevel).withContext('GetQueries');\n return transform(cb, schema, requestOrJsonBody, lc, 'get');\n}\n\nasync function transform<S extends Schema>(\n cb: (\n name: string,\n args: readonly ReadonlyJSONValue[],\n ) => MaybePromise<{query: AnyQuery} | AnyQuery>,\n schema: S,\n requestOrJsonBody: Request | ReadonlyJSONValue,\n lc: LogContext,\n apiName: 'get' | 'transform',\n): Promise<TransformResponseMessage> {\n let parsed: TransformRequestMessage;\n let queryIDs: string[] = [];\n try {\n let body: ReadonlyJSONValue;\n if (requestOrJsonBody instanceof Request) {\n body = await requestOrJsonBody.json();\n } else {\n body = requestOrJsonBody;\n }\n\n parsed = v.parse(body, transformRequestMessageSchema);\n\n queryIDs = parsed[1].map(r => r.id);\n } catch (error) {\n lc.error?.(`Failed to parse ${apiName} queries request`, error);\n\n const message = `Failed to parse ${apiName} queries request: ${getErrorMessage(error)}`;\n const details = getErrorDetails(error);\n\n return [\n 'transformFailed',\n {\n kind: ErrorKind.TransformFailed,\n origin: ErrorOrigin.Server,\n reason: ErrorReason.Parse,\n message,\n queryIDs,\n ...(details ? {details} : {}),\n },\n ];\n }\n\n try {\n const nameMapper = clientToServer(schema.tables);\n\n const responses: TransformResponseBody = await Promise.all(\n parsed[1].map(async req => {\n let finalQuery: AnyQuery;\n try {\n const result = await cb(req.name, req.args);\n finalQuery = 'query' in result ? result.query : result;\n } catch (error) {\n const message = getErrorMessage(error);\n const details = getErrorDetails(error);\n\n return {\n error: error instanceof QueryParseError ? 'parse' : 'app',\n id: req.id,\n name: req.name,\n message,\n ...(details ? {details} : {}),\n };\n }\n\n try {\n const q = asQueryInternals(finalQuery);\n const ast = mapAST(q.ast, nameMapper);\n\n return {\n id: req.id,\n name: req.name,\n ast,\n };\n } catch (error) {\n lc.error?.('Failed to map AST', error);\n throw error;\n }\n }),\n );\n\n return ['transformed', responses];\n } catch (e) {\n const message = getErrorMessage(e);\n const details = getErrorDetails(e);\n\n return [\n 'transformFailed',\n {\n kind: ErrorKind.TransformFailed,\n origin: ErrorOrigin.Server,\n reason: ErrorReason.Internal,\n message,\n queryIDs,\n ...(details ? {details} : {}),\n },\n ];\n }\n}\n\n/**\n * Processes a transform request by invoking the provided callback for each query.\n * The callback should return a Query that is the transformed result.\n *\n * This function will call `transformQuery` in parallel for each query found in the request.\n *\n * @param transformQuery - Callback function that takes a query name and args, and returns a Query\n * @param schema - The Zero schema\n * @param requestOrJsonBody - Either a Request object or the JSON body directly\n * @param logLevel - Logging level (defaults to 'info')\n * @returns A Promise that resolves to a TransformResponseMessage\n */\nexport function handleTransformRequest<S extends Schema>(\n transformQuery: TransformQueryFunction,\n schema: S,\n requestOrJsonBody: Request | ReadonlyJSONValue,\n logLevel: LogLevel = 'info',\n) {\n const lc = createLogContext(logLevel).withContext('TransformRequest');\n return transform(\n (name, argsArray) => transformQuery(name, argsArray[0]),\n schema,\n requestOrJsonBody,\n lc,\n 'transform',\n );\n}\n\n/**\n * A function that transforms a query by name and arguments into a Query object.\n *\n * @param name - The name of the query (can be dot-separated for nested queries)\n * @param args - The arguments to pass to the query (can be undefined)\n * @returns A Query object\n */\nexport type TransformQueryFunction = (\n name: string,\n args: ReadonlyJSONValue | undefined,\n) => AnyQuery;\n"],"names":["v.parse","ErrorKind.TransformFailed","ErrorOrigin.Server","ErrorReason.Parse","ErrorReason.Internal"],"mappings":";;;;;;;;;;;AA+BO,SAAS,wBACd,IAIA,QACA,mBACA,WAAqB,QACc;AACnC,QAAM,KAAK,iBAAiB,QAAQ,EAAE,YAAY,YAAY;AAC9D,SAAO,UAAU,IAAI,QAAQ,mBAAmB,IAAI,KAAK;AAC3D;AAEA,eAAe,UACb,IAIA,QACA,mBACA,IACA,SACmC;AACnC,MAAI;AACJ,MAAI,WAAqB,CAAA;AACzB,MAAI;AACF,QAAI;AACJ,QAAI,6BAA6B,SAAS;AACxC,aAAO,MAAM,kBAAkB,KAAA;AAAA,IACjC,OAAO;AACL,aAAO;AAAA,IACT;AAEA,aAASA,MAAQ,MAAM,6BAA6B;AAEpD,eAAW,OAAO,CAAC,EAAE,IAAI,CAAA,MAAK,EAAE,EAAE;AAAA,EACpC,SAAS,OAAO;AACd,OAAG,QAAQ,mBAAmB,OAAO,oBAAoB,KAAK;AAE9D,UAAM,UAAU,mBAAmB,OAAO,qBAAqB,gBAAgB,KAAK,CAAC;AACrF,UAAM,UAAU,gBAAgB,KAAK;AAErC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,QACE,MAAMC;AAAAA,QACN,QAAQC;AAAAA,QACR,QAAQC;AAAAA,QACR;AAAA,QACA;AAAA,QACA,GAAI,UAAU,EAAC,YAAW,CAAA;AAAA,MAAC;AAAA,IAC7B;AAAA,EAEJ;AAEA,MAAI;AACF,UAAM,aAAa,eAAe,OAAO,MAAM;AAE/C,UAAM,YAAmC,MAAM,QAAQ;AAAA,MACrD,OAAO,CAAC,EAAE,IAAI,OAAM,QAAO;AACzB,YAAI;AACJ,YAAI;AACF,gBAAM,SAAS,MAAM,GAAG,IAAI,MAAM,IAAI,IAAI;AAC1C,uBAAa,WAAW,SAAS,OAAO,QAAQ;AAAA,QAClD,SAAS,OAAO;AACd,gBAAM,UAAU,gBAAgB,KAAK;AACrC,gBAAM,UAAU,gBAAgB,KAAK;AAErC,iBAAO;AAAA,YACL,OAAO,iBAAiB,kBAAkB,UAAU;AAAA,YACpD,IAAI,IAAI;AAAA,YACR,MAAM,IAAI;AAAA,YACV;AAAA,YACA,GAAI,UAAU,EAAC,YAAW,CAAA;AAAA,UAAC;AAAA,QAE/B;AAEA,YAAI;AACF,gBAAM,IAAI,iBAAiB,UAAU;AACrC,gBAAM,MAAM,OAAO,EAAE,KAAK,UAAU;AAEpC,iBAAO;AAAA,YACL,IAAI,IAAI;AAAA,YACR,MAAM,IAAI;AAAA,YACV;AAAA,UAAA;AAAA,QAEJ,SAAS,OAAO;AACd,aAAG,QAAQ,qBAAqB,KAAK;AACrC,gBAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IAAA;AAGH,WAAO,CAAC,eAAe,SAAS;AAAA,EAClC,SAAS,GAAG;AACV,UAAM,UAAU,gBAAgB,CAAC;AACjC,UAAM,UAAU,gBAAgB,CAAC;AAEjC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,QACE,MAAMF;AAAAA,QACN,QAAQC;AAAAA,QACR,QAAQE;AAAAA,QACR;AAAA,QACA;AAAA,QACA,GAAI,UAAU,EAAC,YAAW,CAAA;AAAA,MAAC;AAAA,IAC7B;AAAA,EAEJ;AACF;AAcO,SAAS,uBACd,gBACA,QACA,mBACA,WAAqB,QACrB;AACA,QAAM,KAAK,iBAAiB,QAAQ,EAAE,YAAY,kBAAkB;AACpE,SAAO;AAAA,IACL,CAAC,MAAM,cAAc,eAAe,MAAM,UAAU,CAAC,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zql-database.d.ts","sourceRoot":"","sources":["../../../../zero-server/src/zql-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAE5D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAE3D,OAAO,KAAK,EACV,YAAY,
|
|
1
|
+
{"version":3,"file":"zql-database.d.ts","sourceRoot":"","sources":["../../../../zero-server/src/zql-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAE5D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAE3D,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,UAAU,EACX,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,EACV,QAAQ,EACR,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;GAMG;AACH,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,kBAAkB,CAC3D,YAAW,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;;IAE3D,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC;gBAQ1C,UAAU,EAAE,YAAY,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAOnE,WAAW,CAAC,CAAC,EACX,QAAQ,EAAE,CACR,EAAE,EAAE,eAAe,CAAC,CAAC,EAAE,kBAAkB,CAAC,EAC1C,gBAAgB,EAAE,wBAAwB,KACvC,YAAY,CAAC,CAAC,CAAC,EACpB,gBAAgB,CAAC,EAAE,wBAAwB,GAC1C,OAAO,CAAC,CAAC,CAAC;IAgEb,GAAG,CAAC,MAAM,SAAS,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,OAAO,EACpD,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;CAGnC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { formatPg, sql } from "../../z2s/src/sql.js";
|
|
2
|
-
import { createBuilder } from "../../zql/src/query/
|
|
2
|
+
import { createBuilder } from "../../zql/src/query/create-builder.js";
|
|
3
3
|
import { makeSchemaCRUD, makeServerTransaction } from "./custom.js";
|
|
4
4
|
class ZQLDatabase {
|
|
5
5
|
connection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zql-database.js","sources":["../../../../zero-server/src/zql-database.ts"],"sourcesContent":["import type {MaybePromise} from '../../shared/src/types.ts';\nimport {formatPg, sql} from '../../z2s/src/sql.ts';\nimport type {Schema} from '../../zero-types/src/schema.ts';\nimport type {ServerSchema} from '../../zero-types/src/server-schema.ts';\nimport type {\n DBConnection,\n DBTransaction,\n SchemaCRUD,\n
|
|
1
|
+
{"version":3,"file":"zql-database.js","sources":["../../../../zero-server/src/zql-database.ts"],"sourcesContent":["import type {MaybePromise} from '../../shared/src/types.ts';\nimport {formatPg, sql} from '../../z2s/src/sql.ts';\nimport type {Schema} from '../../zero-types/src/schema.ts';\nimport type {ServerSchema} from '../../zero-types/src/server-schema.ts';\nimport type {\n DBConnection,\n DBTransaction,\n SchemaCRUD,\n} from '../../zql/src/mutate/custom.ts';\nimport {createBuilder} from '../../zql/src/query/create-builder.ts';\nimport type {\n HumanReadable,\n Query,\n RunOptions,\n} from '../../zql/src/query/query.ts';\nimport type {SchemaQuery} from '../../zql/src/query/schema-query.ts';\nimport type {TransactionImpl} from './custom.ts';\nimport {makeSchemaCRUD, makeServerTransaction} from './custom.ts';\nimport type {\n Database,\n TransactionProviderHooks,\n TransactionProviderInput,\n} from './process-mutations.ts';\n\n/**\n * Implements a Database for use with PushProcessor that is backed by Postgres.\n *\n * This implementation also implements the same ZQL interfaces for reading and\n * writing data that the Zero client does, so that mutator functions can be\n * shared across client and server.\n */\nexport class ZQLDatabase<S extends Schema, WrappedTransaction>\n implements Database<TransactionImpl<S, WrappedTransaction>>\n{\n readonly connection: DBConnection<WrappedTransaction>;\n readonly #mutate: (\n dbTransaction: DBTransaction<WrappedTransaction>,\n serverSchema: ServerSchema,\n ) => SchemaCRUD<S>;\n readonly #query: SchemaQuery<S>;\n readonly #schema: S;\n\n constructor(connection: DBConnection<WrappedTransaction>, schema: S) {\n this.connection = connection;\n this.#mutate = makeSchemaCRUD(schema);\n this.#query = createBuilder(schema);\n this.#schema = schema;\n }\n\n transaction<R>(\n callback: (\n tx: TransactionImpl<S, WrappedTransaction>,\n transactionHooks: TransactionProviderHooks,\n ) => MaybePromise<R>,\n transactionInput?: TransactionProviderInput,\n ): Promise<R> {\n // Icky hack. This is just here to have user not have to do this.\n // These interfaces need to be factored better.\n const {\n upstreamSchema = '',\n clientGroupID = '',\n clientID = '',\n mutationID = 0,\n } = transactionInput ?? {};\n return this.connection.transaction(async dbTx => {\n const zeroTx = await this.#makeServerTransaction(\n dbTx,\n clientID,\n mutationID,\n );\n\n return callback(zeroTx, {\n async updateClientMutationID() {\n const formatted = formatPg(\n sql`INSERT INTO ${sql.ident(upstreamSchema)}.clients \n as current (\"clientGroupID\", \"clientID\", \"lastMutationID\")\n VALUES (${clientGroupID}, ${clientID}, ${1})\n ON CONFLICT (\"clientGroupID\", \"clientID\")\n DO UPDATE SET \"lastMutationID\" = current.\"lastMutationID\" + 1\n RETURNING \"lastMutationID\"`,\n );\n\n const [{lastMutationID}] = (await dbTx.query(\n formatted.text,\n formatted.values,\n )) as {lastMutationID: bigint}[];\n\n return {lastMutationID};\n },\n\n async writeMutationResult(result) {\n const formatted = formatPg(\n sql`INSERT INTO ${sql.ident(upstreamSchema)}.mutations\n (\"clientGroupID\", \"clientID\", \"mutationID\", \"result\")\n VALUES (${clientGroupID}, ${result.id.clientID}, ${result.id.id}, ${JSON.stringify(\n result.result,\n )}::text::json)`,\n );\n await dbTx.query(formatted.text, formatted.values);\n },\n });\n });\n }\n\n async #makeServerTransaction(\n dbTx: DBTransaction<WrappedTransaction>,\n clientID: string,\n mutationID: number,\n ) {\n return await makeServerTransaction(\n dbTx,\n clientID,\n mutationID,\n this.#schema,\n this.#mutate,\n this.#query,\n );\n }\n\n run<TTable extends keyof S['tables'] & string, TReturn>(\n query: Query<S, TTable, TReturn>,\n options?: RunOptions,\n ): Promise<HumanReadable<TReturn>> {\n return this.transaction(tx => tx.run(query, options));\n }\n}\n"],"names":[],"mappings":";;;AA+BO,MAAM,YAEb;AAAA,EACW;AAAA,EACA;AAAA,EAIA;AAAA,EACA;AAAA,EAET,YAAY,YAA8C,QAAW;AACnE,SAAK,aAAa;AAClB,SAAK,UAAU,eAAe,MAAM;AACpC,SAAK,SAAS,cAAc,MAAM;AAClC,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,YACE,UAIA,kBACY;AAGZ,UAAM;AAAA,MACJ,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,aAAa;AAAA,IAAA,IACX,oBAAoB,CAAA;AACxB,WAAO,KAAK,WAAW,YAAY,OAAM,SAAQ;AAC/C,YAAM,SAAS,MAAM,KAAK;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAGF,aAAO,SAAS,QAAQ;AAAA,QACtB,MAAM,yBAAyB;AAC7B,gBAAM,YAAY;AAAA,YAChB,kBAAkB,IAAI,MAAM,cAAc,CAAC;AAAA;AAAA,kCAErB,aAAa,KAAK,QAAQ,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,UAAA;AAMxD,gBAAM,CAAC,EAAC,eAAA,CAAe,IAAK,MAAM,KAAK;AAAA,YACrC,UAAU;AAAA,YACV,UAAU;AAAA,UAAA;AAGZ,iBAAO,EAAC,eAAA;AAAA,QACV;AAAA,QAEA,MAAM,oBAAoB,QAAQ;AAChC,gBAAM,YAAY;AAAA,YAChB,kBAAkB,IAAI,MAAM,cAAc,CAAC;AAAA;AAAA,0BAE7B,aAAa,KAAK,OAAO,GAAG,QAAQ,KAAK,OAAO,GAAG,EAAE,KAAK,KAAK;AAAA,cACvE,OAAO;AAAA,YAAA,CACR;AAAA,UAAA;AAEP,gBAAM,KAAK,MAAM,UAAU,MAAM,UAAU,MAAM;AAAA,QACnD;AAAA,MAAA,CACD;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,uBACJ,MACA,UACA,YACA;AACA,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAAA,EAET;AAAA,EAEA,IACE,OACA,SACiC;AACjC,WAAO,KAAK,YAAY,CAAA,OAAM,GAAG,IAAI,OAAO,OAAO,CAAC;AAAA,EACtD;AACF;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Accessor } from 'solid-js';
|
|
2
2
|
import type { QueryResultDetails } from '../../zero-client/src/types/query-result.ts';
|
|
3
3
|
import type { Schema } from '../../zero-types/src/schema.ts';
|
|
4
|
-
import type { HumanReadable,
|
|
4
|
+
import type { HumanReadable, ToQuery } from '../../zql/src/query/query.ts';
|
|
5
5
|
import { type TTL } from '../../zql/src/query/ttl.ts';
|
|
6
6
|
export type QueryResult<TReturn> = readonly [
|
|
7
7
|
Accessor<HumanReadable<TReturn>>,
|
|
@@ -19,6 +19,6 @@ export type UseQueryOptions = {
|
|
|
19
19
|
/**
|
|
20
20
|
* @deprecated Use {@linkcode useQuery} instead.
|
|
21
21
|
*/
|
|
22
|
-
export declare function createQuery<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn>(querySignal: Accessor<
|
|
23
|
-
export declare function useQuery<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn>(querySignal: Accessor<
|
|
22
|
+
export declare function createQuery<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext>(querySignal: Accessor<ToQuery<TSchema, TTable, TReturn, TContext>>, options?: CreateQueryOptions | Accessor<CreateQueryOptions>): QueryResult<TReturn>;
|
|
23
|
+
export declare function useQuery<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext>(querySignal: Accessor<ToQuery<TSchema, TTable, TReturn, TContext>>, options?: UseQueryOptions | Accessor<UseQueryOptions>): QueryResult<TReturn>;
|
|
24
24
|
//# sourceMappingURL=use-query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-query.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-query.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"use-query.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,UAAU,CAAC;AAGlB,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,6CAA6C,CAAC;AACpF,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAC3D,OAAO,KAAK,EAAC,aAAa,EAAE,OAAO,EAAC,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAiB,KAAK,GAAG,EAAC,MAAM,4BAA4B,CAAC;AAIpE,MAAM,MAAM,WAAW,CAAC,OAAO,IAAI,SAAS;IAC1C,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,kBAAkB,GAAG,EAAE,CAAC;CAClC,CAAC;AAGF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;CACvB,CAAC;AAGF;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,SAAS,MAAM,EACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,QAAQ,EAER,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,EAClE,OAAO,CAAC,EAAE,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,GAC1D,WAAW,CAAC,OAAO,CAAC,CAEtB;AAED,wBAAgB,QAAQ,CACtB,OAAO,SAAS,MAAM,EACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,QAAQ,EAER,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,EAClE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC,GACpD,WAAW,CAAC,OAAO,CAAC,CAsDtB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createSignal,
|
|
1
|
+
import { createSignal, createMemo, untrack, onCleanup, createEffect, on } from "solid-js";
|
|
2
2
|
import { createStore } from "solid-js/store";
|
|
3
3
|
import { bindingsForZero } from "../../zero-client/src/client/bindings.js";
|
|
4
4
|
import { DEFAULT_TTL_MS } from "../../zql/src/query/ttl.js";
|
|
@@ -19,45 +19,34 @@ function useQuery(querySignal, options) {
|
|
|
19
19
|
const refetch = () => {
|
|
20
20
|
setRefetchKey((k) => k + 1);
|
|
21
21
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
(
|
|
25
|
-
prevView,
|
|
26
|
-
prevClientID,
|
|
27
|
-
prevQuery,
|
|
28
|
-
prevQueryHash,
|
|
29
|
-
prevTtl,
|
|
30
|
-
prevRefetchKey
|
|
31
|
-
]) => {
|
|
32
|
-
const zero = useZero()();
|
|
33
|
-
const currentRefetchKey = refetchKey();
|
|
34
|
-
const { clientID } = zero;
|
|
35
|
-
const query = querySignal();
|
|
36
|
-
const bindings = bindingsForZero(zero);
|
|
37
|
-
const queryHash = bindings.hash(query);
|
|
38
|
-
const ttl = normalize(options)?.ttl ?? DEFAULT_TTL_MS;
|
|
39
|
-
if (!prevView || clientID !== prevClientID || prevRefetchKey !== currentRefetchKey || query !== prevQuery && (clientID === void 0 || queryHash !== prevQueryHash)) {
|
|
40
|
-
if (prevView) {
|
|
41
|
-
prevView.destroy();
|
|
42
|
-
}
|
|
43
|
-
view = bindings.materialize(
|
|
44
|
-
query,
|
|
45
|
-
createSolidViewFactory(setState, refetch),
|
|
46
|
-
{ ttl }
|
|
47
|
-
);
|
|
48
|
-
} else {
|
|
49
|
-
view = prevView;
|
|
50
|
-
if (ttl !== prevTtl) {
|
|
51
|
-
view.updateTTL(ttl);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return [view, clientID, query, queryHash, ttl, currentRefetchKey];
|
|
55
|
-
},
|
|
56
|
-
[void 0, void 0, void 0, void 0, void 0, initialRefetchKey]
|
|
22
|
+
const zero = useZero();
|
|
23
|
+
const query = createMemo(
|
|
24
|
+
() => querySignal().toQuery(zero().context)
|
|
57
25
|
);
|
|
58
|
-
|
|
59
|
-
|
|
26
|
+
const bindings = createMemo(() => bindingsForZero(zero()));
|
|
27
|
+
const hash = createMemo(() => bindings().hash(query()));
|
|
28
|
+
const ttl = createMemo(() => normalize(options)?.ttl ?? DEFAULT_TTL_MS);
|
|
29
|
+
const initialTTL = ttl();
|
|
30
|
+
const view = createMemo(() => {
|
|
31
|
+
hash();
|
|
32
|
+
refetchKey();
|
|
33
|
+
const b = bindings();
|
|
34
|
+
const q = untrack(query);
|
|
35
|
+
const v = b.materialize(q, createSolidViewFactory(setState, refetch), {
|
|
36
|
+
ttl: initialTTL
|
|
37
|
+
});
|
|
38
|
+
onCleanup(() => v.destroy());
|
|
39
|
+
return v;
|
|
60
40
|
});
|
|
41
|
+
createEffect(
|
|
42
|
+
on(
|
|
43
|
+
ttl,
|
|
44
|
+
(currentTTL) => {
|
|
45
|
+
view().updateTTL(currentTTL);
|
|
46
|
+
},
|
|
47
|
+
{ defer: true }
|
|
48
|
+
)
|
|
49
|
+
);
|
|
61
50
|
return [() => state[0][""], () => state[1]];
|
|
62
51
|
}
|
|
63
52
|
function normalize(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-query.js","sources":["../../../../zero-solid/src/use-query.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"use-query.js","sources":["../../../../zero-solid/src/use-query.ts"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n on,\n onCleanup,\n untrack,\n type Accessor,\n} from 'solid-js';\nimport {createStore} from 'solid-js/store';\nimport {bindingsForZero} from '../../zero-client/src/client/bindings.ts';\nimport type {QueryResultDetails} from '../../zero-client/src/types/query-result.ts';\nimport type {Schema} from '../../zero-types/src/schema.ts';\nimport type {HumanReadable, ToQuery} from '../../zql/src/query/query.ts';\nimport {DEFAULT_TTL_MS, type TTL} from '../../zql/src/query/ttl.ts';\nimport {createSolidViewFactory, UNKNOWN, type State} from './solid-view.ts';\nimport {useZero} from './use-zero.ts';\n\nexport type QueryResult<TReturn> = readonly [\n Accessor<HumanReadable<TReturn>>,\n Accessor<QueryResultDetails & {}>,\n];\n\n// Deprecated in 0.22\n/**\n * @deprecated Use {@linkcode UseQueryOptions} instead.\n */\nexport type CreateQueryOptions = {\n ttl?: TTL | undefined;\n};\n\nexport type UseQueryOptions = {\n ttl?: TTL | undefined;\n};\n\n// Deprecated in 0.22\n/**\n * @deprecated Use {@linkcode useQuery} instead.\n */\nexport function createQuery<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n TContext,\n>(\n querySignal: Accessor<ToQuery<TSchema, TTable, TReturn, TContext>>,\n options?: CreateQueryOptions | Accessor<CreateQueryOptions>,\n): QueryResult<TReturn> {\n return useQuery(querySignal, options);\n}\n\nexport function useQuery<\n TSchema extends Schema,\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n TContext,\n>(\n querySignal: Accessor<ToQuery<TSchema, TTable, TReturn, TContext>>,\n options?: UseQueryOptions | Accessor<UseQueryOptions>,\n): QueryResult<TReturn> {\n const [state, setState] = createStore<State>([\n {\n '': undefined,\n },\n UNKNOWN,\n ]);\n const initialRefetchKey = 0;\n const [refetchKey, setRefetchKey] = createSignal(initialRefetchKey);\n\n const refetch = () => {\n setRefetchKey(k => k + 1);\n };\n\n const zero = useZero();\n\n const query = createMemo(() =>\n querySignal().toQuery(zero().context as TContext),\n );\n const bindings = createMemo(() => bindingsForZero(zero()));\n const hash = createMemo(() => bindings().hash(query()));\n const ttl = createMemo(() => normalize(options)?.ttl ?? DEFAULT_TTL_MS);\n\n const initialTTL = ttl();\n\n const view = createMemo(() => {\n // Depend on hash instead of query to avoid recreating the view when the\n // query object changes but the hash is the same.\n hash();\n refetchKey();\n const b = bindings();\n const q = untrack(query);\n\n const v = b.materialize(q, createSolidViewFactory(setState, refetch), {\n ttl: initialTTL,\n });\n\n onCleanup(() => v.destroy());\n\n return v;\n });\n\n // Update TTL on existing view when it changes.\n createEffect(\n on(\n ttl,\n currentTTL => {\n view().updateTTL(currentTTL);\n },\n {defer: true},\n ),\n );\n\n return [() => state[0][''] as HumanReadable<TReturn>, () => state[1]];\n}\n\nfunction normalize<T>(options?: T | Accessor<T | undefined>): T | undefined {\n return typeof options === 'function' ? (options as Accessor<T>)() : options;\n}\n"],"names":[],"mappings":";;;;;;AAuCO,SAAS,YAMd,aACA,SACsB;AACtB,SAAO,SAAS,aAAa,OAAO;AACtC;AAEO,SAAS,SAMd,aACA,SACsB;AACtB,QAAM,CAAC,OAAO,QAAQ,IAAI,YAAmB;AAAA,IAC3C;AAAA,MACE,IAAI;AAAA,IAAA;AAAA,IAEN;AAAA,EAAA,CACD;AACD,QAAM,oBAAoB;AAC1B,QAAM,CAAC,YAAY,aAAa,IAAI,aAAa,iBAAiB;AAElE,QAAM,UAAU,MAAM;AACpB,kBAAc,CAAA,MAAK,IAAI,CAAC;AAAA,EAC1B;AAEA,QAAM,OAAO,QAAA;AAEb,QAAM,QAAQ;AAAA,IAAW,MACvB,YAAA,EAAc,QAAQ,KAAA,EAAO,OAAmB;AAAA,EAAA;AAElD,QAAM,WAAW,WAAW,MAAM,gBAAgB,KAAA,CAAM,CAAC;AACzD,QAAM,OAAO,WAAW,MAAM,SAAA,EAAW,KAAK,MAAA,CAAO,CAAC;AACtD,QAAM,MAAM,WAAW,MAAM,UAAU,OAAO,GAAG,OAAO,cAAc;AAEtE,QAAM,aAAa,IAAA;AAEnB,QAAM,OAAO,WAAW,MAAM;AAG5B,SAAA;AACA,eAAA;AACA,UAAM,IAAI,SAAA;AACV,UAAM,IAAI,QAAQ,KAAK;AAEvB,UAAM,IAAI,EAAE,YAAY,GAAG,uBAAuB,UAAU,OAAO,GAAG;AAAA,MACpE,KAAK;AAAA,IAAA,CACN;AAED,cAAU,MAAM,EAAE,SAAS;AAE3B,WAAO;AAAA,EACT,CAAC;AAGD;AAAA,IACE;AAAA,MACE;AAAA,MACA,CAAA,eAAc;AACZ,aAAA,EAAO,UAAU,UAAU;AAAA,MAC7B;AAAA,MACA,EAAC,OAAO,KAAA;AAAA,IAAI;AAAA,EACd;AAGF,SAAO,CAAC,MAAM,MAAM,CAAC,EAAE,EAAE,GAA6B,MAAM,MAAM,CAAC,CAAC;AACtE;AAEA,SAAS,UAAa,SAAsD;AAC1E,SAAO,OAAO,YAAY,aAAc,QAAA,IAA4B;AACtE;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-zero-connection-state.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-zero-connection-state.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"use-zero-connection-state.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-zero-connection-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,QAAQ,EAAC,MAAM,UAAU,CAAC;AAC9E,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,4CAA4C,CAAC;AAGhF;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,QAAQ,CAAC,eAAe,CAAC,CAclE"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { createSignal, onCleanup } from "solid-js";
|
|
1
|
+
import { createSignal, createEffect, onCleanup } from "solid-js";
|
|
2
2
|
import { useZero } from "./use-zero.js";
|
|
3
3
|
function useZeroConnectionState() {
|
|
4
|
-
const zero = useZero()
|
|
4
|
+
const zero = useZero();
|
|
5
5
|
const [connectionState, setConnectionState] = createSignal(
|
|
6
|
-
zero.connection.state.current
|
|
6
|
+
zero().connection.state.current
|
|
7
7
|
);
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
createEffect(() => {
|
|
9
|
+
const unsubscribe = zero().connection.state.subscribe(setConnectionState);
|
|
10
|
+
onCleanup(unsubscribe);
|
|
11
|
+
});
|
|
10
12
|
return connectionState;
|
|
11
13
|
}
|
|
12
14
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-zero-connection-state.js","sources":["../../../../zero-solid/src/use-zero-connection-state.ts"],"sourcesContent":["import {createSignal, onCleanup, type Accessor} from 'solid-js';\nimport type {ConnectionState} from '../../zero-client/src/client/connection.ts';\nimport {useZero} from './use-zero.ts';\n\n/**\n * Tracks the connection status of the current 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(): Accessor<ConnectionState> {\n const zero = useZero()
|
|
1
|
+
{"version":3,"file":"use-zero-connection-state.js","sources":["../../../../zero-solid/src/use-zero-connection-state.ts"],"sourcesContent":["import {createEffect, createSignal, onCleanup, type Accessor} from 'solid-js';\nimport type {ConnectionState} from '../../zero-client/src/client/connection.ts';\nimport {useZero} from './use-zero.ts';\n\n/**\n * Tracks the connection status of the current 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(): Accessor<ConnectionState> {\n const zero = useZero();\n\n const [connectionState, setConnectionState] = createSignal<ConnectionState>(\n zero().connection.state.current,\n );\n\n createEffect(() => {\n const unsubscribe = zero().connection.state.subscribe(setConnectionState);\n\n onCleanup(unsubscribe);\n });\n\n return connectionState;\n}\n"],"names":[],"mappings":";;AAUO,SAAS,yBAAoD;AAClE,QAAM,OAAO,QAAA;AAEb,QAAM,CAAC,iBAAiB,kBAAkB,IAAI;AAAA,IAC5C,KAAA,EAAO,WAAW,MAAM;AAAA,EAAA;AAG1B,eAAa,MAAM;AACjB,UAAM,cAAc,KAAA,EAAO,WAAW,MAAM,UAAU,kBAAkB;AAExE,cAAU,WAAW;AAAA,EACvB,CAAC;AAED,SAAO;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-zero-online.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-zero-online.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"use-zero-online.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-zero-online.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,QAAQ,EAAC,MAAM,UAAU,CAAC;AAG9E;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAAC,OAAO,CAAC,CAYjD"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { createSignal, onCleanup } from "solid-js";
|
|
1
|
+
import { createSignal, createEffect, onCleanup } from "solid-js";
|
|
2
2
|
import { useZero } from "./use-zero.js";
|
|
3
3
|
function useZeroOnline() {
|
|
4
|
-
const zero = useZero()
|
|
5
|
-
const [online, setOnline] = createSignal(zero.online);
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const zero = useZero();
|
|
5
|
+
const [online, setOnline] = createSignal(zero().online);
|
|
6
|
+
createEffect(() => {
|
|
7
|
+
const unsubscribe = zero().onOnline(setOnline);
|
|
8
|
+
onCleanup(unsubscribe);
|
|
9
|
+
});
|
|
8
10
|
return online;
|
|
9
11
|
}
|
|
10
12
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-zero-online.js","sources":["../../../../zero-solid/src/use-zero-online.ts"],"sourcesContent":["import {createSignal, onCleanup, type Accessor} from 'solid-js';\nimport {useZero} from './use-zero.ts';\n\n/**\n * Tracks the online status of the current Zero instance.\n *\n * @returns An accessor — call `online()` to get a reactive `boolean`.\n * @deprecated Use {@linkcode useZeroConnectionState} instead, which provides more detailed connection state.\n */\nexport function useZeroOnline(): Accessor<boolean> {\n const zero = useZero()
|
|
1
|
+
{"version":3,"file":"use-zero-online.js","sources":["../../../../zero-solid/src/use-zero-online.ts"],"sourcesContent":["import {createEffect, createSignal, onCleanup, type Accessor} from 'solid-js';\nimport {useZero} from './use-zero.ts';\n\n/**\n * Tracks the online status of the current Zero instance.\n *\n * @returns An accessor — call `online()` to get a reactive `boolean`.\n * @deprecated Use {@linkcode useZeroConnectionState} instead, which provides more detailed connection state.\n */\nexport function useZeroOnline(): Accessor<boolean> {\n const zero = useZero();\n\n const [online, setOnline] = createSignal<boolean>(zero().online);\n\n createEffect(() => {\n const unsubscribe = zero().onOnline(setOnline);\n\n onCleanup(unsubscribe);\n });\n\n return online;\n}\n"],"names":[],"mappings":";;AASO,SAAS,gBAAmC;AACjD,QAAM,OAAO,QAAA;AAEb,QAAM,CAAC,QAAQ,SAAS,IAAI,aAAsB,KAAA,EAAO,MAAM;AAE/D,eAAa,MAAM;AACjB,UAAM,cAAc,OAAO,SAAS,SAAS;AAE7C,cAAU,WAAW;AAAA,EACvB,CAAC;AAED,SAAO;AACT;"}
|
|
@@ -3,12 +3,13 @@ import type { CustomMutatorDefs } from '../../zero-client/src/client/custom.ts';
|
|
|
3
3
|
import type { ZeroOptions } from '../../zero-client/src/client/options.ts';
|
|
4
4
|
import { Zero } from '../../zero-client/src/client/zero.ts';
|
|
5
5
|
import type { Schema } from '../../zero-types/src/schema.ts';
|
|
6
|
-
|
|
7
|
-
export declare function
|
|
8
|
-
export declare function
|
|
9
|
-
export declare function
|
|
6
|
+
import type { AnyMutatorRegistry } from '../../zql/src/mutate/mutator-registry.ts';
|
|
7
|
+
export declare function createZero<S extends Schema, MD extends AnyMutatorRegistry | CustomMutatorDefs | undefined = undefined, Context = unknown>(options: ZeroOptions<S, MD, Context>): Zero<S, MD, Context>;
|
|
8
|
+
export declare function useZero<S extends Schema, MD extends AnyMutatorRegistry | CustomMutatorDefs | undefined = undefined, Context = unknown>(): () => Zero<S, MD, Context>;
|
|
9
|
+
export declare function createUseZero<S extends Schema, MD extends AnyMutatorRegistry | CustomMutatorDefs | undefined = undefined, Context = unknown>(): () => () => Zero<S, MD, Context>;
|
|
10
|
+
export declare function ZeroProvider<S extends Schema, MD extends AnyMutatorRegistry | CustomMutatorDefs | undefined, Context>(props: {
|
|
10
11
|
children: JSX.Element;
|
|
11
|
-
init?: (zero: Zero<S, MD>) => void;
|
|
12
|
+
init?: (zero: Zero<S, MD, Context>) => void;
|
|
12
13
|
} & ({
|
|
13
14
|
zero: Zero<S, MD, Context>;
|
|
14
15
|
} | ZeroOptions<S, MD, Context>)): JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-zero.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-zero.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,GAAG,EACT,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,wCAAwC,CAAC;AAC9E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAC,IAAI,EAAC,MAAM,sCAAsC,CAAC;AAC1D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"use-zero.d.ts","sourceRoot":"","sources":["../../../../zero-solid/src/use-zero.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,GAAG,EACT,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,wCAAwC,CAAC;AAC9E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAC,IAAI,EAAC,MAAM,sCAAsC,CAAC;AAC1D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAC3D,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,0CAA0C,CAAC;AASjF,wBAAgB,UAAU,CACxB,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,EACzE,OAAO,GAAG,OAAO,EACjB,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAM5D;AAED,wBAAgB,OAAO,CACrB,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,EACzE,OAAO,GAAG,OAAO,KACd,MAAM,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAO9B;AAED,wBAAgB,aAAa,CAC3B,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,EACzE,OAAO,GAAG,OAAO,sCAGlB;AAED,wBAAgB,YAAY,CAC1B,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,EAC7D,OAAO,EAEP,KAAK,EAAE;IACL,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC7C,GAAG,CACA;IACE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;CAC5B,GACD,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAC9B,eAsDF"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { createContext, batch, useContext, createMemo, splitProps, untrack, onCleanup, createEffect } from "solid-js";
|
|
2
2
|
import { Zero } from "../../zero-client/src/client/zero.js";
|
|
3
|
-
const ZeroContext = createContext(
|
|
4
|
-
void 0
|
|
5
|
-
);
|
|
3
|
+
const ZeroContext = createContext(void 0);
|
|
6
4
|
const NO_AUTH_SET = Symbol();
|
|
7
5
|
function createZero(options) {
|
|
8
6
|
const opts = {
|
|
@@ -37,9 +35,7 @@ function ZeroProvider(props) {
|
|
|
37
35
|
onCleanup(() => createdZero.close());
|
|
38
36
|
return createdZero;
|
|
39
37
|
});
|
|
40
|
-
const auth = createMemo(
|
|
41
|
-
() => "auth" in props ? props.auth : NO_AUTH_SET
|
|
42
|
-
);
|
|
38
|
+
const auth = createMemo(() => "auth" in props ? props.auth : NO_AUTH_SET);
|
|
43
39
|
let prevAuth = NO_AUTH_SET;
|
|
44
40
|
createEffect(() => {
|
|
45
41
|
const currentZero = zero();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-zero.js","sources":["../../../../zero-solid/src/use-zero.ts"],"sourcesContent":["import {\n batch,\n createContext,\n createEffect,\n createMemo,\n onCleanup,\n splitProps,\n untrack,\n useContext,\n type Accessor,\n type JSX,\n} from 'solid-js';\nimport type {CustomMutatorDefs} from '../../zero-client/src/client/custom.ts';\nimport type {ZeroOptions} from '../../zero-client/src/client/options.ts';\nimport {Zero} from '../../zero-client/src/client/zero.ts';\nimport type {Schema} from '../../zero-types/src/schema.ts';\n\n// oxlint-disable-next-line no-explicit-any\
|
|
1
|
+
{"version":3,"file":"use-zero.js","sources":["../../../../zero-solid/src/use-zero.ts"],"sourcesContent":["import {\n batch,\n createContext,\n createEffect,\n createMemo,\n onCleanup,\n splitProps,\n untrack,\n useContext,\n type Accessor,\n type JSX,\n} from 'solid-js';\nimport type {CustomMutatorDefs} from '../../zero-client/src/client/custom.ts';\nimport type {ZeroOptions} from '../../zero-client/src/client/options.ts';\nimport {Zero} from '../../zero-client/src/client/zero.ts';\nimport type {Schema} from '../../zero-types/src/schema.ts';\nimport type {AnyMutatorRegistry} from '../../zql/src/mutate/mutator-registry.ts';\n\nconst ZeroContext = createContext<\n // oxlint-disable-next-line no-explicit-any\n Accessor<Zero<any, any, any>> | undefined\n>(undefined);\n\nconst NO_AUTH_SET = Symbol();\n\nexport function createZero<\n S extends Schema,\n MD extends AnyMutatorRegistry | CustomMutatorDefs | undefined = undefined,\n Context = unknown,\n>(options: ZeroOptions<S, MD, Context>): Zero<S, MD, Context> {\n const opts = {\n ...options,\n batchViewUpdates: batch,\n };\n return new Zero(opts);\n}\n\nexport function useZero<\n S extends Schema,\n MD extends AnyMutatorRegistry | CustomMutatorDefs | undefined = undefined,\n Context = unknown,\n>(): () => Zero<S, MD, Context> {\n const zero = useContext(ZeroContext);\n\n if (zero === undefined) {\n throw new Error('useZero must be used within a ZeroProvider');\n }\n return zero;\n}\n\nexport function createUseZero<\n S extends Schema,\n MD extends AnyMutatorRegistry | CustomMutatorDefs | undefined = undefined,\n Context = unknown,\n>() {\n return () => useZero<S, MD, Context>();\n}\n\nexport function ZeroProvider<\n S extends Schema,\n MD extends AnyMutatorRegistry | CustomMutatorDefs | undefined,\n Context,\n>(\n props: {\n children: JSX.Element;\n init?: (zero: Zero<S, MD, Context>) => void;\n } & (\n | {\n zero: Zero<S, MD, Context>;\n }\n | ZeroOptions<S, MD, Context>\n ),\n) {\n const zero = createMemo(() => {\n if ('zero' in props) {\n return props.zero;\n }\n\n const [, options] = splitProps(props, ['children', 'auth']);\n\n const authValue = untrack(() => props.auth);\n const createdZero = new Zero({\n ...options,\n ...(authValue !== undefined ? {auth: authValue} : {}),\n batchViewUpdates: batch,\n });\n options.init?.(createdZero);\n onCleanup(() => createdZero.close());\n return createdZero;\n });\n\n const auth = createMemo<\n typeof NO_AUTH_SET | ZeroOptions<S, MD, Context>['auth']\n >(() => ('auth' in props ? props.auth : NO_AUTH_SET));\n\n let prevAuth: typeof NO_AUTH_SET | ZeroOptions<S, MD, Context>['auth'] =\n NO_AUTH_SET;\n\n createEffect(() => {\n const currentZero = zero();\n if (!currentZero) {\n return;\n }\n\n const currentAuth = auth();\n\n if (prevAuth === NO_AUTH_SET) {\n prevAuth = currentAuth;\n return;\n }\n\n if (currentAuth !== prevAuth) {\n prevAuth = currentAuth;\n void currentZero.connection.connect({\n auth: currentAuth === NO_AUTH_SET ? undefined : currentAuth,\n });\n }\n });\n\n return ZeroContext.Provider({\n value: zero,\n get children() {\n return props.children;\n },\n });\n}\n"],"names":[],"mappings":";;AAkBA,MAAM,cAAc,cAGlB,MAAS;AAEX,MAAM,cAAc,OAAA;AAEb,SAAS,WAId,SAA4D;AAC5D,QAAM,OAAO;AAAA,IACX,GAAG;AAAA,IACH,kBAAkB;AAAA,EAAA;AAEpB,SAAO,IAAI,KAAK,IAAI;AACtB;AAEO,SAAS,UAIgB;AAC9B,QAAM,OAAO,WAAW,WAAW;AAEnC,MAAI,SAAS,QAAW;AACtB,UAAM,IAAI,MAAM,4CAA4C;AAAA,EAC9D;AACA,SAAO;AACT;AAEO,SAAS,gBAIZ;AACF,SAAO,MAAM,QAAA;AACf;AAEO,SAAS,aAKd,OASA;AACA,QAAM,OAAO,WAAW,MAAM;AAC5B,QAAI,UAAU,OAAO;AACnB,aAAO,MAAM;AAAA,IACf;AAEA,UAAM,CAAA,EAAG,OAAO,IAAI,WAAW,OAAO,CAAC,YAAY,MAAM,CAAC;AAE1D,UAAM,YAAY,QAAQ,MAAM,MAAM,IAAI;AAC1C,UAAM,cAAc,IAAI,KAAK;AAAA,MAC3B,GAAG;AAAA,MACH,GAAI,cAAc,SAAY,EAAC,MAAM,UAAA,IAAa,CAAA;AAAA,MAClD,kBAAkB;AAAA,IAAA,CACnB;AACD,YAAQ,OAAO,WAAW;AAC1B,cAAU,MAAM,YAAY,OAAO;AACnC,WAAO;AAAA,EACT,CAAC;AAED,QAAM,OAAO,WAEX,MAAO,UAAU,QAAQ,MAAM,OAAO,WAAY;AAEpD,MAAI,WACF;AAEF,eAAa,MAAM;AACjB,UAAM,cAAc,KAAA;AACpB,QAAI,CAAC,aAAa;AAChB;AAAA,IACF;AAEA,UAAM,cAAc,KAAA;AAEpB,QAAI,aAAa,aAAa;AAC5B,iBAAW;AACX;AAAA,IACF;AAEA,QAAI,gBAAgB,UAAU;AAC5B,iBAAW;AACX,WAAK,YAAY,WAAW,QAAQ;AAAA,QAClC,MAAM,gBAAgB,cAAc,SAAY;AAAA,MAAA,CACjD;AAAA,IACH;AAAA,EACF,CAAC;AAED,SAAO,YAAY,SAAS;AAAA,IAC1B,OAAO;AAAA,IACP,IAAI,WAAW;AACb,aAAO,MAAM;AAAA,IACf;AAAA,EAAA,CACD;AACH;"}
|
|
@@ -7,6 +7,7 @@ import { type FilterInput } from '../ivm/filter-operators.ts';
|
|
|
7
7
|
import type { Input, InputBase, Storage } from '../ivm/operator.ts';
|
|
8
8
|
import type { Source, SourceInput } from '../ivm/source.ts';
|
|
9
9
|
import type { ConnectionCostModel } from '../planner/planner-connection.ts';
|
|
10
|
+
import type { PlanDebugger } from '../planner/planner-debug.ts';
|
|
10
11
|
import type { DebugDelegate } from './debug-delegate.ts';
|
|
11
12
|
import { type NoSubqueryCondition } from './filter.ts';
|
|
12
13
|
export type StaticQueryParameters = {
|
|
@@ -79,7 +80,7 @@ export interface BuilderDelegate {
|
|
|
79
80
|
* const sink = new MySink(input);
|
|
80
81
|
* ```
|
|
81
82
|
*/
|
|
82
|
-
export declare function buildPipeline(ast: AST, delegate: BuilderDelegate, queryID: string, costModel?: ConnectionCostModel, lc?: LogContext): Input;
|
|
83
|
+
export declare function buildPipeline(ast: AST, delegate: BuilderDelegate, queryID: string, costModel?: ConnectionCostModel, lc?: LogContext, planDebugger?: PlanDebugger): Input;
|
|
83
84
|
export declare function bindStaticParameters(ast: AST, staticQueryParameters: StaticQueryParameters | undefined): AST;
|
|
84
85
|
/**
|
|
85
86
|
* Checks if a condition tree contains any NOT EXISTS operations.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/builder/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAG3D,OAAO,KAAK,EACV,GAAG,EAGH,SAAS,EAIT,WAAW,EAEX,QAAQ,EAIT,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,oCAAoC,CAAC;AAC5D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,2CAA2C,CAAC;AAI1E,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAK1D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAC;AAE1E,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAkB,KAAK,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAEtE,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClD,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAElC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAE/C;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEjD;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAEjD,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAElD,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAEnE,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAEhE;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,mBAAmB,EAC/B,EAAE,CAAC,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/builder/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAG3D,OAAO,KAAK,EACV,GAAG,EAGH,SAAS,EAIT,WAAW,EAEX,QAAQ,EAIT,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,oCAAoC,CAAC;AAC5D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,2CAA2C,CAAC;AAI1E,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,KAAK,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAK1D,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAC;AAE1E,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAkB,KAAK,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAEtE,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClD,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAElC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAE/C;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEjD;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAEjD,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAElD,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAEnE,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAEhE;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,mBAAmB,EAC/B,EAAE,CAAC,EAAE,UAAU,EACf,YAAY,CAAC,EAAE,YAAY,GAC1B,KAAK,CAsBP;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,OAqDzD;AAyBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAsB5D;AA+PD,wBAAgB,OAAO,CACrB,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,WAAW,EACtB,QAAQ,EAAE,eAAe,EACzB,IAAI,EAAE,MAAM,GACX,WAAW,CAsCb;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,WAAW,6EAa7D;AAED,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,GACnB,SAAS,IAAI,mBAAmB,CAQlC;AAqHD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,UAAU,GACb,IAAI,CAgBN;AA8CD,wBAAgB,0CAA0C,CACxD,IAAI,EAAE,SAAS,GACd,OAAO,CAUT;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,OAAO,uCAYrC"}
|
|
@@ -15,7 +15,7 @@ import { UnionFanOut } from "../ivm/union-fan-out.js";
|
|
|
15
15
|
import { planQuery } from "../planner/planner-builder.js";
|
|
16
16
|
import { completeOrdering } from "../query/complete-ordering.js";
|
|
17
17
|
import { createPredicate } from "./filter.js";
|
|
18
|
-
function buildPipeline(ast, delegate, queryID, costModel, lc) {
|
|
18
|
+
function buildPipeline(ast, delegate, queryID, costModel, lc, planDebugger) {
|
|
19
19
|
ast = delegate.mapAst ? delegate.mapAst(ast) : ast;
|
|
20
20
|
ast = completeOrdering(
|
|
21
21
|
ast,
|
|
@@ -23,10 +23,11 @@ function buildPipeline(ast, delegate, queryID, costModel, lc) {
|
|
|
23
23
|
);
|
|
24
24
|
if (costModel) {
|
|
25
25
|
try {
|
|
26
|
-
ast = planQuery(ast, costModel);
|
|
26
|
+
ast = planQuery(ast, costModel, planDebugger);
|
|
27
27
|
} catch (e) {
|
|
28
28
|
if (e instanceof PlannerException) {
|
|
29
|
-
`Query planner failed (${e.kind}), falling back to unoptimized query: ${e.message}`;
|
|
29
|
+
const message = `Query planner failed (${e.kind}), falling back to unoptimized query: ${e.message}`;
|
|
30
|
+
lc?.warn?.(message);
|
|
30
31
|
} else {
|
|
31
32
|
throw e;
|
|
32
33
|
}
|