@rocicorp/zero 0.2.2024101101 → 0.3.2024102300
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/react.js +92 -39
- package/out/react.js.map +2 -2
- package/out/replicache/src/async-iterable-to-array.js +8 -0
- package/out/replicache/src/async-iterable-to-array.js.map +1 -0
- package/out/replicache/src/bg-interval.js +38 -0
- package/out/replicache/src/bg-interval.js.map +1 -0
- package/out/replicache/src/binary-search.js +31 -0
- package/out/replicache/src/binary-search.js.map +1 -0
- package/out/replicache/src/broadcast-channel.js +29 -0
- package/out/replicache/src/broadcast-channel.js.map +1 -0
- package/out/replicache/src/btree/diff.js +6 -0
- package/out/replicache/src/btree/diff.js.map +1 -0
- package/out/replicache/src/btree/node.js +392 -0
- package/out/replicache/src/btree/node.js.map +1 -0
- package/out/replicache/src/btree/read.js +227 -0
- package/out/replicache/src/btree/read.js.map +1 -0
- package/out/replicache/src/btree/splice.js +79 -0
- package/out/replicache/src/btree/splice.js.map +1 -0
- package/out/replicache/src/btree/write.js +154 -0
- package/out/replicache/src/btree/write.js.map +1 -0
- package/out/replicache/src/call-default-fetch.js +37 -0
- package/out/replicache/src/call-default-fetch.js.map +1 -0
- package/out/replicache/src/config.js +13 -0
- package/out/replicache/src/config.js.map +1 -0
- package/out/replicache/src/connection-loop-delegates.js +30 -0
- package/out/replicache/src/connection-loop-delegates.js.map +1 -0
- package/out/replicache/src/connection-loop.js +268 -0
- package/out/replicache/src/connection-loop.js.map +1 -0
- package/out/replicache/src/cookies.js +41 -0
- package/out/replicache/src/cookies.js.map +1 -0
- package/out/replicache/src/dag/chunk.js +60 -0
- package/out/replicache/src/dag/chunk.js.map +1 -0
- package/out/replicache/src/dag/gc.js +126 -0
- package/out/replicache/src/dag/gc.js.map +1 -0
- package/out/replicache/src/dag/key-type-enum.js +6 -0
- package/out/replicache/src/dag/key-type-enum.js.map +1 -0
- package/out/replicache/src/dag/key.js +54 -0
- package/out/replicache/src/dag/key.js.map +1 -0
- package/out/replicache/src/dag/lazy-store.js +532 -0
- package/out/replicache/src/dag/lazy-store.js.map +1 -0
- package/out/replicache/src/dag/store-impl.js +175 -0
- package/out/replicache/src/dag/store-impl.js.map +1 -0
- package/out/replicache/src/dag/store.js +22 -0
- package/out/replicache/src/dag/store.js.map +1 -0
- package/out/replicache/src/dag/visitor.js +22 -0
- package/out/replicache/src/dag/visitor.js.map +1 -0
- package/out/replicache/src/db/commit.js +443 -0
- package/out/replicache/src/db/commit.js.map +1 -0
- package/out/replicache/src/db/index-operation-enum.js +4 -0
- package/out/replicache/src/db/index-operation-enum.js.map +1 -0
- package/out/replicache/src/db/index.js +170 -0
- package/out/replicache/src/db/index.js.map +1 -0
- package/out/replicache/src/db/meta-type-enum.js +7 -0
- package/out/replicache/src/db/meta-type-enum.js.map +1 -0
- package/out/replicache/src/db/read.js +59 -0
- package/out/replicache/src/db/read.js.map +1 -0
- package/out/replicache/src/db/rebase.js +56 -0
- package/out/replicache/src/db/rebase.js.map +1 -0
- package/out/replicache/src/db/scan.js +2 -0
- package/out/replicache/src/db/scan.js.map +1 -0
- package/out/replicache/src/db/write.js +260 -0
- package/out/replicache/src/db/write.js.map +1 -0
- package/out/replicache/src/error-responses.js +30 -0
- package/out/replicache/src/error-responses.js.map +1 -0
- package/out/replicache/src/filter-async-iterable.js +15 -0
- package/out/replicache/src/filter-async-iterable.js.map +1 -0
- package/out/replicache/src/format-version-enum.js +9 -0
- package/out/replicache/src/format-version-enum.js.map +1 -0
- package/out/replicache/src/format-version.js +8 -0
- package/out/replicache/src/format-version.js.map +1 -0
- package/out/replicache/src/frozen-json.js +151 -0
- package/out/replicache/src/frozen-json.js.map +1 -0
- package/out/replicache/src/get-default-puller.js +74 -0
- package/out/replicache/src/get-default-puller.js.map +1 -0
- package/out/replicache/src/get-default-pusher.js +36 -0
- package/out/replicache/src/get-default-pusher.js.map +1 -0
- package/out/replicache/src/hash.js +73 -0
- package/out/replicache/src/hash.js.map +1 -0
- package/out/replicache/src/http-request-info.js +7 -0
- package/out/replicache/src/http-request-info.js.map +1 -0
- package/out/replicache/src/impl.js +2 -0
- package/out/replicache/src/impl.js.map +1 -0
- package/out/replicache/src/index-defs.js +28 -0
- package/out/replicache/src/index-defs.js.map +1 -0
- package/out/replicache/src/invoke-kind-enum.js +4 -0
- package/out/replicache/src/invoke-kind-enum.js.map +1 -0
- package/out/replicache/src/iterable-union.js +5 -0
- package/out/replicache/src/iterable-union.js.map +1 -0
- package/out/replicache/src/kv/idb-store-with-mem-fallback.js +93 -0
- package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
- package/out/replicache/src/kv/idb-store.js +179 -0
- package/out/replicache/src/kv/idb-store.js.map +1 -0
- package/out/replicache/src/kv/mem-store.js +61 -0
- package/out/replicache/src/kv/mem-store.js.map +1 -0
- package/out/replicache/src/kv/read-impl.js +23 -0
- package/out/replicache/src/kv/read-impl.js.map +1 -0
- package/out/replicache/src/kv/store.js +2 -0
- package/out/replicache/src/kv/store.js.map +1 -0
- package/out/replicache/src/kv/write-impl-base.js +48 -0
- package/out/replicache/src/kv/write-impl-base.js.map +1 -0
- package/out/replicache/src/kv/write-impl.js +25 -0
- package/out/replicache/src/kv/write-impl.js.map +1 -0
- package/out/replicache/src/lazy.js +10 -0
- package/out/replicache/src/lazy.js.map +1 -0
- package/out/replicache/src/log-options.js +13 -0
- package/out/replicache/src/log-options.js.map +1 -0
- package/out/replicache/src/merge-async-iterables.js +61 -0
- package/out/replicache/src/merge-async-iterables.js.map +1 -0
- package/out/replicache/src/mod.js +14 -0
- package/out/replicache/src/mod.js.map +1 -0
- package/out/replicache/src/mutation-recovery.js +439 -0
- package/out/replicache/src/mutation-recovery.js.map +1 -0
- package/out/replicache/src/new-client-channel.js +77 -0
- package/out/replicache/src/new-client-channel.js.map +1 -0
- package/out/replicache/src/on-persist-channel.js +33 -0
- package/out/replicache/src/on-persist-channel.js.map +1 -0
- package/out/replicache/src/patch-operation.js +37 -0
- package/out/replicache/src/patch-operation.js.map +1 -0
- package/out/replicache/src/pending-mutations.js +18 -0
- package/out/replicache/src/pending-mutations.js.map +1 -0
- package/out/replicache/src/persist/client-gc.js +38 -0
- package/out/replicache/src/persist/client-gc.js.map +1 -0
- package/out/replicache/src/persist/client-group-gc.js +38 -0
- package/out/replicache/src/persist/client-group-gc.js.map +1 -0
- package/out/replicache/src/persist/client-groups.js +180 -0
- package/out/replicache/src/persist/client-groups.js.map +1 -0
- package/out/replicache/src/persist/clients.js +390 -0
- package/out/replicache/src/persist/clients.js.map +1 -0
- package/out/replicache/src/persist/collect-idb-databases.js +174 -0
- package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
- package/out/replicache/src/persist/gather-mem-only-visitor.js +25 -0
- package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
- package/out/replicache/src/persist/gather-not-cached-visitor.js +35 -0
- package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
- package/out/replicache/src/persist/heartbeat.js +37 -0
- package/out/replicache/src/persist/heartbeat.js.map +1 -0
- package/out/replicache/src/persist/idb-databases-store-db-name.js +18 -0
- package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
- package/out/replicache/src/persist/idb-databases-store.js +90 -0
- package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
- package/out/replicache/src/persist/make-client-id.js +13 -0
- package/out/replicache/src/persist/make-client-id.js.map +1 -0
- package/out/replicache/src/persist/persist.js +132 -0
- package/out/replicache/src/persist/persist.js.map +1 -0
- package/out/replicache/src/persist/refresh.js +147 -0
- package/out/replicache/src/persist/refresh.js.map +1 -0
- package/out/replicache/src/process-scheduler.js +93 -0
- package/out/replicache/src/process-scheduler.js.map +1 -0
- package/out/replicache/src/puller.js +2 -0
- package/out/replicache/src/puller.js.map +1 -0
- package/out/replicache/src/pusher.js +32 -0
- package/out/replicache/src/pusher.js.map +1 -0
- package/out/replicache/src/replicache-impl.js +1007 -0
- package/out/replicache/src/replicache-impl.js.map +1 -0
- package/out/replicache/src/replicache-options.js +2 -0
- package/out/replicache/src/replicache-options.js.map +1 -0
- package/out/replicache/src/replicache.js +387 -0
- package/out/replicache/src/replicache.js.map +1 -0
- package/out/replicache/src/request-idle.js +15 -0
- package/out/replicache/src/request-idle.js.map +1 -0
- package/out/replicache/src/scan-iterator.js +202 -0
- package/out/replicache/src/scan-iterator.js.map +1 -0
- package/out/replicache/src/scan-options.js +45 -0
- package/out/replicache/src/scan-options.js.map +1 -0
- package/out/replicache/src/set-interval-with-signal.js +7 -0
- package/out/replicache/src/set-interval-with-signal.js.map +1 -0
- package/out/replicache/src/size-of-value.js +77 -0
- package/out/replicache/src/size-of-value.js.map +1 -0
- package/out/replicache/src/subscriptions.js +357 -0
- package/out/replicache/src/subscriptions.js.map +1 -0
- package/out/replicache/src/sync/diff.js +75 -0
- package/out/replicache/src/sync/diff.js.map +1 -0
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +5 -0
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
- package/out/replicache/src/sync/ids.js +4 -0
- package/out/replicache/src/sync/ids.js.map +1 -0
- package/out/replicache/src/sync/patch.js +41 -0
- package/out/replicache/src/sync/patch.js.map +1 -0
- package/out/replicache/src/sync/pull-error.js +16 -0
- package/out/replicache/src/sync/pull-error.js.map +1 -0
- package/out/replicache/src/sync/pull.js +375 -0
- package/out/replicache/src/sync/pull.js.map +1 -0
- package/out/replicache/src/sync/push.js +141 -0
- package/out/replicache/src/sync/push.js.map +1 -0
- package/out/replicache/src/sync/request-id.js +31 -0
- package/out/replicache/src/sync/request-id.js.map +1 -0
- package/out/replicache/src/sync/sync-head-name.js +2 -0
- package/out/replicache/src/sync/sync-head-name.js.map +1 -0
- package/out/replicache/src/test-license-key.js +3 -0
- package/out/replicache/src/test-license-key.js.map +1 -0
- package/out/replicache/src/to-error.js +7 -0
- package/out/replicache/src/to-error.js.map +1 -0
- package/out/replicache/src/transaction-closed-error.js +17 -0
- package/out/replicache/src/transaction-closed-error.js.map +1 -0
- package/out/replicache/src/transactions.js +144 -0
- package/out/replicache/src/transactions.js.map +1 -0
- package/out/replicache/src/types.js +2 -0
- package/out/replicache/src/types.js.map +1 -0
- package/out/replicache/src/version.js +5 -0
- package/out/replicache/src/version.js.map +1 -0
- package/out/replicache/src/with-transactions.js +28 -0
- package/out/replicache/src/with-transactions.js.map +1 -0
- package/out/shared/src/browser-env.js +14 -0
- package/out/shared/src/browser-env.js.map +1 -0
- package/out/shared/src/document-visible.js +76 -0
- package/out/shared/src/document-visible.js.map +1 -0
- package/out/shared/src/immutable.js +2 -0
- package/out/shared/src/immutable.js.map +1 -0
- package/out/shared/src/iterables.d.ts +2 -2
- package/out/shared/src/iterables.d.ts.map +1 -1
- package/out/shared/src/iterables.js +40 -0
- package/out/shared/src/iterables.js.map +1 -0
- package/out/shared/src/navigator.js +3 -0
- package/out/shared/src/navigator.js.map +1 -0
- package/out/shared/src/random-uint64.js +8 -0
- package/out/shared/src/random-uint64.js.map +1 -0
- package/out/shared/src/random-values.d.ts +1 -0
- package/out/shared/src/random-values.d.ts.map +1 -1
- package/out/shared/src/random-values.js +22 -0
- package/out/shared/src/random-values.js.map +1 -0
- package/out/shared/src/set-utils.d.ts +1 -1
- package/out/shared/src/set-utils.d.ts.map +1 -1
- package/out/shared/src/set-utils.js +6 -4
- package/out/shared/src/set-utils.js.map +1 -1
- package/out/shared/src/sorted-entries.d.ts +2 -0
- package/out/shared/src/sorted-entries.d.ts.map +1 -0
- package/out/shared/src/sorted-entries.js +6 -0
- package/out/shared/src/sorted-entries.js.map +1 -0
- package/out/shared/src/types.js +2 -0
- package/out/shared/src/types.js.map +1 -0
- package/out/shared/src/valita.d.ts +1 -1
- package/out/shared/src/valita.d.ts.map +1 -1
- package/out/shared/src/valita.js.map +1 -1
- package/out/shared/src/writable.d.ts +4 -0
- package/out/shared/src/writable.d.ts.map +1 -0
- package/out/shared/src/writable.js +2 -0
- package/out/shared/src/writable.js.map +1 -0
- package/out/zero/src/config.d.ts +2 -0
- package/out/zero/src/config.d.ts.map +1 -0
- package/out/zero/src/config.js +2 -0
- package/out/zero/src/config.js.map +1 -0
- package/out/zero-cache/src/config/config-query.d.ts +18 -0
- package/out/zero-cache/src/config/config-query.d.ts.map +1 -0
- package/out/zero-cache/src/config/config-query.js +19 -0
- package/out/zero-cache/src/config/config-query.js.map +1 -0
- package/out/zero-cache/src/config/define-config.d.ts +43 -0
- package/out/zero-cache/src/config/define-config.d.ts.map +1 -0
- package/out/zero-cache/src/config/define-config.js +120 -0
- package/out/zero-cache/src/config/define-config.js.map +1 -0
- package/out/zero-cache/src/config/refs.d.ts +3 -0
- package/out/zero-cache/src/config/refs.d.ts.map +1 -0
- package/out/zero-cache/src/config/refs.js +14 -0
- package/out/zero-cache/src/config/refs.js.map +1 -0
- package/out/zero-cache/src/config/zero-config.d.ts +126 -686
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +43 -161
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/db/create.d.ts +8 -0
- package/out/zero-cache/src/db/create.d.ts.map +1 -0
- package/out/zero-cache/src/db/create.js +39 -0
- package/out/zero-cache/src/db/create.js.map +1 -0
- package/out/zero-cache/src/db/lite-tables.d.ts +3 -3
- package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
- package/out/zero-cache/src/db/lite-tables.js +29 -20
- package/out/zero-cache/src/db/lite-tables.js.map +1 -1
- package/out/zero-cache/src/db/{migration-lite.d.ts → old-migration-lite.d.ts} +1 -1
- package/out/zero-cache/src/db/old-migration-lite.d.ts.map +1 -0
- package/out/zero-cache/src/db/{migration-lite.js → old-migration-lite.js} +1 -1
- package/out/zero-cache/src/db/old-migration-lite.js.map +1 -0
- package/out/zero-cache/src/db/{migration.d.ts → old-migration.d.ts} +1 -1
- package/out/zero-cache/src/db/old-migration.d.ts.map +1 -0
- package/out/zero-cache/src/db/{migration.js → old-migration.js} +1 -1
- package/out/zero-cache/src/db/old-migration.js.map +1 -0
- package/out/zero-cache/src/db/pg-to-lite.d.ts +11 -0
- package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -0
- package/out/zero-cache/src/{services/change-streamer/pg/schema/lite.js → db/pg-to-lite.js} +27 -15
- package/out/zero-cache/src/db/pg-to-lite.js.map +1 -0
- package/out/zero-cache/src/db/specs.d.ts +73 -0
- package/out/zero-cache/src/db/specs.d.ts.map +1 -0
- package/out/zero-cache/src/db/specs.js +30 -0
- package/out/zero-cache/src/db/specs.js.map +1 -0
- package/out/zero-cache/src/db/statements.d.ts +1 -1
- package/out/zero-cache/src/db/statements.d.ts.map +1 -1
- package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -1
- package/out/zero-cache/src/server/life-cycle.js +9 -5
- package/out/zero-cache/src/server/life-cycle.js.map +1 -1
- package/out/zero-cache/src/server/main.js +2 -2
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +2 -1
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +1 -1
- 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 +1 -4
- 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.d.ts +455 -13
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js +16 -0
- package/out/zero-cache/src/services/change-streamer/change-streamer.js.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 +311 -86
- 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 +7 -51
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts +239 -59
- 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 +263 -183
- 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/published.d.ts +4 -4
- 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 +14 -19
- 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 +2 -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/schema/zero.js +51 -6
- package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js.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 +325 -26
- package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/change.js +84 -1
- package/out/zero-cache/src/services/change-streamer/schema/change.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.js +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/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 +5 -2
- package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +17 -19
- 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 +18 -9
- package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +120 -16
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +20 -3
- 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 +44 -12
- package/out/zero-cache/src/services/replicator/schema/change-log.js.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 +21 -18
- 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 +5 -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 +49 -8
- 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.js +1 -1
- package/out/zero-cache/src/services/view-syncer/database-storage.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +31 -0
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -0
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +53 -0
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -0
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +11 -5
- 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 +17 -0
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js +2 -2
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +11 -11
- package/out/zero-cache/src/services/view-syncer/schema/types.js +2 -2
- 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 +12 -4
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +59 -49
- 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 +2 -3
- 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 +50 -10
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/pg.d.ts +7 -1
- package/out/zero-cache/src/types/pg.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg.js +14 -1
- package/out/zero-cache/src/types/pg.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts +3 -1
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +19 -1
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.d.ts +2 -1
- package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +20 -9
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/context.d.ts +1 -1
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/context.js +99 -0
- package/out/zero-client/src/client/context.js.map +1 -0
- package/out/zero-client/src/client/crud.d.ts +8 -10
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/crud.js +181 -0
- package/out/zero-client/src/client/crud.js.map +1 -0
- package/out/zero-client/src/client/enable-analytics.js +21 -0
- package/out/zero-client/src/client/enable-analytics.js.map +1 -0
- package/out/zero-client/src/client/http-string.js +14 -0
- package/out/zero-client/src/client/http-string.js.map +1 -0
- package/out/zero-client/src/client/keys.d.ts +3 -2
- package/out/zero-client/src/client/keys.d.ts.map +1 -1
- package/out/zero-client/src/client/keys.js +32 -0
- package/out/zero-client/src/client/keys.js.map +1 -0
- package/out/zero-client/src/client/log-options.js +57 -0
- package/out/zero-client/src/client/log-options.js.map +1 -0
- package/out/zero-client/src/client/metrics.js +268 -0
- package/out/zero-client/src/client/metrics.js.map +1 -0
- package/out/zero-client/src/client/normalized-schema.d.ts +17 -0
- package/out/zero-client/src/client/normalized-schema.d.ts.map +1 -0
- package/out/zero-client/src/client/normalized-schema.js +31 -0
- package/out/zero-client/src/client/normalized-schema.js.map +1 -0
- package/out/zero-client/src/client/options.js +2 -0
- package/out/zero-client/src/client/options.js.map +1 -0
- package/out/zero-client/src/client/query-manager.d.ts +18 -3
- package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/query-manager.js +149 -0
- package/out/zero-client/src/client/query-manager.js.map +1 -0
- package/out/zero-client/src/client/reload-error-handler.js +23 -0
- package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
- package/out/zero-client/src/client/replicache-types.js +2 -0
- package/out/zero-client/src/client/replicache-types.js.map +1 -0
- package/out/zero-client/src/client/server-error.js +22 -0
- package/out/zero-client/src/client/server-error.js.map +1 -0
- package/out/zero-client/src/client/server-option.js +37 -0
- package/out/zero-client/src/client/server-option.js.map +1 -0
- package/out/zero-client/src/client/version.js +5 -0
- package/out/zero-client/src/client/version.js.map +1 -0
- package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.js +240 -0
- package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
- package/out/zero-client/src/client/zero.d.ts +3 -2
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +1212 -0
- package/out/zero-client/src/client/zero.js.map +1 -0
- package/out/zero-client/src/mod.js +4 -0
- package/out/zero-client/src/mod.js.map +1 -0
- package/out/zero-client/src/util/nanoid.js +34 -0
- package/out/zero-client/src/util/nanoid.js.map +1 -0
- package/out/zero-client/src/util/socket.js +4 -0
- package/out/zero-client/src/util/socket.js.map +1 -0
- package/out/zero-protocol/src/ast.d.ts +87 -1
- package/out/zero-protocol/src/ast.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.js +53 -0
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero-protocol/src/change-desired-queries.d.ts +6 -6
- package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
- package/out/zero-protocol/src/clients-patch.d.ts +1 -1
- package/out/zero-protocol/src/connect.d.ts +15 -8
- package/out/zero-protocol/src/connect.d.ts.map +1 -1
- package/out/zero-protocol/src/connect.js +21 -0
- package/out/zero-protocol/src/connect.js.map +1 -1
- package/out/zero-protocol/src/data.d.ts +36 -0
- package/out/zero-protocol/src/data.d.ts.map +1 -0
- package/out/zero-protocol/src/data.js +4 -0
- package/out/zero-protocol/src/data.js.map +1 -0
- package/out/zero-protocol/src/delete-clients.d.ts +4 -4
- package/out/zero-protocol/src/delete-clients.d.ts.map +1 -1
- package/out/zero-protocol/src/down.d.ts +18 -16
- package/out/zero-protocol/src/down.d.ts.map +1 -1
- package/out/zero-protocol/src/down.js +2 -1
- package/out/zero-protocol/src/down.js.map +1 -1
- package/out/zero-protocol/src/mod.d.ts +1 -2
- package/out/zero-protocol/src/mod.d.ts.map +1 -1
- package/out/zero-protocol/src/mod.js +2 -2
- package/out/zero-protocol/src/mod.js.map +1 -1
- package/out/zero-protocol/src/ping.d.ts +1 -1
- package/out/zero-protocol/src/ping.d.ts.map +1 -1
- package/out/zero-protocol/src/poke.d.ts +26 -26
- package/out/zero-protocol/src/poke.d.ts.map +1 -1
- package/out/zero-protocol/src/poke.js +8 -5
- package/out/zero-protocol/src/poke.js.map +1 -1
- package/out/zero-protocol/src/pong.d.ts +1 -1
- package/out/zero-protocol/src/pong.d.ts.map +1 -1
- package/out/zero-protocol/src/primary-key.d.ts +2 -3
- package/out/zero-protocol/src/primary-key.d.ts.map +1 -1
- package/out/zero-protocol/src/primary-key.js +1 -3
- package/out/zero-protocol/src/primary-key.js.map +1 -1
- package/out/zero-protocol/src/pull.d.ts +4 -4
- package/out/zero-protocol/src/pull.d.ts.map +1 -1
- package/out/zero-protocol/src/push.d.ts +105 -98
- package/out/zero-protocol/src/push.d.ts.map +1 -1
- package/out/zero-protocol/src/push.js +17 -13
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/queries-patch.d.ts +4 -4
- package/out/zero-protocol/src/row-patch.d.ts +38 -0
- package/out/zero-protocol/src/row-patch.d.ts.map +1 -0
- package/out/zero-protocol/src/{entities-patch.js → row-patch.js} +10 -11
- package/out/zero-protocol/src/row-patch.js.map +1 -0
- package/out/zero-protocol/src/up.d.ts +28 -27
- package/out/zero-protocol/src/up.d.ts.map +1 -1
- package/out/zero-protocol/src/warm.d.ts +10 -0
- package/out/zero-protocol/src/warm.d.ts.map +1 -0
- package/out/zero-protocol/src/warm.js +6 -0
- package/out/zero-protocol/src/warm.js.map +1 -0
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero.js +499 -208
- package/out/zero.js.map +4 -4
- package/out/zql/src/zql/builder/builder.d.ts +3 -3
- package/out/zql/src/zql/builder/builder.d.ts.map +1 -1
- package/out/zql/src/zql/builder/builder.js +1 -1
- package/out/zql/src/zql/builder/builder.js.map +1 -1
- package/out/zql/src/zql/builder/filter.d.ts +2 -2
- package/out/zql/src/zql/builder/filter.d.ts.map +1 -1
- package/out/zql/src/zql/builder/filter.js.map +1 -1
- package/out/zql/src/zql/ivm/array-view.d.ts +1 -1
- package/out/zql/src/zql/ivm/array-view.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/array-view.js +232 -0
- package/out/zql/src/zql/ivm/array-view.js.map +1 -0
- package/out/zql/src/zql/ivm/change.d.ts +2 -1
- package/out/zql/src/zql/ivm/change.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/data.d.ts +2 -33
- package/out/zql/src/zql/ivm/data.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/data.js.map +1 -1
- package/out/zql/src/zql/ivm/filter.d.ts +2 -1
- package/out/zql/src/zql/ivm/filter.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/filter.js.map +1 -1
- package/out/zql/src/zql/ivm/join.d.ts +1 -1
- package/out/zql/src/zql/ivm/join.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/join.js +68 -24
- package/out/zql/src/zql/ivm/join.js.map +1 -1
- package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts +1 -1
- package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/memory-source.d.ts +8 -6
- package/out/zql/src/zql/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/memory-source.js +2 -0
- package/out/zql/src/zql/ivm/memory-source.js.map +1 -1
- package/out/zql/src/zql/ivm/memory-storage.js +33 -0
- package/out/zql/src/zql/ivm/memory-storage.js.map +1 -0
- package/out/zql/src/zql/ivm/operator.d.ts +2 -1
- package/out/zql/src/zql/ivm/operator.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/schema.d.ts +3 -3
- 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.d.ts +2 -1
- package/out/zql/src/zql/ivm/skip.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/skip.js.map +1 -1
- package/out/zql/src/zql/ivm/source.d.ts +2 -2
- package/out/zql/src/zql/ivm/source.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/take.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/take.js.map +1 -1
- package/out/zql/src/zql/query/normalize-table-schema.d.ts +48 -0
- package/out/zql/src/zql/query/normalize-table-schema.d.ts.map +1 -0
- package/out/zql/src/zql/query/normalize-table-schema.js +116 -0
- package/out/zql/src/zql/query/normalize-table-schema.js.map +1 -0
- package/out/zql/src/zql/query/query-impl.d.ts +6 -5
- package/out/zql/src/zql/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/zql/query/query-impl.js +263 -0
- package/out/zql/src/zql/query/query-impl.js.map +1 -0
- package/out/zql/src/zql/query/query.d.ts +1 -1
- package/out/zql/src/zql/query/query.d.ts.map +1 -1
- package/out/zql/src/zql/query/query.js +3 -0
- package/out/zql/src/zql/query/query.js.map +1 -0
- package/out/zql/src/zql/query/schema.d.ts +13 -4
- package/out/zql/src/zql/query/schema.d.ts.map +1 -1
- package/out/zql/src/zql/query/schema.js +7 -0
- package/out/zql/src/zql/query/schema.js.map +1 -0
- package/out/zql/src/zql/query/typed-view.js +2 -0
- package/out/zql/src/zql/query/typed-view.js.map +1 -0
- package/out/zqlite/src/db.d.ts +1 -1
- package/out/zqlite/src/db.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/table-source.d.ts +2 -2
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +10 -8
- package/deps/sqlite3/sqlite3.c +0 -260574
- package/deps/sqlite3/sqlite3.h +0 -13572
- package/deps/sqlite3/sqlite3ext.h +0 -719
- package/out/zero-cache/src/db/migration-lite.d.ts.map +0 -1
- package/out/zero-cache/src/db/migration-lite.js.map +0 -1
- package/out/zero-cache/src/db/migration.d.ts.map +0 -1
- package/out/zero-cache/src/db/migration.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts +0 -6
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.js +0 -29
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +0 -6
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +0 -1
- package/out/zero-cache/src/types/specs.d.ts +0 -29
- package/out/zero-cache/src/types/specs.d.ts.map +0 -1
- package/out/zero-cache/src/types/specs.js +0 -2
- package/out/zero-cache/src/types/specs.js.map +0 -1
- package/out/zero-client/src/client/make-id-from-primary-key.d.ts +0 -5
- package/out/zero-client/src/client/make-id-from-primary-key.d.ts.map +0 -1
- package/out/zero-protocol/src/entities-patch.d.ts +0 -66
- package/out/zero-protocol/src/entities-patch.d.ts.map +0 -1
- package/out/zero-protocol/src/entities-patch.js.map +0 -1
- package/out/zql/src/zql/ast/ast.d.ts +0 -84
- package/out/zql/src/zql/ast/ast.d.ts.map +0 -1
- package/out/zql/src/zql/ast/ast.js +0 -54
- package/out/zql/src/zql/ast/ast.js.map +0 -1
- package/tool/install-sqlite3.js +0 -37
package/out/zero.js
CHANGED
|
@@ -9483,20 +9483,72 @@ var Join = class {
|
|
|
9483
9483
|
case "child":
|
|
9484
9484
|
this.#output.push(change);
|
|
9485
9485
|
break;
|
|
9486
|
-
case "edit":
|
|
9487
|
-
|
|
9488
|
-
|
|
9489
|
-
|
|
9490
|
-
|
|
9491
|
-
|
|
9492
|
-
|
|
9486
|
+
case "edit": {
|
|
9487
|
+
this.#output.push({
|
|
9488
|
+
type: "edit",
|
|
9489
|
+
row: change.row,
|
|
9490
|
+
oldRow: change.oldRow
|
|
9491
|
+
});
|
|
9492
|
+
const oldKeyValue = normalizeUndefined(change.oldRow[this.#parentKey]);
|
|
9493
|
+
const newKeyValue = normalizeUndefined(change.row[this.#parentKey]);
|
|
9494
|
+
if (newKeyValue !== oldKeyValue) {
|
|
9495
|
+
const childrenToRemoveStream = this.#child.cleanup({
|
|
9496
|
+
constraint: {
|
|
9497
|
+
key: this.#childKey,
|
|
9498
|
+
value: oldKeyValue
|
|
9499
|
+
}
|
|
9493
9500
|
});
|
|
9494
|
-
|
|
9495
|
-
|
|
9496
|
-
|
|
9501
|
+
for (const childNode of childrenToRemoveStream) {
|
|
9502
|
+
this.#output.push({
|
|
9503
|
+
type: "child",
|
|
9504
|
+
// This is the new row since we already changed it in the edit above.
|
|
9505
|
+
row: change.row,
|
|
9506
|
+
child: {
|
|
9507
|
+
relationshipName: this.#relationshipName,
|
|
9508
|
+
change: {
|
|
9509
|
+
type: "remove",
|
|
9510
|
+
node: childNode
|
|
9511
|
+
}
|
|
9512
|
+
}
|
|
9513
|
+
});
|
|
9514
|
+
}
|
|
9515
|
+
const childrenToAddStream = this.#child.fetch({
|
|
9516
|
+
constraint: {
|
|
9517
|
+
key: this.#childKey,
|
|
9518
|
+
value: newKeyValue
|
|
9519
|
+
}
|
|
9497
9520
|
});
|
|
9521
|
+
for (const childNode of childrenToAddStream) {
|
|
9522
|
+
this.#output.push({
|
|
9523
|
+
type: "child",
|
|
9524
|
+
row: change.row,
|
|
9525
|
+
child: {
|
|
9526
|
+
relationshipName: this.#relationshipName,
|
|
9527
|
+
change: {
|
|
9528
|
+
type: "add",
|
|
9529
|
+
node: childNode
|
|
9530
|
+
}
|
|
9531
|
+
}
|
|
9532
|
+
});
|
|
9533
|
+
}
|
|
9534
|
+
}
|
|
9535
|
+
const { primaryKey } = this.#parent.getSchema();
|
|
9536
|
+
const oldStorageKey = makeStorageKey(
|
|
9537
|
+
oldKeyValue,
|
|
9538
|
+
primaryKey,
|
|
9539
|
+
change.oldRow
|
|
9540
|
+
);
|
|
9541
|
+
const newStorageKey = makeStorageKey(
|
|
9542
|
+
newKeyValue,
|
|
9543
|
+
primaryKey,
|
|
9544
|
+
change.row
|
|
9545
|
+
);
|
|
9546
|
+
if (oldStorageKey !== newStorageKey) {
|
|
9547
|
+
this.#storage.del(oldStorageKey);
|
|
9548
|
+
this.#storage.set(newStorageKey, true);
|
|
9498
9549
|
}
|
|
9499
9550
|
break;
|
|
9551
|
+
}
|
|
9500
9552
|
default:
|
|
9501
9553
|
unreachable(change);
|
|
9502
9554
|
}
|
|
@@ -9569,14 +9621,11 @@ var Join = class {
|
|
|
9569
9621
|
}
|
|
9570
9622
|
#processParentNode(parentNodeRow, parentNodeRelations, mode) {
|
|
9571
9623
|
const parentKeyValue = normalizeUndefined(parentNodeRow[this.#parentKey]);
|
|
9572
|
-
const
|
|
9573
|
-
for (const key of this.#parent.getSchema().primaryKey) {
|
|
9574
|
-
parentPrimaryKey.push(normalizeUndefined(parentNodeRow[key]));
|
|
9575
|
-
}
|
|
9576
|
-
const storageKey = createPrimaryKeySetStorageKey([
|
|
9624
|
+
const storageKey = makeStorageKey(
|
|
9577
9625
|
parentKeyValue,
|
|
9578
|
-
|
|
9579
|
-
|
|
9626
|
+
this.#parent.getSchema().primaryKey,
|
|
9627
|
+
parentNodeRow
|
|
9628
|
+
);
|
|
9580
9629
|
let method = mode;
|
|
9581
9630
|
if (mode === "cleanup") {
|
|
9582
9631
|
const [, second] = take(
|
|
@@ -9615,6 +9664,13 @@ function createPrimaryKeySetStorageKey(values) {
|
|
|
9615
9664
|
function createPrimaryKeySetStorageKeyPrefix(value) {
|
|
9616
9665
|
return createPrimaryKeySetStorageKey([value]);
|
|
9617
9666
|
}
|
|
9667
|
+
function makeStorageKey(keyValue, primaryKey, row) {
|
|
9668
|
+
const parentPrimaryKey = [keyValue];
|
|
9669
|
+
for (const key of primaryKey) {
|
|
9670
|
+
parentPrimaryKey.push(normalizeUndefined(row[key]));
|
|
9671
|
+
}
|
|
9672
|
+
return createPrimaryKeySetStorageKey(parentPrimaryKey);
|
|
9673
|
+
}
|
|
9618
9674
|
|
|
9619
9675
|
// ../zql/src/zql/ivm/skip.ts
|
|
9620
9676
|
var Skip = class {
|
|
@@ -10155,6 +10211,10 @@ function getTakeStateKey(partitionValue) {
|
|
|
10155
10211
|
return JSON.stringify(["take", normalizeUndefined(partitionValue)]);
|
|
10156
10212
|
}
|
|
10157
10213
|
|
|
10214
|
+
// ../zql/src/zql/builder/error.ts
|
|
10215
|
+
var MissingParameterError = class extends Error {
|
|
10216
|
+
};
|
|
10217
|
+
|
|
10158
10218
|
// ../zql/src/zql/builder/like.ts
|
|
10159
10219
|
function getLikePredicate(pattern, flags) {
|
|
10160
10220
|
const op = getLikeOp(String(pattern), flags);
|
|
@@ -10258,10 +10318,6 @@ function not(f) {
|
|
|
10258
10318
|
return (lhs) => !f(lhs);
|
|
10259
10319
|
}
|
|
10260
10320
|
|
|
10261
|
-
// ../zql/src/zql/builder/error.ts
|
|
10262
|
-
var MissingParameterError = class extends Error {
|
|
10263
|
-
};
|
|
10264
|
-
|
|
10265
10321
|
// ../zql/src/zql/builder/builder.ts
|
|
10266
10322
|
function buildPipeline(ast, delegate, staticQueryParameters) {
|
|
10267
10323
|
return buildPipelineInternal(
|
|
@@ -10637,6 +10693,11 @@ function makeEntryPreserveRelationships(row, entry, relationships) {
|
|
|
10637
10693
|
return result;
|
|
10638
10694
|
}
|
|
10639
10695
|
|
|
10696
|
+
// ../shared/src/sorted-entries.ts
|
|
10697
|
+
function sortedEntries(object16) {
|
|
10698
|
+
return Object.entries(object16).sort((a, b) => stringCompare(a[0], b[0]));
|
|
10699
|
+
}
|
|
10700
|
+
|
|
10640
10701
|
// ../zql/src/zql/query/schema.ts
|
|
10641
10702
|
function isFieldRelationship(relationship) {
|
|
10642
10703
|
return relationship.junction === void 0;
|
|
@@ -10645,9 +10706,151 @@ function isJunctionRelationship(relationship) {
|
|
|
10645
10706
|
return !isFieldRelationship(relationship);
|
|
10646
10707
|
}
|
|
10647
10708
|
|
|
10709
|
+
// ../zql/src/zql/query/normalize-table-schema.ts
|
|
10710
|
+
var NormalizedTableSchema = class {
|
|
10711
|
+
tableName;
|
|
10712
|
+
primaryKey;
|
|
10713
|
+
columns;
|
|
10714
|
+
relationships;
|
|
10715
|
+
constructor(tableSchema, tableSchemaCache) {
|
|
10716
|
+
this.tableName = tableSchema.tableName;
|
|
10717
|
+
const primaryKey = normalizePrimaryKey(tableSchema.primaryKey);
|
|
10718
|
+
this.primaryKey = primaryKey;
|
|
10719
|
+
this.columns = normalizeColumns(tableSchema.columns, primaryKey);
|
|
10720
|
+
tableSchemaCache.set(tableSchema, this);
|
|
10721
|
+
this.relationships = normalizeRelationships(
|
|
10722
|
+
tableSchema.relationships,
|
|
10723
|
+
tableSchemaCache
|
|
10724
|
+
);
|
|
10725
|
+
}
|
|
10726
|
+
};
|
|
10727
|
+
function normalizeTableSchema(tableSchema) {
|
|
10728
|
+
return normalizeTableSchemaWithCache(
|
|
10729
|
+
tableSchema,
|
|
10730
|
+
tableSchema.tableName,
|
|
10731
|
+
/* @__PURE__ */ new Map()
|
|
10732
|
+
);
|
|
10733
|
+
}
|
|
10734
|
+
function normalizeTableSchemaWithCache(tableSchema, expectedName, tableSchemaCache) {
|
|
10735
|
+
if (tableSchema instanceof NormalizedTableSchema) {
|
|
10736
|
+
return tableSchema;
|
|
10737
|
+
}
|
|
10738
|
+
assert(
|
|
10739
|
+
tableSchema.tableName === expectedName,
|
|
10740
|
+
`Table name mismatch: "${tableSchema.tableName}" !== "${expectedName}"`
|
|
10741
|
+
);
|
|
10742
|
+
let normalizedTableSchema = tableSchemaCache.get(tableSchema);
|
|
10743
|
+
if (normalizedTableSchema) {
|
|
10744
|
+
return normalizedTableSchema;
|
|
10745
|
+
}
|
|
10746
|
+
normalizedTableSchema = new NormalizedTableSchema(
|
|
10747
|
+
tableSchema,
|
|
10748
|
+
tableSchemaCache
|
|
10749
|
+
);
|
|
10750
|
+
return normalizedTableSchema;
|
|
10751
|
+
}
|
|
10752
|
+
function isSorted(arr) {
|
|
10753
|
+
for (let i = 1; i < arr.length; i++) {
|
|
10754
|
+
if (arr[i - 1] >= arr[i]) {
|
|
10755
|
+
return false;
|
|
10756
|
+
}
|
|
10757
|
+
}
|
|
10758
|
+
return true;
|
|
10759
|
+
}
|
|
10760
|
+
function assertNoDuplicates(arr) {
|
|
10761
|
+
for (let i = 1; i < arr.length; i++) {
|
|
10762
|
+
assert(arr[i - 1] !== arr[i], "Primary key must not contain duplicates");
|
|
10763
|
+
}
|
|
10764
|
+
}
|
|
10765
|
+
function normalizePrimaryKey(arr) {
|
|
10766
|
+
if (isSorted(arr)) {
|
|
10767
|
+
return arr;
|
|
10768
|
+
}
|
|
10769
|
+
arr = [...arr].sort();
|
|
10770
|
+
assertNoDuplicates(arr);
|
|
10771
|
+
return arr;
|
|
10772
|
+
}
|
|
10773
|
+
function normalizeColumns(columns, primaryKey) {
|
|
10774
|
+
const rv = {};
|
|
10775
|
+
for (const pk of primaryKey) {
|
|
10776
|
+
const schemaValue = columns[pk];
|
|
10777
|
+
assert(schemaValue, `Primary key column "${pk}" not found`);
|
|
10778
|
+
const { type, optional } = schemaValue;
|
|
10779
|
+
assert(!optional, `Primary key column "${pk}" cannot be optional`);
|
|
10780
|
+
assert(
|
|
10781
|
+
type === "string" || type === "number" || type === "boolean",
|
|
10782
|
+
`Primary key column "${pk}" must be a string, number, or boolean. Got ${type}`
|
|
10783
|
+
);
|
|
10784
|
+
}
|
|
10785
|
+
for (const [name, column] of sortedEntries(columns)) {
|
|
10786
|
+
rv[name] = normalizeSchemaValue(column);
|
|
10787
|
+
}
|
|
10788
|
+
return rv;
|
|
10789
|
+
}
|
|
10790
|
+
function normalizeSchemaValue(value) {
|
|
10791
|
+
return {
|
|
10792
|
+
type: value.type,
|
|
10793
|
+
optional: value.optional ?? false
|
|
10794
|
+
};
|
|
10795
|
+
}
|
|
10796
|
+
function normalizeRelationships(relationships, tableSchemaCache) {
|
|
10797
|
+
const rv = {};
|
|
10798
|
+
for (const [name, relationship] of sortedEntries(relationships)) {
|
|
10799
|
+
rv[name] = normalizeRelationship(relationship, tableSchemaCache);
|
|
10800
|
+
}
|
|
10801
|
+
return rv;
|
|
10802
|
+
}
|
|
10803
|
+
function normalizeRelationship(relationship, tableSchemaCache) {
|
|
10804
|
+
if (isFieldRelationship(relationship)) {
|
|
10805
|
+
return normalizeFieldRelationship(relationship, tableSchemaCache);
|
|
10806
|
+
}
|
|
10807
|
+
return normalizeJunctionRelationship(relationship, tableSchemaCache);
|
|
10808
|
+
}
|
|
10809
|
+
function normalizeFieldRelationship(relationship, tableSchemaCache) {
|
|
10810
|
+
return {
|
|
10811
|
+
source: relationship.source,
|
|
10812
|
+
dest: {
|
|
10813
|
+
field: relationship.dest.field,
|
|
10814
|
+
schema: normalizeLazyTableSchema(
|
|
10815
|
+
relationship.dest.schema,
|
|
10816
|
+
tableSchemaCache
|
|
10817
|
+
)
|
|
10818
|
+
}
|
|
10819
|
+
};
|
|
10820
|
+
}
|
|
10821
|
+
function normalizeJunctionRelationship(relationship, tableSchemaCache) {
|
|
10822
|
+
return {
|
|
10823
|
+
source: relationship.source,
|
|
10824
|
+
junction: {
|
|
10825
|
+
sourceField: relationship.junction.sourceField,
|
|
10826
|
+
destField: relationship.junction.destField,
|
|
10827
|
+
schema: normalizeLazyTableSchema(
|
|
10828
|
+
relationship.junction.schema,
|
|
10829
|
+
tableSchemaCache
|
|
10830
|
+
)
|
|
10831
|
+
},
|
|
10832
|
+
dest: {
|
|
10833
|
+
field: relationship.dest.field,
|
|
10834
|
+
schema: normalizeLazyTableSchema(
|
|
10835
|
+
relationship.dest.schema,
|
|
10836
|
+
tableSchemaCache
|
|
10837
|
+
)
|
|
10838
|
+
}
|
|
10839
|
+
};
|
|
10840
|
+
}
|
|
10841
|
+
function normalizeLazyTableSchema(tableSchema, buildCache) {
|
|
10842
|
+
const tableSchemaInstance = typeof tableSchema === "function" ? tableSchema() : tableSchema;
|
|
10843
|
+
return normalizeTableSchemaWithCache(
|
|
10844
|
+
tableSchemaInstance,
|
|
10845
|
+
tableSchemaInstance.tableName,
|
|
10846
|
+
// Don't care about name here.
|
|
10847
|
+
buildCache
|
|
10848
|
+
);
|
|
10849
|
+
}
|
|
10850
|
+
|
|
10648
10851
|
// ../zql/src/zql/query/query-impl.ts
|
|
10649
10852
|
function newQuery(delegate, tableSchema) {
|
|
10650
|
-
return new QueryImpl(delegate, tableSchema);
|
|
10853
|
+
return new QueryImpl(delegate, normalizeTableSchema(tableSchema));
|
|
10651
10854
|
}
|
|
10652
10855
|
function newQueryWithDetails(delegate, schema, ast, format) {
|
|
10653
10856
|
return new QueryImpl(delegate, schema, ast, format);
|
|
@@ -10688,7 +10891,7 @@ var AbstractQuery = class {
|
|
|
10688
10891
|
const related1 = related;
|
|
10689
10892
|
const related2 = related;
|
|
10690
10893
|
if (isFieldRelationship(related1)) {
|
|
10691
|
-
const destSchema =
|
|
10894
|
+
const destSchema = related1.dest.schema;
|
|
10692
10895
|
const sq = cb(
|
|
10693
10896
|
this._newQuery(
|
|
10694
10897
|
destSchema,
|
|
@@ -10725,8 +10928,8 @@ var AbstractQuery = class {
|
|
|
10725
10928
|
);
|
|
10726
10929
|
}
|
|
10727
10930
|
if (isJunctionRelationship(related2)) {
|
|
10728
|
-
const destSchema =
|
|
10729
|
-
const junctionSchema =
|
|
10931
|
+
const destSchema = related2.dest.schema;
|
|
10932
|
+
const junctionSchema = related2.junction.schema;
|
|
10730
10933
|
const sq = cb(
|
|
10731
10934
|
this._newQuery(
|
|
10732
10935
|
destSchema,
|
|
@@ -10913,12 +11116,6 @@ var QueryImpl = class extends AbstractQuery {
|
|
|
10913
11116
|
};
|
|
10914
11117
|
}
|
|
10915
11118
|
};
|
|
10916
|
-
function resolveSchema(maybeSchema) {
|
|
10917
|
-
if (typeof maybeSchema === "function") {
|
|
10918
|
-
return maybeSchema();
|
|
10919
|
-
}
|
|
10920
|
-
return maybeSchema;
|
|
10921
|
-
}
|
|
10922
11119
|
function addPrimaryKeys(schema, orderBy) {
|
|
10923
11120
|
orderBy = orderBy ?? [];
|
|
10924
11121
|
const { primaryKey } = schema;
|
|
@@ -10946,6 +11143,7 @@ import { LogContext as LogContext3 } from "@rocicorp/logger";
|
|
|
10946
11143
|
import { resolver as resolver8 } from "@rocicorp/resolver";
|
|
10947
11144
|
|
|
10948
11145
|
// ../zero-protocol/src/ast.ts
|
|
11146
|
+
import { compareUTF8 as compareUTF84 } from "compare-utf8";
|
|
10949
11147
|
var selectorSchema = valita_exports.string();
|
|
10950
11148
|
var orderingElementSchema = readonly(
|
|
10951
11149
|
valita_exports.tuple([selectorSchema, valita_exports.union(valita_exports.literal("asc"), valita_exports.literal("desc"))])
|
|
@@ -11020,6 +11218,57 @@ var astSchema = valita_exports.object({
|
|
|
11020
11218
|
exclusive: valita_exports.boolean()
|
|
11021
11219
|
}).optional()
|
|
11022
11220
|
});
|
|
11221
|
+
function normalizeAST(ast) {
|
|
11222
|
+
return {
|
|
11223
|
+
schema: ast.schema,
|
|
11224
|
+
table: ast.table,
|
|
11225
|
+
alias: ast.alias,
|
|
11226
|
+
where: ast.where ? sortedWhere(ast.where) : void 0,
|
|
11227
|
+
related: ast.related ? sortedRelated(
|
|
11228
|
+
ast.related.map(
|
|
11229
|
+
(r) => ({
|
|
11230
|
+
correlation: {
|
|
11231
|
+
parentField: r.correlation.parentField,
|
|
11232
|
+
childField: r.correlation.childField,
|
|
11233
|
+
op: r.correlation.op
|
|
11234
|
+
},
|
|
11235
|
+
hidden: r.hidden,
|
|
11236
|
+
subquery: normalizeAST(r.subquery)
|
|
11237
|
+
})
|
|
11238
|
+
)
|
|
11239
|
+
) : void 0,
|
|
11240
|
+
start: ast.start,
|
|
11241
|
+
limit: ast.limit,
|
|
11242
|
+
orderBy: ast.orderBy
|
|
11243
|
+
};
|
|
11244
|
+
}
|
|
11245
|
+
function sortedWhere(where) {
|
|
11246
|
+
return [...where].sort(cmpCondition);
|
|
11247
|
+
}
|
|
11248
|
+
function sortedRelated(related) {
|
|
11249
|
+
return related.sort(cmpRelated);
|
|
11250
|
+
}
|
|
11251
|
+
function cmpCondition(a, b) {
|
|
11252
|
+
return compareUTF8MaybeNull(a.field, b.field) || compareUTF8MaybeNull(a.op, b.op) || // Comparing the same field with the same op more than once doesn't make logical
|
|
11253
|
+
// sense, but is technically possible. Assume the values are of the same type and
|
|
11254
|
+
// sort by their String forms.
|
|
11255
|
+
compareUTF8MaybeNull(String(a.value), String(b.value));
|
|
11256
|
+
}
|
|
11257
|
+
function cmpRelated(a, b) {
|
|
11258
|
+
return compareUTF84(must(a.subquery.alias), must(b.subquery.alias));
|
|
11259
|
+
}
|
|
11260
|
+
function compareUTF8MaybeNull(a, b) {
|
|
11261
|
+
if (a !== null && b !== null) {
|
|
11262
|
+
return compareUTF84(a, b);
|
|
11263
|
+
}
|
|
11264
|
+
if (b !== null) {
|
|
11265
|
+
return -1;
|
|
11266
|
+
}
|
|
11267
|
+
if (a !== null) {
|
|
11268
|
+
return 1;
|
|
11269
|
+
}
|
|
11270
|
+
return 0;
|
|
11271
|
+
}
|
|
11023
11272
|
|
|
11024
11273
|
// ../zero-protocol/src/queries-patch.ts
|
|
11025
11274
|
var putOpSchema = valita_exports.object({
|
|
@@ -11077,6 +11326,13 @@ var initConnectionMessageSchema = valita_exports.tuple([
|
|
|
11077
11326
|
valita_exports.literal("initConnection"),
|
|
11078
11327
|
initConnectionBodySchema
|
|
11079
11328
|
]);
|
|
11329
|
+
function encodeSecProtocols(initConnectionMessage, authToken) {
|
|
11330
|
+
const protocols = [btoa(JSON.stringify(initConnectionMessage))];
|
|
11331
|
+
if (authToken !== void 0) {
|
|
11332
|
+
protocols.push(authToken);
|
|
11333
|
+
}
|
|
11334
|
+
return encodeURIComponent(protocols.join(","));
|
|
11335
|
+
}
|
|
11080
11336
|
|
|
11081
11337
|
// ../zero-protocol/src/error.ts
|
|
11082
11338
|
var errorKindSchema = valita_exports.union(
|
|
@@ -11101,12 +11357,20 @@ var errorMessageSchema = valita_exports.tuple([
|
|
|
11101
11357
|
valita_exports.string()
|
|
11102
11358
|
]);
|
|
11103
11359
|
|
|
11104
|
-
// ../zero-protocol/src/
|
|
11105
|
-
var
|
|
11106
|
-
|
|
11360
|
+
// ../zero-protocol/src/data.ts
|
|
11361
|
+
var valueSchema = valita_exports.union(
|
|
11362
|
+
valita_exports.null(),
|
|
11363
|
+
valita_exports.boolean(),
|
|
11364
|
+
valita_exports.number(),
|
|
11365
|
+
valita_exports.string(),
|
|
11366
|
+
valita_exports.undefined()
|
|
11367
|
+
);
|
|
11368
|
+
var rowSchema = valita_exports.record(valueSchema);
|
|
11107
11369
|
|
|
11108
11370
|
// ../zero-protocol/src/primary-key.ts
|
|
11109
|
-
var primaryKeySchema =
|
|
11371
|
+
var primaryKeySchema = readonly(
|
|
11372
|
+
valita_exports.tuple([valita_exports.string()]).concat(valita_exports.array(valita_exports.string()))
|
|
11373
|
+
);
|
|
11110
11374
|
var primaryKeyValueSchema = valita_exports.union(
|
|
11111
11375
|
valita_exports.string(),
|
|
11112
11376
|
valita_exports.number(),
|
|
@@ -11116,35 +11380,38 @@ var primaryKeyValueRecordSchema = readonlyRecord(
|
|
|
11116
11380
|
primaryKeyValueSchema
|
|
11117
11381
|
);
|
|
11118
11382
|
|
|
11119
|
-
// ../zero-protocol/src/
|
|
11383
|
+
// ../zero-protocol/src/row-patch.ts
|
|
11120
11384
|
var putOpSchema3 = valita_exports.object({
|
|
11121
11385
|
op: valita_exports.literal("put"),
|
|
11122
|
-
|
|
11123
|
-
|
|
11124
|
-
value: jsonObjectSchema
|
|
11386
|
+
tableName: valita_exports.string(),
|
|
11387
|
+
value: rowSchema
|
|
11125
11388
|
});
|
|
11126
11389
|
var updateOpSchema = valita_exports.object({
|
|
11127
11390
|
op: valita_exports.literal("update"),
|
|
11128
|
-
|
|
11129
|
-
|
|
11391
|
+
tableName: valita_exports.string(),
|
|
11392
|
+
id: primaryKeyValueRecordSchema,
|
|
11130
11393
|
merge: jsonObjectSchema.optional(),
|
|
11131
11394
|
constrain: valita_exports.array(valita_exports.string()).optional()
|
|
11132
11395
|
});
|
|
11133
11396
|
var delOpSchema3 = valita_exports.object({
|
|
11134
11397
|
op: valita_exports.literal("del"),
|
|
11135
|
-
|
|
11136
|
-
|
|
11398
|
+
tableName: valita_exports.string(),
|
|
11399
|
+
id: primaryKeyValueRecordSchema
|
|
11137
11400
|
});
|
|
11138
11401
|
var clearOpSchema3 = valita_exports.object({
|
|
11139
11402
|
op: valita_exports.literal("clear")
|
|
11140
11403
|
});
|
|
11141
|
-
var
|
|
11404
|
+
var rowPatchOpSchema = valita_exports.union(
|
|
11142
11405
|
putOpSchema3,
|
|
11143
11406
|
updateOpSchema,
|
|
11144
11407
|
delOpSchema3,
|
|
11145
11408
|
clearOpSchema3
|
|
11146
11409
|
);
|
|
11147
|
-
var
|
|
11410
|
+
var rowsPatchSchema = valita_exports.array(rowPatchOpSchema);
|
|
11411
|
+
|
|
11412
|
+
// ../zero-protocol/src/version.ts
|
|
11413
|
+
var versionSchema = valita_exports.string();
|
|
11414
|
+
var nullableVersionSchema = valita_exports.union(versionSchema, valita_exports.null());
|
|
11148
11415
|
|
|
11149
11416
|
// ../zero-protocol/src/poke.ts
|
|
11150
11417
|
var pokeStartBodySchema = valita_exports.object({
|
|
@@ -11170,13 +11437,16 @@ var pokePartBodySchema = valita_exports.object({
|
|
|
11170
11437
|
// Patches to the desired query sets by client id.
|
|
11171
11438
|
desiredQueriesPatches: valita_exports.record(queriesPatchSchema).optional(),
|
|
11172
11439
|
// Patches to the set of queries for which entities are sync'd in
|
|
11173
|
-
//
|
|
11440
|
+
// rowsPatch.
|
|
11174
11441
|
gotQueriesPatch: queriesPatchSchema.optional(),
|
|
11175
|
-
// Patches to the
|
|
11176
|
-
|
|
11442
|
+
// Patches to the rows set.
|
|
11443
|
+
rowsPatch: rowsPatchSchema.optional()
|
|
11177
11444
|
});
|
|
11178
11445
|
var pokeEndBodySchema = valita_exports.object({
|
|
11179
|
-
pokeID: valita_exports.string()
|
|
11446
|
+
pokeID: valita_exports.string(),
|
|
11447
|
+
// If `true`, the poke with id `pokeID` should be discarded without
|
|
11448
|
+
// applying it.
|
|
11449
|
+
cancel: valita_exports.boolean().optional()
|
|
11180
11450
|
});
|
|
11181
11451
|
var pokeStartMessageSchema = valita_exports.tuple([
|
|
11182
11452
|
valita_exports.literal("pokeStart"),
|
|
@@ -11218,9 +11488,16 @@ var pullResponseMessageSchema = valita_exports.tuple([
|
|
|
11218
11488
|
pullResponseBodySchema
|
|
11219
11489
|
]);
|
|
11220
11490
|
|
|
11491
|
+
// ../zero-protocol/src/warm.ts
|
|
11492
|
+
var warmBodySchema = valita_exports.object({
|
|
11493
|
+
payload: valita_exports.string()
|
|
11494
|
+
});
|
|
11495
|
+
var warmMessageSchema = valita_exports.tuple([valita_exports.literal("warm"), warmBodySchema]);
|
|
11496
|
+
|
|
11221
11497
|
// ../zero-protocol/src/down.ts
|
|
11222
11498
|
var downstreamSchema = valita_exports.union(
|
|
11223
11499
|
connectedMessageSchema,
|
|
11500
|
+
warmMessageSchema,
|
|
11224
11501
|
errorMessageSchema,
|
|
11225
11502
|
pongMessageSchema,
|
|
11226
11503
|
pokeStartMessageSchema,
|
|
@@ -11237,26 +11514,29 @@ var pingMessageSchema = valita_exports.tuple([valita_exports.literal("ping"), pi
|
|
|
11237
11514
|
var CRUD_MUTATION_NAME = "_zero_crud";
|
|
11238
11515
|
var createOpSchema = valita_exports.object({
|
|
11239
11516
|
op: valita_exports.literal("create"),
|
|
11240
|
-
|
|
11241
|
-
|
|
11242
|
-
value:
|
|
11517
|
+
tableName: valita_exports.string(),
|
|
11518
|
+
primaryKey: primaryKeySchema,
|
|
11519
|
+
value: rowSchema
|
|
11243
11520
|
});
|
|
11244
11521
|
var setOpSchema = valita_exports.object({
|
|
11245
11522
|
op: valita_exports.literal("set"),
|
|
11246
|
-
|
|
11247
|
-
|
|
11248
|
-
value:
|
|
11523
|
+
tableName: valita_exports.string(),
|
|
11524
|
+
primaryKey: primaryKeySchema,
|
|
11525
|
+
value: rowSchema
|
|
11249
11526
|
});
|
|
11250
11527
|
var updateOpSchema2 = valita_exports.object({
|
|
11251
11528
|
op: valita_exports.literal("update"),
|
|
11252
|
-
|
|
11253
|
-
|
|
11254
|
-
|
|
11529
|
+
tableName: valita_exports.string(),
|
|
11530
|
+
primaryKey: primaryKeySchema,
|
|
11531
|
+
// Partial value with at least the primary key fields
|
|
11532
|
+
value: rowSchema
|
|
11255
11533
|
});
|
|
11256
11534
|
var deleteOpSchema = valita_exports.object({
|
|
11257
11535
|
op: valita_exports.literal("delete"),
|
|
11258
|
-
|
|
11259
|
-
|
|
11536
|
+
tableName: valita_exports.string(),
|
|
11537
|
+
primaryKey: primaryKeySchema,
|
|
11538
|
+
// Partial value representing the primary key
|
|
11539
|
+
value: primaryKeyValueRecordSchema
|
|
11260
11540
|
});
|
|
11261
11541
|
var crudOpSchema = valita_exports.union(
|
|
11262
11542
|
createOpSchema,
|
|
@@ -13478,21 +13758,12 @@ function desiredQueriesPrefixForClient(clientID) {
|
|
|
13478
13758
|
function toGotQueriesKey(hash2) {
|
|
13479
13759
|
return GOT_QUERIES_KEY_PREFIX + hash2;
|
|
13480
13760
|
}
|
|
13481
|
-
function
|
|
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) {
|
|
13761
|
+
function toPrimaryKeyString(tableName, primaryKey, value) {
|
|
13490
13762
|
if (primaryKey.length === 1) {
|
|
13491
|
-
return ENTITIES_KEY_PREFIX + tableName + "/" +
|
|
13763
|
+
return ENTITIES_KEY_PREFIX + tableName + "/" + parse(value[primaryKey[0]], primaryKeyValueSchema);
|
|
13492
13764
|
}
|
|
13493
|
-
const
|
|
13494
|
-
const
|
|
13495
|
-
const str = JSON.stringify(arr);
|
|
13765
|
+
const values = primaryKey.map((k) => parse(value[k], primaryKeyValueSchema));
|
|
13766
|
+
const str = JSON.stringify(values);
|
|
13496
13767
|
const idSegment = h64WithReverse(str);
|
|
13497
13768
|
return ENTITIES_KEY_PREFIX + tableName + "/" + idSegment;
|
|
13498
13769
|
}
|
|
@@ -13583,15 +13854,6 @@ var ZeroContext = class {
|
|
|
13583
13854
|
}
|
|
13584
13855
|
};
|
|
13585
13856
|
|
|
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
|
-
|
|
13595
13857
|
// ../zero-client/src/client/crud.ts
|
|
13596
13858
|
function makeCRUDMutate(schema, repMutate) {
|
|
13597
13859
|
const { [CRUD_MUTATION_NAME]: zeroCRUD } = repMutate;
|
|
@@ -13614,9 +13876,9 @@ function makeCRUDMutate(schema, repMutate) {
|
|
|
13614
13876
|
inBatch = false;
|
|
13615
13877
|
}
|
|
13616
13878
|
};
|
|
13617
|
-
const assertNotInBatch = (
|
|
13879
|
+
const assertNotInBatch = (tableName, op) => {
|
|
13618
13880
|
if (inBatch) {
|
|
13619
|
-
throw new Error(`Cannot call mutate.${
|
|
13881
|
+
throw new Error(`Cannot call mutate.${tableName}.${op} inside a batch`);
|
|
13620
13882
|
}
|
|
13621
13883
|
};
|
|
13622
13884
|
for (const [name, tableSchema] of Object.entries(schema.tables)) {
|
|
@@ -13629,44 +13891,45 @@ function makeCRUDMutate(schema, repMutate) {
|
|
|
13629
13891
|
}
|
|
13630
13892
|
return mutate;
|
|
13631
13893
|
}
|
|
13632
|
-
function makeEntityCRUDMutate(
|
|
13894
|
+
function makeEntityCRUDMutate(tableName, primaryKey, zeroCRUD, assertNotInBatch) {
|
|
13633
13895
|
return {
|
|
13634
13896
|
create: (value) => {
|
|
13635
|
-
assertNotInBatch(
|
|
13897
|
+
assertNotInBatch(tableName, "create");
|
|
13636
13898
|
const op = {
|
|
13637
13899
|
op: "create",
|
|
13638
|
-
|
|
13639
|
-
|
|
13900
|
+
tableName,
|
|
13901
|
+
primaryKey,
|
|
13640
13902
|
value
|
|
13641
13903
|
};
|
|
13642
13904
|
return zeroCRUD({ ops: [op] });
|
|
13643
13905
|
},
|
|
13644
13906
|
set: (value) => {
|
|
13645
|
-
assertNotInBatch(
|
|
13907
|
+
assertNotInBatch(tableName, "set");
|
|
13646
13908
|
const op = {
|
|
13647
13909
|
op: "set",
|
|
13648
|
-
|
|
13649
|
-
|
|
13910
|
+
tableName,
|
|
13911
|
+
primaryKey,
|
|
13650
13912
|
value
|
|
13651
13913
|
};
|
|
13652
13914
|
return zeroCRUD({ ops: [op] });
|
|
13653
13915
|
},
|
|
13654
13916
|
update: (value) => {
|
|
13655
|
-
assertNotInBatch(
|
|
13917
|
+
assertNotInBatch(tableName, "update");
|
|
13656
13918
|
const op = {
|
|
13657
13919
|
op: "update",
|
|
13658
|
-
|
|
13659
|
-
|
|
13660
|
-
|
|
13920
|
+
tableName,
|
|
13921
|
+
primaryKey,
|
|
13922
|
+
value
|
|
13661
13923
|
};
|
|
13662
13924
|
return zeroCRUD({ ops: [op] });
|
|
13663
13925
|
},
|
|
13664
13926
|
delete: (id) => {
|
|
13665
|
-
assertNotInBatch(
|
|
13927
|
+
assertNotInBatch(tableName, "delete");
|
|
13666
13928
|
const op = {
|
|
13667
13929
|
op: "delete",
|
|
13668
|
-
|
|
13669
|
-
|
|
13930
|
+
tableName,
|
|
13931
|
+
primaryKey,
|
|
13932
|
+
value: id
|
|
13670
13933
|
};
|
|
13671
13934
|
return zeroCRUD({ ops: [op] });
|
|
13672
13935
|
}
|
|
@@ -13678,8 +13941,8 @@ function makeBatchCRUDMutate(tableName, schema, ops) {
|
|
|
13678
13941
|
create: (value) => {
|
|
13679
13942
|
const op = {
|
|
13680
13943
|
op: "create",
|
|
13681
|
-
|
|
13682
|
-
|
|
13944
|
+
tableName,
|
|
13945
|
+
primaryKey,
|
|
13683
13946
|
value
|
|
13684
13947
|
};
|
|
13685
13948
|
ops.push(op);
|
|
@@ -13688,8 +13951,8 @@ function makeBatchCRUDMutate(tableName, schema, ops) {
|
|
|
13688
13951
|
set: (value) => {
|
|
13689
13952
|
const op = {
|
|
13690
13953
|
op: "set",
|
|
13691
|
-
|
|
13692
|
-
|
|
13954
|
+
tableName,
|
|
13955
|
+
primaryKey,
|
|
13693
13956
|
value
|
|
13694
13957
|
};
|
|
13695
13958
|
ops.push(op);
|
|
@@ -13698,9 +13961,9 @@ function makeBatchCRUDMutate(tableName, schema, ops) {
|
|
|
13698
13961
|
update: (value) => {
|
|
13699
13962
|
const op = {
|
|
13700
13963
|
op: "update",
|
|
13701
|
-
|
|
13702
|
-
|
|
13703
|
-
|
|
13964
|
+
tableName,
|
|
13965
|
+
primaryKey,
|
|
13966
|
+
value
|
|
13704
13967
|
};
|
|
13705
13968
|
ops.push(op);
|
|
13706
13969
|
return promiseVoid;
|
|
@@ -13708,8 +13971,9 @@ function makeBatchCRUDMutate(tableName, schema, ops) {
|
|
|
13708
13971
|
delete: (id) => {
|
|
13709
13972
|
const op = {
|
|
13710
13973
|
op: "delete",
|
|
13711
|
-
|
|
13712
|
-
|
|
13974
|
+
tableName,
|
|
13975
|
+
primaryKey,
|
|
13976
|
+
value: id
|
|
13713
13977
|
};
|
|
13714
13978
|
ops.push(op);
|
|
13715
13979
|
return promiseVoid;
|
|
@@ -13738,9 +14002,9 @@ function makeCRUDMutator(schema) {
|
|
|
13738
14002
|
}
|
|
13739
14003
|
async function createImpl(tx, arg, schema) {
|
|
13740
14004
|
const key = toPrimaryKeyString(
|
|
13741
|
-
arg.
|
|
13742
|
-
schema.tables[arg.
|
|
13743
|
-
arg.
|
|
14005
|
+
arg.tableName,
|
|
14006
|
+
schema.tables[arg.tableName].primaryKey,
|
|
14007
|
+
arg.value
|
|
13744
14008
|
);
|
|
13745
14009
|
if (!await tx.has(key)) {
|
|
13746
14010
|
await tx.set(key, arg.value);
|
|
@@ -13748,31 +14012,31 @@ async function createImpl(tx, arg, schema) {
|
|
|
13748
14012
|
}
|
|
13749
14013
|
async function setImpl(tx, arg, schema) {
|
|
13750
14014
|
const key = toPrimaryKeyString(
|
|
13751
|
-
arg.
|
|
13752
|
-
schema.tables[arg.
|
|
13753
|
-
arg.
|
|
14015
|
+
arg.tableName,
|
|
14016
|
+
schema.tables[arg.tableName].primaryKey,
|
|
14017
|
+
arg.value
|
|
13754
14018
|
);
|
|
13755
14019
|
await tx.set(key, arg.value);
|
|
13756
14020
|
}
|
|
13757
14021
|
async function updateImpl(tx, arg, schema) {
|
|
13758
14022
|
const key = toPrimaryKeyString(
|
|
13759
|
-
arg.
|
|
13760
|
-
schema.tables[arg.
|
|
13761
|
-
arg.
|
|
14023
|
+
arg.tableName,
|
|
14024
|
+
schema.tables[arg.tableName].primaryKey,
|
|
14025
|
+
arg.value
|
|
13762
14026
|
);
|
|
13763
14027
|
const prev = await tx.get(key);
|
|
13764
14028
|
if (prev === void 0) {
|
|
13765
14029
|
return;
|
|
13766
14030
|
}
|
|
13767
|
-
const update = arg.
|
|
14031
|
+
const update = arg.value;
|
|
13768
14032
|
const next = { ...prev, ...update };
|
|
13769
14033
|
await tx.set(key, next);
|
|
13770
14034
|
}
|
|
13771
14035
|
async function deleteImpl(tx, arg, schema) {
|
|
13772
14036
|
const key = toPrimaryKeyString(
|
|
13773
|
-
arg.
|
|
13774
|
-
schema.tables[arg.
|
|
13775
|
-
arg.
|
|
14037
|
+
arg.tableName,
|
|
14038
|
+
schema.tables[arg.tableName].primaryKey,
|
|
14039
|
+
arg.value
|
|
13776
14040
|
);
|
|
13777
14041
|
await tx.del(key);
|
|
13778
14042
|
}
|
|
@@ -14308,58 +14572,28 @@ var State = class {
|
|
|
14308
14572
|
}
|
|
14309
14573
|
};
|
|
14310
14574
|
|
|
14311
|
-
// ../
|
|
14312
|
-
|
|
14313
|
-
|
|
14314
|
-
|
|
14315
|
-
schema: ast.schema,
|
|
14316
|
-
table: ast.table,
|
|
14317
|
-
alias: ast.alias,
|
|
14318
|
-
where: ast.where ? sortedWhere(ast.where) : void 0,
|
|
14319
|
-
related: ast.related ? sortedRelated(
|
|
14320
|
-
ast.related.map(
|
|
14321
|
-
(r) => ({
|
|
14322
|
-
correlation: {
|
|
14323
|
-
parentField: r.correlation.parentField,
|
|
14324
|
-
childField: r.correlation.childField,
|
|
14325
|
-
op: r.correlation.op
|
|
14326
|
-
},
|
|
14327
|
-
hidden: r.hidden,
|
|
14328
|
-
subquery: normalizeAST(r.subquery)
|
|
14329
|
-
})
|
|
14330
|
-
)
|
|
14331
|
-
) : void 0,
|
|
14332
|
-
start: ast.start,
|
|
14333
|
-
limit: ast.limit,
|
|
14334
|
-
orderBy: ast.orderBy
|
|
14335
|
-
};
|
|
14336
|
-
}
|
|
14337
|
-
function sortedWhere(where) {
|
|
14338
|
-
return [...where].sort(cmpCondition);
|
|
14339
|
-
}
|
|
14340
|
-
function sortedRelated(related) {
|
|
14341
|
-
return related.sort(cmpRelated);
|
|
14342
|
-
}
|
|
14343
|
-
function cmpCondition(a, b) {
|
|
14344
|
-
return compareUTF8MaybeNull(a.field, b.field) || compareUTF8MaybeNull(a.op, b.op) || // Comparing the same field with the same op more than once doesn't make logical
|
|
14345
|
-
// sense, but is technically possible. Assume the values are of the same type and
|
|
14346
|
-
// sort by their String forms.
|
|
14347
|
-
compareUTF8MaybeNull(String(a.value), String(b.value));
|
|
14348
|
-
}
|
|
14349
|
-
function cmpRelated(a, b) {
|
|
14350
|
-
return compareUTF84(must(a.subquery.alias), must(b.subquery.alias));
|
|
14351
|
-
}
|
|
14352
|
-
function compareUTF8MaybeNull(a, b) {
|
|
14353
|
-
if (a !== null && b !== null) {
|
|
14354
|
-
return compareUTF84(a, b);
|
|
14575
|
+
// ../zero-client/src/client/normalized-schema.ts
|
|
14576
|
+
function normalizeSchema(schema) {
|
|
14577
|
+
if (schema instanceof NormalizedSchema) {
|
|
14578
|
+
return schema;
|
|
14355
14579
|
}
|
|
14356
|
-
|
|
14357
|
-
|
|
14580
|
+
return new NormalizedSchema(schema);
|
|
14581
|
+
}
|
|
14582
|
+
var NormalizedSchema = class {
|
|
14583
|
+
version;
|
|
14584
|
+
tables;
|
|
14585
|
+
constructor(schema) {
|
|
14586
|
+
this.version = schema.version;
|
|
14587
|
+
this.tables = normalizeTables(schema.tables);
|
|
14358
14588
|
}
|
|
14359
|
-
|
|
14360
|
-
|
|
14589
|
+
};
|
|
14590
|
+
function normalizeTables(tables) {
|
|
14591
|
+
const rv = {};
|
|
14592
|
+
const tableSchemaCache = /* @__PURE__ */ new Map();
|
|
14593
|
+
for (const [name, table] of sortedEntries(tables)) {
|
|
14594
|
+
rv[name] = normalizeTableSchemaWithCache(table, name, tableSchemaCache);
|
|
14361
14595
|
}
|
|
14362
|
-
return
|
|
14596
|
+
return rv;
|
|
14363
14597
|
}
|
|
14364
14598
|
|
|
14365
14599
|
// ../zero-client/src/client/query-manager.ts
|
|
@@ -14399,21 +14633,49 @@ var QueryManager = class {
|
|
|
14399
14633
|
gotCallback(got);
|
|
14400
14634
|
}
|
|
14401
14635
|
}
|
|
14402
|
-
|
|
14636
|
+
/**
|
|
14637
|
+
* Get the queries that need to be registered with the server.
|
|
14638
|
+
*
|
|
14639
|
+
* An optional `lastPatch` can be provided. This is the last patch that was
|
|
14640
|
+
* sent to the server and may not yet have been acked. If `lastPatch` is provided,
|
|
14641
|
+
* this method will return a patch that does not include any events sent in `lastPatch`.
|
|
14642
|
+
*
|
|
14643
|
+
* This diffing of last patch and current patch is needed since we send
|
|
14644
|
+
* a set of queries to the server when we first connect inside of the `sec-protocol` as
|
|
14645
|
+
* the `initConnectionMessage`.
|
|
14646
|
+
*
|
|
14647
|
+
* While we're waiting for the `connected` response to come back from the server,
|
|
14648
|
+
* the client may have registered more queries. We need to diff the `initConnectionMessage`
|
|
14649
|
+
* queries with the current set of queries to understand what those were.
|
|
14650
|
+
*/
|
|
14651
|
+
async getQueriesPatch(tx, lastPatch) {
|
|
14403
14652
|
const existingQueryHashes = /* @__PURE__ */ new Set();
|
|
14404
14653
|
const prefix = desiredQueriesPrefixForClient(this.#clientID);
|
|
14405
14654
|
for await (const key of tx.scan({ prefix }).keys()) {
|
|
14406
14655
|
existingQueryHashes.add(key.substring(prefix.length, key.length));
|
|
14407
14656
|
}
|
|
14408
|
-
const patch =
|
|
14657
|
+
const patch = /* @__PURE__ */ new Map();
|
|
14409
14658
|
for (const hash2 of existingQueryHashes) {
|
|
14410
14659
|
if (!this.#queries.has(hash2)) {
|
|
14411
|
-
patch.
|
|
14660
|
+
patch.set(hash2, { op: "del", hash: hash2 });
|
|
14412
14661
|
}
|
|
14413
14662
|
}
|
|
14414
14663
|
for (const [hash2, { normalized }] of this.#queries) {
|
|
14415
14664
|
if (!existingQueryHashes.has(hash2)) {
|
|
14416
|
-
patch.
|
|
14665
|
+
patch.set(hash2, { op: "put", hash: hash2, ast: normalized });
|
|
14666
|
+
}
|
|
14667
|
+
}
|
|
14668
|
+
if (lastPatch) {
|
|
14669
|
+
for (const [hash2, { op }] of lastPatch) {
|
|
14670
|
+
if (op === "put" && !patch.has(hash2)) {
|
|
14671
|
+
patch.set(hash2, { op: "del", hash: hash2 });
|
|
14672
|
+
}
|
|
14673
|
+
}
|
|
14674
|
+
for (const [hash2, { op }] of patch) {
|
|
14675
|
+
const lastPatchOp = lastPatch.get(hash2);
|
|
14676
|
+
if (lastPatchOp && lastPatchOp.op === op) {
|
|
14677
|
+
patch.delete(hash2);
|
|
14678
|
+
}
|
|
14417
14679
|
}
|
|
14418
14680
|
}
|
|
14419
14681
|
return patch;
|
|
@@ -14614,6 +14876,10 @@ var PokeHandler = class {
|
|
|
14614
14876
|
);
|
|
14615
14877
|
return;
|
|
14616
14878
|
}
|
|
14879
|
+
if (pokeEnd.cancel) {
|
|
14880
|
+
this.#receivingPoke = void 0;
|
|
14881
|
+
return;
|
|
14882
|
+
}
|
|
14617
14883
|
this.#pokeBuffer.push(this.#receivingPoke);
|
|
14618
14884
|
this.#receivingPoke = void 0;
|
|
14619
14885
|
if (!this.#pokePlaybackLoopRunning) {
|
|
@@ -14733,10 +14999,10 @@ function mergePokes(pokeBuffer, schema) {
|
|
|
14733
14999
|
)
|
|
14734
15000
|
);
|
|
14735
15001
|
}
|
|
14736
|
-
if (pokePart.
|
|
15002
|
+
if (pokePart.rowsPatch) {
|
|
14737
15003
|
mergedPatch.push(
|
|
14738
|
-
...pokePart.
|
|
14739
|
-
(p) =>
|
|
15004
|
+
...pokePart.rowsPatch.map(
|
|
15005
|
+
(p) => rowsPatchOpToReplicachePatchOp(p, schema)
|
|
14740
15006
|
)
|
|
14741
15007
|
);
|
|
14742
15008
|
}
|
|
@@ -14787,7 +15053,7 @@ function queryPatchOpToReplicachePatchOp(op, toKey) {
|
|
|
14787
15053
|
};
|
|
14788
15054
|
}
|
|
14789
15055
|
}
|
|
14790
|
-
function
|
|
15056
|
+
function rowsPatchOpToReplicachePatchOp(op, schema) {
|
|
14791
15057
|
switch (op.op) {
|
|
14792
15058
|
case "clear":
|
|
14793
15059
|
return op;
|
|
@@ -14795,18 +15061,18 @@ function entitiesPatchOpToReplicachePatchOp(op, schema) {
|
|
|
14795
15061
|
return {
|
|
14796
15062
|
op: "del",
|
|
14797
15063
|
key: toPrimaryKeyString(
|
|
14798
|
-
op.
|
|
14799
|
-
schema.tables[op.
|
|
14800
|
-
op.
|
|
15064
|
+
op.tableName,
|
|
15065
|
+
schema.tables[op.tableName].primaryKey,
|
|
15066
|
+
op.id
|
|
14801
15067
|
)
|
|
14802
15068
|
};
|
|
14803
15069
|
case "put":
|
|
14804
15070
|
return {
|
|
14805
15071
|
op: "put",
|
|
14806
15072
|
key: toPrimaryKeyString(
|
|
14807
|
-
op.
|
|
14808
|
-
schema.tables[op.
|
|
14809
|
-
op.
|
|
15073
|
+
op.tableName,
|
|
15074
|
+
schema.tables[op.tableName].primaryKey,
|
|
15075
|
+
op.value
|
|
14810
15076
|
),
|
|
14811
15077
|
value: op.value
|
|
14812
15078
|
};
|
|
@@ -14814,9 +15080,9 @@ function entitiesPatchOpToReplicachePatchOp(op, schema) {
|
|
|
14814
15080
|
return {
|
|
14815
15081
|
op: "update",
|
|
14816
15082
|
key: toPrimaryKeyString(
|
|
14817
|
-
op.
|
|
14818
|
-
schema.tables[op.
|
|
14819
|
-
op.
|
|
15083
|
+
op.tableName,
|
|
15084
|
+
schema.tables[op.tableName].primaryKey,
|
|
15085
|
+
op.id
|
|
14820
15086
|
),
|
|
14821
15087
|
merge: op.merge,
|
|
14822
15088
|
constrain: op.constrain
|
|
@@ -14880,6 +15146,13 @@ var Zero = class {
|
|
|
14880
15146
|
#enableAnalytics;
|
|
14881
15147
|
#pokeHandler;
|
|
14882
15148
|
#queryManager;
|
|
15149
|
+
/**
|
|
15150
|
+
* The queries we sent when establishing a connection.
|
|
15151
|
+
* More queries could be registered while we're waiting for the 'connected' message
|
|
15152
|
+
* to come back from the server. To understand what queries we need to send
|
|
15153
|
+
* to the server, we diff the `initConnectionQueries` with the current set of desired queries.
|
|
15154
|
+
*/
|
|
15155
|
+
#initConnectionQueries = /* @__PURE__ */ new Map();
|
|
14883
15156
|
#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;
|
|
14884
15157
|
#onPong = () => void 0;
|
|
14885
15158
|
#online = false;
|
|
@@ -15030,11 +15303,12 @@ var Zero = class {
|
|
|
15030
15303
|
enableAnalytics: this.#enableAnalytics
|
|
15031
15304
|
});
|
|
15032
15305
|
const logOptions = this.#logOptions;
|
|
15306
|
+
const normalizedSchema = normalizeSchema(schema);
|
|
15033
15307
|
const replicacheMutators = {
|
|
15034
|
-
["_zero_crud"]: makeCRUDMutator(
|
|
15308
|
+
["_zero_crud"]: makeCRUDMutator(normalizedSchema)
|
|
15035
15309
|
};
|
|
15036
15310
|
const replicacheOptions = {
|
|
15037
|
-
schemaVersion:
|
|
15311
|
+
schemaVersion: normalizedSchema.version.toString(),
|
|
15038
15312
|
logLevel: logOptions.logLevel,
|
|
15039
15313
|
logSinks: [logOptions.logSink],
|
|
15040
15314
|
mutators: replicacheMutators,
|
|
@@ -15080,14 +15354,14 @@ var Zero = class {
|
|
|
15080
15354
|
reason ?? ON_CLIENT_STATE_NOT_FOUND_REASON_CLIENT
|
|
15081
15355
|
);
|
|
15082
15356
|
};
|
|
15083
|
-
this.mutate = makeCRUDMutate(
|
|
15357
|
+
this.mutate = makeCRUDMutate(normalizedSchema, rep.mutate);
|
|
15084
15358
|
this.#queryManager = new QueryManager(
|
|
15085
15359
|
rep.clientID,
|
|
15086
15360
|
(msg) => this.#sendChangeDesiredQueries(msg),
|
|
15087
15361
|
rep.experimentalWatch.bind(rep)
|
|
15088
15362
|
);
|
|
15089
15363
|
this.#zeroContext = new ZeroContext(
|
|
15090
|
-
|
|
15364
|
+
normalizedSchema.tables,
|
|
15091
15365
|
(ast, gotCallback) => this.#queryManager.add(ast, gotCallback)
|
|
15092
15366
|
);
|
|
15093
15367
|
rep.experimentalWatch(
|
|
@@ -15097,7 +15371,7 @@ var Zero = class {
|
|
|
15097
15371
|
initialValuesInFirstDiff: true
|
|
15098
15372
|
}
|
|
15099
15373
|
);
|
|
15100
|
-
this.query = this.#registerQueries(
|
|
15374
|
+
this.query = this.#registerQueries(normalizedSchema);
|
|
15101
15375
|
reportReloadReason(this.#lc);
|
|
15102
15376
|
this.#metrics = new MetricManager({
|
|
15103
15377
|
reportIntervalMs: REPORT_INTERVAL_MS,
|
|
@@ -15111,7 +15385,7 @@ var Zero = class {
|
|
|
15111
15385
|
(poke) => this.#rep.poke(poke),
|
|
15112
15386
|
() => this.#onPokeError(),
|
|
15113
15387
|
rep.clientID,
|
|
15114
|
-
|
|
15388
|
+
normalizedSchema,
|
|
15115
15389
|
this.#lc
|
|
15116
15390
|
);
|
|
15117
15391
|
this.#visibilityWatcher = getDocumentVisibilityWatcher(
|
|
@@ -15244,7 +15518,8 @@ var Zero = class {
|
|
|
15244
15518
|
return;
|
|
15245
15519
|
}
|
|
15246
15520
|
this.#messageCount++;
|
|
15247
|
-
|
|
15521
|
+
const msgType = downMessage[0];
|
|
15522
|
+
switch (msgType) {
|
|
15248
15523
|
case "connected":
|
|
15249
15524
|
return this.#handleConnectedMessage(lc, downMessage);
|
|
15250
15525
|
case "error":
|
|
@@ -15259,7 +15534,10 @@ var Zero = class {
|
|
|
15259
15534
|
return this.#handlePokeEnd(lc, downMessage);
|
|
15260
15535
|
case "pull":
|
|
15261
15536
|
return this.#handlePullResponse(lc, downMessage);
|
|
15537
|
+
case "warm":
|
|
15538
|
+
break;
|
|
15262
15539
|
default:
|
|
15540
|
+
msgType;
|
|
15263
15541
|
rejectInvalidMessage();
|
|
15264
15542
|
}
|
|
15265
15543
|
};
|
|
@@ -15365,16 +15643,19 @@ var Zero = class {
|
|
|
15365
15643
|
});
|
|
15366
15644
|
this.#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;
|
|
15367
15645
|
lc.debug?.("Resolving connect resolver");
|
|
15646
|
+
assert(this.#socket);
|
|
15368
15647
|
const queriesPatch = await this.#rep.query(
|
|
15369
|
-
(tx) => this.#queryManager.getQueriesPatch(tx)
|
|
15648
|
+
(tx) => this.#queryManager.getQueriesPatch(tx, this.#initConnectionQueries)
|
|
15370
15649
|
);
|
|
15371
|
-
|
|
15372
|
-
|
|
15373
|
-
|
|
15374
|
-
|
|
15375
|
-
|
|
15376
|
-
|
|
15377
|
-
|
|
15650
|
+
if (queriesPatch.size > 0) {
|
|
15651
|
+
send(this.#socket, [
|
|
15652
|
+
"changeDesiredQueries",
|
|
15653
|
+
{
|
|
15654
|
+
desiredQueriesPatch: [...queriesPatch.values()]
|
|
15655
|
+
}
|
|
15656
|
+
]);
|
|
15657
|
+
}
|
|
15658
|
+
this.#initConnectionQueries = /* @__PURE__ */ new Map();
|
|
15378
15659
|
this.#setConnectionState(2 /* Connected */);
|
|
15379
15660
|
this.#connectResolver.resolve();
|
|
15380
15661
|
}
|
|
@@ -15428,7 +15709,9 @@ var Zero = class {
|
|
|
15428
15709
|
clearTimeout(timeoutID);
|
|
15429
15710
|
};
|
|
15430
15711
|
this.#closeAbortController.signal.addEventListener("abort", abortHandler);
|
|
15431
|
-
const ws = createSocket(
|
|
15712
|
+
const [ws, initConnectionQueries] = await createSocket(
|
|
15713
|
+
this.#rep,
|
|
15714
|
+
this.#queryManager,
|
|
15432
15715
|
toWSString(this.#server),
|
|
15433
15716
|
this.#connectCookie,
|
|
15434
15717
|
this.clientID,
|
|
@@ -15445,6 +15728,7 @@ var Zero = class {
|
|
|
15445
15728
|
if (this.closed) {
|
|
15446
15729
|
return;
|
|
15447
15730
|
}
|
|
15731
|
+
this.#initConnectionQueries = initConnectionQueries;
|
|
15448
15732
|
ws.addEventListener("message", this.#onMessage);
|
|
15449
15733
|
ws.addEventListener("open", this.#onOpen);
|
|
15450
15734
|
ws.addEventListener("close", this.#onClose);
|
|
@@ -15908,7 +16192,7 @@ var Zero = class {
|
|
|
15908
16192
|
return rv;
|
|
15909
16193
|
}
|
|
15910
16194
|
};
|
|
15911
|
-
function createSocket(socketOrigin, baseCookie, clientID, clientGroupID, schemaVersion, userID, auth, jurisdiction, lmid, wsid, debugPerf, lc) {
|
|
16195
|
+
async function createSocket(rep, queryManager, socketOrigin, baseCookie, clientID, clientGroupID, schemaVersion, userID, auth, jurisdiction, lmid, wsid, debugPerf, lc) {
|
|
15912
16196
|
const url = new URL(socketOrigin);
|
|
15913
16197
|
url.pathname = `/api/sync/v${REFLECT_VERSION}/connect`;
|
|
15914
16198
|
const { searchParams } = url;
|
|
@@ -15928,11 +16212,18 @@ function createSocket(socketOrigin, baseCookie, clientID, clientGroupID, schemaV
|
|
|
15928
16212
|
}
|
|
15929
16213
|
lc.info?.("Connecting to", url.toString());
|
|
15930
16214
|
const WS = mustGetBrowserGlobal("WebSocket");
|
|
15931
|
-
|
|
15932
|
-
|
|
15933
|
-
|
|
15934
|
-
|
|
15935
|
-
|
|
16215
|
+
const queriesPatch = await rep.query((tx) => queryManager.getQueriesPatch(tx));
|
|
16216
|
+
return [
|
|
16217
|
+
new WS(
|
|
16218
|
+
// toString() required for RN URL polyfill.
|
|
16219
|
+
url.toString(),
|
|
16220
|
+
encodeSecProtocols(
|
|
16221
|
+
["initConnection", { desiredQueriesPatch: [...queriesPatch.values()] }],
|
|
16222
|
+
auth
|
|
16223
|
+
)
|
|
16224
|
+
),
|
|
16225
|
+
queriesPatch
|
|
16226
|
+
];
|
|
15936
16227
|
}
|
|
15937
16228
|
function addWebSocketIDFromSocketToLogContext({ url }, lc) {
|
|
15938
16229
|
const wsid = new URL(url).searchParams.get("wsid") ?? nanoid();
|