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

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 (184) 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/config/zero-config.d.ts +0 -4
  10. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  11. package/out/zero-cache/src/config/zero-config.js +5 -15
  12. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  13. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  14. package/out/zero-cache/src/db/transaction-pool.js +3 -6
  15. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  16. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  17. package/out/zero-cache/src/server/change-streamer.js +2 -8
  18. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  19. package/out/zero-cache/src/services/analyze.d.ts +1 -1
  20. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  21. package/out/zero-cache/src/services/analyze.js +50 -37
  22. package/out/zero-cache/src/services/analyze.js.map +1 -1
  23. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  24. package/out/zero-cache/src/services/change-source/pg/change-source.js +62 -42
  25. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  26. package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts +1 -0
  27. package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts.map +1 -1
  28. package/out/zero-cache/src/services/change-source/protocol/current/control.js +5 -1
  29. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  30. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +2 -0
  31. package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
  32. package/out/zero-cache/src/services/change-source/protocol/current/json.d.ts +8 -0
  33. package/out/zero-cache/src/services/change-source/protocol/current/json.d.ts.map +1 -0
  34. package/out/zero-cache/src/services/change-source/protocol/current/json.js +19 -0
  35. package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -0
  36. package/out/zero-cache/src/services/change-source/protocol/current.d.ts +1 -0
  37. package/out/zero-cache/src/services/change-source/protocol/current.d.ts.map +1 -1
  38. package/out/zero-cache/src/services/change-source/protocol/current.js +3 -0
  39. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  40. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +0 -2
  41. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  42. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +0 -5
  43. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  44. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  45. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +8 -1
  46. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  47. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  48. package/out/zero-cache/src/services/change-streamer/storer.js +2 -3
  49. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  50. package/out/zero-cache/src/services/http-service.d.ts +0 -1
  51. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  52. package/out/zero-cache/src/services/http-service.js +0 -4
  53. package/out/zero-cache/src/services/http-service.js.map +1 -1
  54. package/out/zero-cache/src/services/replicator/replication-status.d.ts +2 -0
  55. package/out/zero-cache/src/services/replicator/replication-status.d.ts.map +1 -1
  56. package/out/zero-cache/src/services/replicator/replication-status.js +14 -1
  57. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  58. package/out/zero-cache/src/services/run-ast.d.ts +1 -1
  59. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  60. package/out/zero-cache/src/services/run-ast.js +5 -1
  61. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  62. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +6 -4
  63. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  64. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +71 -23
  65. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  66. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +1 -1
  67. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  68. package/out/zero-cache/src/services/view-syncer/view-syncer.js +10 -6
  69. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  70. package/out/zero-client/src/client/version.js +1 -1
  71. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  72. package/out/zero-client/src/client/zero.js +6 -2
  73. package/out/zero-client/src/client/zero.js.map +1 -1
  74. package/out/zero-events/src/status.d.ts +1 -1
  75. package/out/zero-events/src/status.d.ts.map +1 -1
  76. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  77. package/out/zero-solid/src/solid-view.js +4 -3
  78. package/out/zero-solid/src/solid-view.js.map +1 -1
  79. package/out/zql/src/builder/builder.d.ts.map +1 -1
  80. package/out/zql/src/builder/builder.js +0 -1
  81. package/out/zql/src/builder/builder.js.map +1 -1
  82. package/out/zql/src/ivm/array-view.d.ts +1 -1
  83. package/out/zql/src/ivm/array-view.d.ts.map +1 -1
  84. package/out/zql/src/ivm/array-view.js +2 -1
  85. package/out/zql/src/ivm/array-view.js.map +1 -1
  86. package/out/zql/src/ivm/data.d.ts +7 -2
  87. package/out/zql/src/ivm/data.d.ts.map +1 -1
  88. package/out/zql/src/ivm/data.js +3 -0
  89. package/out/zql/src/ivm/data.js.map +1 -1
  90. package/out/zql/src/ivm/exists.d.ts +3 -2
  91. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  92. package/out/zql/src/ivm/exists.js +29 -76
  93. package/out/zql/src/ivm/exists.js.map +1 -1
  94. package/out/zql/src/ivm/fan-in.d.ts +2 -0
  95. package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
  96. package/out/zql/src/ivm/fan-in.js +4 -0
  97. package/out/zql/src/ivm/fan-in.js.map +1 -1
  98. package/out/zql/src/ivm/fan-out.d.ts +2 -0
  99. package/out/zql/src/ivm/fan-out.d.ts.map +1 -1
  100. package/out/zql/src/ivm/fan-out.js +4 -0
  101. package/out/zql/src/ivm/fan-out.js.map +1 -1
  102. package/out/zql/src/ivm/filter-operators.d.ts +6 -2
  103. package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
  104. package/out/zql/src/ivm/filter-operators.js +16 -0
  105. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  106. package/out/zql/src/ivm/filter.d.ts +2 -0
  107. package/out/zql/src/ivm/filter.d.ts.map +1 -1
  108. package/out/zql/src/ivm/filter.js +4 -0
  109. package/out/zql/src/ivm/filter.js.map +1 -1
  110. package/out/zql/src/ivm/flipped-join.d.ts +1 -1
  111. package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
  112. package/out/zql/src/ivm/flipped-join.js +26 -13
  113. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  114. package/out/zql/src/ivm/join-utils.d.ts +2 -1
  115. package/out/zql/src/ivm/join-utils.d.ts.map +1 -1
  116. package/out/zql/src/ivm/join-utils.js +8 -0
  117. package/out/zql/src/ivm/join-utils.js.map +1 -1
  118. package/out/zql/src/ivm/join.d.ts +1 -1
  119. package/out/zql/src/ivm/join.d.ts.map +1 -1
  120. package/out/zql/src/ivm/join.js +32 -13
  121. package/out/zql/src/ivm/join.js.map +1 -1
  122. package/out/zql/src/ivm/memory-source.d.ts +1 -1
  123. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  124. package/out/zql/src/ivm/memory-source.js +8 -1
  125. package/out/zql/src/ivm/memory-source.js.map +1 -1
  126. package/out/zql/src/ivm/operator.d.ts +9 -1
  127. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  128. package/out/zql/src/ivm/operator.js +8 -0
  129. package/out/zql/src/ivm/operator.js.map +1 -1
  130. package/out/zql/src/ivm/push-accumulated.d.ts +1 -1
  131. package/out/zql/src/ivm/push-accumulated.d.ts.map +1 -1
  132. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  133. package/out/zql/src/ivm/skip.d.ts +1 -1
  134. package/out/zql/src/ivm/skip.d.ts.map +1 -1
  135. package/out/zql/src/ivm/skip.js +7 -1
  136. package/out/zql/src/ivm/skip.js.map +1 -1
  137. package/out/zql/src/ivm/take.d.ts +1 -1
  138. package/out/zql/src/ivm/take.d.ts.map +1 -1
  139. package/out/zql/src/ivm/take.js +87 -59
  140. package/out/zql/src/ivm/take.js.map +1 -1
  141. package/out/zql/src/ivm/union-fan-in.d.ts +2 -1
  142. package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
  143. package/out/zql/src/ivm/union-fan-in.js +67 -5
  144. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  145. package/out/zql/src/ivm/union-fan-out.d.ts +1 -1
  146. package/out/zql/src/ivm/union-fan-out.d.ts.map +1 -1
  147. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  148. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  149. package/out/zql/src/ivm/view-apply-change.js +3 -2
  150. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  151. package/out/zql/src/query/abstract-query.d.ts +43 -0
  152. package/out/zql/src/query/abstract-query.d.ts.map +1 -0
  153. package/out/zql/src/query/abstract-query.js +408 -0
  154. package/out/zql/src/query/abstract-query.js.map +1 -0
  155. package/out/zql/src/query/create-builder.d.ts +2 -0
  156. package/out/zql/src/query/create-builder.d.ts.map +1 -1
  157. package/out/zql/src/query/create-builder.js +7 -2
  158. package/out/zql/src/query/create-builder.js.map +1 -1
  159. package/out/zql/src/query/measure-push-operator.d.ts +1 -1
  160. package/out/zql/src/query/measure-push-operator.d.ts.map +1 -1
  161. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  162. package/out/zql/src/query/query-delegate-base.d.ts +7 -1
  163. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  164. package/out/zql/src/query/query-delegate-base.js +132 -2
  165. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  166. package/out/zql/src/query/query-impl.d.ts +5 -39
  167. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  168. package/out/zql/src/query/query-impl.js +3 -521
  169. package/out/zql/src/query/query-impl.js.map +1 -1
  170. package/out/zql/src/query/query.d.ts +21 -0
  171. package/out/zql/src/query/query.d.ts.map +1 -1
  172. package/out/zql/src/query/runnable-query-impl.d.ts +22 -0
  173. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -0
  174. package/out/zql/src/query/runnable-query-impl.js +60 -0
  175. package/out/zql/src/query/runnable-query-impl.js.map +1 -0
  176. package/out/zql/src/query/static-query.d.ts +1 -1
  177. package/out/zql/src/query/static-query.d.ts.map +1 -1
  178. package/out/zql/src/query/static-query.js +1 -1
  179. package/out/zql/src/query/static-query.js.map +1 -1
  180. package/out/zqlite/src/table-source.d.ts +7 -1
  181. package/out/zqlite/src/table-source.d.ts.map +1 -1
  182. package/out/zqlite/src/table-source.js +34 -14
  183. package/out/zqlite/src/table-source.js.map +1 -1
  184. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { AST, System } from '../../../zero-protocol/src/ast.ts';
