@dxos/client-services 0.10.0 → 0.11.0
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/dist/lib/chunk-client-services-layer.mjs +11425 -0
- package/dist/lib/chunk-client-services-layer.mjs.map +1 -0
- package/dist/lib/chunk-decorate.mjs +9 -0
- package/dist/lib/index.mjs +731 -0
- package/dist/lib/index.mjs.map +1 -0
- package/dist/lib/packlets/diagnostics/browser-diagnostics-broadcast.mjs +72 -0
- package/dist/lib/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +1 -0
- package/dist/lib/packlets/diagnostics/diagnostics-broadcast.mjs +14 -0
- package/dist/lib/packlets/diagnostics/diagnostics-broadcast.mjs.map +1 -0
- package/dist/lib/packlets/locks/browser.mjs +105 -0
- package/dist/lib/packlets/locks/browser.mjs.map +1 -0
- package/dist/lib/packlets/locks/node.mjs +53 -0
- package/dist/lib/packlets/locks/node.mjs.map +1 -0
- package/dist/lib/testing.mjs +570 -0
- package/dist/lib/testing.mjs.map +1 -0
- package/dist/types/src/index.d.ts +2 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/packlets/agents/edge-agent-manager.d.ts +21 -4
- package/dist/types/src/packlets/agents/edge-agent-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/agents/edge-agent-service.d.ts +8 -7
- package/dist/types/src/packlets/agents/edge-agent-service.d.ts.map +1 -1
- package/dist/types/src/packlets/devices/devices-service.d.ts +7 -5
- package/dist/types/src/packlets/devices/devices-service.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/devtools.d.ts +30 -29
- package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/feeds.d.ts +1 -1
- package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/network.d.ts +2 -1
- package/dist/types/src/packlets/devtools/network.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/spaces.d.ts.map +1 -1
- package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts +2 -2
- package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts.map +1 -1
- package/dist/types/src/packlets/diagnostics/diagnostics-collector.d.ts.map +1 -1
- package/dist/types/src/packlets/diagnostics/diagnostics.d.ts +1 -8
- package/dist/types/src/packlets/diagnostics/diagnostics.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/authenticator.d.ts +1 -1
- package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/contacts-service.d.ts +9 -6
- package/dist/types/src/packlets/identity/contacts-service.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-manager.d.ts +32 -3
- package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +23 -4
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-service.d.ts +15 -20
- package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity.d.ts +2 -2
- package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitations-handler.d.ts +17 -0
- package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitations-manager.d.ts +25 -4
- package/dist/types/src/packlets/invitations/invitations-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitations-service.d.ts +11 -11
- package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
- package/dist/types/src/packlets/logging/logging-service.d.ts +14 -12
- package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
- package/dist/types/src/packlets/metadata/index.d.ts +3 -0
- package/dist/types/src/packlets/metadata/index.d.ts.map +1 -0
- package/dist/types/src/packlets/metadata/metadata-store.d.ts +107 -0
- package/dist/types/src/packlets/metadata/metadata-store.d.ts.map +1 -0
- package/dist/types/src/packlets/metadata/metadata-store.test.d.ts +2 -0
- package/dist/types/src/packlets/metadata/metadata-store.test.d.ts.map +1 -0
- package/dist/types/src/packlets/metadata/sqlite-metadata-store.d.ts +65 -0
- package/dist/types/src/packlets/metadata/sqlite-metadata-store.d.ts.map +1 -0
- package/dist/types/src/packlets/network/network-service.d.ts +15 -14
- package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
- package/dist/types/src/packlets/pipeline/codec.d.ts +11 -0
- package/dist/types/src/packlets/pipeline/codec.d.ts.map +1 -0
- package/dist/types/src/packlets/pipeline/feeds.d.ts +7 -0
- package/dist/types/src/packlets/pipeline/feeds.d.ts.map +1 -0
- package/dist/types/src/packlets/pipeline/index.d.ts +5 -0
- package/dist/types/src/packlets/pipeline/index.d.ts.map +1 -0
- package/dist/types/src/packlets/pipeline/message-selector.d.ts +11 -0
- package/dist/types/src/packlets/pipeline/message-selector.d.ts.map +1 -0
- package/dist/types/src/packlets/pipeline/pipeline-stress.test.d.ts +2 -0
- package/dist/types/src/packlets/pipeline/pipeline-stress.test.d.ts.map +1 -0
- package/dist/types/src/packlets/pipeline/pipeline.d.ts +131 -0
- package/dist/types/src/packlets/pipeline/pipeline.d.ts.map +1 -0
- package/dist/types/src/packlets/pipeline/pipeline.test.d.ts +2 -0
- package/dist/types/src/packlets/pipeline/pipeline.test.d.ts.map +1 -0
- package/dist/types/src/packlets/pipeline/testing/index.d.ts +2 -0
- package/dist/types/src/packlets/pipeline/testing/index.d.ts.map +1 -0
- package/dist/types/src/packlets/pipeline/testing/test-feed-builder.d.ts +9 -0
- package/dist/types/src/packlets/pipeline/testing/test-feed-builder.d.ts.map +1 -0
- package/dist/types/src/packlets/pipeline/timeframe-clock.d.ts +31 -0
- package/dist/types/src/packlets/pipeline/timeframe-clock.d.ts.map +1 -0
- package/dist/types/src/packlets/services/client-services-layer.d.ts +21 -0
- package/dist/types/src/packlets/services/client-services-layer.d.ts.map +1 -0
- package/dist/types/src/packlets/services/cross-device-space-synchronizer.d.ts +28 -0
- package/dist/types/src/packlets/services/cross-device-space-synchronizer.d.ts.map +1 -0
- package/dist/types/src/packlets/services/effect-rpc.test.d.ts +2 -0
- package/dist/types/src/packlets/services/effect-rpc.test.d.ts.map +1 -0
- package/dist/types/src/packlets/services/feed-syncer.d.ts +22 -2
- package/dist/types/src/packlets/services/feed-syncer.d.ts.map +1 -1
- package/dist/types/src/packlets/services/index.d.ts +2 -2
- package/dist/types/src/packlets/services/index.d.ts.map +1 -1
- package/dist/types/src/packlets/services/platform.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-context.d.ts +38 -57
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-host.d.ts +82 -31
- package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
- package/dist/types/src/packlets/services/sqlite-storage.d.ts +29 -0
- package/dist/types/src/packlets/services/sqlite-storage.d.ts.map +1 -1
- package/dist/types/src/packlets/services/sqlite-storage.test.d.ts +2 -0
- package/dist/types/src/packlets/services/sqlite-storage.test.d.ts.map +1 -0
- package/dist/types/src/packlets/space/admission-discovery-extension.d.ts +30 -0
- package/dist/types/src/packlets/space/admission-discovery-extension.d.ts.map +1 -0
- package/dist/types/src/packlets/space/auth.d.ts +24 -0
- package/dist/types/src/packlets/space/auth.d.ts.map +1 -0
- package/dist/types/src/packlets/space/control-pipeline.d.ts +46 -0
- package/dist/types/src/packlets/space/control-pipeline.d.ts.map +1 -0
- package/dist/types/src/packlets/space/control-pipeline.test.d.ts +2 -0
- package/dist/types/src/packlets/space/control-pipeline.test.d.ts.map +1 -0
- package/dist/types/src/packlets/space/index.d.ts +6 -0
- package/dist/types/src/packlets/space/index.d.ts.map +1 -0
- package/dist/types/src/packlets/space/replication.browser.test.d.ts +2 -0
- package/dist/types/src/packlets/space/replication.browser.test.d.ts.map +1 -0
- package/dist/types/src/packlets/space/space-manager.browser.test.d.ts +2 -0
- package/dist/types/src/packlets/space/space-manager.browser.test.d.ts.map +1 -0
- package/dist/types/src/packlets/space/space-manager.d.ts +72 -0
- package/dist/types/src/packlets/space/space-manager.d.ts.map +1 -0
- package/dist/types/src/packlets/space/space-protocol.browser.test.d.ts +2 -0
- package/dist/types/src/packlets/space/space-protocol.browser.test.d.ts.map +1 -0
- package/dist/types/src/packlets/space/space-protocol.d.ts +99 -0
- package/dist/types/src/packlets/space/space-protocol.d.ts.map +1 -0
- package/dist/types/src/packlets/space/space-protocol.test.d.ts +2 -0
- package/dist/types/src/packlets/space/space-protocol.test.d.ts.map +1 -0
- package/dist/types/src/packlets/space/space.d.ts +65 -0
- package/dist/types/src/packlets/space/space.d.ts.map +1 -0
- package/dist/types/src/packlets/space/space.test.d.ts +2 -0
- package/dist/types/src/packlets/space/space.test.d.ts.map +1 -0
- package/dist/types/src/packlets/space/testing/change-metadata.d.ts +8 -0
- package/dist/types/src/packlets/space/testing/change-metadata.d.ts.map +1 -0
- package/dist/types/src/packlets/space/testing/index.d.ts +4 -0
- package/dist/types/src/packlets/space/testing/index.d.ts.map +1 -0
- package/dist/types/src/packlets/space/testing/test-agent-builder.d.ts +62 -0
- package/dist/types/src/packlets/space/testing/test-agent-builder.d.ts.map +1 -0
- package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts +1 -1
- package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts.map +1 -1
- package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts +40 -7
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +3 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/genesis.d.ts +1 -1
- package/dist/types/src/packlets/spaces/genesis.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/spaces-service.d.ts +25 -23
- package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
- package/dist/types/src/packlets/storage/level.d.ts.map +1 -1
- package/dist/types/src/packlets/system/system-service.d.ts +18 -18
- package/dist/types/src/packlets/system/system-service.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/invitation-utils.d.ts +1 -1
- package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/test-builder.d.ts +7 -6
- package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/packlets/worker/worker-runtime.d.ts +41 -58
- package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -1
- package/dist/types/src/packlets/worker/worker-session.d.ts +21 -8
- package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -1
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +52 -48
- package/src/index.ts +2 -0
- package/src/packlets/agents/edge-agent-manager.ts +56 -15
- package/src/packlets/agents/edge-agent-service.ts +25 -15
- package/src/packlets/devices/devices-service.test.ts +20 -19
- package/src/packlets/devices/devices-service.ts +17 -17
- package/src/packlets/devtools/devtools.ts +133 -75
- package/src/packlets/devtools/feeds.ts +2 -1
- package/src/packlets/devtools/network.ts +42 -12
- package/src/packlets/devtools/spaces.ts +1 -1
- package/src/packlets/diagnostics/diagnostics-broadcast.ts +4 -2
- package/src/packlets/diagnostics/diagnostics-collector.ts +5 -18
- package/src/packlets/diagnostics/diagnostics.ts +0 -11
- package/src/packlets/identity/authenticator.ts +2 -1
- package/src/packlets/identity/contacts-service.ts +46 -37
- package/src/packlets/identity/identity-manager.test.ts +3 -1
- package/src/packlets/identity/identity-manager.ts +73 -5
- package/src/packlets/identity/identity-recovery-manager.ts +56 -7
- package/src/packlets/identity/identity-service.test.ts +27 -18
- package/src/packlets/identity/identity-service.ts +114 -71
- package/src/packlets/identity/identity.test.ts +4 -9
- package/src/packlets/identity/identity.ts +1 -2
- package/src/packlets/invitations/edge-invitation-handler.ts +0 -1
- package/src/packlets/invitations/invitations-handler.ts +39 -3
- package/src/packlets/invitations/invitations-manager.ts +52 -4
- package/src/packlets/invitations/invitations-service.ts +54 -28
- package/src/packlets/logging/logging-service.ts +41 -29
- package/src/packlets/logging/logging.test.ts +28 -15
- package/src/packlets/metadata/index.ts +6 -0
- package/src/packlets/metadata/metadata-store.test.ts +49 -0
- package/src/packlets/metadata/metadata-store.ts +446 -0
- package/src/packlets/metadata/sqlite-metadata-store.ts +409 -0
- package/src/packlets/network/network-service.test.ts +19 -12
- package/src/packlets/network/network-service.ts +96 -29
- package/src/packlets/pipeline/codec.ts +18 -0
- package/src/packlets/pipeline/feeds.ts +22 -0
- package/src/packlets/pipeline/index.ts +8 -0
- package/src/packlets/pipeline/message-selector.ts +35 -0
- package/src/packlets/pipeline/pipeline-stress.test.ts +230 -0
- package/src/packlets/pipeline/pipeline.test.ts +140 -0
- package/src/packlets/pipeline/pipeline.ts +439 -0
- package/src/packlets/pipeline/testing/index.ts +5 -0
- package/src/packlets/pipeline/testing/test-feed-builder.ts +19 -0
- package/src/packlets/pipeline/timeframe-clock.ts +81 -0
- package/src/packlets/services/client-services-layer.ts +186 -0
- package/src/packlets/services/cross-device-space-synchronizer.ts +132 -0
- package/src/packlets/services/effect-rpc.test.ts +314 -0
- package/src/packlets/services/feed-syncer.ts +57 -3
- package/src/packlets/services/index.ts +2 -2
- package/src/packlets/services/platform.ts +0 -6
- package/src/packlets/services/service-context.ts +219 -522
- package/src/packlets/services/service-host.test.ts +34 -11
- package/src/packlets/services/service-host.ts +693 -213
- package/src/packlets/services/spec.md +106 -0
- package/src/packlets/services/sqlite-storage.test.ts +48 -0
- package/src/packlets/services/sqlite-storage.ts +117 -20
- package/src/packlets/space/admission-discovery-extension.ts +91 -0
- package/src/packlets/space/auth.ts +92 -0
- package/src/packlets/space/control-pipeline.test.ts +165 -0
- package/src/packlets/space/control-pipeline.ts +229 -0
- package/src/packlets/space/index.ts +9 -0
- package/src/packlets/space/replication.browser.test.ts +58 -0
- package/src/packlets/space/space-manager.browser.test.ts +40 -0
- package/src/packlets/space/space-manager.ts +224 -0
- package/src/packlets/space/space-protocol.browser.test.ts +129 -0
- package/src/packlets/space/space-protocol.test.ts +158 -0
- package/src/packlets/space/space-protocol.ts +308 -0
- package/src/packlets/space/space.test.ts +181 -0
- package/src/packlets/space/space.ts +196 -0
- package/src/packlets/space/testing/change-metadata.ts +27 -0
- package/src/packlets/space/testing/index.ts +7 -0
- package/src/packlets/space/testing/test-agent-builder.ts +252 -0
- package/src/packlets/space-export/serialized-space-reader.ts +3 -1
- package/src/packlets/space-export/serialized-space-writer.ts +53 -30
- package/src/packlets/space-export/space-archive.test.ts +30 -0
- package/src/packlets/spaces/data-space-manager.test.ts +1 -1
- package/src/packlets/spaces/data-space-manager.ts +148 -33
- package/src/packlets/spaces/data-space.ts +29 -18
- package/src/packlets/spaces/edge-feed-replicator.test.ts +1 -1
- package/src/packlets/spaces/genesis.ts +1 -1
- package/src/packlets/spaces/spaces-service.test.ts +35 -22
- package/src/packlets/spaces/spaces-service.ts +259 -180
- package/src/packlets/storage/level.ts +3 -1
- package/src/packlets/system/system-service.test.ts +31 -13
- package/src/packlets/system/system-service.ts +65 -37
- package/src/packlets/testing/invitation-utils.ts +3 -3
- package/src/packlets/testing/test-builder.ts +35 -20
- package/src/packlets/worker/worker-runtime.ts +222 -260
- package/src/packlets/worker/worker-session.ts +108 -91
- package/src/testing/index.ts +1 -0
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-QCWEHHJW.mjs +0 -24
- package/dist/lib/browser/chunk-QCWEHHJW.mjs.map +0 -7
- package/dist/lib/browser/chunk-XJRPB3GA.mjs +0 -22
- package/dist/lib/browser/chunk-XJRPB3GA.mjs.map +0 -7
- package/dist/lib/browser/chunk-XU5R2BMF.mjs +0 -8837
- package/dist/lib/browser/chunk-XU5R2BMF.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -876
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs +0 -88
- package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +0 -7
- package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs +0 -11
- package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs.map +0 -7
- package/dist/lib/browser/packlets/locks/browser.mjs +0 -86
- package/dist/lib/browser/packlets/locks/browser.mjs.map +0 -7
- package/dist/lib/browser/packlets/locks/node.mjs +0 -48
- package/dist/lib/browser/packlets/locks/node.mjs.map +0 -7
- package/dist/lib/browser/testing/index.mjs +0 -436
- package/dist/lib/browser/testing/index.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2DT3MZRL.mjs +0 -22
- package/dist/lib/node-esm/chunk-2DT3MZRL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2SZHAWBN.mjs +0 -24
- package/dist/lib/node-esm/chunk-2SZHAWBN.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-H5YTUD35.mjs +0 -8837
- package/dist/lib/node-esm/chunk-H5YTUD35.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -876
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs +0 -88
- package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +0 -7
- package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs +0 -11
- package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs.map +0 -7
- package/dist/lib/node-esm/packlets/locks/browser.mjs +0 -86
- package/dist/lib/node-esm/packlets/locks/browser.mjs.map +0 -7
- package/dist/lib/node-esm/packlets/locks/node.mjs +0 -48
- package/dist/lib/node-esm/packlets/locks/node.mjs.map +0 -7
- package/dist/lib/node-esm/testing/index.mjs +0 -436
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/types/src/packlets/services/client-rpc-server.d.ts +0 -24
- package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +0 -1
- package/dist/types/src/packlets/services/service-registry.d.ts +0 -15
- package/dist/types/src/packlets/services/service-registry.d.ts.map +0 -1
- package/dist/types/src/packlets/services/service-registry.test.d.ts +0 -2
- package/dist/types/src/packlets/services/service-registry.test.d.ts.map +0 -1
- package/dist/types/src/testing/setup.d.ts +0 -3
- package/dist/types/src/testing/setup.d.ts.map +0 -1
- package/src/packlets/services/client-rpc-server.ts +0 -111
- package/src/packlets/services/service-registry.test.ts +0 -78
- package/src/packlets/services/service-registry.ts +0 -36
- package/src/testing/setup.ts +0 -11
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
createCollectDiagnosticsBroadcastHandler,
|
|
4
|
-
createCollectDiagnosticsBroadcastSender
|
|
5
|
-
} from "../../chunk-2DT3MZRL.mjs";
|
|
6
|
-
import "../../chunk-2SZHAWBN.mjs";
|
|
7
|
-
export {
|
|
8
|
-
createCollectDiagnosticsBroadcastHandler,
|
|
9
|
-
createCollectDiagnosticsBroadcastSender
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=diagnostics-broadcast.mjs.map
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
-
import "../../chunk-2SZHAWBN.mjs";
|
|
3
|
-
|
|
4
|
-
// src/packlets/locks/browser.ts
|
|
5
|
-
import { Trigger, asyncTimeout } from "@dxos/async";
|
|
6
|
-
import { RESOURCE_LOCK_TIMEOUT } from "@dxos/client-protocol";
|
|
7
|
-
import { log, logInfo } from "@dxos/log";
|
|
8
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/locks/browser.ts";
|
|
9
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
10
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
11
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
12
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
14
|
-
}
|
|
15
|
-
var Lock = class {
|
|
16
|
-
_broadcastChannel = new BroadcastChannel("vault-resource-lock");
|
|
17
|
-
_lockKey;
|
|
18
|
-
_onAcquire;
|
|
19
|
-
_onRelease;
|
|
20
|
-
_releaseTrigger = new Trigger();
|
|
21
|
-
constructor({ lockKey, onAcquire, onRelease }) {
|
|
22
|
-
this._lockKey = lockKey;
|
|
23
|
-
this._onAcquire = onAcquire;
|
|
24
|
-
this._onRelease = onRelease;
|
|
25
|
-
this._broadcastChannel.onmessage = this._onMessage.bind(this);
|
|
26
|
-
}
|
|
27
|
-
get lockKey() {
|
|
28
|
-
return this._lockKey;
|
|
29
|
-
}
|
|
30
|
-
async acquire() {
|
|
31
|
-
this._broadcastChannel.postMessage({
|
|
32
|
-
message: "acquiring"
|
|
33
|
-
});
|
|
34
|
-
try {
|
|
35
|
-
log("aquiring lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 39, S: this });
|
|
36
|
-
await asyncTimeout(this._requestLock(), RESOURCE_LOCK_TIMEOUT);
|
|
37
|
-
log("acquired lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 41, S: this });
|
|
38
|
-
} catch {
|
|
39
|
-
log("stealing lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 43, S: this });
|
|
40
|
-
await this._requestLock(true);
|
|
41
|
-
log("stolen lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 45, S: this });
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
async release() {
|
|
45
|
-
this._releaseTrigger.wake();
|
|
46
|
-
}
|
|
47
|
-
_onMessage(event) {
|
|
48
|
-
if (event.data.message === "acquiring") {
|
|
49
|
-
this._releaseTrigger.wake();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
async _requestLock(steal = false) {
|
|
53
|
-
log("requesting lock...", {
|
|
54
|
-
steal
|
|
55
|
-
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 57, S: this });
|
|
56
|
-
const acquired = new Trigger();
|
|
57
|
-
void navigator.locks.request(this._lockKey, {
|
|
58
|
-
steal
|
|
59
|
-
}, async () => {
|
|
60
|
-
await this._onAcquire?.();
|
|
61
|
-
acquired.wake();
|
|
62
|
-
this._releaseTrigger = new Trigger();
|
|
63
|
-
await this._releaseTrigger.wait();
|
|
64
|
-
log("releasing lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 68, S: this });
|
|
65
|
-
await this._onRelease?.();
|
|
66
|
-
log("released lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 70, S: this });
|
|
67
|
-
}).catch(async () => {
|
|
68
|
-
await this._onRelease?.();
|
|
69
|
-
});
|
|
70
|
-
await acquired.wait();
|
|
71
|
-
log("recieved lock", {
|
|
72
|
-
steal
|
|
73
|
-
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 75, S: this });
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
_ts_decorate([
|
|
77
|
-
logInfo
|
|
78
|
-
], Lock.prototype, "lockKey", null);
|
|
79
|
-
var isLocked = (lockPath) => {
|
|
80
|
-
throw new Error("Not implemented");
|
|
81
|
-
};
|
|
82
|
-
export {
|
|
83
|
-
Lock,
|
|
84
|
-
isLocked
|
|
85
|
-
};
|
|
86
|
-
//# sourceMappingURL=browser.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/packlets/locks/browser.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Trigger, asyncTimeout } from '@dxos/async';\nimport { RESOURCE_LOCK_TIMEOUT } from '@dxos/client-protocol';\nimport { log, logInfo } from '@dxos/log';\n\nimport { type ResourceLock, type ResourceLockOptions } from './resource-lock';\n\nenum Message {\n ACQUIRING = 'acquiring',\n}\n\n// TODO(mykola): Factor out.\n// TODO(burdon): Extend to support locking for web and NodeJS (use npm lockfile). Use to lock agents.\nexport class Lock implements ResourceLock {\n private readonly _broadcastChannel = new BroadcastChannel('vault-resource-lock');\n private readonly _lockKey: string;\n private readonly _onAcquire: ResourceLockOptions['onAcquire'];\n private readonly _onRelease: ResourceLockOptions['onRelease'];\n private _releaseTrigger = new Trigger();\n\n constructor({ lockKey, onAcquire, onRelease }: ResourceLockOptions) {\n this._lockKey = lockKey;\n this._onAcquire = onAcquire;\n this._onRelease = onRelease;\n this._broadcastChannel.onmessage = this._onMessage.bind(this);\n }\n\n @logInfo\n get lockKey() {\n return this._lockKey;\n }\n\n async acquire(): Promise<void> {\n this._broadcastChannel.postMessage({\n message: Message.ACQUIRING,\n });\n\n try {\n log('aquiring lock...');\n await asyncTimeout(this._requestLock(), RESOURCE_LOCK_TIMEOUT);\n log('acquired lock');\n } catch {\n log('stealing lock...');\n await this._requestLock(true);\n log('stolen lock');\n }\n }\n\n async release(): Promise<void> {\n this._releaseTrigger.wake();\n }\n\n private _onMessage(event: MessageEvent<any>): void {\n if (event.data.message === Message.ACQUIRING) {\n this._releaseTrigger.wake();\n }\n }\n\n private async _requestLock(steal = false): Promise<void> {\n log('requesting lock...', { steal });\n const acquired = new Trigger();\n\n void navigator.locks\n .request(this._lockKey, { steal }, async () => {\n await this._onAcquire?.();\n acquired.wake();\n this._releaseTrigger = new Trigger();\n await this._releaseTrigger.wait();\n log('releasing lock...');\n await this._onRelease?.();\n log('released lock');\n })\n .catch(async () => {\n await this._onRelease?.();\n });\n\n await acquired.wait();\n log('recieved lock', { steal });\n }\n}\n\n// TODO(mykola): Implement.\nexport const isLocked = (lockPath: string) => {\n throw new Error('Not implemented');\n};\n"],
|
|
5
|
-
"mappings": ";;;;AAKA,SAASA,SAAAA,oBAA6B;AACtC,SAASC,6BAAoB;AAI7B,SAAKC,KAAAA,eAAAA;;;;;;;AAVL;AAiBmBC,IAAAA,OAAAA,MAAAA;EACAC,oBAAiB,IAAA,iBAAA,qBAAA;EACjBC;EACAC;EACTC;EAER,kBAAcC,IAAO,QAAEC;cAChBL,EAAAA,SAAWI,WAAAA,UAAAA,GAAAA;AAChB,SAAKH,WAAU;AACf,SAAKC,aAAaI;AAClB,SAAKP,aAAAA;AACP,SAAA,kBAAA,YAAA,KAAA,WAAA,KAAA,IAAA;EAEA;MAEE,UAAO;AACT,WAAA,KAAA;EAEA;QACE,UAAKA;SACHQ,kBAAO,YAAA;MACT,SAAA;IAEA,CAAA;QACEC;AACA,UAAA,oBAAuB,QAACC,EAAAA,YAAgBC,YAAAA,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,KAAAA,CAAAA;AACxCF,YAAI,aAAA,KAAA,aAAA,GAAA,qBAAA;AACJ,UAAA,iBAAM,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;YACF;AACJ,UAAA,oBAAuB,QAAC,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AACxBA,YAAI,KAAA,aAAA,IAAA;AACN,UAAA,eAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;IACF;EAEA;QACE,UAAKL;AACP,SAAA,gBAAA,KAAA;EAEQQ;aACFC,OAAU;QACZ,MAAKT,KAAAA,YAAgBU,aAAI;AAC3B,WAAA,gBAAA,KAAA;IACF;EAEA;QACEL,aAAI,QAAA,OAAsB;QAAEM,sBAAAA;MAAM;IAClC,GAAA,EAAA,YAAMC,YAAeC,GAAAA,cAAAA,GAAAA,IAAAA,GAAAA,KAAAA,CAAAA;AAErB,UAAKC,WAAUC,IACZC,QAAQ;SAAiBL,UAAAA,MAAAA,QAAAA,KAAAA,UAAAA;MAAS;mBAC3B;AACNC,YAAAA,KAASF,aAAI;AACb,eAAKV,KAAAA;AACL,WAAA,kBAAWA,IAAgBiB,QAAI;AAC/BZ,YAAI,KAAA,gBAAA,KAAA;AACJ,UAAA,qBAAqB,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AACrBA,YAAI,KAAA,aAAA;AAELa,UAAK,iBAAC,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;aACL,YAAWnB;AACb,YAAA,KAAA,aAAA;IAEF,CAAA;AACAM,UAAI,SAAA,KAAA;QAAmBM,iBAAAA;MAAM;IAC/B,GAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;EACF;;;;AAEA,GAAA,KAAA,WAAA,WAA2B,IAAA;AAEzB,IAAM,WAAU,CAAA,aAAA;AAChB,QAAA,IAAA,MAAA,iBAAA;;",
|
|
6
|
-
"names": ["RESOURCE_LOCK_TIMEOUT", "log", "Message", "_broadcastChannel", "_lockKey", "_onAcquire", "_onRelease", "_releaseTrigger", "lockKey", "onAcquire", "onRelease", "message", "log", "_requestLock", "RESOURCE_LOCK_TIMEOUT", "_onMessage", "event", "wake", "steal", "acquired", "Trigger", "navigator", "locks", "request", "wait", "catch"]
|
|
7
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
-
import "../../chunk-2SZHAWBN.mjs";
|
|
3
|
-
|
|
4
|
-
// src/packlets/locks/node.ts
|
|
5
|
-
import { invariant } from "@dxos/invariant";
|
|
6
|
-
import { LockFile } from "@dxos/lock-file";
|
|
7
|
-
import { log, logInfo } from "@dxos/log";
|
|
8
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/locks/node.ts";
|
|
9
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
10
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
11
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
12
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
14
|
-
}
|
|
15
|
-
var Lock = class {
|
|
16
|
-
_lockPath;
|
|
17
|
-
_onAcquire;
|
|
18
|
-
_onRelease;
|
|
19
|
-
_fileHandle;
|
|
20
|
-
constructor({ lockKey: lockPath, onAcquire, onRelease }) {
|
|
21
|
-
this._lockPath = lockPath;
|
|
22
|
-
this._onAcquire = onAcquire;
|
|
23
|
-
this._onRelease = onRelease;
|
|
24
|
-
}
|
|
25
|
-
get lockKey() {
|
|
26
|
-
return this._lockPath;
|
|
27
|
-
}
|
|
28
|
-
async acquire() {
|
|
29
|
-
log("acquiring lock...", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 28, S: this });
|
|
30
|
-
this._fileHandle = await LockFile.acquire(this._lockPath);
|
|
31
|
-
await this._onAcquire?.();
|
|
32
|
-
log("acquired lock", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 31, S: this });
|
|
33
|
-
}
|
|
34
|
-
async release() {
|
|
35
|
-
await this._onRelease?.();
|
|
36
|
-
invariant(this._fileHandle, "Lock is not acquired", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 35, S: this, A: ["this._fileHandle", "'Lock is not acquired'"] });
|
|
37
|
-
await LockFile.release(this._fileHandle);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
_ts_decorate([
|
|
41
|
-
logInfo
|
|
42
|
-
], Lock.prototype, "lockKey", null);
|
|
43
|
-
var isLocked = (lockPath) => LockFile.isLocked(lockPath);
|
|
44
|
-
export {
|
|
45
|
-
Lock,
|
|
46
|
-
isLocked
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=node.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/packlets/locks/node.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type FileHandle } from 'node:fs/promises';\n\nimport { invariant } from '@dxos/invariant';\nimport { LockFile } from '@dxos/lock-file';\nimport { log, logInfo } from '@dxos/log';\n\nimport { type ResourceLock, type ResourceLockOptions } from './resource-lock';\n\n// TODO(mykola): Factor out.\nexport class Lock implements ResourceLock {\n private readonly _lockPath: string;\n private readonly _onAcquire: ResourceLockOptions['onAcquire'];\n private readonly _onRelease: ResourceLockOptions['onRelease'];\n private _fileHandle?: FileHandle;\n\n constructor({ lockKey: lockPath, onAcquire, onRelease }: ResourceLockOptions) {\n this._lockPath = lockPath;\n this._onAcquire = onAcquire;\n this._onRelease = onRelease;\n }\n\n @logInfo\n get lockKey() {\n return this._lockPath;\n }\n\n async acquire(): Promise<void> {\n log('acquiring lock...');\n this._fileHandle = await LockFile.acquire(this._lockPath);\n\n await this._onAcquire?.();\n\n log('acquired lock');\n }\n\n async release(): Promise<void> {\n await this._onRelease?.();\n invariant(this._fileHandle, 'Lock is not acquired');\n await LockFile.release(this._fileHandle);\n }\n}\n\nexport const isLocked = (lockPath: string) => LockFile.isLocked(lockPath);\n"],
|
|
5
|
-
"mappings": ";;;;AAOA,SAASA,iBAAgB;AACzB,SAASC,gBAAY;AAIrB,SAAA,KAAA,eAA4B;AAZ5B,IAAE,eAAA;;;;;;AAMF;AAQmBC,IAAAA,OAAAA,MAAkB;EAClBC;EACAC;EACTC;EAER;cACOH,EAAAA,SAAYI,UAAAA,WAAAA,UAAAA,GAAAA;AACjB,SAAKH,YAAU;AACf,SAAKC,aAAaG;AACpB,SAAA,aAAA;EAEA;MAEE,UAAO;AACT,WAAA,KAAA;EAEA;QACEN,UAAI;AACJ,QAAI,qBAAe,QAAMD,EAAAA,YAAiB,YAAKE,GAAS,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AAExD,SAAA,cAAWC,MAAU,SAAA,QAAA,KAAA,SAAA;AAErBF,UAAI,KAAA,aAAA;AACN,QAAA,iBAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;EAEA;QACE,UAAWG;AACXI,UAAAA,KAAU,aAAKH;AACf,cAAML,KAASS,aAAaJ,wBAAW,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,MAAA,GAAA,CAAA,oBAAA,wBAAA,EAAA,CAAA;AACzC,UAAA,SAAA,QAAA,KAAA,WAAA;EACF;;;;AAEA,GAAA,KAAO,WAAMK,WAAYJ,IAAAA;;",
|
|
6
|
-
"names": ["LockFile", "log", "_lockPath", "_onAcquire", "_onRelease", "_fileHandle", "lockPath", "onRelease", "invariant", "release", "isLocked"]
|
|
7
|
-
}
|
|
@@ -1,436 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
-
import {
|
|
3
|
-
ClientServicesHost,
|
|
4
|
-
DataSpaceManager,
|
|
5
|
-
InvitationsHandler,
|
|
6
|
-
InvitationsManager,
|
|
7
|
-
ServiceContext,
|
|
8
|
-
SpaceInvitationProtocol,
|
|
9
|
-
SqliteStorage
|
|
10
|
-
} from "../chunk-H5YTUD35.mjs";
|
|
11
|
-
import "../chunk-2DT3MZRL.mjs";
|
|
12
|
-
import "../chunk-2SZHAWBN.mjs";
|
|
13
|
-
|
|
14
|
-
// src/packlets/testing/credential-utils.ts
|
|
15
|
-
import { createCredential } from "@dxos/credentials";
|
|
16
|
-
import { PublicKey } from "@dxos/keys";
|
|
17
|
-
var createMockCredential = async ({ signer, issuer }) => createCredential({
|
|
18
|
-
signer,
|
|
19
|
-
issuer,
|
|
20
|
-
subject: new PublicKey(Buffer.from("test")),
|
|
21
|
-
assertion: {
|
|
22
|
-
"@type": "example.testing.rpc.MessageWithAny",
|
|
23
|
-
"payload": {
|
|
24
|
-
"@type": "google.protobuf.Any",
|
|
25
|
-
"value": Buffer.from("test")
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
// src/packlets/testing/invitation-utils.ts
|
|
31
|
-
import { Trigger } from "@dxos/async";
|
|
32
|
-
import { InvitationEncoder } from "@dxos/client-protocol";
|
|
33
|
-
import { Context } from "@dxos/context";
|
|
34
|
-
import { invariant } from "@dxos/invariant";
|
|
35
|
-
import { Invitation } from "@dxos/protocols/proto/dxos/client/services";
|
|
36
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/testing/invitation-utils.ts";
|
|
37
|
-
var sanitizeInvitation = (invitation) => {
|
|
38
|
-
return InvitationEncoder.decode(InvitationEncoder.encode(invitation));
|
|
39
|
-
};
|
|
40
|
-
var performInvitation = ({ host, guest, guestDeviceProfile, options, hooks, codeInputDelay }) => {
|
|
41
|
-
let guestError = false;
|
|
42
|
-
let guestConnected = false;
|
|
43
|
-
let wereConnected = false;
|
|
44
|
-
const hostComplete = new Trigger();
|
|
45
|
-
const guestComplete = new Trigger();
|
|
46
|
-
const authCode = new Trigger();
|
|
47
|
-
void createInvitation(host, options).then((hostObservable) => {
|
|
48
|
-
hostObservable.subscribe(async (hostInvitation) => {
|
|
49
|
-
switch (hostInvitation.state) {
|
|
50
|
-
case Invitation.State.CONNECTING: {
|
|
51
|
-
if (guestConnected) {
|
|
52
|
-
if (wereConnected) {
|
|
53
|
-
hostComplete.wake({
|
|
54
|
-
invitation: hostInvitation
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
guestConnected = true;
|
|
60
|
-
if (hooks?.host?.onConnecting?.(hostObservable)) {
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
const guestObservable = acceptInvitation(guest, hostInvitation, guestDeviceProfile);
|
|
64
|
-
guestObservable.subscribe(async (guestInvitation) => {
|
|
65
|
-
switch (guestInvitation.state) {
|
|
66
|
-
case Invitation.State.CONNECTING: {
|
|
67
|
-
if (hooks?.guest?.onConnecting?.(guestObservable)) {
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
invariant(hostInvitation.swarmKey.equals(guestInvitation.swarmKey), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 51, S: void 0, A: ["hostInvitation.swarmKey.equals(guestInvitation.swarmKey)", ""] });
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
case Invitation.State.CONNECTED: {
|
|
74
|
-
hooks?.guest?.onConnected?.(guestObservable);
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
case Invitation.State.READY_FOR_AUTHENTICATION: {
|
|
78
|
-
if (hooks?.guest?.onReady?.(guestObservable)) {
|
|
79
|
-
break;
|
|
80
|
-
}
|
|
81
|
-
const code = await authCode.wait();
|
|
82
|
-
if (codeInputDelay == null) {
|
|
83
|
-
await guestObservable.authenticate(code);
|
|
84
|
-
} else {
|
|
85
|
-
setTimeout(async () => {
|
|
86
|
-
if (!guestError) {
|
|
87
|
-
await guestObservable.authenticate(code);
|
|
88
|
-
}
|
|
89
|
-
}, codeInputDelay);
|
|
90
|
-
}
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
case Invitation.State.AUTHENTICATING: {
|
|
94
|
-
hooks?.guest?.onAuthenticating?.(guestObservable);
|
|
95
|
-
break;
|
|
96
|
-
}
|
|
97
|
-
case Invitation.State.SUCCESS: {
|
|
98
|
-
if (hooks?.guest?.onSuccess?.(guestObservable)) {
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
101
|
-
guestComplete.wake({
|
|
102
|
-
invitation: guestInvitation
|
|
103
|
-
});
|
|
104
|
-
break;
|
|
105
|
-
}
|
|
106
|
-
case Invitation.State.CANCELLED: {
|
|
107
|
-
if (hooks?.guest?.onCancelled?.(guestObservable)) {
|
|
108
|
-
break;
|
|
109
|
-
}
|
|
110
|
-
guestComplete.wake({
|
|
111
|
-
invitation: guestInvitation
|
|
112
|
-
});
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
case Invitation.State.TIMEOUT: {
|
|
116
|
-
if (hooks?.guest?.onTimeout?.(guestObservable)) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
guestComplete.wake({
|
|
120
|
-
invitation: guestInvitation
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}, (error) => {
|
|
125
|
-
guestError = true;
|
|
126
|
-
if (hooks?.guest?.onError?.(guestObservable)) {
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
guestComplete.wake({
|
|
130
|
-
error
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
case Invitation.State.CONNECTED: {
|
|
136
|
-
wereConnected = true;
|
|
137
|
-
hooks?.host?.onConnected?.(hostObservable);
|
|
138
|
-
break;
|
|
139
|
-
}
|
|
140
|
-
case Invitation.State.READY_FOR_AUTHENTICATION: {
|
|
141
|
-
if (hooks?.host?.onReady?.(hostObservable)) {
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
if (hostInvitation.authCode) {
|
|
145
|
-
authCode.wake(hostInvitation.authCode);
|
|
146
|
-
}
|
|
147
|
-
break;
|
|
148
|
-
}
|
|
149
|
-
case Invitation.State.AUTHENTICATING: {
|
|
150
|
-
hooks?.host?.onAuthenticating?.(hostObservable);
|
|
151
|
-
break;
|
|
152
|
-
}
|
|
153
|
-
case Invitation.State.SUCCESS: {
|
|
154
|
-
if (hooks?.host?.onSuccess?.(hostObservable)) {
|
|
155
|
-
break;
|
|
156
|
-
}
|
|
157
|
-
hostComplete.wake({
|
|
158
|
-
invitation: hostInvitation
|
|
159
|
-
});
|
|
160
|
-
break;
|
|
161
|
-
}
|
|
162
|
-
case Invitation.State.CANCELLED: {
|
|
163
|
-
if (hooks?.host?.onCancelled?.(hostObservable)) {
|
|
164
|
-
break;
|
|
165
|
-
}
|
|
166
|
-
hostComplete.wake({
|
|
167
|
-
invitation: hostInvitation
|
|
168
|
-
});
|
|
169
|
-
break;
|
|
170
|
-
}
|
|
171
|
-
case Invitation.State.TIMEOUT: {
|
|
172
|
-
if (hooks?.host?.onTimeout?.(hostObservable)) {
|
|
173
|
-
break;
|
|
174
|
-
}
|
|
175
|
-
hostComplete.wake({
|
|
176
|
-
invitation: hostInvitation
|
|
177
|
-
});
|
|
178
|
-
break;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}, (error) => {
|
|
182
|
-
if (hooks?.host?.onError?.(hostObservable)) {
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
hostComplete.wake({
|
|
186
|
-
error
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
return [
|
|
191
|
-
hostComplete.wait(),
|
|
192
|
-
guestComplete.wait()
|
|
193
|
-
];
|
|
194
|
-
};
|
|
195
|
-
var createInvitation = async (host, options) => {
|
|
196
|
-
options ??= {
|
|
197
|
-
authMethod: Invitation.AuthMethod.NONE,
|
|
198
|
-
...options ?? {}
|
|
199
|
-
};
|
|
200
|
-
if (host instanceof ServiceContext) {
|
|
201
|
-
return host.invitationsManager.createInvitation(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 194 }), {
|
|
202
|
-
kind: Invitation.Kind.SPACE,
|
|
203
|
-
...options
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
return host.share(options);
|
|
207
|
-
};
|
|
208
|
-
var acceptInvitation = (guest, invitation, guestDeviceProfile) => {
|
|
209
|
-
invitation = sanitizeInvitation(invitation);
|
|
210
|
-
if (guest instanceof ServiceContext) {
|
|
211
|
-
return guest.invitationsManager.acceptInvitation(new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 204 }), {
|
|
212
|
-
invitation,
|
|
213
|
-
deviceProfile: guestDeviceProfile
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
return guest.join(invitation, guestDeviceProfile);
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
// src/packlets/testing/test-builder.ts
|
|
220
|
-
import * as Reactivity from "@effect/experimental/Reactivity";
|
|
221
|
-
import * as Effect from "effect/Effect";
|
|
222
|
-
import * as Layer from "effect/Layer";
|
|
223
|
-
import * as ManagedRuntime from "effect/ManagedRuntime";
|
|
224
|
-
import { Context as Context2 } from "@dxos/context";
|
|
225
|
-
import { CredentialGenerator, createCredentialSignerWithChain } from "@dxos/credentials";
|
|
226
|
-
import { failUndefined } from "@dxos/debug";
|
|
227
|
-
import { EchoHost, MeshEchoReplicator, SpaceManager, valueEncoding } from "@dxos/echo-host";
|
|
228
|
-
import { SqliteMetadataStore } from "@dxos/echo-host";
|
|
229
|
-
import { RuntimeProvider } from "@dxos/effect";
|
|
230
|
-
import { FeedFactory, FeedStore } from "@dxos/feed-store";
|
|
231
|
-
import { SqliteKeyring } from "@dxos/keyring";
|
|
232
|
-
import { MemorySignalManager, MemorySignalManagerContext } from "@dxos/messaging";
|
|
233
|
-
import { MemoryTransportFactory, SwarmNetworkManager } from "@dxos/network-manager";
|
|
234
|
-
import { Invitation as Invitation2 } from "@dxos/protocols/proto/dxos/client/services";
|
|
235
|
-
import { StorageType } from "@dxos/random-access-storage";
|
|
236
|
-
import { layerMemory as sqliteLayerMemory } from "@dxos/sql-sqlite/platform";
|
|
237
|
-
import * as SqlTransaction from "@dxos/sql-sqlite/SqlTransaction";
|
|
238
|
-
import { SqliteBlobStore } from "@dxos/teleport-extension-object-sync";
|
|
239
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/client-services/src/packlets/testing/test-builder.ts";
|
|
240
|
-
var createServiceHost = (config, signalManagerContext) => {
|
|
241
|
-
return new ClientServicesHost({
|
|
242
|
-
config,
|
|
243
|
-
signalManager: new MemorySignalManager(signalManagerContext),
|
|
244
|
-
transportFactory: MemoryTransportFactory,
|
|
245
|
-
runtime: ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie)).runtimeEffect
|
|
246
|
-
});
|
|
247
|
-
};
|
|
248
|
-
var createServiceContext = async ({ signalManagerFactory = async () => {
|
|
249
|
-
const signalContext = new MemorySignalManagerContext();
|
|
250
|
-
return new MemorySignalManager(signalContext);
|
|
251
|
-
}, runtimeProps } = {}) => {
|
|
252
|
-
const signalManager = await signalManagerFactory();
|
|
253
|
-
const networkManager = new SwarmNetworkManager({
|
|
254
|
-
signalManager,
|
|
255
|
-
transportFactory: MemoryTransportFactory
|
|
256
|
-
});
|
|
257
|
-
const runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie)).runtimeEffect;
|
|
258
|
-
return new ServiceContext(networkManager, signalManager, void 0, void 0, runtime, {
|
|
259
|
-
invitationConnectionDefaultProps: {
|
|
260
|
-
teleport: {
|
|
261
|
-
controlHeartbeatInterval: 200
|
|
262
|
-
}
|
|
263
|
-
},
|
|
264
|
-
...runtimeProps
|
|
265
|
-
});
|
|
266
|
-
};
|
|
267
|
-
var createPeers = async (numPeers, signalManagerFactory) => {
|
|
268
|
-
if (!signalManagerFactory) {
|
|
269
|
-
const signalContext = new MemorySignalManagerContext();
|
|
270
|
-
signalManagerFactory = async () => new MemorySignalManager(signalContext);
|
|
271
|
-
}
|
|
272
|
-
return await Promise.all(Array.from(Array(numPeers)).map(async () => {
|
|
273
|
-
const peer = await createServiceContext({
|
|
274
|
-
signalManagerFactory
|
|
275
|
-
});
|
|
276
|
-
await peer.open(new Context2(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 66 }));
|
|
277
|
-
return peer;
|
|
278
|
-
}));
|
|
279
|
-
};
|
|
280
|
-
var createIdentity = async (peer) => {
|
|
281
|
-
await peer.createIdentity();
|
|
282
|
-
return peer;
|
|
283
|
-
};
|
|
284
|
-
var TestBuilder = class {
|
|
285
|
-
signalContext = new MemorySignalManagerContext();
|
|
286
|
-
_ctx = new Context2(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 76 });
|
|
287
|
-
createPeer(peerOptions) {
|
|
288
|
-
const peer = new TestPeer(this.signalContext, peerOptions);
|
|
289
|
-
this._ctx.onDispose(async () => peer.destroy());
|
|
290
|
-
return peer;
|
|
291
|
-
}
|
|
292
|
-
async destroy() {
|
|
293
|
-
await this._ctx.dispose();
|
|
294
|
-
}
|
|
295
|
-
};
|
|
296
|
-
var TestPeer = class {
|
|
297
|
-
_signalContext;
|
|
298
|
-
_opts;
|
|
299
|
-
_props = {};
|
|
300
|
-
_runtime = ManagedRuntime.make(SqlTransaction.layer.pipe(Layer.provideMerge(sqliteLayerMemory), Layer.provideMerge(Reactivity.layer)).pipe(Layer.orDie));
|
|
301
|
-
_feedStorage = new SqliteStorage({
|
|
302
|
-
runtime: this._runtime.runtimeEffect
|
|
303
|
-
});
|
|
304
|
-
constructor(_signalContext, _opts = {
|
|
305
|
-
dataStore: StorageType.RAM
|
|
306
|
-
}) {
|
|
307
|
-
this._signalContext = _signalContext;
|
|
308
|
-
this._opts = _opts;
|
|
309
|
-
}
|
|
310
|
-
get props() {
|
|
311
|
-
return this._props;
|
|
312
|
-
}
|
|
313
|
-
get keyring() {
|
|
314
|
-
return this._props.keyring ??= new SqliteKeyring({
|
|
315
|
-
runtime: this._runtime.runtimeEffect
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
get feedStore() {
|
|
319
|
-
return this._props.feedStore ??= new FeedStore({
|
|
320
|
-
factory: new FeedFactory({
|
|
321
|
-
root: this._feedStorage.createDirectory("feeds"),
|
|
322
|
-
signer: this.keyring,
|
|
323
|
-
hypercore: {
|
|
324
|
-
valueEncoding
|
|
325
|
-
}
|
|
326
|
-
})
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
get metadataStore() {
|
|
330
|
-
return this._props.metadataStore ??= new SqliteMetadataStore({
|
|
331
|
-
runtime: this._runtime.runtimeEffect
|
|
332
|
-
});
|
|
333
|
-
}
|
|
334
|
-
get blobStore() {
|
|
335
|
-
return this._props.blobStore ??= new SqliteBlobStore({
|
|
336
|
-
runtime: this._runtime.runtimeEffect
|
|
337
|
-
});
|
|
338
|
-
}
|
|
339
|
-
get networkManager() {
|
|
340
|
-
return this._props.networkManager ??= new SwarmNetworkManager({
|
|
341
|
-
signalManager: new MemorySignalManager(this._signalContext),
|
|
342
|
-
transportFactory: MemoryTransportFactory
|
|
343
|
-
});
|
|
344
|
-
}
|
|
345
|
-
get spaceManager() {
|
|
346
|
-
return this._props.spaceManager ??= new SpaceManager({
|
|
347
|
-
feedStore: this.feedStore,
|
|
348
|
-
networkManager: this.networkManager,
|
|
349
|
-
metadataStore: this.metadataStore,
|
|
350
|
-
blobStore: this.blobStore
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
get identity() {
|
|
354
|
-
return this._props.signingContext ?? failUndefined();
|
|
355
|
-
}
|
|
356
|
-
get echoHost() {
|
|
357
|
-
return this._props.echoHost ??= new EchoHost({
|
|
358
|
-
runtime: this._runtime.runtimeEffect
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
get meshEchoReplicator() {
|
|
362
|
-
return this._props.meshEchoReplicator ??= new MeshEchoReplicator();
|
|
363
|
-
}
|
|
364
|
-
get dataSpaceManager() {
|
|
365
|
-
return this._props.dataSpaceManager ??= new DataSpaceManager({
|
|
366
|
-
spaceManager: this.spaceManager,
|
|
367
|
-
metadataStore: this.metadataStore,
|
|
368
|
-
keyring: this.keyring,
|
|
369
|
-
signingContext: this.identity,
|
|
370
|
-
feedStore: this.feedStore,
|
|
371
|
-
echoHost: this.echoHost,
|
|
372
|
-
invitationsManager: this.invitationsManager,
|
|
373
|
-
edgeConnection: void 0,
|
|
374
|
-
meshReplicator: this.meshEchoReplicator,
|
|
375
|
-
echoEdgeReplicator: void 0,
|
|
376
|
-
runtimeProps: this._opts.dataSpaceProps
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
get invitationsManager() {
|
|
380
|
-
return this._props.invitationsManager ??= new InvitationsManager(new InvitationsHandler(this.networkManager), (invitation) => {
|
|
381
|
-
if (invitation.kind === Invitation2.Kind.SPACE) {
|
|
382
|
-
return new SpaceInvitationProtocol(this.dataSpaceManager, this.identity, this.keyring, invitation.spaceKey);
|
|
383
|
-
} else {
|
|
384
|
-
throw new Error("not implemented");
|
|
385
|
-
}
|
|
386
|
-
}, this.metadataStore);
|
|
387
|
-
}
|
|
388
|
-
async createIdentity() {
|
|
389
|
-
await this.migrate();
|
|
390
|
-
this._props.signingContext ??= await createSigningContext(this.keyring);
|
|
391
|
-
this.networkManager.setPeerInfo({
|
|
392
|
-
identityKey: this._props.signingContext.identityKey.toHex(),
|
|
393
|
-
peerKey: this._props.signingContext.deviceKey.toHex()
|
|
394
|
-
});
|
|
395
|
-
}
|
|
396
|
-
async migrate() {
|
|
397
|
-
await RuntimeProvider.runPromise(this._runtime.runtimeEffect)(Effect.all([
|
|
398
|
-
this.metadataStore.migrate,
|
|
399
|
-
this.blobStore.migrate,
|
|
400
|
-
this.keyring.migrate,
|
|
401
|
-
this._feedStorage.migrate
|
|
402
|
-
]));
|
|
403
|
-
}
|
|
404
|
-
async destroy() {
|
|
405
|
-
await this._runtime.dispose();
|
|
406
|
-
}
|
|
407
|
-
};
|
|
408
|
-
var createSigningContext = async (keyring) => {
|
|
409
|
-
const identityKey = await keyring.createKey();
|
|
410
|
-
const deviceKey = await keyring.createKey();
|
|
411
|
-
return {
|
|
412
|
-
identityKey,
|
|
413
|
-
deviceKey,
|
|
414
|
-
credentialSigner: createCredentialSignerWithChain(keyring, {
|
|
415
|
-
credential: await new CredentialGenerator(keyring, identityKey, deviceKey).createDeviceAuthorization(deviceKey)
|
|
416
|
-
}, deviceKey),
|
|
417
|
-
recordCredential: async () => {
|
|
418
|
-
},
|
|
419
|
-
getProfile: () => void 0
|
|
420
|
-
};
|
|
421
|
-
};
|
|
422
|
-
export {
|
|
423
|
-
TestBuilder,
|
|
424
|
-
TestPeer,
|
|
425
|
-
acceptInvitation,
|
|
426
|
-
createIdentity,
|
|
427
|
-
createInvitation,
|
|
428
|
-
createMockCredential,
|
|
429
|
-
createPeers,
|
|
430
|
-
createServiceContext,
|
|
431
|
-
createServiceHost,
|
|
432
|
-
createSigningContext,
|
|
433
|
-
performInvitation,
|
|
434
|
-
sanitizeInvitation
|
|
435
|
-
};
|
|
436
|
-
//# sourceMappingURL=index.mjs.map
|