@rocicorp/zero 0.25.0-canary.2 → 0.25.0-canary.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-ZZXMKAAG.js → chunk-5H7WNLPK.js} +2 -2
- package/out/chunk-HYS7YLNL.js +575 -0
- package/out/chunk-HYS7YLNL.js.map +7 -0
- package/out/{chunk-COKJ5W7V.js → chunk-IWL6EEA6.js} +10134 -10131
- package/out/chunk-IWL6EEA6.js.map +7 -0
- package/out/{chunk-TJFNGO7E.js → chunk-JKP7HDC6.js} +15 -53
- package/out/chunk-JKP7HDC6.js.map +7 -0
- package/out/{chunk-ECUMGQGC.js → chunk-RYFBHAD4.js} +17 -4
- package/out/chunk-RYFBHAD4.js.map +7 -0
- package/out/chunk-SRLXXPNB.js +495 -0
- package/out/chunk-SRLXXPNB.js.map +7 -0
- package/out/{chunk-EZM3XBAB.js → chunk-U2KJIWVC.js} +47 -2
- package/out/chunk-U2KJIWVC.js.map +7 -0
- package/out/expo-sqlite.js +4 -4
- 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-4CO3DXP5.js} +9 -8
- package/out/lazy-inspector-4CO3DXP5.js.map +7 -0
- package/out/op-sqlite.js +3 -3
- package/out/react-native.js +4 -4
- package/out/react.js +22 -27
- package/out/react.js.map +2 -2
- package/out/replicache/src/kv/sqlite-store.d.ts +7 -1
- package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
- 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/replicache/src/sqlite.d.ts +1 -1
- package/out/replicache/src/sqlite.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 +11 -9
- package/out/solid.js.map +2 -2
- package/out/sqlite.js +5 -3
- 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/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/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-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/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 +29 -14
- 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-ASRS2LFV.js +0 -35
- package/out/chunk-ASRS2LFV.js.map +0 -7
- package/out/chunk-COKJ5W7V.js.map +0 -7
- package/out/chunk-ECUMGQGC.js.map +0 -7
- package/out/chunk-EZM3XBAB.js.map +0 -7
- package/out/chunk-TJFNGO7E.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/{chunk-ZZXMKAAG.js.map → chunk-5H7WNLPK.js.map} +0 -0
- /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
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { ReadonlyJSONValue } from '../../../shared/src/json.ts';
|
|
2
|
+
import type { AST } from '../../../zero-protocol/src/ast.ts';
|
|
3
|
+
import type { Schema as ZeroSchema } from '../../../zero-types/src/schema.ts';
|
|
4
|
+
import type { Format } from '../ivm/view.ts';
|
|
5
|
+
import type { CustomQueryID } from './named.ts';
|
|
6
|
+
import type { Query } from './query.ts';
|
|
7
|
+
export declare const queryInternalsTag: unique symbol;
|
|
8
|
+
/**
|
|
9
|
+
* Internal interface for query implementation details.
|
|
10
|
+
* This is not part of the public API and should only be accessed via
|
|
11
|
+
* the {@linkcode withContext} or {@linkcode queryWithContext} function.
|
|
12
|
+
*
|
|
13
|
+
* @typeParam TSchema The database schema type extending ZeroSchema
|
|
14
|
+
* @typeParam TTable The name of the table being queried, must be a key of TSchema['tables']
|
|
15
|
+
* @typeParam TReturn The return type of the query, defaults to PullRow<TTable, TSchema>
|
|
16
|
+
*/
|
|
17
|
+
export interface QueryInternals<TSchema extends ZeroSchema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext> {
|
|
18
|
+
readonly [queryInternalsTag]: true;
|
|
19
|
+
/**
|
|
20
|
+
* Format is used to specify the shape of the query results. This is used by
|
|
21
|
+
* {@linkcode one} and it also describes the shape when using
|
|
22
|
+
* {@linkcode related}.
|
|
23
|
+
*/
|
|
24
|
+
readonly format: Format;
|
|
25
|
+
/**
|
|
26
|
+
* A string that uniquely identifies this query. This can be used to determine
|
|
27
|
+
* if two queries are the same.
|
|
28
|
+
*
|
|
29
|
+
* The hash of a custom query, on the client, is the hash of its AST.
|
|
30
|
+
* The hash of a custom query, on the server, is the hash of its name and args.
|
|
31
|
+
*
|
|
32
|
+
* The first allows many client-side queries to be pinned to the same backend query.
|
|
33
|
+
* The second ensures we do not invoke a named query on the backend more than once for the same `name:arg` pairing.
|
|
34
|
+
*
|
|
35
|
+
* If the query.hash was of `name:args` then `useQuery` would de-dupe
|
|
36
|
+
* queries with divergent ASTs.
|
|
37
|
+
*
|
|
38
|
+
* QueryManager will hash based on `name:args` since it is speaking with
|
|
39
|
+
* the server which tracks queries by `name:args`.
|
|
40
|
+
*/
|
|
41
|
+
hash(): string;
|
|
42
|
+
/**
|
|
43
|
+
* The completed AST for this query, with any missing primary keys added to
|
|
44
|
+
* orderBy and start.
|
|
45
|
+
*/
|
|
46
|
+
readonly ast: AST;
|
|
47
|
+
readonly customQueryID: CustomQueryID | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Associates a name and arguments with this query for custom query tracking.
|
|
50
|
+
* This is used internally to track named queries on the server.
|
|
51
|
+
*
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
nameAndArgs(name: string, args: ReadonlyArray<ReadonlyJSONValue>): Query<TSchema, TTable, TReturn, TContext>;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Helper function to resolve a query with context.
|
|
58
|
+
* This is used by binding libraries (React, Solid, etc.) to inject context
|
|
59
|
+
* into queries without exposing the QueryDelegate interface.
|
|
60
|
+
*
|
|
61
|
+
* This function calls the `withContext` method on queries that support it
|
|
62
|
+
* (such as ChainedQuery and RootNamedQuery) and returns the resolved query
|
|
63
|
+
* as a QueryInternals, which provides access to internal query details
|
|
64
|
+
* needed for materialization.
|
|
65
|
+
*
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
export declare function queryWithContext<TSchema extends ZeroSchema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext>(query: Query<TSchema, TTable, TReturn, TContext>, ctx: TContext): QueryInternals<TSchema, TTable, TReturn, TContext>;
|
|
69
|
+
export type AnyQueryInternals = QueryInternals<ZeroSchema, string, any, any>;
|
|
70
|
+
//# sourceMappingURL=query-internals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-internals.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-internals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAEtC,eAAO,MAAM,iBAAiB,eAA2B,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc,CAC7B,OAAO,SAAS,UAAU,EAC1B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,QAAQ;IAER,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IAEnC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;;;;;;;;;;;;;;OAeG;IACH,IAAI,IAAI,MAAM,CAAC;IAEf;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAElB,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAElD;;;;;OAKG;IACH,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,CAAC,iBAAiB,CAAC,GACrC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;CAC9C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,SAAS,UAAU,EAC1B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,EACP,QAAQ,EAER,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAChD,GAAG,EAAE,QAAQ,GACZ,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAYpD;AAGD,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { assert } from "../../../shared/src/asserts.js";
|
|
2
|
+
export const queryInternalsTag = Symbol('QueryInternals');
|
|
3
|
+
/**
|
|
4
|
+
* Helper function to resolve a query with context.
|
|
5
|
+
* This is used by binding libraries (React, Solid, etc.) to inject context
|
|
6
|
+
* into queries without exposing the QueryDelegate interface.
|
|
7
|
+
*
|
|
8
|
+
* This function calls the `withContext` method on queries that support it
|
|
9
|
+
* (such as ChainedQuery and RootNamedQuery) and returns the resolved query
|
|
10
|
+
* as a QueryInternals, which provides access to internal query details
|
|
11
|
+
* needed for materialization.
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export function queryWithContext(query, ctx) {
|
|
16
|
+
assert('withContext' in query);
|
|
17
|
+
const withCtx = query;
|
|
18
|
+
// The returned query implements both Query and QueryInternals
|
|
19
|
+
return withCtx.withContext(ctx);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=query-internals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-internals.js","sourceRoot":"","sources":["../../../../../zql/src/query/query-internals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAQtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAgE1D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAM9B,KAAgD,EAChD,GAAa;IAEb,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,KAEf,CAAC;IACF,8DAA8D;IAC9D,OAAO,OAAO,CAAC,WAAW,CAAC,GAAG,CAK7B,CAAC;AACJ,CAAC"}
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import type { Expand, ExpandRecursive } from '../../../shared/src/expand.ts';
|
|
2
|
-
import type
|
|
3
|
-
import {
|
|
2
|
+
import { type SimpleOperator } from '../../../zero-protocol/src/ast.ts';
|
|
3
|
+
import type { Schema, Schema as ZeroSchema, LastInTuple, TableSchema } from '../../../zero-types/src/schema.ts';
|
|
4
4
|
import type { SchemaValueToTSType, SchemaValueWithCustomType } from '../../../zero-types/src/schema-value.ts';
|
|
5
|
-
import type { LastInTuple, TableSchema, Schema as ZeroSchema } from '../../../zero-types/src/schema.ts';
|
|
6
|
-
import type { Format, ViewFactory } from '../ivm/view.ts';
|
|
7
5
|
import type { ExpressionFactory, ParameterReference } from './expression.ts';
|
|
8
|
-
import type { CustomQueryID } from './named.ts';
|
|
9
|
-
import type { QueryDelegate } from './query-delegate.ts';
|
|
10
6
|
import type { TTL } from './ttl.ts';
|
|
11
|
-
import type { TypedView } from './typed-view.ts';
|
|
12
7
|
type Selector<E extends TableSchema> = keyof E['columns'];
|
|
13
8
|
export type NoCompoundTypeSelector<T extends TableSchema> = Exclude<Selector<T>, JsonSelectors<T> | ArraySelectors<T>>;
|
|
14
9
|
type JsonSelectors<E extends TableSchema> = {
|
|
@@ -19,8 +14,8 @@ type JsonSelectors<E extends TableSchema> = {
|
|
|
19
14
|
type ArraySelectors<E extends TableSchema> = {
|
|
20
15
|
[K in keyof E['columns']]: E['columns'][K] extends SchemaValueWithCustomType<any[]> ? K : never;
|
|
21
16
|
}[keyof E['columns']];
|
|
17
|
+
export type QueryReturn<Q> = Q extends Query<any, any, infer R, any> ? R : never;
|
|
22
18
|
export type QueryTable<Q> = Q extends Query<any, infer T, any> ? T : never;
|
|
23
|
-
export declare const delegateSymbol: unique symbol;
|
|
24
19
|
export type ExistsOptions = {
|
|
25
20
|
flip: boolean;
|
|
26
21
|
};
|
|
@@ -50,21 +45,19 @@ export type QueryResultType<Q> = Q extends Query<ZeroSchema, string, any> | ((..
|
|
|
50
45
|
* Queries are transactional in that all queries update at once when a new transaction
|
|
51
46
|
* has been committed on the client or server. No query results will reflect stale state.
|
|
52
47
|
*
|
|
53
|
-
*
|
|
54
|
-
* -
|
|
55
|
-
* -
|
|
56
|
-
* -
|
|
48
|
+
* Queries are executed through the Zero instance methods:
|
|
49
|
+
* - `zero.run(query)` - Execute once and return results
|
|
50
|
+
* - `zero.materialize(query)` - Create a live view that updates automatically
|
|
51
|
+
* - `zero.preload(query)` - Preload data into the cache
|
|
57
52
|
*
|
|
58
|
-
* The normal way to use a query
|
|
53
|
+
* The normal way to use a query is through your UI framework's bindings (e.g., `useQuery(query)`)
|
|
59
54
|
* or within a custom mutator.
|
|
60
55
|
*
|
|
61
|
-
*
|
|
62
|
-
* Remember that any `view` returned by `materialize` must be destroyed.
|
|
63
|
-
*
|
|
64
|
-
* A query can be run as a 1-shot query by awaiting it. E.g.,
|
|
56
|
+
* Example:
|
|
65
57
|
*
|
|
66
58
|
* ```ts
|
|
67
|
-
* const
|
|
59
|
+
* const query = z.query.issue.where('status', 'open').limit(10);
|
|
60
|
+
* const result = await z.run(query);
|
|
68
61
|
* ```
|
|
69
62
|
*
|
|
70
63
|
* For more information on how to use queries, see the documentation:
|
|
@@ -73,233 +66,22 @@ export type QueryResultType<Q> = Q extends Query<ZeroSchema, string, any> | ((..
|
|
|
73
66
|
* @typeParam TSchema The database schema type extending ZeroSchema
|
|
74
67
|
* @typeParam TTable The name of the table being queried, must be a key of TSchema['tables']
|
|
75
68
|
* @typeParam TReturn The return type of the query, defaults to PullRow<TTable, TSchema>
|
|
69
|
+
* @typeParam TContext The context type required for named queries, defaults to unknown
|
|
76
70
|
*/
|
|
77
|
-
export interface Query<TSchema extends ZeroSchema, TTable extends keyof TSchema['tables'] & string, TReturn = PullRow<TTable, TSchema
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
* A string that uniquely identifies this query. This can be used to determine
|
|
86
|
-
* if two queries are the same.
|
|
87
|
-
*
|
|
88
|
-
* The hash of a custom query, on the client, is the hash of its AST.
|
|
89
|
-
* The hash of a custom query, on the server, is the hash of its name and args.
|
|
90
|
-
*
|
|
91
|
-
* The first allows many client-side queries to be pinned to the same backend query.
|
|
92
|
-
* The second ensures we do not invoke a named query on the backend more than once for the same `name:arg` pairing.
|
|
93
|
-
*
|
|
94
|
-
* If the query.hash was of `name:args` then `useQuery` would de-dupe
|
|
95
|
-
* queries with divergent ASTs.
|
|
96
|
-
*
|
|
97
|
-
* QueryManager will hash based on `name:args` since it is speaking with
|
|
98
|
-
* the server which tracks queries by `name:args`.
|
|
99
|
-
*/
|
|
100
|
-
hash(): string;
|
|
101
|
-
readonly ast: AST;
|
|
102
|
-
readonly customQueryID: CustomQueryID | undefined;
|
|
103
|
-
nameAndArgs(name: string, args: ReadonlyArray<ReadonlyJSONValue>): Query<TSchema, TTable, TReturn>;
|
|
104
|
-
[delegateSymbol](delegate: QueryDelegate): Query<TSchema, TTable, TReturn>;
|
|
105
|
-
/**
|
|
106
|
-
* Related is used to add a related query to the current query. This is used
|
|
107
|
-
* for subqueries and joins. These relationships are defined in the
|
|
108
|
-
* relationships section of the schema. The result of the query will
|
|
109
|
-
* include the related rows in the result set as a sub object of the row.
|
|
110
|
-
*
|
|
111
|
-
* ```typescript
|
|
112
|
-
* const row = await z.query.users
|
|
113
|
-
* .related('posts');
|
|
114
|
-
* // {
|
|
115
|
-
* // id: '1',
|
|
116
|
-
* // posts: [
|
|
117
|
-
* // ...
|
|
118
|
-
* // ]
|
|
119
|
-
* // }
|
|
120
|
-
* ```
|
|
121
|
-
* If you want to add a subquery to the related query, you can do so by
|
|
122
|
-
* providing a callback function that receives the related query as an argument.
|
|
123
|
-
*
|
|
124
|
-
* ```typescript
|
|
125
|
-
* const row = await z.query.users
|
|
126
|
-
* .related('posts', q => q.where('published', true));
|
|
127
|
-
* // {
|
|
128
|
-
* // id: '1',
|
|
129
|
-
* // posts: [
|
|
130
|
-
* // {published: true, ...},
|
|
131
|
-
* // ...
|
|
132
|
-
* // ]
|
|
133
|
-
* // }
|
|
134
|
-
* ```
|
|
135
|
-
*
|
|
136
|
-
* @param relationship The name of the relationship
|
|
137
|
-
*/
|
|
138
|
-
related<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship): Query<TSchema, TTable, AddSubreturn<TReturn, DestRow<TTable, TSchema, TRelationship>, TRelationship>>;
|
|
139
|
-
related<TRelationship extends AvailableRelationships<TTable, TSchema>, TSub extends Query<TSchema, string, any>>(relationship: TRelationship, cb: (q: Query<TSchema, DestTableName<TTable, TSchema, TRelationship>, DestRow<TTable, TSchema, TRelationship>>) => TSub): Query<TSchema, TTable, AddSubreturn<TReturn, TSub extends Query<TSchema, string, infer TSubReturn> ? TSubReturn : never, TRelationship>>;
|
|
140
|
-
/**
|
|
141
|
-
* Represents a condition to filter the query results.
|
|
142
|
-
*
|
|
143
|
-
* @param field The column name to filter on.
|
|
144
|
-
* @param op The operator to use for filtering.
|
|
145
|
-
* @param value The value to compare against.
|
|
146
|
-
*
|
|
147
|
-
* @returns A new query instance with the applied filter.
|
|
148
|
-
*
|
|
149
|
-
* @example
|
|
150
|
-
*
|
|
151
|
-
* ```typescript
|
|
152
|
-
* const query = db.query('users')
|
|
153
|
-
* .where('age', '>', 18)
|
|
154
|
-
* .where('name', 'LIKE', '%John%');
|
|
155
|
-
* ```
|
|
156
|
-
*/
|
|
157
|
-
where<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>, TOperator extends SimpleOperator>(field: TSelector, op: TOperator, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, TOperator> | ParameterReference): Query<TSchema, TTable, TReturn>;
|
|
158
|
-
/**
|
|
159
|
-
* Represents a condition to filter the query results.
|
|
160
|
-
*
|
|
161
|
-
* This overload is used when the operator is '='.
|
|
162
|
-
*
|
|
163
|
-
* @param field The column name to filter on.
|
|
164
|
-
* @param value The value to compare against.
|
|
165
|
-
*
|
|
166
|
-
* @returns A new query instance with the applied filter.
|
|
167
|
-
*
|
|
168
|
-
* @example
|
|
169
|
-
* ```typescript
|
|
170
|
-
* const query = db.query('users')
|
|
171
|
-
* .where('age', 18)
|
|
172
|
-
* ```
|
|
173
|
-
*/
|
|
174
|
-
where<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>>(field: TSelector, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, '='> | ParameterReference): Query<TSchema, TTable, TReturn>;
|
|
175
|
-
/**
|
|
176
|
-
* Represents a condition to filter the query results.
|
|
177
|
-
*
|
|
178
|
-
* @param expressionFactory A function that takes a query builder and returns an expression.
|
|
179
|
-
*
|
|
180
|
-
* @returns A new query instance with the applied filter.
|
|
181
|
-
*
|
|
182
|
-
* @example
|
|
183
|
-
* ```typescript
|
|
184
|
-
* const query = db.query('users')
|
|
185
|
-
* .where(({cmp, or}) => or(cmp('age', '>', 18), cmp('name', 'LIKE', '%John%')));
|
|
186
|
-
* ```
|
|
187
|
-
*/
|
|
188
|
-
where(expressionFactory: ExpressionFactory<TSchema, TTable>): Query<TSchema, TTable, TReturn>;
|
|
189
|
-
whereExists(relationship: AvailableRelationships<TTable, TSchema>, options?: ExistsOptions): Query<TSchema, TTable, TReturn>;
|
|
190
|
-
whereExists<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship, cb: (q: Query<TSchema, DestTableName<TTable, TSchema, TRelationship>>) => Query<TSchema, string>, options?: ExistsOptions): Query<TSchema, TTable, TReturn>;
|
|
191
|
-
/**
|
|
192
|
-
* Skips the rows of the query until row matches the given row. If opts is
|
|
193
|
-
* provided, it determines whether the match is inclusive.
|
|
194
|
-
*
|
|
195
|
-
* @param row The row to start from. This is a partial row object and only the provided
|
|
196
|
-
* fields will be used for the comparison.
|
|
197
|
-
* @param opts Optional options object that specifies whether the match is inclusive.
|
|
198
|
-
* If `inclusive` is true, the row will be included in the result.
|
|
199
|
-
* If `inclusive` is false, the row will be excluded from the result and the result
|
|
200
|
-
* will start from the next row.
|
|
201
|
-
*
|
|
202
|
-
* @returns A new query instance with the applied start condition.
|
|
203
|
-
*/
|
|
71
|
+
export interface Query<TSchema extends ZeroSchema, TTable extends keyof TSchema['tables'] & string, TReturn = PullRow<TTable, TSchema>, TContext = unknown> {
|
|
72
|
+
related<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship): Query<TSchema, TTable, AddSubreturn<TReturn, DestRow<TTable, TSchema, TRelationship>, TRelationship>, TContext>;
|
|
73
|
+
related<TRelationship extends AvailableRelationships<TTable, TSchema>, TSub extends Query<TSchema, string, any>>(relationship: TRelationship, cb: (q: Query<TSchema, DestTableName<TTable, TSchema, TRelationship>, DestRow<TTable, TSchema, TRelationship>>) => TSub): Query<TSchema, TTable, AddSubreturn<TReturn, TSub extends Query<TSchema, string, infer TSubReturn> ? TSubReturn : never, TRelationship>, TContext>;
|
|
74
|
+
where<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>, TOperator extends SimpleOperator>(field: TSelector, op: TOperator, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, TOperator> | ParameterReference): Query<TSchema, TTable, TReturn, TContext>;
|
|
75
|
+
where<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>>(field: TSelector, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, '='> | ParameterReference): Query<TSchema, TTable, TReturn, TContext>;
|
|
76
|
+
where(expressionFactory: ExpressionFactory<TSchema, TTable>): Query<TSchema, TTable, TReturn, TContext>;
|
|
77
|
+
whereExists(relationship: AvailableRelationships<TTable, TSchema>, options?: ExistsOptions): Query<TSchema, TTable, TReturn, TContext>;
|
|
78
|
+
whereExists<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship, cb: (q: Query<TSchema, DestTableName<TTable, TSchema, TRelationship>>) => Query<TSchema, string>, options?: ExistsOptions): Query<TSchema, TTable, TReturn, TContext>;
|
|
204
79
|
start(row: Partial<PullRow<TTable, TSchema>>, opts?: {
|
|
205
80
|
inclusive: boolean;
|
|
206
|
-
}): Query<TSchema, TTable, TReturn>;
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
*
|
|
211
|
-
* @returns A new query instance with the applied limit.
|
|
212
|
-
*/
|
|
213
|
-
limit(limit: number): Query<TSchema, TTable, TReturn>;
|
|
214
|
-
/**
|
|
215
|
-
* Orders the results by a specified column. If multiple orderings are
|
|
216
|
-
* specified, the results will be ordered by the first column, then the
|
|
217
|
-
* second column, and so on.
|
|
218
|
-
*
|
|
219
|
-
* @param field The column name to order by.
|
|
220
|
-
* @param direction The direction to order the results (ascending or descending).
|
|
221
|
-
*
|
|
222
|
-
* @returns A new query instance with the applied order.
|
|
223
|
-
*/
|
|
224
|
-
orderBy<TSelector extends Selector<PullTableSchema<TTable, TSchema>>>(field: TSelector, direction: 'asc' | 'desc'): Query<TSchema, TTable, TReturn>;
|
|
225
|
-
/**
|
|
226
|
-
* Limits the number of rows returned by the query to a single row and then
|
|
227
|
-
* unpacks the result so that you do not get an array of rows but a single
|
|
228
|
-
* row. This is useful when you expect only one row to be returned and want to
|
|
229
|
-
* work with the row directly.
|
|
230
|
-
*
|
|
231
|
-
* If the query returns no rows, the result will be `undefined`.
|
|
232
|
-
*
|
|
233
|
-
* @returns A new query instance with the applied limit to one row.
|
|
234
|
-
*/
|
|
235
|
-
one(): Query<TSchema, TTable, TReturn | undefined>;
|
|
236
|
-
/**
|
|
237
|
-
* Creates a materialized view of the query. This is a view that will be kept
|
|
238
|
-
* in memory and updated as the query results change.
|
|
239
|
-
*
|
|
240
|
-
* Most of the time you will want to use the `useQuery` hook or the
|
|
241
|
-
* `run`/`then` method to get the results of a query. This method is only
|
|
242
|
-
* needed if you want to access to lower level APIs of the view.
|
|
243
|
-
*
|
|
244
|
-
* @param ttl Time To Live. This is the amount of time to keep the rows
|
|
245
|
-
* associated with this query after `TypedView.destroy`
|
|
246
|
-
* has been called.
|
|
247
|
-
*/
|
|
248
|
-
materialize(ttl?: TTL): TypedView<HumanReadable<TReturn>>;
|
|
249
|
-
/**
|
|
250
|
-
* Creates a custom materialized view using a provided factory function. This
|
|
251
|
-
* allows framework-specific bindings (like SolidJS, Vue, etc.) to create
|
|
252
|
-
* optimized views.
|
|
253
|
-
*
|
|
254
|
-
* @param factory A function that creates a custom view implementation
|
|
255
|
-
* @param ttl Optional Time To Live for the view's data after destruction
|
|
256
|
-
* @returns A custom view instance of type {@linkcode T}
|
|
257
|
-
*
|
|
258
|
-
* @example
|
|
259
|
-
* ```ts
|
|
260
|
-
* const view = query.materialize(createSolidViewFactory, '1m');
|
|
261
|
-
* ```
|
|
262
|
-
*/
|
|
263
|
-
materialize<T>(factory: ViewFactory<TSchema, TTable, TReturn, T>, ttl?: TTL): T;
|
|
264
|
-
/**
|
|
265
|
-
* Executes the query and returns the result once. The `options` parameter
|
|
266
|
-
* specifies whether to wait for complete results or return immediately,
|
|
267
|
-
* and the time to live for the query.
|
|
268
|
-
*
|
|
269
|
-
* - `{type: 'unknown'}`: Returns a snapshot of the data immediately.
|
|
270
|
-
* - `{type: 'complete'}`: Waits for the latest, complete results from the server.
|
|
271
|
-
*
|
|
272
|
-
* By default, `run` uses `{type: 'unknown'}` to avoid waiting for the server.
|
|
273
|
-
*
|
|
274
|
-
* `Query` implements `PromiseLike`, and calling `then` on it will invoke `run`
|
|
275
|
-
* with the default behavior (`unknown`).
|
|
276
|
-
*
|
|
277
|
-
* @param options Options to control the result type.
|
|
278
|
-
* @param options.type The type of result to return.
|
|
279
|
-
* @param options.ttl Time To Live. This is the amount of time to keep the rows
|
|
280
|
-
* associated with this query after the returned promise has
|
|
281
|
-
* resolved.
|
|
282
|
-
* @returns A promise resolving to the query result.
|
|
283
|
-
*
|
|
284
|
-
* @example
|
|
285
|
-
* ```js
|
|
286
|
-
* const result = await query.run({type: 'complete', ttl: '1m'});
|
|
287
|
-
* ```
|
|
288
|
-
*/
|
|
289
|
-
run(options?: RunOptions): Promise<HumanReadable<TReturn>>;
|
|
290
|
-
/**
|
|
291
|
-
* Preload loads the data into the clients cache without keeping it in memory.
|
|
292
|
-
* This is useful for preloading data that will be used later.
|
|
293
|
-
*
|
|
294
|
-
* @param options Options for preloading the query.
|
|
295
|
-
* @param options.ttl Time To Live. This is the amount of time to keep the rows
|
|
296
|
-
* associated with this query after {@linkcode cleanup} has
|
|
297
|
-
* been called.
|
|
298
|
-
*/
|
|
299
|
-
preload(options?: PreloadOptions): {
|
|
300
|
-
cleanup: () => void;
|
|
301
|
-
complete: Promise<void>;
|
|
302
|
-
};
|
|
81
|
+
}): Query<TSchema, TTable, TReturn, TContext>;
|
|
82
|
+
limit(limit: number): Query<TSchema, TTable, TReturn, TContext>;
|
|
83
|
+
orderBy<TSelector extends Selector<PullTableSchema<TTable, TSchema>>>(field: TSelector, direction: 'asc' | 'desc'): Query<TSchema, TTable, TReturn, TContext>;
|
|
84
|
+
one(): Query<TSchema, TTable, TReturn | undefined, TContext>;
|
|
303
85
|
}
|
|
304
86
|
export type PreloadOptions = {
|
|
305
87
|
/**
|
|
@@ -335,7 +117,7 @@ export type HumanReadableRecursive<T> = undefined extends T ? ExpandRecursive<T>
|
|
|
335
117
|
*/
|
|
336
118
|
export type RunOptions = {
|
|
337
119
|
type: 'unknown' | 'complete';
|
|
338
|
-
ttl?: TTL;
|
|
120
|
+
ttl?: TTL | undefined;
|
|
339
121
|
};
|
|
340
122
|
export declare const DEFAULT_RUN_OPTIONS_UNKNOWN: {
|
|
341
123
|
readonly type: "unknown";
|
|
@@ -343,5 +125,6 @@ export declare const DEFAULT_RUN_OPTIONS_UNKNOWN: {
|
|
|
343
125
|
export declare const DEFAULT_RUN_OPTIONS_COMPLETE: {
|
|
344
126
|
readonly type: "complete";
|
|
345
127
|
};
|
|
128
|
+
export type AnyQuery = Query<Schema, string, any, any>;
|
|
346
129
|
export {};
|
|
347
130
|
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAE,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAC3E,OAAO,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../zql/src/query/query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../zql/src/query/query.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,MAAM,mCAAmC,CAAC;AAyStE,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,IAAI,EAAE,SAAS;CACP,CAAC;AAEX,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,IAAI,EAAE,UAAU;CACR,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
2
|
+
import type { ReadonlyJSONValue } from '../../../shared/src/json.ts';
|
|
3
|
+
import type { SimpleOperator } from '../../../zero-protocol/src/ast.ts';
|
|
4
|
+
import type { Schema } from '../../../zero-types/src/schema.ts';
|
|
5
|
+
import { ChainedQuery } from './chained-query.ts';
|
|
6
|
+
import type { DefineQueryFunc } from './define-query.ts';
|
|
7
|
+
import type { ExpressionFactory, ParameterReference } from './expression.ts';
|
|
8
|
+
import type { CustomQueryID } from './named.ts';
|
|
9
|
+
import { type AvailableRelationships, type DestTableName, type ExistsOptions, type GetFilterType, type NoCompoundTypeSelector, type PullRow, type PullTableSchema, type Query } from './query.ts';
|
|
10
|
+
/**
|
|
11
|
+
* Root named query that has a name, input validation, and a function to execute.
|
|
12
|
+
* This is the base query that doesn't chain from another query.
|
|
13
|
+
*/
|
|
14
|
+
export declare class RootNamedQuery<TName extends string, TSchema extends Schema, TTable extends keyof TSchema['tables'] & string, TReturn, TContext, TOutput extends ReadonlyJSONValue | undefined, TInput> implements Query<TSchema, TTable, TReturn, TContext> {
|
|
15
|
+
#private;
|
|
16
|
+
constructor(name: TName, func: DefineQueryFunc<TSchema, TTable, TReturn, TContext, TOutput>, input: TInput, validator: StandardSchemaV1<TInput, TOutput> | undefined);
|
|
17
|
+
withContext(ctx: TContext): Query<TSchema, TTable, TReturn, TContext>;
|
|
18
|
+
one(): ChainedQuery<TSchema, TTable, TReturn | undefined, TContext>;
|
|
19
|
+
whereExists<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship, options?: ExistsOptions): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
20
|
+
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>;
|
|
21
|
+
related<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship): ChainedQuery<TSchema, TTable, TReturn & Record<string, unknown>, TContext>;
|
|
22
|
+
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>;
|
|
23
|
+
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>;
|
|
24
|
+
where<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>>(field: TSelector, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, '='> | ParameterReference): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
25
|
+
where(expressionFactory: ExpressionFactory<TSchema, TTable>): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
26
|
+
start(row: Partial<PullRow<TTable, TSchema>>, opts?: {
|
|
27
|
+
inclusive: boolean;
|
|
28
|
+
}): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
29
|
+
limit(limit: number): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
30
|
+
orderBy<TSelector extends keyof PullTableSchema<TTable, TSchema>['columns']>(field: TSelector, direction: 'asc' | 'desc'): ChainedQuery<TSchema, TTable, TReturn, TContext>;
|
|
31
|
+
get customQueryID(): CustomQueryID;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=root-named-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root-named-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/root-named-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { ChainedQuery } from "./chained-query.js";
|
|
2
|
+
import { queryWithContext } from "./query-internals.js";
|
|
3
|
+
import {} from "./query.js";
|
|
4
|
+
/**
|
|
5
|
+
* Root named query that has a name, input validation, and a function to execute.
|
|
6
|
+
* This is the base query that doesn't chain from another query.
|
|
7
|
+
*/
|
|
8
|
+
export class RootNamedQuery {
|
|
9
|
+
#name;
|
|
10
|
+
#input;
|
|
11
|
+
#func;
|
|
12
|
+
#validator;
|
|
13
|
+
#cachedQuery;
|
|
14
|
+
constructor(name, func, input, validator) {
|
|
15
|
+
this.#name = name;
|
|
16
|
+
this.#func = func;
|
|
17
|
+
this.#input = input;
|
|
18
|
+
this.#validator = validator;
|
|
19
|
+
}
|
|
20
|
+
withContext(ctx) {
|
|
21
|
+
if (this.#cachedQuery) {
|
|
22
|
+
return this.#cachedQuery;
|
|
23
|
+
}
|
|
24
|
+
// This is a root query - call the function with the context
|
|
25
|
+
let output;
|
|
26
|
+
if (!this.#validator) {
|
|
27
|
+
// No validator, so input and output are the same
|
|
28
|
+
output = this.#input;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const result = this.#validator['~standard'].validate(this.#input);
|
|
32
|
+
if (result instanceof Promise) {
|
|
33
|
+
throw new Error(`Async validators are not supported. Query name ${this.#name}`);
|
|
34
|
+
}
|
|
35
|
+
if (result.issues) {
|
|
36
|
+
throw new Error(`Validation failed for query ${this.#name}: ${result.issues
|
|
37
|
+
.map(issue => issue.message)
|
|
38
|
+
.join(', ')}`);
|
|
39
|
+
}
|
|
40
|
+
output = result.value;
|
|
41
|
+
}
|
|
42
|
+
// TODO: Refactor to deal with the name and args at a different abstraction
|
|
43
|
+
// layer.
|
|
44
|
+
this.#cachedQuery = queryWithContext(this.#func({ ctx, args: output }), ctx).nameAndArgs(this.#name, this.#input === undefined ? [] : [this.#input]);
|
|
45
|
+
return this.#cachedQuery;
|
|
46
|
+
}
|
|
47
|
+
#withChain(fn) {
|
|
48
|
+
return new ChainedQuery(this, fn);
|
|
49
|
+
}
|
|
50
|
+
// Query interface methods
|
|
51
|
+
one() {
|
|
52
|
+
return this.#withChain(q => q.one());
|
|
53
|
+
}
|
|
54
|
+
whereExists(relationship, cbOrOptions, options) {
|
|
55
|
+
if (typeof cbOrOptions === 'function') {
|
|
56
|
+
return this.#withChain(q => q.whereExists(relationship, cbOrOptions, options));
|
|
57
|
+
}
|
|
58
|
+
return this.#withChain(q => q.whereExists(relationship, cbOrOptions));
|
|
59
|
+
}
|
|
60
|
+
related(relationship, cb) {
|
|
61
|
+
if (cb) {
|
|
62
|
+
return this.#withChain(q => q.related(relationship, cb));
|
|
63
|
+
}
|
|
64
|
+
return this.#withChain(q => q.related(relationship));
|
|
65
|
+
}
|
|
66
|
+
where(fieldOrExpressionFactory, opOrValue, value) {
|
|
67
|
+
if (typeof fieldOrExpressionFactory === 'function') {
|
|
68
|
+
return this.#withChain(q => q.where(fieldOrExpressionFactory));
|
|
69
|
+
}
|
|
70
|
+
if (value !== undefined) {
|
|
71
|
+
return this.#withChain(q =>
|
|
72
|
+
// Cast to bypass TypeScript's strict type checking - this proxy method needs runtime flexibility
|
|
73
|
+
q.where(fieldOrExpressionFactory, opOrValue, value));
|
|
74
|
+
}
|
|
75
|
+
return this.#withChain(q =>
|
|
76
|
+
// Cast to bypass TypeScript's strict type checking - this proxy method needs runtime flexibility
|
|
77
|
+
q.where(fieldOrExpressionFactory, opOrValue));
|
|
78
|
+
}
|
|
79
|
+
start(row, opts) {
|
|
80
|
+
return this.#withChain(q => q.start(row, opts));
|
|
81
|
+
}
|
|
82
|
+
limit(limit) {
|
|
83
|
+
return this.#withChain(q => q.limit(limit));
|
|
84
|
+
}
|
|
85
|
+
orderBy(field, direction) {
|
|
86
|
+
return this.#withChain(q => q.orderBy(field, direction));
|
|
87
|
+
}
|
|
88
|
+
get customQueryID() {
|
|
89
|
+
return {
|
|
90
|
+
name: this.#name,
|
|
91
|
+
args: this.#input === undefined ? [] : [this.#input],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=root-named-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root-named-query.js","sourceRoot":"","sources":["../../../../../zql/src/query/root-named-query.ts"],"names":[],"mappings":"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"}
|