@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sorted-entries.d.ts","sourceRoot":"","sources":["../../../../shared/src/sorted-entries.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzD,MAAM,EAAE,CAAC,GACR,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAElC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { stringCompare } from './string-compare.js';
|
|
2
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3
|
-
export function sortedEntries(object) {
|
|
4
|
-
return Object.entries(object).sort((a, b) => stringCompare(a[0], b[0]));
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=sorted-entries.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sorted-entries.js","sourceRoot":"","sources":["../../../../shared/src/sorted-entries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAElD,8DAA8D;AAC9D,MAAM,UAAU,aAAa,CAC3B,MAAS;IAET,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type postgres from 'postgres';
|
|
2
|
-
import type { JSONValue } from '../types/bigint-json.js';
|
|
3
|
-
import { type PostgresDB } from '../types/pg.js';
|
|
4
|
-
import type { RowKey, RowKeyType, RowValue } from '../types/row-key.js';
|
|
5
|
-
/**
|
|
6
|
-
* Efficient lookup of multiple rows from a table from row keys.
|
|
7
|
-
*
|
|
8
|
-
* This uses the temporary VALUES table strategy:
|
|
9
|
-
*
|
|
10
|
-
* ```sql
|
|
11
|
-
* WITH keys(col1, col2) AS (VALUES
|
|
12
|
-
* (val1::type1, val2::type2),
|
|
13
|
-
* -- etc. for each key --
|
|
14
|
-
* )
|
|
15
|
-
* SELECT * from <table> JOIN keys USING (col1, col2);
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* which, as benchmarked by `EXPLAIN ANALYZE`, is faster than a
|
|
19
|
-
* "WHERE IN (array or keys)" query when there is a large number of keys.
|
|
20
|
-
*/
|
|
21
|
-
export declare function lookupRowsWithKeys(db: PostgresDB, schema: string, table: string, rowKeyType: RowKeyType, rowKeys: Iterable<RowKey>): postgres.PendingQuery<postgres.Row[]>;
|
|
22
|
-
export declare function multiInsertStatement<Row extends RowValue>(schema: string, table: string, columnNames: readonly (string & keyof Row)[], numRows: number, postamble?: string): string;
|
|
23
|
-
export declare function multiInsertParams<Row extends RowValue>(columnNames: readonly (keyof Row)[], rows: readonly Row[]): JSONValue[];
|
|
24
|
-
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/db/queries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAC,KAAK,UAAU,EAAgB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAEtE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,GACxB,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAmBvC;AAED,wBAAgB,oBAAoB,CAAC,GAAG,SAAS,QAAQ,EACvD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,EAC5C,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAW,GACrB,MAAM,CAoBR;AAED,wBAAgB,iBAAiB,CAAC,GAAG,SAAS,QAAQ,EACpD,WAAW,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EACnC,IAAI,EAAE,SAAS,GAAG,EAAE,GACnB,SAAS,EAAE,CAEb"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { compareUTF8 } from 'compare-utf8';
|
|
2
|
-
import { ident as id } from 'pg-format';
|
|
3
|
-
import { assert } from '../../../shared/src/asserts.js';
|
|
4
|
-
import { typeNameByOID } from '../types/pg.js';
|
|
5
|
-
/**
|
|
6
|
-
* Efficient lookup of multiple rows from a table from row keys.
|
|
7
|
-
*
|
|
8
|
-
* This uses the temporary VALUES table strategy:
|
|
9
|
-
*
|
|
10
|
-
* ```sql
|
|
11
|
-
* WITH keys(col1, col2) AS (VALUES
|
|
12
|
-
* (val1::type1, val2::type2),
|
|
13
|
-
* -- etc. for each key --
|
|
14
|
-
* )
|
|
15
|
-
* SELECT * from <table> JOIN keys USING (col1, col2);
|
|
16
|
-
* ```
|
|
17
|
-
*
|
|
18
|
-
* which, as benchmarked by `EXPLAIN ANALYZE`, is faster than a
|
|
19
|
-
* "WHERE IN (array or keys)" query when there is a large number of keys.
|
|
20
|
-
*/
|
|
21
|
-
export function lookupRowsWithKeys(db, schema, table, rowKeyType, rowKeys) {
|
|
22
|
-
const colNames = Object.keys(rowKeyType).sort(compareUTF8);
|
|
23
|
-
const cols = colNames
|
|
24
|
-
.map(col => db `${db(col)}`)
|
|
25
|
-
.flatMap((c, i) => (i ? [db `,`, c] : c));
|
|
26
|
-
// Explicit types must be declared for each value, e.g. `( $1::int4, $2::text )`.
|
|
27
|
-
// See https://github.com/porsager/postgres/issues/842
|
|
28
|
-
const colType = (col) => db.unsafe(typeNameByOID[rowKeyType[col].typeOid]);
|
|
29
|
-
const values = Array.from(rowKeys, row => colNames
|
|
30
|
-
.map(col => db `${row[col]}::${colType(col)}`)
|
|
31
|
-
.flatMap((v, i) => (i ? [db `,`, v] : v))).flatMap((tuple, i) => (i ? [db `),(`, ...tuple.flat()] : tuple));
|
|
32
|
-
return db `
|
|
33
|
-
WITH keys (${cols}) AS (VALUES (${values}))
|
|
34
|
-
SELECT * FROM ${db(schema)}.${db(table)} JOIN keys USING (${cols});
|
|
35
|
-
`;
|
|
36
|
-
}
|
|
37
|
-
export function multiInsertStatement(schema, table, columnNames, numRows, postamble = '') {
|
|
38
|
-
assert(numRows > 0, 'numRows must be > 0');
|
|
39
|
-
const parts = [
|
|
40
|
-
`INSERT INTO ${id(schema)}.${id(table)} `,
|
|
41
|
-
`(${columnNames.map(col => id(col)).join(',')}) VALUES `,
|
|
42
|
-
];
|
|
43
|
-
let p = 1;
|
|
44
|
-
for (let i = 0; i < numRows; i++) {
|
|
45
|
-
parts.push(i === 0 ? '(' : ',(');
|
|
46
|
-
for (let col = 0; col < columnNames.length; col++) {
|
|
47
|
-
parts.push(col === 0 ? `$${p}` : `,$${p}`);
|
|
48
|
-
p++;
|
|
49
|
-
}
|
|
50
|
-
parts.push(')');
|
|
51
|
-
}
|
|
52
|
-
if (postamble.length) {
|
|
53
|
-
parts.push(` ${postamble}`);
|
|
54
|
-
}
|
|
55
|
-
return parts.join('');
|
|
56
|
-
}
|
|
57
|
-
export function multiInsertParams(columnNames, rows) {
|
|
58
|
-
return rows.map(row => columnNames.map(col => row[col])).flat();
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=queries.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../../zero-cache/src/db/queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
export declare function string<T extends string = string>(): {
|
|
2
|
-
type: 'string';
|
|
3
|
-
optional: false;
|
|
4
|
-
customType: T;
|
|
5
|
-
};
|
|
6
|
-
export declare function string<T extends string = string>(optional: false): {
|
|
7
|
-
type: 'string';
|
|
8
|
-
optional: false;
|
|
9
|
-
customType: T;
|
|
10
|
-
};
|
|
11
|
-
export declare function string<T extends string = string>(optional: true): {
|
|
12
|
-
type: 'string';
|
|
13
|
-
optional: true;
|
|
14
|
-
customType: T;
|
|
15
|
-
};
|
|
16
|
-
export declare function number<T extends number = number>(): {
|
|
17
|
-
type: 'number';
|
|
18
|
-
optional: false;
|
|
19
|
-
customType: T;
|
|
20
|
-
};
|
|
21
|
-
export declare function number<T extends number = number>(optional: false): {
|
|
22
|
-
type: 'number';
|
|
23
|
-
optional: false;
|
|
24
|
-
customType: T;
|
|
25
|
-
};
|
|
26
|
-
export declare function number<T extends number = number>(optional: true): {
|
|
27
|
-
type: 'number';
|
|
28
|
-
optional: true;
|
|
29
|
-
customType: T;
|
|
30
|
-
};
|
|
31
|
-
export declare function boolean<T extends boolean = boolean>(): {
|
|
32
|
-
type: 'boolean';
|
|
33
|
-
optional: false;
|
|
34
|
-
customType: T;
|
|
35
|
-
};
|
|
36
|
-
export declare function boolean<T extends boolean = boolean>(optional: false): {
|
|
37
|
-
type: 'boolean';
|
|
38
|
-
optional: false;
|
|
39
|
-
customType: T;
|
|
40
|
-
};
|
|
41
|
-
export declare function boolean<T extends boolean = boolean>(optional: true): {
|
|
42
|
-
type: 'boolean';
|
|
43
|
-
optional: true;
|
|
44
|
-
customType: T;
|
|
45
|
-
};
|
|
46
|
-
export declare function json<T = any>(): {
|
|
47
|
-
type: 'json';
|
|
48
|
-
optional: false;
|
|
49
|
-
customType: T;
|
|
50
|
-
};
|
|
51
|
-
export declare function json<T = any>(optional: false): {
|
|
52
|
-
type: 'json';
|
|
53
|
-
optional: false;
|
|
54
|
-
customType: T;
|
|
55
|
-
};
|
|
56
|
-
export declare function json<T = any>(optional: true): {
|
|
57
|
-
type: 'json';
|
|
58
|
-
optional: true;
|
|
59
|
-
customType: T;
|
|
60
|
-
};
|
|
61
|
-
export declare function enumeration<T extends string>(): {
|
|
62
|
-
type: 'string';
|
|
63
|
-
kind: 'enum';
|
|
64
|
-
optional: false;
|
|
65
|
-
customType: T;
|
|
66
|
-
};
|
|
67
|
-
export declare function enumeration<T extends string>(optional: false): {
|
|
68
|
-
type: 'string';
|
|
69
|
-
kind: 'enum';
|
|
70
|
-
optional: false;
|
|
71
|
-
customType: T;
|
|
72
|
-
};
|
|
73
|
-
export declare function enumeration<T extends string>(optional: true): {
|
|
74
|
-
type: 'string';
|
|
75
|
-
kind: 'enum';
|
|
76
|
-
optional: true;
|
|
77
|
-
customType: T;
|
|
78
|
-
};
|
|
79
|
-
//# sourceMappingURL=column.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/column.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import type { CompoundKey } from '../../zero-protocol/src/ast.js';
|
|
2
|
-
import type { PrimaryKey } from '../../zero-protocol/src/primary-key.js';
|
|
3
|
-
import { type SchemaValue, type TableSchema } from './table-schema.js';
|
|
4
|
-
declare const normalized: unique symbol;
|
|
5
|
-
type Normalized<T> = T & {
|
|
6
|
-
readonly [normalized]: true;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* We need a cache of the normalized table schemas to handle circular
|
|
10
|
-
* dependencies.
|
|
11
|
-
*/
|
|
12
|
-
export type TableSchemaCache = Map<TableSchema, NormalizedTableSchema>;
|
|
13
|
-
export declare class NormalizedTableSchema implements TableSchema {
|
|
14
|
-
readonly [normalized]: true;
|
|
15
|
-
readonly tableName: string;
|
|
16
|
-
readonly primaryKey: NormalizedPrimaryKey;
|
|
17
|
-
readonly columns: Record<string, SchemaValue>;
|
|
18
|
-
readonly relationships: {
|
|
19
|
-
readonly [name: string]: NormalizedRelationship;
|
|
20
|
-
};
|
|
21
|
-
constructor(tableSchema: TableSchema, tableSchemaCache: TableSchemaCache, assertFieldRelation: AssertFieldRelation);
|
|
22
|
-
}
|
|
23
|
-
export declare function normalizeTableSchema(tableSchema: TableSchema | NormalizedTableSchema): NormalizedTableSchema;
|
|
24
|
-
export type AssertFieldRelation = (tableName: string, relationShipName: string, relation: NormalizedFieldRelationship) => void;
|
|
25
|
-
export declare function normalizeTableSchemaWithCache(tableSchema: TableSchema | NormalizedTableSchema, expectedTableName: string, tableSchemaCache: TableSchemaCache, assertFieldRelation: AssertFieldRelation): NormalizedTableSchema;
|
|
26
|
-
export type NormalizedPrimaryKey = Normalized<PrimaryKey>;
|
|
27
|
-
export declare function normalizePrimaryKey(primaryKey: PrimaryKey | string): NormalizedPrimaryKey;
|
|
28
|
-
export type DecycledNormalizedTableSchema = Omit<NormalizedTableSchema, 'relationships'> & {
|
|
29
|
-
readonly relationships: {
|
|
30
|
-
readonly [relationship: string]: DecycledNormalizedFieldRelationship | readonly [
|
|
31
|
-
DecycledNormalizedFieldRelationship,
|
|
32
|
-
DecycledNormalizedFieldRelationship
|
|
33
|
-
];
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
export type DecycledNormalizedFieldRelationship = Omit<NormalizedFieldRelationship, 'destSchema'> & {
|
|
37
|
-
readonly destSchema: string;
|
|
38
|
-
};
|
|
39
|
-
type NormalizedRelationship = NormalizedFieldRelationship | NormalizedJunctionRelationship;
|
|
40
|
-
export type NormalizedFieldRelationship = {
|
|
41
|
-
sourceField: CompoundKey;
|
|
42
|
-
destField: CompoundKey;
|
|
43
|
-
destSchema: NormalizedTableSchema;
|
|
44
|
-
};
|
|
45
|
-
export type NormalizedJunctionRelationship = readonly [
|
|
46
|
-
NormalizedFieldRelationship,
|
|
47
|
-
NormalizedFieldRelationship
|
|
48
|
-
];
|
|
49
|
-
export declare function normalizeTables(tables: Record<string, TableSchema>): Record<string, NormalizedTableSchema>;
|
|
50
|
-
export {};
|
|
51
|
-
//# sourceMappingURL=normalize-table-schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-table-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/normalize-table-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,CAAC,MAAM,UAAU,EAAE,OAAO,MAAM,CAAC;AAExC,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG;IAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAA;CAAC,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;AAEvE,qBAAa,qBAAsB,YAAW,WAAW;IACvD,SAAiB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE;QAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAAA;KAAC,CAAC;gBAGxE,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB;CAc3C;AAID,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,WAAW,GAAG,qBAAqB,GAC/C,qBAAqB,CAOvB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAChC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,2BAA2B,KAClC,IAAI,CAAC;AAEV,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,WAAW,GAAG,qBAAqB,EAChD,iBAAiB,EAAE,MAAM,EACzB,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB,GACvC,qBAAqB,CAoBvB;AAED,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAS1D,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,GAAG,MAAM,GAC9B,oBAAoB,CAMtB;AAgED,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,qBAAqB,EACrB,eAAe,CAChB,GAAG;IACF,QAAQ,CAAC,aAAa,EAAE;QACtB,QAAQ,EAAE,YAAY,EAAE,MAAM,GAC1B,mCAAmC,GACnC,SAAS;YACP,mCAAmC;YACnC,mCAAmC;SACpC,CAAC;KACP,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG,IAAI,CACpD,2BAA2B,EAC3B,YAAY,CACb,GAAG;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAC,CAAC;AAElC,KAAK,sBAAsB,GACvB,2BAA2B,GAC3B,8BAA8B,CAAC;AA2BnC,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,WAAW,CAAC;IACvB,UAAU,EAAE,qBAAqB,CAAC;CACnC,CAAC;AA6BF,MAAM,MAAM,8BAA8B,GAAG,SAAS;IACpD,2BAA2B;IAC3B,2BAA2B;CAC5B,CAAC;AAiDF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAavC"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { assert } from '../../shared/src/asserts.js';
|
|
2
|
-
import { sortedEntries } from '../../shared/src/sorted-entries.js';
|
|
3
|
-
import { isFieldRelationship, } from './table-schema.js';
|
|
4
|
-
export class NormalizedTableSchema {
|
|
5
|
-
tableName;
|
|
6
|
-
primaryKey;
|
|
7
|
-
columns;
|
|
8
|
-
relationships;
|
|
9
|
-
constructor(tableSchema, tableSchemaCache, assertFieldRelation) {
|
|
10
|
-
this.tableName = tableSchema.tableName;
|
|
11
|
-
const primaryKey = normalizePrimaryKey(tableSchema.primaryKey);
|
|
12
|
-
this.primaryKey = primaryKey;
|
|
13
|
-
this.columns = normalizeColumns(tableSchema.columns, primaryKey);
|
|
14
|
-
tableSchemaCache.set(tableSchema, this);
|
|
15
|
-
this.relationships = normalizeRelationships(this.tableName, tableSchema.relationships, tableSchemaCache, assertFieldRelation);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
const noop = () => { };
|
|
19
|
-
export function normalizeTableSchema(tableSchema) {
|
|
20
|
-
return normalizeTableSchemaWithCache(tableSchema, tableSchema.tableName, new Map(), noop);
|
|
21
|
-
}
|
|
22
|
-
export function normalizeTableSchemaWithCache(tableSchema, expectedTableName, tableSchemaCache, assertFieldRelation) {
|
|
23
|
-
if (tableSchema instanceof NormalizedTableSchema) {
|
|
24
|
-
return tableSchema;
|
|
25
|
-
}
|
|
26
|
-
assert(tableSchema.tableName === expectedTableName, `Table name mismatch: "${tableSchema.tableName}" !== "${expectedTableName}"`);
|
|
27
|
-
let normalizedTableSchema = tableSchemaCache.get(tableSchema);
|
|
28
|
-
if (normalizedTableSchema) {
|
|
29
|
-
return normalizedTableSchema;
|
|
30
|
-
}
|
|
31
|
-
normalizedTableSchema = new NormalizedTableSchema(tableSchema, tableSchemaCache, assertFieldRelation);
|
|
32
|
-
return normalizedTableSchema;
|
|
33
|
-
}
|
|
34
|
-
function assertNoDuplicates(arr) {
|
|
35
|
-
assert(new Set(arr).size === arr.length, 'Primary key must not contain duplicates');
|
|
36
|
-
}
|
|
37
|
-
export function normalizePrimaryKey(primaryKey) {
|
|
38
|
-
if (typeof primaryKey === 'string') {
|
|
39
|
-
return [primaryKey];
|
|
40
|
-
}
|
|
41
|
-
assertNoDuplicates(primaryKey);
|
|
42
|
-
return primaryKey;
|
|
43
|
-
}
|
|
44
|
-
function normalizeColumns(columns, primaryKey) {
|
|
45
|
-
const rv = {};
|
|
46
|
-
for (const pk of primaryKey) {
|
|
47
|
-
const schemaValue = columns[pk];
|
|
48
|
-
assert(schemaValue, `Primary key column "${pk}" not found`);
|
|
49
|
-
if (typeof schemaValue !== 'string') {
|
|
50
|
-
const { type, optional } = schemaValue;
|
|
51
|
-
assert(!optional, `Primary key column "${pk}" cannot be optional`);
|
|
52
|
-
assert(type === 'string' || type === 'number' || type === 'boolean', `Primary key column "${pk}" must be a string, number, or boolean. Got ${type}`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
for (const [name, column] of sortedEntries(columns)) {
|
|
56
|
-
rv[name] = normalizeColumn(column);
|
|
57
|
-
}
|
|
58
|
-
return rv;
|
|
59
|
-
}
|
|
60
|
-
function normalizeColumn(value) {
|
|
61
|
-
if (typeof value === 'string') {
|
|
62
|
-
return { type: value, optional: false };
|
|
63
|
-
}
|
|
64
|
-
return {
|
|
65
|
-
type: value.type,
|
|
66
|
-
optional: value.optional ?? false,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
function normalizeRelationships(tableName, relationships, tableSchemaCache, assertFieldRelation) {
|
|
70
|
-
const rv = {};
|
|
71
|
-
if (relationships) {
|
|
72
|
-
for (const [relationshipName, relationship] of sortedEntries(relationships)) {
|
|
73
|
-
rv[relationshipName] = normalizeRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return rv;
|
|
77
|
-
}
|
|
78
|
-
function normalizeRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation) {
|
|
79
|
-
if (isFieldRelationship(relationship)) {
|
|
80
|
-
return normalizeFieldRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation);
|
|
81
|
-
}
|
|
82
|
-
return normalizeJunctionRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation);
|
|
83
|
-
}
|
|
84
|
-
function normalizeFieldRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation) {
|
|
85
|
-
const sourceField = normalizeFieldName(relationship.sourceField);
|
|
86
|
-
const destField = normalizeFieldName(relationship.destField);
|
|
87
|
-
assert(sourceField.length === destField.length, 'Source and destination fields must have the same length');
|
|
88
|
-
const destSchema = normalizeLazyTableSchema(relationship.destSchema, tableSchemaCache, assertFieldRelation);
|
|
89
|
-
const normalized = {
|
|
90
|
-
sourceField,
|
|
91
|
-
destField,
|
|
92
|
-
destSchema,
|
|
93
|
-
};
|
|
94
|
-
assertFieldRelation(tableName, relationshipName, normalized);
|
|
95
|
-
return normalized;
|
|
96
|
-
}
|
|
97
|
-
function normalizeJunctionRelationship(tableName, relationshipName, relationship, tableSchemaCache, assertFieldRelation) {
|
|
98
|
-
const first = normalizeFieldRelationship(tableName, relationshipName, relationship[0], tableSchemaCache, assertFieldRelation);
|
|
99
|
-
const second = normalizeFieldRelationship(first.destSchema.tableName, relationshipName, relationship[1], tableSchemaCache, assertFieldRelation);
|
|
100
|
-
return [first, second];
|
|
101
|
-
}
|
|
102
|
-
function normalizeLazyTableSchema(tableSchema, buildCache, assertFieldRelation) {
|
|
103
|
-
const tableSchemaInstance = typeof tableSchema === 'function' ? tableSchema() : tableSchema;
|
|
104
|
-
return normalizeTableSchemaWithCache(tableSchemaInstance, tableSchemaInstance.tableName, // Don't care about name here.
|
|
105
|
-
buildCache, assertFieldRelation);
|
|
106
|
-
}
|
|
107
|
-
function normalizeFieldName(sourceField) {
|
|
108
|
-
if (typeof sourceField === 'string') {
|
|
109
|
-
return [sourceField];
|
|
110
|
-
}
|
|
111
|
-
assert(sourceField.length > 0, 'Expected at least one field');
|
|
112
|
-
return sourceField;
|
|
113
|
-
}
|
|
114
|
-
export function normalizeTables(tables) {
|
|
115
|
-
const result = {};
|
|
116
|
-
const assertFieldRelation = tableName => tableName in tables;
|
|
117
|
-
for (const [name, table] of sortedEntries(tables)) {
|
|
118
|
-
result[name] = normalizeTableSchemaWithCache(table, name, new Map(), assertFieldRelation);
|
|
119
|
-
}
|
|
120
|
-
return result;
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=normalize-table-schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-table-schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/normalize-table-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { type DecycledNormalizedTableSchema, type NormalizedTableSchema } from './normalize-table-schema.js';
|
|
2
|
-
import type { Schema } from './schema.js';
|
|
3
|
-
/**
|
|
4
|
-
* Creates a normalized schema from a schema.
|
|
5
|
-
*
|
|
6
|
-
* A normalized schema has all the keys sorted and the primary key and the
|
|
7
|
-
* primary key columns are checked to be valid.
|
|
8
|
-
*/
|
|
9
|
-
export declare function normalizeSchema(schema: Schema): NormalizedSchema;
|
|
10
|
-
export declare class NormalizedSchema {
|
|
11
|
-
readonly version: number;
|
|
12
|
-
readonly tables: {
|
|
13
|
-
readonly [table: string]: NormalizedTableSchema;
|
|
14
|
-
};
|
|
15
|
-
constructor(schema: Schema);
|
|
16
|
-
}
|
|
17
|
-
export type DecycledNormalizedSchema = Omit<NormalizedSchema, 'tables'> & {
|
|
18
|
-
readonly tables: {
|
|
19
|
-
readonly [table: string]: DecycledNormalizedTableSchema;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=normalized-schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalized-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/normalized-schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,6BAA6B,EAElC,KAAK,qBAAqB,EAE3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAKxC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAUhE;AAED,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC;KACjD,CAAC;gBAEU,MAAM,EAAE,MAAM;CAI3B;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG;IACxE,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,6BAA6B,CAAC;KACzD,CAAC;CACH,CAAC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { assert } from '../../shared/src/asserts.js';
|
|
2
|
-
import { sortedEntries } from '../../shared/src/sorted-entries.js';
|
|
3
|
-
import { normalizeTableSchemaWithCache, } from './normalize-table-schema.js';
|
|
4
|
-
const normalizedCache = new WeakMap();
|
|
5
|
-
/**
|
|
6
|
-
* Creates a normalized schema from a schema.
|
|
7
|
-
*
|
|
8
|
-
* A normalized schema has all the keys sorted and the primary key and the
|
|
9
|
-
* primary key columns are checked to be valid.
|
|
10
|
-
*/
|
|
11
|
-
export function normalizeSchema(schema) {
|
|
12
|
-
if (schema instanceof NormalizedSchema) {
|
|
13
|
-
return schema;
|
|
14
|
-
}
|
|
15
|
-
let s;
|
|
16
|
-
if (!(s = normalizedCache.get(schema))) {
|
|
17
|
-
normalizedCache.set(schema, (s = new NormalizedSchema(schema)));
|
|
18
|
-
}
|
|
19
|
-
return s;
|
|
20
|
-
}
|
|
21
|
-
export class NormalizedSchema {
|
|
22
|
-
version;
|
|
23
|
-
tables;
|
|
24
|
-
constructor(schema) {
|
|
25
|
-
this.version = schema.version;
|
|
26
|
-
this.tables = normalizeTables(schema.tables);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function normalizeTables(tables) {
|
|
30
|
-
const rv = {};
|
|
31
|
-
const tableSchemaCache = new Map();
|
|
32
|
-
function assertFieldRelation(tableName, relationShipName, relation) {
|
|
33
|
-
const destTableName = relation.destSchema.tableName;
|
|
34
|
-
assert(destTableName in tables, `Relationship "${tableName}"."${relationShipName}" destination "${destTableName}" is missing in schema`);
|
|
35
|
-
assertColumns(relation.sourceField, tables[tableName]);
|
|
36
|
-
assertColumns(relation.destField, tables[destTableName]);
|
|
37
|
-
}
|
|
38
|
-
function assertColumns(columnNames, table) {
|
|
39
|
-
for (const columnName of columnNames) {
|
|
40
|
-
assert(columnName in table.columns, `Column "${columnName}" is missing in table "${table.tableName}"`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
for (const [name, table] of sortedEntries(tables)) {
|
|
44
|
-
rv[name] = normalizeTableSchemaWithCache(table, name, tableSchemaCache, assertFieldRelation);
|
|
45
|
-
}
|
|
46
|
-
return rv;
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=normalized-schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalized-schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/normalized-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAC,aAAa,EAAC,MAAM,oCAAoC,CAAC;AAGjE,OAAO,EACL,6BAA6B,GAK9B,MAAM,6BAA6B,CAAC;AAIrC,MAAM,eAAe,GAAG,IAAI,OAAO,EAA4B,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACvC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,OAAO,gBAAgB;IAClB,OAAO,CAAS;IAChB,MAAM,CAEb;IAEF,YAAY,MAAc;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF;AAQD,SAAS,eAAe,CAAC,MAAwB;IAG/C,MAAM,EAAE,GAEH,EAAE,CAAC;IACR,MAAM,gBAAgB,GAAqB,IAAI,GAAG,EAAE,CAAC;IAErD,SAAS,mBAAmB,CAC1B,SAAiB,EACjB,gBAAwB,EACxB,QAAqC;QAErC,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QACpD,MAAM,CACJ,aAAa,IAAI,MAAM,EACvB,iBAAiB,SAAS,MAAM,gBAAgB,kBAAkB,aAAa,wBAAwB,CACxG,CAAC;QACF,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,SAAS,aAAa,CAAC,WAAwB,EAAE,KAAkB;QACjE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,CACJ,UAAU,IAAI,KAAK,CAAC,OAAO,EAC3B,WAAW,UAAU,0BAA0B,KAAK,CAAC,SAAS,GAAG,CAClE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,EAAE,CAAC,IAAI,CAAC,GAAG,6BAA6B,CACtC,KAAK,EACL,IAAI,EACJ,gBAAgB,EAChB,mBAAmB,CACpB,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type TableSchema } from './table-schema.js';
|
|
2
|
-
export type Schema = {
|
|
3
|
-
readonly version: number;
|
|
4
|
-
readonly tables: {
|
|
5
|
-
readonly [table: string]: TableSchema;
|
|
6
|
-
};
|
|
7
|
-
};
|
|
8
|
-
export declare function createSchema<const S extends Schema>(schema: S): S;
|
|
9
|
-
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAA;KAAC,CAAC;CAC1D,CAAC;AAEF,wBAAgB,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAKjE"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { normalizeSchema } from './normalized-schema.js';
|
|
2
|
-
import {} from './table-schema.js';
|
|
3
|
-
export function createSchema(schema) {
|
|
4
|
-
// normalizeSchema will throw if the schema is invalid.
|
|
5
|
-
normalizeSchema(schema);
|
|
6
|
-
// We still want to return s to cause less surprises.
|
|
7
|
-
return schema;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAkB,MAAM,mBAAmB,CAAC;AAOnD,MAAM,UAAU,YAAY,CAAyB,MAAS;IAC5D,uDAAuD;IACvD,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,qDAAqD;IACrD,OAAO,MAAW,CAAC;AACrB,CAAC"}
|