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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  2. package/out/analyze-query/src/run-ast.js +3 -7
  3. package/out/analyze-query/src/run-ast.js.map +1 -1
  4. package/out/shared/src/iterables.d.ts +0 -1
  5. package/out/shared/src/iterables.d.ts.map +1 -1
  6. package/out/shared/src/iterables.js +0 -34
  7. package/out/shared/src/iterables.js.map +1 -1
  8. package/out/zero/package.json.js +1 -1
  9. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  10. package/out/zero-cache/src/db/transaction-pool.js +3 -6
  11. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  12. package/out/zero-cache/src/services/analyze.d.ts +1 -1
  13. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  14. package/out/zero-cache/src/services/analyze.js +50 -37
  15. package/out/zero-cache/src/services/analyze.js.map +1 -1
  16. package/out/zero-cache/src/services/run-ast.d.ts +1 -1
  17. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  18. package/out/zero-cache/src/services/run-ast.js +5 -1
  19. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  20. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +6 -4
  21. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  22. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +71 -23
  23. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  24. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +1 -1
  25. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  26. package/out/zero-cache/src/services/view-syncer/view-syncer.js +10 -6
  27. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  28. package/out/zero-client/src/client/bindings.d.ts +2 -3
  29. package/out/zero-client/src/client/bindings.d.ts.map +1 -1
  30. package/out/zero-client/src/client/bindings.js.map +1 -1
  31. package/out/zero-client/src/client/make-mutate-property.d.ts +2 -2
  32. package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -1
  33. package/out/zero-client/src/client/make-mutate-property.js.map +1 -1
  34. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
  35. package/out/zero-client/src/client/options.d.ts +3 -3
  36. package/out/zero-client/src/client/options.d.ts.map +1 -1
  37. package/out/zero-client/src/client/options.js.map +1 -1
  38. package/out/zero-client/src/client/version.js +1 -1
  39. package/out/zero-client/src/client/zero.d.ts +1 -2
  40. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  41. package/out/zero-client/src/client/zero.js +6 -2
  42. package/out/zero-client/src/client/zero.js.map +1 -1
  43. package/out/zero-client/src/mod.d.ts +5 -7
  44. package/out/zero-client/src/mod.d.ts.map +1 -1
  45. package/out/zero-react/src/components/inspector.d.ts +1 -2
  46. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  47. package/out/zero-react/src/components/inspector.js.map +1 -1
  48. package/out/zero-react/src/components/zero-inspector.d.ts +1 -2
  49. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  50. package/out/zero-react/src/components/zero-inspector.js.map +1 -1
  51. package/out/zero-react/src/use-query.d.ts +1 -2
  52. package/out/zero-react/src/use-query.d.ts.map +1 -1
  53. package/out/zero-react/src/use-query.js.map +1 -1
  54. package/out/zero-react/src/zero-provider.d.ts +4 -5
  55. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  56. package/out/zero-react/src/zero-provider.js.map +1 -1
  57. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  58. package/out/zero-solid/src/solid-view.js +4 -3
  59. package/out/zero-solid/src/solid-view.js.map +1 -1
  60. package/out/zero-solid/src/use-zero.d.ts +4 -5
  61. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  62. package/out/zero-solid/src/use-zero.js.map +1 -1
  63. package/out/zero-types/src/default-types.d.ts +2 -2
  64. package/out/zero-types/src/default-types.d.ts.map +1 -1
  65. package/out/zql/src/builder/builder.d.ts.map +1 -1
  66. package/out/zql/src/builder/builder.js +0 -1
  67. package/out/zql/src/builder/builder.js.map +1 -1
  68. package/out/zql/src/ivm/array-view.d.ts +1 -1
  69. package/out/zql/src/ivm/array-view.d.ts.map +1 -1
  70. package/out/zql/src/ivm/array-view.js +2 -1
  71. package/out/zql/src/ivm/array-view.js.map +1 -1
  72. package/out/zql/src/ivm/data.d.ts +7 -2
  73. package/out/zql/src/ivm/data.d.ts.map +1 -1
  74. package/out/zql/src/ivm/data.js +3 -0
  75. package/out/zql/src/ivm/data.js.map +1 -1
  76. package/out/zql/src/ivm/exists.d.ts +3 -2
  77. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  78. package/out/zql/src/ivm/exists.js +29 -76
  79. package/out/zql/src/ivm/exists.js.map +1 -1
  80. package/out/zql/src/ivm/fan-in.d.ts +2 -0
  81. package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
  82. package/out/zql/src/ivm/fan-in.js +4 -0
  83. package/out/zql/src/ivm/fan-in.js.map +1 -1
  84. package/out/zql/src/ivm/fan-out.d.ts +2 -0
  85. package/out/zql/src/ivm/fan-out.d.ts.map +1 -1
  86. package/out/zql/src/ivm/fan-out.js +4 -0
  87. package/out/zql/src/ivm/fan-out.js.map +1 -1
  88. package/out/zql/src/ivm/filter-operators.d.ts +6 -2
  89. package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
  90. package/out/zql/src/ivm/filter-operators.js +16 -0
  91. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  92. package/out/zql/src/ivm/filter.d.ts +2 -0
  93. package/out/zql/src/ivm/filter.d.ts.map +1 -1
  94. package/out/zql/src/ivm/filter.js +4 -0
  95. package/out/zql/src/ivm/filter.js.map +1 -1
  96. package/out/zql/src/ivm/flipped-join.d.ts +1 -1
  97. package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
  98. package/out/zql/src/ivm/flipped-join.js +26 -13
  99. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  100. package/out/zql/src/ivm/join-utils.d.ts +2 -1
  101. package/out/zql/src/ivm/join-utils.d.ts.map +1 -1
  102. package/out/zql/src/ivm/join-utils.js +8 -0
  103. package/out/zql/src/ivm/join-utils.js.map +1 -1
  104. package/out/zql/src/ivm/join.d.ts +1 -1
  105. package/out/zql/src/ivm/join.d.ts.map +1 -1
  106. package/out/zql/src/ivm/join.js +15 -6
  107. package/out/zql/src/ivm/join.js.map +1 -1
  108. package/out/zql/src/ivm/memory-source.d.ts +1 -1
  109. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  110. package/out/zql/src/ivm/memory-source.js +8 -1
  111. package/out/zql/src/ivm/memory-source.js.map +1 -1
  112. package/out/zql/src/ivm/operator.d.ts +9 -1
  113. package/out/zql/src/ivm/operator.d.ts.map +1 -1
  114. package/out/zql/src/ivm/operator.js +8 -0
  115. package/out/zql/src/ivm/operator.js.map +1 -1
  116. package/out/zql/src/ivm/push-accumulated.d.ts +1 -1
  117. package/out/zql/src/ivm/push-accumulated.d.ts.map +1 -1
  118. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  119. package/out/zql/src/ivm/skip.d.ts +1 -1
  120. package/out/zql/src/ivm/skip.d.ts.map +1 -1
  121. package/out/zql/src/ivm/skip.js +7 -1
  122. package/out/zql/src/ivm/skip.js.map +1 -1
  123. package/out/zql/src/ivm/take.d.ts +1 -1
  124. package/out/zql/src/ivm/take.d.ts.map +1 -1
  125. package/out/zql/src/ivm/take.js +87 -59
  126. package/out/zql/src/ivm/take.js.map +1 -1
  127. package/out/zql/src/ivm/union-fan-in.d.ts +2 -1
  128. package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
  129. package/out/zql/src/ivm/union-fan-in.js +67 -5
  130. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  131. package/out/zql/src/ivm/union-fan-out.d.ts +1 -1
  132. package/out/zql/src/ivm/union-fan-out.d.ts.map +1 -1
  133. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  134. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  135. package/out/zql/src/ivm/view-apply-change.js +3 -2
  136. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  137. package/out/zql/src/mutate/custom.d.ts +2 -2
  138. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  139. package/out/zql/src/mutate/custom.js.map +1 -1
  140. package/out/zql/src/mutate/mutator-registry.d.ts +33 -15
  141. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -1
  142. package/out/zql/src/mutate/mutator-registry.js +2 -8
  143. package/out/zql/src/mutate/mutator-registry.js.map +1 -1
  144. package/out/zql/src/mutate/mutator.d.ts +50 -25
  145. package/out/zql/src/mutate/mutator.d.ts.map +1 -1
  146. package/out/zql/src/mutate/mutator.js +2 -3
  147. package/out/zql/src/mutate/mutator.js.map +1 -1
  148. package/out/zql/src/query/abstract-query.d.ts +43 -0
  149. package/out/zql/src/query/abstract-query.d.ts.map +1 -0
  150. package/out/zql/src/query/abstract-query.js +408 -0
  151. package/out/zql/src/query/abstract-query.js.map +1 -0
  152. package/out/zql/src/query/create-builder.d.ts +2 -0
  153. package/out/zql/src/query/create-builder.d.ts.map +1 -1
  154. package/out/zql/src/query/create-builder.js +7 -2
  155. package/out/zql/src/query/create-builder.js.map +1 -1
  156. package/out/zql/src/query/measure-push-operator.d.ts +1 -1
  157. package/out/zql/src/query/measure-push-operator.d.ts.map +1 -1
  158. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  159. package/out/zql/src/query/query-delegate-base.d.ts +7 -1
  160. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  161. package/out/zql/src/query/query-delegate-base.js +132 -2
  162. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  163. package/out/zql/src/query/query-impl.d.ts +5 -39
  164. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  165. package/out/zql/src/query/query-impl.js +3 -521
  166. package/out/zql/src/query/query-impl.js.map +1 -1
  167. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  168. package/out/zql/src/query/query-internals.js +2 -2
  169. package/out/zql/src/query/query-internals.js.map +1 -1
  170. package/out/zql/src/query/query-registry.d.ts +126 -58
  171. package/out/zql/src/query/query-registry.d.ts.map +1 -1
  172. package/out/zql/src/query/query-registry.js +13 -21
  173. package/out/zql/src/query/query-registry.js.map +1 -1
  174. package/out/zql/src/query/query.d.ts +21 -0
  175. package/out/zql/src/query/query.d.ts.map +1 -1
  176. package/out/zql/src/query/runnable-query-impl.d.ts +22 -0
  177. package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -0
  178. package/out/zql/src/query/runnable-query-impl.js +60 -0
  179. package/out/zql/src/query/runnable-query-impl.js.map +1 -0
  180. package/out/zql/src/query/static-query.d.ts +1 -1
  181. package/out/zql/src/query/static-query.d.ts.map +1 -1
  182. package/out/zql/src/query/static-query.js +1 -1
  183. package/out/zql/src/query/static-query.js.map +1 -1
  184. package/out/zqlite/src/table-source.d.ts +7 -1
  185. package/out/zqlite/src/table-source.d.ts.map +1 -1
  186. package/out/zqlite/src/table-source.js +34 -14
  187. package/out/zqlite/src/table-source.js.map +1 -1
  188. package/package.json +1 -1
