@dxos/client-services 0.8.4-main.f9ba587 → 0.8.4-main.fcc0d83b33
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/browser/{chunk-ERQJUBAW.mjs → chunk-6UNEKAW6.mjs} +3476 -4800
- package/dist/lib/browser/chunk-6UNEKAW6.mjs.map +7 -0
- package/dist/lib/browser/chunk-QCWEHHJW.mjs +24 -0
- package/dist/lib/browser/chunk-QCWEHHJW.mjs.map +7 -0
- package/dist/lib/browser/chunk-XJRPB3GA.mjs +22 -0
- package/dist/lib/browser/chunk-XJRPB3GA.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +451 -145
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs +88 -0
- package/dist/lib/browser/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +7 -0
- package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs +11 -0
- package/dist/lib/browser/packlets/diagnostics/diagnostics-broadcast.mjs.map +7 -0
- package/dist/lib/browser/packlets/locks/browser.mjs +86 -0
- package/dist/lib/browser/packlets/locks/browser.mjs.map +7 -0
- package/dist/lib/browser/packlets/locks/node.mjs +48 -0
- package/dist/lib/browser/packlets/locks/node.mjs.map +7 -0
- package/dist/lib/browser/testing/index.mjs +35 -36
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/chunk-2DT3MZRL.mjs +22 -0
- package/dist/lib/node-esm/chunk-2DT3MZRL.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-2SZHAWBN.mjs +24 -0
- package/dist/lib/node-esm/chunk-2SZHAWBN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-TMEG7JOG.mjs → chunk-NE4VICQ5.mjs} +2953 -4145
- package/dist/lib/node-esm/chunk-NE4VICQ5.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +451 -145
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs +88 -0
- package/dist/lib/node-esm/packlets/diagnostics/browser-diagnostics-broadcast.mjs.map +7 -0
- package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs +11 -0
- package/dist/lib/node-esm/packlets/diagnostics/diagnostics-broadcast.mjs.map +7 -0
- package/dist/lib/node-esm/packlets/locks/browser.mjs +86 -0
- package/dist/lib/node-esm/packlets/locks/browser.mjs.map +7 -0
- package/dist/lib/node-esm/packlets/locks/node.mjs +48 -0
- package/dist/lib/node-esm/packlets/locks/node.mjs.map +7 -0
- package/dist/lib/node-esm/testing/index.mjs +35 -36
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/types/src/index.d.ts +1 -0
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/packlets/agents/edge-agent-manager.d.ts +3 -2
- 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 +3 -2
- package/dist/types/src/packlets/agents/edge-agent-service.d.ts.map +1 -1
- package/dist/types/src/packlets/devices/devices-service.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/devtools.d.ts +20 -20
- 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/keys.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/metadata.d.ts.map +1 -1
- package/dist/types/src/packlets/devtools/network.d.ts +1 -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/browser-diagnostics-broadcast.d.ts +1 -1
- package/dist/types/src/packlets/diagnostics/browser-diagnostics-broadcast.d.ts.map +1 -1
- package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts +1 -1
- 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 +3 -4
- package/dist/types/src/packlets/diagnostics/diagnostics.d.ts.map +1 -1
- package/dist/types/src/packlets/diagnostics/index.d.ts +1 -1
- package/dist/types/src/packlets/diagnostics/index.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/authenticator.d.ts +2 -2
- package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/contacts-service.d.ts +1 -1
- package/dist/types/src/packlets/identity/contacts-service.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-manager.d.ts +7 -7
- package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts +8 -7
- package/dist/types/src/packlets/identity/identity-recovery-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity-service.d.ts +6 -10
- package/dist/types/src/packlets/identity/identity-service.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity.d.ts +9 -12
- package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts +6 -5
- package/dist/types/src/packlets/invitations/device-invitation-protocol.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts +2 -2
- package/dist/types/src/packlets/invitations/edge-invitation-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/index.d.ts +1 -1
- package/dist/types/src/packlets/invitations/index.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-guest-extenstion.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-host-extension.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-protocol.d.ts +8 -5
- package/dist/types/src/packlets/invitations/invitation-protocol.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-state.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-topology.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitations-handler.d.ts +4 -4
- package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitations-manager.d.ts +3 -3
- package/dist/types/src/packlets/invitations/invitations-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitations-service.d.ts +4 -4
- package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts +5 -4
- package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/utils.d.ts.map +1 -1
- package/dist/types/src/packlets/locks/browser.d.ts.map +1 -1
- package/dist/types/src/packlets/locks/index.d.ts +2 -2
- package/dist/types/src/packlets/locks/index.d.ts.map +1 -1
- package/dist/types/src/packlets/locks/node.d.ts.map +1 -1
- package/dist/types/src/packlets/logging/logging-service.d.ts +5 -1
- package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
- package/dist/types/src/packlets/network/network-service.d.ts +7 -6
- package/dist/types/src/packlets/network/network-service.d.ts.map +1 -1
- package/dist/types/src/packlets/services/client-rpc-server.d.ts +5 -5
- package/dist/types/src/packlets/services/client-rpc-server.d.ts.map +1 -1
- package/dist/types/src/packlets/services/feed-syncer.d.ts +59 -0
- package/dist/types/src/packlets/services/feed-syncer.d.ts.map +1 -0
- package/dist/types/src/packlets/services/feed-syncer.test.d.ts +2 -0
- package/dist/types/src/packlets/services/feed-syncer.test.d.ts.map +1 -0
- package/dist/types/src/packlets/services/platform.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-context.d.ts +14 -10
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-host.d.ts +21 -8
- package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-registry.d.ts.map +1 -1
- package/dist/types/src/packlets/services/util.d.ts.map +1 -1
- package/dist/types/src/packlets/space-export/archive-format.d.ts +9 -0
- package/dist/types/src/packlets/space-export/archive-format.d.ts.map +1 -0
- package/dist/types/src/packlets/space-export/index.d.ts +4 -1
- package/dist/types/src/packlets/space-export/index.d.ts.map +1 -1
- package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts +23 -0
- package/dist/types/src/packlets/space-export/serialized-space-reader.d.ts.map +1 -0
- package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts +36 -0
- package/dist/types/src/packlets/space-export/serialized-space-writer.d.ts.map +1 -0
- package/dist/types/src/packlets/space-export/space-archive-reader.d.ts +9 -1
- package/dist/types/src/packlets/space-export/space-archive-reader.d.ts.map +1 -1
- package/dist/types/src/packlets/space-export/space-archive-writer.d.ts +8 -2
- package/dist/types/src/packlets/space-export/space-archive-writer.d.ts.map +1 -1
- package/dist/types/src/packlets/space-export/space-archive.test.d.ts +2 -0
- package/dist/types/src/packlets/space-export/space-archive.test.d.ts.map +1 -0
- package/dist/types/src/packlets/spaces/automerge-space-state.d.ts +1 -1
- package/dist/types/src/packlets/spaces/automerge-space-state.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts +29 -18
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +30 -13
- package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts +2 -2
- package/dist/types/src/packlets/spaces/edge-feed-replicator.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/epoch-migrations.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/genesis.d.ts +2 -1
- package/dist/types/src/packlets/spaces/genesis.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +6 -9
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/spaces-service.d.ts +11 -8
- 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/storage/profile-archive.d.ts.map +1 -1
- package/dist/types/src/packlets/storage/storage.d.ts.map +1 -1
- package/dist/types/src/packlets/storage/util.d.ts.map +1 -1
- package/dist/types/src/packlets/system/system-service.d.ts +2 -2
- package/dist/types/src/packlets/system/system-service.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/credential-utils.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/invitation-utils.d.ts +6 -3
- package/dist/types/src/packlets/testing/invitation-utils.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/test-builder.d.ts +8 -7
- package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/packlets/worker/worker-runtime.d.ts +41 -4
- package/dist/types/src/packlets/worker/worker-runtime.d.ts.map +1 -1
- package/dist/types/src/packlets/worker/worker-session.d.ts +2 -4
- package/dist/types/src/packlets/worker/worker-session.d.ts.map +1 -1
- package/dist/types/src/testing/setup.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +72 -55
- package/src/index.ts +1 -0
- package/src/packlets/agents/edge-agent-manager.ts +10 -7
- package/src/packlets/agents/edge-agent-service.ts +17 -5
- package/src/packlets/devices/devices-service.test.ts +3 -3
- package/src/packlets/devices/devices-service.ts +2 -2
- package/src/packlets/devtools/devtools.ts +29 -29
- package/src/packlets/devtools/feeds.ts +2 -2
- package/src/packlets/devtools/network.ts +1 -1
- package/src/packlets/diagnostics/browser-diagnostics-broadcast.ts +1 -1
- package/src/packlets/diagnostics/diagnostics-broadcast.ts +1 -1
- package/src/packlets/diagnostics/diagnostics-collector.ts +1 -1
- package/src/packlets/diagnostics/diagnostics.ts +2 -3
- package/src/packlets/diagnostics/index.ts +1 -1
- package/src/packlets/identity/authenticator.node.test.ts +1 -1
- package/src/packlets/identity/authenticator.ts +3 -3
- package/src/packlets/identity/contacts-service.ts +2 -2
- package/src/packlets/identity/identity-manager.test.ts +8 -8
- package/src/packlets/identity/identity-manager.ts +25 -24
- package/src/packlets/identity/identity-recovery-manager.ts +22 -18
- package/src/packlets/identity/identity-service.test.ts +8 -28
- package/src/packlets/identity/identity-service.ts +13 -80
- package/src/packlets/identity/identity.test.ts +11 -11
- package/src/packlets/identity/identity.ts +17 -39
- package/src/packlets/invitations/device-invitation-protocol.test.ts +4 -4
- package/src/packlets/invitations/device-invitation-protocol.ts +8 -6
- package/src/packlets/invitations/edge-invitation-handler.ts +10 -6
- package/src/packlets/invitations/index.ts +1 -1
- package/src/packlets/invitations/invitation-guest-extenstion.ts +7 -5
- package/src/packlets/invitations/invitation-host-extension.ts +15 -16
- package/src/packlets/invitations/invitation-protocol.ts +8 -5
- package/src/packlets/invitations/invitation-state.ts +1 -15
- package/src/packlets/invitations/invitations-handler.test.ts +301 -292
- package/src/packlets/invitations/invitations-handler.ts +77 -25
- package/src/packlets/invitations/invitations-manager.ts +43 -18
- package/src/packlets/invitations/invitations-service.ts +10 -10
- package/src/packlets/invitations/space-invitation-protocol.test.ts +26 -25
- package/src/packlets/invitations/space-invitation-protocol.ts +13 -17
- package/src/packlets/invitations/utils.ts +1 -1
- package/src/packlets/locks/browser.ts +1 -1
- package/src/packlets/locks/index.ts +2 -2
- package/src/packlets/logging/logging-service.ts +22 -17
- package/src/packlets/logging/logging.test.ts +1 -1
- package/src/packlets/network/network-service.test.ts +3 -3
- package/src/packlets/network/network-service.ts +12 -10
- package/src/packlets/services/client-rpc-server.ts +20 -17
- package/src/packlets/services/feed-syncer.test.ts +340 -0
- package/src/packlets/services/feed-syncer.ts +337 -0
- package/src/packlets/services/platform.ts +7 -1
- package/src/packlets/services/service-context.test.ts +4 -3
- package/src/packlets/services/service-context.ts +147 -64
- package/src/packlets/services/service-host.test.ts +10 -9
- package/src/packlets/services/service-host.ts +86 -47
- package/src/packlets/services/service-registry.test.ts +1 -1
- package/src/packlets/space-export/archive-format.ts +42 -0
- package/src/packlets/space-export/index.ts +4 -1
- package/src/packlets/space-export/serialized-space-reader.ts +111 -0
- package/src/packlets/space-export/serialized-space-writer.ts +253 -0
- package/src/packlets/space-export/space-archive-reader.ts +65 -4
- package/src/packlets/space-export/space-archive-writer.ts +44 -6
- package/src/packlets/space-export/space-archive.test.ts +461 -0
- package/src/packlets/space-export/tar.test.ts +1 -1
- package/src/packlets/spaces/automerge-space-state.ts +1 -1
- package/src/packlets/spaces/data-space-manager.test.ts +79 -13
- package/src/packlets/spaces/data-space-manager.ts +129 -124
- package/src/packlets/spaces/data-space.ts +65 -39
- package/src/packlets/spaces/edge-feed-replicator.test.ts +4 -4
- package/src/packlets/spaces/edge-feed-replicator.ts +13 -11
- package/src/packlets/spaces/epoch-migrations.ts +5 -5
- package/src/packlets/spaces/genesis.ts +6 -1
- package/src/packlets/spaces/notarization-plugin.test.ts +3 -3
- package/src/packlets/spaces/notarization-plugin.ts +13 -12
- package/src/packlets/spaces/spaces-service.test.ts +20 -12
- package/src/packlets/spaces/spaces-service.ts +138 -38
- package/src/packlets/storage/profile-archive.ts +1 -1
- package/src/packlets/storage/storage.ts +7 -8
- package/src/packlets/system/system-service.test.ts +1 -1
- package/src/packlets/system/system-service.ts +4 -4
- package/src/packlets/testing/invitation-utils.ts +11 -7
- package/src/packlets/testing/test-builder.ts +39 -13
- package/src/packlets/worker/worker-runtime.ts +189 -17
- package/src/packlets/worker/worker-session.ts +15 -21
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-ERQJUBAW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TMEG7JOG.mjs.map +0 -7
- package/dist/types/src/packlets/identity/default-space-state-machine.d.ts +0 -19
- package/dist/types/src/packlets/identity/default-space-state-machine.d.ts.map +0 -1
- package/src/packlets/identity/default-space-state-machine.ts +0 -44
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
import { describe, test } from 'vitest';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { Context } from '@dxos/context';
|
|
8
|
+
import { MemorySignalManager, MemorySignalManagerContext } from '@dxos/messaging';
|
|
8
9
|
import { Invitation } from '@dxos/protocols/proto/dxos/client/services';
|
|
9
10
|
import { openAndClose } from '@dxos/test-utils';
|
|
10
11
|
|
|
@@ -19,7 +20,7 @@ describe('services/ServiceContext', () => {
|
|
|
19
20
|
const device2 = await createOpenServiceContext(networkContext);
|
|
20
21
|
await Promise.all(performInvitation({ host: device1, guest: device2, options: { kind: Invitation.Kind.DEVICE } }));
|
|
21
22
|
|
|
22
|
-
const space1 = await device1.dataSpaceManager!.createSpace();
|
|
23
|
+
const space1 = await device1.dataSpaceManager!.createSpace(new Context());
|
|
23
24
|
await device2.dataSpaceManager!.waitUntilSpaceReady(space1!.key);
|
|
24
25
|
const space2 = await device2.dataSpaceManager!.spaces.get(space1.key);
|
|
25
26
|
await space2!.inner.controlPipeline.state.waitUntilTimeframe(space1.inner.controlPipeline.state.timeframe);
|
|
@@ -35,7 +36,7 @@ describe('services/ServiceContext', () => {
|
|
|
35
36
|
|
|
36
37
|
const identity2 = await createOpenServiceContext(networkContext);
|
|
37
38
|
await identity2.createIdentity();
|
|
38
|
-
const space1 = await identity2.dataSpaceManager!.createSpace();
|
|
39
|
+
const space1 = await identity2.dataSpaceManager!.createSpace(new Context());
|
|
39
40
|
await Promise.all(
|
|
40
41
|
performInvitation({
|
|
41
42
|
host: identity2,
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import type * as SqlClient from '@effect/sql/SqlClient';
|
|
6
|
+
|
|
5
7
|
import { Mutex, Trigger } from '@dxos/async';
|
|
6
8
|
import { Context, Resource } from '@dxos/context';
|
|
7
|
-
import {
|
|
9
|
+
import { type CredentialProcessor, getCredentialAssertion } from '@dxos/credentials';
|
|
8
10
|
import { failUndefined, warnAfterTimeout } from '@dxos/debug';
|
|
9
11
|
import {
|
|
10
12
|
EchoEdgeReplicator,
|
|
@@ -15,49 +17,54 @@ import {
|
|
|
15
17
|
valueEncoding,
|
|
16
18
|
} from '@dxos/echo-pipeline';
|
|
17
19
|
import { createChainEdgeIdentity, createEphemeralEdgeIdentity } from '@dxos/edge-client';
|
|
18
|
-
import type {
|
|
20
|
+
import type { EdgeConnection, EdgeHttpClient, EdgeIdentity } from '@dxos/edge-client';
|
|
21
|
+
import { type RuntimeProvider } from '@dxos/effect';
|
|
19
22
|
import { FeedFactory, FeedStore } from '@dxos/feed-store';
|
|
20
23
|
import { invariant } from '@dxos/invariant';
|
|
21
24
|
import { Keyring } from '@dxos/keyring';
|
|
22
|
-
import {
|
|
25
|
+
import { type SpaceId } from '@dxos/keys';
|
|
23
26
|
import { type LevelDB } from '@dxos/kv-store';
|
|
24
27
|
import { log } from '@dxos/log';
|
|
25
28
|
import { type SignalManager } from '@dxos/messaging';
|
|
26
29
|
import { type SwarmNetworkManager } from '@dxos/network-manager';
|
|
27
|
-
import { InvalidStorageVersionError, STORAGE_VERSION
|
|
30
|
+
import { InvalidStorageVersionError, STORAGE_VERSION } from '@dxos/protocols';
|
|
31
|
+
import { FeedProtocol } from '@dxos/protocols';
|
|
28
32
|
import { Invitation } from '@dxos/protocols/proto/dxos/client/services';
|
|
29
33
|
import { type Runtime } from '@dxos/protocols/proto/dxos/config';
|
|
30
34
|
import type { FeedMessage } from '@dxos/protocols/proto/dxos/echo/feed';
|
|
31
35
|
import { type Credential, type ProfileDocument } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
32
36
|
import { type Storage } from '@dxos/random-access-storage';
|
|
37
|
+
import type * as SqlTransaction from '@dxos/sql-sqlite/SqlTransaction';
|
|
33
38
|
import { BlobStore } from '@dxos/teleport-extension-object-sync';
|
|
34
39
|
import { trace as Trace } from '@dxos/tracing';
|
|
35
40
|
import { safeInstanceof } from '@dxos/util';
|
|
36
41
|
|
|
37
42
|
import { EdgeAgentManager } from '../agents';
|
|
38
43
|
import {
|
|
39
|
-
IdentityManager,
|
|
40
44
|
type CreateIdentityOptions,
|
|
41
|
-
type
|
|
42
|
-
|
|
45
|
+
type Identity,
|
|
46
|
+
IdentityManager,
|
|
47
|
+
type IdentityManagerProps,
|
|
48
|
+
type JoinIdentityProps,
|
|
43
49
|
} from '../identity';
|
|
44
50
|
import { EdgeIdentityRecoveryManager } from '../identity/identity-recovery-manager';
|
|
45
51
|
import {
|
|
46
52
|
DeviceInvitationProtocol,
|
|
47
|
-
type
|
|
53
|
+
type InvitationConnectionProps,
|
|
54
|
+
type InvitationProtocol,
|
|
48
55
|
InvitationsHandler,
|
|
49
56
|
InvitationsManager,
|
|
50
57
|
SpaceInvitationProtocol,
|
|
51
|
-
type InvitationProtocol,
|
|
52
58
|
} from '../invitations';
|
|
53
|
-
import { DataSpaceManager, type
|
|
59
|
+
import { DataSpaceManager, type DataSpaceManagerRuntimeProps, type SigningContext } from '../spaces';
|
|
60
|
+
import { FeedSyncer } from './feed-syncer';
|
|
54
61
|
|
|
55
|
-
export type
|
|
56
|
-
|
|
62
|
+
export type ServiceContextRuntimeProps = Pick<
|
|
63
|
+
IdentityManagerProps,
|
|
57
64
|
'devicePresenceOfflineTimeout' | 'devicePresenceAnnounceInterval'
|
|
58
65
|
> &
|
|
59
|
-
|
|
60
|
-
|
|
66
|
+
DataSpaceManagerRuntimeProps & {
|
|
67
|
+
invitationConnectionDefaultProps?: InvitationConnectionProps;
|
|
61
68
|
disableP2pReplication?: boolean;
|
|
62
69
|
enableVectorIndexing?: boolean;
|
|
63
70
|
};
|
|
@@ -67,7 +74,7 @@ export type ServiceContextRuntimeParams = Pick<
|
|
|
67
74
|
// TODO(burdon): Rename/break-up into smaller components. And/or make members private.
|
|
68
75
|
// TODO(dmaretskyi): Gets duplicated in CJS build between normal and testing bundles.
|
|
69
76
|
@safeInstanceof('dxos.client-services.ServiceContext')
|
|
70
|
-
@Trace.resource()
|
|
77
|
+
@Trace.resource({ lifecycle: true })
|
|
71
78
|
export class ServiceContext extends Resource {
|
|
72
79
|
private readonly _edgeIdentityUpdateMutex = new Mutex();
|
|
73
80
|
|
|
@@ -84,6 +91,7 @@ export class ServiceContext extends Resource {
|
|
|
84
91
|
public readonly echoHost: EchoHost;
|
|
85
92
|
private readonly _meshReplicator?: MeshEchoReplicator = undefined;
|
|
86
93
|
private readonly _echoEdgeReplicator?: EchoEdgeReplicator = undefined;
|
|
94
|
+
private readonly _feedSyncer?: FeedSyncer = undefined;
|
|
87
95
|
|
|
88
96
|
// Initialized after identity is initialized.
|
|
89
97
|
public dataSpaceManager?: DataSpaceManager;
|
|
@@ -96,8 +104,6 @@ export class ServiceContext extends Resource {
|
|
|
96
104
|
|
|
97
105
|
private _deviceSpaceSync?: CredentialProcessor;
|
|
98
106
|
|
|
99
|
-
private readonly _instanceId = PublicKey.random().toHex();
|
|
100
|
-
|
|
101
107
|
constructor(
|
|
102
108
|
public readonly storage: Storage,
|
|
103
109
|
public readonly level: LevelDB,
|
|
@@ -105,11 +111,15 @@ export class ServiceContext extends Resource {
|
|
|
105
111
|
public readonly signalManager: SignalManager,
|
|
106
112
|
private readonly _edgeConnection: EdgeConnection | undefined,
|
|
107
113
|
private readonly _edgeHttpClient: EdgeHttpClient | undefined,
|
|
108
|
-
|
|
114
|
+
private readonly _runtime: RuntimeProvider.RuntimeProvider<SqlClient.SqlClient | SqlTransaction.SqlTransaction>,
|
|
115
|
+
public readonly _runtimeProps?: ServiceContextRuntimeProps,
|
|
109
116
|
private readonly _edgeFeatures?: Runtime.Client.EdgeFeatures,
|
|
110
117
|
) {
|
|
111
118
|
super();
|
|
112
119
|
|
|
120
|
+
log('runtimeProps', this._runtimeProps);
|
|
121
|
+
log('edgeFeatures', this._edgeFeatures);
|
|
122
|
+
|
|
113
123
|
// TODO(burdon): Move strings to constants.
|
|
114
124
|
this.metadataStore = new MetadataStore(storage.createDirectory('metadata'));
|
|
115
125
|
this.blobStore = new BlobStore(storage.createDirectory('blobs'));
|
|
@@ -131,7 +141,7 @@ export class ServiceContext extends Resource {
|
|
|
131
141
|
networkManager: this.networkManager,
|
|
132
142
|
blobStore: this.blobStore,
|
|
133
143
|
metadataStore: this.metadataStore,
|
|
134
|
-
disableP2pReplication: this.
|
|
144
|
+
disableP2pReplication: this._runtimeProps?.disableP2pReplication,
|
|
135
145
|
});
|
|
136
146
|
|
|
137
147
|
this.identityManager = new IdentityManager({
|
|
@@ -139,8 +149,8 @@ export class ServiceContext extends Resource {
|
|
|
139
149
|
keyring: this.keyring,
|
|
140
150
|
feedStore: this.feedStore,
|
|
141
151
|
spaceManager: this.spaceManager,
|
|
142
|
-
devicePresenceOfflineTimeout: this.
|
|
143
|
-
devicePresenceAnnounceInterval: this.
|
|
152
|
+
devicePresenceOfflineTimeout: this._runtimeProps?.devicePresenceOfflineTimeout,
|
|
153
|
+
devicePresenceAnnounceInterval: this._runtimeProps?.devicePresenceAnnounceInterval,
|
|
144
154
|
edgeConnection: this._edgeConnection,
|
|
145
155
|
edgeFeatures: this._edgeFeatures,
|
|
146
156
|
});
|
|
@@ -156,17 +166,21 @@ export class ServiceContext extends Resource {
|
|
|
156
166
|
kv: this.level,
|
|
157
167
|
peerIdProvider: () => this.identityManager.identity?.deviceKey?.toHex(),
|
|
158
168
|
getSpaceKeyByRootDocumentId: (documentId) => this.spaceManager.findSpaceByRootDocumentId(documentId)?.key,
|
|
159
|
-
|
|
160
|
-
|
|
169
|
+
runtime: this._runtime,
|
|
170
|
+
syncQueue: async (ctx, request) => {
|
|
171
|
+
return this._feedSyncer?.syncBlocking(ctx, {
|
|
172
|
+
spaceId: request.spaceId as SpaceId,
|
|
173
|
+
subspaceTag: request.subspaceTag,
|
|
174
|
+
shouldPush: request.shouldPush,
|
|
175
|
+
shouldPull: request.shouldPull,
|
|
176
|
+
});
|
|
161
177
|
},
|
|
162
178
|
});
|
|
163
179
|
|
|
164
|
-
this._meshReplicator = new MeshEchoReplicator();
|
|
165
|
-
|
|
166
180
|
this.invitations = new InvitationsHandler(
|
|
167
181
|
this.networkManager, //
|
|
168
182
|
this._edgeHttpClient,
|
|
169
|
-
|
|
183
|
+
_runtimeProps?.invitationConnectionDefaultProps,
|
|
170
184
|
);
|
|
171
185
|
this.invitationsManager = new InvitationsManager(
|
|
172
186
|
this.invitations,
|
|
@@ -186,80 +200,129 @@ export class ServiceContext extends Resource {
|
|
|
186
200
|
),
|
|
187
201
|
);
|
|
188
202
|
|
|
189
|
-
if (!this.
|
|
203
|
+
if (!this._runtimeProps?.disableP2pReplication) {
|
|
190
204
|
this._meshReplicator = new MeshEchoReplicator();
|
|
191
205
|
}
|
|
192
|
-
if (this._edgeConnection && this._edgeFeatures?.echoReplicator) {
|
|
206
|
+
if (this._edgeConnection && this._edgeFeatures?.echoReplicator && this._edgeHttpClient) {
|
|
193
207
|
this._echoEdgeReplicator = new EchoEdgeReplicator({
|
|
194
208
|
edgeConnection: this._edgeConnection,
|
|
209
|
+
edgeHttpClient: this._edgeHttpClient,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (this.echoHost.feedStore && this._edgeConnection) {
|
|
214
|
+
this._feedSyncer = new FeedSyncer({
|
|
215
|
+
runtime: this._runtime,
|
|
216
|
+
feedStore: this.echoHost.feedStore,
|
|
217
|
+
edgeClient: this._edgeConnection,
|
|
218
|
+
peerId: this.identityManager.identity?.deviceKey?.toHex() ?? '',
|
|
219
|
+
getSpaceIds: () => this.echoHost!.spaceIds,
|
|
220
|
+
syncNamespaces: [FeedProtocol.WellKnownNamespaces.data, FeedProtocol.WellKnownNamespaces.trace],
|
|
195
221
|
});
|
|
196
222
|
}
|
|
197
223
|
}
|
|
198
224
|
|
|
199
|
-
@Trace.span()
|
|
225
|
+
@Trace.span({ op: 'lifecycle' })
|
|
200
226
|
protected override async _open(ctx: Context): Promise<void> {
|
|
201
227
|
await this._checkStorageVersion();
|
|
202
228
|
|
|
203
229
|
log('opening...');
|
|
204
|
-
log.trace('dxos.sdk.service-context.open', trace.begin({ id: this._instanceId }));
|
|
205
230
|
|
|
231
|
+
log('opening identityManager...');
|
|
206
232
|
await this.identityManager.open(ctx);
|
|
233
|
+
log('identityManager opened', { hasIdentity: !!this.identityManager.identity });
|
|
234
|
+
|
|
235
|
+
log('setting network identity...');
|
|
236
|
+
await this._setNetworkIdentity({ identity: this.identityManager.identity });
|
|
237
|
+
log('network identity set');
|
|
207
238
|
|
|
208
|
-
|
|
239
|
+
log('opening edge connection...');
|
|
240
|
+
await this._edgeConnection?.open(ctx);
|
|
241
|
+
log('edge connection opened');
|
|
209
242
|
|
|
210
|
-
|
|
211
|
-
await this.signalManager.open();
|
|
243
|
+
log('opening signal manager...');
|
|
244
|
+
await this.signalManager.open(ctx);
|
|
245
|
+
log('signal manager opened');
|
|
246
|
+
|
|
247
|
+
log('opening network manager...');
|
|
212
248
|
await this.networkManager.open();
|
|
249
|
+
log('network manager opened');
|
|
213
250
|
|
|
251
|
+
log('opening echo host...');
|
|
214
252
|
await this.echoHost.open(ctx);
|
|
253
|
+
log('echo host opened');
|
|
215
254
|
|
|
216
255
|
if (this._meshReplicator) {
|
|
217
|
-
|
|
256
|
+
log('adding mesh replicator...');
|
|
257
|
+
await this.echoHost.addReplicator(ctx, this._meshReplicator);
|
|
258
|
+
log('mesh replicator added');
|
|
218
259
|
}
|
|
219
260
|
if (this._echoEdgeReplicator) {
|
|
220
|
-
|
|
261
|
+
log('adding edge replicator...');
|
|
262
|
+
await this.echoHost.addReplicator(ctx, this._echoEdgeReplicator);
|
|
263
|
+
log('edge replicator added');
|
|
221
264
|
}
|
|
222
265
|
|
|
266
|
+
log('loading metadata store...');
|
|
223
267
|
await this.metadataStore.load();
|
|
268
|
+
log('metadata store loaded');
|
|
269
|
+
|
|
270
|
+
log('opening space manager...');
|
|
224
271
|
await this.spaceManager.open();
|
|
272
|
+
log('space manager opened');
|
|
225
273
|
|
|
226
274
|
if (this.identityManager.identity) {
|
|
227
|
-
|
|
275
|
+
log('joining network...');
|
|
276
|
+
await this.identityManager.identity.joinNetwork(ctx);
|
|
277
|
+
log('network joined');
|
|
278
|
+
|
|
279
|
+
log('initializing spaces...(calling _initialize)');
|
|
228
280
|
await this._initialize(ctx);
|
|
281
|
+
log('spaces initialized');
|
|
282
|
+
} else {
|
|
283
|
+
log('no identity, skipping network join and space initialization');
|
|
229
284
|
}
|
|
230
285
|
|
|
231
|
-
|
|
286
|
+
log('opening feed syncer...');
|
|
287
|
+
await this._feedSyncer?.open(ctx);
|
|
288
|
+
log('feed syncer opened');
|
|
289
|
+
|
|
290
|
+
log('loading persistent invitations...');
|
|
291
|
+
const loadedInvitations = await this.invitationsManager.loadPersistentInvitations(ctx);
|
|
232
292
|
log('loaded persistent invitations', { count: loadedInvitations.invitations?.length });
|
|
233
293
|
|
|
234
|
-
log.trace('dxos.sdk.service-context.open', trace.end({ id: this._instanceId }));
|
|
235
294
|
log('opened');
|
|
236
295
|
}
|
|
237
296
|
|
|
238
297
|
protected override async _close(ctx: Context): Promise<void> {
|
|
239
298
|
log('closing...');
|
|
299
|
+
|
|
300
|
+
await this._feedSyncer?.close();
|
|
301
|
+
|
|
240
302
|
if (this._deviceSpaceSync && this.identityManager.identity) {
|
|
241
303
|
await this.identityManager.identity.space.spaceState.removeCredentialProcessor(this._deviceSpaceSync);
|
|
242
304
|
}
|
|
243
|
-
await this.dataSpaceManager?.close();
|
|
305
|
+
await this.dataSpaceManager?.close(ctx);
|
|
244
306
|
await this.edgeAgentManager?.close();
|
|
245
|
-
await this.identityManager.close();
|
|
307
|
+
await this.identityManager.close(ctx);
|
|
246
308
|
await this.spaceManager.close();
|
|
247
|
-
await this.feedStore.close();
|
|
248
|
-
await this.metadataStore.close();
|
|
249
|
-
|
|
250
309
|
await this.echoHost.close(ctx);
|
|
251
|
-
|
|
310
|
+
|
|
311
|
+
await this.networkManager.close(ctx);
|
|
252
312
|
await this.signalManager.close();
|
|
253
313
|
await this._edgeConnection?.close();
|
|
314
|
+
await this.feedStore.close();
|
|
315
|
+
await this.metadataStore.close();
|
|
254
316
|
|
|
255
317
|
log('closed');
|
|
256
318
|
}
|
|
257
319
|
|
|
258
|
-
async createIdentity(params: CreateIdentityOptions = {}) {
|
|
259
|
-
|
|
260
|
-
await this.
|
|
261
|
-
await
|
|
262
|
-
await
|
|
320
|
+
async createIdentity(params: CreateIdentityOptions = {}, ctx?: Context) {
|
|
321
|
+
ctx ??= this._ctx;
|
|
322
|
+
const identity = await this.identityManager.createIdentity(params, ctx);
|
|
323
|
+
await this._setNetworkIdentity({ identity });
|
|
324
|
+
await identity.joinNetwork(ctx);
|
|
325
|
+
await this._initialize(ctx);
|
|
263
326
|
return identity;
|
|
264
327
|
}
|
|
265
328
|
|
|
@@ -282,12 +345,12 @@ export class ServiceContext extends Resource {
|
|
|
282
345
|
}
|
|
283
346
|
}
|
|
284
347
|
|
|
285
|
-
private async _acceptIdentity(params:
|
|
286
|
-
const { identity, identityRecord } = await this.identityManager.prepareIdentity(params);
|
|
287
|
-
await this._setNetworkIdentity({ deviceCredential: params.authorizedDeviceCredential
|
|
288
|
-
await identity.joinNetwork();
|
|
348
|
+
private async _acceptIdentity(params: JoinIdentityProps) {
|
|
349
|
+
const { identity, identityRecord } = await this.identityManager.prepareIdentity(params, this._ctx);
|
|
350
|
+
await this._setNetworkIdentity({ deviceCredential: params.authorizedDeviceCredential!, identity });
|
|
351
|
+
await identity.joinNetwork(this._ctx);
|
|
289
352
|
await this.identityManager.acceptIdentity(identity, identityRecord, params.deviceProfile);
|
|
290
|
-
await this._initialize(
|
|
353
|
+
await this._initialize(this._ctx);
|
|
291
354
|
return identity;
|
|
292
355
|
}
|
|
293
356
|
|
|
@@ -302,7 +365,7 @@ export class ServiceContext extends Resource {
|
|
|
302
365
|
// Called when identity is created.
|
|
303
366
|
@Trace.span()
|
|
304
367
|
private async _initialize(ctx: Context): Promise<void> {
|
|
305
|
-
log('
|
|
368
|
+
log('_initialize: start');
|
|
306
369
|
const identity = this.identityManager.identity ?? failUndefined();
|
|
307
370
|
const signingContext: SigningContext = {
|
|
308
371
|
credentialSigner: identity.getIdentityCredentialSigner(),
|
|
@@ -314,6 +377,7 @@ export class ServiceContext extends Resource {
|
|
|
314
377
|
},
|
|
315
378
|
};
|
|
316
379
|
|
|
380
|
+
log('_initialize: creating DataSpaceManager');
|
|
317
381
|
this.dataSpaceManager = new DataSpaceManager({
|
|
318
382
|
spaceManager: this.spaceManager,
|
|
319
383
|
metadataStore: this.metadataStore,
|
|
@@ -326,10 +390,12 @@ export class ServiceContext extends Resource {
|
|
|
326
390
|
edgeHttpClient: this._edgeHttpClient,
|
|
327
391
|
echoEdgeReplicator: this._echoEdgeReplicator,
|
|
328
392
|
meshReplicator: this._meshReplicator,
|
|
329
|
-
|
|
393
|
+
runtimeProps: this._runtimeProps as DataSpaceManagerRuntimeProps,
|
|
330
394
|
edgeFeatures: this._edgeFeatures,
|
|
331
395
|
});
|
|
332
|
-
|
|
396
|
+
log('_initialize: opening DataSpaceManager...');
|
|
397
|
+
await this.dataSpaceManager.open(ctx);
|
|
398
|
+
log('_initialize: DataSpaceManager opened');
|
|
333
399
|
|
|
334
400
|
this.edgeAgentManager = new EdgeAgentManager(
|
|
335
401
|
this._edgeFeatures,
|
|
@@ -337,13 +403,16 @@ export class ServiceContext extends Resource {
|
|
|
337
403
|
this.dataSpaceManager,
|
|
338
404
|
identity,
|
|
339
405
|
);
|
|
340
|
-
|
|
406
|
+
log('_initialize: opening EdgeAgentManager...');
|
|
407
|
+
await this.edgeAgentManager.open(ctx);
|
|
408
|
+
log('_initialize: EdgeAgentManager opened');
|
|
341
409
|
|
|
342
410
|
this._handlerFactories.set(Invitation.Kind.SPACE, (invitation) => {
|
|
343
411
|
invariant(this.dataSpaceManager, 'dataSpaceManager not initialized yet');
|
|
344
412
|
return new SpaceInvitationProtocol(this.dataSpaceManager, signingContext, this.keyring, invitation.spaceKey);
|
|
345
413
|
});
|
|
346
414
|
this.initialized.wake();
|
|
415
|
+
log('_initialize: initialized.wake() called');
|
|
347
416
|
|
|
348
417
|
this._deviceSpaceSync = {
|
|
349
418
|
processCredential: async (credential: Credential) => {
|
|
@@ -366,9 +435,10 @@ export class ServiceContext extends Resource {
|
|
|
366
435
|
|
|
367
436
|
try {
|
|
368
437
|
log('accepting space recorded in halo', { details: assertion });
|
|
369
|
-
await this.dataSpaceManager.acceptSpace({
|
|
438
|
+
await this.dataSpaceManager.acceptSpace(this._ctx, {
|
|
370
439
|
spaceKey: assertion.spaceKey,
|
|
371
440
|
genesisFeedKey: assertion.genesisFeedKey,
|
|
441
|
+
tags: assertion.tags,
|
|
372
442
|
});
|
|
373
443
|
} catch (err) {
|
|
374
444
|
log.catch(err);
|
|
@@ -379,33 +449,42 @@ export class ServiceContext extends Resource {
|
|
|
379
449
|
await identity.space.spaceState.addCredentialProcessor(this._deviceSpaceSync);
|
|
380
450
|
}
|
|
381
451
|
|
|
382
|
-
private async _setNetworkIdentity(params?: { deviceCredential
|
|
452
|
+
private async _setNetworkIdentity(params?: { deviceCredential?: Credential; identity?: Identity }): Promise<void> {
|
|
453
|
+
log('_setNetworkIdentity: acquiring mutex...');
|
|
383
454
|
using _ = await this._edgeIdentityUpdateMutex.acquire();
|
|
455
|
+
log('_setNetworkIdentity: mutex acquired');
|
|
384
456
|
|
|
385
457
|
let edgeIdentity: EdgeIdentity;
|
|
386
|
-
const identity =
|
|
458
|
+
const identity = params?.identity;
|
|
387
459
|
if (identity) {
|
|
388
|
-
log('
|
|
460
|
+
log('_setNetworkIdentity: has identity', {
|
|
389
461
|
identity: identity.identityKey.toHex(),
|
|
390
|
-
|
|
462
|
+
hasDeviceCredential: !!params?.deviceCredential,
|
|
391
463
|
});
|
|
392
464
|
|
|
393
465
|
if (params?.deviceCredential) {
|
|
466
|
+
log('_setNetworkIdentity: creating chain edge identity with device credential...');
|
|
394
467
|
edgeIdentity = await createChainEdgeIdentity(
|
|
395
468
|
identity.signer,
|
|
396
469
|
identity.identityKey,
|
|
397
470
|
identity.deviceKey,
|
|
398
|
-
|
|
471
|
+
{ credential: params.deviceCredential },
|
|
399
472
|
[], // TODO(dmaretskyi): Service access credentials.
|
|
400
473
|
);
|
|
474
|
+
log('_setNetworkIdentity: chain edge identity created');
|
|
401
475
|
} else {
|
|
476
|
+
log('_setNetworkIdentity: waiting for identity.ready()...');
|
|
402
477
|
// TODO: throw here or from identity if device chain can't be loaded, to avoid indefinite hangup
|
|
403
478
|
await warnAfterTimeout(10_000, 'Waiting for identity to be ready for edge connection', async () => {
|
|
404
479
|
await identity.ready();
|
|
405
480
|
});
|
|
481
|
+
log('_setNetworkIdentity: identity.ready() resolved', {
|
|
482
|
+
hasDeviceCredentialChain: !!identity.deviceCredentialChain,
|
|
483
|
+
});
|
|
406
484
|
|
|
407
485
|
invariant(identity.deviceCredentialChain);
|
|
408
486
|
|
|
487
|
+
log('_setNetworkIdentity: creating chain edge identity...');
|
|
409
488
|
edgeIdentity = await createChainEdgeIdentity(
|
|
410
489
|
identity.signer,
|
|
411
490
|
identity.identityKey,
|
|
@@ -413,9 +492,12 @@ export class ServiceContext extends Resource {
|
|
|
413
492
|
identity.deviceCredentialChain,
|
|
414
493
|
[], // TODO(dmaretskyi): Service access credentials.
|
|
415
494
|
);
|
|
495
|
+
log('_setNetworkIdentity: chain edge identity created');
|
|
416
496
|
}
|
|
417
497
|
} else {
|
|
498
|
+
log('_setNetworkIdentity: no identity, creating ephemeral edge identity...');
|
|
418
499
|
edgeIdentity = await createEphemeralEdgeIdentity();
|
|
500
|
+
log('_setNetworkIdentity: ephemeral edge identity created');
|
|
419
501
|
}
|
|
420
502
|
|
|
421
503
|
this._edgeConnection?.setIdentity(edgeIdentity);
|
|
@@ -424,5 +506,6 @@ export class ServiceContext extends Resource {
|
|
|
424
506
|
identityKey: edgeIdentity.identityKey,
|
|
425
507
|
peerKey: edgeIdentity.peerKey,
|
|
426
508
|
});
|
|
509
|
+
log('_setNetworkIdentity: done');
|
|
427
510
|
}
|
|
428
511
|
}
|
|
@@ -3,15 +3,16 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { rmSync } from 'node:fs';
|
|
6
|
-
import { afterEach,
|
|
6
|
+
import { afterEach, describe, expect, onTestFinished, test } from 'vitest';
|
|
7
7
|
|
|
8
|
-
import { asyncTimeout, latch
|
|
8
|
+
import { Trigger, asyncTimeout, latch } from '@dxos/async';
|
|
9
9
|
import { Config } from '@dxos/config';
|
|
10
10
|
import { Context } from '@dxos/context';
|
|
11
11
|
import { verifyPresentation } from '@dxos/credentials';
|
|
12
12
|
import { type PublicKey } from '@dxos/keys';
|
|
13
13
|
import { MemorySignalManagerContext } from '@dxos/messaging';
|
|
14
14
|
import { type Identity } from '@dxos/protocols/proto/dxos/client/services';
|
|
15
|
+
import { MembershipPolicy } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
15
16
|
import { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
16
17
|
import { isNode } from '@dxos/util';
|
|
17
18
|
|
|
@@ -28,16 +29,16 @@ describe('ClientServicesHost', () => {
|
|
|
28
29
|
test('open and close', async () => {
|
|
29
30
|
const host = createServiceHost(new Config(), new MemorySignalManagerContext());
|
|
30
31
|
await host.open(new Context());
|
|
31
|
-
await host.close();
|
|
32
|
+
await host.close(Context.default());
|
|
32
33
|
});
|
|
33
34
|
|
|
34
35
|
test('queryCredentials', async () => {
|
|
35
36
|
const host = createServiceHost(new Config(), new MemorySignalManagerContext());
|
|
36
37
|
await host.open(new Context());
|
|
37
|
-
onTestFinished(() => host.close());
|
|
38
|
+
onTestFinished(() => host.close(Context.default()));
|
|
38
39
|
|
|
39
40
|
await host.services.IdentityService!.createIdentity({});
|
|
40
|
-
const { spaceKey } = await host.services.SpacesService!.createSpace();
|
|
41
|
+
const { spaceKey } = await host.services.SpacesService!.createSpace({ membershipPolicy: MembershipPolicy.INVITE });
|
|
41
42
|
|
|
42
43
|
const stream = host.services.SpacesService!.queryCredentials({ spaceKey });
|
|
43
44
|
const [done, tick] = latch({ count: 3 });
|
|
@@ -53,7 +54,7 @@ describe('ClientServicesHost', () => {
|
|
|
53
54
|
test('write and query credentials', async () => {
|
|
54
55
|
const host = createServiceHost(new Config(), new MemorySignalManagerContext());
|
|
55
56
|
await host.open(new Context());
|
|
56
|
-
onTestFinished(() => host.close());
|
|
57
|
+
onTestFinished(() => host.close(Context.default()));
|
|
57
58
|
|
|
58
59
|
await host.services.IdentityService!.createIdentity({});
|
|
59
60
|
|
|
@@ -90,7 +91,7 @@ describe('ClientServicesHost', () => {
|
|
|
90
91
|
test('sign presentation', async () => {
|
|
91
92
|
const host = createServiceHost(new Config(), new MemorySignalManagerContext());
|
|
92
93
|
await host.open(new Context());
|
|
93
|
-
onTestFinished(() => host.close());
|
|
94
|
+
onTestFinished(() => host.close(Context.default()));
|
|
94
95
|
|
|
95
96
|
await host.services.IdentityService!.createIdentity({});
|
|
96
97
|
|
|
@@ -127,7 +128,7 @@ describe('ClientServicesHost', () => {
|
|
|
127
128
|
expect(host.context.storage.size).to.exist;
|
|
128
129
|
|
|
129
130
|
await asyncTimeout(host.reset(), 1000);
|
|
130
|
-
await host.close();
|
|
131
|
+
await host.close(Context.default());
|
|
131
132
|
}
|
|
132
133
|
|
|
133
134
|
{
|
|
@@ -145,7 +146,7 @@ describe('ClientServicesHost', () => {
|
|
|
145
146
|
});
|
|
146
147
|
await expect(asyncTimeout(trigger.wait(), 200)).rejects.toBeInstanceOf(Error);
|
|
147
148
|
await stream?.close();
|
|
148
|
-
await host.close();
|
|
149
|
+
await host.close(Context.default());
|
|
149
150
|
}
|
|
150
151
|
});
|
|
151
152
|
});
|