@rocicorp/zero 1.12.0-canary.7 → 1.12.0-canary.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/replicache/src/btree/node.d.ts +0 -2
- package/out/replicache/src/btree/node.d.ts.map +1 -1
- package/out/replicache/src/btree/node.js.map +1 -1
- package/out/replicache/src/connection-loop.d.ts.map +1 -1
- package/out/replicache/src/connection-loop.js +1 -1
- package/out/replicache/src/connection-loop.js.map +1 -1
- package/out/replicache/src/db/commit.d.ts +0 -1
- package/out/replicache/src/db/commit.d.ts.map +1 -1
- package/out/replicache/src/db/commit.js +1 -1
- package/out/replicache/src/db/commit.js.map +1 -1
- package/out/replicache/src/db/write.d.ts +0 -2
- package/out/replicache/src/db/write.d.ts.map +1 -1
- package/out/replicache/src/db/write.js +1 -1
- package/out/replicache/src/db/write.js.map +1 -1
- package/out/replicache/src/deleted-clients.d.ts +0 -2
- package/out/replicache/src/deleted-clients.d.ts.map +1 -1
- package/out/replicache/src/deleted-clients.js +1 -1
- package/out/replicache/src/deleted-clients.js.map +1 -1
- package/out/replicache/src/frozen-json.d.ts +0 -1
- package/out/replicache/src/frozen-json.d.ts.map +1 -1
- package/out/replicache/src/frozen-json.js.map +1 -1
- package/out/replicache/src/index-defs.d.ts +0 -2
- package/out/replicache/src/index-defs.d.ts.map +1 -1
- package/out/replicache/src/index-defs.js +1 -1
- package/out/replicache/src/index-defs.js.map +1 -1
- package/out/replicache/src/kv/expo-sqlite/store.d.ts +0 -1
- package/out/replicache/src/kv/expo-sqlite/store.d.ts.map +1 -1
- package/out/replicache/src/kv/expo-sqlite/store.js +1 -1
- package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
- package/out/replicache/src/kv/idb-store.js +1 -1
- package/out/replicache/src/kv/idb-store.js.map +1 -1
- package/out/replicache/src/kv/throw-if-closed.d.ts +0 -3
- package/out/replicache/src/kv/throw-if-closed.d.ts.map +1 -1
- package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
- package/out/replicache/src/persist/client-group-gc.d.ts +0 -7
- package/out/replicache/src/persist/client-group-gc.d.ts.map +1 -1
- package/out/replicache/src/persist/client-group-gc.js +1 -1
- package/out/replicache/src/persist/client-group-gc.js.map +1 -1
- package/out/replicache/src/process-scheduler.js +1 -1
- package/out/replicache/src/process-scheduler.js.map +1 -1
- package/out/replicache/src/replicache-impl.d.ts +2 -7
- package/out/replicache/src/replicache-impl.d.ts.map +1 -1
- package/out/replicache/src/replicache-impl.js +1 -1
- package/out/replicache/src/replicache-impl.js.map +1 -1
- package/out/replicache/src/sync/patch.d.ts +0 -5
- package/out/replicache/src/sync/patch.d.ts.map +1 -1
- package/out/replicache/src/sync/patch.js +1 -1
- package/out/replicache/src/sync/patch.js.map +1 -1
- package/out/replicache/src/sync/pull.d.ts +0 -1
- package/out/replicache/src/sync/pull.d.ts.map +1 -1
- package/out/replicache/src/sync/pull.js.map +1 -1
- package/out/replicache/src/sync/push.d.ts +2 -1
- package/out/replicache/src/sync/push.d.ts.map +1 -1
- package/out/replicache/src/sync/push.js.map +1 -1
- package/out/replicache/src/types.d.ts +2 -1
- package/out/replicache/src/types.d.ts.map +1 -1
- package/out/shared/src/asserts.d.ts +0 -5
- package/out/shared/src/asserts.d.ts.map +1 -1
- package/out/shared/src/asserts.js +1 -1
- package/out/shared/src/asserts.js.map +1 -1
- package/out/shared/src/browser-env.d.ts +0 -17
- package/out/shared/src/browser-env.d.ts.map +1 -1
- package/out/shared/src/browser-env.js.map +1 -1
- package/out/shared/src/deep-clone.d.ts +0 -1
- package/out/shared/src/deep-clone.d.ts.map +1 -1
- package/out/shared/src/deep-clone.js +1 -1
- package/out/shared/src/deep-clone.js.map +1 -1
- package/out/shared/src/document-visible.js +1 -1
- package/out/shared/src/document-visible.js.map +1 -1
- package/out/shared/src/expand.d.ts +0 -3
- package/out/shared/src/expand.d.ts.map +1 -1
- package/out/shared/src/immutable.d.ts +1 -1
- package/out/shared/src/immutable.d.ts.map +1 -1
- package/out/shared/src/iterables.d.ts +0 -1
- package/out/shared/src/iterables.d.ts.map +1 -1
- package/out/shared/src/iterables.js.map +1 -1
- package/out/shared/src/logging-test-utils.js +1 -1
- package/out/shared/src/logging-test-utils.js.map +1 -1
- package/out/shared/src/options-types.d.ts +1 -1
- package/out/shared/src/options-types.d.ts.map +1 -1
- package/out/shared/src/options.d.ts +2 -3
- package/out/shared/src/options.d.ts.map +1 -1
- package/out/shared/src/options.js +1 -1
- package/out/shared/src/options.js.map +1 -1
- package/out/shared/src/promise-race.js +1 -1
- package/out/shared/src/promise-race.js.map +1 -1
- package/out/shared/src/queue.js +1 -1
- package/out/shared/src/queue.js.map +1 -1
- package/out/shared/src/resolved-promises.d.ts +0 -4
- package/out/shared/src/resolved-promises.d.ts.map +1 -1
- package/out/shared/src/resolved-promises.js +0 -1
- package/out/shared/src/resolved-promises.js.map +1 -1
- package/out/shared/src/resolver.d.ts +9 -0
- package/out/shared/src/resolver.d.ts.map +1 -0
- package/out/shared/src/resolver.js +6 -0
- package/out/shared/src/resolver.js.map +1 -0
- package/out/shared/src/sleep.js +1 -1
- package/out/shared/src/sleep.js.map +1 -1
- package/out/shared/src/tdigest.d.ts +0 -1
- package/out/shared/src/tdigest.d.ts.map +1 -1
- package/out/shared/src/tdigest.js.map +1 -1
- package/out/z2s/src/sql.d.ts +1 -5
- package/out/z2s/src/sql.d.ts.map +1 -1
- package/out/z2s/src/sql.js.map +1 -1
- package/out/zero/package.js +2 -3
- package/out/zero/package.js.map +1 -1
- package/out/zero/src/zero-cache-dev.js +1 -1
- package/out/zero/src/zero-cache-dev.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +14 -11
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +23 -0
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/db/migration-lite.js.map +1 -1
- package/out/zero-cache/src/db/migration.js +1 -1
- package/out/zero-cache/src/db/migration.js.map +1 -1
- package/out/zero-cache/src/db/pg-copy-binary.js +1 -1
- package/out/zero-cache/src/db/pg-copy-binary.js.map +1 -1
- package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
- package/out/zero-cache/src/db/specs.d.ts +3 -4
- package/out/zero-cache/src/db/specs.d.ts.map +1 -1
- package/out/zero-cache/src/db/specs.js +5 -7
- package/out/zero-cache/src/db/specs.js.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.js +2 -2
- package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
- package/out/zero-cache/src/observability/events.js +1 -1
- package/out/zero-cache/src/observability/events.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +1 -1
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/main.js +1 -1
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/runner/run-worker.js +1 -1
- package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/backfill-manager.js +1 -1
- package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +1 -1
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/replica-restore.js.map +1 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.js +1 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +1 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/lsn.d.ts +0 -2
- package/out/zero-cache/src/services/change-source/pg/lsn.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slots.js +1 -1
- package/out/zero-cache/src/services/change-source/pg/replication-slots.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +0 -12
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +5 -3
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/index-predicate.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts +0 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/broadcast.js +1 -1
- package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/drain-tracker.js +1 -1
- package/out/zero-cache/src/services/change-streamer/drain-tracker.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js +2 -2
- package/out/zero-cache/src/services/change-streamer/litestream3-prometheus-poller.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/restore-admission.js +2 -2
- package/out/zero-cache/src/services/change-streamer/restore-admission.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.js +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot-message.js +2 -3
- package/out/zero-cache/src/services/change-streamer/snapshot-message.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js +2 -2
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-catchup.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/sqlite-change-log-read-router.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscribe.js +1 -1
- package/out/zero-cache/src/services/change-streamer/subscribe.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
- package/out/zero-cache/src/services/life-cycle.js +1 -1
- package/out/zero-cache/src/services/life-cycle.js.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.js +1 -1
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/litestream/metrics.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +2 -2
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +57 -14
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/plannerz.d.ts +4 -12
- package/out/zero-cache/src/services/plannerz.d.ts.map +1 -1
- package/out/zero-cache/src/services/plannerz.js +1 -3
- package/out/zero-cache/src/services/plannerz.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-log-db.js +1 -1
- package/out/zero-cache/src/services/replicator/change-log-db.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-log-stream-writer.js +1 -1
- package/out/zero-cache/src/services/replicator/change-log-stream-writer.js.map +1 -1
- package/out/zero-cache/src/services/replicator/drain-handler.js +1 -1
- package/out/zero-cache/src/services/replicator/drain-handler.js.map +1 -1
- package/out/zero-cache/src/services/replicator/reporter/recorder.js +1 -1
- package/out/zero-cache/src/services/replicator/reporter/recorder.js.map +1 -1
- package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts +2 -11
- package/out/zero-cache/src/services/replicator/reporter/report-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/reporter/report-schema.js +1 -1
- package/out/zero-cache/src/services/replicator/reporter/report-schema.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +0 -10
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts +0 -7
- package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.js +1 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.js +1 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -1
- package/out/zero-cache/src/services/running-state.js +1 -1
- package/out/zero-cache/src/services/running-state.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/connection-context-manager.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +2 -2
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/query-stats.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.js +3 -17
- package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +13 -10
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/lite.d.ts +0 -1
- package/out/zero-cache/src/types/lite.d.ts.map +1 -1
- package/out/zero-cache/src/types/lite.js +2 -2
- package/out/zero-cache/src/types/lite.js.map +1 -1
- package/out/zero-cache/src/types/pg-types.d.ts +0 -40
- package/out/zero-cache/src/types/pg-types.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg-types.js.map +1 -1
- package/out/zero-cache/src/types/poke-chunk.js +1 -1
- package/out/zero-cache/src/types/poke-chunk.js.map +1 -1
- package/out/zero-cache/src/types/row-key.d.ts +0 -5
- package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/types/streams.js +1 -1
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-cache/src/types/subscription.js +1 -1
- package/out/zero-cache/src/types/subscription.js.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.d.ts +0 -6
- package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.js +8 -2
- package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
- package/out/zero-cache/src/types/ws.d.ts +2 -1
- package/out/zero-cache/src/types/ws.d.ts.map +1 -1
- package/out/zero-cache/src/types/ws.js +1 -1
- package/out/zero-cache/src/types/ws.js.map +1 -1
- package/out/zero-cache/src/workers/connection.js +4 -1
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/mutator.js +1 -1
- package/out/zero-cache/src/workers/mutator.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +45 -3
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/active-clients-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/active-clients-manager.js +1 -1
- package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
- package/out/zero-client/src/client/connection-manager.js +1 -1
- package/out/zero-client/src/client/connection-manager.js.map +1 -1
- package/out/zero-client/src/client/crud.d.ts +2 -8
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/crud.js +1 -1
- package/out/zero-client/src/client/crud.js.map +1 -1
- package/out/zero-client/src/client/custom.d.ts +0 -2
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.js +1 -1
- package/out/zero-client/src/client/custom.js.map +1 -1
- package/out/zero-client/src/client/enable-analytics.d.ts +0 -1
- package/out/zero-client/src/client/enable-analytics.d.ts.map +1 -1
- package/out/zero-client/src/client/enable-analytics.js +2 -1
- package/out/zero-client/src/client/enable-analytics.js.map +1 -1
- package/out/zero-client/src/client/error.d.ts +4 -5
- package/out/zero-client/src/client/error.d.ts.map +1 -1
- package/out/zero-client/src/client/error.js.map +1 -1
- package/out/zero-client/src/client/keys.d.ts +0 -1
- package/out/zero-client/src/client/keys.d.ts.map +1 -1
- package/out/zero-client/src/client/keys.js +4 -2
- package/out/zero-client/src/client/keys.js.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.js +1 -1
- package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
- package/out/zero-client/src/client/options.d.ts +0 -4
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/options.js.map +1 -1
- package/out/zero-client/src/client/replicache-types.d.ts +3 -2
- package/out/zero-client/src/client/replicache-types.d.ts.map +1 -1
- package/out/zero-client/src/client/version.js +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -2
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.js +1 -1
- package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +1 -5
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +1 -1
- package/out/zero-client/src/client/zero.js.map +1 -1
- package/out/zero-client/src/types/client-state.d.ts +0 -6
- package/out/zero-client/src/types/client-state.d.ts.map +1 -1
- package/out/zero-permissions/src/permissions.d.ts +1 -12
- package/out/zero-permissions/src/permissions.d.ts.map +1 -1
- package/out/zero-permissions/src/permissions.js +1 -2
- package/out/zero-permissions/src/permissions.js.map +1 -1
- package/out/zero-protocol/src/ast.d.ts +0 -4
- package/out/zero-protocol/src/ast.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.js +1 -2
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero-protocol/src/change-desired-queries.d.ts +0 -20
- package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
- package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
- package/out/zero-protocol/src/client-schema.d.ts +2 -5
- package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
- package/out/zero-protocol/src/client-schema.js +1 -1
- package/out/zero-protocol/src/client-schema.js.map +1 -1
- package/out/zero-protocol/src/close-connection.d.ts +0 -8
- package/out/zero-protocol/src/close-connection.d.ts.map +1 -1
- package/out/zero-protocol/src/close-connection.js +1 -1
- package/out/zero-protocol/src/close-connection.js.map +1 -1
- package/out/zero-protocol/src/connect.d.ts +0 -12
- package/out/zero-protocol/src/connect.d.ts.map +1 -1
- package/out/zero-protocol/src/connect.js +1 -1
- package/out/zero-protocol/src/connect.js.map +1 -1
- package/out/zero-protocol/src/custom-queries.d.ts +3 -17
- package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
- package/out/zero-protocol/src/custom-queries.js +1 -1
- package/out/zero-protocol/src/custom-queries.js.map +1 -1
- package/out/zero-protocol/src/data.d.ts +0 -1
- package/out/zero-protocol/src/data.d.ts.map +1 -1
- package/out/zero-protocol/src/data.js +1 -1
- package/out/zero-protocol/src/data.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +27 -27
- package/out/zero-protocol/src/inspect-down.d.ts +82 -84
- package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
- package/out/zero-protocol/src/inspect-down.js +1 -1
- package/out/zero-protocol/src/inspect-down.js.map +1 -1
- package/out/zero-protocol/src/inspect-up.d.ts +0 -28
- package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
- package/out/zero-protocol/src/inspect-up.js +1 -1
- package/out/zero-protocol/src/inspect-up.js.map +1 -1
- package/out/zero-protocol/src/mutate-server.d.ts +0 -21
- package/out/zero-protocol/src/mutate-server.d.ts.map +1 -1
- package/out/zero-protocol/src/mutate-server.js +1 -1
- package/out/zero-protocol/src/mutate-server.js.map +1 -1
- package/out/zero-protocol/src/mutation-type-enum.d.ts +0 -1
- package/out/zero-protocol/src/mutation-type-enum.d.ts.map +1 -1
- package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
- package/out/zero-protocol/src/mutation.d.ts +2 -4
- package/out/zero-protocol/src/mutation.d.ts.map +1 -1
- package/out/zero-protocol/src/mutation.js +1 -1
- package/out/zero-protocol/src/mutation.js.map +1 -1
- package/out/zero-protocol/src/mutations-patch.d.ts +0 -33
- package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/mutations-patch.js +1 -1
- package/out/zero-protocol/src/mutations-patch.js.map +1 -1
- package/out/zero-protocol/src/ping.d.ts +0 -2
- package/out/zero-protocol/src/ping.d.ts.map +1 -1
- package/out/zero-protocol/src/ping.js +1 -1
- package/out/zero-protocol/src/ping.js.map +1 -1
- package/out/zero-protocol/src/poke.d.ts +3 -2
- package/out/zero-protocol/src/poke.d.ts.map +1 -1
- package/out/zero-protocol/src/poke.js +1 -1
- package/out/zero-protocol/src/poke.js.map +1 -1
- package/out/zero-protocol/src/pong.d.ts +0 -2
- package/out/zero-protocol/src/pong.d.ts.map +1 -1
- package/out/zero-protocol/src/pong.js +1 -1
- package/out/zero-protocol/src/pong.js.map +1 -1
- package/out/zero-protocol/src/pull.d.ts +2 -7
- package/out/zero-protocol/src/pull.d.ts.map +1 -1
- package/out/zero-protocol/src/pull.js +1 -1
- package/out/zero-protocol/src/pull.js.map +1 -1
- package/out/zero-protocol/src/push.d.ts +1 -3
- package/out/zero-protocol/src/push.d.ts.map +1 -1
- package/out/zero-protocol/src/push.js +1 -1
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/queries-patch.d.ts +0 -16
- package/out/zero-protocol/src/queries-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/queries-patch.js +1 -1
- package/out/zero-protocol/src/queries-patch.js.map +1 -1
- package/out/zero-protocol/src/query-server.d.ts +2 -41
- package/out/zero-protocol/src/query-server.d.ts.map +1 -1
- package/out/zero-protocol/src/query-server.js +1 -1
- package/out/zero-protocol/src/query-server.js.map +1 -1
- package/out/zero-protocol/src/up.d.ts +42 -42
- package/out/zero-protocol/src/version.d.ts +0 -1
- package/out/zero-protocol/src/version.d.ts.map +1 -1
- package/out/zero-protocol/src/version.js.map +1 -1
- package/out/zero-react/src/use-query.js +1 -1
- package/out/zero-react/src/use-query.js.map +1 -1
- package/out/zero-schema/src/builder/relationship-builder.d.ts +0 -2
- package/out/zero-schema/src/builder/relationship-builder.d.ts.map +1 -1
- package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
- package/out/zero-schema/src/builder/table-builder.d.ts +1 -1
- package/out/zero-schema/src/builder/table-builder.d.ts.map +1 -1
- package/out/zero-schema/src/builder/table-builder.js +1 -1
- package/out/zero-schema/src/builder/table-builder.js.map +1 -1
- package/out/zero-schema/src/schema-config.d.ts +0 -1
- package/out/zero-schema/src/schema-config.d.ts.map +1 -1
- package/out/zero-schema/src/schema-config.js +1 -1
- package/out/zero-schema/src/schema-config.js.map +1 -1
- package/out/zero-schema/src/table-schema.d.ts +3 -11
- package/out/zero-schema/src/table-schema.d.ts.map +1 -1
- package/out/zero-server/src/queries/process-queries.d.ts +2 -4
- package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
- package/out/zero-server/src/queries/process-queries.js.map +1 -1
- package/out/zero-solid/src/solid-view.d.ts +0 -2
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/zero-solid/src/solid-view.js +1 -1
- package/out/zero-solid/src/solid-view.js.map +1 -1
- package/out/zero-types/src/name-mapper.d.ts +2 -1
- package/out/zero-types/src/name-mapper.d.ts.map +1 -1
- package/out/zero-types/src/name-mapper.js.map +1 -1
- package/out/zero-types/src/schema-value.d.ts +3 -2
- package/out/zero-types/src/schema-value.d.ts.map +1 -1
- package/out/zero-types/src/schema.d.ts +1 -1
- package/out/zero-types/src/schema.d.ts.map +1 -1
- package/out/zql/src/builder/builder.d.ts +1 -11
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +1 -1
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/builder/filter.d.ts +0 -1
- package/out/zql/src/builder/filter.d.ts.map +1 -1
- package/out/zql/src/builder/filter.js.map +1 -1
- package/out/zql/src/error.d.ts +0 -5
- package/out/zql/src/error.d.ts.map +1 -1
- package/out/zql/src/error.js.map +1 -1
- package/out/zql/src/ivm/constraint.d.ts +0 -7
- package/out/zql/src/ivm/constraint.d.ts.map +1 -1
- package/out/zql/src/ivm/constraint.js +1 -1
- package/out/zql/src/ivm/constraint.js.map +1 -1
- package/out/zql/src/ivm/data.d.ts +0 -1
- package/out/zql/src/ivm/data.d.ts.map +1 -1
- package/out/zql/src/ivm/data.js.map +1 -1
- package/out/zql/src/ivm/memory-source.d.ts +1 -2
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +1 -1
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/stream.d.ts +0 -1
- package/out/zql/src/ivm/stream.d.ts.map +1 -1
- package/out/zql/src/ivm/stream.js.map +1 -1
- package/out/zql/src/ivm/union-fan-in.d.ts +0 -1
- package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
- package/out/zql/src/ivm/union-fan-in.js +1 -1
- package/out/zql/src/ivm/union-fan-in.js.map +1 -1
- package/out/zql/src/ivm/view-apply-change.d.ts +5 -35
- package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
- package/out/zql/src/ivm/view-apply-change.js +1 -1
- package/out/zql/src/ivm/view-apply-change.js.map +1 -1
- package/out/zql/src/mutate/crud.d.ts +1 -3
- package/out/zql/src/mutate/crud.d.ts.map +1 -1
- package/out/zql/src/mutate/crud.js +1 -1
- package/out/zql/src/mutate/crud.js.map +1 -1
- package/out/zql/src/mutate/mutator-registry.d.ts +1 -1
- package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -1
- package/out/zql/src/mutate/mutator-registry.js.map +1 -1
- package/out/zql/src/mutate/mutator.d.ts +1 -1
- package/out/zql/src/mutate/mutator.d.ts.map +1 -1
- package/out/zql/src/mutate/mutator.js.map +1 -1
- package/out/zql/src/planner/planner-debug.d.ts +10 -9
- package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
- package/out/zql/src/planner/planner-debug.js.map +1 -1
- package/out/zql/src/planner/planner-node.d.ts +0 -1
- package/out/zql/src/planner/planner-node.d.ts.map +1 -1
- package/out/zql/src/planner/planner-node.js.map +1 -1
- package/out/zql/src/planner/planner-warnings.d.ts +3 -3
- package/out/zql/src/planner/planner-warnings.d.ts.map +1 -1
- package/out/zql/src/planner/planner-warnings.js.map +1 -1
- package/out/zql/src/query/expression.d.ts +0 -22
- package/out/zql/src/query/expression.d.ts.map +1 -1
- package/out/zql/src/query/expression.js +1 -1
- package/out/zql/src/query/expression.js.map +1 -1
- package/out/zql/src/query/query-delegate-base.d.ts +0 -7
- package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
- package/out/zql/src/query/query-delegate-base.js +2 -2
- package/out/zql/src/query/query-delegate-base.js.map +1 -1
- package/out/zql/src/query/query-delegate.d.ts +1 -4
- package/out/zql/src/query/query-delegate.d.ts.map +1 -1
- package/out/zql/src/query/query-internals.d.ts +0 -3
- package/out/zql/src/query/query-internals.d.ts.map +1 -1
- package/out/zql/src/query/query-internals.js.map +1 -1
- package/out/zql/src/query/query-registry.d.ts +5 -5
- package/out/zql/src/query/query-registry.d.ts.map +1 -1
- package/out/zql/src/query/query-registry.js.map +1 -1
- package/out/zql/src/query/query.d.ts +2 -13
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.d.ts +1 -19
- package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.js +1 -1
- package/out/zql/src/query/runnable-query-impl.js.map +1 -1
- package/out/zql/src/query/ttl.d.ts +2 -3
- package/out/zql/src/query/ttl.d.ts.map +1 -1
- package/out/zql/src/query/ttl.js.map +1 -1
- package/out/zqlite/src/query-builder.d.ts +0 -2
- package/out/zqlite/src/query-builder.d.ts.map +1 -1
- package/out/zqlite/src/query-builder.js +1 -1
- package/out/zqlite/src/query-builder.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts +0 -1
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +1 -1
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zero-poke-handler.js","names":["v.parse"],"sources":["../../../../../zero-client/src/client/zero-poke-handler.ts"],"sourcesContent":["import {Lock} from '@rocicorp/lock';\nimport type {LogContext} from '@rocicorp/logger';\nimport type {\n PatchOperationInternal,\n PokeInternal,\n} from '../../../replicache/src/impl.ts';\nimport type {PatchOperation} from '../../../replicache/src/patch-operation.ts';\nimport type {ClientID} from '../../../replicache/src/sync/ids.ts';\nimport {unreachable} from '../../../shared/src/asserts.ts';\nimport * as v from '../../../shared/src/valita.ts';\nimport type {MutationPatch} from '../../../zero-protocol/src/mutations-patch.ts';\nimport {\n pokePartsSchema,\n type PokeEndBody,\n type PokePartBody,\n type PokeParts,\n type PokeStartBody,\n} from '../../../zero-protocol/src/poke.ts';\nimport type {QueriesPatchOp} from '../../../zero-protocol/src/queries-patch.ts';\nimport type {RowPatchOp} from '../../../zero-protocol/src/row-patch.ts';\nimport {\n serverToClient,\n type NameMapper,\n} from '../../../zero-schema/src/name-mapper.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {\n toDesiredQueriesKey,\n toGotQueriesKey,\n toMutationResponseKey,\n toPrimaryKeyString,\n} from './keys.ts';\nimport type {MutationTracker} from './mutation-tracker.ts';\n\ntype PokeAccumulator = {\n readonly pokeStart: PokeStartBody;\n readonly parts: PokePartBody[];\n readonly pokeEnd: PokeEndBody;\n};\n\ntype ReceivingPoke = {\n readonly pokeStart: PokeStartBody;\n readonly parts: PokePartBody[];\n readonly chunks: Uint8Array[];\n};\n\nexport type PokeEndResult = {\n readonly lastMutationIDChangeForSelf: number | undefined;\n readonly hasRows: boolean;\n};\n\n/**\n * Handles the multi-part format of zero pokes.\n * As an optimization it also debounces pokes, only poking Replicache with a\n * merged poke at most once per scheduled callback (using setTimeout).\n * This debouncing avoids wastefully computing separate diffs and IVM updates\n * for intermediate states. setTimeout is used instead of requestAnimationFrame\n * to ensure pokes are delivered even when the tab is in the background,\n * enabling notifications (sounds, favicon badges) to work correctly.\n */\nexport class PokeHandler {\n readonly #replicachePoke: (poke: PokeInternal) => Promise<void>;\n readonly #onPokeError: (error: unknown) => void;\n readonly #clientID: ClientID;\n readonly #lc: LogContext;\n #receivingPoke: ReceivingPoke | undefined = undefined;\n readonly #pokeBuffer: PokeAccumulator[] = [];\n #pokePlaybackLoopRunning = false;\n #lastScheduledTimestamp = 0;\n // Serializes calls to this.#replicachePoke otherwise we can cause out of\n // order poke errors.\n readonly #pokeLock = new Lock();\n readonly #schema: Schema;\n readonly #serverToClient: NameMapper;\n readonly #mutationTracker: MutationTracker;\n\n constructor(\n replicachePoke: (poke: PokeInternal) => Promise<void>,\n onPokeError: (error: unknown) => void,\n clientID: ClientID,\n schema: Schema,\n lc: LogContext,\n mutationTracker: MutationTracker,\n ) {\n this.#replicachePoke = replicachePoke;\n this.#onPokeError = onPokeError;\n this.#clientID = clientID;\n this.#schema = schema;\n this.#serverToClient = serverToClient(schema.tables);\n this.#lc = lc.withContext('PokeHandler');\n this.#mutationTracker = mutationTracker;\n }\n\n handlePokeStart(pokeStart: PokeStartBody) {\n if (this.#receivingPoke) {\n this.#handlePokeError(\n `pokeStart ${JSON.stringify(\n pokeStart,\n )} while still receiving ${JSON.stringify(\n this.#receivingPoke.pokeStart,\n )} `,\n );\n return;\n }\n this.#receivingPoke = {\n pokeStart,\n parts: [],\n chunks: [],\n };\n }\n\n handlePokePart(pokePart: PokePartBody): number | undefined {\n if (pokePart.pokeID !== this.#receivingPoke?.pokeStart.pokeID) {\n this.#handlePokeError(\n `pokePart for ${pokePart.pokeID}, when receiving ${\n this.#receivingPoke?.pokeStart.pokeID\n }`,\n );\n return;\n }\n if (this.#receivingPoke.chunks.length > 0) {\n this.#handlePokeError('received both pokePart and binary poke chunks');\n return;\n }\n this.#receivingPoke.parts.push(pokePart);\n return pokePart.lastMutationIDChanges?.[this.#clientID];\n }\n\n handlePokeChunk(chunk: Uint8Array): void {\n if (!this.#receivingPoke) {\n this.#handlePokeError('received a binary poke chunk without pokeStart');\n return;\n }\n if (this.#receivingPoke.parts.length > 0) {\n this.#handlePokeError('received both pokePart and binary poke chunks');\n return;\n }\n this.#receivingPoke.chunks.push(chunk);\n }\n\n handlePokeEnd(pokeEnd: PokeEndBody): PokeEndResult | undefined {\n if (pokeEnd.pokeID !== this.#receivingPoke?.pokeStart.pokeID) {\n this.#handlePokeError(\n `pokeEnd for ${pokeEnd.pokeID}, when receiving ${\n this.#receivingPoke?.pokeStart.pokeID\n }`,\n );\n return;\n }\n if (pokeEnd.cancel) {\n this.#receivingPoke = undefined;\n return;\n }\n const receivingPoke = this.#receivingPoke;\n let parts = receivingPoke.parts;\n if (receivingPoke.chunks.length > 0) {\n try {\n parts = decodePokeChunks(receivingPoke.chunks);\n } catch (e) {\n this.#handlePokeError(e);\n return;\n }\n }\n\n const result = summarizePoke(parts, this.#clientID);\n this.#pokeBuffer.push({\n pokeStart: receivingPoke.pokeStart,\n parts,\n pokeEnd,\n });\n this.#receivingPoke = undefined;\n if (!this.#pokePlaybackLoopRunning) {\n this.#startPlaybackLoop();\n }\n return result;\n }\n\n handleDisconnect(): void {\n this.#lc.debug?.('clearing due to disconnect');\n this.#clear();\n }\n\n #startPlaybackLoop() {\n this.#lc.debug?.('starting playback loop');\n this.#pokePlaybackLoopRunning = true;\n setTimeout(this.#scheduledCallback, 0);\n }\n\n #scheduledCallback = async () => {\n const lc = this.#lc.withContext(\n 'scheduledAt',\n Math.floor(performance.now()),\n );\n if (this.#pokeBuffer.length === 0) {\n lc.debug?.('stopping playback loop');\n this.#pokePlaybackLoopRunning = false;\n return;\n }\n setTimeout(this.#scheduledCallback, 0);\n const start = performance.now();\n lc.debug?.(\n 'scheduled callback fired, processing pokes. Since last callback',\n start - this.#lastScheduledTimestamp,\n );\n this.#lastScheduledTimestamp = start;\n await this.#processPokesForFrame(lc);\n lc.debug?.('processing pokes took', performance.now() - start);\n };\n\n #processPokesForFrame(lc: LogContext): Promise<void> {\n return this.#pokeLock.withLock(async () => {\n const now = Date.now();\n lc.debug?.('got poke lock at', now);\n lc.debug?.('merging', this.#pokeBuffer.length);\n try {\n const merged = mergePokes(\n this.#pokeBuffer,\n this.#schema,\n this.#serverToClient,\n );\n this.#pokeBuffer.length = 0;\n if (merged === undefined) {\n lc.debug?.('frame is empty');\n return;\n }\n const start = performance.now();\n lc.debug?.('poking replicache');\n await this.#replicachePoke(merged);\n lc.debug?.('poking replicache took', performance.now() - start);\n\n if (!('error' in merged.pullResponse)) {\n const lmid =\n merged.pullResponse.lastMutationIDChanges[this.#clientID];\n if (lmid !== undefined) {\n this.#mutationTracker.lmidAdvanced(lmid);\n }\n }\n } catch (e) {\n this.#handlePokeError(e);\n }\n });\n }\n\n #handlePokeError(e: unknown) {\n if (String(e).includes('unexpected base cookie for poke')) {\n // This can happen if cookie changes due to refresh from idb due\n // to an update arriving to different tabs in the same\n // client group at very different times. Unusual but possible.\n this.#lc.debug?.('clearing due to', e);\n } else {\n this.#lc.error?.('clearing due to unexpected poke error', e);\n }\n this.#clear();\n this.#onPokeError(e);\n }\n\n #clear() {\n this.#receivingPoke = undefined;\n this.#pokeBuffer.length = 0;\n }\n}\n\nfunction decodePokeChunks(chunks: Uint8Array[]): PokeParts {\n const decoder = new TextDecoder('utf-8', {fatal: true});\n const decoded = new Array<string>(chunks.length + 1);\n for (let i = 0; i < chunks.length; i++) {\n decoded[i] = decoder.decode(chunks[i], {stream: true});\n }\n decoded[chunks.length] = decoder.decode();\n chunks.length = 0;\n return v.parse(JSON.parse(decoded.join('')), pokePartsSchema, 'passthrough');\n}\n\nfunction summarizePoke(\n parts: PokePartBody[],\n clientID: ClientID,\n): PokeEndResult {\n let lastMutationIDChangeForSelf: number | undefined;\n let hasRows = false;\n for (const part of parts) {\n const lmid = part.lastMutationIDChanges?.[clientID];\n if (lmid !== undefined) {\n lastMutationIDChangeForSelf = lmid;\n }\n hasRows ||= Boolean(part.rowsPatch?.length);\n }\n return {lastMutationIDChangeForSelf, hasRows};\n}\n\nexport function mergePokes(\n pokeBuffer: PokeAccumulator[],\n schema: Schema,\n serverToClient: NameMapper,\n):\n | (PokeInternal & {mutationResults?: MutationPatch[] | undefined})\n | undefined {\n if (pokeBuffer.length === 0) {\n return undefined;\n }\n const {baseCookie} = pokeBuffer[0].pokeStart;\n // oxlint-disable-next-line typescript/no-non-null-assertion\n const lastPoke = pokeBuffer.at(-1)!;\n const {cookie} = lastPoke.pokeEnd;\n const mergedPatch: PatchOperationInternal[] = [];\n const mergedLastMutationIDChanges: Record<string, number> = {};\n const mutationResults: MutationPatch[] = [];\n\n let prevPokeEnd = undefined;\n for (const pokeAccumulator of pokeBuffer) {\n if (\n prevPokeEnd &&\n pokeAccumulator.pokeStart.baseCookie &&\n pokeAccumulator.pokeStart.baseCookie > prevPokeEnd.cookie\n ) {\n throw Error(\n `unexpected cookie gap ${JSON.stringify(prevPokeEnd)} ${JSON.stringify(\n pokeAccumulator.pokeStart,\n )}`,\n );\n }\n prevPokeEnd = pokeAccumulator.pokeEnd;\n for (const pokePart of pokeAccumulator.parts) {\n if (pokePart.lastMutationIDChanges) {\n for (const [clientID, lastMutationID] of Object.entries(\n pokePart.lastMutationIDChanges,\n )) {\n mergedLastMutationIDChanges[clientID] = lastMutationID;\n }\n }\n if (pokePart.desiredQueriesPatches) {\n for (const [clientID, queriesPatch] of Object.entries(\n pokePart.desiredQueriesPatches,\n )) {\n for (const op of queriesPatch) {\n mergedPatch.push(\n queryPatchOpToReplicachePatchOp(op, hash =>\n toDesiredQueriesKey(clientID, hash),\n ),\n );\n }\n }\n }\n if (pokePart.gotQueriesPatch) {\n for (const op of pokePart.gotQueriesPatch) {\n mergedPatch.push(\n queryPatchOpToReplicachePatchOp(op, toGotQueriesKey),\n );\n }\n }\n if (pokePart.rowsPatch) {\n for (const p of pokePart.rowsPatch) {\n const patchOp = rowsPatchOpToReplicachePatchOp(\n p,\n schema,\n serverToClient,\n );\n if (patchOp) {\n mergedPatch.push(patchOp);\n }\n }\n }\n if (pokePart.mutationsPatch) {\n for (const op of pokePart.mutationsPatch) {\n mergedPatch.push(mutationPatchOpToReplicachePatchOp(op));\n }\n }\n }\n }\n const ret: PokeInternal & {mutationResults?: MutationPatch[] | undefined} = {\n baseCookie,\n pullResponse: {\n lastMutationIDChanges: mergedLastMutationIDChanges,\n patch: mergedPatch,\n cookie,\n },\n };\n\n // For backwards compatibility. Because we're strict on our validation,\n // zero-client must be able to parse pokes with this field before we introduce it.\n // So users can update their clients and then start using custom mutators that write responses to the db.\n if (mutationResults.length > 0) {\n ret.mutationResults = mutationResults;\n }\n return ret;\n}\n\nfunction queryPatchOpToReplicachePatchOp(\n op: QueriesPatchOp,\n toKey: (hash: string) => string,\n): PatchOperation {\n switch (op.op) {\n case 'clear':\n return op;\n case 'del':\n return {\n op: 'del',\n key: toKey(op.hash),\n };\n case 'put':\n return {\n op: 'put',\n key: toKey(op.hash),\n value: null,\n };\n default:\n unreachable(op);\n }\n}\n\nexport function mutationPatchOpToReplicachePatchOp(\n op: MutationPatch,\n): PatchOperationInternal {\n switch (op.op) {\n case 'put':\n return {\n op: 'put',\n key: toMutationResponseKey(op.mutation.id),\n value: op.mutation.result,\n };\n case 'del':\n return {\n op: 'del',\n key: toMutationResponseKey(op.id),\n };\n }\n}\n\nfunction rowsPatchOpToReplicachePatchOp(\n op: RowPatchOp,\n schema: Schema,\n serverToClient: NameMapper,\n): PatchOperationInternal | undefined {\n if (op.op === 'clear') {\n return op;\n }\n // Skip rows for tables not in the client schema. This can happen when\n // the server-side query AST references tables (e.g. issueNotifications)\n // that are not yet part of the client schema definition.\n const tableName = serverToClient.tableNameIfKnown(op.tableName);\n if (!tableName) {\n return undefined;\n }\n switch (op.op) {\n case 'del':\n return {\n op: 'del',\n key: toPrimaryKeyString(\n tableName,\n schema.tables[tableName].primaryKey,\n serverToClient.row(op.tableName, op.id),\n ),\n };\n case 'put':\n return {\n op: 'put',\n key: toPrimaryKeyString(\n tableName,\n schema.tables[tableName].primaryKey,\n serverToClient.row(op.tableName, op.value),\n ),\n value: serverToClient.row(op.tableName, op.value),\n };\n case 'update':\n return {\n op: 'update',\n key: toPrimaryKeyString(\n tableName,\n schema.tables[tableName].primaryKey,\n serverToClient.row(op.tableName, op.id),\n ),\n merge: op.merge\n ? serverToClient.row(op.tableName, op.merge)\n : undefined,\n constrain: serverToClient.columns(op.tableName, op.constrain),\n };\n default:\n unreachable(op);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"zero-poke-handler.js","names":["v.parse"],"sources":["../../../../../zero-client/src/client/zero-poke-handler.ts"],"sourcesContent":["import {Lock} from '@rocicorp/lock';\nimport type {LogContext} from '@rocicorp/logger';\nimport type {\n PatchOperationInternal,\n PokeInternal,\n} from '../../../replicache/src/impl.ts';\nimport type {PatchOperation} from '../../../replicache/src/patch-operation.ts';\nimport type {ClientID} from '../../../replicache/src/sync/ids.ts';\nimport {unreachable} from '../../../shared/src/asserts.ts';\nimport * as v from '../../../shared/src/valita.ts';\nimport type {MutationPatch} from '../../../zero-protocol/src/mutations-patch.ts';\nimport {\n pokePartsSchema,\n type PokeEndBody,\n type PokePartBody,\n type PokeParts,\n type PokeStartBody,\n} from '../../../zero-protocol/src/poke.ts';\nimport type {QueriesPatchOp} from '../../../zero-protocol/src/queries-patch.ts';\nimport type {RowPatchOp} from '../../../zero-protocol/src/row-patch.ts';\nimport {\n serverToClient,\n type NameMapper,\n} from '../../../zero-schema/src/name-mapper.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport {\n toDesiredQueriesKey,\n toGotQueriesKey,\n toMutationResponseKey,\n toPrimaryKeyString,\n} from './keys.ts';\nimport type {MutationTracker} from './mutation-tracker.ts';\n\ntype PokeAccumulator = {\n readonly pokeStart: PokeStartBody;\n readonly parts: PokePartBody[];\n readonly pokeEnd: PokeEndBody;\n};\n\ntype ReceivingPoke = {\n readonly pokeStart: PokeStartBody;\n readonly parts: PokePartBody[];\n readonly chunks: Uint8Array[];\n};\n\nexport type PokeEndResult = {\n readonly lastMutationIDChangeForSelf: number | undefined;\n readonly hasRows: boolean;\n};\n\n/**\n * Handles the multi-part format of zero pokes.\n * As an optimization it also debounces pokes, only poking Replicache with a\n * merged poke at most once per scheduled callback (using setTimeout).\n * This debouncing avoids wastefully computing separate diffs and IVM updates\n * for intermediate states. setTimeout is used instead of requestAnimationFrame\n * to ensure pokes are delivered even when the tab is in the background,\n * enabling notifications (sounds, favicon badges) to work correctly.\n */\nexport class PokeHandler {\n readonly #replicachePoke: (poke: PokeInternal) => Promise<void>;\n readonly #onPokeError: (error: unknown) => void;\n readonly #clientID: ClientID;\n readonly #lc: LogContext;\n #receivingPoke: ReceivingPoke | undefined = undefined;\n readonly #pokeBuffer: PokeAccumulator[] = [];\n #pokePlaybackLoopRunning = false;\n #lastScheduledTimestamp = 0;\n // Serializes calls to this.#replicachePoke otherwise we can cause out of\n // order poke errors.\n readonly #pokeLock = new Lock();\n readonly #schema: Schema;\n readonly #serverToClient: NameMapper;\n readonly #mutationTracker: MutationTracker;\n\n constructor(\n replicachePoke: (poke: PokeInternal) => Promise<void>,\n onPokeError: (error: unknown) => void,\n clientID: ClientID,\n schema: Schema,\n lc: LogContext,\n mutationTracker: MutationTracker,\n ) {\n this.#replicachePoke = replicachePoke;\n this.#onPokeError = onPokeError;\n this.#clientID = clientID;\n this.#schema = schema;\n this.#serverToClient = serverToClient(schema.tables);\n this.#lc = lc.withContext('PokeHandler');\n this.#mutationTracker = mutationTracker;\n }\n\n handlePokeStart(pokeStart: PokeStartBody) {\n if (this.#receivingPoke) {\n this.#handlePokeError(\n `pokeStart ${JSON.stringify(\n pokeStart,\n )} while still receiving ${JSON.stringify(\n this.#receivingPoke.pokeStart,\n )} `,\n );\n return;\n }\n this.#receivingPoke = {\n pokeStart,\n parts: [],\n chunks: [],\n };\n }\n\n handlePokePart(pokePart: PokePartBody): number | undefined {\n if (pokePart.pokeID !== this.#receivingPoke?.pokeStart.pokeID) {\n this.#handlePokeError(\n `pokePart for ${pokePart.pokeID}, when receiving ${\n this.#receivingPoke?.pokeStart.pokeID\n }`,\n );\n return;\n }\n if (this.#receivingPoke.chunks.length > 0) {\n this.#handlePokeError('received both pokePart and binary poke chunks');\n return;\n }\n this.#receivingPoke.parts.push(pokePart);\n return pokePart.lastMutationIDChanges?.[this.#clientID];\n }\n\n handlePokeChunk(chunk: Uint8Array): void {\n if (!this.#receivingPoke) {\n this.#handlePokeError('received a binary poke chunk without pokeStart');\n return;\n }\n if (this.#receivingPoke.parts.length > 0) {\n this.#handlePokeError('received both pokePart and binary poke chunks');\n return;\n }\n this.#receivingPoke.chunks.push(chunk);\n }\n\n handlePokeEnd(pokeEnd: PokeEndBody): PokeEndResult | undefined {\n if (pokeEnd.pokeID !== this.#receivingPoke?.pokeStart.pokeID) {\n this.#handlePokeError(\n `pokeEnd for ${pokeEnd.pokeID}, when receiving ${\n this.#receivingPoke?.pokeStart.pokeID\n }`,\n );\n return;\n }\n if (pokeEnd.cancel) {\n this.#receivingPoke = undefined;\n return;\n }\n const receivingPoke = this.#receivingPoke;\n let parts = receivingPoke.parts;\n if (receivingPoke.chunks.length > 0) {\n try {\n parts = decodePokeChunks(receivingPoke.chunks);\n } catch (e) {\n this.#handlePokeError(e);\n return;\n }\n }\n\n const result = summarizePoke(parts, this.#clientID);\n this.#pokeBuffer.push({\n pokeStart: receivingPoke.pokeStart,\n parts,\n pokeEnd,\n });\n this.#receivingPoke = undefined;\n if (!this.#pokePlaybackLoopRunning) {\n this.#startPlaybackLoop();\n }\n return result;\n }\n\n handleDisconnect(): void {\n this.#lc.debug?.('clearing due to disconnect');\n this.#clear();\n }\n\n #startPlaybackLoop() {\n this.#lc.debug?.('starting playback loop');\n this.#pokePlaybackLoopRunning = true;\n setTimeout(this.#scheduledCallback, 0);\n }\n\n #scheduledCallback = async () => {\n const lc = this.#lc.withContext(\n 'scheduledAt',\n Math.floor(performance.now()),\n );\n if (this.#pokeBuffer.length === 0) {\n lc.debug?.('stopping playback loop');\n this.#pokePlaybackLoopRunning = false;\n return;\n }\n setTimeout(this.#scheduledCallback, 0);\n const start = performance.now();\n lc.debug?.(\n 'scheduled callback fired, processing pokes. Since last callback',\n start - this.#lastScheduledTimestamp,\n );\n this.#lastScheduledTimestamp = start;\n await this.#processPokesForFrame(lc);\n lc.debug?.('processing pokes took', performance.now() - start);\n };\n\n #processPokesForFrame(lc: LogContext): Promise<void> {\n return this.#pokeLock.withLock(async () => {\n const now = Date.now();\n lc.debug?.('got poke lock at', now);\n lc.debug?.('merging', this.#pokeBuffer.length);\n try {\n const merged = mergePokes(\n this.#pokeBuffer,\n this.#schema,\n this.#serverToClient,\n );\n this.#pokeBuffer.length = 0;\n if (merged === undefined) {\n lc.debug?.('frame is empty');\n return;\n }\n const start = performance.now();\n lc.debug?.('poking replicache');\n await this.#replicachePoke(merged);\n lc.debug?.('poking replicache took', performance.now() - start);\n\n if (!('error' in merged.pullResponse)) {\n const lmid =\n merged.pullResponse.lastMutationIDChanges[this.#clientID];\n if (lmid !== undefined) {\n this.#mutationTracker.lmidAdvanced(lmid);\n }\n }\n } catch (e) {\n this.#handlePokeError(e);\n }\n });\n }\n\n #handlePokeError(e: unknown) {\n if (String(e).includes('unexpected base cookie for poke')) {\n // This can happen if cookie changes due to refresh from idb due\n // to an update arriving to different tabs in the same\n // client group at very different times. Unusual but possible.\n this.#lc.debug?.('clearing due to', e);\n } else {\n this.#lc.error?.('clearing due to unexpected poke error', e);\n }\n this.#clear();\n this.#onPokeError(e);\n }\n\n #clear() {\n this.#receivingPoke = undefined;\n this.#pokeBuffer.length = 0;\n }\n}\n\nfunction decodePokeChunks(chunks: Uint8Array[]): PokeParts {\n const decoder = new TextDecoder('utf-8', {fatal: true});\n const decoded = new Array<string>(chunks.length + 1);\n for (let i = 0; i < chunks.length; i++) {\n decoded[i] = decoder.decode(chunks[i], {stream: true});\n }\n decoded[chunks.length] = decoder.decode();\n chunks.length = 0;\n return v.parse(JSON.parse(decoded.join('')), pokePartsSchema, 'passthrough');\n}\n\nfunction summarizePoke(\n parts: PokePartBody[],\n clientID: ClientID,\n): PokeEndResult {\n let lastMutationIDChangeForSelf: number | undefined;\n let hasRows = false;\n for (const part of parts) {\n const lmid = part.lastMutationIDChanges?.[clientID];\n if (lmid !== undefined) {\n lastMutationIDChangeForSelf = lmid;\n }\n hasRows ||= Boolean(part.rowsPatch?.length);\n }\n return {lastMutationIDChangeForSelf, hasRows};\n}\n\nexport function mergePokes(\n pokeBuffer: PokeAccumulator[],\n schema: Schema,\n serverToClient: NameMapper,\n):\n | (PokeInternal & {mutationResults?: MutationPatch[] | undefined})\n | undefined {\n if (pokeBuffer.length === 0) {\n return undefined;\n }\n const {baseCookie} = pokeBuffer[0].pokeStart;\n // oxlint-disable-next-line typescript/no-non-null-assertion\n const lastPoke = pokeBuffer.at(-1)!;\n const {cookie} = lastPoke.pokeEnd;\n const mergedPatch: PatchOperationInternal[] = [];\n const mergedLastMutationIDChanges: Record<string, number> = {};\n const mutationResults: MutationPatch[] = [];\n\n let prevPokeEnd = undefined;\n for (const pokeAccumulator of pokeBuffer) {\n if (\n prevPokeEnd &&\n pokeAccumulator.pokeStart.baseCookie &&\n pokeAccumulator.pokeStart.baseCookie > prevPokeEnd.cookie\n ) {\n throw Error(\n `unexpected cookie gap ${JSON.stringify(prevPokeEnd)} ${JSON.stringify(\n pokeAccumulator.pokeStart,\n )}`,\n );\n }\n prevPokeEnd = pokeAccumulator.pokeEnd;\n for (const pokePart of pokeAccumulator.parts) {\n if (pokePart.lastMutationIDChanges) {\n for (const [clientID, lastMutationID] of Object.entries(\n pokePart.lastMutationIDChanges,\n )) {\n mergedLastMutationIDChanges[clientID] = lastMutationID;\n }\n }\n if (pokePart.desiredQueriesPatches) {\n for (const [clientID, queriesPatch] of Object.entries(\n pokePart.desiredQueriesPatches,\n )) {\n for (const op of queriesPatch) {\n mergedPatch.push(\n queryPatchOpToReplicachePatchOp(op, hash =>\n toDesiredQueriesKey(clientID, hash),\n ),\n );\n }\n }\n }\n if (pokePart.gotQueriesPatch) {\n for (const op of pokePart.gotQueriesPatch) {\n mergedPatch.push(\n queryPatchOpToReplicachePatchOp(op, toGotQueriesKey),\n );\n }\n }\n if (pokePart.rowsPatch) {\n for (const p of pokePart.rowsPatch) {\n const patchOp = rowsPatchOpToReplicachePatchOp(\n p,\n schema,\n serverToClient,\n );\n if (patchOp) {\n mergedPatch.push(patchOp);\n }\n }\n }\n if (pokePart.mutationsPatch) {\n for (const op of pokePart.mutationsPatch) {\n mergedPatch.push(mutationPatchOpToReplicachePatchOp(op));\n }\n }\n }\n }\n const ret: PokeInternal & {mutationResults?: MutationPatch[] | undefined} = {\n baseCookie,\n pullResponse: {\n lastMutationIDChanges: mergedLastMutationIDChanges,\n patch: mergedPatch,\n cookie,\n },\n };\n\n // For backwards compatibility. Because we're strict on our validation,\n // zero-client must be able to parse pokes with this field before we introduce it.\n // So users can update their clients and then start using custom mutators that write responses to the db.\n if (mutationResults.length > 0) {\n ret.mutationResults = mutationResults;\n }\n return ret;\n}\n\nfunction queryPatchOpToReplicachePatchOp(\n op: QueriesPatchOp,\n toKey: (hash: string) => string,\n): PatchOperation {\n switch (op.op) {\n case 'clear':\n return op;\n case 'del':\n return {\n op: 'del',\n key: toKey(op.hash),\n };\n case 'put':\n return {\n op: 'put',\n key: toKey(op.hash),\n value: null,\n };\n default:\n unreachable(op);\n }\n}\n\nfunction mutationPatchOpToReplicachePatchOp(\n op: MutationPatch,\n): PatchOperationInternal {\n switch (op.op) {\n case 'put':\n return {\n op: 'put',\n key: toMutationResponseKey(op.mutation.id),\n value: op.mutation.result,\n };\n case 'del':\n return {\n op: 'del',\n key: toMutationResponseKey(op.id),\n };\n }\n}\n\nfunction rowsPatchOpToReplicachePatchOp(\n op: RowPatchOp,\n schema: Schema,\n serverToClient: NameMapper,\n): PatchOperationInternal | undefined {\n if (op.op === 'clear') {\n return op;\n }\n // Skip rows for tables not in the client schema. This can happen when\n // the server-side query AST references tables (e.g. issueNotifications)\n // that are not yet part of the client schema definition.\n const tableName = serverToClient.tableNameIfKnown(op.tableName);\n if (!tableName) {\n return undefined;\n }\n switch (op.op) {\n case 'del':\n return {\n op: 'del',\n key: toPrimaryKeyString(\n tableName,\n schema.tables[tableName].primaryKey,\n serverToClient.row(op.tableName, op.id),\n ),\n };\n case 'put':\n return {\n op: 'put',\n key: toPrimaryKeyString(\n tableName,\n schema.tables[tableName].primaryKey,\n serverToClient.row(op.tableName, op.value),\n ),\n value: serverToClient.row(op.tableName, op.value),\n };\n case 'update':\n return {\n op: 'update',\n key: toPrimaryKeyString(\n tableName,\n schema.tables[tableName].primaryKey,\n serverToClient.row(op.tableName, op.id),\n ),\n merge: op.merge\n ? serverToClient.row(op.tableName, op.merge)\n : undefined,\n constrain: serverToClient.columns(op.tableName, op.constrain),\n };\n default:\n unreachable(op);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA2DA,IAAa,cAAb,MAAyB;CACvB;CACA;CACA;CACA;CACA,iBAA4C,KAAA;CAC5C,cAA0C,CAAC;CAC3C,2BAA2B;CAC3B,0BAA0B;CAG1B,YAAqB,IAAI,KAAK;CAC9B;CACA;CACA;CAEA,YACE,gBACA,aACA,UACA,QACA,IACA,iBACA;EACA,KAAK,kBAAkB;EACvB,KAAK,eAAe;EACpB,KAAK,YAAY;EACjB,KAAK,UAAU;EACf,KAAK,kBAAkB,eAAe,OAAO,MAAM;EACnD,KAAK,MAAM,GAAG,YAAY,aAAa;EACvC,KAAK,mBAAmB;CAC1B;CAEA,gBAAgB,WAA0B;EACxC,IAAI,KAAK,gBAAgB;GACvB,KAAK,iBACH,aAAa,KAAK,UAChB,SACF,EAAE,0BAA0B,KAAK,UAC/B,KAAK,eAAe,SACtB,EAAE,EACJ;GACA;EACF;EACA,KAAK,iBAAiB;GACpB;GACA,OAAO,CAAC;GACR,QAAQ,CAAC;EACX;CACF;CAEA,eAAe,UAA4C;EACzD,IAAI,SAAS,WAAW,KAAK,gBAAgB,UAAU,QAAQ;GAC7D,KAAK,iBACH,gBAAgB,SAAS,OAAO,mBAC9B,KAAK,gBAAgB,UAAU,QAEnC;GACA;EACF;EACA,IAAI,KAAK,eAAe,OAAO,SAAS,GAAG;GACzC,KAAK,iBAAiB,+CAA+C;GACrE;EACF;EACA,KAAK,eAAe,MAAM,KAAK,QAAQ;EACvC,OAAO,SAAS,wBAAwB,KAAK;CAC/C;CAEA,gBAAgB,OAAyB;EACvC,IAAI,CAAC,KAAK,gBAAgB;GACxB,KAAK,iBAAiB,gDAAgD;GACtE;EACF;EACA,IAAI,KAAK,eAAe,MAAM,SAAS,GAAG;GACxC,KAAK,iBAAiB,+CAA+C;GACrE;EACF;EACA,KAAK,eAAe,OAAO,KAAK,KAAK;CACvC;CAEA,cAAc,SAAiD;EAC7D,IAAI,QAAQ,WAAW,KAAK,gBAAgB,UAAU,QAAQ;GAC5D,KAAK,iBACH,eAAe,QAAQ,OAAO,mBAC5B,KAAK,gBAAgB,UAAU,QAEnC;GACA;EACF;EACA,IAAI,QAAQ,QAAQ;GAClB,KAAK,iBAAiB,KAAA;GACtB;EACF;EACA,MAAM,gBAAgB,KAAK;EAC3B,IAAI,QAAQ,cAAc;EAC1B,IAAI,cAAc,OAAO,SAAS,GAChC,IAAI;GACF,QAAQ,iBAAiB,cAAc,MAAM;EAC/C,SAAS,GAAG;GACV,KAAK,iBAAiB,CAAC;GACvB;EACF;EAGF,MAAM,SAAS,cAAc,OAAO,KAAK,SAAS;EAClD,KAAK,YAAY,KAAK;GACpB,WAAW,cAAc;GACzB;GACA;EACF,CAAC;EACD,KAAK,iBAAiB,KAAA;EACtB,IAAI,CAAC,KAAK,0BACR,KAAK,mBAAmB;EAE1B,OAAO;CACT;CAEA,mBAAyB;EACvB,KAAK,IAAI,QAAQ,4BAA4B;EAC7C,KAAK,OAAO;CACd;CAEA,qBAAqB;EACnB,KAAK,IAAI,QAAQ,wBAAwB;EACzC,KAAK,2BAA2B;EAChC,WAAW,KAAK,oBAAoB,CAAC;CACvC;CAEA,qBAAqB,YAAY;EAC/B,MAAM,KAAK,KAAK,IAAI,YAClB,eACA,KAAK,MAAM,YAAY,IAAI,CAAC,CAC9B;EACA,IAAI,KAAK,YAAY,WAAW,GAAG;GACjC,GAAG,QAAQ,wBAAwB;GACnC,KAAK,2BAA2B;GAChC;EACF;EACA,WAAW,KAAK,oBAAoB,CAAC;EACrC,MAAM,QAAQ,YAAY,IAAI;EAC9B,GAAG,QACD,mEACA,QAAQ,KAAK,uBACf;EACA,KAAK,0BAA0B;EAC/B,MAAM,KAAK,sBAAsB,EAAE;EACnC,GAAG,QAAQ,yBAAyB,YAAY,IAAI,IAAI,KAAK;CAC/D;CAEA,sBAAsB,IAA+B;EACnD,OAAO,KAAK,UAAU,SAAS,YAAY;GACzC,MAAM,MAAM,KAAK,IAAI;GACrB,GAAG,QAAQ,oBAAoB,GAAG;GAClC,GAAG,QAAQ,WAAW,KAAK,YAAY,MAAM;GAC7C,IAAI;IACF,MAAM,SAAS,WACb,KAAK,aACL,KAAK,SACL,KAAK,eACP;IACA,KAAK,YAAY,SAAS;IAC1B,IAAI,WAAW,KAAA,GAAW;KACxB,GAAG,QAAQ,gBAAgB;KAC3B;IACF;IACA,MAAM,QAAQ,YAAY,IAAI;IAC9B,GAAG,QAAQ,mBAAmB;IAC9B,MAAM,KAAK,gBAAgB,MAAM;IACjC,GAAG,QAAQ,0BAA0B,YAAY,IAAI,IAAI,KAAK;IAE9D,IAAI,EAAE,WAAW,OAAO,eAAe;KACrC,MAAM,OACJ,OAAO,aAAa,sBAAsB,KAAK;KACjD,IAAI,SAAS,KAAA,GACX,KAAK,iBAAiB,aAAa,IAAI;IAE3C;GACF,SAAS,GAAG;IACV,KAAK,iBAAiB,CAAC;GACzB;EACF,CAAC;CACH;CAEA,iBAAiB,GAAY;EAC3B,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,iCAAiC,GAItD,KAAK,IAAI,QAAQ,mBAAmB,CAAC;OAErC,KAAK,IAAI,QAAQ,yCAAyC,CAAC;EAE7D,KAAK,OAAO;EACZ,KAAK,aAAa,CAAC;CACrB;CAEA,SAAS;EACP,KAAK,iBAAiB,KAAA;EACtB,KAAK,YAAY,SAAS;CAC5B;AACF;AAEA,SAAS,iBAAiB,QAAiC;CACzD,MAAM,UAAU,IAAI,YAAY,SAAS,EAAC,OAAO,KAAI,CAAC;CACtD,MAAM,UAAU,IAAI,MAAc,OAAO,SAAS,CAAC;CACnD,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KACjC,QAAQ,KAAK,QAAQ,OAAO,OAAO,IAAI,EAAC,QAAQ,KAAI,CAAC;CAEvD,QAAQ,OAAO,UAAU,QAAQ,OAAO;CACxC,OAAO,SAAS;CAChB,OAAOA,MAAQ,KAAK,MAAM,QAAQ,KAAK,EAAE,CAAC,GAAG,iBAAiB,aAAa;AAC7E;AAEA,SAAS,cACP,OACA,UACe;CACf,IAAI;CACJ,IAAI,UAAU;CACd,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,OAAO,KAAK,wBAAwB;EAC1C,IAAI,SAAS,KAAA,GACX,8BAA8B;EAEhC,YAAY,QAAQ,KAAK,WAAW,MAAM;CAC5C;CACA,OAAO;EAAC;EAA6B;CAAO;AAC9C;AAEA,SAAgB,WACd,YACA,QACA,gBAGY;CACZ,IAAI,WAAW,WAAW,GACxB;CAEF,MAAM,EAAC,eAAc,WAAW,EAAE,CAAC;CAGnC,MAAM,EAAC,WADU,WAAW,GAAG,EACd,CAAA,CAAS;CAC1B,MAAM,cAAwC,CAAC;CAC/C,MAAM,8BAAsD,CAAC;CAC7D,MAAM,kBAAmC,CAAC;CAE1C,IAAI,cAAc,KAAA;CAClB,KAAK,MAAM,mBAAmB,YAAY;EACxC,IACE,eACA,gBAAgB,UAAU,cAC1B,gBAAgB,UAAU,aAAa,YAAY,QAEnD,MAAM,MACJ,yBAAyB,KAAK,UAAU,WAAW,EAAE,GAAG,KAAK,UAC3D,gBAAgB,SAClB,GACF;EAEF,cAAc,gBAAgB;EAC9B,KAAK,MAAM,YAAY,gBAAgB,OAAO;GAC5C,IAAI,SAAS,uBACX,KAAK,MAAM,CAAC,UAAU,mBAAmB,OAAO,QAC9C,SAAS,qBACX,GACE,4BAA4B,YAAY;GAG5C,IAAI,SAAS,uBACX,KAAK,MAAM,CAAC,UAAU,iBAAiB,OAAO,QAC5C,SAAS,qBACX,GACE,KAAK,MAAM,MAAM,cACf,YAAY,KACV,gCAAgC,KAAI,SAClC,oBAAoB,UAAU,IAAI,CACpC,CACF;GAIN,IAAI,SAAS,iBACX,KAAK,MAAM,MAAM,SAAS,iBACxB,YAAY,KACV,gCAAgC,IAAI,eAAe,CACrD;GAGJ,IAAI,SAAS,WACX,KAAK,MAAM,KAAK,SAAS,WAAW;IAClC,MAAM,UAAU,+BACd,GACA,QACA,cACF;IACA,IAAI,SACF,YAAY,KAAK,OAAO;GAE5B;GAEF,IAAI,SAAS,gBACX,KAAK,MAAM,MAAM,SAAS,gBACxB,YAAY,KAAK,mCAAmC,EAAE,CAAC;EAG7D;CACF;CACA,MAAM,MAAsE;EAC1E;EACA,cAAc;GACZ,uBAAuB;GACvB,OAAO;GACP;EACF;CACF;CAKA,IAAI,gBAAgB,SAAS,GAC3B,IAAI,kBAAkB;CAExB,OAAO;AACT;AAEA,SAAS,gCACP,IACA,OACgB;CAChB,QAAQ,GAAG,IAAX;EACE,KAAK,SACH,OAAO;EACT,KAAK,OACH,OAAO;GACL,IAAI;GACJ,KAAK,MAAM,GAAG,IAAI;EACpB;EACF,KAAK,OACH,OAAO;GACL,IAAI;GACJ,KAAK,MAAM,GAAG,IAAI;GAClB,OAAO;EACT;EACF,SACE,YAAY,EAAE;CAClB;AACF;AAEA,SAAS,mCACP,IACwB;CACxB,QAAQ,GAAG,IAAX;EACE,KAAK,OACH,OAAO;GACL,IAAI;GACJ,KAAK,sBAAsB,GAAG,SAAS,EAAE;GACzC,OAAO,GAAG,SAAS;EACrB;EACF,KAAK,OACH,OAAO;GACL,IAAI;GACJ,KAAK,sBAAsB,GAAG,EAAE;EAClC;CACJ;AACF;AAEA,SAAS,+BACP,IACA,QACA,gBACoC;CACpC,IAAI,GAAG,OAAO,SACZ,OAAO;CAKT,MAAM,YAAY,eAAe,iBAAiB,GAAG,SAAS;CAC9D,IAAI,CAAC,WACH;CAEF,QAAQ,GAAG,IAAX;EACE,KAAK,OACH,OAAO;GACL,IAAI;GACJ,KAAK,mBACH,WACA,OAAO,OAAO,UAAU,CAAC,YACzB,eAAe,IAAI,GAAG,WAAW,GAAG,EAAE,CACxC;EACF;EACF,KAAK,OACH,OAAO;GACL,IAAI;GACJ,KAAK,mBACH,WACA,OAAO,OAAO,UAAU,CAAC,YACzB,eAAe,IAAI,GAAG,WAAW,GAAG,KAAK,CAC3C;GACA,OAAO,eAAe,IAAI,GAAG,WAAW,GAAG,KAAK;EAClD;EACF,KAAK,UACH,OAAO;GACL,IAAI;GACJ,KAAK,mBACH,WACA,OAAO,OAAO,UAAU,CAAC,YACzB,eAAe,IAAI,GAAG,WAAW,GAAG,EAAE,CACxC;GACA,OAAO,GAAG,QACN,eAAe,IAAI,GAAG,WAAW,GAAG,KAAK,IACzC,KAAA;GACJ,WAAW,eAAe,QAAQ,GAAG,WAAW,GAAG,SAAS;EAC9D;EACF,SACE,YAAY,EAAE;CAClB;AACF"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { LogContext } from '@rocicorp/logger';
|
|
2
|
-
import { type Resolver } from '@rocicorp/resolver';
|
|
3
2
|
import { ReplicacheImpl } from '../../../replicache/src/impl.ts';
|
|
4
3
|
import type { Store as KVStore } from '../../../replicache/src/kv/store.ts';
|
|
5
4
|
import type { Puller } from '../../../replicache/src/puller.ts';
|
|
@@ -7,6 +6,7 @@ import type { Pusher } from '../../../replicache/src/pusher.ts';
|
|
|
7
6
|
import type { ClientGroupID, ClientID } from '../../../replicache/src/sync/ids.ts';
|
|
8
7
|
import type { MutatorDefs } from '../../../replicache/src/types.ts';
|
|
9
8
|
import type { ReadonlyJSONValue } from '../../../shared/src/json.ts';
|
|
9
|
+
import { type Resolver } from '../../../shared/src/resolver.ts';
|
|
10
10
|
import { Subscribable } from '../../../shared/src/subscribable.ts';
|
|
11
11
|
import { type ClientSchema } from '../../../zero-protocol/src/client-schema.ts';
|
|
12
12
|
import type { DeleteClientsBody } from '../../../zero-protocol/src/delete-clients.ts';
|
|
@@ -33,7 +33,6 @@ import { type LogOptions } from './log-options.ts';
|
|
|
33
33
|
import type { MakeMutatePropertyType } from './make-mutate-property.ts';
|
|
34
34
|
import type { ZeroOptions } from './options.ts';
|
|
35
35
|
import { QueryManager } from './query-manager.ts';
|
|
36
|
-
export type NoRelations = Record<string, never>;
|
|
37
36
|
export type TestingContext = {
|
|
38
37
|
puller: Puller;
|
|
39
38
|
pusher: Pusher;
|
|
@@ -72,9 +71,6 @@ export declare const DEFAULT_DISCONNECT_TIMEOUT_MS: number;
|
|
|
72
71
|
*/
|
|
73
72
|
export declare const CONNECT_TIMEOUT_MS = 10000;
|
|
74
73
|
export declare const LOGGED_OUT_STORAGE_USER_ID = "__anonymous__";
|
|
75
|
-
export interface ReplicacheInternalAPI {
|
|
76
|
-
lastMutationID(): number;
|
|
77
|
-
}
|
|
78
74
|
export declare function getInternalReplicacheImplForTesting(z: object): ReplicacheImpl<MutatorDefs>;
|
|
79
75
|
export type ZeroMutate<S extends Schema, MD extends CustomMutatorDefs | undefined, C> = MakeMutatePropertyType<S, MD, C> & ((mr: MutateRequest<any, S, C, any>) => MutatorResult);
|
|
80
76
|
export declare class Zero<const S extends BaseDefaultSchema = DefaultSchema, MD extends CustomMutatorDefs | undefined = undefined, C extends BaseDefaultContext = DefaultContext> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zero.d.ts","sourceRoot":"","sources":["../../../../../zero-client/src/client/zero.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA8B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"zero.d.ts","sourceRoot":"","sources":["../../../../../zero-client/src/client/zero.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { assert, unreachable } from "../../../shared/src/asserts.js";
|
|
2
2
|
import { getBrowserGlobal, mustGetBrowserGlobal } from "../../../shared/src/browser-env.js";
|
|
3
|
+
import { resolver } from "../../../shared/src/resolver.js";
|
|
3
4
|
import { AbortError } from "../../../shared/src/abort-error.js";
|
|
4
5
|
import { sleep, sleepWithAbort } from "../../../shared/src/sleep.js";
|
|
5
6
|
import { parse } from "../../../shared/src/valita.js";
|
|
@@ -58,7 +59,6 @@ import { reloadScheduled, reloadWithReason, reportReloadReason, resetBackoff } f
|
|
|
58
59
|
import { getServer } from "./server-option.js";
|
|
59
60
|
import { PokeHandler } from "./zero-poke-handler.js";
|
|
60
61
|
import { ZeroRep, fromReplicacheAuthToken, toReplicacheAuthToken } from "./zero-rep.js";
|
|
61
|
-
import { resolver } from "@rocicorp/resolver";
|
|
62
62
|
import { LogContext } from "@rocicorp/logger";
|
|
63
63
|
//#region ../zero-client/src/client/zero.ts
|
|
64
64
|
var exposedToTestingSymbol = Symbol();
|