@dxos/credentials 0.8.4-main.406dc2a → 0.8.4-main.422d1c7879

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.
Files changed (37) hide show
  1. package/dist/lib/{browser → neutral}/index.mjs +160 -243
  2. package/dist/lib/neutral/index.mjs.map +7 -0
  3. package/dist/lib/{browser → neutral}/meta.json +1 -1
  4. package/dist/types/src/credentials/credential-factory.d.ts +4 -4
  5. package/dist/types/src/credentials/credential-factory.d.ts.map +1 -1
  6. package/dist/types/src/credentials/credential-generator.d.ts +3 -3
  7. package/dist/types/src/credentials/credential-generator.d.ts.map +1 -1
  8. package/dist/types/src/credentials/signing.d.ts.map +1 -1
  9. package/dist/types/src/presentations/presentation.d.ts.map +1 -1
  10. package/dist/types/src/presentations/verifier.d.ts.map +1 -1
  11. package/dist/types/src/processor/device-state-machine.d.ts +2 -2
  12. package/dist/types/src/processor/device-state-machine.d.ts.map +1 -1
  13. package/dist/types/src/processor/profile-state-machine.d.ts +2 -2
  14. package/dist/types/src/processor/profile-state-machine.d.ts.map +1 -1
  15. package/dist/types/src/state-machine/space-state-machine.d.ts +7 -1
  16. package/dist/types/src/state-machine/space-state-machine.d.ts.map +1 -1
  17. package/dist/types/tsconfig.tsbuildinfo +1 -1
  18. package/docs/README.md +17 -17
  19. package/moon.yml +2 -1
  20. package/package.json +18 -19
  21. package/src/credentials/credential-factory.ts +4 -4
  22. package/src/credentials/credential-generator.ts +5 -0
  23. package/src/credentials/signing.ts +12 -0
  24. package/src/presentations/json-encoding.test.ts +0 -2
  25. package/src/presentations/presentation.ts +0 -1
  26. package/src/presentations/verifier.test.ts +0 -1
  27. package/src/presentations/verifier.ts +0 -1
  28. package/src/processor/device-state-machine.ts +2 -3
  29. package/src/processor/profile-state-machine.ts +2 -3
  30. package/src/state-machine/invitation-state-machine.test.ts +0 -1
  31. package/src/state-machine/member-state-machine.test.ts +0 -1
  32. package/src/state-machine/space-state-machine.test.ts +243 -2
  33. package/src/state-machine/space-state-machine.ts +20 -2
  34. package/dist/lib/browser/index.mjs.map +0 -7
  35. package/dist/lib/node-esm/index.mjs +0 -2018
  36. package/dist/lib/node-esm/index.mjs.map +0 -7
  37. package/dist/lib/node-esm/meta.json +0 -1
