@rocicorp/zero 0.23.2025081401 → 0.23.2025081900

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 (202) hide show
  1. package/out/analyze-query/src/bin-analyze.d.ts.map +1 -1
  2. package/out/analyze-query/src/bin-analyze.js +56 -99
  3. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  4. package/out/analyze-query/src/explain-queries.d.ts +4 -0
  5. package/out/analyze-query/src/explain-queries.d.ts.map +1 -0
  6. package/out/analyze-query/src/explain-queries.js +18 -0
  7. package/out/analyze-query/src/explain-queries.js.map +1 -0
  8. package/out/analyze-query/src/run-ast.d.ts +29 -0
  9. package/out/analyze-query/src/run-ast.d.ts.map +1 -0
  10. package/out/analyze-query/src/run-ast.js +68 -0
  11. package/out/analyze-query/src/run-ast.js.map +1 -0
  12. package/out/{chunk-O536GEIT.js → chunk-RPVWLROJ.js} +80 -35
  13. package/out/{chunk-O536GEIT.js.map → chunk-RPVWLROJ.js.map} +3 -3
  14. package/out/{chunk-ZIZNSAHP.js → chunk-ZKQCPILX.js} +55 -58
  15. package/out/chunk-ZKQCPILX.js.map +7 -0
  16. package/out/{chunk-KKPRF2XZ.js → chunk-ZZJ2SCHD.js} +124 -63
  17. package/out/{chunk-KKPRF2XZ.js.map → chunk-ZZJ2SCHD.js.map} +4 -4
  18. package/out/{inspector-J5P4DOGH.js → inspector-NC47TWFX.js} +4 -3
  19. package/out/{inspector-J5P4DOGH.js.map → inspector-NC47TWFX.js.map} +2 -2
  20. package/out/react.js +2 -2
  21. package/out/solid.js +3 -3
  22. package/out/zero/package.json +1 -1
  23. package/out/zero/src/server/reaper.d.ts +2 -0
  24. package/out/zero/src/server/reaper.d.ts.map +1 -0
  25. package/out/zero/src/server/reaper.js +2 -0
  26. package/out/zero/src/server/reaper.js.map +1 -0
  27. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  28. package/out/zero-cache/src/auth/write-authorizer.js +2 -3
  29. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  30. package/out/zero-cache/src/config/zero-config.d.ts +4 -0
  31. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  32. package/out/zero-cache/src/config/zero-config.js +9 -1
  33. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  34. package/out/zero-cache/src/custom-queries/transform-query.d.ts +2 -3
  35. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  36. package/out/zero-cache/src/custom-queries/transform-query.js +18 -4
  37. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  38. package/out/zero-cache/src/observability/events.js +1 -2
  39. package/out/zero-cache/src/observability/events.js.map +1 -1
  40. package/out/zero-cache/src/server/inspect-metrics-delegate.d.ts +23 -0
  41. package/out/zero-cache/src/server/inspect-metrics-delegate.d.ts.map +1 -0
  42. package/out/zero-cache/src/server/inspect-metrics-delegate.js +55 -0
  43. package/out/zero-cache/src/server/inspect-metrics-delegate.js.map +1 -0
  44. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  45. package/out/zero-cache/src/server/main.js +12 -15
  46. package/out/zero-cache/src/server/main.js.map +1 -1
  47. package/out/zero-cache/src/server/reaper.d.ts +3 -0
  48. package/out/zero-cache/src/server/reaper.d.ts.map +1 -0
  49. package/out/zero-cache/src/server/reaper.js +31 -0
  50. package/out/zero-cache/src/server/reaper.js.map +1 -0
  51. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  52. package/out/zero-cache/src/server/runner/zero-dispatcher.js +6 -0
  53. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  54. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  55. package/out/zero-cache/src/server/syncer.js +3 -1
  56. package/out/zero-cache/src/server/syncer.js.map +1 -1
  57. package/out/zero-cache/src/services/analyze.d.ts +6 -0
  58. package/out/zero-cache/src/services/analyze.d.ts.map +1 -0
  59. package/out/zero-cache/src/services/analyze.js +70 -0
  60. package/out/zero-cache/src/services/analyze.js.map +1 -0
  61. package/out/zero-cache/src/services/change-source/custom/change-source.js +1 -1
  62. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  63. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +8 -3
  64. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  65. package/out/zero-cache/src/services/mutagen/pusher.d.ts +38 -2
  66. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  67. package/out/zero-cache/src/services/replicator/change-processor.d.ts +3 -2
  68. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
  69. package/out/zero-cache/src/services/replicator/change-processor.js +39 -34
  70. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  71. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  72. package/out/zero-cache/src/services/replicator/incremental-sync.js +1 -3
  73. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  74. package/out/zero-cache/src/services/replicator/replication-status.js +1 -1
  75. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  76. package/out/zero-cache/src/services/running-state.d.ts +5 -0
  77. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  78. package/out/zero-cache/src/services/running-state.js +8 -1
  79. package/out/zero-cache/src/services/running-state.js.map +1 -1
  80. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +2 -0
  81. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  82. package/out/zero-cache/src/services/view-syncer/client-handler.js +3 -0
  83. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  84. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts +16 -0
  85. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -0
  86. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +86 -0
  87. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -0
  88. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +16 -9
  89. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  90. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +50 -30
  91. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  92. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  93. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +36 -26
  94. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  95. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  96. package/out/zero-cache/src/services/view-syncer/schema/init.js +27 -0
  97. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  98. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +2 -9
  99. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  100. package/out/zero-cache/src/services/view-syncer/view-syncer.js +93 -75
  101. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  102. package/out/zero-cache/src/types/pg.d.ts +1 -1
  103. package/out/zero-cache/src/types/pg.js +1 -1
  104. package/out/zero-client/src/client/context.d.ts +1 -0
  105. package/out/zero-client/src/client/context.d.ts.map +1 -1
  106. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  107. package/out/zero-client/src/client/inspector/types.d.ts +1 -0
  108. package/out/zero-client/src/client/inspector/types.d.ts.map +1 -1
  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-events/src/status.d.ts +10 -9
  113. package/out/zero-events/src/status.d.ts.map +1 -1
  114. package/out/zero-events/src/status.js +7 -10
  115. package/out/zero-events/src/status.js.map +1 -1
  116. package/out/zero-protocol/src/custom-queries.d.ts +77 -5
  117. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  118. package/out/zero-protocol/src/custom-queries.js +19 -1
  119. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  120. package/out/zero-protocol/src/down.d.ts +19 -1
  121. package/out/zero-protocol/src/down.d.ts.map +1 -1
  122. package/out/zero-protocol/src/down.js +2 -1
  123. package/out/zero-protocol/src/down.js.map +1 -1
  124. package/out/zero-protocol/src/inspect-down.d.ts +8 -0
  125. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  126. package/out/zero-protocol/src/inspect-down.js +1 -0
  127. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  128. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  129. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  130. package/out/zero-protocol/src/protocol-version.js +3 -1
  131. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  132. package/out/zero-server/src/mod.d.ts +1 -0
  133. package/out/zero-server/src/mod.d.ts.map +1 -1
  134. package/out/zero-server/src/mod.js +1 -0
  135. package/out/zero-server/src/mod.js.map +1 -1
  136. package/out/zero-server/src/process-mutations.d.ts +46 -0
  137. package/out/zero-server/src/process-mutations.d.ts.map +1 -0
  138. package/out/zero-server/src/process-mutations.js +187 -0
  139. package/out/zero-server/src/process-mutations.js.map +1 -0
  140. package/out/zero-server/src/push-processor.d.ts +2 -27
  141. package/out/zero-server/src/push-processor.d.ts.map +1 -1
  142. package/out/zero-server/src/push-processor.js +17 -154
  143. package/out/zero-server/src/push-processor.js.map +1 -1
  144. package/out/zero-server/src/queries/process-queries.d.ts +1 -1
  145. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  146. package/out/zero-server/src/queries/process-queries.js +1 -1
  147. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  148. package/out/zero-server/src/zql-database.d.ts +1 -1
  149. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  150. package/out/zero.js +14 -10
  151. package/out/zql/src/builder/builder.d.ts +5 -1
  152. package/out/zql/src/builder/builder.d.ts.map +1 -1
  153. package/out/zql/src/builder/builder.js +49 -16
  154. package/out/zql/src/builder/builder.js.map +1 -1
  155. package/out/zql/src/builder/debug-delegate.d.ts +29 -0
  156. package/out/zql/src/builder/debug-delegate.d.ts.map +1 -0
  157. package/out/zql/src/builder/debug-delegate.js +55 -0
  158. package/out/zql/src/builder/debug-delegate.js.map +1 -0
  159. package/out/zql/src/builder/filter.d.ts +0 -3
  160. package/out/zql/src/builder/filter.d.ts.map +1 -1
  161. package/out/zql/src/builder/filter.js +0 -3
  162. package/out/zql/src/builder/filter.js.map +1 -1
  163. package/out/zql/src/ivm/filter-operators.d.ts +2 -1
  164. package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
  165. package/out/zql/src/ivm/filter-operators.js +7 -2
  166. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  167. package/out/zql/src/ivm/memory-source.d.ts +2 -0
  168. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  169. package/out/zql/src/ivm/memory-source.js.map +1 -1
  170. package/out/zql/src/ivm/source.d.ts +2 -1
  171. package/out/zql/src/ivm/source.d.ts.map +1 -1
  172. package/out/zql/src/query/measure-push-operator.d.ts +19 -0
  173. package/out/zql/src/query/measure-push-operator.d.ts.map +1 -0
  174. package/out/zql/src/query/measure-push-operator.js +36 -0
  175. package/out/zql/src/query/measure-push-operator.js.map +1 -0
  176. package/out/zql/src/query/metrics-delegate.d.ts +3 -0
  177. package/out/zql/src/query/metrics-delegate.d.ts.map +1 -1
  178. package/out/zql/src/query/metrics-delegate.js +6 -1
  179. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  180. package/out/zql/src/query/named.d.ts +38 -9
  181. package/out/zql/src/query/named.d.ts.map +1 -1
  182. package/out/zql/src/query/named.js +49 -24
  183. package/out/zql/src/query/named.js.map +1 -1
  184. package/out/zql/src/query/query-impl.d.ts +1 -1
  185. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  186. package/out/zql/src/query/query-impl.js.map +1 -1
  187. package/out/zqlite/src/query-delegate.d.ts +1 -0
  188. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  189. package/out/zqlite/src/query-delegate.js +2 -1
  190. package/out/zqlite/src/query-delegate.js.map +1 -1
  191. package/out/zqlite/src/table-source.d.ts +3 -2
  192. package/out/zqlite/src/table-source.d.ts.map +1 -1
  193. package/out/zqlite/src/table-source.js +8 -10
  194. package/out/zqlite/src/table-source.js.map +1 -1
  195. package/package.json +1 -1
  196. package/out/chunk-ZIZNSAHP.js.map +0 -7
  197. package/out/zero-client/src/client/measure-push-operator.d.ts +0 -17
  198. package/out/zero-client/src/client/measure-push-operator.d.ts.map +0 -1
  199. package/out/zqlite/src/runtime-debug.d.ts +0 -23
  200. package/out/zqlite/src/runtime-debug.d.ts.map +0 -1
  201. package/out/zqlite/src/runtime-debug.js +0 -69
  202. package/out/zqlite/src/runtime-debug.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bin-analyze.d.ts","sourceRoot":"","sources":["../../../../analyze-query/src/bin-analyze.ts"],"names":[],"mappings":"AAQA,OAAO,4BAA4B,CAAC"}
