@rocicorp/zero 0.17.2025030601 → 0.17.2025031100
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/advanced.js +1 -1
- package/out/{chunk-EENFDWT4.js → chunk-2TJNN7K4.js} +550 -230
- package/out/chunk-2TJNN7K4.js.map +7 -0
- package/out/{chunk-Q6D7EOS6.js → chunk-6CQ6CUML.js} +55 -25
- package/out/chunk-6CQ6CUML.js.map +7 -0
- package/out/{chunk-HARIWJ2J.js → chunk-HLTH2AYN.js} +6 -2
- package/out/chunk-HLTH2AYN.js.map +7 -0
- package/out/otel/src/log-options.d.ts +4 -0
- package/out/otel/src/log-options.d.ts.map +1 -1
- package/out/otel/src/log-options.js +6 -0
- package/out/otel/src/log-options.js.map +1 -1
- package/out/otel/src/maybe-time.js +1 -1
- package/out/react.js +3 -3
- package/out/react.js.map +2 -2
- package/out/replicache/src/db/rebase.d.ts +3 -2
- package/out/replicache/src/db/rebase.d.ts.map +1 -1
- package/out/replicache/src/persist/refresh.d.ts.map +1 -1
- package/out/replicache/src/replicache-impl.d.ts +7 -1
- package/out/replicache/src/replicache-impl.d.ts.map +1 -1
- package/out/replicache/src/replicache-options.d.ts +51 -0
- package/out/replicache/src/replicache-options.d.ts.map +1 -1
- package/out/replicache/src/transactions.d.ts +4 -1
- package/out/replicache/src/transactions.d.ts.map +1 -1
- package/out/shared/src/asserts.d.ts.map +1 -1
- package/out/shared/src/asserts.js +1 -2
- package/out/shared/src/asserts.js.map +1 -1
- package/out/shared/src/objects.d.ts +4 -0
- package/out/shared/src/objects.d.ts.map +1 -0
- package/out/shared/src/objects.js +25 -0
- package/out/shared/src/objects.js.map +1 -0
- package/out/solid.js +28 -6
- package/out/solid.js.map +2 -2
- package/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js +1 -1
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/zero-advanced/src/mod.d.ts +3 -0
- package/out/zero-advanced/src/mod.d.ts.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.js +0 -1
- package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +1 -0
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +4 -0
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/db/lite-tables.d.ts +5 -1
- package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
- package/out/zero-cache/src/db/lite-tables.js +8 -1
- package/out/zero-cache/src/db/lite-tables.js.map +1 -1
- package/out/zero-cache/src/db/specs.d.ts +5 -5
- package/out/zero-cache/src/scripts/deploy-permissions.js +2 -1
- package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
- package/out/zero-cache/src/server/multi/config.d.ts +4 -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/change-source.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js +9 -4
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +10 -10
- package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +4 -4
- package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts +8 -19
- package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/data.js +12 -3
- package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +12 -27
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +4 -9
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +1 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +1 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.js +1 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +3 -3
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +7 -3
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js +68 -33
- package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +2 -2
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.js +3 -2
- package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +4 -2
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.d.ts +5 -0
- package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/client-schema.js +74 -0
- package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +6 -2
- 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 +42 -21
- 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 +6 -2
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +39 -17
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +5 -4
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +22 -16
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +2 -0
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js +2 -5
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.js +12 -0
- package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +2 -2
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.js +4 -3
- package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +4 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +2 -2
- 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 +35 -27
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/lite.d.ts +4 -1
- package/out/zero-cache/src/types/lite.d.ts.map +1 -1
- package/out/zero-cache/src/types/lite.js +10 -5
- package/out/zero-cache/src/types/lite.js.map +1 -1
- package/out/zero-client/src/client/context.d.ts +10 -4
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.d.ts +11 -2
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/options.d.ts +8 -0
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/query-manager.d.ts +2 -1
- package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +3 -2
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/mod.d.ts +2 -2
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-protocol/src/client-schema.d.ts +27 -0
- package/out/zero-protocol/src/client-schema.d.ts.map +1 -0
- package/out/zero-protocol/src/client-schema.js +28 -0
- package/out/zero-protocol/src/client-schema.js.map +1 -0
- package/out/zero-protocol/src/connect.d.ts +14 -0
- package/out/zero-protocol/src/connect.d.ts.map +1 -1
- package/out/zero-protocol/src/connect.js +2 -0
- package/out/zero-protocol/src/connect.js.map +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
- package/out/zero-protocol/src/protocol-version.js +2 -1
- package/out/zero-protocol/src/protocol-version.js.map +1 -1
- package/out/zero-protocol/src/push.d.ts +2 -2
- package/out/zero-protocol/src/push.d.ts.map +1 -1
- package/out/zero-protocol/src/push.js +4 -1
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/up.d.ts +8 -1
- package/out/zero-protocol/src/up.d.ts.map +1 -1
- package/out/zero-react/src/use-query.d.ts +4 -3
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-schema/src/builder/schema-builder.d.ts +7 -13
- package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
- package/out/zero-schema/src/builder/schema-builder.js +22 -13
- package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
- package/out/zero-schema/src/schema-config.d.ts +2 -4
- package/out/zero-schema/src/schema-config.d.ts.map +1 -1
- package/out/zero-schema/src/schema-config.js +1 -2
- package/out/zero-schema/src/schema-config.js.map +1 -1
- package/out/zero-schema/src/table-schema.d.ts +2 -2
- package/out/zero-schema/src/table-schema.d.ts.map +1 -1
- package/out/zero-solid/src/solid-view.d.ts +1 -2
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/zero-solid/src/use-query.d.ts +2 -2
- package/out/zero-solid/src/use-query.d.ts.map +1 -1
- package/out/zero.js +5 -3
- package/out/zql/src/builder/builder.d.ts +3 -2
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +48 -27
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/ivm/array-view.d.ts.map +1 -1
- package/out/zql/src/ivm/array-view.js +3 -2
- package/out/zql/src/ivm/array-view.js.map +1 -1
- package/out/zql/src/ivm/exists.d.ts.map +1 -1
- package/out/zql/src/ivm/exists.js +1 -1
- package/out/zql/src/ivm/exists.js.map +1 -1
- package/out/zql/src/ivm/fan-in.d.ts +1 -0
- package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
- package/out/zql/src/ivm/fan-in.js +100 -4
- package/out/zql/src/ivm/fan-in.js.map +1 -1
- package/out/zql/src/ivm/fan-out.d.ts +2 -1
- package/out/zql/src/ivm/fan-out.d.ts.map +1 -1
- package/out/zql/src/ivm/fan-out.js +6 -12
- package/out/zql/src/ivm/fan-out.js.map +1 -1
- package/out/zql/src/ivm/join.d.ts.map +1 -1
- package/out/zql/src/ivm/join.js +12 -41
- package/out/zql/src/ivm/join.js.map +1 -1
- package/out/zql/src/ivm/memory-source.d.ts +17 -3
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +108 -56
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/source.d.ts +4 -1
- package/out/zql/src/ivm/source.d.ts.map +1 -1
- package/out/zql/src/ivm/take.d.ts.map +1 -1
- package/out/zql/src/ivm/take.js +2 -20
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/view-apply-change.d.ts +9 -1
- package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
- package/out/zql/src/ivm/view-apply-change.js +58 -16
- package/out/zql/src/ivm/view-apply-change.js.map +1 -1
- package/out/zql/src/ivm/view.d.ts +1 -1
- package/out/zql/src/ivm/view.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +3 -1
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +4 -3
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-internal.d.ts +3 -2
- package/out/zql/src/query/query-internal.d.ts.map +1 -1
- package/out/zql/src/query/query.d.ts +2 -1
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/query.js.map +1 -1
- package/out/zql/src/query/ttl.d.ts +18 -0
- package/out/zql/src/query/ttl.d.ts.map +1 -0
- package/out/zql/src/query/ttl.js +33 -0
- package/out/zql/src/query/ttl.js.map +1 -0
- package/out/zqlite/src/db.js +1 -1
- package/out/zqlite/src/db.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts +1 -1
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +10 -53
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +3 -3
- package/out/chunk-EENFDWT4.js.map +0 -7
- package/out/chunk-HARIWJ2J.js.map +0 -7
- package/out/chunk-Q6D7EOS6.js.map +0 -7
|
@@ -10,7 +10,6 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
10
10
|
schema: v.Type<string>;
|
|
11
11
|
name: v.Type<string>;
|
|
12
12
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
13
|
-
tag: v.Optional<"relation">;
|
|
14
13
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
15
14
|
}, undefined>;
|
|
16
15
|
new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
|
|
@@ -20,11 +19,9 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
20
19
|
schema: v.Type<string>;
|
|
21
20
|
name: v.Type<string>;
|
|
22
21
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
23
|
-
tag: v.Optional<"relation">;
|
|
24
22
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
25
23
|
}, undefined>;
|
|
26
24
|
key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
|
|
27
|
-
old: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
|
|
28
25
|
new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
|
|
29
26
|
}, undefined>, v.ObjectType<{
|
|
30
27
|
tag: v.Type<"delete">;
|
|
@@ -32,7 +29,6 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
32
29
|
schema: v.Type<string>;
|
|
33
30
|
name: v.Type<string>;
|
|
34
31
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
35
|
-
tag: v.Optional<"relation">;
|
|
36
32
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
37
33
|
}, undefined>;
|
|
38
34
|
key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
|
|
@@ -42,7 +38,6 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
42
38
|
schema: v.Type<string>;
|
|
43
39
|
name: v.Type<string>;
|
|
44
40
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
45
|
-
tag: v.Optional<"relation">;
|
|
46
41
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
47
42
|
}, undefined>>;
|
|
48
43
|
}, undefined>, v.ObjectType<{
|
|
@@ -50,7 +45,7 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
50
45
|
spec: v.ObjectType<Omit<{
|
|
51
46
|
name: v.Type<string>;
|
|
52
47
|
columns: v.Type<Record<string, {
|
|
53
|
-
pgTypeClass?: "
|
|
48
|
+
pgTypeClass?: "b" | "d" | "c" | "e" | "p" | "r" | "m" | undefined;
|
|
54
49
|
characterMaximumLength?: number | null | undefined;
|
|
55
50
|
notNull?: boolean | null | undefined;
|
|
56
51
|
dflt?: string | null | undefined;
|
|
@@ -82,7 +77,7 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
82
77
|
spec: v.ObjectType<{
|
|
83
78
|
pos: v.Type<number>;
|
|
84
79
|
dataType: v.Type<string>;
|
|
85
|
-
pgTypeClass: v.Optional<"
|
|
80
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
86
81
|
characterMaximumLength: v.Optional<number | null>;
|
|
87
82
|
notNull: v.Optional<boolean | null>;
|
|
88
83
|
dflt: v.Optional<string | null>;
|
|
@@ -99,7 +94,7 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
99
94
|
spec: v.ObjectType<{
|
|
100
95
|
pos: v.Type<number>;
|
|
101
96
|
dataType: v.Type<string>;
|
|
102
|
-
pgTypeClass: v.Optional<"
|
|
97
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
103
98
|
characterMaximumLength: v.Optional<number | null>;
|
|
104
99
|
notNull: v.Optional<boolean | null>;
|
|
105
100
|
dflt: v.Optional<string | null>;
|
|
@@ -110,7 +105,7 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
110
105
|
spec: v.ObjectType<{
|
|
111
106
|
pos: v.Type<number>;
|
|
112
107
|
dataType: v.Type<string>;
|
|
113
|
-
pgTypeClass: v.Optional<"
|
|
108
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
114
109
|
characterMaximumLength: v.Optional<number | null>;
|
|
115
110
|
notNull: v.Optional<boolean | null>;
|
|
116
111
|
dflt: v.Optional<string | null>;
|
|
@@ -168,7 +163,6 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
168
163
|
schema: v.Type<string>;
|
|
169
164
|
name: v.Type<string>;
|
|
170
165
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
171
|
-
tag: v.Optional<"relation">;
|
|
172
166
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
173
167
|
}, undefined>;
|
|
174
168
|
new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
|
|
@@ -178,11 +172,9 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
178
172
|
schema: v.Type<string>;
|
|
179
173
|
name: v.Type<string>;
|
|
180
174
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
181
|
-
tag: v.Optional<"relation">;
|
|
182
175
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
183
176
|
}, undefined>;
|
|
184
177
|
key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
|
|
185
|
-
old: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
|
|
186
178
|
new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
|
|
187
179
|
}, undefined>, v.ObjectType<{
|
|
188
180
|
tag: v.Type<"delete">;
|
|
@@ -190,7 +182,6 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
190
182
|
schema: v.Type<string>;
|
|
191
183
|
name: v.Type<string>;
|
|
192
184
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
193
|
-
tag: v.Optional<"relation">;
|
|
194
185
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
195
186
|
}, undefined>;
|
|
196
187
|
key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
|
|
@@ -200,7 +191,6 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
200
191
|
schema: v.Type<string>;
|
|
201
192
|
name: v.Type<string>;
|
|
202
193
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
203
|
-
tag: v.Optional<"relation">;
|
|
204
194
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
205
195
|
}, undefined>>;
|
|
206
196
|
}, undefined>, v.ObjectType<{
|
|
@@ -208,7 +198,7 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
208
198
|
spec: v.ObjectType<Omit<{
|
|
209
199
|
name: v.Type<string>;
|
|
210
200
|
columns: v.Type<Record<string, {
|
|
211
|
-
pgTypeClass?: "
|
|
201
|
+
pgTypeClass?: "b" | "d" | "c" | "e" | "p" | "r" | "m" | undefined;
|
|
212
202
|
characterMaximumLength?: number | null | undefined;
|
|
213
203
|
notNull?: boolean | null | undefined;
|
|
214
204
|
dflt?: string | null | undefined;
|
|
@@ -240,7 +230,7 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
240
230
|
spec: v.ObjectType<{
|
|
241
231
|
pos: v.Type<number>;
|
|
242
232
|
dataType: v.Type<string>;
|
|
243
|
-
pgTypeClass: v.Optional<"
|
|
233
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
244
234
|
characterMaximumLength: v.Optional<number | null>;
|
|
245
235
|
notNull: v.Optional<boolean | null>;
|
|
246
236
|
dflt: v.Optional<string | null>;
|
|
@@ -257,7 +247,7 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
257
247
|
spec: v.ObjectType<{
|
|
258
248
|
pos: v.Type<number>;
|
|
259
249
|
dataType: v.Type<string>;
|
|
260
|
-
pgTypeClass: v.Optional<"
|
|
250
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
261
251
|
characterMaximumLength: v.Optional<number | null>;
|
|
262
252
|
notNull: v.Optional<boolean | null>;
|
|
263
253
|
dflt: v.Optional<string | null>;
|
|
@@ -268,7 +258,7 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
268
258
|
spec: v.ObjectType<{
|
|
269
259
|
pos: v.Type<number>;
|
|
270
260
|
dataType: v.Type<string>;
|
|
271
|
-
pgTypeClass: v.Optional<"
|
|
261
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
272
262
|
characterMaximumLength: v.Optional<number | null>;
|
|
273
263
|
notNull: v.Optional<boolean | null>;
|
|
274
264
|
dflt: v.Optional<string | null>;
|
|
@@ -326,7 +316,6 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
326
316
|
schema: v.Type<string>;
|
|
327
317
|
name: v.Type<string>;
|
|
328
318
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
329
|
-
tag: v.Optional<"relation">;
|
|
330
319
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
331
320
|
}, undefined>;
|
|
332
321
|
new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
|
|
@@ -336,11 +325,9 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
336
325
|
schema: v.Type<string>;
|
|
337
326
|
name: v.Type<string>;
|
|
338
327
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
339
|
-
tag: v.Optional<"relation">;
|
|
340
328
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
341
329
|
}, undefined>;
|
|
342
330
|
key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
|
|
343
|
-
old: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue> | null>;
|
|
344
331
|
new: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
|
|
345
332
|
}, undefined>, v.ObjectType<{
|
|
346
333
|
tag: v.Type<"delete">;
|
|
@@ -348,7 +335,6 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
348
335
|
schema: v.Type<string>;
|
|
349
336
|
name: v.Type<string>;
|
|
350
337
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
351
|
-
tag: v.Optional<"relation">;
|
|
352
338
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
353
339
|
}, undefined>;
|
|
354
340
|
key: v.Type<Record<string, import("../../../../types/bigint-json.ts").JSONValue>>;
|
|
@@ -358,7 +344,6 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
358
344
|
schema: v.Type<string>;
|
|
359
345
|
name: v.Type<string>;
|
|
360
346
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
361
|
-
tag: v.Optional<"relation">;
|
|
362
347
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
363
348
|
}, undefined>>;
|
|
364
349
|
}, undefined>, v.ObjectType<{
|
|
@@ -366,7 +351,7 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
366
351
|
spec: v.ObjectType<Omit<{
|
|
367
352
|
name: v.Type<string>;
|
|
368
353
|
columns: v.Type<Record<string, {
|
|
369
|
-
pgTypeClass?: "
|
|
354
|
+
pgTypeClass?: "b" | "d" | "c" | "e" | "p" | "r" | "m" | undefined;
|
|
370
355
|
characterMaximumLength?: number | null | undefined;
|
|
371
356
|
notNull?: boolean | null | undefined;
|
|
372
357
|
dflt?: string | null | undefined;
|
|
@@ -398,7 +383,7 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
398
383
|
spec: v.ObjectType<{
|
|
399
384
|
pos: v.Type<number>;
|
|
400
385
|
dataType: v.Type<string>;
|
|
401
|
-
pgTypeClass: v.Optional<"
|
|
386
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
402
387
|
characterMaximumLength: v.Optional<number | null>;
|
|
403
388
|
notNull: v.Optional<boolean | null>;
|
|
404
389
|
dflt: v.Optional<string | null>;
|
|
@@ -415,7 +400,7 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
415
400
|
spec: v.ObjectType<{
|
|
416
401
|
pos: v.Type<number>;
|
|
417
402
|
dataType: v.Type<string>;
|
|
418
|
-
pgTypeClass: v.Optional<"
|
|
403
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
419
404
|
characterMaximumLength: v.Optional<number | null>;
|
|
420
405
|
notNull: v.Optional<boolean | null>;
|
|
421
406
|
dflt: v.Optional<string | null>;
|
|
@@ -426,7 +411,7 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
426
411
|
spec: v.ObjectType<{
|
|
427
412
|
pos: v.Type<number>;
|
|
428
413
|
dataType: v.Type<string>;
|
|
429
|
-
pgTypeClass: v.Optional<"
|
|
414
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
430
415
|
characterMaximumLength: v.Optional<number | null>;
|
|
431
416
|
notNull: v.Optional<boolean | null>;
|
|
432
417
|
dflt: v.Optional<string | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downstream.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/downstream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAU5D,QAAA,MAAM,KAAK;;;;eAIT,CAAC;AACH,QAAA,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"downstream.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/downstream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAU5D,QAAA,MAAM,KAAK;;;;eAIT,CAAC;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAiD,CAAC;AAC5D,QAAA,MAAM,MAAM;;;;eAIV,CAAC;AACH,QAAA,MAAM,QAAQ;;eAAmD,CAAC;AAElE,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAC1C,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyC,CAAC;AAC7E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,yBAAyB;;eAGpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -103,7 +103,6 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
103
103
|
schema: v.Type<string>;
|
|
104
104
|
name: v.Type<string>;
|
|
105
105
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
106
|
-
tag: v.Optional<"relation">;
|
|
107
106
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
108
107
|
}, undefined>;
|
|
109
108
|
new: v.Type<Record<string, import("../../types/bigint-json.ts").JSONValue>>;
|
|
@@ -113,11 +112,9 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
113
112
|
schema: v.Type<string>;
|
|
114
113
|
name: v.Type<string>;
|
|
115
114
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
116
|
-
tag: v.Optional<"relation">;
|
|
117
115
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
118
116
|
}, undefined>;
|
|
119
117
|
key: v.Type<Record<string, import("../../types/bigint-json.ts").JSONValue> | null>;
|
|
120
|
-
old: v.Type<Record<string, import("../../types/bigint-json.ts").JSONValue> | null>;
|
|
121
118
|
new: v.Type<Record<string, import("../../types/bigint-json.ts").JSONValue>>;
|
|
122
119
|
}, undefined>, v.ObjectType<{
|
|
123
120
|
tag: v.Type<"delete">;
|
|
@@ -125,7 +122,6 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
125
122
|
schema: v.Type<string>;
|
|
126
123
|
name: v.Type<string>;
|
|
127
124
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
128
|
-
tag: v.Optional<"relation">;
|
|
129
125
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
130
126
|
}, undefined>;
|
|
131
127
|
key: v.Type<Record<string, import("../../types/bigint-json.ts").JSONValue>>;
|
|
@@ -135,7 +131,6 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
135
131
|
schema: v.Type<string>;
|
|
136
132
|
name: v.Type<string>;
|
|
137
133
|
keyColumns: v.ArrayType<v.Type<string>>;
|
|
138
|
-
tag: v.Optional<"relation">;
|
|
139
134
|
replicaIdentity: v.Optional<"default" | "nothing" | "full" | "index">;
|
|
140
135
|
}, undefined>>;
|
|
141
136
|
}, undefined>, v.ObjectType<{
|
|
@@ -143,7 +138,7 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
143
138
|
spec: v.ObjectType<Omit<{
|
|
144
139
|
name: v.Type<string>;
|
|
145
140
|
columns: v.Type<Record<string, {
|
|
146
|
-
pgTypeClass?: "
|
|
141
|
+
pgTypeClass?: "b" | "d" | "c" | "e" | "p" | "r" | "m" | undefined;
|
|
147
142
|
characterMaximumLength?: number | null | undefined;
|
|
148
143
|
notNull?: boolean | null | undefined;
|
|
149
144
|
dflt?: string | null | undefined;
|
|
@@ -175,7 +170,7 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
175
170
|
spec: v.ObjectType<{
|
|
176
171
|
pos: v.Type<number>;
|
|
177
172
|
dataType: v.Type<string>;
|
|
178
|
-
pgTypeClass: v.Optional<"
|
|
173
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
179
174
|
characterMaximumLength: v.Optional<number | null>;
|
|
180
175
|
notNull: v.Optional<boolean | null>;
|
|
181
176
|
dflt: v.Optional<string | null>;
|
|
@@ -192,7 +187,7 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
192
187
|
spec: v.ObjectType<{
|
|
193
188
|
pos: v.Type<number>;
|
|
194
189
|
dataType: v.Type<string>;
|
|
195
|
-
pgTypeClass: v.Optional<"
|
|
190
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
196
191
|
characterMaximumLength: v.Optional<number | null>;
|
|
197
192
|
notNull: v.Optional<boolean | null>;
|
|
198
193
|
dflt: v.Optional<string | null>;
|
|
@@ -203,7 +198,7 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
203
198
|
spec: v.ObjectType<{
|
|
204
199
|
pos: v.Type<number>;
|
|
205
200
|
dataType: v.Type<string>;
|
|
206
|
-
pgTypeClass: v.Optional<"
|
|
201
|
+
pgTypeClass: v.Optional<"b" | "d" | "c" | "e" | "p" | "r" | "m">;
|
|
207
202
|
characterMaximumLength: v.Optional<number | null>;
|
|
208
203
|
notNull: v.Optional<boolean | null>;
|
|
209
204
|
dflt: v.Optional<string | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-streamer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kCAAkC,CAAC;AACtD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,2CAA2C,CAAC;AAEtE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;CAChE;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;OAIG;IACH,IAAI,EAAE,cAAc,CAAC;IAErB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,QAAA,MAAM,uBAAuB;;;aAG3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,QAAA,MAAM,KAAK;;;eAAyD,CAAC;AAErE,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"change-streamer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,kCAAkC,CAAC;AACtD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,2CAA2C,CAAC;AAEtE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;CAChE;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;OAIG;IACH,IAAI,EAAE,cAAc,CAAC;IAErB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,QAAA,MAAM,uBAAuB;;;aAG3B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,QAAA,MAAM,KAAK;;;eAAyD,CAAC;AAErE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAyC,CAAC;AAEvE,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,MAAM,WAAW,qBAAsB,SAAQ,cAAc,EAAE,OAAO;CAAG"}
|
|
@@ -4,7 +4,7 @@ export type ConnectParams = {
|
|
|
4
4
|
readonly protocolVersion: number;
|
|
5
5
|
readonly clientID: string;
|
|
6
6
|
readonly clientGroupID: string;
|
|
7
|
-
readonly schemaVersion: number;
|
|
7
|
+
readonly schemaVersion: number | null;
|
|
8
8
|
readonly baseCookie: string | null;
|
|
9
9
|
readonly timestamp: number;
|
|
10
10
|
readonly lmID: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-params.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/connect-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAEpD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,0CAA0C,CAAC;AAGlD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"connect-params.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/connect-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAEpD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,0CAA0C,CAAC;AAGlD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC/D,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,mBAAmB,GAE1B;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,IAAI,CAAC;CACb,GACD;IACE,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAwCJ"}
|
|
@@ -6,7 +6,7 @@ export function getConnectParams(protocolVersion, url, headers) {
|
|
|
6
6
|
try {
|
|
7
7
|
const clientID = params.get('clientID', true);
|
|
8
8
|
const clientGroupID = params.get('clientGroupID', true);
|
|
9
|
-
const schemaVersion = params.getInteger('schemaVersion',
|
|
9
|
+
const schemaVersion = params.getInteger('schemaVersion', false);
|
|
10
10
|
const baseCookie = params.get('baseCookie', false);
|
|
11
11
|
const timestamp = params.getInteger('ts', true);
|
|
12
12
|
const lmID = params.getInteger('lmid', true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-params.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/connect-params.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,kBAAkB,GAEnB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"connect-params.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/connect-params.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,gCAAgC,CAAC;AACpD,OAAO,EACL,kBAAkB,GAEnB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAC;AAkBpD,MAAM,UAAU,gBAAgB,CAC9B,eAAuB,EACvB,GAAQ,EACR,OAA4B;IAU5B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,EAAC,qBAAqB,EAAE,SAAS,EAAC,GAAG,kBAAkB,CAC3D,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CACxC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE;gBACN,eAAe;gBACf,QAAQ;gBACR,aAAa;gBACb,aAAa;gBACb,UAAU;gBACV,SAAS;gBACT,IAAI;gBACJ,IAAI;gBACJ,SAAS;gBACT,iBAAiB,EAAE,qBAAqB;gBACxC,IAAI,EAAE,SAAS;gBACf,MAAM;aACP;YACD,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -13,17 +13,17 @@ export type MutationError = [
|
|
|
13
13
|
desc: string
|
|
14
14
|
];
|
|
15
15
|
export interface Mutagen {
|
|
16
|
-
processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number): Promise<MutationError | undefined>;
|
|
16
|
+
processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number | undefined): Promise<MutationError | undefined>;
|
|
17
17
|
}
|
|
18
18
|
export declare class MutagenService implements Mutagen, Service {
|
|
19
19
|
#private;
|
|
20
20
|
readonly id: string;
|
|
21
21
|
constructor(lc: LogContext, shard: ShardID, clientGroupID: string, upstream: PostgresDB, config: ZeroConfig);
|
|
22
|
-
processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number): Promise<MutationError | undefined>;
|
|
22
|
+
processMutation(mutation: Mutation, authData: JWTPayload | undefined, schemaVersion: number | undefined): Promise<MutationError | undefined>;
|
|
23
23
|
run(): Promise<void>;
|
|
24
24
|
stop(): Promise<void>;
|
|
25
25
|
}
|
|
26
|
-
export declare function processMutation(lc: LogContext, authData: JWTPayload | undefined, db: PostgresDB, shard: ShardID, clientGroupID: string, mutation: Mutation, writeAuthorizer: WriteAuthorizer, schemaVersion: number, onTxStart?: () => void | Promise<void>): Promise<MutationError | undefined>;
|
|
26
|
+
export declare function processMutation(lc: LogContext, authData: JWTPayload | undefined, db: PostgresDB, shard: ShardID, clientGroupID: string, mutation: Mutation, writeAuthorizer: WriteAuthorizer, schemaVersion: number | undefined, onTxStart?: () => void | Promise<void>): Promise<MutationError | undefined>;
|
|
27
27
|
export declare function getInsertSQL(tx: postgres.TransactionSql, create: InsertOp): postgres.PendingQuery<postgres.Row[]>;
|
|
28
28
|
export declare function getUpsertSQL(tx: postgres.TransactionSql, set: UpsertOp): postgres.PendingQuery<postgres.Row[]>;
|
|
29
29
|
//# sourceMappingURL=mutagen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutagen.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,KAAK,SAAS,MAAM,kDAAkD,CAAC;AAM9E,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACd,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,KAAK,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAG5D,OAAO,KAAK,EAAC,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAA4B,KAAK,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAE9E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAI3C,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,mBAAmB;IAC9D,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,WAAW,OAAO;IACtB,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"mutagen.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,OAAO,KAAK,SAAS,MAAM,kDAAkD,CAAC;AAM9E,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACd,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,KAAK,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAG5D,OAAO,KAAK,EAAC,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAA4B,KAAK,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAE9E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAI3C,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,mBAAmB;IAC9D,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,WAAW,OAAO;IACtB,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;CACvC;AAED,qBAAa,cAAe,YAAW,OAAO,EAAE,OAAO;;IACrD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAUlB,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,UAAU;IAyBpB,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAmBrC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAItB;AAID,wBAAsB,eAAe,CACnC,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,UAAU,GAAG,SAAS,EAChC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACrC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA2GpC;AAuED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,cAAc,EAC3B,MAAM,EAAE,QAAQ,GACf,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAEvC;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,cAAc,EAC3B,GAAG,EAAE,QAAQ,GACZ,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAOvC"}
|
|
@@ -233,7 +233,9 @@ async function checkSchemaVersionAndIncrementLastMutationID(tx, shard, clientGro
|
|
|
233
233
|
DO UPDATE SET "lastMutationID" = current."lastMutationID" + 1
|
|
234
234
|
RETURNING "lastMutationID"
|
|
235
235
|
`,
|
|
236
|
-
|
|
236
|
+
schemaVersion === undefined
|
|
237
|
+
? undefined
|
|
238
|
+
: tx `SELECT "minSupportedVersion", "maxSupportedVersion"
|
|
237
239
|
FROM ${tx(appSchema(shard))}."schemaVersions"`,
|
|
238
240
|
]);
|
|
239
241
|
// ABORT if the resulting lastMutationID is not equal to the receivedMutationID.
|
|
@@ -246,8 +248,10 @@ async function checkSchemaVersionAndIncrementLastMutationID(tx, shard, clientGro
|
|
|
246
248
|
message: `Push contains unexpected mutation id ${receivedMutationID} for client ${clientID}. Expected mutation id ${lastMutationID.toString()}.`,
|
|
247
249
|
});
|
|
248
250
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
+
if (schemaVersion !== undefined && supportedVersionRange !== undefined) {
|
|
252
|
+
assert(supportedVersionRange.length === 1);
|
|
253
|
+
throwErrorForClientIfSchemaVersionNotSupported(schemaVersion, supportedVersionRange[0]);
|
|
254
|
+
}
|
|
251
255
|
}
|
|
252
256
|
class MutationAlreadyProcessedError extends Error {
|
|
253
257
|
constructor(clientID, received, actual) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutagen.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAC,MAAM,gCAAgC,CAAC;AAExE,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAE5C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,CAAC,MAAM,kCAAkC,CAAC;AACtD,OAAO,KAAK,SAAS,MAAM,kDAAkD,CAAC;AAC9E,OAAO,KAAK,YAAY,MAAM,qDAAqD,CAAC;AACpF,OAAO,EACL,qBAAqB,GAEtB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAON,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AACtD,OAAO,EACL,mBAAmB,GAEpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAiB,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAC,cAAc,EAAC,MAAM,iCAAiC,CAAC;AAE/D,OAAO,EAAC,8CAA8C,EAAC,MAAM,gCAAgC,CAAC;AAC9F,OAAO,EAAC,SAAS,EAAE,cAAc,EAAe,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAC,oBAAoB,EAAC,MAAM,sCAAsC,CAAC;AAkB1E,MAAM,OAAO,cAAc;IAChB,EAAE,CAAS;IACX,GAAG,CAAa;IAChB,SAAS,CAAa;IACtB,MAAM,CAAU;IAChB,QAAQ,GAAG,QAAQ,EAAE,CAAC;IACtB,QAAQ,CAAW;IACnB,gBAAgB,CAAsB;IACtC,QAAQ,CAAmC;IAEpD,YACE,EAAc,EACd,KAAc,EACd,aAAqB,EACrB,QAAoB,EACpB,MAAkB;QAElB,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;YAC1D,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,mBAAmB,CAC7C,IAAI,CAAC,GAAG,EACR,MAAM,EACN,IAAI,CAAC,QAAQ,EACb,KAAK,CAAC,KAAK,EACX,aAAa,CACd,CAAC;QAEF,IAAI,MAAM,CAAC,oBAAoB,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CACtC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EACpC,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAChC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,eAAe,CACb,QAAkB,EAClB,QAAgC,EAChC,
|
|
1
|
+
{"version":3,"file":"mutagen.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-processor.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/change-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"change-processor.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/change-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAqBjD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAwB5D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AActF,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;;gBAexB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI;IAqBrD,KAAK,CAAC,EAAE,EAAE,UAAU;IAIpB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO;CAwItE"}
|
|
@@ -3,11 +3,12 @@ import { AbortError } from "../../../../shared/src/abort-error.js";
|
|
|
3
3
|
import { assert, unreachable } from "../../../../shared/src/asserts.js";
|
|
4
4
|
import { must } from "../../../../shared/src/must.js";
|
|
5
5
|
import { columnDef, createIndexStatement, createTableStatement, } from "../../db/create.js";
|
|
6
|
-
import { listIndexes, listTables } from "../../db/lite-tables.js";
|
|
6
|
+
import { computeZqlSpecs, listIndexes, listTables, } from "../../db/lite-tables.js";
|
|
7
7
|
import { mapPostgresToLite, mapPostgresToLiteColumn, mapPostgresToLiteIndex, } from "../../db/pg-to-lite.js";
|
|
8
8
|
import { stringify } from "../../types/bigint-json.js";
|
|
9
9
|
import { liteRow } from "../../types/lite.js";
|
|
10
10
|
import { liteTableName } from "../../types/names.js";
|
|
11
|
+
import { normalizedKeyOrder } from "../../types/row-key.js";
|
|
11
12
|
import { id } from "../../types/sql.js";
|
|
12
13
|
import { logDeleteOp, logResetOp, logSetOp, logTruncateOp, } from "./schema/change-log.js";
|
|
13
14
|
import { ZERO_VERSION_COLUMN_NAME, updateReplicationWatermark, } from "./schema/replication-state.js";
|
|
@@ -222,25 +223,43 @@ class TransactionProcessor {
|
|
|
222
223
|
}
|
|
223
224
|
#reloadTableSpecs() {
|
|
224
225
|
this.#tableSpecs.clear();
|
|
225
|
-
|
|
226
|
+
// zqlSpecs include the primary key derived from unique indexes
|
|
227
|
+
const zqlSpecs = computeZqlSpecs(this.#lc, this.#db.db);
|
|
228
|
+
for (let spec of listTables(this.#db.db)) {
|
|
229
|
+
if (!spec.primaryKey) {
|
|
230
|
+
spec = {
|
|
231
|
+
...spec,
|
|
232
|
+
primaryKey: [
|
|
233
|
+
...(zqlSpecs.get(spec.name)?.tableSpec.primaryKey ?? []),
|
|
234
|
+
],
|
|
235
|
+
};
|
|
236
|
+
}
|
|
226
237
|
this.#tableSpecs.set(spec.name, spec);
|
|
227
238
|
}
|
|
228
239
|
}
|
|
229
240
|
#tableSpec(name) {
|
|
230
241
|
return must(this.#tableSpecs.get(name), `Unknown table ${name}`);
|
|
231
242
|
}
|
|
243
|
+
#getKey({ row, numCols }, { relation }) {
|
|
244
|
+
const keyColumns = relation.replicaIdentity !== 'full'
|
|
245
|
+
? relation.keyColumns // already a suitable key
|
|
246
|
+
: this.#tableSpec(liteTableName(relation)).primaryKey;
|
|
247
|
+
if (!keyColumns?.length) {
|
|
248
|
+
throw new Error(`Cannot replicate table "${relation.name}" without a PRIMARY KEY or UNIQUE INDEX`);
|
|
249
|
+
}
|
|
250
|
+
// For the common case (replica identity default), the row is already the
|
|
251
|
+
// key for deletes and updates, in which case a new object can be avoided.
|
|
252
|
+
return numCols === keyColumns.length
|
|
253
|
+
? row
|
|
254
|
+
: Object.fromEntries(keyColumns.map(col => [col, row[col]]));
|
|
255
|
+
}
|
|
232
256
|
processInsert(insert) {
|
|
233
257
|
const table = liteTableName(insert.relation);
|
|
234
258
|
const newRow = liteRow(insert.new, this.#tableSpec(table));
|
|
235
|
-
|
|
236
|
-
...newRow,
|
|
259
|
+
this.#upsert(table, {
|
|
260
|
+
...newRow.row,
|
|
237
261
|
[ZERO_VERSION_COLUMN_NAME]: this.#version,
|
|
238
|
-
};
|
|
239
|
-
const columns = Object.keys(row).map(c => id(c));
|
|
240
|
-
this.#db.run(`
|
|
241
|
-
INSERT INTO ${id(table)} (${columns.join(',')})
|
|
242
|
-
VALUES (${new Array(columns.length).fill('?').join(',')})
|
|
243
|
-
`, Object.values(row));
|
|
262
|
+
});
|
|
244
263
|
if (insert.relation.keyColumns.length === 0) {
|
|
245
264
|
// INSERTs can be replicated for rows without a PRIMARY KEY or a
|
|
246
265
|
// UNIQUE INDEX. These are written to the replica but not recorded
|
|
@@ -251,43 +270,57 @@ class TransactionProcessor {
|
|
|
251
270
|
// loaded via hydration.)
|
|
252
271
|
return;
|
|
253
272
|
}
|
|
254
|
-
const key =
|
|
273
|
+
const key = this.#getKey(newRow, insert);
|
|
255
274
|
this.#logSetOp(table, key);
|
|
256
275
|
}
|
|
276
|
+
#upsert(table, row) {
|
|
277
|
+
const columns = Object.keys(row).map(c => id(c));
|
|
278
|
+
this.#db.run(`
|
|
279
|
+
INSERT OR REPLACE INTO ${id(table)} (${columns.join(',')})
|
|
280
|
+
VALUES (${new Array(columns.length).fill('?').join(',')})
|
|
281
|
+
`, Object.values(row));
|
|
282
|
+
}
|
|
283
|
+
// Note: Updates are applied as "upserts", so that the `new` row
|
|
284
|
+
// is guaranteed to exist even if its previous incarnation did not.
|
|
285
|
+
// This is necessary to facilitate "resumptive" replication, whereby
|
|
286
|
+
// rows of tables that were not initially-synced are introduced into
|
|
287
|
+
// into the replica via updates. Resumptive replication can happen
|
|
288
|
+
// when (1) an existing table is added to the apps publication or
|
|
289
|
+
// (2) a new sharding key is added to a shard during resharding.
|
|
257
290
|
processUpdate(update) {
|
|
258
291
|
const table = liteTableName(update.relation);
|
|
259
292
|
const newRow = liteRow(update.new, this.#tableSpec(table));
|
|
260
|
-
const row = {
|
|
261
|
-
...newRow,
|
|
262
|
-
[ZERO_VERSION_COLUMN_NAME]: this.#version,
|
|
263
|
-
};
|
|
264
293
|
// update.key is set with the old values if the key has changed.
|
|
265
294
|
const oldKey = update.key
|
|
266
|
-
? liteRow(update.key, this.#tableSpec(table))
|
|
295
|
+
? this.#getKey(liteRow(update.key, this.#tableSpec(table)), update)
|
|
267
296
|
: null;
|
|
268
|
-
const newKey =
|
|
269
|
-
const
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
if (oldKey) {
|
|
278
|
-
this.#logDeleteOp(table, oldKey);
|
|
297
|
+
const newKey = this.#getKey(newRow, update);
|
|
298
|
+
const oldKeyString = oldKey ? this.#logDeleteOp(table, oldKey) : null;
|
|
299
|
+
const newKeyString = this.#logSetOp(table, newKey);
|
|
300
|
+
if (oldKey && oldKeyString !== newKeyString) {
|
|
301
|
+
// Because the change is applied with an INSERT instead of an UPDATE,
|
|
302
|
+
// the previous row, if its key was different, is explicitly deleted.
|
|
303
|
+
// In general, it is expected changing the key of a row is an
|
|
304
|
+
// uncommon operation.
|
|
305
|
+
this.#delete(table, oldKey);
|
|
279
306
|
}
|
|
280
|
-
this.#
|
|
307
|
+
this.#upsert(table, {
|
|
308
|
+
...newRow.row,
|
|
309
|
+
[ZERO_VERSION_COLUMN_NAME]: this.#version,
|
|
310
|
+
});
|
|
281
311
|
}
|
|
282
312
|
processDelete(del) {
|
|
283
313
|
const table = liteTableName(del.relation);
|
|
284
|
-
const rowKey = liteRow(del.key, this.#tableSpec(table));
|
|
285
|
-
|
|
286
|
-
this.#db.run(`DELETE FROM ${id(table)} WHERE ${conds.join(' AND ')}`, Object.values(rowKey));
|
|
314
|
+
const rowKey = this.#getKey(liteRow(del.key, this.#tableSpec(table)), del);
|
|
315
|
+
this.#delete(table, rowKey);
|
|
287
316
|
if (this.#txMode !== 'INITIAL-SYNC') {
|
|
288
317
|
this.#logDeleteOp(table, rowKey);
|
|
289
318
|
}
|
|
290
319
|
}
|
|
320
|
+
#delete(table, rowKey) {
|
|
321
|
+
const conds = Object.keys(rowKey).map(col => `${id(col)}=?`);
|
|
322
|
+
this.#db.run(`DELETE FROM ${id(table)} WHERE ${conds.join(' AND ')}`, Object.values(rowKey));
|
|
323
|
+
}
|
|
291
324
|
processTruncate(truncate) {
|
|
292
325
|
for (const relation of truncate.relations) {
|
|
293
326
|
const table = liteTableName(relation);
|
|
@@ -389,13 +422,15 @@ class TransactionProcessor {
|
|
|
389
422
|
}
|
|
390
423
|
#logSetOp(table, key) {
|
|
391
424
|
if (this.#txMode !== 'INITIAL-SYNC') {
|
|
392
|
-
logSetOp(this.#db, this.#version, table, key);
|
|
425
|
+
return logSetOp(this.#db, this.#version, table, key);
|
|
393
426
|
}
|
|
427
|
+
return stringify(normalizedKeyOrder(key));
|
|
394
428
|
}
|
|
395
429
|
#logDeleteOp(table, key) {
|
|
396
430
|
if (this.#txMode !== 'INITIAL-SYNC') {
|
|
397
|
-
logDeleteOp(this.#db, this.#version, table, key);
|
|
431
|
+
return logDeleteOp(this.#db, this.#version, table, key);
|
|
398
432
|
}
|
|
433
|
+
return stringify(normalizedKeyOrder(key));
|
|
399
434
|
}
|
|
400
435
|
#logTruncateOp(table) {
|
|
401
436
|
if (this.#txMode !== 'INITIAL-SYNC') {
|