@rocicorp/zero 0.18.2025032101 → 0.18.2025032400

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 (93) hide show
  1. package/out/{zql/src/query → ast-to-zql/src}/ast-to-zql.d.ts +1 -1
  2. package/out/ast-to-zql/src/ast-to-zql.d.ts.map +1 -0
  3. package/out/ast-to-zql/src/ast-to-zql.js +191 -0
  4. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -0
  5. package/out/ast-to-zql/src/bin.d.ts +2 -0
  6. package/out/ast-to-zql/src/bin.d.ts.map +1 -0
  7. package/out/ast-to-zql/src/bin.js +92 -0
  8. package/out/ast-to-zql/src/bin.js.map +1 -0
  9. package/out/{chunk-KRZMF5WQ.js → chunk-DSUPSGE4.js} +10 -1
  10. package/out/{chunk-KRZMF5WQ.js.map → chunk-DSUPSGE4.js.map} +2 -2
  11. package/out/{chunk-AX7YNDMI.js → chunk-YAABAEJV.js} +163 -47
  12. package/out/{chunk-AX7YNDMI.js.map → chunk-YAABAEJV.js.map} +4 -4
  13. package/out/{inspector-SVHRQAQN.js → inspector-ROITQB3J.js} +164 -171
  14. package/out/inspector-ROITQB3J.js.map +7 -0
  15. package/out/shared/src/arrays.d.ts +2 -0
  16. package/out/shared/src/arrays.d.ts.map +1 -1
  17. package/out/shared/src/arrays.js +22 -0
  18. package/out/shared/src/arrays.js.map +1 -1
  19. package/out/solid.js +2 -2
  20. package/out/z2s/src/compiler.d.ts.map +1 -1
  21. package/out/z2s/src/compiler.js +1 -8
  22. package/out/z2s/src/compiler.js.map +1 -1
  23. package/out/zero/src/ast-to-zql.d.ts +3 -0
  24. package/out/zero/src/ast-to-zql.d.ts.map +1 -0
  25. package/out/zero/src/ast-to-zql.js +3 -0
  26. package/out/zero/src/ast-to-zql.js.map +1 -0
  27. package/out/zero-cache/src/auth/jwt.js +3 -2
  28. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  29. package/out/zero-cache/src/config/zero-config.d.ts +5 -0
  30. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  31. package/out/zero-cache/src/config/zero-config.js +8 -0
  32. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  33. package/out/zero-cache/src/server/multi/config.d.ts +5 -0
  34. package/out/zero-cache/src/server/multi/config.d.ts.map +1 -1
  35. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  36. package/out/zero-cache/src/server/syncer.js +1 -1
  37. package/out/zero-cache/src/server/syncer.js.map +1 -1
  38. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts.map +1 -1
  39. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +18 -1
  40. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  41. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +1 -1
  42. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  43. package/out/zero-cache/src/services/change-streamer/storer.d.ts +1 -1
  44. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  45. package/out/zero-cache/src/services/change-streamer/storer.js +25 -12
  46. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  47. package/out/zero-cache/src/services/mutagen/pusher.d.ts +5 -4
  48. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  49. package/out/zero-cache/src/services/mutagen/pusher.js +97 -13
  50. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  51. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  52. package/out/zero-cache/src/services/view-syncer/client-schema.js +6 -1
  53. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  54. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +5 -4
  55. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  56. package/out/zero-cache/src/services/view-syncer/cvr-store.js +9 -7
  57. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  58. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  59. package/out/zero-cache/src/services/view-syncer/cvr.js +16 -7
  60. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  61. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  62. package/out/zero-cache/src/services/view-syncer/view-syncer.js +16 -3
  63. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  64. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  65. package/out/zero-cache/src/types/streams.js +11 -15
  66. package/out/zero-cache/src/types/streams.js.map +1 -1
  67. package/out/zero-cache/src/workers/connection.d.ts +1 -0
  68. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  69. package/out/zero-cache/src/workers/connection.js +16 -5
  70. package/out/zero-cache/src/workers/connection.js.map +1 -1
  71. package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
  72. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +2 -2
  73. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  74. package/out/zero-client/src/client/custom.d.ts +13 -3
  75. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  76. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  77. package/out/zero-client/src/client/mutation-tracker.d.ts +21 -0
  78. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -0
  79. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  80. package/out/zero-protocol/src/down.d.ts +42 -1
  81. package/out/zero-protocol/src/down.d.ts.map +1 -1
  82. package/out/zero-protocol/src/down.js +2 -1
  83. package/out/zero-protocol/src/down.js.map +1 -1
  84. package/out/zero-protocol/src/protocol-version.d.ts +1 -1
  85. package/out/zero-protocol/src/protocol-version.js +1 -1
  86. package/out/zero-protocol/src/push.d.ts +88 -4
  87. package/out/zero-protocol/src/push.d.ts.map +1 -1
  88. package/out/zero-protocol/src/push.js +22 -3
  89. package/out/zero-protocol/src/push.js.map +1 -1
  90. package/out/zero.js +2 -2
  91. package/package.json +4 -3
  92. package/out/inspector-SVHRQAQN.js.map +0 -7
  93. package/out/zql/src/query/ast-to-zql.d.ts.map +0 -1
