@rocicorp/zero 0.18.2025032102 → 0.18.2025032401
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-62LPXRYD.js → chunk-5WXONOGR.js} +154 -46
- package/out/{chunk-62LPXRYD.js.map → chunk-5WXONOGR.js.map} +4 -4
- package/out/{chunk-KRZMF5WQ.js → chunk-DSUPSGE4.js} +10 -1
- package/out/{chunk-KRZMF5WQ.js.map → chunk-DSUPSGE4.js.map} +2 -2
- 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 +135 -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 +40 -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 +76 -4
- package/out/zero-protocol/src/push.d.ts.map +1 -1
- package/out/zero-protocol/src/push.js +17 -2
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zero.d.ts","sourceRoot":"","sources":["../../../../../zero-client/src/client/zero.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAgB,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAC,KAAK,QAAQ,EAAW,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EACL,cAAc,EAEf,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAC,MAAM,EAAe,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAC,MAAM,EAAe,MAAM,mCAAmC,CAAC;AAE5E,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACT,MAAM,qCAAqC,CAAC;AAG7C,OAAO,KAAK,EACV,WAAW,EAEZ,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,6BAA6B,CAAC;AAOtD,OAAO,EAAC,KAAK,YAAY,EAAC,MAAM,6CAA6C,CAAC;AAI9E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,8CAA8C,CAAC;AAyBpF,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,6CAA6C,CAAC;AAEhF,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uCAAuC,CAAC;AAE3E,OAAO,EACL,KAAK,MAAM,EAEZ,MAAM,oDAAoD,CAAC;AAO5D,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,iCAAiC,CAAC;AAG3D,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,SAAS,EAIf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EACV,iBAAiB,EAEjB,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EAGd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAC,KAAK,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AASnE,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"zero.d.ts","sourceRoot":"","sources":["../../../../../zero-client/src/client/zero.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,45 @@ 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>]>]>;
|
|
79
|
+
}, undefined>>;
|
|
80
|
+
}, undefined>, v.UnionType<[v.ObjectType<{
|
|
81
|
+
error: v.Type<"unsupported-push-version">;
|
|
82
|
+
mutationIDs: v.Optional<{
|
|
83
|
+
id: number;
|
|
84
|
+
clientID: string;
|
|
85
|
+
}[]>;
|
|
86
|
+
}, undefined>, v.ObjectType<{
|
|
87
|
+
error: v.Type<"unsupported-schema-version">;
|
|
88
|
+
mutationIDs: v.Optional<{
|
|
89
|
+
id: number;
|
|
90
|
+
clientID: string;
|
|
91
|
+
}[]>;
|
|
92
|
+
}, undefined>, v.ObjectType<{
|
|
93
|
+
error: v.Type<"http">;
|
|
94
|
+
status: v.Type<number>;
|
|
95
|
+
details: v.Type<string>;
|
|
96
|
+
mutationIDs: v.Optional<{
|
|
97
|
+
id: number;
|
|
98
|
+
clientID: string;
|
|
99
|
+
}[]>;
|
|
100
|
+
}, undefined>, v.ObjectType<{
|
|
101
|
+
error: v.Type<"zero-pusher">;
|
|
102
|
+
details: v.Type<string>;
|
|
103
|
+
mutationIDs: v.Optional<{
|
|
104
|
+
id: number;
|
|
105
|
+
clientID: string;
|
|
106
|
+
}[]>;
|
|
107
|
+
}, undefined>]>]>]>]>;
|
|
69
108
|
export type Downstream = v.Infer<typeof downstreamSchema>;
|
|
70
109
|
//# 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,14 @@ 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">;
|
|
258
257
|
}, undefined>]>;
|
|
258
|
+
declare const mutationResultSchema: v.UnionType<[v.ObjectType<{}, undefined>, v.UnionType<[v.ObjectType<{
|
|
259
|
+
error: v.Type<"app">;
|
|
260
|
+
}, undefined>, v.ObjectType<{
|
|
261
|
+
error: v.Type<"ooo-mutation">;
|
|
262
|
+
}, undefined>]>]>;
|
|
259
263
|
declare const mutationResponseSchema: v.ObjectType<{
|
|
260
264
|
id: v.ObjectType<{
|
|
261
265
|
id: v.Type<number>;
|
|
@@ -263,7 +267,6 @@ declare const mutationResponseSchema: v.ObjectType<{
|
|
|
263
267
|
}, undefined>;
|
|
264
268
|
result: v.UnionType<[v.ObjectType<{}, undefined>, v.UnionType<[v.ObjectType<{
|
|
265
269
|
error: v.Type<"app">;
|
|
266
|
-
details: v.Type<string>;
|
|
267
270
|
}, undefined>, v.ObjectType<{
|
|
268
271
|
error: v.Type<"ooo-mutation">;
|
|
269
272
|
}, undefined>]>]>;
|
|
@@ -276,7 +279,6 @@ declare const pushOkSchema: v.ObjectType<{
|
|
|
276
279
|
}, undefined>;
|
|
277
280
|
result: v.UnionType<[v.ObjectType<{}, undefined>, v.UnionType<[v.ObjectType<{
|
|
278
281
|
error: v.Type<"app">;
|
|
279
|
-
details: v.Type<string>;
|
|
280
282
|
}, undefined>, v.ObjectType<{
|
|
281
283
|
error: v.Type<"ooo-mutation">;
|
|
282
284
|
}, undefined>]>]>;
|
|
@@ -294,6 +296,21 @@ declare const pushErrorSchema: v.UnionType<[v.ObjectType<{
|
|
|
294
296
|
id: number;
|
|
295
297
|
clientID: string;
|
|
296
298
|
}[]>;
|
|
299
|
+
}, undefined>, v.ObjectType<{
|
|
300
|
+
error: v.Type<"http">;
|
|
301
|
+
status: v.Type<number>;
|
|
302
|
+
details: v.Type<string>;
|
|
303
|
+
mutationIDs: v.Optional<{
|
|
304
|
+
id: number;
|
|
305
|
+
clientID: string;
|
|
306
|
+
}[]>;
|
|
307
|
+
}, undefined>, v.ObjectType<{
|
|
308
|
+
error: v.Type<"zero-pusher">;
|
|
309
|
+
details: v.Type<string>;
|
|
310
|
+
mutationIDs: v.Optional<{
|
|
311
|
+
id: number;
|
|
312
|
+
clientID: string;
|
|
313
|
+
}[]>;
|
|
297
314
|
}, undefined>]>;
|
|
298
315
|
export declare const pushResponseSchema: v.UnionType<[v.ObjectType<{
|
|
299
316
|
mutations: v.ArrayType<v.ObjectType<{
|
|
@@ -303,7 +320,6 @@ export declare const pushResponseSchema: v.UnionType<[v.ObjectType<{
|
|
|
303
320
|
}, undefined>;
|
|
304
321
|
result: v.UnionType<[v.ObjectType<{}, undefined>, v.UnionType<[v.ObjectType<{
|
|
305
322
|
error: v.Type<"app">;
|
|
306
|
-
details: v.Type<string>;
|
|
307
323
|
}, undefined>, v.ObjectType<{
|
|
308
324
|
error: v.Type<"ooo-mutation">;
|
|
309
325
|
}, undefined>]>]>;
|
|
@@ -320,7 +336,62 @@ export declare const pushResponseSchema: v.UnionType<[v.ObjectType<{
|
|
|
320
336
|
id: number;
|
|
321
337
|
clientID: string;
|
|
322
338
|
}[]>;
|
|
339
|
+
}, undefined>, v.ObjectType<{
|
|
340
|
+
error: v.Type<"http">;
|
|
341
|
+
status: v.Type<number>;
|
|
342
|
+
details: v.Type<string>;
|
|
343
|
+
mutationIDs: v.Optional<{
|
|
344
|
+
id: number;
|
|
345
|
+
clientID: string;
|
|
346
|
+
}[]>;
|
|
347
|
+
}, undefined>, v.ObjectType<{
|
|
348
|
+
error: v.Type<"zero-pusher">;
|
|
349
|
+
details: v.Type<string>;
|
|
350
|
+
mutationIDs: v.Optional<{
|
|
351
|
+
id: number;
|
|
352
|
+
clientID: string;
|
|
353
|
+
}[]>;
|
|
323
354
|
}, undefined>]>]>;
|
|
355
|
+
export declare const pushResponseMessageSchema: v.TupleType<[v.Type<"push-response">, v.UnionType<[v.ObjectType<{
|
|
356
|
+
mutations: v.ArrayType<v.ObjectType<{
|
|
357
|
+
id: v.ObjectType<{
|
|
358
|
+
id: v.Type<number>;
|
|
359
|
+
clientID: v.Type<string>;
|
|
360
|
+
}, undefined>;
|
|
361
|
+
result: v.UnionType<[v.ObjectType<{}, undefined>, v.UnionType<[v.ObjectType<{
|
|
362
|
+
error: v.Type<"app">;
|
|
363
|
+
}, undefined>, v.ObjectType<{
|
|
364
|
+
error: v.Type<"ooo-mutation">;
|
|
365
|
+
}, undefined>]>]>;
|
|
366
|
+
}, undefined>>;
|
|
367
|
+
}, undefined>, v.UnionType<[v.ObjectType<{
|
|
368
|
+
error: v.Type<"unsupported-push-version">;
|
|
369
|
+
mutationIDs: v.Optional<{
|
|
370
|
+
id: number;
|
|
371
|
+
clientID: string;
|
|
372
|
+
}[]>;
|
|
373
|
+
}, undefined>, v.ObjectType<{
|
|
374
|
+
error: v.Type<"unsupported-schema-version">;
|
|
375
|
+
mutationIDs: v.Optional<{
|
|
376
|
+
id: number;
|
|
377
|
+
clientID: string;
|
|
378
|
+
}[]>;
|
|
379
|
+
}, undefined>, v.ObjectType<{
|
|
380
|
+
error: v.Type<"http">;
|
|
381
|
+
status: v.Type<number>;
|
|
382
|
+
details: v.Type<string>;
|
|
383
|
+
mutationIDs: v.Optional<{
|
|
384
|
+
id: number;
|
|
385
|
+
clientID: string;
|
|
386
|
+
}[]>;
|
|
387
|
+
}, undefined>, v.ObjectType<{
|
|
388
|
+
error: v.Type<"zero-pusher">;
|
|
389
|
+
details: v.Type<string>;
|
|
390
|
+
mutationIDs: v.Optional<{
|
|
391
|
+
id: number;
|
|
392
|
+
clientID: string;
|
|
393
|
+
}[]>;
|
|
394
|
+
}, undefined>]>]>]>;
|
|
324
395
|
export type InsertOp = v.Infer<typeof insertOpSchema>;
|
|
325
396
|
export type UpsertOp = v.Infer<typeof upsertOpSchema>;
|
|
326
397
|
export type UpdateOp = v.Infer<typeof updateOpSchema>;
|
|
@@ -340,6 +411,7 @@ export type MutationError = v.Infer<typeof mutationErrorSchema>;
|
|
|
340
411
|
export type PushError = v.Infer<typeof pushErrorSchema>;
|
|
341
412
|
export type PushOk = v.Infer<typeof pushOkSchema>;
|
|
342
413
|
export type MutationID = v.Infer<typeof mutationIDSchema>;
|
|
414
|
+
export type MutationResult = v.Infer<typeof mutationResultSchema>;
|
|
343
415
|
export declare function mapCRUD(arg: CRUDMutationArg, map: NameMapper): CRUDMutationArg;
|
|
344
416
|
export {};
|
|
345
417
|
//# 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,7 +83,7 @@ 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'),
|
|
@@ -112,8 +112,23 @@ const unsupportedSchemaVersionSchema = v.object({
|
|
|
112
112
|
// were not processed by the server.
|
|
113
113
|
mutationIDs: v.array(mutationIDSchema).optional(),
|
|
114
114
|
});
|
|
115
|
-
const
|
|
115
|
+
const httpErrorSchema = v.object({
|
|
116
|
+
error: v.literal('http'),
|
|
117
|
+
status: v.number(),
|
|
118
|
+
details: v.string(),
|
|
119
|
+
mutationIDs: v.array(mutationIDSchema).optional(),
|
|
120
|
+
});
|
|
121
|
+
const zeroPusherErrorSchema = v.object({
|
|
122
|
+
error: v.literal('zero-pusher'),
|
|
123
|
+
details: v.string(),
|
|
124
|
+
mutationIDs: v.array(mutationIDSchema).optional(),
|
|
125
|
+
});
|
|
126
|
+
const pushErrorSchema = v.union(unsupportedPushVersionSchema, unsupportedSchemaVersionSchema, httpErrorSchema, zeroPusherErrorSchema);
|
|
116
127
|
export const pushResponseSchema = v.union(pushOkSchema, pushErrorSchema);
|
|
128
|
+
export const pushResponseMessageSchema = v.tuple([
|
|
129
|
+
v.literal('push-response'),
|
|
130
|
+
pushResponseSchema,
|
|
131
|
+
]);
|
|
117
132
|
export function mapCRUD(arg, map) {
|
|
118
133
|
return {
|
|
119
134
|
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.2025032401",
|
|
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"}
|