@rocicorp/zero 0.25.0-canary.10 → 0.25.0-canary.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  2. package/out/analyze-query/src/run-ast.js +3 -7
  3. package/out/analyze-query/src/run-ast.js.map +1 -1
  4. package/out/shared/src/iterables.d.ts +0 -1
  5. package/out/shared/src/iterables.d.ts.map +1 -1
  6. package/out/shared/src/iterables.js +0 -34
  7. package/out/shared/src/iterables.js.map +1 -1
  8. package/out/zero/package.json.js +1 -1
  9. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  10. package/out/zero-cache/src/db/transaction-pool.js +3 -6
  11. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  12. package/out/zero-cache/src/services/analyze.d.ts +1 -1
  13. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  14. package/out/zero-cache/src/services/analyze.js +50 -37
  15. package/out/zero-cache/src/services/analyze.js.map +1 -1
  16. package/out/zero-cache/src/services/run-ast.d.ts +1 -1
  17. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  18. package/out/zero-cache/src/services/run-ast.js +5 -1
  19. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  20. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +6 -4
  21. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  22. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +71 -23
  23. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  24. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +1 -1
  25. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  26. package/out/zero-cache/src/services/view-syncer/view-syncer.js +10 -6
  27. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  28. package/out/zero-client/src/client/bindings.d.ts +2 -3
  29. package/out/zero-client/src/client/bindings.d.ts.map +1 -1
  30. package/out/zero-client/src/client/bindings.js.map +1 -1
  31. package/out/zero-client/src/client/make-mutate-property.d.ts +2 -2
  32. package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -1
  33. package/out/zero-client/src/client/make-mutate-property.js.map +1 -1
  34. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
  35. package/out/zero-client/src/client/options.d.ts +3 -3
  36. package/out/zero-client/src/client/options.d.ts.map +1 -1
  37. package/out/zero-client/src/client/options.js.map +1 -1
  38. package/out/zero-client/src/client/version.js +1 -1
  39. package/out/zero-client/src/client/zero.d.ts +1 -2
  40. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  41. package/out/zero-client/src/client/zero.js +6 -2
  42. package/out/zero-client/src/client/zero.js.map +1 -1
  43. package/out/zero-client/src/mod.d.ts +5 -7
  44. package/out/zero-client/src/mod.d.ts.map +1 -1
  45. package/out/zero-react/src/components/inspector.d.ts +1 -2
  46. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  47. package/out/zero-react/src/components/inspector.js.map +1 -1
  48. package/out/zero-react/src/components/zero-inspector.d.ts +1 -2
  49. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  50. package/out/zero-react/src/components/zero-inspector.js.map +1 -1
  51. package/out/zero-react/src/use-query.d.ts +1 -2
  52. package/out/zero-react/src/use-query.d.ts.map +1 -1
  53. package/out/zero-react/src/use-query.js.map +1 -1
  54. package/out/zero-react/src/zero-provider.d.ts +4 -5
  55. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  56. package/out/zero-react/src/zero-provider.js.map +1 -1
  57. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  58. package/out/zero-solid/src/solid-view.js +4 -3
  59. package/out/zero-solid/src/solid-view.js.map +1 -1
  60. package/out/zero-solid/src/use-zero.d.ts +4 -5
  61. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  62. package/out/zero-solid/src/use-zero.js.map +1 -1
  63. package/out/zero-types/src/default-types.d.ts +2 -2
  64. package/out/zero-types/src/default-types.d.ts.map +1 -1
  65. package/out/zql/src/builder/builder.d.ts.map +1 -1
  66. package/out/zql/src/builder/builder.js +0 -1
  67. package/out/zql/src/builder/builder.js.map +1 -1
  68. package/out/zql/src/ivm/array-view.d.ts +1 -1
  69. package/out/zql/src/ivm/array-view.d.ts.map +1 -1
  70. package/out/zql/src/ivm/array-view.js +2 -1
  71. package/out/zql/src/ivm/array-view.js.map +1 -1
  72. package/out/zql/src/ivm/data.d.ts +7 -2
  73. package/out/zql/src/ivm/data.d.ts.map +1 -1
  74. package/out/zql/src/ivm/data.js +3 -0
  75. package/out/zql/src/ivm/data.js.map +1 -1
  76. package/out/zql/src/ivm/exists.d.ts +3 -2
  77. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  78. package/out/zql/src/ivm/exists.js +29 -76
  79. package/out/zql/src/ivm/exists.js.map +1 -1
  80. package/out/zql/src/ivm/fan-in.d.ts +2 -0
  81. package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
  82. package/out/zql/src/ivm/fan-in.js +4 -0
  83. package/out/zql/src/ivm/fan-in.js.map +1 -1
  84. package/out/zql/src/ivm/fan-out.d.ts +2 -0
  85. package/out/zql/src/ivm/fan-out.d.ts.map +1 -1
  86. package/out/zql/src/ivm/fan-out.js +4 -0
  87. package/out/zql/src/ivm/fan-out.js.map +1 -1
  88. package/out/zql/src/ivm/filter-operators.d.ts +6 -2
  89. package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
  90. package/out/zql/src/ivm/filter-operators.js +16 -0
  91. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  92. package/out/zql/src/ivm/filter.d.ts +2 -0
  93. package/out/zql/src/ivm/filter.d.ts.map +1 -1
  94. package/out/zql/src/ivm/filter.js +4 -0
  95. package/out/zql/src/ivm/filter.js.map +1 -1
  96. package/out/zql/src/ivm/flipped-join.d.ts +1 -1
  97. package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
  98. package/out/zql/src/ivm/flipped-join.js +26 -13
  99. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  100. package/out/zql/src/ivm/join-utils.d.ts +2 -1
  101. package/out/zql/src/ivm/join-utils.d.ts.map +1 -1
  102. package/out/zql/src/ivm/join-utils.js +8 -0
  103. package/out/zql/src/ivm/join-utils.js.map +1 -1
  104. package/out/zql/src/ivm/join.d.ts +1 -1
  105. package/out/zql/src/ivm/join.d.ts.map +1 -1
  106. package/out/zql/src/ivm/join.js +15 -6
  107. package/out/zql/src/ivm/join.js.map +1 -1
  108. package/out/zql/src/ivm/memory-source.d.ts +1 -1
  109. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  110. package/out/zql/src/ivm/memory-source.js +8 -1
  111. package/out/zql/src/ivm/memory-source.js.map +1 -1
  112. package/out/zql/src/ivm/operator.d.ts +9 -1
  113. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  114. package/out/zql/src/ivm/operator.js +8 -0
  115. package/out/zql/src/ivm/operator.js.map +1 -1
  116. package/out/zql/src/ivm/push-accumulated.d.ts +1 -1
  117. package/out/zql/src/ivm/push-accumulated.d.ts.map +1 -1
  118. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  119. package/out/zql/src/ivm/skip.d.ts +1 -1
  120. package/out/zql/src/ivm/skip.d.ts.map +1 -1
  121. package/out/zql/src/ivm/skip.js +7 -1
  122. package/out/zql/src/ivm/skip.js.map +1 -1
  123. package/out/zql/src/ivm/take.d.ts +1 -1
  124. package/out/zql/src/ivm/take.d.ts.map +1 -1
  125. package/out/zql/src/ivm/take.js +87 -59
  126. package/out/zql/src/ivm/take.js.map +1 -1
  127. package/out/zql/src/ivm/union-fan-in.d.ts +2 -1
  128. package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
  129. package/out/zql/src/ivm/union-fan-in.js +67 -5
  130. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  131. package/out/zql/src/ivm/union-fan-out.d.ts +1 -1
  132. package/out/zql/src/ivm/union-fan-out.d.ts.map +1 -1
  133. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  134. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  135. package/out/zql/src/ivm/view-apply-change.js +3 -2
  136. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  137. package/out/zql/src/mutate/custom.d.ts +2 -2
  138. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  139. package/out/zql/src/mutate/custom.js.map +1 -1
  140. package/out/zql/src/mutate/mutator-registry.d.ts +33 -15
  141. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -1
  142. package/out/zql/src/mutate/mutator-registry.js +2 -8
  143. package/out/zql/src/mutate/mutator-registry.js.map +1 -1
  144. package/out/zql/src/mutate/mutator.d.ts +50 -25
  145. package/out/zql/src/mutate/mutator.d.ts.map +1 -1
  146. package/out/zql/src/mutate/mutator.js +2 -3
  147. package/out/zql/src/mutate/mutator.js.map +1 -1
  148. package/out/zql/src/query/abstract-query.d.ts +43 -0
  149. package/out/zql/src/query/abstract-query.d.ts.map +1 -0
  150. package/out/zql/src/query/abstract-query.js +408 -0
  151. package/out/zql/src/query/abstract-query.js.map +1 -0
  152. package/out/zql/src/query/create-builder.d.ts +2 -0
  153. package/out/zql/src/query/create-builder.d.ts.map +1 -1
  154. package/out/zql/src/query/create-builder.js +7 -2
  155. package/out/zql/src/query/create-builder.js.map +1 -1
  156. package/out/zql/src/query/measure-push-operator.d.ts +1 -1
  157. package/out/zql/src/query/measure-push-operator.d.ts.map +1 -1
  158. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  159. package/out/zql/src/query/query-delegate-base.d.ts +7 -1
  160. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  161. package/out/zql/src/query/query-delegate-base.js +132 -2
  162. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  163. package/out/zql/src/query/query-impl.d.ts +5 -39
  164. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  165. package/out/zql/src/query/query-impl.js +3 -521
  166. package/out/zql/src/query/query-impl.js.map +1 -1
  167. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  168. package/out/zql/src/query/query-internals.js +2 -2
  169. package/out/zql/src/query/query-internals.js.map +1 -1
  170. package/out/zql/src/query/query-registry.d.ts +126 -58
  171. package/out/zql/src/query/query-registry.d.ts.map +1 -1
  172. package/out/zql/src/query/query-registry.js +13 -21
  173. package/out/zql/src/query/query-registry.js.map +1 -1
  174. package/out/zql/src/query/query.d.ts +21 -0
  175. package/out/zql/src/query/query.d.ts.map +1 -1
  176. package/out/zql/src/query/runnable-query-impl.d.ts +22 -0
  177. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -0
  178. package/out/zql/src/query/runnable-query-impl.js +60 -0
  179. package/out/zql/src/query/runnable-query-impl.js.map +1 -0
  180. package/out/zql/src/query/static-query.d.ts +1 -1
  181. package/out/zql/src/query/static-query.d.ts.map +1 -1
  182. package/out/zql/src/query/static-query.js +1 -1
  183. package/out/zql/src/query/static-query.js.map +1 -1
  184. package/out/zqlite/src/table-source.d.ts +7 -1
  185. package/out/zqlite/src/table-source.d.ts.map +1 -1
  186. package/out/zqlite/src/table-source.js +34 -14
  187. package/out/zqlite/src/table-source.js.map +1 -1
  188. package/package.json +1 -1
