@dxos/client-services 0.4.10-main.fd4f2a3 → 0.4.10-main.fe71b4c
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-V2ALN47T.mjs → chunk-7S34JE6M.mjs} +836 -625
- package/dist/lib/browser/chunk-7S34JE6M.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +11 -3
- package/dist/lib/browser/index.mjs.map +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/packlets/testing/index.mjs +9 -4
- package/dist/lib/browser/packlets/testing/index.mjs.map +3 -3
- package/dist/lib/node/{chunk-7WXQVUAE.cjs → chunk-DQMGKBOV.cjs} +854 -725
- package/dist/lib/node/chunk-DQMGKBOV.cjs.map +7 -0
- package/dist/lib/node/index.cjs +47 -39
- package/dist/lib/node/index.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/packlets/testing/index.cjs +14 -9
- package/dist/lib/node/packlets/testing/index.cjs.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/diagnostics/browser-diagnostics-broadcast.d.ts +5 -0
- package/dist/types/src/packlets/diagnostics/browser-diagnostics-broadcast.d.ts.map +1 -0
- package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts +5 -0
- package/dist/types/src/packlets/diagnostics/diagnostics-broadcast.d.ts.map +1 -0
- package/dist/types/src/packlets/diagnostics/diagnostics-collector.d.ts +15 -0
- package/dist/types/src/packlets/diagnostics/diagnostics-collector.d.ts.map +1 -0
- package/dist/types/src/packlets/{services → diagnostics}/diagnostics.d.ts +1 -1
- package/dist/types/src/packlets/diagnostics/diagnostics.d.ts.map +1 -0
- package/dist/types/src/packlets/diagnostics/index.d.ts +4 -0
- package/dist/types/src/packlets/diagnostics/index.d.ts.map +1 -0
- package/dist/types/src/packlets/indexing/util.d.ts +2 -1
- package/dist/types/src/packlets/indexing/util.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitation-extension.d.ts +1 -0
- package/dist/types/src/packlets/invitations/invitation-extension.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitations-handler.d.ts +4 -2
- package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
- package/dist/types/src/packlets/invitations/invitations-service.d.ts.map +1 -1
- package/dist/types/src/packlets/services/index.d.ts +1 -1
- package/dist/types/src/packlets/services/index.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-host.d.ts +4 -1
- package/dist/types/src/packlets/services/service-host.d.ts.map +1 -1
- package/dist/types/src/packlets/services/util.d.ts +1 -0
- package/dist/types/src/packlets/services/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/test-builder.d.ts +3 -1
- package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/package.json +35 -34
- package/src/index.ts +1 -0
- package/src/packlets/diagnostics/browser-diagnostics-broadcast.ts +94 -0
- package/src/packlets/diagnostics/diagnostics-broadcast.ts +20 -0
- package/src/packlets/diagnostics/diagnostics-collector.ts +65 -0
- package/src/packlets/{services → diagnostics}/diagnostics.ts +2 -2
- package/src/packlets/diagnostics/index.ts +7 -0
- package/src/packlets/indexing/util.ts +2 -2
- package/src/packlets/invitations/invitation-extension.ts +28 -1
- package/src/packlets/invitations/invitations-handler.ts +73 -32
- package/src/packlets/invitations/invitations-service.ts +5 -5
- package/src/packlets/services/automerge-host.test.ts +9 -3
- package/src/packlets/services/index.ts +1 -1
- package/src/packlets/services/service-context.test.ts +4 -1
- package/src/packlets/services/service-context.ts +5 -3
- package/src/packlets/services/service-host.ts +23 -4
- package/src/packlets/services/util.ts +2 -0
- package/src/packlets/spaces/data-space-manager.test.ts +4 -4
- package/src/packlets/storage/level.ts +1 -1
- package/src/packlets/system/system-service.ts +1 -1
- package/src/packlets/testing/test-builder.ts +20 -4
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-V2ALN47T.mjs.map +0 -7
- package/dist/lib/node/chunk-7WXQVUAE.cjs.map +0 -7
- package/dist/types/src/packlets/services/diagnostics.d.ts.map +0 -1
|
@@ -8,8 +8,14 @@ import { Event, synchronized } from '@dxos/async';
|
|
|
8
8
|
import { clientServiceBundle, defaultKey, type ClientServices, Properties } from '@dxos/client-protocol';
|
|
9
9
|
import { type Config } from '@dxos/config';
|
|
10
10
|
import { Context } from '@dxos/context';
|
|
11
|
-
import {
|
|
12
|
-
|
|
11
|
+
import {
|
|
12
|
+
DataServiceImpl,
|
|
13
|
+
type ObjectStructure,
|
|
14
|
+
encodeReference,
|
|
15
|
+
type SpaceDoc,
|
|
16
|
+
type LevelDB,
|
|
17
|
+
} from '@dxos/echo-pipeline';
|
|
18
|
+
import { getTypeReference } from '@dxos/echo-schema';
|
|
13
19
|
import { IndexServiceImpl } from '@dxos/indexing';
|
|
14
20
|
import { invariant } from '@dxos/invariant';
|
|
15
21
|
import { PublicKey } from '@dxos/keys';
|
|
@@ -23,11 +29,15 @@ import { TRACE_PROCESSOR, trace as Trace } from '@dxos/tracing';
|
|
|
23
29
|
import { assignDeep } from '@dxos/util';
|
|
24
30
|
import { WebsocketRpcClient } from '@dxos/websocket-rpc';
|
|
25
31
|
|
|
26
|
-
import { createDiagnostics } from './diagnostics';
|
|
27
32
|
import { ServiceContext, type ServiceContextRuntimeParams } from './service-context';
|
|
28
33
|
import { ServiceRegistry } from './service-registry';
|
|
29
34
|
import { DevicesServiceImpl } from '../devices';
|
|
30
35
|
import { DevtoolsHostEvents, DevtoolsServiceImpl } from '../devtools';
|
|
36
|
+
import {
|
|
37
|
+
type CollectDiagnosticsBroadcastHandler,
|
|
38
|
+
createCollectDiagnosticsBroadcastHandler,
|
|
39
|
+
createDiagnostics,
|
|
40
|
+
} from '../diagnostics';
|
|
31
41
|
import { IdentityServiceImpl, type CreateIdentityOptions } from '../identity';
|
|
32
42
|
import { InvitationsServiceImpl } from '../invitations';
|
|
33
43
|
import { Lock, type ResourceLock } from '../locks';
|
|
@@ -46,6 +56,7 @@ export type ClientServicesHostParams = {
|
|
|
46
56
|
signalManager?: SignalManager;
|
|
47
57
|
connectionLog?: boolean;
|
|
48
58
|
storage?: Storage;
|
|
59
|
+
level?: LevelDB;
|
|
49
60
|
lockKey?: string;
|
|
50
61
|
callbacks?: ClientServicesHostCallbacks;
|
|
51
62
|
runtimeParams?: ServiceContextRuntimeParams;
|
|
@@ -84,6 +95,7 @@ export class ClientServicesHost {
|
|
|
84
95
|
|
|
85
96
|
private _serviceContext!: ServiceContext;
|
|
86
97
|
private readonly _runtimeParams?: ServiceContextRuntimeParams;
|
|
98
|
+
private diagnosticsBroadcastHandler: CollectDiagnosticsBroadcastHandler;
|
|
87
99
|
|
|
88
100
|
@Trace.info()
|
|
89
101
|
private _opening = false;
|
|
@@ -96,12 +108,14 @@ export class ClientServicesHost {
|
|
|
96
108
|
transportFactory,
|
|
97
109
|
signalManager,
|
|
98
110
|
storage,
|
|
111
|
+
level,
|
|
99
112
|
// TODO(wittjosiah): Turn this on by default.
|
|
100
113
|
lockKey,
|
|
101
114
|
callbacks,
|
|
102
115
|
runtimeParams,
|
|
103
116
|
}: ClientServicesHostParams = {}) {
|
|
104
117
|
this._storage = storage;
|
|
118
|
+
this._level = level;
|
|
105
119
|
this._callbacks = callbacks;
|
|
106
120
|
this._runtimeParams = runtimeParams;
|
|
107
121
|
|
|
@@ -141,6 +155,7 @@ export class ClientServicesHost {
|
|
|
141
155
|
},
|
|
142
156
|
});
|
|
143
157
|
|
|
158
|
+
this.diagnosticsBroadcastHandler = createCollectDiagnosticsBroadcastHandler(this._systemService);
|
|
144
159
|
this._loggingService = new LoggingServiceImpl();
|
|
145
160
|
|
|
146
161
|
this._serviceRegistry = new ServiceRegistry<ClientServices>(clientServiceBundle, {
|
|
@@ -233,6 +248,8 @@ export class ClientServicesHost {
|
|
|
233
248
|
if (!this._level) {
|
|
234
249
|
this._level = await createLevel(this._config.get('runtime.client.storage', {})!);
|
|
235
250
|
}
|
|
251
|
+
await this._level.open();
|
|
252
|
+
|
|
236
253
|
await this._resourceLock?.acquire();
|
|
237
254
|
|
|
238
255
|
await this._loggingService.open();
|
|
@@ -309,6 +326,7 @@ export class ClientServicesHost {
|
|
|
309
326
|
});
|
|
310
327
|
void this._devtoolsProxy.open();
|
|
311
328
|
}
|
|
329
|
+
this.diagnosticsBroadcastHandler.start();
|
|
312
330
|
|
|
313
331
|
this._opening = false;
|
|
314
332
|
this._open = true;
|
|
@@ -327,6 +345,7 @@ export class ClientServicesHost {
|
|
|
327
345
|
|
|
328
346
|
const deviceKey = this._serviceContext.identityManager.identity?.deviceKey;
|
|
329
347
|
log('closing...', { deviceKey });
|
|
348
|
+
this.diagnosticsBroadcastHandler.stop();
|
|
330
349
|
await this._devtoolsProxy?.close();
|
|
331
350
|
this._serviceRegistry.setServices({ SystemService: this._systemService });
|
|
332
351
|
await this._loggingService.close();
|
|
@@ -364,7 +383,7 @@ export class ClientServicesHost {
|
|
|
364
383
|
// TODO(dmaretskyi): Better API for low-level data access.
|
|
365
384
|
const properties: ObjectStructure = {
|
|
366
385
|
system: {
|
|
367
|
-
type: encodeReference(
|
|
386
|
+
type: encodeReference(getTypeReference(Properties)!),
|
|
368
387
|
},
|
|
369
388
|
data: {
|
|
370
389
|
[defaultKey]: identity.identityKey.toHex(),
|
|
@@ -20,7 +20,7 @@ describe('DataSpaceManager', () => {
|
|
|
20
20
|
|
|
21
21
|
const peer = builder.createPeer();
|
|
22
22
|
await peer.createIdentity();
|
|
23
|
-
await openAndClose(peer.dataSpaceManager);
|
|
23
|
+
await openAndClose(peer.automergeHost, peer.dataSpaceManager);
|
|
24
24
|
|
|
25
25
|
const space = await peer.dataSpaceManager.createSpace();
|
|
26
26
|
|
|
@@ -42,7 +42,7 @@ describe('DataSpaceManager', () => {
|
|
|
42
42
|
const peer2 = builder.createPeer();
|
|
43
43
|
await peer2.createIdentity();
|
|
44
44
|
|
|
45
|
-
await openAndClose(peer1.dataSpaceManager, peer2.dataSpaceManager);
|
|
45
|
+
await openAndClose(peer1.automergeHost, peer1.dataSpaceManager, peer2.automergeHost, peer2.dataSpaceManager);
|
|
46
46
|
|
|
47
47
|
const space1 = await peer1.dataSpaceManager.createSpace();
|
|
48
48
|
await space1.inner.controlPipeline.state.waitUntilTimeframe(space1.inner.controlPipeline.state.endTimeframe);
|
|
@@ -111,7 +111,7 @@ describe('DataSpaceManager', () => {
|
|
|
111
111
|
await peer2.createIdentity();
|
|
112
112
|
await peer2.dataSpaceManager.open();
|
|
113
113
|
|
|
114
|
-
await openAndClose(peer1.dataSpaceManager, peer2.dataSpaceManager);
|
|
114
|
+
await openAndClose(peer1.automergeHost, peer1.dataSpaceManager, peer2.automergeHost, peer2.dataSpaceManager);
|
|
115
115
|
|
|
116
116
|
const space1 = await peer1.dataSpaceManager.createSpace();
|
|
117
117
|
await space1.inner.controlPipeline.state.waitUntilTimeframe(space1.inner.controlPipeline.state.endTimeframe);
|
|
@@ -153,7 +153,7 @@ describe('DataSpaceManager', () => {
|
|
|
153
153
|
|
|
154
154
|
const peer = builder.createPeer();
|
|
155
155
|
await peer.createIdentity();
|
|
156
|
-
await openAndClose(peer.dataSpaceManager);
|
|
156
|
+
await openAndClose(peer.automergeHost, peer.dataSpaceManager);
|
|
157
157
|
|
|
158
158
|
const space = await peer.dataSpaceManager.createSpace();
|
|
159
159
|
await space.inner.controlPipeline.state.waitUntilTimeframe(space.inner.controlPipeline.state.endTimeframe);
|
|
@@ -12,7 +12,7 @@ import { getRootPath, isPersistent } from './util';
|
|
|
12
12
|
|
|
13
13
|
export const createLevel = async (config: Runtime.Client.Storage) => {
|
|
14
14
|
const persistent = isPersistent(config);
|
|
15
|
-
const storagePath = persistent ? getRootPath(config)
|
|
15
|
+
const storagePath = persistent ? path.join(getRootPath(config), 'level') : `/tmp/dxos-${PublicKey.random().toHex()}`;
|
|
16
16
|
const level = new Level<string, string>(storagePath);
|
|
17
17
|
await level.open();
|
|
18
18
|
return level;
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
} from '@dxos/protocols/proto/dxos/client/services';
|
|
17
17
|
import { jsonKeyReplacer, type MaybePromise } from '@dxos/util';
|
|
18
18
|
|
|
19
|
-
import { type Diagnostics } from '../
|
|
19
|
+
import { type Diagnostics } from '../diagnostics';
|
|
20
20
|
import { getPlatform } from '../services/platform';
|
|
21
21
|
|
|
22
22
|
export type SystemServiceOptions = {
|
|
@@ -6,9 +6,16 @@ import { type Config } from '@dxos/config';
|
|
|
6
6
|
import { Context } from '@dxos/context';
|
|
7
7
|
import { createCredentialSignerWithChain, CredentialGenerator } from '@dxos/credentials';
|
|
8
8
|
import { failUndefined } from '@dxos/debug';
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
AutomergeHost,
|
|
11
|
+
MetadataStore,
|
|
12
|
+
type LevelDB,
|
|
13
|
+
SnapshotStore,
|
|
14
|
+
SpaceManager,
|
|
15
|
+
valueEncoding,
|
|
16
|
+
} from '@dxos/echo-pipeline';
|
|
17
|
+
import { createTestLevel } from '@dxos/echo-pipeline/testing';
|
|
10
18
|
import { FeedFactory, FeedStore } from '@dxos/feed-store';
|
|
11
|
-
import { createTestLevel } from '@dxos/indexing/testing';
|
|
12
19
|
import { Keyring } from '@dxos/keyring';
|
|
13
20
|
import { MemorySignalManager, MemorySignalManagerContext } from '@dxos/messaging';
|
|
14
21
|
import { MemoryTransportFactory, NetworkManager } from '@dxos/network-manager';
|
|
@@ -42,7 +49,8 @@ export const createServiceContext = async ({
|
|
|
42
49
|
signalManager,
|
|
43
50
|
transportFactory: MemoryTransportFactory,
|
|
44
51
|
});
|
|
45
|
-
const level =
|
|
52
|
+
const level = createTestLevel();
|
|
53
|
+
await level.open();
|
|
46
54
|
|
|
47
55
|
return new ServiceContext(storage, level, networkManager, signalManager);
|
|
48
56
|
};
|
|
@@ -85,6 +93,7 @@ export type TestPeerOpts = {
|
|
|
85
93
|
|
|
86
94
|
export type TestPeerProps = {
|
|
87
95
|
storage?: Storage;
|
|
96
|
+
level?: LevelDB;
|
|
88
97
|
feedStore?: FeedStore<any>;
|
|
89
98
|
metadataStore?: MetadataStore;
|
|
90
99
|
keyring?: Keyring;
|
|
@@ -117,6 +126,10 @@ export class TestPeer {
|
|
|
117
126
|
return (this._props.keyring ??= new Keyring(this.storage.createDirectory('keyring')));
|
|
118
127
|
}
|
|
119
128
|
|
|
129
|
+
get level() {
|
|
130
|
+
return (this._props.level ??= createTestLevel());
|
|
131
|
+
}
|
|
132
|
+
|
|
120
133
|
get feedStore() {
|
|
121
134
|
return (this._props.feedStore ??= new FeedStore({
|
|
122
135
|
factory: new FeedFactory({
|
|
@@ -163,7 +176,9 @@ export class TestPeer {
|
|
|
163
176
|
}
|
|
164
177
|
|
|
165
178
|
get automergeHost() {
|
|
166
|
-
return (this._props.automergeHost ??= new AutomergeHost({
|
|
179
|
+
return (this._props.automergeHost ??= new AutomergeHost({
|
|
180
|
+
db: this.level.sublevel('automerge'),
|
|
181
|
+
}));
|
|
167
182
|
}
|
|
168
183
|
|
|
169
184
|
get dataSpaceManager() {
|
|
@@ -182,6 +197,7 @@ export class TestPeer {
|
|
|
182
197
|
}
|
|
183
198
|
|
|
184
199
|
async destroy() {
|
|
200
|
+
await this.level.close();
|
|
185
201
|
await this.storage.reset();
|
|
186
202
|
}
|
|
187
203
|
}
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const DXOS_VERSION = "0.4.10-main.
|
|
1
|
+
export const DXOS_VERSION = "0.4.10-main.fe71b4c";
|