@rocicorp/zero 0.25.0-canary.2 → 0.25.0-canary.4
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/analyze-query/src/bin-analyze.js +27 -38
- package/out/analyze-query/src/bin-analyze.js.map +1 -1
- package/out/ast-to-zql/src/bin.js.map +1 -1
- package/out/chunk-3KJ5OEIB.js +495 -0
- package/out/chunk-3KJ5OEIB.js.map +7 -0
- package/out/{chunk-COKJ5W7V.js → chunk-HE4M4K7Q.js} +10111 -9594
- package/out/chunk-HE4M4K7Q.js.map +7 -0
- package/out/{chunk-TJFNGO7E.js → chunk-TAUDS4QP.js} +10 -7
- package/out/{chunk-TJFNGO7E.js.map → chunk-TAUDS4QP.js.map} +2 -2
- package/out/{inspector-IU2HG74I.js → inspector-GP3CBZRU.js} +1 -1
- package/out/inspector-GP3CBZRU.js.map +7 -0
- package/out/{lazy-inspector-OXIFYSSQ.js → lazy-inspector-XLKVABX2.js} +5 -4
- package/out/lazy-inspector-XLKVABX2.js.map +7 -0
- package/out/react.js +20 -25
- package/out/react.js.map +2 -2
- package/out/replicache/src/replicache-impl.d.ts.map +1 -1
- package/out/replicache/src/replicache-options.d.ts +3 -2
- package/out/replicache/src/replicache-options.d.ts.map +1 -1
- package/out/shared/src/error.js +5 -5
- package/out/shared/src/error.js.map +1 -1
- package/out/solid.js +9 -7
- package/out/solid.js.map +2 -2
- package/out/z2s/src/compiler.d.ts +2 -2
- package/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/z2s/src/sql.d.ts +1 -1
- package/out/z2s/src/sql.d.ts.map +1 -1
- package/out/zero/package.json +3 -2
- package/out/zero-cache/src/auth/load-permissions.d.ts +1 -1
- package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +36 -12
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
- package/out/zero-cache/src/custom/fetch.js +5 -4
- package/out/zero-cache/src/custom/fetch.js.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.d.ts +3 -3
- package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.js +6 -7
- package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.d.ts +10 -0
- package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.js +16 -2
- package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
- package/out/zero-cache/src/scripts/permissions.d.ts +1 -1
- package/out/zero-cache/src/scripts/permissions.d.ts.map +1 -1
- package/out/zero-cache/src/scripts/permissions.js +2 -2
- package/out/zero-cache/src/scripts/permissions.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +7 -10
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/services/analyze.d.ts +2 -6
- package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
- package/out/zero-cache/src/services/analyze.js +4 -3
- package/out/zero-cache/src/services/analyze.js.map +1 -1
- package/out/zero-cache/src/services/change-source/column-metadata.d.ts +10 -3
- package/out/zero-cache/src/services/change-source/column-metadata.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/column-metadata.js +26 -13
- package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +2 -3
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +15 -15
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
- package/out/zero-cache/src/services/change-source/replica-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/replica-schema.js +13 -0
- package/out/zero-cache/src/services/change-source/replica-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts +16 -0
- package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-streamer/replica-monitor.js +52 -0
- package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -0
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +15 -1
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -2
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js +16 -11
- package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts +2 -0
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +7 -8
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js +33 -0
- package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
- package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
- package/out/zero-cache/src/services/run-ast.js +1 -0
- package/out/zero-cache/src/services/run-ast.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +41 -14
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +5 -4
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +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 +81 -2
- 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 +24 -2
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js +4 -2
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.js +25 -0
- package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
- 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 +30 -5
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
- package/out/zero-cache/src/types/error-with-level.js +8 -3
- package/out/zero-cache/src/types/error-with-level.js.map +1 -1
- package/out/zero-client/src/client/bindings.d.ts +42 -0
- package/out/zero-client/src/client/bindings.d.ts.map +1 -0
- package/out/zero-client/src/client/client-error-kind-enum.d.ts +12 -12
- package/out/zero-client/src/client/client-error-kind-enum.d.ts.map +1 -1
- package/out/zero-client/src/client/connection-manager.d.ts +8 -9
- package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/context.d.ts +12 -10
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/crud.d.ts +1 -1
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.d.ts +39 -16
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/error.d.ts +23 -11
- package/out/zero-client/src/client/error.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/html-dialog-prompt.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/inspector.d.ts +3 -2
- package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +4 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.d.ts +10 -2
- package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
- package/out/zero-client/src/client/mutator-proxy.d.ts +16 -0
- package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -0
- package/out/zero-client/src/client/options.d.ts +37 -7
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/query-manager.d.ts +9 -2
- package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-log-context.d.ts +3 -3
- package/out/zero-client/src/client/zero-log-context.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-rep.d.ts +5 -4
- package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +88 -18
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/mod.d.ts +14 -9
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-client/src/types/query-result.d.ts +5 -4
- package/out/zero-client/src/types/query-result.d.ts.map +1 -1
- package/out/zero-protocol/src/analyze-query-result.d.ts +1 -0
- package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
- package/out/zero-protocol/src/analyze-query-result.js +1 -0
- package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
- package/out/zero-protocol/src/application-error.d.ts +2 -8
- package/out/zero-protocol/src/application-error.d.ts.map +1 -1
- package/out/zero-protocol/src/application-error.js +3 -0
- package/out/zero-protocol/src/application-error.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +1 -0
- package/out/zero-protocol/src/down.d.ts.map +1 -1
- package/out/zero-protocol/src/inspect-down.d.ts +3 -0
- package/out/zero-protocol/src/inspect-down.d.ts.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 +2 -1
- package/out/zero-protocol/src/protocol-version.js.map +1 -1
- package/out/zero-react/src/components/inspector.d.ts +1 -1
- package/out/zero-react/src/components/inspector.d.ts.map +1 -1
- package/out/zero-react/src/components/zero-inspector.d.ts +1 -1
- package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
- package/out/zero-react/src/mod.d.ts +1 -1
- package/out/zero-react/src/mod.d.ts.map +1 -1
- package/out/zero-react/src/use-query.d.ts +7 -6
- package/out/zero-react/src/use-query.d.ts.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-schema/src/builder/schema-builder.d.ts +1 -3
- package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
- package/out/zero-schema/src/permissions.d.ts +1 -1
- package/out/zero-schema/src/permissions.d.ts.map +1 -1
- package/out/zero-schema/src/schema-config.d.ts +1 -1
- package/out/zero-schema/src/schema-config.d.ts.map +1 -1
- package/out/zero-server/src/adapters/drizzle.d.ts +2 -2
- package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
- package/out/zero-server/src/adapters/drizzle.js +4 -0
- package/out/zero-server/src/adapters/drizzle.js.map +1 -1
- package/out/zero-server/src/adapters/pg.d.ts +8 -3
- package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
- package/out/zero-server/src/adapters/pg.js +4 -0
- package/out/zero-server/src/adapters/pg.js.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.d.ts +8 -3
- package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.js +4 -0
- package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
- package/out/zero-server/src/custom.d.ts +11 -8
- package/out/zero-server/src/custom.d.ts.map +1 -1
- package/out/zero-server/src/custom.js +15 -3
- 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/mod.js +0 -1
- package/out/zero-server/src/mod.js.map +1 -1
- package/out/zero-server/src/pg-query-executor.d.ts +11 -0
- package/out/zero-server/src/pg-query-executor.d.ts.map +1 -0
- package/out/zero-server/src/pg-query-executor.js +17 -0
- package/out/zero-server/src/pg-query-executor.js.map +1 -0
- package/out/zero-server/src/process-mutations.d.ts +2 -1
- package/out/zero-server/src/process-mutations.d.ts.map +1 -1
- package/out/zero-server/src/process-mutations.js +1 -1
- package/out/zero-server/src/process-mutations.js.map +1 -1
- package/out/zero-server/src/queries/process-queries.d.ts +4 -4
- package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
- package/out/zero-server/src/queries/process-queries.js +5 -3
- package/out/zero-server/src/queries/process-queries.js.map +1 -1
- package/out/zero-server/src/schema.d.ts +2 -2
- package/out/zero-server/src/schema.d.ts.map +1 -1
- package/out/zero-server/src/schema.js.map +1 -1
- package/out/zero-server/src/zql-database.d.ts +6 -3
- package/out/zero-server/src/zql-database.d.ts.map +1 -1
- package/out/zero-server/src/zql-database.js +17 -19
- package/out/zero-server/src/zql-database.js.map +1 -1
- package/out/zero-solid/src/solid-view.d.ts +1 -1
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/zero-solid/src/use-query.d.ts +4 -4
- package/out/zero-solid/src/use-query.d.ts.map +1 -1
- package/out/zero-solid/src/use-zero.d.ts +7 -7
- package/out/zero-solid/src/use-zero.d.ts.map +1 -1
- package/out/zero-types/src/server-schema.d.ts.map +1 -0
- package/out/zero-types/src/server-schema.js.map +1 -0
- package/out/zero.js +25 -11
- package/out/zql/src/builder/builder.d.ts +6 -0
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +1 -1
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/builder/debug-delegate.d.ts +4 -0
- package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
- package/out/zql/src/builder/debug-delegate.js +17 -0
- package/out/zql/src/builder/debug-delegate.js.map +1 -1
- package/out/zql/src/ivm/view.d.ts +3 -2
- package/out/zql/src/ivm/view.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.d.ts +13 -8
- package/out/zql/src/mutate/custom.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.js.map +1 -1
- package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
- package/out/zql/src/planner/planner-builder.js +27 -2
- package/out/zql/src/planner/planner-builder.js.map +1 -1
- package/out/zql/src/planner/planner-graph.js +1 -1
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/planner/planner-join.d.ts +1 -1
- package/out/zql/src/planner/planner-join.d.ts.map +1 -1
- package/out/zql/src/planner/planner-join.js +9 -5
- package/out/zql/src/planner/planner-join.js.map +1 -1
- package/out/zql/src/query/chained-query.d.ts +35 -0
- package/out/zql/src/query/chained-query.d.ts.map +1 -0
- package/out/zql/src/query/chained-query.js +66 -0
- package/out/zql/src/query/chained-query.js.map +1 -0
- package/out/zql/src/query/define-query.d.ts +51 -0
- package/out/zql/src/query/define-query.d.ts.map +1 -0
- package/out/zql/src/query/define-query.js +53 -0
- package/out/zql/src/query/define-query.js.map +1 -0
- package/out/zql/src/query/named.d.ts +18 -7
- package/out/zql/src/query/named.d.ts.map +1 -1
- package/out/zql/src/query/named.js +38 -20
- package/out/zql/src/query/named.js.map +1 -1
- package/out/zql/src/query/query-delegate-base.d.ts +122 -0
- package/out/zql/src/query/query-delegate-base.d.ts.map +1 -0
- package/out/zql/src/query/query-delegate-base.js +136 -0
- package/out/zql/src/query/query-delegate-base.js.map +1 -0
- package/out/zql/src/query/query-delegate.d.ts +29 -4
- package/out/zql/src/query/query-delegate.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +27 -48
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +155 -175
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-internals.d.ts +70 -0
- package/out/zql/src/query/query-internals.d.ts.map +1 -0
- package/out/zql/src/query/query-internals.js +21 -0
- package/out/zql/src/query/query-internals.js.map +1 -0
- package/out/zql/src/query/query.d.ts +26 -243
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/query.js +0 -1
- package/out/zql/src/query/query.js.map +1 -1
- package/out/zql/src/query/root-named-query.d.ts +33 -0
- package/out/zql/src/query/root-named-query.d.ts.map +1 -0
- package/out/zql/src/query/root-named-query.js +95 -0
- package/out/zql/src/query/root-named-query.js.map +1 -0
- package/out/zql/src/query/static-query.d.ts +5 -14
- package/out/zql/src/query/static-query.d.ts.map +1 -1
- package/out/zql/src/query/static-query.js +7 -17
- package/out/zql/src/query/static-query.js.map +1 -1
- package/out/zqlite/src/db.d.ts +2 -1
- package/out/zqlite/src/db.d.ts.map +1 -1
- package/out/zqlite/src/db.js +2 -0
- package/out/zqlite/src/db.js.map +1 -1
- package/out/zqlite/src/query-delegate.d.ts +6 -20
- package/out/zqlite/src/query-delegate.d.ts.map +1 -1
- package/out/zqlite/src/query-delegate.js +5 -29
- package/out/zqlite/src/query-delegate.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +16 -0
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +3 -2
- package/out/chunk-COKJ5W7V.js.map +0 -7
- package/out/chunk-YWU2DZ23.js +0 -372
- package/out/chunk-YWU2DZ23.js.map +0 -7
- package/out/inspector-IU2HG74I.js.map +0 -7
- package/out/lazy-inspector-OXIFYSSQ.js.map +0 -7
- package/out/zero-client/src/client/on-error.d.ts +0 -15
- package/out/zero-client/src/client/on-error.d.ts.map +0 -1
- package/out/zero-schema/src/builder/relationship-builder.js +0 -24
- package/out/zero-schema/src/builder/relationship-builder.js.map +0 -1
- package/out/zero-schema/src/builder/schema-builder.js +0 -78
- package/out/zero-schema/src/builder/schema-builder.js.map +0 -1
- package/out/zero-schema/src/builder/table-builder.js +0 -128
- package/out/zero-schema/src/builder/table-builder.js.map +0 -1
- package/out/zero-schema/src/server-schema.d.ts.map +0 -1
- package/out/zero-schema/src/server-schema.js.map +0 -1
- package/out/zero-server/src/query.d.ts +0 -22
- package/out/zero-server/src/query.d.ts.map +0 -1
- package/out/zero-server/src/query.js +0 -61
- package/out/zero-server/src/query.js.map +0 -1
- /package/out/{zero-schema → zero-types}/src/server-schema.d.ts +0 -0
- /package/out/{zero-schema → zero-types}/src/server-schema.js +0 -0
|
@@ -83,8 +83,10 @@ export class PlannerJoin {
|
|
|
83
83
|
#output; // Set once during graph construction
|
|
84
84
|
// Reset between planning attempts
|
|
85
85
|
#type;
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
#initialType;
|
|
87
|
+
constructor(parent, child, parentConstraint, childConstraint, flippable, planId, initialType = 'semi') {
|
|
88
|
+
this.#type = initialType;
|
|
89
|
+
this.#initialType = initialType;
|
|
88
90
|
this.#parent = parent;
|
|
89
91
|
this.#child = child;
|
|
90
92
|
this.#childConstraint = childConstraint;
|
|
@@ -185,7 +187,7 @@ export class PlannerJoin {
|
|
|
185
187
|
}
|
|
186
188
|
}
|
|
187
189
|
reset() {
|
|
188
|
-
this.#type =
|
|
190
|
+
this.#type = this.#initialType;
|
|
189
191
|
}
|
|
190
192
|
estimateCost(
|
|
191
193
|
/**
|
|
@@ -253,7 +255,8 @@ export class PlannerJoin {
|
|
|
253
255
|
scanEst: parent.limit === undefined
|
|
254
256
|
? parent.returnedRows
|
|
255
257
|
: Math.min(parent.returnedRows, parent.limit / downstreamChildSelectivity),
|
|
256
|
-
cost: parent.cost +
|
|
258
|
+
cost: parent.cost +
|
|
259
|
+
parent.scanEst * (child.startupCost + child.cost + child.scanEst),
|
|
257
260
|
returnedRows: parent.returnedRows * child.selectivity,
|
|
258
261
|
selectivity: child.selectivity * parent.selectivity,
|
|
259
262
|
limit: parent.limit,
|
|
@@ -265,7 +268,8 @@ export class PlannerJoin {
|
|
|
265
268
|
scanEst: parent.limit === undefined
|
|
266
269
|
? parent.returnedRows
|
|
267
270
|
: Math.min(parent.returnedRows * child.returnedRows, parent.limit / downstreamChildSelectivity),
|
|
268
|
-
cost: child.cost +
|
|
271
|
+
cost: child.cost +
|
|
272
|
+
child.scanEst * (parent.startupCost + parent.cost + parent.scanEst),
|
|
269
273
|
returnedRows: parent.returnedRows * child.returnedRows * child.selectivity,
|
|
270
274
|
selectivity: parent.selectivity * child.selectivity,
|
|
271
275
|
limit: parent.limit,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-join.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AACtD,OAAO,EACL,gBAAgB,GAEjB,MAAM,yBAAyB,CAAC;AASjC;;;;;;;;;;GAUG;AACH,SAAS,kCAAkC,CACzC,kBAAiD,EACjD,gBAAmC,EACnC,eAAkC;IAElC,IAAI,CAAC,kBAAkB;QAAE,OAAO,SAAS,CAAC;IAE1C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAsB,EAAE,CAAC;IAEzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,+CAA+C;YAC/C,oCAAoC;YACpC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,6CAA6C;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,WAAW;IACb,IAAI,GAAG,MAAe,CAAC;IAEvB,OAAO,CAAwC;IAC/C,MAAM,CAAwC;IAC9C,iBAAiB,CAAoB;IACrC,gBAAgB,CAAoB;IACpC,UAAU,CAAU;IACpB,MAAM,CAAS;IACxB,OAAO,CAA2B,CAAC,qCAAqC;IAExE,kCAAkC;IAClC,KAAK,CAAqB;
|
|
1
|
+
{"version":3,"file":"planner-join.js","sourceRoot":"","sources":["../../../../../zql/src/planner/planner-join.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { SimpleOperator } from '../../../zero-protocol/src/ast.ts';
|
|
2
|
+
import type { Schema } from '../../../zero-types/src/schema.ts';
|
|
3
|
+
import type { ExpressionFactory, ParameterReference } from './expression.ts';
|
|
4
|
+
import type { AvailableRelationships, DestTableName, ExistsOptions, GetFilterType, NoCompoundTypeSelector, PullRow, PullTableSchema, Query } from './query.ts';
|
|
5
|
+
/**
|
|
6
|
+
* Function type for chaining one query to another.
|
|
7
|
+
*/
|
|
8
|
+
type ChainQuery<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn1, TReturn2, TContext> = (q: Query<TSchema, TTable, TReturn1, TContext>) => Query<TSchema, TTable, TReturn2, TContext>;
|
|
9
|
+
export type AnyChainQuery = ChainQuery<Schema, string, PullRow<string, Schema>, PullRow<string, Schema>, unknown>;
|
|
10
|
+
/**
|
|
11
|
+
* Chained query that applies a transformation function to a parent query.
|
|
12
|
+
* This represents a query operation that builds on top of another query.
|
|
13
|
+
*/
|
|
14
|
+
export declare class ChainedQuery<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext> implements Query<TSchema, TTable, TReturn, TContext> {
|
|
15
|
+
#private;
|
|
16
|
+
constructor(parent: {
|
|
17
|
+
withContext(ctx: TContext): Query<TSchema, TTable, unknown>;
|
|
18
|
+
}, chainFn: AnyChainQuery);
|
|
19
|
+
withContext(ctx: TContext): Query<TSchema, TTable, TReturn>;
|
|
20
|
+
one(): ChainedQuery<TSchema, TTable, TReturn | undefined, TContext>;
|
|
21
|
+
whereExists<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship, options?: ExistsOptions): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
22
|
+
whereExists<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship, cb: (q: Query<TSchema, DestTableName<TTable, TSchema, TRelationship>, TContext>) => Query<TSchema, string, TContext>, options?: ExistsOptions): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
23
|
+
related<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship): ChainedQuery<TSchema, TTable, TReturn & Record<string, unknown>, TContext>;
|
|
24
|
+
related<TRelationship extends AvailableRelationships<TTable, TSchema>, TSub extends Query<TSchema, string, unknown>>(relationship: TRelationship, cb: (q: Query<TSchema, DestTableName<TTable, TSchema, TRelationship>, TContext>) => TSub): ChainedQuery<TSchema, TTable, TReturn & Record<string, unknown>, TContext>;
|
|
25
|
+
where<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>, TOperator extends SimpleOperator>(field: TSelector, op: TOperator, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, TOperator> | ParameterReference): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
26
|
+
where<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>>(field: TSelector, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, '='> | ParameterReference): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
27
|
+
where(expressionFactory: ExpressionFactory<TSchema, TTable>): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
28
|
+
start(row: Partial<PullRow<TTable, TSchema>>, opts?: {
|
|
29
|
+
inclusive: boolean;
|
|
30
|
+
}): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
31
|
+
limit(limit: number): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
32
|
+
orderBy<TSelector extends keyof PullTableSchema<TTable, TSchema>['columns']>(field: TSelector, direction: 'asc' | 'desc'): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=chained-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chained-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/chained-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
/**
|
|
3
|
+
* Chained query that applies a transformation function to a parent query.
|
|
4
|
+
* This represents a query operation that builds on top of another query.
|
|
5
|
+
*/
|
|
6
|
+
export class ChainedQuery {
|
|
7
|
+
#parent;
|
|
8
|
+
#chainFn;
|
|
9
|
+
#q;
|
|
10
|
+
constructor(parent, chainFn) {
|
|
11
|
+
this.#parent = parent;
|
|
12
|
+
this.#chainFn = chainFn;
|
|
13
|
+
}
|
|
14
|
+
withContext(ctx) {
|
|
15
|
+
if (this.#q) {
|
|
16
|
+
return this.#q;
|
|
17
|
+
}
|
|
18
|
+
// This is a chained query - get the parent query and apply the chain function
|
|
19
|
+
const parentQuery = this.#parent.withContext(ctx);
|
|
20
|
+
this.#q = this.#chainFn(parentQuery);
|
|
21
|
+
return this.#q;
|
|
22
|
+
}
|
|
23
|
+
#withChain(fn) {
|
|
24
|
+
return new _a(this, fn);
|
|
25
|
+
}
|
|
26
|
+
// Query interface methods
|
|
27
|
+
one() {
|
|
28
|
+
return this.#withChain(q => q.one());
|
|
29
|
+
}
|
|
30
|
+
whereExists(relationship, cbOrOptions, options) {
|
|
31
|
+
if (typeof cbOrOptions === 'function') {
|
|
32
|
+
return this.#withChain(q => q.whereExists(relationship, cbOrOptions, options));
|
|
33
|
+
}
|
|
34
|
+
return this.#withChain(q => q.whereExists(relationship, cbOrOptions));
|
|
35
|
+
}
|
|
36
|
+
related(relationship, cb) {
|
|
37
|
+
if (cb) {
|
|
38
|
+
return this.#withChain(q => q.related(relationship, cb));
|
|
39
|
+
}
|
|
40
|
+
return this.#withChain(q => q.related(relationship));
|
|
41
|
+
}
|
|
42
|
+
where(fieldOrExpressionFactory, opOrValue, value) {
|
|
43
|
+
if (typeof fieldOrExpressionFactory === 'function') {
|
|
44
|
+
return this.#withChain(q => q.where(fieldOrExpressionFactory));
|
|
45
|
+
}
|
|
46
|
+
if (value !== undefined) {
|
|
47
|
+
return this.#withChain(q =>
|
|
48
|
+
// Cast to bypass TypeScript's strict type checking - this proxy method needs runtime flexibility
|
|
49
|
+
q.where(fieldOrExpressionFactory, opOrValue, value));
|
|
50
|
+
}
|
|
51
|
+
return this.#withChain(q =>
|
|
52
|
+
// Cast to bypass TypeScript's strict type checking - this proxy method needs runtime flexibility
|
|
53
|
+
q.where(fieldOrExpressionFactory, opOrValue));
|
|
54
|
+
}
|
|
55
|
+
start(row, opts) {
|
|
56
|
+
return this.#withChain(q => q.start(row, opts));
|
|
57
|
+
}
|
|
58
|
+
limit(limit) {
|
|
59
|
+
return this.#withChain(q => q.limit(limit));
|
|
60
|
+
}
|
|
61
|
+
orderBy(field, direction) {
|
|
62
|
+
return this.#withChain(q => q.orderBy(field, direction));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
_a = ChainedQuery;
|
|
66
|
+
//# sourceMappingURL=chained-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chained-query.js","sourceRoot":"","sources":["../../../../../zql/src/query/chained-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
2
|
+
import type { ReadonlyJSONValue } from '../../../shared/src/json.ts';
|
|
3
|
+
import type { Schema } from '../../../zero-types/src/schema.ts';
|
|
4
|
+
import type { Query } from './query.ts';
|
|
5
|
+
export type DefineQueryOptions<Input, Output> = {
|
|
6
|
+
validator?: StandardSchemaV1<Input, Output> | undefined;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Function type for root query functions that take context and args.
|
|
10
|
+
*/
|
|
11
|
+
export type DefineQueryFunc<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TArgs> = (options: {
|
|
12
|
+
ctx: TContext;
|
|
13
|
+
args: TArgs;
|
|
14
|
+
}) => Query<TSchema, TTable, TReturn, TContext>;
|
|
15
|
+
export type NamedQueryFunction<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends ReadonlyJSONValue | undefined> = ([TOutput] extends [undefined] ? (() => Query<TSchema, TTable, TReturn, TContext>) & ((args: undefined) => Query<TSchema, TTable, TReturn, TContext>) : undefined extends TOutput ? (args?: TInput) => Query<TSchema, TTable, TReturn, TContext> : (args: TInput) => Query<TSchema, TTable, TReturn, TContext>) & {
|
|
16
|
+
queryName: TName;
|
|
17
|
+
};
|
|
18
|
+
export type AnyNamedQueryFunction = NamedQueryFunction<string, Schema, string, any, any, ReadonlyJSONValue | undefined, ReadonlyJSONValue | undefined>;
|
|
19
|
+
export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TArgs extends ReadonlyJSONValue | undefined>(name: TName, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TArgs>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TArgs, TArgs>;
|
|
20
|
+
export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput extends ReadonlyJSONValue | undefined = TOutput>(name: TName, options: DefineQueryOptions<TInput, TOutput>, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TOutput, TInput>;
|
|
21
|
+
export declare function defineQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TArgs extends ReadonlyJSONValue | undefined>(name: TName, options: {}, queryFn: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TArgs>): NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TArgs, TArgs>;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a type-safe query definition function that is parameterized by a
|
|
24
|
+
* custom context type.
|
|
25
|
+
*
|
|
26
|
+
* This utility allows you to define queries with explicit context typing,
|
|
27
|
+
* ensuring that the query function receives the correct context type. It
|
|
28
|
+
* returns a function that can be used to define named queries with schema,
|
|
29
|
+
* table, input, and output types.
|
|
30
|
+
*
|
|
31
|
+
* @typeParam TContext - The type of the context object that will be passed to
|
|
32
|
+
* the query function.
|
|
33
|
+
*
|
|
34
|
+
* @returns A function for defining named queries with the specified context
|
|
35
|
+
* type.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const defineQuery = defineQueryWithContextType<MyContext>();
|
|
40
|
+
* const myQuery = defineQuery(
|
|
41
|
+
* "getUser",
|
|
42
|
+
* {validator: z.string()},
|
|
43
|
+
* ({ctx, args}) => {
|
|
44
|
+
* ctx satisfies MyContext;
|
|
45
|
+
* ...
|
|
46
|
+
* },
|
|
47
|
+
* );
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function defineQueryWithContextType<TContext>(): <TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TOutput extends ReadonlyJSONValue | undefined, TInput extends ReadonlyJSONValue | undefined = TOutput>(name: TName, optionsOrQueryFn: DefineQueryOptions<TInput, TOutput> | DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>, queryFn?: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>) => NamedQueryFunction<TName, TSchema, TTable, TReturn, TContext, TOutput, TInput>;
|
|
51
|
+
//# sourceMappingURL=define-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/define-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAGtC,MAAM,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,IAAI;IAC9C,SAAS,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,CACzB,OAAO,SAAS,MAAM,EACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,QAAQ,EACR,KAAK,IACH,CAAC,OAAO,EAAE;IACZ,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,KAAK,CAAC;CACb,KAAK,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAEhD,MAAM,MAAM,kBAAkB,CAC5B,KAAK,SAAS,MAAM,EACpB,OAAO,SAAS,MAAM,EACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,QAAQ,EACR,OAAO,SAAS,iBAAiB,GAAG,SAAS,EAC7C,MAAM,SAAS,iBAAiB,GAAG,SAAS,IAC1C,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,GAC9B,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,GAC/C,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,GAClE,SAAS,SAAS,OAAO,GACvB,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,GAC5D,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,GAAG;IACnE,SAAS,EAAE,KAAK,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CACpD,MAAM,EACN,MAAM,EACN,MAAM,EAEN,GAAG,EAEH,GAAG,EACH,iBAAiB,GAAG,SAAS,EAC7B,iBAAiB,GAAG,SAAS,CAC9B,CAAC;AAGF,wBAAgB,WAAW,CACzB,KAAK,SAAS,MAAM,EACpB,OAAO,SAAS,MAAM,EACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,QAAQ,EACR,KAAK,SAAS,iBAAiB,GAAG,SAAS,EAE3C,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAClE,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAG/E,wBAAgB,WAAW,CACzB,KAAK,SAAS,MAAM,EACpB,OAAO,SAAS,MAAM,EACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,QAAQ,EACR,OAAO,SAAS,iBAAiB,GAAG,SAAS,EAC7C,MAAM,SAAS,iBAAiB,GAAG,SAAS,GAAG,OAAO,EAEtD,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,GACpE,kBAAkB,CACnB,KAAK,EACL,OAAO,EACP,MAAM,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,MAAM,CACP,CAAC;AAGF,wBAAgB,WAAW,CACzB,KAAK,SAAS,MAAM,EACpB,OAAO,SAAS,MAAM,EACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,QAAQ,EACR,KAAK,SAAS,iBAAiB,GAAG,SAAS,EAE3C,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,EAAE,EACX,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAClE,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAkE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,KAAK,CACtD,KAAK,SAAS,MAAM,EACpB,OAAO,SAAS,MAAM,EACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,OAAO,SAAS,iBAAiB,GAAG,SAAS,EAC7C,MAAM,SAAS,iBAAiB,GAAG,SAAS,GAAG,OAAO,EAEtD,IAAI,EAAE,KAAK,EACX,gBAAgB,EACZ,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAChE,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,KACnE,kBAAkB,CACrB,KAAK,EACL,OAAO,EACP,MAAM,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,MAAM,CACP,CAuBA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { RootNamedQuery } from "./root-named-query.js";
|
|
2
|
+
// Implementation
|
|
3
|
+
export function defineQuery(name, optionsOrQueryFn, queryFn) {
|
|
4
|
+
// Handle different parameter patterns
|
|
5
|
+
let defineOptions;
|
|
6
|
+
let actualQueryFn;
|
|
7
|
+
if (typeof optionsOrQueryFn === 'function') {
|
|
8
|
+
// defineQuery(name, queryFn) - no options
|
|
9
|
+
defineOptions = undefined;
|
|
10
|
+
actualQueryFn = optionsOrQueryFn;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
// defineQuery(name, options, queryFn) - with options
|
|
14
|
+
defineOptions = optionsOrQueryFn;
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
16
|
+
actualQueryFn = queryFn;
|
|
17
|
+
}
|
|
18
|
+
const f = ((args) => new RootNamedQuery(name, actualQueryFn, args, defineOptions?.validator));
|
|
19
|
+
f.queryName = name;
|
|
20
|
+
return f;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Creates a type-safe query definition function that is parameterized by a
|
|
24
|
+
* custom context type.
|
|
25
|
+
*
|
|
26
|
+
* This utility allows you to define queries with explicit context typing,
|
|
27
|
+
* ensuring that the query function receives the correct context type. It
|
|
28
|
+
* returns a function that can be used to define named queries with schema,
|
|
29
|
+
* table, input, and output types.
|
|
30
|
+
*
|
|
31
|
+
* @typeParam TContext - The type of the context object that will be passed to
|
|
32
|
+
* the query function.
|
|
33
|
+
*
|
|
34
|
+
* @returns A function for defining named queries with the specified context
|
|
35
|
+
* type.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const defineQuery = defineQueryWithContextType<MyContext>();
|
|
40
|
+
* const myQuery = defineQuery(
|
|
41
|
+
* "getUser",
|
|
42
|
+
* {validator: z.string()},
|
|
43
|
+
* ({ctx, args}) => {
|
|
44
|
+
* ctx satisfies MyContext;
|
|
45
|
+
* ...
|
|
46
|
+
* },
|
|
47
|
+
* );
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export function defineQueryWithContextType() {
|
|
51
|
+
return defineQuery;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=define-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-query.js","sourceRoot":"","sources":["../../../../../zql/src/query/define-query.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAmGrD,iBAAiB;AACjB,MAAM,UAAU,WAAW,CASzB,IAAW,EACX,gBAEgE,EAChE,OAAsE;IAUtE,sCAAsC;IACtC,IAAI,aAA8D,CAAC;IACnE,IAAI,aAMH,CAAC;IAEF,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE,CAAC;QAC3C,0CAA0C;QAC1C,aAAa,GAAG,SAAS,CAAC;QAC1B,aAAa,GAAG,gBAAgB,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,qDAAqD;QACrD,aAAa,GAAG,gBAAgB,CAAC;QACjC,oEAAoE;QACpE,aAAa,GAAG,OAAQ,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE,CAC3B,IAAI,cAAc,CAChB,IAAI,EACJ,aAAa,EACb,IAAI,EACJ,aAAa,EAAE,SAAS,CACzB,CAQF,CAAC;IACF,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,0BAA0B;IAsBxC,OAAO,WAqBN,CAAC;AACJ,CAAC"}
|
|
@@ -1,20 +1,30 @@
|
|
|
1
1
|
import type { ReadonlyJSONValue } from '../../../shared/src/json.ts';
|
|
2
2
|
import type { Schema } from '../../../zero-types/src/schema.ts';
|
|
3
3
|
import type { SchemaQuery } from '../mutate/custom.ts';
|
|
4
|
-
import type {
|
|
5
|
-
|
|
4
|
+
import type { NamedQueryFunction } from './define-query.ts';
|
|
5
|
+
import { type AnyQuery } from './query.ts';
|
|
6
|
+
export type QueryFn<TContext, TTakesContext extends boolean, TArg extends ReadonlyJSONValue[], TReturnQuery extends AnyQuery> = TTakesContext extends false ? {
|
|
6
7
|
(...args: TArg): TReturnQuery;
|
|
7
8
|
} : {
|
|
8
9
|
(context: TContext, ...args: TArg): TReturnQuery;
|
|
9
10
|
};
|
|
10
|
-
export type SyncedQuery<TName extends string, TContext, TTakesContext extends boolean, TArg extends ReadonlyJSONValue[], TReturnQuery extends
|
|
11
|
+
export type SyncedQuery<TName extends string, TContext, TTakesContext extends boolean, TArg extends ReadonlyJSONValue[], TReturnQuery extends AnyQuery> = QueryFn<TContext, TTakesContext, TArg, TReturnQuery> & {
|
|
11
12
|
queryName: TName;
|
|
12
13
|
parse: ParseFn<TArg> | undefined;
|
|
13
14
|
takesContext: TTakesContext;
|
|
14
15
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Use {@linkcode defineQuery} instead.
|
|
18
|
+
*/
|
|
19
|
+
export declare function syncedQuery<TName extends string, TArg extends ReadonlyJSONValue[], TReturnQuery extends AnyQuery>(name: TName, parser: ParseFn<TArg> | HasParseFn<TArg> | undefined, fn: QueryFn<unknown, false, TArg, TReturnQuery>): SyncedQuery<TName, unknown, false, TArg, TReturnQuery>;
|
|
20
|
+
/**
|
|
21
|
+
* @deprecated Use {@linkcode defineQuery} instead.
|
|
22
|
+
*/
|
|
23
|
+
export declare function syncedQueryWithContext<TName extends string, TContext, TArg extends ReadonlyJSONValue[], TReturnQuery extends AnyQuery>(name: TName, parser: ParseFn<TArg> | HasParseFn<TArg> | undefined, fn: QueryFn<TContext, true, TArg, TReturnQuery>): SyncedQuery<TName, TContext, true, TArg, TReturnQuery>;
|
|
24
|
+
type AnySyncedQuery = SyncedQuery<any, any, any, any, any>;
|
|
25
|
+
type AnyNamedQueryFunction = NamedQueryFunction<any, any, any, any, any, any, any>;
|
|
26
|
+
export declare function withValidation<F extends AnySyncedQuery>(fn: F): F extends SyncedQuery<infer N, infer C, any, infer A, infer R> ? SyncedQuery<N, C, true, A, R> : never;
|
|
27
|
+
export declare function withValidation<F extends AnyNamedQueryFunction>(fn: F): F;
|
|
18
28
|
export type ParseFn<T extends ReadonlyJSONValue[]> = (args: unknown[]) => T;
|
|
19
29
|
export type HasParseFn<T extends ReadonlyJSONValue[]> = {
|
|
20
30
|
parse: ParseFn<T>;
|
|
@@ -27,5 +37,6 @@ export type CustomQueryID = {
|
|
|
27
37
|
/**
|
|
28
38
|
* Returns a set of query builders for the given schema.
|
|
29
39
|
*/
|
|
30
|
-
export declare function createBuilder<S extends Schema>(s: S): SchemaQuery<S>;
|
|
40
|
+
export declare function createBuilder<S extends Schema, TContext>(s: S): SchemaQuery<S, TContext>;
|
|
41
|
+
export {};
|
|
31
42
|
//# sourceMappingURL=named.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"named.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/named.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"named.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/named.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { QueryParseError } from "./error.js";
|
|
2
2
|
import { newQuery } from "./query-impl.js";
|
|
3
|
+
import { queryWithContext } from "./query-internals.js";
|
|
4
|
+
import {} from "./query.js";
|
|
3
5
|
function normalizeParser(parser) {
|
|
4
6
|
if (parser) {
|
|
5
7
|
if ('parse' in parser) {
|
|
@@ -9,16 +11,24 @@ function normalizeParser(parser) {
|
|
|
9
11
|
}
|
|
10
12
|
return undefined;
|
|
11
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated Use {@linkcode defineQuery} instead.
|
|
16
|
+
*/
|
|
12
17
|
export function syncedQuery(name, parser, fn) {
|
|
13
18
|
const impl = syncedQueryImpl(name, fn, false);
|
|
19
|
+
// oxlint-disable-next-line no-explicit-any
|
|
14
20
|
const ret = (...args) => impl(undefined, args);
|
|
15
21
|
ret.queryName = name;
|
|
16
22
|
ret.parse = normalizeParser(parser);
|
|
17
23
|
ret.takesContext = false;
|
|
18
24
|
return ret;
|
|
19
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated Use {@linkcode defineQuery} instead.
|
|
28
|
+
*/
|
|
20
29
|
export function syncedQueryWithContext(name, parser, fn) {
|
|
21
30
|
const impl = syncedQueryImpl(name, fn, true);
|
|
31
|
+
// oxlint-disable-next-line no-explicit-any
|
|
22
32
|
const ret = (context, ...args) => impl(context, args);
|
|
23
33
|
ret.queryName = name;
|
|
24
34
|
ret.parse = normalizeParser(parser);
|
|
@@ -28,29 +38,36 @@ export function syncedQueryWithContext(name, parser, fn) {
|
|
|
28
38
|
function syncedQueryImpl(name, fn, takesContext) {
|
|
29
39
|
return (context, args) => {
|
|
30
40
|
const q = takesContext ? fn(context, ...args) : fn(...args);
|
|
31
|
-
return q.nameAndArgs(name, args);
|
|
41
|
+
return queryWithContext(q, context).nameAndArgs(name, args);
|
|
32
42
|
};
|
|
33
43
|
}
|
|
34
44
|
export function withValidation(fn) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// oxlint-disable-next-line no-explicit-any
|
|
41
|
-
let parsed;
|
|
42
|
-
try {
|
|
43
|
-
parsed = f.parse(args);
|
|
45
|
+
// If we have a parse function this is a SyncedQuery
|
|
46
|
+
if ('parse' in fn) {
|
|
47
|
+
const { parse } = fn;
|
|
48
|
+
if (!parse) {
|
|
49
|
+
throw new Error('ret does not have a parse function defined');
|
|
44
50
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
// oxlint-disable-next-line no-explicit-any
|
|
52
|
+
const ret = (context, ...args) => {
|
|
53
|
+
let parsed;
|
|
54
|
+
try {
|
|
55
|
+
parsed = parse(args);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
throw new QueryParseError({ cause: error });
|
|
59
|
+
}
|
|
60
|
+
// oxlint-disable-next-line no-explicit-any
|
|
61
|
+
return fn.takesContext ? fn(context, ...parsed) : fn(...parsed);
|
|
62
|
+
};
|
|
63
|
+
ret.queryName = fn.queryName;
|
|
64
|
+
ret.parse = fn.parse;
|
|
65
|
+
ret.takesContext = true;
|
|
66
|
+
return ret;
|
|
67
|
+
}
|
|
68
|
+
// Otherwise this is a NamedQueryFunction which always validates.
|
|
69
|
+
// oxlint-disable-next-line no-explicit-any
|
|
70
|
+
return fn;
|
|
54
71
|
}
|
|
55
72
|
/**
|
|
56
73
|
* Returns a set of query builders for the given schema.
|
|
@@ -64,6 +81,7 @@ export function createBuilder(s) {
|
|
|
64
81
|
*/
|
|
65
82
|
function makeQueryBuilders(schema) {
|
|
66
83
|
return new Proxy({}, {
|
|
84
|
+
// oxlint-disable-next-line no-explicit-any
|
|
67
85
|
get: (target, prop) => {
|
|
68
86
|
if (prop in target) {
|
|
69
87
|
return target[prop];
|
|
@@ -71,7 +89,7 @@ function makeQueryBuilders(schema) {
|
|
|
71
89
|
if (!(prop in schema.tables)) {
|
|
72
90
|
throw new Error(`Table ${prop} does not exist in schema`);
|
|
73
91
|
}
|
|
74
|
-
const q = newQuery(
|
|
92
|
+
const q = newQuery(schema, prop);
|
|
75
93
|
target[prop] = q;
|
|
76
94
|
return q;
|
|
77
95
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"named.js","sourceRoot":"","sources":["../../../../../zql/src/query/named.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"named.js","sourceRoot":"","sources":["../../../../../zql/src/query/named.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { AST } from '../../../zero-protocol/src/ast.ts';
|
|
2
|
+
import type { Schema } from '../../../zero-types/src/schema.ts';
|
|
3
|
+
import type { FilterInput } from '../ivm/filter-operators.ts';
|
|
4
|
+
import type { Input, InputBase, Storage } from '../ivm/operator.ts';
|
|
5
|
+
import type { Source, SourceInput } from '../ivm/source.ts';
|
|
6
|
+
import type { ViewFactory } from '../ivm/view.ts';
|
|
7
|
+
import type { MetricMap } from './metrics-delegate.ts';
|
|
8
|
+
import type { CustomQueryID } from './named.ts';
|
|
9
|
+
import type { CommitListener, GotCallback, QueryDelegate } from './query-delegate.ts';
|
|
10
|
+
import { type QueryInternals } from './query-internals.ts';
|
|
11
|
+
import type { HumanReadable, MaterializeOptions, PreloadOptions, Query, RunOptions } from './query.ts';
|
|
12
|
+
import type { TTL } from './ttl.ts';
|
|
13
|
+
import type { TypedView } from './typed-view.ts';
|
|
14
|
+
/**
|
|
15
|
+
* Base class that provides default implementations for common QueryDelegate methods.
|
|
16
|
+
* Subclasses can override specific methods as needed.
|
|
17
|
+
*/
|
|
18
|
+
export declare abstract class QueryDelegateBase<TContext> implements QueryDelegate<TContext> {
|
|
19
|
+
#private;
|
|
20
|
+
constructor(context: TContext);
|
|
21
|
+
/**
|
|
22
|
+
* Default implementation that calls queryWithContext.
|
|
23
|
+
* Override if you need custom context handling.
|
|
24
|
+
*/
|
|
25
|
+
withContext<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn>(query: Query<TSchema, TTable, TReturn, TContext>): QueryInternals<TSchema, TTable, TReturn, TContext>;
|
|
26
|
+
/**
|
|
27
|
+
* Default implementation that just calls applyViewUpdates synchronously.
|
|
28
|
+
* Override if you need custom batching behavior (e.g., SolidJS).
|
|
29
|
+
*/
|
|
30
|
+
batchViewUpdates<T>(applyViewUpdates: () => T): T;
|
|
31
|
+
/**
|
|
32
|
+
* Default implementation returns MemoryStorage.
|
|
33
|
+
* Override if you need custom storage.
|
|
34
|
+
*/
|
|
35
|
+
createStorage(): Storage;
|
|
36
|
+
/**
|
|
37
|
+
* Default implementation calls materializeImpl.
|
|
38
|
+
* Override if you need custom materialization behavior.
|
|
39
|
+
*/
|
|
40
|
+
materialize<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn>(query: Query<TSchema, TTable, TReturn, TContext>, factory?: undefined, options?: MaterializeOptions): TypedView<HumanReadable<TReturn>>;
|
|
41
|
+
materialize<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, T>(query: Query<TSchema, TTable, TReturn, TContext>, factory?: ViewFactory<TSchema, TTable, TReturn, TContext, T>, options?: MaterializeOptions): T;
|
|
42
|
+
/**
|
|
43
|
+
* Materialize a query into a custom view using a provided factory function.
|
|
44
|
+
*/
|
|
45
|
+
materialize<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, T>(query: Query<TSchema, TTable, TReturn, TContext>, factory?: ViewFactory<TSchema, TTable, TReturn, TContext, T>, options?: MaterializeOptions): T;
|
|
46
|
+
/**
|
|
47
|
+
* Default implementation calls runImpl.
|
|
48
|
+
* Override if you need custom query execution (e.g., TestPGQueryDelegate).
|
|
49
|
+
*/
|
|
50
|
+
run<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn>(query: Query<TSchema, TTable, TReturn, TContext>, options?: RunOptions): Promise<HumanReadable<TReturn>>;
|
|
51
|
+
/**
|
|
52
|
+
* Default implementation calls preloadImpl.
|
|
53
|
+
* Override if you need custom preload behavior.
|
|
54
|
+
*/
|
|
55
|
+
preload<TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn>(query: Query<TSchema, TTable, TReturn, TContext>, options?: PreloadOptions): {
|
|
56
|
+
cleanup: () => void;
|
|
57
|
+
complete: Promise<void>;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Default no-op implementation for decorateSourceInput.
|
|
61
|
+
* Override if you need to wrap or instrument source inputs.
|
|
62
|
+
*/
|
|
63
|
+
decorateSourceInput(input: SourceInput, _queryID: string): Input;
|
|
64
|
+
/**
|
|
65
|
+
* Default no-op implementation for decorateInput.
|
|
66
|
+
* Override if you need to wrap or instrument inputs.
|
|
67
|
+
*/
|
|
68
|
+
decorateInput(input: Input, _name: string): Input;
|
|
69
|
+
/**
|
|
70
|
+
* Default no-op implementation for decorateFilterInput.
|
|
71
|
+
* Override if you need to wrap or instrument filter inputs.
|
|
72
|
+
*/
|
|
73
|
+
decorateFilterInput(input: FilterInput, _name: string): FilterInput;
|
|
74
|
+
/**
|
|
75
|
+
* Default no-op implementation for addEdge.
|
|
76
|
+
* Override if you need to track graph edges (e.g., visualization).
|
|
77
|
+
*/
|
|
78
|
+
addEdge(_source: InputBase, _dest: InputBase): void;
|
|
79
|
+
/**
|
|
80
|
+
* Default no-op implementation for addMetric.
|
|
81
|
+
* Override if you need to collect metrics.
|
|
82
|
+
*/
|
|
83
|
+
addMetric<K extends keyof MetricMap>(_metric: K, _value: number, ..._args: MetricMap[K]): void;
|
|
84
|
+
/**
|
|
85
|
+
* Default no-op implementation.
|
|
86
|
+
* Override if you need to track server queries (e.g., ZeroContext, test delegates).
|
|
87
|
+
*/
|
|
88
|
+
addServerQuery(_ast: AST, _ttl: TTL, _gotCallback?: GotCallback): () => void;
|
|
89
|
+
/**
|
|
90
|
+
* Default no-op implementation.
|
|
91
|
+
* Override if you need to track custom queries (e.g., ZeroContext, test delegates).
|
|
92
|
+
*/
|
|
93
|
+
addCustomQuery(_ast: AST, _customQueryID: CustomQueryID, _ttl: TTL, _gotCallback?: GotCallback): () => void;
|
|
94
|
+
/**
|
|
95
|
+
* Default no-op implementation.
|
|
96
|
+
* Override if you need to handle query updates.
|
|
97
|
+
*/
|
|
98
|
+
updateServerQuery(_ast: AST, _ttl: TTL): void;
|
|
99
|
+
/**
|
|
100
|
+
* Default no-op implementation.
|
|
101
|
+
* Override if you need to handle custom query updates.
|
|
102
|
+
*/
|
|
103
|
+
updateCustomQuery(_customQueryID: CustomQueryID, _ttl: TTL): void;
|
|
104
|
+
/**
|
|
105
|
+
* Default no-op implementation.
|
|
106
|
+
* Override if you need to flush query changes.
|
|
107
|
+
*/
|
|
108
|
+
flushQueryChanges(): void;
|
|
109
|
+
/**
|
|
110
|
+
* Called when a transaction commits. Override to add custom behavior.
|
|
111
|
+
* Default implementation returns a no-op cleanup function.
|
|
112
|
+
*/
|
|
113
|
+
onTransactionCommit(_cb: CommitListener): () => void;
|
|
114
|
+
/**
|
|
115
|
+
* Validates run options. Override to add custom validation.
|
|
116
|
+
* Default implementation is a no-op.
|
|
117
|
+
*/
|
|
118
|
+
assertValidRunOptions(_options?: RunOptions): void;
|
|
119
|
+
abstract readonly defaultQueryComplete: boolean;
|
|
120
|
+
abstract getSource(name: string): Source | undefined;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=query-delegate-base.d.ts.map
|