@@ -1,4 +1,4 @@
1
- import type { AST } from '../../../zero-protocol/src/ast.ts';
1
+ import type { AST } from '../../zero-protocol/src/ast.ts';
2
2
  /**
3
3
  * Converts an AST to the equivalent query builder code.
4
4
  * This is useful for debugging and understanding queries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-to-zql.d.ts","sourceRoot":"","sources":["../../../../ast-to-zql/src/ast-to-zql.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,GAAG,EAWJ,MAAM,gCAAgC,CAAC;AAGxC;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAoCzC"}
@@ -0,0 +1,191 @@
1
+ import { unreachable } from "../../shared/src/asserts.js";
2
+ import { must } from "../../shared/src/must.js";
3
+ import { SUBQ_PREFIX } from "../../zql/src/query/query-impl.js";
4
+ /**
5
+ * Converts an AST to the equivalent query builder code.
6
+ * This is useful for debugging and understanding queries.
7
+ *
8
+ * @example
9
+ * ```
10
+ * const ast = query.issue.where('id', '=', 123)[astForTestingSymbol];
11
+ * console.log(astToZQL(ast)); // outputs: .where('id', '=', 123)
12
+ * ```
13
+ */
14
+ export function astToZQL(ast) {
15
+ let code = '';
16
+ // Handle where conditions
17
+ if (ast.where) {
18
+ code += transformCondition(ast.where, '.where', new Set());
19
+ }
20
+ // Handle related subqueries
21
+ if (ast.related && ast.related.length > 0) {
22
+ for (const related of ast.related) {
23
+ if (!related.hidden) {
24
+ code += transformRelated(related);
25
+ }
26
+ }
27
+ }
28
+ // Handle orderBy
29
+ if (ast.orderBy && ast.orderBy.length > 0) {
30
+ code += transformOrder(ast.orderBy);
31
+ }
32
+ // Handle limit
33
+ if (ast.limit !== undefined) {
34
+ code += `.limit(${ast.limit})`;
35
+ }
36
+ // Handle start
37
+ if (ast.start) {
38
+ const { row, exclusive } = ast.start;
39
+ code += `.start(${JSON.stringify(row)}${exclusive ? '' : ', { inclusive: true }'})`;
40
+ }
41
+ return code;
42
+ }
43
+ function transformCondition(condition, prefix, args) {
44
+ switch (condition.type) {
45
+ case 'simple':
46
+ return transformSimpleCondition(condition, prefix);
47
+ case 'and':
48
+ case 'or':
49
+ return transformLogicalCondition(condition, prefix, args);
50
+ case 'correlatedSubquery':
51
+ return transformExistsCondition(condition, prefix, args);
52
+ default:
53
+ unreachable(condition);
54
+ }
55
+ }
56
+ function transformSimpleCondition(condition, prefix) {
57
+ const { left, op, right } = condition;
58
+ const leftCode = transformValuePosition(left);
59
+ const rightCode = transformValuePosition(right);
60
+ // Handle the shorthand form for equals
61
+ if (op === '=') {
62
+ return `${prefix}(${leftCode}, ${rightCode})`;
63
+ }
64
+ return `${prefix}(${leftCode}, '${op}', ${rightCode})`;
65
+ }
66
+ function transformLogicalCondition(condition, prefix, args) {
67
+ const { type, conditions } = condition;
68
+ // For single condition, no need for logical operator
69
+ if (conditions.length === 1) {
70
+ return transformCondition(conditions[0], prefix, args);
71
+ }
72
+ // Generate multiple where calls for top-level AND conditions
73
+ if (type === 'and') {
74
+ const parts = conditions.map(c => transformCondition(c, prefix, args));
75
+ // Simply concatenate the where conditions
76
+ if (prefix === '.where') {
77
+ return parts.join('');
78
+ }
79
+ args.add('and');
80
+ return 'and(' + parts.join(', ') + ')';
81
+ }
82
+ args = new Set();
83
+ // Handle nested conditions with a callback for OR conditions and nested ANDs/ORs
84
+ const conditionsCode = conditions
85
+ .map(c => transformCondition(c, 'cmp', args))
86
+ .join(', ');
87
+ args.add('cmp');
88
+ args.add(type);
89
+ const argsCode = [...args].sort().join(', ');
90
+ return `.where(({${argsCode}}) => ${type}(${conditionsCode}))`;
91
+ }
92
+ function transformExistsCondition(condition, prefix, args) {
93
+ const { related, op } = condition;
94
+ const relationship = extractRelationshipName(related);
95
+ // Check if subquery has additional properties
96
+ const hasSubQueryProps = related.subquery.where ||
97
+ (related.subquery.related && related.subquery.related.length > 0) ||
98
+ related.subquery.orderBy ||
99
+ related.subquery.limit;
100
+ if (op === 'EXISTS') {
101
+ if (!hasSubQueryProps) {
102
+ if (prefix === '.where') {
103
+ return `.whereExists('${relationship}')`;
104
+ }
105
+ args.add('exists');
106
+ return `exists('${relationship}')`;
107
+ }
108
+ if (prefix === '.where') {
109
+ return `.whereExists('${relationship}', q => q${astToZQL(related.subquery)}))`;
110
+ }
111
+ prefix;
112
+ args.add('exists');
113
+ return `exists('${relationship}', q => q${astToZQL(related.subquery)})`;
114
+ }
115
+ op;
116
+ if (hasSubQueryProps) {
117
+ if (prefix === '.where') {
118
+ return `.where(({exists, not}) => not(exists('${relationship}', q => q${astToZQL(related.subquery)})))`;
119
+ }
120
+ prefix;
121
+ args.add('not');
122
+ args.add('exists');
123
+ return `not(exists('${relationship}', q => q${astToZQL(related.subquery)}))`;
124
+ }
125
+ if (prefix === '.where') {
126
+ return `.where(({exists, not}) => not(exists('${relationship}')))`;
127
+ }
128
+ args.add('not');
129
+ args.add('exists');
130
+ return `not(exists('${relationship}')))`;
131
+ }
132
+ function extractRelationshipName(related) {
133
+ const alias = must(related.subquery.alias);
134
+ return alias.startsWith(SUBQ_PREFIX)
135
+ ? alias.substring(SUBQ_PREFIX.length)
136
+ : alias;
137
+ }
138
+ function transformRelated(related) {
139
+ const { alias } = related.subquery;
140
+ if (!alias)
141
+ return '';
142
+ const relationship = alias;
143
+ let code = `.related('${relationship}'`;
144
+ // If the subquery has additional filters or configurations
145
+ if (related.subquery.where ||
146
+ (related.subquery.related && related.subquery.related.length > 0) ||
147
+ related.subquery.orderBy ||
148
+ related.subquery.limit) {
149
+ code += ', q => q' + astToZQL(related.subquery);
150
+ }
151
+ code += ')';
152
+ return code;
153
+ }
154
+ function transformOrder(orderBy) {
155
+ let code = '';
156
+ for (const [field, direction] of orderBy) {
157
+ code += `.orderBy('${field}', '${direction}')`;
158
+ }
159
+ return code;
160
+ }
161
+ function transformValuePosition(value) {
162
+ switch (value.type) {
163
+ case 'literal':
164
+ return transformLiteral(value);
165
+ case 'column':
166
+ return `'${value.name}'`;
167
+ case 'static':
168
+ return transformParameter(value);
169
+ default:
170
+ unreachable(value);
171
+ }
172
+ }
173
+ function transformLiteral(literal) {
174
+ if (literal.value === null) {
175
+ return 'null';
176
+ }
177
+ if (Array.isArray(literal.value)) {
178
+ return JSON.stringify(literal.value);
179
+ }
180
+ if (typeof literal.value === 'string') {
181
+ return `'${literal.value.replace(/'/g, "\\'")}'`;
182
+ }
183
+ return String(literal.value);
184
+ }
185
+ function transformParameter(param) {
186
+ const fieldStr = Array.isArray(param.field)
187
+ ? `[${param.field.map(f => `'${f}'`).join(', ')}]`
188
+ : `'${param.field}'`;
189
+ return `authParam(${fieldStr})`;
190
+ }
191
+ //# sourceMappingURL=ast-to-zql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-to-zql.js","sourceRoot":"","sources":["../../../../ast-to-zql/src/ast-to-zql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../../../ast-to-zql/src/bin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ /* eslint-disable no-console */
2
+ import * as m from '@rocicorp/logger';
3
+ import { readFile } from 'node:fs/promises';
4
+ import process from 'node:process';
5
+ import { createInterface } from 'node:readline';
6
+ import { format, resolveConfig } from 'prettier';
7
+ import { parseOptions } from "../../shared/src/options.js";
8
+ import * as v from "../../shared/src/valita.js";
9
+ import { loadSchemaAndPermissions } from "../../zero-cache/src/scripts/permissions.js";
10
+ import { mapAST } from "../../zero-protocol/src/ast.js";
11
+ import { serverToClient } from "../../zero-schema/src/name-mapper.js";
12
+ import { astToZQL } from "./ast-to-zql.js";
13
+ const options = {
14
+ schema: {
15
+ type: v.string().optional(),
16
+ desc: [
17
+ 'Path to the schema file. Use this to re-map the AST to client names.',
18
+ ],
19
+ },
20
+ };
21
+ const config = parseOptions(options, process.argv.slice(2));
22
+ const lc = new m.LogContext('debug'); //new m.ConsoleLogger('error');
23
+ let schema;
24
+ if (config.schema) {
25
+ schema = (await loadSchemaAndPermissions(lc, config.schema)).schema;
26
+ }
27
+ function isStdinPiped() {
28
+ return !process.stdin.isTTY;
29
+ }
30
+ function readFromStdin() {
31
+ return new Promise(resolve => {
32
+ let data = '';
33
+ const rl = createInterface({
34
+ input: process.stdin,
35
+ output: process.stdout,
36
+ terminal: false,
37
+ });
38
+ rl.on('line', line => {
39
+ data += line + '\n';
40
+ });
41
+ rl.on('close', () => {
42
+ resolve(data);
43
+ });
44
+ });
45
+ }
46
+ async function formatOutput(content) {
47
+ try {
48
+ const options = (await resolveConfig(new URL(import.meta.url))) ?? {};
49
+ return await format(content, {
50
+ ...options,
51
+ parser: 'typescript',
52
+ semi: false,
53
+ });
54
+ }
55
+ catch (error) {
56
+ console.warn('Warning: Unable to format output with prettier:', error);
57
+ return content;
58
+ }
59
+ }
60
+ async function main() {
61
+ try {
62
+ let input;
63
+ if (isStdinPiped()) {
64
+ input = await readFromStdin();
65
+ }
66
+ else if (process.argv.length > 2) {
67
+ const filePath = process.argv[2];
68
+ input = await readFile(filePath, 'utf-8');
69
+ }
70
+ else {
71
+ console.error('Error: No input provided.');
72
+ console.error('Usage:');
73
+ console.error(` cat ast.json | npx ast-to-zql`);
74
+ console.error(` npx ast-to-zql ast.json`);
75
+ process.exit(1);
76
+ }
77
+ let ast = JSON.parse(input);
78
+ if (schema) {
79
+ const mapper = serverToClient(schema.tables);
80
+ ast = mapAST(ast, mapper);
81
+ }
82
+ const zql = astToZQL(ast);
83
+ const code = `query.${ast.table}${zql}`;
84
+ console.log(await formatOutput(code));
85
+ }
86
+ catch (error) {
87
+ console.error('Error processing input:', error);
88
+ process.exit(1);
89
+ }
90
+ }
91
+ await main();
92
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../../../ast-to-zql/src/bin.ts"],"names":[],"mappings":"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"}
@@ -3101,6 +3101,14 @@ function defined(arr) {
3101
3101
  function areEqual(arr1, arr2) {
3102
3102
  return arr1.length === arr2.length && arr1.every((e, i) => e === arr2[i]);
3103
3103
  }
3104
+ function zip(a1, a2) {
3105
+ assert(a1.length === a2.length);
3106
+ const result = [];
3107
+ for (let i = 0; i < a1.length; i++) {
3108
+ result.push([a1[i], a2[i]]);
3109
+ }
3110
+ return result;
3111
+ }
3104
3112
 
3105
3113
  // ../shared/src/json-schema.ts
3106
3114
  import * as valita from "@badrap/valita";
@@ -6441,6 +6449,7 @@ export {
6441
6449
  setClient,
6442
6450
  setClients,
6443
6451
  h64,
6452
+ zip,
6444
6453
  rowSchema,
6445
6454
  toStaticParam,
6446
6455
  astSchema,
@@ -6469,4 +6478,4 @@ export {
6469
6478
  toPrimaryKeyString,
6470
6479
  sourceNameFromKey
6471
6480
  };
6472
- //# sourceMappingURL=chunk-KRZMF5WQ.js.map
6481
+ //# sourceMappingURL=chunk-DSUPSGE4.js.map