2
+ import type { Schema } from '../../../zero-types/src/schema.ts';
3
+ import type { Format, ViewFactory } from '../ivm/view.ts';
4
+ import { AbstractQuery } from './abstract-query.ts';
5
+ import type { CustomQueryID } from './named.ts';
6
+ import type { QueryDelegate } from './query-delegate.ts';
7
+ import type { HumanReadable, PreloadOptions, PullRow, Query, RunOptions, ToQuery } from './query.ts';
8
+ import type { TTL } from './ttl.ts';
9
+ import type { TypedView } from './typed-view.ts';
10
+ export declare function newRunnableQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema>(delegate: QueryDelegate, schema: TSchema, table: TTable): Query<TTable, TSchema>;
11
+ export declare class RunnableQueryImpl<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn = PullRow<TTable, TSchema>> extends AbstractQuery<TTable, TSchema, TReturn> implements Query<TTable, TSchema, TReturn>, ToQuery<TTable, TSchema, TReturn, unknown> {
12
+ #private;
13
+ constructor(delegate: QueryDelegate, schema: TSchema, tableName: TTable, ast?: AST, format?: Format, system?: System, customQueryID?: CustomQueryID, currentJunction?: string);
14
+ run(options?: RunOptions): Promise<HumanReadable<TReturn>>;
15
+ preload(options?: PreloadOptions): {
16
+ cleanup: () => void;
17
+ complete: Promise<void>;
18
+ };
19
+ materialize(ttl?: TTL): TypedView<HumanReadable<TReturn>>;
20
+ materialize<T>(factory: ViewFactory<TTable, TSchema, TReturn, T>, ttl?: TTL): T;
21
+ }
22
+ //# sourceMappingURL=runnable-query-impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runnable-query-impl.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/runnable-query-impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EAEb,cAAc,EACd,OAAO,EACP,KAAK,EACL,UAAU,EACV,OAAO,EACR,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,UAAU,CAAC;AAClC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAE/C,wBAAgB,gBAAgB,CAC9B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EAEtB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CASxB;AAED,qBAAa,iBAAiB,CAC1B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAEpC,SAAQ,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAC9C,YACE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;;gBAK1C,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,GAAwB,EAC7B,MAAM,GAAE,MAAsB,EAC9B,MAAM,GAAE,MAAiB,EACzB,aAAa,CAAC,EAAE,aAAa,EAC7B,eAAe,CAAC,EAAE,MAAM;IAyB1B,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAI1D,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG;QACjC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB;IAID,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzD,WAAW,CAAC,CAAC,EACX,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EACjD,GAAG,CAAC,EAAE,GAAG,GACR,CAAC;CAkBL"}
@@ -0,0 +1,60 @@
1
+ import { defaultFormat } from "../../../zero-types/src/format.js";
2
+ import { AbstractQuery } from "./abstract-query.js";
3
+ function newRunnableQuery(delegate, schema, table) {
4
+ return new RunnableQueryImpl(
5
+ delegate,
6
+ schema,
7
+ table,
8
+ { table },
9
+ defaultFormat,
10
+ void 0
11
+ );
12
+ }
13
+ class RunnableQueryImpl extends AbstractQuery {
14
+ #delegate;
15
+ constructor(delegate, schema, tableName, ast = { table: tableName }, format = defaultFormat, system = "client", customQueryID, currentJunction) {
16
+ super(
17
+ schema,
18
+ tableName,
19
+ ast,
20
+ format,
21
+ system,
22
+ customQueryID,
23
+ currentJunction,
24
+ (tableName2, ast2, format2, customQueryID2, currentJunction2) => new RunnableQueryImpl(
25
+ delegate,
26
+ schema,
27
+ tableName2,
28
+ ast2,
29
+ format2,
30
+ system,
31
+ customQueryID2,
32
+ currentJunction2
33
+ )
34
+ );
35
+ this.#delegate = delegate;
36
+ }
37
+ run(options) {
38
+ return this.#delegate.run(this, options);
39
+ }
40
+ preload(options) {
41
+ return this.#delegate.preload(this, options);
42
+ }
43
+ materialize(factory, ttl) {
44
+ let actualFactory;
45
+ let options;
46
+ if (typeof factory === "function") {
47
+ actualFactory = factory;
48
+ options = { ttl };
49
+ } else {
50
+ actualFactory = void 0;
51
+ options = { ttl: factory };
52
+ }
53
+ return this.#delegate.materialize(this, actualFactory, options);
54
+ }
55
+ }
56
+ export {
57
+ RunnableQueryImpl,
58
+ newRunnableQuery
59
+ };
60
+ //# sourceMappingURL=runnable-query-impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runnable-query-impl.js","sources":["../../../../../zql/src/query/runnable-query-impl.ts"],"sourcesContent":["import type {AST, System} from '../../../zero-protocol/src/ast.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {defaultFormat} from '../ivm/default-format.ts';\nimport type {Format, ViewFactory} from '../ivm/view.ts';\nimport {AbstractQuery} from './abstract-query.ts';\nimport type {CustomQueryID} from './named.ts';\nimport type {QueryDelegate} from './query-delegate.ts';\nimport type {\n HumanReadable,\n MaterializeOptions,\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\nexport function newRunnableQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n>(\n delegate: QueryDelegate,\n schema: TSchema,\n table: TTable,\n): Query<TTable, TSchema> {\n return new RunnableQueryImpl(\n delegate,\n schema,\n table,\n {table},\n defaultFormat,\n undefined,\n );\n}\n\nexport class RunnableQueryImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn = PullRow<TTable, TSchema>,\n >\n extends AbstractQuery<TTable, TSchema, TReturn>\n implements\n Query<TTable, TSchema, TReturn>,\n ToQuery<TTable, TSchema, TReturn, unknown>\n{\n readonly #delegate: QueryDelegate;\n\n constructor(\n delegate: QueryDelegate,\n schema: TSchema,\n tableName: TTable,\n ast: AST = {table: tableName},\n format: Format = defaultFormat,\n system: System = 'client',\n customQueryID?: CustomQueryID,\n currentJunction?: string,\n ) {\n super(\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n (tableName, ast, format, customQueryID, currentJunction) =>\n new RunnableQueryImpl(\n delegate,\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n ),\n );\n this.#delegate = delegate;\n }\n\n run(options?: RunOptions): Promise<HumanReadable<TReturn>> {\n return this.#delegate.run(this, options);\n }\n\n preload(options?: PreloadOptions): {\n cleanup: () => void;\n complete: Promise<void>;\n } {\n return this.#delegate.preload(this, options);\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 factory?: unknown,\n ttl?: unknown,\n ): T | TypedView<HumanReadable<TReturn>> {\n let actualFactory: ViewFactory<TTable, TSchema, TReturn, T> | undefined;\n let options: MaterializeOptions | undefined;\n\n if (typeof factory === 'function') {\n actualFactory = factory as ViewFactory<TTable, TSchema, TReturn, T>;\n options = {ttl: ttl as TTL | undefined};\n } else {\n actualFactory = undefined;\n options = {ttl: factory as TTL | undefined};\n }\n\n return this.#delegate.materialize(this, actualFactory, options);\n }\n}\n"],"names":["tableName","ast","format","customQueryID","currentJunction"],"mappings":";;AAmBO,SAAS,iBAId,UACA,QACA,OACwB;AACxB,SAAO,IAAI;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAC,MAAA;AAAA,IACD;AAAA,IACA;AAAA,EAAA;AAEJ;AAEO,MAAM,0BAKH,cAIV;AAAA,EACW;AAAA,EAET,YACE,UACA,QACA,WACA,MAAW,EAAC,OAAO,UAAA,GACnB,SAAiB,eACjB,SAAiB,UACjB,eACA,iBACA;AACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAACA,YAAWC,MAAKC,SAAQC,gBAAeC,qBACtC,IAAI;AAAA,QACF;AAAA,QACA;AAAA,QACAJ;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACA;AAAA,QACAC;AAAAA,QACAC;AAAAA,MAAA;AAAA,IACF;AAEJ,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,IAAI,SAAuD;AACzD,WAAO,KAAK,UAAU,IAAI,MAAM,OAAO;AAAA,EACzC;AAAA,EAEA,QAAQ,SAGN;AACA,WAAO,KAAK,UAAU,QAAQ,MAAM,OAAO;AAAA,EAC7C;AAAA,EAOA,YACE,SACA,KACuC;AACvC,QAAI;AACJ,QAAI;AAEJ,QAAI,OAAO,YAAY,YAAY;AACjC,sBAAgB;AAChB,gBAAU,EAAC,IAAA;AAAA,IACb,OAAO;AACL,sBAAgB;AAChB,gBAAU,EAAC,KAAK,QAAA;AAAA,IAClB;AAEA,WAAO,KAAK,UAAU,YAAY,MAAM,eAAe,OAAO;AAAA,EAChE;AACF;"}
@@ -1,9 +1,9 @@
1
1
  import type { AST, System } from '../../../zero-protocol/src/ast.ts';