@@ -0,0 +1,43 @@
1
+ import type { ReadonlyJSONValue } from '../../../shared/src/json.ts';
2
+ import { type AST, type Condition, type Parameter, type SimpleOperator, type System } from '../../../zero-protocol/src/ast.ts';
3
+ import type { Schema } from '../../../zero-types/src/schema.ts';
4
+ import type { Format, ViewFactory } from '../ivm/view.ts';
5
+ import { type ExpressionFactory } from './expression.ts';
6
+ import type { CustomQueryID } from './named.ts';
7
+ import { type QueryInternals, queryInternalsTag } from './query-internals.ts';
8
+ import type { AnyQuery, ExistsOptions, GetFilterType, HumanReadable, PreloadOptions, PullRow, Query, RunOptions, ToQuery } from './query.ts';
9
+ import type { TTL } from './ttl.ts';
10
+ import type { TypedView } from './typed-view.ts';
11
+ type GetFilterTypeAny = GetFilterType<any, any, any>;
12
+ type NewQueryFunction<TSchema extends Schema> = <TTable extends keyof TSchema['tables'] & string, TReturn>(this: unknown, tableName: TTable, ast: AST, format: Format, customQueryID: CustomQueryID | undefined, currentJunction: string | undefined) => Query<TTable, TSchema, TReturn>;
13
+ export declare abstract class AbstractQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn = PullRow<TTable, TSchema>> implements Query<TTable, TSchema, TReturn>, QueryInternals<TTable, TSchema, TReturn>, ToQuery<TTable, TSchema, TReturn, unknown> {
14
+ #private;
15
+ readonly [queryInternalsTag] = true;
16
+ readonly format: Format;
17
+ readonly customQueryID: CustomQueryID | undefined;
18
+ constructor(schema: TSchema, tableName: TTable, ast: AST, format: Format, system: System, customQueryID: CustomQueryID | undefined, currentJunction: string | undefined, newQuery: NewQueryFunction<TSchema>);
19
+ run(_options?: RunOptions): Promise<HumanReadable<TReturn>>;
20
+ preload(_options?: PreloadOptions): {
21
+ cleanup: () => void;
22
+ complete: Promise<void>;
23
+ };
24
+ materialize(ttl?: TTL): TypedView<HumanReadable<TReturn>>;
25
+ materialize<T>(factory: ViewFactory<TTable, TSchema, TReturn, T>, ttl?: TTL): T;
26
+ nameAndArgs(name: string, args: ReadonlyArray<ReadonlyJSONValue>): Query<TTable, TSchema, TReturn>;
27
+ hash(): string;
28
+ one: () => Query<TTable, TSchema, TReturn | undefined>;
29
+ whereExists: (relationship: string, cbOrOptions?: ((q: AnyQuery) => AnyQuery) | ExistsOptions, options?: ExistsOptions) => Query<TTable, TSchema, TReturn>;
30
+ related: (relationship: string, cb?: (q: AnyQuery) => AnyQuery) => Query<TTable, TSchema, any>;
31
+ where: (fieldOrExpressionFactory: string | ExpressionFactory<TTable, TSchema>, opOrValue?: SimpleOperator | GetFilterTypeAny | Parameter, value?: GetFilterTypeAny | Parameter) => Query<TTable, TSchema, TReturn>;
32
+ start: (row: Partial<Record<string, ReadonlyJSONValue | undefined>>, opts?: {
33
+ inclusive: boolean;
34
+ }) => Query<TTable, TSchema, TReturn>;
35
+ limit: (limit: number) => Query<TTable, TSchema, TReturn>;
36
+ orderBy: <TSelector extends keyof TSchema["tables"][TTable]["columns"]>(field: TSelector, direction: "asc" | "desc") => Query<TTable, TSchema, TReturn>;
37
+ protected _exists: (relationship: string, cb: ((query: AnyQuery) => AnyQuery) | undefined, options?: ExistsOptions) => Condition;
38
+ get ast(): AST;
39
+ toQuery(_context: unknown): this;
40
+ }
41
+ export declare function asAbstractQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn>(q: Query<TTable, TSchema, TReturn>): AbstractQuery<TTable, TSchema, TReturn>;
42
+ export {};
43
+ //# sourceMappingURL=abstract-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/abstract-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,408 @@
1
+ import { assert } from "../../../shared/src/asserts.js";
2
+ import { SUBQ_PREFIX } from "../../../zero-protocol/src/ast.js";
3
+ import { hashOfAST } from "../../../zero-protocol/src/query-hash.js";
4
+ import { NotImplementedError } from "../error.js";
5
+ import { defaultFormat } from "../../../zero-types/src/format.js";
6
+ import { ExpressionBuilder, cmp, and, simplifyCondition } from "./expression.js";
7
+ import { queryInternalsTag } from "./query-internals.js";
8
+ class AbstractQuery {
9
+ [queryInternalsTag] = true;
10
+ #schema;
11
+ #tableName;
12
+ #ast;
13
+ format;
14
+ #hash = "";
15
+ #system;
16
+ #currentJunction;
17
+ customQueryID;
18
+ #newQuery;
19
+ constructor(schema, tableName, ast, format, system, customQueryID, currentJunction, newQuery) {
20
+ this.#schema = schema;
21
+ this.#tableName = tableName;
22
+ this.#ast = ast;
23
+ this.format = format;
24
+ this.#system = system;
25
+ this.#currentJunction = currentJunction;
26
+ this.customQueryID = customQueryID;
27
+ this.#newQuery = newQuery;
28
+ }
29
+ run(_options) {
30
+ throwQueryNotRunnable();
31
+ }
32
+ preload(_options) {
33
+ throwQueryNotRunnable();
34
+ }
35
+ materialize(_factoryOrTTL, _ttl) {
36
+ throwQueryNotRunnable();
37
+ }
38
+ nameAndArgs(name, args) {
39
+ return this.#newQuery(
40
+ this.#tableName,
41
+ this.#ast,
42
+ this.format,
43
+ {
44
+ name,
45
+ args
46
+ },
47
+ this.#currentJunction
48
+ );
49
+ }
50
+ hash() {
51
+ if (!this.#hash) {
52
+ this.#hash = hashOfAST(this.#ast);
53
+ }
54
+ return this.#hash;
55
+ }
56
+ one = () => this.#newQuery(
57
+ this.#tableName,
58
+ {
59
+ ...this.#ast,
60
+ limit: 1
61
+ },
62
+ {
63
+ ...this.format,
64
+ singular: true
65
+ },
66
+ this.customQueryID,
67
+ this.#currentJunction
68
+ );
69
+ whereExists = (relationship, cbOrOptions, options) => {
70
+ const cb = typeof cbOrOptions === "function" ? cbOrOptions : void 0;
71
+ const opts = typeof cbOrOptions === "function" ? options : cbOrOptions;
72
+ const flipped = opts?.flip;
73
+ return this.where(
74
+ ({ exists }) => exists(
75
+ relationship,
76
+ cb,
77
+ flipped !== void 0 ? { flip: flipped } : void 0
78
+ )
79
+ );
80
+ };
81
+ related = (relationship, cb) => {
82
+ if (relationship.startsWith(SUBQ_PREFIX)) {
83
+ throw new Error(
84
+ `Relationship names may not start with "${SUBQ_PREFIX}". That is a reserved prefix.`
85
+ );
86
+ }
87
+ cb = cb ?? ((q) => q);
88
+ const related = this.#schema.relationships[this.#tableName][relationship];
89
+ assert(related, "Invalid relationship");
90
+ if (isOneHop(related)) {
91
+ const { destSchema, destField, sourceField, cardinality } = related[0];
92
+ const q = this.#newQuery(
93
+ destSchema,
94
+ {
95
+ table: destSchema,
96
+ alias: relationship
97
+ },
98
+ {
99
+ relationships: {},
100
+ singular: cardinality === "one"
101
+ },
102
+ this.customQueryID,
103
+ void 0
104
+ );
105
+ const subQuery = asAbstractQuery(cb(q));
106
+ assert(
107
+ isCompoundKey(sourceField),
108
+ "The source of a relationship must specify at last 1 field"
109
+ );
110
+ assert(
111
+ isCompoundKey(destField),
112
+ "The destination of a relationship must specify at last 1 field"
113
+ );
114
+ assert(
115
+ sourceField.length === destField.length,
116
+ "The source and destination of a relationship must have the same number of fields"
117
+ );
118
+ return this.#newQuery(
119
+ this.#tableName,
120
+ {
121
+ ...this.#ast,
122
+ related: [
123
+ ...this.#ast.related ?? [],
124
+ {
125
+ system: this.#system,
126
+ correlation: {
127
+ parentField: sourceField,
128
+ childField: destField
129
+ },
130
+ subquery: subQuery.#ast
131
+ }
132
+ ]
133
+ },
134
+ {
135
+ ...this.format,
136
+ relationships: {
137
+ ...this.format.relationships,
138
+ [relationship]: subQuery.format
139
+ }
140
+ },
141
+ this.customQueryID,
142
+ this.#currentJunction
143
+ );
144
+ }
145
+ if (isTwoHop(related)) {
146
+ const [firstRelation, secondRelation] = related;
147
+ const { destSchema } = secondRelation;
148
+ const junctionSchema = firstRelation.destSchema;
149
+ const sq = asAbstractQuery(
150
+ cb(
151
+ this.#newQuery(
152
+ destSchema,
153
+ {
154
+ table: destSchema,
155
+ alias: relationship
156
+ },
157
+ {
158
+ relationships: {},
159
+ singular: secondRelation.cardinality === "one"
160
+ },
161
+ this.customQueryID,
162
+ relationship
163
+ )
164
+ )
165
+ );
166
+ assert(isCompoundKey(firstRelation.sourceField), "Invalid relationship");
167
+ assert(isCompoundKey(firstRelation.destField), "Invalid relationship");
168
+ assert(isCompoundKey(secondRelation.sourceField), "Invalid relationship");
169
+ assert(isCompoundKey(secondRelation.destField), "Invalid relationship");
170
+ return this.#newQuery(
171
+ this.#tableName,
172
+ {
173
+ ...this.#ast,
174
+ related: [
175
+ ...this.#ast.related ?? [],
176
+ {
177
+ system: this.#system,
178
+ correlation: {
179
+ parentField: firstRelation.sourceField,
180
+ childField: firstRelation.destField
181
+ },
182
+ hidden: true,
183
+ subquery: {
184
+ table: junctionSchema,
185
+ alias: relationship,
186
+ related: [
187
+ {
188
+ system: this.#system,
189
+ correlation: {
190
+ parentField: secondRelation.sourceField,
191
+ childField: secondRelation.destField
192
+ },
193
+ subquery: sq.#ast
194
+ }
195
+ ]
196
+ }
197
+ }
198
+ ]
199
+ },
200
+ {
201
+ ...this.format,
202
+ relationships: {
203
+ ...this.format.relationships,
204
+ [relationship]: sq.format
205
+ }
206
+ },
207
+ this.customQueryID,
208
+ this.#currentJunction
209
+ );
210
+ }
211
+ throw new Error(`Invalid relationship ${relationship}`);
212
+ };
213
+ where = (fieldOrExpressionFactory, opOrValue, value) => {
214
+ let cond;
215
+ if (typeof fieldOrExpressionFactory === "function") {
216
+ cond = fieldOrExpressionFactory(
217
+ new ExpressionBuilder(this._exists)
218
+ );
219
+ } else {
220
+ assert(opOrValue !== void 0, "Invalid condition");
221
+ cond = cmp(fieldOrExpressionFactory, opOrValue, value);
222
+ }
223
+ const existingWhere = this.#ast.where;
224
+ if (existingWhere) {
225
+ cond = and(existingWhere, cond);
226
+ }
227
+ const where = simplifyCondition(cond);
228
+ return this.#newQuery(
229
+ this.#tableName,
230
+ {
231
+ ...this.#ast,
232
+ where
233
+ },
234
+ this.format,
235
+ this.customQueryID,
236
+ this.#currentJunction
237
+ );
238
+ };
239
+ start = (row, opts) => this.#newQuery(
240
+ this.#tableName,
241
+ {
242
+ ...this.#ast,
243
+ start: {
244
+ row,
245
+ exclusive: !opts?.inclusive
246
+ }
247
+ },
248
+ this.format,
249
+ this.customQueryID,
250
+ this.#currentJunction
251
+ );
252
+ limit = (limit) => {
253
+ if (limit < 0) {
254
+ throw new Error("Limit must be non-negative");
255
+ }
256
+ if ((limit | 0) !== limit) {
257
+ throw new Error("Limit must be an integer");
258
+ }
259
+ if (this.#currentJunction) {
260
+ throw new NotImplementedError(
261
+ "Limit is not supported in junction relationships yet. Junction relationship being limited: " + this.#currentJunction
262
+ );
263
+ }
264
+ return this.#newQuery(
265
+ this.#tableName,
266
+ {
267
+ ...this.#ast,
268
+ limit
269
+ },
270
+ this.format,
271
+ this.customQueryID,
272
+ this.#currentJunction
273
+ );
274
+ };
275
+ orderBy = (field, direction) => {
276
+ if (this.#currentJunction) {
277
+ throw new NotImplementedError(
278
+ "Order by is not supported in junction relationships yet. Junction relationship being ordered: " + this.#currentJunction
279
+ );
280
+ }
281
+ return this.#newQuery(
282
+ this.#tableName,
283
+ {
284
+ ...this.#ast,
285
+ orderBy: [...this.#ast.orderBy ?? [], [field, direction]]
286
+ },
287
+ this.format,
288
+ this.customQueryID,
289
+ this.#currentJunction
290
+ );
291
+ };
292
+ _exists = (relationship, cb, options) => {
293
+ cb = cb ?? ((q) => q);
294
+ const flip = options?.flip;
295
+ const related = this.#schema.relationships[this.#tableName][relationship];
296
+ assert(related, "Invalid relationship");
297
+ if (isOneHop(related)) {
298
+ const { destSchema: destTableName, sourceField, destField } = related[0];
299
+ assert(isCompoundKey(sourceField), "Invalid relationship");
300
+ assert(isCompoundKey(destField), "Invalid relationship");
301
+ const subQuery = asAbstractQuery(
302
+ cb(
303
+ this.#newQuery(
304
+ destTableName,
305
+ {
306
+ table: destTableName,
307
+ alias: `${SUBQ_PREFIX}${relationship}`
308
+ },
309
+ defaultFormat,
310
+ this.customQueryID,
311
+ void 0
312
+ )
313
+ )
314
+ );
315
+ return {
316
+ type: "correlatedSubquery",
317
+ related: {
318
+ system: this.#system,
319
+ correlation: {
320
+ parentField: sourceField,
321
+ childField: destField
322
+ },
323
+ subquery: subQuery.#ast
324
+ },
325
+ op: "EXISTS",
326
+ flip
327
+ };
328
+ }
329
+ if (isTwoHop(related)) {
330
+ const [firstRelation, secondRelation] = related;
331
+ assert(isCompoundKey(firstRelation.sourceField), "Invalid relationship");
332
+ assert(isCompoundKey(firstRelation.destField), "Invalid relationship");
333
+ assert(isCompoundKey(secondRelation.sourceField), "Invalid relationship");
334
+ assert(isCompoundKey(secondRelation.destField), "Invalid relationship");
335
+ const { destSchema } = secondRelation;
336
+ const junctionSchema = firstRelation.destSchema;
337
+ const queryToDest = cb(
338
+ this.#newQuery(
339
+ destSchema,
340
+ {
341
+ table: destSchema,
342
+ alias: `${SUBQ_PREFIX}zhidden_${relationship}`
343
+ },
344
+ defaultFormat,
345
+ this.customQueryID,
346
+ relationship
347
+ )
348
+ );
349
+ return {
350
+ type: "correlatedSubquery",
351
+ related: {
352
+ system: this.#system,
353
+ correlation: {
354
+ parentField: firstRelation.sourceField,
355
+ childField: firstRelation.destField
356
+ },
357
+ subquery: {
358
+ table: junctionSchema,
359
+ alias: `${SUBQ_PREFIX}${relationship}`,
360
+ where: {
361
+ type: "correlatedSubquery",
362
+ related: {
363
+ system: this.#system,
364
+ correlation: {
365
+ parentField: secondRelation.sourceField,
366
+ childField: secondRelation.destField
367
+ },
368
+ subquery: asAbstractQuery(queryToDest).#ast
369
+ },
370
+ op: "EXISTS",
371
+ flip
372
+ }
373
+ }
374
+ },
375
+ op: "EXISTS",
376
+ flip
377
+ };
378
+ }
379
+ throw new Error(`Invalid relationship ${relationship}`);
380
+ };
381
+ get ast() {
382
+ return this.#ast;
383
+ }
384
+ toQuery(_context) {
385
+ return this;
386
+ }
387
+ }
388
+ function asAbstractQuery(q) {
389
+ assert(q instanceof AbstractQuery);
390
+ return q;
391
+ }
392
+ function throwQueryNotRunnable() {
393
+ throw new Error("Query is not runnable");
394
+ }
395
+ function isCompoundKey(field) {
396
+ return Array.isArray(field) && field.length >= 1;
397
+ }
398
+ function isOneHop(r) {
399
+ return r.length === 1;
400
+ }
401
+ function isTwoHop(r) {
402
+ return r.length === 2;
403
+ }
404
+ export {
405
+ AbstractQuery,
406
+ asAbstractQuery
407
+ };
408
+ //# sourceMappingURL=abstract-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-query.js","sources":["../../../../../zql/src/query/abstract-query.ts"],"sourcesContent":["// oxlint-disable no-explicit-any\nimport {assert} from '../../../shared/src/asserts.ts';\nimport type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {\n type AST,\n type CompoundKey,\n type Condition,\n type Parameter,\n type SimpleOperator,\n type System,\n SUBQ_PREFIX,\n} from '../../../zero-protocol/src/ast.ts';\nimport {hashOfAST} from '../../../zero-protocol/src/query-hash.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {NotImplementedError} from '../error.ts';\nimport {defaultFormat} from '../ivm/default-format.ts';\nimport type {Format, ViewFactory} from '../ivm/view.ts';\nimport {\n type ExpressionFactory,\n ExpressionBuilder,\n and,\n cmp,\n simplifyCondition,\n} from './expression.ts';\nimport type {CustomQueryID} from './named.ts';\nimport {type QueryInternals, queryInternalsTag} from './query-internals.ts';\nimport type {\n AnyQuery,\n ExistsOptions,\n GetFilterType,\n HumanReadable,\n PreloadOptions,\n PullRow,\n Query,\n RunOptions,\n ToQuery,\n} from './query.ts';\nimport type {TTL} from './ttl.ts';\nimport type {TypedView} from './typed-view.ts';\n\ntype GetFilterTypeAny = GetFilterType<any, any, any>;\n\ntype NewQueryFunction<TSchema extends Schema> = <\n TTable extends keyof TSchema['tables'] & string,\n TReturn,\n>(\n this: unknown,\n tableName: TTable,\n ast: AST,\n format: Format,\n customQueryID: CustomQueryID | undefined,\n currentJunction: string | undefined,\n) => Query<TTable, TSchema, TReturn>;\n\nexport abstract class AbstractQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn = PullRow<TTable, TSchema>,\n >\n implements\n Query<TTable, TSchema, TReturn>,\n QueryInternals<TTable, TSchema, TReturn>,\n ToQuery<TTable, TSchema, TReturn, unknown>\n{\n readonly [queryInternalsTag] = true;\n\n readonly #schema: TSchema;\n readonly #tableName: TTable;\n readonly #ast: AST;\n readonly format: Format;\n #hash: string = '';\n readonly #system: System;\n readonly #currentJunction: string | undefined;\n readonly customQueryID: CustomQueryID | undefined;\n readonly #newQuery: NewQueryFunction<TSchema>;\n\n constructor(\n schema: TSchema,\n tableName: TTable,\n ast: AST,\n format: Format,\n system: System,\n customQueryID: CustomQueryID | undefined,\n currentJunction: string | undefined,\n newQuery: NewQueryFunction<TSchema>,\n ) {\n this.#schema = schema;\n this.#tableName = tableName;\n this.#ast = ast;\n this.format = format;\n this.#system = system;\n this.#currentJunction = currentJunction;\n this.customQueryID = customQueryID;\n this.#newQuery = newQuery;\n }\n\n run(_options?: RunOptions): Promise<HumanReadable<TReturn>> {\n throwQueryNotRunnable();\n }\n\n preload(_options?: PreloadOptions): {\n cleanup: () => void;\n complete: Promise<void>;\n } {\n throwQueryNotRunnable();\n }\n\n materialize(ttl?: TTL): TypedView<HumanReadable<TReturn>>;\n materialize<T>(\n factory: ViewFactory<TTable, TSchema, TReturn, T>,\n ttl?: TTL,\n ): T;\n materialize<T>(\n _factoryOrTTL?: ViewFactory<TTable, TSchema, TReturn, T> | TTL,\n _ttl?: TTL,\n ): T | TypedView<HumanReadable<TReturn>> {\n throwQueryNotRunnable();\n }\n\n nameAndArgs(\n name: string,\n args: ReadonlyArray<ReadonlyJSONValue>,\n ): Query<TTable, TSchema, TReturn> {\n return this.#newQuery(\n this.#tableName,\n this.#ast,\n this.format,\n {\n name,\n args,\n },\n this.#currentJunction,\n );\n }\n\n hash(): string {\n if (!this.#hash) {\n this.#hash = hashOfAST(this.#ast);\n }\n return this.#hash;\n }\n\n one = (): Query<TTable, TSchema, TReturn | undefined> =>\n this.#newQuery(\n this.#tableName,\n {\n ...this.#ast,\n limit: 1,\n },\n {\n ...this.format,\n singular: true,\n },\n this.customQueryID,\n this.#currentJunction,\n );\n\n whereExists = (\n relationship: string,\n cbOrOptions?: ((q: AnyQuery) => AnyQuery) | ExistsOptions,\n options?: ExistsOptions,\n ): Query<TTable, TSchema, TReturn> => {\n const cb = typeof cbOrOptions === 'function' ? cbOrOptions : undefined;\n const opts = typeof cbOrOptions === 'function' ? options : cbOrOptions;\n const flipped = opts?.flip;\n return this.where(({exists}) =>\n exists(\n relationship,\n cb,\n flipped !== undefined ? {flip: flipped} : undefined,\n ),\n ) as Query<TTable, TSchema, TReturn>;\n };\n\n related = (\n relationship: string,\n cb?: (q: AnyQuery) => AnyQuery,\n ): Query<TTable, TSchema, any> => {\n if (relationship.startsWith(SUBQ_PREFIX)) {\n throw new Error(\n `Relationship names may not start with \"${SUBQ_PREFIX}\". That is a reserved prefix.`,\n );\n }\n cb = cb ?? (q => q);\n\n const related = this.#schema.relationships[this.#tableName][relationship];\n assert(related, 'Invalid relationship');\n if (isOneHop(related)) {\n const {destSchema, destField, sourceField, cardinality} = related[0];\n const q: AnyQuery = this.#newQuery(\n destSchema,\n {\n table: destSchema,\n alias: relationship,\n },\n {\n relationships: {},\n singular: cardinality === 'one',\n },\n this.customQueryID,\n undefined,\n ) as AnyQuery;\n // Intentionally not setting to `one` as it is a perf degradation\n // and the user should not be making the mistake of setting cardinality to\n // `one` when it is actually not.\n // if (cardinality === 'one') {\n // q = q.one();\n // }\n const subQuery = asAbstractQuery(cb(q));\n assert(\n isCompoundKey(sourceField),\n 'The source of a relationship must specify at last 1 field',\n );\n assert(\n isCompoundKey(destField),\n 'The destination of a relationship must specify at last 1 field',\n );\n assert(\n sourceField.length === destField.length,\n 'The source and destination of a relationship must have the same number of fields',\n );\n\n return this.#newQuery(\n this.#tableName,\n {\n ...this.#ast,\n related: [\n ...(this.#ast.related ?? []),\n {\n system: this.#system,\n correlation: {\n parentField: sourceField,\n childField: destField,\n },\n subquery: subQuery.#ast,\n },\n ],\n },\n {\n ...this.format,\n relationships: {\n ...this.format.relationships,\n [relationship]: subQuery.format,\n },\n },\n this.customQueryID,\n this.#currentJunction,\n ) as AnyQuery;\n }\n\n if (isTwoHop(related)) {\n const [firstRelation, secondRelation] = related;\n const {destSchema} = secondRelation;\n const junctionSchema = firstRelation.destSchema;\n const sq = asAbstractQuery(\n cb(\n this.#newQuery(\n destSchema,\n {\n table: destSchema,\n alias: relationship,\n },\n {\n relationships: {},\n singular: secondRelation.cardinality === 'one',\n },\n this.customQueryID,\n relationship,\n ),\n ),\n );\n\n assert(isCompoundKey(firstRelation.sourceField), 'Invalid relationship');\n assert(isCompoundKey(firstRelation.destField), 'Invalid relationship');\n assert(isCompoundKey(secondRelation.sourceField), 'Invalid relationship');\n assert(isCompoundKey(secondRelation.destField), 'Invalid relationship');\n\n return this.#newQuery(\n this.#tableName,\n {\n ...this.#ast,\n related: [\n ...(this.#ast.related ?? []),\n {\n system: this.#system,\n correlation: {\n parentField: firstRelation.sourceField,\n childField: firstRelation.destField,\n },\n hidden: true,\n subquery: {\n table: junctionSchema,\n alias: relationship,\n related: [\n {\n system: this.#system,\n correlation: {\n parentField: secondRelation.sourceField,\n childField: secondRelation.destField,\n },\n subquery: sq.#ast,\n },\n ],\n },\n },\n ],\n },\n {\n ...this.format,\n relationships: {\n ...this.format.relationships,\n [relationship]: sq.format,\n },\n },\n this.customQueryID,\n this.#currentJunction,\n ) as AnyQuery;\n }\n\n throw new Error(`Invalid relationship ${relationship}`);\n };\n\n where = (\n fieldOrExpressionFactory: string | ExpressionFactory<TTable, TSchema>,\n opOrValue?: SimpleOperator | GetFilterTypeAny | Parameter,\n value?: GetFilterTypeAny | Parameter,\n ): Query<TTable, TSchema, TReturn> => {\n let cond: Condition;\n\n if (typeof fieldOrExpressionFactory === 'function') {\n cond = fieldOrExpressionFactory(\n new ExpressionBuilder(this._exists) as ExpressionBuilder<\n TTable,\n TSchema\n >,\n );\n } else {\n assert(opOrValue !== undefined, 'Invalid condition');\n cond = cmp(fieldOrExpressionFactory, opOrValue, value);\n }\n\n const existingWhere = this.#ast.where;\n if (existingWhere) {\n cond = and(existingWhere, cond);\n }\n\n const where = simplifyCondition(cond);\n\n return this.#newQuery(\n this.#tableName,\n {\n ...this.#ast,\n where,\n },\n this.format,\n this.customQueryID,\n this.#currentJunction,\n );\n };\n\n start = (\n row: Partial<Record<string, ReadonlyJSONValue | undefined>>,\n opts?: {inclusive: boolean},\n ): Query<TTable, TSchema, TReturn> =>\n this.#newQuery(\n this.#tableName,\n {\n ...this.#ast,\n start: {\n row,\n exclusive: !opts?.inclusive,\n },\n },\n this.format,\n this.customQueryID,\n this.#currentJunction,\n );\n\n limit = (limit: number): Query<TTable, TSchema, TReturn> => {\n if (limit < 0) {\n throw new Error('Limit must be non-negative');\n }\n if ((limit | 0) !== limit) {\n throw new Error('Limit must be an integer');\n }\n if (this.#currentJunction) {\n throw new NotImplementedError(\n 'Limit is not supported in junction relationships yet. Junction relationship being limited: ' +\n this.#currentJunction,\n );\n }\n\n return this.#newQuery(\n this.#tableName,\n {\n ...this.#ast,\n limit,\n },\n this.format,\n this.customQueryID,\n this.#currentJunction,\n );\n };\n\n orderBy = <TSelector extends keyof TSchema['tables'][TTable]['columns']>(\n field: TSelector,\n direction: 'asc' | 'desc',\n ): Query<TTable, TSchema, TReturn> => {\n if (this.#currentJunction) {\n throw new NotImplementedError(\n 'Order by is not supported in junction relationships yet. Junction relationship being ordered: ' +\n this.#currentJunction,\n );\n }\n return this.#newQuery(\n this.#tableName,\n {\n ...this.#ast,\n orderBy: [...(this.#ast.orderBy ?? []), [field as string, direction]],\n },\n this.format,\n this.customQueryID,\n this.#currentJunction,\n );\n };\n\n protected _exists = (\n relationship: string,\n cb: ((query: AnyQuery) => AnyQuery) | undefined,\n options?: ExistsOptions,\n ): Condition => {\n cb = cb ?? (q => q);\n const flip = options?.flip;\n const related = this.#schema.relationships[this.#tableName][relationship];\n assert(related, 'Invalid relationship');\n\n if (isOneHop(related)) {\n const {destSchema: destTableName, sourceField, destField} = related[0];\n assert(isCompoundKey(sourceField), 'Invalid relationship');\n assert(isCompoundKey(destField), 'Invalid relationship');\n\n const subQuery = asAbstractQuery(\n cb(\n this.#newQuery(\n destTableName,\n {\n table: destTableName,\n alias: `${SUBQ_PREFIX}${relationship}`,\n },\n defaultFormat,\n this.customQueryID,\n undefined,\n ),\n ),\n );\n return {\n type: 'correlatedSubquery',\n related: {\n system: this.#system,\n correlation: {\n parentField: sourceField,\n childField: destField,\n },\n subquery: subQuery.#ast,\n },\n op: 'EXISTS',\n flip,\n };\n }\n\n if (isTwoHop(related)) {\n const [firstRelation, secondRelation] = related;\n assert(isCompoundKey(firstRelation.sourceField), 'Invalid relationship');\n assert(isCompoundKey(firstRelation.destField), 'Invalid relationship');\n assert(isCompoundKey(secondRelation.sourceField), 'Invalid relationship');\n assert(isCompoundKey(secondRelation.destField), 'Invalid relationship');\n const {destSchema} = secondRelation;\n const junctionSchema = firstRelation.destSchema;\n const queryToDest = cb(\n this.#newQuery(\n destSchema,\n {\n table: destSchema,\n alias: `${SUBQ_PREFIX}zhidden_${relationship}`,\n },\n defaultFormat,\n this.customQueryID,\n relationship,\n ) as AnyQuery,\n );\n\n return {\n type: 'correlatedSubquery',\n related: {\n system: this.#system,\n correlation: {\n parentField: firstRelation.sourceField,\n childField: firstRelation.destField,\n },\n subquery: {\n table: junctionSchema,\n alias: `${SUBQ_PREFIX}${relationship}`,\n where: {\n type: 'correlatedSubquery',\n related: {\n system: this.#system,\n correlation: {\n parentField: secondRelation.sourceField,\n childField: secondRelation.destField,\n },\n subquery: asAbstractQuery(queryToDest).#ast,\n },\n op: 'EXISTS',\n flip,\n },\n },\n },\n op: 'EXISTS',\n flip,\n };\n }\n\n throw new Error(`Invalid relationship ${relationship}`);\n };\n\n get ast(): AST {\n return this.#ast;\n }\n\n toQuery(_context: unknown): this {\n return this;\n }\n}\nexport function asAbstractQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n>(q: Query<TTable, TSchema, TReturn>): AbstractQuery<TTable, TSchema, TReturn> {\n assert(q instanceof AbstractQuery);\n return q;\n}\n\nfunction throwQueryNotRunnable(): never {\n throw new Error('Query is not runnable');\n}\n\nfunction isCompoundKey(field: readonly string[]): field is CompoundKey {\n return Array.isArray(field) && field.length >= 1;\n}\n\nfunction isOneHop<T>(r: readonly T[]): r is readonly [T] {\n return r.length === 1;\n}\n\nfunction isTwoHop<T>(r: readonly T[]): r is readonly [T, T] {\n return r.length === 2;\n}\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import type { Schema } from '../../../zero-types/src/schema.ts';
2
+ import type { Query } from './query.ts';
2
3
  import type { SchemaQuery } from './schema-query.ts';
