@rocicorp/zero 1.11.0-canary.4 → 1.11.0-canary.40
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/analyze-query/src/analyze-cli.js +4 -4
- package/out/analyze-query/src/analyze-cli.js.map +1 -1
- package/out/analyze-query/src/bin-analyze.js +13 -12
- package/out/analyze-query/src/bin-analyze.js.map +1 -1
- package/out/analyze-query/src/bin-transform.js +1 -1
- package/out/analyze-query/src/bin-transform.js.map +1 -1
- package/out/ast-to-zql/src/ast-to-zql.d.ts +8 -1
- package/out/ast-to-zql/src/ast-to-zql.d.ts.map +1 -1
- package/out/ast-to-zql/src/ast-to-zql.js +25 -25
- package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
- package/out/otel/src/log-options.d.ts +16 -0
- package/out/otel/src/log-options.d.ts.map +1 -1
- package/out/otel/src/log-options.js +60 -6
- package/out/otel/src/log-options.js.map +1 -1
- package/out/replicache/src/bg-interval.d.ts +2 -1
- package/out/replicache/src/bg-interval.d.ts.map +1 -1
- package/out/replicache/src/bg-interval.js +13 -4
- package/out/replicache/src/bg-interval.js.map +1 -1
- package/out/replicache/src/btree/node.d.ts.map +1 -1
- package/out/replicache/src/btree/node.js +3 -6
- package/out/replicache/src/btree/node.js.map +1 -1
- package/out/replicache/src/dag/gc.d.ts.map +1 -1
- package/out/replicache/src/dag/gc.js +8 -11
- package/out/replicache/src/dag/gc.js.map +1 -1
- package/out/replicache/src/dag/invalid-ref-count-error.d.ts +12 -0
- package/out/replicache/src/dag/invalid-ref-count-error.d.ts.map +1 -0
- package/out/replicache/src/dag/invalid-ref-count-error.js +19 -0
- package/out/replicache/src/dag/invalid-ref-count-error.js.map +1 -0
- package/out/replicache/src/dag/lazy-store.d.ts +17 -4
- package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
- package/out/replicache/src/dag/lazy-store.js +35 -9
- package/out/replicache/src/dag/lazy-store.js.map +1 -1
- package/out/replicache/src/dag/store-impl.d.ts +12 -2
- package/out/replicache/src/dag/store-impl.d.ts.map +1 -1
- package/out/replicache/src/dag/store-impl.js +29 -9
- package/out/replicache/src/dag/store-impl.js.map +1 -1
- package/out/replicache/src/db/rebase.d.ts +14 -2
- package/out/replicache/src/db/rebase.d.ts.map +1 -1
- package/out/replicache/src/db/rebase.js +27 -5
- package/out/replicache/src/db/rebase.js.map +1 -1
- package/out/replicache/src/get-kv-store-provider.d.ts +1 -1
- package/out/replicache/src/get-kv-store-provider.d.ts.map +1 -1
- package/out/replicache/src/get-kv-store-provider.js +4 -4
- package/out/replicache/src/get-kv-store-provider.js.map +1 -1
- package/out/replicache/src/kv/expo-sqlite/store.d.ts.map +1 -1
- package/out/replicache/src/kv/expo-sqlite/store.js +28 -5
- package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
- package/out/replicache/src/kv/idb-store.d.ts +18 -0
- package/out/replicache/src/kv/idb-store.d.ts.map +1 -1
- package/out/replicache/src/kv/idb-store.js +30 -2
- package/out/replicache/src/kv/idb-store.js.map +1 -1
- package/out/replicache/src/kv/mem-fallback-store.d.ts +54 -0
- package/out/replicache/src/kv/mem-fallback-store.d.ts.map +1 -0
- package/out/replicache/src/kv/mem-fallback-store.js +177 -0
- package/out/replicache/src/kv/mem-fallback-store.js.map +1 -0
- package/out/replicache/src/kv/mem-store.d.ts +1 -0
- package/out/replicache/src/kv/mem-store.d.ts.map +1 -1
- package/out/replicache/src/kv/mem-store.js +3 -0
- package/out/replicache/src/kv/mem-store.js.map +1 -1
- package/out/replicache/src/kv/op-sqlite/store.d.ts.map +1 -1
- package/out/replicache/src/kv/op-sqlite/store.js +4 -4
- package/out/replicache/src/kv/op-sqlite/store.js.map +1 -1
- package/out/replicache/src/kv/sqlite-store.d.ts +22 -1
- package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
- package/out/replicache/src/kv/sqlite-store.js +159 -14
- package/out/replicache/src/kv/sqlite-store.js.map +1 -1
- package/out/replicache/src/kv/store.d.ts +6 -0
- package/out/replicache/src/kv/store.d.ts.map +1 -1
- package/out/replicache/src/new-client-channel.js.map +1 -1
- package/out/replicache/src/persist/client-gc.d.ts +2 -1
- package/out/replicache/src/persist/client-gc.d.ts.map +1 -1
- package/out/replicache/src/persist/client-gc.js +2 -2
- package/out/replicache/src/persist/client-gc.js.map +1 -1
- package/out/replicache/src/persist/client-group-gc.d.ts +2 -1
- package/out/replicache/src/persist/client-group-gc.d.ts.map +1 -1
- package/out/replicache/src/persist/client-group-gc.js +2 -2
- package/out/replicache/src/persist/client-group-gc.js.map +1 -1
- package/out/replicache/src/persist/clients.d.ts +2 -2
- package/out/replicache/src/persist/collect-idb-databases.d.ts +28 -8
- package/out/replicache/src/persist/collect-idb-databases.d.ts.map +1 -1
- package/out/replicache/src/persist/collect-idb-databases.js +97 -20
- package/out/replicache/src/persist/collect-idb-databases.js.map +1 -1
- package/out/replicache/src/persist/heartbeat.d.ts +2 -1
- package/out/replicache/src/persist/heartbeat.d.ts.map +1 -1
- package/out/replicache/src/persist/heartbeat.js +2 -2
- package/out/replicache/src/persist/heartbeat.js.map +1 -1
- package/out/replicache/src/persist/idb-databases-store-db-name.js +1 -1
- package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -1
- package/out/replicache/src/persist/persist.d.ts.map +1 -1
- package/out/replicache/src/persist/persist.js +18 -8
- package/out/replicache/src/persist/persist.js.map +1 -1
- package/out/replicache/src/persist/refresh.js +6 -2
- package/out/replicache/src/persist/refresh.js.map +1 -1
- package/out/replicache/src/replicache-impl.d.ts +85 -3
- package/out/replicache/src/replicache-impl.d.ts.map +1 -1
- package/out/replicache/src/replicache-impl.js +321 -29
- package/out/replicache/src/replicache-impl.js.map +1 -1
- package/out/replicache/src/replicache-options.d.ts +9 -0
- package/out/replicache/src/replicache-options.d.ts.map +1 -1
- package/out/replicache/src/storage-failure.d.ts +37 -0
- package/out/replicache/src/storage-failure.d.ts.map +1 -0
- package/out/replicache/src/storage-failure.js +31 -0
- package/out/replicache/src/storage-failure.js.map +1 -0
- package/out/shared/src/arrays.d.ts +5 -0
- package/out/shared/src/arrays.d.ts.map +1 -1
- package/out/shared/src/arrays.js +8 -10
- package/out/shared/src/arrays.js.map +1 -1
- package/out/shared/src/centroid.d.ts +0 -1
- package/out/shared/src/centroid.d.ts.map +1 -1
- package/out/shared/src/centroid.js +1 -4
- package/out/shared/src/centroid.js.map +1 -1
- package/out/shared/src/error.d.ts +11 -0
- package/out/shared/src/error.d.ts.map +1 -1
- package/out/shared/src/error.js +35 -1
- package/out/shared/src/error.js.map +1 -1
- package/out/shared/src/hash.d.ts.map +1 -1
- package/out/shared/src/hash.js +32 -7
- package/out/shared/src/hash.js.map +1 -1
- package/out/shared/src/iterables.d.ts +2 -0
- package/out/shared/src/iterables.d.ts.map +1 -1
- package/out/shared/src/iterables.js +18 -1
- package/out/shared/src/iterables.js.map +1 -1
- package/out/shared/src/map.d.ts +24 -2
- package/out/shared/src/map.d.ts.map +1 -1
- package/out/shared/src/map.js +18 -4
- package/out/shared/src/map.js.map +1 -1
- package/out/shared/src/options-types.d.ts +2 -2
- package/out/shared/src/options.d.ts.map +1 -1
- package/out/shared/src/options.js +10 -7
- package/out/shared/src/options.js.map +1 -1
- package/out/shared/src/random-values.js +12 -1
- package/out/shared/src/random-values.js.map +1 -1
- package/out/shared/src/ring-buffer.d.ts +10 -0
- package/out/shared/src/ring-buffer.d.ts.map +1 -1
- package/out/shared/src/ring-buffer.js +26 -1
- package/out/shared/src/ring-buffer.js.map +1 -1
- package/out/shared/src/tdigest.d.ts +10 -0
- package/out/shared/src/tdigest.d.ts.map +1 -1
- package/out/shared/src/tdigest.js +147 -63
- package/out/shared/src/tdigest.js.map +1 -1
- package/out/shared/src/valita.d.ts +88 -0
- package/out/shared/src/valita.d.ts.map +1 -1
- package/out/shared/src/valita.js +141 -23
- package/out/shared/src/valita.js.map +1 -1
- package/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js +10 -6
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/z2s/src/sql.d.ts.map +1 -1
- package/out/z2s/src/sql.js +9 -5
- package/out/z2s/src/sql.js.map +1 -1
- package/out/zero/package.js +5 -6
- package/out/zero/package.js.map +1 -1
- package/out/zero/src/zero.js +2 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +1 -0
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/config/normalize.d.ts +1 -0
- package/out/zero-cache/src/config/normalize.d.ts.map +1 -1
- package/out/zero-cache/src/config/normalize.js +46 -4
- package/out/zero-cache/src/config/normalize.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +146 -24
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +494 -158
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/custom/fetch.d.ts +1 -1
- package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
- package/out/zero-cache/src/custom/fetch.js.map +1 -1
- package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
- package/out/zero-cache/src/db/lite-tables.js +3 -4
- package/out/zero-cache/src/db/lite-tables.js.map +1 -1
- package/out/zero-cache/src/db/migration-lite.d.ts.map +1 -1
- package/out/zero-cache/src/db/migration-lite.js +5 -3
- package/out/zero-cache/src/db/migration-lite.js.map +1 -1
- package/out/zero-cache/src/observability/events.js +4 -1
- package/out/zero-cache/src/observability/events.js.map +1 -1
- package/out/zero-cache/src/observability/log-throttle.d.ts +44 -0
- package/out/zero-cache/src/observability/log-throttle.d.ts.map +1 -0
- package/out/zero-cache/src/observability/log-throttle.js +76 -0
- package/out/zero-cache/src/observability/log-throttle.js.map +1 -0
- package/out/zero-cache/src/observability/metrics.d.ts.map +1 -1
- package/out/zero-cache/src/observability/metrics.js +2 -7
- package/out/zero-cache/src/observability/metrics.js.map +1 -1
- package/out/zero-cache/src/scripts/permissions.d.ts +16 -0
- package/out/zero-cache/src/scripts/permissions.d.ts.map +1 -1
- package/out/zero-cache/src/scripts/permissions.js +3 -3
- package/out/zero-cache/src/scripts/permissions.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 +123 -87
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/inspector-delegate.d.ts +28 -2
- package/out/zero-cache/src/server/inspector-delegate.d.ts.map +1 -1
- package/out/zero-cache/src/server/inspector-delegate.js +37 -17
- package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
- package/out/zero-cache/src/server/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/main.js +13 -2
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/mutator.js +2 -0
- package/out/zero-cache/src/server/mutator.js.map +1 -1
- package/out/zero-cache/src/server/reaper.d.ts.map +1 -1
- package/out/zero-cache/src/server/reaper.js +2 -0
- package/out/zero-cache/src/server/reaper.js.map +1 -1
- package/out/zero-cache/src/server/replicator.d.ts +7 -0
- package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/server/replicator.js +103 -22
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
- package/out/zero-cache/src/server/runner/run-worker.js +12 -6
- package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.js +5 -0
- package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/slot-keeper.d.ts +26 -0
- package/out/zero-cache/src/server/slot-keeper.d.ts.map +1 -0
- package/out/zero-cache/src/server/slot-keeper.js +181 -0
- package/out/zero-cache/src/server/slot-keeper.js.map +1 -0
- package/out/zero-cache/src/server/syncer-assigner.d.ts +14 -0
- package/out/zero-cache/src/server/syncer-assigner.d.ts.map +1 -0
- package/out/zero-cache/src/server/syncer-assigner.js +72 -0
- package/out/zero-cache/src/server/syncer-assigner.js.map +1 -0
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +40 -2
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -1
- package/out/zero-cache/src/server/worker-dispatcher.js +21 -4
- package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/worker-urls.d.ts +1 -0
- package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -1
- package/out/zero-cache/src/server/worker-urls.js +2 -1
- package/out/zero-cache/src/server/worker-urls.js.map +1 -1
- package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
- package/out/zero-cache/src/services/analyze.js +11 -9
- package/out/zero-cache/src/services/analyze.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/backfill-manager.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/common/backfill-manager.js +198 -24
- package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +16 -4
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts +24 -0
- package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-source/common/init-cleanup.js +44 -0
- package/out/zero-cache/src/services/change-source/common/init-cleanup.js.map +1 -0
- package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts +82 -2
- package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/common/replica-restore.js +21 -10
- package/out/zero-cache/src/services/change-source/common/replica-restore.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts +1 -0
- package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/common/replica-schema.js +15 -3
- package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.js +7 -3
- package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts +9 -0
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +207 -20
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts +65 -0
- package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-source/pg/change-source-init.js +312 -0
- package/out/zero-cache/src/services/change-source/pg/change-source-init.js.map +1 -0
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +31 -18
- 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 +132 -157
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +44 -2
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +60 -23
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts +66 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +207 -24
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts +16 -0
- package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.js +113 -0
- package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.js.map +1 -0
- package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts +66 -21
- package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slots.js +274 -68
- package/out/zero-cache/src/services/change-source/pg/replication-slots.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.js +68 -8
- package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.js.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 +46 -1
- 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/replica-stage-enum.d.ts +10 -0
- package/out/zero-cache/src/services/change-source/pg/schema/replica-stage-enum.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-source/pg/schema/replica-stage-enum.js +6 -0
- package/out/zero-cache/src/services/change-source/pg/schema/replica-stage-enum.js.map +1 -0
- package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +68 -27
- 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 +116 -35
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts +68 -0
- package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-source/protocol/backfill-progress.js +141 -0
- package/out/zero-cache/src/services/change-source/protocol/backfill-progress.js.map +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts +45 -2
- package/out/zero-cache/src/services/change-source/protocol/current/data.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/data.js +10 -1
- package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +60 -3
- 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/upstream.d.ts +23 -10
- 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 +17 -7
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current.js +2 -1
- package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts +72 -0
- package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.js +162 -0
- package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.js.map +1 -0
- package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts +50 -0
- package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-streamer/backfill-state.js +268 -0
- package/out/zero-cache/src/services/change-streamer/backfill-state.js.map +1 -0
- package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.js +6 -17
- package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js +59 -8
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/broadcast.d.ts +8 -2
- package/out/zero-cache/src/services/change-streamer/broadcast.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/broadcast.js +24 -4
- package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts +19 -4
- package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-log-codec.js +28 -8
- package/out/zero-cache/src/services/change-streamer/change-log-codec.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts +17 -0
- package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-log-initializer.js +44 -1
- package/out/zero-cache/src/services/change-streamer/change-log-initializer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +54 -6
- 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 +145 -35
- 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 +36 -0
- 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 +252 -111
- 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 +161 -17
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js +33 -2
- package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts +24 -0
- package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-streamer/drain-tracker.js +67 -0
- package/out/zero-cache/src/services/change-streamer/drain-tracker.js.map +1 -0
- package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +3 -3
- package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.js +36 -5
- package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts +53 -0
- package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.js +156 -0
- package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.js.map +1 -0
- package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts +243 -0
- package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-streamer/restore-admission.js +317 -0
- package/out/zero-cache/src/services/change-streamer/restore-admission.js.map +1 -0
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +58 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.js +107 -16
- package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts +92 -0
- package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-streamer/snapshot-message.js +42 -0
- package/out/zero-cache/src/services/change-streamer/snapshot-message.js.map +1 -0
- package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts +14 -2
- package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot-reservations.js +23 -10
- package/out/zero-cache/src/services/change-streamer/snapshot-reservations.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +7 -69
- package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot.js +21 -53
- package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts +6 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.js +27 -9
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +95 -4
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +294 -84
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscribe.d.ts +485 -0
- package/out/zero-cache/src/services/change-streamer/subscribe.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-streamer/subscribe.js +93 -0
- package/out/zero-cache/src/services/change-streamer/subscribe.js.map +1 -0
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +80 -2
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js +157 -20
- package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts +19 -1
- package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/upstream-acker.js +23 -3
- package/out/zero-cache/src/services/change-streamer/upstream-acker.js.map +1 -1
- package/out/zero-cache/src/services/http-service.d.ts +7 -1
- package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/http-service.js +14 -2
- package/out/zero-cache/src/services/http-service.js.map +1 -1
- package/out/zero-cache/src/services/life-cycle.d.ts +68 -2
- package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
- package/out/zero-cache/src/services/life-cycle.js +155 -19
- package/out/zero-cache/src/services/life-cycle.js.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.d.ts +35 -3
- package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.js +137 -35
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/litestream/config-v5.yml +6 -7
- package/out/zero-cache/src/services/litestream/litestream-checkpointer.js +51 -24
- package/out/zero-cache/src/services/litestream/litestream-checkpointer.js.map +1 -1
- package/out/zero-cache/src/services/litestream/litestream-controller.d.ts +10 -2
- package/out/zero-cache/src/services/litestream/litestream-controller.d.ts.map +1 -1
- package/out/zero-cache/src/services/litestream/litestream-controller.js +3 -2
- package/out/zero-cache/src/services/litestream/litestream-controller.js.map +1 -1
- package/out/zero-cache/src/services/litestream/restore-progress.d.ts +24 -0
- package/out/zero-cache/src/services/litestream/restore-progress.d.ts.map +1 -0
- package/out/zero-cache/src/services/litestream/restore-progress.js +91 -0
- package/out/zero-cache/src/services/litestream/restore-progress.js.map +1 -0
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +5 -0
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +7 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +5 -6
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/plannerz.d.ts +163 -0
- package/out/zero-cache/src/services/plannerz.d.ts.map +1 -0
- package/out/zero-cache/src/services/plannerz.js +267 -0
- package/out/zero-cache/src/services/plannerz.js.map +1 -0
- package/out/zero-cache/src/services/profz.d.ts +30 -0
- package/out/zero-cache/src/services/profz.d.ts.map +1 -0
- package/out/zero-cache/src/services/profz.js +163 -0
- package/out/zero-cache/src/services/profz.js.map +1 -0
- package/out/zero-cache/src/services/replicator/change-log-cookies.js +1 -1
- package/out/zero-cache/src/services/replicator/change-log-cookies.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts +5 -4
- package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/change-log-stream-writer.js +20 -22
- package/out/zero-cache/src/services/replicator/change-log-stream-writer.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js +51 -5
- package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
- package/out/zero-cache/src/services/replicator/drain-handler.d.ts +74 -0
- package/out/zero-cache/src/services/replicator/drain-handler.d.ts.map +1 -0
- package/out/zero-cache/src/services/replicator/drain-handler.js +185 -0
- package/out/zero-cache/src/services/replicator/drain-handler.js.map +1 -0
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +6 -2
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +114 -28
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replication-status.d.ts +35 -1
- package/out/zero-cache/src/services/replicator/replication-status.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/replication-status.js +99 -8
- package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts +5 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js +5 -2
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts +16 -1
- package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/reporter/recorder.js +70 -27
- package/out/zero-cache/src/services/replicator/reporter/recorder.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/backfilling.d.ts +23 -2
- package/out/zero-cache/src/services/replicator/schema/backfilling.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/backfilling.js +54 -2
- package/out/zero-cache/src/services/replicator/schema/backfilling.js.map +1 -1
- package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts +6 -6
- package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.js +19 -14
- package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.js.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +11 -3
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker.js +5 -1
- package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -1
- package/out/zero-cache/src/services/run-ast.d.ts +12 -0
- package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
- package/out/zero-cache/src/services/run-ast.js +42 -22
- package/out/zero-cache/src/services/run-ast.js.map +1 -1
- package/out/zero-cache/src/services/runner.d.ts +2 -1
- package/out/zero-cache/src/services/runner.d.ts.map +1 -1
- package/out/zero-cache/src/services/runner.js +10 -2
- package/out/zero-cache/src/services/runner.js.map +1 -1
- package/out/zero-cache/src/services/statz.d.ts +4 -0
- package/out/zero-cache/src/services/statz.d.ts.map +1 -1
- package/out/zero-cache/src/services/statz.js +22 -5
- package/out/zero-cache/src/services/statz.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts +26 -0
- package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/advancement-metrics.js +26 -0
- package/out/zero-cache/src/services/view-syncer/advancement-metrics.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts +79 -0
- package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/batch-pacer.js +249 -0
- package/out/zero-cache/src/services/view-syncer/batch-pacer.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +19 -2
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +42 -30
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +27 -2
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +86 -21
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts +75 -12
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +234 -43
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts +81 -0
- package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.js +128 -0
- package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +14 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +30 -4
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts +51 -0
- package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.js +78 -0
- package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +12 -2
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js +29 -5
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +165 -9
- 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 +953 -209
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts +7 -0
- package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/plan-warnings.js +35 -0
- package/out/zero-cache/src/services/view-syncer/plan-warnings.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/push-cost.d.ts +132 -0
- package/out/zero-cache/src/services/view-syncer/push-cost.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/push-cost.js +164 -0
- package/out/zero-cache/src/services/view-syncer/push-cost.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts +55 -0
- package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/push-cutoff.js +56 -0
- package/out/zero-cache/src/services/view-syncer/push-cutoff.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/query-covering.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/query-covering.js +2 -6
- package/out/zero-cache/src/services/view-syncer/query-covering.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/query-shape.d.ts +25 -0
- package/out/zero-cache/src/services/view-syncer/query-shape.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/query-shape.js +28 -0
- package/out/zero-cache/src/services/view-syncer/query-shape.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/query-stats.d.ts +89 -0
- package/out/zero-cache/src/services/view-syncer/query-stats.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/query-stats.js +233 -0
- package/out/zero-cache/src/services/view-syncer/query-stats.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +2 -107
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.js +5 -20
- package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts +95 -0
- package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.js +155 -0
- package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +229 -16
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +455 -43
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +8 -2
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +788 -71
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/pg-data-type.d.ts +2 -0
- package/out/zero-cache/src/types/pg-data-type.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg-data-type.js +6 -1
- package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
- package/out/zero-cache/src/types/pg.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg.js +2 -2
- package/out/zero-cache/src/types/pg.js.map +1 -1
- package/out/zero-cache/src/types/processes.d.ts +50 -0
- package/out/zero-cache/src/types/processes.d.ts.map +1 -1
- package/out/zero-cache/src/types/processes.js +43 -4
- package/out/zero-cache/src/types/processes.js.map +1 -1
- package/out/zero-cache/src/types/profiler.d.ts +12 -0
- package/out/zero-cache/src/types/profiler.d.ts.map +1 -1
- package/out/zero-cache/src/types/profiler.js +46 -1
- package/out/zero-cache/src/types/profiler.js.map +1 -1
- package/out/zero-cache/src/types/row-key.d.ts +1 -15
- package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
- package/out/zero-cache/src/types/row-key.js +6 -8
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/types/streams.d.ts +49 -7
- package/out/zero-cache/src/types/streams.d.ts.map +1 -1
- package/out/zero-cache/src/types/streams.js +190 -58
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-cache/src/types/subscription.d.ts +15 -0
- package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
- package/out/zero-cache/src/types/subscription.js +123 -31
- package/out/zero-cache/src/types/subscription.js.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.d.ts +1 -1
- package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.js +18 -9
- package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
- package/out/zero-cache/src/types/ws.d.ts.map +1 -1
- package/out/zero-cache/src/types/ws.js +1 -16
- package/out/zero-cache/src/types/ws.js.map +1 -1
- package/out/zero-cache/src/workers/connect-params.d.ts +1 -0
- package/out/zero-cache/src/workers/connect-params.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connect-params.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts +2 -1
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +9 -1
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/workers/replicator.js +24 -7
- package/out/zero-cache/src/workers/replicator.js.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js +21 -16
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +55 -4
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/active-clients-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/active-clients-manager.js +4 -1
- package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
- package/out/zero-client/src/client/connection-manager.d.ts +20 -0
- package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/connection-manager.js +77 -13
- package/out/zero-client/src/client/connection-manager.js.map +1 -1
- package/out/zero-client/src/client/connection-status-enum.d.ts +2 -0
- package/out/zero-client/src/client/connection-status-enum.d.ts.map +1 -1
- package/out/zero-client/src/client/connection-status-enum.js +3 -1
- package/out/zero-client/src/client/connection-status-enum.js.map +1 -1
- package/out/zero-client/src/client/connection.d.ts +6 -0
- package/out/zero-client/src/client/connection.d.ts.map +1 -1
- package/out/zero-client/src/client/connection.js +2 -1
- package/out/zero-client/src/client/connection.js.map +1 -1
- package/out/zero-client/src/client/context.d.ts +23 -13
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/context.js +94 -26
- package/out/zero-client/src/client/context.js.map +1 -1
- package/out/zero-client/src/client/crud-impl.d.ts.map +1 -1
- package/out/zero-client/src/client/crud-impl.js +1 -1
- package/out/zero-client/src/client/crud-impl.js.map +1 -1
- package/out/zero-client/src/client/custom.d.ts +5 -4
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.js +3 -3
- package/out/zero-client/src/client/custom.js.map +1 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.js +1 -1
- package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
- package/out/zero-client/src/client/ivm-branch.js +20 -3
- package/out/zero-client/src/client/ivm-branch.js.map +1 -1
- package/out/zero-client/src/client/keys.d.ts.map +1 -1
- package/out/zero-client/src/client/keys.js +19 -1
- package/out/zero-client/src/client/keys.js.map +1 -1
- package/out/zero-client/src/client/make-mutate-property.d.ts +1 -1
- package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -1
- package/out/zero-client/src/client/make-mutate-property.js.map +1 -1
- package/out/zero-client/src/client/make-replicache-mutators.d.ts.map +1 -1
- package/out/zero-client/src/client/make-replicache-mutators.js +1 -1
- package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.d.ts +2 -2
- package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.js +3 -7
- package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
- package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -1
- package/out/zero-client/src/client/mutator-proxy.js +9 -4
- package/out/zero-client/src/client/mutator-proxy.js.map +1 -1
- package/out/zero-client/src/client/options.d.ts +33 -0
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/options.js.map +1 -1
- package/out/zero-client/src/client/query-manager.d.ts +9 -0
- package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/query-manager.js +47 -14
- package/out/zero-client/src/client/query-manager.js.map +1 -1
- package/out/zero-client/src/client/reload-error-handler.js +2 -2
- package/out/zero-client/src/client/reload-error-handler.js.map +1 -1
- package/out/zero-client/src/client/storage-version.d.ts +23 -0
- package/out/zero-client/src/client/storage-version.d.ts.map +1 -0
- package/out/zero-client/src/client/version.js +1 -1
- package/out/zero-client/src/client/zero-rep.d.ts +1 -0
- package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-rep.js +8 -6
- package/out/zero-client/src/client/zero-rep.js.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +18 -3
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +86 -48
- package/out/zero-client/src/client/zero.js.map +1 -1
- package/out/zero-client/src/mod.d.ts +2 -1
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-client/src/mod.js +1 -0
- package/out/zero-client/src/types/query-result.d.ts +2 -0
- package/out/zero-client/src/types/query-result.d.ts.map +1 -1
- package/out/zero-events/src/status.d.ts +64 -0
- package/out/zero-events/src/status.d.ts.map +1 -1
- package/out/zero-protocol/src/analyze-query-result.d.ts +12 -12
- package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
- package/out/zero-protocol/src/analyze-query-result.js +3 -3
- package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
- package/out/zero-protocol/src/ast.d.ts +24 -0
- package/out/zero-protocol/src/ast.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.js +39 -16
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +36 -36
- package/out/zero-protocol/src/inspect-down.d.ts +31 -31
- package/out/zero-protocol/src/inspect-up.d.ts +158 -61
- package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
- package/out/zero-protocol/src/inspect-up.js +12 -6
- package/out/zero-protocol/src/inspect-up.js.map +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts +4 -1
- package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
- package/out/zero-protocol/src/protocol-version.js.map +1 -1
- package/out/zero-protocol/src/queries-patch.js +2 -2
- package/out/zero-protocol/src/queries-patch.js.map +1 -1
- package/out/zero-protocol/src/query-hash.d.ts.map +1 -1
- package/out/zero-protocol/src/query-hash.js +2 -5
- package/out/zero-protocol/src/query-hash.js.map +1 -1
- package/out/zero-protocol/src/up.d.ts +766 -256
- package/out/zero-protocol/src/up.d.ts.map +1 -1
- package/out/zero-protocol/src/up.js +25 -3
- package/out/zero-protocol/src/up.js.map +1 -1
- package/out/zero-react/src/use-query.d.ts +5 -4
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-react/src/use-query.js +75 -8
- package/out/zero-react/src/use-query.js.map +1 -1
- package/out/zero-react/src/zero.js +1 -0
- package/out/zero-server/src/adapters/drizzle.d.ts +16 -4
- package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
- package/out/zero-server/src/adapters/drizzle.js +19 -11
- package/out/zero-server/src/adapters/drizzle.js.map +1 -1
- package/out/zero-server/src/adapters/kysely.d.ts +6 -3
- package/out/zero-server/src/adapters/kysely.d.ts.map +1 -1
- package/out/zero-server/src/adapters/kysely.js +16 -6
- package/out/zero-server/src/adapters/kysely.js.map +1 -1
- package/out/zero-server/src/adapters/pg.d.ts +7 -2
- package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
- package/out/zero-server/src/adapters/pg.js +34 -10
- package/out/zero-server/src/adapters/pg.js.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.d.ts +4 -2
- package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.js +15 -5
- package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
- package/out/zero-server/src/adapters/prisma.d.ts +17 -5
- package/out/zero-server/src/adapters/prisma.d.ts.map +1 -1
- package/out/zero-server/src/adapters/prisma.js +20 -6
- package/out/zero-server/src/adapters/prisma.js.map +1 -1
- package/out/zero-server/src/closable-db-transaction.d.ts +16 -0
- package/out/zero-server/src/closable-db-transaction.d.ts.map +1 -0
- package/out/zero-server/src/closable-db-transaction.js +31 -0
- package/out/zero-server/src/closable-db-transaction.js.map +1 -0
- package/out/zero-server/src/custom.d.ts +10 -4
- package/out/zero-server/src/custom.d.ts.map +1 -1
- package/out/zero-server/src/custom.js +15 -6
- package/out/zero-server/src/custom.js.map +1 -1
- package/out/zero-server/src/logging.d.ts +2 -2
- package/out/zero-server/src/logging.d.ts.map +1 -1
- package/out/zero-server/src/logging.js +2 -2
- package/out/zero-server/src/logging.js.map +1 -1
- package/out/zero-server/src/mod.d.ts +2 -1
- package/out/zero-server/src/mod.d.ts.map +1 -1
- package/out/zero-server/src/pg-query-executor.d.ts +2 -2
- package/out/zero-server/src/pg-query-executor.d.ts.map +1 -1
- package/out/zero-server/src/pg-query-executor.js +2 -2
- package/out/zero-server/src/pg-query-executor.js.map +1 -1
- package/out/zero-server/src/process-mutations.d.ts +25 -4
- package/out/zero-server/src/process-mutations.d.ts.map +1 -1
- package/out/zero-server/src/process-mutations.js +103 -52
- package/out/zero-server/src/process-mutations.js.map +1 -1
- package/out/zero-server/src/push-processor.d.ts +8 -2
- package/out/zero-server/src/push-processor.d.ts.map +1 -1
- package/out/zero-server/src/push-processor.js +12 -4
- package/out/zero-server/src/push-processor.js.map +1 -1
- package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
- package/out/zero-server/src/queries/process-queries.js +1 -1
- package/out/zero-server/src/queries/process-queries.js.map +1 -1
- package/out/zero-server/src/schema.d.ts +2 -2
- package/out/zero-server/src/schema.d.ts.map +1 -1
- package/out/zero-server/src/schema.js +3 -2
- package/out/zero-server/src/schema.js.map +1 -1
- package/out/zero-server/src/transaction-options.d.ts +24 -0
- package/out/zero-server/src/transaction-options.d.ts.map +1 -0
- package/out/zero-server/src/transaction-options.js +11 -0
- package/out/zero-server/src/transaction-options.js.map +1 -0
- package/out/zero-server/src/zql-database.d.ts +21 -1
- package/out/zero-server/src/zql-database.d.ts.map +1 -1
- package/out/zero-server/src/zql-database.js +61 -24
- package/out/zero-server/src/zql-database.js.map +1 -1
- package/out/zero-solid/src/solid-view.d.ts +17 -0
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/zero-solid/src/solid-view.js +39 -1
- package/out/zero-solid/src/solid-view.js.map +1 -1
- package/out/zero-solid/src/use-query.js +1 -2
- package/out/zero-solid/src/use-query.js.map +1 -1
- package/out/zero-solid/src/zero.js +1 -0
- package/out/zql/src/builder/builder.d.ts +25 -0
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +69 -19
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/builder/correlated-predicate-pushdown.d.ts +43 -0
- package/out/zql/src/builder/correlated-predicate-pushdown.d.ts.map +1 -0
- package/out/zql/src/builder/correlated-predicate-pushdown.js +161 -0
- package/out/zql/src/builder/correlated-predicate-pushdown.js.map +1 -0
- package/out/zql/src/builder/debug-delegate.d.ts +6 -1
- package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
- package/out/zql/src/builder/debug-delegate.js +14 -2
- package/out/zql/src/builder/debug-delegate.js.map +1 -1
- package/out/zql/src/ivm/array-view.d.ts +29 -0
- package/out/zql/src/ivm/array-view.d.ts.map +1 -1
- package/out/zql/src/ivm/array-view.js +74 -16
- package/out/zql/src/ivm/array-view.js.map +1 -1
- package/out/zql/src/ivm/cap.d.ts +2 -1
- package/out/zql/src/ivm/cap.d.ts.map +1 -1
- package/out/zql/src/ivm/cap.js +14 -4
- package/out/zql/src/ivm/cap.js.map +1 -1
- package/out/zql/src/ivm/data.d.ts.map +1 -1
- package/out/zql/src/ivm/data.js +8 -3
- package/out/zql/src/ivm/data.js.map +1 -1
- package/out/zql/src/ivm/deferred-input.d.ts.map +1 -1
- package/out/zql/src/ivm/deferred-input.js +3 -2
- package/out/zql/src/ivm/deferred-input.js.map +1 -1
- package/out/zql/src/ivm/exists.d.ts +3 -1
- package/out/zql/src/ivm/exists.d.ts.map +1 -1
- package/out/zql/src/ivm/exists.js +4 -1
- package/out/zql/src/ivm/exists.js.map +1 -1
- package/out/zql/src/ivm/fan-in.d.ts +6 -2
- package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
- package/out/zql/src/ivm/fan-in.js +13 -5
- package/out/zql/src/ivm/fan-in.js.map +1 -1
- package/out/zql/src/ivm/fan-out.d.ts +5 -2
- package/out/zql/src/ivm/fan-out.d.ts.map +1 -1
- package/out/zql/src/ivm/fan-out.js +4 -0
- package/out/zql/src/ivm/fan-out.js.map +1 -1
- package/out/zql/src/ivm/filter-operators.d.ts +8 -6
- package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
- package/out/zql/src/ivm/filter-operators.js +19 -8
- package/out/zql/src/ivm/filter-operators.js.map +1 -1
- package/out/zql/src/ivm/filter.d.ts +5 -2
- package/out/zql/src/ivm/filter.d.ts.map +1 -1
- package/out/zql/src/ivm/filter.js +10 -4
- package/out/zql/src/ivm/filter.js.map +1 -1
- package/out/zql/src/ivm/flipped-join.d.ts +9 -4
- package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
- package/out/zql/src/ivm/flipped-join.js +97 -46
- package/out/zql/src/ivm/flipped-join.js.map +1 -1
- package/out/zql/src/ivm/join-index-tap.d.ts +33 -0
- package/out/zql/src/ivm/join-index-tap.d.ts.map +1 -0
- package/out/zql/src/ivm/join-index-tap.js +70 -0
- package/out/zql/src/ivm/join-index-tap.js.map +1 -0
- package/out/zql/src/ivm/join-index.d.ts +35 -0
- package/out/zql/src/ivm/join-index.d.ts.map +1 -0
- package/out/zql/src/ivm/join-index.js +141 -0
- package/out/zql/src/ivm/join-index.js.map +1 -0
- package/out/zql/src/ivm/join-utils.d.ts +6 -0
- package/out/zql/src/ivm/join-utils.d.ts.map +1 -1
- package/out/zql/src/ivm/join-utils.js +22 -1
- package/out/zql/src/ivm/join-utils.js.map +1 -1
- package/out/zql/src/ivm/join.d.ts +19 -1
- package/out/zql/src/ivm/join.d.ts.map +1 -1
- package/out/zql/src/ivm/join.js +107 -15
- package/out/zql/src/ivm/join.js.map +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +6 -4
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
- package/out/zql/src/ivm/memory-source.d.ts +29 -4
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +70 -34
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/memory-storage.d.ts +1 -0
- package/out/zql/src/ivm/memory-storage.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-storage.js +1 -0
- package/out/zql/src/ivm/memory-storage.js.map +1 -1
- package/out/zql/src/ivm/operator.d.ts +45 -10
- package/out/zql/src/ivm/operator.d.ts.map +1 -1
- package/out/zql/src/ivm/operator.js +9 -4
- package/out/zql/src/ivm/operator.js.map +1 -1
- package/out/zql/src/ivm/push-accumulated.d.ts +6 -1
- package/out/zql/src/ivm/push-accumulated.d.ts.map +1 -1
- package/out/zql/src/ivm/push-accumulated.js +47 -2
- package/out/zql/src/ivm/push-accumulated.js.map +1 -1
- package/out/zql/src/ivm/skip.d.ts +2 -1
- package/out/zql/src/ivm/skip.d.ts.map +1 -1
- package/out/zql/src/ivm/skip.js +3 -0
- package/out/zql/src/ivm/skip.js.map +1 -1
- package/out/zql/src/ivm/take-gate.d.ts +57 -0
- package/out/zql/src/ivm/take-gate.d.ts.map +1 -0
- package/out/zql/src/ivm/take-gate.js +106 -0
- package/out/zql/src/ivm/take-gate.js.map +1 -0
- package/out/zql/src/ivm/take.d.ts +8 -2
- package/out/zql/src/ivm/take.d.ts.map +1 -1
- package/out/zql/src/ivm/take.js +139 -103
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/union-fan-in.d.ts +3 -0
- package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
- package/out/zql/src/ivm/union-fan-in.js +63 -10
- package/out/zql/src/ivm/union-fan-in.js.map +1 -1
- package/out/zql/src/ivm/union-fan-out.d.ts +2 -1
- package/out/zql/src/ivm/union-fan-out.d.ts.map +1 -1
- package/out/zql/src/ivm/union-fan-out.js +5 -0
- package/out/zql/src/ivm/union-fan-out.js.map +1 -1
- package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
- package/out/zql/src/ivm/view-apply-change.js +9 -4
- package/out/zql/src/ivm/view-apply-change.js.map +1 -1
- package/out/zql/src/ivm/view.d.ts +15 -0
- package/out/zql/src/ivm/view.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.d.ts +53 -1
- package/out/zql/src/mutate/custom.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.js.map +1 -1
- package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -1
- package/out/zql/src/mutate/mutator-registry.js +3 -3
- package/out/zql/src/mutate/mutator-registry.js.map +1 -1
- package/out/zql/src/mutate/mutator.d.ts +2 -2
- package/out/zql/src/mutate/mutator.d.ts.map +1 -1
- package/out/zql/src/mutate/mutator.js.map +1 -1
- package/out/zql/src/planner/planner-builder.d.ts +23 -3
- package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
- package/out/zql/src/planner/planner-builder.js +34 -17
- package/out/zql/src/planner/planner-builder.js.map +1 -1
- package/out/zql/src/planner/planner-connection.d.ts +58 -2
- package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
- package/out/zql/src/planner/planner-connection.js +103 -11
- package/out/zql/src/planner/planner-connection.js.map +1 -1
- package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
- package/out/zql/src/planner/planner-debug.js +3 -8
- package/out/zql/src/planner/planner-debug.js.map +1 -1
- package/out/zql/src/planner/planner-graph.d.ts +10 -0
- package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
- package/out/zql/src/planner/planner-graph.js +14 -0
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/planner/planner-source.d.ts +2 -2
- package/out/zql/src/planner/planner-source.d.ts.map +1 -1
- package/out/zql/src/planner/planner-source.js +2 -2
- package/out/zql/src/planner/planner-source.js.map +1 -1
- package/out/zql/src/planner/planner-warnings.d.ts +83 -0
- package/out/zql/src/planner/planner-warnings.d.ts.map +1 -0
- package/out/zql/src/planner/planner-warnings.js +78 -0
- package/out/zql/src/planner/planner-warnings.js.map +1 -0
- package/out/zql/src/query/expression.d.ts +2 -2
- package/out/zql/src/query/expression.d.ts.map +1 -1
- package/out/zql/src/query/expression.js.map +1 -1
- package/out/zql/src/query/measure-push-operator.d.ts +9 -2
- package/out/zql/src/query/measure-push-operator.d.ts.map +1 -1
- package/out/zql/src/query/measure-push-operator.js +52 -5
- package/out/zql/src/query/measure-push-operator.js.map +1 -1
- package/out/zql/src/query/query-delegate-base.d.ts +4 -2
- package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
- package/out/zql/src/query/query-delegate-base.js +66 -33
- package/out/zql/src/query/query-delegate-base.js.map +1 -1
- package/out/zql/src/query/query-delegate.d.ts +33 -6
- package/out/zql/src/query/query-delegate.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +1 -0
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +6 -23
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-registry.js +1 -1
- package/out/zql/src/query/query-transitions.d.ts.map +1 -1
- package/out/zql/src/query/query-transitions.js +2 -5
- package/out/zql/src/query/query-transitions.js.map +1 -1
- package/out/zql/src/query/query.d.ts +26 -10
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.d.ts +1 -0
- package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.js +2 -10
- package/out/zql/src/query/runnable-query-impl.js.map +1 -1
- package/out/zql/src/query/typed-view.d.ts +1 -1
- package/out/zql/src/query/typed-view.d.ts.map +1 -1
- package/out/zqlite/src/database-storage.d.ts.map +1 -1
- package/out/zqlite/src/database-storage.js +9 -1
- package/out/zqlite/src/database-storage.js.map +1 -1
- package/out/zqlite/src/db.d.ts +17 -1
- package/out/zqlite/src/db.d.ts.map +1 -1
- package/out/zqlite/src/db.js +73 -30
- package/out/zqlite/src/db.js.map +1 -1
- package/out/zqlite/src/index-usage.d.ts +19 -0
- package/out/zqlite/src/index-usage.d.ts.map +1 -0
- package/out/zqlite/src/index-usage.js +49 -0
- package/out/zqlite/src/index-usage.js.map +1 -0
- package/out/zqlite/src/pending-delta.d.ts +110 -0
- package/out/zqlite/src/pending-delta.d.ts.map +1 -0
- package/out/zqlite/src/pending-delta.js +278 -0
- package/out/zqlite/src/pending-delta.js.map +1 -0
- package/out/zqlite/src/query-builder.d.ts +17 -1
- package/out/zqlite/src/query-builder.d.ts.map +1 -1
- package/out/zqlite/src/query-builder.js +111 -20
- package/out/zqlite/src/query-builder.js.map +1 -1
- package/out/zqlite/src/query-delegate.d.ts.map +1 -1
- package/out/zqlite/src/query-delegate.js +10 -7
- package/out/zqlite/src/query-delegate.js.map +1 -1
- package/out/zqlite/src/resolve-scalar-subqueries.d.ts +3 -1
- package/out/zqlite/src/resolve-scalar-subqueries.d.ts.map +1 -1
- package/out/zqlite/src/resolve-scalar-subqueries.js +1 -0
- package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
- package/out/zqlite/src/sqlite-cost-model.d.ts.map +1 -1
- package/out/zqlite/src/sqlite-cost-model.js +53 -1
- package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
- package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +1 -1
- package/out/zqlite/src/sqlite-stat-fanout.js +5 -31
- package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
- package/out/zqlite/src/sqlite-stat4-sample.d.ts +37 -0
- package/out/zqlite/src/sqlite-stat4-sample.d.ts.map +1 -0
- package/out/zqlite/src/sqlite-stat4-sample.js +61 -0
- package/out/zqlite/src/sqlite-stat4-sample.js.map +1 -0
- package/out/zqlite/src/table-source.d.ts +87 -2
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +276 -42
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +5 -6
- package/out/replicache/src/kv/idb-store-with-mem-fallback.d.ts +0 -25
- package/out/replicache/src/kv/idb-store-with-mem-fallback.d.ts.map +0 -1
- package/out/replicache/src/kv/idb-store-with-mem-fallback.js +0 -83
- package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/vfs-watermark-poller.d.ts +0 -29
- package/out/zero-cache/src/services/change-streamer/vfs-watermark-poller.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/vfs-watermark-poller.js +0 -154
- package/out/zero-cache/src/services/change-streamer/vfs-watermark-poller.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Kysely, Transaction as WrappedKyselyTransaction } from 'kysely';
|
|
2
2
|
import type { Schema } from '../../../zero-types/src/schema.ts';
|
|
3
|
-
import type { DBConnection, DBTransaction } from '../../../zql/src/mutate/custom.ts';
|
|
3
|
+
import type { DBConnection, DBTransaction, Row } from '../../../zql/src/mutate/custom.ts';
|
|
4
|
+
import type { TransactionOptions } from '../transaction-options.ts';
|
|
4
5
|
import { ZQLDatabase } from '../zql-database.ts';
|
|
5
6
|
export type { ZQLDatabase };
|
|
6
7
|
export type KyselyDatabase<TDatabase = unknown> = Kysely<TDatabase>;
|
|
@@ -12,7 +13,8 @@ export type KyselyDatabase<TDatabase = unknown> = Kysely<TDatabase>;
|
|
|
12
13
|
export type KyselyTransaction<TDbOrSchema = KyselyDatabase> = TDbOrSchema extends Kysely<infer TInferredDatabase> ? WrappedKyselyTransaction<TInferredDatabase> : WrappedKyselyTransaction<TDbOrSchema>;
|
|
13
14
|
export declare class KyselyConnection<TDatabase> implements DBConnection<WrappedKyselyTransaction<TDatabase>> {
|
|
14
15
|
#private;
|
|
15
|
-
constructor(client: Kysely<TDatabase
|
|
16
|
+
constructor(client: Kysely<TDatabase>, options?: TransactionOptions);
|
|
17
|
+
query(sql: string, params: unknown[]): Promise<Row[]>;
|
|
16
18
|
transaction<T>(fn: (tx: DBTransaction<WrappedKyselyTransaction<TDatabase>>) => Promise<T>): Promise<T>;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
@@ -23,6 +25,7 @@ export declare class KyselyConnection<TDatabase> implements DBConnection<Wrapped
|
|
|
23
25
|
*
|
|
24
26
|
* @param schema - Zero schema.
|
|
25
27
|
* @param client - Kysely client.
|
|
28
|
+
* @param options - Transaction options, e.g. `{isolationLevel: 'repeatable read'}`.
|
|
26
29
|
*
|
|
27
30
|
* @example
|
|
28
31
|
* ```ts
|
|
@@ -65,5 +68,5 @@ export declare class KyselyConnection<TDatabase> implements DBConnection<Wrapped
|
|
|
65
68
|
* });
|
|
66
69
|
* ```
|
|
67
70
|
*/
|
|
68
|
-
export declare function zeroKysely<TSchema extends Schema, TDatabase>(schema: TSchema, client: Kysely<TDatabase
|
|
71
|
+
export declare function zeroKysely<TSchema extends Schema, TDatabase>(schema: TSchema, client: Kysely<TDatabase>, options?: TransactionOptions): ZQLDatabase<TSchema, WrappedKyselyTransaction<TDatabase>>;
|
|
69
72
|
//# sourceMappingURL=kysely.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kysely.d.ts","sourceRoot":"","sources":["../../../../../zero-server/src/adapters/kysely.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,IAAI,wBAAwB,EAAC,MAAM,QAAQ,CAAC;AAG5E,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,
|
|
1
|
+
{"version":3,"file":"kysely.d.ts","sourceRoot":"","sources":["../../../../../zero-server/src/adapters/kysely.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,IAAI,wBAAwB,EAAC,MAAM,QAAQ,CAAC;AAG5E,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,GAAG,EACJ,MAAM,mCAAmC,CAAC;AAG3C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAE/C,YAAY,EAAC,WAAW,EAAC,CAAC;AAE1B,MAAM,MAAM,cAAc,CAAC,SAAS,GAAG,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,WAAW,GAAG,cAAc,IACxD,WAAW,SAAS,MAAM,CAAC,MAAM,iBAAiB,CAAC,GAC/C,wBAAwB,CAAC,iBAAiB,CAAC,GAC3C,wBAAwB,CAAC,WAAW,CAAC,CAAC;AAE5C,qBAAa,gBAAgB,CAAC,SAAS,CAAE,YAAW,YAAY,CAC9D,wBAAwB,CAAC,SAAS,CAAC,CACpC;;IAIC,YAAY,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,GAAE,kBAAuB,EAGtE;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAEpD;IAED,WAAW,CAAC,CAAC,EACX,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GACzE,OAAO,CAAC,CAAC,CAAC,CASZ;CACF;AA0CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,UAAU,CAAC,OAAO,SAAS,MAAM,EAAE,SAAS,EAC1D,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EACzB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,WAAW,CAAC,OAAO,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAE3D"}
|
|
@@ -4,11 +4,17 @@ import { CompiledQuery } from "kysely";
|
|
|
4
4
|
//#region ../zero-server/src/adapters/kysely.ts
|
|
5
5
|
var KyselyConnection = class {
|
|
6
6
|
#client;
|
|
7
|
-
|
|
7
|
+
#options;
|
|
8
|
+
constructor(client, options = {}) {
|
|
8
9
|
this.#client = client;
|
|
10
|
+
this.#options = options;
|
|
11
|
+
}
|
|
12
|
+
query(sql, params) {
|
|
13
|
+
return kyselyQuery(this.#client, sql, params);
|
|
9
14
|
}
|
|
10
15
|
transaction(fn) {
|
|
11
|
-
|
|
16
|
+
const { isolationLevel } = this.#options;
|
|
17
|
+
return (isolationLevel === void 0 ? this.#client.transaction() : this.#client.transaction().setIsolationLevel(isolationLevel)).execute((kyselyTx) => fn(new KyselyInternalTransaction(kyselyTx)));
|
|
12
18
|
}
|
|
13
19
|
};
|
|
14
20
|
var KyselyInternalTransaction = class {
|
|
@@ -19,10 +25,13 @@ var KyselyInternalTransaction = class {
|
|
|
19
25
|
runQuery(ast, format, schema, serverSchema) {
|
|
20
26
|
return executePostgresQuery(this, ast, format, schema, serverSchema);
|
|
21
27
|
}
|
|
22
|
-
|
|
23
|
-
return (
|
|
28
|
+
query(sql, params) {
|
|
29
|
+
return kyselyQuery(this.wrappedTransaction, sql, params);
|
|
24
30
|
}
|
|
25
31
|
};
|
|
32
|
+
async function kyselyQuery(executor, sql, params) {
|
|
33
|
+
return (await executor.executeQuery(CompiledQuery.raw(sql, params))).rows;
|
|
34
|
+
}
|
|
26
35
|
/**
|
|
27
36
|
* Wrap a Postgres-backed Kysely client for Zero ZQL.
|
|
28
37
|
*
|
|
@@ -31,6 +40,7 @@ var KyselyInternalTransaction = class {
|
|
|
31
40
|
*
|
|
32
41
|
* @param schema - Zero schema.
|
|
33
42
|
* @param client - Kysely client.
|
|
43
|
+
* @param options - Transaction options, e.g. `{isolationLevel: 'repeatable read'}`.
|
|
34
44
|
*
|
|
35
45
|
* @example
|
|
36
46
|
* ```ts
|
|
@@ -73,8 +83,8 @@ var KyselyInternalTransaction = class {
|
|
|
73
83
|
* });
|
|
74
84
|
* ```
|
|
75
85
|
*/
|
|
76
|
-
function zeroKysely(schema, client) {
|
|
77
|
-
return new ZQLDatabase(new KyselyConnection(client), schema);
|
|
86
|
+
function zeroKysely(schema, client, options) {
|
|
87
|
+
return new ZQLDatabase(new KyselyConnection(client, options), schema);
|
|
78
88
|
}
|
|
79
89
|
//#endregion
|
|
80
90
|
export { KyselyConnection, zeroKysely };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kysely.js","names":["#client"],"sources":["../../../../../zero-server/src/adapters/kysely.ts"],"sourcesContent":["import {CompiledQuery} from 'kysely';\nimport type {Kysely, Transaction as WrappedKyselyTransaction} from 'kysely';\nimport type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {Format} from '../../../zero-types/src/format.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {ServerSchema} from '../../../zero-types/src/server-schema.ts';\nimport type {\n DBConnection,\n DBTransaction,\n Row,\n} from '../../../zql/src/mutate/custom.ts';\nimport type {HumanReadable} from '../../../zql/src/query/query.ts';\nimport {executePostgresQuery} from '../pg-query-executor.ts';\nimport {ZQLDatabase} from '../zql-database.ts';\n\nexport type {ZQLDatabase};\n\nexport type KyselyDatabase<TDatabase = unknown> = Kysely<TDatabase>;\n\n/**\n * Helper type for the wrapped transaction used by Kysely.\n *\n * @remarks Use with `ServerTransaction` as `ServerTransaction<Schema, KyselyTransaction<typeof db>>`.\n */\nexport type KyselyTransaction<TDbOrSchema = KyselyDatabase> =\n TDbOrSchema extends Kysely<infer TInferredDatabase>\n ? WrappedKyselyTransaction<TInferredDatabase>\n : WrappedKyselyTransaction<TDbOrSchema>;\n\nexport class KyselyConnection<TDatabase> implements DBConnection<\n WrappedKyselyTransaction<TDatabase>\n> {\n readonly #client: Kysely<TDatabase>;\n\n constructor(client: Kysely<TDatabase
|
|
1
|
+
{"version":3,"file":"kysely.js","names":["#client","#options"],"sources":["../../../../../zero-server/src/adapters/kysely.ts"],"sourcesContent":["import {CompiledQuery} from 'kysely';\nimport type {Kysely, Transaction as WrappedKyselyTransaction} from 'kysely';\nimport type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {Format} from '../../../zero-types/src/format.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {ServerSchema} from '../../../zero-types/src/server-schema.ts';\nimport type {\n DBConnection,\n DBTransaction,\n Row,\n} from '../../../zql/src/mutate/custom.ts';\nimport type {HumanReadable} from '../../../zql/src/query/query.ts';\nimport {executePostgresQuery} from '../pg-query-executor.ts';\nimport type {TransactionOptions} from '../transaction-options.ts';\nimport {ZQLDatabase} from '../zql-database.ts';\n\nexport type {ZQLDatabase};\n\nexport type KyselyDatabase<TDatabase = unknown> = Kysely<TDatabase>;\n\n/**\n * Helper type for the wrapped transaction used by Kysely.\n *\n * @remarks Use with `ServerTransaction` as `ServerTransaction<Schema, KyselyTransaction<typeof db>>`.\n */\nexport type KyselyTransaction<TDbOrSchema = KyselyDatabase> =\n TDbOrSchema extends Kysely<infer TInferredDatabase>\n ? WrappedKyselyTransaction<TInferredDatabase>\n : WrappedKyselyTransaction<TDbOrSchema>;\n\nexport class KyselyConnection<TDatabase> implements DBConnection<\n WrappedKyselyTransaction<TDatabase>\n> {\n readonly #client: Kysely<TDatabase>;\n readonly #options: TransactionOptions;\n\n constructor(client: Kysely<TDatabase>, options: TransactionOptions = {}) {\n this.#client = client;\n this.#options = options;\n }\n\n query(sql: string, params: unknown[]): Promise<Row[]> {\n return kyselyQuery(this.#client, sql, params);\n }\n\n transaction<T>(\n fn: (tx: DBTransaction<WrappedKyselyTransaction<TDatabase>>) => Promise<T>,\n ): Promise<T> {\n const {isolationLevel} = this.#options;\n const builder =\n isolationLevel === undefined\n ? this.#client.transaction()\n : this.#client.transaction().setIsolationLevel(isolationLevel);\n return builder.execute(kyselyTx =>\n fn(new KyselyInternalTransaction(kyselyTx)),\n );\n }\n}\n\nclass KyselyInternalTransaction<TDatabase> implements DBTransaction<\n WrappedKyselyTransaction<TDatabase>\n> {\n readonly wrappedTransaction: WrappedKyselyTransaction<TDatabase>;\n\n constructor(kyselyTx: WrappedKyselyTransaction<TDatabase>) {\n this.wrappedTransaction = kyselyTx;\n }\n\n runQuery<TReturn>(\n ast: AST,\n format: Format,\n schema: Schema,\n serverSchema: ServerSchema,\n ): Promise<HumanReadable<TReturn>> {\n return executePostgresQuery<TReturn>(\n this,\n ast,\n format,\n schema,\n serverSchema,\n );\n }\n\n query(sql: string, params: unknown[]): Promise<Row[]> {\n return kyselyQuery(this.wrappedTransaction, sql, params);\n }\n}\n\nasync function kyselyQuery<TDatabase>(\n executor: Kysely<TDatabase>,\n sql: string,\n params: unknown[],\n): Promise<Row[]> {\n const result = await executor.executeQuery<Row>(\n CompiledQuery.raw(sql, params),\n );\n return result.rows;\n}\n\n/**\n * Wrap a Postgres-backed Kysely client for Zero ZQL.\n *\n * Provides ZQL querying plus access to the underlying Kysely transaction.\n * Use {@link KyselyTransaction} to type your server mutator transaction.\n *\n * @param schema - Zero schema.\n * @param client - Kysely client.\n * @param options - Transaction options, e.g. `{isolationLevel: 'repeatable read'}`.\n *\n * @example\n * ```ts\n * import {Pool} from 'pg';\n * import {Kysely, PostgresDialect} from 'kysely';\n * import {defineMutator, defineMutators} from '@rocicorp/zero';\n * import {zeroKysely} from '@rocicorp/zero/server/adapters/kysely';\n * import {z} from 'zod/mini';\n *\n * interface Database {\n * user: {\n * id: string;\n * name: string | null;\n * status: 'active' | 'inactive';\n * };\n * }\n *\n * const db = new Kysely<Database>({\n * dialect: new PostgresDialect({\n * pool: new Pool({connectionString: process.env.ZERO_UPSTREAM_DB!}),\n * }),\n * });\n * const zql = zeroKysely(schema, db);\n *\n * export const serverMutators = defineMutators({\n * user: {\n * create: defineMutator(\n * z.object({id: z.string(), name: z.string()}),\n * async ({tx, args}) => {\n * if (tx.location !== 'server') {\n * throw new Error('Server-only mutator');\n * }\n * await tx.dbTransaction.wrappedTransaction\n * .insertInto('user')\n * .values({id: args.id, name: args.name, status: 'active'})\n * .execute();\n * },\n * ),\n * },\n * });\n * ```\n */\nexport function zeroKysely<TSchema extends Schema, TDatabase>(\n schema: TSchema,\n client: Kysely<TDatabase>,\n options?: TransactionOptions,\n): ZQLDatabase<TSchema, WrappedKyselyTransaction<TDatabase>> {\n return new ZQLDatabase(new KyselyConnection(client, options), schema);\n}\n"],"mappings":";;;;AA8BA,IAAa,mBAAb,MAEE;CACA;CACA;CAEA,YAAY,QAA2B,UAA8B,CAAC,GAAG;EACvE,KAAKA,UAAU;EACf,KAAKC,WAAW;CAClB;CAEA,MAAM,KAAa,QAAmC;EACpD,OAAO,YAAY,KAAKD,SAAS,KAAK,MAAM;CAC9C;CAEA,YACE,IACY;EACZ,MAAM,EAAC,mBAAkB,KAAKC;EAK9B,QAHE,mBAAmB,KAAA,IACf,KAAKD,QAAQ,YAAY,IACzB,KAAKA,QAAQ,YAAY,EAAE,kBAAkB,cAAc,GAClD,SAAQ,aACrB,GAAG,IAAI,0BAA0B,QAAQ,CAAC,CAC5C;CACF;AACF;AAEA,IAAM,4BAAN,MAEE;CACA;CAEA,YAAY,UAA+C;EACzD,KAAK,qBAAqB;CAC5B;CAEA,SACE,KACA,QACA,QACA,cACiC;EACjC,OAAO,qBACL,MACA,KACA,QACA,QACA,YACF;CACF;CAEA,MAAM,KAAa,QAAmC;EACpD,OAAO,YAAY,KAAK,oBAAoB,KAAK,MAAM;CACzD;AACF;AAEA,eAAe,YACb,UACA,KACA,QACgB;CAIhB,QAAO,MAHc,SAAS,aAC5B,cAAc,IAAI,KAAK,MAAM,CAC/B,GACc;AAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,SAAgB,WACd,QACA,QACA,SAC2D;CAC3D,OAAO,IAAI,YAAY,IAAI,iBAAiB,QAAQ,OAAO,GAAG,MAAM;AACtE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { LogContext } from '@rocicorp/logger';
|
|
1
2
|
import type { Client } from 'pg';
|
|
2
3
|
import { Pool, type PoolClient } from 'pg';
|
|
3
4
|
import type { AST } from '../../../zero-protocol/src/ast.ts';
|
|
@@ -6,6 +7,7 @@ import type { Schema } from '../../../zero-types/src/schema.ts';
|
|
|
6
7
|
import type { ServerSchema } from '../../../zero-types/src/server-schema.ts';
|
|
7
8
|
import type { DBConnection, DBTransaction, Row } from '../../../zql/src/mutate/custom.ts';
|
|
8
9
|
import type { HumanReadable } from '../../../zql/src/query/query.ts';
|
|
10
|
+
import { type TransactionOptions } from '../transaction-options.ts';
|
|
9
11
|
import { ZQLDatabase } from '../zql-database.ts';
|
|
10
12
|
export type { ZQLDatabase };
|
|
11
13
|
/**
|
|
@@ -16,7 +18,8 @@ export type { ZQLDatabase };
|
|
|
16
18
|
export type NodePgTransaction = Pool | PoolClient | Client;
|
|
17
19
|
export declare class NodePgConnection implements DBConnection<NodePgTransaction> {
|
|
18
20
|
#private;
|
|
19
|
-
constructor(pool: NodePgTransaction);
|
|
21
|
+
constructor(pool: NodePgTransaction, options?: TransactionOptions);
|
|
22
|
+
query(sql: string, params: unknown[]): Promise<Row[]>;
|
|
20
23
|
transaction<TRet>(fn: (tx: DBTransaction<NodePgTransaction>) => Promise<TRet>): Promise<TRet>;
|
|
21
24
|
}
|
|
22
25
|
export declare class NodePgTransactionInternal implements DBTransaction<NodePgTransaction> {
|
|
@@ -33,6 +36,8 @@ export declare class NodePgTransactionInternal implements DBTransaction<NodePgTr
|
|
|
33
36
|
*
|
|
34
37
|
* @param schema - Zero schema.
|
|
35
38
|
* @param pg - `pg` Pool or connection string.
|
|
39
|
+
* @param lc - Where to log errors from a pool built from a connection string.
|
|
40
|
+
* Defaults to `console` at level `warn`.
|
|
36
41
|
*
|
|
37
42
|
* @example
|
|
38
43
|
* ```ts
|
|
@@ -62,5 +67,5 @@ export declare class NodePgTransactionInternal implements DBTransaction<NodePgTr
|
|
|
62
67
|
* });
|
|
63
68
|
* ```
|
|
64
69
|
*/
|
|
65
|
-
export declare function zeroNodePg<S extends Schema>(schema: S, pg: NodePgTransaction | string): ZQLDatabase<S, NodePgTransaction>;
|
|
70
|
+
export declare function zeroNodePg<S extends Schema>(schema: S, pg: NodePgTransaction | string, lc?: LogContext, options?: TransactionOptions): ZQLDatabase<S, NodePgTransaction>;
|
|
66
71
|
//# sourceMappingURL=pg.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../../../../zero-server/src/adapters/pg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,IAAI,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../../../../zero-server/src/adapters/pg.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAgB,IAAI,EAAE,KAAK,UAAU,EAAC,MAAM,IAAI,CAAC;AACxD,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,GAAG,EACJ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAE/C,YAAY,EAAC,WAAW,EAAC,CAAC;AAE1B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC;AAE3D,qBAAa,gBAAiB,YAAW,YAAY,CAAC,iBAAiB,CAAC;;IAItE,YAAY,IAAI,EAAE,iBAAiB,EAAE,OAAO,GAAE,kBAAuB,EAGpE;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAEpD;IAEK,WAAW,CAAC,IAAI,EACpB,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAC1D,OAAO,CAAC,IAAI,CAAC,CAqCf;CACF;AAED,qBAAa,yBAA0B,YAAW,aAAa,CAAC,iBAAiB,CAAC;IAChF,QAAQ,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;IAE/C,YAAY,MAAM,EAAE,iBAAiB,EAEpC;IAED,QAAQ,CAAC,OAAO,EACd,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAQjC;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAEpD;CACF;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,iBAAiB,GAAG,MAAM,EAC9B,EAAE,GAAE,UAAqC,EACzC,OAAO,CAAC,EAAE,kBAAkB,qCAkB7B"}
|
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
import { executePostgresQuery } from "../pg-query-executor.js";
|
|
2
|
+
import { createLogContext } from "../logging.js";
|
|
2
3
|
import { ZQLDatabase } from "../zql-database.js";
|
|
3
|
-
import {
|
|
4
|
+
import { beginStatement } from "../transaction-options.js";
|
|
5
|
+
import { DatabaseError, Pool } from "pg";
|
|
4
6
|
//#region ../zero-server/src/adapters/pg.ts
|
|
5
7
|
var NodePgConnection = class {
|
|
6
8
|
#pool;
|
|
7
|
-
|
|
9
|
+
#options;
|
|
10
|
+
constructor(pool, options = {}) {
|
|
8
11
|
this.#pool = pool;
|
|
12
|
+
this.#options = options;
|
|
13
|
+
}
|
|
14
|
+
query(sql, params) {
|
|
15
|
+
return nodePgQuery(this.#pool, sql, params);
|
|
9
16
|
}
|
|
10
17
|
async transaction(fn) {
|
|
11
18
|
const client = this.#pool instanceof Pool ? await this.#pool.connect() : this.#pool;
|
|
19
|
+
let connectionError;
|
|
20
|
+
const onError = (e) => {
|
|
21
|
+
connectionError ??= e;
|
|
22
|
+
};
|
|
23
|
+
client.on("error", onError);
|
|
12
24
|
try {
|
|
13
|
-
await client.query(
|
|
25
|
+
await client.query(beginStatement(this.#options.isolationLevel));
|
|
14
26
|
const result = await fn(new NodePgTransactionInternal(client));
|
|
15
27
|
await client.query("COMMIT");
|
|
16
28
|
return result;
|
|
@@ -18,9 +30,10 @@ var NodePgConnection = class {
|
|
|
18
30
|
try {
|
|
19
31
|
await client.query("ROLLBACK");
|
|
20
32
|
} catch {}
|
|
21
|
-
throw error;
|
|
33
|
+
throw connectionError && !(error instanceof DatabaseError) ? connectionError : error;
|
|
22
34
|
} finally {
|
|
23
|
-
|
|
35
|
+
client.off("error", onError);
|
|
36
|
+
if (this.#pool instanceof Pool && "release" in client) client.release(connectionError);
|
|
24
37
|
}
|
|
25
38
|
}
|
|
26
39
|
};
|
|
@@ -32,10 +45,13 @@ var NodePgTransactionInternal = class {
|
|
|
32
45
|
runQuery(ast, format, schema, serverSchema) {
|
|
33
46
|
return executePostgresQuery(this, ast, format, schema, serverSchema);
|
|
34
47
|
}
|
|
35
|
-
|
|
36
|
-
return (
|
|
48
|
+
query(sql, params) {
|
|
49
|
+
return nodePgQuery(this.wrappedTransaction, sql, params);
|
|
37
50
|
}
|
|
38
51
|
};
|
|
52
|
+
async function nodePgQuery(client, sql, params) {
|
|
53
|
+
return (await client.query(sql, params)).rows;
|
|
54
|
+
}
|
|
39
55
|
/**
|
|
40
56
|
* Wrap a `pg` Pool for Zero ZQL.
|
|
41
57
|
*
|
|
@@ -44,6 +60,8 @@ var NodePgTransactionInternal = class {
|
|
|
44
60
|
*
|
|
45
61
|
* @param schema - Zero schema.
|
|
46
62
|
* @param pg - `pg` Pool or connection string.
|
|
63
|
+
* @param lc - Where to log errors from a pool built from a connection string.
|
|
64
|
+
* Defaults to `console` at level `warn`.
|
|
47
65
|
*
|
|
48
66
|
* @example
|
|
49
67
|
* ```ts
|
|
@@ -73,9 +91,15 @@ var NodePgTransactionInternal = class {
|
|
|
73
91
|
* });
|
|
74
92
|
* ```
|
|
75
93
|
*/
|
|
76
|
-
function zeroNodePg(schema, pg) {
|
|
77
|
-
if (typeof pg === "string")
|
|
78
|
-
|
|
94
|
+
function zeroNodePg(schema, pg, lc = createLogContext("warn"), options) {
|
|
95
|
+
if (typeof pg === "string") {
|
|
96
|
+
const pool = new Pool({ connectionString: pg });
|
|
97
|
+
pool.on("error", (e) => {
|
|
98
|
+
lc.warn?.("node-postgres pool error; the client was removed from the pool", e);
|
|
99
|
+
});
|
|
100
|
+
pg = pool;
|
|
101
|
+
}
|
|
102
|
+
return new ZQLDatabase(new NodePgConnection(pg, options), schema);
|
|
79
103
|
}
|
|
80
104
|
//#endregion
|
|
81
105
|
export { NodePgConnection, NodePgTransactionInternal, zeroNodePg };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.js","names":["#pool"],"sources":["../../../../../zero-server/src/adapters/pg.ts"],"sourcesContent":["import type {Client} from 'pg';\nimport {Pool, type PoolClient} from 'pg';\nimport type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {Format} from '../../../zero-types/src/format.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {ServerSchema} from '../../../zero-types/src/server-schema.ts';\nimport type {\n DBConnection,\n DBTransaction,\n Row,\n} from '../../../zql/src/mutate/custom.ts';\nimport type {HumanReadable} from '../../../zql/src/query/query.ts';\nimport {executePostgresQuery} from '../pg-query-executor.ts';\nimport {ZQLDatabase} from '../zql-database.ts';\n\nexport type {ZQLDatabase};\n\n/**\n * Helper type for the wrapped transaction used by node-postgres.\n *\n * @remarks Use with `ServerTransaction` as `ServerTransaction<Schema, NodePgTransaction>`.\n */\nexport type NodePgTransaction = Pool | PoolClient | Client;\n\nexport class NodePgConnection implements DBConnection<NodePgTransaction> {\n readonly #pool: NodePgTransaction;\n\n constructor(pool: NodePgTransaction) {\n this.#pool = pool;\n }\n\n async transaction<TRet>(\n fn: (tx: DBTransaction<NodePgTransaction>) => Promise<TRet>,\n ): Promise<TRet> {\n const client =\n this.#pool instanceof Pool ? await this.#pool.connect() : this.#pool;\n try {\n await client.query(
|
|
1
|
+
{"version":3,"file":"pg.js","names":["#pool","#options"],"sources":["../../../../../zero-server/src/adapters/pg.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport type {Client} from 'pg';\nimport {DatabaseError, Pool, type PoolClient} from 'pg';\nimport type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {Format} from '../../../zero-types/src/format.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {ServerSchema} from '../../../zero-types/src/server-schema.ts';\nimport type {\n DBConnection,\n DBTransaction,\n Row,\n} from '../../../zql/src/mutate/custom.ts';\nimport type {HumanReadable} from '../../../zql/src/query/query.ts';\nimport {createLogContext} from '../logging.ts';\nimport {executePostgresQuery} from '../pg-query-executor.ts';\nimport {\n beginStatement,\n type TransactionOptions,\n} from '../transaction-options.ts';\nimport {ZQLDatabase} from '../zql-database.ts';\n\nexport type {ZQLDatabase};\n\n/**\n * Helper type for the wrapped transaction used by node-postgres.\n *\n * @remarks Use with `ServerTransaction` as `ServerTransaction<Schema, NodePgTransaction>`.\n */\nexport type NodePgTransaction = Pool | PoolClient | Client;\n\nexport class NodePgConnection implements DBConnection<NodePgTransaction> {\n readonly #pool: NodePgTransaction;\n readonly #options: TransactionOptions;\n\n constructor(pool: NodePgTransaction, options: TransactionOptions = {}) {\n this.#pool = pool;\n this.#options = options;\n }\n\n query(sql: string, params: unknown[]): Promise<Row[]> {\n return nodePgQuery(this.#pool, sql, params);\n }\n\n async transaction<TRet>(\n fn: (tx: DBTransaction<NodePgTransaction>) => Promise<TRet>,\n ): Promise<TRet> {\n const client =\n this.#pool instanceof Pool ? await this.#pool.connect() : this.#pool;\n // The pool only listens for 'error' on a client idle in the pool. If the\n // server ends the connection while the client is checked out here and no\n // query is running (an idle_in_transaction_session_timeout while the\n // mutator awaits something else, a restart, a failover), node-postgres\n // emits 'error' on the client, and with no listener the process dies.\n let connectionError: Error | undefined;\n const onError = (e: Error) => {\n connectionError ??= e;\n };\n client.on('error', onError);\n try {\n await client.query(beginStatement(this.#options.isolationLevel));\n const result = await fn(new NodePgTransactionInternal(client));\n await client.query('COMMIT');\n return result;\n } catch (error) {\n try {\n await client.query('ROLLBACK');\n } catch {\n // ignore rollback error; original error will be thrown\n }\n // After a connection error, a query only fails with \"Client has\n // encountered a connection error and is not queryable\". Throw what\n // ended the connection instead, unless the server reported an error of\n // its own to the query.\n throw connectionError && !(error instanceof DatabaseError)\n ? connectionError\n : error;\n } finally {\n client.off('error', onError);\n if (this.#pool instanceof Pool && 'release' in client) {\n client.release(connectionError);\n }\n }\n }\n}\n\nexport class NodePgTransactionInternal implements DBTransaction<NodePgTransaction> {\n readonly wrappedTransaction: NodePgTransaction;\n\n constructor(client: NodePgTransaction) {\n this.wrappedTransaction = client;\n }\n\n runQuery<TReturn>(\n ast: AST,\n format: Format,\n schema: Schema,\n serverSchema: ServerSchema,\n ): Promise<HumanReadable<TReturn>> {\n return executePostgresQuery<TReturn>(\n this,\n ast,\n format,\n schema,\n serverSchema,\n );\n }\n\n query(sql: string, params: unknown[]): Promise<Row[]> {\n return nodePgQuery(this.wrappedTransaction, sql, params);\n }\n}\n\nasync function nodePgQuery(\n client: NodePgTransaction,\n sql: string,\n params: unknown[],\n): Promise<Row[]> {\n const res = await client.query(sql, params);\n return res.rows as Row[];\n}\n\n/**\n * Wrap a `pg` Pool for Zero ZQL.\n *\n * Provides ZQL querying plus access to the underlying node-postgres client.\n * Use {@link NodePgTransaction} to type your server mutator transaction.\n *\n * @param schema - Zero schema.\n * @param pg - `pg` Pool or connection string.\n * @param lc - Where to log errors from a pool built from a connection string.\n * Defaults to `console` at level `warn`.\n *\n * @example\n * ```ts\n * import {Pool} from 'pg';\n * import {defineMutator, defineMutators} from '@rocicorp/zero';\n * import {zeroNodePg} from '@rocicorp/zero/server/adapters/pg';\n * import {z} from 'zod/mini';\n *\n * const pool = new Pool({connectionString: process.env.ZERO_UPSTREAM_DB!});\n * const zql = zeroNodePg(schema, pool);\n *\n * export const serverMutators = defineMutators({\n * user: {\n * create: defineMutator(\n * z.object({id: z.string(), name: z.string()}),\n * async ({tx, args}) => {\n * if (tx.location !== 'server') {\n * throw new Error('Server-only mutator');\n * }\n * await tx.dbTransaction.wrappedTransaction.query(\n * 'INSERT INTO \"user\" (id, name, status) VALUES ($1, $2, $3)',\n * [args.id, args.name, 'active'],\n * );\n * },\n * ),\n * },\n * });\n * ```\n */\nexport function zeroNodePg<S extends Schema>(\n schema: S,\n pg: NodePgTransaction | string,\n lc: LogContext = createLogContext('warn'),\n options?: TransactionOptions,\n) {\n if (typeof pg === 'string') {\n const pool = new Pool({connectionString: pg});\n // node-postgres emits 'error' on the pool when the server terminates a\n // client idle in the pool (an idle_session_timeout, a restart, a\n // failover). The pool has already discarded that client and will open\n // another; with no listener the event is an uncaught exception and the\n // process dies with whatever request it was serving. Log it and carry on.\n pool.on('error', e => {\n lc.warn?.(\n 'node-postgres pool error; the client was removed from the pool',\n e,\n );\n });\n pg = pool;\n }\n return new ZQLDatabase(new NodePgConnection(pg, options), schema);\n}\n"],"mappings":";;;;;;AA8BA,IAAa,mBAAb,MAAyE;CACvE;CACA;CAEA,YAAY,MAAyB,UAA8B,CAAC,GAAG;EACrE,KAAKA,QAAQ;EACb,KAAKC,WAAW;CAClB;CAEA,MAAM,KAAa,QAAmC;EACpD,OAAO,YAAY,KAAKD,OAAO,KAAK,MAAM;CAC5C;CAEA,MAAM,YACJ,IACe;EACf,MAAM,SACJ,KAAKA,iBAAiB,OAAO,MAAM,KAAKA,MAAM,QAAQ,IAAI,KAAKA;EAMjE,IAAI;EACJ,MAAM,WAAW,MAAa;GAC5B,oBAAoB;EACtB;EACA,OAAO,GAAG,SAAS,OAAO;EAC1B,IAAI;GACF,MAAM,OAAO,MAAM,eAAe,KAAKC,SAAS,cAAc,CAAC;GAC/D,MAAM,SAAS,MAAM,GAAG,IAAI,0BAA0B,MAAM,CAAC;GAC7D,MAAM,OAAO,MAAM,QAAQ;GAC3B,OAAO;EACT,SAAS,OAAO;GACd,IAAI;IACF,MAAM,OAAO,MAAM,UAAU;GAC/B,QAAQ,CAER;GAKA,MAAM,mBAAmB,EAAE,iBAAiB,iBACxC,kBACA;EACN,UAAU;GACR,OAAO,IAAI,SAAS,OAAO;GAC3B,IAAI,KAAKD,iBAAiB,QAAQ,aAAa,QAC7C,OAAO,QAAQ,eAAe;EAElC;CACF;AACF;AAEA,IAAa,4BAAb,MAAmF;CACjF;CAEA,YAAY,QAA2B;EACrC,KAAK,qBAAqB;CAC5B;CAEA,SACE,KACA,QACA,QACA,cACiC;EACjC,OAAO,qBACL,MACA,KACA,QACA,QACA,YACF;CACF;CAEA,MAAM,KAAa,QAAmC;EACpD,OAAO,YAAY,KAAK,oBAAoB,KAAK,MAAM;CACzD;AACF;AAEA,eAAe,YACb,QACA,KACA,QACgB;CAEhB,QAAO,MADW,OAAO,MAAM,KAAK,MAAM,GAC/B;AACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,SAAgB,WACd,QACA,IACA,KAAiB,iBAAiB,MAAM,GACxC,SACA;CACA,IAAI,OAAO,OAAO,UAAU;EAC1B,MAAM,OAAO,IAAI,KAAK,EAAC,kBAAkB,GAAE,CAAC;EAM5C,KAAK,GAAG,UAAS,MAAK;GACpB,GAAG,OACD,kEACA,CACF;EACF,CAAC;EACD,KAAK;CACP;CACA,OAAO,IAAI,YAAY,IAAI,iBAAiB,IAAI,OAAO,GAAG,MAAM;AAClE"}
|
|
@@ -5,6 +5,7 @@ import type { Schema } from '../../../zero-types/src/schema.ts';
|
|
|
5
5
|
import type { ServerSchema } from '../../../zero-types/src/server-schema.ts';
|
|
6
6
|
import type { DBConnection, DBTransaction, Row } from '../../../zql/src/mutate/custom.ts';
|
|
7
7
|
import type { HumanReadable } from '../../../zql/src/query/query.ts';
|
|
8
|
+
import type { TransactionOptions } from '../transaction-options.ts';
|
|
8
9
|
import { ZQLDatabase } from '../zql-database.ts';
|
|
9
10
|
export type { ZQLDatabase };
|
|
10
11
|
/**
|
|
@@ -16,7 +17,8 @@ export type { ZQLDatabase };
|
|
|
16
17
|
export type PostgresJsTransaction<T extends Record<string, unknown> = Record<string, unknown>> = postgres.TransactionSql<T>;
|
|
17
18
|
export declare class PostgresJSConnection<T extends Record<string, unknown>> implements DBConnection<PostgresJsTransaction<T>> {
|
|
18
19
|
#private;
|
|
19
|
-
constructor(pg: postgres.Sql<T
|
|
20
|
+
constructor(pg: postgres.Sql<T>, options?: TransactionOptions);
|
|
21
|
+
query(sql: string, params: unknown[]): Promise<Row[]>;
|
|
20
22
|
transaction<TRet>(fn: (tx: DBTransaction<PostgresJsTransaction<T>>) => Promise<TRet>): Promise<TRet>;
|
|
21
23
|
}
|
|
22
24
|
export declare class PostgresJsTransactionInternal<T extends Record<string, unknown>> implements DBTransaction<PostgresJsTransaction<T>> {
|
|
@@ -62,5 +64,5 @@ export declare class PostgresJsTransactionInternal<T extends Record<string, unkn
|
|
|
62
64
|
* });
|
|
63
65
|
* ```
|
|
64
66
|
*/
|
|
65
|
-
export declare function zeroPostgresJS<S extends Schema, T extends Record<string, unknown> = Record<string, unknown>>(schema: S, pg: postgres.Sql<T> | string): ZQLDatabase<S, PostgresJsTransaction<T>>;
|
|
67
|
+
export declare function zeroPostgresJS<S extends Schema, T extends Record<string, unknown> = Record<string, unknown>>(schema: S, pg: postgres.Sql<T> | string, options?: TransactionOptions): ZQLDatabase<S, PostgresJsTransaction<T>>;
|
|
66
68
|
//# sourceMappingURL=postgresjs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresjs.d.ts","sourceRoot":"","sources":["../../../../../zero-server/src/adapters/postgresjs.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,GAAG,EACJ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAE/C,YAAY,EAAC,WAAW,EAAC,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACzD,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAE/B,qBAAa,oBAAoB,CAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACjC,YAAW,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;;
|
|
1
|
+
{"version":3,"file":"postgresjs.d.ts","sourceRoot":"","sources":["../../../../../zero-server/src/adapters/postgresjs.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0CAA0C,CAAC;AAC3E,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,GAAG,EACJ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iCAAiC,CAAC;AAEnE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAE/C,YAAY,EAAC,WAAW,EAAC,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACzD,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAE/B,qBAAa,oBAAoB,CAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACjC,YAAW,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;;IAGjD,YAAY,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,kBAAuB,EAGhE;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAEpD;IAED,WAAW,CAAC,IAAI,EACd,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GACjE,OAAO,CAAC,IAAI,CAAC,CASf;CACF;AAED,qBAAa,6BAA6B,CACxC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACjC,YAAW,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACtD,YAAY,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAEzC;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAEpD;IAED,QAAQ,CAAC,OAAO,EACd,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAQjC;CACF;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,cAAc,CAC5B,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,4CAOtE"}
|
|
@@ -4,11 +4,18 @@ import postgres from "postgres";
|
|
|
4
4
|
//#region ../zero-server/src/adapters/postgresjs.ts
|
|
5
5
|
var PostgresJSConnection = class {
|
|
6
6
|
#pg;
|
|
7
|
-
|
|
7
|
+
#options;
|
|
8
|
+
constructor(pg, options = {}) {
|
|
8
9
|
this.#pg = pg;
|
|
10
|
+
this.#options = options;
|
|
11
|
+
}
|
|
12
|
+
query(sql, params) {
|
|
13
|
+
return postgresJsQuery(this.#pg, sql, params);
|
|
9
14
|
}
|
|
10
15
|
transaction(fn) {
|
|
11
|
-
|
|
16
|
+
const run = (pgTx) => fn(new PostgresJsTransactionInternal(pgTx));
|
|
17
|
+
const { isolationLevel } = this.#options;
|
|
18
|
+
return isolationLevel === void 0 ? this.#pg.begin(run) : this.#pg.begin(`isolation level ${isolationLevel}`, run);
|
|
12
19
|
}
|
|
13
20
|
};
|
|
14
21
|
var PostgresJsTransactionInternal = class {
|
|
@@ -17,12 +24,15 @@ var PostgresJsTransactionInternal = class {
|
|
|
17
24
|
this.wrappedTransaction = pgTx;
|
|
18
25
|
}
|
|
19
26
|
query(sql, params) {
|
|
20
|
-
return this.wrappedTransaction
|
|
27
|
+
return postgresJsQuery(this.wrappedTransaction, sql, params);
|
|
21
28
|
}
|
|
22
29
|
runQuery(ast, format, schema, serverSchema) {
|
|
23
30
|
return executePostgresQuery(this, ast, format, schema, serverSchema);
|
|
24
31
|
}
|
|
25
32
|
};
|
|
33
|
+
function postgresJsQuery(sql, text, params) {
|
|
34
|
+
return sql.unsafe(text, params);
|
|
35
|
+
}
|
|
26
36
|
/**
|
|
27
37
|
* Wrap a `postgres` client for Zero ZQL.
|
|
28
38
|
*
|
|
@@ -60,9 +70,9 @@ var PostgresJsTransactionInternal = class {
|
|
|
60
70
|
* });
|
|
61
71
|
* ```
|
|
62
72
|
*/
|
|
63
|
-
function zeroPostgresJS(schema, pg) {
|
|
73
|
+
function zeroPostgresJS(schema, pg, options) {
|
|
64
74
|
if (typeof pg === "string") pg = postgres(pg, { connection: { ["application_name"]: "zero-server" } });
|
|
65
|
-
return new ZQLDatabase(new PostgresJSConnection(pg), schema);
|
|
75
|
+
return new ZQLDatabase(new PostgresJSConnection(pg, options), schema);
|
|
66
76
|
}
|
|
67
77
|
//#endregion
|
|
68
78
|
export { PostgresJSConnection, PostgresJsTransactionInternal, zeroPostgresJS };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresjs.js","names":["#pg"],"sources":["../../../../../zero-server/src/adapters/postgresjs.ts"],"sourcesContent":["import postgres from 'postgres';\nimport type {JSONValue} from '../../../shared/src/json.ts';\nimport type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {Format} from '../../../zero-types/src/format.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {ServerSchema} from '../../../zero-types/src/server-schema.ts';\nimport type {\n DBConnection,\n DBTransaction,\n Row,\n} from '../../../zql/src/mutate/custom.ts';\nimport type {HumanReadable} from '../../../zql/src/query/query.ts';\nimport {executePostgresQuery} from '../pg-query-executor.ts';\nimport {ZQLDatabase} from '../zql-database.ts';\n\nexport type {ZQLDatabase};\n\n/**\n * Helper type for the wrapped transaction used by postgres.js.\n *\n * @typeParam T - The row-shape context bound to the postgres.js client.\n * @remarks Use with `ServerTransaction` as `ServerTransaction<Schema, PostgresJsTransaction>`.\n */\nexport type PostgresJsTransaction<\n T extends Record<string, unknown> = Record<string, unknown>,\n> = postgres.TransactionSql<T>;\n\nexport class PostgresJSConnection<\n T extends Record<string, unknown>,\n> implements DBConnection<PostgresJsTransaction<T>> {\n readonly #pg: postgres.Sql<T>;\n constructor(pg: postgres.Sql<T
|
|
1
|
+
{"version":3,"file":"postgresjs.js","names":["#pg","#options"],"sources":["../../../../../zero-server/src/adapters/postgresjs.ts"],"sourcesContent":["import postgres from 'postgres';\nimport type {JSONValue} from '../../../shared/src/json.ts';\nimport type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {Format} from '../../../zero-types/src/format.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {ServerSchema} from '../../../zero-types/src/server-schema.ts';\nimport type {\n DBConnection,\n DBTransaction,\n Row,\n} from '../../../zql/src/mutate/custom.ts';\nimport type {HumanReadable} from '../../../zql/src/query/query.ts';\nimport {executePostgresQuery} from '../pg-query-executor.ts';\nimport type {TransactionOptions} from '../transaction-options.ts';\nimport {ZQLDatabase} from '../zql-database.ts';\n\nexport type {ZQLDatabase};\n\n/**\n * Helper type for the wrapped transaction used by postgres.js.\n *\n * @typeParam T - The row-shape context bound to the postgres.js client.\n * @remarks Use with `ServerTransaction` as `ServerTransaction<Schema, PostgresJsTransaction>`.\n */\nexport type PostgresJsTransaction<\n T extends Record<string, unknown> = Record<string, unknown>,\n> = postgres.TransactionSql<T>;\n\nexport class PostgresJSConnection<\n T extends Record<string, unknown>,\n> implements DBConnection<PostgresJsTransaction<T>> {\n readonly #pg: postgres.Sql<T>;\n readonly #options: TransactionOptions;\n constructor(pg: postgres.Sql<T>, options: TransactionOptions = {}) {\n this.#pg = pg;\n this.#options = options;\n }\n\n query(sql: string, params: unknown[]): Promise<Row[]> {\n return postgresJsQuery(this.#pg, sql, params);\n }\n\n transaction<TRet>(\n fn: (tx: DBTransaction<PostgresJsTransaction<T>>) => Promise<TRet>,\n ): Promise<TRet> {\n const run = (pgTx: PostgresJsTransaction<T>) =>\n fn(new PostgresJsTransactionInternal(pgTx));\n const {isolationLevel} = this.#options;\n return (\n isolationLevel === undefined\n ? this.#pg.begin(run)\n : this.#pg.begin(`isolation level ${isolationLevel}`, run)\n ) as Promise<TRet>;\n }\n}\n\nexport class PostgresJsTransactionInternal<\n T extends Record<string, unknown>,\n> implements DBTransaction<PostgresJsTransaction<T>> {\n readonly wrappedTransaction: PostgresJsTransaction<T>;\n constructor(pgTx: PostgresJsTransaction<T>) {\n this.wrappedTransaction = pgTx;\n }\n\n query(sql: string, params: unknown[]): Promise<Row[]> {\n return postgresJsQuery(this.wrappedTransaction, sql, params);\n }\n\n runQuery<TReturn>(\n ast: AST,\n format: Format,\n schema: Schema,\n serverSchema: ServerSchema,\n ): Promise<HumanReadable<TReturn>> {\n return executePostgresQuery<TReturn>(\n this,\n ast,\n format,\n schema,\n serverSchema,\n );\n }\n}\n\nfunction postgresJsQuery<T extends Record<string, unknown>>(\n sql: postgres.Sql<T>,\n text: string,\n params: unknown[],\n): Promise<Row[]> {\n return sql.unsafe(text, params as JSONValue[]);\n}\n\n/**\n * Wrap a `postgres` client for Zero ZQL.\n *\n * Provides ZQL querying plus access to the underlying postgres.js transaction.\n * Use {@link PostgresJsTransaction} to type your server mutator transaction.\n *\n * @param schema - Zero schema.\n * @param pg - `postgres` client or connection string.\n *\n * @example\n * ```ts\n * import postgres from 'postgres';\n * import {defineMutator, defineMutators} from '@rocicorp/zero';\n * import {zeroPostgresJS} from '@rocicorp/zero/server/adapters/postgresjs';\n * import {z} from 'zod/mini';\n *\n * const sql = postgres(process.env.ZERO_UPSTREAM_DB!);\n * const zql = zeroPostgresJS(schema, sql);\n *\n * export const serverMutators = defineMutators({\n * user: {\n * create: defineMutator(\n * z.object({id: z.string(), name: z.string()}),\n * async ({tx, args}) => {\n * if (tx.location !== 'server') {\n * throw new Error('Server-only mutator');\n * }\n * await tx.dbTransaction.wrappedTransaction`\n * INSERT INTO \"user\" (id, name, status)\n * VALUES (${args.id}, ${args.name}, ${'active'})\n * `;\n * },\n * ),\n * },\n * });\n * ```\n */\nexport function zeroPostgresJS<\n S extends Schema,\n T extends Record<string, unknown> = Record<string, unknown>,\n>(schema: S, pg: postgres.Sql<T> | string, options?: TransactionOptions) {\n if (typeof pg === 'string') {\n pg = postgres(pg, {\n connection: {['application_name']: 'zero-server'},\n }) as postgres.Sql<T>;\n }\n return new ZQLDatabase(new PostgresJSConnection(pg, options), schema);\n}\n"],"mappings":";;;;AA4BA,IAAa,uBAAb,MAEoD;CAClD;CACA;CACA,YAAY,IAAqB,UAA8B,CAAC,GAAG;EACjE,KAAKA,MAAM;EACX,KAAKC,WAAW;CAClB;CAEA,MAAM,KAAa,QAAmC;EACpD,OAAO,gBAAgB,KAAKD,KAAK,KAAK,MAAM;CAC9C;CAEA,YACE,IACe;EACf,MAAM,OAAO,SACX,GAAG,IAAI,8BAA8B,IAAI,CAAC;EAC5C,MAAM,EAAC,mBAAkB,KAAKC;EAC9B,OACE,mBAAmB,KAAA,IACf,KAAKD,IAAI,MAAM,GAAG,IAClB,KAAKA,IAAI,MAAM,mBAAmB,kBAAkB,GAAG;CAE/D;AACF;AAEA,IAAa,gCAAb,MAEqD;CACnD;CACA,YAAY,MAAgC;EAC1C,KAAK,qBAAqB;CAC5B;CAEA,MAAM,KAAa,QAAmC;EACpD,OAAO,gBAAgB,KAAK,oBAAoB,KAAK,MAAM;CAC7D;CAEA,SACE,KACA,QACA,QACA,cACiC;EACjC,OAAO,qBACL,MACA,KACA,QACA,QACA,YACF;CACF;AACF;AAEA,SAAS,gBACP,KACA,MACA,QACgB;CAChB,OAAO,IAAI,OAAO,MAAM,MAAqB;AAC/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,SAAgB,eAGd,QAAW,IAA8B,SAA8B;CACvE,IAAI,OAAO,OAAO,UAChB,KAAK,SAAS,IAAI,EAChB,YAAY,GAAE,qBAAqB,cAAa,EAClD,CAAC;CAEH,OAAO,IAAI,YAAY,IAAI,qBAAqB,IAAI,OAAO,GAAG,MAAM;AACtE"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import type { Schema } from '../../../zero-types/src/schema.ts';
|
|
2
|
-
import type { DBConnection, DBTransaction } from '../../../zql/src/mutate/custom.ts';
|
|
2
|
+
import type { DBConnection, DBTransaction, Row } from '../../../zql/src/mutate/custom.ts';
|
|
3
|
+
import type { TransactionOptions } from '../transaction-options.ts';
|
|
3
4
|
import { ZQLDatabase } from '../zql-database.ts';
|
|
4
5
|
export type { ZQLDatabase };
|
|
5
6
|
export type PrismaTransactionLike = {
|
|
6
7
|
$queryRawUnsafe: (query: string, ...params: unknown[]) => Promise<unknown>;
|
|
7
8
|
};
|
|
8
|
-
export type PrismaClientLike<TTransaction extends PrismaTransactionLike = PrismaTransactionLike> = {
|
|
9
|
-
$transaction: <T>(fn: (tx: TTransaction) => Promise<T
|
|
9
|
+
export type PrismaClientLike<TTransaction extends PrismaTransactionLike = PrismaTransactionLike> = PrismaTransactionLike & {
|
|
10
|
+
$transaction: <T>(fn: (tx: TTransaction) => Promise<T>, options?: PrismaTransactionOptions | undefined) => Promise<T>;
|
|
10
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* The subset of Prisma's transaction options this adapter passes through.
|
|
14
|
+
*
|
|
15
|
+
* Prisma spells the levels in PascalCase rather than as Postgres does, so
|
|
16
|
+
* {@link PRISMA_ISOLATION_LEVELS} maps between them.
|
|
17
|
+
*/
|
|
18
|
+
type PrismaTransactionOptions = {
|
|
19
|
+
isolationLevel?: PrismaIsolationLevel;
|
|
20
|
+
};
|
|
21
|
+
type PrismaIsolationLevel = 'ReadCommitted' | 'RepeatableRead' | 'Serializable';
|
|
11
22
|
/**
|
|
12
23
|
* Helper type for the wrapped transaction used by Prisma.
|
|
13
24
|
*
|
|
@@ -16,7 +27,8 @@ export type PrismaClientLike<TTransaction extends PrismaTransactionLike = Prisma
|
|
|
16
27
|
export type PrismaTransaction<TClient extends PrismaClientLike = PrismaClientLike> = TClient extends PrismaClientLike<infer TTransaction> ? TTransaction : PrismaTransactionLike;
|
|
17
28
|
export declare class PrismaConnection<TClient extends PrismaClientLike> implements DBConnection<PrismaTransaction<TClient>> {
|
|
18
29
|
#private;
|
|
19
|
-
constructor(client: TClient);
|
|
30
|
+
constructor(client: TClient, options?: TransactionOptions);
|
|
31
|
+
query(sql: string, params: unknown[]): Promise<Iterable<Row>>;
|
|
20
32
|
transaction<T>(fn: (tx: DBTransaction<PrismaTransaction<TClient>>) => Promise<T>): Promise<T>;
|
|
21
33
|
}
|
|
22
34
|
/**
|
|
@@ -62,5 +74,5 @@ export declare class PrismaConnection<TClient extends PrismaClientLike> implemen
|
|
|
62
74
|
* });
|
|
63
75
|
* ```
|
|
64
76
|
*/
|
|
65
|
-
export declare function zeroPrisma<TSchema extends Schema, TClient extends PrismaClientLike>(schema: TSchema, client: TClient): ZQLDatabase<TSchema, PrismaTransaction<TClient>>;
|
|
77
|
+
export declare function zeroPrisma<TSchema extends Schema, TClient extends PrismaClientLike>(schema: TSchema, client: TClient, options?: TransactionOptions): ZQLDatabase<TSchema, PrismaTransaction<TClient>>;
|
|
66
78
|
//# sourceMappingURL=prisma.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../../../../zero-server/src/adapters/prisma.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,
|
|
1
|
+
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../../../../zero-server/src/adapters/prisma.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAE9D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,GAAG,EACJ,MAAM,mCAAmC,CAAC;AAG3C,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAE/C,YAAY,EAAC,WAAW,EAAC,CAAC;AAE1B,MAAM,MAAM,qBAAqB,GAAG;IAClC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5E,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAC1B,YAAY,SAAS,qBAAqB,GAAG,qBAAqB,IAChE,qBAAqB,GAAG;IAC1B,YAAY,EAAE,CAAC,CAAC,EACd,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,EACpC,OAAO,CAAC,EAAE,wBAAwB,GAAG,SAAS,KAC3C,OAAO,CAAC,CAAC,CAAC,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,KAAK,wBAAwB,GAAG;IAG9B,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC,CAAC;AAEF,KAAK,oBAAoB,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAQhF;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAC3B,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,IAEnD,OAAO,SAAS,gBAAgB,CAAC,MAAM,YAAY,CAAC,GAChD,YAAY,GACZ,qBAAqB,CAAC;AAE5B,qBAAa,gBAAgB,CAC3B,OAAO,SAAS,gBAAgB,CAChC,YAAW,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;;IAInD,YAAY,MAAM,EAAE,OAAO,EAAE,OAAO,GAAE,kBAAuB,EAG5D;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAE5D;IAED,WAAW,CAAC,CAAC,EACX,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAChE,OAAO,CAAC,CAAC,CAAC,CAaZ;CACF;AA6DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,UAAU,CACxB,OAAO,SAAS,MAAM,EACtB,OAAO,SAAS,gBAAgB,EAEhC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,kBAAkB,GAC3B,WAAW,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAElD"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import { executePostgresQuery } from "../pg-query-executor.js";
|
|
2
2
|
import { ZQLDatabase } from "../zql-database.js";
|
|
3
3
|
//#region ../zero-server/src/adapters/prisma.ts
|
|
4
|
+
var PRISMA_ISOLATION_LEVELS = {
|
|
5
|
+
"read committed": "ReadCommitted",
|
|
6
|
+
"repeatable read": "RepeatableRead",
|
|
7
|
+
"serializable": "Serializable"
|
|
8
|
+
};
|
|
4
9
|
var PrismaConnection = class {
|
|
5
10
|
#client;
|
|
6
|
-
|
|
11
|
+
#options;
|
|
12
|
+
constructor(client, options = {}) {
|
|
7
13
|
this.#client = client;
|
|
14
|
+
this.#options = options;
|
|
15
|
+
}
|
|
16
|
+
query(sql, params) {
|
|
17
|
+
return prismaQuery(this.#client, sql, params);
|
|
8
18
|
}
|
|
9
19
|
transaction(fn) {
|
|
10
|
-
|
|
20
|
+
const { isolationLevel } = this.#options;
|
|
21
|
+
return this.#client.$transaction((prismaTx) => fn(new PrismaInternalTransaction(prismaTx)), isolationLevel === void 0 ? void 0 : { isolationLevel: PRISMA_ISOLATION_LEVELS[isolationLevel] });
|
|
11
22
|
}
|
|
12
23
|
};
|
|
13
24
|
var PrismaInternalTransaction = class {
|
|
@@ -18,10 +29,13 @@ var PrismaInternalTransaction = class {
|
|
|
18
29
|
runQuery(ast, format, schema, serverSchema) {
|
|
19
30
|
return executePostgresQuery(this, ast, format, schema, serverSchema);
|
|
20
31
|
}
|
|
21
|
-
|
|
22
|
-
return
|
|
32
|
+
query(sql, params) {
|
|
33
|
+
return prismaQuery(this.wrappedTransaction, sql, params);
|
|
23
34
|
}
|
|
24
35
|
};
|
|
36
|
+
async function prismaQuery(client, sql, params) {
|
|
37
|
+
return toIterableRows(await client.$queryRawUnsafe(sql, ...params));
|
|
38
|
+
}
|
|
25
39
|
function isIterable(value) {
|
|
26
40
|
return value != null && typeof value[Symbol.iterator] === "function";
|
|
27
41
|
}
|
|
@@ -74,8 +88,8 @@ function toIterableRows(result) {
|
|
|
74
88
|
* });
|
|
75
89
|
* ```
|
|
76
90
|
*/
|
|
77
|
-
function zeroPrisma(schema, client) {
|
|
78
|
-
return new ZQLDatabase(new PrismaConnection(client), schema);
|
|
91
|
+
function zeroPrisma(schema, client, options) {
|
|
92
|
+
return new ZQLDatabase(new PrismaConnection(client, options), schema);
|
|
79
93
|
}
|
|
80
94
|
//#endregion
|
|
81
95
|
export { PrismaConnection, zeroPrisma };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma.js","names":["#client"],"sources":["../../../../../zero-server/src/adapters/prisma.ts"],"sourcesContent":["import type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {Format} from '../../../zero-types/src/format.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {ServerSchema} from '../../../zero-types/src/server-schema.ts';\nimport type {\n DBConnection,\n DBTransaction,\n Row,\n} from '../../../zql/src/mutate/custom.ts';\nimport type {HumanReadable} from '../../../zql/src/query/query.ts';\nimport {executePostgresQuery} from '../pg-query-executor.ts';\nimport {ZQLDatabase} from '../zql-database.ts';\n\nexport type {ZQLDatabase};\n\nexport type PrismaTransactionLike = {\n $queryRawUnsafe: (query: string, ...params: unknown[]) => Promise<unknown>;\n};\n\nexport type PrismaClientLike<\n TTransaction extends PrismaTransactionLike = PrismaTransactionLike,\n> = {\n $transaction: <T>(fn: (tx: TTransaction) => Promise<T
|
|
1
|
+
{"version":3,"file":"prisma.js","names":["#client","#options"],"sources":["../../../../../zero-server/src/adapters/prisma.ts"],"sourcesContent":["import type {AST} from '../../../zero-protocol/src/ast.ts';\nimport type {Format} from '../../../zero-types/src/format.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {ServerSchema} from '../../../zero-types/src/server-schema.ts';\nimport type {\n DBConnection,\n DBTransaction,\n Row,\n} from '../../../zql/src/mutate/custom.ts';\nimport type {HumanReadable} from '../../../zql/src/query/query.ts';\nimport {executePostgresQuery} from '../pg-query-executor.ts';\nimport type {\n IsolationLevel,\n TransactionOptions,\n} from '../transaction-options.ts';\nimport {ZQLDatabase} from '../zql-database.ts';\n\nexport type {ZQLDatabase};\n\nexport type PrismaTransactionLike = {\n $queryRawUnsafe: (query: string, ...params: unknown[]) => Promise<unknown>;\n};\n\nexport type PrismaClientLike<\n TTransaction extends PrismaTransactionLike = PrismaTransactionLike,\n> = PrismaTransactionLike & {\n $transaction: <T>(\n fn: (tx: TTransaction) => Promise<T>,\n options?: PrismaTransactionOptions | undefined,\n ) => Promise<T>;\n};\n\n/**\n * The subset of Prisma's transaction options this adapter passes through.\n *\n * Prisma spells the levels in PascalCase rather than as Postgres does, so\n * {@link PRISMA_ISOLATION_LEVELS} maps between them.\n */\ntype PrismaTransactionOptions = {\n // No `| undefined`: Prisma's own option is declared without it, and under\n // `exactOptionalPropertyTypes` that would make a real client unassignable.\n isolationLevel?: PrismaIsolationLevel;\n};\n\ntype PrismaIsolationLevel = 'ReadCommitted' | 'RepeatableRead' | 'Serializable';\n\nconst PRISMA_ISOLATION_LEVELS: Record<IsolationLevel, PrismaIsolationLevel> = {\n 'read committed': 'ReadCommitted',\n 'repeatable read': 'RepeatableRead',\n 'serializable': 'Serializable',\n};\n\n/**\n * Helper type for the wrapped transaction used by Prisma.\n *\n * @remarks Use with `ServerTransaction` as `ServerTransaction<Schema, PrismaTransaction<typeof prisma>>`.\n */\nexport type PrismaTransaction<\n TClient extends PrismaClientLike = PrismaClientLike,\n> =\n TClient extends PrismaClientLike<infer TTransaction>\n ? TTransaction\n : PrismaTransactionLike;\n\nexport class PrismaConnection<\n TClient extends PrismaClientLike,\n> implements DBConnection<PrismaTransaction<TClient>> {\n readonly #client: TClient;\n readonly #options: TransactionOptions;\n\n constructor(client: TClient, options: TransactionOptions = {}) {\n this.#client = client;\n this.#options = options;\n }\n\n query(sql: string, params: unknown[]): Promise<Iterable<Row>> {\n return prismaQuery(this.#client, sql, params);\n }\n\n transaction<T>(\n fn: (tx: DBTransaction<PrismaTransaction<TClient>>) => Promise<T>,\n ): Promise<T> {\n const {isolationLevel} = this.#options;\n return this.#client.$transaction(\n prismaTx =>\n fn(\n new PrismaInternalTransaction(prismaTx) as DBTransaction<\n PrismaTransaction<TClient>\n >,\n ),\n isolationLevel === undefined\n ? undefined\n : {isolationLevel: PRISMA_ISOLATION_LEVELS[isolationLevel]},\n );\n }\n}\n\nclass PrismaInternalTransaction<\n TTransaction extends PrismaTransactionLike,\n> implements DBTransaction<TTransaction> {\n readonly wrappedTransaction: TTransaction;\n\n constructor(prismaTx: TTransaction) {\n this.wrappedTransaction = prismaTx;\n }\n\n runQuery<TReturn>(\n ast: AST,\n format: Format,\n schema: Schema,\n serverSchema: ServerSchema,\n ): Promise<HumanReadable<TReturn>> {\n return executePostgresQuery<TReturn>(\n this,\n ast,\n format,\n schema,\n serverSchema,\n );\n }\n\n query(sql: string, params: unknown[]): Promise<Iterable<Row>> {\n return prismaQuery(this.wrappedTransaction, sql, params);\n }\n}\n\nasync function prismaQuery(\n client: PrismaTransactionLike,\n sql: string,\n params: unknown[],\n): Promise<Iterable<Row>> {\n const result = await client.$queryRawUnsafe(sql, ...params);\n return toIterableRows(result);\n}\n\nfunction isIterable(value: unknown): value is Iterable<unknown> {\n return (\n // oxlint-disable-next-line eqeqeq\n value != null &&\n typeof (value as Iterable<unknown>)[Symbol.iterator] === 'function'\n );\n}\n\nfunction toIterableRows(result: unknown): Iterable<Row> {\n if (result === null || result === undefined) {\n return [] as Row[];\n }\n if (Array.isArray(result)) {\n return result as Row[];\n }\n if (isIterable(result)) {\n return result as Iterable<Row>;\n }\n return [] as Row[];\n}\n\n/**\n * Wrap a Prisma client for Zero ZQL.\n *\n * Provides ZQL querying plus access to the underlying Prisma transaction.\n * Use {@link PrismaTransaction} to type your server mutator transaction.\n *\n * @param schema - Zero schema.\n * @param client - Prisma client.\n *\n * @example\n * ```ts\n * import {PrismaPg} from '@prisma/adapter-pg';\n * import {PrismaClient} from '@prisma/client';\n * import {defineMutator, defineMutators} from '@rocicorp/zero';\n * import {zeroPrisma} from '@rocicorp/zero/server/adapters/prisma';\n * import {z} from 'zod/mini';\n *\n * const prisma = new PrismaClient({\n * adapter: new PrismaPg({connectionString: process.env.ZERO_UPSTREAM_DB!}),\n * });\n * const zql = zeroPrisma(schema, prisma);\n *\n * export const serverMutators = defineMutators({\n * user: {\n * create: defineMutator(\n * z.object({id: z.string(), name: z.string()}),\n * async ({tx, args}) => {\n * if (tx.location !== 'server') {\n * throw new Error('Server-only mutator');\n * }\n * await tx.dbTransaction.wrappedTransaction.user.create({\n * data: {\n * id: args.id,\n * name: args.name,\n * status: 'active',\n * },\n * });\n * },\n * ),\n * },\n * });\n * ```\n */\nexport function zeroPrisma<\n TSchema extends Schema,\n TClient extends PrismaClientLike,\n>(\n schema: TSchema,\n client: TClient,\n options?: TransactionOptions,\n): ZQLDatabase<TSchema, PrismaTransaction<TClient>> {\n return new ZQLDatabase(new PrismaConnection(client, options), schema);\n}\n"],"mappings":";;;AA8CA,IAAM,0BAAwE;CAC5E,kBAAkB;CAClB,mBAAmB;CACnB,gBAAgB;AAClB;AAcA,IAAa,mBAAb,MAEsD;CACpD;CACA;CAEA,YAAY,QAAiB,UAA8B,CAAC,GAAG;EAC7D,KAAKA,UAAU;EACf,KAAKC,WAAW;CAClB;CAEA,MAAM,KAAa,QAA2C;EAC5D,OAAO,YAAY,KAAKD,SAAS,KAAK,MAAM;CAC9C;CAEA,YACE,IACY;EACZ,MAAM,EAAC,mBAAkB,KAAKC;EAC9B,OAAO,KAAKD,QAAQ,cAClB,aACE,GACE,IAAI,0BAA0B,QAAQ,CAGxC,GACF,mBAAmB,KAAA,IACf,KAAA,IACA,EAAC,gBAAgB,wBAAwB,gBAAe,CAC9D;CACF;AACF;AAEA,IAAM,4BAAN,MAEyC;CACvC;CAEA,YAAY,UAAwB;EAClC,KAAK,qBAAqB;CAC5B;CAEA,SACE,KACA,QACA,QACA,cACiC;EACjC,OAAO,qBACL,MACA,KACA,QACA,QACA,YACF;CACF;CAEA,MAAM,KAAa,QAA2C;EAC5D,OAAO,YAAY,KAAK,oBAAoB,KAAK,MAAM;CACzD;AACF;AAEA,eAAe,YACb,QACA,KACA,QACwB;CAExB,OAAO,eAAe,MADD,OAAO,gBAAgB,KAAK,GAAG,MAAM,CAC9B;AAC9B;AAEA,SAAS,WAAW,OAA4C;CAC9D,OAEE,SAAS,QACT,OAAQ,MAA4B,OAAO,cAAc;AAE7D;AAEA,SAAS,eAAe,QAAgC;CACtD,IAAI,WAAW,QAAQ,WAAW,KAAA,GAChC,OAAO,CAAC;CAEV,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO;CAET,IAAI,WAAW,MAAM,GACnB,OAAO;CAET,OAAO,CAAC;AACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,SAAgB,WAId,QACA,QACA,SACkD;CAClD,OAAO,IAAI,YAAY,IAAI,iBAAiB,QAAQ,OAAO,GAAG,MAAM;AACtE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DBTransaction, Queryable } from '../../zql/src/mutate/custom.ts';
|
|
2
|
+
import type { HumanReadable } from '../../zql/src/query/query.ts';
|
|
3
|
+
/**
|
|
4
|
+
* A {@linkcode DBTransaction} that stops working once closed. The mutator's
|
|
5
|
+
* `tx` is built on it, so code that outlives the transaction cannot reach a
|
|
6
|
+
* connection that has been committed, rolled back or returned to the pool.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ClosableDBTransaction<T> implements DBTransaction<T> {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(inner: DBTransaction<T>);
|
|
11
|
+
close(): void;
|
|
12
|
+
get wrappedTransaction(): T;
|
|
13
|
+
query: Queryable['query'];
|
|
14
|
+
runQuery<TReturn>(...args: Parameters<DBTransaction<T>['runQuery']>): Promise<HumanReadable<TReturn>>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=closable-db-transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"closable-db-transaction.d.ts","sourceRoot":"","sources":["../../../../zero-server/src/closable-db-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAC,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAEhE;;;;GAIG;AACH,qBAAa,qBAAqB,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;;IAI/D,YAAY,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAElC;IAED,KAAK,IAAI,IAAI,CAEZ;IAED,IAAI,kBAAkB,IAAI,CAAC,CAK1B;IAED,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAGY;IAErC,QAAQ,CAAC,OAAO,EACd,GAAG,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAChD,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAIjC;CACF"}
|