@rocicorp/zero 0.6.2024112101 → 0.7.2024112700

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 (223) hide show
  1. package/out/advanced.js +1 -1
  2. package/out/{chunk-5UY46OAF.js → chunk-C7M3BJ3Z.js} +16 -8
  3. package/out/chunk-C7M3BJ3Z.js.map +7 -0
  4. package/out/{chunk-MPEWBBGZ.js → chunk-HDEKBM3G.js} +686 -660
  5. package/out/{chunk-MPEWBBGZ.js.map → chunk-HDEKBM3G.js.map} +4 -4
  6. package/out/shared/src/expand.js +2 -0
  7. package/out/shared/src/expand.js.map +1 -0
  8. package/out/shared/src/immutable.js +2 -0
  9. package/out/shared/src/immutable.js.map +1 -0
  10. package/out/{zero-cache/src/config/config.d.ts → shared/src/options.d.ts} +3 -5
  11. package/out/shared/src/options.d.ts.map +1 -0
  12. package/out/{zero-cache/src/config/config.js → shared/src/options.js} +26 -26
  13. package/out/shared/src/options.js.map +1 -0
  14. package/out/shared/src/sorted-entries.js +6 -0
  15. package/out/shared/src/sorted-entries.js.map +1 -0
  16. package/out/shared/src/writable.js +2 -0
  17. package/out/shared/src/writable.js.map +1 -0
  18. package/out/solid.js +2 -2
  19. package/out/zero/src/build-schema.d.ts +3 -0
  20. package/out/zero/src/build-schema.d.ts.map +1 -0
  21. package/out/zero/src/build-schema.js +3 -0
  22. package/out/zero/src/build-schema.js.map +1 -0
  23. package/out/zero-cache/src/auth/load-schema.d.ts +8 -0
  24. package/out/zero-cache/src/auth/load-schema.d.ts.map +1 -0
  25. package/out/zero-cache/src/auth/load-schema.js +34 -0
  26. package/out/zero-cache/src/auth/load-schema.js.map +1 -0
  27. package/out/zero-cache/src/auth/write-authorizer.d.ts +20 -0
  28. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -0
  29. package/out/zero-cache/src/auth/write-authorizer.js +320 -0
  30. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -0
  31. package/out/zero-cache/src/config/zero-config.d.ts +14 -4
  32. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  33. package/out/zero-cache/src/config/zero-config.js +27 -14
  34. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  35. package/out/zero-cache/src/server/main.js +7 -0
  36. package/out/zero-cache/src/server/main.js.map +1 -1
  37. package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
  38. package/out/zero-cache/src/server/replicator.js +4 -3
  39. package/out/zero-cache/src/server/replicator.js.map +1 -1
  40. package/out/zero-cache/src/server/runtime.d.ts +3 -0
  41. package/out/zero-cache/src/server/runtime.d.ts.map +1 -0
  42. package/out/zero-cache/src/server/runtime.js +19 -0
  43. package/out/zero-cache/src/server/runtime.js.map +1 -0
  44. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  45. package/out/zero-cache/src/server/syncer.js +7 -6
  46. package/out/zero-cache/src/server/syncer.js.map +1 -1
  47. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +1 -1
  48. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  49. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +6 -5
  50. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  51. package/out/zero-cache/src/services/mutagen/mutagen.js +19 -33
  52. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  53. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  54. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  55. package/out/zero-cache/src/services/replicator/replicator.js +2 -2
  56. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  57. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +1 -1
  58. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  59. package/out/zero-cache/src/services/view-syncer/client-handler.js +11 -8
  60. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  61. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +17 -8
  62. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  63. package/out/zero-cache/src/services/view-syncer/cvr-store.js +357 -94
  64. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  65. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +6 -9
  66. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  67. package/out/zero-cache/src/services/view-syncer/cvr.js +36 -22
  68. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  69. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  70. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +2 -2
  71. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  72. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +22 -0
  73. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  74. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +33 -7
  75. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  76. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  77. package/out/zero-cache/src/services/view-syncer/schema/init.js +44 -5
  78. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  79. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +1 -0
  80. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
  81. package/out/zero-cache/src/services/view-syncer/schema/types.js +3 -0
  82. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  83. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  84. package/out/zero-cache/src/services/view-syncer/snapshotter.js +5 -0
  85. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  86. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +1 -1
  87. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  88. package/out/zero-cache/src/services/view-syncer/view-syncer.js +69 -19
  89. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  90. package/out/zero-cache/src/types/row-key.d.ts +6 -0
  91. package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
  92. package/out/zero-cache/src/types/row-key.js +16 -1
  93. package/out/zero-cache/src/types/row-key.js.map +1 -1
  94. package/out/zero-cache/src/workers/connection.d.ts +1 -1
  95. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  96. package/out/zero-cache/src/workers/connection.js.map +1 -1
  97. package/out/zero-cache/src/workers/replicator.d.ts +3 -1
  98. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  99. package/out/zero-cache/src/workers/replicator.js +2 -0
  100. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  101. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  102. package/out/zero-cache/src/workers/syncer.js +8 -3
  103. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  104. package/out/zero-client/src/client/options.d.ts +37 -8
  105. package/out/zero-client/src/client/options.d.ts.map +1 -1
  106. package/out/zero-client/src/client/reload-error-handler.d.ts +16 -1
  107. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  108. package/out/zero-client/src/client/zero.d.ts +7 -55
  109. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  110. package/out/zero-client/src/mod.d.ts +1 -1
  111. package/out/zero-client/src/mod.d.ts.map +1 -1
  112. package/out/zero-protocol/src/ast-hash.js +14 -0
  113. package/out/zero-protocol/src/ast-hash.js.map +1 -0
  114. package/out/zero-protocol/src/down.d.ts +4 -4
  115. package/out/zero-protocol/src/poke.d.ts +16 -8
  116. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  117. package/out/zero-protocol/src/poke.js +8 -2
  118. package/out/zero-protocol/src/poke.js.map +1 -1
  119. package/out/zero-schema/src/authorization.d.ts +12 -5
  120. package/out/zero-schema/src/authorization.d.ts.map +1 -1
  121. package/out/zero-schema/src/build-schema.d.ts +14 -0
  122. package/out/zero-schema/src/build-schema.d.ts.map +1 -0
  123. package/out/zero-schema/src/build-schema.js +55 -0
  124. package/out/zero-schema/src/build-schema.js.map +1 -0
  125. package/out/zero-schema/src/compiled-authorization.d.ts +213 -294
  126. package/out/zero-schema/src/compiled-authorization.d.ts.map +1 -1
  127. package/out/zero-schema/src/compiled-authorization.js +9 -4
  128. package/out/zero-schema/src/compiled-authorization.js.map +1 -1
  129. package/out/zero-schema/src/normalize-table-schema.d.ts +2 -11
  130. package/out/zero-schema/src/normalize-table-schema.d.ts.map +1 -1
  131. package/out/zero-schema/src/normalize-table-schema.js +108 -0
  132. package/out/zero-schema/src/normalize-table-schema.js.map +1 -0
  133. package/out/zero-schema/src/normalized-schema.js +31 -0
  134. package/out/zero-schema/src/normalized-schema.js.map +1 -0
  135. package/out/zero-schema/src/schema-config.d.ts +325 -0
  136. package/out/zero-schema/src/schema-config.d.ts.map +1 -0
  137. package/out/zero-schema/src/schema-config.js +41 -0
  138. package/out/zero-schema/src/schema-config.js.map +1 -0
  139. package/out/zero-schema/src/schema.js +4 -0
  140. package/out/zero-schema/src/schema.js.map +1 -0
  141. package/out/zero-schema/src/table-schema.d.ts +6 -15
  142. package/out/zero-schema/src/table-schema.d.ts.map +1 -1
  143. package/out/zero-schema/src/table-schema.js.map +1 -1
  144. package/out/zero.js +2 -2
  145. package/out/zql/src/builder/builder.d.ts +2 -2
  146. package/out/zql/src/builder/builder.d.ts.map +1 -1
  147. package/out/zql/src/builder/builder.js +19 -20
  148. package/out/zql/src/builder/builder.js.map +1 -1
  149. package/out/zql/src/builder/filter.d.ts +25 -2
  150. package/out/zql/src/builder/filter.d.ts.map +1 -1
  151. package/out/zql/src/builder/filter.js +91 -1
  152. package/out/zql/src/builder/filter.js.map +1 -1
  153. package/out/zql/src/ivm/array-view.js +70 -0
  154. package/out/zql/src/ivm/array-view.js.map +1 -0
  155. package/out/zql/src/ivm/change.d.ts +18 -6
  156. package/out/zql/src/ivm/change.d.ts.map +1 -1
  157. package/out/zql/src/ivm/change.js +1 -1
  158. package/out/zql/src/ivm/change.js.map +1 -1
  159. package/out/zql/src/ivm/constraint.d.ts +14 -0
  160. package/out/zql/src/ivm/constraint.d.ts.map +1 -0
  161. package/out/zql/src/ivm/constraint.js +60 -0
  162. package/out/zql/src/ivm/constraint.js.map +1 -0
  163. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  164. package/out/zql/src/ivm/exists.js +19 -2
  165. package/out/zql/src/ivm/exists.js.map +1 -1
  166. package/out/zql/src/ivm/join.d.ts +11 -5
  167. package/out/zql/src/ivm/join.d.ts.map +1 -1
  168. package/out/zql/src/ivm/join.js +49 -95
  169. package/out/zql/src/ivm/join.js.map +1 -1
  170. package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
  171. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +4 -13
  172. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  173. package/out/zql/src/ivm/memory-source.d.ts +5 -22
  174. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  175. package/out/zql/src/ivm/memory-source.js +58 -80
  176. package/out/zql/src/ivm/memory-source.js.map +1 -1
  177. package/out/zql/src/ivm/operator.d.ts +7 -10
  178. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  179. package/out/zql/src/ivm/operator.js +1 -1
  180. package/out/zql/src/ivm/operator.js.map +1 -1
  181. package/out/zql/src/ivm/take.d.ts +3 -1
  182. package/out/zql/src/ivm/take.d.ts.map +1 -1
  183. package/out/zql/src/ivm/take.js +95 -95
  184. package/out/zql/src/ivm/take.js.map +1 -1
  185. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  186. package/out/zql/src/ivm/view-apply-change.js +168 -0
  187. package/out/zql/src/ivm/view-apply-change.js.map +1 -0
  188. package/out/zql/src/ivm/view.js +2 -0
  189. package/out/zql/src/ivm/view.js.map +1 -0
  190. package/out/zql/src/query/auth-query.d.ts +3 -1
  191. package/out/zql/src/query/auth-query.d.ts.map +1 -1
  192. package/out/zql/src/query/auth-query.js +34 -0
  193. package/out/zql/src/query/auth-query.js.map +1 -0
  194. package/out/zql/src/query/dnf.js +57 -0
  195. package/out/zql/src/query/dnf.js.map +1 -0
  196. package/out/zql/src/query/expression.js +155 -0
  197. package/out/zql/src/query/expression.js.map +1 -0
  198. package/out/zql/src/query/query-impl.d.ts +4 -1
  199. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  200. package/out/zql/src/query/query-impl.js +359 -0
  201. package/out/zql/src/query/query-impl.js.map +1 -0
  202. package/out/zql/src/query/query-internal.js +2 -0
  203. package/out/zql/src/query/query-internal.js.map +1 -0
  204. package/out/zql/src/query/query.js +3 -0
  205. package/out/zql/src/query/query.js.map +1 -0
  206. package/out/zql/src/query/typed-view.js +2 -0
  207. package/out/zql/src/query/typed-view.js.map +1 -0
  208. package/out/zqlite/src/table-source.d.ts +2 -11
  209. package/out/zqlite/src/table-source.d.ts.map +1 -1
  210. package/out/zqlite/src/table-source.js +28 -80
  211. package/out/zqlite/src/table-source.js.map +1 -1
  212. package/package.json +5 -3
  213. package/out/chunk-5UY46OAF.js.map +0 -7
  214. package/out/zero-cache/src/auth/load-authorization.d.ts +0 -4
  215. package/out/zero-cache/src/auth/load-authorization.d.ts.map +0 -1
  216. package/out/zero-cache/src/auth/load-authorization.js +0 -20
  217. package/out/zero-cache/src/auth/load-authorization.js.map +0 -1
  218. package/out/zero-cache/src/config/config.d.ts.map +0 -1
  219. package/out/zero-cache/src/config/config.js.map +0 -1
  220. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts +0 -21
  221. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +0 -1
  222. package/out/zero-cache/src/services/mutagen/write-authorizer.js +0 -168
  223. package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +0 -1