@@ -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,26 +322,21 @@ 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
- function _define_property(obj, key, value) {
320
- if (key in obj) {
321
- Object.defineProperty(obj, key, {
322
- value,
323
- enumerable: true,
324
- configurable: true,
325
- writable: true
326
- });
327
- } else {
328
- obj[key] = value;
329
- }
330
- return obj;
331
- }
332
327
  var CredentialGenerator = class {
328
+ _signer;
329
+ _identityKey;
330
+ _deviceKey;
331
+ constructor(_signer, _identityKey, _deviceKey) {
332
+ this._signer = _signer;
333
+ this._identityKey = _identityKey;
334
+ this._deviceKey = _deviceKey;
335
+ }
333
336
  /**
334
337
  * Create genesis messages for new Space.
335
338
  */
336
- async createSpaceGenesis(spaceKey, controlKey, creatorProfile) {
339
+ async createSpaceGenesis(spaceKey, controlKey, creatorProfile, membershipPolicy = MembershipPolicy.INVITE) {
337
340
  return [
338
341
  await createCredential({
339
342
  signer: this._signer,
@@ -341,7 +344,8 @@ var CredentialGenerator = class {
341
344
  subject: spaceKey,
342
345
  assertion: {
343
346
  "@type": "dxos.halo.credentials.SpaceGenesis",
344
- spaceKey
347
+ spaceKey,
348
+ membershipPolicy
345
349
  }
346
350
  }),
347
351
  await createCredential({
@@ -451,14 +455,6 @@ var CredentialGenerator = class {
451
455
  }
452
456
  });
453
457
  }
454
- constructor(_signer, _identityKey, _deviceKey) {
455
- _define_property(this, "_signer", void 0);
456
- _define_property(this, "_identityKey", void 0);
457
- _define_property(this, "_deviceKey", void 0);
458
- this._signer = _signer;
459
- this._identityKey = _identityKey;
460
- this._deviceKey = _deviceKey;
461
- }
462
458
  };
463
459
  var createDeviceAuthorization = async (signer, identityKey, deviceKey) => {
464
460
  const credentials = await Promise.all([
@@ -476,7 +472,7 @@ var createDeviceAuthorization = async (signer, identityKey, deviceKey) => {
476
472
  credential
477
473
  }));
478
474
  };
479
- 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) => {
480
476
  const credentials = await Promise.all([
481
477
  await signer.createCredential({
482
478
  subject: identityKey,
@@ -487,7 +483,8 @@ var createAdmissionCredentials = async (signer, identityKey, spaceKey, genesisFe
487
483
  role,
488
484
  profile,
489
485
  genesisFeedKey,
490
- invitationCredentialId
486
+ invitationCredentialId,
487
+ tags: tags ?? []
491
488
  }
492
489
  })
493
490
  ]);
@@ -644,28 +641,21 @@ import { runInContextAsync, synchronized } from "@dxos/async";
644
641
  import { Context } from "@dxos/context";
645
642
  import { PublicKey as PublicKey8 } from "@dxos/keys";
646
643
  import { log as log3 } from "@dxos/log";
647
- 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";
648
645
  import { Callback as Callback4, ComplexMap as ComplexMap6, ComplexSet as ComplexSet3 } from "@dxos/util";
649
646
 
650
647
  // src/state-machine/feed-state-machine.ts
651
648
  import { invariant as invariant3 } from "@dxos/invariant";
652
649
  import { PublicKey as PublicKey4 } from "@dxos/keys";
653
650
  import { Callback, ComplexMap as ComplexMap2 } from "@dxos/util";
654
- function _define_property2(obj, key, value) {
655
- if (key in obj) {
656
- Object.defineProperty(obj, key, {
657
- value,
658
- enumerable: true,
659
- configurable: true,
660
- writable: true
661
- });
662
- } else {
663
- obj[key] = value;
664
- }
665
- return obj;
666
- }
667
651
  var __dxlog_file3 = "/__w/dxos/dxos/packages/core/halo/credentials/src/state-machine/feed-state-machine.ts";
668
652
  var FeedStateMachine = class {
653
+ _spaceKey;
654
+ _feeds = new ComplexMap2(PublicKey4.hash);
655
+ onFeedAdmitted = new Callback();
656
+ constructor(_spaceKey) {
657
+ this._spaceKey = _spaceKey;
658
+ }
669
659
  get feeds() {
670
660
  return this._feeds;
671
661
  }
@@ -704,33 +694,17 @@ var FeedStateMachine = class {
704
694
  this._feeds.set(credential.subject.id, info);
705
695
  await this.onFeedAdmitted.callIfSet(info);
706
696
  }
707
- constructor(_spaceKey) {
708
- _define_property2(this, "_spaceKey", void 0);
709
- _define_property2(this, "_feeds", void 0);
710
- _define_property2(this, "onFeedAdmitted", void 0);
711
- this._spaceKey = _spaceKey;
712
- this._feeds = new ComplexMap2(PublicKey4.hash);
713
- this.onFeedAdmitted = new Callback();
714
- }
715
697
  };
716
698
 
717
699
  // src/state-machine/invitation-state-machine.ts
718
700
  import { PublicKey as PublicKey5 } from "@dxos/keys";
719
701
  import { Callback as Callback2, ComplexMap as ComplexMap3, ComplexSet } from "@dxos/util";
720
- function _define_property3(obj, key, value) {
721
- if (key in obj) {
722
- Object.defineProperty(obj, key, {
723
- value,
724
- enumerable: true,
725
- configurable: true,
726
- writable: true
727
- });
728
- } else {
729
- obj[key] = value;
730
- }
731
- return obj;
732
- }
733
702
  var InvitationStateMachine = class {
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();
734
708
  get invitations() {
735
709
  return this._invitations;
736
710
  }
@@ -788,13 +762,6 @@ var InvitationStateMachine = class {
788
762
  }
789
763
  }
790
764
  }
791
- constructor() {
792
- _define_property3(this, "_invitations", new ComplexMap3(PublicKey5.hash));
793
- _define_property3(this, "_redeemedInvitationCredentialIds", new ComplexSet(PublicKey5.hash));
794
- _define_property3(this, "_cancelledInvitationCredentialIds", new ComplexSet(PublicKey5.hash));
795
- _define_property3(this, "onDelegatedInvitation", new Callback2());
796
- _define_property3(this, "onDelegatedInvitationRemoved", new Callback2());
797
- }
798
765
  };
799
766
 
800
767
  // src/state-machine/member-state-machine.ts
@@ -809,21 +776,43 @@ import { invariant as invariant4 } from "@dxos/invariant";
809
776
  import { PublicKey as PublicKey6 } from "@dxos/keys";
810
777
  import { log } from "@dxos/log";
811
778
  import { Callback as Callback3, ComplexMap as ComplexMap4, ComplexSet as ComplexSet2 } from "@dxos/util";
812
- function _define_property4(obj, key, value) {
813
- if (key in obj) {
814
- Object.defineProperty(obj, key, {
815
- value,
816
- enumerable: true,
817
- configurable: true,
818
- writable: true
819
- });
820
- } else {
821
- obj[key] = value;
822
- }
823
- return obj;
824
- }
825
779
  var __dxlog_file4 = "/__w/dxos/dxos/packages/core/halo/credentials/src/graph/credential-graph.ts";
826
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();
813
+ constructor(_stateHandler) {
814
+ this._stateHandler = _stateHandler;
815
+ }
827
816
  getSubjectState(subjectId) {
828
817
  return this._subjectToState.get(subjectId);
829
818
  }
@@ -1346,32 +1335,6 @@ var CredentialGraph = class {
1346
1335
  credentials: new ComplexSet2(PublicKey6.hash)
1347
1336
  };
1348
1337
  }