2
2
  import type { Schema } from '../../../zero-types/src/schema.ts';
3
3
  import type { Format } from '../ivm/view.ts';
4
+ import { AbstractQuery } from './abstract-query.ts';
4
5
  import { ExpressionBuilder } from './expression.ts';
5
6
  import type { CustomQueryID } from './named.ts';
6
- import { AbstractQuery } from './query-impl.ts';
7
7
  import type { PullRow, Query } from './query.ts';
8
8
  export declare function staticQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn = PullRow<TTable, TSchema>>(schema: TSchema, tableName: TTable): Query<TTable, TSchema, TReturn>;
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"static-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/static-query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,YAAY,CAAC;AAE/C,wBAAgB,WAAW,CACzB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAOrE;AAED;;;GAGG;AACH,qBAAa,WAAW,CACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAClC,SAAQ,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;gBAE7C,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAsB,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,eAAe,CAAC,EAAE,MAAM;IAuB1B,iBAAiB;CAGlB;AAED,wBAAgB,aAAa,CAC3B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,EACP,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAG3E"}
1
+ {"version":3,"file":"static-query.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/static-query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,YAAY,CAAC;AAE/C,wBAAgB,WAAW,CACzB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAOrE;AAED;;;GAGG;AACH,qBAAa,WAAW,CACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAClC,SAAQ,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;gBAE7C,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,MAAsB,EAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,eAAe,CAAC,EAAE,MAAM;IAuB1B,iBAAiB;CAGlB;AAED,wBAAgB,aAAa,CAC3B,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,OAAO,EACP,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAG3E"}
@@ -1,7 +1,7 @@
1
1
  import { assert } from "../../../shared/src/asserts.js";
2
2
  import { defaultFormat } from "../../../zero-types/src/format.js";
3
+ import { AbstractQuery } from "./abstract-query.js";
3
4
  import { ExpressionBuilder } from "./expression.js";