3
4
  /**
4
5
  * Returns a set of query builders for the given schema.
5
6
  */
6
7
  export declare function createBuilder<S extends Schema>(schema: S): SchemaQuery<S>;
8
+ export declare function createBuilderWithQueryFactory<S extends Schema>(schema: S, queryFactory: (table: keyof S['tables'] & string) => Query<string, S>): SchemaQuery<S>;
7
9
  //# sourceMappingURL=create-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/create-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAG9D,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CA4CzE"}
1
+ {"version":3,"file":"create-builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/create-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAIzE;AAED,wBAAgB,6BAA6B,CAC3C,CAAC,SAAS,MAAM,EAGhB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GACpE,WAAW,CAAC,CAAC,CAAC,CA2ChB"}
@@ -1,5 +1,9 @@
1
1
  import { newQuery } from "./query-impl.js";
2
2
  function createBuilder(schema) {
3
+ const factory = (table) => newQuery(schema, table);
4
+ return createBuilderWithQueryFactory(schema, factory);
5
+ }
6
+ function createBuilderWithQueryFactory(schema, queryFactory) {
3
7
  const cache = /* @__PURE__ */ new Map();
4
8
  const { tables } = schema;
5
9
  function getQuery(prop) {
@@ -10,7 +14,7 @@ function createBuilder(schema) {
10
14
  if (!Object.hasOwn(schema.tables, prop)) {
11
15
  return void 0;
12
16
  }
13
- const q = newQuery(schema, prop);
17
+ const q = queryFactory(prop);
14
18
  cache.set(prop, q);
15
19
  return q;
16
20
  }
@@ -39,6 +43,7 @@ function createBuilder(schema) {
39
43
  });
40
44
  }
