@dxos/credentials 0.8.4-main.c85a9c8dae → 0.8.4-main.cb12b3f963
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/neutral/index.mjs +75 -311
- package/dist/lib/neutral/index.mjs.map +3 -3
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/types/src/credentials/assertions.d.ts.map +1 -1
- 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/credentials/verifier.d.ts.map +1 -1
- package/dist/types/src/did.d.ts.map +1 -1
- package/dist/types/src/graph/credential-graph.d.ts.map +1 -1
- package/dist/types/src/passcode.d.ts.map +1 -1
- package/dist/types/src/presentations/presentation.d.ts.map +1 -1
- package/dist/types/src/presentations/signing.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.map +1 -1
- package/dist/types/src/processor/profile-state-machine.d.ts.map +1 -1
- package/dist/types/src/seedphrase.d.ts.map +1 -1
- package/dist/types/src/state-machine/feed-state-machine.d.ts.map +1 -1
- package/dist/types/src/state-machine/invitation-state-machine.d.ts.map +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 +7 -1
- package/dist/types/src/state-machine/space-state-machine.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -15
- package/src/credentials/credential-generator.ts +5 -0
- package/src/credentials/signing.ts +12 -0
- package/src/presentations/json-encoding.test.ts +0 -2
- package/src/presentations/presentation.ts +0 -1
- package/src/presentations/verifier.test.ts +0 -1
- package/src/presentations/verifier.ts +0 -1
- package/src/processor/device-state-machine.ts +0 -1
- package/src/processor/profile-state-machine.ts +0 -1
- package/src/state-machine/invitation-state-machine.test.ts +0 -1
- package/src/state-machine/member-state-machine.test.ts +0 -1
- package/src/state-machine/space-state-machine.test.ts +243 -2
- package/src/state-machine/space-state-machine.ts +20 -2
- package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
|
@@ -28,15 +28,7 @@ import { invariant } from "@dxos/invariant";
|
|
|
28
28
|
var __dxlog_file = "/__w/dxos/dxos/packages/core/halo/credentials/src/seedphrase.ts";
|
|
29
29
|
var generateSeedPhrase = () => generateMnemonic();
|
|
30
30
|
var keyPairFromSeedPhrase = (seedPhrase) => {
|
|
31
|
-
invariant(seedPhrase, void 0, {
|
|
32
|
-
F: __dxlog_file,
|
|
33
|
-
L: 20,
|
|
34
|
-
S: void 0,
|
|
35
|
-
A: [
|
|
36
|
-
"seedPhrase",
|
|
37
|
-
""
|
|
38
|
-
]
|
|
39
|
-
});
|
|
31
|
+
invariant(seedPhrase, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 13, S: void 0, A: ["seedPhrase", ""] });
|
|
40
32
|
const seed = mnemonicToSeedSync(seedPhrase);
|
|
41
33
|
return createKeyPair(seed);
|
|
42
34
|
};
|
|
@@ -68,6 +60,14 @@ var getCredentialProofPayload = (credential) => {
|
|
|
68
60
|
delete copy.parentCredentialIds;
|
|
69
61
|
}
|
|
70
62
|
delete copy.id;
|
|
63
|
+
const assertion = copy.subject?.assertion;
|
|
64
|
+
if (assertion) {
|
|
65
|
+
for (const key of Object.keys(assertion)) {
|
|
66
|
+
if (Array.isArray(assertion[key]) && assertion[key].length === 0) {
|
|
67
|
+
delete assertion[key];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
71
|
return Buffer.from(canonicalStringify(copy));
|
|
72
72
|
};
|
|
73
73
|
var canonicalStringify = (obj) => stableStringify(obj, {
|
|
@@ -228,35 +228,11 @@ var verifyChain = async (chain, authority, subject) => {
|
|
|
228
228
|
// src/credentials/credential-factory.ts
|
|
229
229
|
var __dxlog_file2 = "/__w/dxos/dxos/packages/core/halo/credentials/src/credentials/credential-factory.ts";
|
|
230
230
|
var createCredential = async ({ signer, issuer, subject, assertion, signingKey, chain, nonce, parentCredentialIds }) => {
|
|
231
|
-
invariant2(assertion["@type"], "Invalid assertion.", {
|
|
232
|
-
|
|
233
|
-
L: 48,
|
|
234
|
-
S: void 0,
|
|
235
|
-
A: [
|
|
236
|
-
"assertion['@type']",
|
|
237
|
-
"'Invalid assertion.'"
|
|
238
|
-
]
|
|
239
|
-
});
|
|
240
|
-
invariant2(!!signingKey === !!chain, "Chain must be provided if and only if the signing key differs from the issuer.", {
|
|
241
|
-
F: __dxlog_file2,
|
|
242
|
-
L: 49,
|
|
243
|
-
S: void 0,
|
|
244
|
-
A: [
|
|
245
|
-
"!!signingKey === !!chain",
|
|
246
|
-
"'Chain must be provided if and only if the signing key differs from the issuer.'"
|
|
247
|
-
]
|
|
248
|
-
});
|
|
231
|
+
invariant2(assertion["@type"], "Invalid assertion.", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 12, S: void 0, A: ["assertion['@type']", "'Invalid assertion.'"] });
|
|
232
|
+
invariant2(!!signingKey === !!chain, "Chain must be provided if and only if the signing key differs from the issuer.", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 13, S: void 0, A: ["!!signingKey === !!chain", "'Chain must be provided if and only if the signing key differs from the issuer.'"] });
|
|
249
233
|
if (chain) {
|
|
250
234
|
const result = await verifyChain(chain, issuer, signingKey);
|
|
251
|
-
invariant2(result.kind === "pass", "Invalid chain.", {
|
|
252
|
-
F: __dxlog_file2,
|
|
253
|
-
L: 52,
|
|
254
|
-
S: void 0,
|
|
255
|
-
A: [
|
|
256
|
-
"result.kind === 'pass'",
|
|
257
|
-
"'Invalid chain.'"
|
|
258
|
-
]
|
|
259
|
-
});
|
|
235
|
+
invariant2(result.kind === "pass", "Invalid chain.", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 16, S: void 0, A: ["result.kind === 'pass'", "'Invalid chain.'"] });
|
|
260
236
|
}
|
|
261
237
|
const credential = {
|
|
262
238
|
issuer,
|
|
@@ -314,7 +290,7 @@ var createCredentialSignerWithChain = (signer, chain, signingKey) => ({
|
|
|
314
290
|
});
|
|
315
291
|
|
|
316
292
|
// src/credentials/credential-generator.ts
|
|
317
|
-
import { AdmittedFeed, SpaceMember } from "@dxos/protocols/proto/dxos/halo/credentials";
|
|
293
|
+
import { AdmittedFeed, MembershipPolicy, SpaceMember } from "@dxos/protocols/proto/dxos/halo/credentials";
|
|
318
294
|
import { Timeframe as Timeframe2 } from "@dxos/timeframe";
|
|
319
295
|
var CredentialGenerator = class {
|
|
320
296
|
_signer;
|
|
@@ -328,7 +304,7 @@ var CredentialGenerator = class {
|
|
|
328
304
|
/**
|
|
329
305
|
* Create genesis messages for new Space.
|
|
330
306
|
*/
|
|
331
|
-
async createSpaceGenesis(spaceKey, controlKey, creatorProfile) {
|
|
307
|
+
async createSpaceGenesis(spaceKey, controlKey, creatorProfile, membershipPolicy = MembershipPolicy.INVITE) {
|
|
332
308
|
return [
|
|
333
309
|
await createCredential({
|
|
334
310
|
signer: this._signer,
|
|
@@ -336,7 +312,8 @@ var CredentialGenerator = class {
|
|
|
336
312
|
subject: spaceKey,
|
|
337
313
|
assertion: {
|
|
338
314
|
"@type": "dxos.halo.credentials.SpaceGenesis",
|
|
339
|
-
spaceKey
|
|
315
|
+
spaceKey,
|
|
316
|
+
membershipPolicy
|
|
340
317
|
}
|
|
341
318
|
}),
|
|
342
319
|
await createCredential({
|
|
@@ -463,7 +440,7 @@ var createDeviceAuthorization = async (signer, identityKey, deviceKey) => {
|
|
|
463
440
|
credential
|
|
464
441
|
}));
|
|
465
442
|
};
|
|
466
|
-
var createAdmissionCredentials = async (signer, identityKey, spaceKey, genesisFeedKey, role = SpaceMember.Role.ADMIN, membershipChainHeads = [], profile, invitationCredentialId) => {
|
|
443
|
+
var createAdmissionCredentials = async (signer, identityKey, spaceKey, genesisFeedKey, role = SpaceMember.Role.ADMIN, membershipChainHeads = [], profile, invitationCredentialId, tags) => {
|
|
467
444
|
const credentials = await Promise.all([
|
|
468
445
|
await signer.createCredential({
|
|
469
446
|
subject: identityKey,
|
|
@@ -474,7 +451,8 @@ var createAdmissionCredentials = async (signer, identityKey, spaceKey, genesisFe
|
|
|
474
451
|
role,
|
|
475
452
|
profile,
|
|
476
453
|
genesisFeedKey,
|
|
477
|
-
invitationCredentialId
|
|
454
|
+
invitationCredentialId,
|
|
455
|
+
tags: tags ?? []
|
|
478
456
|
}
|
|
479
457
|
})
|
|
480
458
|
]);
|
|
@@ -631,7 +609,7 @@ import { runInContextAsync, synchronized } from "@dxos/async";
|
|
|
631
609
|
import { Context } from "@dxos/context";
|
|
632
610
|
import { PublicKey as PublicKey8 } from "@dxos/keys";
|
|
633
611
|
import { log as log3 } from "@dxos/log";
|
|
634
|
-
import { SpaceMember as SpaceMember3 } from "@dxos/protocols/proto/dxos/halo/credentials";
|
|
612
|
+
import { MembershipPolicy as MembershipPolicy2, SpaceMember as SpaceMember3 } from "@dxos/protocols/proto/dxos/halo/credentials";
|
|
635
613
|
import { Callback as Callback4, ComplexMap as ComplexMap6, ComplexSet as ComplexSet3 } from "@dxos/util";
|
|
636
614
|
|
|
637
615
|
// src/state-machine/feed-state-machine.ts
|
|
@@ -657,24 +635,8 @@ var FeedStateMachine = class {
|
|
|
657
635
|
*/
|
|
658
636
|
async process(credential, fromFeed) {
|
|
659
637
|
const assertion = getCredentialAssertion(credential);
|
|
660
|
-
invariant3(assertion["@type"] === "dxos.halo.credentials.AdmittedFeed", void 0, {
|
|
661
|
-
|
|
662
|
-
L: 47,
|
|
663
|
-
S: this,
|
|
664
|
-
A: [
|
|
665
|
-
"assertion['@type'] === 'dxos.halo.credentials.AdmittedFeed'",
|
|
666
|
-
""
|
|
667
|
-
]
|
|
668
|
-
});
|
|
669
|
-
invariant3(assertion.spaceKey.equals(this._spaceKey), void 0, {
|
|
670
|
-
F: __dxlog_file3,
|
|
671
|
-
L: 48,
|
|
672
|
-
S: this,
|
|
673
|
-
A: [
|
|
674
|
-
"assertion.spaceKey.equals(this._spaceKey)",
|
|
675
|
-
""
|
|
676
|
-
]
|
|
677
|
-
});
|
|
638
|
+
invariant3(assertion["@type"] === "dxos.halo.credentials.AdmittedFeed", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 28, S: this, A: ["assertion['@type'] === 'dxos.halo.credentials.AdmittedFeed'", ""] });
|
|
639
|
+
invariant3(assertion.spaceKey.equals(this._spaceKey), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 29, S: this, A: ["assertion.spaceKey.equals(this._spaceKey)", ""] });
|
|
678
640
|
const info = {
|
|
679
641
|
key: credential.subject.id,
|
|
680
642
|
credential,
|
|
@@ -837,12 +799,7 @@ var CredentialGraph = class {
|
|
|
837
799
|
log.error("credential skipped because of the unknown parent", {
|
|
838
800
|
credential,
|
|
839
801
|
parentId
|
|
840
|
-
}, {
|
|
841
|
-
F: __dxlog_file4,
|
|
842
|
-
L: 72,
|
|
843
|
-
S: this,
|
|
844
|
-
C: (f, a) => f(...a)
|
|
845
|
-
});
|
|
802
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 70, S: this });
|
|
846
803
|
continue;
|
|
847
804
|
}
|
|
848
805
|
parentVertex.children.push(newVertex);
|
|
@@ -859,29 +816,13 @@ var CredentialGraph = class {
|
|
|
859
816
|
if (sentinelIdx >= 0) {
|
|
860
817
|
vertex.children.splice(sentinelIdx, 1);
|
|
861
818
|
const vertexInSentinelIdx = this._sentinel.parents.indexOf(vertex);
|
|
862
|
-
invariant4(vertexInSentinelIdx >= 0, void 0, {
|
|
863
|
-
F: __dxlog_file4,
|
|
864
|
-
L: 90,
|
|
865
|
-
S: this,
|
|
866
|
-
A: [
|
|
867
|
-
"vertexInSentinelIdx >= 0",
|
|
868
|
-
""
|
|
869
|
-
]
|
|
870
|
-
});
|
|
819
|
+
invariant4(vertexInSentinelIdx >= 0, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 90, S: this, A: ["vertexInSentinelIdx >= 0", ""] });
|
|
871
820
|
this._sentinel.parents.splice(vertexInSentinelIdx, 1);
|
|
872
821
|
}
|
|
873
822
|
}
|
|
874
823
|
async _onVertexInserted(newVertex) {
|
|
875
824
|
const { credential, assertion } = newVertex;
|
|
876
|
-
invariant4(credential, void 0, {
|
|
877
|
-
F: __dxlog_file4,
|
|
878
|
-
L: 97,
|
|
879
|
-
S: this,
|
|
880
|
-
A: [
|
|
881
|
-
"credential",
|
|
882
|
-
""
|
|
883
|
-
]
|
|
884
|
-
});
|
|
825
|
+
invariant4(credential, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 96, S: this, A: ["credential", ""] });
|
|
885
826
|
let changedSubjects = [];
|
|
886
827
|
const isUpdateAppliedOnTopOfThePreviousState = this._sentinel.parents.length === 1;
|
|
887
828
|
if (isUpdateAppliedOnTopOfThePreviousState) {
|
|
@@ -918,21 +859,11 @@ var CredentialGraph = class {
|
|
|
918
859
|
const path = paths.pop();
|
|
919
860
|
log("visit vertex", {
|
|
920
861
|
id: path.head.id
|
|
921
|
-
}, {
|
|
922
|
-
F: __dxlog_file4,
|
|
923
|
-
L: 132,
|
|
924
|
-
S: this,
|
|
925
|
-
C: (f, a) => f(...a)
|
|
926
|
-
});
|
|
862
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 131, S: this });
|
|
927
863
|
this._updatePathState(path);
|
|
928
864
|
const convergedPaths = this._handleMergePoint(paths, pendingPaths, path);
|
|
929
865
|
if (convergedPaths == null) {
|
|
930
|
-
log("waiting for other paths", void 0, {
|
|
931
|
-
F: __dxlog_file4,
|
|
932
|
-
L: 136,
|
|
933
|
-
S: this,
|
|
934
|
-
C: (f, a) => f(...a)
|
|
935
|
-
});
|
|
866
|
+
log("waiting for other paths", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 137, S: this });
|
|
936
867
|
continue;
|
|
937
868
|
}
|
|
938
869
|
const mergeResult = this._mergePaths(convergedPaths);
|
|
@@ -956,12 +887,7 @@ var CredentialGraph = class {
|
|
|
956
887
|
path: toChosenPath(p),
|
|
957
888
|
head: p.head.id
|
|
958
889
|
}))
|
|
959
|
-
}, {
|
|
960
|
-
F: __dxlog_file4,
|
|
961
|
-
L: 155,
|
|
962
|
-
S: this,
|
|
963
|
-
C: (f, a) => f(...a)
|
|
964
|
-
});
|
|
890
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 156, S: this });
|
|
965
891
|
}
|
|
966
892
|
return this._setCurrentState(lastPath);
|
|
967
893
|
}
|
|
@@ -982,12 +908,7 @@ var CredentialGraph = class {
|
|
|
982
908
|
path: toChosenPath(path),
|
|
983
909
|
overrides: path?.stateOverrides?.mapValues((v) => this._stateHandler.toLogString(v.assertion))
|
|
984
910
|
}))
|
|
985
|
-
}), {
|
|
986
|
-
F: __dxlog_file4,
|
|
987
|
-
L: 175,
|
|
988
|
-
S: this,
|
|
989
|
-
C: (f, a) => f(...a)
|
|
990
|
-
});
|
|
911
|
+
}), { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 175, S: this });
|
|
991
912
|
const clearedPending = convergedPaths.filter((l) => !mergeResult.replay.includes(l));
|
|
992
913
|
pendingPaths.set(convergedPaths[0].head.id, clearedPending);
|
|
993
914
|
}
|
|
@@ -999,12 +920,7 @@ var CredentialGraph = class {
|
|
|
999
920
|
return null;
|
|
1000
921
|
}
|
|
1001
922
|
if (path.head.id === this._sentinel.id && paths.length > 0) {
|
|
1002
|
-
log("waiting for all the active paths to converge on the sentinel", void 0, {
|
|
1003
|
-
F: __dxlog_file4,
|
|
1004
|
-
L: 199,
|
|
1005
|
-
S: this,
|
|
1006
|
-
C: (f, a) => f(...a)
|
|
1007
|
-
});
|
|
923
|
+
log("waiting for all the active paths to converge on the sentinel", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 194, S: this });
|
|
1008
924
|
return null;
|
|
1009
925
|
}
|
|
1010
926
|
pendingPaths.delete(path.head.id);
|
|
@@ -1029,12 +945,7 @@ var CredentialGraph = class {
|
|
|
1029
945
|
log("path state updated", () => ({
|
|
1030
946
|
subject: updatedSubject,
|
|
1031
947
|
newState: this._stateHandler.toLogString(path.head.assertion)
|
|
1032
|
-
}), {
|
|
1033
|
-
F: __dxlog_file4,
|
|
1034
|
-
L: 223,
|
|
1035
|
-
S: this,
|
|
1036
|
-
C: (f, a) => f(...a)
|
|
1037
|
-
});
|
|
948
|
+
}), { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 217, S: this });
|
|
1038
949
|
}
|
|
1039
950
|
}
|
|
1040
951
|
_forkTraversal(paths, path) {
|
|
@@ -1044,12 +955,7 @@ var CredentialGraph = class {
|
|
|
1044
955
|
log("edge traversal", {
|
|
1045
956
|
from: path.head.id,
|
|
1046
957
|
to: choice.id
|
|
1047
|
-
}, {
|
|
1048
|
-
F: __dxlog_file4,
|
|
1049
|
-
L: 234,
|
|
1050
|
-
S: this,
|
|
1051
|
-
C: (f, a) => f(...a)
|
|
1052
|
-
});
|
|
958
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 227, S: this });
|
|
1053
959
|
const fork = {
|
|
1054
960
|
forkPoint: path,
|
|
1055
961
|
chosenPath: {
|
|
@@ -1142,15 +1048,7 @@ var CredentialGraph = class {
|
|
|
1142
1048
|
return path;
|
|
1143
1049
|
}
|
|
1144
1050
|
_mergePaths(convergedPaths) {
|
|
1145
|
-
invariant4(convergedPaths.length >= 1, void 0, {
|
|
1146
|
-
F: __dxlog_file4,
|
|
1147
|
-
L: 324,
|
|
1148
|
-
S: this,
|
|
1149
|
-
A: [
|
|
1150
|
-
"convergedPaths.length >= 1",
|
|
1151
|
-
""
|
|
1152
|
-
]
|
|
1153
|
-
});
|
|
1051
|
+
invariant4(convergedPaths.length >= 1, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 320, S: this, A: ["convergedPaths.length >= 1", ""] });
|
|
1154
1052
|
if (convergedPaths.length === 1) {
|
|
1155
1053
|
return {
|
|
1156
1054
|
type: "merged",
|
|
@@ -1162,22 +1060,9 @@ var CredentialGraph = class {
|
|
|
1162
1060
|
forkPointId: forkPoint.head.id,
|
|
1163
1061
|
pathCount: convergedPaths.length,
|
|
1164
1062
|
forkPoints: convergedPaths.map((fp) => fp.forkPoint?.head.id)
|
|
1165
|
-
}), {
|
|
1166
|
-
F: __dxlog_file4,
|
|
1167
|
-
L: 329,
|
|
1168
|
-
S: this,
|
|
1169
|
-
C: (f, a) => f(...a)
|
|
1170
|
-
});
|
|
1063
|
+
}), { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 328, S: this });
|
|
1171
1064
|
const paths = convergedPaths.map((p) => this._moveUpToForkPoint(forkPoint, p));
|
|
1172
|
-
invariant4(forkPoint, void 0, {
|
|
1173
|
-
F: __dxlog_file4,
|
|
1174
|
-
L: 335,
|
|
1175
|
-
S: this,
|
|
1176
|
-
A: [
|
|
1177
|
-
"forkPoint",
|
|
1178
|
-
""
|
|
1179
|
-
]
|
|
1180
|
-
});
|
|
1065
|
+
invariant4(forkPoint, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 334, S: this, A: ["forkPoint", ""] });
|
|
1181
1066
|
const result = {
|
|
1182
1067
|
forkPoint: forkPoint.forkPoint,
|
|
1183
1068
|
chosenPath: {
|
|
@@ -1198,12 +1083,7 @@ var CredentialGraph = class {
|
|
|
1198
1083
|
modified: path.forkChangedSubjects,
|
|
1199
1084
|
forkIssuers: path.forkIssuers,
|
|
1200
1085
|
state: path.state.mapValues((v) => this._stateHandler.toLogString(v.assertion))
|
|
1201
|
-
}), {
|
|
1202
|
-
F: __dxlog_file4,
|
|
1203
|
-
L: 348,
|
|
1204
|
-
S: this,
|
|
1205
|
-
C: (f, a) => f(...a)
|
|
1206
|
-
});
|
|
1086
|
+
}), { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 350, S: this });
|
|
1207
1087
|
path.forkIssuers.forEach((iss) => result.forkIssuers.add(iss));
|
|
1208
1088
|
path.credentials.forEach((cred) => result.credentials.add(cred));
|
|
1209
1089
|
result.chosenPath[forkPoint.head.id].push(...path.chosenPath[forkPoint.head.id] ?? []);
|
|
@@ -1223,12 +1103,7 @@ var CredentialGraph = class {
|
|
|
1223
1103
|
log("set subject state", () => ({
|
|
1224
1104
|
subject,
|
|
1225
1105
|
state: this._stateHandler.toLogString(vertex.assertion)
|
|
1226
|
-
}), {
|
|
1227
|
-
F: __dxlog_file4,
|
|
1228
|
-
L: 370,
|
|
1229
|
-
S: this,
|
|
1230
|
-
C: (f, a) => f(...a)
|
|
1231
|
-
});
|
|
1106
|
+
}), { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 372, S: this });
|
|
1232
1107
|
const otherPaths = paths.filter((p) => p !== branch);
|
|
1233
1108
|
this._stateHandler.getConflictingPaths(otherPaths, vertex).forEach(addReplayPath);
|
|
1234
1109
|
}
|
|
@@ -1267,12 +1142,7 @@ var CredentialGraph = class {
|
|
|
1267
1142
|
if (candidateVertex.id === mergePointId || currentVertex.id === mergePointId) {
|
|
1268
1143
|
log("merge point chosen to break the tie", {
|
|
1269
1144
|
mergePointId: existing.head.id
|
|
1270
|
-
}, {
|
|
1271
|
-
F: __dxlog_file4,
|
|
1272
|
-
L: 408,
|
|
1273
|
-
S: this,
|
|
1274
|
-
C: (f, a) => f(...a)
|
|
1275
|
-
});
|
|
1145
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 412, S: this });
|
|
1276
1146
|
return mergePointId === candidateVertex.id;
|
|
1277
1147
|
}
|
|
1278
1148
|
const candidateCredential = candidateVertex.credential;
|
|
@@ -1281,12 +1151,7 @@ var CredentialGraph = class {
|
|
|
1281
1151
|
log("one of the credentials was overridden in another branch", {
|
|
1282
1152
|
current: currentVertex.id,
|
|
1283
1153
|
candidate: candidateVertex.id
|
|
1284
|
-
}, {
|
|
1285
|
-
F: __dxlog_file4,
|
|
1286
|
-
L: 415,
|
|
1287
|
-
S: this,
|
|
1288
|
-
C: (f, a) => f(...a)
|
|
1289
|
-
});
|
|
1154
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 421, S: this });
|
|
1290
1155
|
return candidate.credentials.has(currentCredential.id);
|
|
1291
1156
|
}
|
|
1292
1157
|
const winningCredential = this._stateHandler.tryPickWinningUpdate(existing, currentCredential, candidate, candidateCredential);
|
|
@@ -1299,20 +1164,10 @@ var CredentialGraph = class {
|
|
|
1299
1164
|
existing.forkIssuers.size,
|
|
1300
1165
|
candidate.forkIssuers.size
|
|
1301
1166
|
]
|
|
1302
|
-
}, {
|
|
1303
|
-
F: __dxlog_file4,
|
|
1304
|
-
L: 432,
|
|
1305
|
-
S: this,
|
|
1306
|
-
C: (f, a) => f(...a)
|
|
1307
|
-
});
|
|
1167
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 433, S: this });
|
|
1308
1168
|
return candidate.forkIssuers.size > existing.forkIssuers.size;
|
|
1309
1169
|
}
|
|
1310
|
-
log("issuance date used to break the tie", void 0, {
|
|
1311
|
-
F: __dxlog_file4,
|
|
1312
|
-
L: 437,
|
|
1313
|
-
S: this,
|
|
1314
|
-
C: (f, a) => f(...a)
|
|
1315
|
-
});
|
|
1170
|
+
log("issuance date used to break the tie", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 441, S: this });
|
|
1316
1171
|
return candidateCredential.issuanceDate.getTime() > currentCredential.issuanceDate.getTime();
|
|
1317
1172
|
}
|
|
1318
1173
|
_createRootPath() {
|
|
@@ -1364,15 +1219,7 @@ var MemberStateMachine = class {
|
|
|
1364
1219
|
const assertion = getCredentialAssertion(credential);
|
|
1365
1220
|
switch (assertion["@type"]) {
|
|
1366
1221
|
case "dxos.halo.credentials.SpaceMember": {
|
|
1367
|
-
invariant5(assertion.spaceKey.equals(this._spaceKey), void 0, {
|
|
1368
|
-
F: __dxlog_file5,
|
|
1369
|
-
L: 66,
|
|
1370
|
-
S: this,
|
|
1371
|
-
A: [
|
|
1372
|
-
"assertion.spaceKey.equals(this._spaceKey)",
|
|
1373
|
-
""
|
|
1374
|
-
]
|
|
1375
|
-
});
|
|
1222
|
+
invariant5(assertion.spaceKey.equals(this._spaceKey), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 43, S: this, A: ["assertion.spaceKey.equals(this._spaceKey)", ""] });
|
|
1376
1223
|
if (this._ownerKey == null && credential.issuer === this._spaceKey) {
|
|
1377
1224
|
this._ownerKey = credential.subject.id;
|
|
1378
1225
|
}
|
|
@@ -1389,12 +1236,7 @@ var MemberStateMachine = class {
|
|
|
1389
1236
|
} else {
|
|
1390
1237
|
log2.warn("Member not found", {
|
|
1391
1238
|
id: credential.subject.id
|
|
1392
|
-
}, {
|
|
1393
|
-
F: __dxlog_file5,
|
|
1394
|
-
L: 81,
|
|
1395
|
-
S: this,
|
|
1396
|
-
C: (f, a) => f(...a)
|
|
1397
|
-
});
|
|
1239
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 59, S: this });
|
|
1398
1240
|
}
|
|
1399
1241
|
this._memberProfiles.set(credential.subject.id, assertion.profile);
|
|
1400
1242
|
break;
|
|
@@ -1439,12 +1281,7 @@ var MemberStateMachine = class {
|
|
|
1439
1281
|
const path1IssuerRole = this._getRole(scope1, update1.issuer);
|
|
1440
1282
|
const path2IssuerRole = this._getRole(scope2, update2.issuer);
|
|
1441
1283
|
if (path2IssuerRole === SpaceMember2.Role.OWNER !== (path1IssuerRole === SpaceMember2.Role.OWNER)) {
|
|
1442
|
-
log2("owner decision used to break the tie", void 0, {
|
|
1443
|
-
F: __dxlog_file5,
|
|
1444
|
-
L: 139,
|
|
1445
|
-
S: this,
|
|
1446
|
-
C: (f, a) => f(...a)
|
|
1447
|
-
});
|
|
1284
|
+
log2("owner decision used to break the tie", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 107, S: this });
|
|
1448
1285
|
return path1IssuerRole === SpaceMember2.Role.OWNER ? update1 : update2;
|
|
1449
1286
|
}
|
|
1450
1287
|
return null;
|
|
@@ -1468,12 +1305,7 @@ var MemberStateMachine = class {
|
|
|
1468
1305
|
headId: scope.head?.id,
|
|
1469
1306
|
roleOverride: this.toLogString(override.assertion),
|
|
1470
1307
|
realRole: this.toLogString(scope.state.get(memberId)?.assertion)
|
|
1471
|
-
}), {
|
|
1472
|
-
F: __dxlog_file5,
|
|
1473
|
-
L: 162,
|
|
1474
|
-
S: this,
|
|
1475
|
-
C: (f, a) => f(...a)
|
|
1476
|
-
});
|
|
1308
|
+
}), { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 127, S: this });
|
|
1477
1309
|
return override.assertion.role;
|
|
1478
1310
|
}
|
|
1479
1311
|
}
|
|
@@ -1482,13 +1314,13 @@ var MemberStateMachine = class {
|
|
|
1482
1314
|
};
|
|
1483
1315
|
|
|
1484
1316
|
// src/state-machine/space-state-machine.ts
|
|
1317
|
+
var __dxlog_file6 = "/__w/dxos/dxos/packages/core/halo/credentials/src/state-machine/space-state-machine.ts";
|
|
1485
1318
|
function _ts_decorate(decorators, target, key, desc) {
|
|
1486
1319
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1487
1320
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1488
1321
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1489
1322
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1490
1323
|
}
|
|
1491
|
-
var __dxlog_file6 = "/__w/dxos/dxos/packages/core/halo/credentials/src/state-machine/space-state-machine.ts";
|
|
1492
1324
|
var SpaceStateMachine = class {
|
|
1493
1325
|
_spaceKey;
|
|
1494
1326
|
_members;
|
|
@@ -1498,6 +1330,8 @@ var SpaceStateMachine = class {
|
|
|
1498
1330
|
_credentialsById = new ComplexMap6(PublicKey8.hash);
|
|
1499
1331
|
_processedCredentials = new ComplexSet3(PublicKey8.hash);
|
|
1500
1332
|
_genesisCredential;
|
|
1333
|
+
_tags = [];
|
|
1334
|
+
_membershipPolicy = MembershipPolicy2.INVITE;
|
|
1501
1335
|
_credentialProcessors = [];
|
|
1502
1336
|
onCredentialProcessed = new Callback4();
|
|
1503
1337
|
onMemberRoleChanged;
|
|
@@ -1532,6 +1366,12 @@ var SpaceStateMachine = class {
|
|
|
1532
1366
|
get genesisCredential() {
|
|
1533
1367
|
return this._genesisCredential;
|
|
1534
1368
|
}
|
|
1369
|
+
get tags() {
|
|
1370
|
+
return this._tags;
|
|
1371
|
+
}
|
|
1372
|
+
get membershipPolicy() {
|
|
1373
|
+
return this._membershipPolicy;
|
|
1374
|
+
}
|
|
1535
1375
|
get invitations() {
|
|
1536
1376
|
return this._invitations.invitations;
|
|
1537
1377
|
}
|
|
@@ -1571,12 +1411,7 @@ var SpaceStateMachine = class {
|
|
|
1571
1411
|
if (!skipVerification) {
|
|
1572
1412
|
const result = await verifyCredential(credential);
|
|
1573
1413
|
if (result.kind !== "pass") {
|
|
1574
|
-
log3.warn(`Invalid credential: ${result.errors.join(", ")}`, void 0, {
|
|
1575
|
-
F: __dxlog_file6,
|
|
1576
|
-
L: 162,
|
|
1577
|
-
S: this,
|
|
1578
|
-
C: (f, a) => f(...a)
|
|
1579
|
-
});
|
|
1414
|
+
log3.warn(`Invalid credential: ${result.errors.join(", ")}`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 116, S: this });
|
|
1580
1415
|
return false;
|
|
1581
1416
|
}
|
|
1582
1417
|
}
|
|
@@ -1584,33 +1419,20 @@ var SpaceStateMachine = class {
|
|
|
1584
1419
|
switch (assertion["@type"]) {
|
|
1585
1420
|
case "dxos.halo.credentials.SpaceGenesis": {
|
|
1586
1421
|
if (this._genesisCredential) {
|
|
1587
|
-
log3.warn("Space already has a genesis credential.", void 0, {
|
|
1588
|
-
F: __dxlog_file6,
|
|
1589
|
-
L: 171,
|
|
1590
|
-
S: this,
|
|
1591
|
-
C: (f, a) => f(...a)
|
|
1592
|
-
});
|
|
1422
|
+
log3.warn("Space already has a genesis credential.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 125, S: this });
|
|
1593
1423
|
return false;
|
|
1594
1424
|
}
|
|
1595
1425
|
if (!credential.issuer.equals(this._spaceKey)) {
|
|
1596
|
-
log3.warn("Space genesis credential must be issued by space.", void 0, {
|
|
1597
|
-
F: __dxlog_file6,
|
|
1598
|
-
L: 175,
|
|
1599
|
-
S: this,
|
|
1600
|
-
C: (f, a) => f(...a)
|
|
1601
|
-
});
|
|
1426
|
+
log3.warn("Space genesis credential must be issued by space.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 129, S: this });
|
|
1602
1427
|
return false;
|
|
1603
1428
|
}
|
|
1604
1429
|
if (!credential.subject.id.equals(this._spaceKey)) {
|
|
1605
|
-
log3.warn("Space genesis credential must be issued to space.", void 0, {
|
|
1606
|
-
F: __dxlog_file6,
|
|
1607
|
-
L: 179,
|
|
1608
|
-
S: this,
|
|
1609
|
-
C: (f, a) => f(...a)
|
|
1610
|
-
});
|
|
1430
|
+
log3.warn("Space genesis credential must be issued to space.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 133, S: this });
|
|
1611
1431
|
return false;
|
|
1612
1432
|
}
|
|
1613
1433
|
this._genesisCredential = credential;
|
|
1434
|
+
this._tags = assertion.tags ?? [];
|
|
1435
|
+
this._membershipPolicy = assertion.membershipPolicy ?? MembershipPolicy2.INVITE;
|
|
1614
1436
|
break;
|
|
1615
1437
|
}
|
|
1616
1438
|
case "dxos.halo.credentials.SpaceMember": {
|
|
@@ -1618,21 +1440,11 @@ var SpaceStateMachine = class {
|
|
|
1618
1440
|
break;
|
|
1619
1441
|
}
|
|
1620
1442
|
if (!this._genesisCredential) {
|
|
1621
|
-
log3.warn("Space must have a genesis credential before adding members.", void 0, {
|
|
1622
|
-
F: __dxlog_file6,
|
|
1623
|
-
L: 192,
|
|
1624
|
-
S: this,
|
|
1625
|
-
C: (f, a) => f(...a)
|
|
1626
|
-
});
|
|
1443
|
+
log3.warn("Space must have a genesis credential before adding members.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 147, S: this });
|
|
1627
1444
|
return false;
|
|
1628
1445
|
}
|
|
1629
1446
|
if (!this._canInviteNewMembers(credential.issuer)) {
|
|
1630
|
-
log3.warn(`Space member is not authorized to invite new members: ${credential.issuer}`, void 0, {
|
|
1631
|
-
F: __dxlog_file6,
|
|
1632
|
-
L: 196,
|
|
1633
|
-
S: this,
|
|
1634
|
-
C: (f, a) => f(...a)
|
|
1635
|
-
});
|
|
1447
|
+
log3.warn(`Space member is not authorized to invite new members: ${credential.issuer}`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 151, S: this });
|
|
1636
1448
|
return false;
|
|
1637
1449
|
}
|
|
1638
1450
|
await this._members.process(credential);
|
|
@@ -1641,12 +1453,7 @@ var SpaceStateMachine = class {
|
|
|
1641
1453
|
}
|
|
1642
1454
|
case "dxos.halo.credentials.MemberProfile": {
|
|
1643
1455
|
if (!this._genesisCredential) {
|
|
1644
|
-
log3.warn("Space must have a genesis credential before adding members.", void 0, {
|
|
1645
|
-
F: __dxlog_file6,
|
|
1646
|
-
L: 207,
|
|
1647
|
-
S: this,
|
|
1648
|
-
C: (f, a) => f(...a)
|
|
1649
|
-
});
|
|
1456
|
+
log3.warn("Space must have a genesis credential before adding members.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 161, S: this });
|
|
1650
1457
|
return false;
|
|
1651
1458
|
}
|
|
1652
1459
|
await this._members.process(credential);
|
|
@@ -1654,12 +1461,7 @@ var SpaceStateMachine = class {
|
|
|
1654
1461
|
}
|
|
1655
1462
|
case "dxos.halo.credentials.AdmittedFeed": {
|
|
1656
1463
|
if (!this._genesisCredential) {
|
|
1657
|
-
log3.warn("Space must have a genesis credential before admitting feeds.", void 0, {
|
|
1658
|
-
F: __dxlog_file6,
|
|
1659
|
-
L: 217,
|
|
1660
|
-
S: this,
|
|
1661
|
-
C: (f, a) => f(...a)
|
|
1662
|
-
});
|
|
1464
|
+
log3.warn("Space must have a genesis credential before admitting feeds.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 170, S: this });
|
|
1663
1465
|
return false;
|
|
1664
1466
|
}
|
|
1665
1467
|
await this._feeds.process(credential, sourceFeed);
|
|
@@ -1668,12 +1470,7 @@ var SpaceStateMachine = class {
|
|
|
1668
1470
|
case "dxos.halo.invitations.CancelDelegatedInvitation":
|
|
1669
1471
|
case "dxos.halo.invitations.DelegateSpaceInvitation": {
|
|
1670
1472
|
if (!this._canInviteNewMembers(credential.issuer)) {
|
|
1671
|
-
log3.warn(`Invalid invitation, space member is not authorized to invite new members: ${credential.issuer}`, void 0, {
|
|
1672
|
-
F: __dxlog_file6,
|
|
1673
|
-
L: 228,
|
|
1674
|
-
S: this,
|
|
1675
|
-
C: (f, a) => f(...a)
|
|
1676
|
-
});
|
|
1473
|
+
log3.warn(`Invalid invitation, space member is not authorized to invite new members: ${credential.issuer}`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 181, S: this });
|
|
1677
1474
|
return false;
|
|
1678
1475
|
}
|
|
1679
1476
|
await this._invitations.process(credential);
|
|
@@ -1704,6 +1501,9 @@ var SpaceStateMachine = class {
|
|
|
1704
1501
|
return this._canInviteNewMembers(memberKey);
|
|
1705
1502
|
}
|
|
1706
1503
|
_canInviteNewMembers(key) {
|
|
1504
|
+
if (this._membershipPolicy === MembershipPolicy2.LOCKED) {
|
|
1505
|
+
return key.equals(this._spaceKey) && this._members.members.size === 0;
|
|
1506
|
+
}
|
|
1707
1507
|
return key.equals(this._spaceKey) || this._members.getRole(key) === SpaceMember3.Role.ADMIN || this._members.getRole(key) === SpaceMember3.Role.OWNER;
|
|
1708
1508
|
}
|
|
1709
1509
|
};
|
|
@@ -1714,10 +1514,7 @@ var CredentialConsumer = class {
|
|
|
1714
1514
|
processor;
|
|
1715
1515
|
_onOpen;
|
|
1716
1516
|
_onClose;
|
|
1717
|
-
_ctx = new Context(void 0, {
|
|
1718
|
-
F: __dxlog_file6,
|
|
1719
|
-
L: 273
|
|
1720
|
-
});
|
|
1517
|
+
_ctx = new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 229 });
|
|
1721
1518
|
/**
|
|
1722
1519
|
* @internal
|
|
1723
1520
|
* Processor is ready to process live credentials.
|
|
@@ -1771,12 +1568,7 @@ var DeviceStateMachine = class {
|
|
|
1771
1568
|
identityKey: this._params.identityKey,
|
|
1772
1569
|
deviceKey: this._params.deviceKey,
|
|
1773
1570
|
credential
|
|
1774
|
-
}, {
|
|
1775
|
-
F: __dxlog_file7,
|
|
1776
|
-
L: 36,
|
|
1777
|
-
S: this,
|
|
1778
|
-
C: (f, a) => f(...a)
|
|
1779
|
-
});
|
|
1571
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file7, L: 22, S: this });
|
|
1780
1572
|
if (isValidAuthorizedDeviceCredential(credential, this._params.identityKey, this._params.deviceKey)) {
|
|
1781
1573
|
this.deviceCredentialChain = {
|
|
1782
1574
|
credential
|
|
@@ -1791,35 +1583,17 @@ var DeviceStateMachine = class {
|
|
|
1791
1583
|
localDeviceKey: this._params.deviceKey,
|
|
1792
1584
|
deviceKey: assertion.deviceKey,
|
|
1793
1585
|
size: this.authorizedDeviceKeys.size
|
|
1794
|
-
}, {
|
|
1795
|
-
F: __dxlog_file7,
|
|
1796
|
-
L: 56,
|
|
1797
|
-
S: this,
|
|
1798
|
-
C: (f, a) => f(...a)
|
|
1799
|
-
});
|
|
1586
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file7, L: 41, S: this });
|
|
1800
1587
|
this._params.onUpdate?.();
|
|
1801
1588
|
break;
|
|
1802
1589
|
}
|
|
1803
1590
|
case "dxos.halo.credentials.DeviceProfile": {
|
|
1804
|
-
invariant6(this.authorizedDeviceKeys.has(credential.subject.id), "Device not found.", {
|
|
1805
|
-
F: __dxlog_file7,
|
|
1806
|
-
L: 66,
|
|
1807
|
-
S: this,
|
|
1808
|
-
A: [
|
|
1809
|
-
"this.authorizedDeviceKeys.has(credential.subject.id)",
|
|
1810
|
-
"'Device not found.'"
|
|
1811
|
-
]
|
|
1812
|
-
});
|
|
1591
|
+
invariant6(this.authorizedDeviceKeys.has(credential.subject.id), "Device not found.", { "~LogMeta": "~LogMeta", F: __dxlog_file7, L: 51, S: this, A: ["this.authorizedDeviceKeys.has(credential.subject.id)", "'Device not found.'"] });
|
|
1813
1592
|
if (assertion && credential.subject.id.equals(this._params.deviceKey)) {
|
|
1814
1593
|
log4.trace("dxos.halo.device", {
|
|
1815
1594
|
deviceKey: credential.subject.id,
|
|
1816
1595
|
profile: assertion.profile
|
|
1817
|
-
}, {
|
|
1818
|
-
F: __dxlog_file7,
|
|
1819
|
-
L: 69,
|
|
1820
|
-
S: this,
|
|
1821
|
-
C: (f, a) => f(...a)
|
|
1822
|
-
});
|
|
1596
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file7, L: 53, S: this });
|
|
1823
1597
|
}
|
|
1824
1598
|
this.authorizedDeviceKeys.set(credential.subject.id, assertion.profile);
|
|
1825
1599
|
this._params.onUpdate?.();
|
|
@@ -1847,24 +1621,14 @@ var ProfileStateMachine = class {
|
|
|
1847
1621
|
log5.warn("Invalid profile credential", {
|
|
1848
1622
|
expectedIdentity: this._params.identityKey,
|
|
1849
1623
|
credential
|
|
1850
|
-
}, {
|
|
1851
|
-
F: __dxlog_file8,
|
|
1852
|
-
L: 35,
|
|
1853
|
-
S: this,
|
|
1854
|
-
C: (f, a) => f(...a)
|
|
1855
|
-
});
|
|
1624
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 21, S: this });
|
|
1856
1625
|
return;
|
|
1857
1626
|
}
|
|
1858
1627
|
this.profile = assertion.profile;
|
|
1859
1628
|
log5("updated profile", {
|
|
1860
1629
|
identityKey: this._params.identityKey,
|
|
1861
1630
|
profile: this.profile
|
|
1862
|
-
}, {
|
|
1863
|
-
F: __dxlog_file8,
|
|
1864
|
-
L: 41,
|
|
1865
|
-
S: this,
|
|
1866
|
-
C: (f, a) => f(...a)
|
|
1867
|
-
});
|
|
1631
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file8, L: 29, S: this });
|
|
1868
1632
|
this._params.onUpdate?.();
|
|
1869
1633
|
break;
|
|
1870
1634
|
}
|