@dxos/client-services 0.4.10-main.fa5a270 → 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-7PYX6UUA.mjs → chunk-7S34JE6M.mjs} +980 -656
- package/dist/lib/browser/chunk-7S34JE6M.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +60 -22
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/packlets/testing/index.mjs +12 -5
- package/dist/lib/browser/packlets/testing/index.mjs.map +3 -3
- package/dist/lib/node/{chunk-4TX623I7.cjs → chunk-DQMGKBOV.cjs} +922 -685
- package/dist/lib/node/chunk-DQMGKBOV.cjs.map +7 -0
- package/dist/lib/node/index.cjs +96 -58
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/packlets/testing/index.cjs +16 -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 +3 -2
- 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 +7 -5
- package/dist/types/src/packlets/services/service-context.d.ts.map +1 -1
- package/dist/types/src/packlets/services/service-host.d.ts +5 -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/spaces/data-space.d.ts.map +1 -1
- package/dist/types/src/packlets/storage/index.d.ts +1 -0
- package/dist/types/src/packlets/storage/index.d.ts.map +1 -1
- package/dist/types/src/packlets/storage/level.d.ts +4 -0
- package/dist/types/src/packlets/storage/level.d.ts.map +1 -0
- package/dist/types/src/packlets/storage/storage.d.ts.map +1 -1
- package/dist/types/src/packlets/storage/util.d.ts +4 -0
- package/dist/types/src/packlets/storage/util.d.ts.map +1 -0
- 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 +4 -2
- package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/packlets/vault/shared-worker-connection.d.ts +5 -5
- package/dist/types/src/packlets/vault/shared-worker-connection.d.ts.map +1 -1
- package/dist/types/src/packlets/vault/worker-runtime.d.ts +2 -0
- package/dist/types/src/packlets/vault/worker-runtime.d.ts.map +1 -1
- package/dist/types/src/packlets/vault/worker-session.d.ts +2 -0
- package/dist/types/src/packlets/vault/worker-session.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/package.json +36 -34
- package/src/index.ts +1 -0
- package/src/packlets/devices/devices-service.test.ts +1 -1
- 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/identity/identity-service.test.ts +1 -1
- package/src/packlets/indexing/util.ts +6 -6
- package/src/packlets/invitations/device-invitation-protocol.test.ts +1 -1
- 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/network/network-service.test.ts +1 -1
- 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 +9 -6
- package/src/packlets/services/service-context.ts +18 -11
- package/src/packlets/services/service-host.ts +52 -9
- package/src/packlets/services/service-registry.test.ts +1 -1
- package/src/packlets/services/util.ts +2 -0
- package/src/packlets/spaces/data-space-manager.test.ts +4 -4
- package/src/packlets/spaces/data-space.ts +51 -2
- package/src/packlets/spaces/spaces-service.test.ts +1 -1
- package/src/packlets/storage/index.ts +1 -0
- package/src/packlets/storage/level.ts +19 -0
- package/src/packlets/storage/storage.ts +3 -9
- package/src/packlets/storage/util.ts +19 -0
- package/src/packlets/system/system-service.ts +1 -1
- package/src/packlets/testing/test-builder.ts +23 -5
- package/src/packlets/vault/shared-worker-connection.ts +3 -8
- package/src/packlets/vault/worker-runtime.ts +27 -2
- package/src/packlets/vault/worker-session.ts +6 -0
- package/src/version.ts +1 -1
- package/dist/lib/browser/chunk-7PYX6UUA.mjs.map +0 -7
- package/dist/lib/node/chunk-4TX623I7.cjs.map +0 -7
- package/dist/types/src/packlets/services/diagnostics.d.ts.map +0 -1
|
@@ -6,7 +6,15 @@ 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
19
|
import { Keyring } from '@dxos/keyring';
|
|
12
20
|
import { MemorySignalManager, MemorySignalManagerContext } from '@dxos/messaging';
|
|
@@ -29,7 +37,7 @@ export const createServiceHost = (config: Config, signalManagerContext: MemorySi
|
|
|
29
37
|
});
|
|
30
38
|
};
|
|
31
39
|
|
|
32
|
-
export const createServiceContext = ({
|
|
40
|
+
export const createServiceContext = async ({
|
|
33
41
|
signalContext = new MemorySignalManagerContext(),
|
|
34
42
|
storage = createStorage({ type: StorageType.RAM }),
|
|
35
43
|
}: {
|
|
@@ -41,8 +49,10 @@ export const createServiceContext = ({
|
|
|
41
49
|
signalManager,
|
|
42
50
|
transportFactory: MemoryTransportFactory,
|
|
43
51
|
});
|
|
52
|
+
const level = createTestLevel();
|
|
53
|
+
await level.open();
|
|
44
54
|
|
|
45
|
-
return new ServiceContext(storage, networkManager, signalManager);
|
|
55
|
+
return new ServiceContext(storage, level, networkManager, signalManager);
|
|
46
56
|
};
|
|
47
57
|
|
|
48
58
|
export const createPeers = async (numPeers: number) => {
|
|
@@ -50,7 +60,7 @@ export const createPeers = async (numPeers: number) => {
|
|
|
50
60
|
|
|
51
61
|
return await Promise.all(
|
|
52
62
|
Array.from(Array(numPeers)).map(async () => {
|
|
53
|
-
const peer = createServiceContext({ signalContext });
|
|
63
|
+
const peer = await createServiceContext({ signalContext });
|
|
54
64
|
await peer.open(new Context());
|
|
55
65
|
return peer;
|
|
56
66
|
}),
|
|
@@ -83,6 +93,7 @@ export type TestPeerOpts = {
|
|
|
83
93
|
|
|
84
94
|
export type TestPeerProps = {
|
|
85
95
|
storage?: Storage;
|
|
96
|
+
level?: LevelDB;
|
|
86
97
|
feedStore?: FeedStore<any>;
|
|
87
98
|
metadataStore?: MetadataStore;
|
|
88
99
|
keyring?: Keyring;
|
|
@@ -115,6 +126,10 @@ export class TestPeer {
|
|
|
115
126
|
return (this._props.keyring ??= new Keyring(this.storage.createDirectory('keyring')));
|
|
116
127
|
}
|
|
117
128
|
|
|
129
|
+
get level() {
|
|
130
|
+
return (this._props.level ??= createTestLevel());
|
|
131
|
+
}
|
|
132
|
+
|
|
118
133
|
get feedStore() {
|
|
119
134
|
return (this._props.feedStore ??= new FeedStore({
|
|
120
135
|
factory: new FeedFactory({
|
|
@@ -161,7 +176,9 @@ export class TestPeer {
|
|
|
161
176
|
}
|
|
162
177
|
|
|
163
178
|
get automergeHost() {
|
|
164
|
-
return (this._props.automergeHost ??= new AutomergeHost({
|
|
179
|
+
return (this._props.automergeHost ??= new AutomergeHost({
|
|
180
|
+
db: this.level.sublevel('automerge'),
|
|
181
|
+
}));
|
|
165
182
|
}
|
|
166
183
|
|
|
167
184
|
get dataSpaceManager() {
|
|
@@ -180,6 +197,7 @@ export class TestPeer {
|
|
|
180
197
|
}
|
|
181
198
|
|
|
182
199
|
async destroy() {
|
|
200
|
+
await this.level.close();
|
|
183
201
|
await this.storage.reset();
|
|
184
202
|
}
|
|
185
203
|
}
|
|
@@ -57,12 +57,7 @@ export class SharedWorkerConnection {
|
|
|
57
57
|
return this._shellRuntime;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
async open(
|
|
61
|
-
/**
|
|
62
|
-
* @deprecated Only used with iframes.
|
|
63
|
-
*/
|
|
64
|
-
origin: string,
|
|
65
|
-
) {
|
|
60
|
+
async open(params: { origin: string; observabilityGroup?: string; signalTelemetryEnabled?: boolean }) {
|
|
66
61
|
this._config = await getAsyncValue(this._configProvider);
|
|
67
62
|
|
|
68
63
|
this._transportService = new SimplePeerTransportService({
|
|
@@ -83,7 +78,7 @@ export class SharedWorkerConnection {
|
|
|
83
78
|
|
|
84
79
|
let lockKey: string | undefined;
|
|
85
80
|
if (typeof navigator !== 'undefined') {
|
|
86
|
-
lockKey = this._lockKey(origin);
|
|
81
|
+
lockKey = this._lockKey(params.origin);
|
|
87
82
|
this._release = new Trigger();
|
|
88
83
|
const ready = new Trigger();
|
|
89
84
|
void navigator.locks.request(lockKey, async () => {
|
|
@@ -95,7 +90,7 @@ export class SharedWorkerConnection {
|
|
|
95
90
|
|
|
96
91
|
try {
|
|
97
92
|
await this._systemRpc.open();
|
|
98
|
-
await this._systemRpc.rpc.WorkerService.start({
|
|
93
|
+
await this._systemRpc.rpc.WorkerService.start({ lockKey, ...params });
|
|
99
94
|
} catch (err) {
|
|
100
95
|
log.catch(err);
|
|
101
96
|
throw new RemoteServiceConnectionError('Failed to connect to worker');
|
|
@@ -5,8 +5,14 @@
|
|
|
5
5
|
import { Trigger } from '@dxos/async';
|
|
6
6
|
import { type Config } from '@dxos/config';
|
|
7
7
|
import { Context } from '@dxos/context';
|
|
8
|
+
import { invariant } from '@dxos/invariant';
|
|
8
9
|
import { log } from '@dxos/log';
|
|
9
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
MemorySignalManager,
|
|
12
|
+
MemorySignalManagerContext,
|
|
13
|
+
WebsocketSignalManager,
|
|
14
|
+
setIdentityTags,
|
|
15
|
+
} from '@dxos/messaging';
|
|
10
16
|
import { SimplePeerTransportProxyFactory } from '@dxos/network-manager';
|
|
11
17
|
import { type RpcPort } from '@dxos/rpc';
|
|
12
18
|
import { type MaybePromise } from '@dxos/util';
|
|
@@ -41,6 +47,8 @@ export class WorkerRuntime {
|
|
|
41
47
|
private readonly _clientServices!: ClientServicesHost;
|
|
42
48
|
private _sessionForNetworking?: WorkerSession; // TODO(burdon): Expose to client QueryStatusResponse.
|
|
43
49
|
private _config!: Config;
|
|
50
|
+
private _signalMetadataTags: any = { runtime: 'worker-runtime' };
|
|
51
|
+
private _signalTelemetryEnabled: boolean = false;
|
|
44
52
|
|
|
45
53
|
constructor(
|
|
46
54
|
private readonly _configProvider: () => MaybePromise<Config>,
|
|
@@ -68,7 +76,7 @@ export class WorkerRuntime {
|
|
|
68
76
|
this._clientServices.initialize({
|
|
69
77
|
config: this._config,
|
|
70
78
|
signalManager: signals
|
|
71
|
-
? new WebsocketSignalManager(signals)
|
|
79
|
+
? new WebsocketSignalManager(signals, () => (this._signalTelemetryEnabled ? this._signalMetadataTags : {}))
|
|
72
80
|
: new MemorySignalManager(new MemorySignalManagerContext()), // TODO(dmaretskyi): Inject this context.
|
|
73
81
|
transportFactory: this._transportFactory,
|
|
74
82
|
});
|
|
@@ -76,6 +84,13 @@ export class WorkerRuntime {
|
|
|
76
84
|
await this._clientServices.open(new Context());
|
|
77
85
|
this._ready.wake(undefined);
|
|
78
86
|
log('started');
|
|
87
|
+
setIdentityTags({
|
|
88
|
+
identityService: this._clientServices.services.IdentityService!,
|
|
89
|
+
devicesService: this._clientServices.services.DevicesService!,
|
|
90
|
+
setTag: (k: string, v: string) => {
|
|
91
|
+
this._signalMetadataTags[k] = v;
|
|
92
|
+
},
|
|
93
|
+
});
|
|
79
94
|
} catch (err: any) {
|
|
80
95
|
this._ready.wake(err);
|
|
81
96
|
log.error('starting', err);
|
|
@@ -112,6 +127,16 @@ export class WorkerRuntime {
|
|
|
112
127
|
});
|
|
113
128
|
|
|
114
129
|
await session.open();
|
|
130
|
+
// A worker can only service one origin currently
|
|
131
|
+
invariant(
|
|
132
|
+
!this._signalMetadataTags.origin || this._signalMetadataTags.origin === session.origin,
|
|
133
|
+
`worker origin changed from ${this._signalMetadataTags.origin} to ${session.origin}?`,
|
|
134
|
+
);
|
|
135
|
+
if (session.observabilityGroup) {
|
|
136
|
+
this._signalMetadataTags.group = session.observabilityGroup;
|
|
137
|
+
}
|
|
138
|
+
this._signalTelemetryEnabled = session.signalTelemetryEnabled ?? false;
|
|
139
|
+
this._signalMetadataTags.origin = session.origin;
|
|
115
140
|
this._sessions.add(session);
|
|
116
141
|
|
|
117
142
|
this._reconnectWebrtc();
|
|
@@ -41,6 +41,10 @@ export class WorkerSession {
|
|
|
41
41
|
@logInfo
|
|
42
42
|
public origin?: string;
|
|
43
43
|
|
|
44
|
+
// TODO(nf): factor out?
|
|
45
|
+
public observabilityGroup?: string;
|
|
46
|
+
public signalTelemetryEnabled?: boolean;
|
|
47
|
+
|
|
44
48
|
@logInfo
|
|
45
49
|
public lockKey?: string;
|
|
46
50
|
|
|
@@ -91,6 +95,8 @@ export class WorkerSession {
|
|
|
91
95
|
start: async (request) => {
|
|
92
96
|
this.origin = request.origin;
|
|
93
97
|
this.lockKey = request.lockKey;
|
|
98
|
+
this.observabilityGroup = request.observabilityGroup;
|
|
99
|
+
this.signalTelemetryEnabled = request.signalTelemetryEnabled;
|
|
94
100
|
this._startTrigger.wake();
|
|
95
101
|
},
|
|
96
102
|
|
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";
|