41
45
  export {
42
- createBuilder
46
+ createBuilder,
47
+ createBuilderWithQueryFactory
43
48
  };
44
49
  //# sourceMappingURL=create-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-builder.js","sources":["../../../../../zql/src/query/create-builder.ts"],"sourcesContent":["import type {Schema} from '../../../zero-types/src/schema.ts';\nimport {newQuery} from './query-impl.ts';\nimport type {Query} from './query.ts';\nimport type {SchemaQuery} from './schema-query.ts';\n\n/**\n * Returns a set of query builders for the given schema.\n */\nexport function createBuilder<S extends Schema>(schema: S): SchemaQuery<S> {\n // oxlint-disable-next-line no-explicit-any\n const cache = new Map<string, Query<string, S, any>>();\n const {tables} = schema;\n\n function getQuery(prop: string) {\n const cached = cache.get(prop);\n if (cached) {\n return cached;\n }\n\n if (!Object.hasOwn(schema.tables, prop)) {\n return undefined;\n }\n\n const q = newQuery(schema, prop);\n cache.set(prop, q);\n return q;\n }\n\n return new Proxy(tables, {\n get: (_target, prop) => {\n if (typeof prop === 'symbol') {\n return undefined;\n }\n const q = getQuery(prop);\n if (!q) {\n throw new Error(`Table ${String(prop)} does not exist in schema`);\n }\n return q;\n },\n\n getOwnPropertyDescriptor: (_target, prop) => {\n if (typeof prop === 'symbol') {\n return undefined;\n }\n const value = getQuery(prop);\n if (!value) {\n return undefined;\n }\n const desc = Reflect.getOwnPropertyDescriptor(tables, prop);\n return {...desc, value};\n },\n }) as unknown as SchemaQuery<S>;\n}\n"],"names":[],"mappings":";AAQO,SAAS,cAAgC,QAA2B;AAEzE,QAAM,4BAAY,IAAA;AAClB,QAAM,EAAC,WAAU;AAEjB,WAAS,SAAS,MAAc;AAC9B,UAAM,SAAS,MAAM,IAAI,IAAI;AAC7B,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,OAAO,OAAO,OAAO,QAAQ,IAAI,GAAG;AACvC,aAAO;AAAA,IACT;AAEA,UAAM,IAAI,SAAS,QAAQ,IAAI;AAC/B,UAAM,IAAI,MAAM,CAAC;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,MAAM,QAAQ;AAAA,IACvB,KAAK,CAAC,SAAS,SAAS;AACtB,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO;AAAA,MACT;AACA,YAAM,IAAI,SAAS,IAAI;AACvB,UAAI,CAAC,GAAG;AACN,cAAM,IAAI,MAAM,SAAS,OAAO,IAAI,CAAC,2BAA2B;AAAA,MAClE;AACA,aAAO;AAAA,IACT;AAAA,IAEA,0BAA0B,CAAC,SAAS,SAAS;AAC3C,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO;AAAA,MACT;AACA,YAAM,QAAQ,SAAS,IAAI;AAC3B,UAAI,CAAC,OAAO;AACV,eAAO;AAAA,MACT;AACA,YAAM,OAAO,QAAQ,yBAAyB,QAAQ,IAAI;AAC1D,aAAO,EAAC,GAAG,MAAM,MAAA;AAAA,IACnB;AAAA,EAAA,CACD;AACH;"}