@@ -1,5 +1,10 @@
1
+ import { resolver } from "@rocicorp/resolver";
2
+ import { hashOfNameAndArgs } from "../../../zero-protocol/src/query-hash.js";
3
+ import { buildPipeline } from "../builder/builder.js";
4
+ import { ArrayView } from "../ivm/array-view.js";
1
5
  import { MemoryStorage } from "../ivm/memory-storage.js";
2
- import { materializeImpl, runImpl, preloadImpl } from "./query-impl.js";
6
+ import { asQueryInternals } from "./query-internals.js";
7
+ import { DEFAULT_TTL_MS, DEFAULT_PRELOAD_TTL_MS } from "./ttl.js";
3
8
  class QueryDelegateBase {
4
9
  /**
5
10
  * Default implementation that just calls applyViewUpdates synchronously.
@@ -114,7 +119,132 @@ class QueryDelegateBase {
114
119
  assertValidRunOptions(_options) {
115
120
  }
116
121
  }
122
+ async function runImpl(query, delegate, options) {
123
+ delegate.assertValidRunOptions(options);
124
+ const v = materializeImpl(
125
+ query,
126
+ delegate,
127
+ void 0,
128
+ {
129
+ ttl: options?.ttl
130
+ }
131
+ );
132
+ if (options?.type === "complete") {
133
+ return new Promise((resolve) => {
134
+ v.addListener((data, type) => {
135
+ if (type === "complete") {
136
+ v.destroy();
137
+ resolve(data);
138
+ } else if (type === "error") {
139
+ v.destroy();
140
+ resolve(Promise.reject(data));
141
+ }
142
+ });
143
+ });
144
+ }
145
+ options?.type;
146
+ const ret = v.data;
147
+ v.destroy();
148
+ return ret;
149
+ }
150
+ function preloadImpl(query, delegate, options) {
151
+ const qi = asQueryInternals(query);
152
+ const ttl = options?.ttl ?? DEFAULT_PRELOAD_TTL_MS;
153
+ const { resolve, promise: complete } = resolver();
154
+ const { customQueryID, ast } = qi;
155
+ if (customQueryID) {
156
+ const cleanup2 = delegate.addCustomQuery(ast, customQueryID, ttl, (got) => {
157
+ if (got) {
158
+ resolve();
159
+ }
160
+ });
161
+ return {
162
+ cleanup: cleanup2,
163
+ complete
164
+ };
165
+ }
166
+ const cleanup = delegate.addServerQuery(ast, ttl, (got) => {
167
+ if (got) {
168
+ resolve();
169
+ }
170
+ });
171
+ return {
172
+ cleanup,
173
+ complete
174
+ };
175
+ }
176
+ function materializeImpl(query, delegate, factory = arrayViewFactory, options) {
177
+ let ttl = options?.ttl ?? DEFAULT_TTL_MS;
178
+ const qi = asQueryInternals(query);
179
+ const { ast, format, customQueryID } = qi;
180
+ const queryHash = qi.hash();
181
+ const queryID = customQueryID ? hashOfNameAndArgs(customQueryID.name, customQueryID.args) : queryHash;
182
+ const queryCompleteResolver = resolver();
183
+ let queryComplete = delegate.defaultQueryComplete;
184
+ const updateTTL = customQueryID ? (newTTL) => delegate.updateCustomQuery(customQueryID, newTTL) : (newTTL) => delegate.updateServerQuery(ast, newTTL);
185
+ const gotCallback = (got, error) => {
186
+ if (error) {
187
+ queryCompleteResolver.reject(error);
188
+ queryComplete = error;
189
+ return;
190
+ }
191
+ if (got) {
192
+ delegate.addMetric(
193
+ "query-materialization-end-to-end",
194
+ performance.now() - t0,
195
+ queryID,
196
+ ast
197
+ );
198
+ queryComplete = true;
199
+ queryCompleteResolver.resolve(true);
200
+ }
201
+ };
202
+ let removeCommitObserver;
203
+ const onDestroy = () => {
204
+ input.destroy();
205
+ removeCommitObserver?.();
206
+ removeAddedQuery();
207
+ };
208
+ const t0 = performance.now();
209
+ const removeAddedQuery = customQueryID ? delegate.addCustomQuery(ast, customQueryID, ttl, gotCallback) : delegate.addServerQuery(ast, ttl, gotCallback);
210
+ const input = buildPipeline(ast, delegate, queryID);
211
+ const view = delegate.batchViewUpdates(
212
+ () => (factory ?? arrayViewFactory)(
213
+ query,
214
+ input,
215
+ format,
216
+ onDestroy,
217
+ (cb) => {
218
+ removeCommitObserver = delegate.onTransactionCommit(cb);
219
+ },
220
+ queryComplete || queryCompleteResolver.promise,
221
+ updateTTL
222
+ )
223
+ );
224
+ delegate.addMetric(
225
+ "query-materialization-client",
226
+ performance.now() - t0,
227
+ queryID
228
+ );
229
+ return view;
230
+ }
231
+ function arrayViewFactory(_query, input, format, onDestroy, onTransactionCommit, queryComplete, updateTTL) {
232
+ const v = new ArrayView(
233
+ input,
234
+ format,
235
+ queryComplete,
236
+ updateTTL
237
+ );
238
+ v.onDestroy = onDestroy;
239
+ onTransactionCommit(() => {
240
+ v.flush();
241
+ });
242
+ return v;
243
+ }
117
244
  export {
118
- QueryDelegateBase
245
+ QueryDelegateBase,
246
+ materializeImpl,
247
+ preloadImpl,
248
+ runImpl
119
249
  };
120
250
  //# sourceMappingURL=query-delegate-base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-delegate-base.js","sources":["../../../../../zql/src/query/query-delegate-base.ts"],"sourcesContent":["import type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {FilterInput} from '../ivm/filter-operators.ts';\nimport {MemoryStorage} from '../ivm/memory-storage.ts';\nimport type {Input, InputBase, Storage} from '../ivm/operator.ts';\nimport type {Source, SourceInput} from '../ivm/source.ts';\nimport type {ViewFactory} from '../ivm/view.ts';\nimport type {MetricMap} from './metrics-delegate.ts';\nimport type {CustomQueryID} from './named.ts';\nimport type {\n CommitListener,\n GotCallback,\n QueryDelegate,\n} from './query-delegate.ts';\nimport {materializeImpl, preloadImpl, runImpl} from './query-impl.ts';\nimport type {\n HumanReadable,\n MaterializeOptions,\n PreloadOptions,\n Query,\n RunOptions,\n} from './query.ts';\nimport type {TTL} from './ttl.ts';\nimport type {TypedView} from './typed-view.ts';\n\n/**\n * Base class that provides default implementations for common QueryDelegate methods.\n * Subclasses can override specific methods as needed.\n */\nexport abstract class QueryDelegateBase implements QueryDelegate {\n /**\n * Default implementation that just calls applyViewUpdates synchronously.\n * Override if you need custom batching behavior (e.g., SolidJS).\n */\n batchViewUpdates<T>(applyViewUpdates: () => T): T {\n return applyViewUpdates();\n }\n\n /**\n * Default implementation returns MemoryStorage.\n * Override if you need custom storage.\n */\n createStorage(): Storage {\n return new MemoryStorage();\n }\n\n /**\n * Default implementation calls materializeImpl.\n * Override if you need custom materialization behavior.\n */\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: undefined,\n options?: MaterializeOptions,\n ): TypedView<HumanReadable<TReturn>>;\n\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T;\n\n /**\n * Materialize a query into a custom view using a provided factory function.\n */\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T;\n\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T {\n return materializeImpl(query, this, factory, options);\n }\n\n /**\n * Default implementation calls runImpl.\n * Override if you need custom query execution (e.g., TestPGQueryDelegate).\n */\n run<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n options?: RunOptions,\n ): Promise<HumanReadable<TReturn>> {\n return runImpl(query, this, options);\n }\n\n /**\n * Default implementation calls preloadImpl.\n * Override if you need custom preload behavior.\n */\n preload<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n options?: PreloadOptions,\n ): {\n cleanup: () => void;\n complete: Promise<void>;\n } {\n return preloadImpl(query, this, options);\n }\n\n /**\n * Default no-op implementation for decorateSourceInput.\n * Override if you need to wrap or instrument source inputs.\n */\n decorateSourceInput(input: SourceInput, _queryID: string): Input {\n return input;\n }\n\n /**\n * Default no-op implementation for decorateInput.\n * Override if you need to wrap or instrument inputs.\n */\n decorateInput(input: Input, _name: string): Input {\n return input;\n }\n\n /**\n * Default no-op implementation for decorateFilterInput.\n * Override if you need to wrap or instrument filter inputs.\n */\n decorateFilterInput(input: FilterInput, _name: string): FilterInput {\n return input;\n }\n\n /**\n * Default no-op implementation for addEdge.\n * Override if you need to track graph edges (e.g., visualization).\n */\n addEdge(_source: InputBase, _dest: InputBase): void {\n // No-op\n }\n\n /**\n * Default no-op implementation for addMetric.\n * Override if you need to collect metrics.\n */\n addMetric<K extends keyof MetricMap>(\n _metric: K,\n _value: number,\n ..._args: MetricMap[K]\n ): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to track server queries (e.g., ZeroContext, test delegates).\n */\n addServerQuery(_ast: AST, _ttl: TTL, _gotCallback?: GotCallback): () => void {\n return () => {};\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to track custom queries (e.g., ZeroContext, test delegates).\n */\n addCustomQuery(\n _ast: AST,\n _customQueryID: CustomQueryID,\n _ttl: TTL,\n _gotCallback?: GotCallback,\n ): () => void {\n return () => {};\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to handle query updates.\n */\n updateServerQuery(_ast: AST, _ttl: TTL): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to handle custom query updates.\n */\n updateCustomQuery(_customQueryID: CustomQueryID, _ttl: TTL): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to flush query changes.\n */\n flushQueryChanges(): void {\n // No-op\n }\n\n /**\n * Called when a transaction commits. Override to add custom behavior.\n * Default implementation returns a no-op cleanup function.\n */\n onTransactionCommit(_cb: CommitListener): () => void {\n return () => {};\n }\n\n /**\n * Validates run options. Override to add custom validation.\n * Default implementation is a no-op.\n */\n assertValidRunOptions(_options?: RunOptions): void {\n // No-op\n }\n\n abstract readonly defaultQueryComplete: boolean;\n\n // BuilderDelegate methods - must be implemented\n abstract getSource(name: string): Source | undefined;\n}\n"],"names":[],"mappings":";;AA6BO,MAAe,kBAA2C;AAAA;AAAA;AAAA;AAAA;AAAA,EAK/D,iBAAoB,kBAA8B;AAChD,WAAO,iBAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAyB;AACvB,WAAO,IAAI,cAAA;AAAA,EACb;AAAA,EAyCA,YAME,OACA,SACA,SACG;AACH,WAAO,gBAAgB,OAAO,MAAM,SAAS,OAAO;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAKE,OACA,SACiC;AACjC,WAAO,QAAQ,OAAO,MAAM,OAAO;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAKE,OACA,SAIA;AACA,WAAO,YAAY,OAAO,MAAM,OAAO;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB,OAAoB,UAAyB;AAC/D,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc,OAAc,OAAsB;AAChD,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB,OAAoB,OAA4B;AAClE,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ,SAAoB,OAAwB;AAAA,EAEpD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UACE,SACA,WACG,OACG;AAAA,EAER;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,MAAW,MAAW,cAAwC;AAC3E,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eACE,MACA,gBACA,MACA,cACY;AACZ,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,kBAAkB,MAAW,MAAiB;AAAA,EAE9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,kBAAkB,gBAA+B,MAAiB;AAAA,EAElE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAA0B;AAAA,EAE1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,oBAAoB,KAAiC;AACnD,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,sBAAsB,UAA6B;AAAA,EAEnD;AAMF;"}
1
+ {"version":3,"file":"query-delegate-base.js","sources":["../../../../../zql/src/query/query-delegate-base.ts"],"sourcesContent":["import {resolver} from '@rocicorp/resolver';\nimport type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {ErroredQuery} from '../../../zero-protocol/src/custom-queries.ts';\nimport {hashOfNameAndArgs} from '../../../zero-protocol/src/query-hash.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {buildPipeline} from '../builder/builder.ts';\nimport {ArrayView} from '../ivm/array-view.ts';\nimport type {FilterInput} from '../ivm/filter-operators.ts';\nimport {MemoryStorage} from '../ivm/memory-storage.ts';\nimport type {Input, InputBase, Storage} from '../ivm/operator.ts';\nimport type {Source, SourceInput} from '../ivm/source.ts';\nimport type {Format, ViewFactory} from '../ivm/view.ts';\nimport type {MetricMap} from './metrics-delegate.ts';\nimport type {CustomQueryID} from './named.ts';\nimport type {\n CommitListener,\n GotCallback,\n QueryDelegate,\n} from './query-delegate.ts';\nimport {asQueryInternals, type QueryInternals} from './query-internals.ts';\nimport type {\n HumanReadable,\n MaterializeOptions,\n PreloadOptions,\n Query,\n RunOptions,\n} from './query.ts';\nimport {DEFAULT_PRELOAD_TTL_MS, DEFAULT_TTL_MS, type TTL} from './ttl.ts';\nimport type {TypedView} from './typed-view.ts';\n\n/**\n * Base class that provides default implementations for common QueryDelegate methods.\n * Subclasses can override specific methods as needed.\n */\nexport abstract class QueryDelegateBase implements QueryDelegate {\n /**\n * Default implementation that just calls applyViewUpdates synchronously.\n * Override if you need custom batching behavior (e.g., SolidJS).\n */\n batchViewUpdates<T>(applyViewUpdates: () => T): T {\n return applyViewUpdates();\n }\n\n /**\n * Default implementation returns MemoryStorage.\n * Override if you need custom storage.\n */\n createStorage(): Storage {\n return new MemoryStorage();\n }\n\n /**\n * Default implementation calls materializeImpl.\n * Override if you need custom materialization behavior.\n */\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: undefined,\n options?: MaterializeOptions,\n ): TypedView<HumanReadable<TReturn>>;\n\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T;\n\n /**\n * Materialize a query into a custom view using a provided factory function.\n */\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T;\n\n materialize<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n >(\n query: Query<TTable, TSchema, TReturn>,\n factory?: ViewFactory<TTable, TSchema, TReturn, T>,\n options?: MaterializeOptions,\n ): T {\n return materializeImpl(query, this, factory, options);\n }\n\n /**\n * Default implementation calls runImpl.\n * Override if you need custom query execution (e.g., TestPGQueryDelegate).\n */\n run<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n options?: RunOptions,\n ): Promise<HumanReadable<TReturn>> {\n return runImpl(query, this, options);\n }\n\n /**\n * Default implementation calls preloadImpl.\n * Override if you need custom preload behavior.\n */\n preload<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n >(\n query: Query<TTable, TSchema, TReturn>,\n options?: PreloadOptions,\n ): {\n cleanup: () => void;\n complete: Promise<void>;\n } {\n return preloadImpl(query, this, options);\n }\n\n /**\n * Default no-op implementation for decorateSourceInput.\n * Override if you need to wrap or instrument source inputs.\n */\n decorateSourceInput(input: SourceInput, _queryID: string): Input {\n return input;\n }\n\n /**\n * Default no-op implementation for decorateInput.\n * Override if you need to wrap or instrument inputs.\n */\n decorateInput(input: Input, _name: string): Input {\n return input;\n }\n\n /**\n * Default no-op implementation for decorateFilterInput.\n * Override if you need to wrap or instrument filter inputs.\n */\n decorateFilterInput(input: FilterInput, _name: string): FilterInput {\n return input;\n }\n\n /**\n * Default no-op implementation for addEdge.\n * Override if you need to track graph edges (e.g., visualization).\n */\n addEdge(_source: InputBase, _dest: InputBase): void {\n // No-op\n }\n\n /**\n * Default no-op implementation for addMetric.\n * Override if you need to collect metrics.\n */\n addMetric<K extends keyof MetricMap>(\n _metric: K,\n _value: number,\n ..._args: MetricMap[K]\n ): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to track server queries (e.g., ZeroContext, test delegates).\n */\n addServerQuery(_ast: AST, _ttl: TTL, _gotCallback?: GotCallback): () => void {\n return () => {};\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to track custom queries (e.g., ZeroContext, test delegates).\n */\n addCustomQuery(\n _ast: AST,\n _customQueryID: CustomQueryID,\n _ttl: TTL,\n _gotCallback?: GotCallback,\n ): () => void {\n return () => {};\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to handle query updates.\n */\n updateServerQuery(_ast: AST, _ttl: TTL): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to handle custom query updates.\n */\n updateCustomQuery(_customQueryID: CustomQueryID, _ttl: TTL): void {\n // No-op\n }\n\n /**\n * Default no-op implementation.\n * Override if you need to flush query changes.\n */\n flushQueryChanges(): void {\n // No-op\n }\n\n /**\n * Called when a transaction commits. Override to add custom behavior.\n * Default implementation returns a no-op cleanup function.\n */\n onTransactionCommit(_cb: CommitListener): () => void {\n return () => {};\n }\n\n /**\n * Validates run options. Override to add custom validation.\n * Default implementation is a no-op.\n */\n assertValidRunOptions(_options?: RunOptions): void {\n // No-op\n }\n\n abstract readonly defaultQueryComplete: boolean;\n\n // BuilderDelegate methods - must be implemented\n abstract getSource(name: string): Source | undefined;\n}\n\n// oxlint-disable-next-line require-await\nexport async function runImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n>(\n query: Query<TTable, TSchema, TReturn>,\n delegate: QueryDelegate,\n options?: RunOptions,\n): Promise<HumanReadable<TReturn>> {\n delegate.assertValidRunOptions(options);\n const v: TypedView<HumanReadable<TReturn>> = materializeImpl(\n query,\n delegate,\n undefined,\n {\n ttl: options?.ttl,\n },\n );\n if (options?.type === 'complete') {\n return new Promise(resolve => {\n v.addListener((data, type) => {\n if (type === 'complete') {\n v.destroy();\n resolve(data as HumanReadable<TReturn>);\n } else if (type === 'error') {\n v.destroy();\n resolve(Promise.reject(data));\n }\n });\n });\n }\n\n options?.type satisfies 'unknown' | undefined;\n\n const ret = v.data;\n v.destroy();\n return ret;\n}\n\nexport function preloadImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n>(\n query: Query<TTable, TSchema, TReturn>,\n delegate: QueryDelegate,\n options?: PreloadOptions,\n): {\n cleanup: () => void;\n complete: Promise<void>;\n} {\n const qi = asQueryInternals(query);\n const ttl = options?.ttl ?? DEFAULT_PRELOAD_TTL_MS;\n const {resolve, promise: complete} = resolver<void>();\n const {customQueryID, ast} = qi;\n if (customQueryID) {\n const cleanup = delegate.addCustomQuery(ast, customQueryID, ttl, got => {\n if (got) {\n resolve();\n }\n });\n return {\n cleanup,\n complete,\n };\n }\n\n const cleanup = delegate.addServerQuery(ast, ttl, got => {\n if (got) {\n resolve();\n }\n });\n return {\n cleanup,\n complete,\n };\n}\n\nexport function materializeImpl<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends Schema,\n TReturn,\n T,\n>(\n query: Query<TTable, TSchema, TReturn>,\n delegate: QueryDelegate,\n factory: ViewFactory<\n TTable,\n TSchema,\n TReturn,\n T\n // oxlint-disable-next-line no-explicit-any\n > = arrayViewFactory as any,\n options?: MaterializeOptions,\n): T {\n let ttl: TTL = options?.ttl ?? DEFAULT_TTL_MS;\n\n const qi = asQueryInternals(query);\n const {ast, format, customQueryID} = qi;\n const queryHash = qi.hash();\n\n const queryID = customQueryID\n ? hashOfNameAndArgs(customQueryID.name, customQueryID.args)\n : queryHash;\n const queryCompleteResolver = resolver<true>();\n let queryComplete: boolean | ErroredQuery = delegate.defaultQueryComplete;\n const updateTTL = customQueryID\n ? (newTTL: TTL) => delegate.updateCustomQuery(customQueryID, newTTL)\n : (newTTL: TTL) => delegate.updateServerQuery(ast, newTTL);\n\n const gotCallback: GotCallback = (got, error) => {\n if (error) {\n queryCompleteResolver.reject(error);\n queryComplete = error;\n return;\n }\n\n if (got) {\n delegate.addMetric(\n 'query-materialization-end-to-end',\n performance.now() - t0,\n queryID,\n ast,\n );\n queryComplete = true;\n queryCompleteResolver.resolve(true);\n }\n };\n\n let removeCommitObserver: (() => void) | undefined;\n const onDestroy = () => {\n input.destroy();\n removeCommitObserver?.();\n removeAddedQuery();\n };\n\n const t0 = performance.now();\n\n const removeAddedQuery = customQueryID\n ? delegate.addCustomQuery(ast, customQueryID, ttl, gotCallback)\n : delegate.addServerQuery(ast, ttl, gotCallback);\n\n const input = buildPipeline(ast, delegate, queryID);\n\n const view = delegate.batchViewUpdates(() =>\n (factory ?? arrayViewFactory)(\n query,\n input,\n format,\n onDestroy,\n cb => {\n removeCommitObserver = delegate.onTransactionCommit(cb);\n },\n queryComplete || queryCompleteResolver.promise,\n updateTTL,\n ),\n );\n\n delegate.addMetric(\n 'query-materialization-client',\n performance.now() - t0,\n queryID,\n );\n\n return view as T;\n}\n\nfunction arrayViewFactory<\n TTable extends string,\n TSchema extends Schema,\n TReturn,\n>(\n _query: QueryInternals<TTable, TSchema, TReturn>,\n input: Input,\n format: Format,\n onDestroy: () => void,\n onTransactionCommit: (cb: () => void) => void,\n queryComplete: true | ErroredQuery | Promise<true>,\n updateTTL: (ttl: TTL) => void,\n): TypedView<HumanReadable<TReturn>> {\n const v = new ArrayView<HumanReadable<TReturn>>(\n input,\n format,\n queryComplete,\n updateTTL,\n );\n v.onDestroy = onDestroy;\n onTransactionCommit(() => {\n v.flush();\n });\n return v;\n}\n"],"names":["cleanup"],"mappings":"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"}
@@ -1,45 +1,11 @@
1
- import type { ReadonlyJSONValue } from '../../../shared/src/json.ts';
2
- import { type AST, type Condition, type Parameter, type SimpleOperator, type System } from '../../../zero-protocol/src/ast.ts';
1
+ import { type AST, type System } from '../../../zero-protocol/src/ast.ts';
3
2
  import type { Schema } from '../../../zero-types/src/schema.ts';
4
- import type { Format, ViewFactory } from '../ivm/view.ts';
5
- import { type ExpressionFactory } from './expression.ts';
3
+ import type { Format } from '../ivm/view.ts';
4
+ import { AbstractQuery } from './abstract-query.ts';
6
5
  import type { CustomQueryID } from './named.ts';
7
- import type { QueryDelegate } from './query-delegate.ts';
8
- import { queryInternalsTag, type QueryInternals } from './query-internals.ts';
9
- import { type AnyQuery, type ExistsOptions, type GetFilterType, type HumanReadable, type MaterializeOptions, type PreloadOptions, type PullRow, type Query, type RunOptions, type ToQuery } from './query.ts';
10
- export declare function newQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn = PullRow<TTable, TSchema>>(schema: TSchema, table: TTable): Query<TTable, TSchema, TReturn>;
11
- export declare function staticParam(anchorClass: 'authData' | 'preMutationRow', field: string | string[]): Parameter;
12
- type GetFilterTypeAny = GetFilterType<any, any, any>;
13
- type NewQueryFunction<TSchema extends Schema> = <TTable extends keyof TSchema['tables'] & string, TReturn>(this: unknown, tableName: TTable, ast: AST, format: Format, customQueryID: CustomQueryID | undefined, currentJunction: string | undefined) => Query<TTable, TSchema, TReturn>;
14
- export declare abstract class AbstractQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn = PullRow<TTable, TSchema>> implements Query<TTable, TSchema, TReturn>, QueryInternals<TTable, TSchema, TReturn>, ToQuery<TTable, TSchema, TReturn, unknown> {
15
- #private;
16
- readonly [queryInternalsTag] = true;
17
- readonly format: Format;
18
- readonly customQueryID: CustomQueryID | undefined;
19
- constructor(schema: TSchema, tableName: TTable, ast: AST, format: Format, system: System, customQueryID: CustomQueryID | undefined, currentJunction: string | undefined, newQuery: NewQueryFunction<TSchema>);
20
- nameAndArgs(name: string, args: ReadonlyArray<ReadonlyJSONValue>): Query<TTable, TSchema, TReturn>;
21
- hash(): string;
22
- one: () => Query<TTable, TSchema, TReturn | undefined>;
23
- whereExists: (relationship: string, cbOrOptions?: ((q: AnyQuery) => AnyQuery) | ExistsOptions, options?: ExistsOptions) => Query<TTable, TSchema, TReturn>;
24
- related: (relationship: string, cb?: (q: AnyQuery) => AnyQuery) => Query<TTable, TSchema, any>;
25
- where: (fieldOrExpressionFactory: string | ExpressionFactory<TTable, TSchema>, opOrValue?: SimpleOperator | GetFilterTypeAny | Parameter, value?: GetFilterTypeAny | Parameter) => Query<TTable, TSchema, TReturn>;
26
- start: (row: Partial<Record<string, ReadonlyJSONValue | undefined>>, opts?: {
27
- inclusive: boolean;
28
- }) => Query<TTable, TSchema, TReturn>;
29
- limit: (limit: number) => Query<TTable, TSchema, TReturn>;
30
- orderBy: <TSelector extends keyof TSchema["tables"][TTable]["columns"]>(field: TSelector, direction: "asc" | "desc") => Query<TTable, TSchema, TReturn>;
31
- protected _exists: (relationship: string, cb: ((query: AnyQuery) => AnyQuery) | undefined, options?: ExistsOptions) => Condition;
32
- get ast(): AST;
33
- toQuery(_context: unknown): this;
34
- }
35
- export declare function materializeImpl<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn, T>(query: Query<TTable, TSchema, TReturn>, delegate: QueryDelegate, factory?: ViewFactory<TTable, TSchema, TReturn, T>, options?: MaterializeOptions): T;
36
- export declare function runImpl<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn>(query: Query<TTable, TSchema, TReturn>, delegate: QueryDelegate, options?: RunOptions): Promise<HumanReadable<TReturn>>;
37
- export declare function preloadImpl<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema, TReturn>(query: Query<TTable, TSchema, TReturn>, delegate: QueryDelegate, options?: PreloadOptions): {
38
- cleanup: () => void;
39
- complete: Promise<void>;
40
- };
6
+ import { type PullRow, type Query, type ToQuery } from './query.ts';
7
+ export declare function newQuery<TTable extends keyof TSchema['tables'] & string, TSchema extends Schema>(schema: TSchema, table: TTable): Query<TTable, TSchema>;
41
8
  export declare class QueryImpl<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> {
42
9
  constructor(schema: TSchema, tableName: TTable, ast?: AST, format?: Format, system?: System, customQueryID?: CustomQueryID, currentJunction?: string);
43
10
  }
44
- export {};
45
11
  //# sourceMappingURL=query-impl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-impl.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-impl.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,GAAG,EAAE,KAAK,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACxE,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,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAC,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAC,MAAM,YAAY,CAAC;AAElE,wBAAgB,QAAQ,CACtB,MAAM,SAAS,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,EAC/C,OAAO,SAAS,MAAM,EACtB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAExD;AAED,qBAAa,SAAS,CAClB,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;gBAG1C,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;CAsB3B"}