@dxos/client-services 0.1.53-main.f5aedb7 → 0.1.53-next.3ab34c0
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-PWZ2J6KS.mjs → chunk-F4BHRFH4.mjs} +250 -115
- package/dist/lib/browser/chunk-F4BHRFH4.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +20 -59
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/packlets/testing/index.mjs +19 -2
- package/dist/lib/browser/packlets/testing/index.mjs.map +3 -3
- package/dist/lib/node/index.cjs +274 -179
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/packlets/testing/index.cjs +247 -145
- package/dist/lib/node/packlets/testing/index.cjs.map +4 -4
- package/dist/types/src/packlets/identity/authenticator.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity.d.ts.map +1 -1
- package/dist/types/src/packlets/services/index.d.ts +1 -0
- 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/spaces/data-space-manager.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/data-space.d.ts +11 -2
- package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts +2 -1
- package/dist/types/src/packlets/spaces/notarization-plugin.d.ts.map +1 -1
- package/dist/types/src/packlets/spaces/spaces-service.d.ts +1 -1
- package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
- package/dist/types/src/packlets/testing/test-builder.d.ts +7 -1
- package/dist/types/src/packlets/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/packlets/vault/worker-session.d.ts.map +1 -1
- package/package.json +32 -32
- package/src/packlets/identity/authenticator.ts +4 -2
- package/src/packlets/identity/identity.ts +21 -26
- package/src/packlets/services/index.ts +1 -0
- package/src/packlets/services/service-context.ts +9 -7
- package/src/packlets/spaces/data-space-manager.test.ts +75 -119
- package/src/packlets/spaces/data-space-manager.ts +13 -3
- package/src/packlets/spaces/data-space.ts +66 -20
- package/src/packlets/spaces/notarization-plugin.test.ts +1 -1
- package/src/packlets/spaces/notarization-plugin.ts +5 -1
- package/src/packlets/spaces/spaces-service.test.ts +5 -3
- package/src/packlets/spaces/spaces-service.ts +26 -8
- package/src/packlets/testing/test-builder.ts +35 -2
- package/src/packlets/vault/worker-session.ts +5 -4
- package/dist/lib/browser/chunk-PWZ2J6KS.mjs.map +0 -7
package/dist/lib/node/index.cjs
CHANGED
|
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// packages/sdk/client-services/src/index.ts
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
|
+
ClientRpcServer: () => ClientRpcServer,
|
|
33
34
|
ClientServicesHost: () => ClientServicesHost,
|
|
34
35
|
DataSpace: () => DataSpace,
|
|
35
36
|
DataSpaceManager: () => DataSpaceManager,
|
|
@@ -420,6 +421,7 @@ var import_credentials = require("@dxos/credentials");
|
|
|
420
421
|
var import_log = require("@dxos/log");
|
|
421
422
|
var import_protocols = require("@dxos/protocols");
|
|
422
423
|
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/identity/authenticator.ts";
|
|
424
|
+
var Credential = import_protocols.schema.getCodecForType("dxos.halo.credentials.Credential");
|
|
423
425
|
var createAuthProvider = (signer) => async (nonce) => {
|
|
424
426
|
const credential = await signer.createCredential({
|
|
425
427
|
assertion: {
|
|
@@ -428,7 +430,7 @@ var createAuthProvider = (signer) => async (nonce) => {
|
|
|
428
430
|
subject: signer.getIssuer(),
|
|
429
431
|
nonce
|
|
430
432
|
});
|
|
431
|
-
return
|
|
433
|
+
return Credential.encode(credential);
|
|
432
434
|
};
|
|
433
435
|
var TrustedKeySetAuthVerifier = class {
|
|
434
436
|
// prettier-ignore
|
|
@@ -441,12 +443,12 @@ var TrustedKeySetAuthVerifier = class {
|
|
|
441
443
|
}
|
|
442
444
|
get verifier() {
|
|
443
445
|
return async (nonce, auth) => {
|
|
444
|
-
const credential =
|
|
446
|
+
const credential = Credential.decode(auth);
|
|
445
447
|
(0, import_log.log)("authenticating...", {
|
|
446
448
|
credential
|
|
447
449
|
}, {
|
|
448
450
|
F: __dxlog_file,
|
|
449
|
-
L:
|
|
451
|
+
L: 59,
|
|
450
452
|
S: this,
|
|
451
453
|
C: (f, a) => f(...a)
|
|
452
454
|
});
|
|
@@ -456,7 +458,7 @@ var TrustedKeySetAuthVerifier = class {
|
|
|
456
458
|
result
|
|
457
459
|
}, {
|
|
458
460
|
F: __dxlog_file,
|
|
459
|
-
L:
|
|
461
|
+
L: 63,
|
|
460
462
|
S: this,
|
|
461
463
|
C: (f, a) => f(...a)
|
|
462
464
|
});
|
|
@@ -468,7 +470,7 @@ var TrustedKeySetAuthVerifier = class {
|
|
|
468
470
|
credential
|
|
469
471
|
}, {
|
|
470
472
|
F: __dxlog_file,
|
|
471
|
-
L:
|
|
473
|
+
L: 68,
|
|
472
474
|
S: this,
|
|
473
475
|
C: (f, a) => f(...a)
|
|
474
476
|
});
|
|
@@ -479,7 +481,7 @@ var TrustedKeySetAuthVerifier = class {
|
|
|
479
481
|
key: credential.issuer
|
|
480
482
|
}, {
|
|
481
483
|
F: __dxlog_file,
|
|
482
|
-
L:
|
|
484
|
+
L: 73,
|
|
483
485
|
S: this,
|
|
484
486
|
C: (f, a) => f(...a)
|
|
485
487
|
});
|
|
@@ -495,7 +497,7 @@ var TrustedKeySetAuthVerifier = class {
|
|
|
495
497
|
key: credential.issuer
|
|
496
498
|
}, {
|
|
497
499
|
F: __dxlog_file,
|
|
498
|
-
L:
|
|
500
|
+
L: 84,
|
|
499
501
|
S: this,
|
|
500
502
|
C: (f, a) => f(...a)
|
|
501
503
|
});
|
|
@@ -505,7 +507,7 @@ var TrustedKeySetAuthVerifier = class {
|
|
|
505
507
|
key: credential.issuer
|
|
506
508
|
}, {
|
|
507
509
|
F: __dxlog_file,
|
|
508
|
-
L:
|
|
510
|
+
L: 87,
|
|
509
511
|
S: this,
|
|
510
512
|
C: (f, a) => f(...a)
|
|
511
513
|
});
|
|
@@ -545,15 +547,15 @@ var Identity = class {
|
|
|
545
547
|
this._signer = signer;
|
|
546
548
|
this.identityKey = identityKey;
|
|
547
549
|
this.deviceKey = deviceKey;
|
|
548
|
-
this._deviceStateMachine =
|
|
550
|
+
this._deviceStateMachine = new import_credentials2.DeviceStateMachine({
|
|
549
551
|
identityKey: this.identityKey,
|
|
550
552
|
deviceKey: this.deviceKey,
|
|
551
553
|
onUpdate: () => this.stateUpdate.emit()
|
|
552
|
-
})
|
|
553
|
-
this._profileStateMachine =
|
|
554
|
+
});
|
|
555
|
+
this._profileStateMachine = new import_credentials2.ProfileStateMachine({
|
|
554
556
|
identityKey: this.identityKey,
|
|
555
557
|
onUpdate: () => this.stateUpdate.emit()
|
|
556
|
-
})
|
|
558
|
+
});
|
|
557
559
|
this.authVerifier = new TrustedKeySetAuthVerifier({
|
|
558
560
|
trustedKeysProvider: () => this.authorizedDeviceKeys,
|
|
559
561
|
update: this.stateUpdate,
|
|
@@ -562,27 +564,27 @@ var Identity = class {
|
|
|
562
564
|
}
|
|
563
565
|
// TODO(burdon): Expose state object?
|
|
564
566
|
get authorizedDeviceKeys() {
|
|
565
|
-
return this._deviceStateMachine.
|
|
567
|
+
return this._deviceStateMachine.authorizedDeviceKeys;
|
|
566
568
|
}
|
|
567
569
|
async open() {
|
|
568
|
-
await this.
|
|
569
|
-
await this.
|
|
570
|
+
await this.space.spaceState.addCredentialProcessor(this._deviceStateMachine);
|
|
571
|
+
await this.space.spaceState.addCredentialProcessor(this._profileStateMachine);
|
|
570
572
|
await this.space.open();
|
|
571
573
|
}
|
|
572
574
|
async close() {
|
|
573
575
|
await this.authVerifier.close();
|
|
574
|
-
await this.
|
|
575
|
-
await this.
|
|
576
|
+
await this.space.spaceState.removeCredentialProcessor(this._profileStateMachine);
|
|
577
|
+
await this.space.spaceState.removeCredentialProcessor(this._deviceStateMachine);
|
|
576
578
|
await this.space.close();
|
|
577
579
|
}
|
|
578
580
|
async ready() {
|
|
579
|
-
await this._deviceStateMachine.
|
|
581
|
+
await this._deviceStateMachine.deviceChainReady.wait();
|
|
580
582
|
await this.controlPipeline.state.waitUntilReachedTargetTimeframe({
|
|
581
583
|
timeout: import_client_protocol.LOAD_CONTROL_FEEDS_TIMEOUT
|
|
582
584
|
});
|
|
583
585
|
}
|
|
584
586
|
get profileDocument() {
|
|
585
|
-
return this._profileStateMachine.
|
|
587
|
+
return this._profileStateMachine.profile;
|
|
586
588
|
}
|
|
587
589
|
/**
|
|
588
590
|
* @test-only
|
|
@@ -597,7 +599,7 @@ var Identity = class {
|
|
|
597
599
|
return this.space.genesisFeedKey;
|
|
598
600
|
}
|
|
599
601
|
get deviceCredentialChain() {
|
|
600
|
-
return this._deviceStateMachine.
|
|
602
|
+
return this._deviceStateMachine.deviceCredentialChain;
|
|
601
603
|
}
|
|
602
604
|
getAdmissionCredentials() {
|
|
603
605
|
var _a, _b;
|
|
@@ -612,8 +614,8 @@ var Identity = class {
|
|
|
612
614
|
* Requires identity to be ready.
|
|
613
615
|
*/
|
|
614
616
|
getIdentityCredentialSigner() {
|
|
615
|
-
(0, import_tiny_invariant.default)(this._deviceStateMachine.
|
|
616
|
-
return (0, import_credentials2.createCredentialSignerWithChain)(this._signer, this._deviceStateMachine.
|
|
617
|
+
(0, import_tiny_invariant.default)(this._deviceStateMachine.deviceCredentialChain, "Device credential chain is not ready.");
|
|
618
|
+
return (0, import_credentials2.createCredentialSignerWithChain)(this._signer, this._deviceStateMachine.deviceCredentialChain, this.deviceKey);
|
|
617
619
|
}
|
|
618
620
|
/**
|
|
619
621
|
* Issues credentials as device.
|
|
@@ -630,7 +632,7 @@ var Identity = class {
|
|
|
630
632
|
dataFeedKey
|
|
631
633
|
}, {
|
|
632
634
|
F: __dxlog_file2,
|
|
633
|
-
L:
|
|
635
|
+
L: 151,
|
|
634
636
|
S: this,
|
|
635
637
|
C: (f, a) => f(...a)
|
|
636
638
|
});
|
|
@@ -2148,11 +2150,64 @@ var SpaceInvitationProtocol = class {
|
|
|
2148
2150
|
}
|
|
2149
2151
|
};
|
|
2150
2152
|
|
|
2153
|
+
// packages/sdk/client-services/src/packlets/services/client-rpc-server.ts
|
|
2154
|
+
var import_codec_protobuf9 = require("@dxos/codec-protobuf");
|
|
2155
|
+
var import_debug3 = require("@dxos/debug");
|
|
2156
|
+
var import_rpc = require("@dxos/rpc");
|
|
2157
|
+
var ClientRpcServer = class {
|
|
2158
|
+
constructor(params) {
|
|
2159
|
+
this._handlerCache = /* @__PURE__ */ new Map();
|
|
2160
|
+
const { serviceRegistry, handleCall, handleStream, ...rpcOptions } = params;
|
|
2161
|
+
this._handleCall = handleCall;
|
|
2162
|
+
this._handleStream = handleStream;
|
|
2163
|
+
this._serviceRegistry = serviceRegistry;
|
|
2164
|
+
this._rpcPeer = new import_rpc.RpcPeer({
|
|
2165
|
+
...rpcOptions,
|
|
2166
|
+
callHandler: (method, params2) => {
|
|
2167
|
+
const [serviceName, methodName] = (0, import_rpc.parseMethodName)(method);
|
|
2168
|
+
const handler = (method2, params3) => this._getServiceHandler(serviceName).call(method2, params3);
|
|
2169
|
+
if (this._handleCall) {
|
|
2170
|
+
return this._handleCall(methodName, params2, handler);
|
|
2171
|
+
} else {
|
|
2172
|
+
return handler(methodName, params2);
|
|
2173
|
+
}
|
|
2174
|
+
},
|
|
2175
|
+
streamHandler: (method, params2) => {
|
|
2176
|
+
const [serviceName, methodName] = (0, import_rpc.parseMethodName)(method);
|
|
2177
|
+
const handler = (method2, params3) => this._getServiceHandler(serviceName).callStream(method2, params3);
|
|
2178
|
+
if (this._handleStream) {
|
|
2179
|
+
return import_codec_protobuf9.Stream.unwrapPromise(this._handleStream(methodName, params2, handler));
|
|
2180
|
+
} else {
|
|
2181
|
+
return handler(methodName, params2);
|
|
2182
|
+
}
|
|
2183
|
+
}
|
|
2184
|
+
});
|
|
2185
|
+
}
|
|
2186
|
+
async open() {
|
|
2187
|
+
await this._rpcPeer.open();
|
|
2188
|
+
}
|
|
2189
|
+
async close() {
|
|
2190
|
+
await this._rpcPeer.close();
|
|
2191
|
+
}
|
|
2192
|
+
_getServiceHandler(serviceName) {
|
|
2193
|
+
var _a;
|
|
2194
|
+
if (!this._handlerCache.has(serviceName)) {
|
|
2195
|
+
const [key, descriptor] = (_a = Object.entries(this._serviceRegistry.descriptors).find(([key2, descriptor2]) => descriptor2.name === serviceName)) != null ? _a : (0, import_debug3.raise)(new Error(`Service not available: ${serviceName}`));
|
|
2196
|
+
const service = this._serviceRegistry.services[key];
|
|
2197
|
+
if (!service) {
|
|
2198
|
+
throw new Error(`Service not available: ${serviceName}`);
|
|
2199
|
+
}
|
|
2200
|
+
this._handlerCache.set(serviceName, descriptor.createServer(service));
|
|
2201
|
+
}
|
|
2202
|
+
return this._handlerCache.get(serviceName);
|
|
2203
|
+
}
|
|
2204
|
+
};
|
|
2205
|
+
|
|
2151
2206
|
// packages/sdk/client-services/src/packlets/services/service-context.ts
|
|
2152
2207
|
var import_tiny_invariant11 = __toESM(require("tiny-invariant"));
|
|
2153
2208
|
var import_async14 = require("@dxos/async");
|
|
2154
2209
|
var import_credentials13 = require("@dxos/credentials");
|
|
2155
|
-
var
|
|
2210
|
+
var import_debug7 = require("@dxos/debug");
|
|
2156
2211
|
var import_echo_pipeline3 = require("@dxos/echo-pipeline");
|
|
2157
2212
|
var import_feed_store4 = require("@dxos/feed-store");
|
|
2158
2213
|
var import_keyring = require("@dxos/keyring");
|
|
@@ -2178,7 +2233,7 @@ var import_util5 = require("@dxos/util");
|
|
|
2178
2233
|
var import_async11 = require("@dxos/async");
|
|
2179
2234
|
var import_client_protocol3 = require("@dxos/client-protocol");
|
|
2180
2235
|
var import_context6 = require("@dxos/context");
|
|
2181
|
-
var
|
|
2236
|
+
var import_debug4 = require("@dxos/debug");
|
|
2182
2237
|
var import_echo_pipeline = require("@dxos/echo-pipeline");
|
|
2183
2238
|
var import_errors3 = require("@dxos/errors");
|
|
2184
2239
|
var import_keys8 = require("@dxos/keys");
|
|
@@ -2210,6 +2265,9 @@ var NotarizationPlugin = class {
|
|
|
2210
2265
|
this._processedCredentials = new import_util3.ComplexSet(import_keys7.PublicKey.hash);
|
|
2211
2266
|
this._processCredentialsTriggers = new import_util3.ComplexMap(import_keys7.PublicKey.hash);
|
|
2212
2267
|
}
|
|
2268
|
+
get hasWriter() {
|
|
2269
|
+
return !!this._writer;
|
|
2270
|
+
}
|
|
2213
2271
|
async open() {
|
|
2214
2272
|
}
|
|
2215
2273
|
async close() {
|
|
@@ -2223,7 +2281,7 @@ var NotarizationPlugin = class {
|
|
|
2223
2281
|
credentials
|
|
2224
2282
|
}, {
|
|
2225
2283
|
F: __dxlog_file8,
|
|
2226
|
-
L:
|
|
2284
|
+
L: 91,
|
|
2227
2285
|
S: this,
|
|
2228
2286
|
C: (f, a) => f(...a)
|
|
2229
2287
|
});
|
|
@@ -2235,7 +2293,7 @@ var NotarizationPlugin = class {
|
|
|
2235
2293
|
err
|
|
2236
2294
|
}, {
|
|
2237
2295
|
F: __dxlog_file8,
|
|
2238
|
-
L:
|
|
2296
|
+
L: 100,
|
|
2239
2297
|
S: this,
|
|
2240
2298
|
C: (f, a) => f(...a)
|
|
2241
2299
|
});
|
|
@@ -2251,7 +2309,7 @@ var NotarizationPlugin = class {
|
|
|
2251
2309
|
peers: Array.from(this._extensions).map((extension) => extension.remotePeerId)
|
|
2252
2310
|
}, {
|
|
2253
2311
|
F: __dxlog_file8,
|
|
2254
|
-
L:
|
|
2312
|
+
L: 112,
|
|
2255
2313
|
S: this,
|
|
2256
2314
|
C: (f, a) => f(...a)
|
|
2257
2315
|
});
|
|
@@ -2274,7 +2332,7 @@ var NotarizationPlugin = class {
|
|
|
2274
2332
|
retryIn: retryTimeout
|
|
2275
2333
|
}, {
|
|
2276
2334
|
F: __dxlog_file8,
|
|
2277
|
-
L:
|
|
2335
|
+
L: 137,
|
|
2278
2336
|
S: this,
|
|
2279
2337
|
C: (f, a) => f(...a)
|
|
2280
2338
|
});
|
|
@@ -2288,7 +2346,7 @@ var NotarizationPlugin = class {
|
|
|
2288
2346
|
credentialId: credentials.map((credential) => credential.id)
|
|
2289
2347
|
}, {
|
|
2290
2348
|
F: __dxlog_file8,
|
|
2291
|
-
L:
|
|
2349
|
+
L: 144,
|
|
2292
2350
|
S: this,
|
|
2293
2351
|
C: (f, a) => f(...a)
|
|
2294
2352
|
});
|
|
@@ -2297,7 +2355,7 @@ var NotarizationPlugin = class {
|
|
|
2297
2355
|
});
|
|
2298
2356
|
(0, import_log8.log)("success", void 0, {
|
|
2299
2357
|
F: __dxlog_file8,
|
|
2300
|
-
L:
|
|
2358
|
+
L: 148,
|
|
2301
2359
|
S: this,
|
|
2302
2360
|
C: (f, a) => f(...a)
|
|
2303
2361
|
});
|
|
@@ -2306,7 +2364,7 @@ var NotarizationPlugin = class {
|
|
|
2306
2364
|
if (!ctx.disposed && !err.message.includes(WRITER_NOT_SET_ERROR_CODE)) {
|
|
2307
2365
|
import_log8.log.warn("error notarizing (recoverable)", err, {
|
|
2308
2366
|
F: __dxlog_file8,
|
|
2309
|
-
L:
|
|
2367
|
+
L: 152,
|
|
2310
2368
|
S: this,
|
|
2311
2369
|
C: (f, a) => f(...a)
|
|
2312
2370
|
});
|
|
@@ -2324,7 +2382,7 @@ var NotarizationPlugin = class {
|
|
|
2324
2382
|
]);
|
|
2325
2383
|
(0, import_log8.log)("done", void 0, {
|
|
2326
2384
|
F: __dxlog_file8,
|
|
2327
|
-
L:
|
|
2385
|
+
L: 163,
|
|
2328
2386
|
S: this,
|
|
2329
2387
|
C: (f, a) => f(...a)
|
|
2330
2388
|
});
|
|
@@ -2335,7 +2393,7 @@ var NotarizationPlugin = class {
|
|
|
2335
2393
|
/**
|
|
2336
2394
|
* Called with credentials arriving from the control pipeline.
|
|
2337
2395
|
*/
|
|
2338
|
-
async
|
|
2396
|
+
async processCredential(credential) {
|
|
2339
2397
|
var _a;
|
|
2340
2398
|
if (!credential.id) {
|
|
2341
2399
|
return;
|
|
@@ -2377,7 +2435,7 @@ var NotarizationPlugin = class {
|
|
|
2377
2435
|
peer: extension.localPeerId
|
|
2378
2436
|
}, {
|
|
2379
2437
|
F: __dxlog_file8,
|
|
2380
|
-
L:
|
|
2438
|
+
L: 212,
|
|
2381
2439
|
S: this,
|
|
2382
2440
|
C: (f, a) => f(...a)
|
|
2383
2441
|
});
|
|
@@ -2389,7 +2447,7 @@ var NotarizationPlugin = class {
|
|
|
2389
2447
|
peer: extension.localPeerId
|
|
2390
2448
|
}, {
|
|
2391
2449
|
F: __dxlog_file8,
|
|
2392
|
-
L:
|
|
2450
|
+
L: 217,
|
|
2393
2451
|
S: this,
|
|
2394
2452
|
C: (f, a) => f(...a)
|
|
2395
2453
|
});
|
|
@@ -2446,6 +2504,7 @@ var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/sr
|
|
|
2446
2504
|
var DataSpace = class DataSpace2 {
|
|
2447
2505
|
constructor(params) {
|
|
2448
2506
|
this._ctx = new import_context6.Context();
|
|
2507
|
+
this._notarizationPlugin = new NotarizationPlugin();
|
|
2449
2508
|
this._state = import_services6.SpaceState.CLOSED;
|
|
2450
2509
|
/**
|
|
2451
2510
|
* Error for _state === SpaceState.ERROR.
|
|
@@ -2468,8 +2527,8 @@ var DataSpace = class DataSpace2 {
|
|
|
2468
2527
|
update: this._inner.stateUpdate,
|
|
2469
2528
|
authTimeout: import_client_protocol3.AUTH_TIMEOUT
|
|
2470
2529
|
});
|
|
2471
|
-
this._notarizationPluginConsumer = this._inner.spaceState.registerProcessor(new NotarizationPlugin());
|
|
2472
2530
|
this._cache = params.cache;
|
|
2531
|
+
this._state = params.initialState;
|
|
2473
2532
|
}
|
|
2474
2533
|
get key() {
|
|
2475
2534
|
return this._inner.key;
|
|
@@ -2491,25 +2550,36 @@ var DataSpace = class DataSpace2 {
|
|
|
2491
2550
|
return this._presence;
|
|
2492
2551
|
}
|
|
2493
2552
|
get notarizationPlugin() {
|
|
2494
|
-
return this.
|
|
2553
|
+
return this._notarizationPlugin;
|
|
2495
2554
|
}
|
|
2496
2555
|
get cache() {
|
|
2497
2556
|
return this._cache;
|
|
2498
2557
|
}
|
|
2499
2558
|
async open() {
|
|
2500
|
-
await this.
|
|
2501
|
-
|
|
2559
|
+
await this._open();
|
|
2560
|
+
}
|
|
2561
|
+
async _open() {
|
|
2562
|
+
await this._notarizationPlugin.open();
|
|
2563
|
+
await this._inner.spaceState.addCredentialProcessor(this._notarizationPlugin);
|
|
2502
2564
|
await this._inner.open();
|
|
2503
|
-
this._state = import_services6.SpaceState.
|
|
2565
|
+
this._state = import_services6.SpaceState.CONTROL_ONLY;
|
|
2566
|
+
this.stateUpdate.emit();
|
|
2567
|
+
this.metrics = {};
|
|
2504
2568
|
this.metrics.open = new Date();
|
|
2505
2569
|
}
|
|
2506
2570
|
async close() {
|
|
2571
|
+
await this._close();
|
|
2572
|
+
}
|
|
2573
|
+
async _close() {
|
|
2574
|
+
var _a, _b;
|
|
2575
|
+
await ((_b = (_a = this._callbacks).beforeClose) == null ? void 0 : _b.call(_a));
|
|
2507
2576
|
this._state = import_services6.SpaceState.CLOSED;
|
|
2508
2577
|
await this._ctx.dispose();
|
|
2578
|
+
this._ctx = new import_context6.Context();
|
|
2509
2579
|
await this.authVerifier.close();
|
|
2510
2580
|
await this._inner.close();
|
|
2511
|
-
await this.
|
|
2512
|
-
await this.
|
|
2581
|
+
await this._inner.spaceState.removeCredentialProcessor(this._notarizationPlugin);
|
|
2582
|
+
await this._notarizationPlugin.close();
|
|
2513
2583
|
await this._presence.destroy();
|
|
2514
2584
|
}
|
|
2515
2585
|
async postMessage(channel, message) {
|
|
@@ -2530,7 +2600,7 @@ var DataSpace = class DataSpace2 {
|
|
|
2530
2600
|
if (err instanceof import_errors3.CancelledError) {
|
|
2531
2601
|
(0, import_log9.log)("Data pipeline initialization cancelled", err, {
|
|
2532
2602
|
F: __dxlog_file9,
|
|
2533
|
-
L:
|
|
2603
|
+
L: 193,
|
|
2534
2604
|
S: this,
|
|
2535
2605
|
C: (f, a) => f(...a)
|
|
2536
2606
|
});
|
|
@@ -2538,7 +2608,7 @@ var DataSpace = class DataSpace2 {
|
|
|
2538
2608
|
}
|
|
2539
2609
|
import_log9.log.error("Error initializing data pipeline", err, {
|
|
2540
2610
|
F: __dxlog_file9,
|
|
2541
|
-
L:
|
|
2611
|
+
L: 197,
|
|
2542
2612
|
S: this,
|
|
2543
2613
|
C: (f, a) => f(...a)
|
|
2544
2614
|
});
|
|
@@ -2552,7 +2622,7 @@ var DataSpace = class DataSpace2 {
|
|
|
2552
2622
|
}
|
|
2553
2623
|
async initializeDataPipeline() {
|
|
2554
2624
|
var _a, _b, _c, _d;
|
|
2555
|
-
if (this._state !== import_services6.SpaceState.
|
|
2625
|
+
if (this._state !== import_services6.SpaceState.CONTROL_ONLY) {
|
|
2556
2626
|
throw new import_errors3.SystemError("Invalid operation");
|
|
2557
2627
|
}
|
|
2558
2628
|
this._state = import_services6.SpaceState.INITIALIZING;
|
|
@@ -2564,22 +2634,24 @@ var DataSpace = class DataSpace2 {
|
|
|
2564
2634
|
await this._createWritableFeeds();
|
|
2565
2635
|
(0, import_log9.log)("Writable feeds created", void 0, {
|
|
2566
2636
|
F: __dxlog_file9,
|
|
2567
|
-
L:
|
|
2637
|
+
L: 221,
|
|
2568
2638
|
S: this,
|
|
2569
2639
|
C: (f, a) => f(...a)
|
|
2570
2640
|
});
|
|
2571
2641
|
this.stateUpdate.emit();
|
|
2572
|
-
this.notarizationPlugin.
|
|
2573
|
-
credential
|
|
2574
|
-
credential
|
|
2575
|
-
|
|
2576
|
-
|
|
2642
|
+
if (!this.notarizationPlugin.hasWriter) {
|
|
2643
|
+
this.notarizationPlugin.setWriter((0, import_echo_pipeline.createMappedFeedWriter)((credential) => ({
|
|
2644
|
+
credential: {
|
|
2645
|
+
credential
|
|
2646
|
+
}
|
|
2647
|
+
}), this._inner.controlPipeline.writer));
|
|
2648
|
+
}
|
|
2577
2649
|
await this._inner.initializeDataPipeline();
|
|
2578
2650
|
this.metrics.dataPipelineOpen = new Date();
|
|
2579
2651
|
await (0, import_context6.cancelWithContext)(this._ctx, this._inner.dataPipeline.ensureEpochInitialized());
|
|
2580
2652
|
(0, import_log9.log)("waiting for data pipeline to reach target timeframe", void 0, {
|
|
2581
2653
|
F: __dxlog_file9,
|
|
2582
|
-
L:
|
|
2654
|
+
L: 242,
|
|
2583
2655
|
S: this,
|
|
2584
2656
|
C: (f, a) => f(...a)
|
|
2585
2657
|
});
|
|
@@ -2590,7 +2662,7 @@ var DataSpace = class DataSpace2 {
|
|
|
2590
2662
|
this.metrics.dataPipelineReady = new Date();
|
|
2591
2663
|
(0, import_log9.log)("data pipeline ready", void 0, {
|
|
2592
2664
|
F: __dxlog_file9,
|
|
2593
|
-
L:
|
|
2665
|
+
L: 251,
|
|
2594
2666
|
S: this,
|
|
2595
2667
|
C: (f, a) => f(...a)
|
|
2596
2668
|
});
|
|
@@ -2670,17 +2742,46 @@ var DataSpace = class DataSpace2 {
|
|
|
2670
2742
|
}
|
|
2671
2743
|
}
|
|
2672
2744
|
}
|
|
2745
|
+
async activate() {
|
|
2746
|
+
if (this._state !== import_services6.SpaceState.INACTIVE) {
|
|
2747
|
+
throw new import_errors3.SystemError("Invalid operation");
|
|
2748
|
+
}
|
|
2749
|
+
await this._metadataStore.setSpaceState(this.key, import_services6.SpaceState.ACTIVE);
|
|
2750
|
+
await this._open();
|
|
2751
|
+
this.initializeDataPipelineAsync();
|
|
2752
|
+
}
|
|
2753
|
+
async deactivate() {
|
|
2754
|
+
if (this._state === import_services6.SpaceState.INACTIVE) {
|
|
2755
|
+
throw new import_errors3.SystemError("Invalid operation");
|
|
2756
|
+
}
|
|
2757
|
+
await this._metadataStore.setSpaceState(this.key, import_services6.SpaceState.INACTIVE);
|
|
2758
|
+
await this._close();
|
|
2759
|
+
this._state = import_services6.SpaceState.INACTIVE;
|
|
2760
|
+
this.stateUpdate.emit();
|
|
2761
|
+
}
|
|
2673
2762
|
};
|
|
2674
2763
|
_ts_decorate([
|
|
2675
|
-
|
|
2764
|
+
import_async11.synchronized
|
|
2765
|
+
], DataSpace.prototype, "open", null);
|
|
2766
|
+
_ts_decorate([
|
|
2767
|
+
import_async11.synchronized
|
|
2768
|
+
], DataSpace.prototype, "close", null);
|
|
2769
|
+
_ts_decorate([
|
|
2770
|
+
(0, import_debug4.timed)(1e4)
|
|
2676
2771
|
], DataSpace.prototype, "_createWritableFeeds", null);
|
|
2772
|
+
_ts_decorate([
|
|
2773
|
+
import_async11.synchronized
|
|
2774
|
+
], DataSpace.prototype, "activate", null);
|
|
2775
|
+
_ts_decorate([
|
|
2776
|
+
import_async11.synchronized
|
|
2777
|
+
], DataSpace.prototype, "deactivate", null);
|
|
2677
2778
|
DataSpace = _ts_decorate([
|
|
2678
2779
|
(0, import_async11.trackLeaks)("open", "close")
|
|
2679
2780
|
], DataSpace);
|
|
2680
2781
|
|
|
2681
2782
|
// packages/sdk/client-services/src/packlets/spaces/genesis.ts
|
|
2682
2783
|
var import_credentials10 = require("@dxos/credentials");
|
|
2683
|
-
var
|
|
2784
|
+
var import_debug5 = require("@dxos/debug");
|
|
2684
2785
|
var import_credentials11 = require("@dxos/protocols/proto/dxos/halo/credentials");
|
|
2685
2786
|
var import_timeframe2 = require("@dxos/timeframe");
|
|
2686
2787
|
var spaceGenesis = async (keyring, signingContext, space) => {
|
|
@@ -2704,11 +2805,11 @@ var spaceGenesis = async (keyring, signingContext, space) => {
|
|
|
2704
2805
|
spaceKey: space.key,
|
|
2705
2806
|
role: import_credentials11.SpaceMember.Role.ADMIN,
|
|
2706
2807
|
profile: signingContext.profile,
|
|
2707
|
-
genesisFeedKey: (_a = space.controlFeedKey) != null ? _a : (0,
|
|
2808
|
+
genesisFeedKey: (_a = space.controlFeedKey) != null ? _a : (0, import_debug5.failUndefined)()
|
|
2708
2809
|
}
|
|
2709
2810
|
}),
|
|
2710
2811
|
await signingContext.credentialSigner.createCredential({
|
|
2711
|
-
subject: (_b = space.controlFeedKey) != null ? _b : (0,
|
|
2812
|
+
subject: (_b = space.controlFeedKey) != null ? _b : (0, import_debug5.failUndefined)(),
|
|
2712
2813
|
assertion: {
|
|
2713
2814
|
"@type": "dxos.halo.credentials.AdmittedFeed",
|
|
2714
2815
|
spaceKey: space.key,
|
|
@@ -2718,7 +2819,7 @@ var spaceGenesis = async (keyring, signingContext, space) => {
|
|
|
2718
2819
|
}
|
|
2719
2820
|
}),
|
|
2720
2821
|
await signingContext.credentialSigner.createCredential({
|
|
2721
|
-
subject: (_c = space.dataFeedKey) != null ? _c : (0,
|
|
2822
|
+
subject: (_c = space.dataFeedKey) != null ? _c : (0, import_debug5.failUndefined)(),
|
|
2722
2823
|
assertion: {
|
|
2723
2824
|
"@type": "dxos.halo.credentials.AdmittedFeed",
|
|
2724
2825
|
spaceKey: space.key,
|
|
@@ -2728,7 +2829,7 @@ var spaceGenesis = async (keyring, signingContext, space) => {
|
|
|
2728
2829
|
}
|
|
2729
2830
|
}),
|
|
2730
2831
|
await signingContext.credentialSigner.createCredential({
|
|
2731
|
-
subject: (_d = space.key) != null ? _d : (0,
|
|
2832
|
+
subject: (_d = space.key) != null ? _d : (0, import_debug5.failUndefined)(),
|
|
2732
2833
|
assertion: {
|
|
2733
2834
|
"@type": "dxos.halo.credentials.Epoch",
|
|
2734
2835
|
number: 0,
|
|
@@ -2813,14 +2914,16 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2813
2914
|
C: (f, a) => f(...a)
|
|
2814
2915
|
});
|
|
2815
2916
|
const space = await this._constructSpace(spaceMetadata);
|
|
2816
|
-
|
|
2917
|
+
if (spaceMetadata.state !== import_services7.SpaceState.INACTIVE) {
|
|
2918
|
+
space.initializeDataPipelineAsync();
|
|
2919
|
+
}
|
|
2817
2920
|
} catch (err) {
|
|
2818
2921
|
import_log10.log.error("Error loading space", {
|
|
2819
2922
|
spaceMetadata,
|
|
2820
2923
|
err
|
|
2821
2924
|
}, {
|
|
2822
2925
|
F: __dxlog_file10,
|
|
2823
|
-
L:
|
|
2926
|
+
L: 93,
|
|
2824
2927
|
S: this,
|
|
2825
2928
|
C: (f, a) => f(...a)
|
|
2826
2929
|
});
|
|
@@ -2832,7 +2935,7 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2832
2935
|
id: this._instanceId
|
|
2833
2936
|
}), {
|
|
2834
2937
|
F: __dxlog_file10,
|
|
2835
|
-
L:
|
|
2938
|
+
L: 99,
|
|
2836
2939
|
S: this,
|
|
2837
2940
|
C: (f, a) => f(...a)
|
|
2838
2941
|
});
|
|
@@ -2840,7 +2943,7 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2840
2943
|
async close() {
|
|
2841
2944
|
(0, import_log10.log)("close", void 0, {
|
|
2842
2945
|
F: __dxlog_file10,
|
|
2843
|
-
L:
|
|
2946
|
+
L: 104,
|
|
2844
2947
|
S: this,
|
|
2845
2948
|
C: (f, a) => f(...a)
|
|
2846
2949
|
});
|
|
@@ -2862,13 +2965,14 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2862
2965
|
key: spaceKey,
|
|
2863
2966
|
genesisFeedKey: controlFeedKey,
|
|
2864
2967
|
controlFeedKey,
|
|
2865
|
-
dataFeedKey
|
|
2968
|
+
dataFeedKey,
|
|
2969
|
+
state: import_services7.SpaceState.ACTIVE
|
|
2866
2970
|
};
|
|
2867
2971
|
(0, import_log10.log)("creating space...", {
|
|
2868
2972
|
spaceKey
|
|
2869
2973
|
}, {
|
|
2870
2974
|
F: __dxlog_file10,
|
|
2871
|
-
L:
|
|
2975
|
+
L: 129,
|
|
2872
2976
|
S: this,
|
|
2873
2977
|
C: (f, a) => f(...a)
|
|
2874
2978
|
});
|
|
@@ -2888,7 +2992,7 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2888
2992
|
opts
|
|
2889
2993
|
}, {
|
|
2890
2994
|
F: __dxlog_file10,
|
|
2891
|
-
L:
|
|
2995
|
+
L: 148,
|
|
2892
2996
|
S: this,
|
|
2893
2997
|
C: (f, a) => f(...a)
|
|
2894
2998
|
});
|
|
@@ -2922,7 +3026,7 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2922
3026
|
metadata
|
|
2923
3027
|
}, {
|
|
2924
3028
|
F: __dxlog_file10,
|
|
2925
|
-
L:
|
|
3029
|
+
L: 183,
|
|
2926
3030
|
S: this,
|
|
2927
3031
|
C: (f, a) => f(...a)
|
|
2928
3032
|
});
|
|
@@ -2958,7 +3062,7 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2958
3062
|
onAuthFailure: () => {
|
|
2959
3063
|
import_log10.log.warn("auth failure", void 0, {
|
|
2960
3064
|
F: __dxlog_file10,
|
|
2961
|
-
L:
|
|
3065
|
+
L: 214,
|
|
2962
3066
|
S: this,
|
|
2963
3067
|
C: (f, a) => f(...a)
|
|
2964
3068
|
});
|
|
@@ -2969,6 +3073,7 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2969
3073
|
dataFeed && space.setDataFeed(dataFeed);
|
|
2970
3074
|
const dataSpace = new DataSpace({
|
|
2971
3075
|
inner: space,
|
|
3076
|
+
initialState: metadata.state === import_services7.SpaceState.INACTIVE ? import_services7.SpaceState.INACTIVE : import_services7.SpaceState.CLOSED,
|
|
2972
3077
|
metadataStore: this._metadataStore,
|
|
2973
3078
|
gossip,
|
|
2974
3079
|
presence,
|
|
@@ -2981,11 +3086,11 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2981
3086
|
space: space.key
|
|
2982
3087
|
}, {
|
|
2983
3088
|
F: __dxlog_file10,
|
|
2984
|
-
L:
|
|
3089
|
+
L: 232,
|
|
2985
3090
|
S: this,
|
|
2986
3091
|
C: (f, a) => f(...a)
|
|
2987
3092
|
});
|
|
2988
|
-
this._dataServiceSubscriptions.registerSpace(space.key, dataSpace.dataPipeline.databaseHost.createDataServiceHost());
|
|
3093
|
+
await this._dataServiceSubscriptions.registerSpace(space.key, dataSpace.dataPipeline.databaseHost.createDataServiceHost());
|
|
2989
3094
|
},
|
|
2990
3095
|
afterReady: async () => {
|
|
2991
3096
|
(0, import_log10.log)("after space ready", {
|
|
@@ -2993,18 +3098,31 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2993
3098
|
open: this._isOpen
|
|
2994
3099
|
}, {
|
|
2995
3100
|
F: __dxlog_file10,
|
|
2996
|
-
L:
|
|
3101
|
+
L: 239,
|
|
2997
3102
|
S: this,
|
|
2998
3103
|
C: (f, a) => f(...a)
|
|
2999
3104
|
});
|
|
3000
3105
|
if (this._isOpen) {
|
|
3001
3106
|
this.updated.emit();
|
|
3002
3107
|
}
|
|
3108
|
+
},
|
|
3109
|
+
beforeClose: async () => {
|
|
3110
|
+
(0, import_log10.log)("before space close", {
|
|
3111
|
+
space: space.key
|
|
3112
|
+
}, {
|
|
3113
|
+
F: __dxlog_file10,
|
|
3114
|
+
L: 245,
|
|
3115
|
+
S: this,
|
|
3116
|
+
C: (f, a) => f(...a)
|
|
3117
|
+
});
|
|
3118
|
+
await this._dataServiceSubscriptions.unregisterSpace(space.key);
|
|
3003
3119
|
}
|
|
3004
3120
|
},
|
|
3005
3121
|
cache: metadata.cache
|
|
3006
3122
|
});
|
|
3007
|
-
|
|
3123
|
+
if (metadata.state !== import_services7.SpaceState.INACTIVE) {
|
|
3124
|
+
await dataSpace.open();
|
|
3125
|
+
}
|
|
3008
3126
|
if (metadata.controlTimeframe) {
|
|
3009
3127
|
dataSpace.inner.controlPipeline.state.setTargetTimeframe(metadata.controlTimeframe);
|
|
3010
3128
|
}
|
|
@@ -3033,9 +3151,10 @@ DataSpaceManager = _ts_decorate2([
|
|
|
3033
3151
|
|
|
3034
3152
|
// packages/sdk/client-services/src/packlets/spaces/spaces-service.ts
|
|
3035
3153
|
var import_async13 = require("@dxos/async");
|
|
3036
|
-
var
|
|
3037
|
-
var
|
|
3154
|
+
var import_codec_protobuf10 = require("@dxos/codec-protobuf");
|
|
3155
|
+
var import_debug6 = require("@dxos/debug");
|
|
3038
3156
|
var import_echo_pipeline2 = require("@dxos/echo-pipeline");
|
|
3157
|
+
var import_errors4 = require("@dxos/errors");
|
|
3039
3158
|
var import_log11 = require("@dxos/log");
|
|
3040
3159
|
var import_protocols7 = require("@dxos/protocols");
|
|
3041
3160
|
var import_services8 = require("@dxos/protocols/proto/dxos/client/services");
|
|
@@ -3056,11 +3175,25 @@ var SpacesServiceImpl = class {
|
|
|
3056
3175
|
const space = await dataSpaceManager.createSpace();
|
|
3057
3176
|
return this._serializeSpace(space);
|
|
3058
3177
|
}
|
|
3059
|
-
async updateSpace(
|
|
3060
|
-
|
|
3178
|
+
async updateSpace({ spaceKey, state }) {
|
|
3179
|
+
var _a;
|
|
3180
|
+
const dataSpaceManager = await this._getDataSpaceManager();
|
|
3181
|
+
const space = (_a = dataSpaceManager.spaces.get(spaceKey)) != null ? _a : (0, import_debug6.raise)(new import_echo_pipeline2.SpaceNotFoundError(spaceKey));
|
|
3182
|
+
if (state) {
|
|
3183
|
+
switch (state) {
|
|
3184
|
+
case import_services8.SpaceState.ACTIVE:
|
|
3185
|
+
await space.activate();
|
|
3186
|
+
break;
|
|
3187
|
+
case import_services8.SpaceState.INACTIVE:
|
|
3188
|
+
await space.deactivate();
|
|
3189
|
+
break;
|
|
3190
|
+
default:
|
|
3191
|
+
throw new import_errors4.ApiError("Invalid space state");
|
|
3192
|
+
}
|
|
3193
|
+
}
|
|
3061
3194
|
}
|
|
3062
3195
|
querySpaces() {
|
|
3063
|
-
return new
|
|
3196
|
+
return new import_codec_protobuf10.Stream(({ next, ctx }) => {
|
|
3064
3197
|
const scheduler = new import_async13.UpdateScheduler(ctx, async () => {
|
|
3065
3198
|
const dataSpaceManager = await this._getDataSpaceManager();
|
|
3066
3199
|
const spaces = Array.from(dataSpaceManager.spaces.values()).map((space) => this._serializeSpace(space));
|
|
@@ -3068,7 +3201,7 @@ var SpacesServiceImpl = class {
|
|
|
3068
3201
|
spaces
|
|
3069
3202
|
}, {
|
|
3070
3203
|
F: __dxlog_file11,
|
|
3071
|
-
L:
|
|
3204
|
+
L: 78,
|
|
3072
3205
|
S: this,
|
|
3073
3206
|
C: (f, a) => f(...a)
|
|
3074
3207
|
});
|
|
@@ -3111,15 +3244,15 @@ var SpacesServiceImpl = class {
|
|
|
3111
3244
|
async postMessage({ spaceKey, channel, message }) {
|
|
3112
3245
|
var _a;
|
|
3113
3246
|
const dataSpaceManager = await this._getDataSpaceManager();
|
|
3114
|
-
const space = (_a = dataSpaceManager.spaces.get(spaceKey)) != null ? _a : (0,
|
|
3247
|
+
const space = (_a = dataSpaceManager.spaces.get(spaceKey)) != null ? _a : (0, import_debug6.raise)(new import_echo_pipeline2.SpaceNotFoundError(spaceKey));
|
|
3115
3248
|
await space.postMessage(getChannelId(channel), message);
|
|
3116
3249
|
}
|
|
3117
3250
|
subscribeMessages({ spaceKey, channel }) {
|
|
3118
|
-
return new
|
|
3251
|
+
return new import_codec_protobuf10.Stream(({ ctx, next }) => {
|
|
3119
3252
|
(0, import_async13.scheduleTask)(ctx, async () => {
|
|
3120
3253
|
var _a;
|
|
3121
3254
|
const dataSpaceManager = await this._getDataSpaceManager();
|
|
3122
|
-
const space = (_a = dataSpaceManager.spaces.get(spaceKey)) != null ? _a : (0,
|
|
3255
|
+
const space = (_a = dataSpaceManager.spaces.get(spaceKey)) != null ? _a : (0, import_debug6.raise)(new import_echo_pipeline2.SpaceNotFoundError(spaceKey));
|
|
3123
3256
|
const handle = space.listen(getChannelId(channel), (message) => {
|
|
3124
3257
|
next(message);
|
|
3125
3258
|
});
|
|
@@ -3128,21 +3261,21 @@ var SpacesServiceImpl = class {
|
|
|
3128
3261
|
});
|
|
3129
3262
|
}
|
|
3130
3263
|
queryCredentials({ spaceKey }) {
|
|
3131
|
-
return new
|
|
3264
|
+
return new import_codec_protobuf10.Stream(({ ctx, next }) => {
|
|
3132
3265
|
var _a;
|
|
3133
|
-
const space = (_a = this._spaceManager.spaces.get(spaceKey)) != null ? _a : (0,
|
|
3134
|
-
const processor =
|
|
3135
|
-
|
|
3266
|
+
const space = (_a = this._spaceManager.spaces.get(spaceKey)) != null ? _a : (0, import_debug6.raise)(new import_echo_pipeline2.SpaceNotFoundError(spaceKey));
|
|
3267
|
+
const processor = {
|
|
3268
|
+
processCredential: async (credential) => {
|
|
3136
3269
|
next(credential);
|
|
3137
3270
|
}
|
|
3138
|
-
}
|
|
3139
|
-
ctx.onDispose(() =>
|
|
3140
|
-
(0, import_async13.scheduleTask)(ctx, () =>
|
|
3271
|
+
};
|
|
3272
|
+
ctx.onDispose(() => space.spaceState.removeCredentialProcessor(processor));
|
|
3273
|
+
(0, import_async13.scheduleTask)(ctx, () => space.spaceState.addCredentialProcessor(processor));
|
|
3141
3274
|
});
|
|
3142
3275
|
}
|
|
3143
3276
|
async writeCredentials({ spaceKey, credentials }) {
|
|
3144
3277
|
var _a;
|
|
3145
|
-
const space = (_a = this._spaceManager.spaces.get(spaceKey)) != null ? _a : (0,
|
|
3278
|
+
const space = (_a = this._spaceManager.spaces.get(spaceKey)) != null ? _a : (0, import_debug6.raise)(new import_echo_pipeline2.SpaceNotFoundError(spaceKey));
|
|
3146
3279
|
for (const credential of credentials != null ? credentials : []) {
|
|
3147
3280
|
await space.controlPipeline.writer.write({
|
|
3148
3281
|
credential: {
|
|
@@ -3154,7 +3287,7 @@ var SpacesServiceImpl = class {
|
|
|
3154
3287
|
async createEpoch({ spaceKey }) {
|
|
3155
3288
|
var _a;
|
|
3156
3289
|
const dataSpaceManager = await this._getDataSpaceManager();
|
|
3157
|
-
const space = (_a = dataSpaceManager.spaces.get(spaceKey)) != null ? _a : (0,
|
|
3290
|
+
const space = (_a = dataSpaceManager.spaces.get(spaceKey)) != null ? _a : (0, import_debug6.raise)(new import_echo_pipeline2.SpaceNotFoundError(spaceKey));
|
|
3158
3291
|
await space.createEpoch();
|
|
3159
3292
|
}
|
|
3160
3293
|
_serializeSpace(space) {
|
|
@@ -3234,7 +3367,7 @@ var ServiceContext = class {
|
|
|
3234
3367
|
this.invitations = new InvitationsHandler(this.networkManager);
|
|
3235
3368
|
this._handlerFactories.set(import_services9.Invitation.Kind.DEVICE, () => new DeviceInvitationProtocol(this.keyring, () => {
|
|
3236
3369
|
var _a;
|
|
3237
|
-
return (_a = this.identityManager.identity) != null ? _a : (0,
|
|
3370
|
+
return (_a = this.identityManager.identity) != null ? _a : (0, import_debug7.failUndefined)();
|
|
3238
3371
|
}, this._acceptIdentity.bind(this)));
|
|
3239
3372
|
}
|
|
3240
3373
|
async open() {
|
|
@@ -3276,15 +3409,17 @@ var ServiceContext = class {
|
|
|
3276
3409
|
});
|
|
3277
3410
|
}
|
|
3278
3411
|
async close() {
|
|
3279
|
-
var _a
|
|
3412
|
+
var _a;
|
|
3280
3413
|
(0, import_log12.log)("closing...", void 0, {
|
|
3281
3414
|
F: __dxlog_file12,
|
|
3282
3415
|
L: 143,
|
|
3283
3416
|
S: this,
|
|
3284
3417
|
C: (f, a) => f(...a)
|
|
3285
3418
|
});
|
|
3286
|
-
|
|
3287
|
-
|
|
3419
|
+
if (this._deviceSpaceSync && this.identityManager.identity) {
|
|
3420
|
+
await this.identityManager.identity.space.spaceState.removeCredentialProcessor(this._deviceSpaceSync);
|
|
3421
|
+
}
|
|
3422
|
+
await ((_a = this.dataSpaceManager) == null ? void 0 : _a.close());
|
|
3288
3423
|
await this.identityManager.close();
|
|
3289
3424
|
await this.spaceManager.close();
|
|
3290
3425
|
await this.feedStore.close();
|
|
@@ -3293,7 +3428,7 @@ var ServiceContext = class {
|
|
|
3293
3428
|
this.dataServiceSubscriptions.clear();
|
|
3294
3429
|
(0, import_log12.log)("closed", void 0, {
|
|
3295
3430
|
F: __dxlog_file12,
|
|
3296
|
-
L:
|
|
3431
|
+
L: 154,
|
|
3297
3432
|
S: this,
|
|
3298
3433
|
C: (f, a) => f(...a)
|
|
3299
3434
|
});
|
|
@@ -3324,11 +3459,11 @@ var ServiceContext = class {
|
|
|
3324
3459
|
var _a;
|
|
3325
3460
|
(0, import_log12.log)("initializing spaces...", void 0, {
|
|
3326
3461
|
F: __dxlog_file12,
|
|
3327
|
-
L:
|
|
3462
|
+
L: 187,
|
|
3328
3463
|
S: this,
|
|
3329
3464
|
C: (f, a) => f(...a)
|
|
3330
3465
|
});
|
|
3331
|
-
const identity = (_a = this.identityManager.identity) != null ? _a : (0,
|
|
3466
|
+
const identity = (_a = this.identityManager.identity) != null ? _a : (0, import_debug7.failUndefined)();
|
|
3332
3467
|
const signingContext = {
|
|
3333
3468
|
credentialSigner: identity.getIdentityCredentialSigner(),
|
|
3334
3469
|
identityKey: identity.identityKey,
|
|
@@ -3349,8 +3484,8 @@ var ServiceContext = class {
|
|
|
3349
3484
|
return new SpaceInvitationProtocol(this.dataSpaceManager, signingContext, this.keyring, invitation.spaceKey);
|
|
3350
3485
|
});
|
|
3351
3486
|
this.initialized.wake();
|
|
3352
|
-
this._deviceSpaceSync =
|
|
3353
|
-
|
|
3487
|
+
this._deviceSpaceSync = {
|
|
3488
|
+
processCredential: async (credential) => {
|
|
3354
3489
|
const assertion = (0, import_credentials13.getCredentialAssertion)(credential);
|
|
3355
3490
|
if (assertion["@type"] !== "dxos.halo.credentials.SpaceMember") {
|
|
3356
3491
|
return;
|
|
@@ -3363,7 +3498,7 @@ var ServiceContext = class {
|
|
|
3363
3498
|
details: assertion
|
|
3364
3499
|
}, {
|
|
3365
3500
|
F: __dxlog_file12,
|
|
3366
|
-
L:
|
|
3501
|
+
L: 226,
|
|
3367
3502
|
S: this,
|
|
3368
3503
|
C: (f, a) => f(...a)
|
|
3369
3504
|
});
|
|
@@ -3374,7 +3509,7 @@ var ServiceContext = class {
|
|
|
3374
3509
|
details: assertion
|
|
3375
3510
|
}, {
|
|
3376
3511
|
F: __dxlog_file12,
|
|
3377
|
-
L:
|
|
3512
|
+
L: 230,
|
|
3378
3513
|
S: this,
|
|
3379
3514
|
C: (f, a) => f(...a)
|
|
3380
3515
|
});
|
|
@@ -3385,7 +3520,7 @@ var ServiceContext = class {
|
|
|
3385
3520
|
details: assertion
|
|
3386
3521
|
}, {
|
|
3387
3522
|
F: __dxlog_file12,
|
|
3388
|
-
L:
|
|
3523
|
+
L: 235,
|
|
3389
3524
|
S: this,
|
|
3390
3525
|
C: (f, a) => f(...a)
|
|
3391
3526
|
});
|
|
@@ -3396,14 +3531,14 @@ var ServiceContext = class {
|
|
|
3396
3531
|
} catch (err) {
|
|
3397
3532
|
import_log12.log.catch(err, void 0, {
|
|
3398
3533
|
F: __dxlog_file12,
|
|
3399
|
-
L:
|
|
3534
|
+
L: 241,
|
|
3400
3535
|
S: this,
|
|
3401
3536
|
C: (f, a) => f(...a)
|
|
3402
3537
|
});
|
|
3403
3538
|
}
|
|
3404
3539
|
}
|
|
3405
|
-
}
|
|
3406
|
-
await this._deviceSpaceSync
|
|
3540
|
+
};
|
|
3541
|
+
await identity.space.spaceState.addCredentialProcessor(this._deviceSpaceSync);
|
|
3407
3542
|
}
|
|
3408
3543
|
};
|
|
3409
3544
|
|
|
@@ -3424,7 +3559,7 @@ var import_text_model = require("@dxos/text-model");
|
|
|
3424
3559
|
|
|
3425
3560
|
// packages/sdk/client-services/src/packlets/devices/devices-service.ts
|
|
3426
3561
|
var import_async15 = require("@dxos/async");
|
|
3427
|
-
var
|
|
3562
|
+
var import_codec_protobuf11 = require("@dxos/codec-protobuf");
|
|
3428
3563
|
var import_services10 = require("@dxos/protocols/proto/dxos/client/services");
|
|
3429
3564
|
var DevicesServiceImpl = class {
|
|
3430
3565
|
constructor(_identityManager) {
|
|
@@ -3434,7 +3569,7 @@ var DevicesServiceImpl = class {
|
|
|
3434
3569
|
throw new Error("Method not implemented.");
|
|
3435
3570
|
}
|
|
3436
3571
|
queryDevices() {
|
|
3437
|
-
return new
|
|
3572
|
+
return new import_codec_protobuf11.Stream(({ next }) => {
|
|
3438
3573
|
const update = () => {
|
|
3439
3574
|
var _a;
|
|
3440
3575
|
const deviceKeys = (_a = this._identityManager.identity) == null ? void 0 : _a.authorizedDeviceKeys;
|
|
@@ -3524,7 +3659,7 @@ var isLocked = (lockPath) => import_lock_file.LockFile.isLocked(lockPath);
|
|
|
3524
3659
|
|
|
3525
3660
|
// packages/sdk/client-services/src/packlets/logging/logging-service.ts
|
|
3526
3661
|
var import_async16 = require("@dxos/async");
|
|
3527
|
-
var
|
|
3662
|
+
var import_codec_protobuf12 = require("@dxos/codec-protobuf");
|
|
3528
3663
|
var import_log14 = require("@dxos/log");
|
|
3529
3664
|
var import_services11 = require("@dxos/protocols/proto/dxos/client/services");
|
|
3530
3665
|
var import_util7 = require("@dxos/util");
|
|
@@ -3543,7 +3678,7 @@ var LoggingServiceImpl = class {
|
|
|
3543
3678
|
import_log14.log.runtimeConfig.processors.splice(index, 1);
|
|
3544
3679
|
}
|
|
3545
3680
|
queryLogs(request) {
|
|
3546
|
-
return new
|
|
3681
|
+
return new import_codec_protobuf12.Stream(({ ctx, next }) => {
|
|
3547
3682
|
const handler = (entry2) => {
|
|
3548
3683
|
var _a, _b, _c, _d, _e;
|
|
3549
3684
|
if (LOG_PROCESSING > 0) {
|
|
@@ -3599,14 +3734,14 @@ var shouldLog = (entry2, request) => {
|
|
|
3599
3734
|
var LOG_PROCESSING = 0;
|
|
3600
3735
|
|
|
3601
3736
|
// packages/sdk/client-services/src/packlets/network/network-service.ts
|
|
3602
|
-
var
|
|
3737
|
+
var import_codec_protobuf13 = require("@dxos/codec-protobuf");
|
|
3603
3738
|
var NetworkServiceImpl = class {
|
|
3604
3739
|
constructor(networkManager, signalManager) {
|
|
3605
3740
|
this.networkManager = networkManager;
|
|
3606
3741
|
this.signalManager = signalManager;
|
|
3607
3742
|
}
|
|
3608
3743
|
queryStatus() {
|
|
3609
|
-
return new
|
|
3744
|
+
return new import_codec_protobuf13.Stream(({ next }) => {
|
|
3610
3745
|
const update = () => {
|
|
3611
3746
|
next({
|
|
3612
3747
|
swarm: this.networkManager.connectionState,
|
|
@@ -3632,7 +3767,7 @@ var NetworkServiceImpl = class {
|
|
|
3632
3767
|
|
|
3633
3768
|
// packages/sdk/client-services/src/packlets/storage/storage.ts
|
|
3634
3769
|
var import_client_protocol4 = require("@dxos/client-protocol");
|
|
3635
|
-
var
|
|
3770
|
+
var import_errors5 = require("@dxos/errors");
|
|
3636
3771
|
var import_config = require("@dxos/protocols/proto/dxos/config");
|
|
3637
3772
|
var import_random_access_storage = require("@dxos/random-access-storage");
|
|
3638
3773
|
var import_util8 = require("@dxos/util");
|
|
@@ -3640,16 +3775,16 @@ var StorageDriver = import_config.Runtime.Client.Storage.StorageDriver;
|
|
|
3640
3775
|
var createStorageObjects = (config) => {
|
|
3641
3776
|
const { path = (0, import_util8.isNode)() ? import_client_protocol4.DX_DATA : "dxos/storage", storageType, keyStorage, persistent = false } = config != null ? config : {};
|
|
3642
3777
|
if (persistent && storageType === StorageDriver.RAM) {
|
|
3643
|
-
throw new
|
|
3778
|
+
throw new import_errors5.InvalidConfigError("RAM storage cannot be used in persistent mode.");
|
|
3644
3779
|
}
|
|
3645
3780
|
if (!persistent && storageType !== void 0 && storageType !== StorageDriver.RAM) {
|
|
3646
|
-
throw new
|
|
3781
|
+
throw new import_errors5.InvalidConfigError("Cannot use a persistent storage in not persistent mode.");
|
|
3647
3782
|
}
|
|
3648
3783
|
if (persistent && keyStorage === StorageDriver.RAM) {
|
|
3649
|
-
throw new
|
|
3784
|
+
throw new import_errors5.InvalidConfigError("RAM key storage cannot be used in persistent mode.");
|
|
3650
3785
|
}
|
|
3651
3786
|
if (!persistent && keyStorage !== StorageDriver.RAM && keyStorage !== void 0) {
|
|
3652
|
-
throw new
|
|
3787
|
+
throw new import_errors5.InvalidConfigError("Cannot use a persistent key storage in not persistent mode.");
|
|
3653
3788
|
}
|
|
3654
3789
|
return {
|
|
3655
3790
|
storage: (0, import_random_access_storage.createStorage)({
|
|
@@ -3680,7 +3815,7 @@ var toStorageType = (type) => {
|
|
|
3680
3815
|
};
|
|
3681
3816
|
|
|
3682
3817
|
// packages/sdk/client-services/src/packlets/system/system-service.ts
|
|
3683
|
-
var
|
|
3818
|
+
var import_codec_protobuf14 = require("@dxos/codec-protobuf");
|
|
3684
3819
|
var SystemServiceImpl = class {
|
|
3685
3820
|
constructor({ config, statusUpdate, onUpdateStatus, getCurrentStatus, onReset }) {
|
|
3686
3821
|
this._config = config;
|
|
@@ -3697,7 +3832,7 @@ var SystemServiceImpl = class {
|
|
|
3697
3832
|
await this._onUpdateStatus(status);
|
|
3698
3833
|
}
|
|
3699
3834
|
queryStatus() {
|
|
3700
|
-
return new
|
|
3835
|
+
return new import_codec_protobuf14.Stream(({ next }) => {
|
|
3701
3836
|
const update = () => {
|
|
3702
3837
|
next({
|
|
3703
3838
|
status: this._getCurrentStatus()
|
|
@@ -4004,59 +4139,6 @@ var import_messaging2 = require("@dxos/messaging");
|
|
|
4004
4139
|
var import_network_manager3 = require("@dxos/network-manager");
|
|
4005
4140
|
var import_util9 = require("@dxos/util");
|
|
4006
4141
|
|
|
4007
|
-
// packages/sdk/client-services/src/packlets/services/client-rpc-server.ts
|
|
4008
|
-
var import_codec_protobuf14 = require("@dxos/codec-protobuf");
|
|
4009
|
-
var import_debug7 = require("@dxos/debug");
|
|
4010
|
-
var import_rpc = require("@dxos/rpc");
|
|
4011
|
-
var ClientRpcServer = class {
|
|
4012
|
-
constructor(params) {
|
|
4013
|
-
this._handlerCache = /* @__PURE__ */ new Map();
|
|
4014
|
-
const { serviceRegistry, handleCall, handleStream, ...rpcOptions } = params;
|
|
4015
|
-
this._handleCall = handleCall;
|
|
4016
|
-
this._handleStream = handleStream;
|
|
4017
|
-
this._serviceRegistry = serviceRegistry;
|
|
4018
|
-
this._rpcPeer = new import_rpc.RpcPeer({
|
|
4019
|
-
...rpcOptions,
|
|
4020
|
-
callHandler: (method, params2) => {
|
|
4021
|
-
const [serviceName, methodName] = (0, import_rpc.parseMethodName)(method);
|
|
4022
|
-
const handler = (method2, params3) => this._getServiceHandler(serviceName).call(method2, params3);
|
|
4023
|
-
if (this._handleCall) {
|
|
4024
|
-
return this._handleCall(methodName, params2, handler);
|
|
4025
|
-
} else {
|
|
4026
|
-
return handler(methodName, params2);
|
|
4027
|
-
}
|
|
4028
|
-
},
|
|
4029
|
-
streamHandler: (method, params2) => {
|
|
4030
|
-
const [serviceName, methodName] = (0, import_rpc.parseMethodName)(method);
|
|
4031
|
-
const handler = (method2, params3) => this._getServiceHandler(serviceName).callStream(method2, params3);
|
|
4032
|
-
if (this._handleStream) {
|
|
4033
|
-
return import_codec_protobuf14.Stream.unwrapPromise(this._handleStream(methodName, params2, handler));
|
|
4034
|
-
} else {
|
|
4035
|
-
return handler(methodName, params2);
|
|
4036
|
-
}
|
|
4037
|
-
}
|
|
4038
|
-
});
|
|
4039
|
-
}
|
|
4040
|
-
async open() {
|
|
4041
|
-
await this._rpcPeer.open();
|
|
4042
|
-
}
|
|
4043
|
-
async close() {
|
|
4044
|
-
await this._rpcPeer.close();
|
|
4045
|
-
}
|
|
4046
|
-
_getServiceHandler(serviceName) {
|
|
4047
|
-
var _a;
|
|
4048
|
-
if (!this._handlerCache.has(serviceName)) {
|
|
4049
|
-
const [key, descriptor] = (_a = Object.entries(this._serviceRegistry.descriptors).find(([key2, descriptor2]) => descriptor2.name === serviceName)) != null ? _a : (0, import_debug7.raise)(new Error(`Service not available: ${serviceName}`));
|
|
4050
|
-
const service = this._serviceRegistry.services[key];
|
|
4051
|
-
if (!service) {
|
|
4052
|
-
throw new Error(`Service not available: ${serviceName}`);
|
|
4053
|
-
}
|
|
4054
|
-
this._handlerCache.set(serviceName, descriptor.createServer(service));
|
|
4055
|
-
}
|
|
4056
|
-
return this._handlerCache.get(serviceName);
|
|
4057
|
-
}
|
|
4058
|
-
};
|
|
4059
|
-
|
|
4060
4142
|
// packages/sdk/client-services/src/packlets/vault/shell-runtime.ts
|
|
4061
4143
|
var import_tiny_invariant14 = __toESM(require("tiny-invariant"));
|
|
4062
4144
|
var import_async18 = require("@dxos/async");
|
|
@@ -4239,7 +4321,7 @@ _ts_decorate5([
|
|
|
4239
4321
|
// packages/sdk/client-services/src/packlets/vault/iframe-proxy-runtime.ts
|
|
4240
4322
|
var import_async20 = require("@dxos/async");
|
|
4241
4323
|
var import_client_protocol8 = require("@dxos/client-protocol");
|
|
4242
|
-
var
|
|
4324
|
+
var import_errors6 = require("@dxos/errors");
|
|
4243
4325
|
var import_log17 = require("@dxos/log");
|
|
4244
4326
|
var import_network_manager4 = require("@dxos/network-manager");
|
|
4245
4327
|
var import_rpc3 = require("@dxos/rpc");
|
|
@@ -4298,7 +4380,7 @@ var IFrameProxyRuntime = class {
|
|
|
4298
4380
|
S: this,
|
|
4299
4381
|
C: (f, a) => f(...a)
|
|
4300
4382
|
});
|
|
4301
|
-
throw new
|
|
4383
|
+
throw new import_errors6.RemoteServiceConnectionError("Failed to connect to worker");
|
|
4302
4384
|
}
|
|
4303
4385
|
await ((_a = this._shellRuntime) == null ? void 0 : _a.open());
|
|
4304
4386
|
}
|
|
@@ -4391,7 +4473,7 @@ var WorkerSession = class {
|
|
|
4391
4473
|
} catch (err) {
|
|
4392
4474
|
import_log18.log.catch(err, void 0, {
|
|
4393
4475
|
F: __dxlog_file17,
|
|
4394
|
-
L:
|
|
4476
|
+
L: 99,
|
|
4395
4477
|
S: this,
|
|
4396
4478
|
C: (f, a) => f(...a)
|
|
4397
4479
|
});
|
|
@@ -4406,9 +4488,9 @@ var WorkerSession = class {
|
|
|
4406
4488
|
this.bridgeService = this._iframeRpc.rpc.BridgeService;
|
|
4407
4489
|
}
|
|
4408
4490
|
async open() {
|
|
4409
|
-
import_log18.log.info("opening
|
|
4491
|
+
import_log18.log.info("opening...", void 0, {
|
|
4410
4492
|
F: __dxlog_file17,
|
|
4411
|
-
L:
|
|
4493
|
+
L: 113,
|
|
4412
4494
|
S: this,
|
|
4413
4495
|
C: (f, a) => f(...a)
|
|
4414
4496
|
});
|
|
@@ -4423,9 +4505,15 @@ var WorkerSession = class {
|
|
|
4423
4505
|
if (this.lockKey) {
|
|
4424
4506
|
void this._afterLockReleases(this.lockKey, () => this.close());
|
|
4425
4507
|
}
|
|
4508
|
+
import_log18.log.info("opened", void 0, {
|
|
4509
|
+
F: __dxlog_file17,
|
|
4510
|
+
L: 120,
|
|
4511
|
+
S: this,
|
|
4512
|
+
C: (f, a) => f(...a)
|
|
4513
|
+
});
|
|
4426
4514
|
}
|
|
4427
4515
|
async close() {
|
|
4428
|
-
import_log18.log.info("closing
|
|
4516
|
+
import_log18.log.info("closing...", void 0, {
|
|
4429
4517
|
F: __dxlog_file17,
|
|
4430
4518
|
L: 124,
|
|
4431
4519
|
S: this,
|
|
@@ -4445,6 +4533,12 @@ var WorkerSession = class {
|
|
|
4445
4533
|
this._clientRpc.close(),
|
|
4446
4534
|
this._iframeRpc.close()
|
|
4447
4535
|
]);
|
|
4536
|
+
import_log18.log.info("closed", void 0, {
|
|
4537
|
+
F: __dxlog_file17,
|
|
4538
|
+
L: 132,
|
|
4539
|
+
S: this,
|
|
4540
|
+
C: (f, a) => f(...a)
|
|
4541
|
+
});
|
|
4448
4542
|
}
|
|
4449
4543
|
async _maybeOpenShell() {
|
|
4450
4544
|
try {
|
|
@@ -4452,7 +4546,7 @@ var WorkerSession = class {
|
|
|
4452
4546
|
} catch (e) {
|
|
4453
4547
|
import_log18.log.info("No shell connected.", void 0, {
|
|
4454
4548
|
F: __dxlog_file17,
|
|
4455
|
-
L:
|
|
4549
|
+
L: 139,
|
|
4456
4550
|
S: this,
|
|
4457
4551
|
C: (f, a) => f(...a)
|
|
4458
4552
|
});
|
|
@@ -4573,6 +4667,7 @@ var WorkerRuntime = class {
|
|
|
4573
4667
|
};
|
|
4574
4668
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4575
4669
|
0 && (module.exports = {
|
|
4670
|
+
ClientRpcServer,
|
|
4576
4671
|
ClientServicesHost,
|
|
4577
4672
|
DataSpace,
|
|
4578
4673
|
DataSpaceManager,
|