1
+ {"version":3,"file":"create-builder.js","sources":["../../../../../zql/src/query/create-builder.ts"],"sourcesContent":["import type {Schema} from '../../../zero-types/src/schema.ts';\nimport {newQuery} from './query-impl.ts';\nimport type {Query} from './query.ts';\nimport type {SchemaQuery} from './schema-query.ts';\n\n/**\n * Returns a set of query builders for the given schema.\n */\nexport function createBuilder<S extends Schema>(schema: S): SchemaQuery<S> {\n const factory = (table: keyof S['tables'] & string) =>\n newQuery(schema, table);\n return createBuilderWithQueryFactory(schema, factory);\n}\n\nexport function createBuilderWithQueryFactory<\n S extends Schema,\n // TQuery extends Query<keyof S['tables'] & string, S>,\n>(\n schema: S,\n queryFactory: (table: keyof S['tables'] & string) => Query<string, S>,\n): SchemaQuery<S> {\n const cache = new Map<string, Query<string, S>>();\n const {tables} = schema;\n\n function getQuery(prop: string) {\n const cached = cache.get(prop);\n if (cached) {\n return cached;\n }\n\n if (!Object.hasOwn(schema.tables, prop)) {\n return undefined;\n }\n\n const q = queryFactory(prop);\n cache.set(prop, q);\n return q;\n }\n\n return new Proxy(tables, {\n get: (_target, prop) => {\n if (typeof prop === 'symbol') {\n return undefined;\n }\n const q = getQuery(prop);\n if (!q) {\n throw new Error(`Table ${String(prop)} does not exist in schema`);\n }\n return q;\n },\n\n getOwnPropertyDescriptor: (_target, prop) => {\n if (typeof prop === 'symbol') {\n return undefined;\n }\n const value = getQuery(prop);\n if (!value) {\n return undefined;\n }\n const desc = Reflect.getOwnPropertyDescriptor(tables, prop);\n return {...desc, value};\n },\n }) as unknown as SchemaQuery<S>;\n}\n"],"names":[],"mappings":";AAQO,SAAS,cAAgC,QAA2B;AACzE,QAAM,UAAU,CAAC,UACf,SAAS,QAAQ,KAAK;AACxB,SAAO,8BAA8B,QAAQ,OAAO;AACtD;AAEO,SAAS,8BAId,QACA,cACgB;AAChB,QAAM,4BAAY,IAAA;AAClB,QAAM,EAAC,WAAU;AAEjB,WAAS,SAAS,MAAc;AAC9B,UAAM,SAAS,MAAM,IAAI,IAAI;AAC7B,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,OAAO,OAAO,OAAO,QAAQ,IAAI,GAAG;AACvC,aAAO;AAAA,IACT;AAEA,UAAM,IAAI,aAAa,IAAI;AAC3B,UAAM,IAAI,MAAM,CAAC;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,MAAM,QAAQ;AAAA,IACvB,KAAK,CAAC,SAAS,SAAS;AACtB,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO;AAAA,MACT;AACA,YAAM,IAAI,SAAS,IAAI;AACvB,UAAI,CAAC,GAAG;AACN,cAAM,IAAI,MAAM,SAAS,OAAO,IAAI,CAAC,2BAA2B;AAAA,MAClE;AACA,aAAO;AAAA,IACT;AAAA,IAEA,0BAA0B,CAAC,SAAS,SAAS;AAC3C,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO;AAAA,MACT;AACA,YAAM,QAAQ,SAAS,IAAI;AAC3B,UAAI,CAAC,OAAO;AACV,eAAO;AAAA,MACT;AACA,YAAM,OAAO,QAAQ,yBAAyB,QAAQ,IAAI;AAC1D,aAAO,EAAC,GAAG,MAAM,MAAA;AAAA,IACnB;AAAA,EAAA,CACD;AACH;"}
@@ -9,7 +9,7 @@ export declare class MeasurePushOperator implements Operator {
9
9
  #private;
10
10
  constructor(input: Input, queryID: string, metricsDelegate: MetricsDelegate, metricName: MetricName);
11
11
  setOutput(output: Output): void;
12
- fetch(req: FetchRequest): Stream<Node>;
12
+ fetch(req: FetchRequest): Stream<Node | 'yield'>;
13
13
  cleanup(req: FetchRequest): Stream<Node>;
14
14
  getSchema(): SourceSchema;
15
15
  destroy(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"measure-push-operator.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/measure-push-operator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,MAAM,EACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D,KAAK,UAAU,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAEhE,qBAAa,mBAAoB,YAAW,QAAQ;;gBAShD,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,UAAU;IASxB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;IAItC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;IAIxC,SAAS,IAAI,YAAY;IAIzB,OAAO,IAAI,IAAI;IAIf,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAS3B"}
1
+ {"version":3,"file":"measure-push-operator.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/measure-push-operator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,MAAM,EACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAE3D,KAAK,UAAU,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAEhE,qBAAa,mBAAoB,YAAW,QAAQ;;gBAShD,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,UAAU;IASxB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;IAIhD,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;IAIxC,SAAS,IAAI,YAAY;IAIzB,OAAO,IAAI,IAAI;IAIf,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAS3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"measure-push-operator.js","sources":["../../../../../zql/src/query/measure-push-operator.ts"],"sourcesContent":["import type {Change} from '../ivm/change.ts';\nimport type {Node} from '../ivm/data.ts';\nimport {\n throwOutput,\n type FetchRequest,\n type Input,\n type Operator,\n type Output,\n} from '../ivm/operator.ts';\nimport type {SourceSchema} from '../ivm/schema.ts';\nimport type {Stream} from '../ivm/stream.ts';\nimport type {MetricsDelegate} from './metrics-delegate.ts';\n\ntype MetricName = 'query-update-client' | 'query-update-server';\n\nexport class MeasurePushOperator implements Operator {\n readonly #input: Input;\n readonly #queryID: string;\n readonly #metricsDelegate: MetricsDelegate;\n\n #output: Output = throwOutput;\n readonly #metricName: MetricName;\n\n constructor(\n input: Input,\n queryID: string,\n metricsDelegate: MetricsDelegate,\n metricName: MetricName,\n ) {\n this.#input = input;\n this.#queryID = queryID;\n this.#metricsDelegate = metricsDelegate;\n this.#metricName = metricName;\n input.setOutput(this);\n }\n\n setOutput(output: Output): void {\n this.#output = output;\n }\n\n fetch(req: FetchRequest): Stream<Node> {\n return this.#input.fetch(req);\n }\n\n cleanup(req: FetchRequest): Stream<Node> {\n return this.#input.cleanup(req);\n }\n\n getSchema(): SourceSchema {\n return this.#input.getSchema();\n }\n\n destroy(): void {\n this.#input.destroy();\n }\n\n push(change: Change): void {\n const startTime = performance.now();\n this.#output.push(change, this);\n this.#metricsDelegate.addMetric(\n this.#metricName,\n performance.now() - startTime,\n this.#queryID,\n );\n }\n}\n"],"names":[],"mappings":";AAeO,MAAM,oBAAwC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EAET,UAAkB;AAAA,EACT;AAAA,EAET,YACE,OACA,SACA,iBACA,YACA;AACA,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,mBAAmB;AACxB,SAAK,cAAc;AACnB,UAAM,UAAU,IAAI;AAAA,EACtB;AAAA,EAEA,UAAU,QAAsB;AAC9B,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,MAAM,KAAiC;AACrC,WAAO,KAAK,OAAO,MAAM,GAAG;AAAA,EAC9B;AAAA,EAEA,QAAQ,KAAiC;AACvC,WAAO,KAAK,OAAO,QAAQ,GAAG;AAAA,EAChC;AAAA,EAEA,YAA0B;AACxB,WAAO,KAAK,OAAO,UAAA;AAAA,EACrB;AAAA,EAEA,UAAgB;AACd,SAAK,OAAO,QAAA;AAAA,EACd;AAAA,EAEA,KAAK,QAAsB;AACzB,UAAM,YAAY,YAAY,IAAA;AAC9B,SAAK,QAAQ,KAAK,QAAQ,IAAI;AAC9B,SAAK,iBAAiB;AAAA,MACpB,KAAK;AAAA,MACL,YAAY,QAAQ;AAAA,MACpB,KAAK;AAAA,IAAA;AAAA,EAET;AACF;"}
1
+ {"version":3,"file":"measure-push-operator.js","sources":["../../../../../zql/src/query/measure-push-operator.ts"],"sourcesContent":["import type {Change} from '../ivm/change.ts';\nimport type {Node} from '../ivm/data.ts';\nimport {\n throwOutput,\n type FetchRequest,\n type Input,\n type Operator,\n type Output,\n} from '../ivm/operator.ts';\nimport type {SourceSchema} from '../ivm/schema.ts';\nimport type {Stream} from '../ivm/stream.ts';\nimport type {MetricsDelegate} from './metrics-delegate.ts';\n\ntype MetricName = 'query-update-client' | 'query-update-server';\n\nexport class MeasurePushOperator implements Operator {\n readonly #input: Input;\n readonly #queryID: string;\n readonly #metricsDelegate: MetricsDelegate;\n\n #output: Output = throwOutput;\n readonly #metricName: MetricName;\n\n constructor(\n input: Input,\n queryID: string,\n metricsDelegate: MetricsDelegate,\n metricName: MetricName,\n ) {\n this.#input = input;\n this.#queryID = queryID;\n this.#metricsDelegate = metricsDelegate;\n this.#metricName = metricName;\n input.setOutput(this);\n }\n\n setOutput(output: Output): void {\n this.#output = output;\n }\n\n fetch(req: FetchRequest): Stream<Node | 'yield'> {\n return this.#input.fetch(req);\n }\n\n cleanup(req: FetchRequest): Stream<Node> {\n return this.#input.cleanup(req);\n }\n\n getSchema(): SourceSchema {\n return this.#input.getSchema();\n }\n\n destroy(): void {\n this.#input.destroy();\n }\n\n push(change: Change): void {\n const startTime = performance.now();\n this.#output.push(change, this);\n this.#metricsDelegate.addMetric(\n this.#metricName,\n performance.now() - startTime,\n this.#queryID,\n );\n }\n}\n"],"names":[],"mappings":";AAeO,MAAM,oBAAwC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EAET,UAAkB;AAAA,EACT;AAAA,EAET,YACE,OACA,SACA,iBACA,YACA;AACA,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,mBAAmB;AACxB,SAAK,cAAc;AACnB,UAAM,UAAU,IAAI;AAAA,EACtB;AAAA,EAEA,UAAU,QAAsB;AAC9B,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,MAAM,KAA2C;AAC/C,WAAO,KAAK,OAAO,MAAM,GAAG;AAAA,EAC9B;AAAA,EAEA,QAAQ,KAAiC;AACvC,WAAO,KAAK,OAAO,QAAQ,GAAG;AAAA,EAChC;AAAA,EAEA,YAA0B;AACxB,WAAO,KAAK,OAAO,UAAA;AAAA,EACrB;AAAA,EAEA,UAAgB;AACd,SAAK,OAAO,QAAA;AAAA,EACd;AAAA,EAEA,KAAK,QAAsB;AACzB,UAAM,YAAY,YAAY,IAAA;AAC9B,SAAK,QAAQ,KAAK,QAAQ,IAAI;AAC9B,SAAK,iBAAiB;AAAA,MACpB,KAAK;AAAA,MACL,YAAY,QAAQ;AAAA,MACpB,KAAK;AAAA,IAAA;AAAA,EAET;AACF;"}
@@ -8,7 +8,7 @@ import type { MetricMap } from './metrics-delegate.ts';
8
8
  import type { CustomQueryID } from './named.ts';
9
9
  import type { CommitListener, GotCallback, QueryDelegate } from './query-delegate.ts';
10
10
  import type { HumanReadable, MaterializeOptions, PreloadOptions, Query, RunOptions } from './query.ts';
11
- import type { TTL } from './ttl.ts';
11
+ import { type TTL } from './ttl.ts';
12
12
  import type { TypedView } from './typed-view.ts';
13
13
  /**
14
14
  * Base class that provides default implementations for common QueryDelegate methods.
@@ -111,4 +111,10 @@ export declare abstract class QueryDelegateBase implements QueryDelegate {
111
111
  abstract readonly defaultQueryComplete: boolean;
112
112
  abstract getSource(name: string): Source | undefined;
113
113
  }
114
+ export declare function runImpl<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn>(query: Query<TTable, TSchema, TReturn>, delegate: QueryDelegate, options?: RunOptions): Promise<HumanReadable<TReturn>>;
115
+ export declare function preloadImpl<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn>(query: Query<TTable, TSchema, TReturn>, delegate: QueryDelegate, options?: PreloadOptions): {
116
+ cleanup: () => void;
117
+ complete: Promise<void>;
118
+ };
119
+ export declare function materializeImpl<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn, T>(query: Query<TTable, TSchema, TReturn>, delegate: QueryDelegate, factory?: ViewFactory<TTable, TSchema, TReturn, T>, options?: MaterializeOptions): T;
114
120
  //# sourceMappingURL=query-delegate-base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-delegate-base.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-delegate-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-delegate-base.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-delegate-base.ts"],"names":[],"mappings":"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"}