package/out/zero.js CHANGED
@@ -10,9 +10,9 @@ import {
10
10
  escapeLike,
11
11
  getDefaultPuller,
12
12
  makeIDBName
13
- } from "./chunk-MPEWBBGZ.js";
13
+ } from "./chunk-HDEKBM3G.js";
14
14
  import "./chunk-HARIWJ2J.js";
15
- import "./chunk-5UY46OAF.js";
15
+ import "./chunk-C7M3BJ3Z.js";
16
16
  import "./chunk-F5QR3K72.js";
17
17
  export {
18
18
  IDBNotFoundError,
@@ -6,7 +6,7 @@ import type { Input, Storage } from '../ivm/operator.js';
6
6
  import type { Source } from '../ivm/source.js';
7
7
  export type StaticQueryParameters = {
8
8
  authData: Record<string, JSONValue>;
9
- preMutationRow: Row | undefined;
9
+ preMutationRow?: Row | undefined;
10
10
  };
11
11
  /**
12
12
  * Interface required of caller to buildPipeline. Connects to constructed
@@ -49,7 +49,7 @@ export interface BuilderDelegate {
49
49
  * const sink = new MySink(input);
50
50
  * ```
51
51
  */
52
- export declare function buildPipeline(ast: AST, delegate: BuilderDelegate, staticQueryParameters: StaticQueryParameters | undefined): Input;
52
+ export declare function buildPipeline(ast: AST, delegate: BuilderDelegate): Input;
53
53
  export declare function bindStaticParameters(ast: AST, staticQueryParameters: StaticQueryParameters | undefined): AST;
54
54
  export declare function assertOrderingIncludesPK(ordering: Ordering, pk: PrimaryKey): void;
55
55
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/builder/builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EACV,GAAG,EAQH,QAAQ,EAIT,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,oCAAoC,CAAC;AAC5D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,2CAA2C,CAAC;AAM1E,OAAO,KAAK,EAAC,KAAK,EAAE,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAI7C,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,cAAc,EAAE,GAAG,GAAG,SAAS,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEjD;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,eAAe,EACzB,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,GACvD,KAAK,CAMP;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,OA0DzD;AA4KD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,UAAU,GACb,IAAI,CAeN"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/builder/builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EACV,GAAG,EAQH,QAAQ,EAIT,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,oCAAoC,CAAC;AAC5D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,2CAA2C,CAAC;AAM1E,OAAO,KAAK,EAAC,KAAK,EAAE,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAI7C,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEjD;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,GAAG,KAAK,CAExE;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,OAwDzD;AA+KD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,UAAU,GACb,IAAI,CAeN"}
@@ -32,21 +32,19 @@ import { createPredicate } from './filter.js';
32
32
  * const sink = new MySink(input);
