@rocicorp/zero 0.25.0-canary.14 → 0.25.0-canary.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/shared/src/deep-merge.d.ts +6 -4
- package/out/shared/src/deep-merge.d.ts.map +1 -1
- package/out/shared/src/deep-merge.js +2 -1
- package/out/shared/src/deep-merge.js.map +1 -1
- package/out/shared/src/record-proxy.d.ts +13 -0
- package/out/shared/src/record-proxy.d.ts.map +1 -0
- package/out/shared/src/record-proxy.js +59 -0
- package/out/shared/src/record-proxy.js.map +1 -0
- package/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js +4 -2
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/zero/package.json.js +1 -1
- package/out/zero/src/pg.js +4 -3
- package/out/zero/src/server.js +4 -3
- package/out/zero/src/zero.js +11 -3
- package/out/zero/src/zero.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 +20 -13
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +16 -0
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +28 -0
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +1 -1
- package/out/zero-cache/src/server/otel-diag-logger.js +1 -22
- package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
- package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
- package/out/zero-cache/src/server/otel-start.js +1 -5
- package/out/zero-cache/src/server/otel-start.js.map +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +6 -1
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.js +3 -2
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +8 -9
- 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 +17 -11
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +2 -2
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +19 -4
- package/out/zero-cache/src/services/view-syncer/snapshotter.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 +1 -7
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-client/src/client/crud-impl.d.ts +11 -0
- package/out/zero-client/src/client/crud-impl.d.ts.map +1 -0
- package/out/zero-client/src/client/crud-impl.js +102 -0
- package/out/zero-client/src/client/crud-impl.js.map +1 -0
- package/out/zero-client/src/client/crud.d.ts +7 -40
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/crud.js +21 -107
- package/out/zero-client/src/client/crud.js.map +1 -1
- package/out/zero-client/src/client/custom.d.ts +2 -2
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.js +5 -50
- package/out/zero-client/src/client/custom.js.map +1 -1
- package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
- package/out/zero-client/src/client/ivm-branch.js +20 -13
- package/out/zero-client/src/client/ivm-branch.js.map +1 -1
- package/out/zero-client/src/client/make-mutate-property.d.ts +1 -1
- package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -1
- package/out/zero-client/src/client/make-mutate-property.js.map +1 -1
- package/out/zero-client/src/client/make-replicache-mutators.d.ts.map +1 -1
- package/out/zero-client/src/client/make-replicache-mutators.js +14 -7
- package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
- package/out/zero-client/src/client/version.js +1 -1
- package/out/zero-client/src/client/zero.d.ts +9 -7
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +11 -4
- package/out/zero-client/src/client/zero.js.map +1 -1
- package/out/zero-client/src/mod.d.ts +7 -6
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-react/src/use-query.d.ts +6 -4
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-react/src/use-query.js +2 -1
- package/out/zero-react/src/use-query.js.map +1 -1
- package/out/zero-server/src/custom.d.ts +44 -5
- package/out/zero-server/src/custom.d.ts.map +1 -1
- package/out/zero-server/src/custom.js +98 -35
- package/out/zero-server/src/custom.js.map +1 -1
- package/out/zero-server/src/zql-database.d.ts +1 -1
- package/out/zero-server/src/zql-database.d.ts.map +1 -1
- package/out/zero-server/src/zql-database.js +5 -13
- package/out/zero-server/src/zql-database.js.map +1 -1
- package/out/zero-solid/src/solid-view.d.ts +7 -2
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/zero-solid/src/solid-view.js +3 -32
- package/out/zero-solid/src/solid-view.js.map +1 -1
- package/out/zero-solid/src/use-query.d.ts +5 -3
- package/out/zero-solid/src/use-query.d.ts.map +1 -1
- package/out/zero-solid/src/use-query.js +5 -1
- package/out/zero-solid/src/use-query.js.map +1 -1
- package/out/zero-types/src/schema.d.ts +4 -4
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +1 -11
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/error.js +1 -10
- package/out/zql/src/error.js.map +1 -1
- package/out/zql/src/ivm/array-view.d.ts +1 -1
- package/out/zql/src/ivm/array-view.d.ts.map +1 -1
- package/out/zql/src/ivm/array-view.js +2 -0
- package/out/zql/src/ivm/array-view.js.map +1 -1
- package/out/zql/src/ivm/exists.d.ts +3 -2
- package/out/zql/src/ivm/exists.d.ts.map +1 -1
- package/out/zql/src/ivm/exists.js +25 -23
- package/out/zql/src/ivm/exists.js.map +1 -1
- package/out/zql/src/ivm/fan-in.d.ts +3 -3
- package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
- package/out/zql/src/ivm/fan-in.js +6 -5
- package/out/zql/src/ivm/fan-in.js.map +1 -1
- package/out/zql/src/ivm/fan-out.d.ts +2 -2
- package/out/zql/src/ivm/fan-out.d.ts.map +1 -1
- package/out/zql/src/ivm/fan-out.js +5 -5
- package/out/zql/src/ivm/fan-out.js.map +1 -1
- package/out/zql/src/ivm/filter-operators.d.ts +5 -5
- package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
- package/out/zql/src/ivm/filter-operators.js +8 -8
- package/out/zql/src/ivm/filter-operators.js.map +1 -1
- package/out/zql/src/ivm/filter-push.d.ts +2 -1
- package/out/zql/src/ivm/filter-push.d.ts.map +1 -1
- package/out/zql/src/ivm/filter-push.js +5 -5
- package/out/zql/src/ivm/filter-push.js.map +1 -1
- package/out/zql/src/ivm/filter.d.ts +2 -2
- package/out/zql/src/ivm/filter.d.ts.map +1 -1
- package/out/zql/src/ivm/filter.js +4 -4
- package/out/zql/src/ivm/filter.js.map +1 -1
- package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
- package/out/zql/src/ivm/flipped-join.js +100 -83
- package/out/zql/src/ivm/flipped-join.js.map +1 -1
- package/out/zql/src/ivm/join.d.ts.map +1 -1
- package/out/zql/src/ivm/join.js +52 -50
- package/out/zql/src/ivm/join.js.map +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +4 -4
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
- package/out/zql/src/ivm/memory-source.d.ts +3 -3
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +7 -4
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/operator.d.ts +10 -3
- package/out/zql/src/ivm/operator.d.ts.map +1 -1
- package/out/zql/src/ivm/operator.js.map +1 -1
- package/out/zql/src/ivm/push-accumulated.d.ts +1 -1
- package/out/zql/src/ivm/push-accumulated.d.ts.map +1 -1
- package/out/zql/src/ivm/push-accumulated.js +8 -8
- package/out/zql/src/ivm/push-accumulated.js.map +1 -1
- package/out/zql/src/ivm/skip.d.ts +1 -1
- package/out/zql/src/ivm/skip.d.ts.map +1 -1
- package/out/zql/src/ivm/skip.js +8 -3
- package/out/zql/src/ivm/skip.js.map +1 -1
- package/out/zql/src/ivm/source.d.ts +15 -7
- package/out/zql/src/ivm/source.d.ts.map +1 -1
- package/out/zql/src/ivm/stream.d.ts +2 -0
- package/out/zql/src/ivm/stream.d.ts.map +1 -1
- package/out/zql/src/ivm/stream.js +5 -14
- package/out/zql/src/ivm/stream.js.map +1 -1
- package/out/zql/src/ivm/take.d.ts +1 -1
- package/out/zql/src/ivm/take.d.ts.map +1 -1
- package/out/zql/src/ivm/take.js +164 -147
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/union-fan-in.d.ts +2 -2
- package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
- package/out/zql/src/ivm/union-fan-in.js +7 -7
- package/out/zql/src/ivm/union-fan-in.js.map +1 -1
- package/out/zql/src/ivm/union-fan-out.d.ts +1 -1
- package/out/zql/src/ivm/union-fan-out.d.ts.map +1 -1
- package/out/zql/src/ivm/union-fan-out.js +3 -3
- package/out/zql/src/ivm/union-fan-out.js.map +1 -1
- package/out/zql/src/mutate/crud.d.ts +139 -0
- package/out/zql/src/mutate/crud.d.ts.map +1 -0
- package/out/zql/src/mutate/crud.js +53 -0
- package/out/zql/src/mutate/crud.js.map +1 -0
- package/out/zql/src/mutate/custom.d.ts +12 -53
- package/out/zql/src/mutate/custom.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.js +1 -5
- package/out/zql/src/mutate/custom.js.map +1 -1
- package/out/zql/src/mutate/mutator-registry.d.ts +33 -32
- package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -1
- package/out/zql/src/mutate/mutator-registry.js +26 -25
- package/out/zql/src/mutate/mutator-registry.js.map +1 -1
- package/out/zql/src/mutate/mutator.d.ts +48 -58
- package/out/zql/src/mutate/mutator.d.ts.map +1 -1
- package/out/zql/src/mutate/mutator.js +12 -8
- package/out/zql/src/mutate/mutator.js.map +1 -1
- package/out/zql/src/planner/planner-builder.d.ts +2 -1
- package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
- package/out/zql/src/planner/planner-builder.js +5 -5
- package/out/zql/src/planner/planner-builder.js.map +1 -1
- package/out/zql/src/planner/planner-graph.d.ts +3 -1
- package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
- package/out/zql/src/planner/planner-graph.js +5 -5
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/query/abstract-query.d.ts +2 -3
- package/out/zql/src/query/abstract-query.d.ts.map +1 -1
- package/out/zql/src/query/abstract-query.js +0 -3
- package/out/zql/src/query/abstract-query.js.map +1 -1
- package/out/zql/src/query/create-builder.d.ts.map +1 -1
- package/out/zql/src/query/create-builder.js +7 -36
- package/out/zql/src/query/create-builder.js.map +1 -1
- package/out/zql/src/query/measure-push-operator.d.ts +1 -1
- package/out/zql/src/query/measure-push-operator.d.ts.map +1 -1
- package/out/zql/src/query/measure-push-operator.js +2 -2
- package/out/zql/src/query/measure-push-operator.js.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +2 -2
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-registry.d.ts +87 -79
- package/out/zql/src/query/query-registry.d.ts.map +1 -1
- package/out/zql/src/query/query-registry.js +44 -38
- package/out/zql/src/query/query-registry.js.map +1 -1
- package/out/zql/src/query/query.d.ts +3 -18
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.d.ts +2 -2
- package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.js.map +1 -1
- package/out/zql/src/query/static-query.d.ts +1 -0
- package/out/zql/src/query/static-query.d.ts.map +1 -1
- package/out/zql/src/query/static-query.js +2 -2
- package/out/zql/src/query/static-query.js.map +1 -1
- package/out/zqlite/src/internal/sql-inline.d.ts +13 -0
- package/out/zqlite/src/internal/sql-inline.d.ts.map +1 -0
- package/out/zqlite/src/internal/sql-inline.js +45 -0
- package/out/zqlite/src/internal/sql-inline.js.map +1 -0
- package/out/zqlite/src/sqlite-cost-model.d.ts.map +1 -1
- package/out/zqlite/src/sqlite-cost-model.js +2 -2
- package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts +3 -2
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +5 -2
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,82 +1,102 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
2
2
|
import { type DeepMerge } from '../../../shared/src/deep-merge.ts';
|
|
3
|
-
import type { Expand } from '../../../shared/src/expand.ts';
|
|
4
3
|
import type { ReadonlyJSONValue } from '../../../shared/src/json.ts';
|
|
5
4
|
import type { DefaultContext, DefaultSchema } from '../../../zero-types/src/default-types.ts';
|
|
6
5
|
import type { Schema } from '../../../zero-types/src/schema.ts';
|
|
7
6
|
import type { PullRow, Query } from './query.ts';
|
|
8
|
-
|
|
9
|
-
* CustomQuery is what is returned from defineQueries. It supports a builder
|
|
10
|
-
* pattern where args is set before calling toQuery(context).
|
|
11
|
-
*
|
|
12
|
-
* const queries = defineQueries(...);
|
|
13
|
-
* queries.foo.bar satisfies CustomQuery<...>
|
|
14
|
-
*
|
|
15
|
-
* Usage:
|
|
16
|
-
* queries.foo(args).toQuery(ctx)
|
|
17
|
-
*/
|
|
18
|
-
export type CustomQuery<TTable extends keyof TSchema['tables'] & string, TInput extends ReadonlyJSONValue | undefined, TSchema extends Schema = DefaultSchema, TReturn = PullRow<TTable, TSchema>, TContext = DefaultContext, THasArgs extends boolean = false> = {
|
|
19
|
-
/**
|
|
20
|
-
* Type-only phantom property to surface query types in a covariant position.
|
|
21
|
-
*/
|
|
22
|
-
'~': Expand<QueryTypes<TTable, TInput, never, TSchema, TReturn, TContext, THasArgs>>;
|
|
23
|
-
} & (THasArgs extends true ? unknown : undefined extends TInput ? {
|
|
24
|
-
(): CustomQuery<TTable, TInput, TSchema, TReturn, TContext, true>;
|
|
25
|
-
(args?: TInput): CustomQuery<TTable, TInput, TSchema, TReturn, TContext, true>;
|
|
26
|
-
} : {
|
|
27
|
-
(args: TInput): CustomQuery<TTable, TInput, TSchema, TReturn, TContext, true>;
|
|
28
|
-
}) & (THasArgs extends true ? {
|
|
29
|
-
toQuery(ctx: TContext): Query<TTable, TSchema, TReturn>;
|
|
30
|
-
} : unknown);
|
|
31
|
-
export declare function isQueryRegistry<Q extends QueryDefinitions<S, any>, S extends Schema = DefaultSchema>(obj: unknown): obj is QueryRegistry<Q, S>;
|
|
32
|
-
export type QueryTypes<TTable extends keyof TSchema['tables'] & string, TInput extends ReadonlyJSONValue | undefined, TOutput, TSchema extends Schema, TReturn, TContext, THasArgs extends boolean> = 'Query' & {
|
|
7
|
+
export type CustomQueryTypes<TTable extends keyof TSchema['tables'] & string, TInput extends ReadonlyJSONValue | undefined, TSchema extends Schema, TReturn, TContext> = 'Query' & {
|
|
33
8
|
readonly $tableName: TTable;
|
|
34
9
|
readonly $input: TInput;
|
|
35
|
-
readonly $output: TOutput;
|
|
36
10
|
readonly $schema: TSchema;
|
|
37
11
|
readonly $return: TReturn;
|
|
38
12
|
readonly $context: TContext;
|
|
39
|
-
readonly $hasArgs: THasArgs;
|
|
40
13
|
};
|
|
41
|
-
|
|
14
|
+
/**
|
|
15
|
+
* CustomQuery is returned from defineQueries. It is a callable that captures
|
|
16
|
+
* args and can be turned into a Query via {@link QueryRequest}.
|
|
17
|
+
*/
|
|
18
|
+
export type CustomQuery<TTable extends keyof TSchema['tables'] & string, TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined = TInput, TSchema extends Schema = DefaultSchema, TReturn = PullRow<TTable, TSchema>, TContext = DefaultContext> = {
|
|
19
|
+
readonly 'queryName': string;
|
|
20
|
+
readonly 'fn': QueryDefinitionFunction<TTable, TInput, TReturn, TContext>;
|
|
21
|
+
readonly '~': CustomQueryTypes<TTable, TInput, TSchema, TReturn, TContext>;
|
|
22
|
+
} & CustomQueryCallable<TTable, TInput, TOutput, TSchema, TReturn, TContext>;
|
|
23
|
+
type CustomQueryCallable<TTable extends keyof TSchema['tables'] & string, TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TSchema extends Schema = DefaultSchema, TReturn = PullRow<TTable, TSchema>, TContext = DefaultContext> = [TInput] extends [undefined] ? () => QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext> : undefined extends TInput ? {
|
|
24
|
+
(): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;
|
|
25
|
+
(args?: TInput): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;
|
|
26
|
+
} : {
|
|
27
|
+
(args: TInput): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;
|
|
28
|
+
};
|
|
29
|
+
export type AnyCustomQuery = CustomQuery<string, any, any, Schema, any, any>;
|
|
30
|
+
export declare function isQuery(value: unknown): value is AnyCustomQuery;
|
|
31
|
+
export type QueryRequestTypes<TTable extends keyof TSchema['tables'] & string, TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TSchema extends Schema, TReturn, TContext> = 'QueryRequest' & {
|
|
42
32
|
readonly $tableName: TTable;
|
|
43
33
|
readonly $input: TInput;
|
|
44
34
|
readonly $output: TOutput;
|
|
35
|
+
readonly $schema: TSchema;
|
|
45
36
|
readonly $return: TReturn;
|
|
46
37
|
readonly $context: TContext;
|
|
47
38
|
};
|
|
39
|
+
export type QueryRequest<TTable extends keyof TSchema['tables'] & string, TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TSchema extends Schema, TReturn, TContext> = {
|
|
40
|
+
readonly 'query': CustomQuery<TTable, TInput, TOutput, TSchema, TReturn, TContext>;
|
|
41
|
+
readonly 'args': TInput;
|
|
42
|
+
readonly '~': QueryRequestTypes<TTable, TInput, TOutput, TSchema, TReturn, TContext>;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* A shared type that can be a query request or a query builder.
|
|
46
|
+
*
|
|
47
|
+
* If it is a query request, it will be converted to a {@link Query} using the context.
|
|
48
|
+
* Otherwise, it will be returned as is.
|
|
49
|
+
*/
|
|
50
|
+
export type QueryOrQueryRequest<TTable extends keyof TSchema['tables'] & string, TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TSchema extends Schema, TReturn, TContext> = QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext> | Query<TTable, TSchema, TReturn>;
|
|
51
|
+
/**
|
|
52
|
+
* Converts a query request to a {@link Query} using the context,
|
|
53
|
+
* or returns the query as is.
|
|
54
|
+
*
|
|
55
|
+
* @param query - The query request or query builder to convert
|
|
56
|
+
* @param context - The context to use to convert the query request
|
|
57
|
+
*/
|
|
58
|
+
export declare const addContextToQuery: <TTable extends keyof TSchema["tables"] & string, TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TSchema extends Schema, TReturn, TContext>(query: QueryOrQueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>, context: TContext) => Query<TTable, TSchema, TReturn>;
|
|
59
|
+
export declare function isQueryRegistry(obj: unknown): obj is AnyQueryRegistry;
|
|
48
60
|
export type QueryRegistryTypes<TSchema extends Schema> = 'QueryRegistry' & {
|
|
49
61
|
readonly $schema: TSchema;
|
|
50
62
|
};
|
|
51
|
-
export type QueryRegistry<QD extends QueryDefinitions
|
|
52
|
-
['~']:
|
|
63
|
+
export type QueryRegistry<QD extends QueryDefinitions, S extends Schema> = ToQueryTree<QD, S> & {
|
|
64
|
+
['~']: QueryRegistryTypes<S>;
|
|
53
65
|
};
|
|
54
|
-
type
|
|
55
|
-
|
|
56
|
-
|
|
66
|
+
export type AnyQueryRegistry = {
|
|
67
|
+
['~']: QueryRegistryTypes<Schema>;
|
|
68
|
+
[key: string]: unknown;
|
|
57
69
|
};
|
|
58
|
-
|
|
59
|
-
readonly [K in keyof QD]: QD[K] extends AnyQueryDefinition ? CustomQuery<QD[K]['~']['$tableName'],
|
|
60
|
-
|
|
70
|
+
type ToQueryTree<QD extends QueryDefinitions, S extends Schema> = {
|
|
71
|
+
readonly [K in keyof QD]: QD[K] extends AnyQueryDefinition ? CustomQuery<QD[K]['~']['$tableName'], QD[K]['~']['$input'], QD[K]['~']['$output'], S, QD[K]['~']['$return'], QD[K]['~']['$context']> : QD[K] extends QueryDefinitions ? ToQueryTree<QD[K], S> : never;
|
|
72
|
+
};
|
|
73
|
+
export type FromQueryTree<QD extends QueryDefinitions, S extends Schema> = {
|
|
74
|
+
readonly [K in keyof QD]: QD[K] extends AnyQueryDefinition ? CustomQuery<QD[K]['~']['$tableName'], ReadonlyJSONValue | undefined, ReadonlyJSONValue | undefined, S, QD[K]['~']['$return'], QD[K]['~']['$context']> : QD[K] extends QueryDefinitions ? FromQueryTree<QD[K], S> : never;
|
|
61
75
|
}[keyof QD];
|
|
62
|
-
type
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
76
|
+
export type QueryDefinitions = {
|
|
77
|
+
readonly [key: string]: AnyQueryDefinition | QueryDefinitions;
|
|
78
|
+
};
|
|
79
|
+
export type QueryDefinitionTypes<TTable extends string, TInput extends ReadonlyJSONValue | undefined, TOutput, TReturn, TContext> = 'QueryDefinition' & {
|
|
80
|
+
readonly $tableName: TTable;
|
|
81
|
+
readonly $input: TInput;
|
|
82
|
+
readonly $output: TOutput;
|
|
83
|
+
readonly $return: TReturn;
|
|
84
|
+
readonly $context: TContext;
|
|
85
|
+
};
|
|
66
86
|
/**
|
|
67
87
|
* A query definition is the return type of `defineQuery()`.
|
|
68
88
|
*/
|
|
69
|
-
export type QueryDefinition<TTable extends string, TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TReturn, TContext = DefaultContext> =
|
|
70
|
-
'
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
*/
|
|
74
|
-
readonly '~': Expand<QueryDefinitionTypes<TTable, TInput, TOutput, TReturn, TContext>>;
|
|
75
|
-
};
|
|
76
|
-
export declare function isQueryDefinition<TTable extends keyof TSchema['tables'] & string, TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TSchema extends Schema = DefaultSchema, TReturn = PullRow<TTable, TSchema>, TContext = DefaultContext>(f: unknown): f is QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>;
|
|
77
|
-
export type QueryDefinitions<S extends Schema, Context> = {
|
|
78
|
-
readonly [key: string]: QueryDefinition<any, any, any, any, Context> | QueryDefinitions<S, Context>;
|
|
89
|
+
export type QueryDefinition<TTable extends string, TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TReturn, TContext = DefaultContext> = {
|
|
90
|
+
readonly 'fn': QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>;
|
|
91
|
+
readonly 'validator': StandardSchemaV1<TInput, TOutput> | undefined;
|
|
92
|
+
readonly '~': QueryDefinitionTypes<TTable, TInput, TOutput, TReturn, TContext>;
|
|
79
93
|
};
|
|
94
|
+
export type AnyQueryDefinition = QueryDefinition<any, any, any, any, any>;
|
|
95
|
+
export declare function isQueryDefinition(f: unknown): f is AnyQueryDefinition;
|
|
96
|
+
export type QueryDefinitionFunction<TTable extends string, TInput extends ReadonlyJSONValue | undefined, TReturn, TContext> = (options: {
|
|
97
|
+
args: TInput;
|
|
98
|
+
ctx: TContext;
|
|
99
|
+
}) => Query<TTable, Schema, TReturn>;
|
|
80
100
|
/**
|
|
81
101
|
* Defines a query to be used with {@link defineQueries}.
|
|
82
102
|
*
|
|
@@ -122,14 +142,8 @@ export type QueryDefinitions<S extends Schema, Context> = {
|
|
|
122
142
|
* @param queryFn - A function that receives `{args, ctx}` and returns a Query.
|
|
123
143
|
* @returns A {@link QueryDefinition} with validated arguments.
|
|
124
144
|
*/
|
|
125
|
-
export declare function defineQuery<TInput extends ReadonlyJSONValue | undefined, TContext = DefaultContext, TSchema extends Schema = DefaultSchema, TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] & string, TReturn = PullRow<TTable, TSchema>>(queryFn:
|
|
126
|
-
|
|
127
|
-
ctx: TContext;
|
|
128
|
-
}) => Query<TTable, TSchema, TReturn>): QueryDefinition<TTable, TInput, TInput, TReturn, TContext> & {};
|
|
129
|
-
export declare function defineQuery<TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TContext = DefaultContext, TSchema extends Schema = DefaultSchema, TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] & string, TReturn = PullRow<TTable, TSchema>>(validator: StandardSchemaV1<TInput, TOutput>, queryFn: (options: {
|
|
130
|
-
args: TOutput;
|
|
131
|
-
ctx: TContext;
|
|
132
|
-
}) => Query<TTable, TSchema, TReturn>): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext> & {};
|
|
145
|
+
export declare function defineQuery<TInput extends ReadonlyJSONValue | undefined, TContext = DefaultContext, TSchema extends Schema = DefaultSchema, TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] & string, TReturn = PullRow<TTable, TSchema>>(queryFn: QueryDefinitionFunction<TTable, TInput, TReturn, TContext>): QueryDefinition<TTable, TInput, TInput, TReturn, TContext>;
|
|
146
|
+
export declare function defineQuery<TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TContext = DefaultContext, TSchema extends Schema = DefaultSchema, TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] & string, TReturn = PullRow<TTable, TSchema>>(validator: StandardSchemaV1<TInput, TOutput>, queryFn: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>;
|
|
133
147
|
/**
|
|
134
148
|
* Returns a typed version of {@link defineQuery} with the schema and context
|
|
135
149
|
* types pre-specified. This enables better type inference when defining
|
|
@@ -137,12 +151,12 @@ export declare function defineQuery<TInput extends ReadonlyJSONValue | undefined
|
|
|
137
151
|
*
|
|
138
152
|
* @example
|
|
139
153
|
* ```ts
|
|
140
|
-
* const
|
|
154
|
+
* const zql = createBuilder(schema);
|
|
141
155
|
*
|
|
142
156
|
* // With both Schema and Context types
|
|
143
157
|
* const defineAppQuery = defineQueryWithType<AppSchema, AppContext>();
|
|
144
158
|
* const myQuery = defineAppQuery(({ctx}) =>
|
|
145
|
-
*
|
|
159
|
+
* zql.issue.where('userID', ctx.userID),
|
|
146
160
|
* );
|
|
147
161
|
*
|
|
148
162
|
* // With just Context type (Schema inferred)
|
|
@@ -169,19 +183,13 @@ export declare function defineQueryWithType<C>(): TypedDefineQuery<Schema, C>;
|
|
|
169
183
|
* defineQuery overloads but with Schema and Context pre-bound.
|
|
170
184
|
*/
|
|
171
185
|
type TypedDefineQuery<TSchema extends Schema, TContext> = {
|
|
172
|
-
<TArgs extends ReadonlyJSONValue | undefined, TReturn, TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] & string>(queryFn:
|
|
173
|
-
|
|
174
|
-
ctx: TContext;
|
|
175
|
-
}) => Query<TTable, TSchema, TReturn>): QueryDefinition<TTable, TArgs, TArgs, TReturn, TContext>;
|
|
176
|
-
<TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TReturn, TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] & string>(validator: StandardSchemaV1<TInput, TOutput>, queryFn: (options: {
|
|
177
|
-
args: TOutput;
|
|
178
|
-
ctx: TContext;
|
|
179
|
-
}) => Query<TTable, TSchema, TReturn>): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>;
|
|
186
|
+
<TArgs extends ReadonlyJSONValue | undefined, TReturn, TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] & string>(queryFn: QueryDefinitionFunction<TTable, TArgs, TReturn, TContext>): QueryDefinition<TTable, TArgs, TArgs, TReturn, TContext>;
|
|
187
|
+
<TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TReturn, TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] & string>(validator: StandardSchemaV1<TInput, TOutput>, queryFn: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>;
|
|
180
188
|
};
|
|
181
|
-
export declare function
|
|
189
|
+
export declare function createQuery<TTable extends keyof TSchema['tables'] & string, TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TSchema extends Schema, TReturn, TContext>(name: string, definition: QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>): CustomQuery<TTable, TInput, TOutput, TSchema, TReturn, TContext>;
|
|
182
190
|
/**
|
|
183
191
|
* Converts query definitions created with {@link defineQuery} into callable
|
|
184
|
-
* {@link
|
|
192
|
+
* {@link Query} objects that can be invoked with arguments and a context.
|
|
185
193
|
*
|
|
186
194
|
* Query definitions can be nested for organization. The resulting query names
|
|
187
195
|
* are dot-separated paths (e.g., `users.byId`).
|
|
@@ -200,8 +208,8 @@ export declare function createCustomQueryBuilder<TTable extends keyof TSchema['t
|
|
|
200
208
|
* });
|
|
201
209
|
*
|
|
202
210
|
* // Usage:
|
|
203
|
-
* const
|
|
204
|
-
* const
|
|
211
|
+
* const request = queries.issues.byId({id: '123'});
|
|
212
|
+
* const [data] = zero.useQuery(request);
|
|
205
213
|
* ```
|
|
206
214
|
*
|
|
207
215
|
* @param defs - An object containing query definitions or nested objects of
|
|
@@ -210,9 +218,9 @@ export declare function createCustomQueryBuilder<TTable extends keyof TSchema['t
|
|
|
210
218
|
* converted to a {@link CustomQuery}.
|
|
211
219
|
*/
|
|
212
220
|
export declare function defineQueries<const QD, S extends Schema = DefaultSchema>(defs: QD & AssertQueryDefinitions<QD>): QueryRegistry<EnsureQueryDefinitions<QD>, S>;
|
|
213
|
-
export declare function defineQueries<TBase, TOverrides, S extends Schema = DefaultSchema>(base: QueryRegistry<EnsureQueryDefinitions<TBase>, S> | (TBase & AssertQueryDefinitions<TBase>), overrides: TOverrides & AssertQueryDefinitions<TOverrides>): QueryRegistry<DeepMerge<EnsureQueryDefinitions<TBase>, EnsureQueryDefinitions<TOverrides
|
|
214
|
-
type AssertQueryDefinitions<QD> = QD extends QueryDefinitions
|
|
215
|
-
type EnsureQueryDefinitions<QD> = QD extends QueryDefinitions<
|
|
221
|
+
export declare function defineQueries<const TBase, const TOverrides, S extends Schema = DefaultSchema>(base: QueryRegistry<EnsureQueryDefinitions<TBase>, S> | (TBase & AssertQueryDefinitions<TBase>), overrides: TOverrides & AssertQueryDefinitions<TOverrides>): QueryRegistry<DeepMerge<EnsureQueryDefinitions<TBase>, EnsureQueryDefinitions<TOverrides>, AnyQueryDefinition>, S>;
|
|
222
|
+
export type AssertQueryDefinitions<QD> = QD extends QueryDefinitions ? unknown : never;
|
|
223
|
+
export type EnsureQueryDefinitions<QD> = QD extends QueryDefinitions ? QD : QD extends QueryRegistry<infer InnerQD, infer _S> ? InnerQD : never;
|
|
216
224
|
/**
|
|
217
225
|
* Creates a function that can be used to define queries with a specific schema.
|
|
218
226
|
*/
|
|
@@ -223,9 +231,9 @@ export declare function defineQueriesWithType<TSchema extends Schema>(): TypedDe
|
|
|
223
231
|
*/
|
|
224
232
|
type TypedDefineQueries<S extends Schema> = {
|
|
225
233
|
<QD>(definitions: QD & AssertQueryDefinitions<QD>): QueryRegistry<EnsureQueryDefinitions<QD>, S>;
|
|
226
|
-
<TBase, TOverrides>(base: QueryRegistry<EnsureQueryDefinitions<TBase>, S> | (TBase & AssertQueryDefinitions<TBase>), overrides: TOverrides & AssertQueryDefinitions<TOverrides>): QueryRegistry<DeepMerge<EnsureQueryDefinitions<TBase>, EnsureQueryDefinitions<TOverrides
|
|
234
|
+
<TBase, TOverrides>(base: QueryRegistry<EnsureQueryDefinitions<TBase>, S> | (TBase & AssertQueryDefinitions<TBase>), overrides: TOverrides & AssertQueryDefinitions<TOverrides>): QueryRegistry<DeepMerge<EnsureQueryDefinitions<TBase>, EnsureQueryDefinitions<TOverrides>, AnyQueryDefinition>, S>;
|
|
227
235
|
};
|
|
228
|
-
export declare function getQuery<QD extends QueryDefinitions
|
|
229
|
-
export declare function mustGetQuery<QD extends QueryDefinitions
|
|
236
|
+
export declare function getQuery<QD extends QueryDefinitions, S extends Schema>(queries: QueryRegistry<QD, S>, name: string): FromQueryTree<QD, S> | undefined;
|
|
237
|
+
export declare function mustGetQuery<QD extends QueryDefinitions, S extends Schema>(queries: QueryRegistry<QD, S>, name: string): FromQueryTree<QD, S>;
|
|
230
238
|
export {};
|
|
231
239
|
//# sourceMappingURL=query-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-registry.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query-registry.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import { deepMerge } from "../../../shared/src/deep-merge.js";
|
|
1
|
+
import { deepMerge, isPlainObject } from "../../../shared/src/deep-merge.js";
|
|
2
2
|
import { must } from "../../../shared/src/must.js";
|
|
3
3
|
import { getValueAtPath } from "../../../shared/src/object-traversal.js";
|
|
4
4
|
import { asQueryInternals } from "./query-internals.js";
|
|
5
5
|
import { validateInput } from "./validate-input.js";
|
|
6
|
+
function isQuery(value) {
|
|
7
|
+
return typeof value === "function" && typeof value.queryName === "string" && typeof value.fn === "function";
|
|
8
|
+
}
|
|
9
|
+
const addContextToQuery = (query, context) => "query" in query ? query.query.fn({ ctx: context, args: query.args }) : query;
|
|
6
10
|
function isQueryRegistry(obj) {
|
|
7
|
-
return typeof obj === "object" && obj !== null && obj["~"] === "QueryRegistry";
|
|
11
|
+
return typeof obj === "object" && obj !== null && obj?.["~"] === "QueryRegistry";
|
|
8
12
|
}
|
|
9
13
|
function isQueryDefinition(f) {
|
|
10
|
-
return typeof f === "
|
|
14
|
+
return typeof f === "object" && f !== null && f["~"] === "QueryDefinition";
|
|
11
15
|
}
|
|
12
16
|
function defineQuery(validatorOrQueryFn, queryFn) {
|
|
13
17
|
let validator;
|
|
@@ -19,38 +23,41 @@ function defineQuery(validatorOrQueryFn, queryFn) {
|
|
|
19
23
|
validator = validatorOrQueryFn;
|
|
20
24
|
actualQueryFn = must(queryFn);
|
|
21
25
|
}
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
function createCustomQueryBuilder(queryDef, name, inputArgs, validatedArgs, hasArgs) {
|
|
28
|
-
const { validator } = queryDef;
|
|
29
|
-
const builder = (args) => {
|
|
30
|
-
if (hasArgs) {
|
|
31
|
-
throw new Error("args already set");
|
|
32
|
-
}
|
|
33
|
-
const validated = validateInput(name, args, validator, "query");
|
|
34
|
-
return createCustomQueryBuilder(queryDef, name, args, validated, true);
|
|
26
|
+
const queryDefinition = {
|
|
27
|
+
"fn": actualQueryFn,
|
|
28
|
+
"validator": validator,
|
|
29
|
+
"~": "QueryDefinition"
|
|
35
30
|
};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
return queryDefinition;
|
|
32
|
+
}
|
|
33
|
+
function defineQueryWithType() {
|
|
34
|
+
return defineQuery;
|
|
35
|
+
}
|
|
36
|
+
function createQuery(name, definition) {
|
|
37
|
+
const { validator } = definition;
|
|
38
|
+
const fn = (options) => {
|
|
39
|
+
const validatedArgs = validator ? validateInput(name, options.args, validator, "query") : options.args;
|
|
40
40
|
return asQueryInternals(
|
|
41
|
-
|
|
41
|
+
definition.fn({
|
|
42
42
|
args: validatedArgs,
|
|
43
|
-
ctx
|
|
43
|
+
ctx: options.ctx
|
|
44
44
|
})
|
|
45
45
|
).nameAndArgs(
|
|
46
46
|
name,
|
|
47
47
|
// TODO(arv): Get rid of the array?
|
|
48
48
|
// Send original input args to server (not transformed output)
|
|
49
|
-
|
|
49
|
+
options.args === void 0 ? [] : [options.args]
|
|
50
50
|
);
|
|
51
51
|
};
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
const query = (args) => ({
|
|
53
|
+
args,
|
|
54
|
+
"~": "QueryRequest",
|
|
55
|
+
"query": query
|
|
56
|
+
});
|
|
57
|
+
query.queryName = name;
|
|
58
|
+
query.fn = fn;
|
|
59
|
+
query["~"] = "Query";
|
|
60
|
+
return query;
|
|
54
61
|
}
|
|
55
62
|
function defineQueries(defsOrBase, overrides) {
|
|
56
63
|
function processDefinitions(definitions, path) {
|
|
@@ -61,18 +68,9 @@ function defineQueries(defsOrBase, overrides) {
|
|
|
61
68
|
path.push(key);
|
|
62
69
|
const defaultName = path.join(".");
|
|
63
70
|
if (isQueryDefinition(value)) {
|
|
64
|
-
result[key] =
|
|
65
|
-
value,
|
|
66
|
-
defaultName,
|
|
67
|
-
void 0,
|
|
68
|
-
void 0,
|
|
69
|
-
false
|
|
70
|
-
);
|
|
71
|
+
result[key] = createQuery(defaultName, value);
|
|
71
72
|
} else {
|
|
72
|
-
result[key] = processDefinitions(
|
|
73
|
-
value,
|
|
74
|
-
path
|
|
75
|
-
);
|
|
73
|
+
result[key] = processDefinitions(value, path);
|
|
76
74
|
}
|
|
77
75
|
path.pop();
|
|
78
76
|
}
|
|
@@ -86,12 +84,16 @@ function defineQueries(defsOrBase, overrides) {
|
|
|
86
84
|
base = defsOrBase;
|
|
87
85
|
}
|
|
88
86
|
const processed = processDefinitions(overrides, []);
|
|
89
|
-
const merged = deepMerge(base, processed);
|
|
87
|
+
const merged = deepMerge(base, processed, isQueryLeaf);
|
|
90
88
|
merged["~"] = "QueryRegistry";
|
|
91
89
|
return merged;
|
|
92
90
|
}
|
|
93
91
|
return processDefinitions(defsOrBase, []);
|
|
94
92
|
}
|
|
93
|
+
const isQueryLeaf = (value) => !isPlainObject(value) || isQuery(value);
|
|
94
|
+
function defineQueriesWithType() {
|
|
95
|
+
return defineQueries;
|
|
96
|
+
}
|
|
95
97
|
function getQuery(queries, name) {
|
|
96
98
|
const q = getValueAtPath(queries, name, /[.|]/);
|
|
97
99
|
return q;
|
|
@@ -104,10 +106,14 @@ function mustGetQuery(queries, name) {
|
|
|
104
106
|
return query;
|
|
105
107
|
}
|
|
106
108
|
export {
|
|
107
|
-
|
|
109
|
+
addContextToQuery,
|
|
110
|
+
createQuery,
|
|
108
111
|
defineQueries,
|
|
112
|
+
defineQueriesWithType,
|
|
109
113
|
defineQuery,
|
|
114
|
+
defineQueryWithType,
|
|
110
115
|
getQuery,
|
|
116
|
+
isQuery,
|
|
111
117
|
isQueryDefinition,
|
|
112
118
|
isQueryRegistry,
|
|
113
119
|
mustGetQuery
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-registry.js","sources":["../../../../../zql/src/query/query-registry.ts"],"sourcesContent":["// oxlint-disable no-explicit-any\nimport type {StandardSchemaV1} from '@standard-schema/spec';\nimport {deepMerge, type DeepMerge} from '../../../shared/src/deep-merge.ts';\nimport type {Expand} from '../../../shared/src/expand.ts';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {must} from '../../../shared/src/must.ts';\nimport {getValueAtPath} from '../../../shared/src/object-traversal.ts';\nimport type {\n DefaultContext,\n DefaultSchema,\n} from '../../../zero-types/src/default-types.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {asQueryInternals} from './query-internals.ts';\nimport type {PullRow, Query} from './query.ts';\nimport {validateInput} from './validate-input.ts';\n\n/**\n * CustomQuery is what is returned from defineQueries. It supports a builder\n * pattern where args is set before calling toQuery(context).\n *\n * const queries = defineQueries(...);\n * queries.foo.bar satisfies CustomQuery<...>\n *\n * Usage:\n * queries.foo(args).toQuery(ctx)\n */\nexport type CustomQuery<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema = DefaultSchema,\n TReturn = PullRow<TTable, TSchema>,\n TContext = DefaultContext,\n THasArgs extends boolean = false,\n> = {\n /**\n * Type-only phantom property to surface query types in a covariant position.\n */\n '~': Expand<\n QueryTypes<TTable, TInput, never, TSchema, TReturn, TContext, THasArgs>\n >;\n} & (THasArgs extends true\n ? unknown\n : undefined extends TInput\n ? {\n (): CustomQuery<TTable, TInput, TSchema, TReturn, TContext, true>;\n (\n args?: TInput,\n ): CustomQuery<TTable, TInput, TSchema, TReturn, TContext, true>;\n }\n : {\n (\n args: TInput,\n ): CustomQuery<TTable, TInput, TSchema, TReturn, TContext, true>;\n }) &\n (THasArgs extends true\n ? {toQuery(ctx: TContext): Query<TTable, TSchema, TReturn>}\n : unknown);\n\nexport function isQueryRegistry<\n Q extends QueryDefinitions<S, any>,\n S extends Schema = DefaultSchema,\n>(obj: unknown): obj is QueryRegistry<Q, S> {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n (obj as any)['~'] === 'QueryRegistry'\n );\n}\n\nexport type QueryTypes<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput,\n TSchema extends Schema,\n TReturn,\n TContext,\n THasArgs extends boolean,\n> = 'Query' & {\n readonly $tableName: TTable;\n readonly $input: TInput;\n readonly $output: TOutput;\n readonly $schema: TSchema;\n readonly $return: TReturn;\n readonly $context: TContext;\n readonly $hasArgs: THasArgs;\n};\n\nexport type QueryDefinitionTypes<\n TTable extends string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput,\n TReturn,\n TContext,\n> = 'QueryDefinition' & {\n readonly $tableName: TTable;\n readonly $input: TInput;\n readonly $output: TOutput;\n readonly $return: TReturn;\n readonly $context: TContext;\n};\n\nexport type QueryRegistryTypes<TSchema extends Schema> = 'QueryRegistry' & {\n readonly $schema: TSchema;\n};\n\nexport type QueryRegistry<\n QD extends QueryDefinitions<S, any>,\n S extends Schema,\n> = ToQueryTree<QD, S> & {\n ['~']: Expand<QueryRegistryTypes<S>>;\n};\n\ntype AnyQueryDefinition = QueryDefinition<any, any, any, any, any>;\n\ntype ToQueryTree<QD extends QueryDefinitions<S, any>, S extends Schema> = {\n readonly [K in keyof QD]: QD[K] extends AnyQueryDefinition\n ? // pull types from the phantom property\n CustomQuery<\n QD[K]['~']['$tableName'],\n QD[K]['~']['$input'],\n S,\n QD[K]['~']['$return'],\n QD[K]['~']['$context'],\n false\n >\n : QD[K] extends QueryDefinitions<Schema, any>\n ? ToQueryTree<QD[K], S>\n : never;\n};\n\nexport type FromQueryTree<\n QD extends QueryDefinitions<S, any>,\n S extends Schema,\n> = {\n readonly [K in keyof QD]: QD[K] extends AnyQueryDefinition\n ? CustomQuery<\n QD[K]['~']['$tableName'],\n ReadonlyJSONValue | undefined, // intentionally left as generic to avoid variance issues\n S,\n QD[K]['~']['$return'],\n QD[K]['~']['$context'],\n false\n >\n : QD[K] extends QueryDefinitions<Schema, any>\n ? FromQueryTree<QD[K], S>\n : never;\n}[keyof QD];\n\ntype QueryDefinitionFunction<\n TTable extends string,\n TOutput extends ReadonlyJSONValue | undefined,\n TReturn,\n TContext,\n> = (options: {args: TOutput; ctx: TContext}) => Query<TTable, Schema, TReturn>;\n\n/**\n * A query definition is the return type of `defineQuery()`.\n */\nexport type QueryDefinition<\n TTable extends string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TReturn,\n TContext = DefaultContext,\n> = QueryDefinitionFunction<TTable, TOutput, TReturn, TContext> & {\n 'validator': StandardSchemaV1<TInput, TOutput> | undefined;\n\n /**\n * Type-only phantom property to surface query types in a covariant position.\n */\n readonly '~': Expand<\n QueryDefinitionTypes<TTable, TInput, TOutput, TReturn, TContext>\n >;\n};\n\nexport function isQueryDefinition<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema = DefaultSchema,\n TReturn = PullRow<TTable, TSchema>,\n TContext = DefaultContext,\n>(\n f: unknown,\n): f is QueryDefinition<TTable, TInput, TOutput, TReturn, TContext> {\n return typeof f === 'function' && (f as any)['~'] === 'QueryDefinition';\n}\n\nexport type QueryDefinitions<S extends Schema, Context> = {\n readonly [key: string]:\n | QueryDefinition<any, any, any, any, Context>\n | QueryDefinitions<S, Context>;\n};\n\n/**\n * Defines a query to be used with {@link defineQueries}.\n *\n * The query function receives an object with `args` (the query arguments) and\n * `ctx` (the context). It should return a {@link Query} built using a builder\n * created from {@link createBuilder}.\n *\n * Note: A query defined with `defineQuery` must be passed to\n * {@link defineQueries} to be usable. The query name is derived from its\n * position in the `defineQueries` object.\n *\n * @example\n * ```ts\n * const builder = createBuilder(schema);\n *\n * const queries = defineQueries({\n * // Simple query with no arguments\n * allIssues: defineQuery(() => builder.issue.orderBy('created', 'desc')),\n *\n * // Query with typed arguments\n * issueById: defineQuery(({args}: {args: {id: string}}) =>\n * builder.issue.where('id', args.id).one(),\n * ),\n *\n * // Query with validation using a Standard Schema validator (e.g., Zod)\n * issuesByStatus: defineQuery(\n * z.object({status: z.enum(['open', 'closed'])}),\n * ({args}) => builder.issue.where('status', args.status),\n * ),\n *\n * // Query using context\n * myIssues: defineQuery(({ctx}: {ctx: {userID: string}}) =>\n * builder.issue.where('creatorID', ctx.userID),\n * ),\n * });\n * ```\n *\n * @param queryFn - A function that receives `{args, ctx}` and returns a Query.\n * @returns A {@link QueryDefinition} that can be passed to {@link defineQueries}.\n *\n * @overload\n * @param validator - A Standard Schema validator for the arguments.\n * @param queryFn - A function that receives `{args, ctx}` and returns a Query.\n * @returns A {@link QueryDefinition} with validated arguments.\n */\n// Overload for no validator parameter with default inference for untyped functions\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n queryFn: (options: {\n args: TInput;\n ctx: TContext;\n }) => Query<TTable, TSchema, TReturn>,\n): QueryDefinition<TTable, TInput, TInput, TReturn, TContext> & {};\n\n// Overload for validator parameter - Input and Output can be different\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n validator: StandardSchemaV1<TInput, TOutput>,\n queryFn: (options: {\n args: TOutput;\n ctx: TContext;\n }) => Query<TTable, TSchema, TReturn>,\n): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext> & {};\n\n// Implementation\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n validatorOrQueryFn:\n | StandardSchemaV1<TInput, TOutput>\n | QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n queryFn?: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext> {\n // Handle different parameter patterns\n let validator: StandardSchemaV1<TInput, TOutput> | undefined;\n let actualQueryFn: QueryDefinitionFunction<\n TTable,\n TOutput,\n TReturn,\n TContext\n >;\n\n if (typeof validatorOrQueryFn === 'function') {\n // defineQuery(queryFn) - no validator\n validator = undefined;\n actualQueryFn = validatorOrQueryFn;\n } else {\n // defineQuery(validator, queryFn) - with validator\n validator = validatorOrQueryFn;\n actualQueryFn = must(queryFn);\n }\n\n // We wrap the function to add the tag and validator and ensure we do not mutate it in place.\n const f = (options: {args: TOutput; ctx: TContext}) => actualQueryFn(options);\n f.validator = validator;\n f['~'] = 'QueryDefinition' as unknown as QueryDefinitionTypes<\n TTable,\n TInput,\n TOutput,\n TReturn,\n TContext\n >;\n\n return f;\n}\n\n/**\n * Returns a typed version of {@link defineQuery} with the schema and context\n * types pre-specified. This enables better type inference when defining\n * queries.\n *\n * @example\n * ```ts\n * const builder = createBuilder(schema);\n *\n * // With both Schema and Context types\n * const defineAppQuery = defineQueryWithType<AppSchema, AppContext>();\n * const myQuery = defineAppQuery(({ctx}) =>\n * builder.issue.where('userID', ctx.userID),\n * );\n *\n * // With just Context type (Schema inferred)\n * const defineAppQuery = defineQueryWithType<AppContext>();\n * ```\n *\n * @typeParam S - The Zero schema type.\n * @typeParam C - The context type passed to query functions.\n * @returns A function equivalent to {@link defineQuery} but with types\n * pre-bound.\n */\nexport function defineQueryWithType<\n S extends Schema,\n C = unknown,\n>(): TypedDefineQuery<S, C>;\n\n/**\n * Returns a typed version of {@link defineQuery} with the context type\n * pre-specified.\n *\n * @typeParam C - The context type passed to query functions.\n * @returns A function equivalent to {@link defineQuery} but with the context\n * type pre-bound.\n */\nexport function defineQueryWithType<C>(): TypedDefineQuery<Schema, C>;\n\nexport function defineQueryWithType() {\n return defineQuery;\n}\n\n/**\n * The return type of defineQueryWithType. A function matching the\n * defineQuery overloads but with Schema and Context pre-bound.\n */\ntype TypedDefineQuery<TSchema extends Schema, TContext> = {\n // Without validator\n <\n TArgs extends ReadonlyJSONValue | undefined,\n TReturn,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n >(\n queryFn: (options: {\n args: TArgs;\n ctx: TContext;\n }) => Query<TTable, TSchema, TReturn>,\n ): QueryDefinition<TTable, TArgs, TArgs, TReturn, TContext>;\n\n // With validator\n <\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TReturn,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n >(\n validator: StandardSchemaV1<TInput, TOutput>,\n queryFn: (options: {\n args: TOutput;\n ctx: TContext;\n }) => Query<TTable, TSchema, TReturn>,\n ): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>;\n};\n\nexport function createCustomQueryBuilder<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n THasArgs extends boolean,\n>(\n queryDef: QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>,\n name: string,\n inputArgs: TInput,\n validatedArgs: TOutput,\n hasArgs: THasArgs,\n): CustomQuery<TTable, TInput, TSchema, TReturn, TContext, THasArgs> {\n const {validator} = queryDef;\n\n // The callable function that sets args\n const builder = (args: TInput) => {\n if (hasArgs) {\n throw new Error('args already set');\n }\n const validated = validateInput(name, args, validator, 'query');\n return createCustomQueryBuilder<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext,\n true\n >(queryDef, name, args, validated, true);\n };\n\n // Add create method\n builder.toQuery = (ctx: TContext) => {\n if (!hasArgs) {\n throw new Error('args not set');\n }\n\n return asQueryInternals(\n queryDef({\n args: validatedArgs,\n ctx,\n }),\n ).nameAndArgs(\n name,\n // TODO(arv): Get rid of the array?\n // Send original input args to server (not transformed output)\n inputArgs === undefined\n ? []\n : [inputArgs as unknown as ReadonlyJSONValue],\n );\n };\n\n // Add the phantom property\n builder['~'] = 'CustomQuery';\n\n return builder as unknown as CustomQuery<\n TTable,\n TInput,\n TSchema,\n TReturn,\n TContext,\n THasArgs\n >;\n}\n\n/**\n * Converts query definitions created with {@link defineQuery} into callable\n * {@link CustomQuery} objects that can be invoked with arguments and a context.\n *\n * Query definitions can be nested for organization. The resulting query names\n * are dot-separated paths (e.g., `users.byId`).\n *\n * @example\n * ```ts\n * const builder = createBuilder(schema);\n *\n * const queries = defineQueries({\n * issues: defineQuery(() => builder.issue.orderBy('created', 'desc')),\n * users: {\n * byId: defineQuery(({args}: {args: {id: string}}) =>\n * builder.user.where('id', args.id),\n * ),\n * },\n * });\n *\n * // Usage:\n * const q = queries.issues().toQuery(ctx);\n * const q2 = queries.users.byId({id: '123'}).toQuery(ctx);\n * ```\n *\n * @param defs - An object containing query definitions or nested objects of\n * query definitions.\n * @returns An object with the same structure where each query definition is\n * converted to a {@link CustomQuery}.\n */\nexport function defineQueries<\n // let QD infer freely so defaults aren't erased by a QueryDefinitions<any, any> constraint\n const QD,\n S extends Schema = DefaultSchema,\n>(\n defs: QD & AssertQueryDefinitions<QD>,\n): QueryRegistry<EnsureQueryDefinitions<QD>, S>;\n\nexport function defineQueries<\n TBase,\n TOverrides,\n S extends Schema = DefaultSchema,\n>(\n base:\n | QueryRegistry<EnsureQueryDefinitions<TBase>, S>\n | (TBase & AssertQueryDefinitions<TBase>),\n overrides: TOverrides & AssertQueryDefinitions<TOverrides>,\n): QueryRegistry<\n DeepMerge<EnsureQueryDefinitions<TBase>, EnsureQueryDefinitions<TOverrides>>,\n S\n>;\n\nexport function defineQueries<\n QD extends QueryDefinitions<S, any>,\n S extends Schema,\n>(\n defsOrBase: QD | QueryRegistry<QD, S>,\n overrides?: QueryDefinitions<S, unknown>,\n): QueryRegistry<any, S> {\n function processDefinitions(\n definitions: QueryDefinitions<Schema, unknown>,\n path: string[],\n ): Record<string | symbol, any> {\n const result: Record<string | symbol, any> = {\n ['~']: 'QueryRegistry',\n };\n\n for (const [key, value] of Object.entries(definitions)) {\n path.push(key);\n const defaultName = path.join('.');\n\n if (isQueryDefinition(value)) {\n result[key] = createCustomQueryBuilder(\n value,\n defaultName,\n undefined,\n undefined,\n false,\n );\n } else {\n // Nested definitions\n result[key] = processDefinitions(\n value as QueryDefinitions<Schema, unknown>,\n path,\n );\n }\n path.pop();\n }\n\n return result;\n }\n\n if (overrides !== undefined) {\n // Merge base and overrides\n\n let base: Record<string | symbol, any>;\n if (!isQueryRegistry(defsOrBase)) {\n base = processDefinitions(defsOrBase as QD, []);\n } else {\n base = defsOrBase;\n }\n\n const processed = processDefinitions(overrides, []);\n\n const merged = deepMerge(base, processed);\n merged['~'] = 'QueryRegistry';\n return merged as QueryRegistry<any, S>;\n }\n\n return processDefinitions(defsOrBase as QD, []) as QueryRegistry<QD, S>;\n}\n\ntype AssertQueryDefinitions<QD> =\n QD extends QueryDefinitions<any, any> ? unknown : never;\n\ntype EnsureQueryDefinitions<QD> =\n QD extends QueryDefinitions<any, any> ? QD : never;\n\n/**\n * Creates a function that can be used to define queries with a specific schema.\n */\nexport function defineQueriesWithType<\n TSchema extends Schema,\n>(): TypedDefineQueries<TSchema> {\n return defineQueries;\n}\n\n/**\n * The return type of defineQueriesWithType. A function matching the\n * defineQueries overloads but with Schema pre-bound.\n */\ntype TypedDefineQueries<S extends Schema> = {\n // Single definitions\n <QD>(\n definitions: QD & AssertQueryDefinitions<QD>,\n ): QueryRegistry<EnsureQueryDefinitions<QD>, S>;\n\n // Base and overrides\n <TBase, TOverrides>(\n base:\n | QueryRegistry<EnsureQueryDefinitions<TBase>, S>\n | (TBase & AssertQueryDefinitions<TBase>),\n overrides: TOverrides & AssertQueryDefinitions<TOverrides>,\n ): QueryRegistry<\n DeepMerge<\n EnsureQueryDefinitions<TBase>,\n EnsureQueryDefinitions<TOverrides>\n >,\n S\n >;\n};\n\nexport function getQuery<QD extends QueryDefinitions<S, any>, S extends Schema>(\n queries: QueryRegistry<QD, S>,\n name: string,\n): FromQueryTree<QD, S> | undefined {\n const q = getValueAtPath(queries, name, /[.|]/);\n return q as FromQueryTree<QD, S> | undefined;\n}\n\nexport function mustGetQuery<\n QD extends QueryDefinitions<S, any>,\n S extends Schema,\n>(queries: QueryRegistry<QD, S>, name: string): FromQueryTree<QD, S> {\n const query = getQuery(queries, name);\n if (query === undefined) {\n throw new Error(`Query not found: ${name}`);\n }\n return query;\n}\n"],"names":[],"mappings":";;;;;AA0DO,SAAS,gBAGd,KAA0C;AAC1C,SACE,OAAO,QAAQ,YACf,QAAQ,QACP,IAAY,GAAG,MAAM;AAE1B;AA4GO,SAAS,kBAQd,GACkE;AAClE,SAAO,OAAO,MAAM,cAAe,EAAU,GAAG,MAAM;AACxD;AAsFO,SAAS,YASd,oBAGA,SAC6D;AAE7D,MAAI;AACJ,MAAI;AAOJ,MAAI,OAAO,uBAAuB,YAAY;AAE5C,gBAAY;AACZ,oBAAgB;AAAA,EAClB,OAAO;AAEL,gBAAY;AACZ,oBAAgB,KAAK,OAAO;AAAA,EAC9B;AAGA,QAAM,IAAI,CAAC,YAA4C,cAAc,OAAO;AAC5E,IAAE,YAAY;AACd,IAAE,GAAG,IAAI;AAQT,SAAO;AACT;AA+EO,SAAS,yBASd,UACA,MACA,WACA,eACA,SACmE;AACnE,QAAM,EAAC,cAAa;AAGpB,QAAM,UAAU,CAAC,SAAiB;AAChC,QAAI,SAAS;AACX,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AACA,UAAM,YAAY,cAAc,MAAM,MAAM,WAAW,OAAO;AAC9D,WAAO,yBAQL,UAAU,MAAM,MAAM,WAAW,IAAI;AAAA,EACzC;AAGA,UAAQ,UAAU,CAAC,QAAkB;AACnC,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,cAAc;AAAA,IAChC;AAEA,WAAO;AAAA,MACL,SAAS;AAAA,QACP,MAAM;AAAA,QACN;AAAA,MAAA,CACD;AAAA,IAAA,EACD;AAAA,MACA;AAAA;AAAA;AAAA,MAGA,cAAc,SACV,CAAA,IACA,CAAC,SAAyC;AAAA,IAAA;AAAA,EAElD;AAGA,UAAQ,GAAG,IAAI;AAEf,SAAO;AAQT;AAsDO,SAAS,cAId,YACA,WACuB;AACvB,WAAS,mBACP,aACA,MAC8B;AAC9B,UAAM,SAAuC;AAAA,MAC3C,CAAC,GAAG,GAAG;AAAA,IAAA;AAGT,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,WAAW,GAAG;AACtD,WAAK,KAAK,GAAG;AACb,YAAM,cAAc,KAAK,KAAK,GAAG;AAEjC,UAAI,kBAAkB,KAAK,GAAG;AAC5B,eAAO,GAAG,IAAI;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ,OAAO;AAEL,eAAO,GAAG,IAAI;AAAA,UACZ;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AACA,WAAK,IAAA;AAAA,IACP;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,QAAW;AAG3B,QAAI;AACJ,QAAI,CAAC,gBAAgB,UAAU,GAAG;AAChC,aAAO,mBAAmB,YAAkB,EAAE;AAAA,IAChD,OAAO;AACL,aAAO;AAAA,IACT;AAEA,UAAM,YAAY,mBAAmB,WAAW,EAAE;AAElD,UAAM,SAAS,UAAU,MAAM,SAAS;AACxC,WAAO,GAAG,IAAI;AACd,WAAO;AAAA,EACT;AAEA,SAAO,mBAAmB,YAAkB,EAAE;AAChD;AA0CO,SAAS,SACd,SACA,MACkC;AAClC,QAAM,IAAI,eAAe,SAAS,MAAM,MAAM;AAC9C,SAAO;AACT;AAEO,SAAS,aAGd,SAA+B,MAAoC;AACnE,QAAM,QAAQ,SAAS,SAAS,IAAI;AACpC,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI,MAAM,oBAAoB,IAAI,EAAE;AAAA,EAC5C;AACA,SAAO;AACT;"}
|
|
1
|
+
{"version":3,"file":"query-registry.js","sources":["../../../../../zql/src/query/query-registry.ts"],"sourcesContent":["import type {StandardSchemaV1} from '@standard-schema/spec';\nimport {\n deepMerge,\n isPlainObject,\n type DeepMerge,\n} from '../../../shared/src/deep-merge.ts';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {must} from '../../../shared/src/must.ts';\nimport {getValueAtPath} from '../../../shared/src/object-traversal.ts';\nimport type {\n DefaultContext,\n DefaultSchema,\n} from '../../../zero-types/src/default-types.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {asQueryInternals} from './query-internals.ts';\nimport type {PullRow, Query} from './query.ts';\nimport {validateInput} from './validate-input.ts';\n\n// ----------------------------------------------------------------------------\n// CustomQuery and QueryRequest types\n// ----------------------------------------------------------------------------\n\nexport type CustomQueryTypes<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> = 'Query' & {\n readonly $tableName: TTable;\n readonly $input: TInput;\n readonly $schema: TSchema;\n readonly $return: TReturn;\n readonly $context: TContext;\n};\n\n/**\n * CustomQuery is returned from defineQueries. It is a callable that captures\n * args and can be turned into a Query via {@link QueryRequest}.\n */\nexport type CustomQuery<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined = TInput,\n TSchema extends Schema = DefaultSchema,\n TReturn = PullRow<TTable, TSchema>,\n TContext = DefaultContext,\n> = {\n readonly 'queryName': string;\n readonly 'fn': QueryDefinitionFunction<TTable, TInput, TReturn, TContext>;\n readonly '~': CustomQueryTypes<TTable, TInput, TSchema, TReturn, TContext>;\n} & CustomQueryCallable<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n\ntype CustomQueryCallable<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema = DefaultSchema,\n TReturn = PullRow<TTable, TSchema>,\n TContext = DefaultContext,\n> = [TInput] extends [undefined]\n ? () => QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>\n : undefined extends TInput\n ? {\n (): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n (\n args?: TInput,\n ): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n }\n : {\n (\n args: TInput,\n ): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>;\n };\n\n// oxlint-disable-next-line no-explicit-any\nexport type AnyCustomQuery = CustomQuery<string, any, any, Schema, any, any>;\n\nexport function isQuery(value: unknown): value is AnyCustomQuery {\n return (\n typeof value === 'function' &&\n typeof (value as {queryName?: unknown}).queryName === 'string' &&\n typeof (value as {fn?: unknown}).fn === 'function'\n );\n}\n\nexport type QueryRequestTypes<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> = 'QueryRequest' & {\n readonly $tableName: TTable;\n readonly $input: TInput;\n readonly $output: TOutput;\n readonly $schema: TSchema;\n readonly $return: TReturn;\n readonly $context: TContext;\n};\n\nexport type QueryRequest<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> = {\n readonly 'query': CustomQuery<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >;\n readonly 'args': TInput;\n readonly '~': QueryRequestTypes<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >;\n};\n\n/**\n * A shared type that can be a query request or a query builder.\n *\n * If it is a query request, it will be converted to a {@link Query} using the context.\n * Otherwise, it will be returned as is.\n */\nexport type QueryOrQueryRequest<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n> =\n | QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext>\n | Query<TTable, TSchema, TReturn>;\n\n/**\n * Converts a query request to a {@link Query} using the context,\n * or returns the query as is.\n *\n * @param query - The query request or query builder to convert\n * @param context - The context to use to convert the query request\n */\nexport const addContextToQuery = <\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n>(\n query: QueryOrQueryRequest<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >,\n context: TContext,\n): Query<TTable, TSchema, TReturn> =>\n 'query' in query ? query.query.fn({ctx: context, args: query.args}) : query;\n\n// ----------------------------------------------------------------------------\n// QueryRegistry types\n// ----------------------------------------------------------------------------\n\nexport function isQueryRegistry(obj: unknown): obj is AnyQueryRegistry {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n (obj as unknown as {['~']: string})?.['~'] === 'QueryRegistry'\n );\n}\n\nexport type QueryRegistryTypes<TSchema extends Schema> = 'QueryRegistry' & {\n readonly $schema: TSchema;\n};\n\nexport type QueryRegistry<\n QD extends QueryDefinitions,\n S extends Schema,\n> = ToQueryTree<QD, S> & {\n ['~']: QueryRegistryTypes<S>;\n};\n\nexport type AnyQueryRegistry = {\n ['~']: QueryRegistryTypes<Schema>;\n [key: string]: unknown;\n};\n\ntype ToQueryTree<QD extends QueryDefinitions, S extends Schema> = {\n readonly [K in keyof QD]: QD[K] extends AnyQueryDefinition\n ? // pull types from the phantom property\n CustomQuery<\n QD[K]['~']['$tableName'],\n QD[K]['~']['$input'],\n QD[K]['~']['$output'],\n S,\n QD[K]['~']['$return'],\n QD[K]['~']['$context']\n >\n : QD[K] extends QueryDefinitions\n ? ToQueryTree<QD[K], S>\n : never;\n};\n\nexport type FromQueryTree<QD extends QueryDefinitions, S extends Schema> = {\n readonly [K in keyof QD]: QD[K] extends AnyQueryDefinition\n ? CustomQuery<\n QD[K]['~']['$tableName'],\n // intentionally left as generic to avoid variance issues\n ReadonlyJSONValue | undefined,\n ReadonlyJSONValue | undefined,\n S,\n QD[K]['~']['$return'],\n QD[K]['~']['$context']\n >\n : QD[K] extends QueryDefinitions\n ? FromQueryTree<QD[K], S>\n : never;\n}[keyof QD];\n\nexport type QueryDefinitions = {\n readonly [key: string]: AnyQueryDefinition | QueryDefinitions;\n};\n\n// ----------------------------------------------------------------------------\n// defineQuery\n// ----------------------------------------------------------------------------\n\nexport type QueryDefinitionTypes<\n TTable extends string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput,\n TReturn,\n TContext,\n> = 'QueryDefinition' & {\n readonly $tableName: TTable;\n readonly $input: TInput;\n readonly $output: TOutput;\n readonly $return: TReturn;\n readonly $context: TContext;\n};\n\n/**\n * A query definition is the return type of `defineQuery()`.\n */\nexport type QueryDefinition<\n TTable extends string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TReturn,\n TContext = DefaultContext,\n> = {\n readonly 'fn': QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>;\n readonly 'validator': StandardSchemaV1<TInput, TOutput> | undefined;\n readonly '~': QueryDefinitionTypes<\n TTable,\n TInput,\n TOutput,\n TReturn,\n TContext\n >;\n};\n\n// oxlint-disable-next-line no-explicit-any\nexport type AnyQueryDefinition = QueryDefinition<any, any, any, any, any>;\n\nexport function isQueryDefinition(f: unknown): f is AnyQueryDefinition {\n return (\n typeof f === 'object' &&\n f !== null &&\n (f as {['~']?: unknown})['~'] === 'QueryDefinition'\n );\n}\n\nexport type QueryDefinitionFunction<\n TTable extends string,\n TInput extends ReadonlyJSONValue | undefined,\n TReturn,\n TContext,\n> = (options: {args: TInput; ctx: TContext}) => Query<TTable, Schema, TReturn>;\n\n/**\n * Defines a query to be used with {@link defineQueries}.\n *\n * The query function receives an object with `args` (the query arguments) and\n * `ctx` (the context). It should return a {@link Query} built using a builder\n * created from {@link createBuilder}.\n *\n * Note: A query defined with `defineQuery` must be passed to\n * {@link defineQueries} to be usable. The query name is derived from its\n * position in the `defineQueries` object.\n *\n * @example\n * ```ts\n * const builder = createBuilder(schema);\n *\n * const queries = defineQueries({\n * // Simple query with no arguments\n * allIssues: defineQuery(() => builder.issue.orderBy('created', 'desc')),\n *\n * // Query with typed arguments\n * issueById: defineQuery(({args}: {args: {id: string}}) =>\n * builder.issue.where('id', args.id).one(),\n * ),\n *\n * // Query with validation using a Standard Schema validator (e.g., Zod)\n * issuesByStatus: defineQuery(\n * z.object({status: z.enum(['open', 'closed'])}),\n * ({args}) => builder.issue.where('status', args.status),\n * ),\n *\n * // Query using context\n * myIssues: defineQuery(({ctx}: {ctx: {userID: string}}) =>\n * builder.issue.where('creatorID', ctx.userID),\n * ),\n * });\n * ```\n *\n * @param queryFn - A function that receives `{args, ctx}` and returns a Query.\n * @returns A {@link QueryDefinition} that can be passed to {@link defineQueries}.\n *\n * @overload\n * @param validator - A Standard Schema validator for the arguments.\n * @param queryFn - A function that receives `{args, ctx}` and returns a Query.\n * @returns A {@link QueryDefinition} with validated arguments.\n */\n// Overload for no validator parameter with default inference for untyped functions\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n queryFn: QueryDefinitionFunction<TTable, TInput, TReturn, TContext>,\n): QueryDefinition<TTable, TInput, TInput, TReturn, TContext>;\n\n// Overload for validator parameter - Input and Output can be different\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n validator: StandardSchemaV1<TInput, TOutput>,\n queryFn: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>;\n\n// Implementation\nexport function defineQuery<\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TContext = DefaultContext,\n TSchema extends Schema = DefaultSchema,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n TReturn = PullRow<TTable, TSchema>,\n>(\n validatorOrQueryFn:\n | StandardSchemaV1<TInput, TOutput>\n | QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n queryFn?: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext> {\n // Handle different parameter patterns\n let validator: StandardSchemaV1<TInput, TOutput> | undefined;\n let actualQueryFn: QueryDefinitionFunction<\n TTable,\n TOutput,\n TReturn,\n TContext\n >;\n\n if (typeof validatorOrQueryFn === 'function') {\n // defineQuery(queryFn) - no validator\n validator = undefined;\n actualQueryFn = validatorOrQueryFn;\n } else {\n // defineQuery(validator, queryFn) - with validator\n validator = validatorOrQueryFn;\n actualQueryFn = must(queryFn);\n }\n\n const queryDefinition: QueryDefinition<\n TTable,\n TInput,\n TOutput,\n TReturn,\n TContext\n > = {\n 'fn': actualQueryFn,\n 'validator': validator,\n '~': 'QueryDefinition' as unknown as QueryDefinitionTypes<\n TTable,\n TInput,\n TOutput,\n TReturn,\n TContext\n >,\n };\n return queryDefinition;\n}\n\n/**\n * Returns a typed version of {@link defineQuery} with the schema and context\n * types pre-specified. This enables better type inference when defining\n * queries.\n *\n * @example\n * ```ts\n * const zql = createBuilder(schema);\n *\n * // With both Schema and Context types\n * const defineAppQuery = defineQueryWithType<AppSchema, AppContext>();\n * const myQuery = defineAppQuery(({ctx}) =>\n * zql.issue.where('userID', ctx.userID),\n * );\n *\n * // With just Context type (Schema inferred)\n * const defineAppQuery = defineQueryWithType<AppContext>();\n * ```\n *\n * @typeParam S - The Zero schema type.\n * @typeParam C - The context type passed to query functions.\n * @returns A function equivalent to {@link defineQuery} but with types\n * pre-bound.\n */\nexport function defineQueryWithType<\n S extends Schema,\n C = unknown,\n>(): TypedDefineQuery<S, C>;\n\n/**\n * Returns a typed version of {@link defineQuery} with the context type\n * pre-specified.\n *\n * @typeParam C - The context type passed to query functions.\n * @returns A function equivalent to {@link defineQuery} but with the context\n * type pre-bound.\n */\nexport function defineQueryWithType<C>(): TypedDefineQuery<Schema, C>;\n\nexport function defineQueryWithType() {\n return defineQuery;\n}\n\n/**\n * The return type of defineQueryWithType. A function matching the\n * defineQuery overloads but with Schema and Context pre-bound.\n */\ntype TypedDefineQuery<TSchema extends Schema, TContext> = {\n // Without validator\n <\n TArgs extends ReadonlyJSONValue | undefined,\n TReturn,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n >(\n queryFn: QueryDefinitionFunction<TTable, TArgs, TReturn, TContext>,\n ): QueryDefinition<TTable, TArgs, TArgs, TReturn, TContext>;\n\n // With validator\n <\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TReturn,\n TTable extends keyof TSchema['tables'] & string = keyof TSchema['tables'] &\n string,\n >(\n validator: StandardSchemaV1<TInput, TOutput>,\n queryFn: QueryDefinitionFunction<TTable, TOutput, TReturn, TContext>,\n ): QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>;\n};\n\n// ----------------------------------------------------------------------------\n// createQuery\n// ----------------------------------------------------------------------------\n\nexport function createQuery<\n TTable extends keyof TSchema['tables'] & string,\n TInput extends ReadonlyJSONValue | undefined,\n TOutput extends ReadonlyJSONValue | undefined,\n TSchema extends Schema,\n TReturn,\n TContext,\n>(\n name: string,\n definition: QueryDefinition<TTable, TInput, TOutput, TReturn, TContext>,\n): CustomQuery<TTable, TInput, TOutput, TSchema, TReturn, TContext> {\n const {validator} = definition;\n\n const fn: QueryDefinitionFunction<\n TTable,\n TInput,\n TReturn,\n TContext\n > = options => {\n const validatedArgs = validator\n ? validateInput(name, options.args, validator, 'query')\n : (options.args as unknown as TOutput);\n\n return asQueryInternals(\n definition.fn({\n args: validatedArgs,\n ctx: options.ctx,\n }),\n ).nameAndArgs(\n name,\n // TODO(arv): Get rid of the array?\n // Send original input args to server (not transformed output)\n options.args === undefined ? [] : [options.args],\n );\n };\n\n const query = (\n args: TInput,\n ): QueryRequest<TTable, TInput, TOutput, TSchema, TReturn, TContext> => ({\n args,\n '~': 'QueryRequest' as QueryRequestTypes<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >,\n 'query': query as unknown as CustomQuery<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >,\n });\n\n query.queryName = name;\n query.fn = fn;\n query['~'] = 'Query' as CustomQueryTypes<\n TTable,\n TInput,\n TSchema,\n TReturn,\n TContext\n >;\n\n return query as unknown as CustomQuery<\n TTable,\n TInput,\n TOutput,\n TSchema,\n TReturn,\n TContext\n >;\n}\n\n// ----------------------------------------------------------------------------\n// defineQueries\n// ----------------------------------------------------------------------------\n\n/**\n * Converts query definitions created with {@link defineQuery} into callable\n * {@link Query} objects that can be invoked with arguments and a context.\n *\n * Query definitions can be nested for organization. The resulting query names\n * are dot-separated paths (e.g., `users.byId`).\n *\n * @example\n * ```ts\n * const builder = createBuilder(schema);\n *\n * const queries = defineQueries({\n * issues: defineQuery(() => builder.issue.orderBy('created', 'desc')),\n * users: {\n * byId: defineQuery(({args}: {args: {id: string}}) =>\n * builder.user.where('id', args.id),\n * ),\n * },\n * });\n *\n * // Usage:\n * const request = queries.issues.byId({id: '123'});\n * const [data] = zero.useQuery(request);\n * ```\n *\n * @param defs - An object containing query definitions or nested objects of\n * query definitions.\n * @returns An object with the same structure where each query definition is\n * converted to a {@link CustomQuery}.\n */\nexport function defineQueries<\n // let QD infer freely so defaults aren't erased by a QueryDefinitions<any, any> constraint\n const QD,\n S extends Schema = DefaultSchema,\n>(\n defs: QD & AssertQueryDefinitions<QD>,\n): QueryRegistry<EnsureQueryDefinitions<QD>, S>;\n\nexport function defineQueries<\n const TBase,\n const TOverrides,\n S extends Schema = DefaultSchema,\n>(\n base:\n | QueryRegistry<EnsureQueryDefinitions<TBase>, S>\n | (TBase & AssertQueryDefinitions<TBase>),\n overrides: TOverrides & AssertQueryDefinitions<TOverrides>,\n): QueryRegistry<\n DeepMerge<\n EnsureQueryDefinitions<TBase>,\n EnsureQueryDefinitions<TOverrides>,\n AnyQueryDefinition\n >,\n S\n>;\n\nexport function defineQueries<QD extends QueryDefinitions, S extends Schema>(\n defsOrBase: QD | QueryRegistry<QD, S>,\n overrides?: QueryDefinitions,\n): QueryRegistry<QD, S> {\n function processDefinitions(\n definitions: QueryDefinitions,\n path: string[],\n ): Record<string | symbol, unknown> {\n const result: Record<string | symbol, unknown> = {\n ['~']: 'QueryRegistry',\n };\n\n for (const [key, value] of Object.entries(definitions)) {\n path.push(key);\n const defaultName = path.join('.');\n\n if (isQueryDefinition(value)) {\n result[key] = createQuery(defaultName, value);\n } else {\n // Nested definitions\n result[key] = processDefinitions(value, path);\n }\n path.pop();\n }\n\n return result;\n }\n\n if (overrides !== undefined) {\n // Merge base and overrides\n\n let base: Record<string | symbol, unknown>;\n if (!isQueryRegistry(defsOrBase)) {\n base = processDefinitions(defsOrBase as QD, []);\n } else {\n base = defsOrBase;\n }\n\n const processed = processDefinitions(overrides, []);\n\n const merged = deepMerge(base, processed, isQueryLeaf);\n merged['~'] = 'QueryRegistry';\n return merged as QueryRegistry<QD, S>;\n }\n\n return processDefinitions(defsOrBase as QD, []) as QueryRegistry<QD, S>;\n}\n\nconst isQueryLeaf = (value: unknown): boolean =>\n !isPlainObject(value) || isQuery(value);\n\nexport type AssertQueryDefinitions<QD> = QD extends QueryDefinitions\n ? unknown\n : never;\n\nexport type EnsureQueryDefinitions<QD> = QD extends QueryDefinitions\n ? QD\n : QD extends QueryRegistry<infer InnerQD, infer _S>\n ? InnerQD\n : never;\n\n/**\n * Creates a function that can be used to define queries with a specific schema.\n */\nexport function defineQueriesWithType<\n TSchema extends Schema,\n>(): TypedDefineQueries<TSchema> {\n return defineQueries;\n}\n\n/**\n * The return type of defineQueriesWithType. A function matching the\n * defineQueries overloads but with Schema pre-bound.\n */\ntype TypedDefineQueries<S extends Schema> = {\n // Single definitions\n <QD>(\n definitions: QD & AssertQueryDefinitions<QD>,\n ): QueryRegistry<EnsureQueryDefinitions<QD>, S>;\n\n // Base and overrides\n <TBase, TOverrides>(\n base:\n | QueryRegistry<EnsureQueryDefinitions<TBase>, S>\n | (TBase & AssertQueryDefinitions<TBase>),\n overrides: TOverrides & AssertQueryDefinitions<TOverrides>,\n ): QueryRegistry<\n DeepMerge<\n EnsureQueryDefinitions<TBase>,\n EnsureQueryDefinitions<TOverrides>,\n AnyQueryDefinition\n >,\n S\n >;\n};\n\n// ----------------------------------------------------------------------------\n// getQuery / mustGetQuery\n// ----------------------------------------------------------------------------\n\nexport function getQuery<QD extends QueryDefinitions, S extends Schema>(\n queries: QueryRegistry<QD, S>,\n name: string,\n): FromQueryTree<QD, S> | undefined {\n const q = getValueAtPath(queries, name, /[.|]/);\n return q as FromQueryTree<QD, S> | undefined;\n}\n\nexport function mustGetQuery<QD extends QueryDefinitions, S extends Schema>(\n queries: QueryRegistry<QD, S>,\n name: string,\n): FromQueryTree<QD, S> {\n const query = getQuery(queries, name);\n if (query === undefined) {\n throw new Error(`Query not found: ${name}`);\n }\n return query;\n}\n"],"names":[],"mappings":";;;;;AA8EO,SAAS,QAAQ,OAAyC;AAC/D,SACE,OAAO,UAAU,cACjB,OAAQ,MAAgC,cAAc,YACtD,OAAQ,MAAyB,OAAO;AAE5C;AAqEO,MAAM,oBAAoB,CAQ/B,OAQA,YAEA,WAAW,QAAQ,MAAM,MAAM,GAAG,EAAC,KAAK,SAAS,MAAM,MAAM,KAAA,CAAK,IAAI;AAMjE,SAAS,gBAAgB,KAAuC;AACrE,SACE,OAAO,QAAQ,YACf,QAAQ,QACP,MAAqC,GAAG,MAAM;AAEnD;AAgGO,SAAS,kBAAkB,GAAqC;AACrE,SACE,OAAO,MAAM,YACb,MAAM,QACL,EAAwB,GAAG,MAAM;AAEtC;AAiFO,SAAS,YASd,oBAGA,SAC6D;AAE7D,MAAI;AACJ,MAAI;AAOJ,MAAI,OAAO,uBAAuB,YAAY;AAE5C,gBAAY;AACZ,oBAAgB;AAAA,EAClB,OAAO;AAEL,gBAAY;AACZ,oBAAgB,KAAK,OAAO;AAAA,EAC9B;AAEA,QAAM,kBAMF;AAAA,IACF,MAAM;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,EAAA;AAQP,SAAO;AACT;AAyCO,SAAS,sBAAsB;AACpC,SAAO;AACT;AAkCO,SAAS,YAQd,MACA,YACkE;AAClE,QAAM,EAAC,cAAa;AAEpB,QAAM,KAKF,CAAA,YAAW;AACb,UAAM,gBAAgB,YAClB,cAAc,MAAM,QAAQ,MAAM,WAAW,OAAO,IACnD,QAAQ;AAEb,WAAO;AAAA,MACL,WAAW,GAAG;AAAA,QACZ,MAAM;AAAA,QACN,KAAK,QAAQ;AAAA,MAAA,CACd;AAAA,IAAA,EACD;AAAA,MACA;AAAA;AAAA;AAAA,MAGA,QAAQ,SAAS,SAAY,CAAA,IAAK,CAAC,QAAQ,IAAI;AAAA,IAAA;AAAA,EAEnD;AAEA,QAAM,QAAQ,CACZ,UACuE;AAAA,IACvE;AAAA,IACA,KAAK;AAAA,IAQL,SAAS;AAAA,EAAA;AAUX,QAAM,YAAY;AAClB,QAAM,KAAK;AACX,QAAM,GAAG,IAAI;AAQb,SAAO;AAQT;AA8DO,SAAS,cACd,YACA,WACsB;AACtB,WAAS,mBACP,aACA,MACkC;AAClC,UAAM,SAA2C;AAAA,MAC/C,CAAC,GAAG,GAAG;AAAA,IAAA;AAGT,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,WAAW,GAAG;AACtD,WAAK,KAAK,GAAG;AACb,YAAM,cAAc,KAAK,KAAK,GAAG;AAEjC,UAAI,kBAAkB,KAAK,GAAG;AAC5B,eAAO,GAAG,IAAI,YAAY,aAAa,KAAK;AAAA,MAC9C,OAAO;AAEL,eAAO,GAAG,IAAI,mBAAmB,OAAO,IAAI;AAAA,MAC9C;AACA,WAAK,IAAA;AAAA,IACP;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,QAAW;AAG3B,QAAI;AACJ,QAAI,CAAC,gBAAgB,UAAU,GAAG;AAChC,aAAO,mBAAmB,YAAkB,EAAE;AAAA,IAChD,OAAO;AACL,aAAO;AAAA,IACT;AAEA,UAAM,YAAY,mBAAmB,WAAW,EAAE;AAElD,UAAM,SAAS,UAAU,MAAM,WAAW,WAAW;AACrD,WAAO,GAAG,IAAI;AACd,WAAO;AAAA,EACT;AAEA,SAAO,mBAAmB,YAAkB,EAAE;AAChD;AAEA,MAAM,cAAc,CAAC,UACnB,CAAC,cAAc,KAAK,KAAK,QAAQ,KAAK;AAejC,SAAS,wBAEiB;AAC/B,SAAO;AACT;AAgCO,SAAS,SACd,SACA,MACkC;AAClC,QAAM,IAAI,eAAe,SAAS,MAAM,MAAM;AAC9C,SAAO;AACT;AAEO,SAAS,aACd,SACA,MACsB;AACtB,QAAM,QAAQ,SAAS,SAAS,IAAI;AACpC,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI,MAAM,oBAAoB,IAAI,EAAE;AAAA,EAC5C;AACA,SAAO;AACT;"}
|
|
@@ -45,10 +45,10 @@ export type Row<T extends Schema | TableSchema | AnyQueryLike = DefaultSchema> =
|
|
|
45
45
|
} : T extends AnyQueryLike ? QueryRowType<T> : never;
|
|
46
46
|
/**
|
|
47
47
|
* The shape of a CustomQuery's phantom type property.
|
|
48
|
-
* CustomQuery has '~' containing
|
|
48
|
+
* CustomQuery has '~' containing CustomQueryTypes which extends 'Query' & {...}
|
|
49
49
|
*/
|
|
50
50
|
type CustomQueryPhantom = {
|
|
51
|
-
'~': {
|
|
51
|
+
readonly '~': {
|
|
52
52
|
readonly $return: unknown;
|
|
53
53
|
};
|
|
54
54
|
};
|
|
@@ -89,7 +89,7 @@ export type QueryResultType<Q extends AnyQueryLike> = Q extends Query<string, Ze
|
|
|
89
89
|
* @typeParam TSchema The database schema type extending ZeroSchema
|
|
90
90
|
* @typeParam TReturn The return type of the query, defaults to PullRow<TTable, TSchema>
|
|
91
91
|
*/
|
|
92
|
-
export interface Query<TTable extends keyof TSchema['tables'] & string, TSchema extends ZeroSchema = DefaultSchema, TReturn = PullRow<TTable, TSchema>>
|
|
92
|
+
export interface Query<TTable extends keyof TSchema['tables'] & string, TSchema extends ZeroSchema = DefaultSchema, TReturn = PullRow<TTable, TSchema>> {
|
|
93
93
|
related<TRelationship extends AvailableRelationships<TTable, TSchema>>(relationship: TRelationship): Query<TTable, TSchema, AddSubreturn<TReturn, DestRow<TTable, TSchema, TRelationship>, TRelationship>>;
|
|
94
94
|
related<TRelationship extends AvailableRelationships<TTable, TSchema>, TSub extends Query<string, TSchema, any>>(relationship: TRelationship, cb: (q: Query<DestTableName<TTable, TSchema, TRelationship>, TSchema, DestRow<TTable, TSchema, TRelationship>>) => TSub): Query<TTable, TSchema, AddSubreturn<TReturn, TSub extends Query<string, TSchema, infer TSubReturn> ? TSubReturn : never, TRelationship>>;
|
|
95
95
|
where<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>, TOperator extends SimpleOperator>(field: TSelector, op: TOperator, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, TOperator> | ParameterReference): Query<TTable, TSchema, TReturn>;
|
|
@@ -166,20 +166,5 @@ export declare const DEFAULT_RUN_OPTIONS_COMPLETE: {
|
|
|
166
166
|
readonly type: "complete";
|
|
167
167
|
};
|
|
168
168
|
export type AnyQuery = Query<string, Schema, any>;
|
|
169
|
-
/**
|
|
170
|
-
* An interface for objects that can be converted to a {@link Query}.
|
|
171
|
-
*
|
|
172
|
-
* This is useful for creating lazy or deferred queries that are only
|
|
173
|
-
* materialized when needed, allowing the query to be constructed with
|
|
174
|
-
* runtime context.
|
|
175
|
-
*
|
|
176
|
-
* @template T - The table name (must be a key of S['tables'])
|
|
177
|
-
* @template S - The schema type
|
|
178
|
-
* @template R - The return type of the query
|
|
179
|
-
* @template C - The context type passed to {@link toQuery}
|
|
180
|
-
*/
|
|
181
|
-
export interface ToQuery<T extends keyof S['tables'] & string, S extends Schema, R, C> {
|
|
182
|
-
toQuery(context: C): Query<T, S, R>;
|
|
183
|
-
}
|
|
184
169
|
export {};
|
|
185
170
|
//# sourceMappingURL=query.d.ts.map
|