@rocicorp/zero 0.0.202410041744 → 0.2.2024101100
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/btree/src/mod.d.ts +2 -0
- package/out/btree/src/mod.d.ts.map +1 -0
- package/out/btree/src/mod.js +2 -0
- package/out/btree/src/mod.js.map +1 -0
- package/out/datadog/src/mod.js +2 -0
- package/out/datadog/src/mod.js.map +1 -0
- package/out/react.js +9 -3
- package/out/react.js.map +3 -3
- package/out/replicache/src/btree/node.d.ts.map +1 -1
- package/out/replicache/src/config.d.ts.map +1 -1
- package/out/replicache/src/connection-loop.d.ts.map +1 -1
- package/out/replicache/src/cookies.d.ts.map +1 -1
- package/out/replicache/src/dag/gc.d.ts.map +1 -1
- package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
- package/out/replicache/src/db/scan.d.ts.map +1 -1
- package/out/replicache/src/frozen-json.d.ts.map +1 -1
- package/out/replicache/src/get-default-puller.d.ts.map +1 -1
- package/out/replicache/src/hash.d.ts.map +1 -1
- package/out/replicache/src/http-request-info.d.ts.map +1 -1
- package/out/replicache/src/index-defs.d.ts.map +1 -1
- package/out/replicache/src/kv/idb-store.d.ts.map +1 -1
- package/out/replicache/src/kv/store.d.ts.map +1 -1
- package/out/replicache/src/kv/write-impl-base.d.ts.map +1 -1
- package/out/replicache/src/mod.d.ts.map +1 -1
- package/out/replicache/src/mutation-recovery.d.ts.map +1 -1
- package/out/replicache/src/patch-operation.d.ts.map +1 -1
- package/out/replicache/src/pending-mutations.d.ts.map +1 -1
- package/out/replicache/src/persist/client-groups.d.ts.map +1 -1
- package/out/replicache/src/persist/clients.d.ts.map +1 -1
- package/out/replicache/src/puller.d.ts.map +1 -1
- package/out/replicache/src/replicache-impl.d.ts +0 -1
- package/out/replicache/src/replicache-impl.d.ts.map +1 -1
- package/out/replicache/src/replicache.d.ts.map +1 -1
- package/out/replicache/src/scan-iterator.d.ts.map +1 -1
- package/out/replicache/src/subscriptions.d.ts +1 -1
- package/out/replicache/src/subscriptions.d.ts.map +1 -1
- package/out/replicache/src/sync/ids.d.ts.map +1 -1
- package/out/replicache/src/sync/patch.d.ts.map +1 -1
- package/out/replicache/src/sync/pull.d.ts.map +1 -1
- package/out/replicache/src/sync/push.d.ts.map +1 -1
- package/out/replicache/src/sync/request-id.d.ts.map +1 -1
- package/out/replicache/src/transactions.d.ts.map +1 -1
- package/out/replicache/src/types.d.ts.map +1 -1
- package/out/shared/src/browser-env.d.ts +4 -2
- package/out/shared/src/browser-env.d.ts.map +1 -1
- package/out/shared/src/h64-with-reverse.d.ts +6 -0
- package/out/shared/src/h64-with-reverse.d.ts.map +1 -0
- package/out/shared/src/h64-with-reverse.js +13 -0
- package/out/shared/src/h64-with-reverse.js.map +1 -0
- package/out/shared/src/reverse-string.d.ts +2 -0
- package/out/shared/src/reverse-string.d.ts.map +1 -0
- package/out/shared/src/reverse-string.js +8 -0
- package/out/shared/src/reverse-string.js.map +1 -0
- package/out/zero/src/cli.js +0 -0
- package/out/zero/src/react.d.ts +1 -1
- package/out/zero/src/react.d.ts.map +1 -1
- package/out/zero/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero/src/server/change-streamer.js.map +1 -1
- package/out/zero/src/server/main.d.ts.map +1 -1
- package/out/zero/src/server/main.js.map +1 -1
- package/out/zero/src/server/replicator.d.ts.map +1 -1
- package/out/zero/src/server/replicator.js.map +1 -1
- package/out/zero/src/server/syncer.d.ts.map +1 -1
- package/out/zero/src/server/syncer.js.map +1 -1
- package/out/zero/src/zero.d.ts +1 -1
- package/out/zero/src/zero.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +46 -21
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +38 -20
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
- package/out/zero-cache/src/db/lite-tables.js.map +1 -1
- package/out/zero-cache/src/db/migration-lite.d.ts.map +1 -1
- package/out/zero-cache/src/db/migration-lite.js.map +1 -1
- package/out/zero-cache/src/db/migration.d.ts.map +1 -1
- package/out/zero-cache/src/db/migration.js.map +1 -1
- package/out/zero-cache/src/db/statements.d.ts +2 -0
- package/out/zero-cache/src/db/statements.d.ts.map +1 -1
- package/out/zero-cache/src/db/statements.js +6 -0
- package/out/zero-cache/src/db/statements.js.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +5 -5
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/life-cycle.d.ts +38 -0
- package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -0
- package/out/zero-cache/src/server/life-cycle.js +125 -0
- package/out/zero-cache/src/server/life-cycle.js.map +1 -0
- package/out/zero-cache/src/server/logging.d.ts.map +1 -1
- package/out/zero-cache/src/server/logging.js +43 -4
- package/out/zero-cache/src/server/logging.js.map +1 -1
- package/out/zero-cache/src/server/main.js +18 -16
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/server/replicator.js +12 -11
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +9 -8
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +3 -3
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +11 -10
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +2 -2
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +4 -4
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +2 -2
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/change-source.js +10 -5
- package/out/zero-cache/src/services/change-streamer/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +6 -6
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/lsn.js +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/lsn.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.js +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +3 -2
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js +20 -68
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/change.d.ts +2 -2
- package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.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/dispatcher/connect-params.d.ts +1 -0
- package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +1 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.js +3 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -1
- package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts +1 -1
- package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts.map +1 -1
- package/out/zero-cache/src/services/dispatcher/dispatcher.js +2 -6
- package/out/zero-cache/src/services/dispatcher/dispatcher.js.map +1 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts.map +1 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +15 -8
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +8 -4
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +25 -16
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/write-authorizer.js +1 -1
- package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +8 -7
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +88 -57
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts +4 -13
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js +2 -2
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +7 -7
- 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 +3 -3
- package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.js +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
- package/out/zero-cache/src/services/runner.d.ts +2 -5
- package/out/zero-cache/src/services/runner.d.ts.map +1 -1
- package/out/zero-cache/src/services/runner.js +4 -22
- package/out/zero-cache/src/services/runner.js.map +1 -1
- package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
- package/out/zero-cache/src/services/running-state.js +3 -3
- package/out/zero-cache/src/services/running-state.js.map +1 -1
- package/out/zero-cache/src/services/service.d.ts +8 -0
- package/out/zero-cache/src/services/service.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +3 -2
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +14 -3
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.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.d.ts +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/database-storage.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/database-storage.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +12 -9
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +33 -23
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.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.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +30 -14
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +38 -37
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -0
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +28 -44
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/bigint-json.d.ts.map +1 -1
- package/out/zero-cache/src/types/bigint-json.js.map +1 -1
- package/out/zero-cache/src/types/error-for-client.d.ts.map +1 -1
- package/out/zero-cache/src/types/lexi-version.js.map +1 -1
- package/out/zero-cache/src/types/lite.d.ts +30 -8
- package/out/zero-cache/src/types/lite.d.ts.map +1 -1
- package/out/zero-cache/src/types/lite.js +114 -15
- package/out/zero-cache/src/types/lite.js.map +1 -1
- package/out/zero-cache/src/types/pg.d.ts +21 -0
- package/out/zero-cache/src/types/pg.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg.js +49 -6
- package/out/zero-cache/src/types/pg.js.map +1 -1
- package/out/zero-cache/src/types/processes.d.ts +1 -1
- package/out/zero-cache/src/types/processes.d.ts.map +1 -1
- package/out/zero-cache/src/types/processes.js +8 -14
- package/out/zero-cache/src/types/processes.js.map +1 -1
- package/out/zero-cache/src/types/row-key.d.ts +4 -1
- package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
- package/out/zero-cache/src/types/row-key.js +5 -14
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/types/schema-versions.d.ts +8 -0
- package/out/zero-cache/src/types/schema-versions.d.ts.map +1 -0
- package/out/zero-cache/src/types/schema-versions.js +21 -0
- package/out/zero-cache/src/types/schema-versions.js.map +1 -0
- package/out/zero-cache/src/types/streams.d.ts +2 -2
- package/out/zero-cache/src/types/streams.d.ts.map +1 -1
- package/out/zero-cache/src/types/streams.js +36 -26
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-cache/src/types/timeout.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +6 -6
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/replicator.d.ts +4 -4
- package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/workers/replicator.js +3 -31
- package/out/zero-cache/src/workers/replicator.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.d.ts +12 -4
- package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +34 -2
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/context.d.ts +4 -4
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/crud.d.ts +20 -18
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/keys.d.ts +2 -2
- package/out/zero-client/src/client/keys.d.ts.map +1 -1
- package/out/zero-client/src/client/log-options.d.ts +1 -1
- package/out/zero-client/src/client/log-options.d.ts.map +1 -1
- package/out/zero-client/src/client/make-id-from-primary-key.d.ts +5 -0
- package/out/zero-client/src/client/make-id-from-primary-key.d.ts.map +1 -0
- package/out/zero-client/src/client/metrics.d.ts.map +1 -1
- package/out/zero-client/src/client/options.d.ts +1 -1
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/query-manager.d.ts +5 -3
- package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/replicache-types.d.ts +1 -1
- package/out/zero-client/src/client/replicache-types.d.ts.map +1 -1
- package/out/zero-client/src/client/server-error.d.ts.map +1 -1
- package/out/zero-client/src/client/server-option.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts +5 -4
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +3 -3
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/mod.d.ts +2 -2
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-client/src/util/socket.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.js +5 -8
- package/out/zero-protocol/src/ast.js.map +1 -1
- 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/clients-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/clients-patch.js.map +1 -1
- package/out/zero-protocol/src/connect.d.ts.map +1 -1
- package/out/zero-protocol/src/connect.js.map +1 -1
- package/out/zero-protocol/src/delete-clients.d.ts.map +1 -1
- package/out/zero-protocol/src/delete-clients.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +9 -5
- package/out/zero-protocol/src/down.d.ts.map +1 -1
- package/out/zero-protocol/src/down.js.map +1 -1
- package/out/zero-protocol/src/entities-patch.d.ts +15 -15
- package/out/zero-protocol/src/entities-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/entities-patch.js +5 -4
- package/out/zero-protocol/src/entities-patch.js.map +1 -1
- package/out/zero-protocol/src/error.d.ts +2 -1
- package/out/zero-protocol/src/error.d.ts.map +1 -1
- package/out/zero-protocol/src/error.js +2 -1
- package/out/zero-protocol/src/error.js.map +1 -1
- package/out/zero-protocol/src/ping.d.ts.map +1 -1
- package/out/zero-protocol/src/ping.js.map +1 -1
- package/out/zero-protocol/src/poke.d.ts +18 -10
- package/out/zero-protocol/src/poke.d.ts.map +1 -1
- package/out/zero-protocol/src/poke.js +4 -0
- package/out/zero-protocol/src/poke.js.map +1 -1
- package/out/zero-protocol/src/pong.d.ts.map +1 -1
- package/out/zero-protocol/src/pong.js.map +1 -1
- package/out/zero-protocol/src/primary-key.d.ts +9 -0
- package/out/zero-protocol/src/primary-key.d.ts.map +1 -0
- package/out/zero-protocol/src/primary-key.js +7 -0
- package/out/zero-protocol/src/primary-key.js.map +1 -0
- package/out/zero-protocol/src/pull.d.ts.map +1 -1
- package/out/zero-protocol/src/pull.js.map +1 -1
- package/out/zero-protocol/src/push.d.ts +53 -53
- package/out/zero-protocol/src/push.d.ts.map +1 -1
- package/out/zero-protocol/src/push.js +5 -5
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/queries-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/queries-patch.js.map +1 -1
- package/out/zero-protocol/src/up.d.ts +8 -8
- package/out/zero-protocol/src/up.d.ts.map +1 -1
- package/out/zero-protocol/src/up.js.map +1 -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.d.ts +1 -1
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-react/src/use-zero.d.ts +1 -1
- package/out/zero-react/src/use-zero.d.ts.map +1 -1
- package/out/zero.js +294 -124
- package/out/zero.js.map +4 -4
- package/out/zql/src/zql/ast/ast.js.map +1 -1
- package/out/zql/src/zql/builder/builder.d.ts.map +1 -1
- package/out/zql/src/zql/builder/builder.js.map +1 -1
- package/out/zql/src/zql/builder/filter.js.map +1 -1
- package/out/zql/src/zql/builder/like.js.map +1 -1
- package/out/zql/src/zql/ivm/array-view.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/data.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/data.js +1 -1
- package/out/zql/src/zql/ivm/data.js.map +1 -1
- package/out/zql/src/zql/ivm/filter.js.map +1 -1
- package/out/zql/src/zql/ivm/join.js.map +1 -1
- package/out/zql/src/zql/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/memory-source.js +1 -1
- package/out/zql/src/zql/ivm/memory-source.js.map +1 -1
- package/out/zql/src/zql/ivm/memory-storage.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/operator.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/schema.d.ts +1 -1
- package/out/zql/src/zql/ivm/schema.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/schema.js.map +1 -1
- package/out/zql/src/zql/ivm/skip.js.map +1 -1
- package/out/zql/src/zql/ivm/take.js.map +1 -1
- package/out/zql/src/zql/query/query-impl.d.ts +4 -1
- package/out/zql/src/zql/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/zql/query/query.d.ts +2 -1
- package/out/zql/src/zql/query/query.d.ts.map +1 -1
- package/out/zql/src/zql/query/typed-view.d.ts.map +1 -1
- package/out/zqlite/src/db.js +1 -1
- package/out/zqlite/src/db.js.map +1 -1
- package/out/zqlite/src/internal/statement-cache.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts +1 -1
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +36 -33
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +10 -6
- package/out/zero-cache/src/services/replicator/checkpointer.d.ts +0 -79
- package/out/zero-cache/src/services/replicator/checkpointer.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/checkpointer.js +0 -124
- package/out/zero-cache/src/services/replicator/checkpointer.js.map +0 -1
- package/out/zero-protocol/src/entity.d.ts +0 -9
- package/out/zero-protocol/src/entity.d.ts.map +0 -1
- package/out/zero-protocol/src/entity.js +0 -8
- package/out/zero-protocol/src/entity.js.map +0 -1
package/out/zero.js
CHANGED
|
@@ -609,6 +609,20 @@ var WriteImplBase = class {
|
|
|
609
609
|
}
|
|
610
610
|
};
|
|
611
611
|
|
|
612
|
+
// ../shared/src/browser-env.ts
|
|
613
|
+
function getBrowserGlobal(name) {
|
|
614
|
+
return globalThis[name];
|
|
615
|
+
}
|
|
616
|
+
function mustGetBrowserGlobal(name) {
|
|
617
|
+
const r = getBrowserGlobal(name);
|
|
618
|
+
if (r === void 0) {
|
|
619
|
+
throw new Error(
|
|
620
|
+
`Unsupported JavaScript environment: Could not find ${name}.`
|
|
621
|
+
);
|
|
622
|
+
}
|
|
623
|
+
return r;
|
|
624
|
+
}
|
|
625
|
+
|
|
612
626
|
// ../replicache/src/kv/idb-store.ts
|
|
613
627
|
var RELAXED = { durability: "relaxed" };
|
|
614
628
|
var OBJECT_STORE = "chunks";
|
|
@@ -663,7 +677,7 @@ var IDBStore = class {
|
|
|
663
677
|
return fn(reopened);
|
|
664
678
|
} else if (e.name === "NotFoundError") {
|
|
665
679
|
this.#idbDeleted = true;
|
|
666
|
-
indexedDB.deleteDatabase(db.name);
|
|
680
|
+
mustGetBrowserGlobal("indexedDB").deleteDatabase(db.name);
|
|
667
681
|
throw new IDBNotFoundError(
|
|
668
682
|
`Replicache IndexedDB ${db.name} missing object store. Deleting db.`
|
|
669
683
|
);
|
|
@@ -744,8 +758,9 @@ function objectStore(tx) {
|
|
|
744
758
|
return tx.objectStore(OBJECT_STORE);
|
|
745
759
|
}
|
|
746
760
|
function openDatabase(name) {
|
|
761
|
+
const idb = mustGetBrowserGlobal("indexedDB");
|
|
747
762
|
return new Promise((resolve, reject) => {
|
|
748
|
-
const req =
|
|
763
|
+
const req = idb.open(name);
|
|
749
764
|
req.onupgradeneeded = () => {
|
|
750
765
|
req.result.createObjectStore(OBJECT_STORE);
|
|
751
766
|
};
|
|
@@ -1571,14 +1586,6 @@ function dropIDBStore(name) {
|
|
|
1571
1586
|
import { consoleLogSink as consoleLogSink2 } from "@rocicorp/logger";
|
|
1572
1587
|
import { resolver as resolver6 } from "@rocicorp/resolver";
|
|
1573
1588
|
|
|
1574
|
-
// ../shared/src/browser-env.ts
|
|
1575
|
-
function getDocument() {
|
|
1576
|
-
return typeof document !== "undefined" ? document : void 0;
|
|
1577
|
-
}
|
|
1578
|
-
function getLocation() {
|
|
1579
|
-
return typeof location !== "undefined" ? location : void 0;
|
|
1580
|
-
}
|
|
1581
|
-
|
|
1582
1589
|
// ../shared/src/document-visible.ts
|
|
1583
1590
|
import { resolver as resolver3 } from "@rocicorp/resolver";
|
|
1584
1591
|
function getDocumentVisibilityWatcher(doc, hiddenIntervalMS, signal) {
|
|
@@ -7712,9 +7719,11 @@ var SubscriptionsManagerImpl = class {
|
|
|
7712
7719
|
#queryInternal;
|
|
7713
7720
|
#lc;
|
|
7714
7721
|
hasPendingSubscriptionRuns = false;
|
|
7715
|
-
|
|
7722
|
+
#signal;
|
|
7723
|
+
constructor(queryInternal, lc, signal) {
|
|
7716
7724
|
this.#queryInternal = queryInternal;
|
|
7717
7725
|
this.#lc = lc;
|
|
7726
|
+
this.#signal = signal;
|
|
7718
7727
|
}
|
|
7719
7728
|
add(subscription) {
|
|
7720
7729
|
this.#subscriptions.add(subscription);
|
|
@@ -7734,6 +7743,9 @@ var SubscriptionsManagerImpl = class {
|
|
|
7734
7743
|
await this.#fireSubscriptions(subscriptions, Regular, diffs);
|
|
7735
7744
|
}
|
|
7736
7745
|
async #fireSubscriptions(subscriptions, kind, diffs) {
|
|
7746
|
+
if (this.#signal.aborted) {
|
|
7747
|
+
return;
|
|
7748
|
+
}
|
|
7737
7749
|
const subs = [...subscriptions];
|
|
7738
7750
|
if (subs.length === 0) {
|
|
7739
7751
|
return;
|
|
@@ -7947,7 +7959,7 @@ var ReplicacheImpl = class {
|
|
|
7947
7959
|
auth;
|
|
7948
7960
|
/** The name of the Replicache database. Populated by {@link ReplicacheOptions#name}. */
|
|
7949
7961
|
name;
|
|
7950
|
-
subscriptions;
|
|
7962
|
+
#subscriptions;
|
|
7951
7963
|
#mutationRecovery;
|
|
7952
7964
|
/**
|
|
7953
7965
|
* Client groups gets disabled when the server does not know about it.
|
|
@@ -8137,9 +8149,10 @@ var ReplicacheImpl = class {
|
|
|
8137
8149
|
name,
|
|
8138
8150
|
"replicache version": version
|
|
8139
8151
|
});
|
|
8140
|
-
this
|
|
8152
|
+
this.#subscriptions = new SubscriptionsManagerImpl(
|
|
8141
8153
|
this.#queryInternal,
|
|
8142
|
-
this.#lc
|
|
8154
|
+
this.#lc,
|
|
8155
|
+
this.#closeAbortController.signal
|
|
8143
8156
|
);
|
|
8144
8157
|
const kvStoreProvider = getKVStoreProvider(this.#lc, options.kvStore);
|
|
8145
8158
|
this.#kvStoreProvider = kvStoreProvider;
|
|
@@ -8157,7 +8170,7 @@ var ReplicacheImpl = class {
|
|
|
8157
8170
|
const { minDelayMs = MIN_DELAY_MS, maxDelayMs = MAX_DELAY_MS } = requestOptions;
|
|
8158
8171
|
this.#requestOptions = { maxDelayMs, minDelayMs };
|
|
8159
8172
|
const visibilityWatcher = getDocumentVisibilityWatcher(
|
|
8160
|
-
|
|
8173
|
+
getBrowserGlobal("document"),
|
|
8161
8174
|
0,
|
|
8162
8175
|
this.#closeAbortController.signal
|
|
8163
8176
|
);
|
|
@@ -8272,7 +8285,7 @@ var ReplicacheImpl = class {
|
|
|
8272
8285
|
signal
|
|
8273
8286
|
);
|
|
8274
8287
|
void this.recoverMutations(clients);
|
|
8275
|
-
|
|
8288
|
+
getBrowserGlobal("document")?.addEventListener(
|
|
8276
8289
|
"visibilitychange",
|
|
8277
8290
|
this.#onVisibilityChange
|
|
8278
8291
|
);
|
|
@@ -8281,7 +8294,7 @@ var ReplicacheImpl = class {
|
|
|
8281
8294
|
if (this.#closed) {
|
|
8282
8295
|
return;
|
|
8283
8296
|
}
|
|
8284
|
-
if (
|
|
8297
|
+
if (getBrowserGlobal("document")?.visibilityState !== "visible") {
|
|
8285
8298
|
return;
|
|
8286
8299
|
}
|
|
8287
8300
|
await this.#checkForClientStateNotFoundAndCallHandler();
|
|
@@ -8353,7 +8366,7 @@ var ReplicacheImpl = class {
|
|
|
8353
8366
|
const { promise, resolve } = resolver6();
|
|
8354
8367
|
closingInstances.set(this.name, promise);
|
|
8355
8368
|
this.#closeAbortController.abort();
|
|
8356
|
-
|
|
8369
|
+
getBrowserGlobal("document")?.removeEventListener(
|
|
8357
8370
|
"visibilitychange",
|
|
8358
8371
|
this.#onVisibilityChange
|
|
8359
8372
|
);
|
|
@@ -8365,7 +8378,7 @@ var ReplicacheImpl = class {
|
|
|
8365
8378
|
];
|
|
8366
8379
|
this.#pullConnectionLoop.close();
|
|
8367
8380
|
this.#pushConnectionLoop.close();
|
|
8368
|
-
this
|
|
8381
|
+
this.#subscriptions.clear();
|
|
8369
8382
|
await Promise.all(closingPromises);
|
|
8370
8383
|
closingInstances.delete(this.name);
|
|
8371
8384
|
resolve();
|
|
@@ -8383,16 +8396,16 @@ var ReplicacheImpl = class {
|
|
|
8383
8396
|
lc,
|
|
8384
8397
|
syncHead,
|
|
8385
8398
|
clientID,
|
|
8386
|
-
this
|
|
8399
|
+
this.#subscriptions,
|
|
8387
8400
|
Latest
|
|
8388
8401
|
);
|
|
8389
8402
|
if (!replayMutations || replayMutations.length === 0) {
|
|
8390
|
-
await this
|
|
8403
|
+
await this.#subscriptions.fire(diffs);
|
|
8391
8404
|
void this.#schedulePersist();
|
|
8392
8405
|
return;
|
|
8393
8406
|
}
|
|
8394
8407
|
for (const mutation of replayMutations) {
|
|
8395
|
-
if (this
|
|
8408
|
+
if (this.#subscriptions.hasPendingSubscriptionRuns) {
|
|
8396
8409
|
await Promise.resolve();
|
|
8397
8410
|
}
|
|
8398
8411
|
const { meta } = mutation;
|
|
@@ -8753,7 +8766,7 @@ var ReplicacheImpl = class {
|
|
|
8753
8766
|
this.perdag,
|
|
8754
8767
|
clientID,
|
|
8755
8768
|
this.#mutatorRegistry,
|
|
8756
|
-
this
|
|
8769
|
+
this.#subscriptions,
|
|
8757
8770
|
() => this.closed,
|
|
8758
8771
|
Latest
|
|
8759
8772
|
);
|
|
@@ -8767,7 +8780,7 @@ var ReplicacheImpl = class {
|
|
|
8767
8780
|
}
|
|
8768
8781
|
}
|
|
8769
8782
|
if (diffs !== void 0) {
|
|
8770
|
-
await this
|
|
8783
|
+
await this.#subscriptions.fire(diffs);
|
|
8771
8784
|
}
|
|
8772
8785
|
}
|
|
8773
8786
|
#fireOnClientStateNotFound() {
|
|
@@ -8877,12 +8890,12 @@ var ReplicacheImpl = class {
|
|
|
8877
8890
|
options = { onData: options };
|
|
8878
8891
|
}
|
|
8879
8892
|
const { onData, onError, onDone, isEqual } = options;
|
|
8880
|
-
return this
|
|
8893
|
+
return this.#subscriptions.add(
|
|
8881
8894
|
new SubscriptionImpl(body, onData, onError, onDone, isEqual)
|
|
8882
8895
|
);
|
|
8883
8896
|
}
|
|
8884
8897
|
experimentalWatch(callback, options) {
|
|
8885
|
-
return this
|
|
8898
|
+
return this.#subscriptions.add(
|
|
8886
8899
|
new WatchSubscription(callback, options)
|
|
8887
8900
|
);
|
|
8888
8901
|
}
|
|
@@ -8935,7 +8948,7 @@ var ReplicacheImpl = class {
|
|
|
8935
8948
|
}
|
|
8936
8949
|
async #mutate(name, mutatorImpl, args, timestamp) {
|
|
8937
8950
|
const frozenArgs = deepFreeze(args ?? null);
|
|
8938
|
-
if (this
|
|
8951
|
+
if (this.#subscriptions.hasPendingSubscriptionRuns) {
|
|
8939
8952
|
await Promise.resolve();
|
|
8940
8953
|
}
|
|
8941
8954
|
await this.#ready;
|
|
@@ -8966,11 +8979,11 @@ var ReplicacheImpl = class {
|
|
|
8966
8979
|
const lastMutationID = await dbWrite.getMutationID();
|
|
8967
8980
|
const diffs = await dbWrite.commitWithDiffs(
|
|
8968
8981
|
DEFAULT_HEAD_NAME,
|
|
8969
|
-
this
|
|
8982
|
+
this.#subscriptions
|
|
8970
8983
|
);
|
|
8971
8984
|
this.lastMutationID = lastMutationID;
|
|
8972
8985
|
this.#pushConnectionLoop.send(false).catch(() => void 0);
|
|
8973
|
-
await this
|
|
8986
|
+
await this.#subscriptions.fire(diffs);
|
|
8974
8987
|
void this.#schedulePersist();
|
|
8975
8988
|
return result;
|
|
8976
8989
|
} catch (ex) {
|
|
@@ -9211,6 +9224,9 @@ async function anyPendingMutationsInClientGroups(perdag) {
|
|
|
9211
9224
|
return false;
|
|
9212
9225
|
}
|
|
9213
9226
|
|
|
9227
|
+
// ../zql/src/zql/query/query-impl.ts
|
|
9228
|
+
import { resolver as resolver7 } from "@rocicorp/resolver";
|
|
9229
|
+
|
|
9214
9230
|
// ../shared/src/must.ts
|
|
9215
9231
|
function must(v2, msg) {
|
|
9216
9232
|
if (v2 == null) {
|
|
@@ -10884,10 +10900,16 @@ var QueryImpl = class extends AbstractQuery {
|
|
|
10884
10900
|
return view;
|
|
10885
10901
|
}
|
|
10886
10902
|
preload() {
|
|
10903
|
+
const { resolve, promise: complete } = resolver7();
|
|
10887
10904
|
const ast = this._completeAst();
|
|
10888
|
-
const unsub = this.#delegate.addServerQuery(ast)
|
|
10905
|
+
const unsub = this.#delegate.addServerQuery(ast, (got) => {
|
|
10906
|
+
if (got) {
|
|
10907
|
+
resolve();
|
|
10908
|
+
}
|
|
10909
|
+
});
|
|
10889
10910
|
return {
|
|
10890
|
-
cleanup: unsub
|
|
10911
|
+
cleanup: unsub,
|
|
10912
|
+
complete
|
|
10891
10913
|
};
|
|
10892
10914
|
}
|
|
10893
10915
|
};
|
|
@@ -10921,17 +10943,14 @@ function addPrimaryKeysToAst(schema, ast) {
|
|
|
10921
10943
|
|
|
10922
10944
|
// ../zero-client/src/client/zero.ts
|
|
10923
10945
|
import { LogContext as LogContext3 } from "@rocicorp/logger";
|
|
10924
|
-
import { resolver as
|
|
10946
|
+
import { resolver as resolver8 } from "@rocicorp/resolver";
|
|
10925
10947
|
|
|
10926
10948
|
// ../zero-protocol/src/ast.ts
|
|
10927
|
-
function readonly2(t2) {
|
|
10928
|
-
return t2;
|
|
10929
|
-
}
|
|
10930
10949
|
var selectorSchema = valita_exports.string();
|
|
10931
|
-
var orderingElementSchema =
|
|
10950
|
+
var orderingElementSchema = readonly(
|
|
10932
10951
|
valita_exports.tuple([selectorSchema, valita_exports.union(valita_exports.literal("asc"), valita_exports.literal("desc"))])
|
|
10933
10952
|
);
|
|
10934
|
-
var orderingSchema =
|
|
10953
|
+
var orderingSchema = readonlyArray(orderingElementSchema);
|
|
10935
10954
|
var primitiveSchema = valita_exports.union(
|
|
10936
10955
|
valita_exports.string(),
|
|
10937
10956
|
valita_exports.number(),
|
|
@@ -10966,7 +10985,7 @@ var simpleConditionSchema = valita_exports.object({
|
|
|
10966
10985
|
valita_exports.string(),
|
|
10967
10986
|
valita_exports.number(),
|
|
10968
10987
|
valita_exports.boolean(),
|
|
10969
|
-
|
|
10988
|
+
readonlyArray(valita_exports.union(valita_exports.string(), valita_exports.number(), valita_exports.boolean())),
|
|
10970
10989
|
valita_exports.object({
|
|
10971
10990
|
type: valita_exports.literal("static"),
|
|
10972
10991
|
anchor: valita_exports.union(valita_exports.literal("authData"), valita_exports.literal("preMutationRow")),
|
|
@@ -10990,8 +11009,8 @@ var astSchema = valita_exports.object({
|
|
|
10990
11009
|
schema: valita_exports.string().optional(),
|
|
10991
11010
|
table: valita_exports.string(),
|
|
10992
11011
|
alias: valita_exports.string().optional(),
|
|
10993
|
-
where:
|
|
10994
|
-
related:
|
|
11012
|
+
where: readonlyArray(conditionSchema).optional(),
|
|
11013
|
+
related: readonlyArray(correlatedSubquerySchema).optional(),
|
|
10995
11014
|
limit: valita_exports.number().optional(),
|
|
10996
11015
|
orderBy: orderingSchema.optional(),
|
|
10997
11016
|
start: valita_exports.object({
|
|
@@ -11069,6 +11088,7 @@ var errorKindSchema = valita_exports.union(
|
|
|
11069
11088
|
valita_exports.literal("InvalidConnectionRequestClientDeleted" /* InvalidConnectionRequestClientDeleted */),
|
|
11070
11089
|
valita_exports.literal("InvalidMessage" /* InvalidMessage */),
|
|
11071
11090
|
valita_exports.literal("InvalidPush" /* InvalidPush */),
|
|
11091
|
+
valita_exports.literal("MutationRateLimited" /* MutationRateLimited */),
|
|
11072
11092
|
valita_exports.literal("MutationFailed" /* MutationFailed */),
|
|
11073
11093
|
valita_exports.literal("Unauthorized" /* Unauthorized */),
|
|
11074
11094
|
valita_exports.literal("VersionNotSupported" /* VersionNotSupported */),
|
|
@@ -11085,27 +11105,35 @@ var errorMessageSchema = valita_exports.tuple([
|
|
|
11085
11105
|
var versionSchema = valita_exports.string();
|
|
11086
11106
|
var nullableVersionSchema = valita_exports.union(versionSchema, valita_exports.null());
|
|
11087
11107
|
|
|
11088
|
-
// ../zero-protocol/src/
|
|
11089
|
-
var
|
|
11108
|
+
// ../zero-protocol/src/primary-key.ts
|
|
11109
|
+
var primaryKeySchema = valita_exports.array(valita_exports.string()).assert((arr) => arr.length > 0);
|
|
11110
|
+
var primaryKeyValueSchema = valita_exports.union(
|
|
11111
|
+
valita_exports.string(),
|
|
11112
|
+
valita_exports.number(),
|
|
11113
|
+
valita_exports.boolean()
|
|
11114
|
+
);
|
|
11115
|
+
var primaryKeyValueRecordSchema = readonlyRecord(
|
|
11116
|
+
primaryKeyValueSchema
|
|
11117
|
+
);
|
|
11090
11118
|
|
|
11091
11119
|
// ../zero-protocol/src/entities-patch.ts
|
|
11092
11120
|
var putOpSchema3 = valita_exports.object({
|
|
11093
11121
|
op: valita_exports.literal("put"),
|
|
11094
11122
|
entityType: valita_exports.string(),
|
|
11095
|
-
entityID:
|
|
11123
|
+
entityID: primaryKeyValueRecordSchema,
|
|
11096
11124
|
value: jsonObjectSchema
|
|
11097
11125
|
});
|
|
11098
11126
|
var updateOpSchema = valita_exports.object({
|
|
11099
11127
|
op: valita_exports.literal("update"),
|
|
11100
11128
|
entityType: valita_exports.string(),
|
|
11101
|
-
entityID:
|
|
11129
|
+
entityID: primaryKeyValueRecordSchema,
|
|
11102
11130
|
merge: jsonObjectSchema.optional(),
|
|
11103
11131
|
constrain: valita_exports.array(valita_exports.string()).optional()
|
|
11104
11132
|
});
|
|
11105
11133
|
var delOpSchema3 = valita_exports.object({
|
|
11106
11134
|
op: valita_exports.literal("del"),
|
|
11107
11135
|
entityType: valita_exports.string(),
|
|
11108
|
-
entityID:
|
|
11136
|
+
entityID: primaryKeyValueRecordSchema
|
|
11109
11137
|
});
|
|
11110
11138
|
var clearOpSchema3 = valita_exports.object({
|
|
11111
11139
|
op: valita_exports.literal("clear")
|
|
@@ -11126,6 +11154,10 @@ var pokeStartBodySchema = valita_exports.object({
|
|
|
11126
11154
|
// able to send a base cookie with value `null` to match that state.
|
|
11127
11155
|
baseCookie: nullableVersionSchema,
|
|
11128
11156
|
cookie: versionSchema,
|
|
11157
|
+
schemaVersions: valita_exports.object({
|
|
11158
|
+
minSupportedVersion: valita_exports.number(),
|
|
11159
|
+
maxSupportedVersion: valita_exports.number()
|
|
11160
|
+
}),
|
|
11129
11161
|
timestamp: valita_exports.number().optional()
|
|
11130
11162
|
});
|
|
11131
11163
|
var pokePartBodySchema = valita_exports.object({
|
|
@@ -11206,25 +11238,25 @@ var CRUD_MUTATION_NAME = "_zero_crud";
|
|
|
11206
11238
|
var createOpSchema = valita_exports.object({
|
|
11207
11239
|
op: valita_exports.literal("create"),
|
|
11208
11240
|
entityType: valita_exports.string(),
|
|
11209
|
-
id:
|
|
11241
|
+
id: primaryKeyValueRecordSchema,
|
|
11210
11242
|
value: jsonObjectSchema
|
|
11211
11243
|
});
|
|
11212
11244
|
var setOpSchema = valita_exports.object({
|
|
11213
11245
|
op: valita_exports.literal("set"),
|
|
11214
11246
|
entityType: valita_exports.string(),
|
|
11215
|
-
id:
|
|
11247
|
+
id: primaryKeyValueRecordSchema,
|
|
11216
11248
|
value: jsonObjectSchema
|
|
11217
11249
|
});
|
|
11218
11250
|
var updateOpSchema2 = valita_exports.object({
|
|
11219
11251
|
op: valita_exports.literal("update"),
|
|
11220
11252
|
entityType: valita_exports.string(),
|
|
11221
|
-
id:
|
|
11253
|
+
id: primaryKeyValueRecordSchema,
|
|
11222
11254
|
partialValue: jsonObjectSchema
|
|
11223
11255
|
});
|
|
11224
11256
|
var deleteOpSchema = valita_exports.object({
|
|
11225
11257
|
op: valita_exports.literal("delete"),
|
|
11226
11258
|
entityType: valita_exports.string(),
|
|
11227
|
-
id:
|
|
11259
|
+
id: primaryKeyValueRecordSchema
|
|
11228
11260
|
});
|
|
11229
11261
|
var crudOpSchema = valita_exports.union(
|
|
11230
11262
|
createOpSchema,
|
|
@@ -13408,6 +13440,27 @@ var MemoryStorage = class {
|
|
|
13408
13440
|
}
|
|
13409
13441
|
};
|
|
13410
13442
|
|
|
13443
|
+
// ../shared/src/reverse-string.ts
|
|
13444
|
+
function reverseString(str) {
|
|
13445
|
+
let reversed = "";
|
|
13446
|
+
for (let i = str.length - 1; i >= 0; i--) {
|
|
13447
|
+
reversed += str[i];
|
|
13448
|
+
}
|
|
13449
|
+
return reversed;
|
|
13450
|
+
}
|
|
13451
|
+
|
|
13452
|
+
// ../shared/src/xxhash.ts
|
|
13453
|
+
import xxhash from "xxhash-wasm";
|
|
13454
|
+
var { create64, h32, h64 } = await xxhash();
|
|
13455
|
+
|
|
13456
|
+
// ../shared/src/h64-with-reverse.ts
|
|
13457
|
+
function h64WithReverse(str) {
|
|
13458
|
+
const forward = h64(str);
|
|
13459
|
+
const backward = h64(reverseString(str));
|
|
13460
|
+
const full = (forward << 64n) + backward;
|
|
13461
|
+
return full.toString(36);
|
|
13462
|
+
}
|
|
13463
|
+
|
|
13411
13464
|
// ../zero-client/src/client/keys.ts
|
|
13412
13465
|
var CLIENTS_KEY_PREFIX = "c/";
|
|
13413
13466
|
var DESIRED_QUERIES_KEY_PREFIX = "d/";
|
|
@@ -13425,11 +13478,23 @@ function desiredQueriesPrefixForClient(clientID) {
|
|
|
13425
13478
|
function toGotQueriesKey(hash2) {
|
|
13426
13479
|
return GOT_QUERIES_KEY_PREFIX + hash2;
|
|
13427
13480
|
}
|
|
13428
|
-
function
|
|
13429
|
-
|
|
13430
|
-
|
|
13431
|
-
|
|
13432
|
-
|
|
13481
|
+
function maybeSort(arr) {
|
|
13482
|
+
for (let i = 1; i < arr.length; i++) {
|
|
13483
|
+
if (arr[i] < arr[i - 1]) {
|
|
13484
|
+
return [...arr].sort();
|
|
13485
|
+
}
|
|
13486
|
+
}
|
|
13487
|
+
return arr;
|
|
13488
|
+
}
|
|
13489
|
+
function toPrimaryKeyString(tableName, primaryKey, id) {
|
|
13490
|
+
if (primaryKey.length === 1) {
|
|
13491
|
+
return ENTITIES_KEY_PREFIX + tableName + "/" + id[primaryKey[0]];
|
|
13492
|
+
}
|
|
13493
|
+
const sorted = maybeSort(primaryKey);
|
|
13494
|
+
const arr = sorted.map((k) => id[k]);
|
|
13495
|
+
const str = JSON.stringify(arr);
|
|
13496
|
+
const idSegment = h64WithReverse(str);
|
|
13497
|
+
return ENTITIES_KEY_PREFIX + tableName + "/" + idSegment;
|
|
13433
13498
|
}
|
|
13434
13499
|
|
|
13435
13500
|
// ../zero-client/src/client/context.ts
|
|
@@ -13456,8 +13521,8 @@ var ZeroContext = class {
|
|
|
13456
13521
|
this.#sources.set(name, source);
|
|
13457
13522
|
return source;
|
|
13458
13523
|
}
|
|
13459
|
-
addServerQuery(ast) {
|
|
13460
|
-
return this.#addQuery(ast);
|
|
13524
|
+
addServerQuery(ast, gotCallback) {
|
|
13525
|
+
return this.#addQuery(ast, gotCallback);
|
|
13461
13526
|
}
|
|
13462
13527
|
createStorage() {
|
|
13463
13528
|
return new MemoryStorage();
|
|
@@ -13518,6 +13583,15 @@ var ZeroContext = class {
|
|
|
13518
13583
|
}
|
|
13519
13584
|
};
|
|
13520
13585
|
|
|
13586
|
+
// ../zero-client/src/client/make-id-from-primary-key.ts
|
|
13587
|
+
function makeIDFromPrimaryKey(primaryKey, value) {
|
|
13588
|
+
const id = {};
|
|
13589
|
+
for (const key of primaryKey) {
|
|
13590
|
+
id[key] = parse(value[key], primaryKeyValueSchema);
|
|
13591
|
+
}
|
|
13592
|
+
return id;
|
|
13593
|
+
}
|
|
13594
|
+
|
|
13521
13595
|
// ../zero-client/src/client/crud.ts
|
|
13522
13596
|
function makeCRUDMutate(schema, repMutate) {
|
|
13523
13597
|
const { [CRUD_MUTATION_NAME]: zeroCRUD } = repMutate;
|
|
@@ -13531,7 +13605,7 @@ function makeCRUDMutate(schema, repMutate) {
|
|
|
13531
13605
|
const ops = [];
|
|
13532
13606
|
const m = {};
|
|
13533
13607
|
for (const name of Object.keys(schema.tables)) {
|
|
13534
|
-
m[name] = makeBatchCRUDMutate(name, ops);
|
|
13608
|
+
m[name] = makeBatchCRUDMutate(name, schema, ops);
|
|
13535
13609
|
}
|
|
13536
13610
|
const rv = await body(m);
|
|
13537
13611
|
await zeroCRUD({ ops });
|
|
@@ -13545,118 +13619,147 @@ function makeCRUDMutate(schema, repMutate) {
|
|
|
13545
13619
|
throw new Error(`Cannot call mutate.${entityType}.${op} inside a batch`);
|
|
13546
13620
|
}
|
|
13547
13621
|
};
|
|
13548
|
-
for (const name of Object.
|
|
13549
|
-
mutate[name] = makeEntityCRUDMutate(
|
|
13622
|
+
for (const [name, tableSchema] of Object.entries(schema.tables)) {
|
|
13623
|
+
mutate[name] = makeEntityCRUDMutate(
|
|
13624
|
+
name,
|
|
13625
|
+
tableSchema.primaryKey,
|
|
13626
|
+
zeroCRUD,
|
|
13627
|
+
assertNotInBatch
|
|
13628
|
+
);
|
|
13550
13629
|
}
|
|
13551
13630
|
return mutate;
|
|
13552
13631
|
}
|
|
13553
|
-
function makeEntityCRUDMutate(entityType, zeroCRUD, assertNotInBatch) {
|
|
13632
|
+
function makeEntityCRUDMutate(entityType, primaryKey, zeroCRUD, assertNotInBatch) {
|
|
13554
13633
|
return {
|
|
13555
13634
|
create: (value) => {
|
|
13556
13635
|
assertNotInBatch(entityType, "create");
|
|
13557
|
-
const { id } = value;
|
|
13558
13636
|
const op = {
|
|
13559
13637
|
op: "create",
|
|
13560
13638
|
entityType,
|
|
13561
|
-
|
|
13562
|
-
id: { id },
|
|
13639
|
+
id: makeIDFromPrimaryKey(primaryKey, value),
|
|
13563
13640
|
value
|
|
13564
13641
|
};
|
|
13565
13642
|
return zeroCRUD({ ops: [op] });
|
|
13566
13643
|
},
|
|
13567
13644
|
set: (value) => {
|
|
13568
13645
|
assertNotInBatch(entityType, "set");
|
|
13569
|
-
const
|
|
13570
|
-
|
|
13646
|
+
const op = {
|
|
13647
|
+
op: "set",
|
|
13648
|
+
entityType,
|
|
13649
|
+
id: makeIDFromPrimaryKey(primaryKey, value),
|
|
13650
|
+
value
|
|
13651
|
+
};
|
|
13571
13652
|
return zeroCRUD({ ops: [op] });
|
|
13572
13653
|
},
|
|
13573
13654
|
update: (value) => {
|
|
13574
13655
|
assertNotInBatch(entityType, "update");
|
|
13575
|
-
const { id } = value;
|
|
13576
13656
|
const op = {
|
|
13577
13657
|
op: "update",
|
|
13578
13658
|
entityType,
|
|
13579
|
-
id:
|
|
13659
|
+
id: makeIDFromPrimaryKey(primaryKey, value),
|
|
13580
13660
|
partialValue: value
|
|
13581
13661
|
};
|
|
13582
13662
|
return zeroCRUD({ ops: [op] });
|
|
13583
13663
|
},
|
|
13584
13664
|
delete: (id) => {
|
|
13585
13665
|
assertNotInBatch(entityType, "delete");
|
|
13586
|
-
const op = {
|
|
13666
|
+
const op = {
|
|
13667
|
+
op: "delete",
|
|
13668
|
+
entityType,
|
|
13669
|
+
id: makeIDFromPrimaryKey(primaryKey, id)
|
|
13670
|
+
};
|
|
13587
13671
|
return zeroCRUD({ ops: [op] });
|
|
13588
13672
|
}
|
|
13589
13673
|
};
|
|
13590
13674
|
}
|
|
13591
|
-
function makeBatchCRUDMutate(
|
|
13675
|
+
function makeBatchCRUDMutate(tableName, schema, ops) {
|
|
13676
|
+
const { primaryKey } = schema.tables[tableName];
|
|
13592
13677
|
return {
|
|
13593
13678
|
create: (value) => {
|
|
13594
|
-
const { id } = value;
|
|
13595
13679
|
const op = {
|
|
13596
13680
|
op: "create",
|
|
13597
|
-
entityType,
|
|
13598
|
-
id:
|
|
13681
|
+
entityType: tableName,
|
|
13682
|
+
id: makeIDFromPrimaryKey(primaryKey, value),
|
|
13599
13683
|
value
|
|
13600
13684
|
};
|
|
13601
13685
|
ops.push(op);
|
|
13602
13686
|
return promiseVoid;
|
|
13603
13687
|
},
|
|
13604
13688
|
set: (value) => {
|
|
13605
|
-
const
|
|
13606
|
-
|
|
13689
|
+
const op = {
|
|
13690
|
+
op: "set",
|
|
13691
|
+
entityType: tableName,
|
|
13692
|
+
id: makeIDFromPrimaryKey(primaryKey, value),
|
|
13693
|
+
value
|
|
13694
|
+
};
|
|
13607
13695
|
ops.push(op);
|
|
13608
13696
|
return promiseVoid;
|
|
13609
13697
|
},
|
|
13610
13698
|
update: (value) => {
|
|
13611
|
-
const { id } = value;
|
|
13612
13699
|
const op = {
|
|
13613
13700
|
op: "update",
|
|
13614
|
-
entityType,
|
|
13615
|
-
id:
|
|
13701
|
+
entityType: tableName,
|
|
13702
|
+
id: makeIDFromPrimaryKey(primaryKey, value),
|
|
13616
13703
|
partialValue: value
|
|
13617
13704
|
};
|
|
13618
13705
|
ops.push(op);
|
|
13619
13706
|
return promiseVoid;
|
|
13620
13707
|
},
|
|
13621
13708
|
delete: (id) => {
|
|
13622
|
-
const op = {
|
|
13709
|
+
const op = {
|
|
13710
|
+
op: "delete",
|
|
13711
|
+
entityType: tableName,
|
|
13712
|
+
id: makeIDFromPrimaryKey(primaryKey, id)
|
|
13713
|
+
};
|
|
13623
13714
|
ops.push(op);
|
|
13624
13715
|
return promiseVoid;
|
|
13625
13716
|
}
|
|
13626
13717
|
};
|
|
13627
13718
|
}
|
|
13628
|
-
function makeCRUDMutator(
|
|
13719
|
+
function makeCRUDMutator(schema) {
|
|
13629
13720
|
return async function zeroCRUDMutator(tx, crudArg) {
|
|
13630
13721
|
for (const op of crudArg.ops) {
|
|
13631
13722
|
switch (op.op) {
|
|
13632
13723
|
case "create":
|
|
13633
|
-
await createImpl(tx, op);
|
|
13724
|
+
await createImpl(tx, op, schema);
|
|
13634
13725
|
break;
|
|
13635
13726
|
case "set":
|
|
13636
|
-
await setImpl(tx, op);
|
|
13727
|
+
await setImpl(tx, op, schema);
|
|
13637
13728
|
break;
|
|
13638
13729
|
case "update":
|
|
13639
|
-
await updateImpl(tx, op);
|
|
13730
|
+
await updateImpl(tx, op, schema);
|
|
13640
13731
|
break;
|
|
13641
13732
|
case "delete":
|
|
13642
|
-
await deleteImpl(tx, op);
|
|
13733
|
+
await deleteImpl(tx, op, schema);
|
|
13643
13734
|
break;
|
|
13644
13735
|
}
|
|
13645
13736
|
}
|
|
13646
13737
|
};
|
|
13647
13738
|
}
|
|
13648
|
-
async function createImpl(tx, arg) {
|
|
13649
|
-
const key =
|
|
13739
|
+
async function createImpl(tx, arg, schema) {
|
|
13740
|
+
const key = toPrimaryKeyString(
|
|
13741
|
+
arg.entityType,
|
|
13742
|
+
schema.tables[arg.entityType].primaryKey,
|
|
13743
|
+
arg.id
|
|
13744
|
+
);
|
|
13650
13745
|
if (!await tx.has(key)) {
|
|
13651
13746
|
await tx.set(key, arg.value);
|
|
13652
13747
|
}
|
|
13653
13748
|
}
|
|
13654
|
-
async function setImpl(tx, arg) {
|
|
13655
|
-
const key =
|
|
13749
|
+
async function setImpl(tx, arg, schema) {
|
|
13750
|
+
const key = toPrimaryKeyString(
|
|
13751
|
+
arg.entityType,
|
|
13752
|
+
schema.tables[arg.entityType].primaryKey,
|
|
13753
|
+
arg.id
|
|
13754
|
+
);
|
|
13656
13755
|
await tx.set(key, arg.value);
|
|
13657
13756
|
}
|
|
13658
|
-
async function updateImpl(tx, arg) {
|
|
13659
|
-
const key =
|
|
13757
|
+
async function updateImpl(tx, arg, schema) {
|
|
13758
|
+
const key = toPrimaryKeyString(
|
|
13759
|
+
arg.entityType,
|
|
13760
|
+
schema.tables[arg.entityType].primaryKey,
|
|
13761
|
+
arg.id
|
|
13762
|
+
);
|
|
13660
13763
|
const prev = await tx.get(key);
|
|
13661
13764
|
if (prev === void 0) {
|
|
13662
13765
|
return;
|
|
@@ -13665,8 +13768,12 @@ async function updateImpl(tx, arg) {
|
|
|
13665
13768
|
const next = { ...prev, ...update };
|
|
13666
13769
|
await tx.set(key, next);
|
|
13667
13770
|
}
|
|
13668
|
-
async function deleteImpl(tx, arg) {
|
|
13669
|
-
const key =
|
|
13771
|
+
async function deleteImpl(tx, arg, schema) {
|
|
13772
|
+
const key = toPrimaryKeyString(
|
|
13773
|
+
arg.entityType,
|
|
13774
|
+
schema.tables[arg.entityType].primaryKey,
|
|
13775
|
+
arg.id
|
|
13776
|
+
);
|
|
13670
13777
|
await tx.del(key);
|
|
13671
13778
|
}
|
|
13672
13779
|
|
|
@@ -14201,10 +14308,6 @@ var State = class {
|
|
|
14201
14308
|
}
|
|
14202
14309
|
};
|
|
14203
14310
|
|
|
14204
|
-
// ../shared/src/xxhash.ts
|
|
14205
|
-
import xxhash from "xxhash-wasm";
|
|
14206
|
-
var { create64, h32, h64 } = await xxhash();
|
|
14207
|
-
|
|
14208
14311
|
// ../zql/src/zql/ast/ast.ts
|
|
14209
14312
|
import { compareUTF8 as compareUTF84 } from "compare-utf8";
|
|
14210
14313
|
function normalizeAST(ast) {
|
|
@@ -14264,9 +14367,37 @@ var QueryManager = class {
|
|
|
14264
14367
|
#clientID;
|
|
14265
14368
|
#send;
|
|
14266
14369
|
#queries = /* @__PURE__ */ new Map();
|
|
14267
|
-
|
|
14370
|
+
#gotQueries = /* @__PURE__ */ new Set();
|
|
14371
|
+
constructor(clientID, send2, experimentalWatch) {
|
|
14268
14372
|
this.#clientID = clientID;
|
|
14269
14373
|
this.#send = send2;
|
|
14374
|
+
experimentalWatch(
|
|
14375
|
+
(diff2) => {
|
|
14376
|
+
for (const diffOp of diff2) {
|
|
14377
|
+
const queryHash = diffOp.key.substring(GOT_QUERIES_KEY_PREFIX.length);
|
|
14378
|
+
switch (diffOp.op) {
|
|
14379
|
+
case "add":
|
|
14380
|
+
this.#gotQueries.add(queryHash);
|
|
14381
|
+
this.#fireGotCallbacks(queryHash, true);
|
|
14382
|
+
break;
|
|
14383
|
+
case "del":
|
|
14384
|
+
this.#gotQueries.delete(queryHash);
|
|
14385
|
+
this.#fireGotCallbacks(queryHash, false);
|
|
14386
|
+
break;
|
|
14387
|
+
}
|
|
14388
|
+
}
|
|
14389
|
+
},
|
|
14390
|
+
{
|
|
14391
|
+
prefix: GOT_QUERIES_KEY_PREFIX,
|
|
14392
|
+
initialValuesInFirstDiff: true
|
|
14393
|
+
}
|
|
14394
|
+
);
|
|
14395
|
+
}
|
|
14396
|
+
#fireGotCallbacks(queryHash, got) {
|
|
14397
|
+
const gotCallbacks = this.#queries.get(queryHash)?.gotCallbacks ?? [];
|
|
14398
|
+
for (const gotCallback of gotCallbacks) {
|
|
14399
|
+
gotCallback(got);
|
|
14400
|
+
}
|
|
14270
14401
|
}
|
|
14271
14402
|
async getQueriesPatch(tx) {
|
|
14272
14403
|
const existingQueryHashes = /* @__PURE__ */ new Set();
|
|
@@ -14287,12 +14418,16 @@ var QueryManager = class {
|
|
|
14287
14418
|
}
|
|
14288
14419
|
return patch;
|
|
14289
14420
|
}
|
|
14290
|
-
add(ast) {
|
|
14421
|
+
add(ast, gotCallback) {
|
|
14291
14422
|
const normalized = normalizeAST(ast);
|
|
14292
14423
|
const astHash = hash(normalized);
|
|
14293
14424
|
let entry = this.#queries.get(astHash);
|
|
14294
14425
|
if (!entry) {
|
|
14295
|
-
entry = {
|
|
14426
|
+
entry = {
|
|
14427
|
+
normalized,
|
|
14428
|
+
count: 1,
|
|
14429
|
+
gotCallbacks: gotCallback === void 0 ? [] : [gotCallback]
|
|
14430
|
+
};
|
|
14296
14431
|
this.#queries.set(astHash, entry);
|
|
14297
14432
|
this.#send([
|
|
14298
14433
|
"changeDesiredQueries",
|
|
@@ -14302,6 +14437,14 @@ var QueryManager = class {
|
|
|
14302
14437
|
]);
|
|
14303
14438
|
} else {
|
|
14304
14439
|
++entry.count;
|
|
14440
|
+
if (gotCallback) {
|
|
14441
|
+
entry.gotCallbacks.push(gotCallback);
|
|
14442
|
+
}
|
|
14443
|
+
}
|
|
14444
|
+
if (gotCallback) {
|
|
14445
|
+
queueMicrotask(() => {
|
|
14446
|
+
gotCallback(this.#gotQueries.has(astHash));
|
|
14447
|
+
});
|
|
14305
14448
|
}
|
|
14306
14449
|
let removed = false;
|
|
14307
14450
|
return () => {
|
|
@@ -14408,6 +14551,9 @@ function validateServerParam(paramName, server) {
|
|
|
14408
14551
|
}
|
|
14409
14552
|
function getServer(server) {
|
|
14410
14553
|
if (server === void 0 || server === null) {
|
|
14554
|
+
console.warn(
|
|
14555
|
+
"Zero starting up with no server URL. This is supported for unit testing and prototyping, but no data will be synced."
|
|
14556
|
+
);
|
|
14411
14557
|
return null;
|
|
14412
14558
|
}
|
|
14413
14559
|
return validateServerParam("server", server);
|
|
@@ -14427,10 +14573,12 @@ var PokeHandler = class {
|
|
|
14427
14573
|
// Serializes calls to this.#replicachePoke otherwise we can cause out of
|
|
14428
14574
|
// order poke errors.
|
|
14429
14575
|
#pokeLock = new Lock3();
|
|
14430
|
-
|
|
14576
|
+
#schema;
|
|
14577
|
+
constructor(replicachePoke, onPokeError, clientID, schema, lc) {
|
|
14431
14578
|
this.#replicachePoke = replicachePoke;
|
|
14432
14579
|
this.#onPokeError = onPokeError;
|
|
14433
14580
|
this.#clientID = clientID;
|
|
14581
|
+
this.#schema = schema;
|
|
14434
14582
|
this.#lc = lc.withContext("PokeHandler");
|
|
14435
14583
|
}
|
|
14436
14584
|
handlePokeStart(pokeStart) {
|
|
@@ -14504,7 +14652,7 @@ var PokeHandler = class {
|
|
|
14504
14652
|
lc.debug?.("got poke lock at", now);
|
|
14505
14653
|
lc.debug?.("merging", this.#pokeBuffer.length);
|
|
14506
14654
|
try {
|
|
14507
|
-
const merged = mergePokes(this.#pokeBuffer);
|
|
14655
|
+
const merged = mergePokes(this.#pokeBuffer, this.#schema);
|
|
14508
14656
|
this.#pokeBuffer.length = 0;
|
|
14509
14657
|
if (merged === void 0) {
|
|
14510
14658
|
lc.debug?.("frame is empty");
|
|
@@ -14533,7 +14681,7 @@ var PokeHandler = class {
|
|
|
14533
14681
|
this.#pokeBuffer.length = 0;
|
|
14534
14682
|
}
|
|
14535
14683
|
};
|
|
14536
|
-
function mergePokes(pokeBuffer) {
|
|
14684
|
+
function mergePokes(pokeBuffer, schema) {
|
|
14537
14685
|
if (pokeBuffer.length === 0) {
|
|
14538
14686
|
return void 0;
|
|
14539
14687
|
}
|
|
@@ -14587,7 +14735,9 @@ function mergePokes(pokeBuffer) {
|
|
|
14587
14735
|
}
|
|
14588
14736
|
if (pokePart.entitiesPatch) {
|
|
14589
14737
|
mergedPatch.push(
|
|
14590
|
-
...pokePart.entitiesPatch.map(
|
|
14738
|
+
...pokePart.entitiesPatch.map(
|
|
14739
|
+
(p) => entitiesPatchOpToReplicachePatchOp(p, schema)
|
|
14740
|
+
)
|
|
14591
14741
|
);
|
|
14592
14742
|
}
|
|
14593
14743
|
}
|
|
@@ -14637,25 +14787,37 @@ function queryPatchOpToReplicachePatchOp(op, toKey) {
|
|
|
14637
14787
|
};
|
|
14638
14788
|
}
|
|
14639
14789
|
}
|
|
14640
|
-
function entitiesPatchOpToReplicachePatchOp(op) {
|
|
14790
|
+
function entitiesPatchOpToReplicachePatchOp(op, schema) {
|
|
14641
14791
|
switch (op.op) {
|
|
14642
14792
|
case "clear":
|
|
14643
14793
|
return op;
|
|
14644
14794
|
case "del":
|
|
14645
14795
|
return {
|
|
14646
14796
|
op: "del",
|
|
14647
|
-
key:
|
|
14797
|
+
key: toPrimaryKeyString(
|
|
14798
|
+
op.entityType,
|
|
14799
|
+
schema.tables[op.entityType].primaryKey,
|
|
14800
|
+
op.entityID
|
|
14801
|
+
)
|
|
14648
14802
|
};
|
|
14649
14803
|
case "put":
|
|
14650
14804
|
return {
|
|
14651
14805
|
op: "put",
|
|
14652
|
-
key:
|
|
14806
|
+
key: toPrimaryKeyString(
|
|
14807
|
+
op.entityType,
|
|
14808
|
+
schema.tables[op.entityType].primaryKey,
|
|
14809
|
+
op.entityID
|
|
14810
|
+
),
|
|
14653
14811
|
value: op.value
|
|
14654
14812
|
};
|
|
14655
14813
|
case "update":
|
|
14656
14814
|
return {
|
|
14657
14815
|
op: "update",
|
|
14658
|
-
key:
|
|
14816
|
+
key: toPrimaryKeyString(
|
|
14817
|
+
op.entityType,
|
|
14818
|
+
schema.tables[op.entityType].primaryKey,
|
|
14819
|
+
op.entityID
|
|
14820
|
+
),
|
|
14659
14821
|
merge: op.merge,
|
|
14660
14822
|
constrain: op.constrain
|
|
14661
14823
|
};
|
|
@@ -14788,12 +14950,12 @@ var Zero = class {
|
|
|
14788
14950
|
this.#onClientStateNotFound = value;
|
|
14789
14951
|
this.#rep.onClientStateNotFound = value;
|
|
14790
14952
|
}
|
|
14791
|
-
#connectResolver =
|
|
14953
|
+
#connectResolver = resolver8();
|
|
14792
14954
|
#pendingPullsByRequestID = /* @__PURE__ */ new Map();
|
|
14793
14955
|
#lastMutationIDReceived = 0;
|
|
14794
14956
|
#socket = void 0;
|
|
14795
|
-
#socketResolver =
|
|
14796
|
-
#connectionStateChangeResolver =
|
|
14957
|
+
#socketResolver = resolver8();
|
|
14958
|
+
#connectionStateChangeResolver = resolver8();
|
|
14797
14959
|
/**
|
|
14798
14960
|
* This resolver is only used for rejections. It is awaited in the connected
|
|
14799
14961
|
* state (including when waiting for a pong). It is rejected when we get an
|
|
@@ -14810,7 +14972,7 @@ var Zero = class {
|
|
|
14810
14972
|
}
|
|
14811
14973
|
this.#connectionState = state;
|
|
14812
14974
|
this.#connectionStateChangeResolver.resolve(state);
|
|
14813
|
-
this.#connectionStateChangeResolver =
|
|
14975
|
+
this.#connectionStateChangeResolver = resolver8();
|
|
14814
14976
|
if (false) {
|
|
14815
14977
|
asTestZero(this)[onSetConnectionStateSymbol]?.(state);
|
|
14816
14978
|
}
|
|
@@ -14830,7 +14992,7 @@ var Zero = class {
|
|
|
14830
14992
|
#metrics;
|
|
14831
14993
|
// Store as field to allow test subclass to override. Web API doesn't allow
|
|
14832
14994
|
// overwriting location fields for security reasons.
|
|
14833
|
-
#reload = () =>
|
|
14995
|
+
#reload = () => getBrowserGlobal("location")?.reload();
|
|
14834
14996
|
/**
|
|
14835
14997
|
* Constructs a new Zero client.
|
|
14836
14998
|
*/
|
|
@@ -14921,11 +15083,12 @@ var Zero = class {
|
|
|
14921
15083
|
this.mutate = makeCRUDMutate(schema, rep.mutate);
|
|
14922
15084
|
this.#queryManager = new QueryManager(
|
|
14923
15085
|
rep.clientID,
|
|
14924
|
-
(msg) => this.#sendChangeDesiredQueries(msg)
|
|
15086
|
+
(msg) => this.#sendChangeDesiredQueries(msg),
|
|
15087
|
+
rep.experimentalWatch.bind(rep)
|
|
14925
15088
|
);
|
|
14926
15089
|
this.#zeroContext = new ZeroContext(
|
|
14927
15090
|
schema.tables,
|
|
14928
|
-
(ast) => this.#queryManager.add(ast)
|
|
15091
|
+
(ast, gotCallback) => this.#queryManager.add(ast, gotCallback)
|
|
14929
15092
|
);
|
|
14930
15093
|
rep.experimentalWatch(
|
|
14931
15094
|
(diff2) => this.#zeroContext.processChanges(diff2),
|
|
@@ -14938,7 +15101,7 @@ var Zero = class {
|
|
|
14938
15101
|
reportReloadReason(this.#lc);
|
|
14939
15102
|
this.#metrics = new MetricManager({
|
|
14940
15103
|
reportIntervalMs: REPORT_INTERVAL_MS,
|
|
14941
|
-
host:
|
|
15104
|
+
host: getBrowserGlobal("location")?.host ?? "",
|
|
14942
15105
|
source: "client",
|
|
14943
15106
|
reporter: this.#enableAnalytics ? (allSeries) => this.#reportMetrics(allSeries) : () => Promise.resolve(),
|
|
14944
15107
|
lc: this.#lc
|
|
@@ -14948,10 +15111,11 @@ var Zero = class {
|
|
|
14948
15111
|
(poke) => this.#rep.poke(poke),
|
|
14949
15112
|
() => this.#onPokeError(),
|
|
14950
15113
|
rep.clientID,
|
|
15114
|
+
schema,
|
|
14951
15115
|
this.#lc
|
|
14952
15116
|
);
|
|
14953
15117
|
this.#visibilityWatcher = getDocumentVisibilityWatcher(
|
|
14954
|
-
|
|
15118
|
+
getBrowserGlobal("document"),
|
|
14955
15119
|
hiddenTabDisconnectDelay,
|
|
14956
15120
|
this.#closeAbortController.signal
|
|
14957
15121
|
);
|
|
@@ -15131,6 +15295,11 @@ var Zero = class {
|
|
|
15131
15295
|
// An error on the connection is fatal for the connection.
|
|
15132
15296
|
async #handleErrorMessage(lc, downMessage) {
|
|
15133
15297
|
const [, kind, message] = downMessage;
|
|
15298
|
+
if (kind === "MutationRateLimited" /* MutationRateLimited */) {
|
|
15299
|
+
this.#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;
|
|
15300
|
+
lc.error?.("Mutation rate limited", { message });
|
|
15301
|
+
return;
|
|
15302
|
+
}
|
|
15134
15303
|
lc.info?.(`${kind}: ${message}}`);
|
|
15135
15304
|
const error = new ServerError(kind, message);
|
|
15136
15305
|
this.#rejectMessageError?.reject(error);
|
|
@@ -15336,9 +15505,9 @@ var Zero = class {
|
|
|
15336
15505
|
l.error?.("disconnect() called while disconnected");
|
|
15337
15506
|
break;
|
|
15338
15507
|
}
|
|
15339
|
-
this.#socketResolver =
|
|
15508
|
+
this.#socketResolver = resolver8();
|
|
15340
15509
|
l.debug?.("Creating new connect resolver");
|
|
15341
|
-
this.#connectResolver =
|
|
15510
|
+
this.#connectResolver = resolver8();
|
|
15342
15511
|
this.#setConnectionState(0 /* Disconnected */);
|
|
15343
15512
|
this.#messageCount = 0;
|
|
15344
15513
|
this.#connectStart = void 0;
|
|
@@ -15385,12 +15554,12 @@ var Zero = class {
|
|
|
15385
15554
|
const body = pullResponseMessage[1];
|
|
15386
15555
|
lc = lc.withContext("requestID", body.requestID);
|
|
15387
15556
|
lc.debug?.("Handling pull response", body);
|
|
15388
|
-
const
|
|
15389
|
-
if (!
|
|
15557
|
+
const resolver9 = this.#pendingPullsByRequestID.get(body.requestID);
|
|
15558
|
+
if (!resolver9) {
|
|
15390
15559
|
lc.debug?.("No resolver found");
|
|
15391
15560
|
return;
|
|
15392
15561
|
}
|
|
15393
|
-
|
|
15562
|
+
resolver9.resolve(pullResponseMessage[1]);
|
|
15394
15563
|
}
|
|
15395
15564
|
async #pusher(req, requestID) {
|
|
15396
15565
|
assert(req.pushVersion === 1);
|
|
@@ -15519,7 +15688,7 @@ var Zero = class {
|
|
|
15519
15688
|
PING_INTERVAL_MS,
|
|
15520
15689
|
controller.signal
|
|
15521
15690
|
);
|
|
15522
|
-
this.#rejectMessageError =
|
|
15691
|
+
this.#rejectMessageError = resolver8();
|
|
15523
15692
|
let RaceCases;
|
|
15524
15693
|
((RaceCases2) => {
|
|
15525
15694
|
RaceCases2[RaceCases2["Ping"] = 0] = "Ping";
|
|
@@ -15637,7 +15806,7 @@ var Zero = class {
|
|
|
15637
15806
|
}
|
|
15638
15807
|
];
|
|
15639
15808
|
send(socket, pullRequestMessage);
|
|
15640
|
-
const pullResponseResolver =
|
|
15809
|
+
const pullResponseResolver = resolver8();
|
|
15641
15810
|
this.#pendingPullsByRequestID.set(requestID, pullResponseResolver);
|
|
15642
15811
|
try {
|
|
15643
15812
|
let RaceCases;
|
|
@@ -15698,7 +15867,7 @@ var Zero = class {
|
|
|
15698
15867
|
*/
|
|
15699
15868
|
async #ping(l, messageErrorRejectionPromise) {
|
|
15700
15869
|
l.debug?.("pinging");
|
|
15701
|
-
const { promise, resolve } =
|
|
15870
|
+
const { promise, resolve } = resolver8();
|
|
15702
15871
|
this.#onPong = resolve;
|
|
15703
15872
|
const pingMessage = ["ping", {}];
|
|
15704
15873
|
const t0 = performance.now();
|
|
@@ -15758,7 +15927,8 @@ function createSocket(socketOrigin, baseCookie, clientID, clientGroupID, schemaV
|
|
|
15758
15927
|
searchParams.set("debugPerf", true.toString());
|
|
15759
15928
|
}
|
|
15760
15929
|
lc.info?.("Connecting to", url.toString());
|
|
15761
|
-
|
|
15930
|
+
const WS = mustGetBrowserGlobal("WebSocket");
|
|
15931
|
+
return new WS(
|
|
15762
15932
|
// toString() required for RN URL polyfill.
|
|
15763
15933
|
url.toString(),
|
|
15764
15934
|
auth === "" || auth === void 0 ? void 0 : encodeURIComponent(auth)
|