1
+ {"version":3,"file":"bin-analyze.d.ts","sourceRoot":"","sources":["../../../../analyze-query/src/bin-analyze.ts"],"names":[],"mappings":"AAOA,OAAO,4BAA4B,CAAC"}
@@ -5,29 +5,26 @@ import { astToZQL } from "../../ast-to-zql/src/ast-to-zql.js";
5
5
  import { formatOutput } from "../../ast-to-zql/src/format.js";
6
6
  import { logLevel, logOptions } from "../../otel/src/log-options.js";
7
7
  import { testLogConfig } from "../../otel/src/test-log-config.js";
8
- import { assert } from "../../shared/src/asserts.js";
9
8
  import "../../shared/src/dotenv.js";
10
9
  import { colorConsole, createLogContext } from "../../shared/src/logging.js";
11
10
  import { must } from "../../shared/src/must.js";
12
11
  import { parseOptions } from "../../shared/src/options.js";
13
12
  import * as v from "../../shared/src/valita.js";
14
- import { transformAndHashQuery } from "../../zero-cache/src/auth/read-authorizer.js";
15
13
  import { appOptions, shardOptions, ZERO_ENV_VAR_PREFIX, zeroOptions, } from "../../zero-cache/src/config/zero-config.js";
16
- import { computeZqlSpecs } from "../../zero-cache/src/db/lite-tables.js";
17
14
  import { deployPermissionsOptions, loadSchemaAndPermissions, } from "../../zero-cache/src/scripts/permissions.js";
