@rocicorp/zero 0.26.1 → 0.26.2-canary.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/_virtual/_@oxc-project_runtime@0.115.0/helpers/usingCtx.js +57 -0
- package/out/_virtual/_rolldown/runtime.js +27 -0
- package/out/analyze-query/src/bin-analyze.js +195 -283
- package/out/analyze-query/src/bin-analyze.js.map +1 -1
- package/out/analyze-query/src/bin-transform.js +35 -40
- package/out/analyze-query/src/bin-transform.js.map +1 -1
- package/out/analyze-query/src/explain-queries.js +11 -13
- package/out/analyze-query/src/explain-queries.js.map +1 -1
- package/out/analyze-query/src/run-ast.js +68 -103
- package/out/analyze-query/src/run-ast.js.map +1 -1
- package/out/ast-to-zql/src/ast-to-zql.js +105 -153
- package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
- package/out/ast-to-zql/src/bin.js +57 -62
- package/out/ast-to-zql/src/bin.js.map +1 -1
- package/out/ast-to-zql/src/format.js +14 -13
- package/out/ast-to-zql/src/format.js.map +1 -1
- package/out/datadog/src/datadog-log-sink.js +148 -213
- package/out/datadog/src/datadog-log-sink.js.map +1 -1
- package/out/otel/src/enabled.js +9 -11
- package/out/otel/src/enabled.js.map +1 -1
- package/out/otel/src/log-options.js +25 -35
- package/out/otel/src/log-options.js.map +1 -1
- package/out/otel/src/maybe-time.js +13 -14
- package/out/otel/src/maybe-time.js.map +1 -1
- package/out/otel/src/span.js +23 -26
- package/out/otel/src/span.js.map +1 -1
- package/out/otel/src/test-log-config.js +11 -10
- package/out/otel/src/test-log-config.js.map +1 -1
- package/out/otel/src/version.js +6 -5
- package/out/otel/src/version.js.map +1 -1
- package/out/replicache/src/async-iterable-to-array.js +8 -9
- package/out/replicache/src/async-iterable-to-array.js.map +1 -1
- package/out/replicache/src/bg-interval.js +28 -35
- package/out/replicache/src/bg-interval.js.map +1 -1
- package/out/replicache/src/btree/diff.js +6 -5
- package/out/replicache/src/btree/diff.js.map +1 -1
- package/out/replicache/src/btree/node.js +281 -372
- package/out/replicache/src/btree/node.js.map +1 -1
- package/out/replicache/src/btree/read.js +155 -256
- package/out/replicache/src/btree/read.js.map +1 -1
- package/out/replicache/src/btree/splice.js +60 -80
- package/out/replicache/src/btree/splice.js.map +1 -1
- package/out/replicache/src/btree/write.js +134 -158
- package/out/replicache/src/btree/write.js.map +1 -1
- package/out/replicache/src/call-default-fetch.js +28 -32
- package/out/replicache/src/call-default-fetch.js.map +1 -1
- package/out/replicache/src/config.js +2 -0
- package/out/replicache/src/connection-loop-delegates.js +31 -33
- package/out/replicache/src/connection-loop-delegates.js.map +1 -1
- package/out/replicache/src/connection-loop.js +174 -240
- package/out/replicache/src/connection-loop.js.map +1 -1
- package/out/replicache/src/cookies.js +22 -32
- package/out/replicache/src/cookies.js.map +1 -1
- package/out/replicache/src/dag/chunk.js +44 -50
- package/out/replicache/src/dag/chunk.js.map +1 -1
- package/out/replicache/src/dag/gc.js +94 -114
- package/out/replicache/src/dag/gc.js.map +1 -1
- package/out/replicache/src/dag/key.js +9 -11
- package/out/replicache/src/dag/key.js.map +1 -1
- package/out/replicache/src/dag/lazy-store.js +458 -510
- package/out/replicache/src/dag/lazy-store.js.map +1 -1
- package/out/replicache/src/dag/store-impl.js +147 -178
- package/out/replicache/src/dag/store-impl.js.map +1 -1
- package/out/replicache/src/dag/store.js +19 -22
- package/out/replicache/src/dag/store.js.map +1 -1
- package/out/replicache/src/dag/visitor.js +23 -21
- package/out/replicache/src/dag/visitor.js.map +1 -1
- package/out/replicache/src/db/commit.js +209 -283
- package/out/replicache/src/db/commit.js.map +1 -1
- package/out/replicache/src/db/index.js +79 -122
- package/out/replicache/src/db/index.js.map +1 -1
- package/out/replicache/src/db/read.js +44 -60
- package/out/replicache/src/db/read.js.map +1 -1
- package/out/replicache/src/db/rebase.js +22 -77
- package/out/replicache/src/db/rebase.js.map +1 -1
- package/out/replicache/src/db/write.js +162 -296
- package/out/replicache/src/db/write.js.map +1 -1
- package/out/replicache/src/deleted-clients.js +59 -87
- package/out/replicache/src/deleted-clients.js.map +1 -1
- package/out/replicache/src/error-responses.js +18 -26
- package/out/replicache/src/error-responses.js.map +1 -1
- package/out/replicache/src/expo-sqlite.js +2 -0
- package/out/replicache/src/frozen-json.js +74 -108
- package/out/replicache/src/frozen-json.js.map +1 -1
- package/out/replicache/src/get-default-puller.js +34 -46
- package/out/replicache/src/get-default-puller.js.map +1 -1
- package/out/replicache/src/get-default-pusher.js +25 -33
- package/out/replicache/src/get-default-pusher.js.map +1 -1
- package/out/replicache/src/get-kv-store-provider.js +18 -20
- package/out/replicache/src/get-kv-store-provider.js.map +1 -1
- package/out/replicache/src/hash.js +29 -29
- package/out/replicache/src/hash.js.map +1 -1
- package/out/replicache/src/http-request-info.js +9 -8
- package/out/replicache/src/http-request-info.js.map +1 -1
- package/out/replicache/src/impl.js +2 -0
- package/out/replicache/src/index-defs.js +17 -28
- package/out/replicache/src/index-defs.js.map +1 -1
- package/out/replicache/src/kv/expo-sqlite/store.js +52 -50
- package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
- package/out/replicache/src/kv/idb-store-with-mem-fallback.js +71 -68
- package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -1
- package/out/replicache/src/kv/idb-store.js +144 -168
- package/out/replicache/src/kv/idb-store.js.map +1 -1
- package/out/replicache/src/kv/mem-store.js +57 -45
- package/out/replicache/src/kv/mem-store.js.map +1 -1
- package/out/replicache/src/kv/op-sqlite/store.js +56 -62
- package/out/replicache/src/kv/op-sqlite/store.js.map +1 -1
- package/out/replicache/src/kv/op-sqlite/types.d.ts.map +1 -1
- package/out/replicache/src/kv/op-sqlite/types.js +7 -6
- package/out/replicache/src/kv/op-sqlite/types.js.map +1 -1
- package/out/replicache/src/kv/read-impl.js +26 -25
- package/out/replicache/src/kv/read-impl.js.map +1 -1
- package/out/replicache/src/kv/sqlite-store.js +194 -207
- package/out/replicache/src/kv/sqlite-store.js.map +1 -1
- package/out/replicache/src/kv/throw-if-closed.js +12 -19
- package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
- package/out/replicache/src/kv/write-impl-base.js +44 -56
- package/out/replicache/src/kv/write-impl-base.js.map +1 -1
- package/out/replicache/src/kv/write-impl.js +22 -26
- package/out/replicache/src/kv/write-impl.js.map +1 -1
- package/out/replicache/src/lazy.js +10 -11
- package/out/replicache/src/lazy.js.map +1 -1
- package/out/replicache/src/log-options.js +14 -7
- package/out/replicache/src/log-options.js.map +1 -1
- package/out/replicache/src/make-idb-name.js +14 -9
- package/out/replicache/src/make-idb-name.js.map +1 -1
- package/out/replicache/src/mutation-recovery.js +12 -0
- package/out/replicache/src/mutation-recovery.js.map +1 -0
- package/out/replicache/src/new-client-channel.js +34 -42
- package/out/replicache/src/new-client-channel.js.map +1 -1
- package/out/replicache/src/on-persist-channel.js +26 -29
- package/out/replicache/src/on-persist-channel.js.map +1 -1
- package/out/replicache/src/op-sqlite.js +2 -0
- package/out/replicache/src/patch-operation.js +27 -36
- package/out/replicache/src/patch-operation.js.map +1 -1
- package/out/replicache/src/pending-mutations.js +14 -12
- package/out/replicache/src/pending-mutations.js.map +1 -1
- package/out/replicache/src/persist/client-gc.js +36 -51
- package/out/replicache/src/persist/client-gc.js.map +1 -1
- package/out/replicache/src/persist/client-group-gc.js +29 -36
- package/out/replicache/src/persist/client-group-gc.js.map +1 -1
- package/out/replicache/src/persist/client-groups.js +80 -154
- package/out/replicache/src/persist/client-groups.js.map +1 -1
- package/out/replicache/src/persist/clients.js +212 -307
- package/out/replicache/src/persist/clients.js.map +1 -1
- package/out/replicache/src/persist/collect-idb-databases.js +109 -171
- package/out/replicache/src/persist/collect-idb-databases.js.map +1 -1
- package/out/replicache/src/persist/gather-mem-only-visitor.js +23 -24
- package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -1
- package/out/replicache/src/persist/gather-not-cached-visitor.js +35 -33
- package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -1
- package/out/replicache/src/persist/heartbeat.js +31 -41
- package/out/replicache/src/persist/heartbeat.js.map +1 -1
- package/out/replicache/src/persist/idb-databases-store-db-name.js +9 -12
- package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -1
- package/out/replicache/src/persist/idb-databases-store.js +78 -97
- package/out/replicache/src/persist/idb-databases-store.js.map +1 -1
- package/out/replicache/src/persist/make-client-id.js +13 -9
- package/out/replicache/src/persist/make-client-id.js.map +1 -1
- package/out/replicache/src/persist/persist.js +113 -174
- package/out/replicache/src/persist/persist.js.map +1 -1
- package/out/replicache/src/persist/refresh.js +94 -183
- package/out/replicache/src/persist/refresh.js.map +1 -1
- package/out/replicache/src/process-scheduler.js +122 -143
- package/out/replicache/src/process-scheduler.js.map +1 -1
- package/out/replicache/src/pusher.js +21 -26
- package/out/replicache/src/pusher.js.map +1 -1
- package/out/replicache/src/replicache-impl.js +844 -1184
- package/out/replicache/src/replicache-impl.js.map +1 -1
- package/out/replicache/src/report-error.js +9 -6
- package/out/replicache/src/report-error.js.map +1 -1
- package/out/replicache/src/request-idle.js +13 -11
- package/out/replicache/src/request-idle.js.map +1 -1
- package/out/replicache/src/scan-iterator.d.ts.map +1 -1
- package/out/replicache/src/scan-iterator.js +108 -135
- package/out/replicache/src/scan-iterator.js.map +1 -1
- package/out/replicache/src/scan-options.js +33 -39
- package/out/replicache/src/scan-options.js.map +1 -1
- package/out/replicache/src/set-interval-with-signal.js +11 -10
- package/out/replicache/src/set-interval-with-signal.js.map +1 -1
- package/out/replicache/src/sqlite.js +2 -0
- package/out/replicache/src/subscriptions.js +222 -338
- package/out/replicache/src/subscriptions.js.map +1 -1
- package/out/replicache/src/sync/diff.js +52 -65
- package/out/replicache/src/sync/diff.js.map +1 -1
- package/out/replicache/src/sync/ids.js +8 -9
- package/out/replicache/src/sync/ids.js.map +1 -1
- package/out/replicache/src/sync/patch.js +34 -45
- package/out/replicache/src/sync/patch.js.map +1 -1
- package/out/replicache/src/sync/pull-error.js +15 -15
- package/out/replicache/src/sync/pull-error.js.map +1 -1
- package/out/replicache/src/sync/pull.js +145 -283
- package/out/replicache/src/sync/pull.js.map +1 -1
- package/out/replicache/src/sync/push.js +64 -79
- package/out/replicache/src/sync/push.js.map +1 -1
- package/out/replicache/src/sync/request-id.js +23 -15
- package/out/replicache/src/sync/request-id.js.map +1 -1
- package/out/replicache/src/sync/sync-head-name.js +6 -5
- package/out/replicache/src/sync/sync-head-name.js.map +1 -1
- package/out/replicache/src/to-error.js +7 -8
- package/out/replicache/src/to-error.js.map +1 -1
- package/out/replicache/src/transaction-closed-error.js +15 -15
- package/out/replicache/src/transaction-closed-error.js.map +1 -1
- package/out/replicache/src/transactions.js +120 -140
- package/out/replicache/src/transactions.js.map +1 -1
- package/out/replicache/src/version.js +9 -5
- package/out/replicache/src/version.js.map +1 -1
- package/out/replicache/src/with-transactions.js +23 -20
- package/out/replicache/src/with-transactions.js.map +1 -1
- package/out/shared/src/abort-error.js +7 -6
- package/out/shared/src/abort-error.js.map +1 -1
- package/out/shared/src/arrays.js +35 -42
- package/out/shared/src/arrays.js.map +1 -1
- package/out/shared/src/asserts.js +21 -45
- package/out/shared/src/asserts.js.map +1 -1
- package/out/shared/src/bigint-json.js +42 -38
- package/out/shared/src/bigint-json.js.map +1 -1
- package/out/shared/src/binary-search.js +27 -18
- package/out/shared/src/binary-search.js.map +1 -1
- package/out/shared/src/broadcast-channel.js +20 -23
- package/out/shared/src/broadcast-channel.js.map +1 -1
- package/out/shared/src/browser-env.js +11 -17
- package/out/shared/src/browser-env.js.map +1 -1
- package/out/shared/src/btree-set.js +419 -481
- package/out/shared/src/btree-set.js.map +1 -1
- package/out/shared/src/cache.js +43 -36
- package/out/shared/src/cache.js.map +1 -1
- package/out/shared/src/centroid.js +24 -26
- package/out/shared/src/centroid.js.map +1 -1
- package/out/shared/src/config.js +6 -6
- package/out/shared/src/config.js.map +1 -1
- package/out/shared/src/custom-key-map.js +54 -58
- package/out/shared/src/custom-key-map.js.map +1 -1
- package/out/shared/src/custom-key-set.js +53 -51
- package/out/shared/src/custom-key-set.js.map +1 -1
- package/out/shared/src/deep-clone.js +30 -41
- package/out/shared/src/deep-clone.js.map +1 -1
- package/out/shared/src/deep-merge.js +25 -24
- package/out/shared/src/deep-merge.js.map +1 -1
- package/out/shared/src/document-visible.js +63 -70
- package/out/shared/src/document-visible.js.map +1 -1
- package/out/shared/src/dotenv.js +7 -3
- package/out/shared/src/dotenv.js.map +1 -1
- package/out/shared/src/error.js +43 -64
- package/out/shared/src/error.js.map +1 -1
- package/out/shared/src/has-own.js +6 -5
- package/out/shared/src/has-own.js.map +1 -1
- package/out/shared/src/hash.js +15 -14
- package/out/shared/src/hash.js.map +1 -1
- package/out/shared/src/iterables.js +34 -47
- package/out/shared/src/iterables.js.map +1 -1
- package/out/shared/src/json-schema.js +25 -30
- package/out/shared/src/json-schema.js.map +1 -1
- package/out/shared/src/json.js +90 -129
- package/out/shared/src/json.js.map +1 -1
- package/out/shared/src/logging-test-utils.js +9 -11
- package/out/shared/src/logging-test-utils.js.map +1 -1
- package/out/shared/src/logging.js +75 -95
- package/out/shared/src/logging.js.map +1 -1
- package/out/shared/src/must.js +7 -8
- package/out/shared/src/must.js.map +1 -1
- package/out/shared/src/navigator.js +6 -5
- package/out/shared/src/navigator.js.map +1 -1
- package/out/shared/src/object-traversal.js +23 -23
- package/out/shared/src/object-traversal.js.map +1 -1
- package/out/shared/src/objects.js +15 -18
- package/out/shared/src/objects.js.map +1 -1
- package/out/shared/src/options.js +225 -302
- package/out/shared/src/options.js.map +1 -1
- package/out/shared/src/parse-big-int.js +12 -11
- package/out/shared/src/parse-big-int.js.map +1 -1
- package/out/shared/src/promise-race.js +21 -17
- package/out/shared/src/promise-race.js.map +1 -1
- package/out/shared/src/queue.js +124 -124
- package/out/shared/src/queue.js.map +1 -1
- package/out/shared/src/rand.js +13 -7
- package/out/shared/src/rand.js.map +1 -1
- package/out/shared/src/random-uint64.js +8 -7
- package/out/shared/src/random-uint64.js.map +1 -1
- package/out/shared/src/random-values.js +8 -11
- package/out/shared/src/random-values.js.map +1 -1
- package/out/shared/src/record-proxy.js +68 -57
- package/out/shared/src/record-proxy.js.map +1 -1
- package/out/shared/src/resolved-promises.js +9 -11
- package/out/shared/src/resolved-promises.js.map +1 -1
- package/out/shared/src/sentinels.js +9 -12
- package/out/shared/src/sentinels.js.map +1 -1
- package/out/shared/src/set-utils.js +41 -63
- package/out/shared/src/set-utils.js.map +1 -1
- package/out/shared/src/size-of-value.js +55 -51
- package/out/shared/src/size-of-value.js.map +1 -1
- package/out/shared/src/sleep.js +50 -45
- package/out/shared/src/sleep.js.map +1 -1
- package/out/shared/src/string-compare.js +8 -11
- package/out/shared/src/string-compare.js.map +1 -1
- package/out/shared/src/subscribable.js +34 -33
- package/out/shared/src/subscribable.js.map +1 -1
- package/out/shared/src/tdigest-schema.js +11 -7
- package/out/shared/src/tdigest-schema.js.map +1 -1
- package/out/shared/src/tdigest.js +197 -270
- package/out/shared/src/tdigest.js.map +1 -1
- package/out/shared/src/valita.js +145 -174
- package/out/shared/src/valita.js.map +1 -1
- package/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js +238 -468
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/z2s/src/sql.d.ts +0 -1
- package/out/z2s/src/sql.d.ts.map +1 -1
- package/out/z2s/src/sql.js +149 -194
- package/out/z2s/src/sql.js.map +1 -1
- package/out/zero/package.js +194 -0
- package/out/zero/package.js.map +1 -0
- package/out/zero/src/adapters/drizzle.js +1 -6
- package/out/zero/src/adapters/pg.js +1 -6
- package/out/zero/src/adapters/postgresjs.js +1 -6
- package/out/zero/src/adapters/prisma.js +1 -5
- package/out/zero/src/analyze-query.js +1 -1
- package/out/zero/src/ast-to-zql.js +1 -1
- package/out/zero/src/bindings.js +6 -21
- package/out/zero/src/build-schema.js +5 -1
- package/out/zero/src/build-schema.js.map +1 -1
- package/out/zero/src/change-protocol/v0.js +3 -5
- package/out/zero/src/cli.js +2 -2
- package/out/zero/src/deploy-permissions.js +1 -1
- package/out/zero/src/expo-sqlite.js +2 -4
- package/out/zero/src/op-sqlite.js +2 -4
- package/out/zero/src/pg.js +2 -20
- package/out/zero/src/react-native.js +16 -12
- package/out/zero/src/react-native.js.map +1 -1
- package/out/zero/src/react.js +3 -12
- package/out/zero/src/server/runner/main.js +2 -0
- package/out/zero/src/server.js +2 -17
- package/out/zero/src/solid.js +3 -12
- package/out/zero/src/sqlite.js +2 -6
- package/out/zero/src/transform-query.js +1 -1
- package/out/zero/src/zero-cache-dev.js +124 -151
- package/out/zero/src/zero-cache-dev.js.map +1 -1
- package/out/zero/src/zero-out.js +9 -6
- package/out/zero/src/zero-out.js.map +1 -1
- package/out/zero/src/zero.js +6 -55
- package/out/zero/src/zqlite.js +2 -7
- package/out/zero-cache/src/auth/auth.js +138 -172
- package/out/zero-cache/src/auth/auth.js.map +1 -1
- package/out/zero-cache/src/auth/jwt.js +25 -33
- package/out/zero-cache/src/auth/jwt.js.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.js +54 -62
- package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
- package/out/zero-cache/src/auth/read-authorizer.js +70 -80
- package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +284 -432
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/config/network.js +31 -45
- package/out/zero-cache/src/config/network.js.map +1 -1
- package/out/zero-cache/src/config/normalize.js +81 -83
- package/out/zero-cache/src/config/normalize.js.map +1 -1
- package/out/zero-cache/src/config/server-context.js +32 -29
- package/out/zero-cache/src/config/server-context.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +753 -833
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/custom/fetch.js +183 -230
- package/out/zero-cache/src/custom/fetch.js.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.js +93 -99
- package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
- package/out/zero-cache/src/db/create.js +27 -29
- package/out/zero-cache/src/db/create.js.map +1 -1
- package/out/zero-cache/src/db/delete-lite-db.js +11 -7
- package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
- package/out/zero-cache/src/db/lite-tables.js +118 -158
- package/out/zero-cache/src/db/lite-tables.js.map +1 -1
- package/out/zero-cache/src/db/migration-lite.js +110 -178
- package/out/zero-cache/src/db/migration-lite.js.map +1 -1
- package/out/zero-cache/src/db/migration.js +82 -151
- package/out/zero-cache/src/db/migration.js.map +1 -1
- package/out/zero-cache/src/db/mode-enum.js +8 -9
- package/out/zero-cache/src/db/mode-enum.js.map +1 -1
- package/out/zero-cache/src/db/pg-copy.js +56 -54
- package/out/zero-cache/src/db/pg-copy.js.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.js +74 -110
- package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
- package/out/zero-cache/src/db/pg-type-parser.js +19 -36
- package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
- package/out/zero-cache/src/db/run-transaction.js +19 -20
- package/out/zero-cache/src/db/run-transaction.js.map +1 -1
- package/out/zero-cache/src/db/specs.js +42 -78
- package/out/zero-cache/src/db/specs.js.map +1 -1
- package/out/zero-cache/src/db/statements.js +52 -59
- package/out/zero-cache/src/db/statements.js.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.js +376 -400
- package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
- package/out/zero-cache/src/db/warmup.js +13 -24
- package/out/zero-cache/src/db/warmup.js.map +1 -1
- package/out/zero-cache/src/observability/events.js +89 -99
- package/out/zero-cache/src/observability/events.js.map +1 -1
- package/out/zero-cache/src/observability/metrics.js +30 -54
- package/out/zero-cache/src/observability/metrics.js.map +1 -1
- package/out/zero-cache/src/scripts/decommission.js +42 -47
- package/out/zero-cache/src/scripts/decommission.js.map +1 -1
- package/out/zero-cache/src/scripts/deploy-permissions.js +106 -144
- package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
- package/out/zero-cache/src/scripts/permissions.js +86 -107
- package/out/zero-cache/src/scripts/permissions.js.map +1 -1
- package/out/zero-cache/src/server/anonymous-otel-start.js +306 -440
- package/out/zero-cache/src/server/anonymous-otel-start.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 +57 -130
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/inspector-delegate.js +89 -100
- package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
- package/out/zero-cache/src/server/logging.js +18 -26
- package/out/zero-cache/src/server/logging.js.map +1 -1
- package/out/zero-cache/src/server/main.js +85 -142
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/mutator.js +16 -13
- package/out/zero-cache/src/server/mutator.js.map +1 -1
- package/out/zero-cache/src/server/otel-diag-logger.js +42 -49
- package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
- package/out/zero-cache/src/server/otel-log-sink.js +34 -44
- package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
- package/out/zero-cache/src/server/otel-start.js +43 -51
- package/out/zero-cache/src/server/otel-start.js.map +1 -1
- package/out/zero-cache/src/server/priority-op.js +27 -25
- package/out/zero-cache/src/server/priority-op.js.map +1 -1
- package/out/zero-cache/src/server/reaper.js +32 -43
- package/out/zero-cache/src/server/reaper.js.map +1 -1
- package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/server/replicator.js +41 -57
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/server/runner/main.js +7 -8
- package/out/zero-cache/src/server/runner/main.js.map +1 -1
- package/out/zero-cache/src/server/runner/run-worker.js +56 -52
- package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
- package/out/zero-cache/src/server/runner/runtime.js +26 -32
- package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.js +22 -27
- package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/syncer.js +79 -148
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/server/worker-dispatcher.js +84 -113
- package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/worker-urls.d.ts +2 -1
- package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -1
- package/out/zero-cache/src/server/worker-urls.js +14 -18
- package/out/zero-cache/src/server/worker-urls.js.map +1 -1
- package/out/zero-cache/src/server/write-worker.js +2 -0
- package/out/zero-cache/src/services/analyze.js +61 -130
- package/out/zero-cache/src/services/analyze.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/backfill-manager.js +420 -419
- package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +111 -114
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/replica-schema.js +80 -148
- package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.js +154 -216
- package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js +11 -14
- package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +168 -212
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js +672 -892
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/decommission.js +19 -23
- package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +258 -411
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +59 -65
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +218 -247
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +100 -142
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/lsn.js +17 -19
- package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +88 -98
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.js +96 -177
- package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/published.js +69 -107
- package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js +151 -212
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js +22 -53
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/control.js +24 -12
- package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/data.js +180 -290
- package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +21 -33
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/json.js +7 -18
- package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/path.js +24 -5
- package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/status.js +25 -19
- package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +24 -16
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current.js +51 -46
- package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/mod.js +2 -0
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js +165 -171
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/broadcast.js +163 -169
- package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +154 -221
- 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.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +340 -299
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js +17 -24
- package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.js +84 -103
- package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/replica-monitor.js +49 -43
- package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.js +61 -89
- package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +20 -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 +131 -109
- package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot.js +26 -28
- package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +434 -513
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js +142 -155
- package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
- package/out/zero-cache/src/services/heapz.js +18 -20
- package/out/zero-cache/src/services/heapz.js.map +1 -1
- package/out/zero-cache/src/services/http-service.js +59 -57
- package/out/zero-cache/src/services/http-service.js.map +1 -1
- package/out/zero-cache/src/services/life-cycle.js +182 -214
- package/out/zero-cache/src/services/life-cycle.js.map +1 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +102 -81
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.js +144 -205
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/error.js +10 -14
- package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +166 -264
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +372 -487
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js +483 -592
- package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +4 -2
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +118 -143
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/notifier.js +52 -28
- package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replication-status.js +105 -128
- package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts +2 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js +32 -34
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.js +101 -133
- package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.js +145 -174
- package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/constants.js +11 -5
- package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.js +56 -107
- package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/table-metadata.js +81 -66
- package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +69 -0
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +1 -0
- package/out/zero-cache/src/services/replicator/write-worker-client.js +96 -0
- package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -0
- package/out/zero-cache/src/services/replicator/write-worker.js +68 -0
- package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -0
- package/out/zero-cache/src/services/run-ast.js +79 -120
- package/out/zero-cache/src/services/run-ast.js.map +1 -1
- package/out/zero-cache/src/services/runner.js +39 -41
- package/out/zero-cache/src/services/runner.js.map +1 -1
- package/out/zero-cache/src/services/running-state.js +129 -134
- package/out/zero-cache/src/services/running-state.js.map +1 -1
- package/out/zero-cache/src/services/statz.js +139 -200
- package/out/zero-cache/src/services/statz.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +46 -49
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +257 -299
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.js +52 -82
- package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js +85 -107
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +604 -757
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +631 -739
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +60 -40
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js +95 -178
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
- 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 +571 -722
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js +246 -257
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js +59 -45
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.js +121 -189
- package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.js +138 -263
- package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +322 -335
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/tracer.js +7 -6
- package/out/zero-cache/src/services/view-syncer/tracer.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/ttl-clock.js +9 -11
- package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +1067 -1603
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/error-with-level.js +19 -25
- package/out/zero-cache/src/types/error-with-level.js.map +1 -1
- package/out/zero-cache/src/types/http.js +17 -26
- package/out/zero-cache/src/types/http.js.map +1 -1
- package/out/zero-cache/src/types/lexi-version.js +28 -42
- package/out/zero-cache/src/types/lexi-version.js.map +1 -1
- package/out/zero-cache/src/types/lite.js +101 -121
- package/out/zero-cache/src/types/lite.js.map +1 -1
- package/out/zero-cache/src/types/names.js +6 -5
- package/out/zero-cache/src/types/names.js.map +1 -1
- package/out/zero-cache/src/types/pg-data-type.d.ts +1 -0
- package/out/zero-cache/src/types/pg-data-type.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg-data-type.js +58 -73
- package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
- package/out/zero-cache/src/types/pg-types.js +12 -19
- package/out/zero-cache/src/types/pg-types.js.map +1 -1
- package/out/zero-cache/src/types/pg.js +144 -218
- package/out/zero-cache/src/types/pg.js.map +1 -1
- package/out/zero-cache/src/types/processes.js +95 -90
- package/out/zero-cache/src/types/processes.js.map +1 -1
- package/out/zero-cache/src/types/profiler.js +32 -27
- package/out/zero-cache/src/types/profiler.js.map +1 -1
- package/out/zero-cache/src/types/row-key.js +42 -30
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/types/shards.js +36 -45
- package/out/zero-cache/src/types/shards.js.map +1 -1
- package/out/zero-cache/src/types/sql.js +20 -9
- package/out/zero-cache/src/types/sql.js.map +1 -1
- package/out/zero-cache/src/types/state-version.js +17 -23
- package/out/zero-cache/src/types/state-version.js.map +1 -1
- package/out/zero-cache/src/types/streams.js +234 -270
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-cache/src/types/strings.js +10 -13
- package/out/zero-cache/src/types/strings.js.map +1 -1
- package/out/zero-cache/src/types/subscription.js +266 -226
- package/out/zero-cache/src/types/subscription.js.map +1 -1
- package/out/zero-cache/src/types/url-params.js +30 -39
- package/out/zero-cache/src/types/url-params.js.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.js +62 -75
- package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
- package/out/zero-cache/src/types/ws.js +43 -53
- package/out/zero-cache/src/types/ws.js.map +1 -1
- package/out/zero-cache/src/workers/connect-params.js +42 -43
- package/out/zero-cache/src/workers/connect-params.js.map +1 -1
- package/out/zero-cache/src/workers/connection.js +213 -282
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/mutator.js +22 -21
- package/out/zero-cache/src/workers/mutator.js.map +1 -1
- package/out/zero-cache/src/workers/replicator.d.ts +7 -0
- package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/workers/replicator.js +92 -97
- package/out/zero-cache/src/workers/replicator.js.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js +121 -203
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +147 -201
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/active-clients-manager.js +178 -187
- package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
- package/out/zero-client/src/client/bindings.js +11 -0
- package/out/zero-client/src/client/client-error-kind-enum.js +18 -29
- package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -1
- package/out/zero-client/src/client/connection-manager.js +291 -346
- package/out/zero-client/src/client/connection-manager.js.map +1 -1
- package/out/zero-client/src/client/connection-status-enum.js +20 -15
- package/out/zero-client/src/client/connection-status-enum.js.map +1 -1
- package/out/zero-client/src/client/connection.js +92 -110
- package/out/zero-client/src/client/connection.js.map +1 -1
- package/out/zero-client/src/client/context.js +84 -100
- package/out/zero-client/src/client/context.js.map +1 -1
- package/out/zero-client/src/client/crud-impl.js +56 -88
- package/out/zero-client/src/client/crud-impl.js.map +1 -1
- package/out/zero-client/src/client/crud.js +127 -129
- package/out/zero-client/src/client/crud.js.map +1 -1
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.js +50 -74
- package/out/zero-client/src/client/custom.js.map +1 -1
- package/out/zero-client/src/client/delete-clients-manager.js +72 -93
- package/out/zero-client/src/client/delete-clients-manager.js.map +1 -1
- package/out/zero-client/src/client/enable-analytics.js +8 -16
- package/out/zero-client/src/client/enable-analytics.js.map +1 -1
- package/out/zero-client/src/client/error.js +118 -133
- package/out/zero-client/src/client/error.js.map +1 -1
- package/out/zero-client/src/client/http-string.js +7 -7
- package/out/zero-client/src/client/http-string.js.map +1 -1
- package/out/zero-client/src/client/inspector/client-group.js +21 -26
- package/out/zero-client/src/client/inspector/client-group.js.map +1 -1
- package/out/zero-client/src/client/inspector/client.js +23 -26
- package/out/zero-client/src/client/inspector/client.js.map +1 -1
- package/out/zero-client/src/client/inspector/html-dialog-prompt.js +72 -73
- package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -1
- package/out/zero-client/src/client/inspector/inspector.js +46 -51
- package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.js +132 -192
- package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
- package/out/zero-client/src/client/inspector/query.js +72 -77
- package/out/zero-client/src/client/inspector/query.js.map +1 -1
- package/out/zero-client/src/client/ivm-branch.js +118 -145
- package/out/zero-client/src/client/ivm-branch.js.map +1 -1
- package/out/zero-client/src/client/keys.js +15 -31
- package/out/zero-client/src/client/keys.js.map +1 -1
- package/out/zero-client/src/client/log-options.js +43 -57
- package/out/zero-client/src/client/log-options.js.map +1 -1
- package/out/zero-client/src/client/make-mutate-property.js +46 -29
- package/out/zero-client/src/client/make-mutate-property.js.map +1 -1
- package/out/zero-client/src/client/make-replicache-mutators.js +80 -96
- package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
- package/out/zero-client/src/client/metric-name-enum.js +11 -15
- package/out/zero-client/src/client/metric-name-enum.js.map +1 -1
- package/out/zero-client/src/client/metrics.js +210 -237
- package/out/zero-client/src/client/metrics.js.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.js +264 -354
- package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
- package/out/zero-client/src/client/mutator-proxy.js +122 -151
- package/out/zero-client/src/client/mutator-proxy.js.map +1 -1
- package/out/zero-client/src/client/options.js +7 -10
- package/out/zero-client/src/client/options.js.map +1 -1
- package/out/zero-client/src/client/query-manager.js +305 -373
- package/out/zero-client/src/client/query-manager.js.map +1 -1
- package/out/zero-client/src/client/reload-error-handler.js +80 -101
- package/out/zero-client/src/client/reload-error-handler.js.map +1 -1
- package/out/zero-client/src/client/server-option.js +30 -59
- package/out/zero-client/src/client/server-option.js.map +1 -1
- package/out/zero-client/src/client/update-needed-reason-type-enum.js +27 -9
- package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -1
- package/out/zero-client/src/client/version.js +9 -5
- package/out/zero-client/src/client/version.js.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.js +205 -293
- package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
- package/out/zero-client/src/client/zero-rep.js +61 -68
- package/out/zero-client/src/client/zero-rep.js.map +1 -1
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +1367 -1834
- package/out/zero-client/src/client/zero.js.map +1 -1
- package/out/zero-client/src/mod.js +21 -0
- package/out/zero-client/src/util/nanoid.js +13 -18
- package/out/zero-client/src/util/nanoid.js.map +1 -1
- package/out/zero-client/src/util/socket.js +6 -5
- package/out/zero-client/src/util/socket.js.map +1 -1
- package/out/zero-pg/src/mod.js +10 -0
- package/out/zero-protocol/src/analyze-query-result.js +108 -148
- package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
- package/out/zero-protocol/src/application-error.js +36 -34
- package/out/zero-protocol/src/application-error.js.map +1 -1
- package/out/zero-protocol/src/ast.js +236 -309
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero-protocol/src/change-desired-queries.js +8 -13
- package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
- package/out/zero-protocol/src/client-schema.js +21 -42
- package/out/zero-protocol/src/client-schema.js.map +1 -1
- package/out/zero-protocol/src/close-connection.js +20 -12
- package/out/zero-protocol/src/close-connection.js.map +1 -1
- package/out/zero-protocol/src/connect.js +37 -52
- package/out/zero-protocol/src/connect.js.map +1 -1
- package/out/zero-protocol/src/custom-queries.js +34 -65
- package/out/zero-protocol/src/custom-queries.js.map +1 -1
- package/out/zero-protocol/src/data.js +6 -9
- package/out/zero-protocol/src/data.js.map +1 -1
- package/out/zero-protocol/src/delete-clients.js +11 -17
- package/out/zero-protocol/src/delete-clients.js.map +1 -1
- package/out/zero-protocol/src/down.js +11 -23
- package/out/zero-protocol/src/down.js.map +1 -1
- package/out/zero-protocol/src/error-kind-enum.js +24 -41
- package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
- package/out/zero-protocol/src/error-origin-enum.js +8 -9
- package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
- package/out/zero-protocol/src/error-reason-enum.js +12 -17
- package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
- package/out/zero-protocol/src/error.js +76 -152
- package/out/zero-protocol/src/error.js.map +1 -1
- package/out/zero-protocol/src/inspect-down.js +51 -74
- package/out/zero-protocol/src/inspect-down.js.map +1 -1
- package/out/zero-protocol/src/inspect-up.js +28 -46
- package/out/zero-protocol/src/inspect-up.js.map +1 -1
- package/out/zero-protocol/src/mutation-id.js +9 -9
- package/out/zero-protocol/src/mutation-id.js.map +1 -1
- package/out/zero-protocol/src/mutation-type-enum.js +7 -7
- package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
- package/out/zero-protocol/src/mutations-patch.js +21 -16
- package/out/zero-protocol/src/mutations-patch.js.map +1 -1
- package/out/zero-protocol/src/ping.js +8 -9
- package/out/zero-protocol/src/ping.js.map +1 -1
- package/out/zero-protocol/src/poke.js +53 -59
- package/out/zero-protocol/src/poke.js.map +1 -1
- package/out/zero-protocol/src/pong.js +8 -9
- package/out/zero-protocol/src/pong.js.map +1 -1
- package/out/zero-protocol/src/primary-key.js +9 -19
- package/out/zero-protocol/src/primary-key.js.map +1 -1
- package/out/zero-protocol/src/protocol-version.js +5 -11
- package/out/zero-protocol/src/protocol-version.js.map +1 -1
- package/out/zero-protocol/src/pull.js +16 -28
- package/out/zero-protocol/src/pull.js.map +1 -1
- package/out/zero-protocol/src/push.js +162 -209
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/queries-patch.js +22 -30
- package/out/zero-protocol/src/queries-patch.js.map +1 -1
- package/out/zero-protocol/src/query-hash.js +14 -17
- package/out/zero-protocol/src/query-hash.js.map +1 -1
- package/out/zero-protocol/src/row-patch.js +23 -30
- package/out/zero-protocol/src/row-patch.js.map +1 -1
- package/out/zero-protocol/src/up.js +11 -22
- package/out/zero-protocol/src/up.js.map +1 -1
- package/out/zero-protocol/src/update-auth.js +8 -13
- package/out/zero-protocol/src/update-auth.js.map +1 -1
- package/out/zero-protocol/src/version.js +8 -9
- package/out/zero-protocol/src/version.js.map +1 -1
- package/out/zero-react/src/bindings.js +12 -0
- package/out/zero-react/src/mod.js +5 -0
- package/out/zero-react/src/use-connection-state.js +14 -11
- package/out/zero-react/src/use-connection-state.js.map +1 -1
- package/out/zero-react/src/use-query.js +283 -281
- package/out/zero-react/src/use-query.js.map +1 -1
- package/out/zero-react/src/use-zero-online.js +17 -11
- package/out/zero-react/src/use-zero-online.js.map +1 -1
- package/out/zero-react/src/zero-provider.js +53 -69
- package/out/zero-react/src/zero-provider.js.map +1 -1
- package/out/zero-react/src/zero.js +22 -0
- package/out/zero-schema/src/builder/relationship-builder.js +25 -21
- package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
- package/out/zero-schema/src/builder/schema-builder.js +51 -79
- package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
- package/out/zero-schema/src/builder/table-builder.js +99 -116
- package/out/zero-schema/src/builder/table-builder.js.map +1 -1
- package/out/zero-schema/src/compiled-permissions.js +21 -25
- package/out/zero-schema/src/compiled-permissions.js.map +1 -1
- package/out/zero-schema/src/name-mapper.js +31 -47
- package/out/zero-schema/src/name-mapper.js.map +1 -1
- package/out/zero-schema/src/permissions.js +94 -181
- package/out/zero-schema/src/permissions.js.map +1 -1
- package/out/zero-schema/src/schema-config.js +26 -32
- package/out/zero-schema/src/schema-config.js.map +1 -1
- package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
- package/out/zero-server/src/adapters/drizzle.js +79 -76
- package/out/zero-server/src/adapters/drizzle.js.map +1 -1
- package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
- package/out/zero-server/src/adapters/pg.js +79 -55
- package/out/zero-server/src/adapters/pg.js.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.js +66 -40
- package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
- package/out/zero-server/src/adapters/prisma.d.ts.map +1 -1
- package/out/zero-server/src/adapters/prisma.js +75 -55
- package/out/zero-server/src/adapters/prisma.js.map +1 -1
- package/out/zero-server/src/custom.d.ts.map +1 -1
- package/out/zero-server/src/custom.js +188 -265
- package/out/zero-server/src/custom.js.map +1 -1
- package/out/zero-server/src/logging.js +6 -5
- package/out/zero-server/src/logging.js.map +1 -1
- package/out/zero-server/src/mod.js +8 -0
- package/out/zero-server/src/pg-query-executor.js +14 -17
- package/out/zero-server/src/pg-query-executor.js.map +1 -1
- package/out/zero-server/src/process-mutations.js +293 -365
- package/out/zero-server/src/process-mutations.js.map +1 -1
- package/out/zero-server/src/push-processor.js +33 -49
- package/out/zero-server/src/push-processor.js.map +1 -1
- package/out/zero-server/src/queries/process-queries.js +106 -96
- package/out/zero-server/src/queries/process-queries.js.map +1 -1
- package/out/zero-server/src/schema.js +98 -144
- package/out/zero-server/src/schema.js.map +1 -1
- package/out/zero-server/src/zql-database.d.ts.map +1 -1
- package/out/zero-server/src/zql-database.js +54 -69
- package/out/zero-server/src/zql-database.js.map +1 -1
- package/out/zero-solid/src/bindings.js +12 -0
- package/out/zero-solid/src/mod.js +5 -0
- package/out/zero-solid/src/solid-view.js +135 -227
- package/out/zero-solid/src/solid-view.js.map +1 -1
- package/out/zero-solid/src/use-connection-state.js +18 -14
- package/out/zero-solid/src/use-connection-state.js.map +1 -1
- package/out/zero-solid/src/use-query.js +55 -100
- package/out/zero-solid/src/use-query.js.map +1 -1
- package/out/zero-solid/src/use-zero-online.js +18 -12
- package/out/zero-solid/src/use-zero-online.js.map +1 -1
- package/out/zero-solid/src/use-zero.js +65 -77
- package/out/zero-solid/src/use-zero.js.map +1 -1
- package/out/zero-solid/src/zero.js +22 -0
- package/out/zero-types/src/format.js +8 -7
- package/out/zero-types/src/format.js.map +1 -1
- package/out/zero-types/src/name-mapper.js +34 -47
- package/out/zero-types/src/name-mapper.js.map +1 -1
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +315 -476
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/builder/debug-delegate.js +69 -74
- package/out/zql/src/builder/debug-delegate.js.map +1 -1
- package/out/zql/src/builder/filter.js +116 -140
- package/out/zql/src/builder/filter.js.map +1 -1
- package/out/zql/src/builder/like.js +41 -46
- package/out/zql/src/builder/like.js.map +1 -1
- package/out/zql/src/error.js +10 -9
- package/out/zql/src/error.js.map +1 -1
- package/out/zql/src/ivm/array-view.js +89 -91
- package/out/zql/src/ivm/array-view.js.map +1 -1
- package/out/zql/src/ivm/constraint.js +65 -74
- package/out/zql/src/ivm/constraint.js.map +1 -1
- package/out/zql/src/ivm/data.js +61 -48
- package/out/zql/src/ivm/data.js.map +1 -1
- package/out/zql/src/ivm/exists.js +164 -213
- package/out/zql/src/ivm/exists.js.map +1 -1
- package/out/zql/src/ivm/fan-in.js +62 -59
- package/out/zql/src/ivm/fan-in.js.map +1 -1
- package/out/zql/src/ivm/fan-out.js +52 -61
- package/out/zql/src/ivm/fan-out.js.map +1 -1
- package/out/zql/src/ivm/filter-operators.js +91 -96
- package/out/zql/src/ivm/filter-operators.js.map +1 -1
- package/out/zql/src/ivm/filter-push.js +22 -26
- package/out/zql/src/ivm/filter-push.js.map +1 -1
- package/out/zql/src/ivm/filter.js +41 -35
- package/out/zql/src/ivm/filter.js.map +1 -1
- package/out/zql/src/ivm/flipped-join.js +282 -391
- package/out/zql/src/ivm/flipped-join.js.map +1 -1
- package/out/zql/src/ivm/join-utils.js +85 -115
- package/out/zql/src/ivm/join-utils.js.map +1 -1
- package/out/zql/src/ivm/join.js +162 -231
- package/out/zql/src/ivm/join.js.map +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +21 -25
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
- package/out/zql/src/ivm/memory-source.js +364 -503
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/memory-storage.js +33 -34
- package/out/zql/src/ivm/memory-storage.js.map +1 -1
- package/out/zql/src/ivm/operator.js +13 -15
- package/out/zql/src/ivm/operator.js.map +1 -1
- package/out/zql/src/ivm/push-accumulated.js +267 -270
- package/out/zql/src/ivm/push-accumulated.js.map +1 -1
- package/out/zql/src/ivm/skip.js +91 -104
- package/out/zql/src/ivm/skip.js.map +1 -1
- package/out/zql/src/ivm/stream.js +10 -10
- package/out/zql/src/ivm/stream.js.map +1 -1
- package/out/zql/src/ivm/take.js +422 -569
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/union-fan-in.js +157 -231
- package/out/zql/src/ivm/union-fan-in.js.map +1 -1
- package/out/zql/src/ivm/union-fan-out.js +38 -43
- package/out/zql/src/ivm/union-fan-out.js.map +1 -1
- package/out/zql/src/ivm/view-apply-change.js +166 -255
- package/out/zql/src/ivm/view-apply-change.js.map +1 -1
- package/out/zql/src/mutate/crud.js +35 -34
- package/out/zql/src/mutate/crud.js.map +1 -1
- package/out/zql/src/mutate/custom.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.js +7 -11
- package/out/zql/src/mutate/custom.js.map +1 -1
- package/out/zql/src/mutate/mutator-registry.js +67 -71
- package/out/zql/src/mutate/mutator-registry.js.map +1 -1
- package/out/zql/src/mutate/mutator.js +26 -25
- package/out/zql/src/mutate/mutator.js.map +1 -1
- package/out/zql/src/planner/planner-builder.js +134 -239
- package/out/zql/src/planner/planner-builder.js.map +1 -1
- package/out/zql/src/planner/planner-connection.js +222 -212
- package/out/zql/src/planner/planner-connection.js.map +1 -1
- package/out/zql/src/planner/planner-constraint.js +15 -7
- package/out/zql/src/planner/planner-constraint.js.map +1 -1
- package/out/zql/src/planner/planner-debug.js +199 -224
- package/out/zql/src/planner/planner-debug.js.map +1 -1
- package/out/zql/src/planner/planner-fan-in.js +146 -162
- package/out/zql/src/planner/planner-fan-in.js.map +1 -1
- package/out/zql/src/planner/planner-fan-out.js +62 -74
- package/out/zql/src/planner/planner-fan-out.js.map +1 -1
- package/out/zql/src/planner/planner-graph.js +302 -334
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/planner/planner-join.js +255 -240
- package/out/zql/src/planner/planner-join.js.map +1 -1
- package/out/zql/src/planner/planner-node.js +10 -6
- package/out/zql/src/planner/planner-node.js.map +1 -1
- package/out/zql/src/planner/planner-source.js +15 -22
- package/out/zql/src/planner/planner-source.js.map +1 -1
- package/out/zql/src/planner/planner-terminus.js +28 -28
- package/out/zql/src/planner/planner-terminus.js.map +1 -1
- package/out/zql/src/query/complete-ordering.js +37 -61
- package/out/zql/src/query/complete-ordering.js.map +1 -1
- package/out/zql/src/query/create-builder.js +14 -22
- package/out/zql/src/query/create-builder.js.map +1 -1
- package/out/zql/src/query/error.js +10 -12
- package/out/zql/src/query/error.js.map +1 -1
- package/out/zql/src/query/escape-like.js +6 -5
- package/out/zql/src/query/escape-like.js.map +1 -1
- package/out/zql/src/query/expression.js +138 -157
- package/out/zql/src/query/expression.js.map +1 -1
- package/out/zql/src/query/measure-push-operator.js +35 -38
- package/out/zql/src/query/measure-push-operator.js.map +1 -1
- package/out/zql/src/query/metrics-delegate.js +7 -7
- package/out/zql/src/query/metrics-delegate.js.map +1 -1
- package/out/zql/src/query/named.js +52 -51
- package/out/zql/src/query/named.js.map +1 -1
- package/out/zql/src/query/query-delegate-base.js +190 -238
- package/out/zql/src/query/query-delegate-base.js.map +1 -1
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +271 -405
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-internals.js +16 -8
- package/out/zql/src/query/query-internals.js.map +1 -1
- package/out/zql/src/query/query-registry.js +83 -98
- package/out/zql/src/query/query-registry.js.map +1 -1
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/query.js +2 -0
- package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.js +30 -55
- package/out/zql/src/query/runnable-query-impl.js.map +1 -1
- package/out/zql/src/query/static-query.js +7 -14
- package/out/zql/src/query/static-query.js.map +1 -1
- package/out/zql/src/query/ttl.js +45 -67
- package/out/zql/src/query/ttl.js.map +1 -1
- package/out/zql/src/query/validate-input.js +23 -20
- package/out/zql/src/query/validate-input.js.map +1 -1
- package/out/zqlite/src/database-storage.js +99 -103
- package/out/zqlite/src/database-storage.js.map +1 -1
- package/out/zqlite/src/db.js +206 -249
- package/out/zqlite/src/db.js.map +1 -1
- package/out/zqlite/src/explain-queries.js +11 -13
- package/out/zqlite/src/explain-queries.js.map +1 -1
- package/out/zqlite/src/internal/sql-inline.js +54 -37
- package/out/zqlite/src/internal/sql-inline.js.map +1 -1
- package/out/zqlite/src/internal/sql.js +17 -15
- package/out/zqlite/src/internal/sql.js.map +1 -1
- package/out/zqlite/src/internal/statement-cache.js +117 -92
- package/out/zqlite/src/internal/statement-cache.js.map +1 -1
- package/out/zqlite/src/mod.js +5 -0
- package/out/zqlite/src/query-builder.js +81 -172
- package/out/zqlite/src/query-builder.js.map +1 -1
- package/out/zqlite/src/query-delegate.js +45 -55
- package/out/zqlite/src/query-delegate.js.map +1 -1
- package/out/zqlite/src/resolve-scalar-subqueries.js +134 -124
- package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
- package/out/zqlite/src/sqlite-cost-model.js +92 -97
- package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
- package/out/zqlite/src/sqlite-stat-fanout.js +304 -286
- package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
- package/out/zqlite/src/table-source.js +281 -455
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +8 -7
- package/out/replicache/src/db/index-operation-enum.js +0 -7
- package/out/replicache/src/db/index-operation-enum.js.map +0 -1
- package/out/replicache/src/db/meta-type-enum.js +0 -7
- package/out/replicache/src/db/meta-type-enum.js.map +0 -1
- package/out/replicache/src/format-version-enum.js +0 -11
- package/out/replicache/src/format-version-enum.js.map +0 -1
- package/out/replicache/src/http-status-unauthorized.js +0 -5
- package/out/replicache/src/http-status-unauthorized.js.map +0 -1
- package/out/replicache/src/invoke-kind-enum.js +0 -7
- package/out/replicache/src/invoke-kind-enum.js.map +0 -1
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +0 -9
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +0 -1
- package/out/zero/package.json.js +0 -9
- package/out/zero/package.json.js.map +0 -1
- package/out/zero/src/adapters/drizzle.js.map +0 -1
- package/out/zero/src/adapters/pg.js.map +0 -1
- package/out/zero/src/adapters/postgresjs.js.map +0 -1
- package/out/zero/src/adapters/prisma.js.map +0 -1
- package/out/zero/src/analyze-query.js.map +0 -1
- package/out/zero/src/ast-to-zql.js.map +0 -1
- package/out/zero/src/bindings.js.map +0 -1
- package/out/zero/src/change-protocol/v0.js.map +0 -1
- package/out/zero/src/cli.js.map +0 -1
- package/out/zero/src/deploy-permissions.js.map +0 -1
- package/out/zero/src/expo-sqlite.js.map +0 -1
- package/out/zero/src/op-sqlite.js.map +0 -1
- package/out/zero/src/pg.js.map +0 -1
- package/out/zero/src/react.js.map +0 -1
- package/out/zero/src/server.js.map +0 -1
- package/out/zero/src/solid.js.map +0 -1
- package/out/zero/src/sqlite.js.map +0 -1
- package/out/zero/src/transform-query.js.map +0 -1
- package/out/zero/src/zero.js.map +0 -1
- package/out/zero/src/zqlite.js.map +0 -1
- package/out/zero-cache/src/db/postgres-replica-identity-enum.js +0 -11
- package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +0 -1
- package/out/zero-cache/src/db/postgres-type-class-enum.js +0 -17
- package/out/zero-cache/src/db/postgres-type-class-enum.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/error-type-enum.js +0 -9
- package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +0 -1
|
@@ -1,199 +1,190 @@
|
|
|
1
|
-
import { resolver } from "@rocicorp/resolver";
|
|
2
|
-
import { BroadcastChannel as bc } from "../../../shared/src/broadcast-channel.js";
|
|
3
1
|
import { getBrowserGlobal } from "../../../shared/src/browser-env.js";
|
|
4
|
-
|
|
2
|
+
import { bc } from "../../../shared/src/broadcast-channel.js";
|
|
3
|
+
import { resolver } from "@rocicorp/resolver";
|
|
4
|
+
//#region ../zero-client/src/client/active-clients-manager.ts
|
|
5
|
+
/**
|
|
6
|
+
* The prefix for the keys used for the locks and the broadcast channels.
|
|
7
|
+
*/
|
|
8
|
+
var keyPrefix = "zero-active";
|
|
5
9
|
function toLockName(clientGroupID, clientID) {
|
|
6
|
-
|
|
10
|
+
return `${keyPrefix}/${clientGroupID}/${clientID}`;
|
|
7
11
|
}
|
|
8
12
|
function toBroadcastChannelName(clientGroupID) {
|
|
9
|
-
|
|
13
|
+
return `${keyPrefix}/${clientGroupID}`;
|
|
10
14
|
}
|
|
11
15
|
function fromLockName(lockKey) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return {
|
|
20
|
-
clientGroupID: parts[1],
|
|
21
|
-
clientID: parts[2]
|
|
22
|
-
};
|
|
16
|
+
if (!lockKey || !lockKey.startsWith(keyPrefix)) return;
|
|
17
|
+
const parts = lockKey.slice(11).split("/");
|
|
18
|
+
if (parts.length !== 3) return;
|
|
19
|
+
return {
|
|
20
|
+
clientGroupID: parts[1],
|
|
21
|
+
clientID: parts[2]
|
|
22
|
+
};
|
|
23
23
|
}
|
|
24
24
|
function ignoreAbortError(e) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
throw e;
|
|
29
|
-
}
|
|
30
|
-
class ActiveClientsManager {
|
|
31
|
-
clientGroupID;
|
|
32
|
-
clientID;
|
|
33
|
-
#resolver = resolver();
|
|
34
|
-
#lockManager;
|
|
35
|
-
#activeClients = /* @__PURE__ */ new Set();
|
|
36
|
-
/**
|
|
37
|
-
* A callback that is called when a client is added to the client group.
|
|
38
|
-
* It receives the client ID of the added client.
|
|
39
|
-
*/
|
|
40
|
-
onAdd;
|
|
41
|
-
/**
|
|
42
|
-
* A callback that is called when a client is deleted from the client group.
|
|
43
|
-
* It receives the client ID of the deleted client.
|
|
44
|
-
*/
|
|
45
|
-
onDelete;
|
|
46
|
-
/**
|
|
47
|
-
* Creates an instance of `ActiveClientsManager` for the specified client
|
|
48
|
-
* group and client ID. It will return a promise that resolves when the
|
|
49
|
-
* instance is ready to use, which means that it has successfully acquired the
|
|
50
|
-
* exclusive lock for the client and has retrieved the list of active clients.
|
|
51
|
-
*/
|
|
52
|
-
static async create(clientGroupID, clientID, signal) {
|
|
53
|
-
const instance = new ActiveClientsManager(clientGroupID, clientID, signal);
|
|
54
|
-
await instance.#init(signal);
|
|
55
|
-
return instance;
|
|
56
|
-
}
|
|
57
|
-
constructor(clientGroupID, clientID, signal) {
|
|
58
|
-
this.clientGroupID = clientGroupID;
|
|
59
|
-
this.clientID = clientID;
|
|
60
|
-
this.#lockManager = getClientLockManager(signal);
|
|
61
|
-
this.#activeClients.add(clientID);
|
|
62
|
-
}
|
|
63
|
-
async #init(signal) {
|
|
64
|
-
const { clientGroupID, clientID } = this;
|
|
65
|
-
const name = toLockName(clientGroupID, clientID);
|
|
66
|
-
const channel = new bc(toBroadcastChannelName(clientGroupID));
|
|
67
|
-
channel.addEventListener(
|
|
68
|
-
"message",
|
|
69
|
-
(e) => {
|
|
70
|
-
const client = fromLockName(e.data);
|
|
71
|
-
if (client?.clientGroupID === this.clientGroupID) {
|
|
72
|
-
this.#addClient(client.clientID);
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
{ signal }
|
|
76
|
-
);
|
|
77
|
-
this.#lockManager.request(name, "exclusive", () => this.#resolver.promise).catch(ignoreAbortError);
|
|
78
|
-
signal.addEventListener(
|
|
79
|
-
"abort",
|
|
80
|
-
() => {
|
|
81
|
-
this.#lockManager.release(name, () => this.#resolver.resolve());
|
|
82
|
-
channel.close();
|
|
83
|
-
},
|
|
84
|
-
{ once: true }
|
|
85
|
-
);
|
|
86
|
-
for (const clientID2 of await this.#getActiveClients()) {
|
|
87
|
-
if (clientID2 !== this.clientID) {
|
|
88
|
-
this.#addClient(clientID2);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
if (!signal.aborted) {
|
|
92
|
-
channel.postMessage(name);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
get activeClients() {
|
|
96
|
-
return this.#activeClients;
|
|
97
|
-
}
|
|
98
|
-
async #getActiveClients() {
|
|
99
|
-
const activeClients = /* @__PURE__ */ new Set();
|
|
100
|
-
for await (const lockName of this.#lockManager.queryExclusive()) {
|
|
101
|
-
const client = fromLockName(lockName);
|
|
102
|
-
if (client?.clientGroupID === this.clientGroupID) {
|
|
103
|
-
activeClients.add(client.clientID);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return activeClients;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* This gets called when a new client is added to the client group.
|
|
110
|
-
*
|
|
111
|
-
* It will request a shared lock for the client, and when the exclusive lock
|
|
112
|
-
* is released, it will notify that the client has been deactivated.
|
|
113
|
-
*/
|
|
114
|
-
#addSharedLockForOtherClient(clientID) {
|
|
115
|
-
const name = toLockName(this.clientGroupID, clientID);
|
|
116
|
-
this.#lockManager.request(name, "shared", () => this.#removeClient(clientID)).catch(ignoreAbortError);
|
|
117
|
-
}
|
|
118
|
-
#addClient(clientID) {
|
|
119
|
-
if (!this.#activeClients.has(clientID)) {
|
|
120
|
-
this.#activeClients.add(clientID);
|
|
121
|
-
this.#addSharedLockForOtherClient(clientID);
|
|
122
|
-
this.onAdd?.(clientID);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
#removeClient(clientID) {
|
|
126
|
-
if (this.#activeClients.delete(clientID)) {
|
|
127
|
-
this.onDelete?.(clientID, this.clientGroupID);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
25
|
+
if (e instanceof Error && e.name === "AbortError") return;
|
|
26
|
+
throw e;
|
|
130
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* A class that lists the active clients in a client group. It uses the
|
|
30
|
+
* `navigator.locks` API to manage locks for each client. The class is designed
|
|
31
|
+
* to be used in a browser environment where the `navigator.locks` API is
|
|
32
|
+
* available.
|
|
33
|
+
*
|
|
34
|
+
* When navigator.locks is not available, it will return a set only containing
|
|
35
|
+
* the clients in the current scripting context (window, worker, etc).
|
|
36
|
+
*
|
|
37
|
+
* It uses one exclusive lock per client, identified by a combination of
|
|
38
|
+
* `clientGroupID` and `clientID`. Then the `query` method is used to get the
|
|
39
|
+
* list of all clients that hold or are waiting for locks in the same client
|
|
40
|
+
* group.
|
|
41
|
+
*
|
|
42
|
+
* It also tries to get a shared lock for each client in the group, so that it
|
|
43
|
+
* can be notified when the exclusive lock is released. This allows the class to
|
|
44
|
+
* keep track of the active clients in the group and notify when an existing
|
|
45
|
+
* client is removed.
|
|
46
|
+
*
|
|
47
|
+
* The class also uses a `BroadcastChannel` to notify other clients in the
|
|
48
|
+
* same client group when a new client is added. This allows the class to keep
|
|
49
|
+
* track of the active clients in the group and notify when a new client is
|
|
50
|
+
* added.
|
|
51
|
+
*/
|
|
52
|
+
var ActiveClientsManager = class ActiveClientsManager {
|
|
53
|
+
clientGroupID;
|
|
54
|
+
clientID;
|
|
55
|
+
#resolver = resolver();
|
|
56
|
+
#lockManager;
|
|
57
|
+
#activeClients = /* @__PURE__ */ new Set();
|
|
58
|
+
/**
|
|
59
|
+
* A callback that is called when a client is added to the client group.
|
|
60
|
+
* It receives the client ID of the added client.
|
|
61
|
+
*/
|
|
62
|
+
onAdd;
|
|
63
|
+
/**
|
|
64
|
+
* A callback that is called when a client is deleted from the client group.
|
|
65
|
+
* It receives the client ID of the deleted client.
|
|
66
|
+
*/
|
|
67
|
+
onDelete;
|
|
68
|
+
/**
|
|
69
|
+
* Creates an instance of `ActiveClientsManager` for the specified client
|
|
70
|
+
* group and client ID. It will return a promise that resolves when the
|
|
71
|
+
* instance is ready to use, which means that it has successfully acquired the
|
|
72
|
+
* exclusive lock for the client and has retrieved the list of active clients.
|
|
73
|
+
*/
|
|
74
|
+
static async create(clientGroupID, clientID, signal) {
|
|
75
|
+
const instance = new ActiveClientsManager(clientGroupID, clientID, signal);
|
|
76
|
+
await instance.#init(signal);
|
|
77
|
+
return instance;
|
|
78
|
+
}
|
|
79
|
+
constructor(clientGroupID, clientID, signal) {
|
|
80
|
+
this.clientGroupID = clientGroupID;
|
|
81
|
+
this.clientID = clientID;
|
|
82
|
+
this.#lockManager = getClientLockManager(signal);
|
|
83
|
+
this.#activeClients.add(clientID);
|
|
84
|
+
}
|
|
85
|
+
async #init(signal) {
|
|
86
|
+
const { clientGroupID, clientID } = this;
|
|
87
|
+
const name = toLockName(clientGroupID, clientID);
|
|
88
|
+
const channel = new bc(toBroadcastChannelName(clientGroupID));
|
|
89
|
+
channel.addEventListener("message", (e) => {
|
|
90
|
+
const client = fromLockName(e.data);
|
|
91
|
+
if (client?.clientGroupID === this.clientGroupID) this.#addClient(client.clientID);
|
|
92
|
+
}, { signal });
|
|
93
|
+
this.#lockManager.request(name, "exclusive", () => this.#resolver.promise).catch(ignoreAbortError);
|
|
94
|
+
signal.addEventListener("abort", () => {
|
|
95
|
+
this.#lockManager.release(name, () => this.#resolver.resolve());
|
|
96
|
+
channel.close();
|
|
97
|
+
}, { once: true });
|
|
98
|
+
for (const clientID of await this.#getActiveClients()) if (clientID !== this.clientID) this.#addClient(clientID);
|
|
99
|
+
if (!signal.aborted) channel.postMessage(name);
|
|
100
|
+
}
|
|
101
|
+
get activeClients() {
|
|
102
|
+
return this.#activeClients;
|
|
103
|
+
}
|
|
104
|
+
async #getActiveClients() {
|
|
105
|
+
const activeClients = /* @__PURE__ */ new Set();
|
|
106
|
+
for await (const lockName of this.#lockManager.queryExclusive()) {
|
|
107
|
+
const client = fromLockName(lockName);
|
|
108
|
+
if (client?.clientGroupID === this.clientGroupID) activeClients.add(client.clientID);
|
|
109
|
+
}
|
|
110
|
+
return activeClients;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* This gets called when a new client is added to the client group.
|
|
114
|
+
*
|
|
115
|
+
* It will request a shared lock for the client, and when the exclusive lock
|
|
116
|
+
* is released, it will notify that the client has been deactivated.
|
|
117
|
+
*/
|
|
118
|
+
#addSharedLockForOtherClient(clientID) {
|
|
119
|
+
const name = toLockName(this.clientGroupID, clientID);
|
|
120
|
+
this.#lockManager.request(name, "shared", () => this.#removeClient(clientID)).catch(ignoreAbortError);
|
|
121
|
+
}
|
|
122
|
+
#addClient(clientID) {
|
|
123
|
+
if (!this.#activeClients.has(clientID)) {
|
|
124
|
+
this.#activeClients.add(clientID);
|
|
125
|
+
this.#addSharedLockForOtherClient(clientID);
|
|
126
|
+
this.onAdd?.(clientID);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
#removeClient(clientID) {
|
|
130
|
+
if (this.#activeClients.delete(clientID)) this.onDelete?.(clientID, this.clientGroupID);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
131
133
|
function getClientLockManager(signal) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
return new MockClientLockManager();
|
|
134
|
+
const locks = getBrowserGlobal("navigator")?.locks;
|
|
135
|
+
if (locks) return new NativeClientLockManager(locks, signal);
|
|
136
|
+
return new MockClientLockManager();
|
|
137
137
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
for (const listener of this.#listeners) {
|
|
188
|
-
mockListeners.delete(listener);
|
|
189
|
-
}
|
|
190
|
-
fn();
|
|
191
|
-
}
|
|
192
|
-
async *queryExclusive() {
|
|
193
|
-
yield* mockLockNames;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
export {
|
|
197
|
-
ActiveClientsManager
|
|
138
|
+
var NativeClientLockManager = class {
|
|
139
|
+
#locks;
|
|
140
|
+
#signal;
|
|
141
|
+
constructor(locks, signal) {
|
|
142
|
+
this.#locks = locks;
|
|
143
|
+
this.#signal = signal;
|
|
144
|
+
}
|
|
145
|
+
async request(name, mode, fn) {
|
|
146
|
+
await this.#locks.request(name, {
|
|
147
|
+
mode,
|
|
148
|
+
signal: this.#signal
|
|
149
|
+
}, fn);
|
|
150
|
+
}
|
|
151
|
+
release(_name, fn) {
|
|
152
|
+
fn();
|
|
153
|
+
}
|
|
154
|
+
async *queryExclusive() {
|
|
155
|
+
const snapshot = await this.#locks.query();
|
|
156
|
+
for (const lock of [...snapshot.held ?? [], ...snapshot.pending ?? []]) if (lock.mode === "exclusive" && lock.name) yield lock.name;
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
var mockLockNames = /* @__PURE__ */ new Set();
|
|
160
|
+
var mockListeners = /* @__PURE__ */ new Set();
|
|
161
|
+
var MockClientLockManager = class {
|
|
162
|
+
#listeners = /* @__PURE__ */ new Set();
|
|
163
|
+
request(name, mode, fn) {
|
|
164
|
+
if (mode === "exclusive") mockLockNames.add(name);
|
|
165
|
+
else {
|
|
166
|
+
const listener = (removed) => {
|
|
167
|
+
if (removed === name) {
|
|
168
|
+
mockListeners.delete(listener);
|
|
169
|
+
return fn();
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
mockListeners.add(listener);
|
|
173
|
+
this.#listeners.add(listener);
|
|
174
|
+
}
|
|
175
|
+
return Promise.resolve();
|
|
176
|
+
}
|
|
177
|
+
release(name, fn) {
|
|
178
|
+
mockLockNames.delete(name);
|
|
179
|
+
for (const listener of mockListeners) listener(name);
|
|
180
|
+
for (const listener of this.#listeners) mockListeners.delete(listener);
|
|
181
|
+
fn();
|
|
182
|
+
}
|
|
183
|
+
async *queryExclusive() {
|
|
184
|
+
yield* mockLockNames;
|
|
185
|
+
}
|
|
198
186
|
};
|
|
199
|
-
//#
|
|
187
|
+
//#endregion
|
|
188
|
+
export { ActiveClientsManager };
|
|
189
|
+
|
|
190
|
+
//# sourceMappingURL=active-clients-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-clients-manager.js","sources":["../../../../../zero-client/src/client/active-clients-manager.ts"],"sourcesContent":["import {resolver} from '@rocicorp/resolver';\nimport type {\n ClientGroupID,\n ClientID,\n} from '../../../replicache/src/sync/ids.ts';\nimport {BroadcastChannel} from '../../../shared/src/broadcast-channel.ts';\nimport {getBrowserGlobal} from '../../../shared/src/browser-env.ts';\nimport type {MaybePromise} from '../../../shared/src/types.ts';\n\n/**\n * The prefix for the keys used for the locks and the broadcast channels.\n */\nconst keyPrefix = 'zero-active';\n\nfunction toLockName(clientGroupID: string, clientID: string): string {\n return `${keyPrefix}/${clientGroupID}/${clientID}`;\n}\n\nfunction toBroadcastChannelName(clientGroupID: string): string {\n return `${keyPrefix}/${clientGroupID}`;\n}\n\nfunction fromLockName(\n lockKey: string | undefined,\n): {clientGroupID: string; clientID: string} | undefined {\n if (!lockKey || !lockKey.startsWith(keyPrefix)) {\n return undefined;\n }\n const parts = lockKey.slice(keyPrefix.length).split('/');\n if (parts.length !== 3) {\n return undefined;\n }\n return {\n clientGroupID: parts[1],\n clientID: parts[2],\n };\n}\n\nfunction ignoreAbortError(e: unknown) {\n if (e instanceof Error && e.name === 'AbortError') {\n // Ignore the AbortError, it is expected when the signal is aborted.\n return;\n }\n throw e;\n}\n\n/**\n * A class that lists the active clients in a client group. It uses the\n * `navigator.locks` API to manage locks for each client. The class is designed\n * to be used in a browser environment where the `navigator.locks` API is\n * available.\n *\n * When navigator.locks is not available, it will return a set only containing\n * the clients in the current scripting context (window, worker, etc).\n *\n * It uses one exclusive lock per client, identified by a combination of\n * `clientGroupID` and `clientID`. Then the `query` method is used to get the\n * list of all clients that hold or are waiting for locks in the same client\n * group.\n *\n * It also tries to get a shared lock for each client in the group, so that it\n * can be notified when the exclusive lock is released. This allows the class to\n * keep track of the active clients in the group and notify when an existing\n * client is removed.\n *\n * The class also uses a `BroadcastChannel` to notify other clients in the\n * same client group when a new client is added. This allows the class to keep\n * track of the active clients in the group and notify when a new client is\n * added.\n */\nexport class ActiveClientsManager {\n readonly clientGroupID: string;\n readonly clientID: string;\n readonly #resolver = resolver<void>();\n readonly #lockManager: ClientLockManager;\n readonly #activeClients: Set<string> = new Set();\n\n /**\n * A callback that is called when a client is added to the client group.\n * It receives the client ID of the added client.\n */\n onAdd: ((clientID: string) => void) | undefined;\n\n /**\n * A callback that is called when a client is deleted from the client group.\n * It receives the client ID of the deleted client.\n */\n onDelete:\n | ((clientID: ClientID, clientGroupID: ClientGroupID) => void)\n | undefined;\n\n /**\n * Creates an instance of `ActiveClientsManager` for the specified client\n * group and client ID. It will return a promise that resolves when the\n * instance is ready to use, which means that it has successfully acquired the\n * exclusive lock for the client and has retrieved the list of active clients.\n */\n static async create(\n clientGroupID: string,\n clientID: string,\n signal: AbortSignal,\n ): Promise<ActiveClientsManager> {\n const instance = new ActiveClientsManager(clientGroupID, clientID, signal);\n await instance.#init(signal);\n return instance;\n }\n\n private constructor(\n clientGroupID: string,\n clientID: string,\n signal: AbortSignal,\n ) {\n this.clientGroupID = clientGroupID;\n this.clientID = clientID;\n this.#lockManager = getClientLockManager(signal);\n this.#activeClients.add(clientID);\n }\n\n async #init(signal: AbortSignal): Promise<void> {\n const {clientGroupID, clientID} = this;\n const name = toLockName(clientGroupID, clientID);\n\n // The BroadcastChannel is used to notify other clients in the same client\n // group when a new client is added. It listens for messages that contain\n // the lock name, which is used to identify the client. When a message is\n // received, it checks if the client belongs to the same client group and\n // adds it to the list of active clients. It also adds a shared lock for\n // the client, so that it can be notified when the exclusive lock is\n // released.\n const channel = new BroadcastChannel(toBroadcastChannelName(clientGroupID));\n channel.addEventListener(\n 'message',\n e => {\n const client = fromLockName(e.data);\n if (client?.clientGroupID === this.clientGroupID) {\n this.#addClient(client.clientID);\n }\n },\n {signal},\n );\n\n this.#lockManager\n .request(name, 'exclusive', () => this.#resolver.promise)\n .catch(ignoreAbortError);\n\n signal.addEventListener(\n 'abort',\n () => {\n this.#lockManager.release(name, () => this.#resolver.resolve());\n channel.close();\n },\n {once: true},\n );\n\n for (const clientID of await this.#getActiveClients()) {\n if (clientID !== this.clientID) {\n this.#addClient(clientID);\n }\n }\n\n if (!signal.aborted) {\n channel.postMessage(name);\n }\n }\n\n get activeClients(): ReadonlySet<string> {\n return this.#activeClients;\n }\n\n async #getActiveClients(): Promise<Set<string>> {\n const activeClients: Set<string> = new Set();\n\n for await (const lockName of this.#lockManager.queryExclusive()) {\n const client = fromLockName(lockName);\n if (client?.clientGroupID === this.clientGroupID) {\n activeClients.add(client.clientID);\n }\n }\n\n return activeClients;\n }\n\n /**\n * This gets called when a new client is added to the client group.\n *\n * It will request a shared lock for the client, and when the exclusive lock\n * is released, it will notify that the client has been deactivated.\n */\n #addSharedLockForOtherClient(clientID: string): void {\n const name = toLockName(this.clientGroupID, clientID);\n this.#lockManager\n .request(name, 'shared', () => this.#removeClient(clientID))\n .catch(ignoreAbortError);\n }\n\n #addClient(clientID: string): void {\n if (!this.#activeClients.has(clientID)) {\n this.#activeClients.add(clientID);\n this.#addSharedLockForOtherClient(clientID);\n this.onAdd?.(clientID);\n }\n }\n\n #removeClient(clientID: string): void {\n if (this.#activeClients.delete(clientID)) {\n this.onDelete?.(clientID, this.clientGroupID);\n }\n }\n}\n\nfunction getClientLockManager(signal: AbortSignal): ClientLockManager {\n const locks = getBrowserGlobal('navigator')?.locks;\n if (locks) {\n return new NativeClientLockManager(locks, signal);\n }\n return new MockClientLockManager();\n}\n\ninterface ClientLockManager {\n request(\n name: string,\n mode: 'exclusive' | 'shared',\n fn: () => MaybePromise<void>,\n ): Promise<void>;\n release(name: string, fn: () => void): void;\n queryExclusive(): AsyncIterable<string>;\n}\n\nclass NativeClientLockManager implements ClientLockManager {\n readonly #locks: LockManager;\n readonly #signal: AbortSignal;\n\n constructor(locks: LockManager, signal: AbortSignal) {\n this.#locks = locks;\n this.#signal = signal;\n }\n\n async request(\n name: string,\n mode: 'exclusive' | 'shared',\n fn: () => Promise<void>,\n ): Promise<void> {\n await this.#locks.request(name, {mode, signal: this.#signal}, fn);\n }\n\n release(_name: string, fn: () => void): void {\n fn();\n }\n\n async *queryExclusive(): AsyncIterable<string> {\n const snapshot = await this.#locks.query();\n for (const lock of [\n ...(snapshot.held ?? []),\n ...(snapshot.pending ?? []),\n ]) {\n if (lock.mode === 'exclusive' && lock.name) {\n yield lock.name;\n }\n }\n }\n}\n\nconst mockLockNames = new Set<string>();\n\nconst mockListeners: Set<(name: string) => void> = new Set();\n\nclass MockClientLockManager implements ClientLockManager {\n readonly #listeners: Set<(name: string) => void> = new Set();\n\n request(\n name: string,\n mode: 'exclusive' | 'shared',\n fn: () => void | Promise<void>,\n ): Promise<void> {\n if (mode === 'exclusive') {\n mockLockNames.add(name);\n } else {\n mode satisfies 'shared';\n\n // For the mock locks we will add a listener that will notify us when the\n // lock is deleted from the `allMockLocks` set.\n const listener = (removed: string) => {\n if (removed === name) {\n mockListeners.delete(listener);\n return fn();\n }\n };\n mockListeners.add(listener);\n this.#listeners.add(listener);\n }\n return Promise.resolve();\n }\n\n release(name: string, fn: () => void): void {\n mockLockNames.delete(name);\n for (const listener of mockListeners) {\n listener(name);\n }\n for (const listener of this.#listeners) {\n mockListeners.delete(listener);\n }\n fn();\n }\n\n async *queryExclusive(): AsyncIterable<string> {\n yield* mockLockNames;\n }\n}\n"],"names":["BroadcastChannel","clientID"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"active-clients-manager.js","names":["#resolver","#lockManager","#activeClients","#init","#addClient","#getActiveClients","#removeClient","#addSharedLockForOtherClient","#locks","#signal","#listeners"],"sources":["../../../../../zero-client/src/client/active-clients-manager.ts"],"sourcesContent":["import {resolver} from '@rocicorp/resolver';\nimport type {\n ClientGroupID,\n ClientID,\n} from '../../../replicache/src/sync/ids.ts';\nimport {BroadcastChannel} from '../../../shared/src/broadcast-channel.ts';\nimport {getBrowserGlobal} from '../../../shared/src/browser-env.ts';\nimport type {MaybePromise} from '../../../shared/src/types.ts';\n\n/**\n * The prefix for the keys used for the locks and the broadcast channels.\n */\nconst keyPrefix = 'zero-active';\n\nfunction toLockName(clientGroupID: string, clientID: string): string {\n return `${keyPrefix}/${clientGroupID}/${clientID}`;\n}\n\nfunction toBroadcastChannelName(clientGroupID: string): string {\n return `${keyPrefix}/${clientGroupID}`;\n}\n\nfunction fromLockName(\n lockKey: string | undefined,\n): {clientGroupID: string; clientID: string} | undefined {\n if (!lockKey || !lockKey.startsWith(keyPrefix)) {\n return undefined;\n }\n const parts = lockKey.slice(keyPrefix.length).split('/');\n if (parts.length !== 3) {\n return undefined;\n }\n return {\n clientGroupID: parts[1],\n clientID: parts[2],\n };\n}\n\nfunction ignoreAbortError(e: unknown) {\n if (e instanceof Error && e.name === 'AbortError') {\n // Ignore the AbortError, it is expected when the signal is aborted.\n return;\n }\n throw e;\n}\n\n/**\n * A class that lists the active clients in a client group. It uses the\n * `navigator.locks` API to manage locks for each client. The class is designed\n * to be used in a browser environment where the `navigator.locks` API is\n * available.\n *\n * When navigator.locks is not available, it will return a set only containing\n * the clients in the current scripting context (window, worker, etc).\n *\n * It uses one exclusive lock per client, identified by a combination of\n * `clientGroupID` and `clientID`. Then the `query` method is used to get the\n * list of all clients that hold or are waiting for locks in the same client\n * group.\n *\n * It also tries to get a shared lock for each client in the group, so that it\n * can be notified when the exclusive lock is released. This allows the class to\n * keep track of the active clients in the group and notify when an existing\n * client is removed.\n *\n * The class also uses a `BroadcastChannel` to notify other clients in the\n * same client group when a new client is added. This allows the class to keep\n * track of the active clients in the group and notify when a new client is\n * added.\n */\nexport class ActiveClientsManager {\n readonly clientGroupID: string;\n readonly clientID: string;\n readonly #resolver = resolver<void>();\n readonly #lockManager: ClientLockManager;\n readonly #activeClients: Set<string> = new Set();\n\n /**\n * A callback that is called when a client is added to the client group.\n * It receives the client ID of the added client.\n */\n onAdd: ((clientID: string) => void) | undefined;\n\n /**\n * A callback that is called when a client is deleted from the client group.\n * It receives the client ID of the deleted client.\n */\n onDelete:\n | ((clientID: ClientID, clientGroupID: ClientGroupID) => void)\n | undefined;\n\n /**\n * Creates an instance of `ActiveClientsManager` for the specified client\n * group and client ID. It will return a promise that resolves when the\n * instance is ready to use, which means that it has successfully acquired the\n * exclusive lock for the client and has retrieved the list of active clients.\n */\n static async create(\n clientGroupID: string,\n clientID: string,\n signal: AbortSignal,\n ): Promise<ActiveClientsManager> {\n const instance = new ActiveClientsManager(clientGroupID, clientID, signal);\n await instance.#init(signal);\n return instance;\n }\n\n private constructor(\n clientGroupID: string,\n clientID: string,\n signal: AbortSignal,\n ) {\n this.clientGroupID = clientGroupID;\n this.clientID = clientID;\n this.#lockManager = getClientLockManager(signal);\n this.#activeClients.add(clientID);\n }\n\n async #init(signal: AbortSignal): Promise<void> {\n const {clientGroupID, clientID} = this;\n const name = toLockName(clientGroupID, clientID);\n\n // The BroadcastChannel is used to notify other clients in the same client\n // group when a new client is added. It listens for messages that contain\n // the lock name, which is used to identify the client. When a message is\n // received, it checks if the client belongs to the same client group and\n // adds it to the list of active clients. It also adds a shared lock for\n // the client, so that it can be notified when the exclusive lock is\n // released.\n const channel = new BroadcastChannel(toBroadcastChannelName(clientGroupID));\n channel.addEventListener(\n 'message',\n e => {\n const client = fromLockName(e.data);\n if (client?.clientGroupID === this.clientGroupID) {\n this.#addClient(client.clientID);\n }\n },\n {signal},\n );\n\n this.#lockManager\n .request(name, 'exclusive', () => this.#resolver.promise)\n .catch(ignoreAbortError);\n\n signal.addEventListener(\n 'abort',\n () => {\n this.#lockManager.release(name, () => this.#resolver.resolve());\n channel.close();\n },\n {once: true},\n );\n\n for (const clientID of await this.#getActiveClients()) {\n if (clientID !== this.clientID) {\n this.#addClient(clientID);\n }\n }\n\n if (!signal.aborted) {\n channel.postMessage(name);\n }\n }\n\n get activeClients(): ReadonlySet<string> {\n return this.#activeClients;\n }\n\n async #getActiveClients(): Promise<Set<string>> {\n const activeClients: Set<string> = new Set();\n\n for await (const lockName of this.#lockManager.queryExclusive()) {\n const client = fromLockName(lockName);\n if (client?.clientGroupID === this.clientGroupID) {\n activeClients.add(client.clientID);\n }\n }\n\n return activeClients;\n }\n\n /**\n * This gets called when a new client is added to the client group.\n *\n * It will request a shared lock for the client, and when the exclusive lock\n * is released, it will notify that the client has been deactivated.\n */\n #addSharedLockForOtherClient(clientID: string): void {\n const name = toLockName(this.clientGroupID, clientID);\n this.#lockManager\n .request(name, 'shared', () => this.#removeClient(clientID))\n .catch(ignoreAbortError);\n }\n\n #addClient(clientID: string): void {\n if (!this.#activeClients.has(clientID)) {\n this.#activeClients.add(clientID);\n this.#addSharedLockForOtherClient(clientID);\n this.onAdd?.(clientID);\n }\n }\n\n #removeClient(clientID: string): void {\n if (this.#activeClients.delete(clientID)) {\n this.onDelete?.(clientID, this.clientGroupID);\n }\n }\n}\n\nfunction getClientLockManager(signal: AbortSignal): ClientLockManager {\n const locks = getBrowserGlobal('navigator')?.locks;\n if (locks) {\n return new NativeClientLockManager(locks, signal);\n }\n return new MockClientLockManager();\n}\n\ninterface ClientLockManager {\n request(\n name: string,\n mode: 'exclusive' | 'shared',\n fn: () => MaybePromise<void>,\n ): Promise<void>;\n release(name: string, fn: () => void): void;\n queryExclusive(): AsyncIterable<string>;\n}\n\nclass NativeClientLockManager implements ClientLockManager {\n readonly #locks: LockManager;\n readonly #signal: AbortSignal;\n\n constructor(locks: LockManager, signal: AbortSignal) {\n this.#locks = locks;\n this.#signal = signal;\n }\n\n async request(\n name: string,\n mode: 'exclusive' | 'shared',\n fn: () => Promise<void>,\n ): Promise<void> {\n await this.#locks.request(name, {mode, signal: this.#signal}, fn);\n }\n\n release(_name: string, fn: () => void): void {\n fn();\n }\n\n async *queryExclusive(): AsyncIterable<string> {\n const snapshot = await this.#locks.query();\n for (const lock of [\n ...(snapshot.held ?? []),\n ...(snapshot.pending ?? []),\n ]) {\n if (lock.mode === 'exclusive' && lock.name) {\n yield lock.name;\n }\n }\n }\n}\n\nconst mockLockNames = new Set<string>();\n\nconst mockListeners: Set<(name: string) => void> = new Set();\n\nclass MockClientLockManager implements ClientLockManager {\n readonly #listeners: Set<(name: string) => void> = new Set();\n\n request(\n name: string,\n mode: 'exclusive' | 'shared',\n fn: () => void | Promise<void>,\n ): Promise<void> {\n if (mode === 'exclusive') {\n mockLockNames.add(name);\n } else {\n mode satisfies 'shared';\n\n // For the mock locks we will add a listener that will notify us when the\n // lock is deleted from the `allMockLocks` set.\n const listener = (removed: string) => {\n if (removed === name) {\n mockListeners.delete(listener);\n return fn();\n }\n };\n mockListeners.add(listener);\n this.#listeners.add(listener);\n }\n return Promise.resolve();\n }\n\n release(name: string, fn: () => void): void {\n mockLockNames.delete(name);\n for (const listener of mockListeners) {\n listener(name);\n }\n for (const listener of this.#listeners) {\n mockListeners.delete(listener);\n }\n fn();\n }\n\n async *queryExclusive(): AsyncIterable<string> {\n yield* mockLockNames;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "../../../shared/src/asserts.js";
|
|
2
|
+
import "../../../shared/src/must.js";
|
|
3
|
+
import "../../../zql/src/query/query-internals.js";
|
|
4
|
+
import "../../../zql/src/query/query-impl.js";
|
|
5
|
+
import "../../../zql/src/query/query-registry.js";
|
|
6
|
+
import "../../../zql/src/ivm/operator.js";
|
|
7
|
+
import "../../../zql/src/ivm/stream.js";
|
|
8
|
+
import "../../../zql/src/ivm/view-apply-change.js";
|
|
9
|
+
import "../../../zql/src/query/ttl.js";
|
|
10
|
+
import "../../../shared/src/deep-clone.js";
|
|
11
|
+
export {};
|
|
@@ -1,29 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
Hidden,
|
|
20
|
-
Internal,
|
|
21
|
-
InvalidMessage,
|
|
22
|
-
NoSocketOrigin,
|
|
23
|
-
Offline,
|
|
24
|
-
PingTimeout,
|
|
25
|
-
PullTimeout,
|
|
26
|
-
UnexpectedBaseCookie,
|
|
27
|
-
UserDisconnect
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=client-error-kind-enum.js.map
|
|
1
|
+
//#region ../zero-client/src/client/client-error-kind-enum.ts
|
|
2
|
+
var AbruptClose = "AbruptClose";
|
|
3
|
+
var CleanClose = "CleanClose";
|
|
4
|
+
var ClientClosed = "ClientClosed";
|
|
5
|
+
var ConnectTimeout = "ConnectTimeout";
|
|
6
|
+
var Hidden = "Hidden";
|
|
7
|
+
var Internal = "Internal";
|
|
8
|
+
var InvalidMessage = "InvalidMessage";
|
|
9
|
+
var NoSocketOrigin = "NoSocketOrigin";
|
|
10
|
+
var Offline = "Offline";
|
|
11
|
+
var PingTimeout = "PingTimeout";
|
|
12
|
+
var PullTimeout = "PullTimeout";
|
|
13
|
+
var UnexpectedBaseCookie = "UnexpectedBaseCookie";
|
|
14
|
+
var UserDisconnect = "UserDisconnect";
|
|
15
|
+
//#endregion
|
|
16
|
+
export { AbruptClose, CleanClose, ClientClosed, ConnectTimeout, Hidden, Internal, InvalidMessage, NoSocketOrigin, Offline, PingTimeout, PullTimeout, UnexpectedBaseCookie, UserDisconnect };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=client-error-kind-enum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-error-kind-enum.js","sources":["../../../../../zero-client/src/client/client-error-kind-enum.ts"],"sourcesContent":["export const AbruptClose = 'AbruptClose';\nexport const CleanClose = 'CleanClose';\nexport const ClientClosed = 'ClientClosed';\nexport const ConnectTimeout = 'ConnectTimeout';\nexport const Hidden = 'Hidden';\nexport const Internal = 'Internal';\nexport const InvalidMessage = 'InvalidMessage';\nexport const NoSocketOrigin = 'NoSocketOrigin';\nexport const Offline = 'Offline';\nexport const PingTimeout = 'PingTimeout';\nexport const PullTimeout = 'PullTimeout';\nexport const UnexpectedBaseCookie = 'UnexpectedBaseCookie';\nexport const UserDisconnect = 'UserDisconnect';\n\nexport type AbruptClose = typeof AbruptClose;\nexport type CleanClose = typeof CleanClose;\nexport type ClientClosed = typeof ClientClosed;\nexport type ConnectTimeout = typeof ConnectTimeout;\nexport type Hidden = typeof Hidden;\nexport type Internal = typeof Internal;\nexport type InvalidMessage = typeof InvalidMessage;\nexport type NoSocketOrigin = typeof NoSocketOrigin;\nexport type Offline = typeof Offline;\nexport type PingTimeout = typeof PingTimeout;\nexport type PullTimeout = typeof PullTimeout;\nexport type UnexpectedBaseCookie = typeof UnexpectedBaseCookie;\nexport type UserDisconnect = typeof UserDisconnect;\n"],"
|
|
1
|
+
{"version":3,"file":"client-error-kind-enum.js","names":[],"sources":["../../../../../zero-client/src/client/client-error-kind-enum.ts"],"sourcesContent":["export const AbruptClose = 'AbruptClose';\nexport const CleanClose = 'CleanClose';\nexport const ClientClosed = 'ClientClosed';\nexport const ConnectTimeout = 'ConnectTimeout';\nexport const Hidden = 'Hidden';\nexport const Internal = 'Internal';\nexport const InvalidMessage = 'InvalidMessage';\nexport const NoSocketOrigin = 'NoSocketOrigin';\nexport const Offline = 'Offline';\nexport const PingTimeout = 'PingTimeout';\nexport const PullTimeout = 'PullTimeout';\nexport const UnexpectedBaseCookie = 'UnexpectedBaseCookie';\nexport const UserDisconnect = 'UserDisconnect';\n\nexport type AbruptClose = typeof AbruptClose;\nexport type CleanClose = typeof CleanClose;\nexport type ClientClosed = typeof ClientClosed;\nexport type ConnectTimeout = typeof ConnectTimeout;\nexport type Hidden = typeof Hidden;\nexport type Internal = typeof Internal;\nexport type InvalidMessage = typeof InvalidMessage;\nexport type NoSocketOrigin = typeof NoSocketOrigin;\nexport type Offline = typeof Offline;\nexport type PingTimeout = typeof PingTimeout;\nexport type PullTimeout = typeof PullTimeout;\nexport type UnexpectedBaseCookie = typeof UnexpectedBaseCookie;\nexport type UserDisconnect = typeof UserDisconnect;\n"],"mappings":";AAAA,IAAa,cAAc;AAC3B,IAAa,aAAa;AAC1B,IAAa,eAAe;AAC5B,IAAa,iBAAiB;AAC9B,IAAa,SAAS;AACtB,IAAa,WAAW;AACxB,IAAa,iBAAiB;AAC9B,IAAa,iBAAiB;AAC9B,IAAa,UAAU;AACvB,IAAa,cAAc;AAC3B,IAAa,cAAc;AAC3B,IAAa,uBAAuB;AACpC,IAAa,iBAAiB"}
|