@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.
- package/out/{zql/src/query → ast-to-zql/src}/ast-to-zql.d.ts +1 -1
- package/out/ast-to-zql/src/ast-to-zql.d.ts.map +1 -0
- package/out/ast-to-zql/src/ast-to-zql.js +191 -0
- package/out/ast-to-zql/src/ast-to-zql.js.map +1 -0
- package/out/ast-to-zql/src/bin.d.ts +2 -0
- package/out/ast-to-zql/src/bin.d.ts.map +1 -0
- package/out/ast-to-zql/src/bin.js +92 -0
- package/out/ast-to-zql/src/bin.js.map +1 -0
- package/out/{chunk-KRZMF5WQ.js → chunk-DSUPSGE4.js} +10 -1
- package/out/{chunk-KRZMF5WQ.js.map → chunk-DSUPSGE4.js.map} +2 -2
- package/out/{chunk-AX7YNDMI.js → chunk-YAABAEJV.js} +163 -47
- package/out/{chunk-AX7YNDMI.js.map → chunk-YAABAEJV.js.map} +4 -4
- package/out/{inspector-SVHRQAQN.js → inspector-ROITQB3J.js} +164 -171
- package/out/inspector-ROITQB3J.js.map +7 -0
- package/out/shared/src/arrays.d.ts +2 -0
- package/out/shared/src/arrays.d.ts.map +1 -1
- package/out/shared/src/arrays.js +22 -0
- package/out/shared/src/arrays.js.map +1 -1
- package/out/solid.js +2 -2
- package/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js +1 -8
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/zero/src/ast-to-zql.d.ts +3 -0
- package/out/zero/src/ast-to-zql.d.ts.map +1 -0
- package/out/zero/src/ast-to-zql.js +3 -0
- package/out/zero/src/ast-to-zql.js.map +1 -0
- package/out/zero-cache/src/auth/jwt.js +3 -2
- package/out/zero-cache/src/auth/jwt.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +5 -0
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +8 -0
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/server/multi/config.d.ts +5 -0
- package/out/zero-cache/src/server/multi/config.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +1 -1
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +18 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +25 -12
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts +5 -4
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +97 -13
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.js +6 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +5 -4
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +9 -7
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +16 -7
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +16 -3
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/streams.d.ts.map +1 -1
- package/out/zero-cache/src/types/streams.js +11 -15
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts +1 -0
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +16 -5
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js +2 -2
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
- package/out/zero-client/src/client/custom.d.ts +13 -3
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.d.ts +21 -0
- package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -0
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-protocol/src/down.d.ts +42 -1
- package/out/zero-protocol/src/down.d.ts.map +1 -1
- package/out/zero-protocol/src/down.js +2 -1
- package/out/zero-protocol/src/down.js.map +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts +1 -1
- package/out/zero-protocol/src/protocol-version.js +1 -1
- package/out/zero-protocol/src/push.d.ts +88 -4
- package/out/zero-protocol/src/push.d.ts.map +1 -1
- package/out/zero-protocol/src/push.js +22 -3
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero.js +2 -2
- package/package.json +4 -3
- package/out/inspector-SVHRQAQN.js.map +0 -7
- package/out/zql/src/query/ast-to-zql.d.ts.map +0 -1
|
@@ -65,6 +65,47 @@ export declare const downstreamSchema: v.UnionType<[v.TupleType<[v.Type<"connect
|
|
|
65
65
|
}, undefined>]>, v.TupleType<[v.Type<"deleteClients">, v.UnionType<[v.ObjectType<Readonly<{
|
|
66
66
|
clientIDs: v.Optional<readonly string[]>;
|
|
67
67
|
clientGroupIDs: v.Optional<readonly string[]>;
|
|
68
|
-
}>, undefined>]>]
|
|
68
|
+
}>, undefined>]>]>, v.TupleType<[v.Type<"push-response">, v.UnionType<[v.ObjectType<{
|
|
69
|
+
mutations: v.ArrayType<v.ObjectType<{
|
|
70
|
+
id: v.ObjectType<{
|
|
71
|
+
id: v.Type<number>;
|
|
72
|
+
clientID: v.Type<string>;
|
|
73
|
+
}, undefined>;
|
|
74
|
+
result: v.UnionType<[v.ObjectType<{}, undefined>, v.UnionType<[v.ObjectType<{
|
|
75
|
+
error: v.Type<"app">;
|
|
76
|
+
}, undefined>, v.ObjectType<{
|
|
77
|
+
error: v.Type<"ooo-mutation">;
|
|
78
|
+
}, undefined>, v.ObjectType<{
|
|
79
|
+
error: v.Type<"token">;
|
|
80
|
+
}, undefined>]>]>;
|
|
81
|
+
}, undefined>>;
|
|
82
|
+
}, undefined>, v.UnionType<[v.ObjectType<{
|
|
83
|
+
error: v.Type<"unsupported-push-version">;
|
|
84
|
+
mutationIDs: v.Optional<{
|
|
85
|
+
id: number;
|
|
86
|
+
clientID: string;
|
|
87
|
+
}[]>;
|
|
88
|
+
}, undefined>, v.ObjectType<{
|
|
89
|
+
error: v.Type<"unsupported-schema-version">;
|
|
90
|
+
mutationIDs: v.Optional<{
|
|
91
|
+
id: number;
|
|
92
|
+
clientID: string;
|
|
93
|
+
}[]>;
|
|
94
|
+
}, undefined>, v.ObjectType<{
|
|
95
|
+
error: v.Type<"http">;
|
|
96
|
+
status: v.Type<number>;
|
|
97
|
+
details: v.Type<string>;
|
|
98
|
+
mutationIDs: v.Optional<{
|
|
99
|
+
id: number;
|
|
100
|
+
clientID: string;
|
|
101
|
+
}[]>;
|
|
102
|
+
}, undefined>, v.ObjectType<{
|
|
103
|
+
error: v.Type<"zero-pusher">;
|
|
104
|
+
details: v.Type<string>;
|
|
105
|
+
mutationIDs: v.Optional<{
|
|
106
|
+
id: number;
|
|
107
|
+
clientID: string;
|
|
108
|
+
}[]>;
|
|
109
|
+
}, undefined>]>]>]>]>;
|
|
69
110
|
export type Downstream = v.Infer<typeof downstreamSchema>;
|
|
70
111
|
//# sourceMappingURL=down.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/down.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/down.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAchD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAW5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { errorMessageSchema } from "./error.js";
|
|
|
5
5
|
import { pokeEndMessageSchema, pokePartMessageSchema, pokeStartMessageSchema, } from "./poke.js";
|
|
6
6
|
import { pongMessageSchema } from "./pong.js";
|
|
7
7
|
import { pullResponseMessageSchema } from "./pull.js";
|
|
8
|
+
import { pushResponseMessageSchema } from "./push.js";
|
|
8
9
|
import { warmMessageSchema } from "./warm.js";
|
|
9
|
-
export const downstreamSchema = v.union(connectedMessageSchema, warmMessageSchema, errorMessageSchema, pongMessageSchema, pokeStartMessageSchema, pokePartMessageSchema, pokeEndMessageSchema, pullResponseMessageSchema, deleteClientsMessageSchema);
|
|
10
|
+
export const downstreamSchema = v.union(connectedMessageSchema, warmMessageSchema, errorMessageSchema, pongMessageSchema, pokeStartMessageSchema, pokePartMessageSchema, pokeEndMessageSchema, pullResponseMessageSchema, deleteClientsMessageSchema, pushResponseMessageSchema);
|
|
10
11
|
//# sourceMappingURL=down.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down.js","sourceRoot":"","sources":["../../../../zero-protocol/src/down.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAC,sBAAsB,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAAC,0BAA0B,EAAC,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAC,yBAAyB,EAAC,MAAM,WAAW,CAAC;AACpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAE5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CACrC,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"down.js","sourceRoot":"","sources":["../../../../zero-protocol/src/down.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAC,sBAAsB,EAAC,MAAM,cAAc,CAAC;AACpD,OAAO,EAAC,0BAA0B,EAAC,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAC,yBAAyB,EAAC,MAAM,WAAW,CAAC;AACpD,OAAO,EAAC,yBAAyB,EAAC,MAAM,WAAW,CAAC;AACpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAE5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CACrC,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,CAC1B,CAAC"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* release. The server (`zero-cache`) must be deployed before clients start
|
|
11
11
|
* running the new code.
|
|
12
12
|
*/
|
|
13
|
-
export declare const PROTOCOL_VERSION =
|
|
13
|
+
export declare const PROTOCOL_VERSION = 9;
|
|
14
14
|
/**
|
|
15
15
|
* The minimum server-supported sync protocol version (i.e. the version
|
|
16
16
|
* declared in the "/sync/v{#}/connect" URL). The contract for
|
|
@@ -16,7 +16,7 @@ import { assert } from "../../shared/src/asserts.js";
|
|
|
16
16
|
// -- Version 6 makes `pokeStart.cookie` optional. (0.16)
|
|
17
17
|
// -- Version 7 introduces the initConnection.clientSchema field. (0.17)
|
|
18
18
|
// -- Version 8 drops support for Version 5 (0.18).
|
|
19
|
-
export const PROTOCOL_VERSION =
|
|
19
|
+
export const PROTOCOL_VERSION = 9;
|
|
20
20
|
/**
|
|
21
21
|
* The minimum server-supported sync protocol version (i.e. the version
|
|
22
22
|
* declared in the "/sync/v{#}/connect" URL). The contract for
|
|
@@ -252,10 +252,18 @@ declare const mutationIDSchema: v.ObjectType<{
|
|
|
252
252
|
declare const mutationOkSchema: v.ObjectType<{}, undefined>;
|
|
253
253
|
declare const mutationErrorSchema: v.UnionType<[v.ObjectType<{
|
|
254
254
|
error: v.Type<"app">;
|
|
255
|
-
details: v.Type<string>;
|
|
256
255
|
}, undefined>, v.ObjectType<{
|
|
257
256
|
error: v.Type<"ooo-mutation">;
|
|
257
|
+
}, undefined>, v.ObjectType<{
|
|
258
|
+
error: v.Type<"token">;
|
|
258
259
|
}, undefined>]>;
|
|
260
|
+
declare const mutationResultSchema: v.UnionType<[v.ObjectType<{}, undefined>, v.UnionType<[v.ObjectType<{
|
|
261
|
+
error: v.Type<"app">;
|
|
262
|
+
}, undefined>, v.ObjectType<{
|
|
263
|
+
error: v.Type<"ooo-mutation">;
|
|
264
|
+
}, undefined>, v.ObjectType<{
|
|
265
|
+
error: v.Type<"token">;
|
|
266
|
+
}, undefined>]>]>;
|
|
259
267
|
declare const mutationResponseSchema: v.ObjectType<{
|
|
260
268
|
id: v.ObjectType<{
|
|
261
269
|
id: v.Type<number>;
|
|
@@ -263,9 +271,10 @@ declare const mutationResponseSchema: v.ObjectType<{
|
|
|
263
271
|
}, undefined>;
|
|
264
272
|
result: v.UnionType<[v.ObjectType<{}, undefined>, v.UnionType<[v.ObjectType<{
|
|
265
273
|
error: v.Type<"app">;
|
|
266
|
-
details: v.Type<string>;
|
|
267
274
|
}, undefined>, v.ObjectType<{
|
|
268
275
|
error: v.Type<"ooo-mutation">;
|
|
276
|
+
}, undefined>, v.ObjectType<{
|
|
277
|
+
error: v.Type<"token">;
|
|
269
278
|
}, undefined>]>]>;
|
|
270
279
|
}, undefined>;
|
|
271
280
|
declare const pushOkSchema: v.ObjectType<{
|
|
@@ -276,9 +285,10 @@ declare const pushOkSchema: v.ObjectType<{
|
|
|
276
285
|
}, undefined>;
|
|
277
286
|
result: v.UnionType<[v.ObjectType<{}, undefined>, v.UnionType<[v.ObjectType<{
|
|
278
287
|
error: v.Type<"app">;
|
|
279
|
-
details: v.Type<string>;
|
|
280
288
|
}, undefined>, v.ObjectType<{
|
|
281
289
|
error: v.Type<"ooo-mutation">;
|
|
290
|
+
}, undefined>, v.ObjectType<{
|
|
291
|
+
error: v.Type<"token">;
|
|
282
292
|
}, undefined>]>]>;
|
|
283
293
|
}, undefined>>;
|
|
284
294
|
}, undefined>;
|
|
@@ -294,6 +304,21 @@ declare const pushErrorSchema: v.UnionType<[v.ObjectType<{
|
|
|
294
304
|
id: number;
|
|
295
305
|
clientID: string;
|
|
296
306
|
}[]>;
|
|
307
|
+
}, undefined>, v.ObjectType<{
|
|
308
|
+
error: v.Type<"http">;
|
|
309
|
+
status: v.Type<number>;
|
|
310
|
+
details: v.Type<string>;
|
|
311
|
+
mutationIDs: v.Optional<{
|
|
312
|
+
id: number;
|
|
313
|
+
clientID: string;
|
|
314
|
+
}[]>;
|
|
315
|
+
}, undefined>, v.ObjectType<{
|
|
316
|
+
error: v.Type<"zero-pusher">;
|
|
317
|
+
details: v.Type<string>;
|
|
318
|
+
mutationIDs: v.Optional<{
|
|
319
|
+
id: number;
|
|
320
|
+
clientID: string;
|
|
321
|
+
}[]>;
|
|
297
322
|
}, undefined>]>;
|
|
298
323
|
export declare const pushResponseSchema: v.UnionType<[v.ObjectType<{
|
|
299
324
|
mutations: v.ArrayType<v.ObjectType<{
|
|
@@ -303,9 +328,10 @@ export declare const pushResponseSchema: v.UnionType<[v.ObjectType<{
|
|
|
303
328
|
}, undefined>;
|
|
304
329
|
result: v.UnionType<[v.ObjectType<{}, undefined>, v.UnionType<[v.ObjectType<{
|
|
305
330
|
error: v.Type<"app">;
|
|
306
|
-
details: v.Type<string>;
|
|
307
331
|
}, undefined>, v.ObjectType<{
|
|
308
332
|
error: v.Type<"ooo-mutation">;
|
|
333
|
+
}, undefined>, v.ObjectType<{
|
|
334
|
+
error: v.Type<"token">;
|
|
309
335
|
}, undefined>]>]>;
|
|
310
336
|
}, undefined>>;
|
|
311
337
|
}, undefined>, v.UnionType<[v.ObjectType<{
|
|
@@ -320,7 +346,64 @@ export declare const pushResponseSchema: v.UnionType<[v.ObjectType<{
|
|
|
320
346
|
id: number;
|
|
321
347
|
clientID: string;
|
|
322
348
|
}[]>;
|
|
349
|
+
}, undefined>, v.ObjectType<{
|
|
350
|
+
error: v.Type<"http">;
|
|
351
|
+
status: v.Type<number>;
|
|
352
|
+
details: v.Type<string>;
|
|
353
|
+
mutationIDs: v.Optional<{
|
|
354
|
+
id: number;
|
|
355
|
+
clientID: string;
|
|
356
|
+
}[]>;
|
|
357
|
+
}, undefined>, v.ObjectType<{
|
|
358
|
+
error: v.Type<"zero-pusher">;
|
|
359
|
+
details: v.Type<string>;
|
|
360
|
+
mutationIDs: v.Optional<{
|
|
361
|
+
id: number;
|
|
362
|
+
clientID: string;
|
|
363
|
+
}[]>;
|
|
323
364
|
}, undefined>]>]>;
|
|
365
|
+
export declare const pushResponseMessageSchema: v.TupleType<[v.Type<"push-response">, v.UnionType<[v.ObjectType<{
|
|
366
|
+
mutations: v.ArrayType<v.ObjectType<{
|
|
367
|
+
id: v.ObjectType<{
|
|
368
|
+
id: v.Type<number>;
|
|
369
|
+
clientID: v.Type<string>;
|
|
370
|
+
}, undefined>;
|
|
371
|
+
result: v.UnionType<[v.ObjectType<{}, undefined>, v.UnionType<[v.ObjectType<{
|
|
372
|
+
error: v.Type<"app">;
|
|
373
|
+
}, undefined>, v.ObjectType<{
|
|
374
|
+
error: v.Type<"ooo-mutation">;
|
|
375
|
+
}, undefined>, v.ObjectType<{
|
|
376
|
+
error: v.Type<"token">;
|
|
377
|
+
}, undefined>]>]>;
|
|
378
|
+
}, undefined>>;
|
|
379
|
+
}, undefined>, v.UnionType<[v.ObjectType<{
|
|
380
|
+
error: v.Type<"unsupported-push-version">;
|
|
381
|
+
mutationIDs: v.Optional<{
|
|
382
|
+
id: number;
|
|
383
|
+
clientID: string;
|
|
384
|
+
}[]>;
|
|
385
|
+
}, undefined>, v.ObjectType<{
|
|
386
|
+
error: v.Type<"unsupported-schema-version">;
|
|
387
|
+
mutationIDs: v.Optional<{
|
|
388
|
+
id: number;
|
|
389
|
+
clientID: string;
|
|
390
|
+
}[]>;
|
|
391
|
+
}, undefined>, v.ObjectType<{
|
|
392
|
+
error: v.Type<"http">;
|
|
393
|
+
status: v.Type<number>;
|
|
394
|
+
details: v.Type<string>;
|
|
395
|
+
mutationIDs: v.Optional<{
|
|
396
|
+
id: number;
|
|
397
|
+
clientID: string;
|
|
398
|
+
}[]>;
|
|
399
|
+
}, undefined>, v.ObjectType<{
|
|
400
|
+
error: v.Type<"zero-pusher">;
|
|
401
|
+
details: v.Type<string>;
|
|
402
|
+
mutationIDs: v.Optional<{
|
|
403
|
+
id: number;
|
|
404
|
+
clientID: string;
|
|
405
|
+
}[]>;
|
|
406
|
+
}, undefined>]>]>]>;
|
|
324
407
|
export type InsertOp = v.Infer<typeof insertOpSchema>;
|
|
325
408
|
export type UpsertOp = v.Infer<typeof upsertOpSchema>;
|
|
326
409
|
export type UpdateOp = v.Infer<typeof updateOpSchema>;
|
|
@@ -340,6 +423,7 @@ export type MutationError = v.Infer<typeof mutationErrorSchema>;
|
|
|
340
423
|
export type PushError = v.Infer<typeof pushErrorSchema>;
|
|
341
424
|
export type PushOk = v.Infer<typeof pushOkSchema>;
|
|
342
425
|
export type MutationID = v.Infer<typeof mutationIDSchema>;
|
|
426
|
+
export type MutationResult = v.Infer<typeof mutationResultSchema>;
|
|
343
427
|
export declare function mapCRUD(arg: CRUDMutationArg, map: NameMapper): CRUDMutationArg;
|
|
344
428
|
export {};
|
|
345
429
|
//# sourceMappingURL=push.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/push.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sCAAsC,CAAC;AAKrE,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C;;GAEG;AACH,QAAA,MAAM,cAAc;;;;;aAKlB,CAAC;AAEH;;;GAGG;AACH,QAAA,MAAM,cAAc;;;;;aAKlB,CAAC;AAEH;;GAEG;AACH,QAAA,MAAM,cAAc;;;;;aAMlB,CAAC;AAEH;;GAEG;AACH,QAAA,MAAM,cAAc;;;;;aAMlB,CAAC;AAEH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;eAKjB,CAAC;AAEF,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;aAEjB,CAAC;AAIH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAO7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;aAO/B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAAoD,CAAC;AAEhF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAUzB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../../zero-protocol/src/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,13 +83,17 @@ const mutationIDSchema = v.object({
|
|
|
83
83
|
});
|
|
84
84
|
const appErrorSchema = v.object({
|
|
85
85
|
error: v.literal('app'),
|
|
86
|
-
|
|
86
|
+
// the user can add any additional fields in their API server
|
|
87
87
|
});
|
|
88
88
|
const zeroErrorSchema = v.object({
|
|
89
89
|
error: v.literal('ooo-mutation'),
|
|
90
90
|
});
|
|
91
|
+
const tokenErrorSchema = v.object({
|
|
92
|
+
error: v.literal('token'),
|
|
93
|
+
// the user can add any additional fields in their API server
|
|
94
|
+
});
|
|
91
95
|
const mutationOkSchema = v.object({});
|
|
92
|
-
const mutationErrorSchema = v.union(appErrorSchema, zeroErrorSchema);
|
|
96
|
+
const mutationErrorSchema = v.union(appErrorSchema, zeroErrorSchema, tokenErrorSchema);
|
|
93
97
|
const mutationResultSchema = v.union(mutationOkSchema, mutationErrorSchema);
|
|
94
98
|
const mutationResponseSchema = v.object({
|
|
95
99
|
id: mutationIDSchema,
|
|
@@ -112,8 +116,23 @@ const unsupportedSchemaVersionSchema = v.object({
|
|
|
112
116
|
// were not processed by the server.
|
|
113
117
|
mutationIDs: v.array(mutationIDSchema).optional(),
|
|
114
118
|
});
|
|
115
|
-
const
|
|
119
|
+
const httpErrorSchema = v.object({
|
|
120
|
+
error: v.literal('http'),
|
|
121
|
+
status: v.number(),
|
|
122
|
+
details: v.string(),
|
|
123
|
+
mutationIDs: v.array(mutationIDSchema).optional(),
|
|
124
|
+
});
|
|
125
|
+
const zeroPusherErrorSchema = v.object({
|
|
126
|
+
error: v.literal('zero-pusher'),
|
|
127
|
+
details: v.string(),
|
|
128
|
+
mutationIDs: v.array(mutationIDSchema).optional(),
|
|
129
|
+
});
|
|
130
|
+
const pushErrorSchema = v.union(unsupportedPushVersionSchema, unsupportedSchemaVersionSchema, httpErrorSchema, zeroPusherErrorSchema);
|
|
116
131
|
export const pushResponseSchema = v.union(pushOkSchema, pushErrorSchema);
|
|
132
|
+
export const pushResponseMessageSchema = v.tuple([
|
|
133
|
+
v.literal('push-response'),
|
|
134
|
+
pushResponseSchema,
|
|
135
|
+
]);
|
|
117
136
|
export function mapCRUD(arg, map) {
|
|
118
137
|
return {
|
|
119
138
|
ops: arg.ops.map(({ op, tableName, primaryKey, value }) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../zero-protocol/src/push.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../zero-protocol/src/push.ts"],"names":[],"mappings":"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"}
|
package/out/zero.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rocicorp/zero",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.2025032400",
|
|
4
4
|
"description": "Zero is a web framework for serverless web development.",
|
|
5
5
|
"author": "Rocicorp, Inc.",
|
|
6
6
|
"repository": {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"scripts": {
|
|
17
17
|
"build": "rm -rf out && npm run build-server && npm run build-client",
|
|
18
18
|
"build-client": "tsc -p tsconfig.client.json && tsc-alias -p tsconfig.client.json && npx tsx tool/build.js",
|
|
19
|
-
"build-server": "tsc -p tsconfig.server.json && tsc-alias -p tsconfig.server.json && chmod +x out/zero/src/cli.js out/zero/src/build-schema.js out/zero/src/deploy-permissions.js out/zero/src/zero-cache-dev.js",
|
|
19
|
+
"build-server": "tsc -p tsconfig.server.json && tsc-alias -p tsconfig.server.json && chmod +x out/zero/src/cli.js out/zero/src/build-schema.js out/zero/src/deploy-permissions.js out/zero/src/zero-cache-dev.js out/zero/src/ast-to-zql.js",
|
|
20
20
|
"check-types": "tsc",
|
|
21
21
|
"check-types:watch": "tsc --watch",
|
|
22
22
|
"format": "prettier --write .",
|
|
@@ -111,7 +111,8 @@
|
|
|
111
111
|
"zero-build-schema": "./out/zero/src/build-schema.js",
|
|
112
112
|
"zero-cache": "./out/zero/src/cli.js",
|
|
113
113
|
"zero-cache-dev": "./out/zero/src/zero-cache-dev.js",
|
|
114
|
-
"zero-deploy-permissions": "./out/zero/src/deploy-permissions.js"
|
|
114
|
+
"zero-deploy-permissions": "./out/zero/src/deploy-permissions.js",
|
|
115
|
+
"ast-to-zql": "./out/zero/src/ast-to-zql.js"
|
|
115
116
|
},
|
|
116
117
|
"engines": {
|
|
117
118
|
"node": ">=20"
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../z2s/src/sql.ts", "../../z2s/src/compiler.ts", "../../zql/src/query/ast-to-zql.ts", "../../zero-client/src/client/inspector/inspector.ts"],
|
|
4
|
-
"sourcesContent": ["import type {SQLQuery, FormatConfig} from '@databases/sql';\nimport baseSql from '@databases/sql';\nimport {\n escapePostgresIdentifier,\n escapeSQLiteIdentifier,\n} from '@databases/escape-identifier';\n\nconst pgFormat: FormatConfig = {\n escapeIdentifier: str => escapePostgresIdentifier(str),\n formatValue: (value, index) => ({placeholder: `$${index + 1}`, value}),\n};\n\nconst sqliteFormat: FormatConfig = {\n escapeIdentifier: str => escapeSQLiteIdentifier(str),\n formatValue: value => ({placeholder: '?', value}),\n};\n\nexport function formatPg(sql: SQLQuery) {\n return sql.format(pgFormat);\n}\n\nexport function formatSqlite(sql: SQLQuery) {\n return sql.format(sqliteFormat);\n}\n\nexport const sql = baseSql.default;\n", "import {assert} from '../../shared/src/asserts.ts';\nimport {must} from '../../shared/src/must.ts';\nimport type {\n CorrelatedSubqueryCondition,\n Correlation,\n Ordering,\n ValuePosition,\n} from '../../zero-protocol/src/ast.ts';\nimport {\n type AST,\n type Condition,\n type CorrelatedSubquery,\n type SimpleCondition,\n} from '../../zero-protocol/src/ast.ts';\nimport {clientToServer, NameMapper} from '../../zero-schema/src/name-mapper.ts';\nimport type {TableSchema} from '../../zero-schema/src/table-schema.ts';\nimport type {Format} from '../../zql/src/ivm/view.ts';\nimport {sql} from './sql.ts';\nimport type {SQLQuery} from '@databases/sql';\n\ntype Tables = Record<string, TableSchema>;\n\n/**\n * Compiles to the Postgres dialect of SQL\n * - IS, IS NOT can only compare against `NULL`, `TRUE`, `FALSE` so use\n * `IS DISTINCT FROM` and `IS NOT DISTINCT FROM` instead\n * - IN is changed to ANY to allow binding array literals\n * - subqueries are aggregated using PG's `array_agg` and `row_to_json` functions\n */\nexport function compile(ast: AST, tables: Tables, format?: Format | undefined) {\n const compiler = new Compiler(tables);\n return compiler.compile(ast, format);\n}\n\nexport class Compiler {\n readonly #tables: Tables;\n readonly #nameMapper: NameMapper;\n\n constructor(tables: Tables) {\n this.#tables = tables;\n this.#nameMapper = clientToServer(tables);\n }\n\n compile(ast: AST, format?: Format | undefined) {\n return this.select(ast, format, undefined);\n }\n\n select(\n ast: AST,\n // Is this a singular or plural query?\n format: Format | undefined,\n // If a select is being used as a subquery, this is the correlation to the parent query\n correlation: SQLQuery | undefined,\n ) {\n const selectionSet = this.related(ast.related ?? [], format, ast.table);\n const table = this.#tables[ast.table];\n for (const column of Object.keys(table.columns)) {\n selectionSet.push(\n sql`${sql.ident(ast.table)}.${this.#mapColumn(ast.table, column)}`,\n );\n }\n return sql`SELECT ${sql.join(selectionSet, ',')} FROM ${this.#mapTable(\n ast.table,\n )} ${ast.where ? sql`WHERE ${this.where(ast.where, ast.table)}` : sql``} ${\n correlation\n ? sql`${ast.where ? sql`AND` : sql`WHERE`} (${correlation})`\n : sql``\n } ${this.orderBy(ast.orderBy, ast.table)} ${\n format?.singular ? this.limit(1) : this.limit(ast.limit)\n }`;\n }\n\n orderBy(orderBy: Ordering | undefined, table: string): SQLQuery {\n if (!orderBy) {\n return sql``;\n }\n return sql`ORDER BY ${sql.join(\n orderBy.map(([col, dir]) =>\n dir === 'asc'\n ? // Oh postgres. The table must be referred to be client name but the column by server name.\n // E.g., `SELECT server_col as client_col FROM server_table as client_table ORDER BY client_Table.server_col`\n sql`${sql.ident(table)}.${this.#mapColumnNoAlias(table, col)} ASC`\n : sql`${sql.ident(table)}.${this.#mapColumnNoAlias(table, col)} DESC`,\n ),\n ', ',\n )}`;\n }\n\n limit(limit: number | undefined): SQLQuery {\n if (!limit) {\n return sql``;\n }\n return sql`LIMIT ${sql.value(limit)}`;\n }\n\n related(\n relationships: readonly CorrelatedSubquery[],\n format: Format | undefined,\n parentTable: string,\n ): SQLQuery[] {\n return relationships.map(relationship =>\n this.relationshipSubquery(\n relationship,\n format?.relationships[must(relationship.subquery.alias)],\n parentTable,\n ),\n );\n }\n\n relationshipSubquery(\n relationship: CorrelatedSubquery,\n format: Format | undefined,\n parentTable: string,\n ) {\n if (relationship.hidden) {\n const [join, lastAlias, lastLimit, lastTable] =\n this.makeJunctionJoin(relationship);\n const lastClientColumns = Object.keys(this.#tables[lastTable].columns);\n /**\n * This aggregates the relationship subquery into an array of objects.\n * This looks roughly like:\n *\n * SELECT COALESCE(array_agg(row_to_json(\"inner_table\")) , ARRAY[]::json[]) FROM\n * (SELECT inner.col as client_col, inner.col2 as client_col2 FROM table) inner_table;\n */\n return sql`(\n SELECT ${\n format?.singular ? sql`` : sql`COALESCE(array_agg`\n }(row_to_json(${sql.ident(`inner_${relationship.subquery.alias}`)})) ${\n format?.singular ? sql`` : sql`, ARRAY[]::json[])`\n } FROM (SELECT ${sql.join(\n lastClientColumns.map(\n c => sql`${sql.ident(lastAlias)}.${this.#mapColumn(lastTable, c)}`,\n ),\n ',',\n )} FROM ${join} WHERE (${this.correlate(\n parentTable,\n parentTable,\n relationship.correlation.parentField,\n relationship.subquery.table,\n relationship.subquery.table,\n relationship.correlation.childField,\n )}) ${\n relationship.subquery.where\n ? sql`AND ${this.where(\n relationship.subquery.where,\n relationship.subquery.table,\n )}`\n : sql``\n } ${this.orderBy(\n relationship.subquery.orderBy,\n relationship.subquery.table,\n )} ${\n format?.singular ? this.limit(1) : this.limit(lastLimit)\n } ) ${sql.ident(`inner_${relationship.subquery.alias}`)}\n ) as ${sql.ident(relationship.subquery.alias)}`;\n }\n return sql`(\n SELECT ${\n format?.singular ? sql`` : sql`COALESCE(array_agg`\n }(row_to_json(${sql.ident(`inner_${relationship.subquery.alias}`)})) ${\n format?.singular ? sql`` : sql`, ARRAY[]::json[])`\n } FROM (${this.select(\n relationship.subquery,\n format,\n this.correlate(\n parentTable,\n parentTable,\n relationship.correlation.parentField,\n relationship.subquery.table,\n relationship.subquery.table,\n relationship.correlation.childField,\n ),\n )}) ${sql.ident(`inner_${relationship.subquery.alias}`)}\n ) as ${sql.ident(relationship.subquery.alias)}`;\n }\n\n pullTablesForJunction(\n relationship: CorrelatedSubquery,\n tables: [string, Correlation, number | undefined][] = [],\n ) {\n tables.push([\n relationship.subquery.table,\n relationship.correlation,\n relationship.subquery.limit,\n ]);\n assert(\n relationship.subquery.related?.length || 0 <= 1,\n 'Too many related tables for a junction edge',\n );\n for (const subRelationship of relationship.subquery.related ?? []) {\n this.pullTablesForJunction(subRelationship, tables);\n }\n return tables;\n }\n\n makeJunctionJoin(\n relationship: CorrelatedSubquery,\n ): [\n join: SQLQuery,\n lastAlis: string,\n lastLimit: number | undefined,\n lastTable: string,\n ] {\n const participatingTables = this.pullTablesForJunction(relationship);\n const joins: SQLQuery[] = [];\n\n function alias(index: number) {\n if (index === 0) {\n return participatingTables[0][0];\n }\n return `table_${index}`;\n }\n\n for (const [table, _correlation] of participatingTables) {\n if (joins.length === 0) {\n joins.push(this.#mapTable(table));\n continue;\n }\n joins.push(\n sql` JOIN ${this.#mapTableNoAlias(table)} as ${sql.ident(\n alias(joins.length),\n )} ON ${this.correlate(\n participatingTables[joins.length - 1][0],\n alias(joins.length - 1),\n participatingTables[joins.length][1].parentField,\n participatingTables[joins.length][0],\n alias(joins.length),\n participatingTables[joins.length][1].childField,\n )}`,\n );\n }\n\n return [\n sql.join(joins, ''),\n alias(joins.length - 1),\n participatingTables[participatingTables.length - 1][2],\n participatingTables[participatingTables.length - 1][0],\n ] as const;\n }\n\n where(condition: Condition | undefined, table: string): SQLQuery {\n if (!condition) {\n return sql``;\n }\n\n switch (condition.type) {\n case 'and':\n return sql`(${sql.join(\n condition.conditions.map(c => this.where(c, table)),\n ' AND ',\n )})`;\n case 'or':\n return sql`(${sql.join(\n condition.conditions.map(c => this.where(c, table)),\n ' OR ',\n )})`;\n case 'correlatedSubquery':\n return this.exists(condition, table);\n case 'simple':\n return this.simple(condition, table);\n }\n }\n\n simple(condition: SimpleCondition, table: string): SQLQuery {\n switch (condition.op) {\n case '!=':\n case '<':\n case '<=':\n case '=':\n case '>':\n case '>=':\n case 'ILIKE':\n case 'LIKE':\n case 'NOT ILIKE':\n case 'NOT LIKE':\n return sql`${this.valuePosition(\n condition.left,\n table,\n )} ${sql.__dangerous__rawValue(condition.op)} ${this.valuePosition(\n condition.right,\n table,\n )}`;\n case 'NOT IN':\n case 'IN':\n return this.any(condition, table);\n case 'IS':\n case 'IS NOT':\n return this.distinctFrom(condition, table);\n }\n }\n\n distinctFrom(condition: SimpleCondition, table: string): SQLQuery {\n return sql`${this.valuePosition(condition.left, table)} ${\n condition.op === 'IS' ? sql`IS NOT DISTINCT FROM` : sql`IS DISTINCT FROM`\n } ${this.valuePosition(condition.right, table)}`;\n }\n\n any(condition: SimpleCondition, table: string): SQLQuery {\n return sql`${this.valuePosition(condition.left, table)} ${\n condition.op === 'IN' ? sql`= ANY` : sql`!= ANY`\n } (${this.valuePosition(condition.right, table)})`;\n }\n\n valuePosition(value: ValuePosition, table: string): SQLQuery {\n switch (value.type) {\n case 'column':\n return this.#mapColumnNoAlias(table, value.name);\n case 'literal':\n return sql.value(value.value);\n case 'static':\n throw new Error(\n 'Static parameters must be bound to a value before compiling to SQL',\n );\n }\n }\n\n exists(\n condition: CorrelatedSubqueryCondition,\n parentTable: string,\n ): SQLQuery {\n switch (condition.op) {\n case 'EXISTS':\n return sql`EXISTS (${this.select(\n condition.related.subquery,\n undefined,\n this.correlate(\n parentTable,\n parentTable,\n condition.related.correlation.parentField,\n condition.related.subquery.table,\n condition.related.subquery.table,\n condition.related.correlation.childField,\n ),\n )})`;\n case 'NOT EXISTS':\n return sql`NOT EXISTS (${this.select(\n condition.related.subquery,\n undefined,\n undefined,\n )})`;\n }\n }\n\n correlate(\n // The table being correlated could be aliased to some other name\n // in the case of a junction. Hence we pass `xTableAlias`. The original\n // name of the table is required so we can look up the server names of the columns\n // to be used in the correlation.\n parentTable: string,\n parentTableAlias: string,\n parentColumns: readonly string[],\n childTable: string,\n childTableAlias: string,\n childColumns: readonly string[],\n ) {\n return sql.join(\n zip(parentColumns, childColumns).map(\n ([parentColumn, childColumn]) =>\n sql`${sql.ident(parentTableAlias)}.${this.#mapColumnNoAlias(\n parentTable,\n parentColumn,\n )} = ${sql.ident(childTableAlias)}.${this.#mapColumnNoAlias(\n childTable,\n childColumn,\n )}`,\n ),\n ' AND ',\n );\n }\n\n #mapColumn(table: string, column: string) {\n const mapped = this.#nameMapper.columnName(table, column);\n if (mapped === column) {\n return sql.ident(column);\n }\n\n return sql`${sql.ident(mapped)} as ${sql.ident(column)}`;\n }\n\n #mapColumnNoAlias(table: string, column: string) {\n const mapped = this.#nameMapper.columnName(table, column);\n return sql.ident(mapped);\n }\n\n #mapTable(table: string) {\n const mapped = this.#nameMapper.tableName(table);\n if (mapped === table) {\n return sql.ident(table);\n }\n\n return sql`${sql.ident(mapped)} as ${sql.ident(table)}`;\n }\n\n #mapTableNoAlias(table: string) {\n const mapped = this.#nameMapper.tableName(table);\n return sql.ident(mapped);\n }\n}\n\nfunction zip<T>(a1: readonly T[], a2: readonly T[]): [T, T][] {\n assert(a1.length === a2.length);\n const result: [T, T][] = [];\n for (let i = 0; i < a1.length; i++) {\n result.push([a1[i], a2[i]]);\n }\n return result;\n}\n", "import {unreachable} from '../../../shared/src/asserts.ts';\nimport {must} from '../../../shared/src/must.ts';\nimport type {\n AST,\n Condition,\n Conjunction,\n CorrelatedSubquery,\n CorrelatedSubqueryCondition,\n Disjunction,\n LiteralReference,\n Ordering,\n Parameter,\n SimpleCondition,\n ValuePosition,\n} from '../../../zero-protocol/src/ast.ts';\nimport {SUBQ_PREFIX} from './query-impl.ts';\n\n/**\n * Converts an AST to the equivalent query builder code.\n * This is useful for debugging and understanding queries.\n *\n * @example\n * ```\n * const ast = query.issue.where('id', '=', 123)[astForTestingSymbol];\n * console.log(astToZQL(ast)); // outputs: .where('id', '=', 123)\n * ```\n */\nexport function astToZQL(ast: AST): string {\n let code = '';\n\n // Handle where conditions\n if (ast.where) {\n code += transformCondition(ast.where, '.where', new Set());\n }\n\n // Handle related subqueries\n if (ast.related && ast.related.length > 0) {\n for (const related of ast.related) {\n if (!related.hidden) {\n code += transformRelated(related);\n }\n }\n }\n\n // Handle orderBy\n if (ast.orderBy && ast.orderBy.length > 0) {\n code += transformOrder(ast.orderBy);\n }\n\n // Handle limit\n if (ast.limit !== undefined) {\n code += `.limit(${ast.limit})`;\n }\n\n // Handle start\n if (ast.start) {\n const {row, exclusive} = ast.start;\n code += `.start(${JSON.stringify(row)}${\n exclusive ? '' : ', { inclusive: true }'\n })`;\n }\n\n return code;\n}\n\ntype Args = Set<string>;\n\ntype Prefix = '.where' | 'cmp';\n\nfunction transformCondition(\n condition: Condition,\n prefix: Prefix,\n args: Args,\n): string {\n switch (condition.type) {\n case 'simple':\n return transformSimpleCondition(condition, prefix);\n case 'and':\n case 'or':\n return transformLogicalCondition(condition, prefix, args);\n case 'correlatedSubquery':\n return transformExistsCondition(condition, prefix, args);\n default:\n unreachable(condition);\n }\n}\n\nfunction transformSimpleCondition(\n condition: SimpleCondition,\n prefix: Prefix,\n): string {\n const {left, op, right} = condition;\n\n const leftCode = transformValuePosition(left);\n const rightCode = transformValuePosition(right);\n\n // Handle the shorthand form for equals\n if (op === '=') {\n return `${prefix}(${leftCode}, ${rightCode})`;\n }\n\n return `${prefix}(${leftCode}, '${op}', ${rightCode})`;\n}\n\nfunction transformLogicalCondition(\n condition: Conjunction | Disjunction,\n prefix: Prefix,\n args: Args,\n): string {\n const {type, conditions} = condition;\n\n // For single condition, no need for logical operator\n if (conditions.length === 1) {\n return transformCondition(conditions[0], prefix, args);\n }\n\n // Generate multiple where calls for top-level AND conditions\n if (type === 'and') {\n const parts = conditions.map(c => transformCondition(c, prefix, args));\n // Simply concatenate the where conditions\n if (prefix === '.where') {\n return parts.join('');\n }\n args.add('and');\n return 'and(' + parts.join(', ') + ')';\n }\n\n args = new Set<string>();\n\n // Handle nested conditions with a callback for OR conditions and nested ANDs/ORs\n const conditionsCode = conditions\n .map(c => transformCondition(c, 'cmp', args))\n .join(', ');\n\n args.add('cmp');\n args.add(type);\n const argsCode = [...args].sort().join(', ');\n\n return `.where(({${argsCode}}) => ${type}(${conditionsCode}))`;\n}\n\nfunction transformExistsCondition(\n condition: CorrelatedSubqueryCondition,\n prefix: '.where' | 'cmp',\n args: Set<string>,\n): string {\n const {related, op} = condition;\n const relationship = extractRelationshipName(related);\n\n // Check if subquery has additional properties\n const hasSubQueryProps =\n related.subquery.where ||\n (related.subquery.related && related.subquery.related.length > 0) ||\n related.subquery.orderBy ||\n related.subquery.limit;\n\n if (op === 'EXISTS') {\n if (!hasSubQueryProps) {\n if (prefix === '.where') {\n return `.whereExists('${relationship}')`;\n }\n args.add('exists');\n return `exists('${relationship}')`;\n }\n\n if (prefix === '.where') {\n return `.whereExists('${relationship}', q => q${astToZQL(\n related.subquery,\n )}))`;\n }\n prefix satisfies 'cmp';\n args.add('exists');\n return `exists('${relationship}', q => q${astToZQL(related.subquery)})`;\n }\n\n op satisfies 'NOT EXISTS';\n\n if (hasSubQueryProps) {\n if (prefix === '.where') {\n return `.where(({exists, not}) => not(exists('${relationship}', q => q${astToZQL(\n related.subquery,\n )})))`;\n }\n prefix satisfies 'cmp';\n args.add('not');\n args.add('exists');\n return `not(exists('${relationship}', q => q${astToZQL(\n related.subquery,\n )}))`;\n }\n\n if (prefix === '.where') {\n return `.where(({exists, not}) => not(exists('${relationship}')))`;\n }\n args.add('not');\n args.add('exists');\n\n return `not(exists('${relationship}')))`;\n}\n\nfunction extractRelationshipName(related: CorrelatedSubquery): string {\n const alias = must(related.subquery.alias);\n return alias.startsWith(SUBQ_PREFIX)\n ? alias.substring(SUBQ_PREFIX.length)\n : alias;\n}\n\nfunction transformRelated(related: CorrelatedSubquery): string {\n const {alias} = related.subquery;\n if (!alias) return '';\n\n const relationship = alias;\n let code = `.related('${relationship}'`;\n\n // If the subquery has additional filters or configurations\n if (\n related.subquery.where ||\n (related.subquery.related && related.subquery.related.length > 0) ||\n related.subquery.orderBy ||\n related.subquery.limit\n ) {\n code += ', q => q' + astToZQL(related.subquery);\n }\n\n code += ')';\n return code;\n}\n\nfunction transformOrder(orderBy: Ordering): string {\n let code = '';\n for (const [field, direction] of orderBy) {\n code += `.orderBy('${field}', '${direction}')`;\n }\n return code;\n}\n\nfunction transformValuePosition(value: ValuePosition): string {\n switch (value.type) {\n case 'literal':\n return transformLiteral(value);\n case 'column':\n return `'${value.name}'`;\n case 'static':\n return transformParameter(value);\n default:\n unreachable(value);\n }\n}\n\nfunction transformLiteral(literal: LiteralReference): string {\n if (literal.value === null) {\n return 'null';\n }\n if (Array.isArray(literal.value)) {\n return JSON.stringify(literal.value);\n }\n if (typeof literal.value === 'string') {\n return `'${literal.value.replace(/'/g, \"\\\\'\")}'`;\n }\n return String(literal.value);\n}\n\nfunction transformParameter(param: Parameter): string {\n const fieldStr = Array.isArray(param.field)\n ? `[${param.field.map(f => `'${f}'`).join(', ')}]`\n : `'${param.field}'`;\n\n return `authParam(${fieldStr})`;\n}\n", "import type {BTreeRead} from '../../../../replicache/src/btree/read.ts';\nimport {type Read} from '../../../../replicache/src/dag/store.ts';\nimport {readFromHash} from '../../../../replicache/src/db/read.ts';\nimport * as FormatVersion from '../../../../replicache/src/format-version-enum.ts';\nimport {\n getClientGroup,\n getClientGroups,\n} from '../../../../replicache/src/persist/client-groups.ts';\nimport {\n getClient,\n getClients,\n type ClientMap,\n} from '../../../../replicache/src/persist/clients.ts';\nimport type {ReplicacheImpl} from '../../../../replicache/src/replicache-impl.ts';\nimport {withRead} from '../../../../replicache/src/with-transactions.ts';\nimport {assert} from '../../../../shared/src/asserts.ts';\nimport type {ReadonlyJSONValue} from '../../../../shared/src/json.ts';\nimport * as valita from '../../../../shared/src/valita.ts';\nimport {compile} from '../../../../z2s/src/compiler.ts';\nimport {formatPg} from '../../../../z2s/src/sql.ts';\nimport {astSchema, type AST} from '../../../../zero-protocol/src/ast.ts';\nimport type {Row} from '../../../../zero-protocol/src/data.ts';\nimport type {Schema} from '../../../../zero-schema/src/builder/schema-builder.ts';\nimport type {Format} from '../../../../zql/src/ivm/view.ts';\nimport {astToZQL} from '../../../../zql/src/query/ast-to-zql.ts';\nimport {\n desiredQueriesPrefixForClient,\n ENTITIES_KEY_PREFIX,\n toGotQueriesKey,\n} from '../keys.ts';\nimport type {MutatorDefs} from '../replicache-types.ts';\nimport type {\n ClientGroup as ClientGroupInterface,\n Client as ClientInterface,\n Inspector as InspectorInterface,\n Query as QueryInterface,\n} from './types.ts';\n\ntype Rep = ReplicacheImpl<MutatorDefs>;\n\nexport async function newInspector(\n rep: Rep,\n schema: Schema,\n): Promise<InspectorInterface> {\n const clientGroupID = await rep.clientGroupID;\n return new Inspector(rep, schema, rep.clientID, clientGroupID);\n}\n\nclass Inspector implements InspectorInterface {\n readonly #rep: Rep;\n readonly client: Client;\n readonly clientGroup: ClientGroup;\n readonly #schema: Schema;\n\n constructor(\n rep: ReplicacheImpl,\n schema: Schema,\n clientID: string,\n clientGroupID: string,\n ) {\n this.#rep = rep;\n this.#schema = schema;\n this.client = new Client(rep, schema, clientID, clientGroupID);\n this.clientGroup = this.client.clientGroup;\n }\n\n clients(): Promise<ClientInterface[]> {\n return withDagRead(this.#rep, dagRead =>\n clients(this.#rep, this.#schema, dagRead),\n );\n }\n\n clientsWithQueries(): Promise<ClientInterface[]> {\n return withDagRead(this.#rep, dagRead =>\n clientsWithQueries(this.#rep, this.#schema, dagRead),\n );\n }\n\n clientGroups(): Promise<ClientGroup[]> {\n return withDagRead(this.#rep, async dagRead => {\n const clientGroups = await getClientGroups(dagRead);\n return [...clientGroups.keys()].map(\n clientGroupID =>\n new ClientGroup(this.#rep, this.#schema, clientGroupID),\n );\n });\n }\n}\n\nclass Client implements ClientInterface {\n readonly #rep: Rep;\n readonly id: string;\n readonly clientGroup: ClientGroup;\n readonly #schema: Schema;\n\n constructor(rep: Rep, schema: Schema, id: string, clientGroupID: string) {\n this.#rep = rep;\n this.#schema = schema;\n this.id = id;\n this.clientGroup = new ClientGroup(rep, schema, clientGroupID);\n }\n\n queries(): Promise<QueryInterface[]> {\n return withDagRead(this.#rep, async dagRead => {\n const prefix = desiredQueriesPrefixForClient(this.id);\n const tree = await getBTree(dagRead, this.id);\n const qs: QueryInterface[] = [];\n for await (const [key, value] of tree.scan(prefix)) {\n if (!key.startsWith(prefix)) {\n break;\n }\n\n const hash = key.substring(prefix.length);\n const got = await tree.has(toGotQueriesKey(hash));\n const q = new Query(\n hash,\n valita.parse(value, astSchema),\n got,\n this.#schema,\n );\n qs.push(q);\n }\n return qs;\n });\n }\n\n map(): Promise<Map<string, ReadonlyJSONValue>> {\n return withDagRead(this.#rep, async dagRead => {\n const tree = await getBTree(dagRead, this.id);\n const map = new Map<string, ReadonlyJSONValue>();\n for await (const [key, value] of tree.scan('')) {\n map.set(key, value);\n }\n return map;\n });\n }\n\n rows(tableName: string): Promise<Row[]> {\n return withDagRead(this.#rep, async dagRead => {\n const prefix = ENTITIES_KEY_PREFIX + tableName;\n const tree = await getBTree(dagRead, this.id);\n const rows: Row[] = [];\n for await (const [key, value] of tree.scan(prefix)) {\n if (!key.startsWith(prefix)) {\n break;\n }\n rows.push(value as Row);\n }\n return rows;\n });\n }\n}\n\nclass ClientGroup implements ClientGroupInterface {\n readonly #rep: Rep;\n readonly id: string;\n readonly #schema: Schema;\n\n constructor(rep: Rep, schema: Schema, id: string) {\n this.#rep = rep;\n this.#schema = schema;\n this.id = id;\n }\n\n clients(): Promise<ClientInterface[]> {\n return withDagRead(this.#rep, dagRead =>\n clients(\n this.#rep,\n this.#schema,\n dagRead,\n ([_, v]) => v.clientGroupID === this.id,\n ),\n );\n }\n\n clientsWithQueries(): Promise<ClientInterface[]> {\n return withDagRead(this.#rep, dagRead =>\n clientsWithQueries(\n this.#rep,\n this.#schema,\n dagRead,\n ([_, v]) => v.clientGroupID === this.id,\n ),\n );\n }\n\n queries(): Promise<QueryInterface[]> {\n return withDagRead(this.#rep, async dagRead => {\n const cs = await clients(\n this.#rep,\n this.#schema,\n dagRead,\n ([_, v]) => v.clientGroupID === this.id,\n );\n const qs: Map<string, QueryInterface> = new Map();\n await Promise.all(\n cs.map(async client => {\n const clientQueries = await client.queries();\n clientQueries.forEach(q => qs.set(q.id, q));\n }),\n );\n return [...qs.values()];\n });\n }\n}\n\nasync function withDagRead<T>(\n rep: Rep,\n f: (dagRead: Read) => Promise<T>,\n): Promise<T> {\n await rep.refresh();\n await rep.persist();\n return withRead(rep.perdag, f);\n}\n\nasync function getBTree(dagRead: Read, clientID: string): Promise<BTreeRead> {\n const client = await getClient(clientID, dagRead);\n assert(client, `Client not found: ${clientID}`);\n const {clientGroupID} = client;\n const clientGroup = await getClientGroup(clientGroupID, dagRead);\n assert(clientGroup, `Client group not found: ${clientGroupID}`);\n const dbRead = await readFromHash(\n clientGroup.headHash,\n dagRead,\n FormatVersion.Latest,\n );\n return dbRead.map;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype MapEntry<T extends ReadonlyMap<any, any>> =\n T extends ReadonlyMap<infer K, infer V> ? readonly [K, V] : never;\n\nasync function clients(\n rep: Rep,\n schema: Schema,\n dagRead: Read,\n predicate: (entry: MapEntry<ClientMap>) => boolean = () => true,\n): Promise<ClientInterface[]> {\n const clients = await getClients(dagRead);\n return [...clients.entries()]\n .filter(predicate)\n .map(\n ([clientID, {clientGroupID}]) =>\n new Client(rep, schema, clientID, clientGroupID),\n );\n}\n\nasync function clientsWithQueries(\n rep: Rep,\n schema: Schema,\n dagRead: Read,\n predicate: (entry: MapEntry<ClientMap>) => boolean = () => true,\n): Promise<ClientInterface[]> {\n const allClients = await clients(rep, schema, dagRead, predicate);\n const clientsWithQueries: ClientInterface[] = [];\n await Promise.all(\n allClients.map(async client => {\n const queries = await client.queries();\n if (queries.length > 0) {\n clientsWithQueries.push(client);\n }\n }),\n );\n return clientsWithQueries;\n}\n\nclass Query implements QueryInterface {\n readonly id: string;\n readonly ast: AST;\n readonly got: boolean;\n #schema: Schema;\n\n constructor(id: string, ast: AST, got: boolean, schema: Schema) {\n this.id = id;\n this.ast = ast;\n this.got = got;\n this.#schema = schema;\n }\n\n get sql(): string {\n const format: Format = {\n singular: false,\n relationships: {},\n };\n const sqlQuery = formatPg(compile(this.ast, this.#schema.tables, format));\n return sqlQuery.text;\n }\n\n get zql(): string {\n return this.ast.table + astToZQL(this.ast);\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["sql", "clients", "clientsWithQueries"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ast-to-zql.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/ast-to-zql.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,GAAG,EAWJ,MAAM,mCAAmC,CAAC;AAG3C;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAoCzC"}
|