@dxos/client-services 0.8.4-main.a4bbb77 → 0.8.4-main.abd8ff62ef
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-FZDVFED2.mjs → chunk-KW4WMU5R.mjs} +2698 -4599
- package/dist/lib/browser/chunk-KW4WMU5R.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 +490 -228
- 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 +60 -90
- 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-JDTIU3EP.mjs → chunk-NDMKP2CH.mjs} +2621 -4391
- package/dist/lib/node-esm/chunk-NDMKP2CH.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +490 -228
- 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 +60 -90
- 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 +2 -1
- 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 +2 -2
- package/dist/types/src/packlets/devtools/devtools.d.ts.map +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.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.map +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 +2 -3
- 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.map +1 -1
- package/dist/types/src/packlets/identity/identity-manager.d.ts +6 -6
- 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 +8 -11
- 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 +1 -1
- package/dist/types/src/packlets/invitations/edge-invitation-handler.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 +7 -4
- 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 +3 -3
- package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/space-invitation-protocol.d.ts +4 -3
- 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 +1 -1
- 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 +4 -0
- package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
- package/dist/types/src/packlets/network/network-service.d.ts +5 -4
- 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 +13 -9
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-host.d.ts +20 -7
- 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 +7 -1
- 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.map +1 -1
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts +28 -17
- package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +26 -9
- 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 +10 -7
- 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 +1 -1
- 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 +6 -5
- 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 +70 -55
- package/src/index.ts +1 -0
- package/src/packlets/agents/edge-agent-manager.ts +8 -5
- package/src/packlets/agents/edge-agent-service.ts +15 -3
- package/src/packlets/devices/devices-service.test.ts +0 -1
- package/src/packlets/devices/devices-service.ts +1 -1
- package/src/packlets/devtools/devtools.ts +2 -3
- package/src/packlets/diagnostics/diagnostics.ts +1 -2
- package/src/packlets/diagnostics/index.ts +1 -1
- package/src/packlets/identity/authenticator.ts +2 -2
- package/src/packlets/identity/contacts-service.ts +0 -1
- package/src/packlets/identity/identity-manager.test.ts +5 -5
- package/src/packlets/identity/identity-manager.ts +23 -22
- package/src/packlets/identity/identity-recovery-manager.ts +22 -18
- package/src/packlets/identity/identity-service.test.ts +6 -27
- package/src/packlets/identity/identity-service.ts +13 -81
- package/src/packlets/identity/identity.test.ts +6 -6
- package/src/packlets/identity/identity.ts +11 -34
- package/src/packlets/invitations/device-invitation-protocol.ts +8 -7
- package/src/packlets/invitations/edge-invitation-handler.ts +9 -5
- package/src/packlets/invitations/invitation-guest-extenstion.ts +6 -4
- package/src/packlets/invitations/invitation-host-extension.ts +13 -14
- package/src/packlets/invitations/invitation-protocol.ts +7 -4
- package/src/packlets/invitations/invitation-state.ts +1 -15
- package/src/packlets/invitations/invitations-handler.test.ts +4 -5
- package/src/packlets/invitations/invitations-handler.ts +74 -22
- package/src/packlets/invitations/invitations-manager.ts +40 -15
- package/src/packlets/invitations/invitations-service.ts +9 -9
- package/src/packlets/invitations/space-invitation-protocol.test.ts +17 -16
- package/src/packlets/invitations/space-invitation-protocol.ts +11 -16
- package/src/packlets/locks/index.ts +1 -1
- package/src/packlets/logging/logging-service.ts +20 -16
- package/src/packlets/network/network-service.test.ts +0 -1
- package/src/packlets/network/network-service.ts +10 -8
- package/src/packlets/services/client-rpc-server.ts +19 -16
- 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 +3 -2
- package/src/packlets/services/service-context.ts +138 -56
- package/src/packlets/services/service-host.test.ts +8 -8
- package/src/packlets/services/service-host.ts +70 -40
- package/src/packlets/services/service-registry.test.ts +0 -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 +64 -3
- package/src/packlets/space-export/space-archive-writer.ts +41 -3
- package/src/packlets/space-export/space-archive.test.ts +461 -0
- package/src/packlets/spaces/data-space-manager.test.ts +79 -13
- package/src/packlets/spaces/data-space-manager.ts +115 -115
- package/src/packlets/spaces/data-space.ts +58 -33
- package/src/packlets/spaces/edge-feed-replicator.test.ts +2 -2
- package/src/packlets/spaces/edge-feed-replicator.ts +12 -10
- 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 +2 -2
- package/src/packlets/spaces/notarization-plugin.ts +10 -9
- package/src/packlets/spaces/spaces-service.test.ts +18 -11
- package/src/packlets/spaces/spaces-service.ts +123 -24
- package/src/packlets/storage/storage.ts +4 -4
- package/src/packlets/testing/invitation-utils.ts +10 -6
- package/src/packlets/testing/test-builder.ts +36 -10
- package/src/packlets/worker/worker-runtime.ts +188 -17
- package/src/packlets/worker/worker-session.ts +12 -18
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-FZDVFED2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JDTIU3EP.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,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { describe, test } from 'vitest';
|
|
6
6
|
|
|
7
|
+
import { Context } from '@dxos/context';
|
|
7
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';
|
|
@@ -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,6 +2,8 @@
|
|
|
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
9
|
import { type CredentialProcessor, getCredentialAssertion } from '@dxos/credentials';
|
|
@@ -16,20 +18,23 @@ import {
|
|
|
16
18
|
} from '@dxos/echo-pipeline';
|
|
17
19
|
import { createChainEdgeIdentity, createEphemeralEdgeIdentity } from '@dxos/edge-client';
|
|
18
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';
|
|
@@ -37,27 +42,29 @@ import { safeInstanceof } from '@dxos/util';
|
|
|
37
42
|
import { EdgeAgentManager } from '../agents';
|
|
38
43
|
import {
|
|
39
44
|
type CreateIdentityOptions,
|
|
45
|
+
type Identity,
|
|
40
46
|
IdentityManager,
|
|
41
|
-
type
|
|
42
|
-
type
|
|
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,
|
|
48
54
|
type InvitationProtocol,
|
|
49
55
|
InvitationsHandler,
|
|
50
56
|
InvitationsManager,
|
|
51
57
|
SpaceInvitationProtocol,
|
|
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,7 +200,7 @@ 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
206
|
if (this._edgeConnection && this._edgeFeatures?.echoReplicator && this._edgeHttpClient) {
|
|
@@ -195,59 +209,106 @@ export class ServiceContext extends Resource {
|
|
|
195
209
|
edgeHttpClient: this._edgeHttpClient,
|
|
196
210
|
});
|
|
197
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],
|
|
221
|
+
});
|
|
222
|
+
}
|
|
198
223
|
}
|
|
199
224
|
|
|
200
|
-
@Trace.span()
|
|
225
|
+
@Trace.span({ op: 'lifecycle' })
|
|
201
226
|
protected override async _open(ctx: Context): Promise<void> {
|
|
202
227
|
await this._checkStorageVersion();
|
|
203
228
|
|
|
204
229
|
log('opening...');
|
|
205
|
-
log.trace('dxos.sdk.service-context.open', trace.begin({ id: this._instanceId }));
|
|
206
230
|
|
|
231
|
+
log('opening identityManager...');
|
|
207
232
|
await this.identityManager.open(ctx);
|
|
233
|
+
log('identityManager opened', { hasIdentity: !!this.identityManager.identity });
|
|
208
234
|
|
|
209
|
-
|
|
235
|
+
log('setting network identity...');
|
|
236
|
+
await this._setNetworkIdentity({ identity: this.identityManager.identity });
|
|
237
|
+
log('network identity set');
|
|
210
238
|
|
|
211
|
-
|
|
212
|
-
await this.
|
|
239
|
+
log('opening edge connection...');
|
|
240
|
+
await this._edgeConnection?.open(ctx);
|
|
241
|
+
log('edge connection opened');
|
|
242
|
+
|
|
243
|
+
log('opening signal manager...');
|
|
244
|
+
await this.signalManager.open(ctx);
|
|
245
|
+
log('signal manager opened');
|
|
246
|
+
|
|
247
|
+
log('opening network manager...');
|
|
213
248
|
await this.networkManager.open();
|
|
249
|
+
log('network manager opened');
|
|
214
250
|
|
|
251
|
+
log('opening echo host...');
|
|
215
252
|
await this.echoHost.open(ctx);
|
|
253
|
+
log('echo host opened');
|
|
216
254
|
|
|
217
255
|
if (this._meshReplicator) {
|
|
218
|
-
|
|
256
|
+
log('adding mesh replicator...');
|
|
257
|
+
await this.echoHost.addReplicator(ctx, this._meshReplicator);
|
|
258
|
+
log('mesh replicator added');
|
|
219
259
|
}
|
|
220
260
|
if (this._echoEdgeReplicator) {
|
|
221
|
-
|
|
261
|
+
log('adding edge replicator...');
|
|
262
|
+
await this.echoHost.addReplicator(ctx, this._echoEdgeReplicator);
|
|
263
|
+
log('edge replicator added');
|
|
222
264
|
}
|
|
223
265
|
|
|
266
|
+
log('loading metadata store...');
|
|
224
267
|
await this.metadataStore.load();
|
|
268
|
+
log('metadata store loaded');
|
|
269
|
+
|
|
270
|
+
log('opening space manager...');
|
|
225
271
|
await this.spaceManager.open();
|
|
272
|
+
log('space manager opened');
|
|
226
273
|
|
|
227
274
|
if (this.identityManager.identity) {
|
|
228
|
-
|
|
275
|
+
log('joining network...');
|
|
276
|
+
await this.identityManager.identity.joinNetwork(ctx);
|
|
277
|
+
log('network joined');
|
|
278
|
+
|
|
279
|
+
log('initializing spaces...(calling _initialize)');
|
|
229
280
|
await this._initialize(ctx);
|
|
281
|
+
log('spaces initialized');
|
|
282
|
+
} else {
|
|
283
|
+
log('no identity, skipping network join and space initialization');
|
|
230
284
|
}
|
|
231
285
|
|
|
232
|
-
|
|
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);
|
|
233
292
|
log('loaded persistent invitations', { count: loadedInvitations.invitations?.length });
|
|
234
293
|
|
|
235
|
-
log.trace('dxos.sdk.service-context.open', trace.end({ id: this._instanceId }));
|
|
236
294
|
log('opened');
|
|
237
295
|
}
|
|
238
296
|
|
|
239
297
|
protected override async _close(ctx: Context): Promise<void> {
|
|
240
298
|
log('closing...');
|
|
299
|
+
|
|
300
|
+
await this._feedSyncer?.close();
|
|
301
|
+
|
|
241
302
|
if (this._deviceSpaceSync && this.identityManager.identity) {
|
|
242
303
|
await this.identityManager.identity.space.spaceState.removeCredentialProcessor(this._deviceSpaceSync);
|
|
243
304
|
}
|
|
244
|
-
await this.dataSpaceManager?.close();
|
|
305
|
+
await this.dataSpaceManager?.close(ctx);
|
|
245
306
|
await this.edgeAgentManager?.close();
|
|
246
|
-
await this.identityManager.close();
|
|
307
|
+
await this.identityManager.close(ctx);
|
|
247
308
|
await this.spaceManager.close();
|
|
248
309
|
await this.echoHost.close(ctx);
|
|
249
310
|
|
|
250
|
-
await this.networkManager.close();
|
|
311
|
+
await this.networkManager.close(ctx);
|
|
251
312
|
await this.signalManager.close();
|
|
252
313
|
await this._edgeConnection?.close();
|
|
253
314
|
await this.feedStore.close();
|
|
@@ -256,11 +317,12 @@ export class ServiceContext extends Resource {
|
|
|
256
317
|
log('closed');
|
|
257
318
|
}
|
|
258
319
|
|
|
259
|
-
async createIdentity(params: CreateIdentityOptions = {}) {
|
|
260
|
-
|
|
261
|
-
await this.
|
|
262
|
-
await
|
|
263
|
-
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);
|
|
264
326
|
return identity;
|
|
265
327
|
}
|
|
266
328
|
|
|
@@ -283,12 +345,12 @@ export class ServiceContext extends Resource {
|
|
|
283
345
|
}
|
|
284
346
|
}
|
|
285
347
|
|
|
286
|
-
private async _acceptIdentity(params:
|
|
287
|
-
const { identity, identityRecord } = await this.identityManager.prepareIdentity(params);
|
|
288
|
-
await this._setNetworkIdentity({ deviceCredential: params.authorizedDeviceCredential
|
|
289
|
-
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);
|
|
290
352
|
await this.identityManager.acceptIdentity(identity, identityRecord, params.deviceProfile);
|
|
291
|
-
await this._initialize(
|
|
353
|
+
await this._initialize(this._ctx);
|
|
292
354
|
return identity;
|
|
293
355
|
}
|
|
294
356
|
|
|
@@ -303,7 +365,7 @@ export class ServiceContext extends Resource {
|
|
|
303
365
|
// Called when identity is created.
|
|
304
366
|
@Trace.span()
|
|
305
367
|
private async _initialize(ctx: Context): Promise<void> {
|
|
306
|
-
log('
|
|
368
|
+
log('_initialize: start');
|
|
307
369
|
const identity = this.identityManager.identity ?? failUndefined();
|
|
308
370
|
const signingContext: SigningContext = {
|
|
309
371
|
credentialSigner: identity.getIdentityCredentialSigner(),
|
|
@@ -315,6 +377,7 @@ export class ServiceContext extends Resource {
|
|
|
315
377
|
},
|
|
316
378
|
};
|
|
317
379
|
|
|
380
|
+
log('_initialize: creating DataSpaceManager');
|
|
318
381
|
this.dataSpaceManager = new DataSpaceManager({
|
|
319
382
|
spaceManager: this.spaceManager,
|
|
320
383
|
metadataStore: this.metadataStore,
|
|
@@ -327,10 +390,12 @@ export class ServiceContext extends Resource {
|
|
|
327
390
|
edgeHttpClient: this._edgeHttpClient,
|
|
328
391
|
echoEdgeReplicator: this._echoEdgeReplicator,
|
|
329
392
|
meshReplicator: this._meshReplicator,
|
|
330
|
-
|
|
393
|
+
runtimeProps: this._runtimeProps as DataSpaceManagerRuntimeProps,
|
|
331
394
|
edgeFeatures: this._edgeFeatures,
|
|
332
395
|
});
|
|
333
|
-
|
|
396
|
+
log('_initialize: opening DataSpaceManager...');
|
|
397
|
+
await this.dataSpaceManager.open(ctx);
|
|
398
|
+
log('_initialize: DataSpaceManager opened');
|
|
334
399
|
|
|
335
400
|
this.edgeAgentManager = new EdgeAgentManager(
|
|
336
401
|
this._edgeFeatures,
|
|
@@ -338,13 +403,16 @@ export class ServiceContext extends Resource {
|
|
|
338
403
|
this.dataSpaceManager,
|
|
339
404
|
identity,
|
|
340
405
|
);
|
|
341
|
-
|
|
406
|
+
log('_initialize: opening EdgeAgentManager...');
|
|
407
|
+
await this.edgeAgentManager.open(ctx);
|
|
408
|
+
log('_initialize: EdgeAgentManager opened');
|
|
342
409
|
|
|
343
410
|
this._handlerFactories.set(Invitation.Kind.SPACE, (invitation) => {
|
|
344
411
|
invariant(this.dataSpaceManager, 'dataSpaceManager not initialized yet');
|
|
345
412
|
return new SpaceInvitationProtocol(this.dataSpaceManager, signingContext, this.keyring, invitation.spaceKey);
|
|
346
413
|
});
|
|
347
414
|
this.initialized.wake();
|
|
415
|
+
log('_initialize: initialized.wake() called');
|
|
348
416
|
|
|
349
417
|
this._deviceSpaceSync = {
|
|
350
418
|
processCredential: async (credential: Credential) => {
|
|
@@ -367,9 +435,10 @@ export class ServiceContext extends Resource {
|
|
|
367
435
|
|
|
368
436
|
try {
|
|
369
437
|
log('accepting space recorded in halo', { details: assertion });
|
|
370
|
-
await this.dataSpaceManager.acceptSpace({
|
|
438
|
+
await this.dataSpaceManager.acceptSpace(this._ctx, {
|
|
371
439
|
spaceKey: assertion.spaceKey,
|
|
372
440
|
genesisFeedKey: assertion.genesisFeedKey,
|
|
441
|
+
tags: assertion.tags,
|
|
373
442
|
});
|
|
374
443
|
} catch (err) {
|
|
375
444
|
log.catch(err);
|
|
@@ -380,33 +449,42 @@ export class ServiceContext extends Resource {
|
|
|
380
449
|
await identity.space.spaceState.addCredentialProcessor(this._deviceSpaceSync);
|
|
381
450
|
}
|
|
382
451
|
|
|
383
|
-
private async _setNetworkIdentity(params?: { deviceCredential
|
|
452
|
+
private async _setNetworkIdentity(params?: { deviceCredential?: Credential; identity?: Identity }): Promise<void> {
|
|
453
|
+
log('_setNetworkIdentity: acquiring mutex...');
|
|
384
454
|
using _ = await this._edgeIdentityUpdateMutex.acquire();
|
|
455
|
+
log('_setNetworkIdentity: mutex acquired');
|
|
385
456
|
|
|
386
457
|
let edgeIdentity: EdgeIdentity;
|
|
387
|
-
const identity =
|
|
458
|
+
const identity = params?.identity;
|
|
388
459
|
if (identity) {
|
|
389
|
-
log('
|
|
460
|
+
log('_setNetworkIdentity: has identity', {
|
|
390
461
|
identity: identity.identityKey.toHex(),
|
|
391
|
-
|
|
462
|
+
hasDeviceCredential: !!params?.deviceCredential,
|
|
392
463
|
});
|
|
393
464
|
|
|
394
465
|
if (params?.deviceCredential) {
|
|
466
|
+
log('_setNetworkIdentity: creating chain edge identity with device credential...');
|
|
395
467
|
edgeIdentity = await createChainEdgeIdentity(
|
|
396
468
|
identity.signer,
|
|
397
469
|
identity.identityKey,
|
|
398
470
|
identity.deviceKey,
|
|
399
|
-
|
|
471
|
+
{ credential: params.deviceCredential },
|
|
400
472
|
[], // TODO(dmaretskyi): Service access credentials.
|
|
401
473
|
);
|
|
474
|
+
log('_setNetworkIdentity: chain edge identity created');
|
|
402
475
|
} else {
|
|
476
|
+
log('_setNetworkIdentity: waiting for identity.ready()...');
|
|
403
477
|
// TODO: throw here or from identity if device chain can't be loaded, to avoid indefinite hangup
|
|
404
478
|
await warnAfterTimeout(10_000, 'Waiting for identity to be ready for edge connection', async () => {
|
|
405
479
|
await identity.ready();
|
|
406
480
|
});
|
|
481
|
+
log('_setNetworkIdentity: identity.ready() resolved', {
|
|
482
|
+
hasDeviceCredentialChain: !!identity.deviceCredentialChain,
|
|
483
|
+
});
|
|
407
484
|
|
|
408
485
|
invariant(identity.deviceCredentialChain);
|
|
409
486
|
|
|
487
|
+
log('_setNetworkIdentity: creating chain edge identity...');
|
|
410
488
|
edgeIdentity = await createChainEdgeIdentity(
|
|
411
489
|
identity.signer,
|
|
412
490
|
identity.identityKey,
|
|
@@ -414,9 +492,12 @@ export class ServiceContext extends Resource {
|
|
|
414
492
|
identity.deviceCredentialChain,
|
|
415
493
|
[], // TODO(dmaretskyi): Service access credentials.
|
|
416
494
|
);
|
|
495
|
+
log('_setNetworkIdentity: chain edge identity created');
|
|
417
496
|
}
|
|
418
497
|
} else {
|
|
498
|
+
log('_setNetworkIdentity: no identity, creating ephemeral edge identity...');
|
|
419
499
|
edgeIdentity = await createEphemeralEdgeIdentity();
|
|
500
|
+
log('_setNetworkIdentity: ephemeral edge identity created');
|
|
420
501
|
}
|
|
421
502
|
|
|
422
503
|
this._edgeConnection?.setIdentity(edgeIdentity);
|
|
@@ -425,5 +506,6 @@ export class ServiceContext extends Resource {
|
|
|
425
506
|
identityKey: edgeIdentity.identityKey,
|
|
426
507
|
peerKey: edgeIdentity.peerKey,
|
|
427
508
|
});
|
|
509
|
+
log('_setNetworkIdentity: done');
|
|
428
510
|
}
|
|
429
511
|
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { rmSync } from 'node:fs';
|
|
6
|
-
|
|
7
6
|
import { afterEach, describe, expect, onTestFinished, test } from 'vitest';
|
|
8
7
|
|
|
9
8
|
import { Trigger, asyncTimeout, latch } from '@dxos/async';
|
|
@@ -13,6 +12,7 @@ import { verifyPresentation } from '@dxos/credentials';
|
|
|
13
12
|
import { type PublicKey } from '@dxos/keys';
|
|
14
13
|
import { MemorySignalManagerContext } from '@dxos/messaging';
|
|
15
14
|
import { type Identity } from '@dxos/protocols/proto/dxos/client/services';
|
|
15
|
+
import { MembershipPolicy } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
16
16
|
import { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
|
|
17
17
|
import { isNode } from '@dxos/util';
|
|
18
18
|
|
|
@@ -29,16 +29,16 @@ describe('ClientServicesHost', () => {
|
|
|
29
29
|
test('open and close', async () => {
|
|
30
30
|
const host = createServiceHost(new Config(), new MemorySignalManagerContext());
|
|
31
31
|
await host.open(new Context());
|
|
32
|
-
await host.close();
|
|
32
|
+
await host.close(Context.default());
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
test('queryCredentials', async () => {
|
|
36
36
|
const host = createServiceHost(new Config(), new MemorySignalManagerContext());
|
|
37
37
|
await host.open(new Context());
|
|
38
|
-
onTestFinished(() => host.close());
|
|
38
|
+
onTestFinished(() => host.close(Context.default()));
|
|
39
39
|
|
|
40
40
|
await host.services.IdentityService!.createIdentity({});
|
|
41
|
-
const { spaceKey } = await host.services.SpacesService!.createSpace();
|
|
41
|
+
const { spaceKey } = await host.services.SpacesService!.createSpace({ membershipPolicy: MembershipPolicy.INVITE });
|
|
42
42
|
|
|
43
43
|
const stream = host.services.SpacesService!.queryCredentials({ spaceKey });
|
|
44
44
|
const [done, tick] = latch({ count: 3 });
|
|
@@ -54,7 +54,7 @@ describe('ClientServicesHost', () => {
|
|
|
54
54
|
test('write and query credentials', async () => {
|
|
55
55
|
const host = createServiceHost(new Config(), new MemorySignalManagerContext());
|
|
56
56
|
await host.open(new Context());
|
|
57
|
-
onTestFinished(() => host.close());
|
|
57
|
+
onTestFinished(() => host.close(Context.default()));
|
|
58
58
|
|
|
59
59
|
await host.services.IdentityService!.createIdentity({});
|
|
60
60
|
|
|
@@ -91,7 +91,7 @@ describe('ClientServicesHost', () => {
|
|
|
91
91
|
test('sign presentation', async () => {
|
|
92
92
|
const host = createServiceHost(new Config(), new MemorySignalManagerContext());
|
|
93
93
|
await host.open(new Context());
|
|
94
|
-
onTestFinished(() => host.close());
|
|
94
|
+
onTestFinished(() => host.close(Context.default()));
|
|
95
95
|
|
|
96
96
|
await host.services.IdentityService!.createIdentity({});
|
|
97
97
|
|
|
@@ -128,7 +128,7 @@ describe('ClientServicesHost', () => {
|
|
|
128
128
|
expect(host.context.storage.size).to.exist;
|
|
129
129
|
|
|
130
130
|
await asyncTimeout(host.reset(), 1000);
|
|
131
|
-
await host.close();
|
|
131
|
+
await host.close(Context.default());
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
{
|
|
@@ -146,7 +146,7 @@ describe('ClientServicesHost', () => {
|
|
|
146
146
|
});
|
|
147
147
|
await expect(asyncTimeout(trigger.wait(), 200)).rejects.toBeInstanceOf(Error);
|
|
148
148
|
await stream?.close();
|
|
149
|
-
await host.close();
|
|
149
|
+
await host.close(Context.default());
|
|
150
150
|
}
|
|
151
151
|
});
|
|
152
152
|
});
|