4
- import { AbstractQuery } from "./query-impl.js";
5
5
  function staticQuery(schema, tableName) {
6
6
  return new StaticQuery(
7
7
  schema,
@@ -1 +1 @@
1
- {"version":3,"file":"static-query.js","sources":["../../../../../zql/src/query/static-query.ts"],"sourcesContent":["import {assert} from '../../../shared/src/asserts.ts';\nimport type {AST, System} from '../../../zero-protocol/src/ast.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {defaultFormat} from '../ivm/default-format.ts';\nimport type {Format} from '../ivm/view.ts';\nimport {ExpressionBuilder} from './expression.ts';\nimport type {CustomQueryID} from './named.ts';\nimport {AbstractQuery} from './query-impl.ts';\nimport type {PullRow, Query} from './query.ts';\n\nexport function staticQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn = PullRow<TTable, TSchema>,\n>(schema: TSchema, tableName: TTable): Query<TTable, TSchema, TReturn> {\n return new StaticQuery<TTable, TSchema, TReturn>(\n schema,\n tableName,\n {table: tableName},\n defaultFormat,\n );\n}\n\n/**\n * A query that cannot be run.\n * Only serves to generate ASTs.\n */\nexport class StaticQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn = PullRow<TTable, TSchema>,\n> extends AbstractQuery<TTable, TSchema, TReturn> {\n constructor(\n schema: TSchema,\n tableName: TTable,\n ast: AST,\n format: Format,\n system: System = 'permissions',\n customQueryID?: CustomQueryID,\n currentJunction?: string,\n ) {\n super(\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n (tableName, ast, format, _customQueryID, _currentJunction) =>\n new StaticQuery(\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n ),\n );\n }\n\n expressionBuilder() {\n return new ExpressionBuilder(this._exists);\n }\n}\n\nexport function asStaticQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n>(q: Query<TTable, TSchema, TReturn>): StaticQuery<TTable, TSchema, TReturn> {\n assert(q instanceof StaticQuery);\n return q;\n}\n"],"names":["tableName","ast","format"],"mappings":";;;;AAUO,SAAS,YAId,QAAiB,WAAoD;AACrE,SAAO,IAAI;AAAA,IACT;AAAA,IACA;AAAA,IACA,EAAC,OAAO,UAAA;AAAA,IACR;AAAA,EAAA;AAEJ;AAMO,MAAM,oBAIH,cAAwC;AAAA,EAChD,YACE,QACA,WACA,KACA,QACA,SAAiB,eACjB,eACA,iBACA;AACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAACA,YAAWC,MAAKC,SAAQ,gBAAgB,qBACvC,IAAI;AAAA,QACF;AAAA,QACAF;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EAEN;AAAA,EAEA,oBAAoB;AAClB,WAAO,IAAI,kBAAkB,KAAK,OAAO;AAAA,EAC3C;AACF;AAEO,SAAS,cAId,GAA2E;AAC3E,SAAO,aAAa,WAAW;AAC/B,SAAO;AACT;"}
1
+ {"version":3,"file":"static-query.js","sources":["../../../../../zql/src/query/static-query.ts"],"sourcesContent":["import {assert} from '../../../shared/src/asserts.ts';\nimport type {AST, System} from '../../../zero-protocol/src/ast.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {defaultFormat} from '../ivm/default-format.ts';\nimport type {Format} from '../ivm/view.ts';\nimport {AbstractQuery} from './abstract-query.ts';\nimport {ExpressionBuilder} from './expression.ts';\nimport type {CustomQueryID} from './named.ts';\nimport type {PullRow, Query} from './query.ts';\n\nexport function staticQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn = PullRow<TTable, TSchema>,\n>(schema: TSchema, tableName: TTable): Query<TTable, TSchema, TReturn> {\n return new StaticQuery<TTable, TSchema, TReturn>(\n schema,\n tableName,\n {table: tableName},\n defaultFormat,\n );\n}\n\n/**\n * A query that cannot be run.\n * Only serves to generate ASTs.\n */\nexport class StaticQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn = PullRow<TTable, TSchema>,\n> extends AbstractQuery<TTable, TSchema, TReturn> {\n constructor(\n schema: TSchema,\n tableName: TTable,\n ast: AST,\n format: Format,\n system: System = 'permissions',\n customQueryID?: CustomQueryID,\n currentJunction?: string,\n ) {\n super(\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n (tableName, ast, format, _customQueryID, _currentJunction) =>\n new StaticQuery(\n schema,\n tableName,\n ast,\n format,\n system,\n customQueryID,\n currentJunction,\n ),\n );\n }\n\n expressionBuilder() {\n return new ExpressionBuilder(this._exists);\n }\n}\n\nexport function asStaticQuery<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n>(q: Query<TTable, TSchema, TReturn>): StaticQuery<TTable, TSchema, TReturn> {\n assert(q instanceof StaticQuery);\n return q;\n}\n"],"names":["tableName","ast","format"],"mappings":";;;;AAUO,SAAS,YAId,QAAiB,WAAoD;AACrE,SAAO,IAAI;AAAA,IACT;AAAA,IACA;AAAA,IACA,EAAC,OAAO,UAAA;AAAA,IACR;AAAA,EAAA;AAEJ;AAMO,MAAM,oBAIH,cAAwC;AAAA,EAChD,YACE,QACA,WACA,KACA,QACA,SAAiB,eACjB,eACA,iBACA;AACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAACA,YAAWC,MAAKC,SAAQ,gBAAgB,qBACvC,IAAI;AAAA,QACF;AAAA,QACAF;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EAEN;AAAA,EAEA,oBAAoB;AAClB,WAAO,IAAI,kBAAkB,KAAK,OAAO;AAAA,EAC3C;AACF;AAEO,SAAS,cAId,GAA2E;AAC3E,SAAO,aAAa,WAAW;AAC/B,SAAO;AACT;"}
@@ -23,7 +23,13 @@ import type { Database } from './db.ts';
23
23
  */
24
24
  export declare class TableSource implements Source {
25
25
  #private;
26
- constructor(logContext: LogContext, logConfig: LogConfig, db: Database, tableName: string, columns: Record<string, SchemaValue>, primaryKey: PrimaryKey);
26
+ /**
27
+ * @param shouldYield a function called after each row is read from the database,
28
+ * which should return true if the source should yield the special 'yield' value
29
+ * to yield control back to the caller at the end of the pipeline. Can
30
+ * also throw an error to abort the pipeline processing.
31
+ */
32
+ constructor(logContext: LogContext, logConfig: LogConfig, db: Database, tableName: string, columns: Record<string, SchemaValue>, primaryKey: PrimaryKey, shouldYield?: () => boolean);
27
33
  get tableSchema(): {
28
34
  name: string;
29
35
  columns: Record<string, SchemaValue>;
@@ -1 +1 @@
1
- {"version":3,"file":"table-source.d.ts","sourceRoot":"","sources":["../../../../zqlite/src/table-source.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,+BAA+B,CAAC;AAK7D,OAAO,KAAK,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAC,GAAG,EAAQ,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACV,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,yCAAyC,CAAC;AAe3E,OAAO,EACL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAC,QAAQ,EAAY,MAAM,SAAS,CAAC;AAqBjD;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,YAAW,MAAM;;gBActC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,UAAU,EAAE,UAAU;IAgBxB,IAAI,WAAW;;;;MAMd;IAED;;;OAGG;IACH,KAAK,CAAC,EAAE,EAAE,QAAQ;IA4FlB,OAAO,CACL,IAAI,EAAE,QAAQ,EACd,OAAO,CAAC,EAAE,SAAS,EACnB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,KAAK,CAAC,EAAE,aAAa;IAuCvB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;IAyG1B,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAM/B,OAAO,CAAC,MAAM,EAAE,YAAY;IA2F7B;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS;CA6BrC;AA6BD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACvC,SAAS,OAAO,EAAE,CAEpB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,wCAa/C;AAED,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACvC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,GAChB,GAAG,CAaL;AAwCD,qBAAa,qBAAsB,SAAQ,KAAK;CAAG"}
1
+ {"version":3,"file":"table-source.d.ts","sourceRoot":"","sources":["../../../../zqlite/src/table-source.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,+BAA+B,CAAC;AAK7D,OAAO,KAAK,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAC,GAAG,EAAQ,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACV,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,yCAAyC,CAAC;AAe3E,OAAO,EACL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAC,QAAQ,EAAY,MAAM,SAAS,CAAC;AAqBjD;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,YAAW,MAAM;;IAcxC;;;;;OAKG;gBAED,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,UAAU,EAAE,UAAU,EACtB,WAAW,gBAAc;IAiB3B,IAAI,WAAW;;;;MAMd;IAED;;;OAGG;IACH,KAAK,CAAC,EAAE,EAAE,QAAQ;IA4FlB,OAAO,CACL,IAAI,EAAE,QAAQ,EACd,OAAO,CAAC,EAAE,SAAS,EACnB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,KAAK,CAAC,EAAE,aAAa;IAuCvB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;IA4G1B,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAM/B,OAAO,CAAC,MAAM,EAAE,YAAY;IA2F7B;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS;CA6BrC;AA6BD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACvC,SAAS,OAAO,EAAE,CAEpB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,wCAa/C;AAED,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACvC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,GAChB,GAAG,CAaL;AAwCD,qBAAa,qBAAsB,SAAQ,KAAK;CAAG"}
@@ -5,6 +5,7 @@ import { must } from "../../shared/src/must.js";
5
5
  import { transformFilters, createPredicate } from "../../zql/src/builder/filter.js";
6
6
  import { makeComparator } from "../../zql/src/ivm/data.js";
7
7
  import { generateWithStart, generateWithOverlay, genPushAndWriteWithSplitEdit } from "../../zql/src/ivm/memory-source.js";
8
+ import { skipYields } from "../../zql/src/ivm/operator.js";
8
9
  import { compile, sql, format } from "./internal/sql.js";
9
10
  import { StatementCache } from "./internal/statement-cache.js";
10
11
  import { toSQLiteType, buildSelectQuery } from "./query-builder.js";
@@ -20,9 +21,16 @@ class TableSource {
20
21
  #primaryKey;
21
22
  #logConfig;
22
23
  #lc;
24
+ #shouldYield;
23
25
  #stmts;
24
26
  #overlay;
25
- constructor(logContext, logConfig, db, tableName, columns, primaryKey) {
27
+ /**
28
+ * @param shouldYield a function called after each row is read from the database,
29
+ * which should return true if the source should yield the special 'yield' value
30
+ * to yield control back to the caller at the end of the pipeline. Can
31
+ * also throw an error to abort the pipeline processing.
32
+ */
33
+ constructor(logContext, logConfig, db, tableName, columns, primaryKey, shouldYield = () => false) {
26
34
  this.#lc = logContext;
27
35
  this.#logConfig = logConfig;
28
36
  this.#table = tableName;
@@ -30,6 +38,7 @@ class TableSource {
30
38
  this.#uniqueIndexes = getUniqueIndexes(db, tableName);
31
39
  this.#primaryKey = primaryKey;
32
40
  this.#stmts = this.#getStatementsFor(db);
41
+ this.#shouldYield = shouldYield;
33
42
  assert(
34
43
  this.#uniqueIndexes.has(JSON.stringify([...primaryKey].sort())),
35
44
  `primary key ${primaryKey} does not have a UNIQUE index`
@@ -170,7 +179,7 @@ class TableSource {
170
179
  );
171
180
  }
172
181
  #cleanup(req, connection) {
173
- return this.#fetch(req, connection);
182
+ return skipYields(this.#fetch(req, connection));
174
183
  }
175
184
  *#fetch(req, connection) {
176
185
  const { sort, debug } = connection;
@@ -187,19 +196,22 @@ class TableSource {
187
196
  const comparator = makeComparator(sort, req.reverse);
188
197
  debug?.initQuery(this.#table, sqlAndBindings.text);
189
198
  yield* generateWithStart(
190
- generateWithOverlay(
191
- req.start?.row,
192
- this.#mapFromSQLiteTypes(
193
- this.#columns,
194
- rowIterator,
195
- sqlAndBindings.text,
196
- debug
199
+ generateWithYields(
200
+ generateWithOverlay(
201
+ req.start?.row,
202
+ this.#mapFromSQLiteTypes(
203
+ this.#columns,
204
+ rowIterator,
205
+ sqlAndBindings.text,
206
+ debug
207
+ ),
208
+ req.constraint,
209
+ this.#overlay,
210
+ callingConnectionIndex,
211
+ comparator,
212
+ connection.filters?.predicate
197
213
  ),
198
- req.constraint,
199
- this.#overlay,
200
- callingConnectionIndex,
201
- comparator,
202
- connection.filters?.predicate
214
+ this.#shouldYield
203
215
  ),
204
216
  req.start,
205
217
  comparator
@@ -456,6 +468,14 @@ function nonPrimaryValues(columns, primaryKey, row) {
456
468
  function nonPrimaryKeys(columns, primaryKey) {
457
469
  return Object.keys(columns).filter((c) => !primaryKey.includes(c));
458
470
  }
471
+ function* generateWithYields(stream, shouldYield) {
472
+ for (const n of stream) {
473
+ if (shouldYield()) {
474
+ yield "yield";
475
+ }
476
+ yield n;
477
+ }
478
+ }
459
479
  export {
460
480
  TableSource,
461
481
  UnsupportedValueError,
@@ -1 +1 @@
1
- {"version":3,"file":"table-source.js","sources":["../../../../zqlite/src/table-source.ts"],"sourcesContent":["import type {SQLQuery} from '@databases/sql';\nimport type {LogContext} from '@rocicorp/logger';\nimport SQLite3Database from '@rocicorp/zero-sqlite3';\nimport type {LogConfig} from '../../otel/src/log-options.ts';\nimport {timeSampled} from '../../otel/src/maybe-time.ts';\nimport {assert, unreachable} from '../../shared/src/asserts.ts';\nimport {must} from '../../shared/src/must.ts';\nimport type {Writable} from '../../shared/src/writable.ts';\nimport type {Condition, Ordering} from '../../zero-protocol/src/ast.ts';\nimport type {Row, Value} from '../../zero-protocol/src/data.ts';\nimport type {PrimaryKey} from '../../zero-protocol/src/primary-key.ts';\nimport type {\n SchemaValue,\n ValueType,\n} from '../../zero-schema/src/table-schema.ts';\nimport type {DebugDelegate} from '../../zql/src/builder/debug-delegate.ts';\nimport {\n createPredicate,\n transformFilters,\n} from '../../zql/src/builder/filter.ts';\nimport {makeComparator, type Node} from '../../zql/src/ivm/data.ts';\nimport {\n generateWithOverlay,\n generateWithStart,\n genPushAndWriteWithSplitEdit,\n type Connection,\n type Overlay,\n} from '../../zql/src/ivm/memory-source.ts';\nimport type {FetchRequest} from '../../zql/src/ivm/operator.ts';\nimport type {SourceSchema} from '../../zql/src/ivm/schema.ts';\nimport {\n type Source,\n type SourceChange,\n type SourceInput,\n} from '../../zql/src/ivm/source.ts';\nimport type {Stream} from '../../zql/src/ivm/stream.ts';\nimport type {Database, Statement} from './db.ts';\nimport {compile, format, sql} from './internal/sql.ts';\nimport {StatementCache} from './internal/statement-cache.ts';\nimport {\n buildSelectQuery,\n toSQLiteType,\n type NoSubqueryCondition,\n} from './query-builder.ts';\nimport {assertOrderingIncludesPK} from '../../zql/src/query/complete-ordering.ts';\n\ntype Statements = {\n readonly cache: StatementCache;\n readonly insert: Statement;\n readonly delete: Statement;\n readonly update: Statement | undefined;\n readonly checkExists: Statement;\n readonly getExisting: Statement;\n};\n\nlet eventCount = 0;\n\n/**\n * A source that is backed by a SQLite table.\n *\n * Values are written to the backing table _after_ being vended by the source.\n *\n * This ordering of events is to ensure self joins function properly. That is,\n * we can't reveal a value to an output before it has been pushed to that output.\n *\n * The code is fairly straightforward except for:\n * 1. Dealing with a `fetch` that has a basis of `before`.\n * 2. Dealing with compound orders that have differing directions (a ASC, b DESC, c ASC)\n *\n * See comments in relevant functions for more details.\n */\nexport class TableSource implements Source {\n readonly #dbCache = new WeakMap<Database, Statements>();\n readonly #connections: Connection[] = [];\n readonly #table: string;\n readonly #columns: Record<string, SchemaValue>;\n // Maps sorted columns JSON string (e.g. '[\"a\",\"b\"]) to Set of columns.\n readonly #uniqueIndexes: Map<string, Set<string>>;\n readonly #primaryKey: PrimaryKey;\n readonly #logConfig: LogConfig;\n readonly #lc: LogContext;\n #stmts: Statements;\n #overlay?: Overlay | undefined;\n\n constructor(\n logContext: LogContext,\n logConfig: LogConfig,\n db: Database,\n tableName: string,\n columns: Record<string, SchemaValue>,\n primaryKey: PrimaryKey,\n ) {\n this.#lc = logContext;\n this.#logConfig = logConfig;\n this.#table = tableName;\n this.#columns = columns;\n this.#uniqueIndexes = getUniqueIndexes(db, tableName);\n this.#primaryKey = primaryKey;\n this.#stmts = this.#getStatementsFor(db);\n\n assert(\n this.#uniqueIndexes.has(JSON.stringify([...primaryKey].sort())),\n `primary key ${primaryKey} does not have a UNIQUE index`,\n );\n }\n\n get tableSchema() {\n return {\n name: this.#table,\n columns: this.#columns,\n primaryKey: this.#primaryKey,\n };\n }\n\n /**\n * Sets the db (snapshot) to use, to facilitate the Snapshotter leapfrog\n * algorithm for concurrent traversal of historic timelines.\n */\n setDB(db: Database) {\n this.#stmts = this.#getStatementsFor(db);\n }\n\n #getStatementsFor(db: Database) {\n const cached = this.#dbCache.get(db);\n if (cached) {\n return cached;\n }\n\n const stmts = {\n cache: new StatementCache(db),\n insert: db.prepare(\n compile(\n sql`INSERT INTO ${sql.ident(this.#table)} (${sql.join(\n Object.keys(this.#columns).map(c => sql.ident(c)),\n ', ',\n )}) VALUES (${sql.__dangerous__rawValue(\n Array.from({length: Object.keys(this.#columns).length})\n .fill('?')\n .join(','),\n )})`,\n ),\n ),\n delete: db.prepare(\n compile(\n sql`DELETE FROM ${sql.ident(this.#table)} WHERE ${sql.join(\n this.#primaryKey.map(k => sql`${sql.ident(k)}=?`),\n ' AND ',\n )}`,\n ),\n ),\n // If all the columns are part of the primary key, we cannot use UPDATE.\n update:\n Object.keys(this.#columns).length > this.#primaryKey.length\n ? db.prepare(\n compile(\n sql`UPDATE ${sql.ident(this.#table)} SET ${sql.join(\n nonPrimaryKeys(this.#columns, this.#primaryKey).map(\n c => sql`${sql.ident(c)}=?`,\n ),\n ',',\n )} WHERE ${sql.join(\n this.#primaryKey.map(k => sql`${sql.ident(k)}=?`),\n ' AND ',\n )}`,\n ),\n )\n : undefined,\n checkExists: db.prepare(\n compile(\n sql`SELECT 1 AS \"exists\" FROM ${sql.ident(\n this.#table,\n )} WHERE ${sql.join(\n this.#primaryKey.map(k => sql`${sql.ident(k)}=?`),\n ' AND ',\n )} LIMIT 1`,\n ),\n ),\n getExisting: db.prepare(\n compile(\n sql`SELECT * FROM ${sql.ident(this.#table)} WHERE ${sql.join(\n this.#primaryKey.map(k => sql`${sql.ident(k)}=?`),\n ' AND ',\n )}`,\n ),\n ),\n };\n this.#dbCache.set(db, stmts);\n return stmts;\n }\n\n get #allColumns() {\n return sql.join(\n Object.keys(this.#columns).map(c => sql.ident(c)),\n sql`,`,\n );\n }\n\n #getSchema(connection: Connection): SourceSchema {\n return {\n tableName: this.#table,\n columns: this.#columns,\n primaryKey: this.#primaryKey,\n sort: connection.sort,\n relationships: {},\n isHidden: false,\n system: 'client',\n compareRows: connection.compareRows,\n };\n }\n\n connect(\n sort: Ordering,\n filters?: Condition,\n splitEditKeys?: Set<string>,\n debug?: DebugDelegate,\n ) {\n const transformedFilters = transformFilters(filters);\n const input: SourceInput = {\n getSchema: () => schema,\n fetch: req => this.#fetch(req, connection),\n cleanup: req => this.#cleanup(req, connection),\n setOutput: output => {\n connection.output = output;\n },\n destroy: () => {\n const idx = this.#connections.indexOf(connection);\n assert(idx !== -1, 'Connection not found');\n this.#connections.splice(idx, 1);\n },\n fullyAppliedFilters: !transformedFilters.conditionsRemoved,\n };\n\n const connection: Connection = {\n input,\n debug,\n output: undefined,\n sort,\n splitEditKeys,\n filters: transformedFilters.filters\n ? {\n condition: transformedFilters.filters,\n predicate: createPredicate(transformedFilters.filters),\n }\n : undefined,\n compareRows: makeComparator(sort),\n };\n const schema = this.#getSchema(connection);\n assertOrderingIncludesPK(sort, this.#primaryKey);\n\n this.#connections.push(connection);\n return input;\n }\n\n toSQLiteRow(row: Row): Row {\n return Object.fromEntries(\n Object.entries(row).map(([key, value]) => [\n key,\n toSQLiteType(value, this.#columns[key].type),\n ]),\n ) as Row;\n }\n\n #cleanup(req: FetchRequest, connection: Connection): Stream<Node> {\n return this.#fetch(req, connection);\n }\n\n *#fetch(req: FetchRequest, connection: Connection): Stream<Node> {\n const {sort, debug} = connection;\n\n const query = this.#requestToSQL(req, connection.filters?.condition, sort);\n const sqlAndBindings = format(query);\n\n const cachedStatement = this.#stmts.cache.get(sqlAndBindings.text);\n try {\n cachedStatement.statement.safeIntegers(true);\n const rowIterator = cachedStatement.statement.iterate<Row>(\n ...sqlAndBindings.values,\n );\n\n const callingConnectionIndex = this.#connections.indexOf(connection);\n assert(callingConnectionIndex !== -1, 'Connection not found');\n\n const comparator = makeComparator(sort, req.reverse);\n\n debug?.initQuery(this.#table, sqlAndBindings.text);\n\n yield* generateWithStart(\n generateWithOverlay(\n req.start?.row,\n this.#mapFromSQLiteTypes(\n this.#columns,\n rowIterator,\n sqlAndBindings.text,\n debug,\n ),\n req.constraint,\n this.#overlay,\n callingConnectionIndex,\n comparator,\n connection.filters?.predicate,\n ),\n req.start,\n comparator,\n );\n } finally {\n if (debug) {\n let totalNvisit = 0;\n let i = 0;\n while (true) {\n const nvisit = cachedStatement.statement.scanStatus(\n i++,\n SQLite3Database.SQLITE_SCANSTAT_NVISIT,\n 1,\n );\n if (nvisit === undefined) {\n break;\n }\n totalNvisit += Number(nvisit);\n }\n if (totalNvisit !== 0) {\n debug.recordNVisit(this.#table, sqlAndBindings.text, totalNvisit);\n }\n cachedStatement.statement.scanStatusReset();\n }\n this.#stmts.cache.return(cachedStatement);\n }\n }\n\n *#mapFromSQLiteTypes(\n valueTypes: Record<string, SchemaValue>,\n rowIterator: IterableIterator<Row>,\n query: string,\n debug: DebugDelegate | undefined,\n ): IterableIterator<Row> {\n let result;\n try {\n do {\n result = timeSampled(\n this.#lc,\n ++eventCount,\n this.#logConfig.ivmSampling,\n () => rowIterator.next(),\n this.#logConfig.slowRowThreshold,\n () =>\n `table-source.next took too long for ${query}. Are you missing an index?`,\n );\n if (result.done) {\n break;\n }\n const row = fromSQLiteTypes(valueTypes, result.value, this.#table);\n debug?.rowVended(this.#table, query, row);\n yield row;\n } while (!result.done);\n } finally {\n rowIterator.return?.();\n }\n }\n\n push(change: SourceChange): void {\n for (const _ of this.genPush(change)) {\n // Nothing to do.\n }\n }\n\n *genPush(change: SourceChange) {\n const exists = (row: Row) =>\n this.#stmts.checkExists.get<{exists: number} | undefined>(\n ...toSQLiteTypes(this.#primaryKey, row, this.#columns),\n )?.exists === 1;\n const setOverlay = (o: Overlay | undefined) => (this.#overlay = o);\n const writeChange = (c: SourceChange) => this.#writeChange(c);\n\n yield* genPushAndWriteWithSplitEdit(\n this.#connections,\n change,\n exists,\n setOverlay,\n writeChange,\n );\n }\n\n #writeChange(change: SourceChange) {\n switch (change.type) {\n case 'add':\n this.#stmts.insert.run(\n ...toSQLiteTypes(\n Object.keys(this.#columns),\n change.row,\n this.#columns,\n ),\n );\n break;\n case 'remove':\n this.#stmts.delete.run(\n ...toSQLiteTypes(this.#primaryKey, change.row, this.#columns),\n );\n break;\n case 'edit': {\n // If the PK is the same, use UPDATE.\n if (\n canUseUpdate(\n change.oldRow,\n change.row,\n this.#columns,\n this.#primaryKey,\n )\n ) {\n const mergedRow = {\n ...change.oldRow,\n ...change.row,\n };\n const params = [\n ...nonPrimaryValues(this.#columns, this.#primaryKey, mergedRow),\n ...toSQLiteTypes(this.#primaryKey, mergedRow, this.#columns),\n ];\n must(this.#stmts.update).run(params);\n } else {\n this.#stmts.delete.run(\n ...toSQLiteTypes(this.#primaryKey, change.oldRow, this.#columns),\n );\n this.#stmts.insert.run(\n ...toSQLiteTypes(\n Object.keys(this.#columns),\n change.row,\n this.#columns,\n ),\n );\n }\n\n break;\n }\n default:\n unreachable(change);\n }\n }\n\n #getRowStmtCache = new Map<string, string>();\n\n #getRowStmt(keyCols: string[]): string {\n const keyString = JSON.stringify(keyCols);\n let stmt = this.#getRowStmtCache.get(keyString);\n if (!stmt) {\n stmt = compile(\n sql`SELECT ${this.#allColumns} FROM ${sql.ident(\n this.#table,\n )} WHERE ${sql.join(\n keyCols.map(k => sql`${sql.ident(k)}=?`),\n sql` AND`,\n )}`,\n );\n this.#getRowStmtCache.set(keyString, stmt);\n }\n return stmt;\n }\n\n /**\n * Retrieves a row from the backing DB by a unique key, or `undefined` if such a\n * row does not exist. This is not used in the IVM pipeline but is useful\n * for retrieving data that is consistent with the state (and type\n * semantics) of the pipeline. Note that this key may not necessarily correspond\n * to the `primaryKey` with which this TableSource.\n */\n getRow(rowKey: Row): Row | undefined {\n const keyCols = Object.keys(rowKey);\n const keyVals = Object.values(rowKey);\n\n const stmt = this.#getRowStmt(keyCols);\n const row = this.#stmts.cache.use(stmt, cached =>\n cached.statement.safeIntegers(true).get<Row>(keyVals),\n );\n if (row) {\n return fromSQLiteTypes(this.#columns, row, this.#table);\n }\n return row;\n }\n\n #requestToSQL(\n request: FetchRequest,\n filters: NoSubqueryCondition | undefined,\n order: Ordering,\n ): SQLQuery {\n return buildSelectQuery(\n this.#table,\n this.#columns,\n request.constraint,\n filters,\n order,\n request.reverse,\n request.start,\n );\n }\n}\n\nfunction getUniqueIndexes(\n db: Database,\n tableName: string,\n): Map<string, Set<string>> {\n const sqlAndBindings = format(\n sql`\n SELECT idx.name, json_group_array(col.name) as columnsJSON\n FROM sqlite_master as idx\n JOIN pragma_index_list(idx.tbl_name) AS info ON info.name = idx.name\n JOIN pragma_index_info(idx.name) as col\n WHERE idx.tbl_name = ${tableName} AND\n idx.type = 'index' AND \n info.\"unique\" != 0\n GROUP BY idx.name\n ORDER BY idx.name`,\n );\n const stmt = db.prepare(sqlAndBindings.text);\n const indexes = stmt.all<{columnsJSON: string}>(...sqlAndBindings.values);\n return new Map(\n indexes.map(({columnsJSON}) => {\n const columns = JSON.parse(columnsJSON);\n const set = new Set<string>(columns);\n return [JSON.stringify(columns.sort()), set];\n }),\n );\n}\n\nexport function toSQLiteTypes(\n columns: readonly string[],\n row: Row,\n columnTypes: Record<string, SchemaValue>,\n): readonly unknown[] {\n return columns.map(col => toSQLiteType(row[col], columnTypes[col].type));\n}\n\nexport function toSQLiteTypeName(type: ValueType) {\n switch (type) {\n case 'boolean':\n return 'INTEGER';\n case 'number':\n return 'REAL';\n case 'string':\n return 'TEXT';\n case 'null':\n return 'NULL';\n case 'json':\n return 'TEXT';\n }\n}\n\nexport function fromSQLiteTypes(\n valueTypes: Record<string, SchemaValue>,\n row: Row,\n tableName: string,\n): Row {\n const newRow: Writable<Row> = {};\n for (const key of Object.keys(row)) {\n const valueType = valueTypes[key];\n if (valueType === undefined) {\n const columnList = Object.keys(valueTypes).sort().join(', ');\n throw new Error(\n `Invalid column \"${key}\" for table \"${tableName}\". Synced columns include ${columnList}`,\n );\n }\n newRow[key] = fromSQLiteType(valueType.type, row[key], key, tableName);\n }\n return newRow;\n}\n\nfunction fromSQLiteType(\n valueType: ValueType,\n v: Value,\n column: string,\n tableName: string,\n): Value {\n if (v === null) {\n return null;\n }\n switch (valueType) {\n case 'boolean':\n return !!v;\n case 'number':\n case 'string':\n case 'null':\n if (typeof v === 'bigint') {\n if (v > Number.MAX_SAFE_INTEGER || v < Number.MIN_SAFE_INTEGER) {\n throw new UnsupportedValueError(\n `value ${v} (in ${tableName}.${column}) is outside of supported bounds`,\n );\n }\n return Number(v);\n }\n return v;\n case 'json':\n try {\n return JSON.parse(v as string);\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n throw new UnsupportedValueError(\n `Failed to parse JSON for ${tableName}.${column}: ${errorMessage}`,\n {cause: error},\n );\n }\n }\n}\n\nexport class UnsupportedValueError extends Error {}\n\nfunction canUseUpdate(\n oldRow: Row,\n row: Row,\n columns: Record<string, SchemaValue>,\n primaryKey: PrimaryKey,\n): boolean {\n for (const pk of primaryKey) {\n if (oldRow[pk] !== row[pk]) {\n return false;\n }\n }\n return Object.keys(columns).length > primaryKey.length;\n}\n\nfunction nonPrimaryValues(\n columns: Record<string, SchemaValue>,\n primaryKey: PrimaryKey,\n row: Row,\n): Iterable<unknown> {\n return nonPrimaryKeys(columns, primaryKey).map(c =>\n toSQLiteType(row[c], columns[c].type),\n );\n}\n\nfunction nonPrimaryKeys(\n columns: Record<string, SchemaValue>,\n primaryKey: PrimaryKey,\n) {\n return Object.keys(columns).filter(c => !primaryKey.includes(c));\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table-source.js","sources":["../../../../zqlite/src/table-source.ts"],"sourcesContent":["import type {SQLQuery} from '@databases/sql';\nimport type {LogContext} from '@rocicorp/logger';\nimport SQLite3Database from '@rocicorp/zero-sqlite3';\nimport type {LogConfig} from '../../otel/src/log-options.ts';\nimport {timeSampled} from '../../otel/src/maybe-time.ts';\nimport {assert, unreachable} from '../../shared/src/asserts.ts';\nimport {must} from '../../shared/src/must.ts';\nimport type {Writable} from '../../shared/src/writable.ts';\nimport type {Condition, Ordering} from '../../zero-protocol/src/ast.ts';\nimport type {Row, Value} from '../../zero-protocol/src/data.ts';\nimport type {PrimaryKey} from '../../zero-protocol/src/primary-key.ts';\nimport type {\n SchemaValue,\n ValueType,\n} from '../../zero-schema/src/table-schema.ts';\nimport type {DebugDelegate} from '../../zql/src/builder/debug-delegate.ts';\nimport {\n createPredicate,\n transformFilters,\n} from '../../zql/src/builder/filter.ts';\nimport {makeComparator, type Node} from '../../zql/src/ivm/data.ts';\nimport {\n generateWithOverlay,\n generateWithStart,\n genPushAndWriteWithSplitEdit,\n type Connection,\n type Overlay,\n} from '../../zql/src/ivm/memory-source.ts';\nimport {skipYields, type FetchRequest} from '../../zql/src/ivm/operator.ts';\nimport type {SourceSchema} from '../../zql/src/ivm/schema.ts';\nimport {\n type Source,\n type SourceChange,\n type SourceInput,\n} from '../../zql/src/ivm/source.ts';\nimport type {Stream} from '../../zql/src/ivm/stream.ts';\nimport type {Database, Statement} from './db.ts';\nimport {compile, format, sql} from './internal/sql.ts';\nimport {StatementCache} from './internal/statement-cache.ts';\nimport {\n buildSelectQuery,\n toSQLiteType,\n type NoSubqueryCondition,\n} from './query-builder.ts';\nimport {assertOrderingIncludesPK} from '../../zql/src/query/complete-ordering.ts';\n\ntype Statements = {\n readonly cache: StatementCache;\n readonly insert: Statement;\n readonly delete: Statement;\n readonly update: Statement | undefined;\n readonly checkExists: Statement;\n readonly getExisting: Statement;\n};\n\nlet eventCount = 0;\n\n/**\n * A source that is backed by a SQLite table.\n *\n * Values are written to the backing table _after_ being vended by the source.\n *\n * This ordering of events is to ensure self joins function properly. That is,\n * we can't reveal a value to an output before it has been pushed to that output.\n *\n * The code is fairly straightforward except for:\n * 1. Dealing with a `fetch` that has a basis of `before`.\n * 2. Dealing with compound orders that have differing directions (a ASC, b DESC, c ASC)\n *\n * See comments in relevant functions for more details.\n */\nexport class TableSource implements Source {\n readonly #dbCache = new WeakMap<Database, Statements>();\n readonly #connections: Connection[] = [];\n readonly #table: string;\n readonly #columns: Record<string, SchemaValue>;\n // Maps sorted columns JSON string (e.g. '[\"a\",\"b\"]) to Set of columns.\n readonly #uniqueIndexes: Map<string, Set<string>>;\n readonly #primaryKey: PrimaryKey;\n readonly #logConfig: LogConfig;\n readonly #lc: LogContext;\n readonly #shouldYield: () => boolean;\n #stmts: Statements;\n #overlay?: Overlay | undefined;\n\n /**\n * @param shouldYield a function called after each row is read from the database,\n * which should return true if the source should yield the special 'yield' value\n * to yield control back to the caller at the end of the pipeline. Can\n * also throw an error to abort the pipeline processing.\n */\n constructor(\n logContext: LogContext,\n logConfig: LogConfig,\n db: Database,\n tableName: string,\n columns: Record<string, SchemaValue>,\n primaryKey: PrimaryKey,\n shouldYield = () => false,\n ) {\n this.#lc = logContext;\n this.#logConfig = logConfig;\n this.#table = tableName;\n this.#columns = columns;\n this.#uniqueIndexes = getUniqueIndexes(db, tableName);\n this.#primaryKey = primaryKey;\n this.#stmts = this.#getStatementsFor(db);\n this.#shouldYield = shouldYield;\n\n assert(\n this.#uniqueIndexes.has(JSON.stringify([...primaryKey].sort())),\n `primary key ${primaryKey} does not have a UNIQUE index`,\n );\n }\n\n get tableSchema() {\n return {\n name: this.#table,\n columns: this.#columns,\n primaryKey: this.#primaryKey,\n };\n }\n\n /**\n * Sets the db (snapshot) to use, to facilitate the Snapshotter leapfrog\n * algorithm for concurrent traversal of historic timelines.\n */\n setDB(db: Database) {\n this.#stmts = this.#getStatementsFor(db);\n }\n\n #getStatementsFor(db: Database) {\n const cached = this.#dbCache.get(db);\n if (cached) {\n return cached;\n }\n\n const stmts = {\n cache: new StatementCache(db),\n insert: db.prepare(\n compile(\n sql`INSERT INTO ${sql.ident(this.#table)} (${sql.join(\n Object.keys(this.#columns).map(c => sql.ident(c)),\n ', ',\n )}) VALUES (${sql.__dangerous__rawValue(\n Array.from({length: Object.keys(this.#columns).length})\n .fill('?')\n .join(','),\n )})`,\n ),\n ),\n delete: db.prepare(\n compile(\n sql`DELETE FROM ${sql.ident(this.#table)} WHERE ${sql.join(\n this.#primaryKey.map(k => sql`${sql.ident(k)}=?`),\n ' AND ',\n )}`,\n ),\n ),\n // If all the columns are part of the primary key, we cannot use UPDATE.\n update:\n Object.keys(this.#columns).length > this.#primaryKey.length\n ? db.prepare(\n compile(\n sql`UPDATE ${sql.ident(this.#table)} SET ${sql.join(\n nonPrimaryKeys(this.#columns, this.#primaryKey).map(\n c => sql`${sql.ident(c)}=?`,\n ),\n ',',\n )} WHERE ${sql.join(\n this.#primaryKey.map(k => sql`${sql.ident(k)}=?`),\n ' AND ',\n )}`,\n ),\n )\n : undefined,\n checkExists: db.prepare(\n compile(\n sql`SELECT 1 AS \"exists\" FROM ${sql.ident(\n this.#table,\n )} WHERE ${sql.join(\n this.#primaryKey.map(k => sql`${sql.ident(k)}=?`),\n ' AND ',\n )} LIMIT 1`,\n ),\n ),\n getExisting: db.prepare(\n compile(\n sql`SELECT * FROM ${sql.ident(this.#table)} WHERE ${sql.join(\n this.#primaryKey.map(k => sql`${sql.ident(k)}=?`),\n ' AND ',\n )}`,\n ),\n ),\n };\n this.#dbCache.set(db, stmts);\n return stmts;\n }\n\n get #allColumns() {\n return sql.join(\n Object.keys(this.#columns).map(c => sql.ident(c)),\n sql`,`,\n );\n }\n\n #getSchema(connection: Connection): SourceSchema {\n return {\n tableName: this.#table,\n columns: this.#columns,\n primaryKey: this.#primaryKey,\n sort: connection.sort,\n relationships: {},\n isHidden: false,\n system: 'client',\n compareRows: connection.compareRows,\n };\n }\n\n connect(\n sort: Ordering,\n filters?: Condition,\n splitEditKeys?: Set<string>,\n debug?: DebugDelegate,\n ) {\n const transformedFilters = transformFilters(filters);\n const input: SourceInput = {\n getSchema: () => schema,\n fetch: req => this.#fetch(req, connection),\n cleanup: req => this.#cleanup(req, connection),\n setOutput: output => {\n connection.output = output;\n },\n destroy: () => {\n const idx = this.#connections.indexOf(connection);\n assert(idx !== -1, 'Connection not found');\n this.#connections.splice(idx, 1);\n },\n fullyAppliedFilters: !transformedFilters.conditionsRemoved,\n };\n\n const connection: Connection = {\n input,\n debug,\n output: undefined,\n sort,\n splitEditKeys,\n filters: transformedFilters.filters\n ? {\n condition: transformedFilters.filters,\n predicate: createPredicate(transformedFilters.filters),\n }\n : undefined,\n compareRows: makeComparator(sort),\n };\n const schema = this.#getSchema(connection);\n assertOrderingIncludesPK(sort, this.#primaryKey);\n\n this.#connections.push(connection);\n return input;\n }\n\n toSQLiteRow(row: Row): Row {\n return Object.fromEntries(\n Object.entries(row).map(([key, value]) => [\n key,\n toSQLiteType(value, this.#columns[key].type),\n ]),\n ) as Row;\n }\n\n #cleanup(req: FetchRequest, connection: Connection): Stream<Node> {\n return skipYields(this.#fetch(req, connection));\n }\n\n *#fetch(req: FetchRequest, connection: Connection): Stream<Node | 'yield'> {\n const {sort, debug} = connection;\n\n const query = this.#requestToSQL(req, connection.filters?.condition, sort);\n const sqlAndBindings = format(query);\n\n const cachedStatement = this.#stmts.cache.get(sqlAndBindings.text);\n try {\n cachedStatement.statement.safeIntegers(true);\n const rowIterator = cachedStatement.statement.iterate<Row>(\n ...sqlAndBindings.values,\n );\n\n const callingConnectionIndex = this.#connections.indexOf(connection);\n assert(callingConnectionIndex !== -1, 'Connection not found');\n\n const comparator = makeComparator(sort, req.reverse);\n\n debug?.initQuery(this.#table, sqlAndBindings.text);\n\n yield* generateWithStart(\n generateWithYields(\n generateWithOverlay(\n req.start?.row,\n this.#mapFromSQLiteTypes(\n this.#columns,\n rowIterator,\n sqlAndBindings.text,\n debug,\n ),\n req.constraint,\n this.#overlay,\n callingConnectionIndex,\n comparator,\n connection.filters?.predicate,\n ),\n this.#shouldYield,\n ),\n req.start,\n comparator,\n );\n } finally {\n if (debug) {\n let totalNvisit = 0;\n let i = 0;\n while (true) {\n const nvisit = cachedStatement.statement.scanStatus(\n i++,\n SQLite3Database.SQLITE_SCANSTAT_NVISIT,\n 1,\n );\n if (nvisit === undefined) {\n break;\n }\n totalNvisit += Number(nvisit);\n }\n if (totalNvisit !== 0) {\n debug.recordNVisit(this.#table, sqlAndBindings.text, totalNvisit);\n }\n cachedStatement.statement.scanStatusReset();\n }\n this.#stmts.cache.return(cachedStatement);\n }\n }\n\n *#mapFromSQLiteTypes(\n valueTypes: Record<string, SchemaValue>,\n rowIterator: IterableIterator<Row>,\n query: string,\n debug: DebugDelegate | undefined,\n ): IterableIterator<Row> {\n let result;\n try {\n do {\n result = timeSampled(\n this.#lc,\n ++eventCount,\n this.#logConfig.ivmSampling,\n () => rowIterator.next(),\n this.#logConfig.slowRowThreshold,\n () =>\n `table-source.next took too long for ${query}. Are you missing an index?`,\n );\n if (result.done) {\n break;\n }\n const row = fromSQLiteTypes(valueTypes, result.value, this.#table);\n debug?.rowVended(this.#table, query, row);\n yield row;\n } while (!result.done);\n } finally {\n rowIterator.return?.();\n }\n }\n\n push(change: SourceChange): void {\n for (const _ of this.genPush(change)) {\n // Nothing to do.\n }\n }\n\n *genPush(change: SourceChange) {\n const exists = (row: Row) =>\n this.#stmts.checkExists.get<{exists: number} | undefined>(\n ...toSQLiteTypes(this.#primaryKey, row, this.#columns),\n )?.exists === 1;\n const setOverlay = (o: Overlay | undefined) => (this.#overlay = o);\n const writeChange = (c: SourceChange) => this.#writeChange(c);\n\n yield* genPushAndWriteWithSplitEdit(\n this.#connections,\n change,\n exists,\n setOverlay,\n writeChange,\n );\n }\n\n #writeChange(change: SourceChange) {\n switch (change.type) {\n case 'add':\n this.#stmts.insert.run(\n ...toSQLiteTypes(\n Object.keys(this.#columns),\n change.row,\n this.#columns,\n ),\n );\n break;\n case 'remove':\n this.#stmts.delete.run(\n ...toSQLiteTypes(this.#primaryKey, change.row, this.#columns),\n );\n break;\n case 'edit': {\n // If the PK is the same, use UPDATE.\n if (\n canUseUpdate(\n change.oldRow,\n change.row,\n this.#columns,\n this.#primaryKey,\n )\n ) {\n const mergedRow = {\n ...change.oldRow,\n ...change.row,\n };\n const params = [\n ...nonPrimaryValues(this.#columns, this.#primaryKey, mergedRow),\n ...toSQLiteTypes(this.#primaryKey, mergedRow, this.#columns),\n ];\n must(this.#stmts.update).run(params);\n } else {\n this.#stmts.delete.run(\n ...toSQLiteTypes(this.#primaryKey, change.oldRow, this.#columns),\n );\n this.#stmts.insert.run(\n ...toSQLiteTypes(\n Object.keys(this.#columns),\n change.row,\n this.#columns,\n ),\n );\n }\n\n break;\n }\n default:\n unreachable(change);\n }\n }\n\n #getRowStmtCache = new Map<string, string>();\n\n #getRowStmt(keyCols: string[]): string {\n const keyString = JSON.stringify(keyCols);\n let stmt = this.#getRowStmtCache.get(keyString);\n if (!stmt) {\n stmt = compile(\n sql`SELECT ${this.#allColumns} FROM ${sql.ident(\n this.#table,\n )} WHERE ${sql.join(\n keyCols.map(k => sql`${sql.ident(k)}=?`),\n sql` AND`,\n )}`,\n );\n this.#getRowStmtCache.set(keyString, stmt);\n }\n return stmt;\n }\n\n /**\n * Retrieves a row from the backing DB by a unique key, or `undefined` if such a\n * row does not exist. This is not used in the IVM pipeline but is useful\n * for retrieving data that is consistent with the state (and type\n * semantics) of the pipeline. Note that this key may not necessarily correspond\n * to the `primaryKey` with which this TableSource.\n */\n getRow(rowKey: Row): Row | undefined {\n const keyCols = Object.keys(rowKey);\n const keyVals = Object.values(rowKey);\n\n const stmt = this.#getRowStmt(keyCols);\n const row = this.#stmts.cache.use(stmt, cached =>\n cached.statement.safeIntegers(true).get<Row>(keyVals),\n );\n if (row) {\n return fromSQLiteTypes(this.#columns, row, this.#table);\n }\n return row;\n }\n\n #requestToSQL(\n request: FetchRequest,\n filters: NoSubqueryCondition | undefined,\n order: Ordering,\n ): SQLQuery {\n return buildSelectQuery(\n this.#table,\n this.#columns,\n request.constraint,\n filters,\n order,\n request.reverse,\n request.start,\n );\n }\n}\n\nfunction getUniqueIndexes(\n db: Database,\n tableName: string,\n): Map<string, Set<string>> {\n const sqlAndBindings = format(\n sql`\n SELECT idx.name, json_group_array(col.name) as columnsJSON\n FROM sqlite_master as idx\n JOIN pragma_index_list(idx.tbl_name) AS info ON info.name = idx.name\n JOIN pragma_index_info(idx.name) as col\n WHERE idx.tbl_name = ${tableName} AND\n idx.type = 'index' AND \n info.\"unique\" != 0\n GROUP BY idx.name\n ORDER BY idx.name`,\n );\n const stmt = db.prepare(sqlAndBindings.text);\n const indexes = stmt.all<{columnsJSON: string}>(...sqlAndBindings.values);\n return new Map(\n indexes.map(({columnsJSON}) => {\n const columns = JSON.parse(columnsJSON);\n const set = new Set<string>(columns);\n return [JSON.stringify(columns.sort()), set];\n }),\n );\n}\n\nexport function toSQLiteTypes(\n columns: readonly string[],\n row: Row,\n columnTypes: Record<string, SchemaValue>,\n): readonly unknown[] {\n return columns.map(col => toSQLiteType(row[col], columnTypes[col].type));\n}\n\nexport function toSQLiteTypeName(type: ValueType) {\n switch (type) {\n case 'boolean':\n return 'INTEGER';\n case 'number':\n return 'REAL';\n case 'string':\n return 'TEXT';\n case 'null':\n return 'NULL';\n case 'json':\n return 'TEXT';\n }\n}\n\nexport function fromSQLiteTypes(\n valueTypes: Record<string, SchemaValue>,\n row: Row,\n tableName: string,\n): Row {\n const newRow: Writable<Row> = {};\n for (const key of Object.keys(row)) {\n const valueType = valueTypes[key];\n if (valueType === undefined) {\n const columnList = Object.keys(valueTypes).sort().join(', ');\n throw new Error(\n `Invalid column \"${key}\" for table \"${tableName}\". Synced columns include ${columnList}`,\n );\n }\n newRow[key] = fromSQLiteType(valueType.type, row[key], key, tableName);\n }\n return newRow;\n}\n\nfunction fromSQLiteType(\n valueType: ValueType,\n v: Value,\n column: string,\n tableName: string,\n): Value {\n if (v === null) {\n return null;\n }\n switch (valueType) {\n case 'boolean':\n return !!v;\n case 'number':\n case 'string':\n case 'null':\n if (typeof v === 'bigint') {\n if (v > Number.MAX_SAFE_INTEGER || v < Number.MIN_SAFE_INTEGER) {\n throw new UnsupportedValueError(\n `value ${v} (in ${tableName}.${column}) is outside of supported bounds`,\n );\n }\n return Number(v);\n }\n return v;\n case 'json':\n try {\n return JSON.parse(v as string);\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n throw new UnsupportedValueError(\n `Failed to parse JSON for ${tableName}.${column}: ${errorMessage}`,\n {cause: error},\n );\n }\n }\n}\n\nexport class UnsupportedValueError extends Error {}\n\nfunction canUseUpdate(\n oldRow: Row,\n row: Row,\n columns: Record<string, SchemaValue>,\n primaryKey: PrimaryKey,\n): boolean {\n for (const pk of primaryKey) {\n if (oldRow[pk] !== row[pk]) {\n return false;\n }\n }\n return Object.keys(columns).length > primaryKey.length;\n}\n\nfunction nonPrimaryValues(\n columns: Record<string, SchemaValue>,\n primaryKey: PrimaryKey,\n row: Row,\n): Iterable<unknown> {\n return nonPrimaryKeys(columns, primaryKey).map(c =>\n toSQLiteType(row[c], columns[c].type),\n );\n}\n\nfunction nonPrimaryKeys(\n columns: Record<string, SchemaValue>,\n primaryKey: PrimaryKey,\n) {\n return Object.keys(columns).filter(c => !primaryKey.includes(c));\n}\n\nfunction* generateWithYields(stream: Stream<Node>, shouldYield: () => boolean) {\n for (const n of stream) {\n if (shouldYield()) {\n yield 'yield';\n }\n yield n;\n }\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rocicorp/zero",
3
- "version": "0.25.0-canary.10",
3
+ "version": "0.25.0-canary.11",
4
4
  "description": "Zero is a web framework for serverless web development.",
5
5
  "author": "Rocicorp, Inc.",
6
6
  "repository": {