18
- import { hydrate } from "../../zero-cache/src/services/view-syncer/pipeline-driver.js";
19
15
  import { pgClient } from "../../zero-cache/src/types/pg.js";
20
16
  import { getShardID, upstreamSchema } from "../../zero-cache/src/types/shards.js";
21
- import { mapAST, } from "../../zero-protocol/src/ast.js";
22
- import { hashOfAST } from "../../zero-protocol/src/query-hash.js";
17
+ import {} from "../../zero-protocol/src/ast.js";
23
18
  import { clientToServer, serverToClient, } from "../../zero-schema/src/name-mapper.js";
24
- import { buildPipeline } from "../../zql/src/builder/builder.js";
25
19
  import { MemoryStorage } from "../../zql/src/ivm/memory-storage.js";
26
20
  import { completedAST, newQuery } from "../../zql/src/query/query-impl.js";
27
21
  import {} from "../../zql/src/query/query.js";
28
22
  import { Database } from "../../zqlite/src/db.js";
29
- import { runtimeDebugFlags, runtimeDebugStats, } from "../../zqlite/src/runtime-debug.js";
23
+ import { runtimeDebugFlags } from "../../zql/src/builder/debug-delegate.js";
30
24
  import { TableSource } from "../../zqlite/src/table-source.js";