1349
- constructor(_stateHandler) {
1350
- _define_property4(this, "_stateHandler", void 0);
1351
- _define_property4(this, "_vertexIdGenerator", void 0);
1352
- _define_property4(this, "_root", void 0);
1353
- _define_property4(this, "_sentinel", void 0);
1354
- _define_property4(this, "_vertexByCredentialId", void 0);
1355
- _define_property4(this, "_subjectToVertex", void 0);
1356
- _define_property4(this, "_subjectToState", void 0);
1357
- _define_property4(this, "onSubjectStateChanged", void 0);
1358
- this._stateHandler = _stateHandler;
1359
- this._vertexIdGenerator = 1;
1360
- this._root = {
1361
- id: -1,
1362
- parents: [],
1363
- children: []
1364
- };
1365
- this._sentinel = {
1366
- id: -2,
1367
- parents: [],
1368
- children: []
1369
- };
1370
- this._vertexByCredentialId = new ComplexMap4(PublicKey6.hash);
1371
- this._subjectToVertex = new ComplexMap4(PublicKey6.hash);
1372
- this._subjectToState = new ComplexMap4(PublicKey6.hash);
1373
- this.onSubjectStateChanged = new Callback3();
1374
- }
1375
1338
  };
1376
1339
  var toChosenPath = (path) => {
1377
1340
  return Object.fromEntries(Object.entries(path.chosenPath).map(([k, vs]) => [
@@ -1381,21 +1344,16 @@ var toChosenPath = (path) => {
1381
1344
  };
1382
1345
 
1383
1346
  // src/state-machine/member-state-machine.ts
1384
- function _define_property5(obj, key, value) {
1385
- if (key in obj) {
1386
- Object.defineProperty(obj, key, {
1387
- value,
1388
- enumerable: true,
1389
- configurable: true,
1390
- writable: true
1391
- });
1392
- } else {
1393
- obj[key] = value;
1394
- }
1395
- return obj;
1396
- }
1397
1347
  var __dxlog_file5 = "/__w/dxos/dxos/packages/core/halo/credentials/src/state-machine/member-state-machine.ts";
1398
1348
  var MemberStateMachine = class {
1349
+ _spaceKey;
1350
+ _ownerKey;
1351
+ _memberProfiles = new ComplexMap5(PublicKey7.hash);
1352
+ _hashgraph = new CredentialGraph(this);
1353
+ onMemberRoleChanged = this._hashgraph.onSubjectStateChanged;
1354
+ constructor(_spaceKey) {
1355
+ this._spaceKey = _spaceKey;
1356
+ }
1399
1357
  get creator() {
1400
1358
  return this._ownerKey && this._hashgraph.getSubjectState(this._ownerKey);
1401
1359
  }
@@ -1531,33 +1489,9 @@ var MemberStateMachine = class {
1531
1489
  }
1532
1490
  return realRole;
1533
1491
  }
1534
- constructor(_spaceKey) {
1535
- _define_property5(this, "_spaceKey", void 0);
1536
- _define_property5(this, "_ownerKey", void 0);
1537
- _define_property5(this, "_memberProfiles", void 0);
1538
- _define_property5(this, "_hashgraph", void 0);
1539
- _define_property5(this, "onMemberRoleChanged", void 0);
1540
- this._spaceKey = _spaceKey;
1541
- this._memberProfiles = new ComplexMap5(PublicKey7.hash);
1542
- this._hashgraph = new CredentialGraph(this);
1543
- this.onMemberRoleChanged = this._hashgraph.onSubjectStateChanged;
1544
- }
1545
1492
  };
1546
1493
 
1547
1494
  // src/state-machine/space-state-machine.ts
1548
- function _define_property6(obj, key, value) {
1549
- if (key in obj) {
1550
- Object.defineProperty(obj, key, {
1551
- value,
1552
- enumerable: true,
1553
- configurable: true,
1554
- writable: true
1555
- });
1556
- } else {
1557
- obj[key] = value;
1558
- }
1559
- return obj;
1560
- }
1561
1495
  function _ts_decorate(decorators, target, key, desc) {
1562
1496
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1563
1497
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -1566,6 +1500,29 @@ function _ts_decorate(decorators, target, key, desc) {
1566
1500
  }
1567
1501
  var __dxlog_file6 = "/__w/dxos/dxos/packages/core/halo/credentials/src/state-machine/space-state-machine.ts";
1568
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;
1519
+ constructor(_spaceKey) {
1520
+ this._spaceKey = _spaceKey;
1521
+ this._members = new MemberStateMachine(this._spaceKey);
1522
+ this._feeds = new FeedStateMachine(this._spaceKey);
1523
+ this.onMemberRoleChanged = this._members.onMemberRoleChanged;
1524
+ this.onFeedAdmitted = this._feeds.onFeedAdmitted;
1525
+ }
1569
1526
  get creator() {
1570
1527
  return this._members.creator;
1571
1528
  }
@@ -1587,6 +1544,12 @@ var SpaceStateMachine = class {
1587
1544
  get genesisCredential() {
1588
1545
  return this._genesisCredential;
1589
1546
  }
1547
+ get tags() {
1548
+ return this._tags;
1549
+ }
1550
+ get membershipPolicy() {
1551
+ return this._membershipPolicy;
1552
+ }
1590
1553
  get invitations() {
1591
1554
  return this._invitations.invitations;
1592
1555
  }
@@ -1628,7 +1591,7 @@ var SpaceStateMachine = class {
1628
1591
  if (result.kind !== "pass") {
1629
1592
  log3.warn(`Invalid credential: ${result.errors.join(", ")}`, void 0, {
1630
1593
  F: __dxlog_file6,
1631
- L: 162,
1594
+ L: 173,
1632
1595
  S: this,
1633
1596
  C: (f, a) => f(...a)
1634
1597
  });
@@ -1641,7 +1604,7 @@ var SpaceStateMachine = class {
1641
1604
  if (this._genesisCredential) {
1642
1605
  log3.warn("Space already has a genesis credential.", void 0, {
1643
1606
  F: __dxlog_file6,
1644
- L: 171,
1607
+ L: 182,
1645
1608
  S: this,
1646
1609
  C: (f, a) => f(...a)
1647
1610
  });
@@ -1650,7 +1613,7 @@ var SpaceStateMachine = class {
1650
1613
  if (!credential.issuer.equals(this._spaceKey)) {
1651
1614
  log3.warn("Space genesis credential must be issued by space.", void 0, {
1652
1615
  F: __dxlog_file6,
1653
- L: 175,
1616
+ L: 186,
1654
1617
  S: this,
1655
1618
  C: (f, a) => f(...a)
1656
1619
  });
@@ -1659,13 +1622,15 @@ var SpaceStateMachine = class {
1659
1622
  if (!credential.subject.id.equals(this._spaceKey)) {
1660
1623
  log3.warn("Space genesis credential must be issued to space.", void 0, {
1661
1624
  F: __dxlog_file6,
1662
- L: 179,
1625
+ L: 190,
1663
1626
  S: this,
1664
1627
  C: (f, a) => f(...a)
1665
1628
  });
1666
1629
  return false;
1667
1630
  }
1668
1631
  this._genesisCredential = credential;
1632
+ this._tags = assertion.tags ?? [];
1633
+ this._membershipPolicy = assertion.membershipPolicy ?? MembershipPolicy2.INVITE;
1669
1634
  break;
1670
1635
  }
1671
1636
  case "dxos.halo.credentials.SpaceMember": {
@@ -1675,7 +1640,7 @@ var SpaceStateMachine = class {
1675
1640
  if (!this._genesisCredential) {
1676
1641
  log3.warn("Space must have a genesis credential before adding members.", void 0, {
1677
1642
  F: __dxlog_file6,
1678
- L: 192,
1643
+ L: 205,
1679
1644
  S: this,
1680
1645
  C: (f, a) => f(...a)
1681
1646
  });
@@ -1684,7 +1649,7 @@ var SpaceStateMachine = class {
1684
1649
  if (!this._canInviteNewMembers(credential.issuer)) {
1685
1650
  log3.warn(`Space member is not authorized to invite new members: ${credential.issuer}`, void 0, {
1686
1651
  F: __dxlog_file6,
1687
- L: 196,
1652
+ L: 209,
1688
1653
  S: this,
1689
1654
  C: (f, a) => f(...a)
1690
1655
  });
@@ -1698,7 +1663,7 @@ var SpaceStateMachine = class {
1698
1663
  if (!this._genesisCredential) {
1699
1664
  log3.warn("Space must have a genesis credential before adding members.", void 0, {
1700
1665
  F: __dxlog_file6,
1701
- L: 207,
1666
+ L: 220,
1702
1667
  S: this,
1703
1668
  C: (f, a) => f(...a)
1704
1669
  });
@@ -1711,7 +1676,7 @@ var SpaceStateMachine = class {
1711
1676
  if (!this._genesisCredential) {
1712
1677
  log3.warn("Space must have a genesis credential before admitting feeds.", void 0, {
1713
1678
  F: __dxlog_file6,
1714
- L: 217,
1679
+ L: 230,
1715
1680
  S: this,
1716
1681
  C: (f, a) => f(...a)
1717
1682
  });
@@ -1725,7 +1690,7 @@ var SpaceStateMachine = class {
1725
1690
  if (!this._canInviteNewMembers(credential.issuer)) {
1726
1691
  log3.warn(`Invalid invitation, space member is not authorized to invite new members: ${credential.issuer}`, void 0, {
1727
1692
  F: __dxlog_file6,
1728
- L: 228,
1693
+ L: 241,
1729
1694
  S: this,
1730
1695
  C: (f, a) => f(...a)
1731
1696
  });
@@ -1759,42 +1724,35 @@ var SpaceStateMachine = class {
1759
1724
  return this._canInviteNewMembers(memberKey);
1760
1725
  }
1761
1726
  _canInviteNewMembers(key) {
1727
+ if (this._membershipPolicy === MembershipPolicy2.LOCKED) {
1728
+ return key.equals(this._spaceKey) && this._members.members.size === 0;
1729
+ }
1762
1730
  return key.equals(this._spaceKey) || this._members.getRole(key) === SpaceMember3.Role.ADMIN || this._members.getRole(key) === SpaceMember3.Role.OWNER;
1763
1731
  }
1764
- constructor(_spaceKey) {
1765
- _define_property6(this, "_spaceKey", void 0);
1766
- _define_property6(this, "_members", void 0);
1767
- _define_property6(this, "_feeds", void 0);
1768
- _define_property6(this, "_invitations", void 0);
1769
- _define_property6(this, "_credentials", void 0);
1770
- _define_property6(this, "_credentialsById", void 0);
1771
- _define_property6(this, "_processedCredentials", void 0);
1772
- _define_property6(this, "_genesisCredential", void 0);
1773
- _define_property6(this, "_credentialProcessors", void 0);
1774
- _define_property6(this, "onCredentialProcessed", void 0);
1775
- _define_property6(this, "onMemberRoleChanged", void 0);
1776
- _define_property6(this, "onFeedAdmitted", void 0);
1777
- _define_property6(this, "onDelegatedInvitation", void 0);
1778
- _define_property6(this, "onDelegatedInvitationRemoved", void 0);
1779
- this._spaceKey = _spaceKey;
1780
- this._invitations = new InvitationStateMachine();
1781
- this._credentials = [];
1782
- this._credentialsById = new ComplexMap6(PublicKey8.hash);
1783
- this._processedCredentials = new ComplexSet3(PublicKey8.hash);
1784
- this._credentialProcessors = [];
1785
- this.onCredentialProcessed = new Callback4();
1786
- this.onDelegatedInvitation = this._invitations.onDelegatedInvitation;
1787
- this.onDelegatedInvitationRemoved = this._invitations.onDelegatedInvitationRemoved;
1788
- this._members = new MemberStateMachine(this._spaceKey);
1789
- this._feeds = new FeedStateMachine(this._spaceKey);
1790
- this.onMemberRoleChanged = this._members.onMemberRoleChanged;
1791
- this.onFeedAdmitted = this._feeds.onFeedAdmitted;
1792
- }
1793
1732
  };
1794
1733
  _ts_decorate([
1795
1734
  synchronized
1796
1735
  ], SpaceStateMachine.prototype, "process", null);
1797
1736
  var CredentialConsumer = class {
1737
+ processor;
1738
+ _onOpen;
1739
+ _onClose;
1740
+ _ctx = new Context(void 0, {
1741
+ F: __dxlog_file6,
1742
+ L: 291
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;
1751
+ constructor(processor, _onOpen, _onClose) {
1752
+ this.processor = processor;
1753
+ this._onOpen = _onOpen;
1754
+ this._onClose = _onClose;
1755
+ }
1798
1756
  /**
1799
1757
  * @internal
1800
1758
  */
@@ -1813,21 +1771,6 @@ var CredentialConsumer = class {
1813
1771
  await this._ctx.dispose();
1814
1772
  await this._onClose();
1815
1773
  }
1816
- constructor(processor, _onOpen, _onClose) {
1817
- _define_property6(this, "processor", void 0);
1818
- _define_property6(this, "_onOpen", void 0);
1819
- _define_property6(this, "_onClose", void 0);
1820
- _define_property6(this, "_ctx", void 0);
1821
- _define_property6(this, "_isReadyForLiveCredentials", void 0);
1822
- this.processor = processor;
1823
- this._onOpen = _onOpen;
1824
- this._onClose = _onClose;
1825
- this._ctx = new Context(void 0, {
1826
- F: __dxlog_file6,
1827
- L: 273
1828
- });
1829
- this._isReadyForLiveCredentials = false;
1830
- }
1831
1774
  };
1832
1775
 
1833
1776
  // src/processor/device-state-machine.ts
@@ -1836,21 +1779,16 @@ import { invariant as invariant6 } from "@dxos/invariant";
1836
1779
  import { PublicKey as PublicKey9 } from "@dxos/keys";
1837
1780
  import { log as log4 } from "@dxos/log";
1838
1781
  import { ComplexMap as ComplexMap7 } from "@dxos/util";
1839
- function _define_property7(obj, key, value) {
1840
- if (key in obj) {
1841
- Object.defineProperty(obj, key, {
1842
- value,
1843
- enumerable: true,
1844
- configurable: true,
1845
- writable: true
1846
- });
1847
- } else {
1848
- obj[key] = value;
1849
- }
1850
- return obj;
1851
- }
1852
1782
  var __dxlog_file7 = "/__w/dxos/dxos/packages/core/halo/credentials/src/processor/device-state-machine.ts";
1853
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;
1789
+ constructor(_params) {
1790
+ this._params = _params;
1791
+ }
1854
1792
  async processCredential(credential) {
1855
1793
  log4("processing credential...", {
1856
1794
  identityKey: this._params.identityKey,
@@ -1858,7 +1796,7 @@ var DeviceStateMachine = class {
1858
1796
  credential
1859
1797
  }, {
1860
1798
  F: __dxlog_file7,
1861
- L: 36,
1799
+ L: 35,
1862
1800
  S: this,
1863
1801
  C: (f, a) => f(...a)
1864
1802
  });
@@ -1878,7 +1816,7 @@ var DeviceStateMachine = class {
1878
1816
  size: this.authorizedDeviceKeys.size
1879
1817
  }, {
1880
1818
  F: __dxlog_file7,
1881
- L: 56,
1819
+ L: 55,
1882
1820
  S: this,
1883
1821
  C: (f, a) => f(...a)
1884
1822
  });
@@ -1888,7 +1826,7 @@ var DeviceStateMachine = class {
1888
1826
  case "dxos.halo.credentials.DeviceProfile": {
1889
1827
  invariant6(this.authorizedDeviceKeys.has(credential.subject.id), "Device not found.", {
1890
1828
  F: __dxlog_file7,
1891
- L: 66,
1829
+ L: 65,
1892
1830
  S: this,
1893
1831
  A: [
1894
1832
  "this.authorizedDeviceKeys.has(credential.subject.id)",
@@ -1901,7 +1839,7 @@ var DeviceStateMachine = class {
1901
1839
  profile: assertion.profile
1902
1840
  }, {
1903
1841
  F: __dxlog_file7,
1904
- L: 69,
1842
+ L: 68,
1905
1843
  S: this,
1906
1844
  C: (f, a) => f(...a)
1907
1845
  });
@@ -1912,34 +1850,18 @@ var DeviceStateMachine = class {
1912
1850
  }
1913
1851
  }
1914
1852
  }
1915
- constructor(_params) {
1916
- _define_property7(this, "_params", void 0);
1917
- _define_property7(this, "authorizedDeviceKeys", void 0);
1918
- _define_property7(this, "deviceChainReady", void 0);
1919
- _define_property7(this, "deviceCredentialChain", void 0);
1920
- this._params = _params;
1921
- this.authorizedDeviceKeys = new ComplexMap7(PublicKey9.hash);
1922
- this.deviceChainReady = new Trigger();
1923
- }
1924
1853
  };
1925
1854
 
1926
1855
  // src/processor/profile-state-machine.ts
1927
1856
  import { log as log5 } from "@dxos/log";
1928
- function _define_property8(obj, key, value) {
1929
- if (key in obj) {
1930
- Object.defineProperty(obj, key, {
1931
- value,
1932
- enumerable: true,
1933
- configurable: true,
1934
- writable: true
1935
- });
1936
- } else {
1937
- obj[key] = value;
1938
- }
1939
- return obj;
1940
- }
1941
1857
  var __dxlog_file8 = "/__w/dxos/dxos/packages/core/halo/credentials/src/processor/profile-state-machine.ts";
1942
1858
  var ProfileStateMachine = class {
1859
+ _params;
1860
+ // TODO(burdon): Return values via getter.
1861
+ profile;
1862
+ constructor(_params) {
1863
+ this._params = _params;
1864
+ }
1943
1865
  async processCredential(credential) {
1944
1866
  const assertion = getCredentialAssertion(credential);
1945
1867
  switch (assertion["@type"]) {
@@ -1950,7 +1872,7 @@ var ProfileStateMachine = class {
1950
1872
  credential
1951
1873
  }, {
1952
1874
  F: __dxlog_file8,
1953
- L: 35,
1875
+ L: 34,
1954
1876
  S: this,
1955
1877
  C: (f, a) => f(...a)
1956
1878
  });
@@ -1962,7 +1884,7 @@ var ProfileStateMachine = class {
1962
1884
  profile: this.profile
1963
1885
  }, {
1964
1886
  F: __dxlog_file8,
1965
- L: 41,
1887
+ L: 40,
1966
1888
  S: this,
1967
1889
  C: (f, a) => f(...a)
1968
1890
  });
@@ -1971,11 +1893,6 @@ var ProfileStateMachine = class {
1971
1893
  }
1972
1894
  }
1973
1895
  }
1974
- constructor(_params) {
1975
- _define_property8(this, "_params", void 0);
1976
- _define_property8(this, "profile", void 0);
1977
- this._params = _params;
1978
- }
1979
1896
  };
1980
1897
  export {
1981
1898
  CredentialGenerator,