@rocicorp/zero 0.11.2025011402 → 0.11.2025011801
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/{chunk-AII6TS5B.js → chunk-QV5ZN4MA.js} +635 -1834
- package/out/chunk-QV5ZN4MA.js.map +7 -0
- package/out/react.js.map +2 -2
- package/out/shared/src/btree-set.d.ts +34 -0
- package/out/shared/src/btree-set.d.ts.map +1 -0
- package/out/shared/src/btree-set.js +528 -0
- package/out/shared/src/btree-set.js.map +1 -0
- package/out/shared/src/expand.d.ts +3 -0
- package/out/shared/src/expand.d.ts.map +1 -1
- package/out/solid.js +7 -2
- package/out/solid.js.map +2 -2
- package/out/zero-advanced/src/mod.d.ts +1 -1
- package/out/zero-advanced/src/mod.d.ts.map +1 -1
- package/out/zero-cache/src/auth/load-schema.d.ts +1 -1
- package/out/zero-cache/src/auth/load-schema.d.ts.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts +1 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +3 -6
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/db/lite-tables.d.ts +14 -1
- package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
- package/out/zero-cache/src/db/lite-tables.js +89 -6
- package/out/zero-cache/src/db/lite-tables.js.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.js +3 -1
- package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
- package/out/zero-cache/src/db/postgres-replica-identity-enum.d.ts +9 -0
- package/out/zero-cache/src/db/postgres-replica-identity-enum.d.ts.map +1 -0
- package/out/zero-cache/src/db/postgres-replica-identity-enum.js +7 -0
- package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -0
- package/out/zero-cache/src/db/specs.d.ts +39 -10
- package/out/zero-cache/src/db/specs.d.ts.map +1 -1
- package/out/zero-cache/src/db/specs.js +8 -1
- package/out/zero-cache/src/db/specs.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +1 -1
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/life-cycle.d.ts +2 -2
- package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -1
- package/out/zero-cache/src/server/life-cycle.js +12 -3
- package/out/zero-cache/src/server/life-cycle.js.map +1 -1
- package/out/zero-cache/src/server/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/main.js +11 -6
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/multi/config.d.ts +14 -14
- package/out/zero-cache/src/server/multi/config.d.ts.map +1 -1
- package/out/zero-cache/src/server/multi/config.js +24 -2
- package/out/zero-cache/src/server/multi/config.js.map +1 -1
- package/out/zero-cache/src/server/multi/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/multi/main.js +28 -8
- package/out/zero-cache/src/server/multi/main.js.map +1 -1
- package/out/zero-cache/src/server/multi/tenant-dispatcher.d.ts +1 -1
- package/out/zero-cache/src/server/multi/tenant-dispatcher.d.ts.map +1 -1
- package/out/zero-cache/src/server/multi/tenant-dispatcher.js +15 -3
- package/out/zero-cache/src/server/multi/tenant-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/replicator.js +2 -3
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +4 -4
- 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 +50 -32
- 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 +45 -25
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.js +6 -28
- package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +18 -10
- package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/published.js +14 -7
- package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +7 -4
- package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js +29 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts +2 -2
- package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js +8 -4
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/sync-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/sync-schema.js +1 -0
- package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts +10 -10
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +17 -15
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +2 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/mod.d.ts +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/mod.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/mod.js +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/mod.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts +38 -0
- package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/status.js +14 -0
- package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +3 -13
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +3 -10
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +7 -3
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +30 -24
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +6 -4
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +4 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +5 -5
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +3 -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 +18 -10
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.d.ts.map +1 -1
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.js +2 -16
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.js.map +1 -1
- package/out/zero-cache/src/services/http-service.d.ts +1 -1
- package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/http-service.js +1 -0
- package/out/zero-cache/src/services/http-service.js.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.js +6 -2
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +15 -5
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js +4 -2
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- 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 +20 -51
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +0 -5
- 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 +18 -35
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/types/processes.d.ts.map +1 -1
- package/out/zero-cache/src/types/processes.js +17 -2
- package/out/zero-cache/src/types/processes.js.map +1 -1
- package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
- package/out/zero-cache/src/types/row-key.js +7 -1
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/types/ws.d.ts +4 -0
- package/out/zero-cache/src/types/ws.d.ts.map +1 -0
- package/out/zero-cache/src/types/ws.js +19 -0
- package/out/zero-cache/src/types/ws.js.map +1 -0
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/crud.d.ts +3 -4
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/keys.d.ts +2 -2
- package/out/zero-client/src/client/keys.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +1 -1
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/mod.d.ts +5 -4
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-react/src/use-query.d.ts +6 -5
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-schema/src/builder/relationship-builder.d.ts +50 -0
- package/out/zero-schema/src/builder/relationship-builder.d.ts.map +1 -0
- package/out/zero-schema/src/builder/relationship-builder.js +24 -0
- package/out/zero-schema/src/builder/relationship-builder.js.map +1 -0
- package/out/zero-schema/src/builder/schema-builder.d.ts +40 -0
- package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -0
- package/out/zero-schema/src/builder/schema-builder.js +51 -0
- package/out/zero-schema/src/builder/schema-builder.js.map +1 -0
- package/out/zero-schema/src/builder/table-builder.d.ts +69 -0
- package/out/zero-schema/src/builder/table-builder.d.ts.map +1 -0
- package/out/zero-schema/src/builder/table-builder.js +102 -0
- package/out/zero-schema/src/builder/table-builder.js.map +1 -0
- package/out/zero-schema/src/mod.d.ts +2 -2
- package/out/zero-schema/src/mod.d.ts.map +1 -1
- package/out/zero-schema/src/permissions.d.ts +11 -12
- package/out/zero-schema/src/permissions.d.ts.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 +12 -61
- package/out/zero-schema/src/schema-config.js.map +1 -1
- package/out/zero-schema/src/table-schema.d.ts +28 -53
- package/out/zero-schema/src/table-schema.d.ts.map +1 -1
- package/out/zero-schema/src/table-schema.js +6 -13
- package/out/zero-schema/src/table-schema.js.map +1 -1
- package/out/zero-solid/src/solid-view.d.ts +4 -3
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/zero-solid/src/use-query.d.ts +5 -4
- package/out/zero-solid/src/use-query.d.ts.map +1 -1
- package/out/zero.js +17 -7
- package/out/zql/src/ivm/exists.d.ts +1 -1
- package/out/zql/src/ivm/exists.d.ts.map +1 -1
- package/out/zql/src/ivm/exists.js +3 -3
- package/out/zql/src/ivm/exists.js.map +1 -1
- package/out/zql/src/ivm/fan-in.d.ts +1 -1
- package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
- package/out/zql/src/ivm/fan-in.js +3 -2
- package/out/zql/src/ivm/fan-in.js.map +1 -1
- package/out/zql/src/ivm/filter.d.ts +1 -1
- package/out/zql/src/ivm/filter.d.ts.map +1 -1
- package/out/zql/src/ivm/filter.js +3 -3
- package/out/zql/src/ivm/filter.js.map +1 -1
- package/out/zql/src/ivm/join.d.ts +1 -1
- package/out/zql/src/ivm/join.d.ts.map +1 -1
- package/out/zql/src/ivm/join.js +2 -3
- package/out/zql/src/ivm/join.js.map +1 -1
- package/out/zql/src/ivm/memory-source.js +8 -10
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/memory-storage.d.ts.map +1 -1
- package/out/zql/src/ivm/operator.d.ts +5 -0
- package/out/zql/src/ivm/operator.d.ts.map +1 -1
- package/out/zql/src/ivm/operator.js +9 -0
- package/out/zql/src/ivm/operator.js.map +1 -1
- package/out/zql/src/ivm/skip.d.ts +1 -1
- package/out/zql/src/ivm/skip.d.ts.map +1 -1
- package/out/zql/src/ivm/skip.js +2 -3
- package/out/zql/src/ivm/skip.js.map +1 -1
- package/out/zql/src/ivm/take.d.ts +1 -1
- package/out/zql/src/ivm/take.d.ts.map +1 -1
- package/out/zql/src/ivm/take.js +2 -3
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/view.d.ts +3 -3
- package/out/zql/src/ivm/view.d.ts.map +1 -1
- package/out/zql/src/query/auth-query.d.ts +9 -10
- package/out/zql/src/query/auth-query.d.ts.map +1 -1
- package/out/zql/src/query/auth-query.js +6 -7
- package/out/zql/src/query/auth-query.js.map +1 -1
- package/out/zql/src/query/expression.d.ts +11 -13
- package/out/zql/src/query/expression.d.ts.map +1 -1
- package/out/zql/src/query/expression.js +1 -1
- package/out/zql/src/query/expression.js.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +26 -25
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +76 -52
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-internal.d.ts +5 -5
- package/out/zql/src/query/query-internal.d.ts.map +1 -1
- package/out/zql/src/query/query.d.ts +37 -80
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/query.js +0 -1
- package/out/zql/src/query/query.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +33 -11
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +4 -4
- package/out/btree/b+tree.d.ts +0 -471
- package/out/btree/b+tree.d.ts.map +0 -1
- package/out/btree/b+tree.js +0 -1708
- package/out/btree/b+tree.js.map +0 -1
- package/out/btree/interfaces.d.ts +0 -270
- package/out/btree/interfaces.d.ts.map +0 -1
- package/out/btree/interfaces.js +0 -3
- package/out/btree/interfaces.js.map +0 -1
- package/out/btree/src/mod.d.ts +0 -2
- package/out/btree/src/mod.d.ts.map +0 -1
- package/out/btree/src/mod.js +0 -2
- package/out/btree/src/mod.js.map +0 -1
- package/out/chunk-AII6TS5B.js.map +0 -7
- package/out/shared/src/sorted-entries.d.ts +0 -2
- package/out/shared/src/sorted-entries.d.ts.map +0 -1
- package/out/shared/src/sorted-entries.js +0 -6
- package/out/shared/src/sorted-entries.js.map +0 -1
- package/out/zero-cache/src/db/queries.d.ts +0 -24
- package/out/zero-cache/src/db/queries.d.ts.map +0 -1
- package/out/zero-cache/src/db/queries.js +0 -60
- package/out/zero-cache/src/db/queries.js.map +0 -1
- package/out/zero-schema/src/column.d.ts +0 -79
- package/out/zero-schema/src/column.d.ts.map +0 -1
- package/out/zero-schema/src/normalize-table-schema.d.ts +0 -51
- package/out/zero-schema/src/normalize-table-schema.d.ts.map +0 -1
- package/out/zero-schema/src/normalize-table-schema.js +0 -122
- package/out/zero-schema/src/normalize-table-schema.js.map +0 -1
- package/out/zero-schema/src/normalized-schema.d.ts +0 -22
- package/out/zero-schema/src/normalized-schema.d.ts.map +0 -1
- package/out/zero-schema/src/normalized-schema.js +0 -48
- package/out/zero-schema/src/normalized-schema.js.map +0 -1
- package/out/zero-schema/src/schema.d.ts +0 -9
- package/out/zero-schema/src/schema.d.ts.map +0 -1
- package/out/zero-schema/src/schema.js +0 -9
- package/out/zero-schema/src/schema.js.map +0 -1
|
@@ -50,14 +50,14 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
50
50
|
spec: v.ObjectType<Omit<{
|
|
51
51
|
name: v.Type<string>;
|
|
52
52
|
columns: v.Type<Record<string, {
|
|
53
|
-
pgTypeClass?: "e" | "
|
|
53
|
+
pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
|
|
54
54
|
characterMaximumLength?: number | null | undefined;
|
|
55
55
|
notNull?: boolean | null | undefined;
|
|
56
56
|
dflt?: string | null | undefined;
|
|
57
57
|
pos: number;
|
|
58
58
|
dataType: string;
|
|
59
59
|
}>>;
|
|
60
|
-
primaryKey: v.
|
|
60
|
+
primaryKey: v.Optional<string[]>;
|
|
61
61
|
}, "schema"> & {
|
|
62
62
|
schema: v.Type<string>;
|
|
63
63
|
}, undefined>;
|
|
@@ -82,7 +82,7 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
82
82
|
spec: v.ObjectType<{
|
|
83
83
|
pos: v.Type<number>;
|
|
84
84
|
dataType: v.Type<string>;
|
|
85
|
-
pgTypeClass: v.Optional<"e" | "
|
|
85
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
86
86
|
characterMaximumLength: v.Optional<number | null>;
|
|
87
87
|
notNull: v.Optional<boolean | null>;
|
|
88
88
|
dflt: v.Optional<string | null>;
|
|
@@ -99,7 +99,7 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
99
99
|
spec: v.ObjectType<{
|
|
100
100
|
pos: v.Type<number>;
|
|
101
101
|
dataType: v.Type<string>;
|
|
102
|
-
pgTypeClass: v.Optional<"e" | "
|
|
102
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
103
103
|
characterMaximumLength: v.Optional<number | null>;
|
|
104
104
|
notNull: v.Optional<boolean | null>;
|
|
105
105
|
dflt: v.Optional<string | null>;
|
|
@@ -110,7 +110,7 @@ declare const data: v.TupleType<[v.Type<"data">, v.UnionType<[v.ObjectType<{
|
|
|
110
110
|
spec: v.ObjectType<{
|
|
111
111
|
pos: v.Type<number>;
|
|
112
112
|
dataType: v.Type<string>;
|
|
113
|
-
pgTypeClass: v.Optional<"e" | "
|
|
113
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
114
114
|
characterMaximumLength: v.Optional<number | null>;
|
|
115
115
|
notNull: v.Optional<boolean | null>;
|
|
116
116
|
dflt: v.Optional<string | null>;
|
|
@@ -208,14 +208,14 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
208
208
|
spec: v.ObjectType<Omit<{
|
|
209
209
|
name: v.Type<string>;
|
|
210
210
|
columns: v.Type<Record<string, {
|
|
211
|
-
pgTypeClass?: "e" | "
|
|
211
|
+
pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
|
|
212
212
|
characterMaximumLength?: number | null | undefined;
|
|
213
213
|
notNull?: boolean | null | undefined;
|
|
214
214
|
dflt?: string | null | undefined;
|
|
215
215
|
pos: number;
|
|
216
216
|
dataType: string;
|
|
217
217
|
}>>;
|
|
218
|
-
primaryKey: v.
|
|
218
|
+
primaryKey: v.Optional<string[]>;
|
|
219
219
|
}, "schema"> & {
|
|
220
220
|
schema: v.Type<string>;
|
|
221
221
|
}, undefined>;
|
|
@@ -240,7 +240,7 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
240
240
|
spec: v.ObjectType<{
|
|
241
241
|
pos: v.Type<number>;
|
|
242
242
|
dataType: v.Type<string>;
|
|
243
|
-
pgTypeClass: v.Optional<"e" | "
|
|
243
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
244
244
|
characterMaximumLength: v.Optional<number | null>;
|
|
245
245
|
notNull: v.Optional<boolean | null>;
|
|
246
246
|
dflt: v.Optional<string | null>;
|
|
@@ -257,7 +257,7 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
257
257
|
spec: v.ObjectType<{
|
|
258
258
|
pos: v.Type<number>;
|
|
259
259
|
dataType: v.Type<string>;
|
|
260
|
-
pgTypeClass: v.Optional<"e" | "
|
|
260
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
261
261
|
characterMaximumLength: v.Optional<number | null>;
|
|
262
262
|
notNull: v.Optional<boolean | null>;
|
|
263
263
|
dflt: v.Optional<string | null>;
|
|
@@ -268,7 +268,7 @@ export declare const changeStreamDataSchema: v.UnionType<[v.TupleType<[v.Type<"b
|
|
|
268
268
|
spec: v.ObjectType<{
|
|
269
269
|
pos: v.Type<number>;
|
|
270
270
|
dataType: v.Type<string>;
|
|
271
|
-
pgTypeClass: v.Optional<"e" | "
|
|
271
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
272
272
|
characterMaximumLength: v.Optional<number | null>;
|
|
273
273
|
notNull: v.Optional<boolean | null>;
|
|
274
274
|
dflt: v.Optional<string | null>;
|
|
@@ -366,14 +366,14 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
366
366
|
spec: v.ObjectType<Omit<{
|
|
367
367
|
name: v.Type<string>;
|
|
368
368
|
columns: v.Type<Record<string, {
|
|
369
|
-
pgTypeClass?: "e" | "
|
|
369
|
+
pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
|
|
370
370
|
characterMaximumLength?: number | null | undefined;
|
|
371
371
|
notNull?: boolean | null | undefined;
|
|
372
372
|
dflt?: string | null | undefined;
|
|
373
373
|
pos: number;
|
|
374
374
|
dataType: string;
|
|
375
375
|
}>>;
|
|
376
|
-
primaryKey: v.
|
|
376
|
+
primaryKey: v.Optional<string[]>;
|
|
377
377
|
}, "schema"> & {
|
|
378
378
|
schema: v.Type<string>;
|
|
379
379
|
}, undefined>;
|
|
@@ -398,7 +398,7 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
398
398
|
spec: v.ObjectType<{
|
|
399
399
|
pos: v.Type<number>;
|
|
400
400
|
dataType: v.Type<string>;
|
|
401
|
-
pgTypeClass: v.Optional<"e" | "
|
|
401
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
402
402
|
characterMaximumLength: v.Optional<number | null>;
|
|
403
403
|
notNull: v.Optional<boolean | null>;
|
|
404
404
|
dflt: v.Optional<string | null>;
|
|
@@ -415,7 +415,7 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
415
415
|
spec: v.ObjectType<{
|
|
416
416
|
pos: v.Type<number>;
|
|
417
417
|
dataType: v.Type<string>;
|
|
418
|
-
pgTypeClass: v.Optional<"e" | "
|
|
418
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
419
419
|
characterMaximumLength: v.Optional<number | null>;
|
|
420
420
|
notNull: v.Optional<boolean | null>;
|
|
421
421
|
dflt: v.Optional<string | null>;
|
|
@@ -426,7 +426,7 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
426
426
|
spec: v.ObjectType<{
|
|
427
427
|
pos: v.Type<number>;
|
|
428
428
|
dataType: v.Type<string>;
|
|
429
|
-
pgTypeClass: v.Optional<"e" | "
|
|
429
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
430
430
|
characterMaximumLength: v.Optional<number | null>;
|
|
431
431
|
notNull: v.Optional<boolean | null>;
|
|
432
432
|
dflt: v.Optional<string | null>;
|
|
@@ -469,6 +469,8 @@ export declare const changeStreamMessageSchema: v.UnionType<[v.UnionType<[v.Tupl
|
|
|
469
469
|
tag: v.Type<"rollback">;
|
|
470
470
|
}, undefined>]>]>, v.TupleType<[v.Type<"control">, v.ObjectType<{
|
|
471
471
|
tag: v.Type<"reset-required">;
|
|
472
|
+
}, undefined>]>, v.TupleType<[v.Type<"status">, v.ObjectType<{}, undefined>, v.ObjectType<{
|
|
473
|
+
watermark: v.Type<string>;
|
|
472
474
|
}, undefined>]>]>;
|
|
473
475
|
export type ChangeStreamMessage = v.Infer<typeof changeStreamMessageSchema>;
|
|
474
476
|
export {};
|
|
@@ -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;
|
|
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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as v from '../../../../../../shared/src/valita.js';
|
|
2
2
|
import { resetRequiredSchema } from './control.js';
|
|
3
3
|
import { beginSchema, commitSchema, dataChangeSchema, rollbackSchema, } from './data.js';
|
|
4
|
+
import { statusMessageSchema } from './status.js';
|
|
4
5
|
const begin = v.tuple([
|
|
5
6
|
v.literal('begin'),
|
|
6
7
|
beginSchema,
|
|
@@ -19,5 +20,5 @@ export const changeStreamControlSchema = v.tuple([
|
|
|
19
20
|
resetRequiredSchema, // TODO: Add statusRequestedSchema
|
|
20
21
|
]);
|
|
21
22
|
/** Downstream messages consist of data plane and control plane messages. */
|
|
22
|
-
export const changeStreamMessageSchema = v.union(changeStreamDataSchema, changeStreamControlSchema);
|
|
23
|
+
export const changeStreamMessageSchema = v.union(changeStreamDataSchema, changeStreamControlSchema, statusMessageSchema);
|
|
23
24
|
//# sourceMappingURL=downstream.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downstream.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/downstream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAC5D,OAAO,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,cAAc,GACf,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"downstream.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/downstream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAC5D,OAAO,EAAC,mBAAmB,EAAC,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAEhD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACpB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAClB,WAAW;IACX,CAAC,CAAC,MAAM,CAAC,EAAC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,CAAC;CACxC,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC5D,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnB,YAAY;IACZ,CAAC,CAAC,MAAM,CAAC,EAAC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,CAAC;CAClC,CAAC,CAAC;AACH,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;AAOlE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAG7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC/C,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACpB,mBAAmB,EAAE,kCAAkC;CACxD,CAAC,CAAC;AAGH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC9C,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,CACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/mod.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/mod.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/mod.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/mod.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as v from '../../../../../../shared/src/valita.js';
|
|
2
|
+
/**
|
|
3
|
+
* The StatusMessage payload itself is unspecified. The `zero-cache` will
|
|
4
|
+
* send the Commit payload when acknowledging a completed transaction, and
|
|
5
|
+
* will echo back whatever message was sent from the ChangeSource when
|
|
6
|
+
* acknowledging a downstream StatusMessage.
|
|
7
|
+
*/
|
|
8
|
+
export declare const statusSchema: v.ObjectType<{}, undefined>;
|
|
9
|
+
export declare const statusMessageSchema: v.TupleType<[v.Type<"status">, v.ObjectType<{}, undefined>, v.ObjectType<{
|
|
10
|
+
watermark: v.Type<string>;
|
|
11
|
+
}, undefined>]>;
|
|
12
|
+
/**
|
|
13
|
+
* A StatusMessage conveys positional information from both the ChangeSource
|
|
14
|
+
* and the `zero-cache`.
|
|
15
|
+
*
|
|
16
|
+
* A StatusMessage from the ChangeSource indicates a position in its change
|
|
17
|
+
* log. Generally, the watermarks sent in `Commit` messages already convey
|
|
18
|
+
* this information, but a StatusMessage may also be sent to indicate that the
|
|
19
|
+
* log has progressed without any corresponding changes relevant to the
|
|
20
|
+
* subscriber. The watermarks of commit messages and status messages must be
|
|
21
|
+
* monotonic in the stream of messages from the ChangeSource.
|
|
22
|
+
*
|
|
23
|
+
* The `zero-cache` sends StatusMessages to the ChangeSource:
|
|
24
|
+
*
|
|
25
|
+
* * when it has processed a `Commit` received from the ChangeSource
|
|
26
|
+
*
|
|
27
|
+
* * when it receives a `StatusMessage` and all preceding `Commit` messages
|
|
28
|
+
* have been processed
|
|
29
|
+
*
|
|
30
|
+
* This allows the ChangeSource to clean up change log entries appropriately.
|
|
31
|
+
*
|
|
32
|
+
* Note that StatusMessages from the ChangeSource are optional. If a
|
|
33
|
+
* ChangeSource implementation can track subscriber progress and clean up
|
|
34
|
+
* its change log purely from Commit-driven StatusMessages there is no need
|
|
35
|
+
* for the ChangeSource to send StatusMessages.
|
|
36
|
+
*/
|
|
37
|
+
export type StatusMessage = v.Infer<typeof statusMessageSchema>;
|
|
38
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,YAAY,6BAAe,CAAC;AAEzC,eAAO,MAAM,mBAAmB;;eAI9B,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as v from '../../../../../../shared/src/valita.js';
|
|
2
|
+
/**
|
|
3
|
+
* The StatusMessage payload itself is unspecified. The `zero-cache` will
|
|
4
|
+
* send the Commit payload when acknowledging a completed transaction, and
|
|
5
|
+
* will echo back whatever message was sent from the ChangeSource when
|
|
6
|
+
* acknowledging a downstream StatusMessage.
|
|
7
|
+
*/
|
|
8
|
+
export const statusSchema = v.object({});
|
|
9
|
+
export const statusMessageSchema = v.tuple([
|
|
10
|
+
v.literal('status'),
|
|
11
|
+
statusSchema,
|
|
12
|
+
v.object({ watermark: v.string() }),
|
|
13
|
+
]);
|
|
14
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC;IACzC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACnB,YAAY;IACZ,CAAC,CAAC,MAAM,CAAC,EAAC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAC,CAAC;CAClC,CAAC,CAAC"}
|
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
import * as v from '../../../../../../shared/src/valita.js';
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
* either or both:
|
|
5
|
-
* * Indicate that it is connected and running, e.g. in response to an
|
|
6
|
-
* "ack-requested" message.
|
|
7
|
-
* * Indicate that it is caught up to a specific `watermark`.
|
|
8
|
-
*/
|
|
9
|
-
export declare const ackSchema: v.UnionType<[v.TupleType<[v.Type<"ack">]>, v.TupleType<[v.Type<"ack">, v.ObjectType<{
|
|
2
|
+
/** At the moment, the only upstream messages are status messages. */
|
|
3
|
+
export declare const changeSourceUpstreamSchema: v.TupleType<[v.Type<"status">, v.ObjectType<{}, undefined>, v.ObjectType<{
|
|
10
4
|
watermark: v.Type<string>;
|
|
11
|
-
}, undefined>]
|
|
12
|
-
/** At the moment, the only upstream messages are acks. */
|
|
13
|
-
export declare const changeSourceUpstreamSchema: v.UnionType<[v.TupleType<[v.Type<"ack">]>, v.TupleType<[v.Type<"ack">, v.ObjectType<{
|
|
14
|
-
watermark: v.Type<string>;
|
|
15
|
-
}, undefined>]>]>;
|
|
5
|
+
}, undefined>]>;
|
|
16
6
|
export type ChangeSourceUpstream = v.Infer<typeof changeSourceUpstreamSchema>;
|
|
17
7
|
//# sourceMappingURL=upstream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstream.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/upstream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"upstream.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/upstream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAG5D,sEAAsE;AACtE,eAAO,MAAM,0BAA0B;;eAAsB,CAAC;AAC9D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import * as v from '../../../../../../shared/src/valita.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* * Indicate that it is connected and running, e.g. in response to an
|
|
6
|
-
* "ack-requested" message.
|
|
7
|
-
* * Indicate that it is caught up to a specific `watermark`.
|
|
8
|
-
*/
|
|
9
|
-
export const ackSchema = v.union(v.tuple([v.literal('ack')]), v.tuple([v.literal('ack'), v.object({ watermark: v.string() })]));
|
|
10
|
-
/** At the moment, the only upstream messages are acks. */
|
|
11
|
-
export const changeSourceUpstreamSchema = ackSchema;
|
|
2
|
+
import { statusMessageSchema } from './status.js';
|
|
3
|
+
/** At the moment, the only upstream messages are status messages. */
|
|
4
|
+
export const changeSourceUpstreamSchema = statusMessageSchema;
|
|
12
5
|
//# sourceMappingURL=upstream.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstream.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/upstream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"upstream.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-source/protocol/current/upstream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,wCAAwC,CAAC;AAC5D,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAEhD,sEAAsE;AACtE,MAAM,CAAC,MAAM,0BAA0B,GAAG,mBAAmB,CAAC"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { LogContext } from '@rocicorp/logger';
|
|
2
|
+
import { IncomingMessage } from 'node:http';
|
|
3
|
+
import { type Worker } from '../../types/processes.js';
|
|
2
4
|
import { type Source } from '../../types/streams.js';
|
|
3
5
|
import { HttpService, type Options } from '../http-service.js';
|
|
4
6
|
import { type ChangeStreamer, type Downstream, type SubscriberContext } from './change-streamer.js';
|
|
5
|
-
export declare const CHANGES_URL_PATTERN = "/api/replication/:version/changes";
|
|
6
7
|
export declare class ChangeStreamerHttpServer extends HttpService {
|
|
7
8
|
#private;
|
|
8
9
|
readonly id = "change-streamer-http-server";
|
|
9
|
-
constructor(lc: LogContext, delegate: ChangeStreamer, opts: Options);
|
|
10
|
+
constructor(lc: LogContext, delegate: ChangeStreamer, opts: Options, parent: Worker);
|
|
10
11
|
}
|
|
11
12
|
export declare class ChangeStreamerHttpClient implements ChangeStreamer {
|
|
12
13
|
#private;
|
|
13
|
-
constructor(lc: LogContext,
|
|
14
|
+
constructor(lc: LogContext, uri: string);
|
|
14
15
|
subscribe(ctx: SubscriberContext): Promise<Source<Downstream>>;
|
|
15
16
|
}
|
|
17
|
+
type RequestHeaders = Pick<IncomingMessage, 'url' | 'headers'>;
|
|
18
|
+
export declare function getSubscriberContext(req: RequestHeaders): SubscriberContext;
|
|
19
|
+
export {};
|
|
16
20
|
//# sourceMappingURL=change-streamer-http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-streamer-http.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-http.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"change-streamer-http.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-http.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,eAAe,EAAC,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAsB,KAAK,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAIxE,OAAO,EAAC,WAAW,EAAE,KAAK,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAO9B,qBAAa,wBAAyB,SAAQ,WAAW;;IACvD,QAAQ,CAAC,EAAE,iCAAiC;gBAI1C,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM;CAuCjB;AAED,qBAAa,wBAAyB,YAAW,cAAc;;gBAIjD,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM;IAUvC,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;CAO/D;AAED,KAAK,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;AAE/D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,iBAAiB,CAW3E"}
|
|
@@ -1,39 +1,44 @@
|
|
|
1
1
|
import websocket from '@fastify/websocket';
|
|
2
2
|
import { LogContext } from '@rocicorp/logger';
|
|
3
|
-
import {} from '
|
|
3
|
+
import { IncomingMessage } from 'node:http';
|
|
4
4
|
import WebSocket from 'ws';
|
|
5
|
+
import {} from '../../types/processes.js';
|
|
5
6
|
import { streamIn, streamOut } from '../../types/streams.js';
|
|
6
7
|
import { URLParams } from '../../types/url-params.js';
|
|
8
|
+
import { closeWithProtocolError } from '../../types/ws.js';
|
|
9
|
+
import { installWebSocketReceiver } from '../dispatcher/websocket-handoff.js';
|
|
7
10
|
import { HttpService } from '../http-service.js';
|
|
8
11
|
import { downstreamSchema, } from './change-streamer.js';
|
|
9
|
-
|
|
12
|
+
const DIRECT_PATH_PATTERN = '/replication/:version/changes';
|
|
13
|
+
const TENANT_PATH_PATTERN = '/:tenant' + DIRECT_PATH_PATTERN;
|
|
14
|
+
const V0_CHANGES_PATH = '/replication/v0/changes';
|
|
10
15
|
export class ChangeStreamerHttpServer extends HttpService {
|
|
11
16
|
id = 'change-streamer-http-server';
|
|
12
17
|
#delegate;
|
|
13
|
-
constructor(lc, delegate, opts) {
|
|
18
|
+
constructor(lc, delegate, opts, parent) {
|
|
14
19
|
super('change-streamer-http-server', lc, opts, async (fastify) => {
|
|
15
20
|
await fastify.register(websocket);
|
|
16
21
|
fastify.get('/', (_req, res) => res.send('OK'));
|
|
17
|
-
fastify
|
|
18
|
-
|
|
22
|
+
// fastify does not support optional path components, so we just
|
|
23
|
+
// register both patterns.
|
|
24
|
+
fastify.get(DIRECT_PATH_PATTERN, { websocket: true }, this.#subscribe);
|
|
25
|
+
fastify.get(TENANT_PATH_PATTERN, { websocket: true }, this.#subscribe);
|
|
26
|
+
installWebSocketReceiver(fastify.websocketServer, this.#handleSubscription, parent);
|
|
19
27
|
});
|
|
20
28
|
this.#delegate = delegate;
|
|
21
29
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (req.url === '/' || req.url.startsWith('/?')) {
|
|
25
|
-
return; // Health check
|
|
26
|
-
}
|
|
30
|
+
#subscribe = async (ws, req) => {
|
|
31
|
+
let ctx;
|
|
27
32
|
try {
|
|
28
|
-
getSubscriberContext(req);
|
|
33
|
+
ctx = getSubscriberContext(req);
|
|
29
34
|
}
|
|
30
|
-
catch (
|
|
31
|
-
this._lc
|
|
32
|
-
|
|
35
|
+
catch (err) {
|
|
36
|
+
closeWithProtocolError(this._lc, ws, err);
|
|
37
|
+
return;
|
|
33
38
|
}
|
|
39
|
+
await this.#handleSubscription(ws, ctx);
|
|
34
40
|
};
|
|
35
|
-
#
|
|
36
|
-
const ctx = getSubscriberContext(req); // #checkSubscribe guarantees this.
|
|
41
|
+
#handleSubscription = async (ws, ctx) => {
|
|
37
42
|
const downstream = await this.#delegate.subscribe(ctx);
|
|
38
43
|
await streamOut(this._lc, downstream, ws);
|
|
39
44
|
};
|
|
@@ -41,13 +46,14 @@ export class ChangeStreamerHttpServer extends HttpService {
|
|
|
41
46
|
export class ChangeStreamerHttpClient {
|
|
42
47
|
#lc;
|
|
43
48
|
#uri;
|
|
44
|
-
constructor(lc,
|
|
49
|
+
constructor(lc, uri) {
|
|
50
|
+
const url = new URL(uri);
|
|
51
|
+
url.pathname += url.pathname.endsWith('/')
|
|
52
|
+
? V0_CHANGES_PATH.substring(1)
|
|
53
|
+
: V0_CHANGES_PATH;
|
|
54
|
+
uri = url.toString();
|
|
45
55
|
this.#lc = lc;
|
|
46
|
-
this.#uri =
|
|
47
|
-
(typeof uriOrPort === 'string'
|
|
48
|
-
? uriOrPort
|
|
49
|
-
: `ws://localhost:${uriOrPort}`) +
|
|
50
|
-
CHANGES_URL_PATTERN.replace(':version', 'v0');
|
|
56
|
+
this.#uri = uri;
|
|
51
57
|
}
|
|
52
58
|
subscribe(ctx) {
|
|
53
59
|
this.#lc.info?.(`connecting to change-streamer@${this.#uri}`);
|
|
@@ -56,8 +62,8 @@ export class ChangeStreamerHttpClient {
|
|
|
56
62
|
return streamIn(this.#lc, ws, downstreamSchema);
|
|
57
63
|
}
|
|
58
64
|
}
|
|
59
|
-
function getSubscriberContext(req) {
|
|
60
|
-
const url = new URL(req.url, req.headers.origin ?? 'http://localhost');
|
|
65
|
+
export function getSubscriberContext(req) {
|
|
66
|
+
const url = new URL(req.url ?? '', req.headers.origin ?? 'http://localhost');
|
|
61
67
|
const params = new URLParams(url);
|
|
62
68
|
return {
|
|
63
69
|
id: params.get('id', true),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-streamer-http.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-http.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"change-streamer-http.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { LogContext } from '@rocicorp/logger';
|
|
2
2
|
import type { PostgresDB } from '../../types/pg.js';
|
|
3
3
|
import type { Sink, Source } from '../../types/streams.js';
|
|
4
|
-
import { type ChangeStreamData, type ChangeStreamMessage
|
|
4
|
+
import { type ChangeStreamData, type ChangeStreamMessage } from '../change-source/protocol/current/downstream.js';
|
|
5
|
+
import type { ChangeSourceUpstream } from '../change-source/protocol/current/upstream.js';
|
|
5
6
|
import { type ChangeStreamerService } from './change-streamer.js';
|
|
6
7
|
import { type ReplicationConfig } from './schema/tables.js';
|
|
7
8
|
/**
|
|
@@ -22,10 +23,11 @@ export type WatermarkedChange = [watermark: string, ChangeStreamData];
|
|
|
22
23
|
export type ChangeStream = {
|
|
23
24
|
changes: Source<ChangeStreamMessage>;
|
|
24
25
|
/**
|
|
25
|
-
* A Sink to push the {@link
|
|
26
|
-
* stored by the {@link Storer}
|
|
26
|
+
* A Sink to push the {@link StatusMessage}s that reflect Commits
|
|
27
|
+
* that have been successfully stored by the {@link Storer}, or
|
|
28
|
+
* downstream {@link StatusMessage}s henceforth.
|
|
27
29
|
*/
|
|
28
|
-
acks: Sink<
|
|
30
|
+
acks: Sink<ChangeSourceUpstream>;
|
|
29
31
|
};
|
|
30
32
|
/** Encapsulates an upstream-specific implementation of a stream of Changes. */
|
|
31
33
|
export interface ChangeSource {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-streamer-service.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAQ5C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,
|
|
1
|
+
{"version":3,"file":"change-streamer-service.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAQ5C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,iDAAiD,CAAC;AACzD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,+CAA+C,CAAC;AAMxF,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAI5B;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,OAAO,EAClB,YAAY,oBAAa,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAchC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEtE,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAErC;;;;OAIG;IACH,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;CAClC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5D"}
|
|
@@ -193,7 +193,7 @@ class ChangeStreamerImpl {
|
|
|
193
193
|
this.#changeDB = changeDB;
|
|
194
194
|
this.#replicaVersion = replicaVersion;
|
|
195
195
|
this.#source = source;
|
|
196
|
-
this.#storer = new Storer(lc, changeDB, replicaVersion,
|
|
196
|
+
this.#storer = new Storer(lc, changeDB, replicaVersion, consumed => this.#stream?.acks.push(['status', consumed[1], consumed[2]]));
|
|
197
197
|
this.#forwarder = new Forwarder();
|
|
198
198
|
this.#autoReset = autoReset;
|
|
199
199
|
this.#state = new RunningState(this.id, undefined, setTimeoutFn);
|
|
@@ -224,6 +224,9 @@ class ChangeStreamerImpl {
|
|
|
224
224
|
for await (const change of stream.changes) {
|
|
225
225
|
const [type, msg] = change;
|
|
226
226
|
switch (type) {
|
|
227
|
+
case 'status':
|
|
228
|
+
this.#storer.status(change); // storer acks once it gets through its queue
|
|
229
|
+
continue;
|
|
227
230
|
case 'control':
|
|
228
231
|
await this.#handleControlMessage(msg);
|
|
229
232
|
continue; // control messages are not stored/forwarded
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-streamer-service.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EACL,GAAG,GAGJ,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"change-streamer-service.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -143,14 +143,14 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
143
143
|
spec: v.ObjectType<Omit<{
|
|
144
144
|
name: v.Type<string>;
|
|
145
145
|
columns: v.Type<Record<string, {
|
|
146
|
-
pgTypeClass?: "e" | "
|
|
146
|
+
pgTypeClass?: "e" | "d" | "b" | "c" | "p" | "r" | "m" | undefined;
|
|
147
147
|
characterMaximumLength?: number | null | undefined;
|
|
148
148
|
notNull?: boolean | null | undefined;
|
|
149
149
|
dflt?: string | null | undefined;
|
|
150
150
|
pos: number;
|
|
151
151
|
dataType: string;
|
|
152
152
|
}>>;
|
|
153
|
-
primaryKey: v.
|
|
153
|
+
primaryKey: v.Optional<string[]>;
|
|
154
154
|
}, "schema"> & {
|
|
155
155
|
schema: v.Type<string>;
|
|
156
156
|
}, undefined>;
|
|
@@ -175,7 +175,7 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
175
175
|
spec: v.ObjectType<{
|
|
176
176
|
pos: v.Type<number>;
|
|
177
177
|
dataType: v.Type<string>;
|
|
178
|
-
pgTypeClass: v.Optional<"e" | "
|
|
178
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
179
179
|
characterMaximumLength: v.Optional<number | null>;
|
|
180
180
|
notNull: v.Optional<boolean | null>;
|
|
181
181
|
dflt: v.Optional<string | null>;
|
|
@@ -192,7 +192,7 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
192
192
|
spec: v.ObjectType<{
|
|
193
193
|
pos: v.Type<number>;
|
|
194
194
|
dataType: v.Type<string>;
|
|
195
|
-
pgTypeClass: v.Optional<"e" | "
|
|
195
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
196
196
|
characterMaximumLength: v.Optional<number | null>;
|
|
197
197
|
notNull: v.Optional<boolean | null>;
|
|
198
198
|
dflt: v.Optional<string | null>;
|
|
@@ -203,7 +203,7 @@ export declare const downstreamSchema: v.UnionType<[v.UnionType<[v.TupleType<[v.
|
|
|
203
203
|
spec: v.ObjectType<{
|
|
204
204
|
pos: v.Type<number>;
|
|
205
205
|
dataType: v.Type<string>;
|
|
206
|
-
pgTypeClass: v.Optional<"e" | "
|
|
206
|
+
pgTypeClass: v.Optional<"e" | "d" | "b" | "c" | "p" | "r" | "m">;
|
|
207
207
|
characterMaximumLength: v.Optional<number | null>;
|
|
208
208
|
notNull: v.Optional<boolean | null>;
|
|
209
209
|
dflt: v.Optional<string | null>;
|