@rocicorp/zero 1.12.0-canary.1 → 1.12.0-canary.11
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/_virtual/{_@oxc-project_runtime@0.130.0/helpers → _@oxc-project_runtime@0.154.0/helpers/esm}/usingCtx.js +2 -2
- package/out/analyze-query/src/analyze-cli.d.ts.map +1 -1
- package/out/analyze-query/src/analyze-cli.js +6 -4
- package/out/analyze-query/src/analyze-cli.js.map +1 -1
- package/out/analyze-query/src/bin-transform.js +4 -3
- package/out/analyze-query/src/bin-transform.js.map +1 -1
- package/out/analyze-query/src/zql-chain.d.ts +23 -0
- package/out/analyze-query/src/zql-chain.d.ts.map +1 -0
- package/out/analyze-query/src/zql-chain.js +170 -0
- package/out/analyze-query/src/zql-chain.js.map +1 -0
- package/out/ast-to-zql/src/ast-to-zql.d.ts.map +1 -1
- package/out/ast-to-zql/src/ast-to-zql.js +61 -20
- package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
- package/out/ast-to-zql/src/bin.js +4 -3
- package/out/ast-to-zql/src/bin.js.map +1 -1
- package/out/ast-to-zql/src/format.js.map +1 -1
- package/out/datadog/src/datadog-log-sink.js +5 -4
- package/out/datadog/src/datadog-log-sink.js.map +1 -1
- package/out/otel/src/log-options.js.map +1 -1
- package/out/replicache/src/btree/node.d.ts +0 -2
- package/out/replicache/src/btree/node.d.ts.map +1 -1
- package/out/replicache/src/btree/node.js +14 -12
- package/out/replicache/src/btree/node.js.map +1 -1
- package/out/replicache/src/btree/read.js +4 -2
- package/out/replicache/src/btree/read.js.map +1 -1
- package/out/replicache/src/btree/splice.js.map +1 -1
- package/out/replicache/src/btree/write.js +9 -5
- package/out/replicache/src/btree/write.js.map +1 -1
- package/out/replicache/src/config.js +1 -2
- package/out/replicache/src/connection-loop.d.ts.map +1 -1
- package/out/replicache/src/connection-loop.js +1 -1
- package/out/replicache/src/connection-loop.js.map +1 -1
- package/out/replicache/src/dag/chunk.js +1 -1
- package/out/replicache/src/dag/gc.js.map +1 -1
- package/out/replicache/src/dag/lazy-store.js +8 -7
- package/out/replicache/src/dag/lazy-store.js.map +1 -1
- package/out/replicache/src/dag/store-impl.js +1 -1
- package/out/replicache/src/dag/store-impl.js.map +1 -1
- package/out/replicache/src/dag/visitor.js.map +1 -1
- package/out/replicache/src/db/commit.d.ts +0 -1
- package/out/replicache/src/db/commit.d.ts.map +1 -1
- package/out/replicache/src/db/commit.js +5 -3
- package/out/replicache/src/db/commit.js.map +1 -1
- package/out/replicache/src/db/read.js +1 -1
- package/out/replicache/src/db/read.js.map +1 -1
- package/out/replicache/src/db/rebase.js.map +1 -1
- package/out/replicache/src/db/write.d.ts +0 -2
- package/out/replicache/src/db/write.d.ts.map +1 -1
- package/out/replicache/src/db/write.js +5 -2
- package/out/replicache/src/db/write.js.map +1 -1
- package/out/replicache/src/deleted-clients.d.ts +0 -2
- package/out/replicache/src/deleted-clients.d.ts.map +1 -1
- package/out/replicache/src/deleted-clients.js +5 -3
- package/out/replicache/src/deleted-clients.js.map +1 -1
- package/out/replicache/src/expo-sqlite.js +1 -2
- package/out/replicache/src/frozen-json.d.ts +0 -1
- package/out/replicache/src/frozen-json.d.ts.map +1 -1
- package/out/replicache/src/frozen-json.js +1 -1
- package/out/replicache/src/frozen-json.js.map +1 -1
- package/out/replicache/src/get-default-puller.js +1 -1
- package/out/replicache/src/hash.js +1 -1
- package/out/replicache/src/hash.js.map +1 -1
- package/out/replicache/src/impl.js +1 -2
- package/out/replicache/src/index-defs.d.ts +0 -2
- package/out/replicache/src/index-defs.d.ts.map +1 -1
- package/out/replicache/src/index-defs.js +5 -3
- package/out/replicache/src/index-defs.js.map +1 -1
- package/out/replicache/src/kv/expo-sqlite/store.d.ts +0 -1
- package/out/replicache/src/kv/expo-sqlite/store.d.ts.map +1 -1
- package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
- package/out/replicache/src/kv/idb-store.js +2 -2
- package/out/replicache/src/kv/idb-store.js.map +1 -1
- package/out/replicache/src/kv/mem-fallback-store.js +1 -1
- package/out/replicache/src/kv/mem-fallback-store.js.map +1 -1
- package/out/replicache/src/kv/mem-store.js.map +1 -1
- package/out/replicache/src/kv/op-sqlite/store.js.map +1 -1
- package/out/replicache/src/kv/op-sqlite/types.js.map +1 -1
- package/out/replicache/src/kv/read-impl.js.map +1 -1
- package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
- package/out/replicache/src/kv/sqlite-store.js +8 -4
- package/out/replicache/src/kv/sqlite-store.js.map +1 -1
- package/out/replicache/src/kv/throw-if-closed.d.ts +0 -3
- package/out/replicache/src/kv/throw-if-closed.d.ts.map +1 -1
- package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
- package/out/replicache/src/kv/write-impl-base.js +4 -1
- package/out/replicache/src/kv/write-impl-base.js.map +1 -1
- package/out/replicache/src/kv/write-impl.js.map +1 -1
- package/out/replicache/src/log-options.js +2 -1
- package/out/replicache/src/log-options.js.map +1 -1
- package/out/replicache/src/make-idb-name.js +1 -1
- package/out/replicache/src/new-client-channel.js +9 -7
- package/out/replicache/src/new-client-channel.js.map +1 -1
- package/out/replicache/src/on-persist-channel.js +1 -1
- package/out/replicache/src/on-persist-channel.js.map +1 -1
- package/out/replicache/src/op-sqlite.js +1 -2
- package/out/replicache/src/pending-mutations.js +2 -1
- package/out/replicache/src/pending-mutations.js.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 +0 -7
- package/out/replicache/src/persist/client-group-gc.d.ts.map +1 -1
- package/out/replicache/src/persist/client-group-gc.js +1 -1
- package/out/replicache/src/persist/client-group-gc.js.map +1 -1
- package/out/replicache/src/persist/client-groups.js +1 -1
- package/out/replicache/src/persist/client-groups.js.map +1 -1
- package/out/replicache/src/persist/clients.js +1 -1
- package/out/replicache/src/persist/clients.js.map +1 -1
- package/out/replicache/src/persist/collect-idb-databases.js +5 -4
- package/out/replicache/src/persist/collect-idb-databases.js.map +1 -1
- package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -1
- package/out/replicache/src/persist/gather-not-cached-visitor.js.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.js +1 -1
- package/out/replicache/src/persist/idb-databases-store.js.map +1 -1
- package/out/replicache/src/persist/make-client-id.js +1 -1
- package/out/replicache/src/persist/make-client-id.js.map +1 -1
- package/out/replicache/src/persist/persist.js +3 -2
- package/out/replicache/src/persist/persist.js.map +1 -1
- package/out/replicache/src/persist/refresh.js +8 -5
- package/out/replicache/src/persist/refresh.js.map +1 -1
- package/out/replicache/src/process-scheduler.js +1 -1
- package/out/replicache/src/process-scheduler.js.map +1 -1
- package/out/replicache/src/replicache-impl.d.ts +2 -7
- package/out/replicache/src/replicache-impl.d.ts.map +1 -1
- package/out/replicache/src/replicache-impl.js +21 -18
- package/out/replicache/src/replicache-impl.js.map +1 -1
- package/out/replicache/src/scan-iterator.js.map +1 -1
- package/out/replicache/src/scan-options.js +7 -6
- package/out/replicache/src/scan-options.js.map +1 -1
- package/out/replicache/src/sqlite.js +1 -2
- package/out/replicache/src/subscriptions.js +1 -1
- package/out/replicache/src/subscriptions.js.map +1 -1
- package/out/replicache/src/sync/diff.js +3 -1
- package/out/replicache/src/sync/diff.js.map +1 -1
- package/out/replicache/src/sync/ids.js.map +1 -1
- package/out/replicache/src/sync/patch.d.ts +0 -5
- package/out/replicache/src/sync/patch.d.ts.map +1 -1
- package/out/replicache/src/sync/patch.js +2 -4
- package/out/replicache/src/sync/patch.js.map +1 -1
- package/out/replicache/src/sync/pull.d.ts +0 -1
- package/out/replicache/src/sync/pull.d.ts.map +1 -1
- package/out/replicache/src/sync/pull.js +3 -1
- package/out/replicache/src/sync/pull.js.map +1 -1
- package/out/replicache/src/sync/push.d.ts +2 -1
- package/out/replicache/src/sync/push.d.ts.map +1 -1
- package/out/replicache/src/sync/push.js.map +1 -1
- package/out/replicache/src/sync/request-id.js +1 -1
- package/out/replicache/src/sync/request-id.js.map +1 -1
- package/out/replicache/src/transactions.js +1 -1
- package/out/replicache/src/transactions.js.map +1 -1
- package/out/replicache/src/types.d.ts +2 -1
- package/out/replicache/src/types.d.ts.map +1 -1
- package/out/shared/src/arrays.js +4 -1
- package/out/shared/src/arrays.js.map +1 -1
- package/out/shared/src/asserts.d.ts +0 -5
- package/out/shared/src/asserts.d.ts.map +1 -1
- package/out/shared/src/asserts.js.map +1 -1
- package/out/shared/src/bigint-json.d.ts +9 -0
- package/out/shared/src/bigint-json.d.ts.map +1 -1
- package/out/shared/src/bigint-json.js +27 -2
- package/out/shared/src/bigint-json.js.map +1 -1
- package/out/shared/src/broadcast-channel.js +1 -1
- package/out/shared/src/browser-env.d.ts +0 -17
- package/out/shared/src/browser-env.d.ts.map +1 -1
- package/out/shared/src/browser-env.js.map +1 -1
- package/out/shared/src/btree-set.js +11 -8
- package/out/shared/src/btree-set.js.map +1 -1
- package/out/shared/src/cache.js.map +1 -1
- package/out/shared/src/config.js +1 -1
- package/out/shared/src/custom-key-map.js.map +1 -1
- package/out/shared/src/custom-key-set.js.map +1 -1
- package/out/shared/src/deep-clone.d.ts +0 -1
- package/out/shared/src/deep-clone.d.ts.map +1 -1
- package/out/shared/src/deep-clone.js.map +1 -1
- package/out/shared/src/document-visible.js +1 -1
- package/out/shared/src/document-visible.js.map +1 -1
- package/out/shared/src/dotenv.js.map +1 -1
- package/out/shared/src/error.js +1 -1
- package/out/shared/src/error.js.map +1 -1
- package/out/shared/src/expand.d.ts +0 -3
- package/out/shared/src/expand.d.ts.map +1 -1
- package/out/shared/src/hash.js +2 -2
- package/out/shared/src/hash.js.map +1 -1
- package/out/shared/src/immutable.d.ts +1 -1
- package/out/shared/src/immutable.d.ts.map +1 -1
- package/out/shared/src/iterables.d.ts +0 -1
- package/out/shared/src/iterables.d.ts.map +1 -1
- package/out/shared/src/iterables.js.map +1 -1
- package/out/shared/src/json-schema.js.map +1 -1
- package/out/shared/src/json.js.map +1 -1
- package/out/shared/src/logging-test-utils.js.map +1 -1
- package/out/shared/src/logging.js +1 -1
- package/out/shared/src/logging.js.map +1 -1
- package/out/shared/src/navigator.js +1 -1
- package/out/shared/src/options-types.d.ts +1 -1
- package/out/shared/src/options-types.d.ts.map +1 -1
- package/out/shared/src/options.d.ts +2 -3
- package/out/shared/src/options.d.ts.map +1 -1
- package/out/shared/src/options.js +8 -11
- package/out/shared/src/options.js.map +1 -1
- package/out/shared/src/promise-race.js +1 -1
- package/out/shared/src/promise-race.js.map +1 -1
- package/out/shared/src/queue.js +1 -1
- package/out/shared/src/queue.js.map +1 -1
- package/out/shared/src/record-proxy.js.map +1 -1
- package/out/shared/src/resolved-promises.d.ts +0 -4
- package/out/shared/src/resolved-promises.d.ts.map +1 -1
- package/out/shared/src/resolved-promises.js +0 -1
- package/out/shared/src/resolved-promises.js.map +1 -1
- package/out/shared/src/resolver.d.ts +9 -0
- package/out/shared/src/resolver.d.ts.map +1 -0
- package/out/shared/src/resolver.js +6 -0
- package/out/shared/src/resolver.js.map +1 -0
- package/out/shared/src/ring-buffer.js.map +1 -1
- package/out/shared/src/size-of-value.js +7 -10
- package/out/shared/src/size-of-value.js.map +1 -1
- package/out/shared/src/sleep.js +1 -1
- package/out/shared/src/sleep.js.map +1 -1
- package/out/shared/src/sorted-entries.js.map +1 -1
- package/out/shared/src/tdigest-schema.js.map +1 -1
- package/out/shared/src/tdigest.d.ts +0 -1
- package/out/shared/src/tdigest.d.ts.map +1 -1
- package/out/shared/src/tdigest.js.map +1 -1
- package/out/shared/src/valita.js +1 -1
- package/out/shared/src/valita.js.map +1 -1
- package/out/z2s/src/compiler.d.ts +1 -1
- package/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js +344 -9
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/z2s/src/sql.d.ts +9 -5
- package/out/z2s/src/sql.d.ts.map +1 -1
- package/out/z2s/src/sql.js +58 -11
- package/out/z2s/src/sql.js.map +1 -1
- package/out/zero/package.js +210 -189
- package/out/zero/package.js.map +1 -1
- package/out/zero/src/adapters/drizzle.js +1 -2
- package/out/zero/src/adapters/kysely.js +1 -2
- package/out/zero/src/adapters/pg.js +1 -2
- package/out/zero/src/adapters/postgresjs.js +1 -2
- package/out/zero/src/adapters/prisma.js +1 -2
- package/out/zero/src/analyze.js +1 -2
- package/out/zero/src/bindings.js +4 -4
- package/out/zero/src/change-protocol/v0.js +1 -2
- package/out/zero/src/expo-sqlite.js +1 -2
- package/out/zero/src/op-sqlite.js +1 -2
- package/out/zero/src/react-native.js.map +1 -1
- package/out/zero/src/sqlite.js +1 -2
- package/out/zero/src/zero-cache-dev.js +11 -10
- package/out/zero/src/zero-cache-dev.js.map +1 -1
- package/out/zero/src/zero-out.js +2 -1
- package/out/zero/src/zero-out.js.map +1 -1
- package/out/zero-cache/src/auth/auth.js +1 -1
- package/out/zero-cache/src/auth/auth.js.map +1 -1
- package/out/zero-cache/src/auth/jwt.js +4 -1
- package/out/zero-cache/src/auth/jwt.js.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.js +1 -1
- package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
- package/out/zero-cache/src/auth/read-authorizer.js +3 -2
- package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +16 -20
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/config/network.js +1 -1
- package/out/zero-cache/src/config/network.js.map +1 -1
- package/out/zero-cache/src/config/server-context.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +23 -11
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +51 -4
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/custom/fetch.js +1 -1
- package/out/zero-cache/src/custom/fetch.js.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
- package/out/zero-cache/src/db/create.js +1 -1
- package/out/zero-cache/src/db/create.js.map +1 -1
- package/out/zero-cache/src/db/index-predicate.js.map +1 -1
- package/out/zero-cache/src/db/lite-tables.d.ts +2 -2
- package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
- package/out/zero-cache/src/db/lite-tables.js.map +1 -1
- package/out/zero-cache/src/db/migration-lite.js +1 -1
- package/out/zero-cache/src/db/migration-lite.js.map +1 -1
- package/out/zero-cache/src/db/migration.js +5 -3
- package/out/zero-cache/src/db/migration.js.map +1 -1
- package/out/zero-cache/src/db/pg-copy-binary.js +4 -3
- package/out/zero-cache/src/db/pg-copy-binary.js.map +1 -1
- package/out/zero-cache/src/db/pg-copy.js +0 -1
- package/out/zero-cache/src/db/pg-copy.js.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.js +1 -1
- package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
- package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
- package/out/zero-cache/src/db/run-transaction.js.map +1 -1
- package/out/zero-cache/src/db/specs.d.ts +3 -4
- package/out/zero-cache/src/db/specs.d.ts.map +1 -1
- package/out/zero-cache/src/db/specs.js +1 -1
- package/out/zero-cache/src/db/specs.js.map +1 -1
- package/out/zero-cache/src/db/sqlite-corruption.js.map +1 -1
- package/out/zero-cache/src/db/statements.d.ts.map +1 -1
- package/out/zero-cache/src/db/statements.js +9 -2
- package/out/zero-cache/src/db/statements.js.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.js +6 -4
- package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
- package/out/zero-cache/src/db/warmup.js.map +1 -1
- package/out/zero-cache/src/observability/events.js +1 -1
- package/out/zero-cache/src/observability/events.js.map +1 -1
- package/out/zero-cache/src/observability/log-throttle.js.map +1 -1
- package/out/zero-cache/src/observability/metrics.js.map +1 -1
- package/out/zero-cache/src/scripts/deploy-permissions.js +5 -3
- package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
- package/out/zero-cache/src/scripts/permissions.js.map +1 -1
- package/out/zero-cache/src/server/anonymous-otel-start.js +2 -1
- package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +35 -11
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
- package/out/zero-cache/src/server/logging.js +1 -1
- package/out/zero-cache/src/server/logging.js.map +1 -1
- package/out/zero-cache/src/server/main.js +2 -2
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
- package/out/zero-cache/src/server/otel-start.js.map +1 -1
- package/out/zero-cache/src/server/reaper.js +2 -2
- package/out/zero-cache/src/server/reaper.js.map +1 -1
- package/out/zero-cache/src/server/replicator.js +1 -1
- 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 -8
- package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
- package/out/zero-cache/src/server/runner/runtime.js +2 -1
- package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts +9 -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 +29 -2
- package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/shadow-syncer.js +1 -1
- package/out/zero-cache/src/server/shadow-syncer.js.map +1 -1
- package/out/zero-cache/src/server/slot-keeper.js.map +1 -1
- package/out/zero-cache/src/server/syncer-assigner.js.map +1 -1
- package/out/zero-cache/src/server/syncer.js +10 -5
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/server/worker-dispatcher.js +1 -1
- package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/worker-urls.js.map +1 -1
- package/out/zero-cache/src/services/analyze.js +2 -2
- package/out/zero-cache/src/services/analyze.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/backfill-manager.js +3 -3
- 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.js +1 -1
- 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.js.map +1 -1
- 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.js +4 -4
- 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.js +3 -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-metadata.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +3 -3
- 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.js +52 -27
- package/out/zero-cache/src/services/change-source/pg/change-source-init.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js +70 -15
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/decommission.js +2 -1
- package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/fork-request.js +54 -0
- package/out/zero-cache/src/services/change-source/pg/fork-request.js.map +1 -0
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +9 -7
- 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/binary-reader.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +4 -3
- 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/lsn.d.ts +0 -2
- package/out/zero-cache/src/services/change-source/pg/lsn.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.js +2 -2
- package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slot-health.js +1 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slot-health.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slots.js +9 -3
- 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/ddl.d.ts +0 -12
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +5 -3
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts +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 +13 -12
- 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.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/published.js +2 -2
- package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/replica-stage-enum.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js +9 -6
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts +0 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/backfill-progress.js +1 -1
- package/out/zero-cache/src/services/change-source/protocol/backfill-progress.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -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 +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts +3 -0
- package/out/zero-cache/src/services/change-source/protocol/current/status.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/status.js +2 -1
- package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -0
- 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.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current.js +1 -1
- package/out/zero-cache/src/services/change-source/protocol/mod.js +1 -2
- package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/backfill-state.js +1 -1
- package/out/zero-cache/src/services/change-streamer/backfill-state.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.js +6 -6
- 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.js +56 -21
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/broadcast.js +2 -2
- package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-log-codec.js +2 -3
- 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.js +3 -3
- package/out/zero-cache/src/services/change-streamer/change-log-initializer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +4 -2
- 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.js +49 -30
- 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.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/drain-tracker.js +1 -1
- package/out/zero-cache/src/services/change-streamer/drain-tracker.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.js +11 -10
- package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.js +81 -12
- package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js +4 -4
- package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/replica-poller.js +2 -2
- package/out/zero-cache/src/services/change-streamer/replica-poller.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/restore-admission.js +12 -1
- package/out/zero-cache/src/services/change-streamer/restore-admission.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.js +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.js +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/server-start-metrics.js +42 -0
- package/out/zero-cache/src/services/change-streamer/server-start-metrics.js.map +1 -0
- package/out/zero-cache/src/services/change-streamer/snapshot-message.js +1 -2
- package/out/zero-cache/src/services/change-streamer/snapshot-message.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot-reservations.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js +2 -2
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.js +2 -2
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.js +4 -6
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.js +3 -5
- 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.js +4 -4
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscribe.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js +8 -7
- package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/upstream-acker.js +0 -1
- package/out/zero-cache/src/services/change-streamer/upstream-acker.js.map +1 -1
- package/out/zero-cache/src/services/heapz.js +2 -1
- package/out/zero-cache/src/services/heapz.js.map +1 -1
- package/out/zero-cache/src/services/http-service.d.ts +8 -2
- package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/http-service.js +19 -5
- package/out/zero-cache/src/services/http-service.js.map +1 -1
- package/out/zero-cache/src/services/life-cycle.d.ts +19 -0
- package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
- package/out/zero-cache/src/services/life-cycle.js +55 -3
- package/out/zero-cache/src/services/life-cycle.js.map +1 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +4 -2
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.js +4 -4
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/litestream/litestream-checkpointer.js +2 -2
- package/out/zero-cache/src/services/litestream/litestream-checkpointer.js.map +1 -1
- package/out/zero-cache/src/services/litestream/litestream-controller.js.map +1 -1
- package/out/zero-cache/src/services/litestream/metrics.js.map +1 -1
- package/out/zero-cache/src/services/litestream/restore-progress.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +3 -4
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +61 -17
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/plannerz.d.ts +4 -12
- package/out/zero-cache/src/services/plannerz.d.ts.map +1 -1
- package/out/zero-cache/src/services/plannerz.js +6 -7
- package/out/zero-cache/src/services/plannerz.js.map +1 -1
- package/out/zero-cache/src/services/profz.js +5 -3
- package/out/zero-cache/src/services/profz.js.map +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-db.js +4 -3
- package/out/zero-cache/src/services/replicator/change-log-db.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-log-stream-writer.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
- package/out/zero-cache/src/services/replicator/drain-handler.js +1 -1
- package/out/zero-cache/src/services/replicator/drain-handler.js.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +4 -4
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replication-status.js +4 -3
- package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- package/out/zero-cache/src/services/replicator/reporter/recorder.js +2 -2
- package/out/zero-cache/src/services/replicator/reporter/recorder.js.map +1 -1
- package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts +2 -11
- package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/reporter/report-schema.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/backfilling.js +2 -2
- package/out/zero-cache/src/services/replicator/schema/backfilling.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +19 -17
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.js +31 -15
- package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts +0 -7
- package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.js +1 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.js +10 -7
- package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -1
- package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.js +1 -1
- package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.js.map +1 -1
- package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.js +1 -1
- package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.js.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.js +2 -2
- package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker.js +3 -3
- package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -1
- package/out/zero-cache/src/services/run-ast.js +1 -1
- package/out/zero-cache/src/services/run-ast.js.map +1 -1
- package/out/zero-cache/src/services/runner.js.map +1 -1
- package/out/zero-cache/src/services/running-state.js +1 -1
- package/out/zero-cache/src/services/running-state.js.map +1 -1
- package/out/zero-cache/src/services/shadow-sync/shadow-sync-service.js.map +1 -1
- package/out/zero-cache/src/services/statz.js +4 -3
- package/out/zero-cache/src/services/statz.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +2 -2
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/advancement-metrics.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/batch-pacer.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +71 -24
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.js +46 -6
- package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/connection-context-manager.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js +2 -2
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +12 -7
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +12 -4
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.js +1 -1
- package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +2 -2
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/hydration-budget.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.js +2 -2
- package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js +6 -4
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +112 -21
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/plan-warnings.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/push-cost.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/push-cutoff.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/query-covering.js +2 -2
- package/out/zero-cache/src/services/view-syncer/query-covering.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/query-shape.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/query-stats.js +1 -1
- package/out/zero-cache/src/services/view-syncer/query-stats.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js +2 -2
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.js +2 -16
- 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.js +7 -1
- package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +13 -9
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +52 -28
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/error-with-level.js.map +1 -1
- package/out/zero-cache/src/types/lexi-version.js.map +1 -1
- package/out/zero-cache/src/types/lite.d.ts +0 -1
- package/out/zero-cache/src/types/lite.d.ts.map +1 -1
- package/out/zero-cache/src/types/lite.js +1 -1
- package/out/zero-cache/src/types/lite.js.map +1 -1
- package/out/zero-cache/src/types/pg-data-type.js +1 -1
- package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
- package/out/zero-cache/src/types/pg-types.d.ts +0 -40
- package/out/zero-cache/src/types/pg-types.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg-types.js.map +1 -1
- package/out/zero-cache/src/types/pg.js +6 -4
- package/out/zero-cache/src/types/pg.js.map +1 -1
- package/out/zero-cache/src/types/poke-chunk.d.ts +0 -1
- package/out/zero-cache/src/types/poke-chunk.d.ts.map +1 -1
- package/out/zero-cache/src/types/poke-chunk.js +1 -1
- package/out/zero-cache/src/types/poke-chunk.js.map +1 -1
- package/out/zero-cache/src/types/processes.js +5 -5
- package/out/zero-cache/src/types/processes.js.map +1 -1
- package/out/zero-cache/src/types/profiler.js +1 -1
- package/out/zero-cache/src/types/profiler.js.map +1 -1
- package/out/zero-cache/src/types/row-key.d.ts +0 -5
- package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
- package/out/zero-cache/src/types/row-key.js +8 -1
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/types/sql.js.map +1 -1
- package/out/zero-cache/src/types/streams.d.ts.map +1 -1
- package/out/zero-cache/src/types/streams.js +11 -10
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-cache/src/types/strings.js.map +1 -1
- package/out/zero-cache/src/types/subscription.js +1 -1
- package/out/zero-cache/src/types/subscription.js.map +1 -1
- package/out/zero-cache/src/types/timeout.js +1 -1
- package/out/zero-cache/src/types/websocket-handoff.d.ts +4 -7
- package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.js +16 -2
- package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
- package/out/zero-cache/src/types/ws.d.ts +2 -1
- package/out/zero-cache/src/types/ws.d.ts.map +1 -1
- package/out/zero-cache/src/types/ws.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts +1 -2
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +10 -8
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/mutator.js +1 -1
- package/out/zero-cache/src/workers/mutator.js.map +1 -1
- package/out/zero-cache/src/workers/rehome.d.ts +15 -0
- package/out/zero-cache/src/workers/rehome.d.ts.map +1 -0
- package/out/zero-cache/src/workers/rehome.js +36 -0
- package/out/zero-cache/src/workers/rehome.js.map +1 -0
- package/out/zero-cache/src/workers/replicator.js +5 -4
- package/out/zero-cache/src/workers/replicator.js.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js +9 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +32 -7
- 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 +2 -2
- package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
- package/out/zero-client/src/client/bindings.d.ts +1 -1
- package/out/zero-client/src/client/bindings.d.ts.map +1 -1
- package/out/zero-client/src/client/bindings.js +11 -11
- package/out/zero-client/src/client/connection-manager.js +1 -1
- package/out/zero-client/src/client/connection-manager.js.map +1 -1
- package/out/zero-client/src/client/connection.js +1 -1
- package/out/zero-client/src/client/connection.js.map +1 -1
- package/out/zero-client/src/client/context.d.ts +7 -1
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/context.js +7 -0
- 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 +172 -3
- package/out/zero-client/src/client/crud-impl.js.map +1 -1
- package/out/zero-client/src/client/crud.d.ts +2 -8
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/crud.js.map +1 -1
- package/out/zero-client/src/client/custom.d.ts +0 -2
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.js +42 -3
- package/out/zero-client/src/client/custom.js.map +1 -1
- package/out/zero-client/src/client/delete-clients-manager.js.map +1 -1
- package/out/zero-client/src/client/enable-analytics.d.ts +0 -1
- package/out/zero-client/src/client/enable-analytics.d.ts.map +1 -1
- package/out/zero-client/src/client/enable-analytics.js +1 -0
- package/out/zero-client/src/client/enable-analytics.js.map +1 -1
- package/out/zero-client/src/client/error.d.ts +4 -5
- package/out/zero-client/src/client/error.d.ts.map +1 -1
- package/out/zero-client/src/client/error.js.map +1 -1
- package/out/zero-client/src/client/inspector/client-group.js.map +1 -1
- package/out/zero-client/src/client/inspector/client.js.map +1 -1
- package/out/zero-client/src/client/inspector/html-dialog-prompt.js +1 -1
- package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -1
- package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
- package/out/zero-client/src/client/inspector/query.js.map +1 -1
- package/out/zero-client/src/client/ivm-branch.d.ts +62 -2
- package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
- package/out/zero-client/src/client/ivm-branch.js +153 -34
- package/out/zero-client/src/client/ivm-branch.js.map +1 -1
- package/out/zero-client/src/client/keys.d.ts +33 -1
- package/out/zero-client/src/client/keys.d.ts.map +1 -1
- package/out/zero-client/src/client/keys.js +49 -7
- package/out/zero-client/src/client/keys.js.map +1 -1
- package/out/zero-client/src/client/log-options.js.map +1 -1
- package/out/zero-client/src/client/make-replicache-mutators.js +5 -3
- package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
- package/out/zero-client/src/client/metrics.js +3 -5
- package/out/zero-client/src/client/metrics.js.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.js +1 -1
- package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
- package/out/zero-client/src/client/mutator-proxy.js.map +1 -1
- package/out/zero-client/src/client/options.d.ts +0 -4
- 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.js +2 -2
- package/out/zero-client/src/client/query-manager.js.map +1 -1
- package/out/zero-client/src/client/reload-error-handler.js +4 -3
- package/out/zero-client/src/client/reload-error-handler.js.map +1 -1
- package/out/zero-client/src/client/replicache-types.d.ts +3 -2
- package/out/zero-client/src/client/replicache-types.d.ts.map +1 -1
- package/out/zero-client/src/client/version.js +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -2
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.js +30 -2
- package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
- package/out/zero-client/src/client/zero-rep.d.ts +1 -1
- package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-rep.js +2 -15
- package/out/zero-client/src/client/zero-rep.js.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +1 -5
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +21 -13
- package/out/zero-client/src/client/zero.js.map +1 -1
- package/out/zero-client/src/mod.d.ts +3 -3
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-client/src/mod.js +23 -23
- package/out/zero-client/src/types/client-state.d.ts +0 -6
- package/out/zero-client/src/types/client-state.d.ts.map +1 -1
- package/out/zero-client/src/util/nanoid.js.map +1 -1
- package/out/zero-permissions/src/permissions.d.ts +1 -12
- package/out/zero-permissions/src/permissions.d.ts.map +1 -1
- package/out/zero-permissions/src/permissions.js +3 -3
- package/out/zero-permissions/src/permissions.js.map +1 -1
- package/out/zero-pg/src/mod.js +9 -9
- package/out/zero-protocol/src/aggregate-table.d.ts +15 -0
- package/out/zero-protocol/src/aggregate-table.d.ts.map +1 -0
- package/out/zero-protocol/src/aggregate-table.js +5 -0
- package/out/zero-protocol/src/aggregate-table.js.map +1 -0
- package/out/zero-protocol/src/analyze-query-result.js +1 -1
- package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
- package/out/zero-protocol/src/application-error.js.map +1 -1
- package/out/zero-protocol/src/ast.d.ts +140 -8
- package/out/zero-protocol/src/ast.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.js +264 -28
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero-protocol/src/change-desired-queries.d.ts +0 -20
- package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
- package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
- package/out/zero-protocol/src/client-schema.d.ts +2 -5
- package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
- package/out/zero-protocol/src/client-schema.js.map +1 -1
- package/out/zero-protocol/src/close-connection.d.ts +0 -8
- package/out/zero-protocol/src/close-connection.d.ts.map +1 -1
- package/out/zero-protocol/src/close-connection.js.map +1 -1
- package/out/zero-protocol/src/connect.d.ts +0 -12
- package/out/zero-protocol/src/connect.d.ts.map +1 -1
- package/out/zero-protocol/src/connect.js.map +1 -1
- package/out/zero-protocol/src/custom-queries.d.ts +3 -17
- package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
- package/out/zero-protocol/src/custom-queries.js.map +1 -1
- package/out/zero-protocol/src/data.d.ts +0 -1
- package/out/zero-protocol/src/data.d.ts.map +1 -1
- package/out/zero-protocol/src/data.js +3 -1
- package/out/zero-protocol/src/data.js.map +1 -1
- package/out/zero-protocol/src/delete-clients.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +27 -27
- package/out/zero-protocol/src/down.js.map +1 -1
- package/out/zero-protocol/src/error.js.map +1 -1
- package/out/zero-protocol/src/inspect-down.d.ts +1 -3
- package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
- package/out/zero-protocol/src/inspect-down.js.map +1 -1
- package/out/zero-protocol/src/inspect-up.d.ts +0 -28
- package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
- package/out/zero-protocol/src/inspect-up.js.map +1 -1
- package/out/zero-protocol/src/mutate-server.d.ts +0 -21
- package/out/zero-protocol/src/mutate-server.d.ts.map +1 -1
- package/out/zero-protocol/src/mutate-server.js.map +1 -1
- package/out/zero-protocol/src/mutation-id.js.map +1 -1
- package/out/zero-protocol/src/mutation-type-enum.d.ts +0 -1
- package/out/zero-protocol/src/mutation-type-enum.d.ts.map +1 -1
- package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
- package/out/zero-protocol/src/mutation.d.ts +2 -4
- package/out/zero-protocol/src/mutation.d.ts.map +1 -1
- package/out/zero-protocol/src/mutation.js.map +1 -1
- package/out/zero-protocol/src/mutations-patch.d.ts +0 -33
- package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/mutations-patch.js.map +1 -1
- package/out/zero-protocol/src/ping.d.ts +0 -2
- package/out/zero-protocol/src/ping.d.ts.map +1 -1
- package/out/zero-protocol/src/ping.js.map +1 -1
- package/out/zero-protocol/src/poke.d.ts +3 -2
- package/out/zero-protocol/src/poke.d.ts.map +1 -1
- package/out/zero-protocol/src/poke.js +1 -1
- package/out/zero-protocol/src/poke.js.map +1 -1
- package/out/zero-protocol/src/pong.d.ts +0 -2
- package/out/zero-protocol/src/pong.d.ts.map +1 -1
- package/out/zero-protocol/src/pong.js.map +1 -1
- package/out/zero-protocol/src/primary-key.js.map +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
- package/out/zero-protocol/src/protocol-version.js +1 -0
- package/out/zero-protocol/src/protocol-version.js.map +1 -1
- package/out/zero-protocol/src/pull.d.ts +2 -7
- package/out/zero-protocol/src/pull.d.ts.map +1 -1
- package/out/zero-protocol/src/pull.js.map +1 -1
- package/out/zero-protocol/src/push.d.ts +1 -3
- package/out/zero-protocol/src/push.d.ts.map +1 -1
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/queries-patch.d.ts +0 -16
- package/out/zero-protocol/src/queries-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/queries-patch.js +1 -1
- package/out/zero-protocol/src/queries-patch.js.map +1 -1
- package/out/zero-protocol/src/query-hash-visitor.d.ts.map +1 -1
- package/out/zero-protocol/src/query-hash-visitor.js +38 -0
- package/out/zero-protocol/src/query-hash-visitor.js.map +1 -1
- package/out/zero-protocol/src/query-hash.js +2 -2
- package/out/zero-protocol/src/query-server.d.ts +2 -41
- package/out/zero-protocol/src/query-server.d.ts.map +1 -1
- package/out/zero-protocol/src/query-server.js.map +1 -1
- package/out/zero-protocol/src/row-patch.js.map +1 -1
- package/out/zero-protocol/src/up.d.ts +60 -60
- package/out/zero-protocol/src/up.js +1 -1
- package/out/zero-protocol/src/up.js.map +1 -1
- package/out/zero-protocol/src/update-auth.js.map +1 -1
- package/out/zero-protocol/src/version.d.ts +0 -1
- package/out/zero-protocol/src/version.d.ts.map +1 -1
- package/out/zero-protocol/src/version.js.map +1 -1
- package/out/zero-react/src/bindings.js +11 -11
- package/out/zero-react/src/mod.js +5 -5
- package/out/zero-react/src/use-query.d.ts +3 -1
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-react/src/use-query.js +6 -4
- package/out/zero-react/src/use-query.js.map +1 -1
- package/out/zero-react/src/zero-provider.d.ts +1 -1
- package/out/zero-react/src/zero-provider.d.ts.map +1 -1
- package/out/zero-react/src/zero-provider.js +2 -1
- package/out/zero-react/src/zero-provider.js.map +1 -1
- package/out/zero-react/src/zero.js +23 -23
- package/out/zero-schema/src/builder/relationship-builder.d.ts +0 -2
- package/out/zero-schema/src/builder/relationship-builder.d.ts.map +1 -1
- package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
- package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
- package/out/zero-schema/src/builder/schema-builder.js +5 -2
- package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
- package/out/zero-schema/src/builder/table-builder.d.ts +1 -1
- package/out/zero-schema/src/builder/table-builder.d.ts.map +1 -1
- package/out/zero-schema/src/builder/table-builder.js +1 -1
- package/out/zero-schema/src/builder/table-builder.js.map +1 -1
- package/out/zero-schema/src/compiled-permissions.js.map +1 -1
- package/out/zero-schema/src/name-mapper.d.ts.map +1 -1
- package/out/zero-schema/src/name-mapper.js +14 -9
- package/out/zero-schema/src/name-mapper.js.map +1 -1
- package/out/zero-schema/src/schema-config.d.ts +0 -1
- package/out/zero-schema/src/schema-config.d.ts.map +1 -1
- package/out/zero-schema/src/schema-config.js +1 -1
- package/out/zero-schema/src/schema-config.js.map +1 -1
- package/out/zero-schema/src/table-schema.d.ts +3 -11
- package/out/zero-schema/src/table-schema.d.ts.map +1 -1
- package/out/zero-server/src/adapters/drizzle.js.map +1 -1
- package/out/zero-server/src/adapters/kysely.js.map +1 -1
- package/out/zero-server/src/adapters/pg.js.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
- package/out/zero-server/src/adapters/prisma.js.map +1 -1
- package/out/zero-server/src/closable-db-transaction.js.map +1 -1
- package/out/zero-server/src/custom.js +2 -2
- package/out/zero-server/src/custom.js.map +1 -1
- package/out/zero-server/src/mod.js +8 -8
- package/out/zero-server/src/process-mutations.js.map +1 -1
- package/out/zero-server/src/push-processor.js.map +1 -1
- package/out/zero-server/src/queries/process-queries.d.ts +2 -4
- package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
- package/out/zero-server/src/queries/process-queries.js +2 -1
- package/out/zero-server/src/queries/process-queries.js.map +1 -1
- package/out/zero-server/src/schema.d.ts.map +1 -1
- package/out/zero-server/src/schema.js +20 -9
- package/out/zero-server/src/schema.js.map +1 -1
- package/out/zero-server/src/zql-database.js.map +1 -1
- package/out/zero-solid/src/bindings.js +11 -11
- package/out/zero-solid/src/mod.js +5 -5
- package/out/zero-solid/src/solid-view.d.ts +0 -2
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/zero-solid/src/solid-view.js +4 -4
- package/out/zero-solid/src/solid-view.js.map +1 -1
- package/out/zero-solid/src/use-connection-state.js +2 -1
- package/out/zero-solid/src/use-connection-state.js.map +1 -1
- package/out/zero-solid/src/use-query.js.map +1 -1
- package/out/zero-solid/src/use-zero-online.js +2 -1
- package/out/zero-solid/src/use-zero-online.js.map +1 -1
- package/out/zero-solid/src/use-zero.js +3 -2
- package/out/zero-solid/src/use-zero.js.map +1 -1
- package/out/zero-solid/src/zero.js +23 -23
- package/out/zero-types/src/format.d.ts +13 -0
- package/out/zero-types/src/format.d.ts.map +1 -1
- package/out/zero-types/src/format.js.map +1 -1
- package/out/zero-types/src/name-mapper.d.ts +16 -1
- package/out/zero-types/src/name-mapper.d.ts.map +1 -1
- package/out/zero-types/src/name-mapper.js +12 -0
- package/out/zero-types/src/name-mapper.js.map +1 -1
- package/out/zero-types/src/schema-value.d.ts +5 -2
- package/out/zero-types/src/schema-value.d.ts.map +1 -1
- package/out/zero-types/src/schema-value.js +15 -0
- package/out/zero-types/src/schema-value.js.map +1 -0
- package/out/zero-types/src/schema.d.ts +1 -1
- package/out/zero-types/src/schema.d.ts.map +1 -1
- package/out/zero-types/src/server-schema.d.ts +18 -0
- package/out/zero-types/src/server-schema.d.ts.map +1 -1
- package/out/zql/src/builder/builder.d.ts +124 -9
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +295 -23
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/builder/correlated-predicate-pushdown.js.map +1 -1
- package/out/zql/src/builder/debug-delegate.js.map +1 -1
- package/out/zql/src/builder/filter.d.ts +1 -2
- package/out/zql/src/builder/filter.d.ts.map +1 -1
- package/out/zql/src/builder/filter.js +41 -3
- package/out/zql/src/builder/filter.js.map +1 -1
- package/out/zql/src/builder/like.js +0 -1
- package/out/zql/src/builder/like.js.map +1 -1
- package/out/zql/src/error.d.ts +0 -5
- package/out/zql/src/error.d.ts.map +1 -1
- package/out/zql/src/error.js.map +1 -1
- package/out/zql/src/ivm/aggregate.d.ts +188 -0
- package/out/zql/src/ivm/aggregate.d.ts.map +1 -0
- package/out/zql/src/ivm/aggregate.js +470 -0
- package/out/zql/src/ivm/aggregate.js.map +1 -0
- package/out/zql/src/ivm/array-view.d.ts +1 -1
- package/out/zql/src/ivm/array-view.d.ts.map +1 -1
- package/out/zql/src/ivm/array-view.js +3 -3
- package/out/zql/src/ivm/array-view.js.map +1 -1
- package/out/zql/src/ivm/cap.d.ts +1 -1
- package/out/zql/src/ivm/cap.d.ts.map +1 -1
- package/out/zql/src/ivm/cap.js +14 -6
- package/out/zql/src/ivm/cap.js.map +1 -1
- package/out/zql/src/ivm/constraint.d.ts +0 -7
- package/out/zql/src/ivm/constraint.d.ts.map +1 -1
- package/out/zql/src/ivm/constraint.js +3 -2
- package/out/zql/src/ivm/constraint.js.map +1 -1
- package/out/zql/src/ivm/data.d.ts +15 -2
- package/out/zql/src/ivm/data.d.ts.map +1 -1
- package/out/zql/src/ivm/data.js +15 -1
- package/out/zql/src/ivm/data.js.map +1 -1
- package/out/zql/src/ivm/deferred-input.js +1 -1
- package/out/zql/src/ivm/deferred-input.js.map +1 -1
- package/out/zql/src/ivm/exists.d.ts.map +1 -1
- package/out/zql/src/ivm/exists.js +32 -22
- package/out/zql/src/ivm/exists.js.map +1 -1
- package/out/zql/src/ivm/fan-in.js +1 -1
- package/out/zql/src/ivm/fan-in.js.map +1 -1
- package/out/zql/src/ivm/fan-out.js.map +1 -1
- package/out/zql/src/ivm/filter-operators.d.ts +5 -0
- package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
- package/out/zql/src/ivm/filter-operators.js +1 -1
- package/out/zql/src/ivm/filter-operators.js.map +1 -1
- package/out/zql/src/ivm/filter-push.js.map +1 -1
- package/out/zql/src/ivm/filter.js.map +1 -1
- package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
- package/out/zql/src/ivm/flipped-join.js +4 -5
- package/out/zql/src/ivm/flipped-join.js.map +1 -1
- package/out/zql/src/ivm/group-by.d.ts +98 -0
- package/out/zql/src/ivm/group-by.d.ts.map +1 -0
- package/out/zql/src/ivm/group-by.js +384 -0
- package/out/zql/src/ivm/group-by.js.map +1 -0
- package/out/zql/src/ivm/join-index-tap.js.map +1 -1
- package/out/zql/src/ivm/join-index.d.ts.map +1 -1
- package/out/zql/src/ivm/join-index.js +2 -1
- package/out/zql/src/ivm/join-index.js.map +1 -1
- package/out/zql/src/ivm/join-utils.d.ts.map +1 -1
- package/out/zql/src/ivm/join-utils.js +13 -14
- package/out/zql/src/ivm/join-utils.js.map +1 -1
- package/out/zql/src/ivm/join.d.ts.map +1 -1
- package/out/zql/src/ivm/join.js +7 -4
- package/out/zql/src/ivm/join.js.map +1 -1
- package/out/zql/src/ivm/lift-field.d.ts +54 -0
- package/out/zql/src/ivm/lift-field.d.ts.map +1 -0
- package/out/zql/src/ivm/lift-field.js +168 -0
- package/out/zql/src/ivm/lift-field.js.map +1 -0
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
- package/out/zql/src/ivm/memory-source.d.ts +3 -2
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +36 -27
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/memory-storage.js.map +1 -1
- package/out/zql/src/ivm/operator.d.ts +6 -0
- package/out/zql/src/ivm/operator.d.ts.map +1 -1
- package/out/zql/src/ivm/operator.js +2 -2
- package/out/zql/src/ivm/operator.js.map +1 -1
- package/out/zql/src/ivm/push-accumulated.js +1 -2
- package/out/zql/src/ivm/push-accumulated.js.map +1 -1
- package/out/zql/src/ivm/schema.d.ts +1 -0
- package/out/zql/src/ivm/schema.d.ts.map +1 -1
- package/out/zql/src/ivm/skip-yields.js.map +1 -1
- package/out/zql/src/ivm/skip.js.map +1 -1
- package/out/zql/src/ivm/source.d.ts +21 -0
- package/out/zql/src/ivm/source.d.ts.map +1 -1
- package/out/zql/src/ivm/source.js.map +1 -1
- package/out/zql/src/ivm/stream.d.ts +0 -1
- package/out/zql/src/ivm/stream.d.ts.map +1 -1
- package/out/zql/src/ivm/stream.js.map +1 -1
- package/out/zql/src/ivm/take-gate.js.map +1 -1
- package/out/zql/src/ivm/take.d.ts.map +1 -1
- package/out/zql/src/ivm/take.js +8 -9
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/union-fan-in.d.ts +0 -1
- package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
- package/out/zql/src/ivm/union-fan-in.js +1 -1
- package/out/zql/src/ivm/union-fan-in.js.map +1 -1
- package/out/zql/src/ivm/union-fan-out.js.map +1 -1
- package/out/zql/src/ivm/view-apply-change.d.ts +8 -33
- package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
- package/out/zql/src/ivm/view-apply-change.js +23 -3
- package/out/zql/src/ivm/view-apply-change.js.map +1 -1
- package/out/zql/src/mutate/crud.d.ts +1 -3
- package/out/zql/src/mutate/crud.d.ts.map +1 -1
- package/out/zql/src/mutate/crud.js +2 -1
- package/out/zql/src/mutate/crud.js.map +1 -1
- package/out/zql/src/mutate/mutator-registry.d.ts +1 -1
- package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -1
- package/out/zql/src/mutate/mutator-registry.js.map +1 -1
- package/out/zql/src/mutate/mutator.d.ts +1 -1
- 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.js +1 -1
- package/out/zql/src/planner/planner-builder.js.map +1 -1
- package/out/zql/src/planner/planner-connection.js.map +1 -1
- package/out/zql/src/planner/planner-debug.d.ts +11 -10
- package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
- package/out/zql/src/planner/planner-debug.js +4 -0
- package/out/zql/src/planner/planner-debug.js.map +1 -1
- package/out/zql/src/planner/planner-fan-in.js.map +1 -1
- package/out/zql/src/planner/planner-fan-out.js.map +1 -1
- package/out/zql/src/planner/planner-filter.js.map +1 -1
- package/out/zql/src/planner/planner-graph.js +1 -5
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/planner/planner-join.js +1 -1
- package/out/zql/src/planner/planner-join.js.map +1 -1
- package/out/zql/src/planner/planner-node.d.ts +0 -1
- package/out/zql/src/planner/planner-node.d.ts.map +1 -1
- package/out/zql/src/planner/planner-node.js.map +1 -1
- package/out/zql/src/planner/planner-source.js.map +1 -1
- package/out/zql/src/planner/planner-terminus.js.map +1 -1
- package/out/zql/src/planner/planner-warnings.d.ts +3 -3
- package/out/zql/src/planner/planner-warnings.d.ts.map +1 -1
- package/out/zql/src/planner/planner-warnings.js.map +1 -1
- package/out/zql/src/query/create-builder.js +2 -1
- package/out/zql/src/query/create-builder.js.map +1 -1
- package/out/zql/src/query/expression.d.ts +49 -24
- package/out/zql/src/query/expression.d.ts.map +1 -1
- package/out/zql/src/query/expression.js +62 -6
- package/out/zql/src/query/expression.js.map +1 -1
- package/out/zql/src/query/measure-push-operator.js +1 -1
- package/out/zql/src/query/measure-push-operator.js.map +1 -1
- package/out/zql/src/query/named.js +2 -1
- package/out/zql/src/query/named.js.map +1 -1
- package/out/zql/src/query/query-delegate-base.d.ts +8 -7
- package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
- package/out/zql/src/query/query-delegate-base.js +14 -6
- package/out/zql/src/query/query-delegate-base.js.map +1 -1
- package/out/zql/src/query/query-delegate.d.ts +1 -4
- package/out/zql/src/query/query-delegate.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +17 -3
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +242 -9
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-internals.d.ts +0 -3
- package/out/zql/src/query/query-internals.d.ts.map +1 -1
- package/out/zql/src/query/query-internals.js.map +1 -1
- package/out/zql/src/query/query-registry.d.ts +5 -5
- package/out/zql/src/query/query-registry.d.ts.map +1 -1
- package/out/zql/src/query/query-registry.js +1 -1
- package/out/zql/src/query/query-registry.js.map +1 -1
- package/out/zql/src/query/query-transitions.js +1 -1
- package/out/zql/src/query/query-transitions.js.map +1 -1
- package/out/zql/src/query/query.d.ts +321 -20
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.d.ts +1 -19
- package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.js +2 -1
- package/out/zql/src/query/runnable-query-impl.js.map +1 -1
- package/out/zql/src/query/static-query.js.map +1 -1
- package/out/zql/src/query/ttl.d.ts +2 -3
- package/out/zql/src/query/ttl.d.ts.map +1 -1
- package/out/zql/src/query/ttl.js +8 -8
- package/out/zql/src/query/ttl.js.map +1 -1
- package/out/zql/src/query/validate-input.js.map +1 -1
- package/out/zqlite/src/database-storage.js +195 -26
- package/out/zqlite/src/database-storage.js.map +1 -1
- package/out/zqlite/src/db.d.ts +47 -1
- package/out/zqlite/src/db.d.ts.map +1 -1
- package/out/zqlite/src/db.js +121 -21
- package/out/zqlite/src/db.js.map +1 -1
- package/out/zqlite/src/explain-queries.js.map +1 -1
- package/out/zqlite/src/fetch-sql.d.ts +27 -0
- package/out/zqlite/src/fetch-sql.d.ts.map +1 -0
- package/out/zqlite/src/fetch-sql.js +112 -0
- package/out/zqlite/src/fetch-sql.js.map +1 -0
- package/out/zqlite/src/index-usage.js.map +1 -1
- package/out/zqlite/src/internal/sql-inline.js.map +1 -1
- package/out/zqlite/src/internal/sql.js.map +1 -1
- package/out/zqlite/src/internal/statement-cache.d.ts +7 -0
- package/out/zqlite/src/internal/statement-cache.d.ts.map +1 -1
- package/out/zqlite/src/internal/statement-cache.js +11 -4
- package/out/zqlite/src/internal/statement-cache.js.map +1 -1
- package/out/zqlite/src/mod.js +5 -5
- package/out/zqlite/src/pending-delta.d.ts.map +1 -1
- package/out/zqlite/src/pending-delta.js +4 -3
- package/out/zqlite/src/pending-delta.js.map +1 -1
- package/out/zqlite/src/query-builder.d.ts +23 -4
- package/out/zqlite/src/query-builder.d.ts.map +1 -1
- package/out/zqlite/src/query-builder.js +135 -19
- package/out/zqlite/src/query-builder.js.map +1 -1
- package/out/zqlite/src/query-delegate.js.map +1 -1
- package/out/zqlite/src/resolve-scalar-subqueries.js +2 -5
- package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
- package/out/zqlite/src/sqlite-cost-model.js +3 -2
- package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
- package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts +20 -3
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +110 -42
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +39 -39
- package/out/analyze-query/src/bin-analyze.d.ts +0 -2
- package/out/analyze-query/src/bin-analyze.d.ts.map +0 -1
- package/out/analyze-query/src/bin-analyze.js +0 -283
- package/out/analyze-query/src/bin-analyze.js.map +0 -1
- package/out/otel/src/maybe-time.d.ts +0 -3
- package/out/otel/src/maybe-time.d.ts.map +0 -1
- package/out/otel/src/maybe-time.js +0 -15
- package/out/otel/src/maybe-time.js.map +0 -1
- package/out/shared/src/cache.d.ts +0 -22
- package/out/shared/src/cache.d.ts.map +0 -1
- package/out/shared/src/custom-key-map.d.ts +0 -26
- package/out/shared/src/custom-key-map.d.ts.map +0 -1
- package/out/shared/src/custom-key-set.d.ts +0 -25
- package/out/shared/src/custom-key-set.d.ts.map +0 -1
- package/out/shared/src/logging-test-utils.d.ts +0 -12
- package/out/shared/src/logging-test-utils.d.ts.map +0 -1
- package/out/shared/src/sorted-entries.d.ts +0 -2
- package/out/shared/src/sorted-entries.d.ts.map +0 -1
- package/out/zero/src/analyze-query.d.ts +0 -3
- package/out/zero/src/analyze-query.d.ts.map +0 -1
- package/out/zero/src/analyze-query.js +0 -3
- package/out/zero/src/server/change-streamer.d.ts +0 -2
- package/out/zero/src/server/change-streamer.d.ts.map +0 -1
- package/out/zero/src/server/main.d.ts +0 -2
- package/out/zero/src/server/main.d.ts.map +0 -1
- package/out/zero/src/server/reaper.d.ts +0 -2
- package/out/zero/src/server/reaper.d.ts.map +0 -1
- package/out/zero/src/server/replicator.d.ts +0 -2
- package/out/zero/src/server/replicator.d.ts.map +0 -1
- package/out/zero/src/server/syncer.d.ts +0 -2
- package/out/zero/src/server/syncer.d.ts.map +0 -1
- package/out/zero-cache/src/auth/jwt.d.ts +0 -12
- package/out/zero-cache/src/auth/jwt.d.ts.map +0 -1
- package/out/zero-cache/src/auth/load-permissions.d.ts +0 -17
- package/out/zero-cache/src/auth/load-permissions.d.ts.map +0 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts +0 -28
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +0 -1
- package/out/zero-cache/src/config/server-context.d.ts +0 -16
- package/out/zero-cache/src/config/server-context.d.ts.map +0 -1
- package/out/zero-cache/src/custom/fetch.d.ts +0 -38
- package/out/zero-cache/src/custom/fetch.d.ts.map +0 -1
- package/out/zero-cache/src/custom/metrics.d.ts +0 -31
- package/out/zero-cache/src/custom/metrics.d.ts.map +0 -1
- package/out/zero-cache/src/custom-queries/transform-query.d.ts +0 -68
- package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +0 -1
- package/out/zero-cache/src/db/create.d.ts +0 -12
- package/out/zero-cache/src/db/create.d.ts.map +0 -1
- package/out/zero-cache/src/db/delete-lite-db.d.ts +0 -2
- package/out/zero-cache/src/db/delete-lite-db.d.ts.map +0 -1
- package/out/zero-cache/src/db/index-predicate.d.ts +0 -4
- package/out/zero-cache/src/db/index-predicate.d.ts.map +0 -1
- package/out/zero-cache/src/db/migration-lite.d.ts +0 -78
- package/out/zero-cache/src/db/migration-lite.d.ts.map +0 -1
- package/out/zero-cache/src/db/migration.d.ts +0 -80
- package/out/zero-cache/src/db/migration.d.ts.map +0 -1
- package/out/zero-cache/src/db/pg-copy-binary.d.ts +0 -101
- package/out/zero-cache/src/db/pg-copy-binary.d.ts.map +0 -1
- package/out/zero-cache/src/db/pg-copy.d.ts +0 -30
- package/out/zero-cache/src/db/pg-copy.d.ts.map +0 -1
- package/out/zero-cache/src/db/pg-type-parser.d.ts +0 -15
- package/out/zero-cache/src/db/pg-type-parser.d.ts.map +0 -1
- package/out/zero-cache/src/db/transaction-pool.d.ts +0 -205
- package/out/zero-cache/src/db/transaction-pool.d.ts.map +0 -1
- package/out/zero-cache/src/db/warmup.d.ts +0 -4
- package/out/zero-cache/src/db/warmup.d.ts.map +0 -1
- package/out/zero-cache/src/observability/events.d.ts +0 -15
- package/out/zero-cache/src/observability/events.d.ts.map +0 -1
- package/out/zero-cache/src/observability/log-throttle.d.ts +0 -44
- package/out/zero-cache/src/observability/log-throttle.d.ts.map +0 -1
- package/out/zero-cache/src/server/anonymous-otel-start.d.ts +0 -21
- package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +0 -1
- package/out/zero-cache/src/server/change-streamer.d.ts +0 -3
- package/out/zero-cache/src/server/change-streamer.d.ts.map +0 -1
- package/out/zero-cache/src/server/inspector-delegate.d.ts +0 -71
- package/out/zero-cache/src/server/inspector-delegate.d.ts.map +0 -1
- package/out/zero-cache/src/server/main.d.ts +0 -3
- package/out/zero-cache/src/server/main.d.ts.map +0 -1
- package/out/zero-cache/src/server/otel-diag-logger.d.ts +0 -16
- package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +0 -1
- package/out/zero-cache/src/server/otel-start.d.ts +0 -3
- package/out/zero-cache/src/server/otel-start.d.ts.map +0 -1
- package/out/zero-cache/src/server/priority-op.d.ts +0 -8
- package/out/zero-cache/src/server/priority-op.d.ts.map +0 -1
- package/out/zero-cache/src/server/reaper.d.ts +0 -3
- package/out/zero-cache/src/server/reaper.d.ts.map +0 -1
- package/out/zero-cache/src/server/replicator.d.ts +0 -10
- package/out/zero-cache/src/server/replicator.d.ts.map +0 -1
- package/out/zero-cache/src/server/slot-keeper.d.ts +0 -26
- package/out/zero-cache/src/server/slot-keeper.d.ts.map +0 -1
- package/out/zero-cache/src/server/syncer.d.ts +0 -3
- package/out/zero-cache/src/server/syncer.d.ts.map +0 -1
- package/out/zero-cache/src/services/analyze.d.ts +0 -9
- package/out/zero-cache/src/services/analyze.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/change-source.d.ts +0 -32
- package/out/zero-cache/src/services/change-source/change-source.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/common/backfill-manager.d.ts +0 -57
- package/out/zero-cache/src/services/change-source/common/backfill-manager.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.d.ts +0 -55
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts +0 -24
- package/out/zero-cache/src/services/change-source/common/init-cleanup.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts +0 -115
- package/out/zero-cache/src/services/change-source/common/replica-restore.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts +0 -14
- package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +0 -25
- package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-metadata.d.ts +0 -14
- package/out/zero-cache/src/services/change-source/pg/backfill-metadata.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts +0 -36
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts +0 -65
- package/out/zero-cache/src/services/change-source/pg/change-source-init.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +0 -115
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +0 -155
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +0 -17
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.d.ts +0 -28
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.d.ts +0 -76
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts +0 -169
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts +0 -16
- package/out/zero-cache/src/services/change-source/pg/replication-slot-cleanup-monitor.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slot-health.d.ts +0 -15
- package/out/zero-cache/src/services/change-source/pg/replication-slot-health.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts +0 -127
- package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts +0 -9
- package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts +0 -68
- package/out/zero-cache/src/services/change-source/protocol/backfill-progress.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts +0 -72
- package/out/zero-cache/src/services/change-streamer/backfill-state-tracker.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts +0 -50
- package/out/zero-cache/src/services/change-streamer/backfill-state.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.d.ts +0 -14
- package/out/zero-cache/src/services/change-streamer/backup-cleanup-monitor-factory.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +0 -18
- package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/broadcast.d.ts +0 -98
- package/out/zero-cache/src/services/change-streamer/broadcast.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts +0 -34
- package/out/zero-cache/src/services/change-streamer/change-log-codec.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-log-compare-digest.d.ts +0 -34
- package/out/zero-cache/src/services/change-streamer/change-log-compare-digest.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts +0 -158
- package/out/zero-cache/src/services/change-streamer/change-log-initializer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.d.ts +0 -19
- package/out/zero-cache/src/services/change-streamer/change-log-transaction-hash.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +0 -78
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +0 -143
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +0 -586
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts +0 -24
- package/out/zero-cache/src/services/change-streamer/drain-tracker.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts +0 -15
- package/out/zero-cache/src/services/change-streamer/error-type-enum.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +0 -49
- package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts +0 -53
- package/out/zero-cache/src/services/change-streamer/litestream-sync-requester.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.d.ts +0 -88
- package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/replica-poller.d.ts +0 -15
- package/out/zero-cache/src/services/change-streamer/replica-poller.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts +0 -243
- package/out/zero-cache/src/services/change-streamer/restore-admission.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +0 -6
- package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +0 -152
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/shard-sampling.d.ts +0 -11
- package/out/zero-cache/src/services/change-streamer/shard-sampling.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts +0 -92
- package/out/zero-cache/src/services/change-streamer/snapshot-message.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts +0 -36
- package/out/zero-cache/src/services/change-streamer/snapshot-reservations.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +0 -22
- package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.d.ts +0 -99
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.d.ts +0 -83
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-comparator.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.d.ts +0 -121
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-purge-scheduler.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.d.ts +0 -73
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.d.ts +0 -62
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-reader.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts +0 -114
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-writer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +0 -276
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/subscribe.d.ts +0 -485
- package/out/zero-cache/src/services/change-streamer/subscribe.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +0 -194
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts +0 -52
- package/out/zero-cache/src/services/change-streamer/upstream-acker.d.ts.map +0 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts +0 -57
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts.map +0 -1
- package/out/zero-cache/src/services/litestream/commands.d.ts +0 -77
- package/out/zero-cache/src/services/litestream/commands.d.ts.map +0 -1
- package/out/zero-cache/src/services/litestream/litestream-controller.d.ts +0 -78
- package/out/zero-cache/src/services/litestream/litestream-controller.d.ts.map +0 -1
- package/out/zero-cache/src/services/litestream/metrics.d.ts +0 -31
- package/out/zero-cache/src/services/litestream/metrics.d.ts.map +0 -1
- package/out/zero-cache/src/services/litestream/restore-progress.d.ts +0 -24
- package/out/zero-cache/src/services/litestream/restore-progress.d.ts.map +0 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +0 -40
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +0 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts +0 -63
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/change-log-db.d.ts +0 -368
- package/out/zero-cache/src/services/replicator/change-log-db.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts +0 -56
- package/out/zero-cache/src/services/replicator/change-log-stream-writer.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/change-processor.d.ts +0 -37
- package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/drain-handler.d.ts +0 -82
- package/out/zero-cache/src/services/replicator/drain-handler.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +0 -25
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/notifier.d.ts +0 -9
- package/out/zero-cache/src/services/replicator/notifier.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/replication-status.d.ts +0 -71
- package/out/zero-cache/src/services/replicator/replication-status.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts +0 -86
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts +0 -55
- package/out/zero-cache/src/services/replicator/reporter/recorder.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts +0 -132
- package/out/zero-cache/src/services/replicator/sqlite-change-log-observability.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.d.ts +0 -120
- package/out/zero-cache/src/services/replicator/sqlite-change-log-purger.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +0 -111
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +0 -1
- package/out/zero-cache/src/services/run-ast.d.ts +0 -39
- package/out/zero-cache/src/services/run-ast.d.ts.map +0 -1
- package/out/zero-cache/src/services/runner.d.ts +0 -19
- package/out/zero-cache/src/services/runner.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts +0 -17
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts +0 -26
- package/out/zero-cache/src/services/view-syncer/advancement-metrics.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts +0 -79
- package/out/zero-cache/src/services/view-syncer/batch-pacer.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +0 -79
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.d.ts +0 -5
- package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/connection-context-manager.d.ts +0 -184
- package/out/zero-cache/src/services/view-syncer/connection-context-manager.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts +0 -22
- package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +0 -128
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts +0 -294
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts +0 -81
- package/out/zero-cache/src/services/view-syncer/deferred-writes-budget.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +0 -45
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.d.ts +0 -53
- package/out/zero-cache/src/services/view-syncer/e2e-serving-lag.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/hydration-budget.d.ts +0 -33
- package/out/zero-cache/src/services/view-syncer/hydration-budget.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts +0 -51
- package/out/zero-cache/src/services/view-syncer/hydration-circuit-breaker.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +0 -34
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +0 -296
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts +0 -7
- package/out/zero-cache/src/services/view-syncer/plan-warnings.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/push-cost.d.ts +0 -132
- package/out/zero-cache/src/services/view-syncer/push-cost.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts +0 -55
- package/out/zero-cache/src/services/view-syncer/push-cutoff.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/query-covering.d.ts +0 -28
- package/out/zero-cache/src/services/view-syncer/query-covering.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/query-shape.d.ts +0 -25
- package/out/zero-cache/src/services/view-syncer/query-shape.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/query-stats.d.ts +0 -89
- package/out/zero-cache/src/services/view-syncer/query-stats.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +0 -90
- package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/row-set-signature.d.ts +0 -17
- package/out/zero-cache/src/services/view-syncer/row-set-signature.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +0 -86
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.d.ts +0 -5
- package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +0 -563
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts +0 -95
- package/out/zero-cache/src/services/view-syncer/snapshot-row-cache.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +0 -412
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/tracer.d.ts +0 -2
- package/out/zero-cache/src/services/view-syncer/tracer.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts +0 -10
- package/out/zero-cache/src/services/view-syncer/ttl-clock.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +0 -133
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +0 -1
- package/out/zero-cache/src/types/pg-patch.d.ts +0 -21
- package/out/zero-cache/src/types/pg-patch.d.ts.map +0 -1
- package/out/zero-cache/src/types/pg-versions.d.ts +0 -3
- package/out/zero-cache/src/types/pg-versions.d.ts.map +0 -1
- package/out/zero-cache/src/workers/replicator.d.ts +0 -57
- package/out/zero-cache/src/workers/replicator.d.ts.map +0 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts +0 -14
- package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +0 -1
- package/out/zero-cache/src/workers/syncer.d.ts +0 -67
- package/out/zero-cache/src/workers/syncer.d.ts.map +0 -1
- package/out/zero-events/src/index.d.ts +0 -27
- package/out/zero-events/src/index.d.ts.map +0 -1
- package/out/zero-events/src/json.d.ts +0 -20
- package/out/zero-events/src/json.d.ts.map +0 -1
- package/out/zero-events/src/status.d.ts +0 -144
- package/out/zero-events/src/status.d.ts.map +0 -1
- package/out/zqlite/src/database-storage.d.ts +0 -24
- package/out/zqlite/src/database-storage.d.ts.map +0 -1
- package/out/zqlite/src/explain-queries.d.ts +0 -4
- package/out/zqlite/src/explain-queries.d.ts.map +0 -1
- package/out/zqlite/src/internal/sql-inline.d.ts +0 -13
- package/out/zqlite/src/internal/sql-inline.d.ts.map +0 -1
- package/out/zqlite/src/resolve-scalar-subqueries.d.ts +0 -72
- package/out/zqlite/src/resolve-scalar-subqueries.d.ts.map +0 -1
- package/out/zqlite/src/sqlite-cost-model.d.ts +0 -17
- package/out/zqlite/src/sqlite-cost-model.d.ts.map +0 -1
- package/out/zqlite/src/sqlite-stat-fanout.d.ts +0 -121
- package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner-warnings.js","names":[],"sources":["../../../../../zql/src/planner/planner-warnings.ts"],"sourcesContent":["import type {Condition, Ordering} from '../../../zero-protocol/src/ast.ts';\nimport type {Plans} from './planner-builder.ts';\nimport type {\n AccessPlan,\n ConnectionAccess,\n PlannerConnection,\n} from './planner-connection.ts';\n\n/**\n * When the planner reports a {@link PlanWarning}. Each threshold is compared\n * against the cost model's estimates, and 0 disables the warnings it gates.\n */\nexport type PlanWarningThresholds = {\n /**\n * The number of rows a single read of a table must scan (for a\n * {@link MissingIndexWarning}) or sort (for a {@link FullSortWarning}).\n */\n readonly rows: number;\n\n /**\n * The number of rows the chosen plan must be estimated to process, for a\n * {@link HighCostWarning}.\n */\n readonly cost: number;\n};\n\ntype TableRead = {\n readonly table: string;\n\n /**\n * The aliases of the `related` subqueries leading to the read, starting\n * from the root query. Empty for the root query and its EXISTS subqueries.\n */\n readonly path: readonly string[];\n\n /**\n * Whether the read runs once per row of another table, because a join\n * binds some of its columns, rather than once per query.\n */\n readonly perRow: boolean;\n\n /**\n * An index that would let the source find the rows it reads and return\n * them in order: the columns the rows are found by, then the ordering.\n */\n readonly suggestedIndex: readonly string[];\n};\n\n/**\n * The rows of a table are found by columns that no index covers, so every\n * read scans the whole table. This is typically a relationship whose foreign\n * key is not indexed.\n */\
|
|
1
|
+
{"version":3,"file":"planner-warnings.js","names":[],"sources":["../../../../../zql/src/planner/planner-warnings.ts"],"sourcesContent":["import type {Condition, Ordering} from '../../../zero-protocol/src/ast.ts';\nimport type {Plans} from './planner-builder.ts';\nimport type {\n AccessPlan,\n ConnectionAccess,\n PlannerConnection,\n} from './planner-connection.ts';\n\n/**\n * When the planner reports a {@link PlanWarning}. Each threshold is compared\n * against the cost model's estimates, and 0 disables the warnings it gates.\n */\nexport type PlanWarningThresholds = {\n /**\n * The number of rows a single read of a table must scan (for a\n * {@link MissingIndexWarning}) or sort (for a {@link FullSortWarning}).\n */\n readonly rows: number;\n\n /**\n * The number of rows the chosen plan must be estimated to process, for a\n * {@link HighCostWarning}.\n */\n readonly cost: number;\n};\n\ntype TableRead = {\n readonly table: string;\n\n /**\n * The aliases of the `related` subqueries leading to the read, starting\n * from the root query. Empty for the root query and its EXISTS subqueries.\n */\n readonly path: readonly string[];\n\n /**\n * Whether the read runs once per row of another table, because a join\n * binds some of its columns, rather than once per query.\n */\n readonly perRow: boolean;\n\n /**\n * An index that would let the source find the rows it reads and return\n * them in order: the columns the rows are found by, then the ordering.\n */\n readonly suggestedIndex: readonly string[];\n};\n\n/**\n * The rows of a table are found by columns that no index covers, so every\n * read scans the whole table. This is typically a relationship whose foreign\n * key is not indexed.\n */\ntype MissingIndexWarning = TableRead & {\n readonly type: 'missing-index';\n /**\n * The columns the rows are found by: the columns a join binds and the\n * columns filtered for equality.\n */\n readonly columns: readonly string[];\n /** The rows each read scans. */\n readonly rows: number;\n};\n\n/**\n * No index returns the rows of a table in the requested order, so every read\n * sorts all of the matching rows before returning the first one. A limit does\n * not reduce the rows read.\n */\ntype FullSortWarning = TableRead & {\n readonly type: 'full-sort';\n readonly orderBy: Ordering;\n /** The estimated number of rows each read sorts. */\n readonly rows: number;\n};\n\n/**\n * The best plan the planner found is still estimated to process a lot of\n * rows. Only reported when every table the query reads has statistics, since\n * the estimates are guesses otherwise.\n */\ntype HighCostWarning = {\n readonly type: 'high-cost';\n readonly table: string;\n /** The estimated number of rows the plan processes. */\n readonly cost: number;\n};\n\nexport type PlanWarning =\n | MissingIndexWarning\n | FullSortWarning\n | HighCostWarning;\n\n/**\n * Warns about what the cost model reports the plans in `plans` will do\n * slowly. Call this after planning: it estimates each graph's current plan.\n *\n * @param table The table of the query that `plans` was built for.\n */\nexport function collectPlanWarnings(\n table: string,\n plans: Plans,\n thresholds: PlanWarningThresholds,\n): PlanWarning[] {\n const warnings = new Map<string, PlanWarning>();\n const state = {warnings, estimated: true};\n const cost = visit(plans, [], thresholds, state);\n const result = [...warnings.values()];\n if (state.estimated && thresholds.cost > 0 && cost >= thresholds.cost) {\n result.push({type: 'high-cost', table, cost: Math.round(cost)});\n }\n return result;\n}\n\ntype VisitState = {\n readonly warnings: Map<string, PlanWarning>;\n /** Whether every access read a table with statistics. */\n estimated: boolean;\n};\n\n/**\n * Collects the warnings for `plans` and its subplans, and returns the\n * estimated number of rows they process.\n */\nfunction visit(\n plans: Plans,\n path: readonly string[],\n thresholds: PlanWarningThresholds,\n state: VisitState,\n): number {\n const estimate = plans.plan.estimateCurrentPlan();\n for (const connection of plans.plan.connections) {\n for (const access of connection.accesses()) {\n if (access.plan?.tableRows === undefined) {\n state.estimated = false;\n } else if (thresholds.rows > 0) {\n for (const warning of accessWarnings(\n connection,\n access,\n access.plan,\n access.plan.tableRows,\n path,\n thresholds.rows,\n )) {\n state.warnings.set(JSON.stringify(warning), warning);\n }\n }\n }\n }\n\n // A `related` subquery runs once for each row of its parent.\n let subCost = 0;\n for (const [alias, subPlans] of Object.entries(plans.subPlans)) {\n subCost += visit(subPlans, [...path, alias], thresholds, state);\n }\n const rowsOut =\n estimate.limit === undefined\n ? estimate.returnedRows\n : Math.min(estimate.returnedRows, estimate.limit);\n return (\n estimate.startupCost + estimate.cost + estimate.scanEst + rowsOut * subCost\n );\n}\n\nfunction* accessWarnings(\n connection: PlannerConnection,\n access: ConnectionAccess,\n plan: AccessPlan,\n tableRows: number,\n path: readonly string[],\n minRows: number,\n): Iterable<MissingIndexWarning | FullSortWarning> {\n const constrained = Object.keys(access.constraint ?? {});\n const columns = unique([...constrained, ...equalityColumns(access.filters)]);\n const read: TableRead = {\n table: connection.table,\n path,\n perRow: constrained.length > 0,\n suggestedIndex: unique([\n ...columns,\n ...connection.sort.map(([column]) => column),\n ]),\n };\n\n // A scan that stops at a limit reads an unknown share of the table, unless\n // it runs per row: then even a limit of one (an EXISTS) scans the table\n // for every row that has no match.\n if (\n plan.access === 'scan' &&\n columns.length > 0 &&\n (read.perRow || connection.limit === undefined) &&\n tableRows >= minRows\n ) {\n yield {type: 'missing-index', ...read, columns, rows: tableRows};\n }\n\n if (plan.sort === 'full' && access.rows >= minRows) {\n yield {\n type: 'full-sort',\n ...read,\n orderBy: connection.sort,\n rows: Math.round(access.rows),\n };\n }\n}\n\n/**\n * The columns that the top-level conjuncts of `condition` compare for\n * equality with a value, which an index lookup can use.\n */\nfunction equalityColumns(condition: Condition | undefined): string[] {\n switch (condition?.type) {\n case 'simple': {\n const {left, op} = condition;\n return (op === '=' || op === 'IS' || op === 'IN') &&\n left.type === 'column'\n ? [left.name]\n : [];\n }\n case 'and':\n return condition.conditions.flatMap(equalityColumns);\n default:\n return [];\n }\n}\n\nfunction unique(values: string[]): string[] {\n return [...new Set(values)];\n}\n"],"mappings":";;;;;;;AAmGA,SAAgB,oBACd,OACA,OACA,YACe;CACf,MAAM,2BAAW,IAAI,IAAyB;CAC9C,MAAM,QAAQ;EAAC;EAAU,WAAW;CAAI;CACxC,MAAM,OAAO,MAAM,OAAO,CAAC,GAAG,YAAY,KAAK;CAC/C,MAAM,SAAS,CAAC,GAAG,SAAS,OAAO,CAAC;CACpC,IAAI,MAAM,aAAa,WAAW,OAAO,KAAK,QAAQ,WAAW,MAC/D,OAAO,KAAK;EAAC,MAAM;EAAa;EAAO,MAAM,KAAK,MAAM,IAAI;CAAC,CAAC;CAEhE,OAAO;AACT;;;;;AAYA,SAAS,MACP,OACA,MACA,YACA,OACQ;CACR,MAAM,WAAW,MAAM,KAAK,oBAAoB;CAChD,KAAK,MAAM,cAAc,MAAM,KAAK,aAClC,KAAK,MAAM,UAAU,WAAW,SAAS,GACvC,IAAI,OAAO,MAAM,cAAc,KAAA,GAC7B,MAAM,YAAY;MACb,IAAI,WAAW,OAAO,GAC3B,KAAK,MAAM,WAAW,eACpB,YACA,QACA,OAAO,MACP,OAAO,KAAK,WACZ,MACA,WAAW,IACb,GACE,MAAM,SAAS,IAAI,KAAK,UAAU,OAAO,GAAG,OAAO;CAO3D,IAAI,UAAU;CACd,KAAK,MAAM,CAAC,OAAO,aAAa,OAAO,QAAQ,MAAM,QAAQ,GAC3D,WAAW,MAAM,UAAU,CAAC,GAAG,MAAM,KAAK,GAAG,YAAY,KAAK;CAEhE,MAAM,UACJ,SAAS,UAAU,KAAA,IACf,SAAS,eACT,KAAK,IAAI,SAAS,cAAc,SAAS,KAAK;CACpD,OACE,SAAS,cAAc,SAAS,OAAO,SAAS,UAAU,UAAU;AAExE;AAEA,UAAU,eACR,YACA,QACA,MACA,WACA,MACA,SACiD;CACjD,MAAM,cAAc,OAAO,KAAK,OAAO,cAAc,CAAC,CAAC;CACvD,MAAM,UAAU,OAAO,CAAC,GAAG,aAAa,GAAG,gBAAgB,OAAO,OAAO,CAAC,CAAC;CAC3E,MAAM,OAAkB;EACtB,OAAO,WAAW;EAClB;EACA,QAAQ,YAAY,SAAS;EAC7B,gBAAgB,OAAO,CACrB,GAAG,SACH,GAAG,WAAW,KAAK,KAAK,CAAC,YAAY,MAAM,CAC7C,CAAC;CACH;CAKA,IACE,KAAK,WAAW,UAChB,QAAQ,SAAS,MAChB,KAAK,UAAU,WAAW,UAAU,KAAA,MACrC,aAAa,SAEb,MAAM;EAAC,MAAM;EAAiB,GAAG;EAAM;EAAS,MAAM;CAAS;CAGjE,IAAI,KAAK,SAAS,UAAU,OAAO,QAAQ,SACzC,MAAM;EACJ,MAAM;EACN,GAAG;EACH,SAAS,WAAW;EACpB,MAAM,KAAK,MAAM,OAAO,IAAI;CAC9B;AAEJ;;;;;AAMA,SAAS,gBAAgB,WAA4C;CACnE,QAAQ,WAAW,MAAnB;EACE,KAAK,UAAU;GACb,MAAM,EAAC,MAAM,OAAM;GACnB,QAAQ,OAAO,OAAO,OAAO,QAAQ,OAAO,SAC1C,KAAK,SAAS,WACZ,CAAC,KAAK,IAAI,IACV,CAAC;EACP;EACA,KAAK,OACH,OAAO,UAAU,WAAW,QAAQ,eAAe;EACrD,SACE,OAAO,CAAC;CACZ;AACF;AAEA,SAAS,OAAO,QAA4B;CAC1C,OAAO,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC;AAC5B"}
|
|
@@ -14,7 +14,8 @@ function createRunnableBuilder(delegate, schema) {
|
|
|
14
14
|
return createBuilderWithQueryFactory(schema, (table) => newRunnableQuery(delegate, schema, table));
|
|
15
15
|
}
|
|
16
16
|
function createBuilderWithQueryFactory(schema, queryFactory) {
|
|
17
|
-
|
|
17
|
+
const target = Object.assign(Object.create(null), schema.tables);
|
|
18
|
+
return recordProxy(target, (_tableSchema, prop) => queryFactory(prop));
|
|
18
19
|
}
|
|
19
20
|
//#endregion
|
|
20
21
|
export { createBuilder, createRunnableBuilder };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-builder.js","names":[],"sources":["../../../../../zql/src/query/create-builder.ts"],"sourcesContent":["import {recordProxy} from '../../../shared/src/record-proxy.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {QueryDelegate} from './query-delegate.ts';\nimport {newQuery} from './query-impl.ts';\nimport type {Query} from './query.ts';\nimport {newRunnableQuery} from './runnable-query-impl.ts';\nimport type {ConditionalSchemaQuery, SchemaQuery} from './schema-query.ts';\n\n/**\n * Returns a set of query builders for the given schema.\n */\nexport function createBuilder<S extends Schema>(schema: S): SchemaQuery<S> {\n return createBuilderWithQueryFactory(schema, table =>\n newQuery(schema, table),\n );\n}\n\n/** @deprecated Use {@link createBuilder} with `tx.run(zql.table.where(...))` instead. */\nexport function createRunnableBuilder<S extends Schema>(\n delegate: QueryDelegate,\n schema: S,\n): ConditionalSchemaQuery<S> {\n if (!schema.enableLegacyQueries) {\n return undefined as ConditionalSchemaQuery<S>;\n }\n\n return createBuilderWithQueryFactory(schema, table =>\n newRunnableQuery(delegate, schema, table),\n ) as ConditionalSchemaQuery<S>;\n}\n\nfunction createBuilderWithQueryFactory<S extends Schema>(\n schema: S,\n queryFactory: (table: keyof S['tables'] & string) => Query<string, S>,\n): SchemaQuery<S> {\n // Create a target with no prototype so accessing unknown properties returns\n // undefined instead of inherited Object.prototype methods (e.g., toString).\n // This fixes React 19 dev mode compatibility where accessing $$typeof should\n // return undefined rather than throwing.\n const target = Object.assign(Object.create(null), schema.tables) as Record<\n string,\n unknown\n >;\n\n // No onMissing handler needed - unknown properties return undefined due to\n // null prototype, which is the desired behavior for normal JS object semantics.\n return recordProxy(target, (_tableSchema, prop) =>\n queryFactory(prop),\n ) as SchemaQuery<S>;\n}\n"],"mappings":";;;;;;;AAWA,SAAgB,cAAgC,QAA2B;CACzE,OAAO,8BAA8B,SAAQ,UAC3C,SAAS,QAAQ,KAAK,CACxB;AACF;;AAGA,SAAgB,sBACd,UACA,QAC2B;CAC3B,IAAI,CAAC,OAAO,qBACV;CAGF,OAAO,8BAA8B,SAAQ,UAC3C,iBAAiB,UAAU,QAAQ,KAAK,CAC1C;AACF;AAEA,SAAS,8BACP,QACA,cACgB;
|
|
1
|
+
{"version":3,"file":"create-builder.js","names":[],"sources":["../../../../../zql/src/query/create-builder.ts"],"sourcesContent":["import {recordProxy} from '../../../shared/src/record-proxy.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {QueryDelegate} from './query-delegate.ts';\nimport {newQuery} from './query-impl.ts';\nimport type {Query} from './query.ts';\nimport {newRunnableQuery} from './runnable-query-impl.ts';\nimport type {ConditionalSchemaQuery, SchemaQuery} from './schema-query.ts';\n\n/**\n * Returns a set of query builders for the given schema.\n */\nexport function createBuilder<S extends Schema>(schema: S): SchemaQuery<S> {\n return createBuilderWithQueryFactory(schema, table =>\n newQuery(schema, table),\n );\n}\n\n/** @deprecated Use {@link createBuilder} with `tx.run(zql.table.where(...))` instead. */\nexport function createRunnableBuilder<S extends Schema>(\n delegate: QueryDelegate,\n schema: S,\n): ConditionalSchemaQuery<S> {\n if (!schema.enableLegacyQueries) {\n return undefined as ConditionalSchemaQuery<S>;\n }\n\n return createBuilderWithQueryFactory(schema, table =>\n newRunnableQuery(delegate, schema, table),\n ) as ConditionalSchemaQuery<S>;\n}\n\nfunction createBuilderWithQueryFactory<S extends Schema>(\n schema: S,\n queryFactory: (table: keyof S['tables'] & string) => Query<string, S>,\n): SchemaQuery<S> {\n // Create a target with no prototype so accessing unknown properties returns\n // undefined instead of inherited Object.prototype methods (e.g., toString).\n // This fixes React 19 dev mode compatibility where accessing $$typeof should\n // return undefined rather than throwing.\n const target = Object.assign(Object.create(null), schema.tables) as Record<\n string,\n unknown\n >;\n\n // No onMissing handler needed - unknown properties return undefined due to\n // null prototype, which is the desired behavior for normal JS object semantics.\n return recordProxy(target, (_tableSchema, prop) =>\n queryFactory(prop),\n ) as SchemaQuery<S>;\n}\n"],"mappings":";;;;;;;AAWA,SAAgB,cAAgC,QAA2B;CACzE,OAAO,8BAA8B,SAAQ,UAC3C,SAAS,QAAQ,KAAK,CACxB;AACF;;AAGA,SAAgB,sBACd,UACA,QAC2B;CAC3B,IAAI,CAAC,OAAO,qBACV;CAGF,OAAO,8BAA8B,SAAQ,UAC3C,iBAAiB,UAAU,QAAQ,KAAK,CAC1C;AACF;AAEA,SAAS,8BACP,QACA,cACgB;CAKhB,MAAM,SAAS,OAAO,OAAO,OAAO,OAAO,IAAI,GAAG,OAAO,MAAM;CAO/D,OAAO,YAAY,SAAS,cAAc,SACxC,aAAa,IAAI,CACnB;AACF"}
|
|
@@ -1,9 +1,40 @@
|
|
|
1
|
-
import { toStaticParam, type Condition, type LiteralValue, type Parameter, type SimpleOperator } from '../../../zero-protocol/src/ast.ts';
|
|
1
|
+
import { type Aggregate, type AggregateFunction, toStaticParam, type Condition, type JsonPathReference, type LiteralValue, type Parameter, type SimpleOperator } from '../../../zero-protocol/src/ast.ts';
|
|
2
|
+
import type { SchemaValueToTSType } from '../../../zero-types/src/schema-value.ts';
|
|
2
3
|
import type { Schema as ZeroSchema } from '../../../zero-types/src/schema.ts';
|
|
3
|
-
import type { DestTableName, ExistsOptions, GetFilterType, NoCompoundTypeSelector, PullTableSchema, Query } from './query.ts';
|
|
4
|
+
import type { DestTableName, ExistsOptions, GetFilterType, GetJsonLeafFilterType, JsonSelectors, NoCompoundTypeSelector, PullTableSchema, Query, ValidJsonPath, ValueAtPath } from './query.ts';
|
|
4
5
|
export type ParameterReference = {
|
|
5
6
|
[toStaticParam](): Parameter;
|
|
6
7
|
};
|
|
8
|
+
declare const toColumnRef: unique symbol;
|
|
9
|
+
declare const columnRefBrand: unique symbol;
|
|
10
|
+
/**
|
|
11
|
+
* A reference to a value *inside* a `json()` column, produced by
|
|
12
|
+
* {@link ExpressionBuilder.json} and accepted by `cmp` in the left position.
|
|
13
|
+
*
|
|
14
|
+
* It carries, as phantom type parameters (never present at runtime), the json
|
|
15
|
+
* column's resolved TypeScript type (`TColumnType`), the path (`P`) and the
|
|
16
|
+
* table it was built for (`TTable`, so a reference built by one table's
|
|
17
|
+
* builder is rejected by another table's `cmp`). `json` resolves `TColumnType`
|
|
18
|
+
* from the schema at the (concrete) call site, so `cmp` walks the path over a
|
|
19
|
+
* *concrete* type rather than a deferred schema lookup. A deferred path-walk
|
|
20
|
+
* in `cmp`'s signature is too complex for TypeScript's structural comparison
|
|
21
|
+
* of `ExpressionBuilder` and breaks it wholesale.
|
|
22
|
+
*/
|
|
23
|
+
export type ColumnRef<TColumnType = unknown, P extends readonly (string | number)[] = readonly (string | number)[], TTable extends string = string> = {
|
|
24
|
+
[toColumnRef](): JsonPathReference;
|
|
25
|
+
[columnRefBrand]?(brand: [TColumnType, P, TTable]): void;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* The callback form of an aggregate's argument: picks a scalar leaf inside a
|
|
29
|
+
* `json()` column, e.g. `c.sum(({json}) => json('metadata', 'points'))`.
|
|
30
|
+
*/
|
|
31
|
+
export type JsonAggregateSelector = (builder: any) => unknown;
|
|
32
|
+
/**
|
|
33
|
+
* Builds the AST aggregate for `fn` over `selector`: nothing for `count`, a
|
|
34
|
+
* column name, or a {@link JsonAggregateSelector} picking a leaf inside a
|
|
35
|
+
* `json()` column.
|
|
36
|
+
*/
|
|
37
|
+
export declare function aggregateFromSelector(fn: AggregateFunction, selector: string | JsonAggregateSelector | undefined): Aggregate;
|
|
7
38
|
/**
|
|
8
39
|
* A factory function that creates a condition. This is used to create
|
|
9
40
|
* complex conditions that can be passed to the `where` method of a query.
|
|
@@ -29,6 +60,21 @@ export declare class ExpressionBuilder<TTable extends keyof TSchema['tables'] &
|
|
|
29
60
|
get eb(): this;
|
|
30
61
|
cmp<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>, TOperator extends SimpleOperator>(field: TSelector, op: TOperator, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, TOperator> | ParameterReference | undefined): Condition;
|
|
31
62
|
cmp<TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>>(field: TSelector, value: GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, '='> | ParameterReference | undefined): Condition;
|
|
63
|
+
cmp<TColumnType, const P extends readonly (string | number)[], TOperator extends SimpleOperator>(ref: ColumnRef<TColumnType, P, TTable>, op: TOperator, value: GetJsonLeafFilterType<ValueAtPath<TColumnType, P>, TOperator> | ParameterReference | undefined): Condition;
|
|
64
|
+
cmp<TColumnType, const P extends readonly (string | number)[]>(ref: ColumnRef<TColumnType, P, TTable>, value: GetJsonLeafFilterType<ValueAtPath<TColumnType, P>, '='> | ParameterReference | undefined): Condition;
|
|
65
|
+
/**
|
|
66
|
+
* References a value inside a `json()` column for use in `cmp`. Path
|
|
67
|
+
* segments are object keys or array indices, applied left-to-right; at least
|
|
68
|
+
* one segment is required, since a whole JSON column is never a comparison
|
|
69
|
+
* operand (only scalar leaves can be compared).
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* z.query.issue.where(({cmp, json}) =>
|
|
74
|
+
* cmp(json('metadata', 'priority'), '=', 'high'));
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
json<TColumn extends JsonSelectors<PullTableSchema<TTable, TSchema>> & string, const P extends readonly [string | number, ...(string | number)[]]>(column: TColumn, ...path: P & ValidJsonPath<SchemaValueToTSType<PullTableSchema<TTable, TSchema>['columns'][TColumn]>, P>): ColumnRef<SchemaValueToTSType<PullTableSchema<TTable, TSchema>['columns'][TColumn]>, P, TTable>;
|
|
32
78
|
cmpLit(left: ParameterReference | LiteralValue | undefined, op: SimpleOperator, right: ParameterReference | LiteralValue | undefined): Condition;
|
|
33
79
|
and: typeof and;
|
|
34
80
|
or: typeof or;
|
|
@@ -38,28 +84,7 @@ export declare class ExpressionBuilder<TTable extends keyof TSchema['tables'] &
|
|
|
38
84
|
export declare function and(...conditions: (Condition | undefined)[]): Condition;
|
|
39
85
|
export declare function or(...conditions: (Condition | undefined)[]): Condition;
|
|
40
86
|
export declare function not(expression: Condition): Condition;
|
|
41
|
-
export declare function cmp(field: string, opOrValue: SimpleOperator | ParameterReference | LiteralValue | undefined, value?: ParameterReference | LiteralValue): Condition;
|
|
42
|
-
export declare const TRUE: Condition;
|
|
87
|
+
export declare function cmp(field: string | ColumnRef, opOrValue: SimpleOperator | ParameterReference | LiteralValue | undefined, value?: ParameterReference | LiteralValue): Condition;
|
|
43
88
|
export declare function simplifyCondition(c: Condition): Condition;
|
|
44
|
-
export declare function flatten(type: 'and' | 'or', conditions: readonly Condition[]): Condition[];
|
|
45
|
-
declare const negateOperatorMap: {
|
|
46
|
-
readonly "=": '!=';
|
|
47
|
-
readonly "!=": '=';
|
|
48
|
-
readonly "<": '>=';
|
|
49
|
-
readonly ">": '<=';
|
|
50
|
-
readonly ">=": '<';
|
|
51
|
-
readonly "<=": '>';
|
|
52
|
-
readonly IN: 'NOT IN';
|
|
53
|
-
readonly "NOT IN": 'IN';
|
|
54
|
-
readonly LIKE: 'NOT LIKE';
|
|
55
|
-
readonly "NOT LIKE": 'LIKE';
|
|
56
|
-
readonly ILIKE: 'NOT ILIKE';
|
|
57
|
-
readonly "NOT ILIKE": 'ILIKE';
|
|
58
|
-
readonly IS: 'IS NOT';
|
|
59
|
-
readonly "IS NOT": 'IS';
|
|
60
|
-
readonly EXISTS: 'NOT EXISTS';
|
|
61
|
-
readonly "NOT EXISTS": 'EXISTS';
|
|
62
|
-
};
|
|
63
|
-
export declare function negateOperator<OP extends keyof typeof negateOperatorMap>(op: OP): (typeof negateOperatorMap)[OP];
|
|
64
89
|
export {};
|
|
65
90
|
//# sourceMappingURL=expression.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/expression.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,
|
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/expression.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,43 @@
|
|
|
1
1
|
import { must } from "../../../shared/src/must.js";
|
|
2
|
-
import { toStaticParam } from "../../../zero-protocol/src/ast.js";
|
|
2
|
+
import { MAX_JSON_PATH_INDEX, isHomogeneousList, isValidJsonPathIndex, toStaticParam } from "../../../zero-protocol/src/ast.js";
|
|
3
3
|
//#region ../zql/src/query/expression.ts
|
|
4
|
+
var toColumnRef = Symbol();
|
|
5
|
+
function isColumnRef(v) {
|
|
6
|
+
return typeof v === "object" && v !== null && toColumnRef in v;
|
|
7
|
+
}
|
|
8
|
+
function makeColumnRef(name, path) {
|
|
9
|
+
if (path.length === 0) throw new Error(`json('${name}') requires at least one path segment`);
|
|
10
|
+
for (const seg of path) if (typeof seg === "number" && !isValidJsonPathIndex(seg)) throw new Error(`Invalid JSON path segment ${seg} in json('${name}', ...): a numeric segment is an array index and must be a non-negative integer no larger than ${MAX_JSON_PATH_INDEX}`);
|
|
11
|
+
const ref = {
|
|
12
|
+
type: "json",
|
|
13
|
+
value: {
|
|
14
|
+
type: "column",
|
|
15
|
+
name
|
|
16
|
+
},
|
|
17
|
+
path
|
|
18
|
+
};
|
|
19
|
+
return { [toColumnRef]: () => ref };
|
|
20
|
+
}
|
|
21
|
+
var jsonAggregateBuilder = { json: (column, ...path) => makeColumnRef(column, path) };
|
|
22
|
+
/**
|
|
23
|
+
* Builds the AST aggregate for `fn` over `selector`: nothing for `count`, a
|
|
24
|
+
* column name, or a {@link JsonAggregateSelector} picking a leaf inside a
|
|
25
|
+
* `json()` column.
|
|
26
|
+
*/
|
|
27
|
+
function aggregateFromSelector(fn, selector) {
|
|
28
|
+
if (typeof selector !== "function") return {
|
|
29
|
+
fn,
|
|
30
|
+
field: selector
|
|
31
|
+
};
|
|
32
|
+
const ref = selector(jsonAggregateBuilder);
|
|
33
|
+
if (!isColumnRef(ref)) throw new Error(`${fn}() expects the callback to return json(...)`);
|
|
34
|
+
const { value, path } = ref[toColumnRef]();
|
|
35
|
+
return {
|
|
36
|
+
fn,
|
|
37
|
+
field: value.name,
|
|
38
|
+
path
|
|
39
|
+
};
|
|
40
|
+
}
|
|
4
41
|
var ExpressionBuilder = class {
|
|
5
42
|
#exists;
|
|
6
43
|
constructor(exists) {
|
|
@@ -10,9 +47,24 @@ var ExpressionBuilder = class {
|
|
|
10
47
|
get eb() {
|
|
11
48
|
return this;
|
|
12
49
|
}
|
|
13
|
-
cmp(field,
|
|
14
|
-
if (
|
|
15
|
-
return cmp(field,
|
|
50
|
+
cmp(field, ...args) {
|
|
51
|
+
if (args.length === 1) return cmp(field, args[0]);
|
|
52
|
+
return cmp(field, args[0], args[1]);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* References a value inside a `json()` column for use in `cmp`. Path
|
|
56
|
+
* segments are object keys or array indices, applied left-to-right; at least
|
|
57
|
+
* one segment is required, since a whole JSON column is never a comparison
|
|
58
|
+
* operand (only scalar leaves can be compared).
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* z.query.issue.where(({cmp, json}) =>
|
|
63
|
+
* cmp(json('metadata', 'priority'), '=', 'high'));
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
json(column, ...path) {
|
|
67
|
+
return makeColumnRef(column, path);
|
|
16
68
|
}
|
|
17
69
|
cmpLit(left, op, right) {
|
|
18
70
|
return {
|
|
@@ -86,9 +138,13 @@ function cmp(field, opOrValue, value) {
|
|
|
86
138
|
op = opOrValue;
|
|
87
139
|
actualValue = value;
|
|
88
140
|
}
|
|
141
|
+
if (isColumnRef(actualValue)) throw new Error("A json() reference is only valid as the left operand of cmp()");
|
|
142
|
+
if (isColumnRef(field) && (op === "IN" || op === "NOT IN") && Array.isArray(actualValue)) {
|
|
143
|
+
if (!isHomogeneousList(actualValue)) throw new Error(`${op} against a JSON path requires a list of values of one type`);
|
|
144
|
+
}
|
|
89
145
|
return {
|
|
90
146
|
type: "simple",
|
|
91
|
-
left: {
|
|
147
|
+
left: isColumnRef(field) ? field[toColumnRef]() : {
|
|
92
148
|
type: "column",
|
|
93
149
|
name: field
|
|
94
150
|
},
|
|
@@ -164,6 +220,6 @@ function filterFalse(conditions) {
|
|
|
164
220
|
return conditions.filter((c) => !isAlwaysFalse(c));
|
|
165
221
|
}
|
|
166
222
|
//#endregion
|
|
167
|
-
export { ExpressionBuilder, and, cmp, simplifyCondition };
|
|
223
|
+
export { ExpressionBuilder, aggregateFromSelector, and, cmp, not, or, simplifyCondition };
|
|
168
224
|
|
|
169
225
|
//# sourceMappingURL=expression.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","names":["#exists"],"sources":["../../../../../zql/src/query/expression.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport {must} from '../../../shared/src/must.ts';\nimport {\n toStaticParam,\n type Condition,\n type LiteralValue,\n type Parameter,\n type SimpleOperator,\n} from '../../../zero-protocol/src/ast.ts';\nimport type {Schema as ZeroSchema} from '../../../zero-types/src/schema.ts';\nimport type {\n DestTableName,\n ExistsOptions,\n GetFilterType,\n NoCompoundTypeSelector,\n PullTableSchema,\n Query,\n} from './query.ts';\n\nexport type ParameterReference = {\n [toStaticParam](): Parameter;\n};\n\n/**\n * A factory function that creates a condition. This is used to create\n * complex conditions that can be passed to the `where` method of a query.\n *\n * @example\n *\n * ```ts\n * const condition: ExpressionFactory<User> = ({and, cmp, or}) =>\n * and(\n * cmp('name', '=', 'Alice'),\n * or(cmp('age', '>', 18), cmp('isStudent', '=', true)),\n * );\n *\n * const query = z.query.user.where(condition);\n * ```\n */\nexport interface ExpressionFactory<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends ZeroSchema,\n> {\n (eb: ExpressionBuilder<TTable, TSchema>): Condition;\n}\n\nexport class ExpressionBuilder<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends ZeroSchema,\n> {\n readonly #exists: (\n relationship: string,\n cb?: (query: Query<TTable, TSchema>) => Query<TTable, TSchema, any>,\n options?: ExistsOptions,\n ) => Condition;\n\n constructor(\n exists: (\n relationship: string,\n cb?: (query: Query<TTable, TSchema>) => Query<TTable, TSchema, any>,\n options?: ExistsOptions,\n ) => Condition,\n ) {\n this.#exists = exists;\n this.exists = this.exists.bind(this);\n }\n\n get eb() {\n return this;\n }\n\n cmp<\n TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>,\n TOperator extends SimpleOperator,\n >(\n field: TSelector,\n op: TOperator,\n value:\n | GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, TOperator>\n | ParameterReference\n | undefined,\n ): Condition;\n cmp<\n TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>,\n >(\n field: TSelector,\n value:\n | GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, '='>\n | ParameterReference\n | undefined,\n ): Condition;\n cmp(\n field: string,\n opOrValue: SimpleOperator | ParameterReference | LiteralValue | undefined,\n value?: ParameterReference | LiteralValue,\n ): Condition {\n if (arguments.length === 2) {\n return cmp(field, opOrValue);\n }\n return cmp(field, opOrValue, value);\n }\n\n cmpLit(\n left: ParameterReference | LiteralValue | undefined,\n op: SimpleOperator,\n right: ParameterReference | LiteralValue | undefined,\n ): Condition {\n return {\n type: 'simple',\n left: isParameterReference(left)\n ? left[toStaticParam]()\n : {type: 'literal', value: left ?? null},\n right: isParameterReference(right)\n ? right[toStaticParam]()\n : {type: 'literal', value: right ?? null},\n op,\n };\n }\n\n and = and;\n or = or;\n not = not;\n\n // The relationship names are inline for the reason given on `Query.related`.\n exists = <\n TRelationship extends keyof TSchema['relationships'][TTable] & string,\n >(\n relationship: TRelationship,\n cb?: (\n query: Query<DestTableName<TTable, TSchema, TRelationship>, TSchema>,\n ) => Query<any, TSchema>,\n options?: ExistsOptions,\n ): Condition => this.#exists(relationship, cb, options);\n}\n\nexport function and(...conditions: (Condition | undefined)[]): Condition {\n const expressions = filterTrue(filterUndefined(conditions));\n\n if (expressions.length === 1) {\n return expressions[0];\n }\n\n if (expressions.some(isAlwaysFalse)) {\n return FALSE;\n }\n\n return {type: 'and', conditions: expressions};\n}\n\nexport function or(...conditions: (Condition | undefined)[]): Condition {\n const expressions = filterFalse(filterUndefined(conditions));\n\n if (expressions.length === 1) {\n return expressions[0];\n }\n\n if (expressions.some(isAlwaysTrue)) {\n return TRUE;\n }\n\n return {type: 'or', conditions: expressions};\n}\n\nexport function not(expression: Condition): Condition {\n switch (expression.type) {\n case 'and':\n return {\n type: 'or',\n conditions: expression.conditions.map(not),\n };\n case 'or':\n return {\n type: 'and',\n conditions: expression.conditions.map(not),\n };\n case 'correlatedSubquery':\n return {\n type: 'correlatedSubquery',\n related: expression.related,\n op: negateOperator(expression.op),\n ...(expression.flip !== undefined ? {flip: expression.flip} : {}),\n ...(expression.scalar !== undefined ? {scalar: expression.scalar} : {}),\n };\n case 'simple':\n return {\n type: 'simple',\n op: negateOperator(expression.op),\n left: expression.left,\n right: expression.right,\n };\n }\n}\n\nexport function cmp(\n field: string,\n opOrValue: SimpleOperator | ParameterReference | LiteralValue | undefined,\n value?: ParameterReference | LiteralValue,\n): Condition {\n let op: SimpleOperator;\n let actualValue: ParameterReference | LiteralValue | undefined;\n\n if (arguments.length === 2) {\n // 2-arg form: cmp(field, value) - defaults to '=' operator\n actualValue = opOrValue as ParameterReference | LiteralValue | undefined;\n op = '=';\n } else {\n // 3-arg form: cmp(field, op, value)\n op = opOrValue as SimpleOperator;\n actualValue = value;\n }\n\n return {\n type: 'simple',\n left: {type: 'column', name: field},\n right: isParameterReference(actualValue)\n ? actualValue[toStaticParam]()\n : {type: 'literal', value: actualValue ?? null},\n op,\n };\n}\n\nfunction isParameterReference(\n value: ParameterReference | LiteralValue | null | undefined,\n): value is ParameterReference {\n return (\n value !== null &&\n value !== undefined &&\n typeof value === 'object' &&\n (value as any)[toStaticParam]\n );\n}\n\nexport const TRUE: Condition = {\n type: 'and',\n conditions: [],\n};\n\nconst FALSE: Condition = {\n type: 'or',\n conditions: [],\n};\n\nfunction isAlwaysTrue(condition: Condition): boolean {\n return condition.type === 'and' && condition.conditions.length === 0;\n}\n\nfunction isAlwaysFalse(condition: Condition): boolean {\n return condition.type === 'or' && condition.conditions.length === 0;\n}\n\nexport function simplifyCondition(c: Condition): Condition {\n if (c.type === 'simple' || c.type === 'correlatedSubquery') {\n return c;\n }\n if (c.conditions.length === 1) {\n return simplifyCondition(c.conditions[0]);\n }\n const conditions = flatten(c.type, c.conditions.map(simplifyCondition));\n if (c.type === 'and' && conditions.some(isAlwaysFalse)) {\n return FALSE;\n }\n if (c.type === 'or' && conditions.some(isAlwaysTrue)) {\n return TRUE;\n }\n return {\n type: c.type,\n conditions,\n };\n}\n\nexport function flatten(\n type: 'and' | 'or',\n conditions: readonly Condition[],\n): Condition[] {\n const flattened: Condition[] = [];\n for (const c of conditions) {\n if (c.type === type) {\n flattened.push(...c.conditions);\n } else {\n flattened.push(c);\n }\n }\n\n return flattened;\n}\n\nconst negateSimpleOperatorMap = {\n ['=']: '!=',\n ['!=']: '=',\n ['<']: '>=',\n ['>']: '<=',\n ['>=']: '<',\n ['<=']: '>',\n ['IN']: 'NOT IN',\n ['NOT IN']: 'IN',\n ['LIKE']: 'NOT LIKE',\n ['NOT LIKE']: 'LIKE',\n ['ILIKE']: 'NOT ILIKE',\n ['NOT ILIKE']: 'ILIKE',\n ['IS']: 'IS NOT',\n ['IS NOT']: 'IS',\n} as const;\n\nconst negateOperatorMap = {\n ...negateSimpleOperatorMap,\n ['EXISTS']: 'NOT EXISTS',\n ['NOT EXISTS']: 'EXISTS',\n} as const;\n\nexport function negateOperator<OP extends keyof typeof negateOperatorMap>(\n op: OP,\n): (typeof negateOperatorMap)[OP] {\n return must(negateOperatorMap[op]);\n}\n\nfunction filterUndefined<T>(array: (T | undefined)[]): T[] {\n return array.filter(e => e !== undefined);\n}\n\nfunction filterTrue(conditions: Condition[]): Condition[] {\n return conditions.filter(c => !isAlwaysTrue(c));\n}\n\nfunction filterFalse(conditions: Condition[]): Condition[] {\n return conditions.filter(c => !isAlwaysFalse(c));\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"expression.js","names":[],"sources":["../../../../../zql/src/query/expression.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\nimport {must} from '../../../shared/src/must.ts';\nimport {\n type Aggregate,\n type AggregateFunction,\n isHomogeneousList,\n isValidJsonPathIndex,\n MAX_JSON_PATH_INDEX,\n toStaticParam,\n type ColumnReference,\n type Condition,\n type JsonPathReference,\n type LiteralValue,\n type Parameter,\n type SimpleOperator,\n} from '../../../zero-protocol/src/ast.ts';\nimport type {SchemaValueToTSType} from '../../../zero-types/src/schema-value.ts';\nimport type {Schema as ZeroSchema} from '../../../zero-types/src/schema.ts';\nimport type {\n DestTableName,\n ExistsOptions,\n GetFilterType,\n GetJsonLeafFilterType,\n JsonSelectors,\n NoCompoundTypeSelector,\n PullTableSchema,\n Query,\n ValidJsonPath,\n ValueAtPath,\n} from './query.ts';\n\nexport type ParameterReference = {\n [toStaticParam](): Parameter;\n};\n\nconst toColumnRef = Symbol();\ndeclare const columnRefBrand: unique symbol;\n\n/**\n * A reference to a value *inside* a `json()` column, produced by\n * {@link ExpressionBuilder.json} and accepted by `cmp` in the left position.\n *\n * It carries, as phantom type parameters (never present at runtime), the json\n * column's resolved TypeScript type (`TColumnType`), the path (`P`) and the\n * table it was built for (`TTable`, so a reference built by one table's\n * builder is rejected by another table's `cmp`). `json` resolves `TColumnType`\n * from the schema at the (concrete) call site, so `cmp` walks the path over a\n * *concrete* type rather than a deferred schema lookup. A deferred path-walk\n * in `cmp`'s signature is too complex for TypeScript's structural comparison\n * of `ExpressionBuilder` and breaks it wholesale.\n */\nexport type ColumnRef<\n TColumnType = unknown,\n P extends readonly (string | number)[] = readonly (string | number)[],\n TTable extends string = string,\n> = {\n [toColumnRef](): JsonPathReference;\n // Phantom brand. Declared as a *method* (not a property) so the type\n // parameters are bivariant: `json`'s return type embeds a schema-derived\n // `TColumnType`, and a covariant brand would make a concrete-schema\n // `ColumnRef` unassignable to a generic-schema one, breaking\n // `ExpressionBuilder` assignability across the query builder. `cmp` still\n // infers `TColumnType`/`P`/`TTable` from this position.\n [columnRefBrand]?(brand: [TColumnType, P, TTable]): void;\n};\n\nfunction isColumnRef(v: unknown): v is ColumnRef {\n return typeof v === 'object' && v !== null && toColumnRef in v;\n}\n\nfunction makeColumnRef(\n name: string,\n path: readonly (string | number)[],\n): ColumnRef {\n // `json()` requires at least one segment (enforced by its type): a whole JSON\n // column is never a comparison operand.\n if (path.length === 0) {\n throw new Error(`json('${name}') requires at least one path segment`);\n }\n for (const seg of path) {\n if (typeof seg === 'number' && !isValidJsonPathIndex(seg)) {\n throw new Error(\n `Invalid JSON path segment ${seg} in json('${name}', ...): a numeric ` +\n 'segment is an array index and must be a non-negative integer ' +\n `no larger than ${MAX_JSON_PATH_INDEX}`,\n );\n }\n }\n const column: ColumnReference = {type: 'column', name};\n const ref: JsonPathReference = {type: 'json', value: column, path};\n return {[toColumnRef]: () => ref};\n}\n\n/**\n * The callback form of an aggregate's argument: picks a scalar leaf inside a\n * `json()` column, e.g. `c.sum(({json}) => json('metadata', 'points'))`.\n */\n// Loosely typed: the public signatures (see `Query.sum`) type the builder and\n// the leaf; this is what the implementation accepts, checked at runtime.\nexport type JsonAggregateSelector = (builder: any) => unknown;\n\nconst jsonAggregateBuilder = {\n json: (column: string, ...path: (string | number)[]) =>\n makeColumnRef(column, path),\n};\n\n/**\n * Builds the AST aggregate for `fn` over `selector`: nothing for `count`, a\n * column name, or a {@link JsonAggregateSelector} picking a leaf inside a\n * `json()` column.\n */\nexport function aggregateFromSelector(\n fn: AggregateFunction,\n selector: string | JsonAggregateSelector | undefined,\n): Aggregate {\n if (typeof selector !== 'function') {\n return {fn, field: selector};\n }\n const ref = selector(jsonAggregateBuilder);\n if (!isColumnRef(ref)) {\n throw new Error(`${fn}() expects the callback to return json(...)`);\n }\n const {value, path} = ref[toColumnRef]();\n return {fn, field: value.name, path};\n}\n\n/**\n * A factory function that creates a condition. This is used to create\n * complex conditions that can be passed to the `where` method of a query.\n *\n * @example\n *\n * ```ts\n * const condition: ExpressionFactory<User> = ({and, cmp, or}) =>\n * and(\n * cmp('name', '=', 'Alice'),\n * or(cmp('age', '>', 18), cmp('isStudent', '=', true)),\n * );\n *\n * const query = z.query.user.where(condition);\n * ```\n */\nexport interface ExpressionFactory<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends ZeroSchema,\n> {\n (eb: ExpressionBuilder<TTable, TSchema>): Condition;\n}\n\nexport class ExpressionBuilder<\n TTable extends keyof TSchema['tables'] & string,\n TSchema extends ZeroSchema,\n> {\n readonly #exists: (\n relationship: string,\n cb?: (query: Query<TTable, TSchema>) => Query<TTable, TSchema, any>,\n options?: ExistsOptions,\n ) => Condition;\n\n constructor(\n exists: (\n relationship: string,\n cb?: (query: Query<TTable, TSchema>) => Query<TTable, TSchema, any>,\n options?: ExistsOptions,\n ) => Condition,\n ) {\n this.#exists = exists;\n this.exists = this.exists.bind(this);\n }\n\n get eb() {\n return this;\n }\n\n cmp<\n TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>,\n TOperator extends SimpleOperator,\n >(\n field: TSelector,\n op: TOperator,\n value:\n | GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, TOperator>\n | ParameterReference\n | undefined,\n ): Condition;\n cmp<\n TSelector extends NoCompoundTypeSelector<PullTableSchema<TTable, TSchema>>,\n >(\n field: TSelector,\n value:\n | GetFilterType<PullTableSchema<TTable, TSchema>, TSelector, '='>\n | ParameterReference\n | undefined,\n ): Condition;\n cmp<\n TColumnType,\n const P extends readonly (string | number)[],\n TOperator extends SimpleOperator,\n >(\n ref: ColumnRef<TColumnType, P, TTable>,\n op: TOperator,\n value:\n | GetJsonLeafFilterType<ValueAtPath<TColumnType, P>, TOperator>\n | ParameterReference\n | undefined,\n ): Condition;\n cmp<TColumnType, const P extends readonly (string | number)[]>(\n ref: ColumnRef<TColumnType, P, TTable>,\n value:\n | GetJsonLeafFilterType<ValueAtPath<TColumnType, P>, '='>\n | ParameterReference\n | undefined,\n ): Condition;\n // Implementation signature, intentionally loose. The typed contract is\n // defined by the overloads above; this only needs to subsume them.\n cmp(field: string | ColumnRef, ...args: any[]): Condition {\n if (args.length === 1) {\n return cmp(field, args[0]);\n }\n return cmp(field, args[0], args[1]);\n }\n\n /**\n * References a value inside a `json()` column for use in `cmp`. Path\n * segments are object keys or array indices, applied left-to-right; at least\n * one segment is required, since a whole JSON column is never a comparison\n * operand (only scalar leaves can be compared).\n *\n * @example\n * ```ts\n * z.query.issue.where(({cmp, json}) =>\n * cmp(json('metadata', 'priority'), '=', 'high'));\n * ```\n */\n json<\n TColumn extends JsonSelectors<PullTableSchema<TTable, TSchema>> & string,\n const P extends readonly [string | number, ...(string | number)[]],\n >(\n column: TColumn,\n // `P` is inferred from the args; intersecting with `ValidJsonPath` rejects\n // an out-of-shape segment at its position (and drives autocomplete).\n ...path: P &\n ValidJsonPath<\n SchemaValueToTSType<\n PullTableSchema<TTable, TSchema>['columns'][TColumn]\n >,\n P\n >\n ): ColumnRef<\n SchemaValueToTSType<PullTableSchema<TTable, TSchema>['columns'][TColumn]>,\n P,\n TTable\n > {\n return makeColumnRef(column, path) as ColumnRef<\n SchemaValueToTSType<PullTableSchema<TTable, TSchema>['columns'][TColumn]>,\n P,\n TTable\n >;\n }\n\n cmpLit(\n left: ParameterReference | LiteralValue | undefined,\n op: SimpleOperator,\n right: ParameterReference | LiteralValue | undefined,\n ): Condition {\n return {\n type: 'simple',\n left: isParameterReference(left)\n ? left[toStaticParam]()\n : {type: 'literal', value: left ?? null},\n right: isParameterReference(right)\n ? right[toStaticParam]()\n : {type: 'literal', value: right ?? null},\n op,\n };\n }\n\n and = and;\n or = or;\n not = not;\n\n // The relationship names are inline for the reason given on `Query.related`.\n exists = <\n TRelationship extends keyof TSchema['relationships'][TTable] & string,\n >(\n relationship: TRelationship,\n cb?: (\n query: Query<DestTableName<TTable, TSchema, TRelationship>, TSchema>,\n ) => Query<any, TSchema>,\n options?: ExistsOptions,\n ): Condition => this.#exists(relationship, cb, options);\n}\n\nexport function and(...conditions: (Condition | undefined)[]): Condition {\n const expressions = filterTrue(filterUndefined(conditions));\n\n if (expressions.length === 1) {\n return expressions[0];\n }\n\n if (expressions.some(isAlwaysFalse)) {\n return FALSE;\n }\n\n return {type: 'and', conditions: expressions};\n}\n\nexport function or(...conditions: (Condition | undefined)[]): Condition {\n const expressions = filterFalse(filterUndefined(conditions));\n\n if (expressions.length === 1) {\n return expressions[0];\n }\n\n if (expressions.some(isAlwaysTrue)) {\n return TRUE;\n }\n\n return {type: 'or', conditions: expressions};\n}\n\nexport function not(expression: Condition): Condition {\n switch (expression.type) {\n case 'and':\n return {\n type: 'or',\n conditions: expression.conditions.map(not),\n };\n case 'or':\n return {\n type: 'and',\n conditions: expression.conditions.map(not),\n };\n case 'correlatedSubquery':\n return {\n type: 'correlatedSubquery',\n related: expression.related,\n op: negateOperator(expression.op),\n ...(expression.flip !== undefined ? {flip: expression.flip} : {}),\n ...(expression.scalar !== undefined ? {scalar: expression.scalar} : {}),\n };\n case 'simple':\n return {\n type: 'simple',\n op: negateOperator(expression.op),\n left: expression.left,\n right: expression.right,\n };\n }\n}\n\nexport function cmp(\n field: string | ColumnRef,\n opOrValue: SimpleOperator | ParameterReference | LiteralValue | undefined,\n value?: ParameterReference | LiteralValue,\n): Condition {\n let op: SimpleOperator;\n let actualValue: ParameterReference | LiteralValue | undefined;\n\n if (arguments.length === 2) {\n // 2-arg form: cmp(field, value) - defaults to '=' operator\n actualValue = opOrValue as ParameterReference | LiteralValue | undefined;\n op = '=';\n } else {\n // 3-arg form: cmp(field, op, value)\n op = opOrValue as SimpleOperator;\n actualValue = value;\n }\n\n if (isColumnRef(actualValue)) {\n // Without this the reference would be wrapped as a literal `{}`: an\n // always-false predicate on the client and a wire rejection on the server.\n throw new Error(\n 'A json() reference is only valid as the left operand of cmp()',\n );\n }\n if (\n isColumnRef(field) &&\n (op === 'IN' || op === 'NOT IN') &&\n Array.isArray(actualValue)\n ) {\n // The engines compare a JSON leaf against the type of the list's first\n // element (see jsonLiteralType); a mixed list has no consistent meaning.\n if (!isHomogeneousList(actualValue)) {\n throw new Error(\n `${op} against a JSON path requires a list of values of one type`,\n );\n }\n }\n\n return {\n type: 'simple',\n left: isColumnRef(field)\n ? field[toColumnRef]()\n : {type: 'column', name: field},\n right: isParameterReference(actualValue)\n ? actualValue[toStaticParam]()\n : {type: 'literal', value: actualValue ?? null},\n op,\n };\n}\n\nfunction isParameterReference(\n value: ParameterReference | LiteralValue | null | undefined,\n): value is ParameterReference {\n return (\n value !== null &&\n value !== undefined &&\n typeof value === 'object' &&\n (value as any)[toStaticParam]\n );\n}\n\nconst TRUE: Condition = {\n type: 'and',\n conditions: [],\n};\n\nconst FALSE: Condition = {\n type: 'or',\n conditions: [],\n};\n\nfunction isAlwaysTrue(condition: Condition): boolean {\n return condition.type === 'and' && condition.conditions.length === 0;\n}\n\nfunction isAlwaysFalse(condition: Condition): boolean {\n return condition.type === 'or' && condition.conditions.length === 0;\n}\n\nexport function simplifyCondition(c: Condition): Condition {\n if (c.type === 'simple' || c.type === 'correlatedSubquery') {\n return c;\n }\n if (c.conditions.length === 1) {\n return simplifyCondition(c.conditions[0]);\n }\n const conditions = flatten(c.type, c.conditions.map(simplifyCondition));\n if (c.type === 'and' && conditions.some(isAlwaysFalse)) {\n return FALSE;\n }\n if (c.type === 'or' && conditions.some(isAlwaysTrue)) {\n return TRUE;\n }\n return {\n type: c.type,\n conditions,\n };\n}\n\nfunction flatten(\n type: 'and' | 'or',\n conditions: readonly Condition[],\n): Condition[] {\n const flattened: Condition[] = [];\n for (const c of conditions) {\n if (c.type === type) {\n flattened.push(...c.conditions);\n } else {\n flattened.push(c);\n }\n }\n\n return flattened;\n}\n\nconst negateSimpleOperatorMap = {\n ['=']: '!=',\n ['!=']: '=',\n ['<']: '>=',\n ['>']: '<=',\n ['>=']: '<',\n ['<=']: '>',\n ['IN']: 'NOT IN',\n ['NOT IN']: 'IN',\n ['LIKE']: 'NOT LIKE',\n ['NOT LIKE']: 'LIKE',\n ['ILIKE']: 'NOT ILIKE',\n ['NOT ILIKE']: 'ILIKE',\n ['IS']: 'IS NOT',\n ['IS NOT']: 'IS',\n} as const;\n\nconst negateOperatorMap = {\n ...negateSimpleOperatorMap,\n ['EXISTS']: 'NOT EXISTS',\n ['NOT EXISTS']: 'EXISTS',\n} as const;\n\nfunction negateOperator<OP extends keyof typeof negateOperatorMap>(\n op: OP,\n): (typeof negateOperatorMap)[OP] {\n return must(negateOperatorMap[op]);\n}\n\nfunction filterUndefined<T>(array: (T | undefined)[]): T[] {\n return array.filter(e => e !== undefined);\n}\n\nfunction filterTrue(conditions: Condition[]): Condition[] {\n return conditions.filter(c => !isAlwaysTrue(c));\n}\n\nfunction filterFalse(conditions: Condition[]): Condition[] {\n return conditions.filter(c => !isAlwaysFalse(c));\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { emptyArray } from "../../../shared/src/sentinels.js";
|
|
2
1
|
import { throwOutput } from "../ivm/operator.js";
|
|
2
|
+
import { emptyArray } from "../../../shared/src/sentinels.js";
|
|
3
3
|
//#region ../zql/src/query/measure-push-operator.ts
|
|
4
4
|
var MeasurePushOperator = class {
|
|
5
5
|
#input;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measure-push-operator.js","names":[
|
|
1
|
+
{"version":3,"file":"measure-push-operator.js","names":[],"sources":["../../../../../zql/src/query/measure-push-operator.ts"],"sourcesContent":["import {emptyArray} from '../../../shared/src/sentinels.ts';\nimport type {Change} from '../ivm/change.ts';\nimport type {Node} from '../ivm/data.ts';\nimport {\n throwOutput,\n type FetchRequest,\n type Input,\n type InputBase,\n type Operator,\n type Output,\n} from '../ivm/operator.ts';\nimport type {SourceSchema} from '../ivm/schema.ts';\nimport type {Stream} from '../ivm/stream.ts';\nimport type {MetricsDelegate} from './metrics-delegate.ts';\n\ntype MetricName = 'query-update-client' | 'query-update-server';\n\nexport class MeasurePushOperator implements Operator {\n readonly #input: Input;\n readonly #queryID: string;\n readonly #metricsDelegate: MetricsDelegate;\n readonly #sampleRate: number;\n /** Pushes and reconciles so far, sampled or not. */\n #count = 0;\n\n #output: Output = throwOutput;\n readonly #metricName: MetricName;\n\n /**\n * With a `sampleRate` of n, only the first of every n pushes (and\n * reconciles) is timed and reported. The others go straight to the output,\n * without a timer or the generator that measuring needs. The metrics\n * delegate should weight each reported time by n.\n */\n constructor(\n input: Input,\n queryID: string,\n metricsDelegate: MetricsDelegate,\n metricName: MetricName,\n sampleRate = 1,\n ) {\n this.#input = input;\n this.#queryID = queryID;\n this.#metricsDelegate = metricsDelegate;\n this.#metricName = metricName;\n this.#sampleRate = sampleRate;\n input.setOutput(this);\n }\n\n setOutput(output: Output): void {\n this.#output = output;\n }\n\n fetch(req: FetchRequest): Stream<Node | 'yield'> {\n return this.#input.fetch(req);\n }\n\n getSchema(): SourceSchema {\n return this.#input.getSchema();\n }\n\n destroy(): void {\n this.#input.destroy();\n }\n\n push(change: Change): Stream<'yield'> {\n if (!this.#sample()) {\n return this.#output.push(change, this);\n }\n return this.#measure(() => this.#output.push(change, this));\n }\n\n reconcile(_pusher: InputBase): Stream<'yield'> {\n const output = this.#output;\n if (output.reconcile === undefined) {\n return emptyArray;\n }\n if (!this.#sample()) {\n return output.reconcile(this);\n }\n const reconcile = output.reconcile.bind(output);\n return this.#measure(() => reconcile(this));\n }\n\n #sample(): boolean {\n return this.#count++ % this.#sampleRate === 0;\n }\n\n /**\n * Runs the stream returned by `run` and records the time spent running it.\n *\n * The time the stream spends suspended at a `yield` is not counted: the\n * caller yields the thread there, and whatever else runs in the meantime\n * is not this query's work.\n *\n * The time is recorded even if the stream throws or is abandoned, so that\n * a push aborted for taking too long is accounted to its query.\n */\n *#measure(run: () => Stream<'yield'>): Stream<'yield'> {\n let elapsed = 0;\n let start = performance.now();\n let running = true;\n try {\n for (const result of run()) {\n elapsed += performance.now() - start;\n running = false;\n yield result;\n running = true;\n start = performance.now();\n }\n } finally {\n if (running) {\n elapsed += performance.now() - start;\n }\n this.#metricsDelegate.addMetric(this.#metricName, elapsed, this.#queryID);\n }\n }\n}\n"],"mappings":";;;AAiBA,IAAa,sBAAb,MAAqD;CACnD;CACA;CACA;CACA;;CAEA,SAAS;CAET,UAAkB;CAClB;;;;;;;CAQA,YACE,OACA,SACA,iBACA,YACA,aAAa,GACb;EACA,KAAK,SAAS;EACd,KAAK,WAAW;EAChB,KAAK,mBAAmB;EACxB,KAAK,cAAc;EACnB,KAAK,cAAc;EACnB,MAAM,UAAU,IAAI;CACtB;CAEA,UAAU,QAAsB;EAC9B,KAAK,UAAU;CACjB;CAEA,MAAM,KAA2C;EAC/C,OAAO,KAAK,OAAO,MAAM,GAAG;CAC9B;CAEA,YAA0B;EACxB,OAAO,KAAK,OAAO,UAAU;CAC/B;CAEA,UAAgB;EACd,KAAK,OAAO,QAAQ;CACtB;CAEA,KAAK,QAAiC;EACpC,IAAI,CAAC,KAAK,QAAQ,GAChB,OAAO,KAAK,QAAQ,KAAK,QAAQ,IAAI;EAEvC,OAAO,KAAK,eAAe,KAAK,QAAQ,KAAK,QAAQ,IAAI,CAAC;CAC5D;CAEA,UAAU,SAAqC;EAC7C,MAAM,SAAS,KAAK;EACpB,IAAI,OAAO,cAAc,KAAA,GACvB,OAAO;EAET,IAAI,CAAC,KAAK,QAAQ,GAChB,OAAO,OAAO,UAAU,IAAI;EAE9B,MAAM,YAAY,OAAO,UAAU,KAAK,MAAM;EAC9C,OAAO,KAAK,eAAe,UAAU,IAAI,CAAC;CAC5C;CAEA,UAAmB;EACjB,OAAO,KAAK,WAAW,KAAK,gBAAgB;CAC9C;;;;;;;;;;;CAYA,CAAC,SAAS,KAA6C;EACrD,IAAI,UAAU;EACd,IAAI,QAAQ,YAAY,IAAI;EAC5B,IAAI,UAAU;EACd,IAAI;GACF,KAAK,MAAM,UAAU,IAAI,GAAG;IAC1B,WAAW,YAAY,IAAI,IAAI;IAC/B,UAAU;IACV,MAAM;IACN,UAAU;IACV,QAAQ,YAAY,IAAI;GAC1B;EACF,UAAU;GACR,IAAI,SACF,WAAW,YAAY,IAAI,IAAI;GAEjC,KAAK,iBAAiB,UAAU,KAAK,aAAa,SAAS,KAAK,QAAQ;EAC1E;CACF;AACF"}
|
|
@@ -33,7 +33,8 @@ function syncedQueryWithContext(name, parser, fn) {
|
|
|
33
33
|
/** @deprecated */
|
|
34
34
|
function syncedQueryImpl(name, fn, takesContext) {
|
|
35
35
|
return (context, args) => {
|
|
36
|
-
|
|
36
|
+
const q = takesContext ? fn(context, ...args) : fn(...args);
|
|
37
|
+
return asQueryInternals(q).nameAndArgs(name, args);
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
40
|
/** @deprecated */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"named.js","names":[],"sources":["../../../../../zql/src/query/named.ts"],"sourcesContent":["import type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {QueryParseError} from './error.ts';\nimport {asQueryInternals} from './query-internals.ts';\nimport {type AnyQuery} from './query.ts';\n\n/** @deprecated */\nexport type QueryFn<\n TContext,\n TTakesContext extends boolean,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends AnyQuery,\n> = TTakesContext extends false\n ? {(...args: TArg): TReturnQuery}\n : {(context: TContext, ...args: TArg): TReturnQuery};\n\n/** @deprecated */\nexport type SyncedQuery<\n TName extends string,\n TContext,\n TTakesContext extends boolean,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends AnyQuery,\n> = QueryFn<TContext, TTakesContext, TArg, TReturnQuery> & {\n queryName: TName;\n parse: ParseFn<TArg> | undefined;\n takesContext: TTakesContext;\n};\n\nfunction normalizeParser<T extends ReadonlyJSONValue[]>(\n parser: ParseFn<T> | HasParseFn<T> | undefined,\n): ParseFn<T> | undefined {\n if (parser) {\n if ('parse' in parser) {\n return parser.parse.bind(parser);\n }\n return parser;\n }\n return undefined;\n}\n\n/**\n * @deprecated Use {@link defineQuery} instead.\n */\nexport function syncedQuery<\n TName extends string,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends AnyQuery,\n>(\n name: TName,\n parser: ParseFn<TArg> | HasParseFn<TArg> | undefined,\n fn: QueryFn<unknown, false, TArg, TReturnQuery>,\n): SyncedQuery<TName, unknown, false, TArg, TReturnQuery> {\n const impl = syncedQueryImpl(name, fn, false);\n // oxlint-disable-next-line no-explicit-any\n const ret: any = (...args: TArg) => impl(undefined, args);\n ret.queryName = name;\n ret.parse = normalizeParser(parser);\n ret.takesContext = false;\n return ret;\n}\n\n/**\n * @deprecated Use {@link defineQuery} instead.\n */\nexport function syncedQueryWithContext<\n TName extends string,\n TContext,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends AnyQuery,\n>(\n name: TName,\n parser: ParseFn<TArg> | HasParseFn<TArg> | undefined,\n fn: QueryFn<TContext, true, TArg, TReturnQuery>,\n): SyncedQuery<TName, TContext, true, TArg, TReturnQuery> {\n const impl = syncedQueryImpl(name, fn, true);\n // oxlint-disable-next-line no-explicit-any\n const ret: any = (context: TContext, ...args: TArg) => impl(context, args);\n ret.queryName = name;\n ret.parse = normalizeParser(parser);\n ret.takesContext = true;\n return ret;\n}\n\n/** @deprecated */\nfunction syncedQueryImpl<\n TName extends string,\n TContext,\n TArg extends ReadonlyJSONValue[],\n // oxlint-disable-next-line no-explicit-any\n>(name: TName, fn: any, takesContext: boolean) {\n return (context: TContext, args: TArg) => {\n const q = takesContext ? fn(context, ...args) : fn(...args);\n return asQueryInternals(q).nameAndArgs(name, args);\n };\n}\n\n/** @deprecated */\n\n// oxlint-disable-next-line no-explicit-any\ntype AnySyncedQuery = SyncedQuery<any, any, any, any, any>;\n\n/** @deprecated */\nexport function withValidation<F extends AnySyncedQuery>(\n fn: F,\n // oxlint-disable-next-line no-explicit-any\n): F extends SyncedQuery<infer N, infer C, any, any, infer R>\n ? SyncedQuery<N, C, true, ReadonlyJSONValue[], R>\n : F {\n // If we have a parse function this is a SyncedQuery\n if ('parse' in fn) {\n const {parse} = fn;\n if (!parse) {\n throw new Error('ret does not have a parse function defined');\n }\n // oxlint-disable-next-line no-explicit-any\n const ret: any = (context: unknown, ...args: unknown[]) => {\n let parsed;\n try {\n parsed = parse(args);\n } catch (error) {\n throw new QueryParseError({cause: error});\n }\n // oxlint-disable-next-line no-explicit-any\n return fn.takesContext ? fn(context, ...parsed) : (fn as any)(...parsed);\n };\n ret.queryName = fn.queryName;\n ret.parse = fn.parse;\n ret.takesContext = true;\n\n return ret;\n }\n\n // If we don't have a parse function, return the function as-is\n // (this shouldn't happen in practice)\n // oxlint-disable-next-line no-explicit-any\n return fn as any;\n}\n\n/** @deprecated */\nexport type ParseFn<T extends ReadonlyJSONValue[]> = (args: unknown[]) => T;\n\n/** @deprecated */\nexport type HasParseFn<T extends ReadonlyJSONValue[]> = {\n parse: ParseFn<T>;\n};\n\n/** @deprecated */\nexport type Parser<T extends ReadonlyJSONValue[]> = ParseFn<T> | HasParseFn<T>;\n\nexport type CustomQueryID = {\n name: string;\n args: ReadonlyArray<ReadonlyJSONValue>;\n};\n"],"mappings":";;;;AA4BA,SAAS,gBACP,QACwB;CACxB,IAAI,QAAQ;EACV,IAAI,WAAW,QACb,OAAO,OAAO,MAAM,KAAK,MAAM;EAEjC,OAAO;CACT;AAEF;;;;AAKA,SAAgB,YAKd,MACA,QACA,IACwD;CACxD,MAAM,OAAO,gBAAgB,MAAM,IAAI,KAAK;CAE5C,MAAM,OAAY,GAAG,SAAe,KAAK,KAAA,GAAW,IAAI;CACxD,IAAI,YAAY;CAChB,IAAI,QAAQ,gBAAgB,MAAM;CAClC,IAAI,eAAe;CACnB,OAAO;AACT;;;;AAKA,SAAgB,uBAMd,MACA,QACA,IACwD;CACxD,MAAM,OAAO,gBAAgB,MAAM,IAAI,IAAI;CAE3C,MAAM,OAAY,SAAmB,GAAG,SAAe,KAAK,SAAS,IAAI;CACzE,IAAI,YAAY;CAChB,IAAI,QAAQ,gBAAgB,MAAM;CAClC,IAAI,eAAe;CACnB,OAAO;AACT;;AAGA,SAAS,gBAKP,MAAa,IAAS,cAAuB;CAC7C,QAAQ,SAAmB,SAAe;
|
|
1
|
+
{"version":3,"file":"named.js","names":[],"sources":["../../../../../zql/src/query/named.ts"],"sourcesContent":["import type {ReadonlyJSONValue} from '../../../shared/src/json.ts';\nimport {QueryParseError} from './error.ts';\nimport {asQueryInternals} from './query-internals.ts';\nimport {type AnyQuery} from './query.ts';\n\n/** @deprecated */\nexport type QueryFn<\n TContext,\n TTakesContext extends boolean,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends AnyQuery,\n> = TTakesContext extends false\n ? {(...args: TArg): TReturnQuery}\n : {(context: TContext, ...args: TArg): TReturnQuery};\n\n/** @deprecated */\nexport type SyncedQuery<\n TName extends string,\n TContext,\n TTakesContext extends boolean,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends AnyQuery,\n> = QueryFn<TContext, TTakesContext, TArg, TReturnQuery> & {\n queryName: TName;\n parse: ParseFn<TArg> | undefined;\n takesContext: TTakesContext;\n};\n\nfunction normalizeParser<T extends ReadonlyJSONValue[]>(\n parser: ParseFn<T> | HasParseFn<T> | undefined,\n): ParseFn<T> | undefined {\n if (parser) {\n if ('parse' in parser) {\n return parser.parse.bind(parser);\n }\n return parser;\n }\n return undefined;\n}\n\n/**\n * @deprecated Use {@link defineQuery} instead.\n */\nexport function syncedQuery<\n TName extends string,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends AnyQuery,\n>(\n name: TName,\n parser: ParseFn<TArg> | HasParseFn<TArg> | undefined,\n fn: QueryFn<unknown, false, TArg, TReturnQuery>,\n): SyncedQuery<TName, unknown, false, TArg, TReturnQuery> {\n const impl = syncedQueryImpl(name, fn, false);\n // oxlint-disable-next-line no-explicit-any\n const ret: any = (...args: TArg) => impl(undefined, args);\n ret.queryName = name;\n ret.parse = normalizeParser(parser);\n ret.takesContext = false;\n return ret;\n}\n\n/**\n * @deprecated Use {@link defineQuery} instead.\n */\nexport function syncedQueryWithContext<\n TName extends string,\n TContext,\n TArg extends ReadonlyJSONValue[],\n TReturnQuery extends AnyQuery,\n>(\n name: TName,\n parser: ParseFn<TArg> | HasParseFn<TArg> | undefined,\n fn: QueryFn<TContext, true, TArg, TReturnQuery>,\n): SyncedQuery<TName, TContext, true, TArg, TReturnQuery> {\n const impl = syncedQueryImpl(name, fn, true);\n // oxlint-disable-next-line no-explicit-any\n const ret: any = (context: TContext, ...args: TArg) => impl(context, args);\n ret.queryName = name;\n ret.parse = normalizeParser(parser);\n ret.takesContext = true;\n return ret;\n}\n\n/** @deprecated */\nfunction syncedQueryImpl<\n TName extends string,\n TContext,\n TArg extends ReadonlyJSONValue[],\n // oxlint-disable-next-line no-explicit-any\n>(name: TName, fn: any, takesContext: boolean) {\n return (context: TContext, args: TArg) => {\n const q = takesContext ? fn(context, ...args) : fn(...args);\n return asQueryInternals(q).nameAndArgs(name, args);\n };\n}\n\n/** @deprecated */\n\n// oxlint-disable-next-line no-explicit-any\ntype AnySyncedQuery = SyncedQuery<any, any, any, any, any>;\n\n/** @deprecated */\nexport function withValidation<F extends AnySyncedQuery>(\n fn: F,\n // oxlint-disable-next-line no-explicit-any\n): F extends SyncedQuery<infer N, infer C, any, any, infer R>\n ? SyncedQuery<N, C, true, ReadonlyJSONValue[], R>\n : F {\n // If we have a parse function this is a SyncedQuery\n if ('parse' in fn) {\n const {parse} = fn;\n if (!parse) {\n throw new Error('ret does not have a parse function defined');\n }\n // oxlint-disable-next-line no-explicit-any\n const ret: any = (context: unknown, ...args: unknown[]) => {\n let parsed;\n try {\n parsed = parse(args);\n } catch (error) {\n throw new QueryParseError({cause: error});\n }\n // oxlint-disable-next-line no-explicit-any\n return fn.takesContext ? fn(context, ...parsed) : (fn as any)(...parsed);\n };\n ret.queryName = fn.queryName;\n ret.parse = fn.parse;\n ret.takesContext = true;\n\n return ret;\n }\n\n // If we don't have a parse function, return the function as-is\n // (this shouldn't happen in practice)\n // oxlint-disable-next-line no-explicit-any\n return fn as any;\n}\n\n/** @deprecated */\nexport type ParseFn<T extends ReadonlyJSONValue[]> = (args: unknown[]) => T;\n\n/** @deprecated */\nexport type HasParseFn<T extends ReadonlyJSONValue[]> = {\n parse: ParseFn<T>;\n};\n\n/** @deprecated */\nexport type Parser<T extends ReadonlyJSONValue[]> = ParseFn<T> | HasParseFn<T>;\n\nexport type CustomQueryID = {\n name: string;\n args: ReadonlyArray<ReadonlyJSONValue>;\n};\n"],"mappings":";;;;AA4BA,SAAS,gBACP,QACwB;CACxB,IAAI,QAAQ;EACV,IAAI,WAAW,QACb,OAAO,OAAO,MAAM,KAAK,MAAM;EAEjC,OAAO;CACT;AAEF;;;;AAKA,SAAgB,YAKd,MACA,QACA,IACwD;CACxD,MAAM,OAAO,gBAAgB,MAAM,IAAI,KAAK;CAE5C,MAAM,OAAY,GAAG,SAAe,KAAK,KAAA,GAAW,IAAI;CACxD,IAAI,YAAY;CAChB,IAAI,QAAQ,gBAAgB,MAAM;CAClC,IAAI,eAAe;CACnB,OAAO;AACT;;;;AAKA,SAAgB,uBAMd,MACA,QACA,IACwD;CACxD,MAAM,OAAO,gBAAgB,MAAM,IAAI,IAAI;CAE3C,MAAM,OAAY,SAAmB,GAAG,SAAe,KAAK,SAAS,IAAI;CACzE,IAAI,YAAY;CAChB,IAAI,QAAQ,gBAAgB,MAAM;CAClC,IAAI,eAAe;CACnB,OAAO;AACT;;AAGA,SAAS,gBAKP,MAAa,IAAS,cAAuB;CAC7C,QAAQ,SAAmB,SAAe;EACxC,MAAM,IAAI,eAAe,GAAG,SAAS,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI;EAC1D,OAAO,iBAAiB,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI;CACnD;AACF;;AAQA,SAAgB,eACd,IAII;CAEJ,IAAI,WAAW,IAAI;EACjB,MAAM,EAAC,UAAS;EAChB,IAAI,CAAC,OACH,MAAM,IAAI,MAAM,4CAA4C;EAG9D,MAAM,OAAY,SAAkB,GAAG,SAAoB;GACzD,IAAI;GACJ,IAAI;IACF,SAAS,MAAM,IAAI;GACrB,SAAS,OAAO;IACd,MAAM,IAAI,gBAAgB,EAAC,OAAO,MAAK,CAAC;GAC1C;GAEA,OAAO,GAAG,eAAe,GAAG,SAAS,GAAG,MAAM,IAAK,GAAW,GAAG,MAAM;EACzE;EACA,IAAI,YAAY,GAAG;EACnB,IAAI,QAAQ,GAAG;EACf,IAAI,eAAe;EAEnB,OAAO;CACT;CAKA,OAAO;AACT"}
|
|
@@ -118,11 +118,12 @@ export declare abstract class QueryDelegateBase implements QueryDelegate {
|
|
|
118
118
|
onPipelinesReady(_attach: AttachPipeline): () => void;
|
|
119
119
|
abstract getSource(name: string): Source | undefined;
|
|
120
120
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
121
|
+
/**
|
|
122
|
+
* The ID a materialized query is registered with the server under: the hash of
|
|
123
|
+
* its name and args for a named query, of its AST otherwise.
|
|
124
|
+
*/
|
|
125
|
+
export declare function queryIDOf({ ast, customQueryID, }: {
|
|
126
|
+
readonly ast: AST;
|
|
127
|
+
readonly customQueryID: CustomQueryID | undefined;
|
|
128
|
+
}): string;
|
|
128
129
|
//# sourceMappingURL=query-delegate-base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-delegate-base.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-delegate-base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"query-delegate-base.d.ts","sourceRoot":"","sources":["../../../../../zql/src/query/query-delegate-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import { resolver } from "../../../shared/src/resolver.js";
|
|
1
2
|
import { hashNameAndArgs } from "../../../zero-protocol/src/query-hash-visitor.js";
|
|
2
3
|
import { asQueryInternals } from "./query-internals.js";
|
|
3
4
|
import { hashOfAST } from "../../../zero-protocol/src/query-hash.js";
|
|
4
|
-
import { buildPipeline } from "../builder/builder.js";
|
|
5
|
+
import { buildPipeline, groupViewInput } from "../builder/builder.js";
|
|
5
6
|
import { ArrayView } from "../ivm/array-view.js";
|
|
6
7
|
import { DeferredInput } from "../ivm/deferred-input.js";
|
|
7
8
|
import { MemoryStorage } from "../ivm/memory-storage.js";
|
|
8
9
|
import "./ttl.js";
|
|
9
|
-
import { resolver } from "@rocicorp/resolver";
|
|
10
10
|
//#region ../zql/src/query/query-delegate-base.ts
|
|
11
11
|
/**
|
|
12
12
|
* Base class that provides default implementations for common QueryDelegate methods.
|
|
@@ -181,11 +181,18 @@ function preloadImpl(query, delegate, options) {
|
|
|
181
181
|
cached
|
|
182
182
|
};
|
|
183
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* The ID a materialized query is registered with the server under: the hash of
|
|
186
|
+
* its name and args for a named query, of its AST otherwise.
|
|
187
|
+
*/
|
|
188
|
+
function queryIDOf({ ast, customQueryID }) {
|
|
189
|
+
return customQueryID ? hashNameAndArgs(customQueryID.name, customQueryID.args) : hashOfAST(ast);
|
|
190
|
+
}
|
|
184
191
|
function materializeImpl(query, delegate, factory = arrayViewFactory, options) {
|
|
185
192
|
let ttl = options?.ttl ?? 3e5;
|
|
186
193
|
const qi = asQueryInternals(query);
|
|
187
194
|
const { ast, format, customQueryID } = qi;
|
|
188
|
-
const queryID =
|
|
195
|
+
const queryID = queryIDOf(qi);
|
|
189
196
|
const queryCompleteResolver = resolver();
|
|
190
197
|
const deferPipeline = !delegate.pipelinesReady;
|
|
191
198
|
let attached = !deferPipeline;
|
|
@@ -222,7 +229,7 @@ function materializeImpl(query, delegate, factory = arrayViewFactory, options) {
|
|
|
222
229
|
destroyed = true;
|
|
223
230
|
removePendingAttach?.();
|
|
224
231
|
removePendingAttach = void 0;
|
|
225
|
-
|
|
232
|
+
viewInput.destroy();
|
|
226
233
|
removeCommitObserver?.();
|
|
227
234
|
removeAddedQuery();
|
|
228
235
|
};
|
|
@@ -230,7 +237,8 @@ function materializeImpl(query, delegate, factory = arrayViewFactory, options) {
|
|
|
230
237
|
const removeAddedQuery = customQueryID ? delegate.addCustomQuery(ast, customQueryID, ttl, gotCallback) : delegate.addServerQuery(ast, ttl, gotCallback);
|
|
231
238
|
const deferred = deferPipeline ? newDeferredInput(ast, delegate, queryID) : void 0;
|
|
232
239
|
const input = deferred ?? buildPipeline(ast, delegate, queryID);
|
|
233
|
-
const
|
|
240
|
+
const viewInput = ast.groupBy ? groupViewInput(input, ast, delegate) : input;
|
|
241
|
+
const view = delegate.batchViewUpdates(() => (factory ?? arrayViewFactory)(query, viewInput, format, onDestroy, (cb) => {
|
|
234
242
|
removeCommitObserver = delegate.onTransactionCommit(cb);
|
|
235
243
|
}, queryComplete || queryCompleteResolver.promise, updateTTL));
|
|
236
244
|
if (!deferred) delegate.addMetric("query-materialization-client", performance.now() - t0, queryID);
|
|
@@ -295,6 +303,6 @@ function arrayViewFactory(_query, input, format, onDestroy, onTransactionCommit,
|
|
|
295
303
|
return v;
|
|
296
304
|
}
|
|
297
305
|
//#endregion
|
|
298
|
-
export { QueryDelegateBase };
|
|
306
|
+
export { QueryDelegateBase, queryIDOf };
|
|
299
307
|
|
|
300
308
|
//# sourceMappingURL=query-delegate-base.js.map
|