25
+ import { Debug } from "../../zql/src/builder/debug-delegate.js";
26
+ import { runAst } from "./run-ast.js";
27
+ import { explainQueries } from "./explain-queries.js";
31
28
  const options = {
32
29
  schema: deployPermissionsOptions.schema,
33
30
  replicaFile: {
@@ -162,7 +159,6 @@ const config = {
162
159
  };
163
160
  runtimeDebugFlags.trackRowCountsVended = true;
164
161
  runtimeDebugFlags.trackRowsVended = config.outputVendedRows;
165
- const clientGroupID = 'clientGroupIDForAnalyze';
166
162
  const lc = createLogContext({
167
163
  log: config.log,
168
164
  });
@@ -175,14 +171,16 @@ const { schema, permissions } = await loadSchemaAndPermissions(config.schema.pat
175
171
  const sources = new Map();
176
172
  const clientToServerMapper = clientToServer(schema.tables);
177
173
  const serverToClientMapper = serverToClient(schema.tables);
174
+ const debug = new Debug();
178
175
  const host = {
176
+ debug,
179
177
  getSource: (serverTableName) => {
180
178
  const clientTableName = serverToClientMapper.tableName(serverTableName);
181
179
  let source = sources.get(serverTableName);
182
180
  if (source) {
183
181
  return source;
184
182
  }
185
- source = new TableSource(lc, testLogConfig, clientGroupID, db, serverTableName, Object.fromEntries(Object.entries(schema.tables[clientTableName].columns).map(([colName, column]) => [
183
+ source = new TableSource(lc, testLogConfig, db, serverTableName, Object.fromEntries(Object.entries(schema.tables[clientTableName].columns).map(([colName, column]) => [
186
184
  clientToServerMapper.columnName(clientTableName, colName),
187
185
  column,
188
186
  ])), schema.tables[clientTableName].primaryKey.map(col => clientToServerMapper.columnName(clientTableName, col)));
@@ -196,6 +194,7 @@ const host = {
196
194
  decorateInput: input => input,
197
195
  decorateSourceInput: input => input,
198
196
  decorateFilterInput: input => input,
197
+ addEdge() { },
199
198
  addServerQuery() {
200
199
  return () => { };
201
200
  },
@@ -215,65 +214,29 @@ const host = {
215
214
  defaultQueryComplete: true,
216
215
  addMetric() { },
217
216
  };
218
- let start;
219
- let end;
217
+ let result;
220
218
  if (config.ast) {
221
219
  // the user likely has a transformed AST since the wire and storage formats are the transformed AST
222
- [start, end] = await runAst(JSON.parse(config.ast), true);
220
+ result = await runAst(lc, JSON.parse(config.ast), true, {
221
+ applyPermissions: config.applyPermissions,
222
+ authData: config.authData,
223
+ clientToServerMapper,
224
+ permissions,
225
+ outputSyncedRows: config.outputSyncedRows,
226
+ db,
227
+ host,
228
+ });
223
229
  }
224
230
  else if (config.query) {
225
- [start, end] = await runQuery(config.query);
231
+ result = await runQuery(config.query);
226
232
  }
227
233
  else if (config.hash) {
228
- [start, end] = await runHash(config.hash);
234
+ result = await runHash(config.hash);
229
235
  }
230
236
  else {
231
237
  colorConsole.error('No query or AST or hash provided');
232
238
  process.exit(1);
233
239
  }
234
- async function runAst(ast, isTransformed) {
235
- if (!isTransformed) {
236
- // map the AST to server names if not already transformed
237
- ast = mapAST(ast, clientToServerMapper);
238
- }
239
- if (config.applyPermissions) {
240
- const authData = config.authData ? JSON.parse(config.authData) : {};
241
- if (!config.authData) {
242
- colorConsole.warn('No auth data provided. Permission rules will compare to `NULL` wherever an auth data field is referenced.');
243
- }
244
- ast = transformAndHashQuery(lc, clientGroupID, ast, permissions, authData, false).transformedAst;
245
- colorConsole.log(chalk.blue.bold('\n\n=== Query After Permissions: ===\n'));
246
- colorConsole.log(await formatOutput(ast.table + astToZQL(ast)));
247
- }
248
- const tableSpecs = computeZqlSpecs(lc, db);
249
- const pipeline = buildPipeline(ast, host, 'query-id');
250
- const start = performance.now();
251
- if (config.outputSyncedRows) {
252
- colorConsole.log(chalk.blue.bold('\n\n=== Synced rows: ===\n'));
253
- }
254
- let syncedRowCount = 0;
255
- const rowsByTable = {};
256
- for (const rowChange of hydrate(pipeline, hashOfAST(ast), tableSpecs)) {
257
- assert(rowChange.type === 'add');
258
- syncedRowCount++;
259
- if (config.outputSyncedRows) {
260
- let rows = rowsByTable[rowChange.table];
261
- if (!rows) {
262
- rows = [];
263
- rowsByTable[rowChange.table] = rows;
264
- }
265
- rows.push(rowChange.row);
266
- }
267
- }
268
- if (config.outputSyncedRows) {
269
- for (const [source, rows] of Object.entries(rowsByTable)) {
270
- colorConsole.log(chalk.bold(`${source}:`), rows);
271
- }
272
- colorConsole.log(chalk.bold('total synced rows:'), syncedRowCount);
273
- }
274
- const end = performance.now();
275
- return [start, end];
276
- }
277
240
  function runQuery(queryString) {
278
241
  const z = {
279
242
  query: Object.fromEntries(Object.entries(schema.tables).map(([name]) => [
@@ -284,7 +247,15 @@ function runQuery(queryString) {
284
247
  const f = new Function('z', `return z.query.${queryString};`);
285
248
  const q = f(z);
286
249
  const ast = completedAST(q);
287
- return runAst(ast, false);
250
+ return runAst(lc, ast, false, {
251
+ applyPermissions: config.applyPermissions,
252
+ authData: config.authData,
253
+ clientToServerMapper,
254
+ permissions,
255
+ outputSyncedRows: config.outputSyncedRows,
256
+ db,
257
+ host,
258
+ });
288
259
  }
289
260
  async function runHash(hash) {
290
261
  const cvrDB = pgClient(lc, must(config.cvr.db, 'CVR DB must be provided when using the hash option'));
@@ -293,61 +264,47 @@ async function runHash(hash) {
293
264
  colorConsole.log('ZQL from Hash:');
294
265
  const ast = rows[0].clientAST;
295
266
  colorConsole.log(await formatOutput(ast.table + astToZQL(ast)));
296
- return runAst(ast, true);
267
+ return runAst(lc, ast, true, {
268
+ applyPermissions: config.applyPermissions,
269
+ authData: config.authData,
270
+ clientToServerMapper,
271
+ permissions,
272
+ outputSyncedRows: config.outputSyncedRows,
273
+ db,
274
+ host,
275
+ });
276
+ }
277
+ if (config.outputSyncedRows) {
278
+ colorConsole.log(chalk.blue.bold('=== Synced Rows: ===\n'));
279
+ for (const [table, rows] of Object.entries(result.syncedRows)) {
280
+ colorConsole.log(chalk.bold(table + ':'), rows);
281
+ }
297
282
  }
298
283
  colorConsole.log(chalk.blue.bold('=== Query Stats: ===\n'));
284
+ colorConsole.log(chalk.bold('total synced rows:'), result.syncedRowCount);
299
285
  showStats();
300
286
  if (config.outputVendedRows) {
301
287
  colorConsole.log(chalk.blue.bold('=== Vended Rows: ===\n'));
302
288
  for (const source of sources.values()) {
303
- const entries = [
304
- ...(runtimeDebugStats
305
- .getVendedRows()
306
- .get(clientGroupID)
307
- ?.get(source.table)
308
- ?.entries() ?? []),
309
- ];
310
- colorConsole.log(chalk.bold(`${source.table}:`), Object.fromEntries(entries));
289
+ colorConsole.log(chalk.bold(`${source.table}:`), debug.getVendedRows()?.[source.table] ?? {});
311
290
  }
312
291
  }
313
292
  colorConsole.log(chalk.blue.bold('\n\n=== Query Plans: ===\n'));
314
- explainQueries();
293
+ const plans = explainQueries(debug.getVendedRowCounts() ?? {}, db);
294
+ for (const [query, plan] of Object.entries(plans)) {
295
+ colorConsole.log(chalk.bold('query'), query);
296
+ colorConsole.log(plan.map((row, i) => colorPlanRow(row, i)).join('\n'));
297
+ colorConsole.log('\n');
298
+ }
315
299
  function showStats() {
316
300
  let totalRowsConsidered = 0;
317
301
  for (const source of sources.values()) {
318
- const entries = [
319
- ...(runtimeDebugStats
320
- .getVendedRowCounts()
321
- .get(clientGroupID)
322
- ?.get(source.table)
323
- ?.entries() ?? []),
324
- ];
302
+ const entries = Object.entries(debug.getVendedRowCounts()?.[source.table] ?? {});
325
303
  totalRowsConsidered += entries.reduce((acc, entry) => acc + entry[1], 0);
326
- colorConsole.log(chalk.bold(source.table + ' vended:'), Object.fromEntries(entries));
304
+ colorConsole.log(chalk.bold(source.table + ' vended:'), debug.getVendedRowCounts()?.[source.table] ?? {});
327
305
  }
328
306
  colorConsole.log(chalk.bold('total rows considered:'), colorRowsConsidered(totalRowsConsidered));
329
- colorConsole.log(chalk.bold('time:'), colorTime(end - start), 'ms');
330
- }
331
- function explainQueries() {
332
- for (const source of sources.values()) {
333
- const queries = runtimeDebugStats
334
- .getVendedRowCounts()
335
- .get(clientGroupID)
336
- ?.get(source.table)
337
- ?.keys() ?? [];
338
- for (const query of queries) {
339
- colorConsole.log(chalk.bold('query'), query);
340
- colorConsole.log(db
341
- // we should be more intelligent about value replacement.
342
- // Different values result in different plans. E.g., picking a value at the start
343
- // of an index will result in `scan` vs `search`. The scan is fine in that case.
344
- .prepare(`EXPLAIN QUERY PLAN ${query.replaceAll('?', "'sdfse'")}`)
345
- .all()
346
- .map((row, i) => colorPlanRow(row.detail, i))
347
- .join('\n'));
348
- colorConsole.log('\n');
349
- }
350
- }
307
+ colorConsole.log(chalk.bold('time:'), colorTime(result.end - result.start), 'ms');
351
308
  }
352
309
  function colorTime(duration) {
353
310
  if (duration < 100) {
@@ -1 +1 @@
1
- {"version":3,"file":"bin-analyze.js","sourceRoot":"","sources":["../../../../analyze-query/src/bin-analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin-analyze.js","sourceRoot":"","sources":["../../../../analyze-query/src/bin-analyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { RowCountsBySource } from '../../zql/src/builder/debug-delegate.ts';
2
+ import type { Database } from '../../zqlite/src/db.ts';
3
+ export declare function explainQueries(counts: RowCountsBySource, db: Database): Record<string, string[]>;
4
+ //# sourceMappingURL=explain-queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain-queries.d.ts","sourceRoot":"","sources":["../../../../analyze-query/src/explain-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAErD,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,EAAE,QAAQ,4BAiBrE"}
@@ -0,0 +1,18 @@
1
+ export function explainQueries(counts, db) {
2
+ const plans = {};
3
+ for (const querySet of Object.values(counts)) {
4
+ const queries = Object.keys(querySet);
5
+ for (const query of queries) {
6
+ const plan = db
7
+ // we should be more intelligent about value replacement.
8
+ // Different values result in different plans. E.g., picking a value at the start
9
+ // of an index will result in `scan` vs `search`. The scan is fine in that case.
10
+ .prepare(`EXPLAIN QUERY PLAN ${query.replaceAll('?', "'sdfse'")}`)
11
+ .all()
12
+ .map(r => r.detail);
13
+ plans[query] = plan;
14
+ }
15
+ }
16
+ return plans;
17
+ }
18
+ //# sourceMappingURL=explain-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain-queries.js","sourceRoot":"","sources":["../../../../analyze-query/src/explain-queries.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,cAAc,CAAC,MAAyB,EAAE,EAAY;IACpE,MAAM,KAAK,GAA6B,EAAE,CAAC;IAC3C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,EAAE;gBACb,yDAAyD;gBACzD,iFAAiF;gBACjF,gFAAgF;iBAC/E,OAAO,CAAC,sBAAsB,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;iBACjE,GAAG,EAAoB;iBACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtB,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { AST } from '../../zero-protocol/src/ast.ts';
2
+ import { type BuilderDelegate } from '../../zql/src/builder/builder.ts';
3
+ import type { Row } from '../../zero-protocol/src/data.ts';
4
+ import type { NameMapper } from '../../zero-schema/src/name-mapper.ts';
5
+ import { LogContext } from '@rocicorp/logger';
6
+ import type { PermissionsConfig } from '../../zero-schema/src/compiled-permissions.ts';
7
+ import type { Database } from '../../zqlite/src/db.ts';
8
+ import type { RowCountsBySource, RowsBySource } from '../../zql/src/builder/debug-delegate.ts';
9
+ export type RunResult = {
10
+ warnings: string[];
11
+ syncedRows: Record<string, Row[]>;
12
+ syncedRowCount: number;
13
+ start: number;
14
+ end: number;
15
+ afterPermissions: string | undefined;
16
+ vendedRowCounts: RowCountsBySource | undefined;
17
+ vendedRows: RowsBySource | undefined;
18
+ plans?: Record<string, string[]> | undefined;
19
+ };
20
+ export declare function runAst(lc: LogContext, ast: AST, isTransformed: boolean, options: {
21
+ applyPermissions: boolean;
22
+ authData?: string | undefined;
23
+ clientToServerMapper?: NameMapper | undefined;
24
+ permissions?: PermissionsConfig | undefined;
25
+ outputSyncedRows: boolean;
26
+ db: Database;
27
+ host: BuilderDelegate;
28
+ }): Promise<RunResult>;
29
+ //# sourceMappingURL=run-ast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-ast.d.ts","sourceRoot":"","sources":["../../../../analyze-query/src/run-ast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,kCAAkC,CAAC;AAK1C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,iCAAiC,CAAC;AAGzD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,+CAA+C,CAAC;AAGrF,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACb,MAAM,yCAAyC,CAAC;AAEjD,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,eAAe,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC/C,UAAU,EAAE,YAAY,GAAG,SAAS,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;CAC9C,CAAC;AAEF,wBAAsB,MAAM,CAC1B,EAAE,EAAE,UAAU,EACd,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,OAAO,EACtB,OAAO,EAAE;IACP,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,oBAAoB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9C,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC5C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,eAAe,CAAC;CACvB,GACA,OAAO,CAAC,SAAS,CAAC,CAqEpB"}
@@ -0,0 +1,68 @@
1
+ import { buildPipeline, } from "../../zql/src/builder/builder.js";
2
+ import { hydrate } from "../../zero-cache/src/services/view-syncer/pipeline-driver.js";
3
+ import { transformAndHashQuery } from "../../zero-cache/src/auth/read-authorizer.js";
4
+ import { assert } from "../../shared/src/asserts.js";
5
+ import { computeZqlSpecs } from "../../zero-cache/src/db/lite-tables.js";
6
+ import { hashOfAST } from "../../zero-protocol/src/query-hash.js";
7
+ import { mapAST } from "../../zero-protocol/src/ast.js";
8
+ import { LogContext } from '@rocicorp/logger';
9
+ import { astToZQL } from "../../ast-to-zql/src/ast-to-zql.js";
10
+ import { formatOutput } from "../../ast-to-zql/src/format.js";
11
+ import { must } from "../../shared/src/must.js";
12
+ export async function runAst(lc, ast, isTransformed, options) {
13
+ const { clientToServerMapper, permissions, host, db } = options;
14
+ const result = {
15
+ warnings: [],
16
+ syncedRows: {},
17
+ syncedRowCount: 0,
18
+ start: 0,
19
+ end: 0,
20
+ afterPermissions: undefined,
21
+ vendedRowCounts: host.debug?.getVendedRowCounts(),
22
+ vendedRows: host.debug?.getVendedRows(),
23
+ };
24
+ if (!isTransformed) {
25
+ // map the AST to server names if not already transformed
26
+ ast = mapAST(ast, must(clientToServerMapper));
27
+ }
28
+ if (options.applyPermissions) {
29
+ const authData = options.authData ? JSON.parse(options.authData) : {};
30
+ if (!options.authData) {
31
+ result.warnings.push('No auth data provided. Permission rules will compare to `NULL` wherever an auth data field is referenced.');
32
+ }
33
+ ast = transformAndHashQuery(lc, 'clientGroupIDForAnalyze', ast, must(permissions), authData, false).transformedAst;
34
+ result.afterPermissions = await formatOutput(ast.table + astToZQL(ast));
35
+ }
36
+ const tableSpecs = computeZqlSpecs(lc, db);
37
+ const pipeline = buildPipeline(ast, host, 'query-id');
38
+ const start = performance.now();
39
+ let syncedRowCount = 0;
40
+ const rowsByTable = {};
41
+ const seenByTable = new Set();
42
+ for (const rowChange of hydrate(pipeline, hashOfAST(ast), tableSpecs)) {
43
+ assert(rowChange.type === 'add');
44
+ syncedRowCount++;
45
+ if (options.outputSyncedRows) {
46
+ let rows = rowsByTable[rowChange.table];
47
+ const s = rowChange.table + '.' + JSON.stringify(rowChange.row);
48
+ if (seenByTable.has(s)) {
49
+ continue; // skip duplicates
50
+ }
51
+ seenByTable.add(s);
52
+ if (!rows) {
53
+ rows = [];
54
+ rowsByTable[rowChange.table] = rows;
55
+ }
56
+ rows.push(rowChange.row);
57
+ }
58
+ }
59
+ const end = performance.now();
60
+ result.syncedRows = rowsByTable;
61
+ result.start = start;
62
+ result.end = end;
63
+ result.syncedRowCount = syncedRowCount;
64
+ result.vendedRowCounts = host.debug?.getVendedRowCounts();
65
+ result.vendedRows = host.debug?.getVendedRows();
66
+ return result;
67
+ }
68
+ //# sourceMappingURL=run-ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-ast.js","sourceRoot":"","sources":["../../../../analyze-query/src/run-ast.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,GAEd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAC,OAAO,EAAC,MAAM,8DAA8D,CAAC;AACrF,OAAO,EAAC,qBAAqB,EAAC,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAC,eAAe,EAAC,MAAM,wCAAwC,CAAC;AAEvE,OAAO,EAAC,SAAS,EAAC,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAEtD,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAC,QAAQ,EAAC,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAC,YAAY,EAAC,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAC,IAAI,EAAC,MAAM,0BAA0B,CAAC;AAkB9C,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,EAAc,EACd,GAAQ,EACR,aAAsB,EACtB,OAQC;IAED,MAAM,EAAC,oBAAoB,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAC,GAAG,OAAO,CAAC;IAC9D,MAAM,MAAM,GAAc;QACxB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,cAAc,EAAE,CAAC;QACjB,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,CAAC;QACN,gBAAgB,EAAE,SAAS;QAC3B,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE;QACjD,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE;KACxC,CAAC;IAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,yDAAyD;QACzD,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAClB,2GAA2G,CAC5G,CAAC;QACJ,CAAC;QACD,GAAG,GAAG,qBAAqB,CACzB,EAAE,EACF,yBAAyB,EACzB,GAAG,EACH,IAAI,CAAC,WAAW,CAAC,EACjB,QAAQ,EACR,KAAK,CACN,CAAC,cAAc,CAAC;QACjB,MAAM,CAAC,gBAAgB,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEhC,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,MAAM,WAAW,GAA0B,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC3C,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACjC,cAAc,EAAE,CAAC;QACjB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,IAAI,IAAI,GAAU,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAChE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvB,SAAS,CAAC,kBAAkB;YAC9B,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,EAAE,CAAC;gBACV,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YACtC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAC9B,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC;IAChC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC1D,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC;IAChD,OAAO,MAAM,CAAC;AAChB,CAAC"}