@dxos/client-services 0.1.52 → 0.1.53-main.01cbc6b
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-C3SPTMW3.mjs → chunk-EYXOVYW5.mjs} +817 -694
- package/dist/lib/browser/chunk-EYXOVYW5.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +101 -120
- 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 +24 -7
- package/dist/lib/browser/packlets/testing/index.mjs.map +3 -3
- package/dist/lib/node/index.cjs +884 -782
- 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 +801 -664
- package/dist/lib/node/packlets/testing/index.cjs.map +3 -3
- package/dist/types/src/packlets/devtools/devtools.d.ts.map +1 -1
- package/dist/types/src/packlets/identity/identity.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 +7 -1
- package/dist/types/src/packlets/services/service-host.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 +2 -2
- 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/iframe-host-runtime.d.ts +1 -1
- package/dist/types/src/packlets/vault/iframe-host-runtime.d.ts.map +1 -1
- package/dist/types/src/packlets/vault/iframe-proxy-runtime.d.ts +1 -1
- package/dist/types/src/packlets/vault/iframe-proxy-runtime.d.ts.map +1 -1
- package/dist/types/src/packlets/vault/shell-runtime.d.ts +1 -21
- package/dist/types/src/packlets/vault/shell-runtime.d.ts.map +1 -1
- package/package.json +33 -32
- package/src/packlets/devtools/devtools.ts +2 -2
- package/src/packlets/identity/identity-manager.test.ts +1 -1
- package/src/packlets/identity/identity-manager.ts +8 -8
- package/src/packlets/identity/identity-service.ts +2 -2
- package/src/packlets/identity/identity.test.ts +1 -1
- package/src/packlets/identity/identity.ts +22 -27
- package/src/packlets/invitations/device-invitation-protocol.ts +4 -4
- package/src/packlets/invitations/invitation-extension.ts +5 -5
- package/src/packlets/invitations/invitations-handler.ts +6 -6
- package/src/packlets/invitations/invitations-service.ts +3 -3
- package/src/packlets/invitations/space-invitation-protocol.ts +9 -9
- package/src/packlets/locks/node.ts +2 -2
- package/src/packlets/logging/logging-service.ts +4 -4
- package/src/packlets/services/service-context.test.ts +1 -1
- package/src/packlets/services/service-context.ts +12 -10
- package/src/packlets/services/service-host.test.ts +50 -2
- package/src/packlets/services/service-host.ts +28 -10
- package/src/packlets/spaces/data-space-manager.test.ts +72 -118
- package/src/packlets/spaces/data-space-manager.ts +18 -9
- 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 +9 -5
- package/src/packlets/spaces/spaces-service.ts +46 -32
- package/src/packlets/testing/invitation-utils.ts +2 -2
- package/src/packlets/testing/test-builder.ts +36 -4
- package/src/packlets/vault/iframe-host-runtime.ts +2 -2
- package/src/packlets/vault/iframe-proxy-runtime.ts +2 -2
- package/src/packlets/vault/shell-runtime.ts +3 -49
- package/src/packlets/vault/worker-runtime.ts +1 -1
- package/src/packlets/vault/worker-session.ts +2 -2
- package/dist/lib/browser/chunk-C3SPTMW3.mjs.map +0 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "@dxos/node-std/globals"
|
|
1
|
+
import "@dxos/node-std/globals";
|
|
2
2
|
|
|
3
3
|
// packages/sdk/client-services/src/packlets/devtools/feeds.ts
|
|
4
4
|
import { EventSubscriptions } from "@dxos/async";
|
|
@@ -248,8 +248,10 @@ var DevtoolsServiceImpl = class {
|
|
|
248
248
|
});
|
|
249
249
|
});
|
|
250
250
|
}
|
|
251
|
-
getConfig(request) {
|
|
252
|
-
|
|
251
|
+
async getConfig(request) {
|
|
252
|
+
return {
|
|
253
|
+
config: JSON.stringify(this.params.config.values)
|
|
254
|
+
};
|
|
253
255
|
}
|
|
254
256
|
async getStorageInfo() {
|
|
255
257
|
var _a, _b, _c, _d, _e;
|
|
@@ -350,6 +352,7 @@ import { Context as Context2 } from "@dxos/context";
|
|
|
350
352
|
import { verifyCredential } from "@dxos/credentials";
|
|
351
353
|
import { log } from "@dxos/log";
|
|
352
354
|
import { schema } from "@dxos/protocols";
|
|
355
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/identity/authenticator.ts";
|
|
353
356
|
var createAuthProvider = (signer) => async (nonce) => {
|
|
354
357
|
const credential = await signer.createCredential({
|
|
355
358
|
assertion: {
|
|
@@ -375,20 +378,20 @@ var TrustedKeySetAuthVerifier = class {
|
|
|
375
378
|
log("authenticating...", {
|
|
376
379
|
credential
|
|
377
380
|
}, {
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
381
|
+
F: __dxlog_file,
|
|
382
|
+
L: 57,
|
|
383
|
+
S: this,
|
|
384
|
+
C: (f, a) => f(...a)
|
|
382
385
|
});
|
|
383
386
|
const result = await verifyCredential(credential);
|
|
384
387
|
if (result.kind === "fail") {
|
|
385
388
|
log("Invalid credential", {
|
|
386
389
|
result
|
|
387
390
|
}, {
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
391
|
+
F: __dxlog_file,
|
|
392
|
+
L: 61,
|
|
393
|
+
S: this,
|
|
394
|
+
C: (f, a) => f(...a)
|
|
392
395
|
});
|
|
393
396
|
return false;
|
|
394
397
|
}
|
|
@@ -397,10 +400,10 @@ var TrustedKeySetAuthVerifier = class {
|
|
|
397
400
|
nonce,
|
|
398
401
|
credential
|
|
399
402
|
}, {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
403
|
+
F: __dxlog_file,
|
|
404
|
+
L: 66,
|
|
405
|
+
S: this,
|
|
406
|
+
C: (f, a) => f(...a)
|
|
404
407
|
});
|
|
405
408
|
return false;
|
|
406
409
|
}
|
|
@@ -408,10 +411,10 @@ var TrustedKeySetAuthVerifier = class {
|
|
|
408
411
|
log("key is not currently in trusted set, waiting...", {
|
|
409
412
|
key: credential.issuer
|
|
410
413
|
}, {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
414
|
+
F: __dxlog_file,
|
|
415
|
+
L: 71,
|
|
416
|
+
S: this,
|
|
417
|
+
C: (f, a) => f(...a)
|
|
415
418
|
});
|
|
416
419
|
return true;
|
|
417
420
|
}
|
|
@@ -424,20 +427,20 @@ var TrustedKeySetAuthVerifier = class {
|
|
|
424
427
|
log("auth success", {
|
|
425
428
|
key: credential.issuer
|
|
426
429
|
}, {
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
430
|
+
F: __dxlog_file,
|
|
431
|
+
L: 82,
|
|
432
|
+
S: this,
|
|
433
|
+
C: (f, a) => f(...a)
|
|
431
434
|
});
|
|
432
435
|
trigger.wake(true);
|
|
433
436
|
} else {
|
|
434
437
|
log("key is not currently in trusted set, waiting...", {
|
|
435
438
|
key: credential.issuer
|
|
436
439
|
}, {
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
440
|
+
F: __dxlog_file,
|
|
441
|
+
L: 85,
|
|
442
|
+
S: this,
|
|
443
|
+
C: (f, a) => f(...a)
|
|
441
444
|
});
|
|
442
445
|
}
|
|
443
446
|
});
|
|
@@ -459,7 +462,7 @@ var TrustedKeySetAuthVerifier = class {
|
|
|
459
462
|
};
|
|
460
463
|
|
|
461
464
|
// packages/sdk/client-services/src/packlets/identity/identity.ts
|
|
462
|
-
import
|
|
465
|
+
import invariant from "tiny-invariant";
|
|
463
466
|
import { Event } from "@dxos/async";
|
|
464
467
|
import { AUTH_TIMEOUT, LOAD_CONTROL_FEEDS_TIMEOUT } from "@dxos/client-protocol";
|
|
465
468
|
import { DeviceStateMachine, createCredentialSignerWithKey, createCredentialSignerWithChain, ProfileStateMachine } from "@dxos/credentials";
|
|
@@ -467,6 +470,7 @@ import { failUndefined } from "@dxos/debug";
|
|
|
467
470
|
import { writeMessages } from "@dxos/feed-store";
|
|
468
471
|
import { log as log2 } from "@dxos/log";
|
|
469
472
|
import { AdmittedFeed } from "@dxos/protocols/proto/dxos/halo/credentials";
|
|
473
|
+
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/identity/identity.ts";
|
|
470
474
|
var Identity = class {
|
|
471
475
|
constructor({ space, signer, identityKey, deviceKey }) {
|
|
472
476
|
this.stateUpdate = new Event();
|
|
@@ -474,15 +478,15 @@ var Identity = class {
|
|
|
474
478
|
this._signer = signer;
|
|
475
479
|
this.identityKey = identityKey;
|
|
476
480
|
this.deviceKey = deviceKey;
|
|
477
|
-
this._deviceStateMachine =
|
|
481
|
+
this._deviceStateMachine = new DeviceStateMachine({
|
|
478
482
|
identityKey: this.identityKey,
|
|
479
483
|
deviceKey: this.deviceKey,
|
|
480
484
|
onUpdate: () => this.stateUpdate.emit()
|
|
481
|
-
})
|
|
482
|
-
this._profileStateMachine =
|
|
485
|
+
});
|
|
486
|
+
this._profileStateMachine = new ProfileStateMachine({
|
|
483
487
|
identityKey: this.identityKey,
|
|
484
488
|
onUpdate: () => this.stateUpdate.emit()
|
|
485
|
-
})
|
|
489
|
+
});
|
|
486
490
|
this.authVerifier = new TrustedKeySetAuthVerifier({
|
|
487
491
|
trustedKeysProvider: () => this.authorizedDeviceKeys,
|
|
488
492
|
update: this.stateUpdate,
|
|
@@ -491,27 +495,27 @@ var Identity = class {
|
|
|
491
495
|
}
|
|
492
496
|
// TODO(burdon): Expose state object?
|
|
493
497
|
get authorizedDeviceKeys() {
|
|
494
|
-
return this._deviceStateMachine.
|
|
498
|
+
return this._deviceStateMachine.authorizedDeviceKeys;
|
|
495
499
|
}
|
|
496
500
|
async open() {
|
|
497
|
-
await this.
|
|
498
|
-
await this.
|
|
501
|
+
await this.space.spaceState.addCredentialProcessor(this._deviceStateMachine);
|
|
502
|
+
await this.space.spaceState.addCredentialProcessor(this._profileStateMachine);
|
|
499
503
|
await this.space.open();
|
|
500
504
|
}
|
|
501
505
|
async close() {
|
|
502
506
|
await this.authVerifier.close();
|
|
503
|
-
await this.
|
|
504
|
-
await this.
|
|
507
|
+
await this.space.spaceState.removeCredentialProcessor(this._profileStateMachine);
|
|
508
|
+
await this.space.spaceState.removeCredentialProcessor(this._deviceStateMachine);
|
|
505
509
|
await this.space.close();
|
|
506
510
|
}
|
|
507
511
|
async ready() {
|
|
508
|
-
await this._deviceStateMachine.
|
|
512
|
+
await this._deviceStateMachine.deviceChainReady.wait();
|
|
509
513
|
await this.controlPipeline.state.waitUntilReachedTargetTimeframe({
|
|
510
514
|
timeout: LOAD_CONTROL_FEEDS_TIMEOUT
|
|
511
515
|
});
|
|
512
516
|
}
|
|
513
517
|
get profileDocument() {
|
|
514
|
-
return this._profileStateMachine.
|
|
518
|
+
return this._profileStateMachine.profile;
|
|
515
519
|
}
|
|
516
520
|
/**
|
|
517
521
|
* @test-only
|
|
@@ -526,7 +530,7 @@ var Identity = class {
|
|
|
526
530
|
return this.space.genesisFeedKey;
|
|
527
531
|
}
|
|
528
532
|
get deviceCredentialChain() {
|
|
529
|
-
return this._deviceStateMachine.
|
|
533
|
+
return this._deviceStateMachine.deviceCredentialChain;
|
|
530
534
|
}
|
|
531
535
|
getAdmissionCredentials() {
|
|
532
536
|
var _a, _b;
|
|
@@ -541,8 +545,8 @@ var Identity = class {
|
|
|
541
545
|
* Requires identity to be ready.
|
|
542
546
|
*/
|
|
543
547
|
getIdentityCredentialSigner() {
|
|
544
|
-
|
|
545
|
-
return createCredentialSignerWithChain(this._signer, this._deviceStateMachine.
|
|
548
|
+
invariant(this._deviceStateMachine.deviceCredentialChain, "Device credential chain is not ready.");
|
|
549
|
+
return createCredentialSignerWithChain(this._signer, this._deviceStateMachine.deviceCredentialChain, this.deviceKey);
|
|
546
550
|
}
|
|
547
551
|
/**
|
|
548
552
|
* Issues credentials as device.
|
|
@@ -558,10 +562,10 @@ var Identity = class {
|
|
|
558
562
|
controlFeedKey,
|
|
559
563
|
dataFeedKey
|
|
560
564
|
}, {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
+
F: __dxlog_file2,
|
|
566
|
+
L: 151,
|
|
567
|
+
S: this,
|
|
568
|
+
C: (f, a) => f(...a)
|
|
565
569
|
});
|
|
566
570
|
const signer = this.getIdentityCredentialSigner();
|
|
567
571
|
await writeMessages(this.controlPipeline.writer, [
|
|
@@ -602,7 +606,7 @@ var Identity = class {
|
|
|
602
606
|
};
|
|
603
607
|
|
|
604
608
|
// packages/sdk/client-services/src/packlets/identity/identity-manager.ts
|
|
605
|
-
import
|
|
609
|
+
import invariant2 from "tiny-invariant";
|
|
606
610
|
import { Event as Event2 } from "@dxos/async";
|
|
607
611
|
import { createCredentialSignerWithKey as createCredentialSignerWithKey2, CredentialGenerator } from "@dxos/credentials";
|
|
608
612
|
import { PublicKey as PublicKey3 } from "@dxos/keys";
|
|
@@ -610,6 +614,7 @@ import { log as log3 } from "@dxos/log";
|
|
|
610
614
|
import { trace } from "@dxos/protocols";
|
|
611
615
|
import { AdmittedFeed as AdmittedFeed2 } from "@dxos/protocols/proto/dxos/halo/credentials";
|
|
612
616
|
import { deferFunction } from "@dxos/util";
|
|
617
|
+
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/identity/identity-manager.ts";
|
|
613
618
|
var IdentityManager = class {
|
|
614
619
|
// TODO(burdon): IdentityManagerParams.
|
|
615
620
|
// TODO(dmaretskyi): Perhaps this should take/generate the peerKey outside of an initialized identity.
|
|
@@ -629,20 +634,20 @@ var IdentityManager = class {
|
|
|
629
634
|
log3.trace("dxos.halo.identity-manager.open", trace.begin({
|
|
630
635
|
id: traceId
|
|
631
636
|
}), {
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
637
|
+
F: __dxlog_file3,
|
|
638
|
+
L: 70,
|
|
639
|
+
S: this,
|
|
640
|
+
C: (f, a) => f(...a)
|
|
636
641
|
});
|
|
637
642
|
await this._metadataStore.load();
|
|
638
643
|
const identityRecord = this._metadataStore.getIdentityRecord();
|
|
639
644
|
log3("identity record", {
|
|
640
645
|
identityRecord
|
|
641
646
|
}, {
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
647
|
+
F: __dxlog_file3,
|
|
648
|
+
L: 74,
|
|
649
|
+
S: this,
|
|
650
|
+
C: (f, a) => f(...a)
|
|
646
651
|
});
|
|
647
652
|
if (identityRecord) {
|
|
648
653
|
this._identity = await this._constructIdentity(identityRecord);
|
|
@@ -652,20 +657,20 @@ var IdentityManager = class {
|
|
|
652
657
|
identityKey: identityRecord.identityKey,
|
|
653
658
|
displayName: (_a = this._identity.profileDocument) == null ? void 0 : _a.displayName
|
|
654
659
|
}, {
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
660
|
+
F: __dxlog_file3,
|
|
661
|
+
L: 79,
|
|
662
|
+
S: this,
|
|
663
|
+
C: (f, a) => f(...a)
|
|
659
664
|
});
|
|
660
665
|
this.stateUpdate.emit();
|
|
661
666
|
}
|
|
662
667
|
log3.trace("dxos.halo.identity-manager.open", trace.end({
|
|
663
668
|
id: traceId
|
|
664
669
|
}), {
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
670
|
+
F: __dxlog_file3,
|
|
671
|
+
L: 85,
|
|
672
|
+
S: this,
|
|
673
|
+
C: (f, a) => f(...a)
|
|
669
674
|
});
|
|
670
675
|
}
|
|
671
676
|
async close() {
|
|
@@ -674,12 +679,12 @@ var IdentityManager = class {
|
|
|
674
679
|
}
|
|
675
680
|
async createIdentity({ displayName } = {}) {
|
|
676
681
|
var _a;
|
|
677
|
-
|
|
678
|
-
log3("creating identity...",
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
682
|
+
invariant2(!this._identity, "Identity already exists.");
|
|
683
|
+
log3("creating identity...", void 0, {
|
|
684
|
+
F: __dxlog_file3,
|
|
685
|
+
L: 94,
|
|
686
|
+
S: this,
|
|
687
|
+
C: (f, a) => f(...a)
|
|
683
688
|
});
|
|
684
689
|
const controlFeedKey = await this._keyring.createKey();
|
|
685
690
|
const identityRecord = {
|
|
@@ -696,8 +701,8 @@ var IdentityManager = class {
|
|
|
696
701
|
await identity.open();
|
|
697
702
|
{
|
|
698
703
|
const generator = new CredentialGenerator(this._keyring, identityRecord.identityKey, identityRecord.deviceKey);
|
|
699
|
-
|
|
700
|
-
|
|
704
|
+
invariant2(identityRecord.haloSpace.genesisFeedKey, "Genesis feed key is required.");
|
|
705
|
+
invariant2(identityRecord.haloSpace.dataFeedKey, "Data feed key is required.");
|
|
701
706
|
const credentials = [
|
|
702
707
|
// Space genesis.
|
|
703
708
|
...await generator.createSpaceGenesis(identityRecord.haloSpace.key, identityRecord.haloSpace.genesisFeedKey),
|
|
@@ -725,20 +730,20 @@ var IdentityManager = class {
|
|
|
725
730
|
identityKey: identityRecord.identityKey,
|
|
726
731
|
displayName: (_a = this._identity.profileDocument) == null ? void 0 : _a.displayName
|
|
727
732
|
}, {
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
733
|
+
F: __dxlog_file3,
|
|
734
|
+
L: 149,
|
|
735
|
+
S: this,
|
|
736
|
+
C: (f, a) => f(...a)
|
|
732
737
|
});
|
|
733
738
|
this.stateUpdate.emit();
|
|
734
739
|
log3("created identity", {
|
|
735
740
|
identityKey: identity.identityKey,
|
|
736
741
|
deviceKey: identity.deviceKey
|
|
737
742
|
}, {
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
743
|
+
F: __dxlog_file3,
|
|
744
|
+
L: 155,
|
|
745
|
+
S: this,
|
|
746
|
+
C: (f, a) => f(...a)
|
|
742
747
|
});
|
|
743
748
|
return identity;
|
|
744
749
|
}
|
|
@@ -750,12 +755,12 @@ var IdentityManager = class {
|
|
|
750
755
|
log3("accepting identity", {
|
|
751
756
|
params
|
|
752
757
|
}, {
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
758
|
+
F: __dxlog_file3,
|
|
759
|
+
L: 163,
|
|
760
|
+
S: this,
|
|
761
|
+
C: (f, a) => f(...a)
|
|
757
762
|
});
|
|
758
|
-
|
|
763
|
+
invariant2(!this._identity, "Identity already exists.");
|
|
759
764
|
const identityRecord = {
|
|
760
765
|
identityKey: params.identityKey,
|
|
761
766
|
deviceKey: params.deviceKey,
|
|
@@ -776,38 +781,38 @@ var IdentityManager = class {
|
|
|
776
781
|
identityKey: identityRecord.identityKey,
|
|
777
782
|
displayName: (_a = this._identity.profileDocument) == null ? void 0 : _a.displayName
|
|
778
783
|
}, {
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
784
|
+
F: __dxlog_file3,
|
|
785
|
+
L: 183,
|
|
786
|
+
S: this,
|
|
787
|
+
C: (f, a) => f(...a)
|
|
783
788
|
});
|
|
784
789
|
this.stateUpdate.emit();
|
|
785
790
|
log3("accepted identity", {
|
|
786
791
|
identityKey: identity.identityKey,
|
|
787
792
|
deviceKey: identity.deviceKey
|
|
788
793
|
}, {
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
794
|
+
F: __dxlog_file3,
|
|
795
|
+
L: 189,
|
|
796
|
+
S: this,
|
|
797
|
+
C: (f, a) => f(...a)
|
|
793
798
|
});
|
|
794
799
|
return identity;
|
|
795
800
|
}
|
|
796
801
|
async _constructIdentity(identityRecord) {
|
|
797
|
-
|
|
802
|
+
invariant2(!this._identity);
|
|
798
803
|
log3("constructing identity", {
|
|
799
804
|
identityRecord
|
|
800
805
|
}, {
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
806
|
+
F: __dxlog_file3,
|
|
807
|
+
L: 195,
|
|
808
|
+
S: this,
|
|
809
|
+
C: (f, a) => f(...a)
|
|
805
810
|
});
|
|
806
|
-
|
|
811
|
+
invariant2(identityRecord.haloSpace.controlFeedKey);
|
|
807
812
|
const controlFeed = await this._feedStore.openFeed(identityRecord.haloSpace.controlFeedKey, {
|
|
808
813
|
writable: true
|
|
809
814
|
});
|
|
810
|
-
|
|
815
|
+
invariant2(identityRecord.haloSpace.dataFeedKey);
|
|
811
816
|
const dataFeed = await this._feedStore.openFeed(identityRecord.haloSpace.dataFeedKey, {
|
|
812
817
|
writable: true,
|
|
813
818
|
sparse: true
|
|
@@ -832,10 +837,10 @@ var IdentityManager = class {
|
|
|
832
837
|
log3("done", {
|
|
833
838
|
identityKey: identityRecord.identityKey
|
|
834
839
|
}, {
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
840
|
+
F: __dxlog_file3,
|
|
841
|
+
L: 226,
|
|
842
|
+
S: this,
|
|
843
|
+
C: (f, a) => f(...a)
|
|
839
844
|
});
|
|
840
845
|
if (identityRecord.haloSpace.controlTimeframe) {
|
|
841
846
|
identity.controlPipeline.state.setTargetTimeframe(identityRecord.haloSpace.controlTimeframe);
|
|
@@ -852,11 +857,11 @@ var IdentityManager = class {
|
|
|
852
857
|
onNetworkConnection: () => {
|
|
853
858
|
},
|
|
854
859
|
onAuthFailure: () => {
|
|
855
|
-
log3.warn("auth failure",
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
+
log3.warn("auth failure", void 0, {
|
|
861
|
+
F: __dxlog_file3,
|
|
862
|
+
L: 245,
|
|
863
|
+
S: this,
|
|
864
|
+
C: (f, a) => f(...a)
|
|
860
865
|
});
|
|
861
866
|
},
|
|
862
867
|
memberKey: identityKey
|
|
@@ -865,7 +870,7 @@ var IdentityManager = class {
|
|
|
865
870
|
};
|
|
866
871
|
|
|
867
872
|
// packages/sdk/client-services/src/packlets/identity/identity-service.ts
|
|
868
|
-
import
|
|
873
|
+
import invariant3 from "tiny-invariant";
|
|
869
874
|
import { Stream as Stream7 } from "@dxos/codec-protobuf";
|
|
870
875
|
import { signPresentation } from "@dxos/credentials";
|
|
871
876
|
import { todo } from "@dxos/debug";
|
|
@@ -901,7 +906,7 @@ var IdentityServiceImpl = class {
|
|
|
901
906
|
};
|
|
902
907
|
}
|
|
903
908
|
async signPresentation({ presentation, nonce }) {
|
|
904
|
-
|
|
909
|
+
invariant3(this._serviceContext.identityManager.identity, "Identity not initialized.");
|
|
905
910
|
return await signPresentation({
|
|
906
911
|
presentation,
|
|
907
912
|
signer: this._serviceContext.keyring,
|
|
@@ -913,7 +918,7 @@ var IdentityServiceImpl = class {
|
|
|
913
918
|
};
|
|
914
919
|
|
|
915
920
|
// packages/sdk/client-services/src/packlets/invitations/device-invitation-protocol.ts
|
|
916
|
-
import
|
|
921
|
+
import invariant4 from "tiny-invariant";
|
|
917
922
|
import { Invitation } from "@dxos/protocols/proto/dxos/client/services";
|
|
918
923
|
var DeviceInvitationProtocol = class {
|
|
919
924
|
constructor(_keyring, _getIdentity, _acceptIdentity) {
|
|
@@ -930,7 +935,7 @@ var DeviceInvitationProtocol = class {
|
|
|
930
935
|
};
|
|
931
936
|
}
|
|
932
937
|
async admit(request) {
|
|
933
|
-
|
|
938
|
+
invariant4(request.device);
|
|
934
939
|
const identity = this._getIdentity();
|
|
935
940
|
await identity.admitDevice(request.device);
|
|
936
941
|
return {
|
|
@@ -958,9 +963,9 @@ var DeviceInvitationProtocol = class {
|
|
|
958
963
|
};
|
|
959
964
|
}
|
|
960
965
|
async accept(response, request) {
|
|
961
|
-
|
|
966
|
+
invariant4(response.device);
|
|
962
967
|
const { identityKey, haloSpaceKey, genesisFeedKey, controlTimeframe } = response.device;
|
|
963
|
-
|
|
968
|
+
invariant4(request.device);
|
|
964
969
|
const { deviceKey, controlFeedKey, dataFeedKey } = request.device;
|
|
965
970
|
await this._acceptIdentity({
|
|
966
971
|
identityKey,
|
|
@@ -978,7 +983,7 @@ var DeviceInvitationProtocol = class {
|
|
|
978
983
|
};
|
|
979
984
|
|
|
980
985
|
// packages/sdk/client-services/src/packlets/invitations/invitations-handler.ts
|
|
981
|
-
import
|
|
986
|
+
import invariant6 from "tiny-invariant";
|
|
982
987
|
import { PushStream, scheduleTask as scheduleTask2, TimeoutError, Trigger as Trigger3 } from "@dxos/async";
|
|
983
988
|
import { AuthenticatingInvitationObservable, AUTHENTICATION_CODE_LENGTH, CancellableInvitationObservable, INVITATION_TIMEOUT } from "@dxos/client-protocol";
|
|
984
989
|
import { Context as Context4 } from "@dxos/context";
|
|
@@ -992,7 +997,7 @@ import { Invitation as Invitation3 } from "@dxos/protocols/proto/dxos/client/ser
|
|
|
992
997
|
import { AuthenticationResponse as AuthenticationResponse2 } from "@dxos/protocols/proto/dxos/halo/invitations";
|
|
993
998
|
|
|
994
999
|
// packages/sdk/client-services/src/packlets/invitations/invitation-extension.ts
|
|
995
|
-
import
|
|
1000
|
+
import invariant5 from "tiny-invariant";
|
|
996
1001
|
import { Trigger as Trigger2 } from "@dxos/async";
|
|
997
1002
|
import { cancelWithContext, Context as Context3 } from "@dxos/context";
|
|
998
1003
|
import { InvalidInvitationExtensionRoleError } from "@dxos/errors";
|
|
@@ -1002,6 +1007,7 @@ import { schema as schema2, trace as trace2 } from "@dxos/protocols";
|
|
|
1002
1007
|
import { Invitation as Invitation2 } from "@dxos/protocols/proto/dxos/client/services";
|
|
1003
1008
|
import { AuthenticationResponse, Options } from "@dxos/protocols/proto/dxos/halo/invitations";
|
|
1004
1009
|
import { RpcExtension } from "@dxos/teleport";
|
|
1010
|
+
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/invitations/invitation-extension.ts";
|
|
1005
1011
|
var OPTIONS_TIMEOUT = 1e4;
|
|
1006
1012
|
var MAX_OTP_ATTEMPTS = 3;
|
|
1007
1013
|
var InvitationHostExtension = class extends RpcExtension {
|
|
@@ -1029,7 +1035,7 @@ var InvitationHostExtension = class extends RpcExtension {
|
|
|
1029
1035
|
// Perhaps in the future we will have more complex logic here.
|
|
1030
1036
|
InvitationHostService: {
|
|
1031
1037
|
options: async (options) => {
|
|
1032
|
-
|
|
1038
|
+
invariant5(!this._remoteOptions, "Remote options already set.");
|
|
1033
1039
|
this._remoteOptions = options;
|
|
1034
1040
|
this._remoteOptionsTrigger.wake();
|
|
1035
1041
|
},
|
|
@@ -1039,20 +1045,20 @@ var InvitationHostExtension = class extends RpcExtension {
|
|
|
1039
1045
|
log4.trace("dxos.sdk.invitation-handler.host.introduce", trace2.begin({
|
|
1040
1046
|
id: traceId
|
|
1041
1047
|
}), {
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1048
|
+
F: __dxlog_file4,
|
|
1049
|
+
L: 98,
|
|
1050
|
+
S: this,
|
|
1051
|
+
C: (f, a) => f(...a)
|
|
1046
1052
|
});
|
|
1047
1053
|
const invitation = await this._callbacks.resolveInvitation(request);
|
|
1048
1054
|
if (!invitation) {
|
|
1049
1055
|
log4.warn("invitation not found", {
|
|
1050
1056
|
invitationId
|
|
1051
1057
|
}, {
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1058
|
+
F: __dxlog_file4,
|
|
1059
|
+
L: 102,
|
|
1060
|
+
S: this,
|
|
1061
|
+
C: (f, a) => f(...a)
|
|
1056
1062
|
});
|
|
1057
1063
|
this._callbacks.onError(new Error("Invitation not found."));
|
|
1058
1064
|
return {
|
|
@@ -1063,10 +1069,10 @@ var InvitationHostExtension = class extends RpcExtension {
|
|
|
1063
1069
|
log4("guest introduced itself", {
|
|
1064
1070
|
guestProfile: profile
|
|
1065
1071
|
}, {
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1072
|
+
F: __dxlog_file4,
|
|
1073
|
+
L: 111,
|
|
1074
|
+
S: this,
|
|
1075
|
+
C: (f, a) => f(...a)
|
|
1070
1076
|
});
|
|
1071
1077
|
this.guestProfile = profile;
|
|
1072
1078
|
this._callbacks.onStateUpdate({
|
|
@@ -1076,10 +1082,10 @@ var InvitationHostExtension = class extends RpcExtension {
|
|
|
1076
1082
|
log4.trace("dxos.sdk.invitation-handler.host.introduce", trace2.end({
|
|
1077
1083
|
id: traceId
|
|
1078
1084
|
}), {
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1085
|
+
F: __dxlog_file4,
|
|
1086
|
+
L: 118,
|
|
1087
|
+
S: this,
|
|
1088
|
+
C: (f, a) => f(...a)
|
|
1083
1089
|
});
|
|
1084
1090
|
return {
|
|
1085
1091
|
spaceKey: this.invitation.authMethod === Invitation2.AuthMethod.NONE ? this.invitation.spaceKey : void 0,
|
|
@@ -1091,28 +1097,28 @@ var InvitationHostExtension = class extends RpcExtension {
|
|
|
1091
1097
|
log4.trace("dxos.sdk.invitation-handler.host.authenticate", trace2.begin({
|
|
1092
1098
|
id: traceId
|
|
1093
1099
|
}), {
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1100
|
+
F: __dxlog_file4,
|
|
1101
|
+
L: 127,
|
|
1102
|
+
S: this,
|
|
1103
|
+
C: (f, a) => f(...a)
|
|
1098
1104
|
});
|
|
1099
1105
|
log4("received authentication request", {
|
|
1100
1106
|
authCode: code
|
|
1101
1107
|
}, {
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1108
|
+
F: __dxlog_file4,
|
|
1109
|
+
L: 128,
|
|
1110
|
+
S: this,
|
|
1111
|
+
C: (f, a) => f(...a)
|
|
1106
1112
|
});
|
|
1107
1113
|
let status = AuthenticationResponse.Status.OK;
|
|
1108
|
-
|
|
1114
|
+
invariant5(this.invitation, "Invitation is not set.");
|
|
1109
1115
|
switch (this.invitation.authMethod) {
|
|
1110
1116
|
case Invitation2.AuthMethod.NONE: {
|
|
1111
|
-
log4("authentication not required",
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1117
|
+
log4("authentication not required", void 0, {
|
|
1118
|
+
F: __dxlog_file4,
|
|
1119
|
+
L: 134,
|
|
1120
|
+
S: this,
|
|
1121
|
+
C: (f, a) => f(...a)
|
|
1116
1122
|
});
|
|
1117
1123
|
return {
|
|
1118
1124
|
status: AuthenticationResponse.Status.OK
|
|
@@ -1134,10 +1140,10 @@ var InvitationHostExtension = class extends RpcExtension {
|
|
|
1134
1140
|
log4.error("invalid authentication method", {
|
|
1135
1141
|
authMethod: this.invitation.authMethod
|
|
1136
1142
|
}, {
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1143
|
+
F: __dxlog_file4,
|
|
1144
|
+
L: 152,
|
|
1145
|
+
S: this,
|
|
1146
|
+
C: (f, a) => f(...a)
|
|
1141
1147
|
});
|
|
1142
1148
|
status = AuthenticationResponse.Status.INTERNAL_ERROR;
|
|
1143
1149
|
break;
|
|
@@ -1149,10 +1155,10 @@ var InvitationHostExtension = class extends RpcExtension {
|
|
|
1149
1155
|
status
|
|
1150
1156
|
}
|
|
1151
1157
|
}), {
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1158
|
+
F: __dxlog_file4,
|
|
1159
|
+
L: 158,
|
|
1160
|
+
S: this,
|
|
1161
|
+
C: (f, a) => f(...a)
|
|
1156
1162
|
});
|
|
1157
1163
|
return {
|
|
1158
1164
|
status
|
|
@@ -1163,13 +1169,13 @@ var InvitationHostExtension = class extends RpcExtension {
|
|
|
1163
1169
|
log4.trace("dxos.sdk.invitation-handler.host.admit", trace2.begin({
|
|
1164
1170
|
id: traceId
|
|
1165
1171
|
}), {
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1172
|
+
F: __dxlog_file4,
|
|
1173
|
+
L: 164,
|
|
1174
|
+
S: this,
|
|
1175
|
+
C: (f, a) => f(...a)
|
|
1170
1176
|
});
|
|
1171
1177
|
try {
|
|
1172
|
-
|
|
1178
|
+
invariant5(this.invitation, "Invitation is not set.");
|
|
1173
1179
|
if (isAuthenticationRequired(this.invitation) && !this.authenticationPassed) {
|
|
1174
1180
|
throw new Error("Not authenticated");
|
|
1175
1181
|
}
|
|
@@ -1177,10 +1183,10 @@ var InvitationHostExtension = class extends RpcExtension {
|
|
|
1177
1183
|
log4.trace("dxos.sdk.invitation-handler.host.admit", trace2.end({
|
|
1178
1184
|
id: traceId
|
|
1179
1185
|
}), {
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1186
|
+
F: __dxlog_file4,
|
|
1187
|
+
L: 175,
|
|
1188
|
+
S: this,
|
|
1189
|
+
C: (f, a) => f(...a)
|
|
1184
1190
|
});
|
|
1185
1191
|
return response;
|
|
1186
1192
|
} catch (err) {
|
|
@@ -1234,7 +1240,7 @@ var InvitationGuestExtension = class extends RpcExtension {
|
|
|
1234
1240
|
return {
|
|
1235
1241
|
InvitationHostService: {
|
|
1236
1242
|
options: async (options) => {
|
|
1237
|
-
|
|
1243
|
+
invariant5(!this._remoteOptions, "Remote options already set.");
|
|
1238
1244
|
this._remoteOptions = options;
|
|
1239
1245
|
this._remoteOptionsTrigger.wake();
|
|
1240
1246
|
},
|
|
@@ -1254,11 +1260,11 @@ var InvitationGuestExtension = class extends RpcExtension {
|
|
|
1254
1260
|
var _a;
|
|
1255
1261
|
await super.onOpen(context);
|
|
1256
1262
|
try {
|
|
1257
|
-
log4("begin options",
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1263
|
+
log4("begin options", void 0, {
|
|
1264
|
+
F: __dxlog_file4,
|
|
1265
|
+
L: 263,
|
|
1266
|
+
S: this,
|
|
1267
|
+
C: (f, a) => f(...a)
|
|
1262
1268
|
});
|
|
1263
1269
|
await cancelWithContext(this._ctx, this.rpc.InvitationHostService.options({
|
|
1264
1270
|
role: Options.Role.GUEST
|
|
@@ -1266,11 +1272,11 @@ var InvitationGuestExtension = class extends RpcExtension {
|
|
|
1266
1272
|
await cancelWithContext(this._ctx, this._remoteOptionsTrigger.wait({
|
|
1267
1273
|
timeout: OPTIONS_TIMEOUT
|
|
1268
1274
|
}));
|
|
1269
|
-
log4("end options",
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1275
|
+
log4("end options", void 0, {
|
|
1276
|
+
F: __dxlog_file4,
|
|
1277
|
+
L: 266,
|
|
1278
|
+
S: this,
|
|
1279
|
+
C: (f, a) => f(...a)
|
|
1274
1280
|
});
|
|
1275
1281
|
if (((_a = this._remoteOptions) == null ? void 0 : _a.role) !== Options.Role.HOST) {
|
|
1276
1282
|
throw new InvalidInvitationExtensionRoleError(void 0, {
|
|
@@ -1281,20 +1287,20 @@ var InvitationGuestExtension = class extends RpcExtension {
|
|
|
1281
1287
|
this._callbacks.onOpen(this._ctx);
|
|
1282
1288
|
} catch (err) {
|
|
1283
1289
|
log4("openError", err, {
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1290
|
+
F: __dxlog_file4,
|
|
1291
|
+
L: 276,
|
|
1292
|
+
S: this,
|
|
1293
|
+
C: (f, a) => f(...a)
|
|
1288
1294
|
});
|
|
1289
1295
|
this._callbacks.onError(err);
|
|
1290
1296
|
}
|
|
1291
1297
|
}
|
|
1292
1298
|
async onClose() {
|
|
1293
|
-
log4("onClose",
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1299
|
+
log4("onClose", void 0, {
|
|
1300
|
+
F: __dxlog_file4,
|
|
1301
|
+
L: 282,
|
|
1302
|
+
S: this,
|
|
1303
|
+
C: (f, a) => f(...a)
|
|
1298
1304
|
});
|
|
1299
1305
|
await this._ctx.dispose();
|
|
1300
1306
|
}
|
|
@@ -1302,6 +1308,7 @@ var InvitationGuestExtension = class extends RpcExtension {
|
|
|
1302
1308
|
var isAuthenticationRequired = (invitation) => invitation.authMethod !== Invitation2.AuthMethod.NONE;
|
|
1303
1309
|
|
|
1304
1310
|
// packages/sdk/client-services/src/packlets/invitations/invitations-handler.ts
|
|
1311
|
+
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/invitations/invitations-handler.ts";
|
|
1305
1312
|
var InvitationsHandler = class {
|
|
1306
1313
|
/**
|
|
1307
1314
|
* @internal
|
|
@@ -1313,7 +1320,7 @@ var InvitationsHandler = class {
|
|
|
1313
1320
|
var _a;
|
|
1314
1321
|
const { invitationId = PublicKey5.random().toHex(), type = Invitation3.Type.INTERACTIVE, authMethod = Invitation3.AuthMethod.SHARED_SECRET, state = Invitation3.State.INIT, timeout = INVITATION_TIMEOUT, swarmKey = PublicKey5.random() } = options != null ? options : {};
|
|
1315
1322
|
const authCode = (_a = options == null ? void 0 : options.authCode) != null ? _a : authMethod === Invitation3.AuthMethod.SHARED_SECRET ? generatePasscode(AUTHENTICATION_CODE_LENGTH) : void 0;
|
|
1316
|
-
|
|
1323
|
+
invariant6(protocol);
|
|
1317
1324
|
const invitation = {
|
|
1318
1325
|
invitationId,
|
|
1319
1326
|
type,
|
|
@@ -1335,10 +1342,10 @@ var InvitationsHandler = class {
|
|
|
1335
1342
|
log5("complete", {
|
|
1336
1343
|
...protocol.toJSON()
|
|
1337
1344
|
}, {
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1345
|
+
F: __dxlog_file5,
|
|
1346
|
+
L: 99,
|
|
1347
|
+
S: this,
|
|
1348
|
+
C: (f, a) => f(...a)
|
|
1342
1349
|
});
|
|
1343
1350
|
stream.complete();
|
|
1344
1351
|
});
|
|
@@ -1360,7 +1367,7 @@ var InvitationsHandler = class {
|
|
|
1360
1367
|
var _a2, _b, _c;
|
|
1361
1368
|
try {
|
|
1362
1369
|
const deviceKey = (_c = (_a2 = admissionRequest.device) == null ? void 0 : _a2.deviceKey) != null ? _c : (_b = admissionRequest.space) == null ? void 0 : _b.deviceKey;
|
|
1363
|
-
|
|
1370
|
+
invariant6(deviceKey);
|
|
1364
1371
|
const admissionResponse = await protocol.admit(admissionRequest, extension.guestProfile);
|
|
1365
1372
|
extension.completedTrigger.wake(deviceKey);
|
|
1366
1373
|
return admissionResponse;
|
|
@@ -1376,18 +1383,18 @@ var InvitationsHandler = class {
|
|
|
1376
1383
|
log5.trace("dxos.sdk.invitations-handler.host.onOpen", trace3.begin({
|
|
1377
1384
|
id: traceId
|
|
1378
1385
|
}), {
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1386
|
+
F: __dxlog_file5,
|
|
1387
|
+
L: 138,
|
|
1388
|
+
S: this,
|
|
1389
|
+
C: (f, a) => f(...a)
|
|
1383
1390
|
});
|
|
1384
1391
|
log5("connected", {
|
|
1385
1392
|
...protocol.toJSON()
|
|
1386
1393
|
}, {
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1394
|
+
F: __dxlog_file5,
|
|
1395
|
+
L: 139,
|
|
1396
|
+
S: this,
|
|
1397
|
+
C: (f, a) => f(...a)
|
|
1391
1398
|
});
|
|
1392
1399
|
stream.next({
|
|
1393
1400
|
...invitation,
|
|
@@ -1400,10 +1407,10 @@ var InvitationsHandler = class {
|
|
|
1400
1407
|
guest: deviceKey,
|
|
1401
1408
|
...protocol.toJSON()
|
|
1402
1409
|
}, {
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1410
|
+
F: __dxlog_file5,
|
|
1411
|
+
L: 142,
|
|
1412
|
+
S: this,
|
|
1413
|
+
C: (f, a) => f(...a)
|
|
1407
1414
|
});
|
|
1408
1415
|
stream.next({
|
|
1409
1416
|
...invitation,
|
|
@@ -1412,20 +1419,20 @@ var InvitationsHandler = class {
|
|
|
1412
1419
|
log5.trace("dxos.sdk.invitations-handler.host.onOpen", trace3.end({
|
|
1413
1420
|
id: traceId
|
|
1414
1421
|
}), {
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1422
|
+
F: __dxlog_file5,
|
|
1423
|
+
L: 144,
|
|
1424
|
+
S: this,
|
|
1425
|
+
C: (f, a) => f(...a)
|
|
1419
1426
|
});
|
|
1420
1427
|
} catch (err) {
|
|
1421
1428
|
if (err instanceof TimeoutError) {
|
|
1422
1429
|
log5("timeout", {
|
|
1423
1430
|
...protocol.toJSON()
|
|
1424
1431
|
}, {
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1432
|
+
F: __dxlog_file5,
|
|
1433
|
+
L: 147,
|
|
1434
|
+
S: this,
|
|
1435
|
+
C: (f, a) => f(...a)
|
|
1429
1436
|
});
|
|
1430
1437
|
stream.next({
|
|
1431
1438
|
...invitation,
|
|
@@ -1433,10 +1440,10 @@ var InvitationsHandler = class {
|
|
|
1433
1440
|
});
|
|
1434
1441
|
} else {
|
|
1435
1442
|
log5.error("failed", err, {
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1443
|
+
F: __dxlog_file5,
|
|
1444
|
+
L: 150,
|
|
1445
|
+
S: this,
|
|
1446
|
+
C: (f, a) => f(...a)
|
|
1440
1447
|
});
|
|
1441
1448
|
stream.error(err);
|
|
1442
1449
|
}
|
|
@@ -1444,10 +1451,10 @@ var InvitationsHandler = class {
|
|
|
1444
1451
|
id: traceId,
|
|
1445
1452
|
error: err
|
|
1446
1453
|
}), {
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1454
|
+
F: __dxlog_file5,
|
|
1455
|
+
L: 153,
|
|
1456
|
+
S: this,
|
|
1457
|
+
C: (f, a) => f(...a)
|
|
1451
1458
|
});
|
|
1452
1459
|
} finally {
|
|
1453
1460
|
if (type !== Invitation3.Type.MULTIUSE) {
|
|
@@ -1465,10 +1472,10 @@ var InvitationsHandler = class {
|
|
|
1465
1472
|
log5("timeout", {
|
|
1466
1473
|
...protocol.toJSON()
|
|
1467
1474
|
}, {
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1475
|
+
F: __dxlog_file5,
|
|
1476
|
+
L: 168,
|
|
1477
|
+
S: this,
|
|
1478
|
+
C: (f, a) => f(...a)
|
|
1472
1479
|
});
|
|
1473
1480
|
stream.next({
|
|
1474
1481
|
...invitation,
|
|
@@ -1476,10 +1483,10 @@ var InvitationsHandler = class {
|
|
|
1476
1483
|
});
|
|
1477
1484
|
} else {
|
|
1478
1485
|
log5.error("failed", err, {
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1486
|
+
F: __dxlog_file5,
|
|
1487
|
+
L: 171,
|
|
1488
|
+
S: this,
|
|
1489
|
+
C: (f, a) => f(...a)
|
|
1483
1490
|
});
|
|
1484
1491
|
stream.error(err);
|
|
1485
1492
|
}
|
|
@@ -1519,13 +1526,13 @@ var InvitationsHandler = class {
|
|
|
1519
1526
|
}
|
|
1520
1527
|
acceptInvitation(protocol, invitation) {
|
|
1521
1528
|
const { timeout = INVITATION_TIMEOUT } = invitation;
|
|
1522
|
-
|
|
1529
|
+
invariant6(protocol);
|
|
1523
1530
|
const authenticated = new Trigger3();
|
|
1524
1531
|
let admitted = false;
|
|
1525
1532
|
let currentState;
|
|
1526
1533
|
const stream = new PushStream();
|
|
1527
1534
|
const setState = (newData) => {
|
|
1528
|
-
|
|
1535
|
+
invariant6(newData.state !== void 0);
|
|
1529
1536
|
currentState = newData.state;
|
|
1530
1537
|
stream.next({
|
|
1531
1538
|
...invitation,
|
|
@@ -1538,20 +1545,20 @@ var InvitationsHandler = class {
|
|
|
1538
1545
|
log5("timeout", {
|
|
1539
1546
|
...protocol.toJSON()
|
|
1540
1547
|
}, {
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1548
|
+
F: __dxlog_file5,
|
|
1549
|
+
L: 230,
|
|
1550
|
+
S: this,
|
|
1551
|
+
C: (f, a) => f(...a)
|
|
1545
1552
|
});
|
|
1546
1553
|
setState({
|
|
1547
1554
|
state: Invitation3.State.TIMEOUT
|
|
1548
1555
|
});
|
|
1549
1556
|
} else {
|
|
1550
1557
|
log5.warn("auth failed", err, {
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1558
|
+
F: __dxlog_file5,
|
|
1559
|
+
L: 233,
|
|
1560
|
+
S: this,
|
|
1561
|
+
C: (f, a) => f(...a)
|
|
1555
1562
|
});
|
|
1556
1563
|
stream.error(err);
|
|
1557
1564
|
}
|
|
@@ -1562,10 +1569,10 @@ var InvitationsHandler = class {
|
|
|
1562
1569
|
log5("complete", {
|
|
1563
1570
|
...protocol.toJSON()
|
|
1564
1571
|
}, {
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1572
|
+
F: __dxlog_file5,
|
|
1573
|
+
L: 241,
|
|
1574
|
+
S: this,
|
|
1575
|
+
C: (f, a) => f(...a)
|
|
1569
1576
|
});
|
|
1570
1577
|
stream.complete();
|
|
1571
1578
|
});
|
|
@@ -1577,10 +1584,10 @@ var InvitationsHandler = class {
|
|
|
1577
1584
|
log5("extension disposed", {
|
|
1578
1585
|
currentState
|
|
1579
1586
|
}, {
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1587
|
+
F: __dxlog_file5,
|
|
1588
|
+
L: 251,
|
|
1589
|
+
S: this,
|
|
1590
|
+
C: (f, a) => f(...a)
|
|
1584
1591
|
});
|
|
1585
1592
|
if (!admitted) {
|
|
1586
1593
|
stream.error(new Error("Remote peer disconnected."));
|
|
@@ -1592,10 +1599,10 @@ var InvitationsHandler = class {
|
|
|
1592
1599
|
log5.trace("dxos.sdk.invitations-handler.guest.onOpen", trace3.begin({
|
|
1593
1600
|
id: traceId
|
|
1594
1601
|
}), {
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1602
|
+
F: __dxlog_file5,
|
|
1603
|
+
L: 260,
|
|
1604
|
+
S: this,
|
|
1605
|
+
C: (f, a) => f(...a)
|
|
1599
1606
|
});
|
|
1600
1607
|
if (++connectionCount > 1) {
|
|
1601
1608
|
throw new Error(`multiple connections detected: ${connectionCount}`);
|
|
@@ -1604,10 +1611,10 @@ var InvitationsHandler = class {
|
|
|
1604
1611
|
log5("connected", {
|
|
1605
1612
|
...protocol.toJSON()
|
|
1606
1613
|
}, {
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1614
|
+
F: __dxlog_file5,
|
|
1615
|
+
L: 268,
|
|
1616
|
+
S: this,
|
|
1617
|
+
C: (f, a) => f(...a)
|
|
1611
1618
|
});
|
|
1612
1619
|
setState({
|
|
1613
1620
|
state: Invitation3.State.CONNECTED
|
|
@@ -1615,20 +1622,20 @@ var InvitationsHandler = class {
|
|
|
1615
1622
|
log5("introduce", {
|
|
1616
1623
|
...protocol.toJSON()
|
|
1617
1624
|
}, {
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1625
|
+
F: __dxlog_file5,
|
|
1626
|
+
L: 272,
|
|
1627
|
+
S: this,
|
|
1628
|
+
C: (f, a) => f(...a)
|
|
1622
1629
|
});
|
|
1623
1630
|
const introductionResponse = await extension.rpc.InvitationHostService.introduce(protocol.createIntroduction());
|
|
1624
1631
|
log5("introduce response", {
|
|
1625
1632
|
...protocol.toJSON(),
|
|
1626
1633
|
response: introductionResponse
|
|
1627
1634
|
}, {
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1635
|
+
F: __dxlog_file5,
|
|
1636
|
+
L: 276,
|
|
1637
|
+
S: this,
|
|
1638
|
+
C: (f, a) => f(...a)
|
|
1632
1639
|
});
|
|
1633
1640
|
invitation.authMethod = introductionResponse.authMethod;
|
|
1634
1641
|
if (introductionResponse.spaceKey) {
|
|
@@ -1636,11 +1643,11 @@ var InvitationsHandler = class {
|
|
|
1636
1643
|
}
|
|
1637
1644
|
if (isAuthenticationRequired(invitation)) {
|
|
1638
1645
|
for (let attempt = 1; attempt <= MAX_OTP_ATTEMPTS; attempt++) {
|
|
1639
|
-
log5("guest waiting for authentication code...",
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1646
|
+
log5("guest waiting for authentication code...", void 0, {
|
|
1647
|
+
F: __dxlog_file5,
|
|
1648
|
+
L: 285,
|
|
1649
|
+
S: this,
|
|
1650
|
+
C: (f, a) => f(...a)
|
|
1644
1651
|
});
|
|
1645
1652
|
setState({
|
|
1646
1653
|
state: Invitation3.State.READY_FOR_AUTHENTICATION
|
|
@@ -1648,11 +1655,11 @@ var InvitationsHandler = class {
|
|
|
1648
1655
|
const authCode = await authenticated.wait({
|
|
1649
1656
|
timeout
|
|
1650
1657
|
});
|
|
1651
|
-
log5("sending authentication request",
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1658
|
+
log5("sending authentication request", void 0, {
|
|
1659
|
+
F: __dxlog_file5,
|
|
1660
|
+
L: 289,
|
|
1661
|
+
S: this,
|
|
1662
|
+
C: (f, a) => f(...a)
|
|
1656
1663
|
});
|
|
1657
1664
|
setState({
|
|
1658
1665
|
state: Invitation3.State.AUTHENTICATING
|
|
@@ -1670,10 +1677,10 @@ var InvitationsHandler = class {
|
|
|
1670
1677
|
log5("retrying invalid code", {
|
|
1671
1678
|
attempt
|
|
1672
1679
|
}, {
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1680
|
+
F: __dxlog_file5,
|
|
1681
|
+
L: 300,
|
|
1682
|
+
S: this,
|
|
1683
|
+
C: (f, a) => f(...a)
|
|
1677
1684
|
});
|
|
1678
1685
|
authenticated.reset();
|
|
1679
1686
|
}
|
|
@@ -1687,10 +1694,10 @@ var InvitationsHandler = class {
|
|
|
1687
1694
|
log5("request admission", {
|
|
1688
1695
|
...protocol.toJSON()
|
|
1689
1696
|
}, {
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1697
|
+
F: __dxlog_file5,
|
|
1698
|
+
L: 311,
|
|
1699
|
+
S: this,
|
|
1700
|
+
C: (f, a) => f(...a)
|
|
1694
1701
|
});
|
|
1695
1702
|
const admissionRequest = await protocol.createAdmissionRequest();
|
|
1696
1703
|
const admissionResponse = await extension.rpc.InvitationHostService.admit(admissionRequest);
|
|
@@ -1699,10 +1706,10 @@ var InvitationsHandler = class {
|
|
|
1699
1706
|
log5("admitted by host", {
|
|
1700
1707
|
...protocol.toJSON()
|
|
1701
1708
|
}, {
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1709
|
+
F: __dxlog_file5,
|
|
1710
|
+
L: 322,
|
|
1711
|
+
S: this,
|
|
1712
|
+
C: (f, a) => f(...a)
|
|
1706
1713
|
});
|
|
1707
1714
|
setState({
|
|
1708
1715
|
...result,
|
|
@@ -1711,30 +1718,30 @@ var InvitationsHandler = class {
|
|
|
1711
1718
|
log5.trace("dxos.sdk.invitations-handler.guest.onOpen", trace3.end({
|
|
1712
1719
|
id: traceId
|
|
1713
1720
|
}), {
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1721
|
+
F: __dxlog_file5,
|
|
1722
|
+
L: 324,
|
|
1723
|
+
S: this,
|
|
1724
|
+
C: (f, a) => f(...a)
|
|
1718
1725
|
});
|
|
1719
1726
|
} catch (err) {
|
|
1720
1727
|
if (err instanceof TimeoutError) {
|
|
1721
1728
|
log5("timeout", {
|
|
1722
1729
|
...protocol.toJSON()
|
|
1723
1730
|
}, {
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1731
|
+
F: __dxlog_file5,
|
|
1732
|
+
L: 327,
|
|
1733
|
+
S: this,
|
|
1734
|
+
C: (f, a) => f(...a)
|
|
1728
1735
|
});
|
|
1729
1736
|
setState({
|
|
1730
1737
|
state: Invitation3.State.TIMEOUT
|
|
1731
1738
|
});
|
|
1732
1739
|
} else {
|
|
1733
1740
|
log5("auth failed", err, {
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1741
|
+
F: __dxlog_file5,
|
|
1742
|
+
L: 330,
|
|
1743
|
+
S: this,
|
|
1744
|
+
C: (f, a) => f(...a)
|
|
1738
1745
|
});
|
|
1739
1746
|
stream.error(err);
|
|
1740
1747
|
}
|
|
@@ -1742,10 +1749,10 @@ var InvitationsHandler = class {
|
|
|
1742
1749
|
id: traceId,
|
|
1743
1750
|
error: err
|
|
1744
1751
|
}), {
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1752
|
+
F: __dxlog_file5,
|
|
1753
|
+
L: 333,
|
|
1754
|
+
S: this,
|
|
1755
|
+
C: (f, a) => f(...a)
|
|
1749
1756
|
});
|
|
1750
1757
|
} finally {
|
|
1751
1758
|
await ctx.dispose();
|
|
@@ -1760,20 +1767,20 @@ var InvitationsHandler = class {
|
|
|
1760
1767
|
log5("timeout", {
|
|
1761
1768
|
...protocol.toJSON()
|
|
1762
1769
|
}, {
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1770
|
+
F: __dxlog_file5,
|
|
1771
|
+
L: 344,
|
|
1772
|
+
S: this,
|
|
1773
|
+
C: (f, a) => f(...a)
|
|
1767
1774
|
});
|
|
1768
1775
|
setState({
|
|
1769
1776
|
state: Invitation3.State.TIMEOUT
|
|
1770
1777
|
});
|
|
1771
1778
|
} else {
|
|
1772
1779
|
log5("auth failed", err, {
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1780
|
+
F: __dxlog_file5,
|
|
1781
|
+
L: 347,
|
|
1782
|
+
S: this,
|
|
1783
|
+
C: (f, a) => f(...a)
|
|
1777
1784
|
});
|
|
1778
1785
|
stream.error(err);
|
|
1779
1786
|
}
|
|
@@ -1782,7 +1789,7 @@ var InvitationsHandler = class {
|
|
|
1782
1789
|
return extension;
|
|
1783
1790
|
};
|
|
1784
1791
|
scheduleTask2(ctx, async () => {
|
|
1785
|
-
|
|
1792
|
+
invariant6(invitation.swarmKey);
|
|
1786
1793
|
const topic = invitation.swarmKey;
|
|
1787
1794
|
const swarmConnection = await this._networkManager.joinSwarm({
|
|
1788
1795
|
topic,
|
|
@@ -1815,11 +1822,12 @@ var InvitationsHandler = class {
|
|
|
1815
1822
|
};
|
|
1816
1823
|
|
|
1817
1824
|
// packages/sdk/client-services/src/packlets/invitations/invitations-service.ts
|
|
1818
|
-
import
|
|
1825
|
+
import invariant7 from "tiny-invariant";
|
|
1819
1826
|
import { Event as Event3 } from "@dxos/async";
|
|
1820
1827
|
import { Stream as Stream8 } from "@dxos/codec-protobuf";
|
|
1821
1828
|
import { log as log6 } from "@dxos/log";
|
|
1822
1829
|
import { QueryInvitationsResponse } from "@dxos/protocols/proto/dxos/client/services";
|
|
1830
|
+
var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/invitations/invitations-service.ts";
|
|
1823
1831
|
var InvitationsServiceImpl = class {
|
|
1824
1832
|
constructor(_invitationsHandler, _getHandler) {
|
|
1825
1833
|
this._invitationsHandler = _invitationsHandler;
|
|
@@ -1880,35 +1888,35 @@ var InvitationsServiceImpl = class {
|
|
|
1880
1888
|
});
|
|
1881
1889
|
}
|
|
1882
1890
|
async authenticate({ invitationId, authCode }) {
|
|
1883
|
-
log6("authenticating...",
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1891
|
+
log6("authenticating...", void 0, {
|
|
1892
|
+
F: __dxlog_file6,
|
|
1893
|
+
L: 103,
|
|
1894
|
+
S: this,
|
|
1895
|
+
C: (f, a) => f(...a)
|
|
1888
1896
|
});
|
|
1889
|
-
|
|
1897
|
+
invariant7(invitationId);
|
|
1890
1898
|
const observable = this._acceptInvitations.get(invitationId);
|
|
1891
1899
|
if (!observable) {
|
|
1892
1900
|
log6.warn("invalid invitation", {
|
|
1893
1901
|
invitationId
|
|
1894
1902
|
}, {
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1903
|
+
F: __dxlog_file6,
|
|
1904
|
+
L: 107,
|
|
1905
|
+
S: this,
|
|
1906
|
+
C: (f, a) => f(...a)
|
|
1899
1907
|
});
|
|
1900
1908
|
} else {
|
|
1901
1909
|
await observable.authenticate(authCode);
|
|
1902
1910
|
}
|
|
1903
1911
|
}
|
|
1904
1912
|
async cancelInvitation({ invitationId }) {
|
|
1905
|
-
log6("deleting...",
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1913
|
+
log6("deleting...", void 0, {
|
|
1914
|
+
F: __dxlog_file6,
|
|
1915
|
+
L: 114,
|
|
1916
|
+
S: this,
|
|
1917
|
+
C: (f, a) => f(...a)
|
|
1910
1918
|
});
|
|
1911
|
-
|
|
1919
|
+
invariant7(invitationId);
|
|
1912
1920
|
const created = this._createInvitations.get(invitationId);
|
|
1913
1921
|
const accepted = this._acceptInvitations.get(invitationId);
|
|
1914
1922
|
if (created) {
|
|
@@ -1923,10 +1931,10 @@ var InvitationsServiceImpl = class {
|
|
|
1923
1931
|
log6.warn("invalid invitation", {
|
|
1924
1932
|
invitationId
|
|
1925
1933
|
}, {
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1934
|
+
F: __dxlog_file6,
|
|
1935
|
+
L: 127,
|
|
1936
|
+
S: this,
|
|
1937
|
+
C: (f, a) => f(...a)
|
|
1930
1938
|
});
|
|
1931
1939
|
}
|
|
1932
1940
|
}
|
|
@@ -1983,11 +1991,12 @@ var InvitationsServiceImpl = class {
|
|
|
1983
1991
|
};
|
|
1984
1992
|
|
|
1985
1993
|
// packages/sdk/client-services/src/packlets/invitations/space-invitation-protocol.ts
|
|
1986
|
-
import
|
|
1994
|
+
import invariant8 from "tiny-invariant";
|
|
1987
1995
|
import { createAdmissionCredentials, getCredentialAssertion } from "@dxos/credentials";
|
|
1988
1996
|
import { writeMessages as writeMessages2 } from "@dxos/feed-store";
|
|
1989
1997
|
import { log as log7 } from "@dxos/log";
|
|
1990
1998
|
import { Invitation as Invitation4 } from "@dxos/protocols/proto/dxos/client/services";
|
|
1999
|
+
var __dxlog_file7 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/invitations/space-invitation-protocol.ts";
|
|
1991
2000
|
var SpaceInvitationProtocol = class {
|
|
1992
2001
|
constructor(_spaceManager, _signingContext, _keyring, _spaceKey) {
|
|
1993
2002
|
this._spaceManager = _spaceManager;
|
|
@@ -2009,24 +2018,24 @@ var SpaceInvitationProtocol = class {
|
|
|
2009
2018
|
}
|
|
2010
2019
|
async admit(request, guestProfile) {
|
|
2011
2020
|
var _a;
|
|
2012
|
-
|
|
2021
|
+
invariant8(this._spaceKey);
|
|
2013
2022
|
const space = await this._spaceManager.spaces.get(this._spaceKey);
|
|
2014
|
-
|
|
2015
|
-
|
|
2023
|
+
invariant8(space);
|
|
2024
|
+
invariant8(request.space);
|
|
2016
2025
|
const { identityKey, deviceKey } = request.space;
|
|
2017
2026
|
log7("writing guest credentials", {
|
|
2018
2027
|
host: this._signingContext.deviceKey,
|
|
2019
2028
|
guest: deviceKey
|
|
2020
2029
|
}, {
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2030
|
+
F: __dxlog_file7,
|
|
2031
|
+
L: 50,
|
|
2032
|
+
S: this,
|
|
2033
|
+
C: (f, a) => f(...a)
|
|
2025
2034
|
});
|
|
2026
2035
|
const credentials = await createAdmissionCredentials(this._signingContext.credentialSigner, identityKey, space.key, space.inner.genesisFeedKey, guestProfile);
|
|
2027
|
-
|
|
2036
|
+
invariant8(credentials[0].credential);
|
|
2028
2037
|
const spaceMemberCredential = credentials[0].credential.credential;
|
|
2029
|
-
|
|
2038
|
+
invariant8(getCredentialAssertion(spaceMemberCredential)["@type"] === "dxos.halo.credentials.SpaceMember");
|
|
2030
2039
|
await writeMessages2(space.inner.controlPipeline.writer, credentials);
|
|
2031
2040
|
return {
|
|
2032
2041
|
space: {
|
|
@@ -2054,11 +2063,11 @@ var SpaceInvitationProtocol = class {
|
|
|
2054
2063
|
};
|
|
2055
2064
|
}
|
|
2056
2065
|
async accept(response) {
|
|
2057
|
-
|
|
2066
|
+
invariant8(response.space);
|
|
2058
2067
|
const { credential, controlTimeframe, dataTimeframe } = response.space;
|
|
2059
2068
|
const assertion = getCredentialAssertion(credential);
|
|
2060
|
-
|
|
2061
|
-
|
|
2069
|
+
invariant8(assertion["@type"] === "dxos.halo.credentials.SpaceMember", "Invalid credential");
|
|
2070
|
+
invariant8(credential.subject.id.equals(this._signingContext.identityKey));
|
|
2062
2071
|
await this._spaceManager.acceptSpace({
|
|
2063
2072
|
spaceKey: assertion.spaceKey,
|
|
2064
2073
|
genesisFeedKey: assertion.genesisFeedKey,
|
|
@@ -2073,7 +2082,7 @@ var SpaceInvitationProtocol = class {
|
|
|
2073
2082
|
};
|
|
2074
2083
|
|
|
2075
2084
|
// packages/sdk/client-services/src/packlets/spaces/data-space.ts
|
|
2076
|
-
import { Event as Event5, scheduleTask as scheduleTask4, trackLeaks } from "@dxos/async";
|
|
2085
|
+
import { Event as Event5, scheduleTask as scheduleTask4, synchronized, trackLeaks } from "@dxos/async";
|
|
2077
2086
|
import { AUTH_TIMEOUT as AUTH_TIMEOUT2 } from "@dxos/client-protocol";
|
|
2078
2087
|
import { cancelWithContext as cancelWithContext2, Context as Context6 } from "@dxos/context";
|
|
2079
2088
|
import { timed } from "@dxos/debug";
|
|
@@ -2087,7 +2096,7 @@ import { Timeframe } from "@dxos/timeframe";
|
|
|
2087
2096
|
import { ComplexSet as ComplexSet2 } from "@dxos/util";
|
|
2088
2097
|
|
|
2089
2098
|
// packages/sdk/client-services/src/packlets/spaces/notarization-plugin.ts
|
|
2090
|
-
import
|
|
2099
|
+
import invariant9 from "tiny-invariant";
|
|
2091
2100
|
import { DeferredTask, Event as Event4, scheduleTask as scheduleTask3, sleep, TimeoutError as TimeoutError2, Trigger as Trigger4 } from "@dxos/async";
|
|
2092
2101
|
import { Context as Context5, rejectOnDispose } from "@dxos/context";
|
|
2093
2102
|
import { PublicKey as PublicKey6 } from "@dxos/keys";
|
|
@@ -2095,6 +2104,7 @@ import { log as log8 } from "@dxos/log";
|
|
|
2095
2104
|
import { schema as schema3 } from "@dxos/protocols";
|
|
2096
2105
|
import { RpcExtension as RpcExtension2 } from "@dxos/teleport";
|
|
2097
2106
|
import { ComplexMap as ComplexMap2, ComplexSet, entry } from "@dxos/util";
|
|
2107
|
+
var __dxlog_file8 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/notarization-plugin.ts";
|
|
2098
2108
|
var DEFAULT_RETRY_TIMEOUT = 1e3;
|
|
2099
2109
|
var DEFAULT_SUCCESS_DELAY = 1e3;
|
|
2100
2110
|
var DEFAULT_NOTARIZE_TIMEOUT = 1e4;
|
|
@@ -2107,6 +2117,9 @@ var NotarizationPlugin = class {
|
|
|
2107
2117
|
this._processedCredentials = new ComplexSet(PublicKey6.hash);
|
|
2108
2118
|
this._processCredentialsTriggers = new ComplexMap2(PublicKey6.hash);
|
|
2109
2119
|
}
|
|
2120
|
+
get hasWriter() {
|
|
2121
|
+
return !!this._writer;
|
|
2122
|
+
}
|
|
2110
2123
|
async open() {
|
|
2111
2124
|
}
|
|
2112
2125
|
async close() {
|
|
@@ -2119,22 +2132,22 @@ var NotarizationPlugin = class {
|
|
|
2119
2132
|
log8("notarize", {
|
|
2120
2133
|
credentials
|
|
2121
2134
|
}, {
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2135
|
+
F: __dxlog_file8,
|
|
2136
|
+
L: 91,
|
|
2137
|
+
S: this,
|
|
2138
|
+
C: (f, a) => f(...a)
|
|
2126
2139
|
});
|
|
2127
|
-
|
|
2140
|
+
invariant9(credentials.every((credential) => credential.id), "Credentials must have an id");
|
|
2128
2141
|
const errors = new Trigger4();
|
|
2129
2142
|
const ctx = this._ctx.derive({
|
|
2130
2143
|
onError: (err) => {
|
|
2131
2144
|
log8.warn("Notarization error", {
|
|
2132
2145
|
err
|
|
2133
2146
|
}, {
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2147
|
+
F: __dxlog_file8,
|
|
2148
|
+
L: 100,
|
|
2149
|
+
S: this,
|
|
2150
|
+
C: (f, a) => f(...a)
|
|
2138
2151
|
});
|
|
2139
2152
|
void ctx.dispose();
|
|
2140
2153
|
errors.throw(err);
|
|
@@ -2147,10 +2160,10 @@ var NotarizationPlugin = class {
|
|
|
2147
2160
|
timeout,
|
|
2148
2161
|
peers: Array.from(this._extensions).map((extension) => extension.remotePeerId)
|
|
2149
2162
|
}, {
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2163
|
+
F: __dxlog_file8,
|
|
2164
|
+
L: 112,
|
|
2165
|
+
S: this,
|
|
2166
|
+
C: (f, a) => f(...a)
|
|
2154
2167
|
});
|
|
2155
2168
|
void ctx.dispose();
|
|
2156
2169
|
errors.throw(new TimeoutError2(timeout, "Notarization timed out"));
|
|
@@ -2170,10 +2183,10 @@ var NotarizationPlugin = class {
|
|
|
2170
2183
|
log8.warn("Exhausted all peers to notarize with", {
|
|
2171
2184
|
retryIn: retryTimeout
|
|
2172
2185
|
}, {
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2186
|
+
F: __dxlog_file8,
|
|
2187
|
+
L: 137,
|
|
2188
|
+
S: this,
|
|
2189
|
+
C: (f, a) => f(...a)
|
|
2177
2190
|
});
|
|
2178
2191
|
peersTried.clear();
|
|
2179
2192
|
scheduleTask3(ctx, () => notarizeTask.schedule(), retryTimeout);
|
|
@@ -2184,28 +2197,28 @@ var NotarizationPlugin = class {
|
|
|
2184
2197
|
peer: peer.localPeerId,
|
|
2185
2198
|
credentialId: credentials.map((credential) => credential.id)
|
|
2186
2199
|
}, {
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2200
|
+
F: __dxlog_file8,
|
|
2201
|
+
L: 144,
|
|
2202
|
+
S: this,
|
|
2203
|
+
C: (f, a) => f(...a)
|
|
2191
2204
|
});
|
|
2192
2205
|
await peer.rpc.NotarizationService.notarize({
|
|
2193
2206
|
credentials: credentials.filter((credential) => !this._processedCredentials.has(credential.id))
|
|
2194
2207
|
});
|
|
2195
|
-
log8("success",
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2208
|
+
log8("success", void 0, {
|
|
2209
|
+
F: __dxlog_file8,
|
|
2210
|
+
L: 148,
|
|
2211
|
+
S: this,
|
|
2212
|
+
C: (f, a) => f(...a)
|
|
2200
2213
|
});
|
|
2201
2214
|
await sleep(successDelay);
|
|
2202
2215
|
} catch (err) {
|
|
2203
2216
|
if (!ctx.disposed && !err.message.includes(WRITER_NOT_SET_ERROR_CODE)) {
|
|
2204
2217
|
log8.warn("error notarizing (recoverable)", err, {
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2218
|
+
F: __dxlog_file8,
|
|
2219
|
+
L: 152,
|
|
2220
|
+
S: this,
|
|
2221
|
+
C: (f, a) => f(...a)
|
|
2209
2222
|
});
|
|
2210
2223
|
}
|
|
2211
2224
|
notarizeTask.schedule();
|
|
@@ -2219,11 +2232,11 @@ var NotarizationPlugin = class {
|
|
|
2219
2232
|
allNotarized,
|
|
2220
2233
|
errors.wait()
|
|
2221
2234
|
]);
|
|
2222
|
-
log8("done",
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2235
|
+
log8("done", void 0, {
|
|
2236
|
+
F: __dxlog_file8,
|
|
2237
|
+
L: 163,
|
|
2238
|
+
S: this,
|
|
2239
|
+
C: (f, a) => f(...a)
|
|
2227
2240
|
});
|
|
2228
2241
|
} finally {
|
|
2229
2242
|
await ctx.dispose();
|
|
@@ -2232,7 +2245,7 @@ var NotarizationPlugin = class {
|
|
|
2232
2245
|
/**
|
|
2233
2246
|
* Called with credentials arriving from the control pipeline.
|
|
2234
2247
|
*/
|
|
2235
|
-
async
|
|
2248
|
+
async processCredential(credential) {
|
|
2236
2249
|
var _a;
|
|
2237
2250
|
if (!credential.id) {
|
|
2238
2251
|
return;
|
|
@@ -2242,7 +2255,7 @@ var NotarizationPlugin = class {
|
|
|
2242
2255
|
this._processCredentialsTriggers.delete(credential.id);
|
|
2243
2256
|
}
|
|
2244
2257
|
setWriter(writer) {
|
|
2245
|
-
|
|
2258
|
+
invariant9(!this._writer, "Writer already set.");
|
|
2246
2259
|
this._writer = writer;
|
|
2247
2260
|
}
|
|
2248
2261
|
async _waitUntilProcessed(id) {
|
|
@@ -2260,7 +2273,7 @@ var NotarizationPlugin = class {
|
|
|
2260
2273
|
throw new Error(WRITER_NOT_SET_ERROR_CODE);
|
|
2261
2274
|
}
|
|
2262
2275
|
for (const credential of (_a = request.credentials) != null ? _a : []) {
|
|
2263
|
-
|
|
2276
|
+
invariant9(credential.id, "Credential must have an id");
|
|
2264
2277
|
if (this._processedCredentials.has(credential.id)) {
|
|
2265
2278
|
continue;
|
|
2266
2279
|
}
|
|
@@ -2273,10 +2286,10 @@ var NotarizationPlugin = class {
|
|
|
2273
2286
|
log8("extension opened", {
|
|
2274
2287
|
peer: extension.localPeerId
|
|
2275
2288
|
}, {
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2289
|
+
F: __dxlog_file8,
|
|
2290
|
+
L: 212,
|
|
2291
|
+
S: this,
|
|
2292
|
+
C: (f, a) => f(...a)
|
|
2280
2293
|
});
|
|
2281
2294
|
this._extensions.add(extension);
|
|
2282
2295
|
this._extensionOpened.emit();
|
|
@@ -2285,10 +2298,10 @@ var NotarizationPlugin = class {
|
|
|
2285
2298
|
log8("extension closed", {
|
|
2286
2299
|
peer: extension.localPeerId
|
|
2287
2300
|
}, {
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2301
|
+
F: __dxlog_file8,
|
|
2302
|
+
L: 217,
|
|
2303
|
+
S: this,
|
|
2304
|
+
C: (f, a) => f(...a)
|
|
2292
2305
|
});
|
|
2293
2306
|
this._extensions.delete(extension);
|
|
2294
2307
|
},
|
|
@@ -2329,7 +2342,7 @@ var NotarizationTeleportExtension = class extends RpcExtension2 {
|
|
|
2329
2342
|
};
|
|
2330
2343
|
|
|
2331
2344
|
// packages/sdk/client-services/src/packlets/spaces/data-space.ts
|
|
2332
|
-
|
|
2345
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2333
2346
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
2334
2347
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
2335
2348
|
r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -2338,10 +2351,12 @@ var __decorate = function(decorators, target, key, desc) {
|
|
|
2338
2351
|
if (d = decorators[i])
|
|
2339
2352
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
2340
2353
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
2341
|
-
}
|
|
2354
|
+
}
|
|
2355
|
+
var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/data-space.ts";
|
|
2342
2356
|
var DataSpace = class DataSpace2 {
|
|
2343
2357
|
constructor(params) {
|
|
2344
2358
|
this._ctx = new Context6();
|
|
2359
|
+
this._notarizationPlugin = new NotarizationPlugin();
|
|
2345
2360
|
this._state = SpaceState.CLOSED;
|
|
2346
2361
|
/**
|
|
2347
2362
|
* Error for _state === SpaceState.ERROR.
|
|
@@ -2364,8 +2379,8 @@ var DataSpace = class DataSpace2 {
|
|
|
2364
2379
|
update: this._inner.stateUpdate,
|
|
2365
2380
|
authTimeout: AUTH_TIMEOUT2
|
|
2366
2381
|
});
|
|
2367
|
-
this._notarizationPluginConsumer = this._inner.spaceState.registerProcessor(new NotarizationPlugin());
|
|
2368
2382
|
this._cache = params.cache;
|
|
2383
|
+
this._state = params.initialState;
|
|
2369
2384
|
}
|
|
2370
2385
|
get key() {
|
|
2371
2386
|
return this._inner.key;
|
|
@@ -2387,25 +2402,36 @@ var DataSpace = class DataSpace2 {
|
|
|
2387
2402
|
return this._presence;
|
|
2388
2403
|
}
|
|
2389
2404
|
get notarizationPlugin() {
|
|
2390
|
-
return this.
|
|
2405
|
+
return this._notarizationPlugin;
|
|
2391
2406
|
}
|
|
2392
2407
|
get cache() {
|
|
2393
2408
|
return this._cache;
|
|
2394
2409
|
}
|
|
2395
2410
|
async open() {
|
|
2396
|
-
await this.
|
|
2397
|
-
|
|
2411
|
+
await this._open();
|
|
2412
|
+
}
|
|
2413
|
+
async _open() {
|
|
2414
|
+
await this._notarizationPlugin.open();
|
|
2415
|
+
await this._inner.spaceState.addCredentialProcessor(this._notarizationPlugin);
|
|
2398
2416
|
await this._inner.open();
|
|
2399
|
-
this._state = SpaceState.
|
|
2417
|
+
this._state = SpaceState.CONTROL_ONLY;
|
|
2418
|
+
this.stateUpdate.emit();
|
|
2419
|
+
this.metrics = {};
|
|
2400
2420
|
this.metrics.open = new Date();
|
|
2401
2421
|
}
|
|
2402
2422
|
async close() {
|
|
2423
|
+
await this._close();
|
|
2424
|
+
}
|
|
2425
|
+
async _close() {
|
|
2426
|
+
var _a, _b;
|
|
2427
|
+
await ((_b = (_a = this._callbacks).beforeClose) == null ? void 0 : _b.call(_a));
|
|
2403
2428
|
this._state = SpaceState.CLOSED;
|
|
2404
2429
|
await this._ctx.dispose();
|
|
2430
|
+
this._ctx = new Context6();
|
|
2405
2431
|
await this.authVerifier.close();
|
|
2406
2432
|
await this._inner.close();
|
|
2407
|
-
await this.
|
|
2408
|
-
await this.
|
|
2433
|
+
await this._inner.spaceState.removeCredentialProcessor(this._notarizationPlugin);
|
|
2434
|
+
await this._notarizationPlugin.close();
|
|
2409
2435
|
await this._presence.destroy();
|
|
2410
2436
|
}
|
|
2411
2437
|
async postMessage(channel, message) {
|
|
@@ -2425,18 +2451,18 @@ var DataSpace = class DataSpace2 {
|
|
|
2425
2451
|
} catch (err) {
|
|
2426
2452
|
if (err instanceof CancelledError) {
|
|
2427
2453
|
log9("Data pipeline initialization cancelled", err, {
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2454
|
+
F: __dxlog_file9,
|
|
2455
|
+
L: 193,
|
|
2456
|
+
S: this,
|
|
2457
|
+
C: (f, a) => f(...a)
|
|
2432
2458
|
});
|
|
2433
2459
|
return;
|
|
2434
2460
|
}
|
|
2435
2461
|
log9.error("Error initializing data pipeline", err, {
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2462
|
+
F: __dxlog_file9,
|
|
2463
|
+
L: 197,
|
|
2464
|
+
S: this,
|
|
2465
|
+
C: (f, a) => f(...a)
|
|
2440
2466
|
});
|
|
2441
2467
|
this._state = SpaceState.ERROR;
|
|
2442
2468
|
this.error = err;
|
|
@@ -2448,7 +2474,7 @@ var DataSpace = class DataSpace2 {
|
|
|
2448
2474
|
}
|
|
2449
2475
|
async initializeDataPipeline() {
|
|
2450
2476
|
var _a, _b, _c, _d;
|
|
2451
|
-
if (this._state !== SpaceState.
|
|
2477
|
+
if (this._state !== SpaceState.CONTROL_ONLY) {
|
|
2452
2478
|
throw new SystemError("Invalid operation");
|
|
2453
2479
|
}
|
|
2454
2480
|
this._state = SpaceState.INITIALIZING;
|
|
@@ -2458,37 +2484,39 @@ var DataSpace = class DataSpace2 {
|
|
|
2458
2484
|
});
|
|
2459
2485
|
this.metrics.controlPipelineReady = new Date();
|
|
2460
2486
|
await this._createWritableFeeds();
|
|
2461
|
-
log9("Writable feeds created",
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2487
|
+
log9("Writable feeds created", void 0, {
|
|
2488
|
+
F: __dxlog_file9,
|
|
2489
|
+
L: 221,
|
|
2490
|
+
S: this,
|
|
2491
|
+
C: (f, a) => f(...a)
|
|
2466
2492
|
});
|
|
2467
2493
|
this.stateUpdate.emit();
|
|
2468
|
-
this.notarizationPlugin.
|
|
2469
|
-
credential
|
|
2470
|
-
credential
|
|
2471
|
-
|
|
2472
|
-
|
|
2494
|
+
if (!this.notarizationPlugin.hasWriter) {
|
|
2495
|
+
this.notarizationPlugin.setWriter(createMappedFeedWriter((credential) => ({
|
|
2496
|
+
credential: {
|
|
2497
|
+
credential
|
|
2498
|
+
}
|
|
2499
|
+
}), this._inner.controlPipeline.writer));
|
|
2500
|
+
}
|
|
2473
2501
|
await this._inner.initializeDataPipeline();
|
|
2474
2502
|
this.metrics.dataPipelineOpen = new Date();
|
|
2475
2503
|
await cancelWithContext2(this._ctx, this._inner.dataPipeline.ensureEpochInitialized());
|
|
2476
|
-
log9("waiting for data pipeline to reach target timeframe",
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2504
|
+
log9("waiting for data pipeline to reach target timeframe", void 0, {
|
|
2505
|
+
F: __dxlog_file9,
|
|
2506
|
+
L: 242,
|
|
2507
|
+
S: this,
|
|
2508
|
+
C: (f, a) => f(...a)
|
|
2481
2509
|
});
|
|
2482
2510
|
await this._inner.dataPipeline.pipelineState.waitUntilReachedTargetTimeframe({
|
|
2483
2511
|
ctx: this._ctx,
|
|
2484
2512
|
breakOnStall: false
|
|
2485
2513
|
});
|
|
2486
2514
|
this.metrics.dataPipelineReady = new Date();
|
|
2487
|
-
log9("data pipeline ready",
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2515
|
+
log9("data pipeline ready", void 0, {
|
|
2516
|
+
F: __dxlog_file9,
|
|
2517
|
+
L: 251,
|
|
2518
|
+
S: this,
|
|
2519
|
+
C: (f, a) => f(...a)
|
|
2492
2520
|
});
|
|
2493
2521
|
await ((_b = (_a = this._callbacks).beforeReady) == null ? void 0 : _b.call(_a));
|
|
2494
2522
|
this._state = SpaceState.READY;
|
|
@@ -2566,17 +2594,46 @@ var DataSpace = class DataSpace2 {
|
|
|
2566
2594
|
}
|
|
2567
2595
|
}
|
|
2568
2596
|
}
|
|
2597
|
+
async activate() {
|
|
2598
|
+
if (this._state !== SpaceState.INACTIVE) {
|
|
2599
|
+
throw new SystemError("Invalid operation");
|
|
2600
|
+
}
|
|
2601
|
+
await this._metadataStore.setSpaceState(this.key, SpaceState.ACTIVE);
|
|
2602
|
+
await this._open();
|
|
2603
|
+
this.initializeDataPipelineAsync();
|
|
2604
|
+
}
|
|
2605
|
+
async deactivate() {
|
|
2606
|
+
if (this._state === SpaceState.INACTIVE) {
|
|
2607
|
+
throw new SystemError("Invalid operation");
|
|
2608
|
+
}
|
|
2609
|
+
await this._metadataStore.setSpaceState(this.key, SpaceState.INACTIVE);
|
|
2610
|
+
await this._close();
|
|
2611
|
+
this._state = SpaceState.INACTIVE;
|
|
2612
|
+
this.stateUpdate.emit();
|
|
2613
|
+
}
|
|
2569
2614
|
};
|
|
2570
|
-
|
|
2615
|
+
_ts_decorate([
|
|
2616
|
+
synchronized
|
|
2617
|
+
], DataSpace.prototype, "open", null);
|
|
2618
|
+
_ts_decorate([
|
|
2619
|
+
synchronized
|
|
2620
|
+
], DataSpace.prototype, "close", null);
|
|
2621
|
+
_ts_decorate([
|
|
2571
2622
|
timed(1e4)
|
|
2572
2623
|
], DataSpace.prototype, "_createWritableFeeds", null);
|
|
2573
|
-
|
|
2624
|
+
_ts_decorate([
|
|
2625
|
+
synchronized
|
|
2626
|
+
], DataSpace.prototype, "activate", null);
|
|
2627
|
+
_ts_decorate([
|
|
2628
|
+
synchronized
|
|
2629
|
+
], DataSpace.prototype, "deactivate", null);
|
|
2630
|
+
DataSpace = _ts_decorate([
|
|
2574
2631
|
trackLeaks("open", "close")
|
|
2575
2632
|
], DataSpace);
|
|
2576
2633
|
|
|
2577
2634
|
// packages/sdk/client-services/src/packlets/spaces/data-space-manager.ts
|
|
2578
|
-
import
|
|
2579
|
-
import { Event as Event6, synchronized, trackLeaks as trackLeaks2 } from "@dxos/async";
|
|
2635
|
+
import invariant10 from "tiny-invariant";
|
|
2636
|
+
import { Event as Event6, synchronized as synchronized2, trackLeaks as trackLeaks2 } from "@dxos/async";
|
|
2580
2637
|
import { cancelWithContext as cancelWithContext3, Context as Context7 } from "@dxos/context";
|
|
2581
2638
|
import { getCredentialAssertion as getCredentialAssertion2 } from "@dxos/credentials";
|
|
2582
2639
|
import { PublicKey as PublicKey8 } from "@dxos/keys";
|
|
@@ -2657,7 +2714,7 @@ var spaceGenesis = async (keyring, signingContext, space) => {
|
|
|
2657
2714
|
};
|
|
2658
2715
|
|
|
2659
2716
|
// packages/sdk/client-services/src/packlets/spaces/data-space-manager.ts
|
|
2660
|
-
|
|
2717
|
+
function _ts_decorate2(decorators, target, key, desc) {
|
|
2661
2718
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
2662
2719
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
2663
2720
|
r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -2666,7 +2723,8 @@ var __decorate2 = function(decorators, target, key, desc) {
|
|
|
2666
2723
|
if (d = decorators[i])
|
|
2667
2724
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
2668
2725
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
2669
|
-
}
|
|
2726
|
+
}
|
|
2727
|
+
var __dxlog_file10 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/data-space-manager.ts";
|
|
2670
2728
|
var DataSpaceManager = class DataSpaceManager2 {
|
|
2671
2729
|
constructor(_spaceManager, _metadataStore, _dataServiceSubscriptions, _keyring, _signingContext, _feedStore) {
|
|
2672
2730
|
this._spaceManager = _spaceManager;
|
|
@@ -2686,50 +2744,52 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2686
2744
|
return this._spaces;
|
|
2687
2745
|
}
|
|
2688
2746
|
async open() {
|
|
2689
|
-
log10("open",
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2747
|
+
log10("open", void 0, {
|
|
2748
|
+
F: __dxlog_file10,
|
|
2749
|
+
L: 80,
|
|
2750
|
+
S: this,
|
|
2751
|
+
C: (f, a) => f(...a)
|
|
2694
2752
|
});
|
|
2695
2753
|
log10.trace("dxos.echo.data-space-manager.open", trace4.begin({
|
|
2696
2754
|
id: this._instanceId
|
|
2697
2755
|
}), {
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2756
|
+
F: __dxlog_file10,
|
|
2757
|
+
L: 81,
|
|
2758
|
+
S: this,
|
|
2759
|
+
C: (f, a) => f(...a)
|
|
2702
2760
|
});
|
|
2703
2761
|
await this._metadataStore.load();
|
|
2704
2762
|
log10("metadata loaded", {
|
|
2705
2763
|
spaces: this._metadataStore.spaces.length
|
|
2706
2764
|
}, {
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
|
|
2765
|
+
F: __dxlog_file10,
|
|
2766
|
+
L: 83,
|
|
2767
|
+
S: this,
|
|
2768
|
+
C: (f, a) => f(...a)
|
|
2711
2769
|
});
|
|
2712
2770
|
for (const spaceMetadata of this._metadataStore.spaces) {
|
|
2713
2771
|
try {
|
|
2714
2772
|
log10("load space", {
|
|
2715
2773
|
spaceMetadata
|
|
2716
2774
|
}, {
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2775
|
+
F: __dxlog_file10,
|
|
2776
|
+
L: 87,
|
|
2777
|
+
S: this,
|
|
2778
|
+
C: (f, a) => f(...a)
|
|
2721
2779
|
});
|
|
2722
2780
|
const space = await this._constructSpace(spaceMetadata);
|
|
2723
|
-
|
|
2781
|
+
if (spaceMetadata.state !== SpaceState2.INACTIVE) {
|
|
2782
|
+
space.initializeDataPipelineAsync();
|
|
2783
|
+
}
|
|
2724
2784
|
} catch (err) {
|
|
2725
2785
|
log10.error("Error loading space", {
|
|
2726
2786
|
spaceMetadata,
|
|
2727
2787
|
err
|
|
2728
2788
|
}, {
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2789
|
+
F: __dxlog_file10,
|
|
2790
|
+
L: 93,
|
|
2791
|
+
S: this,
|
|
2792
|
+
C: (f, a) => f(...a)
|
|
2733
2793
|
});
|
|
2734
2794
|
}
|
|
2735
2795
|
}
|
|
@@ -2738,18 +2798,18 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2738
2798
|
log10.trace("dxos.echo.data-space-manager.open", trace4.end({
|
|
2739
2799
|
id: this._instanceId
|
|
2740
2800
|
}), {
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2801
|
+
F: __dxlog_file10,
|
|
2802
|
+
L: 99,
|
|
2803
|
+
S: this,
|
|
2804
|
+
C: (f, a) => f(...a)
|
|
2745
2805
|
});
|
|
2746
2806
|
}
|
|
2747
2807
|
async close() {
|
|
2748
|
-
log10("close",
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2808
|
+
log10("close", void 0, {
|
|
2809
|
+
F: __dxlog_file10,
|
|
2810
|
+
L: 104,
|
|
2811
|
+
S: this,
|
|
2812
|
+
C: (f, a) => f(...a)
|
|
2753
2813
|
});
|
|
2754
2814
|
this._isOpen = false;
|
|
2755
2815
|
await this._ctx.dispose();
|
|
@@ -2761,7 +2821,7 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2761
2821
|
* Creates a new space writing the genesis credentials to the control feed.
|
|
2762
2822
|
*/
|
|
2763
2823
|
async createSpace() {
|
|
2764
|
-
|
|
2824
|
+
invariant10(this._isOpen, "Not open.");
|
|
2765
2825
|
const spaceKey = await this._keyring.createKey();
|
|
2766
2826
|
const controlFeedKey = await this._keyring.createKey();
|
|
2767
2827
|
const dataFeedKey = await this._keyring.createKey();
|
|
@@ -2769,21 +2829,22 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2769
2829
|
key: spaceKey,
|
|
2770
2830
|
genesisFeedKey: controlFeedKey,
|
|
2771
2831
|
controlFeedKey,
|
|
2772
|
-
dataFeedKey
|
|
2832
|
+
dataFeedKey,
|
|
2833
|
+
state: SpaceState2.ACTIVE
|
|
2773
2834
|
};
|
|
2774
2835
|
log10("creating space...", {
|
|
2775
2836
|
spaceKey
|
|
2776
2837
|
}, {
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2838
|
+
F: __dxlog_file10,
|
|
2839
|
+
L: 129,
|
|
2840
|
+
S: this,
|
|
2841
|
+
C: (f, a) => f(...a)
|
|
2781
2842
|
});
|
|
2782
2843
|
const space = await this._constructSpace(metadata);
|
|
2783
2844
|
const credentials = await spaceGenesis(this._keyring, this._signingContext, space.inner);
|
|
2784
2845
|
await this._metadataStore.addSpace(metadata);
|
|
2785
2846
|
const memberCredential = credentials[1];
|
|
2786
|
-
|
|
2847
|
+
invariant10(getCredentialAssertion2(memberCredential)["@type"] === "dxos.halo.credentials.SpaceMember");
|
|
2787
2848
|
await this._signingContext.recordCredential(memberCredential);
|
|
2788
2849
|
await space.initializeDataPipeline();
|
|
2789
2850
|
this.updated.emit();
|
|
@@ -2794,13 +2855,13 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2794
2855
|
log10("accept space", {
|
|
2795
2856
|
opts
|
|
2796
2857
|
}, {
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
2858
|
+
F: __dxlog_file10,
|
|
2859
|
+
L: 148,
|
|
2860
|
+
S: this,
|
|
2861
|
+
C: (f, a) => f(...a)
|
|
2801
2862
|
});
|
|
2802
|
-
|
|
2803
|
-
|
|
2863
|
+
invariant10(this._isOpen, "Not open.");
|
|
2864
|
+
invariant10(!this._spaces.has(opts.spaceKey), "Space already exists.");
|
|
2804
2865
|
const metadata = {
|
|
2805
2866
|
key: opts.spaceKey,
|
|
2806
2867
|
genesisFeedKey: opts.genesisFeedKey,
|
|
@@ -2828,10 +2889,10 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2828
2889
|
log10("construct space", {
|
|
2829
2890
|
metadata
|
|
2830
2891
|
}, {
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2892
|
+
F: __dxlog_file10,
|
|
2893
|
+
L: 183,
|
|
2894
|
+
S: this,
|
|
2895
|
+
C: (f, a) => f(...a)
|
|
2835
2896
|
});
|
|
2836
2897
|
const gossip = new Gossip({
|
|
2837
2898
|
localPeerId: this._signingContext.deviceKey
|
|
@@ -2863,11 +2924,11 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2863
2924
|
session.addExtension("dxos.mesh.teleport.notarization", dataSpace.notarizationPlugin.createExtension());
|
|
2864
2925
|
},
|
|
2865
2926
|
onAuthFailure: () => {
|
|
2866
|
-
log10.warn("auth failure",
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2927
|
+
log10.warn("auth failure", void 0, {
|
|
2928
|
+
F: __dxlog_file10,
|
|
2929
|
+
L: 214,
|
|
2930
|
+
S: this,
|
|
2931
|
+
C: (f, a) => f(...a)
|
|
2871
2932
|
});
|
|
2872
2933
|
},
|
|
2873
2934
|
memberKey: this._signingContext.identityKey
|
|
@@ -2876,6 +2937,7 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2876
2937
|
dataFeed && space.setDataFeed(dataFeed);
|
|
2877
2938
|
const dataSpace = new DataSpace({
|
|
2878
2939
|
inner: space,
|
|
2940
|
+
initialState: metadata.state === SpaceState2.INACTIVE ? SpaceState2.INACTIVE : SpaceState2.CLOSED,
|
|
2879
2941
|
metadataStore: this._metadataStore,
|
|
2880
2942
|
gossip,
|
|
2881
2943
|
presence,
|
|
@@ -2887,31 +2949,44 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2887
2949
|
log10("before space ready", {
|
|
2888
2950
|
space: space.key
|
|
2889
2951
|
}, {
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2952
|
+
F: __dxlog_file10,
|
|
2953
|
+
L: 232,
|
|
2954
|
+
S: this,
|
|
2955
|
+
C: (f, a) => f(...a)
|
|
2894
2956
|
});
|
|
2895
|
-
this._dataServiceSubscriptions.registerSpace(space.key, dataSpace.dataPipeline.databaseHost.createDataServiceHost());
|
|
2957
|
+
await this._dataServiceSubscriptions.registerSpace(space.key, dataSpace.dataPipeline.databaseHost.createDataServiceHost());
|
|
2896
2958
|
},
|
|
2897
2959
|
afterReady: async () => {
|
|
2898
2960
|
log10("after space ready", {
|
|
2899
2961
|
space: space.key,
|
|
2900
2962
|
open: this._isOpen
|
|
2901
2963
|
}, {
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2964
|
+
F: __dxlog_file10,
|
|
2965
|
+
L: 239,
|
|
2966
|
+
S: this,
|
|
2967
|
+
C: (f, a) => f(...a)
|
|
2906
2968
|
});
|
|
2907
2969
|
if (this._isOpen) {
|
|
2908
2970
|
this.updated.emit();
|
|
2909
2971
|
}
|
|
2972
|
+
},
|
|
2973
|
+
beforeClose: async () => {
|
|
2974
|
+
log10("before space close", {
|
|
2975
|
+
space: space.key
|
|
2976
|
+
}, {
|
|
2977
|
+
F: __dxlog_file10,
|
|
2978
|
+
L: 245,
|
|
2979
|
+
S: this,
|
|
2980
|
+
C: (f, a) => f(...a)
|
|
2981
|
+
});
|
|
2982
|
+
await this._dataServiceSubscriptions.unregisterSpace(space.key);
|
|
2910
2983
|
}
|
|
2911
2984
|
},
|
|
2912
2985
|
cache: metadata.cache
|
|
2913
2986
|
});
|
|
2914
|
-
|
|
2987
|
+
if (metadata.state !== SpaceState2.INACTIVE) {
|
|
2988
|
+
await dataSpace.open();
|
|
2989
|
+
}
|
|
2915
2990
|
if (metadata.controlTimeframe) {
|
|
2916
2991
|
dataSpace.inner.controlPipeline.state.setTargetTimeframe(metadata.controlTimeframe);
|
|
2917
2992
|
}
|
|
@@ -2922,32 +2997,33 @@ var DataSpaceManager = class DataSpaceManager2 {
|
|
|
2922
2997
|
return dataSpace;
|
|
2923
2998
|
}
|
|
2924
2999
|
};
|
|
2925
|
-
|
|
2926
|
-
|
|
3000
|
+
_ts_decorate2([
|
|
3001
|
+
synchronized2
|
|
2927
3002
|
], DataSpaceManager.prototype, "open", null);
|
|
2928
|
-
|
|
2929
|
-
|
|
3003
|
+
_ts_decorate2([
|
|
3004
|
+
synchronized2
|
|
2930
3005
|
], DataSpaceManager.prototype, "close", null);
|
|
2931
|
-
|
|
2932
|
-
|
|
3006
|
+
_ts_decorate2([
|
|
3007
|
+
synchronized2
|
|
2933
3008
|
], DataSpaceManager.prototype, "createSpace", null);
|
|
2934
|
-
|
|
2935
|
-
|
|
3009
|
+
_ts_decorate2([
|
|
3010
|
+
synchronized2
|
|
2936
3011
|
], DataSpaceManager.prototype, "acceptSpace", null);
|
|
2937
|
-
DataSpaceManager =
|
|
3012
|
+
DataSpaceManager = _ts_decorate2([
|
|
2938
3013
|
trackLeaks2("open", "close")
|
|
2939
3014
|
], DataSpaceManager);
|
|
2940
3015
|
|
|
2941
3016
|
// packages/sdk/client-services/src/packlets/spaces/spaces-service.ts
|
|
2942
|
-
import { EventSubscriptions as EventSubscriptions2, scheduleTask as scheduleTask5 } from "@dxos/async";
|
|
3017
|
+
import { EventSubscriptions as EventSubscriptions2, UpdateScheduler, scheduleTask as scheduleTask5 } from "@dxos/async";
|
|
2943
3018
|
import { Stream as Stream9 } from "@dxos/codec-protobuf";
|
|
2944
|
-
import { raise
|
|
3019
|
+
import { raise } from "@dxos/debug";
|
|
2945
3020
|
import { SpaceNotFoundError } from "@dxos/echo-pipeline";
|
|
3021
|
+
import { ApiError } from "@dxos/errors";
|
|
2946
3022
|
import { log as log11 } from "@dxos/log";
|
|
2947
3023
|
import { encodeError } from "@dxos/protocols";
|
|
2948
|
-
import { SpaceMember as SpaceMember2 } from "@dxos/protocols/proto/dxos/client/services";
|
|
3024
|
+
import { SpaceMember as SpaceMember2, SpaceState as SpaceState3 } from "@dxos/protocols/proto/dxos/client/services";
|
|
2949
3025
|
import { humanize } from "@dxos/util";
|
|
2950
|
-
var
|
|
3026
|
+
var __dxlog_file11 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/spaces/spaces-service.ts";
|
|
2951
3027
|
var SpacesServiceImpl = class {
|
|
2952
3028
|
constructor(_identityManager, _spaceManager, _dataServiceSubscriptions, _getDataSpaceManager) {
|
|
2953
3029
|
this._identityManager = _identityManager;
|
|
@@ -2961,28 +3037,44 @@ var SpacesServiceImpl = class {
|
|
|
2961
3037
|
}
|
|
2962
3038
|
const dataSpaceManager = await this._getDataSpaceManager();
|
|
2963
3039
|
const space = await dataSpaceManager.createSpace();
|
|
2964
|
-
return this.
|
|
3040
|
+
return this._serializeSpace(space);
|
|
2965
3041
|
}
|
|
2966
|
-
async updateSpace(
|
|
2967
|
-
|
|
3042
|
+
async updateSpace({ spaceKey, state }) {
|
|
3043
|
+
var _a;
|
|
3044
|
+
const dataSpaceManager = await this._getDataSpaceManager();
|
|
3045
|
+
const space = (_a = dataSpaceManager.spaces.get(spaceKey)) != null ? _a : raise(new SpaceNotFoundError(spaceKey));
|
|
3046
|
+
if (state) {
|
|
3047
|
+
switch (state) {
|
|
3048
|
+
case SpaceState3.ACTIVE:
|
|
3049
|
+
await space.activate();
|
|
3050
|
+
break;
|
|
3051
|
+
case SpaceState3.INACTIVE:
|
|
3052
|
+
await space.deactivate();
|
|
3053
|
+
break;
|
|
3054
|
+
default:
|
|
3055
|
+
throw new ApiError("Invalid space state");
|
|
3056
|
+
}
|
|
3057
|
+
}
|
|
2968
3058
|
}
|
|
2969
3059
|
querySpaces() {
|
|
2970
3060
|
return new Stream9(({ next, ctx }) => {
|
|
2971
|
-
const
|
|
3061
|
+
const scheduler = new UpdateScheduler(ctx, async () => {
|
|
2972
3062
|
const dataSpaceManager = await this._getDataSpaceManager();
|
|
2973
|
-
const spaces = Array.from(dataSpaceManager.spaces.values()).map((space) => this.
|
|
3063
|
+
const spaces = Array.from(dataSpaceManager.spaces.values()).map((space) => this._serializeSpace(space));
|
|
2974
3064
|
log11("update", {
|
|
2975
3065
|
spaces
|
|
2976
3066
|
}, {
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
3067
|
+
F: __dxlog_file11,
|
|
3068
|
+
L: 78,
|
|
3069
|
+
S: this,
|
|
3070
|
+
C: (f, a) => f(...a)
|
|
2981
3071
|
});
|
|
2982
3072
|
next({
|
|
2983
3073
|
spaces
|
|
2984
3074
|
});
|
|
2985
|
-
}
|
|
3075
|
+
}, {
|
|
3076
|
+
maxFrequency: 2
|
|
3077
|
+
});
|
|
2986
3078
|
scheduleTask5(ctx, async () => {
|
|
2987
3079
|
const dataSpaceManager = await this._getDataSpaceManager();
|
|
2988
3080
|
const subscriptions = new EventSubscriptions2();
|
|
@@ -2990,21 +3082,21 @@ var SpacesServiceImpl = class {
|
|
|
2990
3082
|
const subscribeSpaces = () => {
|
|
2991
3083
|
subscriptions.clear();
|
|
2992
3084
|
for (const space of dataSpaceManager.spaces.values()) {
|
|
2993
|
-
subscriptions.add(space.stateUpdate.on(ctx,
|
|
2994
|
-
subscriptions.add(space.presence.updated.on(ctx,
|
|
2995
|
-
subscriptions.add(space.dataPipeline.onNewEpoch.on(ctx,
|
|
2996
|
-
space.inner.controlPipeline.state.timeframeUpdate.
|
|
3085
|
+
subscriptions.add(space.stateUpdate.on(ctx, () => scheduler.trigger()));
|
|
3086
|
+
subscriptions.add(space.presence.updated.on(ctx, () => scheduler.trigger()));
|
|
3087
|
+
subscriptions.add(space.dataPipeline.onNewEpoch.on(ctx, () => scheduler.trigger()));
|
|
3088
|
+
space.inner.controlPipeline.state.timeframeUpdate.on(ctx, () => scheduler.trigger());
|
|
2997
3089
|
if (space.dataPipeline.pipelineState) {
|
|
2998
|
-
subscriptions.add(space.dataPipeline.pipelineState.timeframeUpdate.
|
|
3090
|
+
subscriptions.add(space.dataPipeline.pipelineState.timeframeUpdate.on(ctx, () => scheduler.trigger()));
|
|
2999
3091
|
}
|
|
3000
3092
|
}
|
|
3001
3093
|
};
|
|
3002
3094
|
dataSpaceManager.updated.on(ctx, () => {
|
|
3003
3095
|
subscribeSpaces();
|
|
3004
|
-
|
|
3096
|
+
scheduler.trigger();
|
|
3005
3097
|
});
|
|
3006
3098
|
subscribeSpaces();
|
|
3007
|
-
|
|
3099
|
+
scheduler.trigger();
|
|
3008
3100
|
});
|
|
3009
3101
|
if (!this._identityManager.identity) {
|
|
3010
3102
|
next({
|
|
@@ -3036,13 +3128,13 @@ var SpacesServiceImpl = class {
|
|
|
3036
3128
|
return new Stream9(({ ctx, next }) => {
|
|
3037
3129
|
var _a;
|
|
3038
3130
|
const space = (_a = this._spaceManager.spaces.get(spaceKey)) != null ? _a : raise(new SpaceNotFoundError(spaceKey));
|
|
3039
|
-
const processor =
|
|
3040
|
-
|
|
3131
|
+
const processor = {
|
|
3132
|
+
processCredential: async (credential) => {
|
|
3041
3133
|
next(credential);
|
|
3042
3134
|
}
|
|
3043
|
-
}
|
|
3044
|
-
ctx.onDispose(() =>
|
|
3045
|
-
scheduleTask5(ctx, () =>
|
|
3135
|
+
};
|
|
3136
|
+
ctx.onDispose(() => space.spaceState.removeCredentialProcessor(processor));
|
|
3137
|
+
scheduleTask5(ctx, () => space.spaceState.addCredentialProcessor(processor));
|
|
3046
3138
|
});
|
|
3047
3139
|
}
|
|
3048
3140
|
async writeCredentials({ spaceKey, credentials }) {
|
|
@@ -3062,7 +3154,7 @@ var SpacesServiceImpl = class {
|
|
|
3062
3154
|
const space = (_a = dataSpaceManager.spaces.get(spaceKey)) != null ? _a : raise(new SpaceNotFoundError(spaceKey));
|
|
3063
3155
|
await space.createEpoch();
|
|
3064
3156
|
}
|
|
3065
|
-
|
|
3157
|
+
_serializeSpace(space) {
|
|
3066
3158
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
3067
3159
|
return {
|
|
3068
3160
|
spaceKey: space.key,
|
|
@@ -3102,7 +3194,7 @@ var SpacesServiceImpl = class {
|
|
|
3102
3194
|
var getChannelId = (channel) => `user-channel/${channel}`;
|
|
3103
3195
|
|
|
3104
3196
|
// packages/sdk/client-services/src/packlets/services/service-context.ts
|
|
3105
|
-
import
|
|
3197
|
+
import invariant11 from "tiny-invariant";
|
|
3106
3198
|
import { Trigger as Trigger5 } from "@dxos/async";
|
|
3107
3199
|
import { getCredentialAssertion as getCredentialAssertion3 } from "@dxos/credentials";
|
|
3108
3200
|
import { failUndefined as failUndefined3 } from "@dxos/debug";
|
|
@@ -3114,6 +3206,7 @@ import { log as log12 } from "@dxos/log";
|
|
|
3114
3206
|
import { STORAGE_VERSION, trace as trace5 } from "@dxos/protocols";
|
|
3115
3207
|
import { Invitation as Invitation5 } from "@dxos/protocols/proto/dxos/client/services";
|
|
3116
3208
|
import { BlobStore } from "@dxos/teleport-extension-object-sync";
|
|
3209
|
+
var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/services/service-context.ts";
|
|
3117
3210
|
var ServiceContext = class {
|
|
3118
3211
|
// prettier-ignore
|
|
3119
3212
|
constructor(storage, networkManager, signalManager, modelFactory) {
|
|
@@ -3157,17 +3250,17 @@ var ServiceContext = class {
|
|
|
3157
3250
|
log12.trace("dxos.sdk.service-context.open", trace5.begin({
|
|
3158
3251
|
id: this._instanceId
|
|
3159
3252
|
}), {
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3253
|
+
F: __dxlog_file12,
|
|
3254
|
+
L: 126,
|
|
3255
|
+
S: this,
|
|
3256
|
+
C: (f, a) => f(...a)
|
|
3164
3257
|
});
|
|
3165
3258
|
await this._checkStorageVersion();
|
|
3166
|
-
log12("opening...",
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3259
|
+
log12("opening...", void 0, {
|
|
3260
|
+
F: __dxlog_file12,
|
|
3261
|
+
L: 130,
|
|
3262
|
+
S: this,
|
|
3263
|
+
C: (f, a) => f(...a)
|
|
3171
3264
|
});
|
|
3172
3265
|
await this.signalManager.open();
|
|
3173
3266
|
await this.networkManager.open();
|
|
@@ -3176,42 +3269,44 @@ var ServiceContext = class {
|
|
|
3176
3269
|
if (this.identityManager.identity) {
|
|
3177
3270
|
await this._initialize();
|
|
3178
3271
|
}
|
|
3179
|
-
log12("opened",
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3272
|
+
log12("opened", void 0, {
|
|
3273
|
+
F: __dxlog_file12,
|
|
3274
|
+
L: 138,
|
|
3275
|
+
S: this,
|
|
3276
|
+
C: (f, a) => f(...a)
|
|
3184
3277
|
});
|
|
3185
3278
|
log12.trace("dxos.sdk.service-context.open", trace5.end({
|
|
3186
3279
|
id: this._instanceId
|
|
3187
3280
|
}), {
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3281
|
+
F: __dxlog_file12,
|
|
3282
|
+
L: 139,
|
|
3283
|
+
S: this,
|
|
3284
|
+
C: (f, a) => f(...a)
|
|
3192
3285
|
});
|
|
3193
3286
|
}
|
|
3194
3287
|
async close() {
|
|
3195
|
-
var _a
|
|
3196
|
-
log12("closing...",
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
});
|
|
3202
|
-
|
|
3203
|
-
|
|
3288
|
+
var _a;
|
|
3289
|
+
log12("closing...", void 0, {
|
|
3290
|
+
F: __dxlog_file12,
|
|
3291
|
+
L: 143,
|
|
3292
|
+
S: this,
|
|
3293
|
+
C: (f, a) => f(...a)
|
|
3294
|
+
});
|
|
3295
|
+
if (this._deviceSpaceSync && this.identityManager.identity) {
|
|
3296
|
+
await this.identityManager.identity.space.spaceState.removeCredentialProcessor(this._deviceSpaceSync);
|
|
3297
|
+
}
|
|
3298
|
+
await ((_a = this.dataSpaceManager) == null ? void 0 : _a.close());
|
|
3204
3299
|
await this.identityManager.close();
|
|
3205
3300
|
await this.spaceManager.close();
|
|
3206
3301
|
await this.feedStore.close();
|
|
3207
3302
|
await this.networkManager.close();
|
|
3208
3303
|
await this.signalManager.close();
|
|
3209
3304
|
this.dataServiceSubscriptions.clear();
|
|
3210
|
-
log12("closed",
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3305
|
+
log12("closed", void 0, {
|
|
3306
|
+
F: __dxlog_file12,
|
|
3307
|
+
L: 154,
|
|
3308
|
+
S: this,
|
|
3309
|
+
C: (f, a) => f(...a)
|
|
3215
3310
|
});
|
|
3216
3311
|
}
|
|
3217
3312
|
async createIdentity(params = {}) {
|
|
@@ -3221,7 +3316,7 @@ var ServiceContext = class {
|
|
|
3221
3316
|
}
|
|
3222
3317
|
getInvitationHandler(invitation) {
|
|
3223
3318
|
const factory = this._handlerFactories.get(invitation.kind);
|
|
3224
|
-
|
|
3319
|
+
invariant11(factory, `Unknown invitation kind: ${invitation.kind}`);
|
|
3225
3320
|
return factory(invitation);
|
|
3226
3321
|
}
|
|
3227
3322
|
async _acceptIdentity(params) {
|
|
@@ -3238,11 +3333,11 @@ var ServiceContext = class {
|
|
|
3238
3333
|
// Called when identity is created.
|
|
3239
3334
|
async _initialize() {
|
|
3240
3335
|
var _a;
|
|
3241
|
-
log12("initializing spaces...",
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3336
|
+
log12("initializing spaces...", void 0, {
|
|
3337
|
+
F: __dxlog_file12,
|
|
3338
|
+
L: 187,
|
|
3339
|
+
S: this,
|
|
3340
|
+
C: (f, a) => f(...a)
|
|
3246
3341
|
});
|
|
3247
3342
|
const identity = (_a = this.identityManager.identity) != null ? _a : failUndefined3();
|
|
3248
3343
|
const signingContext = {
|
|
@@ -3261,12 +3356,12 @@ var ServiceContext = class {
|
|
|
3261
3356
|
this.dataSpaceManager = new DataSpaceManager(this.spaceManager, this.metadataStore, this.dataServiceSubscriptions, this.keyring, signingContext, this.feedStore);
|
|
3262
3357
|
await this.dataSpaceManager.open();
|
|
3263
3358
|
this._handlerFactories.set(Invitation5.Kind.SPACE, (invitation) => {
|
|
3264
|
-
|
|
3359
|
+
invariant11(this.dataSpaceManager, "dataSpaceManager not initialized yet");
|
|
3265
3360
|
return new SpaceInvitationProtocol(this.dataSpaceManager, signingContext, this.keyring, invitation.spaceKey);
|
|
3266
3361
|
});
|
|
3267
3362
|
this.initialized.wake();
|
|
3268
|
-
this._deviceSpaceSync =
|
|
3269
|
-
|
|
3363
|
+
this._deviceSpaceSync = {
|
|
3364
|
+
processCredential: async (credential) => {
|
|
3270
3365
|
const assertion = getCredentialAssertion3(credential);
|
|
3271
3366
|
if (assertion["@type"] !== "dxos.halo.credentials.SpaceMember") {
|
|
3272
3367
|
return;
|
|
@@ -3278,10 +3373,10 @@ var ServiceContext = class {
|
|
|
3278
3373
|
log12("dataSpaceManager not initialized yet, ignoring space admission", {
|
|
3279
3374
|
details: assertion
|
|
3280
3375
|
}, {
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
3284
|
-
|
|
3376
|
+
F: __dxlog_file12,
|
|
3377
|
+
L: 226,
|
|
3378
|
+
S: this,
|
|
3379
|
+
C: (f, a) => f(...a)
|
|
3285
3380
|
});
|
|
3286
3381
|
return;
|
|
3287
3382
|
}
|
|
@@ -3289,10 +3384,10 @@ var ServiceContext = class {
|
|
|
3289
3384
|
log12("space already exists, ignoring space admission", {
|
|
3290
3385
|
details: assertion
|
|
3291
3386
|
}, {
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3387
|
+
F: __dxlog_file12,
|
|
3388
|
+
L: 230,
|
|
3389
|
+
S: this,
|
|
3390
|
+
C: (f, a) => f(...a)
|
|
3296
3391
|
});
|
|
3297
3392
|
return;
|
|
3298
3393
|
}
|
|
@@ -3300,26 +3395,26 @@ var ServiceContext = class {
|
|
|
3300
3395
|
log12("accepting space recorded in halo", {
|
|
3301
3396
|
details: assertion
|
|
3302
3397
|
}, {
|
|
3303
|
-
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
|
|
3398
|
+
F: __dxlog_file12,
|
|
3399
|
+
L: 235,
|
|
3400
|
+
S: this,
|
|
3401
|
+
C: (f, a) => f(...a)
|
|
3307
3402
|
});
|
|
3308
3403
|
await this.dataSpaceManager.acceptSpace({
|
|
3309
3404
|
spaceKey: assertion.spaceKey,
|
|
3310
3405
|
genesisFeedKey: assertion.genesisFeedKey
|
|
3311
3406
|
});
|
|
3312
3407
|
} catch (err) {
|
|
3313
|
-
log12.catch(err,
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3408
|
+
log12.catch(err, void 0, {
|
|
3409
|
+
F: __dxlog_file12,
|
|
3410
|
+
L: 241,
|
|
3411
|
+
S: this,
|
|
3412
|
+
C: (f, a) => f(...a)
|
|
3318
3413
|
});
|
|
3319
3414
|
}
|
|
3320
3415
|
}
|
|
3321
|
-
}
|
|
3322
|
-
await this._deviceSpaceSync
|
|
3416
|
+
};
|
|
3417
|
+
await identity.space.spaceState.addCredentialProcessor(this._deviceSpaceSync);
|
|
3323
3418
|
}
|
|
3324
3419
|
};
|
|
3325
3420
|
|
|
@@ -3327,7 +3422,7 @@ var ServiceContext = class {
|
|
|
3327
3422
|
import { asyncTimeout, Trigger as Trigger6 } from "@dxos/async";
|
|
3328
3423
|
import { RESOURCE_LOCK_TIMEOUT } from "@dxos/client-protocol";
|
|
3329
3424
|
import { log as log13, logInfo } from "@dxos/log";
|
|
3330
|
-
|
|
3425
|
+
function _ts_decorate3(decorators, target, key, desc) {
|
|
3331
3426
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3332
3427
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
3333
3428
|
r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -3336,7 +3431,8 @@ var __decorate3 = function(decorators, target, key, desc) {
|
|
|
3336
3431
|
if (d = decorators[i])
|
|
3337
3432
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
3338
3433
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
3339
|
-
}
|
|
3434
|
+
}
|
|
3435
|
+
var __dxlog_file13 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/locks/browser.ts";
|
|
3340
3436
|
var Message;
|
|
3341
3437
|
(function(Message2) {
|
|
3342
3438
|
Message2["ACQUIRING"] = "acquiring";
|
|
@@ -3358,32 +3454,32 @@ var Lock = class {
|
|
|
3358
3454
|
message: Message.ACQUIRING
|
|
3359
3455
|
});
|
|
3360
3456
|
try {
|
|
3361
|
-
log13("aquiring lock...",
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3457
|
+
log13("aquiring lock...", void 0, {
|
|
3458
|
+
F: __dxlog_file13,
|
|
3459
|
+
L: 42,
|
|
3460
|
+
S: this,
|
|
3461
|
+
C: (f, a) => f(...a)
|
|
3366
3462
|
});
|
|
3367
3463
|
await asyncTimeout(this._requestLock(), RESOURCE_LOCK_TIMEOUT);
|
|
3368
|
-
log13("acquired lock",
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3464
|
+
log13("acquired lock", void 0, {
|
|
3465
|
+
F: __dxlog_file13,
|
|
3466
|
+
L: 44,
|
|
3467
|
+
S: this,
|
|
3468
|
+
C: (f, a) => f(...a)
|
|
3373
3469
|
});
|
|
3374
3470
|
} catch (e) {
|
|
3375
|
-
log13("stealing lock...",
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3471
|
+
log13("stealing lock...", void 0, {
|
|
3472
|
+
F: __dxlog_file13,
|
|
3473
|
+
L: 46,
|
|
3474
|
+
S: this,
|
|
3475
|
+
C: (f, a) => f(...a)
|
|
3380
3476
|
});
|
|
3381
3477
|
await this._requestLock(true);
|
|
3382
|
-
log13("stolen lock",
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3478
|
+
log13("stolen lock", void 0, {
|
|
3479
|
+
F: __dxlog_file13,
|
|
3480
|
+
L: 48,
|
|
3481
|
+
S: this,
|
|
3482
|
+
C: (f, a) => f(...a)
|
|
3387
3483
|
});
|
|
3388
3484
|
}
|
|
3389
3485
|
}
|
|
@@ -3399,10 +3495,10 @@ var Lock = class {
|
|
|
3399
3495
|
log13("requesting lock...", {
|
|
3400
3496
|
steal
|
|
3401
3497
|
}, {
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3498
|
+
F: __dxlog_file13,
|
|
3499
|
+
L: 63,
|
|
3500
|
+
S: this,
|
|
3501
|
+
C: (f, a) => f(...a)
|
|
3406
3502
|
});
|
|
3407
3503
|
const acquired = new Trigger6();
|
|
3408
3504
|
void navigator.locks.request(this._lockKey, {
|
|
@@ -3413,18 +3509,18 @@ var Lock = class {
|
|
|
3413
3509
|
acquired.wake();
|
|
3414
3510
|
this._releaseTrigger = new Trigger6();
|
|
3415
3511
|
await this._releaseTrigger.wait();
|
|
3416
|
-
log13("releasing lock...",
|
|
3417
|
-
|
|
3418
|
-
|
|
3419
|
-
|
|
3420
|
-
|
|
3512
|
+
log13("releasing lock...", void 0, {
|
|
3513
|
+
F: __dxlog_file13,
|
|
3514
|
+
L: 72,
|
|
3515
|
+
S: this,
|
|
3516
|
+
C: (f, a) => f(...a)
|
|
3421
3517
|
});
|
|
3422
3518
|
await ((_b = this._onRelease) == null ? void 0 : _b.call(this));
|
|
3423
|
-
log13("released lock",
|
|
3424
|
-
|
|
3425
|
-
|
|
3426
|
-
|
|
3427
|
-
|
|
3519
|
+
log13("released lock", void 0, {
|
|
3520
|
+
F: __dxlog_file13,
|
|
3521
|
+
L: 74,
|
|
3522
|
+
S: this,
|
|
3523
|
+
C: (f, a) => f(...a)
|
|
3428
3524
|
});
|
|
3429
3525
|
}).catch(async () => {
|
|
3430
3526
|
var _a;
|
|
@@ -3434,14 +3530,14 @@ var Lock = class {
|
|
|
3434
3530
|
log13("recieved lock", {
|
|
3435
3531
|
steal
|
|
3436
3532
|
}, {
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
|
|
3440
|
-
|
|
3533
|
+
F: __dxlog_file13,
|
|
3534
|
+
L: 81,
|
|
3535
|
+
S: this,
|
|
3536
|
+
C: (f, a) => f(...a)
|
|
3441
3537
|
});
|
|
3442
3538
|
}
|
|
3443
3539
|
};
|
|
3444
|
-
|
|
3540
|
+
_ts_decorate3([
|
|
3445
3541
|
logInfo
|
|
3446
3542
|
], Lock.prototype, "lockKey", null);
|
|
3447
3543
|
var isLocked = (lockPath) => {
|
|
@@ -3522,16 +3618,19 @@ var ServiceRegistry = class {
|
|
|
3522
3618
|
};
|
|
3523
3619
|
|
|
3524
3620
|
// packages/sdk/client-services/src/packlets/services/service-host.ts
|
|
3525
|
-
import
|
|
3526
|
-
import { Event as Event8 } from "@dxos/async";
|
|
3527
|
-
import { clientServiceBundle
|
|
3621
|
+
import invariant12 from "tiny-invariant";
|
|
3622
|
+
import { Event as Event8, synchronized as synchronized3 } from "@dxos/async";
|
|
3623
|
+
import { clientServiceBundle } from "@dxos/client-protocol";
|
|
3624
|
+
import { DocumentModel } from "@dxos/document-model";
|
|
3528
3625
|
import { DataServiceImpl } from "@dxos/echo-pipeline";
|
|
3529
3626
|
import { PublicKey as PublicKey10 } from "@dxos/keys";
|
|
3530
3627
|
import { log as log15 } from "@dxos/log";
|
|
3531
3628
|
import { WebsocketSignalManager } from "@dxos/messaging";
|
|
3629
|
+
import { ModelFactory } from "@dxos/model-factory";
|
|
3532
3630
|
import { createWebRTCTransportFactory, NetworkManager } from "@dxos/network-manager";
|
|
3533
3631
|
import { trace as trace6 } from "@dxos/protocols";
|
|
3534
3632
|
import { SystemStatus } from "@dxos/protocols/proto/dxos/client/services";
|
|
3633
|
+
import { TextModel } from "@dxos/text-model";
|
|
3535
3634
|
|
|
3536
3635
|
// packages/sdk/client-services/src/packlets/devices/devices-service.ts
|
|
3537
3636
|
import { EventSubscriptions as EventSubscriptions3 } from "@dxos/async";
|
|
@@ -3607,7 +3706,7 @@ var LoggingServiceImpl = class {
|
|
|
3607
3706
|
if (LOG_PROCESSING > 0) {
|
|
3608
3707
|
return;
|
|
3609
3708
|
}
|
|
3610
|
-
if (((_a = entry2.meta) == null ? void 0 : _a.
|
|
3709
|
+
if (((_a = entry2.meta) == null ? void 0 : _a.F.includes("logging-service")) || entry2.context && Object.values(entry2.context).some((value) => typeof value === "string" && value.includes("LoggingService"))) {
|
|
3611
3710
|
return;
|
|
3612
3711
|
}
|
|
3613
3712
|
if (!shouldLog(entry2, request)) {
|
|
@@ -3619,8 +3718,8 @@ var LoggingServiceImpl = class {
|
|
|
3619
3718
|
timestamp: new Date(),
|
|
3620
3719
|
meta: {
|
|
3621
3720
|
// TODO(dmaretskyi): Fix proto.
|
|
3622
|
-
file: (_c = (_b = entry2.meta) == null ? void 0 : _b.
|
|
3623
|
-
line: (_e = (_d = entry2.meta) == null ? void 0 : _d.
|
|
3721
|
+
file: (_c = (_b = entry2.meta) == null ? void 0 : _b.F) != null ? _c : "",
|
|
3722
|
+
line: (_e = (_d = entry2.meta) == null ? void 0 : _d.L) != null ? _e : 0
|
|
3624
3723
|
}
|
|
3625
3724
|
};
|
|
3626
3725
|
try {
|
|
@@ -3650,7 +3749,7 @@ var shouldLog = (entry2, request) => {
|
|
|
3650
3749
|
} else {
|
|
3651
3750
|
return request.filters.some((filter) => {
|
|
3652
3751
|
var _a2, _b;
|
|
3653
|
-
return matchFilter(filter, entry2.level, (_b = (_a2 = entry2.meta) == null ? void 0 : _a2.
|
|
3752
|
+
return matchFilter(filter, entry2.level, (_b = (_a2 = entry2.meta) == null ? void 0 : _a2.F) != null ? _b : "", options);
|
|
3654
3753
|
});
|
|
3655
3754
|
}
|
|
3656
3755
|
};
|
|
@@ -3727,6 +3826,20 @@ var SystemServiceImpl = class {
|
|
|
3727
3826
|
};
|
|
3728
3827
|
|
|
3729
3828
|
// packages/sdk/client-services/src/packlets/services/service-host.ts
|
|
3829
|
+
function _ts_decorate4(decorators, target, key, desc) {
|
|
3830
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3831
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
3832
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
3833
|
+
else
|
|
3834
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
3835
|
+
if (d = decorators[i])
|
|
3836
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
3837
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
3838
|
+
}
|
|
3839
|
+
var __dxlog_file14 = "/home/runner/work/dxos/dxos/packages/sdk/client-services/src/packlets/services/service-host.ts";
|
|
3840
|
+
var createDefaultModelFactory = () => {
|
|
3841
|
+
return new ModelFactory().registerModel(DocumentModel).registerModel(TextModel);
|
|
3842
|
+
};
|
|
3730
3843
|
var ClientServicesHost = class {
|
|
3731
3844
|
constructor({
|
|
3732
3845
|
config,
|
|
@@ -3737,13 +3850,15 @@ var ClientServicesHost = class {
|
|
|
3737
3850
|
connectionLog,
|
|
3738
3851
|
storage,
|
|
3739
3852
|
// TODO(wittjosiah): Turn this on by default.
|
|
3740
|
-
lockKey
|
|
3853
|
+
lockKey,
|
|
3854
|
+
callbacks
|
|
3741
3855
|
} = {}) {
|
|
3742
3856
|
this._statusUpdate = new Event8();
|
|
3743
3857
|
this._opening = false;
|
|
3744
3858
|
this._open = false;
|
|
3745
3859
|
this._storage = storage;
|
|
3746
3860
|
this._modelFactory = modelFactory;
|
|
3861
|
+
this._callbacks = callbacks;
|
|
3747
3862
|
if (config) {
|
|
3748
3863
|
this.initialize({
|
|
3749
3864
|
config,
|
|
@@ -3802,9 +3917,9 @@ var ClientServicesHost = class {
|
|
|
3802
3917
|
*/
|
|
3803
3918
|
initialize({ config, ...options }) {
|
|
3804
3919
|
var _a, _b, _c;
|
|
3805
|
-
|
|
3920
|
+
invariant12(!this._open, "service host is open");
|
|
3806
3921
|
if (config) {
|
|
3807
|
-
|
|
3922
|
+
invariant12(!this._config, "config already set");
|
|
3808
3923
|
this._config = config;
|
|
3809
3924
|
if (!this._storage) {
|
|
3810
3925
|
this._storage = createStorageObjects(config.get("runtime.client.storage", {})).storage;
|
|
@@ -3814,7 +3929,7 @@ var ClientServicesHost = class {
|
|
|
3814
3929
|
iceServers: (_a = this._config) == null ? void 0 : _a.get("runtime.services.ice")
|
|
3815
3930
|
}), signalManager = new WebsocketSignalManager((_c = (_b = this._config) == null ? void 0 : _b.get("runtime.services.signaling")) != null ? _c : []) } = options;
|
|
3816
3931
|
this._signalManager = signalManager;
|
|
3817
|
-
|
|
3932
|
+
invariant12(!this._networkManager, "network manager already set");
|
|
3818
3933
|
this._networkManager = new NetworkManager({
|
|
3819
3934
|
log: connectionLog,
|
|
3820
3935
|
transportFactory,
|
|
@@ -3830,23 +3945,23 @@ var ClientServicesHost = class {
|
|
|
3830
3945
|
log15.trace("dxos.sdk.client-services-host.open", trace6.begin({
|
|
3831
3946
|
id: traceId
|
|
3832
3947
|
}), {
|
|
3833
|
-
|
|
3834
|
-
|
|
3835
|
-
|
|
3836
|
-
|
|
3837
|
-
});
|
|
3838
|
-
|
|
3839
|
-
|
|
3840
|
-
|
|
3841
|
-
|
|
3948
|
+
F: __dxlog_file14,
|
|
3949
|
+
L: 203,
|
|
3950
|
+
S: this,
|
|
3951
|
+
C: (f, a) => f(...a)
|
|
3952
|
+
});
|
|
3953
|
+
invariant12(this._config, "config not set");
|
|
3954
|
+
invariant12(this._storage, "storage not set");
|
|
3955
|
+
invariant12(this._signalManager, "signal manager not set");
|
|
3956
|
+
invariant12(this._networkManager, "network manager not set");
|
|
3842
3957
|
this._opening = true;
|
|
3843
3958
|
log15("opening...", {
|
|
3844
3959
|
lockKey: (_a = this._resourceLock) == null ? void 0 : _a.lockKey
|
|
3845
3960
|
}, {
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
3849
|
-
|
|
3961
|
+
F: __dxlog_file14,
|
|
3962
|
+
L: 211,
|
|
3963
|
+
S: this,
|
|
3964
|
+
C: (f, a) => f(...a)
|
|
3850
3965
|
});
|
|
3851
3966
|
await ((_b = this._resourceLock) == null ? void 0 : _b.acquire());
|
|
3852
3967
|
await this._loggingService.open();
|
|
@@ -3878,18 +3993,18 @@ var ClientServicesHost = class {
|
|
|
3878
3993
|
log15("opened", {
|
|
3879
3994
|
deviceKey
|
|
3880
3995
|
}, {
|
|
3881
|
-
|
|
3882
|
-
|
|
3883
|
-
|
|
3884
|
-
|
|
3996
|
+
F: __dxlog_file14,
|
|
3997
|
+
L: 266,
|
|
3998
|
+
S: this,
|
|
3999
|
+
C: (f, a) => f(...a)
|
|
3885
4000
|
});
|
|
3886
4001
|
log15.trace("dxos.sdk.client-services-host.open", trace6.end({
|
|
3887
4002
|
id: traceId
|
|
3888
4003
|
}), {
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
4004
|
+
F: __dxlog_file14,
|
|
4005
|
+
L: 267,
|
|
4006
|
+
S: this,
|
|
4007
|
+
C: (f, a) => f(...a)
|
|
3893
4008
|
});
|
|
3894
4009
|
}
|
|
3895
4010
|
async close() {
|
|
@@ -3901,10 +4016,10 @@ var ClientServicesHost = class {
|
|
|
3901
4016
|
log15("closing...", {
|
|
3902
4017
|
deviceKey
|
|
3903
4018
|
}, {
|
|
3904
|
-
|
|
3905
|
-
|
|
3906
|
-
|
|
3907
|
-
|
|
4019
|
+
F: __dxlog_file14,
|
|
4020
|
+
L: 277,
|
|
4021
|
+
S: this,
|
|
4022
|
+
C: (f, a) => f(...a)
|
|
3908
4023
|
});
|
|
3909
4024
|
this._serviceRegistry.setServices({
|
|
3910
4025
|
SystemService: this._systemService
|
|
@@ -3916,47 +4031,54 @@ var ClientServicesHost = class {
|
|
|
3916
4031
|
log15("closed", {
|
|
3917
4032
|
deviceKey
|
|
3918
4033
|
}, {
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
|
|
3922
|
-
|
|
4034
|
+
F: __dxlog_file14,
|
|
4035
|
+
L: 283,
|
|
4036
|
+
S: this,
|
|
4037
|
+
C: (f, a) => f(...a)
|
|
3923
4038
|
});
|
|
3924
4039
|
}
|
|
3925
4040
|
async reset() {
|
|
3926
|
-
var _a;
|
|
4041
|
+
var _a, _b, _c;
|
|
3927
4042
|
const traceId = PublicKey10.random().toHex();
|
|
3928
4043
|
log15.trace("dxos.sdk.client-services-host.reset", trace6.begin({
|
|
3929
4044
|
id: traceId
|
|
3930
4045
|
}), {
|
|
3931
|
-
|
|
3932
|
-
|
|
3933
|
-
|
|
3934
|
-
|
|
4046
|
+
F: __dxlog_file14,
|
|
4047
|
+
L: 288,
|
|
4048
|
+
S: this,
|
|
4049
|
+
C: (f, a) => f(...a)
|
|
3935
4050
|
});
|
|
3936
|
-
log15("resetting...",
|
|
3937
|
-
|
|
3938
|
-
|
|
3939
|
-
|
|
3940
|
-
|
|
4051
|
+
log15("resetting...", void 0, {
|
|
4052
|
+
F: __dxlog_file14,
|
|
4053
|
+
L: 290,
|
|
4054
|
+
S: this,
|
|
4055
|
+
C: (f, a) => f(...a)
|
|
3941
4056
|
});
|
|
3942
4057
|
await ((_a = this._serviceContext) == null ? void 0 : _a.close());
|
|
3943
4058
|
await this._storage.reset();
|
|
3944
|
-
log15("reset",
|
|
3945
|
-
|
|
3946
|
-
|
|
3947
|
-
|
|
3948
|
-
|
|
4059
|
+
log15("reset", void 0, {
|
|
4060
|
+
F: __dxlog_file14,
|
|
4061
|
+
L: 293,
|
|
4062
|
+
S: this,
|
|
4063
|
+
C: (f, a) => f(...a)
|
|
3949
4064
|
});
|
|
3950
4065
|
log15.trace("dxos.sdk.client-services-host.reset", trace6.end({
|
|
3951
4066
|
id: traceId
|
|
3952
4067
|
}), {
|
|
3953
|
-
|
|
3954
|
-
|
|
3955
|
-
|
|
3956
|
-
|
|
4068
|
+
F: __dxlog_file14,
|
|
4069
|
+
L: 294,
|
|
4070
|
+
S: this,
|
|
4071
|
+
C: (f, a) => f(...a)
|
|
3957
4072
|
});
|
|
4073
|
+
await ((_c = (_b = this._callbacks) == null ? void 0 : _b.onReset) == null ? void 0 : _c.call(_b));
|
|
3958
4074
|
}
|
|
3959
4075
|
};
|
|
4076
|
+
_ts_decorate4([
|
|
4077
|
+
synchronized3
|
|
4078
|
+
], ClientServicesHost.prototype, "open", null);
|
|
4079
|
+
_ts_decorate4([
|
|
4080
|
+
synchronized3
|
|
4081
|
+
], ClientServicesHost.prototype, "close", null);
|
|
3960
4082
|
|
|
3961
4083
|
export {
|
|
3962
4084
|
subscribeToFeeds,
|
|
@@ -3986,6 +4108,7 @@ export {
|
|
|
3986
4108
|
isLocked,
|
|
3987
4109
|
createStorageObjects,
|
|
3988
4110
|
ServiceRegistry,
|
|
4111
|
+
createDefaultModelFactory,
|
|
3989
4112
|
ClientServicesHost
|
|
3990
4113
|
};
|
|
3991
|
-
//# sourceMappingURL=chunk-
|
|
4114
|
+
//# sourceMappingURL=chunk-EYXOVYW5.mjs.map
|