@rocicorp/zero 1.6.0-canary.0 → 1.6.0-canary.10
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/README.md +28 -3
- package/out/_virtual/_@oxc-project_runtime@0.130.0/helpers/usingCtx.js +57 -0
- package/out/_virtual/__vite-optional-peer-dep_pg-native_pg.js +13 -0
- package/out/_virtual/__vite-optional-peer-dep_pg-native_pg.js.map +1 -0
- package/out/_virtual/_rolldown/runtime.js +12 -1
- package/out/node_modules/.pnpm/@opentelemetry_semantic-conventions@1.41.1/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js +12 -0
- package/out/node_modules/.pnpm/@opentelemetry_semantic-conventions@1.41.1/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js.map +1 -0
- package/out/node_modules/.pnpm/pg-cloudflare@1.3.0/node_modules/pg-cloudflare/dist/empty.js +11 -0
- package/out/node_modules/.pnpm/pg-cloudflare@1.3.0/node_modules/pg-cloudflare/dist/empty.js.map +1 -0
- package/out/node_modules/.pnpm/pg-connection-string@2.12.0/node_modules/pg-connection-string/index.js +130 -0
- package/out/node_modules/.pnpm/pg-connection-string@2.12.0/node_modules/pg-connection-string/index.js.map +1 -0
- package/out/node_modules/.pnpm/pg-int8@1.0.1/node_modules/pg-int8/index.js +62 -0
- package/out/node_modules/.pnpm/pg-int8@1.0.1/node_modules/pg-int8/index.js.map +1 -0
- package/out/node_modules/.pnpm/pg-pool@3.13.0_pg@8.20.0/node_modules/pg-pool/index.js +353 -0
- package/out/node_modules/.pnpm/pg-pool@3.13.0_pg@8.20.0/node_modules/pg-pool/index.js.map +1 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/buffer-reader.js +60 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/buffer-reader.js.map +1 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/buffer-writer.js +81 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/buffer-writer.js.map +1 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/index.js +35 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/index.js.map +1 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/messages.js +167 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/messages.js.map +1 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/parser.js +288 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/parser.js.map +1 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/serializer.js +177 -0
- package/out/node_modules/.pnpm/pg-protocol@1.13.0/node_modules/pg-protocol/dist/serializer.js.map +1 -0
- package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/index.js +46 -0
- package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/index.js.map +1 -0
- package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/arrayParser.js +16 -0
- package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/arrayParser.js.map +1 -0
- package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/binaryParsers.js +165 -0
- package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/binaryParsers.js.map +1 -0
- package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/builtins.js +81 -0
- package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/builtins.js.map +1 -0
- package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/textParsers.js +167 -0
- package/out/node_modules/.pnpm/pg-types@2.2.0/node_modules/pg-types/lib/textParsers.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/esm/index.js +19 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/esm/index.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/client.js +508 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/client.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/connection-parameters.js +104 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/connection-parameters.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/connection.js +160 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/connection.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/cert-signatures.js +97 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/cert-signatures.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/sasl.js +131 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/sasl.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils-legacy.js +39 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils-legacy.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils-webcrypto.js +89 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils-webcrypto.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils.js +13 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/crypto/utils.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/defaults.js +46 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/defaults.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/index.js +71 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/index.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/client.js +226 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/client.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/index.js +11 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/index.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/query.js +117 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/native/query.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/query.js +151 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/query.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/result.js +76 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/result.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/stream.js +73 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/stream.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/type-overrides.js +35 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/type-overrides.js.map +1 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/utils.js +118 -0
- package/out/node_modules/.pnpm/pg@8.20.0/node_modules/pg/lib/utils.js.map +1 -0
- package/out/node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/helper.js +147 -0
- package/out/node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/helper.js.map +1 -0
- package/out/node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/index.js +21 -0
- package/out/node_modules/.pnpm/pgpass@1.0.5/node_modules/pgpass/lib/index.js.map +1 -0
- package/out/node_modules/.pnpm/postgres-array@2.0.0/node_modules/postgres-array/index.js +84 -0
- package/out/node_modules/.pnpm/postgres-array@2.0.0/node_modules/postgres-array/index.js.map +1 -0
- package/out/node_modules/.pnpm/postgres-bytea@1.0.1/node_modules/postgres-bytea/index.js +28 -0
- package/out/node_modules/.pnpm/postgres-bytea@1.0.1/node_modules/postgres-bytea/index.js.map +1 -0
- package/out/node_modules/.pnpm/postgres-date@1.0.7/node_modules/postgres-date/index.js +65 -0
- package/out/node_modules/.pnpm/postgres-date@1.0.7/node_modules/postgres-date/index.js.map +1 -0
- package/out/node_modules/.pnpm/postgres-interval@1.2.0/node_modules/postgres-interval/index.js +107 -0
- package/out/node_modules/.pnpm/postgres-interval@1.2.0/node_modules/postgres-interval/index.js.map +1 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.development.js +696 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js +44 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js.map +1 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.development.js +1585 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.development.js.map +1 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js +329 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js.map +1 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/index.js +13 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/index.js.map +1 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js +13 -0
- package/out/node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js.map +1 -0
- package/out/node_modules/.pnpm/solid-js@1.9.13/node_modules/solid-js/dist/server.js +131 -0
- package/out/node_modules/.pnpm/solid-js@1.9.13/node_modules/solid-js/dist/server.js.map +1 -0
- package/out/node_modules/.pnpm/solid-js@1.9.13/node_modules/solid-js/store/dist/server.js +96 -0
- package/out/node_modules/.pnpm/solid-js@1.9.13/node_modules/solid-js/store/dist/server.js.map +1 -0
- package/out/node_modules/.pnpm/split2@4.2.0/node_modules/split2/index.js +95 -0
- package/out/node_modules/.pnpm/split2@4.2.0/node_modules/split2/index.js.map +1 -0
- package/out/node_modules/.pnpm/xtend@4.0.2/node_modules/xtend/mutable.js +18 -0
- package/out/node_modules/.pnpm/xtend@4.0.2/node_modules/xtend/mutable.js.map +1 -0
- package/out/packages/analyze-query/src/analyze-cli.js +288 -0
- package/out/packages/analyze-query/src/analyze-cli.js.map +1 -0
- package/out/packages/analyze-query/src/bin-analyze.js +282 -0
- package/out/packages/analyze-query/src/bin-analyze.js.map +1 -0
- package/out/packages/analyze-query/src/bin-transform.js.map +1 -0
- package/out/packages/ast-to-zql/src/ast-to-zql.js.map +1 -0
- package/out/packages/ast-to-zql/src/bin.js.map +1 -0
- package/out/packages/ast-to-zql/src/format.js.map +1 -0
- package/out/packages/datadog/src/datadog-log-sink.js.map +1 -0
- package/out/packages/otel/src/enabled.js.map +1 -0
- package/out/packages/otel/src/log-options.js.map +1 -0
- package/out/packages/otel/src/maybe-time.js.map +1 -0
- package/out/packages/otel/src/span.js.map +1 -0
- package/out/packages/otel/src/version.js.map +1 -0
- package/out/packages/replicache/src/async-iterable-to-array.js.map +1 -0
- package/out/packages/replicache/src/bg-interval.js.map +1 -0
- package/out/packages/replicache/src/btree/diff.js.map +1 -0
- package/out/packages/replicache/src/btree/node.js.map +1 -0
- package/out/packages/replicache/src/btree/read.js.map +1 -0
- package/out/packages/replicache/src/btree/splice.js.map +1 -0
- package/out/packages/replicache/src/btree/write.js +191 -0
- package/out/packages/replicache/src/btree/write.js.map +1 -0
- package/out/packages/replicache/src/call-default-fetch.js.map +1 -0
- package/out/packages/replicache/src/connection-loop-delegates.js.map +1 -0
- package/out/packages/replicache/src/connection-loop.js.map +1 -0
- package/out/packages/replicache/src/cookies.js.map +1 -0
- package/out/packages/replicache/src/dag/chunk.js.map +1 -0
- package/out/packages/replicache/src/dag/gc.js.map +1 -0
- package/out/packages/replicache/src/dag/key.js.map +1 -0
- package/out/packages/replicache/src/dag/lazy-store.js.map +1 -0
- package/out/packages/replicache/src/dag/store-impl.js +157 -0
- package/out/packages/replicache/src/dag/store-impl.js.map +1 -0
- package/out/packages/replicache/src/dag/store.js.map +1 -0
- package/out/packages/replicache/src/dag/visitor.js.map +1 -0
- package/out/packages/replicache/src/db/commit.js.map +1 -0
- package/out/packages/replicache/src/db/index.js.map +1 -0
- package/out/packages/replicache/src/db/read.js.map +1 -0
- package/out/packages/replicache/src/db/rebase.js.map +1 -0
- package/out/packages/replicache/src/db/write.js.map +1 -0
- package/out/packages/replicache/src/deleted-clients.js.map +1 -0
- package/out/packages/replicache/src/error-responses.js.map +1 -0
- package/out/packages/replicache/src/frozen-json.js.map +1 -0
- package/out/packages/replicache/src/get-default-puller.js.map +1 -0
- package/out/packages/replicache/src/get-default-pusher.js.map +1 -0
- package/out/packages/replicache/src/get-kv-store-provider.js.map +1 -0
- package/out/packages/replicache/src/hash.js.map +1 -0
- package/out/packages/replicache/src/http-request-info.js.map +1 -0
- package/out/packages/replicache/src/index-defs.js.map +1 -0
- package/out/packages/replicache/src/kv/expo-sqlite/store.js +57 -0
- package/out/packages/replicache/src/kv/expo-sqlite/store.js.map +1 -0
- package/out/packages/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
- package/out/packages/replicache/src/kv/idb-store.js.map +1 -0
- package/out/packages/replicache/src/kv/mem-store.js.map +1 -0
- package/out/packages/replicache/src/kv/op-sqlite/store.js +63 -0
- package/out/packages/replicache/src/kv/op-sqlite/store.js.map +1 -0
- package/out/packages/replicache/src/kv/op-sqlite/types.js.map +1 -0
- package/out/packages/replicache/src/kv/read-impl.js.map +1 -0
- package/out/packages/replicache/src/kv/sqlite-store.js +301 -0
- package/out/packages/replicache/src/kv/sqlite-store.js.map +1 -0
- package/out/packages/replicache/src/kv/throw-if-closed.js +23 -0
- package/out/packages/replicache/src/kv/throw-if-closed.js.map +1 -0
- package/out/packages/replicache/src/kv/write-impl-base.js.map +1 -0
- package/out/packages/replicache/src/kv/write-impl.js.map +1 -0
- package/out/packages/replicache/src/lazy.js.map +1 -0
- package/out/packages/replicache/src/log-options.js.map +1 -0
- package/out/packages/replicache/src/make-idb-name.js.map +1 -0
- package/out/packages/replicache/src/new-client-channel.js.map +1 -0
- package/out/packages/replicache/src/on-persist-channel.js.map +1 -0
- package/out/packages/replicache/src/patch-operation.js.map +1 -0
- package/out/packages/replicache/src/pending-mutations.js.map +1 -0
- package/out/packages/replicache/src/persist/client-gc.js.map +1 -0
- package/out/packages/replicache/src/persist/client-group-gc.js.map +1 -0
- package/out/packages/replicache/src/persist/client-groups.js +150 -0
- package/out/packages/replicache/src/persist/client-groups.js.map +1 -0
- package/out/packages/replicache/src/persist/clients.js +289 -0
- package/out/packages/replicache/src/persist/clients.js.map +1 -0
- package/out/packages/replicache/src/persist/collect-idb-databases.js.map +1 -0
- package/out/packages/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
- package/out/packages/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
- package/out/packages/replicache/src/persist/heartbeat.js.map +1 -0
- package/out/packages/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
- package/out/packages/replicache/src/persist/idb-databases-store.js.map +1 -0
- package/out/packages/replicache/src/persist/make-client-id.js.map +1 -0
- package/out/packages/replicache/src/persist/persist.js +124 -0
- package/out/packages/replicache/src/persist/persist.js.map +1 -0
- package/out/packages/replicache/src/persist/refresh.js.map +1 -0
- package/out/packages/replicache/src/process-scheduler.js.map +1 -0
- package/out/packages/replicache/src/pusher.js.map +1 -0
- package/out/packages/replicache/src/replicache-impl.js.map +1 -0
- package/out/packages/replicache/src/report-error.js.map +1 -0
- package/out/packages/replicache/src/request-idle.js.map +1 -0
- package/out/packages/replicache/src/scan-iterator.js.map +1 -0
- package/out/packages/replicache/src/scan-options.js.map +1 -0
- package/out/packages/replicache/src/set-interval-with-signal.js.map +1 -0
- package/out/packages/replicache/src/subscriptions.js.map +1 -0
- package/out/packages/replicache/src/sync/diff.js.map +1 -0
- package/out/packages/replicache/src/sync/ids.js.map +1 -0
- package/out/packages/replicache/src/sync/patch.js.map +1 -0
- package/out/packages/replicache/src/sync/pull-error.js.map +1 -0
- package/out/packages/replicache/src/sync/pull.js +169 -0
- package/out/packages/replicache/src/sync/pull.js.map +1 -0
- package/out/packages/replicache/src/sync/push.js.map +1 -0
- package/out/packages/replicache/src/sync/request-id.js.map +1 -0
- package/out/packages/replicache/src/sync/sync-head-name.js.map +1 -0
- package/out/packages/replicache/src/to-error.js.map +1 -0
- package/out/packages/replicache/src/transaction-closed-error.js.map +1 -0
- package/out/packages/replicache/src/transactions.js.map +1 -0
- package/out/packages/replicache/src/version.js.map +1 -0
- package/out/packages/replicache/src/with-transactions.js.map +1 -0
- package/out/packages/shared/src/abort-error.js.map +1 -0
- package/out/packages/shared/src/arrays.js.map +1 -0
- package/out/packages/shared/src/asserts.js.map +1 -0
- package/out/packages/shared/src/bigint-json.js.map +1 -0
- package/out/packages/shared/src/binary-search.js.map +1 -0
- package/out/packages/shared/src/broadcast-channel.js.map +1 -0
- package/out/packages/shared/src/browser-env.js.map +1 -0
- package/out/packages/shared/src/btree-set.js.map +1 -0
- package/out/packages/shared/src/cache.js.map +1 -0
- package/out/packages/shared/src/centroid.js.map +1 -0
- package/out/packages/shared/src/config.js.map +1 -0
- package/out/packages/shared/src/custom-key-map.js.map +1 -0
- package/out/packages/shared/src/custom-key-set.js.map +1 -0
- package/out/packages/shared/src/deep-clone.js.map +1 -0
- package/out/packages/shared/src/deep-merge.js.map +1 -0
- package/out/packages/shared/src/document-visible.js.map +1 -0
- package/out/packages/shared/src/dotenv.js.map +1 -0
- package/out/packages/shared/src/error.js.map +1 -0
- package/out/packages/shared/src/has-own.js.map +1 -0
- package/out/packages/shared/src/hash.js.map +1 -0
- package/out/packages/shared/src/iterables.js.map +1 -0
- package/out/packages/shared/src/json-schema.js.map +1 -0
- package/out/packages/shared/src/json.js.map +1 -0
- package/out/packages/shared/src/logging-test-utils.js.map +1 -0
- package/out/packages/shared/src/logging.js.map +1 -0
- package/out/packages/shared/src/map.js +39 -0
- package/out/packages/shared/src/map.js.map +1 -0
- package/out/packages/shared/src/must.js.map +1 -0
- package/out/packages/shared/src/navigator.js.map +1 -0
- package/out/packages/shared/src/object-traversal.js.map +1 -0
- package/out/packages/shared/src/objects.js.map +1 -0
- package/out/packages/shared/src/options.js.map +1 -0
- package/out/packages/shared/src/parse-big-int.js.map +1 -0
- package/out/packages/shared/src/promise-race.js.map +1 -0
- package/out/packages/shared/src/queue.js +120 -0
- package/out/packages/shared/src/queue.js.map +1 -0
- package/out/packages/shared/src/rand.js.map +1 -0
- package/out/packages/shared/src/random-uint64.js.map +1 -0
- package/out/packages/shared/src/random-values.js.map +1 -0
- package/out/packages/shared/src/record-proxy.js.map +1 -0
- package/out/packages/shared/src/resolved-promises.js.map +1 -0
- package/out/packages/shared/src/ring-buffer.js +109 -0
- package/out/packages/shared/src/ring-buffer.js.map +1 -0
- package/out/packages/shared/src/sentinels.js.map +1 -0
- package/out/packages/shared/src/set-utils.js.map +1 -0
- package/out/packages/shared/src/size-of-value.js.map +1 -0
- package/out/packages/shared/src/sleep.js.map +1 -0
- package/out/packages/shared/src/sorted-entries.js.map +1 -0
- package/out/packages/shared/src/string-compare.js.map +1 -0
- package/out/packages/shared/src/subscribable.js.map +1 -0
- package/out/packages/shared/src/tdigest-schema.js.map +1 -0
- package/out/packages/shared/src/tdigest.js.map +1 -0
- package/out/packages/shared/src/valita.js +172 -0
- package/out/packages/shared/src/valita.js.map +1 -0
- package/out/packages/z2s/src/compiler.js.map +1 -0
- package/out/packages/z2s/src/sql.js.map +1 -0
- package/out/packages/zero/package.js +205 -0
- package/out/packages/zero/package.js.map +1 -0
- package/out/packages/zero-cache/src/auth/auth.js.map +1 -0
- package/out/packages/zero-cache/src/auth/jwt.js.map +1 -0
- package/out/packages/zero-cache/src/auth/load-permissions.js.map +1 -0
- package/out/packages/zero-cache/src/auth/read-authorizer.js.map +1 -0
- package/out/packages/zero-cache/src/auth/write-authorizer.js.map +1 -0
- package/out/packages/zero-cache/src/config/network.js.map +1 -0
- package/out/packages/zero-cache/src/config/normalize.js.map +1 -0
- package/out/packages/zero-cache/src/config/server-context.js.map +1 -0
- package/out/packages/zero-cache/src/config/zero-config.js +921 -0
- package/out/packages/zero-cache/src/config/zero-config.js.map +1 -0
- package/out/packages/zero-cache/src/custom/fetch.js.map +1 -0
- package/out/packages/zero-cache/src/custom-queries/transform-query.js.map +1 -0
- package/out/packages/zero-cache/src/db/create.js.map +1 -0
- package/out/packages/zero-cache/src/db/delete-lite-db.js.map +1 -0
- package/out/packages/zero-cache/src/db/lite-tables.js.map +1 -0
- package/out/packages/zero-cache/src/db/migration-lite.js +166 -0
- package/out/packages/zero-cache/src/db/migration-lite.js.map +1 -0
- package/out/packages/zero-cache/src/db/migration.js +139 -0
- package/out/packages/zero-cache/src/db/migration.js.map +1 -0
- package/out/packages/zero-cache/src/db/mode-enum.js.map +1 -0
- package/out/packages/zero-cache/src/db/pg-copy-binary.js.map +1 -0
- package/out/packages/zero-cache/src/db/pg-copy.js.map +1 -0
- package/out/packages/zero-cache/src/db/pg-to-lite.js.map +1 -0
- package/out/packages/zero-cache/src/db/pg-type-parser.js.map +1 -0
- package/out/packages/zero-cache/src/db/run-transaction.js.map +1 -0
- package/out/packages/zero-cache/src/db/specs.js.map +1 -0
- package/out/packages/zero-cache/src/db/statements.js.map +1 -0
- package/out/packages/zero-cache/src/db/transaction-pool.js.map +1 -0
- package/out/packages/zero-cache/src/db/warmup.js.map +1 -0
- package/out/packages/zero-cache/src/observability/events.js.map +1 -0
- package/out/packages/zero-cache/src/observability/metrics.js.map +1 -0
- package/out/packages/zero-cache/src/scripts/decommission.js.map +1 -0
- package/out/packages/zero-cache/src/scripts/deploy-permissions.js.map +1 -0
- package/out/packages/zero-cache/src/scripts/permissions.js.map +1 -0
- package/out/packages/zero-cache/src/server/anonymous-otel-start.js +306 -0
- package/out/packages/zero-cache/src/server/anonymous-otel-start.js.map +1 -0
- package/out/packages/zero-cache/src/server/inspector-delegate.js.map +1 -0
- package/out/packages/zero-cache/src/server/logging.js.map +1 -0
- package/out/packages/zero-cache/src/server/otel-diag-logger.js.map +1 -0
- package/out/packages/zero-cache/src/server/otel-log-sink.js.map +1 -0
- package/out/packages/zero-cache/src/server/otel-start.js +53 -0
- package/out/packages/zero-cache/src/server/otel-start.js.map +1 -0
- package/out/packages/zero-cache/src/server/priority-op.js.map +1 -0
- package/out/packages/zero-cache/src/server/runner/main.js +11 -0
- package/out/packages/zero-cache/src/server/runner/main.js.map +1 -0
- package/out/packages/zero-cache/src/server/runner/run-worker.js.map +1 -0
- package/out/packages/zero-cache/src/server/runner/runtime.js.map +1 -0
- package/out/packages/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -0
- package/out/packages/zero-cache/src/server/worker-dispatcher.js.map +1 -0
- package/out/packages/zero-cache/src/server/worker-urls.js.map +1 -0
- package/out/packages/zero-cache/src/services/analyze.js +72 -0
- package/out/packages/zero-cache/src/services/analyze.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/custom/change-source.js +176 -0
- package/out/packages/zero-cache/src/services/change-source/custom/change-source.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/backfill-stream.js +197 -0
- package/out/packages/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/change-source.js +929 -0
- package/out/packages/zero-cache/src/services/change-source/pg/change-source.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/decommission.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/initial-sync.js +553 -0
- package/out/packages/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/lsn.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/replication-slots.js +162 -0
- package/out/packages/zero-cache/src/services/change-source/pg/replication-slots.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/schema/ddl.js +334 -0
- package/out/packages/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/schema/init.js +155 -0
- package/out/packages/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/schema/shard.js +330 -0
- package/out/packages/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/protocol/current/data.js +194 -0
- package/out/packages/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-source/protocol/current.js +56 -0
- package/out/packages/zero-cache/src/services/change-source/protocol/current.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/broadcast.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/change-streamer-http.js +158 -0
- package/out/packages/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/forwarder.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/schema/init.js +70 -0
- package/out/packages/zero-cache/src/services/change-streamer/schema/init.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/schema/tables.js +191 -0
- package/out/packages/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/snapshot.js +42 -0
- package/out/packages/zero-cache/src/services/change-streamer/snapshot.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/storer.js.map +1 -0
- package/out/packages/zero-cache/src/services/change-streamer/subscriber.js.map +1 -0
- package/out/packages/zero-cache/src/services/heapz.js.map +1 -0
- package/out/packages/zero-cache/src/services/http-service.js.map +1 -0
- package/out/packages/zero-cache/src/services/life-cycle.js +200 -0
- package/out/packages/zero-cache/src/services/life-cycle.js.map +1 -0
- package/out/packages/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -0
- package/out/packages/zero-cache/src/services/litestream/commands.js.map +1 -0
- package/out/packages/zero-cache/src/services/mutagen/error.js.map +1 -0
- package/out/packages/zero-cache/src/services/mutagen/mutagen.js.map +1 -0
- package/out/packages/zero-cache/src/services/mutagen/pusher.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/change-processor.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/incremental-sync.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/notifier.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/replication-status.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/replicator.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/reporter/recorder.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/reporter/report-schema.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/schema/change-log.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/schema/constants.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/write-worker-client.js.map +1 -0
- package/out/packages/zero-cache/src/services/replicator/write-worker.js.map +1 -0
- package/out/packages/zero-cache/src/services/run-ast.js +88 -0
- package/out/packages/zero-cache/src/services/run-ast.js.map +1 -0
- package/out/packages/zero-cache/src/services/runner.js.map +1 -0
- package/out/packages/zero-cache/src/services/running-state.js +139 -0
- package/out/packages/zero-cache/src/services/running-state.js.map +1 -0
- package/out/packages/zero-cache/src/services/shadow-sync/shadow-sync-service.js +57 -0
- package/out/packages/zero-cache/src/services/shadow-sync/shadow-sync-service.js.map +1 -0
- package/out/packages/zero-cache/src/services/statz.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/client-handler.js +270 -0
- package/out/packages/zero-cache/src/services/view-syncer/client-handler.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/client-schema.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/connection-context-manager.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/cvr-purger.js +110 -0
- package/out/packages/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/cvr.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/inspect-handler.js +102 -0
- package/out/packages/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/pipeline-driver.js +628 -0
- package/out/packages/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/row-set-signature.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/schema/init.js +142 -0
- package/out/packages/zero-cache/src/services/view-syncer/schema/init.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/schema/types.js +278 -0
- package/out/packages/zero-cache/src/services/view-syncer/schema/types.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/tracer.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -0
- package/out/packages/zero-cache/src/services/view-syncer/view-syncer.js +1245 -0
- package/out/packages/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -0
- package/out/packages/zero-cache/src/types/configuration-error.js +11 -0
- package/out/packages/zero-cache/src/types/configuration-error.js.map +1 -0
- package/out/packages/zero-cache/src/types/error-with-level.js.map +1 -0
- package/out/packages/zero-cache/src/types/http.js.map +1 -0
- package/out/packages/zero-cache/src/types/lexi-version.js.map +1 -0
- package/out/packages/zero-cache/src/types/lite.js.map +1 -0
- package/out/packages/zero-cache/src/types/names.js.map +1 -0
- package/out/packages/zero-cache/src/types/pg-data-type.js.map +1 -0
- package/out/packages/zero-cache/src/types/pg-types.js.map +1 -0
- package/out/packages/zero-cache/src/types/pg-versions.js.map +1 -0
- package/out/packages/zero-cache/src/types/pg.js +222 -0
- package/out/packages/zero-cache/src/types/pg.js.map +1 -0
- package/out/packages/zero-cache/src/types/processes.js.map +1 -0
- package/out/packages/zero-cache/src/types/profiler.js.map +1 -0
- package/out/packages/zero-cache/src/types/row-key.js.map +1 -0
- package/out/packages/zero-cache/src/types/shards.js.map +1 -0
- package/out/packages/zero-cache/src/types/sql.js.map +1 -0
- package/out/packages/zero-cache/src/types/state-version.js.map +1 -0
- package/out/packages/zero-cache/src/types/streams.js.map +1 -0
- package/out/packages/zero-cache/src/types/strings.js.map +1 -0
- package/out/packages/zero-cache/src/types/subscription.js.map +1 -0
- package/out/packages/zero-cache/src/types/timeout.js.map +1 -0
- package/out/packages/zero-cache/src/types/url-params.js.map +1 -0
- package/out/packages/zero-cache/src/types/websocket-handoff.js.map +1 -0
- package/out/packages/zero-cache/src/types/ws.js.map +1 -0
- package/out/packages/zero-cache/src/workers/connect-params.js.map +1 -0
- package/out/packages/zero-cache/src/workers/connection.js +229 -0
- package/out/packages/zero-cache/src/workers/connection.js.map +1 -0
- package/out/packages/zero-cache/src/workers/mutator.js.map +1 -0
- package/out/packages/zero-cache/src/workers/replicator.js.map +1 -0
- package/out/packages/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -0
- package/out/packages/zero-cache/src/workers/syncer.js.map +1 -0
- package/out/packages/zero-client/src/client/active-clients-manager.js.map +1 -0
- package/out/packages/zero-client/src/client/client-error-kind-enum.js.map +1 -0
- package/out/packages/zero-client/src/client/connection-manager.js +296 -0
- package/out/packages/zero-client/src/client/connection-manager.js.map +1 -0
- package/out/packages/zero-client/src/client/connection-status-enum.js +20 -0
- package/out/packages/zero-client/src/client/connection-status-enum.js.map +1 -0
- package/out/packages/zero-client/src/client/connection.js.map +1 -0
- package/out/packages/zero-client/src/client/context.js.map +1 -0
- package/out/packages/zero-client/src/client/crud-impl.js +61 -0
- package/out/packages/zero-client/src/client/crud-impl.js.map +1 -0
- package/out/packages/zero-client/src/client/crud.js.map +1 -0
- package/out/packages/zero-client/src/client/custom.js +64 -0
- package/out/packages/zero-client/src/client/custom.js.map +1 -0
- package/out/packages/zero-client/src/client/delete-clients-manager.js.map +1 -0
- package/out/packages/zero-client/src/client/enable-analytics.js.map +1 -0
- package/out/packages/zero-client/src/client/error.js.map +1 -0
- package/out/packages/zero-client/src/client/http-string.js.map +1 -0
- package/out/packages/zero-client/src/client/inspector/client-group.js.map +1 -0
- package/out/packages/zero-client/src/client/inspector/client.js.map +1 -0
- package/out/packages/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
- package/out/packages/zero-client/src/client/inspector/inspector.js.map +1 -0
- package/out/packages/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
- package/out/packages/zero-client/src/client/inspector/query.js.map +1 -0
- package/out/packages/zero-client/src/client/ivm-branch.js.map +1 -0
- package/out/packages/zero-client/src/client/keys.js.map +1 -0
- package/out/packages/zero-client/src/client/log-options.js.map +1 -0
- package/out/packages/zero-client/src/client/make-mutate-property.js.map +1 -0
- package/out/packages/zero-client/src/client/make-replicache-mutators.js.map +1 -0
- package/out/packages/zero-client/src/client/metric-name-enum.js.map +1 -0
- package/out/packages/zero-client/src/client/metrics.js.map +1 -0
- package/out/packages/zero-client/src/client/mutation-tracker.js.map +1 -0
- package/out/packages/zero-client/src/client/mutator-proxy.js.map +1 -0
- package/out/packages/zero-client/src/client/options.js.map +1 -0
- package/out/packages/zero-client/src/client/query-manager.js.map +1 -0
- package/out/packages/zero-client/src/client/reload-error-handler.js.map +1 -0
- package/out/packages/zero-client/src/client/server-option.js.map +1 -0
- package/out/packages/zero-client/src/client/update-needed-reason-type-enum.js +27 -0
- package/out/packages/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
- package/out/packages/zero-client/src/client/version.js +9 -0
- package/out/packages/zero-client/src/client/version.js.map +1 -0
- package/out/packages/zero-client/src/client/zero-poke-handler.js.map +1 -0
- package/out/packages/zero-client/src/client/zero-rep.js.map +1 -0
- package/out/packages/zero-client/src/client/zero.js +1469 -0
- package/out/packages/zero-client/src/client/zero.js.map +1 -0
- package/out/packages/zero-client/src/util/nanoid.js.map +1 -0
- package/out/packages/zero-protocol/src/analyze-query-result.js +123 -0
- package/out/packages/zero-protocol/src/analyze-query-result.js.map +1 -0
- package/out/packages/zero-protocol/src/application-error.js.map +1 -0
- package/out/packages/zero-protocol/src/ast.js.map +1 -0
- package/out/packages/zero-protocol/src/change-desired-queries.js +13 -0
- package/out/packages/zero-protocol/src/change-desired-queries.js.map +1 -0
- package/out/packages/zero-protocol/src/client-schema.js.map +1 -0
- package/out/packages/zero-protocol/src/close-connection.js.map +1 -0
- package/out/packages/zero-protocol/src/connect.js +54 -0
- package/out/packages/zero-protocol/src/connect.js.map +1 -0
- package/out/packages/zero-protocol/src/custom-queries.js.map +1 -0
- package/out/packages/zero-protocol/src/data.js.map +1 -0
- package/out/packages/zero-protocol/src/delete-clients.js.map +1 -0
- package/out/packages/zero-protocol/src/down.js.map +1 -0
- package/out/packages/zero-protocol/src/error-kind-enum.js.map +1 -0
- package/out/packages/zero-protocol/src/error-origin-enum.js.map +1 -0
- package/out/packages/zero-protocol/src/error-reason-enum.js.map +1 -0
- package/out/packages/zero-protocol/src/error.js +91 -0
- package/out/packages/zero-protocol/src/error.js.map +1 -0
- package/out/packages/zero-protocol/src/inspect-down.js.map +1 -0
- package/out/packages/zero-protocol/src/inspect-up.js +35 -0
- package/out/packages/zero-protocol/src/inspect-up.js.map +1 -0
- package/out/packages/zero-protocol/src/mutate-server.js.map +1 -0
- package/out/packages/zero-protocol/src/mutation-id.js.map +1 -0
- package/out/packages/zero-protocol/src/mutation-type-enum.js.map +1 -0
- package/out/packages/zero-protocol/src/mutation.js.map +1 -0
- package/out/packages/zero-protocol/src/mutations-patch.js.map +1 -0
- package/out/packages/zero-protocol/src/ping.js.map +1 -0
- package/out/packages/zero-protocol/src/poke.js +63 -0
- package/out/packages/zero-protocol/src/poke.js.map +1 -0
- package/out/packages/zero-protocol/src/pong.js.map +1 -0
- package/out/packages/zero-protocol/src/primary-key.js.map +1 -0
- package/out/packages/zero-protocol/src/protocol-version.js.map +1 -0
- package/out/packages/zero-protocol/src/pull.js.map +1 -0
- package/out/packages/zero-protocol/src/push.js +76 -0
- package/out/packages/zero-protocol/src/push.js.map +1 -0
- package/out/packages/zero-protocol/src/queries-patch.js.map +1 -0
- package/out/packages/zero-protocol/src/query-hash.js.map +1 -0
- package/out/packages/zero-protocol/src/query-server.js.map +1 -0
- package/out/packages/zero-protocol/src/row-patch.js.map +1 -0
- package/out/packages/zero-protocol/src/up.js.map +1 -0
- package/out/packages/zero-protocol/src/update-auth.js.map +1 -0
- package/out/packages/zero-protocol/src/version.js.map +1 -0
- package/out/packages/zero-react/src/use-connection-state.js +19 -0
- package/out/packages/zero-react/src/use-connection-state.js.map +1 -0
- package/out/packages/zero-react/src/use-query.js +301 -0
- package/out/packages/zero-react/src/use-query.js.map +1 -0
- package/out/packages/zero-react/src/use-zero-online.js +22 -0
- package/out/packages/zero-react/src/use-zero-online.js.map +1 -0
- package/out/packages/zero-react/src/zero-provider.js +90 -0
- package/out/packages/zero-react/src/zero-provider.js.map +1 -0
- package/out/packages/zero-schema/src/builder/relationship-builder.js.map +1 -0
- package/out/packages/zero-schema/src/builder/schema-builder.js.map +1 -0
- package/out/packages/zero-schema/src/builder/table-builder.js.map +1 -0
- package/out/packages/zero-schema/src/compiled-permissions.js.map +1 -0
- package/out/packages/zero-schema/src/name-mapper.js.map +1 -0
- package/out/packages/zero-schema/src/permissions.js.map +1 -0
- package/out/packages/zero-schema/src/schema-config.js.map +1 -0
- package/out/packages/zero-server/src/adapters/drizzle.js.map +1 -0
- package/out/packages/zero-server/src/adapters/kysely.js.map +1 -0
- package/out/packages/zero-server/src/adapters/pg.js +83 -0
- package/out/packages/zero-server/src/adapters/pg.js.map +1 -0
- package/out/packages/zero-server/src/adapters/postgresjs.js.map +1 -0
- package/out/packages/zero-server/src/adapters/prisma.js.map +1 -0
- package/out/packages/zero-server/src/custom.js +215 -0
- package/out/packages/zero-server/src/custom.js.map +1 -0
- package/out/packages/zero-server/src/logging.js.map +1 -0
- package/out/packages/zero-server/src/pg-query-executor.js.map +1 -0
- package/out/packages/zero-server/src/process-mutations.js.map +1 -0
- package/out/packages/zero-server/src/push-processor.js.map +1 -0
- package/out/packages/zero-server/src/queries/process-queries.js.map +1 -0
- package/out/packages/zero-server/src/schema.js.map +1 -0
- package/out/packages/zero-server/src/zql-database.js.map +1 -0
- package/out/packages/zero-solid/src/solid-view.js +145 -0
- package/out/packages/zero-solid/src/solid-view.js.map +1 -0
- package/out/packages/zero-solid/src/use-connection-state.js +21 -0
- package/out/packages/zero-solid/src/use-connection-state.js.map +1 -0
- package/out/packages/zero-solid/src/use-query.js +64 -0
- package/out/packages/zero-solid/src/use-query.js.map +1 -0
- package/out/packages/zero-solid/src/use-zero-online.js +21 -0
- package/out/packages/zero-solid/src/use-zero-online.js.map +1 -0
- package/out/packages/zero-solid/src/use-zero.js +93 -0
- package/out/packages/zero-solid/src/use-zero.js.map +1 -0
- package/out/packages/zero-types/src/format.js.map +1 -0
- package/out/packages/zero-types/src/name-mapper.js.map +1 -0
- package/out/packages/zql/src/builder/builder.js +381 -0
- package/out/packages/zql/src/builder/builder.js.map +1 -0
- package/out/packages/zql/src/builder/debug-delegate.js +81 -0
- package/out/packages/zql/src/builder/debug-delegate.js.map +1 -0
- package/out/packages/zql/src/builder/filter.js.map +1 -0
- package/out/packages/zql/src/builder/like.js.map +1 -0
- package/out/packages/zql/src/error.js.map +1 -0
- package/out/packages/zql/src/ivm/array-view.js.map +1 -0
- package/out/packages/zql/src/ivm/cap.js.map +1 -0
- package/out/packages/zql/src/ivm/change.js.map +1 -0
- package/out/packages/zql/src/ivm/constraint.js +82 -0
- package/out/packages/zql/src/ivm/constraint.js.map +1 -0
- package/out/packages/zql/src/ivm/data.js.map +1 -0
- package/out/packages/zql/src/ivm/exists.js.map +1 -0
- package/out/packages/zql/src/ivm/fan-in.js.map +1 -0
- package/out/packages/zql/src/ivm/fan-out.js.map +1 -0
- package/out/packages/zql/src/ivm/filter-operators.js.map +1 -0
- package/out/packages/zql/src/ivm/filter-push.js.map +1 -0
- package/out/packages/zql/src/ivm/filter.js.map +1 -0
- package/out/packages/zql/src/ivm/flipped-join.js +307 -0
- package/out/packages/zql/src/ivm/flipped-join.js.map +1 -0
- package/out/packages/zql/src/ivm/join-utils.js.map +1 -0
- package/out/packages/zql/src/ivm/join.js.map +1 -0
- package/out/packages/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -0
- package/out/packages/zql/src/ivm/memory-source.js.map +1 -0
- package/out/packages/zql/src/ivm/memory-storage.js.map +1 -0
- package/out/packages/zql/src/ivm/operator.js.map +1 -0
- package/out/packages/zql/src/ivm/push-accumulated.js.map +1 -0
- package/out/packages/zql/src/ivm/skip-yields.js.map +1 -0
- package/out/packages/zql/src/ivm/skip.js.map +1 -0
- package/out/packages/zql/src/ivm/source.js.map +1 -0
- package/out/packages/zql/src/ivm/stream.js.map +1 -0
- package/out/packages/zql/src/ivm/take.js.map +1 -0
- package/out/packages/zql/src/ivm/union-fan-in.js +165 -0
- package/out/packages/zql/src/ivm/union-fan-in.js.map +1 -0
- package/out/packages/zql/src/ivm/union-fan-out.js.map +1 -0
- package/out/packages/zql/src/ivm/view-apply-change.js.map +1 -0
- package/out/packages/zql/src/mutate/crud.js.map +1 -0
- package/out/packages/zql/src/mutate/custom.js.map +1 -0
- package/out/packages/zql/src/mutate/mutator-registry.js.map +1 -0
- package/out/packages/zql/src/mutate/mutator.js.map +1 -0
- package/out/packages/zql/src/planner/planner-builder.js.map +1 -0
- package/out/packages/zql/src/planner/planner-connection.js.map +1 -0
- package/out/packages/zql/src/planner/planner-constraint.js.map +1 -0
- package/out/packages/zql/src/planner/planner-debug.js.map +1 -0
- package/out/packages/zql/src/planner/planner-fan-in.js.map +1 -0
- package/out/packages/zql/src/planner/planner-fan-out.js.map +1 -0
- package/out/packages/zql/src/planner/planner-graph.js.map +1 -0
- package/out/packages/zql/src/planner/planner-join.js +262 -0
- package/out/packages/zql/src/planner/planner-join.js.map +1 -0
- package/out/packages/zql/src/planner/planner-node.js.map +1 -0
- package/out/packages/zql/src/planner/planner-source.js.map +1 -0
- package/out/packages/zql/src/planner/planner-terminus.js.map +1 -0
- package/out/packages/zql/src/query/complete-ordering.js.map +1 -0
- package/out/packages/zql/src/query/create-builder.js.map +1 -0
- package/out/packages/zql/src/query/error.js.map +1 -0
- package/out/packages/zql/src/query/escape-like.js.map +1 -0
- package/out/packages/zql/src/query/expression.js.map +1 -0
- package/out/packages/zql/src/query/measure-push-operator.js.map +1 -0
- package/out/packages/zql/src/query/metrics-delegate.js.map +1 -0
- package/out/packages/zql/src/query/named.js.map +1 -0
- package/out/packages/zql/src/query/query-delegate-base.js.map +1 -0
- package/out/packages/zql/src/query/query-impl.js +290 -0
- package/out/packages/zql/src/query/query-impl.js.map +1 -0
- package/out/packages/zql/src/query/query-internals.js.map +1 -0
- package/out/packages/zql/src/query/query-registry.js.map +1 -0
- package/out/packages/zql/src/query/runnable-query-impl.js.map +1 -0
- package/out/packages/zql/src/query/static-query.js.map +1 -0
- package/out/packages/zql/src/query/ttl.js.map +1 -0
- package/out/packages/zql/src/query/validate-input.js.map +1 -0
- package/out/packages/zqlite/src/database-storage.js.map +1 -0
- package/out/packages/zqlite/src/db.js.map +1 -0
- package/out/packages/zqlite/src/explain-queries.js.map +1 -0
- package/out/packages/zqlite/src/internal/sql-inline.js.map +1 -0
- package/out/packages/zqlite/src/internal/sql.js.map +1 -0
- package/out/packages/zqlite/src/internal/statement-cache.js.map +1 -0
- package/out/packages/zqlite/src/query-builder.js.map +1 -0
- package/out/packages/zqlite/src/query-delegate.js.map +1 -0
- package/out/packages/zqlite/src/resolve-scalar-subqueries.js.map +1 -0
- package/out/packages/zqlite/src/sqlite-cost-model.js.map +1 -0
- package/out/packages/zqlite/src/sqlite-stat-fanout.js.map +1 -0
- package/out/packages/zqlite/src/table-source.js +313 -0
- package/out/packages/zqlite/src/table-source.js.map +1 -0
- package/out/replicache/src/dag/store-impl.d.ts.map +1 -1
- package/out/replicache/src/kv/expo-sqlite/store.d.ts +1 -1
- package/out/replicache/src/kv/expo-sqlite/store.d.ts.map +1 -1
- package/out/replicache/src/kv/op-sqlite/store.d.ts.map +1 -1
- package/out/replicache/src/kv/sqlite-store.d.ts +6 -6
- package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
- package/out/replicache/src/kv/throw-if-closed.d.ts +1 -0
- package/out/replicache/src/kv/throw-if-closed.d.ts.map +1 -1
- package/out/replicache/src/persist/persist.d.ts.map +1 -1
- package/out/replicache/src/sync/pull.d.ts.map +1 -1
- package/out/shared/src/map.d.ts +6 -0
- package/out/shared/src/map.d.ts.map +1 -0
- package/out/shared/src/queue.d.ts.map +1 -1
- package/out/shared/src/ring-buffer.d.ts +32 -0
- package/out/shared/src/ring-buffer.d.ts.map +1 -0
- package/out/zero/src/adapters/drizzle.js +1 -1
- package/out/zero/src/adapters/kysely.js +1 -1
- package/out/zero/src/adapters/pg.js +1 -1
- package/out/zero/src/adapters/postgresjs.js +1 -1
- package/out/zero/src/adapters/prisma.js +1 -1
- package/out/zero/src/analyze-query.js +1 -1
- package/out/zero/src/analyze.js +1 -1
- package/out/zero/src/ast-to-zql.js +1 -1
- package/out/zero/src/bindings.js +11 -11
- package/out/zero/src/build-schema.js.map +1 -1
- package/out/zero/src/change-protocol/v0.js +2 -2
- package/out/zero/src/cli.js +1 -1
- package/out/zero/src/deploy-permissions.js +1 -1
- package/out/zero/src/expo-sqlite.js +2 -2
- package/out/zero/src/op-sqlite.js +2 -2
- package/out/zero/src/pg.js +9 -9
- package/out/zero/src/react-native.js +2 -2
- package/out/zero/src/react.js +5 -5
- package/out/zero/src/server.js +8 -8
- package/out/zero/src/solid.js +5 -5
- package/out/zero/src/sqlite.js +2 -2
- package/out/zero/src/transform-query.js +1 -1
- package/out/zero/src/zero-cache-dev.js +6 -6
- package/out/zero/src/zero-cache-dev.js.map +1 -1
- package/out/zero/src/zero-out.js +5 -5
- package/out/zero/src/zero-out.js.map +1 -1
- package/out/zero/src/zero.js +22 -22
- package/out/zero/src/zqlite.js +5 -5
- package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +38 -32
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/main.js +15 -13
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/mutator.js +12 -10
- package/out/zero-cache/src/server/mutator.js.map +1 -1
- package/out/zero-cache/src/server/reaper.d.ts.map +1 -1
- package/out/zero-cache/src/server/reaper.js +18 -16
- package/out/zero-cache/src/server/reaper.js.map +1 -1
- package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/server/replicator.js +20 -18
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/server/runner/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/shadow-syncer.js +16 -13
- package/out/zero-cache/src/server/shadow-syncer.js.map +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +36 -34
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/server/write-worker.js +1 -1
- package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +8 -2
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slots.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
- package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
- package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
- package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
- package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/types/configuration-error.d.ts +4 -0
- package/out/zero-cache/src/types/configuration-error.d.ts.map +1 -0
- package/out/zero-cache/src/types/pg.d.ts +2 -0
- package/out/zero-cache/src/types/pg.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/debug-delegate.d.ts +5 -0
- package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
- package/out/zql/src/ivm/flipped-join.d.ts +4 -8
- package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
- package/out/zql/src/ivm/operator.d.ts +1 -1
- package/out/zql/src/ivm/schema.d.ts +0 -8
- package/out/zql/src/ivm/schema.d.ts.map +1 -1
- package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
- package/out/zql/src/mutate/mutator.d.ts +12 -3
- package/out/zql/src/mutate/mutator.d.ts.map +1 -1
- package/out/zql/src/planner/planner-join.d.ts.map +1 -1
- package/out/zql/src/query/query-registry.d.ts +10 -3
- package/out/zql/src/query/query-registry.d.ts.map +1 -1
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/package.json +23 -23
- package/out/_virtual/_@oxc-project_runtime@0.122.0/helpers/usingCtx.js +0 -57
- package/out/analyze-query/src/analyze-cli.js +0 -288
- package/out/analyze-query/src/analyze-cli.js.map +0 -1
- package/out/analyze-query/src/bin-analyze.js +0 -277
- package/out/analyze-query/src/bin-analyze.js.map +0 -1
- package/out/analyze-query/src/bin-transform.js.map +0 -1
- package/out/ast-to-zql/src/ast-to-zql.js.map +0 -1
- package/out/ast-to-zql/src/bin.js.map +0 -1
- package/out/ast-to-zql/src/format.js.map +0 -1
- package/out/datadog/src/datadog-log-sink.js.map +0 -1
- package/out/otel/src/enabled.js.map +0 -1
- package/out/otel/src/log-options.js.map +0 -1
- package/out/otel/src/maybe-time.js.map +0 -1
- package/out/otel/src/span.js.map +0 -1
- package/out/otel/src/version.js.map +0 -1
- package/out/replicache/src/async-iterable-to-array.js.map +0 -1
- package/out/replicache/src/bg-interval.js.map +0 -1
- package/out/replicache/src/btree/diff.js.map +0 -1
- package/out/replicache/src/btree/node.js.map +0 -1
- package/out/replicache/src/btree/read.js.map +0 -1
- package/out/replicache/src/btree/splice.js.map +0 -1
- package/out/replicache/src/btree/write.js +0 -188
- package/out/replicache/src/btree/write.js.map +0 -1
- package/out/replicache/src/call-default-fetch.js.map +0 -1
- package/out/replicache/src/connection-loop-delegates.js.map +0 -1
- package/out/replicache/src/connection-loop.js.map +0 -1
- package/out/replicache/src/cookies.js.map +0 -1
- package/out/replicache/src/dag/chunk.js.map +0 -1
- package/out/replicache/src/dag/gc.js.map +0 -1
- package/out/replicache/src/dag/key.js.map +0 -1
- package/out/replicache/src/dag/lazy-store.js.map +0 -1
- package/out/replicache/src/dag/store-impl.js +0 -152
- package/out/replicache/src/dag/store-impl.js.map +0 -1
- package/out/replicache/src/dag/store.js.map +0 -1
- package/out/replicache/src/dag/visitor.js.map +0 -1
- package/out/replicache/src/db/commit.js.map +0 -1
- package/out/replicache/src/db/index.js.map +0 -1
- package/out/replicache/src/db/read.js.map +0 -1
- package/out/replicache/src/db/rebase.js.map +0 -1
- package/out/replicache/src/db/write.js.map +0 -1
- package/out/replicache/src/deleted-clients.js.map +0 -1
- package/out/replicache/src/error-responses.js.map +0 -1
- package/out/replicache/src/frozen-json.js.map +0 -1
- package/out/replicache/src/get-default-puller.js.map +0 -1
- package/out/replicache/src/get-default-pusher.js.map +0 -1
- package/out/replicache/src/get-kv-store-provider.js.map +0 -1
- package/out/replicache/src/hash.js.map +0 -1
- package/out/replicache/src/http-request-info.js.map +0 -1
- package/out/replicache/src/index-defs.js.map +0 -1
- package/out/replicache/src/kv/expo-sqlite/store.js +0 -58
- package/out/replicache/src/kv/expo-sqlite/store.js.map +0 -1
- package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +0 -1
- package/out/replicache/src/kv/idb-store.js.map +0 -1
- package/out/replicache/src/kv/mem-store.js.map +0 -1
- package/out/replicache/src/kv/op-sqlite/store.js +0 -63
- package/out/replicache/src/kv/op-sqlite/store.js.map +0 -1
- package/out/replicache/src/kv/op-sqlite/types.js.map +0 -1
- package/out/replicache/src/kv/read-impl.js.map +0 -1
- package/out/replicache/src/kv/sqlite-store.js +0 -216
- package/out/replicache/src/kv/sqlite-store.js.map +0 -1
- package/out/replicache/src/kv/throw-if-closed.js +0 -26
- package/out/replicache/src/kv/throw-if-closed.js.map +0 -1
- package/out/replicache/src/kv/write-impl-base.js.map +0 -1
- package/out/replicache/src/kv/write-impl.js.map +0 -1
- package/out/replicache/src/lazy.js.map +0 -1
- package/out/replicache/src/log-options.js.map +0 -1
- package/out/replicache/src/make-idb-name.js.map +0 -1
- package/out/replicache/src/new-client-channel.js.map +0 -1
- package/out/replicache/src/on-persist-channel.js.map +0 -1
- package/out/replicache/src/patch-operation.js.map +0 -1
- package/out/replicache/src/pending-mutations.js.map +0 -1
- package/out/replicache/src/persist/client-gc.js.map +0 -1
- package/out/replicache/src/persist/client-group-gc.js.map +0 -1
- package/out/replicache/src/persist/client-groups.js +0 -110
- package/out/replicache/src/persist/client-groups.js.map +0 -1
- package/out/replicache/src/persist/clients.js +0 -261
- package/out/replicache/src/persist/clients.js.map +0 -1
- package/out/replicache/src/persist/collect-idb-databases.js.map +0 -1
- package/out/replicache/src/persist/gather-mem-only-visitor.js.map +0 -1
- package/out/replicache/src/persist/gather-not-cached-visitor.js.map +0 -1
- package/out/replicache/src/persist/heartbeat.js.map +0 -1
- package/out/replicache/src/persist/idb-databases-store-db-name.js.map +0 -1
- package/out/replicache/src/persist/idb-databases-store.js.map +0 -1
- package/out/replicache/src/persist/make-client-id.js.map +0 -1
- package/out/replicache/src/persist/persist.js +0 -122
- package/out/replicache/src/persist/persist.js.map +0 -1
- package/out/replicache/src/persist/refresh.js.map +0 -1
- package/out/replicache/src/process-scheduler.js.map +0 -1
- package/out/replicache/src/pusher.js.map +0 -1
- package/out/replicache/src/replicache-impl.js.map +0 -1
- package/out/replicache/src/report-error.js.map +0 -1
- package/out/replicache/src/request-idle.js.map +0 -1
- package/out/replicache/src/scan-iterator.js.map +0 -1
- package/out/replicache/src/scan-options.js.map +0 -1
- package/out/replicache/src/set-interval-with-signal.js.map +0 -1
- package/out/replicache/src/subscriptions.js.map +0 -1
- package/out/replicache/src/sync/diff.js.map +0 -1
- package/out/replicache/src/sync/ids.js.map +0 -1
- package/out/replicache/src/sync/patch.js.map +0 -1
- package/out/replicache/src/sync/pull-error.js.map +0 -1
- package/out/replicache/src/sync/pull.js +0 -166
- package/out/replicache/src/sync/pull.js.map +0 -1
- package/out/replicache/src/sync/push.js.map +0 -1
- package/out/replicache/src/sync/request-id.js.map +0 -1
- package/out/replicache/src/sync/sync-head-name.js.map +0 -1
- package/out/replicache/src/to-error.js.map +0 -1
- package/out/replicache/src/transaction-closed-error.js.map +0 -1
- package/out/replicache/src/transactions.js.map +0 -1
- package/out/replicache/src/version.js.map +0 -1
- package/out/replicache/src/with-transactions.js.map +0 -1
- package/out/shared/src/abort-error.js.map +0 -1
- package/out/shared/src/arrays.js.map +0 -1
- package/out/shared/src/asserts.js.map +0 -1
- package/out/shared/src/bigint-json.js.map +0 -1
- package/out/shared/src/binary-search.js.map +0 -1
- package/out/shared/src/broadcast-channel.js.map +0 -1
- package/out/shared/src/browser-env.js.map +0 -1
- package/out/shared/src/btree-set.js.map +0 -1
- package/out/shared/src/cache.js.map +0 -1
- package/out/shared/src/centroid.js.map +0 -1
- package/out/shared/src/config.js.map +0 -1
- package/out/shared/src/custom-key-map.js.map +0 -1
- package/out/shared/src/custom-key-set.js.map +0 -1
- package/out/shared/src/deep-clone.js.map +0 -1
- package/out/shared/src/deep-merge.js.map +0 -1
- package/out/shared/src/document-visible.js.map +0 -1
- package/out/shared/src/dotenv.js.map +0 -1
- package/out/shared/src/error.js.map +0 -1
- package/out/shared/src/has-own.js.map +0 -1
- package/out/shared/src/hash.js.map +0 -1
- package/out/shared/src/iterables.js.map +0 -1
- package/out/shared/src/json-schema.js.map +0 -1
- package/out/shared/src/json.js.map +0 -1
- package/out/shared/src/logging-test-utils.js.map +0 -1
- package/out/shared/src/logging.js.map +0 -1
- package/out/shared/src/must.js.map +0 -1
- package/out/shared/src/navigator.js.map +0 -1
- package/out/shared/src/object-traversal.js.map +0 -1
- package/out/shared/src/objects.js.map +0 -1
- package/out/shared/src/options.js.map +0 -1
- package/out/shared/src/parse-big-int.js.map +0 -1
- package/out/shared/src/promise-race.js.map +0 -1
- package/out/shared/src/queue.js +0 -126
- package/out/shared/src/queue.js.map +0 -1
- package/out/shared/src/rand.js.map +0 -1
- package/out/shared/src/random-uint64.js.map +0 -1
- package/out/shared/src/random-values.js.map +0 -1
- package/out/shared/src/record-proxy.js.map +0 -1
- package/out/shared/src/resolved-promises.js.map +0 -1
- package/out/shared/src/sentinels.js.map +0 -1
- package/out/shared/src/set-utils.js.map +0 -1
- package/out/shared/src/size-of-value.js.map +0 -1
- package/out/shared/src/sleep.js.map +0 -1
- package/out/shared/src/sorted-entries.js.map +0 -1
- package/out/shared/src/string-compare.js.map +0 -1
- package/out/shared/src/subscribable.js.map +0 -1
- package/out/shared/src/tdigest-schema.js.map +0 -1
- package/out/shared/src/tdigest.js.map +0 -1
- package/out/shared/src/valita.js +0 -172
- package/out/shared/src/valita.js.map +0 -1
- package/out/z2s/src/compiler.js.map +0 -1
- package/out/z2s/src/sql.js.map +0 -1
- package/out/zero/package.js +0 -205
- package/out/zero/package.js.map +0 -1
- package/out/zero-cache/src/auth/auth.js.map +0 -1
- package/out/zero-cache/src/auth/jwt.js.map +0 -1
- package/out/zero-cache/src/auth/load-permissions.js.map +0 -1
- package/out/zero-cache/src/auth/read-authorizer.js.map +0 -1
- package/out/zero-cache/src/auth/write-authorizer.js.map +0 -1
- package/out/zero-cache/src/config/network.js.map +0 -1
- package/out/zero-cache/src/config/normalize.js.map +0 -1
- package/out/zero-cache/src/config/server-context.js.map +0 -1
- package/out/zero-cache/src/config/zero-config.js +0 -916
- package/out/zero-cache/src/config/zero-config.js.map +0 -1
- package/out/zero-cache/src/custom/fetch.js.map +0 -1
- package/out/zero-cache/src/custom-queries/transform-query.js.map +0 -1
- package/out/zero-cache/src/db/create.js.map +0 -1
- package/out/zero-cache/src/db/delete-lite-db.js.map +0 -1
- package/out/zero-cache/src/db/lite-tables.js.map +0 -1
- package/out/zero-cache/src/db/migration-lite.js +0 -147
- package/out/zero-cache/src/db/migration-lite.js.map +0 -1
- package/out/zero-cache/src/db/migration.js +0 -120
- package/out/zero-cache/src/db/migration.js.map +0 -1
- package/out/zero-cache/src/db/mode-enum.js.map +0 -1
- package/out/zero-cache/src/db/pg-copy-binary.js.map +0 -1
- package/out/zero-cache/src/db/pg-copy.js.map +0 -1
- package/out/zero-cache/src/db/pg-to-lite.js.map +0 -1
- package/out/zero-cache/src/db/pg-type-parser.js.map +0 -1
- package/out/zero-cache/src/db/run-transaction.js.map +0 -1
- package/out/zero-cache/src/db/specs.js.map +0 -1
- package/out/zero-cache/src/db/statements.js.map +0 -1
- package/out/zero-cache/src/db/transaction-pool.js.map +0 -1
- package/out/zero-cache/src/db/warmup.js.map +0 -1
- package/out/zero-cache/src/observability/events.js.map +0 -1
- package/out/zero-cache/src/observability/metrics.js.map +0 -1
- package/out/zero-cache/src/scripts/decommission.js.map +0 -1
- package/out/zero-cache/src/scripts/deploy-permissions.js.map +0 -1
- package/out/zero-cache/src/scripts/permissions.js.map +0 -1
- package/out/zero-cache/src/server/anonymous-otel-start.js +0 -305
- package/out/zero-cache/src/server/anonymous-otel-start.js.map +0 -1
- package/out/zero-cache/src/server/inspector-delegate.js.map +0 -1
- package/out/zero-cache/src/server/logging.js.map +0 -1
- package/out/zero-cache/src/server/otel-diag-logger.js.map +0 -1
- package/out/zero-cache/src/server/otel-log-sink.js.map +0 -1
- package/out/zero-cache/src/server/otel-start.js +0 -53
- package/out/zero-cache/src/server/otel-start.js.map +0 -1
- package/out/zero-cache/src/server/priority-op.js.map +0 -1
- package/out/zero-cache/src/server/runner/main.js +0 -10
- package/out/zero-cache/src/server/runner/main.js.map +0 -1
- package/out/zero-cache/src/server/runner/run-worker.js.map +0 -1
- package/out/zero-cache/src/server/runner/runtime.js.map +0 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +0 -1
- package/out/zero-cache/src/server/worker-dispatcher.js.map +0 -1
- package/out/zero-cache/src/server/worker-urls.js.map +0 -1
- package/out/zero-cache/src/services/analyze.js +0 -69
- package/out/zero-cache/src/services/analyze.js.map +0 -1
- package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +0 -1
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +0 -1
- package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +0 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.js +0 -176
- package/out/zero-cache/src/services/change-source/custom/change-source.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +0 -197
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js +0 -920
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/decommission.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +0 -545
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/lsn.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slots.js +0 -162
- package/out/zero-cache/src/services/change-source/pg/replication-slots.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +0 -334
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.js +0 -155
- package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js +0 -330
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +0 -1
- package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +0 -1
- package/out/zero-cache/src/services/change-source/protocol/current/data.js +0 -192
- package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +0 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +0 -1
- package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +0 -1
- package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +0 -1
- package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +0 -1
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +0 -1
- package/out/zero-cache/src/services/change-source/protocol/current.js +0 -56
- package/out/zero-cache/src/services/change-source/protocol/current.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/broadcast.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +0 -158
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.js +0 -74
- package/out/zero-cache/src/services/change-streamer/schema/init.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.js +0 -191
- package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/snapshot.js +0 -27
- package/out/zero-cache/src/services/change-streamer/snapshot.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/storer.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js.map +0 -1
- package/out/zero-cache/src/services/heapz.js.map +0 -1
- package/out/zero-cache/src/services/http-service.js.map +0 -1
- package/out/zero-cache/src/services/life-cycle.js +0 -195
- package/out/zero-cache/src/services/life-cycle.js.map +0 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +0 -1
- package/out/zero-cache/src/services/litestream/commands.js.map +0 -1
- package/out/zero-cache/src/services/mutagen/error.js.map +0 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +0 -1
- package/out/zero-cache/src/services/mutagen/pusher.js.map +0 -1
- package/out/zero-cache/src/services/replicator/change-processor.js.map +0 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +0 -1
- package/out/zero-cache/src/services/replicator/notifier.js.map +0 -1
- package/out/zero-cache/src/services/replicator/replication-status.js.map +0 -1
- package/out/zero-cache/src/services/replicator/replicator.js.map +0 -1
- package/out/zero-cache/src/services/replicator/reporter/recorder.js.map +0 -1
- package/out/zero-cache/src/services/replicator/reporter/report-schema.js.map +0 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.js.map +0 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +0 -1
- package/out/zero-cache/src/services/replicator/schema/constants.js.map +0 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +0 -1
- package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +0 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.js.map +0 -1
- package/out/zero-cache/src/services/replicator/write-worker.js.map +0 -1
- package/out/zero-cache/src/services/run-ast.js +0 -87
- package/out/zero-cache/src/services/run-ast.js.map +0 -1
- package/out/zero-cache/src/services/runner.js.map +0 -1
- package/out/zero-cache/src/services/running-state.js +0 -136
- package/out/zero-cache/src/services/running-state.js.map +0 -1
- package/out/zero-cache/src/services/shadow-sync/shadow-sync-service.js +0 -50
- package/out/zero-cache/src/services/shadow-sync/shadow-sync-service.js.map +0 -1
- package/out/zero-cache/src/services/statz.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +0 -270
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/connection-context-manager.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js +0 -109
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js +0 -102
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +0 -628
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/row-set-signature.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.js +0 -158
- package/out/zero-cache/src/services/view-syncer/schema/init.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.js +0 -176
- package/out/zero-cache/src/services/view-syncer/schema/types.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/tracer.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +0 -1235
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +0 -1
- package/out/zero-cache/src/types/error-with-level.js.map +0 -1
- package/out/zero-cache/src/types/http.js.map +0 -1
- package/out/zero-cache/src/types/lexi-version.js.map +0 -1
- package/out/zero-cache/src/types/lite.js.map +0 -1
- package/out/zero-cache/src/types/names.js.map +0 -1
- package/out/zero-cache/src/types/pg-data-type.js.map +0 -1
- package/out/zero-cache/src/types/pg-types.js.map +0 -1
- package/out/zero-cache/src/types/pg-versions.js.map +0 -1
- package/out/zero-cache/src/types/pg.js +0 -189
- package/out/zero-cache/src/types/pg.js.map +0 -1
- package/out/zero-cache/src/types/processes.js.map +0 -1
- package/out/zero-cache/src/types/profiler.js.map +0 -1
- package/out/zero-cache/src/types/row-key.js.map +0 -1
- package/out/zero-cache/src/types/shards.js.map +0 -1
- package/out/zero-cache/src/types/sql.js.map +0 -1
- package/out/zero-cache/src/types/state-version.js.map +0 -1
- package/out/zero-cache/src/types/streams.js.map +0 -1
- package/out/zero-cache/src/types/strings.js.map +0 -1
- package/out/zero-cache/src/types/subscription.js.map +0 -1
- package/out/zero-cache/src/types/timeout.js.map +0 -1
- package/out/zero-cache/src/types/url-params.js.map +0 -1
- package/out/zero-cache/src/types/websocket-handoff.js.map +0 -1
- package/out/zero-cache/src/types/ws.js.map +0 -1
- package/out/zero-cache/src/workers/connect-params.js.map +0 -1
- package/out/zero-cache/src/workers/connection.js +0 -229
- package/out/zero-cache/src/workers/connection.js.map +0 -1
- package/out/zero-cache/src/workers/mutator.js.map +0 -1
- package/out/zero-cache/src/workers/replicator.js.map +0 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +0 -1
- package/out/zero-cache/src/workers/syncer.js.map +0 -1
- package/out/zero-client/src/client/active-clients-manager.js.map +0 -1
- package/out/zero-client/src/client/client-error-kind-enum.js.map +0 -1
- package/out/zero-client/src/client/connection-manager.js +0 -295
- package/out/zero-client/src/client/connection-manager.js.map +0 -1
- package/out/zero-client/src/client/connection-status-enum.js +0 -20
- package/out/zero-client/src/client/connection-status-enum.js.map +0 -1
- package/out/zero-client/src/client/connection.js.map +0 -1
- package/out/zero-client/src/client/context.js.map +0 -1
- package/out/zero-client/src/client/crud-impl.js +0 -61
- package/out/zero-client/src/client/crud-impl.js.map +0 -1
- package/out/zero-client/src/client/crud.js.map +0 -1
- package/out/zero-client/src/client/custom.js +0 -63
- package/out/zero-client/src/client/custom.js.map +0 -1
- package/out/zero-client/src/client/delete-clients-manager.js.map +0 -1
- package/out/zero-client/src/client/enable-analytics.js.map +0 -1
- package/out/zero-client/src/client/error.js.map +0 -1
- package/out/zero-client/src/client/http-string.js.map +0 -1
- package/out/zero-client/src/client/inspector/client-group.js.map +0 -1
- package/out/zero-client/src/client/inspector/client.js.map +0 -1
- package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +0 -1
- package/out/zero-client/src/client/inspector/inspector.js.map +0 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.js.map +0 -1
- package/out/zero-client/src/client/inspector/query.js.map +0 -1
- package/out/zero-client/src/client/ivm-branch.js.map +0 -1
- package/out/zero-client/src/client/keys.js.map +0 -1
- package/out/zero-client/src/client/log-options.js.map +0 -1
- package/out/zero-client/src/client/make-mutate-property.js.map +0 -1
- package/out/zero-client/src/client/make-replicache-mutators.js.map +0 -1
- package/out/zero-client/src/client/metric-name-enum.js.map +0 -1
- package/out/zero-client/src/client/metrics.js.map +0 -1
- package/out/zero-client/src/client/mutation-tracker.js.map +0 -1
- package/out/zero-client/src/client/mutator-proxy.js.map +0 -1
- package/out/zero-client/src/client/options.js.map +0 -1
- package/out/zero-client/src/client/query-manager.js.map +0 -1
- package/out/zero-client/src/client/reload-error-handler.js.map +0 -1
- package/out/zero-client/src/client/server-option.js.map +0 -1
- package/out/zero-client/src/client/update-needed-reason-type-enum.js +0 -27
- package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +0 -1
- package/out/zero-client/src/client/version.js +0 -9
- package/out/zero-client/src/client/version.js.map +0 -1
- package/out/zero-client/src/client/zero-poke-handler.js.map +0 -1
- package/out/zero-client/src/client/zero-rep.js.map +0 -1
- package/out/zero-client/src/client/zero.js +0 -1443
- package/out/zero-client/src/client/zero.js.map +0 -1
- package/out/zero-client/src/util/nanoid.js.map +0 -1
- package/out/zero-client/src/util/socket.d.ts +0 -3
- package/out/zero-client/src/util/socket.d.ts.map +0 -1
- package/out/zero-client/src/util/socket.js +0 -8
- package/out/zero-client/src/util/socket.js.map +0 -1
- package/out/zero-protocol/src/analyze-query-result.js +0 -120
- package/out/zero-protocol/src/analyze-query-result.js.map +0 -1
- package/out/zero-protocol/src/application-error.js.map +0 -1
- package/out/zero-protocol/src/ast.js.map +0 -1
- package/out/zero-protocol/src/change-desired-queries.js +0 -12
- package/out/zero-protocol/src/change-desired-queries.js.map +0 -1
- package/out/zero-protocol/src/client-schema.js.map +0 -1
- package/out/zero-protocol/src/close-connection.js.map +0 -1
- package/out/zero-protocol/src/connect.js +0 -47
- package/out/zero-protocol/src/connect.js.map +0 -1
- package/out/zero-protocol/src/custom-queries.js.map +0 -1
- package/out/zero-protocol/src/data.js.map +0 -1
- package/out/zero-protocol/src/delete-clients.js.map +0 -1
- package/out/zero-protocol/src/down.js.map +0 -1
- package/out/zero-protocol/src/error-kind-enum.js.map +0 -1
- package/out/zero-protocol/src/error-origin-enum.js.map +0 -1
- package/out/zero-protocol/src/error-reason-enum.js.map +0 -1
- package/out/zero-protocol/src/error.js +0 -84
- package/out/zero-protocol/src/error.js.map +0 -1
- package/out/zero-protocol/src/inspect-down.js.map +0 -1
- package/out/zero-protocol/src/inspect-up.js +0 -34
- package/out/zero-protocol/src/inspect-up.js.map +0 -1
- package/out/zero-protocol/src/mutate-server.js.map +0 -1
- package/out/zero-protocol/src/mutation-id.js.map +0 -1
- package/out/zero-protocol/src/mutation-type-enum.js.map +0 -1
- package/out/zero-protocol/src/mutation.js.map +0 -1
- package/out/zero-protocol/src/mutations-patch.js.map +0 -1
- package/out/zero-protocol/src/ping.js.map +0 -1
- package/out/zero-protocol/src/poke.js +0 -59
- package/out/zero-protocol/src/poke.js.map +0 -1
- package/out/zero-protocol/src/pong.js.map +0 -1
- package/out/zero-protocol/src/primary-key.js.map +0 -1
- package/out/zero-protocol/src/protocol-version.js.map +0 -1
- package/out/zero-protocol/src/pull.js.map +0 -1
- package/out/zero-protocol/src/push.js +0 -60
- package/out/zero-protocol/src/push.js.map +0 -1
- package/out/zero-protocol/src/queries-patch.js.map +0 -1
- package/out/zero-protocol/src/query-hash.js.map +0 -1
- package/out/zero-protocol/src/query-server.js.map +0 -1
- package/out/zero-protocol/src/row-patch.js.map +0 -1
- package/out/zero-protocol/src/up.js.map +0 -1
- package/out/zero-protocol/src/update-auth.js.map +0 -1
- package/out/zero-protocol/src/version.js.map +0 -1
- package/out/zero-react/src/use-connection-state.js +0 -17
- package/out/zero-react/src/use-connection-state.js.map +0 -1
- package/out/zero-react/src/use-query.js +0 -299
- package/out/zero-react/src/use-query.js.map +0 -1
- package/out/zero-react/src/use-zero-online.js +0 -20
- package/out/zero-react/src/use-zero-online.js.map +0 -1
- package/out/zero-react/src/zero-provider.js +0 -87
- package/out/zero-react/src/zero-provider.js.map +0 -1
- package/out/zero-schema/src/builder/relationship-builder.js.map +0 -1
- package/out/zero-schema/src/builder/schema-builder.js.map +0 -1
- package/out/zero-schema/src/builder/table-builder.js.map +0 -1
- package/out/zero-schema/src/compiled-permissions.js.map +0 -1
- package/out/zero-schema/src/name-mapper.js.map +0 -1
- package/out/zero-schema/src/permissions.js.map +0 -1
- package/out/zero-schema/src/schema-config.js.map +0 -1
- package/out/zero-server/src/adapters/drizzle.js.map +0 -1
- package/out/zero-server/src/adapters/kysely.js.map +0 -1
- package/out/zero-server/src/adapters/pg.js +0 -83
- package/out/zero-server/src/adapters/pg.js.map +0 -1
- package/out/zero-server/src/adapters/postgresjs.js.map +0 -1
- package/out/zero-server/src/adapters/prisma.js.map +0 -1
- package/out/zero-server/src/custom.js +0 -214
- package/out/zero-server/src/custom.js.map +0 -1
- package/out/zero-server/src/logging.js.map +0 -1
- package/out/zero-server/src/pg-query-executor.js.map +0 -1
- package/out/zero-server/src/process-mutations.js.map +0 -1
- package/out/zero-server/src/push-processor.js.map +0 -1
- package/out/zero-server/src/queries/process-queries.js.map +0 -1
- package/out/zero-server/src/schema.js.map +0 -1
- package/out/zero-server/src/zql-database.js.map +0 -1
- package/out/zero-solid/src/solid-view.js +0 -145
- package/out/zero-solid/src/solid-view.js.map +0 -1
- package/out/zero-solid/src/use-connection-state.js +0 -21
- package/out/zero-solid/src/use-connection-state.js.map +0 -1
- package/out/zero-solid/src/use-query.js +0 -64
- package/out/zero-solid/src/use-query.js.map +0 -1
- package/out/zero-solid/src/use-zero-online.js +0 -21
- package/out/zero-solid/src/use-zero-online.js.map +0 -1
- package/out/zero-solid/src/use-zero.js +0 -93
- package/out/zero-solid/src/use-zero.js.map +0 -1
- package/out/zero-types/src/format.js.map +0 -1
- package/out/zero-types/src/name-mapper.js.map +0 -1
- package/out/zql/src/builder/builder.js +0 -380
- package/out/zql/src/builder/builder.js.map +0 -1
- package/out/zql/src/builder/debug-delegate.js +0 -72
- package/out/zql/src/builder/debug-delegate.js.map +0 -1
- package/out/zql/src/builder/filter.js.map +0 -1
- package/out/zql/src/builder/like.js.map +0 -1
- package/out/zql/src/error.js.map +0 -1
- package/out/zql/src/ivm/array-view.js.map +0 -1
- package/out/zql/src/ivm/cap.js.map +0 -1
- package/out/zql/src/ivm/change.js.map +0 -1
- package/out/zql/src/ivm/constraint.js +0 -82
- package/out/zql/src/ivm/constraint.js.map +0 -1
- package/out/zql/src/ivm/data.js.map +0 -1
- package/out/zql/src/ivm/exists.js.map +0 -1
- package/out/zql/src/ivm/fan-in.js.map +0 -1
- package/out/zql/src/ivm/fan-out.js.map +0 -1
- package/out/zql/src/ivm/filter-operators.js.map +0 -1
- package/out/zql/src/ivm/filter-push.js.map +0 -1
- package/out/zql/src/ivm/filter.js.map +0 -1
- package/out/zql/src/ivm/flipped-join.js +0 -311
- package/out/zql/src/ivm/flipped-join.js.map +0 -1
- package/out/zql/src/ivm/join-utils.js.map +0 -1
- package/out/zql/src/ivm/join.js.map +0 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +0 -1
- package/out/zql/src/ivm/memory-source.js.map +0 -1
- package/out/zql/src/ivm/memory-storage.js.map +0 -1
- package/out/zql/src/ivm/operator.js.map +0 -1
- package/out/zql/src/ivm/push-accumulated.js.map +0 -1
- package/out/zql/src/ivm/skip-yields.js.map +0 -1
- package/out/zql/src/ivm/skip.js.map +0 -1
- package/out/zql/src/ivm/source.js.map +0 -1
- package/out/zql/src/ivm/stream.js.map +0 -1
- package/out/zql/src/ivm/take.js.map +0 -1
- package/out/zql/src/ivm/union-fan-in.js +0 -163
- package/out/zql/src/ivm/union-fan-in.js.map +0 -1
- package/out/zql/src/ivm/union-fan-out.js.map +0 -1
- package/out/zql/src/ivm/view-apply-change.js.map +0 -1
- package/out/zql/src/mutate/crud.js.map +0 -1
- package/out/zql/src/mutate/custom.js.map +0 -1
- package/out/zql/src/mutate/mutator-registry.js.map +0 -1
- package/out/zql/src/mutate/mutator.js.map +0 -1
- package/out/zql/src/planner/planner-builder.js.map +0 -1
- package/out/zql/src/planner/planner-connection.js.map +0 -1
- package/out/zql/src/planner/planner-constraint.js.map +0 -1
- package/out/zql/src/planner/planner-debug.js.map +0 -1
- package/out/zql/src/planner/planner-fan-in.js.map +0 -1
- package/out/zql/src/planner/planner-fan-out.js.map +0 -1
- package/out/zql/src/planner/planner-graph.js.map +0 -1
- package/out/zql/src/planner/planner-join.js +0 -261
- package/out/zql/src/planner/planner-join.js.map +0 -1
- package/out/zql/src/planner/planner-node.js.map +0 -1
- package/out/zql/src/planner/planner-source.js.map +0 -1
- package/out/zql/src/planner/planner-terminus.js.map +0 -1
- package/out/zql/src/query/complete-ordering.js.map +0 -1
- package/out/zql/src/query/create-builder.js.map +0 -1
- package/out/zql/src/query/error.js.map +0 -1
- package/out/zql/src/query/escape-like.js.map +0 -1
- package/out/zql/src/query/expression.js.map +0 -1
- package/out/zql/src/query/measure-push-operator.js.map +0 -1
- package/out/zql/src/query/metrics-delegate.js.map +0 -1
- package/out/zql/src/query/named.js.map +0 -1
- package/out/zql/src/query/query-delegate-base.js.map +0 -1
- package/out/zql/src/query/query-impl.js +0 -290
- package/out/zql/src/query/query-impl.js.map +0 -1
- package/out/zql/src/query/query-internals.js.map +0 -1
- package/out/zql/src/query/query-registry.js.map +0 -1
- package/out/zql/src/query/runnable-query-impl.js.map +0 -1
- package/out/zql/src/query/static-query.js.map +0 -1
- package/out/zql/src/query/ttl.js.map +0 -1
- package/out/zql/src/query/validate-input.js.map +0 -1
- package/out/zqlite/src/database-storage.js.map +0 -1
- package/out/zqlite/src/db.js.map +0 -1
- package/out/zqlite/src/explain-queries.js.map +0 -1
- package/out/zqlite/src/internal/sql-inline.js.map +0 -1
- package/out/zqlite/src/internal/sql.js.map +0 -1
- package/out/zqlite/src/internal/statement-cache.js.map +0 -1
- package/out/zqlite/src/query-builder.js.map +0 -1
- package/out/zqlite/src/query-delegate.js.map +0 -1
- package/out/zqlite/src/resolve-scalar-subqueries.js.map +0 -1
- package/out/zqlite/src/sqlite-cost-model.js.map +0 -1
- package/out/zqlite/src/sqlite-stat-fanout.js.map +0 -1
- package/out/zqlite/src/table-source.js +0 -313
- package/out/zqlite/src/table-source.js.map +0 -1
- /package/out/{analyze-query → packages/analyze-query}/src/bin-transform.js +0 -0
- /package/out/{ast-to-zql → packages/ast-to-zql}/src/ast-to-zql.js +0 -0
- /package/out/{ast-to-zql → packages/ast-to-zql}/src/bin.js +0 -0
- /package/out/{ast-to-zql → packages/ast-to-zql}/src/format.js +0 -0
- /package/out/{datadog → packages/datadog}/src/datadog-log-sink.js +0 -0
- /package/out/{otel → packages/otel}/src/enabled.js +0 -0
- /package/out/{otel → packages/otel}/src/log-options.js +0 -0
- /package/out/{otel → packages/otel}/src/maybe-time.js +0 -0
- /package/out/{otel → packages/otel}/src/span.js +0 -0
- /package/out/{otel → packages/otel}/src/version.js +0 -0
- /package/out/{replicache → packages/replicache}/src/async-iterable-to-array.js +0 -0
- /package/out/{replicache → packages/replicache}/src/bg-interval.js +0 -0
- /package/out/{replicache → packages/replicache}/src/btree/diff.js +0 -0
- /package/out/{replicache → packages/replicache}/src/btree/node.js +0 -0
- /package/out/{replicache → packages/replicache}/src/btree/read.js +0 -0
- /package/out/{replicache → packages/replicache}/src/btree/splice.js +0 -0
- /package/out/{replicache → packages/replicache}/src/call-default-fetch.js +0 -0
- /package/out/{replicache → packages/replicache}/src/config.js +0 -0
- /package/out/{replicache → packages/replicache}/src/connection-loop-delegates.js +0 -0
- /package/out/{replicache → packages/replicache}/src/connection-loop.js +0 -0
- /package/out/{replicache → packages/replicache}/src/cookies.js +0 -0
- /package/out/{replicache → packages/replicache}/src/dag/chunk.js +0 -0
- /package/out/{replicache → packages/replicache}/src/dag/gc.js +0 -0
- /package/out/{replicache → packages/replicache}/src/dag/key.js +0 -0
- /package/out/{replicache → packages/replicache}/src/dag/lazy-store.js +0 -0
- /package/out/{replicache → packages/replicache}/src/dag/store.js +0 -0
- /package/out/{replicache → packages/replicache}/src/dag/visitor.js +0 -0
- /package/out/{replicache → packages/replicache}/src/db/commit.js +0 -0
- /package/out/{replicache → packages/replicache}/src/db/index.js +0 -0
- /package/out/{replicache → packages/replicache}/src/db/read.js +0 -0
- /package/out/{replicache → packages/replicache}/src/db/rebase.js +0 -0
- /package/out/{replicache → packages/replicache}/src/db/write.js +0 -0
- /package/out/{replicache → packages/replicache}/src/deleted-clients.js +0 -0
- /package/out/{replicache → packages/replicache}/src/error-responses.js +0 -0
- /package/out/{replicache → packages/replicache}/src/expo-sqlite.js +0 -0
- /package/out/{replicache → packages/replicache}/src/frozen-json.js +0 -0
- /package/out/{replicache → packages/replicache}/src/get-default-puller.js +0 -0
- /package/out/{replicache → packages/replicache}/src/get-default-pusher.js +0 -0
- /package/out/{replicache → packages/replicache}/src/get-kv-store-provider.js +0 -0
- /package/out/{replicache → packages/replicache}/src/hash.js +0 -0
- /package/out/{replicache → packages/replicache}/src/http-request-info.js +0 -0
- /package/out/{replicache → packages/replicache}/src/impl.js +0 -0
- /package/out/{replicache → packages/replicache}/src/index-defs.js +0 -0
- /package/out/{replicache → packages/replicache}/src/kv/idb-store-with-mem-fallback.js +0 -0
- /package/out/{replicache → packages/replicache}/src/kv/idb-store.js +0 -0
- /package/out/{replicache → packages/replicache}/src/kv/mem-store.js +0 -0
- /package/out/{replicache → packages/replicache}/src/kv/op-sqlite/types.js +0 -0
- /package/out/{replicache → packages/replicache}/src/kv/read-impl.js +0 -0
- /package/out/{replicache → packages/replicache}/src/kv/write-impl-base.js +0 -0
- /package/out/{replicache → packages/replicache}/src/kv/write-impl.js +0 -0
- /package/out/{replicache → packages/replicache}/src/lazy.js +0 -0
- /package/out/{replicache → packages/replicache}/src/log-options.js +0 -0
- /package/out/{replicache → packages/replicache}/src/make-idb-name.js +0 -0
- /package/out/{replicache → packages/replicache}/src/mutation-recovery.js +0 -0
- /package/out/{replicache → packages/replicache}/src/new-client-channel.js +0 -0
- /package/out/{replicache → packages/replicache}/src/on-persist-channel.js +0 -0
- /package/out/{replicache → packages/replicache}/src/op-sqlite.js +0 -0
- /package/out/{replicache → packages/replicache}/src/patch-operation.js +0 -0
- /package/out/{replicache → packages/replicache}/src/pending-mutations.js +0 -0
- /package/out/{replicache → packages/replicache}/src/persist/client-gc.js +0 -0
- /package/out/{replicache → packages/replicache}/src/persist/client-group-gc.js +0 -0
- /package/out/{replicache → packages/replicache}/src/persist/collect-idb-databases.js +0 -0
- /package/out/{replicache → packages/replicache}/src/persist/gather-mem-only-visitor.js +0 -0
- /package/out/{replicache → packages/replicache}/src/persist/gather-not-cached-visitor.js +0 -0
- /package/out/{replicache → packages/replicache}/src/persist/heartbeat.js +0 -0
- /package/out/{replicache → packages/replicache}/src/persist/idb-databases-store-db-name.js +0 -0
- /package/out/{replicache → packages/replicache}/src/persist/idb-databases-store.js +0 -0
- /package/out/{replicache → packages/replicache}/src/persist/make-client-id.js +0 -0
- /package/out/{replicache → packages/replicache}/src/persist/refresh.js +0 -0
- /package/out/{replicache → packages/replicache}/src/process-scheduler.js +0 -0
- /package/out/{replicache → packages/replicache}/src/pusher.js +0 -0
- /package/out/{replicache → packages/replicache}/src/replicache-impl.js +0 -0
- /package/out/{replicache → packages/replicache}/src/report-error.js +0 -0
- /package/out/{replicache → packages/replicache}/src/request-idle.js +0 -0
- /package/out/{replicache → packages/replicache}/src/scan-iterator.js +0 -0
- /package/out/{replicache → packages/replicache}/src/scan-options.js +0 -0
- /package/out/{replicache → packages/replicache}/src/set-interval-with-signal.js +0 -0
- /package/out/{replicache → packages/replicache}/src/sqlite.js +0 -0
- /package/out/{replicache → packages/replicache}/src/subscriptions.js +0 -0
- /package/out/{replicache → packages/replicache}/src/sync/diff.js +0 -0
- /package/out/{replicache → packages/replicache}/src/sync/ids.js +0 -0
- /package/out/{replicache → packages/replicache}/src/sync/patch.js +0 -0
- /package/out/{replicache → packages/replicache}/src/sync/pull-error.js +0 -0
- /package/out/{replicache → packages/replicache}/src/sync/push.js +0 -0
- /package/out/{replicache → packages/replicache}/src/sync/request-id.js +0 -0
- /package/out/{replicache → packages/replicache}/src/sync/sync-head-name.js +0 -0
- /package/out/{replicache → packages/replicache}/src/to-error.js +0 -0
- /package/out/{replicache → packages/replicache}/src/transaction-closed-error.js +0 -0
- /package/out/{replicache → packages/replicache}/src/transactions.js +0 -0
- /package/out/{replicache → packages/replicache}/src/version.js +0 -0
- /package/out/{replicache → packages/replicache}/src/with-transactions.js +0 -0
- /package/out/{shared → packages/shared}/src/abort-error.js +0 -0
- /package/out/{shared → packages/shared}/src/arrays.js +0 -0
- /package/out/{shared → packages/shared}/src/asserts.js +0 -0
- /package/out/{shared → packages/shared}/src/bigint-json.js +0 -0
- /package/out/{shared → packages/shared}/src/binary-search.js +0 -0
- /package/out/{shared → packages/shared}/src/broadcast-channel.js +0 -0
- /package/out/{shared → packages/shared}/src/browser-env.js +0 -0
- /package/out/{shared → packages/shared}/src/btree-set.js +0 -0
- /package/out/{shared → packages/shared}/src/cache.js +0 -0
- /package/out/{shared → packages/shared}/src/centroid.js +0 -0
- /package/out/{shared → packages/shared}/src/config.js +0 -0
- /package/out/{shared → packages/shared}/src/custom-key-map.js +0 -0
- /package/out/{shared → packages/shared}/src/custom-key-set.js +0 -0
- /package/out/{shared → packages/shared}/src/deep-clone.js +0 -0
- /package/out/{shared → packages/shared}/src/deep-merge.js +0 -0
- /package/out/{shared → packages/shared}/src/document-visible.js +0 -0
- /package/out/{shared → packages/shared}/src/dotenv.js +0 -0
- /package/out/{shared → packages/shared}/src/error.js +0 -0
- /package/out/{shared → packages/shared}/src/has-own.js +0 -0
- /package/out/{shared → packages/shared}/src/hash.js +0 -0
- /package/out/{shared → packages/shared}/src/iterables.js +0 -0
- /package/out/{shared → packages/shared}/src/json-schema.js +0 -0
- /package/out/{shared → packages/shared}/src/json.js +0 -0
- /package/out/{shared → packages/shared}/src/logging-test-utils.js +0 -0
- /package/out/{shared → packages/shared}/src/logging.js +0 -0
- /package/out/{shared → packages/shared}/src/must.js +0 -0
- /package/out/{shared → packages/shared}/src/navigator.js +0 -0
- /package/out/{shared → packages/shared}/src/object-traversal.js +0 -0
- /package/out/{shared → packages/shared}/src/objects.js +0 -0
- /package/out/{shared → packages/shared}/src/options.js +0 -0
- /package/out/{shared → packages/shared}/src/parse-big-int.js +0 -0
- /package/out/{shared → packages/shared}/src/promise-race.js +0 -0
- /package/out/{shared → packages/shared}/src/rand.js +0 -0
- /package/out/{shared → packages/shared}/src/random-uint64.js +0 -0
- /package/out/{shared → packages/shared}/src/random-values.js +0 -0
- /package/out/{shared → packages/shared}/src/record-proxy.js +0 -0
- /package/out/{shared → packages/shared}/src/resolved-promises.js +0 -0
- /package/out/{shared → packages/shared}/src/sentinels.js +0 -0
- /package/out/{shared → packages/shared}/src/set-utils.js +0 -0
- /package/out/{shared → packages/shared}/src/size-of-value.js +0 -0
- /package/out/{shared → packages/shared}/src/sleep.js +0 -0
- /package/out/{shared → packages/shared}/src/sorted-entries.js +0 -0
- /package/out/{shared → packages/shared}/src/string-compare.js +0 -0
- /package/out/{shared → packages/shared}/src/subscribable.js +0 -0
- /package/out/{shared → packages/shared}/src/tdigest-schema.js +0 -0
- /package/out/{shared → packages/shared}/src/tdigest.js +0 -0
- /package/out/{z2s → packages/z2s}/src/compiler.js +0 -0
- /package/out/{z2s → packages/z2s}/src/sql.js +0 -0
- /package/out/{zero → packages/zero}/src/server/runner/main.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/auth/auth.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/auth/jwt.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/auth/load-permissions.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/auth/read-authorizer.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/auth/write-authorizer.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/config/network.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/config/normalize.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/config/server-context.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/custom/fetch.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/custom-queries/transform-query.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/create.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/delete-lite-db.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/lite-tables.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/mode-enum.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/pg-copy-binary.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/pg-copy.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/pg-to-lite.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/pg-type-parser.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/run-transaction.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/specs.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/statements.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/transaction-pool.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/db/warmup.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/observability/events.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/observability/metrics.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/scripts/decommission.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/scripts/deploy-permissions.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/scripts/permissions.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/server/inspector-delegate.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/server/logging.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/server/otel-diag-logger.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/server/otel-log-sink.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/server/priority-op.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/server/runner/run-worker.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/server/runner/runtime.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/server/runner/zero-dispatcher.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/server/worker-dispatcher.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/server/worker-urls.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/common/backfill-manager.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/common/change-stream-multiplexer.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/common/replica-schema.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/backfill-metadata.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/decommission.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/logical-replication/binary-reader.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/logical-replication/pgoutput-parser.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/logical-replication/stream.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/lsn.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/schema/published.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/pg/schema/validation.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/control.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/downstream.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/json.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/path.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/status.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/current/upstream.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-source/protocol/mod.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/backup-monitor.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/broadcast.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/change-streamer-service.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/change-streamer.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/forwarder.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/replica-monitor.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/storer.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/change-streamer/subscriber.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/heapz.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/http-service.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/limiter/sliding-window-limiter.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/litestream/commands.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/mutagen/error.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/mutagen/mutagen.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/mutagen/pusher.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/change-processor.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/incremental-sync.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/notifier.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/replication-status.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/replicator.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/reporter/recorder.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/reporter/report-schema.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/schema/change-log.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/schema/column-metadata.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/schema/constants.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/schema/replication-state.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/schema/table-metadata.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/write-worker-client.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/replicator/write-worker.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/runner.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/statz.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/active-users-gauge.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/client-schema.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/connection-context-manager.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/cvr-store.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/cvr.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/drain-coordinator.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/row-record-cache.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/row-set-signature.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/schema/cvr.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/snapshotter.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/tracer.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/services/view-syncer/ttl-clock.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/error-with-level.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/http.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/lexi-version.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/lite.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/names.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/pg-data-type.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/pg-types.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/pg-versions.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/processes.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/profiler.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/row-key.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/shards.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/sql.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/state-version.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/streams.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/strings.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/subscription.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/timeout.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/url-params.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/websocket-handoff.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/types/ws.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/workers/connect-params.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/workers/mutator.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/workers/replicator.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/workers/syncer-ws-message-handler.js +0 -0
- /package/out/{zero-cache → packages/zero-cache}/src/workers/syncer.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/active-clients-manager.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/bindings.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/client-error-kind-enum.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/connection.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/context.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/crud.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/delete-clients-manager.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/enable-analytics.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/error.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/http-string.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/inspector/client-group.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/inspector/client.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/inspector/html-dialog-prompt.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/inspector/inspector.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/inspector/lazy-inspector.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/inspector/query.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/ivm-branch.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/keys.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/log-options.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/make-mutate-property.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/make-replicache-mutators.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/metric-name-enum.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/metrics.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/mutation-tracker.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/mutator-proxy.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/options.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/query-manager.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/reload-error-handler.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/server-option.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/zero-poke-handler.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/client/zero-rep.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/mod.js +0 -0
- /package/out/{zero-client → packages/zero-client}/src/util/nanoid.js +0 -0
- /package/out/{zero-pg → packages/zero-pg}/src/mod.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/application-error.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/ast.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/client-schema.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/close-connection.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/custom-queries.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/data.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/delete-clients.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/down.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/error-kind-enum.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/error-origin-enum.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/error-reason-enum.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/inspect-down.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/mutate-server.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/mutation-id.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/mutation-type-enum.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/mutation.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/mutations-patch.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/ping.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/pong.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/primary-key.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/protocol-version.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/pull.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/queries-patch.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/query-hash.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/query-server.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/row-patch.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/up.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/update-auth.js +0 -0
- /package/out/{zero-protocol → packages/zero-protocol}/src/version.js +0 -0
- /package/out/{zero-react → packages/zero-react}/src/bindings.js +0 -0
- /package/out/{zero-react → packages/zero-react}/src/mod.js +0 -0
- /package/out/{zero-react → packages/zero-react}/src/zero.js +0 -0
- /package/out/{zero-schema → packages/zero-schema}/src/builder/relationship-builder.js +0 -0
- /package/out/{zero-schema → packages/zero-schema}/src/builder/schema-builder.js +0 -0
- /package/out/{zero-schema → packages/zero-schema}/src/builder/table-builder.js +0 -0
- /package/out/{zero-schema → packages/zero-schema}/src/compiled-permissions.js +0 -0
- /package/out/{zero-schema → packages/zero-schema}/src/name-mapper.js +0 -0
- /package/out/{zero-schema → packages/zero-schema}/src/permissions.js +0 -0
- /package/out/{zero-schema → packages/zero-schema}/src/schema-config.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/adapters/drizzle.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/adapters/kysely.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/adapters/postgresjs.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/adapters/prisma.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/logging.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/mod.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/pg-query-executor.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/process-mutations.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/push-processor.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/queries/process-queries.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/schema.js +0 -0
- /package/out/{zero-server → packages/zero-server}/src/zql-database.js +0 -0
- /package/out/{zero-solid → packages/zero-solid}/src/bindings.js +0 -0
- /package/out/{zero-solid → packages/zero-solid}/src/mod.js +0 -0
- /package/out/{zero-solid → packages/zero-solid}/src/zero.js +0 -0
- /package/out/{zero-types → packages/zero-types}/src/format.js +0 -0
- /package/out/{zero-types → packages/zero-types}/src/name-mapper.js +0 -0
- /package/out/{zql → packages/zql}/src/builder/filter.js +0 -0
- /package/out/{zql → packages/zql}/src/builder/like.js +0 -0
- /package/out/{zql → packages/zql}/src/error.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/array-view.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/cap.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/change.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/data.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/exists.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/fan-in.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/fan-out.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/filter-operators.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/filter-push.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/filter.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/join-utils.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/join.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/maybe-split-and-push-edit-change.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/memory-source.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/memory-storage.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/operator.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/push-accumulated.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/skip-yields.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/skip.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/source.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/stream.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/take.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/union-fan-out.js +0 -0
- /package/out/{zql → packages/zql}/src/ivm/view-apply-change.js +0 -0
- /package/out/{zql → packages/zql}/src/mutate/crud.js +0 -0
- /package/out/{zql → packages/zql}/src/mutate/custom.js +0 -0
- /package/out/{zql → packages/zql}/src/mutate/mutator-registry.js +0 -0
- /package/out/{zql → packages/zql}/src/mutate/mutator.js +0 -0
- /package/out/{zql → packages/zql}/src/planner/planner-builder.js +0 -0
- /package/out/{zql → packages/zql}/src/planner/planner-connection.js +0 -0
- /package/out/{zql → packages/zql}/src/planner/planner-constraint.js +0 -0
- /package/out/{zql → packages/zql}/src/planner/planner-debug.js +0 -0
- /package/out/{zql → packages/zql}/src/planner/planner-fan-in.js +0 -0
- /package/out/{zql → packages/zql}/src/planner/planner-fan-out.js +0 -0
- /package/out/{zql → packages/zql}/src/planner/planner-graph.js +0 -0
- /package/out/{zql → packages/zql}/src/planner/planner-node.js +0 -0
- /package/out/{zql → packages/zql}/src/planner/planner-source.js +0 -0
- /package/out/{zql → packages/zql}/src/planner/planner-terminus.js +0 -0
- /package/out/{zql → packages/zql}/src/query/complete-ordering.js +0 -0
- /package/out/{zql → packages/zql}/src/query/create-builder.js +0 -0
- /package/out/{zql → packages/zql}/src/query/error.js +0 -0
- /package/out/{zql → packages/zql}/src/query/escape-like.js +0 -0
- /package/out/{zql → packages/zql}/src/query/expression.js +0 -0
- /package/out/{zql → packages/zql}/src/query/measure-push-operator.js +0 -0
- /package/out/{zql → packages/zql}/src/query/metrics-delegate.js +0 -0
- /package/out/{zql → packages/zql}/src/query/named.js +0 -0
- /package/out/{zql → packages/zql}/src/query/query-delegate-base.js +0 -0
- /package/out/{zql → packages/zql}/src/query/query-internals.js +0 -0
- /package/out/{zql → packages/zql}/src/query/query-registry.js +0 -0
- /package/out/{zql → packages/zql}/src/query/query.js +0 -0
- /package/out/{zql → packages/zql}/src/query/runnable-query-impl.js +0 -0
- /package/out/{zql → packages/zql}/src/query/static-query.js +0 -0
- /package/out/{zql → packages/zql}/src/query/ttl.js +0 -0
- /package/out/{zql → packages/zql}/src/query/validate-input.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/database-storage.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/db.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/explain-queries.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/internal/sql-inline.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/internal/sql.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/internal/statement-cache.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/mod.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/query-builder.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/query-delegate.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/resolve-scalar-subqueries.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/sqlite-cost-model.js +0 -0
- /package/out/{zqlite → packages/zqlite}/src/sqlite-stat-fanout.js +0 -0
|
@@ -1,1235 +0,0 @@
|
|
|
1
|
-
import { assert, unreachable } from "../../../../shared/src/asserts.js";
|
|
2
|
-
import { must } from "../../../../shared/src/must.js";
|
|
3
|
-
import { InvalidConnectionRequest, InvalidConnectionRequestBaseCookie, Rehome } from "../../../../zero-protocol/src/error-kind-enum.js";
|
|
4
|
-
import { ZeroCache } from "../../../../zero-protocol/src/error-origin-enum.js";
|
|
5
|
-
import { ProtocolError, isProtocolError } from "../../../../zero-protocol/src/error.js";
|
|
6
|
-
import { MAX_TTL_MS, clampTTL } from "../../../../zql/src/query/ttl.js";
|
|
7
|
-
import { stringify } from "../../../../shared/src/bigint-json.js";
|
|
8
|
-
import { manualSpan, startAsyncSpan, startSpan } from "../../../../otel/src/span.js";
|
|
9
|
-
import { ZERO_VERSION_COLUMN_NAME } from "../replicator/schema/constants.js";
|
|
10
|
-
import { transformAndHashQuery } from "../../auth/read-authorizer.js";
|
|
11
|
-
import { getOrCreateCounter, getOrCreateLatencyHistogram, getOrCreateUpDownCounter } from "../../observability/metrics.js";
|
|
12
|
-
import { rowIDString } from "../../types/row-key.js";
|
|
13
|
-
import "../replicator/schema/replication-state.js";
|
|
14
|
-
import { parseSignature } from "./row-set-signature.js";
|
|
15
|
-
import { ResetPipelinesSignal } from "./snapshotter.js";
|
|
16
|
-
import "./pipeline-driver.js";
|
|
17
|
-
import { randInt } from "../../../../shared/src/rand.js";
|
|
18
|
-
import { Subscription } from "../../types/subscription.js";
|
|
19
|
-
import { CustomKeyMap } from "../../../../shared/src/custom-key-map.js";
|
|
20
|
-
import { ttlClockAsNumber, ttlClockFromNumber } from "./ttl-clock.js";
|
|
21
|
-
import { EMPTY_CVR_VERSION, cmpVersions, versionFromString, versionString, versionToCookie } from "./schema/types.js";
|
|
22
|
-
import { ProtocolErrorWithLevel, getLogLevel, wrapWithProtocolError } from "../../types/error-with-level.js";
|
|
23
|
-
import { isAuthErrorBody } from "../../auth/auth.js";
|
|
24
|
-
import { ClientHandler, startPoke } from "./client-handler.js";
|
|
25
|
-
import { tracer } from "./tracer.js";
|
|
26
|
-
import { CVRStore, ClientNotFoundError } from "./cvr-store.js";
|
|
27
|
-
import { CVRConfigDrivenUpdater, CVRQueryDrivenUpdater, nextEvictionTime } from "./cvr.js";
|
|
28
|
-
import { handleInspect } from "./inspect-handler.js";
|
|
29
|
-
import { resolver } from "@rocicorp/resolver";
|
|
30
|
-
import { Lock } from "@rocicorp/lock";
|
|
31
|
-
//#region ../zero-cache/src/services/view-syncer/view-syncer.ts
|
|
32
|
-
var PROTOCOL_VERSION_ATTR = "protocol.version";
|
|
33
|
-
var DEFAULT_KEEPALIVE_MS = 5e3;
|
|
34
|
-
function randomID() {
|
|
35
|
-
return randInt(1, Number.MAX_SAFE_INTEGER).toString(36);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* We update the ttlClock in flush that writes to the CVR but
|
|
39
|
-
* some flushes do not write to the CVR and in those cases we
|
|
40
|
-
* use a timer to update the ttlClock every minute.
|
|
41
|
-
*/
|
|
42
|
-
var TTL_CLOCK_INTERVAL = 6e4;
|
|
43
|
-
var ViewSyncerService = class {
|
|
44
|
-
id;
|
|
45
|
-
connContextManager;
|
|
46
|
-
#shard;
|
|
47
|
-
#lc;
|
|
48
|
-
#pipelines;
|
|
49
|
-
#stateChanges;
|
|
50
|
-
#drainCoordinator;
|
|
51
|
-
#keepaliveMs;
|
|
52
|
-
#slowHydrateThreshold;
|
|
53
|
-
#lastConnectTime = Date.now();
|
|
54
|
-
/**
|
|
55
|
-
* The TTL clock is used to determine the time at which queries are considered
|
|
56
|
-
* expired.
|
|
57
|
-
*/
|
|
58
|
-
#ttlClock;
|
|
59
|
-
/**
|
|
60
|
-
* The base time for the TTL clock. This is used to compute the current TTL
|
|
61
|
-
* clock value. The first time a connection is made, this is set to the
|
|
62
|
-
* current time. On subsequent connections, the TTL clock is computed as the
|
|
63
|
-
* difference between the current time and this base time.
|
|
64
|
-
*
|
|
65
|
-
* Every time we write the ttlClock this is update to the current time. That
|
|
66
|
-
* way we can compute how much time has passed since the last time we set the
|
|
67
|
-
* ttlClock. When we set the ttlClock we just increment it by the amount of
|
|
68
|
-
* time that has passed since the last time we set it.
|
|
69
|
-
*/
|
|
70
|
-
#ttlClockBase = Date.now();
|
|
71
|
-
/**
|
|
72
|
-
* We update the ttlClock every minute to ensure that it is not too much
|
|
73
|
-
* out of sync with the current time.
|
|
74
|
-
*/
|
|
75
|
-
#ttlClockInterval = 0;
|
|
76
|
-
#clients = /* @__PURE__ */ new Map();
|
|
77
|
-
#lock = new Lock();
|
|
78
|
-
#cvrStore;
|
|
79
|
-
#stopped = resolver();
|
|
80
|
-
#initialized = resolver();
|
|
81
|
-
#cvr;
|
|
82
|
-
#pipelinesSynced = false;
|
|
83
|
-
#expiredQueriesTimer = 0;
|
|
84
|
-
#authMaintenanceTimer = 0;
|
|
85
|
-
#setTimeout;
|
|
86
|
-
#customQueryTransformer;
|
|
87
|
-
#queryReplacements = /* @__PURE__ */ new Map();
|
|
88
|
-
#activeClients = getOrCreateUpDownCounter("sync", "active-clients", "Number of active sync clients");
|
|
89
|
-
#hydrations = getOrCreateCounter("sync", "hydration", "Number of query hydrations");
|
|
90
|
-
#hydrationTime = getOrCreateLatencyHistogram("sync", "hydration-time", "Time to hydrate a query.");
|
|
91
|
-
#transactionAdvanceTime = getOrCreateLatencyHistogram("sync", "advance-time", "Time to advance all queries for a given client group after applying a new transaction to the replica.");
|
|
92
|
-
#queryTransformations = getOrCreateCounter("sync", "query.transformations", "Number of query transformations performed");
|
|
93
|
-
#queryTransformationTime = getOrCreateLatencyHistogram("sync", "query.transformation-time", "Time to transform custom queries via API server.");
|
|
94
|
-
#queryTransformationHashChanges = getOrCreateCounter("sync", "query.transformation-hash-changes", "Number of times query transformation hash changed");
|
|
95
|
-
#queryTransformationNoOps = getOrCreateCounter("sync", "query.transformation-no-ops", "Number of times query transformation resulted in no-op (hash unchanged)");
|
|
96
|
-
#lockWaitTime = getOrCreateLatencyHistogram("sync", "lock-wait-time", "Time spent waiting to acquire the ViewSyncer lock.");
|
|
97
|
-
#pipelineResets = getOrCreateCounter("sync", "pipeline-resets", "Number of pipeline resets");
|
|
98
|
-
#rowSetSignatureDrifts = getOrCreateCounter("sync", "query.row-set-signature-drifts", "Number of times re-hydration of an unchanged query produced a different row-set signature than what is stored in the CVR (forcing a configVersion bump and full re-execution). Expected to be near-zero in steady state; persistent non-zero values indicate non-deterministic query execution (e.g. Cap operator picking different N-row subsets).");
|
|
99
|
-
#inspectorDelegate;
|
|
100
|
-
#config;
|
|
101
|
-
#runPriorityOp;
|
|
102
|
-
constructor(config, lc, shard, taskID, clientGroupID, cvrDb, pipelineDriver, versionChanges, drainCoordinator, slowHydrateThreshold, inspectorDelegate, connContextManager, customQueryTransformer, runPriorityOp, keepaliveMs = DEFAULT_KEEPALIVE_MS, setTimeoutFn = setTimeout.bind(globalThis)) {
|
|
103
|
-
this.#config = config;
|
|
104
|
-
this.id = clientGroupID;
|
|
105
|
-
this.connContextManager = connContextManager;
|
|
106
|
-
this.#shard = shard;
|
|
107
|
-
this.#lc = lc;
|
|
108
|
-
this.#pipelines = pipelineDriver;
|
|
109
|
-
this.#stateChanges = versionChanges;
|
|
110
|
-
this.#drainCoordinator = drainCoordinator;
|
|
111
|
-
this.#keepaliveMs = keepaliveMs;
|
|
112
|
-
this.#slowHydrateThreshold = slowHydrateThreshold;
|
|
113
|
-
this.#inspectorDelegate = inspectorDelegate;
|
|
114
|
-
this.#customQueryTransformer = customQueryTransformer;
|
|
115
|
-
this.#cvrStore = new CVRStore(lc, cvrDb, shard, taskID, clientGroupID, () => this.#stateChanges.cancel());
|
|
116
|
-
this.#setTimeout = setTimeoutFn;
|
|
117
|
-
this.#runPriorityOp = runPriorityOp;
|
|
118
|
-
this.keepalive();
|
|
119
|
-
}
|
|
120
|
-
#runInLockWithCVR(fn) {
|
|
121
|
-
const rid = randomID();
|
|
122
|
-
this.#lc.debug?.("about to acquire lock for cvr ", rid);
|
|
123
|
-
const lockWaitStart = performance.now();
|
|
124
|
-
return this.#lock.withLock(async () => {
|
|
125
|
-
this.#lockWaitTime.recordMs(performance.now() - lockWaitStart);
|
|
126
|
-
this.#lc.debug?.("acquired lock in #runInLockWithCVR ", rid);
|
|
127
|
-
const lc = this.#lc.withContext("lock", rid);
|
|
128
|
-
if (!this.#stateChanges.active) {
|
|
129
|
-
this.#lc.debug?.("state changes are inactive");
|
|
130
|
-
clearTimeout(this.#expiredQueriesTimer);
|
|
131
|
-
throw new ProtocolErrorWithLevel({
|
|
132
|
-
kind: Rehome,
|
|
133
|
-
message: "Reconnect required",
|
|
134
|
-
origin: ZeroCache
|
|
135
|
-
}, "info");
|
|
136
|
-
}
|
|
137
|
-
if (await this.#checkForShutdownConditionsInLock()) {
|
|
138
|
-
this.#lc.info?.(`closing clientGroupID=${this.id}`);
|
|
139
|
-
this.#initialized.reject("shut down before initialization completed");
|
|
140
|
-
this.#stateChanges.cancel();
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
if (!this.#cvr) {
|
|
144
|
-
this.#lc.debug?.("loading cvr");
|
|
145
|
-
this.#cvr = await this.#runPriorityOp(lc, "loading cvr", () => this.#cvrStore.load(lc, this.#lastConnectTime));
|
|
146
|
-
this.#ttlClock = this.#cvr.ttlClock;
|
|
147
|
-
this.#ttlClockBase = Date.now();
|
|
148
|
-
} else {
|
|
149
|
-
const now = Date.now();
|
|
150
|
-
this.#cvr = {
|
|
151
|
-
...this.#cvr,
|
|
152
|
-
ttlClock: this.#getTTLClock(now)
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
try {
|
|
156
|
-
await fn(lc, this.#cvr);
|
|
157
|
-
} catch (e) {
|
|
158
|
-
this.#cvr = void 0;
|
|
159
|
-
throw e;
|
|
160
|
-
} finally {
|
|
161
|
-
this.#scheduleAuthMaintenance(lc);
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
readyState() {
|
|
166
|
-
return Promise.race([this.#initialized.promise, this.#drainCoordinator.draining]);
|
|
167
|
-
}
|
|
168
|
-
async run() {
|
|
169
|
-
try {
|
|
170
|
-
if (await this.readyState() === "draining") {
|
|
171
|
-
this.#lc.debug?.(`draining view-syncer ${this.id} before running`);
|
|
172
|
-
this.stop();
|
|
173
|
-
}
|
|
174
|
-
for await (const { state } of this.#stateChanges) {
|
|
175
|
-
if (this.#drainCoordinator.shouldDrain()) {
|
|
176
|
-
this.#lc.debug?.(`draining view-syncer ${this.id} (elective)`);
|
|
177
|
-
break;
|
|
178
|
-
}
|
|
179
|
-
assert(state === "version-ready", "state should be version-ready");
|
|
180
|
-
await this.#runInLockWithCVR(async (lc, cvr) => {
|
|
181
|
-
const clientSchema = must(cvr.clientSchema, "cvr.clientSchema missing after initialization");
|
|
182
|
-
if (!this.#pipelines.initialized()) this.#pipelines.init(clientSchema);
|
|
183
|
-
if (cvr.replicaVersion !== null && cvr.version.stateVersion !== "00" && this.#pipelines.replicaVersion < cvr.replicaVersion) {
|
|
184
|
-
const message = `Cannot sync from older replica: CVR=${cvr.replicaVersion}, DB=${this.#pipelines.replicaVersion}`;
|
|
185
|
-
lc.info?.(`resetting CVR: ${message}`);
|
|
186
|
-
throw new ClientNotFoundError(message);
|
|
187
|
-
}
|
|
188
|
-
if (this.#pipelinesSynced) {
|
|
189
|
-
const result = await this.#advancePipelines(lc, cvr);
|
|
190
|
-
if (result === "success") return;
|
|
191
|
-
lc.info?.(`resetting pipelines: ${result.message}`);
|
|
192
|
-
this.#pipelineResets.add(1, { reason: result.reason });
|
|
193
|
-
this.#pipelines.reset(clientSchema);
|
|
194
|
-
this.#pipelinesSynced = false;
|
|
195
|
-
this.connContextManager.setSharedRetransformReady(false);
|
|
196
|
-
}
|
|
197
|
-
const version = this.#pipelines.advanceWithoutDiff();
|
|
198
|
-
const cvrVer = versionString(cvr.version);
|
|
199
|
-
if (version < cvr.version.stateVersion) {
|
|
200
|
-
lc.debug?.(`replica@${version} is behind cvr@${cvrVer}`);
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
lc.info?.(`init pipelines@${version} (cvr@${cvrVer})`);
|
|
204
|
-
const driftedQueryIDs = await this.#hydrateUnchangedQueries(lc, cvr);
|
|
205
|
-
await this.#syncQueryPipelineSet(lc, cvr, "missing", void 0, driftedQueryIDs);
|
|
206
|
-
this.#pipelinesSynced = true;
|
|
207
|
-
this.connContextManager.setSharedRetransformReady(true);
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
if (this.#drainCoordinator.shouldDrain()) this.#drainCoordinator.drainNextIn(this.#totalHydrationTimeMs());
|
|
211
|
-
await this.#cleanup();
|
|
212
|
-
} catch (e) {
|
|
213
|
-
this.#lc[getLogLevel(e)]?.(`stopping view-syncer ${this.id}: ${String(e)}`, e);
|
|
214
|
-
await this.#cleanup(e);
|
|
215
|
-
} finally {
|
|
216
|
-
await this.#cvrStore.flushed(this.#lc).catch((e) => this.#lc[getLogLevel(e)]?.(e));
|
|
217
|
-
this.#lc.info?.(`view-syncer ${this.id} finished`);
|
|
218
|
-
this.#stopped.resolve();
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
#removeExpiredQueries = async (lc, cvr) => {
|
|
222
|
-
if (hasExpiredQueries(cvr)) {
|
|
223
|
-
lc = lc.withContext("method", "#removeExpiredQueries");
|
|
224
|
-
lc.debug?.("Queries have expired");
|
|
225
|
-
if (this.#pipelinesSynced) await this.#syncQueryPipelineSet(lc, cvr, "missing", void 0);
|
|
226
|
-
}
|
|
227
|
-
this.#scheduleExpireEviction(lc, cvr);
|
|
228
|
-
};
|
|
229
|
-
#totalHydrationTimeMs() {
|
|
230
|
-
return this.#pipelines.totalHydrationTimeMs();
|
|
231
|
-
}
|
|
232
|
-
get queryCount() {
|
|
233
|
-
return this.#pipelines.initialized() ? this.#pipelines.queries().size : 0;
|
|
234
|
-
}
|
|
235
|
-
get rowCount() {
|
|
236
|
-
return this.#cvrStore.rowCount;
|
|
237
|
-
}
|
|
238
|
-
#keepAliveUntil = 0;
|
|
239
|
-
/**
|
|
240
|
-
* Guarantees that the ViewSyncer will remain running for at least
|
|
241
|
-
* its configured `keepaliveMs`. This is called when establishing a
|
|
242
|
-
* new connection to ensure that its associated ViewSyncer isn't
|
|
243
|
-
* shutdown before it receives the connection.
|
|
244
|
-
*
|
|
245
|
-
* @return `true` if the ViewSyncer will stay alive, `false` if the
|
|
246
|
-
* ViewSyncer is shutting down.
|
|
247
|
-
*/
|
|
248
|
-
keepalive() {
|
|
249
|
-
if (!this.#stateChanges.active) return false;
|
|
250
|
-
this.#keepAliveUntil = Date.now() + this.#keepaliveMs;
|
|
251
|
-
return true;
|
|
252
|
-
}
|
|
253
|
-
#shutdownTimer = null;
|
|
254
|
-
#scheduleShutdown(delayMs = 0) {
|
|
255
|
-
this.#shutdownTimer ??= this.#setTimeout(() => {
|
|
256
|
-
this.#shutdownTimer = null;
|
|
257
|
-
this.#runInLockWithCVR(() => {}).catch((e) => this.#stateChanges.fail(e));
|
|
258
|
-
}, delayMs);
|
|
259
|
-
}
|
|
260
|
-
async #checkForShutdownConditionsInLock() {
|
|
261
|
-
if (this.#clients.size > 0) return false;
|
|
262
|
-
await this.#cvrStore.flushed(this.#lc);
|
|
263
|
-
if (Date.now() <= this.#keepAliveUntil) {
|
|
264
|
-
this.#scheduleShutdown(this.#keepaliveMs);
|
|
265
|
-
return false;
|
|
266
|
-
}
|
|
267
|
-
return this.#clients.size === 0;
|
|
268
|
-
}
|
|
269
|
-
#deleteClientDueToDisconnect(clientID, client) {
|
|
270
|
-
this.connContextManager.closeConnection({
|
|
271
|
-
clientID,
|
|
272
|
-
wsID: client.wsID
|
|
273
|
-
});
|
|
274
|
-
if (this.#clients.get(clientID) === client) {
|
|
275
|
-
this.#clients.delete(clientID);
|
|
276
|
-
if (this.#clients.size === 0) {
|
|
277
|
-
if (this.#ttlClock !== void 0) this.#updateTTLClockInCVRWithoutLock(this.#lc);
|
|
278
|
-
this.#stopExpireTimer();
|
|
279
|
-
this.#scheduleShutdown();
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
#stopExpireTimer() {
|
|
284
|
-
this.#lc.debug?.("Stopping expired queries timer");
|
|
285
|
-
clearTimeout(this.#expiredQueriesTimer);
|
|
286
|
-
this.#expiredQueriesTimer = 0;
|
|
287
|
-
}
|
|
288
|
-
#stopAuthMaintenanceTimer() {
|
|
289
|
-
if (this.#authMaintenanceTimer !== 0) this.#lc.debug?.("Stopping auth maintenance timer");
|
|
290
|
-
clearTimeout(this.#authMaintenanceTimer);
|
|
291
|
-
this.#authMaintenanceTimer = 0;
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* Schedules the auth maintenance wakeup from coordinator-derived
|
|
295
|
-
* deadlines. The timer plumbing is intentionally separate from the actual
|
|
296
|
-
* revalidation/retransform work so future policy changes only need to update
|
|
297
|
-
* the maintenance workers, not the wakeup logic.
|
|
298
|
-
*/
|
|
299
|
-
#scheduleAuthMaintenance(lc) {
|
|
300
|
-
this.#stopAuthMaintenanceTimer();
|
|
301
|
-
const plan = this.connContextManager.planMaintenance();
|
|
302
|
-
if (plan.earliestDeadlineAt === void 0) {
|
|
303
|
-
lc.debug?.("No auth maintenance wakeup scheduled");
|
|
304
|
-
return;
|
|
305
|
-
}
|
|
306
|
-
const delay = Math.max(0, plan.earliestDeadlineAt - Date.now());
|
|
307
|
-
lc.debug?.(`Scheduling auth maintenance timer at ${new Date(plan.earliestDeadlineAt).toISOString()}`, {
|
|
308
|
-
delay,
|
|
309
|
-
earliestDeadlineAt: plan.earliestDeadlineAt
|
|
310
|
-
});
|
|
311
|
-
this.#authMaintenanceTimer = this.#setTimeout(async () => {
|
|
312
|
-
try {
|
|
313
|
-
this.#authMaintenanceTimer = 0;
|
|
314
|
-
await this.#runInLockWithCVR((lc, cvr) => this.#runAuthMaintenance(lc, cvr));
|
|
315
|
-
} catch (e) {
|
|
316
|
-
this.#stateChanges.fail(e instanceof Error ? e : new Error(String(e)));
|
|
317
|
-
}
|
|
318
|
-
}, delay);
|
|
319
|
-
}
|
|
320
|
-
async #runAuthMaintenance(lc, _cvr) {
|
|
321
|
-
const plan = this.connContextManager.planMaintenance();
|
|
322
|
-
if (plan.dueRevalidations.length === 0 && !plan.dueRetransform) {
|
|
323
|
-
lc.debug?.("Auth maintenance woke up with no due work");
|
|
324
|
-
return;
|
|
325
|
-
}
|
|
326
|
-
lc.debug?.("Auth maintenance woke up with pending work", {
|
|
327
|
-
dueRevalidations: plan.dueRevalidations.length,
|
|
328
|
-
dueRetransform: plan.dueRetransform
|
|
329
|
-
});
|
|
330
|
-
for (const connCtx of plan.dueRevalidations) try {
|
|
331
|
-
await this.#validateConnection(connCtx);
|
|
332
|
-
} catch (e) {
|
|
333
|
-
if (isProtocolError(e) && isTransformFailedError(e)) {
|
|
334
|
-
lc.warn?.("Scheduled auth revalidation failed; deferring auth maintenance", {
|
|
335
|
-
clientID: connCtx.clientID,
|
|
336
|
-
wsID: connCtx.wsID,
|
|
337
|
-
message: e.message
|
|
338
|
-
});
|
|
339
|
-
this.connContextManager.deferMaintenance("revalidate");
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
throw e;
|
|
343
|
-
}
|
|
344
|
-
if (this.connContextManager.planMaintenance().dueRetransform) await this.#runBackgroundRetransform(lc);
|
|
345
|
-
}
|
|
346
|
-
initConnection(selector, initConnectionMessage) {
|
|
347
|
-
this.#lc.debug?.("viewSyncer.initConnection");
|
|
348
|
-
return startSpan(tracer, "vs.initConnection", () => {
|
|
349
|
-
const connCtx = this.connContextManager.mustGetConnectionContext(selector);
|
|
350
|
-
const lc = this.#lc.withContext("clientID", connCtx.clientID).withContext("wsID", connCtx.wsID);
|
|
351
|
-
const downstream = Subscription.create({ cleanup: (_, err) => {
|
|
352
|
-
err ? lc[getLogLevel(err)]?.(`client closed with error`, err) : lc.info?.("client closed");
|
|
353
|
-
this.#deleteClientDueToDisconnect(connCtx.clientID, newClient);
|
|
354
|
-
this.#activeClients.add(-1, { [PROTOCOL_VERSION_ATTR]: connCtx.protocolVersion });
|
|
355
|
-
} });
|
|
356
|
-
this.#activeClients.add(1, { [PROTOCOL_VERSION_ATTR]: connCtx.protocolVersion });
|
|
357
|
-
if (this.#clients.size === 0) this.#ttlClockBase = Date.now();
|
|
358
|
-
const newClient = new ClientHandler(lc, this.id, connCtx.clientID, connCtx.wsID, this.#shard, connCtx.baseCookie, downstream);
|
|
359
|
-
this.#clients.get(connCtx.clientID)?.close(`replaced by wsID: ${connCtx.wsID}`);
|
|
360
|
-
this.#clients.set(connCtx.clientID, newClient);
|
|
361
|
-
startAsyncSpan(tracer, "vs.initConnection.async", () => this.#runInLockForClient(connCtx, initConnectionMessage, async (lc, clientID, msg, cvr) => {
|
|
362
|
-
if (cvr.clientSchema === null && !msg.clientSchema) throw new ProtocolErrorWithLevel({
|
|
363
|
-
kind: InvalidConnectionRequest,
|
|
364
|
-
message: "The initConnection message for a new client group must include client schema.",
|
|
365
|
-
origin: ZeroCache
|
|
366
|
-
}, "warn");
|
|
367
|
-
if (!await this.#validateConnection(connCtx)) return;
|
|
368
|
-
await this.#handleConfigUpdate(lc, clientID, msg, cvr, "all", connCtx.profileID ?? `cg${this.id}`, connCtx);
|
|
369
|
-
this.#initialized.resolve("initialized");
|
|
370
|
-
}, newClient)).catch((e) => newClient.fail(e));
|
|
371
|
-
return downstream;
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
|
-
async changeDesiredQueries(selector, msg) {
|
|
375
|
-
await this.#runInLockForClient(selector, msg, (lc, clientID, msg, cvr) => this.#handleConfigUpdate(lc, clientID, msg, cvr, "missing", void 0, this.connContextManager.mustGetConnectionContext(selector)));
|
|
376
|
-
}
|
|
377
|
-
async updateAuth(selector, msg, authRevisionChanged) {
|
|
378
|
-
await this.#runInLockForClient(selector, msg, async (lc, clientID, _, cvr) => {
|
|
379
|
-
if (!authRevisionChanged) {
|
|
380
|
-
lc.debug?.("Auth unchanged, skipping query re-transformation");
|
|
381
|
-
return;
|
|
382
|
-
}
|
|
383
|
-
lc.debug?.("Auth changed, re-validating and re-transforming queries");
|
|
384
|
-
const connCtx = this.connContextManager.mustGetConnectionContext(selector);
|
|
385
|
-
if (!this.#pipelinesSynced) {
|
|
386
|
-
if (!await this.#validateConnection(connCtx)) return;
|
|
387
|
-
}
|
|
388
|
-
return await this.#handleConfigUpdate(lc, clientID, {}, cvr, "all", void 0, connCtx);
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
async deleteClients(selector, msg) {
|
|
392
|
-
return await this.#runInLockForClient(selector, [msg[0], { deleted: msg[1] }], (lc, clientID, msg, cvr) => this.#handleConfigUpdate(lc, clientID, msg, cvr, "missing", void 0, this.connContextManager.mustGetConnectionContext(selector))) ?? [];
|
|
393
|
-
}
|
|
394
|
-
#getTTLClock(now) {
|
|
395
|
-
const delta = now - this.#ttlClockBase;
|
|
396
|
-
assert(this.#ttlClock !== void 0, "ttlClock should be defined");
|
|
397
|
-
const ttlClock = ttlClockFromNumber(ttlClockAsNumber(this.#ttlClock) + delta);
|
|
398
|
-
assert(ttlClockAsNumber(ttlClock) <= now, "ttlClock should be less than or equal to now");
|
|
399
|
-
this.#ttlClock = ttlClock;
|
|
400
|
-
this.#ttlClockBase = now;
|
|
401
|
-
return ttlClock;
|
|
402
|
-
}
|
|
403
|
-
#flushUpdater(lc, updater) {
|
|
404
|
-
return startAsyncSpan(tracer, "vs.#flushUpdater", () => this.#runPriorityOp(lc, "flushing cvr", async () => {
|
|
405
|
-
const now = Date.now();
|
|
406
|
-
const ttlClock = this.#getTTLClock(now);
|
|
407
|
-
const { cvr, flushed } = await updater.flush(lc, this.#lastConnectTime, now, ttlClock);
|
|
408
|
-
if (flushed) this.#startTTLClockInterval(lc);
|
|
409
|
-
return cvr;
|
|
410
|
-
}));
|
|
411
|
-
}
|
|
412
|
-
#startTTLClockInterval(lc) {
|
|
413
|
-
this.#stopTTLClockInterval();
|
|
414
|
-
this.#ttlClockInterval = this.#setTimeout(() => {
|
|
415
|
-
this.#updateTTLClockInCVRWithoutLock(lc);
|
|
416
|
-
this.#startTTLClockInterval(lc);
|
|
417
|
-
}, TTL_CLOCK_INTERVAL);
|
|
418
|
-
}
|
|
419
|
-
#stopTTLClockInterval() {
|
|
420
|
-
clearTimeout(this.#ttlClockInterval);
|
|
421
|
-
this.#ttlClockInterval = 0;
|
|
422
|
-
}
|
|
423
|
-
#updateTTLClockInCVRWithoutLock(lc) {
|
|
424
|
-
const rid = randomID();
|
|
425
|
-
lc.debug?.("Syncing ttlClock", rid);
|
|
426
|
-
const start = Date.now();
|
|
427
|
-
const ttlClock = this.#getTTLClock(start);
|
|
428
|
-
this.#cvrStore.updateTTLClock(ttlClock, start).then(() => {
|
|
429
|
-
lc.debug?.("Synced ttlClock", rid, `in ${Date.now() - start} ms`);
|
|
430
|
-
}).catch((e) => {
|
|
431
|
-
lc.warn?.("failed to update TTL clock", rid, `after ${Date.now() - start} ms`, e);
|
|
432
|
-
});
|
|
433
|
-
}
|
|
434
|
-
async #updateCVRConfig(lc, cvr, clientID, customQueryTransformMode, connCtx, fn) {
|
|
435
|
-
const updater = new CVRConfigDrivenUpdater(this.#cvrStore, cvr, this.#shard);
|
|
436
|
-
updater.ensureClient(clientID);
|
|
437
|
-
const patches = fn(updater);
|
|
438
|
-
this.#cvr = await this.#flushUpdater(lc, updater);
|
|
439
|
-
if (cmpVersions(cvr.version, this.#cvr.version) < 0) {
|
|
440
|
-
const newCVR = this.#cvr;
|
|
441
|
-
await startAsyncSpan(tracer, "vs.#updateCVRConfig.pokeClients", async () => {
|
|
442
|
-
const pokers = startPoke(this.#getClients(cvr.version), newCVR.version);
|
|
443
|
-
for (const patch of patches) await pokers.addPatch(patch);
|
|
444
|
-
await pokers.end(newCVR.version);
|
|
445
|
-
});
|
|
446
|
-
}
|
|
447
|
-
if (this.#pipelinesSynced) await this.#syncQueryPipelineSet(lc, this.#cvr, customQueryTransformMode, connCtx);
|
|
448
|
-
return this.#cvr;
|
|
449
|
-
}
|
|
450
|
-
/**
|
|
451
|
-
* Runs the given `fn` to process the `msg` from within the `#lock`,
|
|
452
|
-
* optionally adding the `newClient` if supplied.
|
|
453
|
-
*/
|
|
454
|
-
#runInLockForClient(selector, msg, fn, newClient) {
|
|
455
|
-
this.#lc.debug?.("viewSyncer.#runInLockForClient");
|
|
456
|
-
const { clientID, wsID } = selector;
|
|
457
|
-
const [cmd, body] = msg;
|
|
458
|
-
if (newClient || !this.#clients.has(clientID)) this.#lastConnectTime = Date.now();
|
|
459
|
-
return startAsyncSpan(tracer, `vs.#runInLockForClient(${cmd})`, async (span) => {
|
|
460
|
-
span.setAttribute("clientGroupID", this.id);
|
|
461
|
-
span.setAttribute("clientID", clientID);
|
|
462
|
-
let client;
|
|
463
|
-
let result;
|
|
464
|
-
let connCtx;
|
|
465
|
-
try {
|
|
466
|
-
await this.#runInLockWithCVR(async (lc, cvr) => {
|
|
467
|
-
lc = lc.withContext("clientID", clientID).withContext("wsID", wsID).withContext("cmd", cmd);
|
|
468
|
-
lc.debug?.("acquired lock for cvr");
|
|
469
|
-
client = this.#clients.get(clientID);
|
|
470
|
-
if (client?.wsID !== wsID) {
|
|
471
|
-
lc.debug?.("mismatched wsID", client?.wsID, wsID);
|
|
472
|
-
return;
|
|
473
|
-
}
|
|
474
|
-
connCtx = this.connContextManager.getConnectionContext(selector);
|
|
475
|
-
if (newClient) {
|
|
476
|
-
assert(newClient === client, "newClient must match existing client");
|
|
477
|
-
checkClientAndCVRVersions(client.version(), cvr.version);
|
|
478
|
-
} else if (!this.#clients.has(clientID)) lc.warn?.(`Processing ${cmd} before initConnection was received`);
|
|
479
|
-
lc.debug?.(cmd, body);
|
|
480
|
-
result = await fn(lc, clientID, body, cvr);
|
|
481
|
-
});
|
|
482
|
-
} catch (e) {
|
|
483
|
-
this.#lc.withContext("clientID", clientID).withContext("wsID", wsID).withContext("cmd", cmd)[getLogLevel(e)]?.(`closing connection with error`, e);
|
|
484
|
-
if (connCtx) this.connContextManager.failConnection(selector, connCtx.revision);
|
|
485
|
-
if (client) client.fail(e);
|
|
486
|
-
else throw e;
|
|
487
|
-
}
|
|
488
|
-
return result;
|
|
489
|
-
});
|
|
490
|
-
}
|
|
491
|
-
#getClients(atVersion) {
|
|
492
|
-
const clients = [...this.#clients.values()];
|
|
493
|
-
return atVersion ? clients.filter((c) => cmpVersions(c.version() ?? EMPTY_CVR_VERSION, atVersion) === 0) : clients;
|
|
494
|
-
}
|
|
495
|
-
#handleConfigUpdate = (lc, clientID, { clientSchema, deleted, desiredQueriesPatch, activeClients }, cvr, customQueryTransformMode, profileID, connCtx) => startAsyncSpan(tracer, "vs.#handleConfigUpdate", async () => {
|
|
496
|
-
const deletedClientIDs = [];
|
|
497
|
-
const deletedClientGroupIDs = [];
|
|
498
|
-
cvr = await this.#updateCVRConfig(lc, cvr, clientID, customQueryTransformMode, connCtx, (updater) => {
|
|
499
|
-
const { ttlClock } = cvr;
|
|
500
|
-
const patches = [];
|
|
501
|
-
if (clientSchema) updater.setClientSchema(lc, clientSchema);
|
|
502
|
-
if (profileID) updater.setProfileID(lc, profileID);
|
|
503
|
-
lc.debug?.(`applying ${desiredQueriesPatch?.length ?? 0} query patches`);
|
|
504
|
-
if (desiredQueriesPatch?.length) for (const patch of desiredQueriesPatch) switch (patch.op) {
|
|
505
|
-
case "put":
|
|
506
|
-
patches.push(...updater.putDesiredQueries(clientID, [patch]));
|
|
507
|
-
break;
|
|
508
|
-
case "del":
|
|
509
|
-
patches.push(...updater.markDesiredQueriesAsInactive(clientID, [patch.hash], ttlClock));
|
|
510
|
-
break;
|
|
511
|
-
case "clear":
|
|
512
|
-
patches.push(...updater.clearDesiredQueries(clientID));
|
|
513
|
-
break;
|
|
514
|
-
}
|
|
515
|
-
const clientIDsToDelete = /* @__PURE__ */ new Set();
|
|
516
|
-
if (activeClients) {
|
|
517
|
-
const allClientIDs = Object.keys(cvr.clients);
|
|
518
|
-
const activeClientsSet = new Set(activeClients);
|
|
519
|
-
for (const id of allClientIDs) if (!activeClientsSet.has(id)) clientIDsToDelete.add(id);
|
|
520
|
-
}
|
|
521
|
-
if (deleted?.clientIDs?.length) for (const cid of deleted.clientIDs) {
|
|
522
|
-
assert(cid !== clientID, "cannot delete self");
|
|
523
|
-
clientIDsToDelete.add(cid);
|
|
524
|
-
}
|
|
525
|
-
for (const cid of clientIDsToDelete) {
|
|
526
|
-
const patchesDueToClient = updater.deleteClient(cid, ttlClock);
|
|
527
|
-
patches.push(...patchesDueToClient);
|
|
528
|
-
deletedClientIDs.push(cid);
|
|
529
|
-
}
|
|
530
|
-
if (deleted?.clientGroupIDs?.length) lc.debug?.(`ignoring ${deleted.clientGroupIDs.length} deprecated client group deletes`);
|
|
531
|
-
return patches;
|
|
532
|
-
});
|
|
533
|
-
if (deletedClientIDs.length && deleted?.clientIDs?.length || deletedClientGroupIDs.length) {
|
|
534
|
-
const clients = this.#getClients();
|
|
535
|
-
await startAsyncSpan(tracer, "vs.#handleConfigUpdate.sendDeleteClients", () => Promise.allSettled(clients.map((client) => client.sendDeleteClients(lc, deletedClientIDs, deletedClientGroupIDs))));
|
|
536
|
-
}
|
|
537
|
-
this.#scheduleExpireEviction(lc, cvr);
|
|
538
|
-
return deletedClientIDs;
|
|
539
|
-
});
|
|
540
|
-
#scheduleExpireEviction(lc, cvr) {
|
|
541
|
-
const { ttlClock } = cvr;
|
|
542
|
-
this.#stopExpireTimer();
|
|
543
|
-
const next = nextEvictionTime(cvr);
|
|
544
|
-
if (next === void 0) {
|
|
545
|
-
lc.debug?.("no inactive queries with ttl");
|
|
546
|
-
return;
|
|
547
|
-
}
|
|
548
|
-
const delay = Math.max(50, Math.min(ttlClockAsNumber(next) - ttlClockAsNumber(ttlClock) + 50, MAX_TTL_MS));
|
|
549
|
-
lc.debug?.("Scheduling eviction timer to run in ", delay, "ms");
|
|
550
|
-
this.#expiredQueriesTimer = this.#setTimeout(() => {
|
|
551
|
-
this.#expiredQueriesTimer = 0;
|
|
552
|
-
this.#runInLockWithCVR((lc, cvr) => this.#removeExpiredQueries(lc, cvr)).catch((e) => this.#stateChanges.fail(e));
|
|
553
|
-
}, delay);
|
|
554
|
-
}
|
|
555
|
-
/**
|
|
556
|
-
* Adds and hydrates pipelines for queries whose results are already
|
|
557
|
-
* recorded in the CVR. Namely:
|
|
558
|
-
*
|
|
559
|
-
* 1. The CVR state version and database version are the same.
|
|
560
|
-
* 2. The transformation hash of the queries equal those in the CVR.
|
|
561
|
-
*
|
|
562
|
-
* Note that by definition, only "got" queries can satisfy condition (2),
|
|
563
|
-
* as desired queries do not have a transformation hash.
|
|
564
|
-
*
|
|
565
|
-
* This is an initialization step that sets up pipeline state without
|
|
566
|
-
* the expensive of loading and diffing CVR row state.
|
|
567
|
-
*
|
|
568
|
-
* This must be called from within the #lock.
|
|
569
|
-
*/
|
|
570
|
-
async #hydrateUnchangedQueries(lc, cvr) {
|
|
571
|
-
assert(this.#pipelines.initialized(), "pipelines must be initialized");
|
|
572
|
-
const dbVersion = this.#pipelines.currentVersion();
|
|
573
|
-
const cvrVersion = cvr.version;
|
|
574
|
-
if (cvrVersion.stateVersion !== dbVersion) {
|
|
575
|
-
lc.info?.(`CVR (${versionToCookie(cvrVersion)}) is behind db ${dbVersion}`);
|
|
576
|
-
return /* @__PURE__ */ new Set();
|
|
577
|
-
}
|
|
578
|
-
const gotQueries = Object.entries(cvr.queries).filter(([_, state]) => state.transformationHash !== void 0);
|
|
579
|
-
const customQueries = /* @__PURE__ */ new Map();
|
|
580
|
-
const otherQueries = [];
|
|
581
|
-
let inactivatedCount = 0;
|
|
582
|
-
for (const [, query] of gotQueries) {
|
|
583
|
-
if (query.type !== "internal" && Object.values(query.clientState).every(({ inactivatedAt }) => inactivatedAt !== void 0)) {
|
|
584
|
-
inactivatedCount++;
|
|
585
|
-
continue;
|
|
586
|
-
}
|
|
587
|
-
if (query.type === "custom") customQueries.set(query.id, query);
|
|
588
|
-
else otherQueries.push(query);
|
|
589
|
-
}
|
|
590
|
-
const transformedQueries = [];
|
|
591
|
-
let customErrorCount = 0;
|
|
592
|
-
let customHashMismatchCount = 0;
|
|
593
|
-
let otherHashMismatchCount = 0;
|
|
594
|
-
if (customQueries.size > 0 && !this.#customQueryTransformer) lc.warn?.("Custom/named queries were requested but no `ZERO_QUERY_URL` is configured for Zero Cache.");
|
|
595
|
-
const backgroundContext = this.connContextManager.mustGetBackgroundConnectionContext();
|
|
596
|
-
const customQueryTransformer = this.#customQueryTransformer;
|
|
597
|
-
if (customQueryTransformer && customQueries.size > 0) {
|
|
598
|
-
const transformedCustomQueries = await this.#runPriorityOp(lc, "#hydrateUnchangedQueries transforming custom queries", () => customQueryTransformer.transform(backgroundContext, customQueries.values()));
|
|
599
|
-
if (transformedCustomQueries.kind === "success" && !transformedCustomQueries.cached) this.connContextManager.validateConnection(backgroundContext, backgroundContext.revision, transformedCustomQueries.validation);
|
|
600
|
-
if (Array.isArray(transformedCustomQueries.result)) for (const q of transformedCustomQueries.result) if ("error" in q) customErrorCount++;
|
|
601
|
-
else if (q.transformationHash !== customQueries.get(q.id)?.transformationHash) customHashMismatchCount++;
|
|
602
|
-
else transformedQueries.push(q);
|
|
603
|
-
}
|
|
604
|
-
for (const q of otherQueries) {
|
|
605
|
-
const transformed = transformAndHashQuery(lc, q.id, q.ast, must(this.#pipelines.currentPermissions()).permissions ?? { tables: {} }, backgroundContext.auth?.type === "jwt" ? backgroundContext.auth : void 0, q.type === "internal");
|
|
606
|
-
if (transformed.transformationHash === q.transformationHash) transformedQueries.push(transformed);
|
|
607
|
-
else otherHashMismatchCount++;
|
|
608
|
-
}
|
|
609
|
-
lc.info?.(`hydrateUnchangedQueries: ${gotQueries.length} got queries, ${inactivatedCount} inactivated, ${customErrorCount} custom transform errors, ${customHashMismatchCount} custom hash mismatches, ${otherHashMismatchCount} other hash mismatches, ${transformedQueries.length} hydrated`);
|
|
610
|
-
const driftedQueryIDs = /* @__PURE__ */ new Set();
|
|
611
|
-
for (const { id: queryID, transformationHash, transformedAst } of transformedQueries) {
|
|
612
|
-
const timer = new TimeSliceTimer(lc);
|
|
613
|
-
let count = 0;
|
|
614
|
-
await startAsyncSpan(tracer, "vs.#hydrateUnchangedQueries.addQuery", async (span) => {
|
|
615
|
-
span.setAttribute("queryHash", queryID);
|
|
616
|
-
span.setAttribute("transformationHash", transformationHash);
|
|
617
|
-
span.setAttribute("table", transformedAst.table);
|
|
618
|
-
for (const change of this.#pipelines.addQuery(transformationHash, queryID, transformedAst, await timer.start())) if (change === "yield") await timer.yieldProcess("yield in hydrateUnchangedQueries");
|
|
619
|
-
else count++;
|
|
620
|
-
});
|
|
621
|
-
const elapsed = timer.totalElapsed();
|
|
622
|
-
this.#hydrations.add(1);
|
|
623
|
-
this.#hydrationTime.recordMs(elapsed);
|
|
624
|
-
this.#addQueryMaterializationServerMetric(transformationHash, elapsed);
|
|
625
|
-
this.#inspectorDelegate.addQuery(transformationHash, transformedAst);
|
|
626
|
-
lc.debug?.(`hydrated ${count} rows for ${queryID} (${elapsed} ms)`);
|
|
627
|
-
const storedSigHex = cvr.queries[queryID]?.rowSetSignature;
|
|
628
|
-
if (storedSigHex !== void 0 && storedSigHex !== null) {
|
|
629
|
-
const priorSig = parseSignature(storedSigHex);
|
|
630
|
-
const candidateSig = this.#pipelines.rowSetSignature(queryID) ?? 0n;
|
|
631
|
-
if (priorSig !== candidateSig) {
|
|
632
|
-
lc.warn?.(`rowSetSignature drift for query ${queryID}: prior=${priorSig.toString(16)} new=${candidateSig.toString(16)} (${count} rows). Removing from pipelines for full re-execution.`);
|
|
633
|
-
this.#rowSetSignatureDrifts.add(1);
|
|
634
|
-
this.#pipelines.removeQuery(queryID);
|
|
635
|
-
driftedQueryIDs.add(queryID);
|
|
636
|
-
}
|
|
637
|
-
}
|
|
638
|
-
}
|
|
639
|
-
return driftedQueryIDs;
|
|
640
|
-
}
|
|
641
|
-
#processTransformedCustomQueries(lc, transformedCustomQueries, cb, customQueryMap) {
|
|
642
|
-
if ("kind" in transformedCustomQueries) {
|
|
643
|
-
this.#sendQueryTransformErrorToClients(customQueryMap, transformedCustomQueries);
|
|
644
|
-
return transformedCustomQueries.queryIDs;
|
|
645
|
-
}
|
|
646
|
-
const appQueryErrors = [];
|
|
647
|
-
for (const q of transformedCustomQueries) {
|
|
648
|
-
if ("error" in q) {
|
|
649
|
-
const errorMessage = `Error transforming custom query ${q.name}: ${q.error}${q.details ? ` ${JSON.stringify(q.details)}` : ""}`;
|
|
650
|
-
lc.warn?.(errorMessage, q);
|
|
651
|
-
appQueryErrors.push(q);
|
|
652
|
-
continue;
|
|
653
|
-
}
|
|
654
|
-
cb(q);
|
|
655
|
-
}
|
|
656
|
-
this.#sendQueryTransformErrorToClients(customQueryMap, appQueryErrors);
|
|
657
|
-
return appQueryErrors.map((q) => q.id);
|
|
658
|
-
}
|
|
659
|
-
#sendQueryTransformErrorToClients(customQueryMap, errorOrErrors) {
|
|
660
|
-
const getAffectedClientIDs = (queryIDs) => {
|
|
661
|
-
const clientIds = /* @__PURE__ */ new Set();
|
|
662
|
-
for (const queryID of queryIDs) {
|
|
663
|
-
const q = customQueryMap.get(queryID);
|
|
664
|
-
assert(q, `got an error for query ${queryID} that does not map back to a custom query`);
|
|
665
|
-
Object.keys(q.clientState).forEach((id) => clientIds.add(id));
|
|
666
|
-
}
|
|
667
|
-
return clientIds;
|
|
668
|
-
};
|
|
669
|
-
if ("queryIDs" in errorOrErrors) {
|
|
670
|
-
for (const clientId of getAffectedClientIDs(errorOrErrors.queryIDs)) this.#clients.get(clientId)?.sendQueryTransformFailedError(errorOrErrors);
|
|
671
|
-
return;
|
|
672
|
-
}
|
|
673
|
-
const appErrorGroups = /* @__PURE__ */ new Map();
|
|
674
|
-
for (const err of errorOrErrors) for (const clientId of getAffectedClientIDs([err.id])) {
|
|
675
|
-
const group = appErrorGroups.get(clientId) ?? [];
|
|
676
|
-
group.push(err);
|
|
677
|
-
appErrorGroups.set(clientId, group);
|
|
678
|
-
}
|
|
679
|
-
for (const [clientId, errors] of appErrorGroups) this.#clients.get(clientId)?.sendQueryTransformApplicationErrors(errors);
|
|
680
|
-
}
|
|
681
|
-
#addQueryMaterializationServerMetric(queryID, elapsed) {
|
|
682
|
-
this.#inspectorDelegate.addMetric("query-materialization-server", elapsed, queryID);
|
|
683
|
-
}
|
|
684
|
-
/**
|
|
685
|
-
* Adds and/or removes queries to/from the PipelineDriver to bring it
|
|
686
|
-
* in sync with the set of queries in the CVR (both got and desired).
|
|
687
|
-
* If queries are added, removed, or queried due to a new state version,
|
|
688
|
-
* a new CVR version is created and pokes sent to connected clients.
|
|
689
|
-
*
|
|
690
|
-
* This must be called from within the #lock.
|
|
691
|
-
*/
|
|
692
|
-
#syncQueryPipelineSet(lc, cvr, customQueryTransformMode, connCtx, driftedQueryIDs = /* @__PURE__ */ new Set()) {
|
|
693
|
-
return startAsyncSpan(tracer, "vs.#syncQueryPipelineSet", async (span) => {
|
|
694
|
-
span.setAttribute("clientGroupID", this.id);
|
|
695
|
-
assert(this.#pipelines.initialized(), "pipelines must be initialized (syncQueryPipelineSet)");
|
|
696
|
-
if (this.#ttlClock === void 0) this.#ttlClock = cvr.ttlClock;
|
|
697
|
-
const now = Date.now();
|
|
698
|
-
const ttlClock = this.#getTTLClock(now);
|
|
699
|
-
const cvrQueryEntires = Object.entries(cvr.queries);
|
|
700
|
-
const customQueries = /* @__PURE__ */ new Map();
|
|
701
|
-
const otherQueries = [];
|
|
702
|
-
const transformedQueries = [];
|
|
703
|
-
const resolvedConnCtx = connCtx ?? this.connContextManager.mustGetBackgroundConnectionContext();
|
|
704
|
-
for (const [id, query] of cvrQueryEntires) if (query.type === "custom") {
|
|
705
|
-
assert(id === query.id, "custom query id mismatch");
|
|
706
|
-
customQueries.set(id, query);
|
|
707
|
-
} else otherQueries.push({
|
|
708
|
-
id,
|
|
709
|
-
query
|
|
710
|
-
});
|
|
711
|
-
for (const { id, query: origQuery } of otherQueries) {
|
|
712
|
-
assert(id === origQuery.id, "query id mismatch");
|
|
713
|
-
const transformed = transformAndHashQuery(lc, origQuery.id, origQuery.ast, must(this.#pipelines.currentPermissions()).permissions ?? { tables: {} }, resolvedConnCtx.auth?.type === "jwt" ? resolvedConnCtx.auth : void 0, origQuery.type === "internal");
|
|
714
|
-
transformedQueries.push({
|
|
715
|
-
id,
|
|
716
|
-
origQuery,
|
|
717
|
-
transformed
|
|
718
|
-
});
|
|
719
|
-
}
|
|
720
|
-
if (customQueries.size > 0 && !this.#customQueryTransformer) lc.warn?.("Custom/named queries were requested but no `ZERO_QUERY_URL` is configured for Zero Cache.");
|
|
721
|
-
let erroredQueryIDs;
|
|
722
|
-
const customQueriesToTransform = customQueryTransformMode === "all" ? [...customQueries.values()] : customQueryTransformMode && [...customQueries.values()].filter((q) => !this.#pipelines.queries().has(q.id));
|
|
723
|
-
const customQueryTransformer = this.#customQueryTransformer;
|
|
724
|
-
if (customQueryTransformer && customQueriesToTransform.length > 0) {
|
|
725
|
-
const transformStart = performance.now();
|
|
726
|
-
let transformedCustomQueries;
|
|
727
|
-
try {
|
|
728
|
-
transformedCustomQueries = await this.#runPriorityOp(lc, "#syncQueryPipelineSet transforming custom queries", () => customQueryTransformer.transform(resolvedConnCtx, customQueriesToTransform));
|
|
729
|
-
if (transformedCustomQueries.kind === "failed") throw new ProtocolErrorWithLevel(transformedCustomQueries.result, "warn");
|
|
730
|
-
else {
|
|
731
|
-
if (!transformedCustomQueries.cached) this.connContextManager.validateConnection(resolvedConnCtx, resolvedConnCtx.revision, transformedCustomQueries.validation);
|
|
732
|
-
this.#queryTransformations.add(1, { result: "success" });
|
|
733
|
-
}
|
|
734
|
-
} catch (e) {
|
|
735
|
-
this.#queryTransformations.add(1, { result: "error" });
|
|
736
|
-
throw e;
|
|
737
|
-
} finally {
|
|
738
|
-
const transformDuration = performance.now() - transformStart;
|
|
739
|
-
this.#queryTransformationTime.recordMs(transformDuration);
|
|
740
|
-
}
|
|
741
|
-
const successfullyTransformedCustomQueries = /* @__PURE__ */ new Map();
|
|
742
|
-
erroredQueryIDs = this.#processTransformedCustomQueries(lc, transformedCustomQueries.result, (q) => {
|
|
743
|
-
const origQuery = customQueries.get(q.id);
|
|
744
|
-
if (origQuery) {
|
|
745
|
-
successfullyTransformedCustomQueries.set(q.id, q);
|
|
746
|
-
transformedQueries.push({
|
|
747
|
-
id: q.id,
|
|
748
|
-
origQuery,
|
|
749
|
-
transformed: q
|
|
750
|
-
});
|
|
751
|
-
}
|
|
752
|
-
}, customQueries);
|
|
753
|
-
for (const [queryID, newTransform] of successfullyTransformedCustomQueries) {
|
|
754
|
-
const existingTransformHash = cvr.queries[queryID]?.transformationHash;
|
|
755
|
-
if (existingTransformHash) {
|
|
756
|
-
const oldHash = existingTransformHash;
|
|
757
|
-
const newHash = newTransform.transformationHash;
|
|
758
|
-
if (oldHash !== newHash) {
|
|
759
|
-
lc.info?.(`Query ${queryID} transformation changed: ${oldHash} -> ${newHash}`);
|
|
760
|
-
this.#checkForThrashing(queryID);
|
|
761
|
-
this.#queryTransformationHashChanges.add(1);
|
|
762
|
-
} else this.#queryTransformationNoOps.add(1);
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
const removeQueriesQueryIds = new Set([...Object.values(cvr.queries).filter((q) => expired(ttlClock, q)).map((q) => q.id), ...erroredQueryIDs || []]);
|
|
767
|
-
const addQueries = transformedQueries.map(({ id, origQuery, transformed }) => ({
|
|
768
|
-
id,
|
|
769
|
-
ast: transformed.transformedAst,
|
|
770
|
-
transformationHash: transformed.transformationHash,
|
|
771
|
-
name: origQuery.type === "custom" ? origQuery.name : void 0
|
|
772
|
-
})).filter((q) => !removeQueriesQueryIds.has(q.id) && this.#pipelines.queries().get(q.id)?.transformationHash !== q.transformationHash);
|
|
773
|
-
lc.info?.(`syncQueryPipelineSet: ${cvrQueryEntires.length} CVR queries, ${customQueriesToTransform.length} custom re-transformed, ${erroredQueryIDs?.length ?? 0} errored, ${removeQueriesQueryIds.size} to remove, ${addQueries.length} to add`);
|
|
774
|
-
for (const q of addQueries) {
|
|
775
|
-
const orig = cvr.queries[q.id];
|
|
776
|
-
lc.debug?.("ViewSyncer adding query", q.ast, "transformed from", orig.type === "custom" ? orig.name : orig.ast);
|
|
777
|
-
}
|
|
778
|
-
if (addQueries.length > 0 || removeQueriesQueryIds.size > 0) await this.#addAndRemoveQueries(lc, cvr, addQueries, Array.from(removeQueriesQueryIds, (id) => ({ id })), driftedQueryIDs);
|
|
779
|
-
else await this.#catchupClients(lc, cvr);
|
|
780
|
-
});
|
|
781
|
-
}
|
|
782
|
-
/**
|
|
783
|
-
* Check if a query is being replaced too frequently (thrashing).
|
|
784
|
-
* Logs a warning if the query has been replaced more than 3 times in 60 seconds.
|
|
785
|
-
*/
|
|
786
|
-
#checkForThrashing(queryID) {
|
|
787
|
-
const THRASH_WINDOW_MS = 6e4;
|
|
788
|
-
const THRASH_THRESHOLD = 3;
|
|
789
|
-
const now = Date.now();
|
|
790
|
-
let record = this.#queryReplacements.get(queryID);
|
|
791
|
-
if (!record) {
|
|
792
|
-
record = {
|
|
793
|
-
count: 1,
|
|
794
|
-
windowStart: now
|
|
795
|
-
};
|
|
796
|
-
this.#queryReplacements.set(queryID, record);
|
|
797
|
-
return;
|
|
798
|
-
}
|
|
799
|
-
if (now - record.windowStart > THRASH_WINDOW_MS) {
|
|
800
|
-
this.#queryReplacements.delete(queryID);
|
|
801
|
-
this.#queryReplacements.set(queryID, {
|
|
802
|
-
count: 1,
|
|
803
|
-
windowStart: now
|
|
804
|
-
});
|
|
805
|
-
return;
|
|
806
|
-
}
|
|
807
|
-
record.count++;
|
|
808
|
-
if (record.count >= THRASH_THRESHOLD) this.#lc.warn?.(`Query thrashing detected for query ${queryID}. ${record.count} replacements in 60s. This may indicate clients with different auth contexts connecting to the same client group.`);
|
|
809
|
-
}
|
|
810
|
-
#addAndRemoveQueries(lc, cvr, addQueries, removeQueries, driftedQueryIDs = /* @__PURE__ */ new Set()) {
|
|
811
|
-
return startAsyncSpan(tracer, "vs.#addAndRemoveQueries", async () => {
|
|
812
|
-
assert(addQueries.length > 0 || removeQueries.length > 0, "Must have queries to add or remove");
|
|
813
|
-
const start = performance.now();
|
|
814
|
-
const stateVersion = this.#pipelines.currentVersion();
|
|
815
|
-
lc = lc.withContext("stateVersion", stateVersion);
|
|
816
|
-
lc.info?.(`hydrating ${addQueries.length} queries`);
|
|
817
|
-
const updater = new CVRQueryDrivenUpdater(this.#cvrStore, cvr, stateVersion, this.#pipelines.replicaVersion, (queryID) => this.#pipelines.rowSetSignature(queryID));
|
|
818
|
-
if (addQueries.some((q) => driftedQueryIDs.has(q.id))) updater.ensureNewVersion();
|
|
819
|
-
const { queryPatches, newVersion } = updater.trackQueries(lc, addQueries, removeQueries);
|
|
820
|
-
const pokers = startPoke(this.#getClients(), newVersion);
|
|
821
|
-
for (const patch of queryPatches) await pokers.addPatch(patch);
|
|
822
|
-
for (const q of removeQueries) {
|
|
823
|
-
this.#pipelines.removeQuery(q.id);
|
|
824
|
-
this.#inspectorDelegate.removeQuery(q.id);
|
|
825
|
-
this.#queryReplacements.delete(q.id);
|
|
826
|
-
}
|
|
827
|
-
let totalProcessTime = 0;
|
|
828
|
-
const timer = new TimeSliceTimer(lc);
|
|
829
|
-
const pipelines = this.#pipelines;
|
|
830
|
-
const hydrations = this.#hydrations;
|
|
831
|
-
const hydrationTime = this.#hydrationTime;
|
|
832
|
-
const self = this;
|
|
833
|
-
await yieldProcess(lc);
|
|
834
|
-
function* generateRowChanges(slowHydrateThreshold) {
|
|
835
|
-
for (const q of addQueries) {
|
|
836
|
-
lc = lc.withContext("hash", q.id).withContext("transformationHash", q.transformationHash);
|
|
837
|
-
lc.debug?.(`adding pipeline for query`, q.ast);
|
|
838
|
-
yield* pipelines.addQuery(q.transformationHash, q.id, q.ast, timer.startWithoutYielding());
|
|
839
|
-
const elapsed = timer.stop();
|
|
840
|
-
totalProcessTime += elapsed;
|
|
841
|
-
self.#addQueryMaterializationServerMetric(q.id, elapsed);
|
|
842
|
-
self.#inspectorDelegate.addQuery(q.id, q.ast);
|
|
843
|
-
if (elapsed > slowHydrateThreshold) lc.warn?.("Slow query materialization", elapsed, q.ast);
|
|
844
|
-
manualSpan(tracer, "vs.addAndConsumeQuery", elapsed, {
|
|
845
|
-
hash: q.id,
|
|
846
|
-
transformationHash: q.transformationHash,
|
|
847
|
-
...q.name !== void 0 && { name: q.name }
|
|
848
|
-
});
|
|
849
|
-
}
|
|
850
|
-
hydrations.add(1);
|
|
851
|
-
hydrationTime.recordMs(totalProcessTime);
|
|
852
|
-
}
|
|
853
|
-
await this.#processChanges(lc, timer, generateRowChanges(this.#slowHydrateThreshold), updater, pokers);
|
|
854
|
-
await startAsyncSpan(tracer, "vs.#syncQueryPipelineSet.deleteUnreferencedRows", async () => {
|
|
855
|
-
for (const patch of await updater.deleteUnreferencedRows(lc)) await pokers.addPatch(patch);
|
|
856
|
-
});
|
|
857
|
-
this.#cvr = await this.#flushUpdater(lc, updater);
|
|
858
|
-
const finalVersion = this.#cvr.version;
|
|
859
|
-
await this.#catchupClients(lc, cvr, finalVersion, addQueries.map((q) => q.id), pokers);
|
|
860
|
-
await startAsyncSpan(tracer, "vs.#syncQueryPipelineSet.pokeEnd", () => pokers.end(finalVersion));
|
|
861
|
-
const wallTime = performance.now() - start;
|
|
862
|
-
lc.info?.(`finished processing queries (process: ${totalProcessTime} ms, wall: ${wallTime} ms)`);
|
|
863
|
-
});
|
|
864
|
-
}
|
|
865
|
-
/**
|
|
866
|
-
* @param cvr The CVR to which clients should be caught up to. This does
|
|
867
|
-
* not necessarily need to be the current CVR.
|
|
868
|
-
* @param current The expected current CVR version. Before performing
|
|
869
|
-
* catchup, the snapshot read will verify that the CVR has not been
|
|
870
|
-
* concurrently modified. Note that this only needs to be done for
|
|
871
|
-
* catchup because it is the only time data from the CVR DB is
|
|
872
|
-
* "exported" without being gated by a CVR flush (which provides
|
|
873
|
-
* concurrency protection in all other cases).
|
|
874
|
-
*
|
|
875
|
-
* If unspecified, the version of the `cvr` is used.
|
|
876
|
-
* @param excludeQueryHashes Exclude patches from rows associated with
|
|
877
|
-
* the specified queries.
|
|
878
|
-
* @param usePokers If specified, sends pokes on existing PokeHandlers,
|
|
879
|
-
* in which case the caller is responsible for sending the `pokeEnd`
|
|
880
|
-
* messages. If unspecified, the pokes will be started and ended
|
|
881
|
-
* using the version from the supplied `cvr`.
|
|
882
|
-
*/
|
|
883
|
-
#catchupClients(lc, cvr, current, excludeQueryHashes = [], usePokers) {
|
|
884
|
-
return startAsyncSpan(tracer, "vs.#catchupClients", async (span) => {
|
|
885
|
-
current ??= cvr.version;
|
|
886
|
-
const clients = this.#getClients();
|
|
887
|
-
const pokers = usePokers ?? startPoke(clients, cvr.version);
|
|
888
|
-
span.setAttribute("numClients", clients.length);
|
|
889
|
-
const catchupFrom = clients.map((c) => c.version()).reduce((a, b) => cmpVersions(a, b) < 0 ? a : b, cvr.version);
|
|
890
|
-
const rowPatches = this.#cvrStore.catchupRowPatches(lc, catchupFrom, cvr, current, excludeQueryHashes);
|
|
891
|
-
const configPatches = this.#cvrStore.catchupConfigPatches(lc, catchupFrom, cvr, current);
|
|
892
|
-
configPatches.catch(() => {});
|
|
893
|
-
let rowPatchCount = 0;
|
|
894
|
-
for await (const rows of rowPatches) for (const row of rows) {
|
|
895
|
-
const { schema, table } = row;
|
|
896
|
-
const rowKey = row.rowKey;
|
|
897
|
-
const toVersion = versionFromString(row.patchVersion);
|
|
898
|
-
const id = {
|
|
899
|
-
schema,
|
|
900
|
-
table,
|
|
901
|
-
rowKey
|
|
902
|
-
};
|
|
903
|
-
let patch;
|
|
904
|
-
if (!row.refCounts) patch = {
|
|
905
|
-
type: "row",
|
|
906
|
-
op: "del",
|
|
907
|
-
id
|
|
908
|
-
};
|
|
909
|
-
else {
|
|
910
|
-
const { contents } = contentsAndVersion(must(this.#pipelines.getRow(table, rowKey), `Missing row ${table}:${stringify(rowKey)}`));
|
|
911
|
-
patch = {
|
|
912
|
-
type: "row",
|
|
913
|
-
op: "put",
|
|
914
|
-
id,
|
|
915
|
-
contents
|
|
916
|
-
};
|
|
917
|
-
}
|
|
918
|
-
const patchToVersion = {
|
|
919
|
-
patch,
|
|
920
|
-
toVersion
|
|
921
|
-
};
|
|
922
|
-
await pokers.addPatch(patchToVersion);
|
|
923
|
-
rowPatchCount++;
|
|
924
|
-
}
|
|
925
|
-
span.setAttribute("rowPatchCount", rowPatchCount);
|
|
926
|
-
if (rowPatchCount) lc.debug?.(`sent ${rowPatchCount} row patches`);
|
|
927
|
-
for (const patch of await configPatches) await pokers.addPatch(patch);
|
|
928
|
-
if (!usePokers) await pokers.end(cvr.version);
|
|
929
|
-
});
|
|
930
|
-
}
|
|
931
|
-
#processChanges(lc, timer, changes, updater, pokers) {
|
|
932
|
-
return startAsyncSpan(tracer, "vs.#processChanges", async () => {
|
|
933
|
-
const start = performance.now();
|
|
934
|
-
const rows = new CustomKeyMap(rowIDString);
|
|
935
|
-
let total = 0;
|
|
936
|
-
const processBatch = () => startAsyncSpan(tracer, "processBatch", async () => {
|
|
937
|
-
const wallElapsed = performance.now() - start;
|
|
938
|
-
total += rows.size;
|
|
939
|
-
lc.debug?.(`processing ${rows.size} (of ${total}) rows (${wallElapsed} ms)`);
|
|
940
|
-
const patches = await updater.received(lc, rows);
|
|
941
|
-
await startAsyncSpan(tracer, "processBatch.flushToClient", async (span) => {
|
|
942
|
-
span.setAttribute("patches", patches.length);
|
|
943
|
-
for (const patch of patches) await pokers.addPatch(patch);
|
|
944
|
-
});
|
|
945
|
-
rows.clear();
|
|
946
|
-
});
|
|
947
|
-
await startAsyncSpan(tracer, "loopingChanges", async (span) => {
|
|
948
|
-
for (const change of changes) {
|
|
949
|
-
if (change === "yield") {
|
|
950
|
-
await timer.yieldProcess("yield in processChanges");
|
|
951
|
-
continue;
|
|
952
|
-
}
|
|
953
|
-
const { type, queryID, table, rowKey, row } = change;
|
|
954
|
-
const rowID = {
|
|
955
|
-
schema: "",
|
|
956
|
-
table,
|
|
957
|
-
rowKey
|
|
958
|
-
};
|
|
959
|
-
let parsedRow = rows.get(rowID);
|
|
960
|
-
if (!parsedRow) {
|
|
961
|
-
parsedRow = { refCounts: {} };
|
|
962
|
-
rows.set(rowID, parsedRow);
|
|
963
|
-
}
|
|
964
|
-
parsedRow.refCounts[queryID] ??= 0;
|
|
965
|
-
const updateVersion = (row) => {
|
|
966
|
-
const { version, contents } = contentsAndVersion(row);
|
|
967
|
-
parsedRow.version = version;
|
|
968
|
-
parsedRow.contents = contents;
|
|
969
|
-
};
|
|
970
|
-
switch (type) {
|
|
971
|
-
case 0:
|
|
972
|
-
updateVersion(row);
|
|
973
|
-
parsedRow.refCounts[queryID]++;
|
|
974
|
-
break;
|
|
975
|
-
case 2:
|
|
976
|
-
updateVersion(row);
|
|
977
|
-
break;
|
|
978
|
-
case 1:
|
|
979
|
-
parsedRow.refCounts[queryID]--;
|
|
980
|
-
break;
|
|
981
|
-
default: unreachable(type);
|
|
982
|
-
}
|
|
983
|
-
if (rows.size % CURSOR_PAGE_SIZE === 0) await processBatch();
|
|
984
|
-
}
|
|
985
|
-
if (rows.size) await processBatch();
|
|
986
|
-
span.setAttribute("totalRows", total);
|
|
987
|
-
});
|
|
988
|
-
});
|
|
989
|
-
}
|
|
990
|
-
/**
|
|
991
|
-
* Advance to the current snapshot of the replica and apply / send
|
|
992
|
-
* changes.
|
|
993
|
-
*
|
|
994
|
-
* Must be called from within the #lock.
|
|
995
|
-
*
|
|
996
|
-
* Returns false if the advancement failed due to a schema change.
|
|
997
|
-
*/
|
|
998
|
-
#advancePipelines(lc, cvr) {
|
|
999
|
-
return startAsyncSpan(tracer, "vs.#advancePipelines", async (span) => {
|
|
1000
|
-
span.setAttribute("clientGroupID", this.id);
|
|
1001
|
-
assert(this.#pipelines.initialized(), "pipelines must be initialized (advancePipelines");
|
|
1002
|
-
const start = performance.now();
|
|
1003
|
-
const timer = new TimeSliceTimer(lc);
|
|
1004
|
-
const { version, numChanges, changes } = this.#pipelines.advance(timer);
|
|
1005
|
-
lc = lc.withContext("newVersion", version);
|
|
1006
|
-
const updater = new CVRQueryDrivenUpdater(this.#cvrStore, cvr, version, this.#pipelines.replicaVersion, (queryID) => this.#pipelines.rowSetSignature(queryID));
|
|
1007
|
-
const pokers = startPoke(this.#getClients(cvr.version), updater.updatedVersion());
|
|
1008
|
-
lc.debug?.(`applying ${numChanges} to advance to ${version}`);
|
|
1009
|
-
try {
|
|
1010
|
-
await this.#processChanges(lc, await timer.start(), changes, updater, pokers);
|
|
1011
|
-
} catch (e) {
|
|
1012
|
-
if (e instanceof ResetPipelinesSignal) {
|
|
1013
|
-
await pokers.cancel();
|
|
1014
|
-
return e;
|
|
1015
|
-
}
|
|
1016
|
-
throw e;
|
|
1017
|
-
}
|
|
1018
|
-
this.#cvr = await this.#flushUpdater(lc, updater);
|
|
1019
|
-
const finalVersion = this.#cvr.version;
|
|
1020
|
-
await startAsyncSpan(tracer, "vs.#advancePipelines.pokeEnd", () => pokers.end(finalVersion));
|
|
1021
|
-
const wallTime = performance.now() - start;
|
|
1022
|
-
const totalProcessTime = timer.totalElapsed();
|
|
1023
|
-
lc.info?.(`finished processing advancement of ${numChanges} changes ((process: ${totalProcessTime} ms, wall: ${wallTime} ms))`);
|
|
1024
|
-
this.#transactionAdvanceTime.recordMs(totalProcessTime);
|
|
1025
|
-
return "success";
|
|
1026
|
-
});
|
|
1027
|
-
}
|
|
1028
|
-
async inspect(selector, msg) {
|
|
1029
|
-
await this.#runInLockForClient(selector, msg, this.#handleInspect);
|
|
1030
|
-
}
|
|
1031
|
-
#handleInspect = async (lc, clientID, body, cvr) => {
|
|
1032
|
-
const client = must(this.#clients.get(clientID));
|
|
1033
|
-
const connCtx = this.connContextManager.mustGetConnectionContext({
|
|
1034
|
-
clientID,
|
|
1035
|
-
wsID: client.wsID
|
|
1036
|
-
});
|
|
1037
|
-
return handleInspect(lc, body, cvr, client, this.#inspectorDelegate, this.id, this.#cvrStore, this.#config, connCtx);
|
|
1038
|
-
};
|
|
1039
|
-
async #runBackgroundRetransform(lc) {
|
|
1040
|
-
const attemptRetransform = async (connCtx) => {
|
|
1041
|
-
await this.#syncQueryPipelineSet(lc, must(this.#cvr, "cvr missing during auth maintenance retransform"), "all", connCtx);
|
|
1042
|
-
this.connContextManager.markBackgroundRetransformSuccess({
|
|
1043
|
-
clientID: connCtx.clientID,
|
|
1044
|
-
wsID: connCtx.wsID
|
|
1045
|
-
}, connCtx.revision);
|
|
1046
|
-
};
|
|
1047
|
-
let backgroundConnCtx = this.connContextManager.getBackgroundConnectionContext();
|
|
1048
|
-
if (!backgroundConnCtx) {
|
|
1049
|
-
lc.debug?.("Skipping background retransform with no selected connection");
|
|
1050
|
-
return;
|
|
1051
|
-
}
|
|
1052
|
-
for (;;) {
|
|
1053
|
-
try {
|
|
1054
|
-
await attemptRetransform(backgroundConnCtx);
|
|
1055
|
-
return;
|
|
1056
|
-
} catch (e) {
|
|
1057
|
-
if (isProtocolError(e)) {
|
|
1058
|
-
if (isAuthErrorBody(e.errorBody)) {
|
|
1059
|
-
lc.warn?.("Background retransform auth failed; failing connection and searching for replacement", {
|
|
1060
|
-
clientID: backgroundConnCtx.clientID,
|
|
1061
|
-
message: e.message
|
|
1062
|
-
});
|
|
1063
|
-
this.#failMaintenanceConnection(backgroundConnCtx, e);
|
|
1064
|
-
} else if (isTransformFailedError(e)) {
|
|
1065
|
-
lc.warn?.("Background retransform failed; deferring auth maintenance", {
|
|
1066
|
-
clientID: backgroundConnCtx.clientID,
|
|
1067
|
-
message: e.message
|
|
1068
|
-
});
|
|
1069
|
-
this.connContextManager.deferMaintenance("retransform");
|
|
1070
|
-
return;
|
|
1071
|
-
}
|
|
1072
|
-
} else throw e;
|
|
1073
|
-
}
|
|
1074
|
-
const replacementConnCtx = this.connContextManager.getBackgroundConnectionContext();
|
|
1075
|
-
if (!replacementConnCtx) {
|
|
1076
|
-
lc.debug?.("No replacement connection available for background retransform");
|
|
1077
|
-
return;
|
|
1078
|
-
}
|
|
1079
|
-
lc.debug?.("Retrying background retransform with replacement connection", {
|
|
1080
|
-
clientID: replacementConnCtx.clientID,
|
|
1081
|
-
wsID: replacementConnCtx.wsID
|
|
1082
|
-
});
|
|
1083
|
-
backgroundConnCtx = replacementConnCtx;
|
|
1084
|
-
}
|
|
1085
|
-
}
|
|
1086
|
-
async #validateConnection(connCtx) {
|
|
1087
|
-
try {
|
|
1088
|
-
let validation = void 0;
|
|
1089
|
-
if (this.#customQueryTransformer) {
|
|
1090
|
-
const response = await this.#customQueryTransformer.validate(connCtx);
|
|
1091
|
-
if (response.kind === "TransformFailed") throw new ProtocolErrorWithLevel(response, "warn");
|
|
1092
|
-
validation = response.validation;
|
|
1093
|
-
} else validation = { kind: "client-fallback" };
|
|
1094
|
-
this.connContextManager.validateConnection(connCtx, connCtx.revision, validation);
|
|
1095
|
-
return true;
|
|
1096
|
-
} catch (e) {
|
|
1097
|
-
if (isProtocolError(e) && isAuthErrorBody(e.errorBody)) {
|
|
1098
|
-
this.#lc.warn?.("Connection auth validation failed; invalidating connection", {
|
|
1099
|
-
clientID: connCtx.clientID,
|
|
1100
|
-
wsID: connCtx.wsID,
|
|
1101
|
-
revision: connCtx.revision,
|
|
1102
|
-
message: e.message
|
|
1103
|
-
});
|
|
1104
|
-
this.#failMaintenanceConnection(connCtx, e);
|
|
1105
|
-
return false;
|
|
1106
|
-
}
|
|
1107
|
-
throw e;
|
|
1108
|
-
}
|
|
1109
|
-
}
|
|
1110
|
-
#failMaintenanceConnection(connCtx, error) {
|
|
1111
|
-
if (!this.connContextManager.failConnection(connCtx, connCtx.revision)) return;
|
|
1112
|
-
const wrapped = wrapWithProtocolError(error);
|
|
1113
|
-
const client = this.#clients.get(connCtx.clientID);
|
|
1114
|
-
if (client?.wsID === connCtx.wsID) client.fail(wrapped);
|
|
1115
|
-
}
|
|
1116
|
-
stop() {
|
|
1117
|
-
this.#lc.info?.("stopping view syncer");
|
|
1118
|
-
this.connContextManager.setSharedRetransformReady(false);
|
|
1119
|
-
this.#initialized.reject("shut down before initialization completed");
|
|
1120
|
-
this.#stateChanges.cancel();
|
|
1121
|
-
return this.#stopped.promise;
|
|
1122
|
-
}
|
|
1123
|
-
async #cleanup(err) {
|
|
1124
|
-
this.connContextManager.setSharedRetransformReady(false);
|
|
1125
|
-
this.#stopTTLClockInterval();
|
|
1126
|
-
this.#stopExpireTimer();
|
|
1127
|
-
this.#stopAuthMaintenanceTimer();
|
|
1128
|
-
for (const client of this.#clients.values()) if (err) client.fail(err);
|
|
1129
|
-
else client.close(`closed clientGroupID=${this.id}`);
|
|
1130
|
-
await this.#lock.withLock(() => {});
|
|
1131
|
-
this.#pipelines.destroy();
|
|
1132
|
-
}
|
|
1133
|
-
/**
|
|
1134
|
-
* Test helper: Manually mark initialization as complete.
|
|
1135
|
-
* This should only be used in tests that don't call initConnection().
|
|
1136
|
-
*/
|
|
1137
|
-
markInitialized() {
|
|
1138
|
-
this.#initialized.resolve("initialized");
|
|
1139
|
-
}
|
|
1140
|
-
};
|
|
1141
|
-
var CURSOR_PAGE_SIZE = 1e4;
|
|
1142
|
-
var timeSliceQueue = new Lock();
|
|
1143
|
-
function yieldProcess(_lc) {
|
|
1144
|
-
return timeSliceQueue.withLock(() => new Promise(setImmediate));
|
|
1145
|
-
}
|
|
1146
|
-
function contentsAndVersion(row) {
|
|
1147
|
-
const { [ZERO_VERSION_COLUMN_NAME]: version, ...contents } = row;
|
|
1148
|
-
if (typeof version !== "string" || version.length === 0) throw new Error(`Invalid _0_version in ${stringify(row)}`);
|
|
1149
|
-
return {
|
|
1150
|
-
contents,
|
|
1151
|
-
version
|
|
1152
|
-
};
|
|
1153
|
-
}
|
|
1154
|
-
var NEW_CVR_VERSION = { stateVersion: "00" };
|
|
1155
|
-
function checkClientAndCVRVersions(client, cvr) {
|
|
1156
|
-
if (cmpVersions(cvr, NEW_CVR_VERSION) === 0 && cmpVersions(client, NEW_CVR_VERSION) > 0) throw new ClientNotFoundError("Client not found");
|
|
1157
|
-
if (cmpVersions(client, cvr) > 0) throw new ProtocolError({
|
|
1158
|
-
kind: InvalidConnectionRequestBaseCookie,
|
|
1159
|
-
message: `CVR is at version ${versionString(cvr)}`,
|
|
1160
|
-
origin: ZeroCache
|
|
1161
|
-
});
|
|
1162
|
-
}
|
|
1163
|
-
function isTransformFailedError(error) {
|
|
1164
|
-
return error.errorBody.kind === "TransformFailed" && !isAuthErrorBody(error.errorBody);
|
|
1165
|
-
}
|
|
1166
|
-
/**
|
|
1167
|
-
* A query must be expired for all clients in order to be considered
|
|
1168
|
-
* expired.
|
|
1169
|
-
*/
|
|
1170
|
-
function expired(ttlClock, q) {
|
|
1171
|
-
if (q.type === "internal") return false;
|
|
1172
|
-
for (const clientState of Object.values(q.clientState)) {
|
|
1173
|
-
const { ttl, inactivatedAt } = clientState;
|
|
1174
|
-
if (inactivatedAt === void 0) return false;
|
|
1175
|
-
const clampedTTL = clampTTL(ttl);
|
|
1176
|
-
if (ttlClockAsNumber(inactivatedAt) + clampedTTL > ttlClockAsNumber(ttlClock)) return false;
|
|
1177
|
-
}
|
|
1178
|
-
return true;
|
|
1179
|
-
}
|
|
1180
|
-
function hasExpiredQueries(cvr) {
|
|
1181
|
-
const { ttlClock } = cvr;
|
|
1182
|
-
for (const q of Object.values(cvr.queries)) if (expired(ttlClock, q)) return true;
|
|
1183
|
-
return false;
|
|
1184
|
-
}
|
|
1185
|
-
var TimeSliceTimer = class {
|
|
1186
|
-
#total = 0;
|
|
1187
|
-
#start = 0;
|
|
1188
|
-
#lc;
|
|
1189
|
-
constructor(lc) {
|
|
1190
|
-
this.#lc = lc;
|
|
1191
|
-
}
|
|
1192
|
-
async start() {
|
|
1193
|
-
await yieldProcess(this.#lc);
|
|
1194
|
-
return this.startWithoutYielding();
|
|
1195
|
-
}
|
|
1196
|
-
startWithoutYielding() {
|
|
1197
|
-
this.#total = 0;
|
|
1198
|
-
this.#startLap();
|
|
1199
|
-
return this;
|
|
1200
|
-
}
|
|
1201
|
-
async yieldProcess(_msgForTesting) {
|
|
1202
|
-
this.#stopLap();
|
|
1203
|
-
await yieldProcess(this.#lc);
|
|
1204
|
-
this.#startLap();
|
|
1205
|
-
}
|
|
1206
|
-
#startLap() {
|
|
1207
|
-
assert(this.#start === 0, "already running");
|
|
1208
|
-
this.#start = performance.now();
|
|
1209
|
-
}
|
|
1210
|
-
elapsedLap() {
|
|
1211
|
-
assert(this.#start !== 0, "not running");
|
|
1212
|
-
return performance.now() - this.#start;
|
|
1213
|
-
}
|
|
1214
|
-
#stopLap() {
|
|
1215
|
-
assert(this.#start !== 0, "not running");
|
|
1216
|
-
this.#total += performance.now() - this.#start;
|
|
1217
|
-
this.#start = 0;
|
|
1218
|
-
}
|
|
1219
|
-
/** @returns the total elapsed time */
|
|
1220
|
-
stop() {
|
|
1221
|
-
this.#stopLap();
|
|
1222
|
-
return this.#total;
|
|
1223
|
-
}
|
|
1224
|
-
/**
|
|
1225
|
-
* @returns the elapsed time. This can be called while the Timer is running
|
|
1226
|
-
* or after it has been stopped.
|
|
1227
|
-
*/
|
|
1228
|
-
totalElapsed() {
|
|
1229
|
-
return this.#start === 0 ? this.#total : this.#total + performance.now() - this.#start;
|
|
1230
|
-
}
|
|
1231
|
-
};
|
|
1232
|
-
//#endregion
|
|
1233
|
-
export { TimeSliceTimer, ViewSyncerService };
|
|
1234
|
-
|
|
1235
|
-
//# sourceMappingURL=view-syncer.js.map
|