33
33
  * ```
34
34
  */
35
- export function buildPipeline(ast, delegate, staticQueryParameters) {
36
- return buildPipelineInternal(bindStaticParameters(ast, staticQueryParameters), delegate, staticQueryParameters);
35
+ export function buildPipeline(ast, delegate) {
36
+ return buildPipelineInternal(ast, delegate);
37
37
  }
38
38
  export function bindStaticParameters(ast, staticQueryParameters) {
39
39
  const visit = (node) => {
40
- if (node.where) {
41
- return {
42
- ...node,
43
- where: bindCondition(node.where),
44
- related: node.related?.map(sq => ({
45
- ...sq,
46
- subquery: visit(sq.subquery),
47
- })),
48
- };
49
- }
40
+ return {
41
+ ...node,
42
+ where: node.where ? bindCondition(node.where) : undefined,
43
+ related: node.related?.map(sq => ({
44
+ ...sq,
45
+ subquery: visit(sq.subquery),
46
+ })),
47
+ };
50
48
  return node;
51
49
  };
52
50
  function bindCondition(condition) {
@@ -87,7 +85,7 @@ export function bindStaticParameters(ast, staticQueryParameters) {
87
85
  function isParameter(value) {
88
86
  return value.type === 'static';
89
87
  }
90
- function buildPipelineInternal(ast, delegate, staticQueryParameters, partitionKey) {
88
+ function buildPipelineInternal(ast, delegate, partitionKey) {
91
89
  const source = delegate.getSource(ast.table);
92
90
  if (!source) {
93
91
  throw new Error(`Source not found: ${ast.table}`);
@@ -100,17 +98,17 @@ function buildPipelineInternal(ast, delegate, staticQueryParameters, partitionKe
100
98
  end = new Skip(end, ast.start);
101
99
  }
102
100
  for (const csq of gatherCorrelatedSubqueryQueriesFromCondition(ast.where)) {
103
- end = applyCorrelatedSubQuery(csq, delegate, staticQueryParameters, end);
101
+ end = applyCorrelatedSubQuery(csq, delegate, end);
104
102
  }
105
103
  if (ast.where) {
106
104
  end = applyWhere(end, ast.where, appliedFilters, delegate);
107
105
  }
108
106
  if (ast.limit) {
109
- end = new Take(end, delegate.createStorage(), ast.limit, partitionKey);
107
+ end = new Take(end, delegate.createStorage(), ast.limit, partitionKey === undefined ? undefined : [partitionKey]);
110
108
  }
111
109
  if (ast.related) {
112
110
  for (const csq of ast.related) {
113
- end = applyCorrelatedSubQuery(csq, delegate, staticQueryParameters, end);
111
+ end = applyCorrelatedSubQuery(csq, delegate, end);
114
112
  }
115
113
  }
116
114
  return end;
@@ -146,15 +144,16 @@ function applyOr(input, condition, appliedFilters, delegate) {
146
144
  function applySimpleCondition(input, condition, appliedFilters) {
147
145
  return new Filter(input, appliedFilters ? 'push-only' : 'all', createPredicate(condition));
148
146
  }
149
- function applyCorrelatedSubQuery(sq, delegate, staticQueryParameters, end) {
147
+ function applyCorrelatedSubQuery(sq, delegate, end) {
150
148
  assert(sq.subquery.alias, 'Subquery must have an alias');
151
- const child = buildPipelineInternal(sq.subquery, delegate, staticQueryParameters, sq.correlation.childField);
149
+ const child = buildPipelineInternal(sq.subquery, delegate, sq.correlation.childField);
152
150
  end = new Join({
153
151
  parent: end,
154
152
  child,
155
153
  storage: delegate.createStorage(),
156
- parentKey: sq.correlation.parentField,
157
- childKey: sq.correlation.childField,
154
+ // TODO: Compound keys in the AST
155
+ parentKey: [sq.correlation.parentField],
156
+ childKey: [sq.correlation.childField],
158
157
  relationshipName: sq.subquery.alias,
159
158
  hidden: sq.hidden ?? false,
160
159
  });
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../zql/src/builder/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../zql/src/builder/builder.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,30 @@
1
- import type { SimpleCondition } from '../../../zero-protocol/src/ast.js';
1
+ import type { Condition, SimpleCondition } from '../../../zero-protocol/src/ast.js';
2
2
  import type { Row, Value } from '../../../zero-protocol/src/data.js';
3
3
  export type NonNullValue = Exclude<Value, null | undefined>;
4
4
  export type SimplePredicate = (rhs: Value) => boolean;
5
5
  export type SimplePredicateNoNull = (rhs: NonNullValue) => boolean;
6
- export declare function createPredicate(condition: SimpleCondition): (row: Row) => boolean;
6
+ export type NoSubqueryCondition = SimpleCondition | {
7
+ type: 'and';
8
+ conditions: readonly NoSubqueryCondition[];
9
+ } | {
10
+ type: 'or';
11
+ conditions: readonly NoSubqueryCondition[];
12
+ };
13
+ export declare function createPredicate(condition: NoSubqueryCondition): (row: Row) => boolean;
14
+ /**
15
+ * If the condition contains any CorrelatedSubqueryConditions, returns a
16
+ * transformed condition which contains no CorrelatedSubqueryCondition(s) but
17
+ * which will filter a subset of the rows that would be filtered by the original
18
+ * condition, or undefined if no such transformation exists.
19
+ *
20
+ * If the condition does not contain any CorrelatedSubqueryConditions
21
+ * returns the condition unmodified and `conditionsRemoved: false`.
22
+ *
23
+ *
24
+ * Assumes Condition is in DNF.
25
+ */
26
+ export declare function transformFilters(filters: Condition | undefined): {
27
+ filters: NoSubqueryCondition | undefined;
28
+ conditionsRemoved: boolean;
29
+ };
7
30
  //# sourceMappingURL=filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../../zql/src/builder/filter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAE,KAAK,EAAC,MAAM,oCAAoC,CAAC;AAGnE,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC;AACtD,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC;AAEnE,wBAAgB,eAAe,CAC7B,SAAS,EAAE,eAAe,GACzB,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CA4CvB"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../../zql/src/builder/filter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EAEhB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAE,KAAK,EAAC,MAAM,oCAAoC,CAAC;AAGnE,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,CAAC,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC;AACtD,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC;AAEnE,MAAM,MAAM,mBAAmB,GAC3B,eAAe,GACf;IACE,IAAI,EAAE,KAAK,CAAC;IACZ,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC5C,GACD;IACE,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC5C,CAAC;AAEN,wBAAgB,eAAe,CAC7B,SAAS,EAAE,mBAAmB,GAC7B,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAkEvB;AA2DD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG;IAChE,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACzC,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAwDA"}
@@ -1,6 +1,28 @@
1
- import { assert } from '../../../shared/src/asserts.js';
1
+ import { assert, unreachable } from '../../../shared/src/asserts.js';
2
2
  import { getLikePredicate } from './like.js';
3
3
  export function createPredicate(condition) {
4
+ if (condition.type !== 'simple') {
5
+ const predicates = condition.conditions.map(c => createPredicate(c));
6
+ return condition.type === 'and'
7
+ ? (row) => {
8
+ // and
9
+ for (const predicate of predicates) {
10
+ if (!predicate(row)) {
11
+ return false;
12
+ }
13
+ }
14
+ return true;
15
+ }
16
+ : (row) => {
17
+ // or
18
+ for (const predicate of predicates) {
19
+ if (predicate(row)) {
20
+ return true;
21
+ }
22
+ }
23
+ return false;
24
+ };
25
+ }
4
26
  const { left } = condition;
5
27
  const { right } = condition;
6
28
  assert(right.type !== 'static', 'static values should be resolved before creating predicates');
@@ -83,4 +105,72 @@ function createPredicateImpl(rhs, operator) {
83
105
  function not(f) {
84
106
  return (lhs) => !f(lhs);
85
107
  }
108
+ /**
109
+ * If the condition contains any CorrelatedSubqueryConditions, returns a
110
+ * transformed condition which contains no CorrelatedSubqueryCondition(s) but
111
+ * which will filter a subset of the rows that would be filtered by the original
112
+ * condition, or undefined if no such transformation exists.
113
+ *
114
+ * If the condition does not contain any CorrelatedSubqueryConditions
115
+ * returns the condition unmodified and `conditionsRemoved: false`.
116
+ *
117
+ *
118
+ * Assumes Condition is in DNF.
119
+ */
120
+ export function transformFilters(filters) {
121
+ if (!filters) {
122
+ return { filters: undefined, conditionsRemoved: false };
123
+ }
124
+ switch (filters.type) {
125
+ case 'simple':
126
+ return { filters, conditionsRemoved: false };
127
+ case 'correlatedSubquery':
128
+ return { filters: undefined, conditionsRemoved: true };
129
+ case 'and': {
130
+ const transformedConditions = [];
131
+ for (const cond of filters.conditions) {
132
+ assert(cond.type === 'simple' || cond.type === 'correlatedSubquery');
133
+ if (cond.type === 'simple') {
134
+ transformedConditions.push(cond);
135
+ }
136
+ }
137
+ const conditionsRemoved = transformedConditions.length !== filters.conditions.length;
138
+ if (transformedConditions.length === 0) {
139
+ return { filters: undefined, conditionsRemoved };
140
+ }
141
+ if (transformedConditions.length === 1) {
142
+ return {
143
+ filters: transformedConditions[0],
144
+ conditionsRemoved,
145
+ };
146
+ }
147
+ return {
148
+ filters: {
149
+ type: 'and',
150
+ conditions: transformedConditions,
151
+ },
152
+ conditionsRemoved,
153
+ };
154
+ }
155
+ case 'or': {
156
+ const transformedConditions = [];
157
+ let conditionsRemoved = false;
158
+ for (const cond of filters.conditions) {
159
+ assert(cond.type !== 'or');
160
+ const transformed = transformFilters(cond);
161
+ if (transformed.filters === undefined) {
162
+ return { filters: undefined, conditionsRemoved: true };
163
+ }
164
+ conditionsRemoved = conditionsRemoved || transformed.conditionsRemoved;
165
+ transformedConditions.push(transformed.filters);
166
+ }
167
+ return {
168
+ filters: { type: 'or', conditions: transformedConditions },
169
+ conditionsRemoved,
170
+ };
171
+ }
172
+ default:
173
+ unreachable(filters);
174
+ }
175
+ }
86
176
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../../zql/src/builder/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../../zql/src/builder/filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { assert } from '../../../shared/src/asserts.js';
2
+ import { applyChange } from './view-apply-change.js';
3
+ /**
4
+ * Implements a materialized view of the output of an operator.
5
+ *
6
+ * It might seem more efficient to use an immutable b-tree for the
7
+ * materialization, but it's not so clear. Inserts in the middle are
8
+ * asymptotically slower in an array, but can often be done with zero
9
+ * allocations, where changes to the b-tree will often require several allocs.
10
+ *
11
+ * Also the plain array view is more convenient for consumers since you can dump
12
+ * it into console to see what it is, rather than having to iterate it.
13
+ */
14
+ export class ArrayView {
15
+ #input;
16
+ #listeners = new Set();
17
+ #schema;
18
+ #format;
19
+ // Synthetic "root" entry that has a single "" relationship, so that we can
20
+ // treat all changes, including the root change, generically.
21
+ #root;
22
+ onDestroy;
23
+ #dirty = false;
24
+ constructor(input, format = { singular: false, relationships: {} }) {
25
+ this.#input = input;
26
+ this.#schema = input.getSchema();
27
+ this.#format = format;
28
+ this.#root = { '': format.singular ? undefined : [] };
29
+ input.setOutput(this);
30
+ this.#hydrate();
31
+ }
32
+ get data() {
33
+ return this.#root[''];
34
+ }
35
+ addListener(listener) {
36
+ assert(!this.#listeners.has(listener), 'Listener already registered');
37
+ this.#listeners.add(listener);
38
+ listener(this.data);
39
+ return () => {
40
+ this.#listeners.delete(listener);
41
+ };
42
+ }
43
+ #fireListeners() {
44
+ for (const listener of this.#listeners) {
45
+ listener(this.data);
46
+ }
47
+ }
48
+ destroy() {
49
+ this.onDestroy?.();
50
+ }
51
+ #hydrate() {
52
+ this.#dirty = true;
53
+ for (const node of this.#input.fetch({})) {
54
+ applyChange(this.#root, { type: 'add', node }, this.#schema, '', this.#format);
55
+ }
56
+ this.flush();
57
+ }
58
+ push(change) {
59
+ this.#dirty = true;
60
+ applyChange(this.#root, change, this.#schema, '', this.#format);
61
+ }
62
+ flush() {
63
+ if (!this.#dirty) {
64
+ return;
65
+ }
66
+ this.#dirty = false;
67
+ this.#fireListeners();
68
+ }
69
+ }
70
+ //# sourceMappingURL=array-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-view.js","sourceRoot":"","sources":["../../../../../zql/src/ivm/array-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAMtD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AAGnD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,SAAS;IACX,MAAM,CAAQ;IACd,UAAU,GAAG,IAAI,GAAG,EAAe,CAAC;IACpC,OAAO,CAAe;IACtB,OAAO,CAAS;IAEzB,2EAA2E;IAC3E,6DAA6D;IACpD,KAAK,CAAQ;IAEtB,SAAS,CAA2B;IAEpC,MAAM,GAAG,KAAK,CAAC;IAEf,YACE,KAAY,EACZ,SAAiB,EAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAC;QAErD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,EAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC;QACpD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAM,CAAC;IAC7B,CAAC;IAED,WAAW,CAAC,QAAqB;QAC/B,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,6BAA6B,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC,IAAoB,CAAC,CAAC;QAEpC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,IAAoB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;IACrB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACzC,WAAW,CACT,IAAI,CAAC,KAAK,EACV,EAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,EACnB,IAAI,CAAC,OAAO,EACZ,EAAE,EACF,IAAI,CAAC,OAAO,CACb,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -32,15 +32,27 @@ export type ChildChange = {
32
32
  * likely the PK stayed the same but there is really no restriction in how it
33
33
  * can change.
34
34
  *
35
- * The edit changes flows down in a {@linkcode Output.push}. There are cases
36
- * where an edit change gets split into a remove and an add change when the
37
- * presence of the row in the result changes (for example the row is no longer
38
- * present due to a filter)
35
+ * The edit changes flows down in a {@linkcode Output.push}.
36
+ * There are cases where an edit change gets split into a remove and/or an add
37
+ * change.
38
+ * 1. when the presence of the row in the result changes (for example the row
39
+ * is no longer present due to a filter)
40
+ * 2. the edit results in the rows relationships changing
41
+ *
42
+ * If an edit is not split, the relationships of node and oldNode must
43
+ * be the same, just the Row has changed.
44
+ *
45
+ * NOTE: It would be cleaner to just have the relationships once,
46
+ * since they must be the same, however relationship Streams are single use
47
+ * and if an Edit needs to be split into a remove and add a single map
48
+ * of relationship Streams could not be used for the both the remove and
49
+ * the add. This cleanup could be done if we move to multi-use Streams
50
+ * for relationships.
39
51
  */
40
52
  export type EditChange = {
41
53
  type: 'edit';
42
- row: Row;
43
- oldRow: Row;
54
+ node: Node;
55
+ oldNode: Node;
44
56
  };
45
57
  export declare function rowForChange(change: Change): Row;
46
58
  //# sourceMappingURL=change.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"change.d.ts","sourceRoot":"","sources":["../../../../../zql/src/ivm/change.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,oCAAoC,CAAC;AAC5D,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAEpC,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAKxC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE;QACL,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAGhD"}
1
+ {"version":3,"file":"change.d.ts","sourceRoot":"","sources":["../../../../../zql/src/ivm/change.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,oCAAoC,CAAC;AAC5D,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAEpC,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;AACzE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAKxC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE;QACL,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAGhD"}
@@ -1,5 +1,5 @@
1
1
  export function rowForChange(change) {
2
2
  const { type } = change;
3
- return type === 'add' || type === 'remove' ? change.node.row : change.row;
3
+ return type === 'child' ? change.row : change.node.row;
4
4
  }
5
5
  //# sourceMappingURL=change.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"change.js","sourceRoot":"","sources":["../../../../../zql/src/ivm/change.ts"],"names":[],"mappings":"AAqDA,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,CAAC;IACtB,OAAO,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"change.js","sourceRoot":"","sources":["../../../../../zql/src/ivm/change.ts"],"names":[],"mappings":"AAiEA,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,CAAC;IACtB,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACzD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Row, Value } from '../../../zero-protocol/src/data.js';
2
+ import type { PrimaryKey } from '../../../zero-protocol/src/primary-key.js';
3
+ export type Constraint = {
4
+ readonly [key: string]: Value;
5
+ };
6
+ export declare function constraintMatchesRow(constraint: Constraint, row: Row): boolean;
7
+ export declare function constraintMatchesPrimaryKey(constraint: Constraint, primary: PrimaryKey): boolean;
8
+ export declare class SetOfConstraint {
9
+ #private;
10
+ constructor();
11
+ has(value: Constraint): boolean;
12
+ add(value: Constraint): this;
13
+ }
14
+ //# sourceMappingURL=constraint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint.d.ts","sourceRoot":"","sources":["../../../../../zql/src/ivm/constraint.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,GAAG,EAAE,KAAK,EAAC,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,2CAA2C,CAAC;AAG1E,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;CAC/B,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,GAAG,GACP,OAAO,CAOT;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,UAAU,GAClB,OAAO,CAiBT;AAID,qBAAa,eAAe;;;IAY1B,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAI/B,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAM7B"}
@@ -0,0 +1,60 @@
1
+ import { assert } from '../../../shared/src/asserts.js';
2
+ import { stringCompare } from '../../../shared/src/string-compare.js';
3
+ import { valuesEqual } from './data.js';
4
+ export function constraintMatchesRow(constraint, row) {
5
+ for (const [key, value] of Object.entries(constraint)) {
6
+ if (!valuesEqual(row[key], value)) {
7
+ return false;
8
+ }
9
+ }
10
+ return true;
11
+ }
12
+ export function constraintMatchesPrimaryKey(constraint, primary) {
13
+ const constraintKeys = Object.keys(constraint);
14
+ if (constraintKeys.length !== primary.length) {
15
+ return false;
16
+ }
17
+ // Primary key is always sorted
18
+ // Constraint does not have to be sorted
19
+ constraintKeys.sort(stringCompare);
20
+ for (let i = 0; i < constraintKeys.length; i++) {
21
+ if (constraintKeys[i][0] !== primary[i]) {
22
+ return false;
23
+ }
24
+ }
25
+ return true;
26
+ }
27
+ export class SetOfConstraint {
28
+ #data = [];
29
+ constructor() {
30
+ // Only used in testing
31
+ assert(TESTING);
32
+ }
33
+ #indexOf(value) {
34
+ return this.#data.findIndex(v => constraintEquals(v, value));
35
+ }
36
+ has(value) {
37
+ return this.#indexOf(value) !== -1;
38
+ }
39
+ add(value) {
40
+ if (!this.has(value)) {
41
+ this.#data.push(value);
42
+ }
43
+ return this;
44
+ }
45
+ }
46
+ function constraintEquals(a, b) {
47
+ const aEntries = Object.entries(a);
48
+ const bEntries = Object.entries(b);
49
+ if (aEntries.length !== bEntries.length) {
50
+ return false;
51
+ }
52
+ for (let i = 0; i < aEntries.length; i++) {
53
+ if (aEntries[i][0] !== bEntries[i][0] ||
54
+ !valuesEqual(aEntries[i][1], bEntries[i][1])) {
55
+ return false;
56
+ }
57
+ }
58
+ return true;
59
+ }
60
+ //# sourceMappingURL=constraint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../../../../zql/src/ivm/constraint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAC,aAAa,EAAC,MAAM,uCAAuC,CAAC;AAGpE,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAMtC,MAAM,UAAU,oBAAoB,CAClC,UAAsB,EACtB,GAAQ;IAER,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,UAAsB,EACtB,OAAmB;IAEnB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,cAAc,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,+BAA+B;IAC/B,wCAAwC;IACxC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAID,MAAM,OAAO,eAAe;IAC1B,KAAK,GAAiB,EAAE,CAAC;IAEzB;QACE,uBAAuB;QACvB,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,KAAiB;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,GAAG,CAAC,KAAiB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,GAAG,CAAC,KAAiB;QACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,CAAa,EAAE,CAAa;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IACE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5C,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"exists.d.ts","sourceRoot":"","sources":["../../../../../zql/src/ivm/exists.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,MAAM,EAAC,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,EACV,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACR,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAS9C;;;GAGG;AACH,qBAAa,MAAO,YAAW,QAAQ;;gBASnC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,QAAQ,GAAG,YAAY;IAU/B,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,OAAO,IAAI,IAAI;IAIf,SAAS,IAAI,YAAY;IAIxB,KAAK,CAAC,GAAG,EAAE,YAAY;IAQvB,OAAO,CAAC,GAAG,EAAE,YAAY;IAS1B,IAAI,CAAC,MAAM,EAAE,MAAM;CAsJpB"}
1
+ {"version":3,"file":"exists.d.ts","sourceRoot":"","sources":["../../../../../zql/src/ivm/exists.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,MAAM,EAAC,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,EACV,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACR,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAS9C;;;GAGG;AACH,qBAAa,MAAO,YAAW,QAAQ;;gBASnC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,QAAQ,GAAG,YAAY;IAU/B,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,OAAO,IAAI,IAAI;IAIf,SAAS,IAAI,YAAY;IAIxB,KAAK,CAAC,GAAG,EAAE,YAAY;IAQvB,OAAO,CAAC,GAAG,EAAE,YAAY;IAS1B,IAAI,CAAC,MAAM,EAAE,MAAM;CAuKpB"}
@@ -82,8 +82,17 @@ export class Exists {
82
82
  size = this.#fetchSize(change.row);
83
83
  }
84
84
  if (size === 1) {
85
+ const type = this.#not ? 'remove' : 'add';
86
+ // The node for the remove pushed below will contain the child
87
+ // added by this change in its
88
+ // relationships[this.#relationshipName],
89
+ // so this child add needs to be sent first. This balance
90
+ // is important for outputs doing ref counting,
91
+ if (type === 'remove') {
92
+ this.#output.push(change);
93
+ }
85
94
  this.#output.push({
86
- type: this.#not ? 'remove' : 'add',
95
+ type,
87
96
  node: this.#fetchNodeForRow(change.row),
88
97
  });
89
98
  }
@@ -103,8 +112,16 @@ export class Exists {
103
112
  size = this.#fetchSize(change.row);
104
113
  }
105
114
  if (size === 0) {
115
+ const type = this.#not ? 'add' : 'remove';
116
+ // The node for the remove pushed below will not contain the child
117
+ // removed by this change in its
118
+ // relationships[this.#relationshipName],
119
+ // so this child remove needs to be sent.
120
+ if (type === 'remove') {
121
+ this.#output.push(change);
122
+ }
106
123
  this.#output.push({
107
- type: this.#not ? 'add' : 'remove',
124
+ type,
108
125
  node: this.#fetchNodeForRow(change.row),
109
126
  });
110
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exists.js","sourceRoot":"","sources":["../../../../../zql/src/ivm/exists.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exists.js","sourceRoot":"","sources":["../../../../../zql/src/ivm/exists.ts"],"names":[],"mappings":"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"}