@dxos/credentials 0.8.4-main.b97322e → 0.8.4-main.bcb3aa67d6
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/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
- package/dist/lib/{browser → neutral}/index.mjs +129 -64
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/{browser → neutral}/meta.json +1 -1
- package/dist/types/src/credentials/assertions.d.ts +1 -1
- package/dist/types/src/credentials/assertions.d.ts.map +1 -1
- package/dist/types/src/credentials/credential-factory.d.ts +4 -4
- package/dist/types/src/credentials/credential-factory.d.ts.map +1 -1
- package/dist/types/src/credentials/credential-generator.d.ts +3 -3
- package/dist/types/src/credentials/credential-generator.d.ts.map +1 -1
- package/dist/types/src/credentials/signing.d.ts.map +1 -1
- package/dist/types/src/did.d.ts +1 -1
- package/dist/types/src/did.d.ts.map +1 -1
- package/dist/types/src/presentations/presentation.d.ts.map +1 -1
- package/dist/types/src/presentations/verifier.d.ts.map +1 -1
- package/dist/types/src/processor/device-state-machine.d.ts +2 -2
- package/dist/types/src/processor/device-state-machine.d.ts.map +1 -1
- package/dist/types/src/processor/profile-state-machine.d.ts +2 -2
- package/dist/types/src/processor/profile-state-machine.d.ts.map +1 -1
- package/dist/types/src/state-machine/member-state-machine.d.ts +1 -1
- package/dist/types/src/state-machine/member-state-machine.d.ts.map +1 -1
- package/dist/types/src/state-machine/space-state-machine.d.ts +8 -2
- package/dist/types/src/state-machine/space-state-machine.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/docs/README.md +17 -17
- package/moon.yml +2 -1
- package/package.json +20 -20
- package/src/credentials/assertions.ts +1 -1
- package/src/credentials/credential-factory.ts +5 -5
- package/src/credentials/credential-generator.ts +6 -1
- package/src/credentials/signing.ts +12 -0
- package/src/did.ts +2 -2
- package/src/presentations/json-encoding.test.ts +3 -1
- package/src/presentations/presentation.ts +2 -1
- package/src/presentations/verifier.test.ts +2 -1
- package/src/presentations/verifier.ts +2 -1
- package/src/processor/device-state-machine.ts +4 -3
- package/src/processor/profile-state-machine.ts +4 -3
- package/src/state-machine/invitation-state-machine.test.ts +3 -2
- package/src/state-machine/member-state-machine.test.ts +2 -1
- package/src/state-machine/member-state-machine.ts +1 -1
- package/src/state-machine/space-state-machine.test.ts +245 -2
- package/src/state-machine/space-state-machine.ts +34 -9
- package/vitest.config.ts +7 -6
- package/.swc/plugins/v7_linux_x86_64_13.0.0/f45bdff002284d9e8f9ef3f0be909de12da36c049cbcf261ac78fc00abb09a2d +0 -0
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -1870
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
|
Binary file
|
|
@@ -2,7 +2,7 @@ import "@dxos/node-std/globals";
|
|
|
2
2
|
|
|
3
3
|
// src/did.ts
|
|
4
4
|
import { subtleCrypto } from "@dxos/crypto";
|
|
5
|
-
import {
|
|
5
|
+
import { IdentityDid, PublicKey } from "@dxos/keys";
|
|
6
6
|
import { ComplexMap } from "@dxos/util";
|
|
7
7
|
var IDENTITY_DIDS_CACHE = new ComplexMap(PublicKey.hash);
|
|
8
8
|
var createDidFromIdentityKey = async (identityKey) => {
|
|
@@ -68,6 +68,14 @@ var getCredentialProofPayload = (credential) => {
|
|
|
68
68
|
delete copy.parentCredentialIds;
|
|
69
69
|
}
|
|
70
70
|
delete copy.id;
|
|
71
|
+
const assertion = copy.subject?.assertion;
|
|
72
|
+
if (assertion) {
|
|
73
|
+
for (const key of Object.keys(assertion)) {
|
|
74
|
+
if (Array.isArray(assertion[key]) && assertion[key].length === 0) {
|
|
75
|
+
delete assertion[key];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
71
79
|
return Buffer.from(canonicalStringify(copy));
|
|
72
80
|
};
|
|
73
81
|
var canonicalStringify = (obj) => stableStringify(obj, {
|
|
@@ -314,9 +322,12 @@ var createCredentialSignerWithChain = (signer, chain, signingKey) => ({
|
|
|
314
322
|
});
|
|
315
323
|
|
|
316
324
|
// src/credentials/credential-generator.ts
|
|
317
|
-
import { AdmittedFeed, SpaceMember } from "@dxos/protocols/proto/dxos/halo/credentials";
|
|
325
|
+
import { AdmittedFeed, MembershipPolicy, SpaceMember } from "@dxos/protocols/proto/dxos/halo/credentials";
|
|
318
326
|
import { Timeframe as Timeframe2 } from "@dxos/timeframe";
|
|
319
327
|
var CredentialGenerator = class {
|
|
328
|
+
_signer;
|
|
329
|
+
_identityKey;
|
|
330
|
+
_deviceKey;
|
|
320
331
|
constructor(_signer, _identityKey, _deviceKey) {
|
|
321
332
|
this._signer = _signer;
|
|
322
333
|
this._identityKey = _identityKey;
|
|
@@ -325,7 +336,7 @@ var CredentialGenerator = class {
|
|
|
325
336
|
/**
|
|
326
337
|
* Create genesis messages for new Space.
|
|
327
338
|
*/
|
|
328
|
-
async createSpaceGenesis(spaceKey, controlKey, creatorProfile) {
|
|
339
|
+
async createSpaceGenesis(spaceKey, controlKey, creatorProfile, membershipPolicy = MembershipPolicy.INVITE) {
|
|
329
340
|
return [
|
|
330
341
|
await createCredential({
|
|
331
342
|
signer: this._signer,
|
|
@@ -333,7 +344,8 @@ var CredentialGenerator = class {
|
|
|
333
344
|
subject: spaceKey,
|
|
334
345
|
assertion: {
|
|
335
346
|
"@type": "dxos.halo.credentials.SpaceGenesis",
|
|
336
|
-
spaceKey
|
|
347
|
+
spaceKey,
|
|
348
|
+
membershipPolicy
|
|
337
349
|
}
|
|
338
350
|
}),
|
|
339
351
|
await createCredential({
|
|
@@ -460,7 +472,7 @@ var createDeviceAuthorization = async (signer, identityKey, deviceKey) => {
|
|
|
460
472
|
credential
|
|
461
473
|
}));
|
|
462
474
|
};
|
|
463
|
-
var createAdmissionCredentials = async (signer, identityKey, spaceKey, genesisFeedKey, role = SpaceMember.Role.ADMIN, membershipChainHeads = [], profile, invitationCredentialId) => {
|
|
475
|
+
var createAdmissionCredentials = async (signer, identityKey, spaceKey, genesisFeedKey, role = SpaceMember.Role.ADMIN, membershipChainHeads = [], profile, invitationCredentialId, tags) => {
|
|
464
476
|
const credentials = await Promise.all([
|
|
465
477
|
await signer.createCredential({
|
|
466
478
|
subject: identityKey,
|
|
@@ -471,7 +483,8 @@ var createAdmissionCredentials = async (signer, identityKey, spaceKey, genesisFe
|
|
|
471
483
|
role,
|
|
472
484
|
profile,
|
|
473
485
|
genesisFeedKey,
|
|
474
|
-
invitationCredentialId
|
|
486
|
+
invitationCredentialId,
|
|
487
|
+
tags: tags ?? []
|
|
475
488
|
}
|
|
476
489
|
})
|
|
477
490
|
]);
|
|
@@ -628,7 +641,7 @@ import { runInContextAsync, synchronized } from "@dxos/async";
|
|
|
628
641
|
import { Context } from "@dxos/context";
|
|
629
642
|
import { PublicKey as PublicKey8 } from "@dxos/keys";
|
|
630
643
|
import { log as log3 } from "@dxos/log";
|
|
631
|
-
import { SpaceMember as SpaceMember3 } from "@dxos/protocols/proto/dxos/halo/credentials";
|
|
644
|
+
import { MembershipPolicy as MembershipPolicy2, SpaceMember as SpaceMember3 } from "@dxos/protocols/proto/dxos/halo/credentials";
|
|
632
645
|
import { Callback as Callback4, ComplexMap as ComplexMap6, ComplexSet as ComplexSet3 } from "@dxos/util";
|
|
633
646
|
|
|
634
647
|
// src/state-machine/feed-state-machine.ts
|
|
@@ -637,10 +650,11 @@ import { PublicKey as PublicKey4 } from "@dxos/keys";
|
|
|
637
650
|
import { Callback, ComplexMap as ComplexMap2 } from "@dxos/util";
|
|
638
651
|
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/halo/credentials/src/state-machine/feed-state-machine.ts";
|
|
639
652
|
var FeedStateMachine = class {
|
|
653
|
+
_spaceKey;
|
|
654
|
+
_feeds = new ComplexMap2(PublicKey4.hash);
|
|
655
|
+
onFeedAdmitted = new Callback();
|
|
640
656
|
constructor(_spaceKey) {
|
|
641
657
|
this._spaceKey = _spaceKey;
|
|
642
|
-
this._feeds = new ComplexMap2(PublicKey4.hash);
|
|
643
|
-
this.onFeedAdmitted = new Callback();
|
|
644
658
|
}
|
|
645
659
|
get feeds() {
|
|
646
660
|
return this._feeds;
|
|
@@ -686,13 +700,11 @@ var FeedStateMachine = class {
|
|
|
686
700
|
import { PublicKey as PublicKey5 } from "@dxos/keys";
|
|
687
701
|
import { Callback as Callback2, ComplexMap as ComplexMap3, ComplexSet } from "@dxos/util";
|
|
688
702
|
var InvitationStateMachine = class {
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
this.onDelegatedInvitationRemoved = new Callback2();
|
|
695
|
-
}
|
|
703
|
+
_invitations = new ComplexMap3(PublicKey5.hash);
|
|
704
|
+
_redeemedInvitationCredentialIds = new ComplexSet(PublicKey5.hash);
|
|
705
|
+
_cancelledInvitationCredentialIds = new ComplexSet(PublicKey5.hash);
|
|
706
|
+
onDelegatedInvitation = new Callback2();
|
|
707
|
+
onDelegatedInvitationRemoved = new Callback2();
|
|
696
708
|
get invitations() {
|
|
697
709
|
return this._invitations;
|
|
698
710
|
}
|
|
@@ -766,23 +778,40 @@ import { log } from "@dxos/log";
|
|
|
766
778
|
import { Callback as Callback3, ComplexMap as ComplexMap4, ComplexSet as ComplexSet2 } from "@dxos/util";
|
|
767
779
|
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/halo/credentials/src/graph/credential-graph.ts";
|
|
768
780
|
var CredentialGraph = class {
|
|
781
|
+
_stateHandler;
|
|
782
|
+
/**
|
|
783
|
+
* Local ids are used during traversals.
|
|
784
|
+
*/
|
|
785
|
+
_vertexIdGenerator = 1;
|
|
786
|
+
/**
|
|
787
|
+
* All credentials without parent references are connected to the root.
|
|
788
|
+
*/
|
|
789
|
+
_root = {
|
|
790
|
+
id: -1,
|
|
791
|
+
parents: [],
|
|
792
|
+
children: []
|
|
793
|
+
};
|
|
794
|
+
/**
|
|
795
|
+
* A credential which is not a parent of any other credential has the sentinel as a child.
|
|
796
|
+
* Sentinel is a virtual merge-point of all credentials.
|
|
797
|
+
*/
|
|
798
|
+
_sentinel = {
|
|
799
|
+
id: -2,
|
|
800
|
+
parents: [],
|
|
801
|
+
children: []
|
|
802
|
+
};
|
|
803
|
+
/**
|
|
804
|
+
* Vertex references are used for fast credential inserts into the graph.
|
|
805
|
+
*/
|
|
806
|
+
_vertexByCredentialId = new ComplexMap4(PublicKey6.hash);
|
|
807
|
+
/**
|
|
808
|
+
* The current state of the graph.
|
|
809
|
+
*/
|
|
810
|
+
_subjectToVertex = new ComplexMap4(PublicKey6.hash);
|
|
811
|
+
_subjectToState = new ComplexMap4(PublicKey6.hash);
|
|
812
|
+
onSubjectStateChanged = new Callback3();
|
|
769
813
|
constructor(_stateHandler) {
|
|
770
814
|
this._stateHandler = _stateHandler;
|
|
771
|
-
this._vertexIdGenerator = 1;
|
|
772
|
-
this._root = {
|
|
773
|
-
id: -1,
|
|
774
|
-
parents: [],
|
|
775
|
-
children: []
|
|
776
|
-
};
|
|
777
|
-
this._sentinel = {
|
|
778
|
-
id: -2,
|
|
779
|
-
parents: [],
|
|
780
|
-
children: []
|
|
781
|
-
};
|
|
782
|
-
this._vertexByCredentialId = new ComplexMap4(PublicKey6.hash);
|
|
783
|
-
this._subjectToVertex = new ComplexMap4(PublicKey6.hash);
|
|
784
|
-
this._subjectToState = new ComplexMap4(PublicKey6.hash);
|
|
785
|
-
this.onSubjectStateChanged = new Callback3();
|
|
786
815
|
}
|
|
787
816
|
getSubjectState(subjectId) {
|
|
788
817
|
return this._subjectToState.get(subjectId);
|
|
@@ -1317,11 +1346,13 @@ var toChosenPath = (path) => {
|
|
|
1317
1346
|
// src/state-machine/member-state-machine.ts
|
|
1318
1347
|
var __dxlog_file5 = "/__w/dxos/dxos/packages/core/halo/credentials/src/state-machine/member-state-machine.ts";
|
|
1319
1348
|
var MemberStateMachine = class {
|
|
1349
|
+
_spaceKey;
|
|
1350
|
+
_ownerKey;
|
|
1351
|
+
_memberProfiles = new ComplexMap5(PublicKey7.hash);
|
|
1352
|
+
_hashgraph = new CredentialGraph(this);
|
|
1353
|
+
onMemberRoleChanged = this._hashgraph.onSubjectStateChanged;
|
|
1320
1354
|
constructor(_spaceKey) {
|
|
1321
1355
|
this._spaceKey = _spaceKey;
|
|
1322
|
-
this._memberProfiles = new ComplexMap5(PublicKey7.hash);
|
|
1323
|
-
this._hashgraph = new CredentialGraph(this);
|
|
1324
|
-
this.onMemberRoleChanged = this._hashgraph.onSubjectStateChanged;
|
|
1325
1356
|
}
|
|
1326
1357
|
get creator() {
|
|
1327
1358
|
return this._ownerKey && this._hashgraph.getSubjectState(this._ownerKey);
|
|
@@ -1469,20 +1500,28 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
1469
1500
|
}
|
|
1470
1501
|
var __dxlog_file6 = "/__w/dxos/dxos/packages/core/halo/credentials/src/state-machine/space-state-machine.ts";
|
|
1471
1502
|
var SpaceStateMachine = class {
|
|
1503
|
+
_spaceKey;
|
|
1504
|
+
_members;
|
|
1505
|
+
_feeds;
|
|
1506
|
+
_invitations = new InvitationStateMachine();
|
|
1507
|
+
_credentials = [];
|
|
1508
|
+
_credentialsById = new ComplexMap6(PublicKey8.hash);
|
|
1509
|
+
_processedCredentials = new ComplexSet3(PublicKey8.hash);
|
|
1510
|
+
_genesisCredential;
|
|
1511
|
+
_tags = [];
|
|
1512
|
+
_membershipPolicy = MembershipPolicy2.INVITE;
|
|
1513
|
+
_credentialProcessors = [];
|
|
1514
|
+
onCredentialProcessed = new Callback4();
|
|
1515
|
+
onMemberRoleChanged;
|
|
1516
|
+
onFeedAdmitted;
|
|
1517
|
+
onDelegatedInvitation = this._invitations.onDelegatedInvitation;
|
|
1518
|
+
onDelegatedInvitationRemoved = this._invitations.onDelegatedInvitationRemoved;
|
|
1472
1519
|
constructor(_spaceKey) {
|
|
1473
1520
|
this._spaceKey = _spaceKey;
|
|
1474
1521
|
this._members = new MemberStateMachine(this._spaceKey);
|
|
1475
1522
|
this._feeds = new FeedStateMachine(this._spaceKey);
|
|
1476
|
-
this._invitations = new InvitationStateMachine();
|
|
1477
|
-
this._credentials = [];
|
|
1478
|
-
this._credentialsById = new ComplexMap6(PublicKey8.hash);
|
|
1479
|
-
this._processedCredentials = new ComplexSet3(PublicKey8.hash);
|
|
1480
|
-
this._credentialProcessors = [];
|
|
1481
|
-
this.onCredentialProcessed = new Callback4();
|
|
1482
1523
|
this.onMemberRoleChanged = this._members.onMemberRoleChanged;
|
|
1483
1524
|
this.onFeedAdmitted = this._feeds.onFeedAdmitted;
|
|
1484
|
-
this.onDelegatedInvitation = this._invitations.onDelegatedInvitation;
|
|
1485
|
-
this.onDelegatedInvitationRemoved = this._invitations.onDelegatedInvitationRemoved;
|
|
1486
1525
|
}
|
|
1487
1526
|
get creator() {
|
|
1488
1527
|
return this._members.creator;
|
|
@@ -1505,6 +1544,12 @@ var SpaceStateMachine = class {
|
|
|
1505
1544
|
get genesisCredential() {
|
|
1506
1545
|
return this._genesisCredential;
|
|
1507
1546
|
}
|
|
1547
|
+
get tags() {
|
|
1548
|
+
return this._tags;
|
|
1549
|
+
}
|
|
1550
|
+
get membershipPolicy() {
|
|
1551
|
+
return this._membershipPolicy;
|
|
1552
|
+
}
|
|
1508
1553
|
get invitations() {
|
|
1509
1554
|
return this._invitations.invitations;
|
|
1510
1555
|
}
|
|
@@ -1546,7 +1591,7 @@ var SpaceStateMachine = class {
|
|
|
1546
1591
|
if (result.kind !== "pass") {
|
|
1547
1592
|
log3.warn(`Invalid credential: ${result.errors.join(", ")}`, void 0, {
|
|
1548
1593
|
F: __dxlog_file6,
|
|
1549
|
-
L:
|
|
1594
|
+
L: 174,
|
|
1550
1595
|
S: this,
|
|
1551
1596
|
C: (f, a) => f(...a)
|
|
1552
1597
|
});
|
|
@@ -1559,7 +1604,7 @@ var SpaceStateMachine = class {
|
|
|
1559
1604
|
if (this._genesisCredential) {
|
|
1560
1605
|
log3.warn("Space already has a genesis credential.", void 0, {
|
|
1561
1606
|
F: __dxlog_file6,
|
|
1562
|
-
L:
|
|
1607
|
+
L: 183,
|
|
1563
1608
|
S: this,
|
|
1564
1609
|
C: (f, a) => f(...a)
|
|
1565
1610
|
});
|
|
@@ -1568,7 +1613,7 @@ var SpaceStateMachine = class {
|
|
|
1568
1613
|
if (!credential.issuer.equals(this._spaceKey)) {
|
|
1569
1614
|
log3.warn("Space genesis credential must be issued by space.", void 0, {
|
|
1570
1615
|
F: __dxlog_file6,
|
|
1571
|
-
L:
|
|
1616
|
+
L: 187,
|
|
1572
1617
|
S: this,
|
|
1573
1618
|
C: (f, a) => f(...a)
|
|
1574
1619
|
});
|
|
@@ -1577,13 +1622,15 @@ var SpaceStateMachine = class {
|
|
|
1577
1622
|
if (!credential.subject.id.equals(this._spaceKey)) {
|
|
1578
1623
|
log3.warn("Space genesis credential must be issued to space.", void 0, {
|
|
1579
1624
|
F: __dxlog_file6,
|
|
1580
|
-
L:
|
|
1625
|
+
L: 191,
|
|
1581
1626
|
S: this,
|
|
1582
1627
|
C: (f, a) => f(...a)
|
|
1583
1628
|
});
|
|
1584
1629
|
return false;
|
|
1585
1630
|
}
|
|
1586
1631
|
this._genesisCredential = credential;
|
|
1632
|
+
this._tags = assertion.tags ?? [];
|
|
1633
|
+
this._membershipPolicy = assertion.membershipPolicy ?? MembershipPolicy2.INVITE;
|
|
1587
1634
|
break;
|
|
1588
1635
|
}
|
|
1589
1636
|
case "dxos.halo.credentials.SpaceMember": {
|
|
@@ -1593,7 +1640,7 @@ var SpaceStateMachine = class {
|
|
|
1593
1640
|
if (!this._genesisCredential) {
|
|
1594
1641
|
log3.warn("Space must have a genesis credential before adding members.", void 0, {
|
|
1595
1642
|
F: __dxlog_file6,
|
|
1596
|
-
L:
|
|
1643
|
+
L: 206,
|
|
1597
1644
|
S: this,
|
|
1598
1645
|
C: (f, a) => f(...a)
|
|
1599
1646
|
});
|
|
@@ -1602,7 +1649,7 @@ var SpaceStateMachine = class {
|
|
|
1602
1649
|
if (!this._canInviteNewMembers(credential.issuer)) {
|
|
1603
1650
|
log3.warn(`Space member is not authorized to invite new members: ${credential.issuer}`, void 0, {
|
|
1604
1651
|
F: __dxlog_file6,
|
|
1605
|
-
L:
|
|
1652
|
+
L: 210,
|
|
1606
1653
|
S: this,
|
|
1607
1654
|
C: (f, a) => f(...a)
|
|
1608
1655
|
});
|
|
@@ -1616,7 +1663,7 @@ var SpaceStateMachine = class {
|
|
|
1616
1663
|
if (!this._genesisCredential) {
|
|
1617
1664
|
log3.warn("Space must have a genesis credential before adding members.", void 0, {
|
|
1618
1665
|
F: __dxlog_file6,
|
|
1619
|
-
L:
|
|
1666
|
+
L: 221,
|
|
1620
1667
|
S: this,
|
|
1621
1668
|
C: (f, a) => f(...a)
|
|
1622
1669
|
});
|
|
@@ -1629,7 +1676,7 @@ var SpaceStateMachine = class {
|
|
|
1629
1676
|
if (!this._genesisCredential) {
|
|
1630
1677
|
log3.warn("Space must have a genesis credential before admitting feeds.", void 0, {
|
|
1631
1678
|
F: __dxlog_file6,
|
|
1632
|
-
L:
|
|
1679
|
+
L: 231,
|
|
1633
1680
|
S: this,
|
|
1634
1681
|
C: (f, a) => f(...a)
|
|
1635
1682
|
});
|
|
@@ -1643,7 +1690,7 @@ var SpaceStateMachine = class {
|
|
|
1643
1690
|
if (!this._canInviteNewMembers(credential.issuer)) {
|
|
1644
1691
|
log3.warn(`Invalid invitation, space member is not authorized to invite new members: ${credential.issuer}`, void 0, {
|
|
1645
1692
|
F: __dxlog_file6,
|
|
1646
|
-
L:
|
|
1693
|
+
L: 242,
|
|
1647
1694
|
S: this,
|
|
1648
1695
|
C: (f, a) => f(...a)
|
|
1649
1696
|
});
|
|
@@ -1677,6 +1724,9 @@ var SpaceStateMachine = class {
|
|
|
1677
1724
|
return this._canInviteNewMembers(memberKey);
|
|
1678
1725
|
}
|
|
1679
1726
|
_canInviteNewMembers(key) {
|
|
1727
|
+
if (this._membershipPolicy === MembershipPolicy2.LOCKED) {
|
|
1728
|
+
return key.equals(this._spaceKey) && this._members.members.size === 0;
|
|
1729
|
+
}
|
|
1680
1730
|
return key.equals(this._spaceKey) || this._members.getRole(key) === SpaceMember3.Role.ADMIN || this._members.getRole(key) === SpaceMember3.Role.OWNER;
|
|
1681
1731
|
}
|
|
1682
1732
|
};
|
|
@@ -1684,15 +1734,24 @@ _ts_decorate([
|
|
|
1684
1734
|
synchronized
|
|
1685
1735
|
], SpaceStateMachine.prototype, "process", null);
|
|
1686
1736
|
var CredentialConsumer = class {
|
|
1737
|
+
processor;
|
|
1738
|
+
_onOpen;
|
|
1739
|
+
_onClose;
|
|
1740
|
+
_ctx = new Context(void 0, {
|
|
1741
|
+
F: __dxlog_file6,
|
|
1742
|
+
L: 292
|
|
1743
|
+
});
|
|
1744
|
+
/**
|
|
1745
|
+
* @internal
|
|
1746
|
+
* Processor is ready to process live credentials.
|
|
1747
|
+
* NOTE: Setting this flag before all existing credentials are processed will cause them to be processed out of order.
|
|
1748
|
+
* Set externally.
|
|
1749
|
+
*/
|
|
1750
|
+
_isReadyForLiveCredentials = false;
|
|
1687
1751
|
constructor(processor, _onOpen, _onClose) {
|
|
1688
1752
|
this.processor = processor;
|
|
1689
1753
|
this._onOpen = _onOpen;
|
|
1690
1754
|
this._onClose = _onClose;
|
|
1691
|
-
this._ctx = new Context(void 0, {
|
|
1692
|
-
F: __dxlog_file6,
|
|
1693
|
-
L: 267
|
|
1694
|
-
});
|
|
1695
|
-
this._isReadyForLiveCredentials = false;
|
|
1696
1755
|
}
|
|
1697
1756
|
/**
|
|
1698
1757
|
* @internal
|
|
@@ -1722,10 +1781,13 @@ import { log as log4 } from "@dxos/log";
|
|
|
1722
1781
|
import { ComplexMap as ComplexMap7 } from "@dxos/util";
|
|
1723
1782
|
var __dxlog_file7 = "/__w/dxos/dxos/packages/core/halo/credentials/src/processor/device-state-machine.ts";
|
|
1724
1783
|
var DeviceStateMachine = class {
|
|
1784
|
+
_params;
|
|
1785
|
+
// TODO(burdon): Return values via getter.
|
|
1786
|
+
authorizedDeviceKeys = new ComplexMap7(PublicKey9.hash);
|
|
1787
|
+
deviceChainReady = new Trigger();
|
|
1788
|
+
deviceCredentialChain;
|
|
1725
1789
|
constructor(_params) {
|
|
1726
1790
|
this._params = _params;
|
|
1727
|
-
this.authorizedDeviceKeys = new ComplexMap7(PublicKey9.hash);
|
|
1728
|
-
this.deviceChainReady = new Trigger();
|
|
1729
1791
|
}
|
|
1730
1792
|
async processCredential(credential) {
|
|
1731
1793
|
log4("processing credential...", {
|
|
@@ -1734,7 +1796,7 @@ var DeviceStateMachine = class {
|
|
|
1734
1796
|
credential
|
|
1735
1797
|
}, {
|
|
1736
1798
|
F: __dxlog_file7,
|
|
1737
|
-
L:
|
|
1799
|
+
L: 36,
|
|
1738
1800
|
S: this,
|
|
1739
1801
|
C: (f, a) => f(...a)
|
|
1740
1802
|
});
|
|
@@ -1754,7 +1816,7 @@ var DeviceStateMachine = class {
|
|
|
1754
1816
|
size: this.authorizedDeviceKeys.size
|
|
1755
1817
|
}, {
|
|
1756
1818
|
F: __dxlog_file7,
|
|
1757
|
-
L:
|
|
1819
|
+
L: 56,
|
|
1758
1820
|
S: this,
|
|
1759
1821
|
C: (f, a) => f(...a)
|
|
1760
1822
|
});
|
|
@@ -1764,7 +1826,7 @@ var DeviceStateMachine = class {
|
|
|
1764
1826
|
case "dxos.halo.credentials.DeviceProfile": {
|
|
1765
1827
|
invariant6(this.authorizedDeviceKeys.has(credential.subject.id), "Device not found.", {
|
|
1766
1828
|
F: __dxlog_file7,
|
|
1767
|
-
L:
|
|
1829
|
+
L: 66,
|
|
1768
1830
|
S: this,
|
|
1769
1831
|
A: [
|
|
1770
1832
|
"this.authorizedDeviceKeys.has(credential.subject.id)",
|
|
@@ -1777,7 +1839,7 @@ var DeviceStateMachine = class {
|
|
|
1777
1839
|
profile: assertion.profile
|
|
1778
1840
|
}, {
|
|
1779
1841
|
F: __dxlog_file7,
|
|
1780
|
-
L:
|
|
1842
|
+
L: 69,
|
|
1781
1843
|
S: this,
|
|
1782
1844
|
C: (f, a) => f(...a)
|
|
1783
1845
|
});
|
|
@@ -1794,6 +1856,9 @@ var DeviceStateMachine = class {
|
|
|
1794
1856
|
import { log as log5 } from "@dxos/log";
|
|
1795
1857
|
var __dxlog_file8 = "/__w/dxos/dxos/packages/core/halo/credentials/src/processor/profile-state-machine.ts";
|
|
1796
1858
|
var ProfileStateMachine = class {
|
|
1859
|
+
_params;
|
|
1860
|
+
// TODO(burdon): Return values via getter.
|
|
1861
|
+
profile;
|
|
1797
1862
|
constructor(_params) {
|
|
1798
1863
|
this._params = _params;
|
|
1799
1864
|
}
|
|
@@ -1807,7 +1872,7 @@ var ProfileStateMachine = class {
|
|
|
1807
1872
|
credential
|
|
1808
1873
|
}, {
|
|
1809
1874
|
F: __dxlog_file8,
|
|
1810
|
-
L:
|
|
1875
|
+
L: 35,
|
|
1811
1876
|
S: this,
|
|
1812
1877
|
C: (f, a) => f(...a)
|
|
1813
1878
|
});
|
|
@@ -1819,7 +1884,7 @@ var ProfileStateMachine = class {
|
|
|
1819
1884
|
profile: this.profile
|
|
1820
1885
|
}, {
|
|
1821
1886
|
F: __dxlog_file8,
|
|
1822
|
-
L:
|
|
1887
|
+
L: 41,
|
|
1823
1888
|
S: this,
|
|
1824
1889
|
C: (f, a) => f(...a)
|
|
1825
1890
|
});
|