@interop/wallet-core 0.16.0 → 0.18.0
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/README.md +13 -13
- package/dist/clients/index.d.ts +4 -3
- package/dist/clients/index.d.ts.map +1 -1
- package/dist/clients/index.js +3 -2
- package/dist/clients/index.js.map +1 -1
- package/dist/clients/policy.d.ts +3 -3
- package/dist/clients/policy.d.ts.map +1 -1
- package/dist/clients/policy.js +1 -1
- package/dist/clients/revocation.d.ts +18 -15
- package/dist/clients/revocation.d.ts.map +1 -1
- package/dist/clients/revocation.js +42 -26
- package/dist/clients/revocation.js.map +1 -1
- package/dist/clients/rosterPolicy.d.ts +46 -24
- package/dist/clients/rosterPolicy.d.ts.map +1 -1
- package/dist/clients/rosterPolicy.js +106 -48
- package/dist/clients/rosterPolicy.js.map +1 -1
- package/dist/descriptors/refresh.d.ts +3 -1
- package/dist/descriptors/refresh.d.ts.map +1 -1
- package/dist/descriptors/refresh.js +3 -1
- package/dist/descriptors/refresh.js.map +1 -1
- package/dist/display/alignment.d.ts +8 -2
- package/dist/display/alignment.d.ts.map +1 -1
- package/dist/display/alignment.js +11 -8
- package/dist/display/alignment.js.map +1 -1
- package/dist/display/displayFields.d.ts +6 -2
- package/dist/display/displayFields.d.ts.map +1 -1
- package/dist/display/displayFields.js.map +1 -1
- package/dist/display/evidence.d.ts +9 -3
- package/dist/display/evidence.d.ts.map +1 -1
- package/dist/display/evidence.js +3 -1
- package/dist/display/evidence.js.map +1 -1
- package/dist/display/index.d.ts +1 -1
- package/dist/display/index.d.ts.map +1 -1
- package/dist/display/index.js +1 -1
- package/dist/display/index.js.map +1 -1
- package/dist/display/issuer.d.ts +12 -4
- package/dist/display/issuer.d.ts.map +1 -1
- package/dist/display/issuer.js.map +1 -1
- package/dist/display/obv3.d.ts +7 -2
- package/dist/display/obv3.d.ts.map +1 -1
- package/dist/display/obv3.js +14 -24
- package/dist/display/obv3.js.map +1 -1
- package/dist/display/parse.d.ts +6 -2
- package/dist/display/parse.d.ts.map +1 -1
- package/dist/display/parse.js +6 -2
- package/dist/display/parse.js.map +1 -1
- package/dist/display/subject.d.ts +4 -0
- package/dist/display/subject.d.ts.map +1 -1
- package/dist/display/subject.js +12 -10
- package/dist/display/subject.js.map +1 -1
- package/dist/display/text.d.ts +11 -0
- package/dist/display/text.d.ts.map +1 -1
- package/dist/display/text.js +20 -4
- package/dist/display/text.js.map +1 -1
- package/dist/display/types.js +1 -1
- package/dist/display/types.js.map +1 -1
- package/dist/display/validity.js +4 -4
- package/dist/display/validity.js.map +1 -1
- package/dist/display/verificationView.d.ts +21 -7
- package/dist/display/verificationView.d.ts.map +1 -1
- package/dist/display/verificationView.js.map +1 -1
- package/dist/enrollment/enrollment.d.ts +21 -19
- package/dist/enrollment/enrollment.d.ts.map +1 -1
- package/dist/enrollment/enrollment.js +98 -34
- package/dist/enrollment/enrollment.js.map +1 -1
- package/dist/enrollment/index.d.ts +1 -1
- package/dist/enrollment/index.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/keys/clientKeyRecord.d.ts +19 -17
- package/dist/keys/clientKeyRecord.d.ts.map +1 -1
- package/dist/keys/clientKeyRecord.js +77 -41
- package/dist/keys/clientKeyRecord.js.map +1 -1
- package/dist/keys/index.d.ts +19 -17
- package/dist/keys/index.d.ts.map +1 -1
- package/dist/keys/index.js +16 -14
- package/dist/keys/index.js.map +1 -1
- package/dist/keys/rosterStore.d.ts +3 -3
- package/dist/keys/rosterStore.d.ts.map +1 -1
- package/dist/keys/rosterStore.js +13 -13
- package/dist/keys/rosterStore.js.map +1 -1
- package/dist/keys/userKey.d.ts +43 -0
- package/dist/keys/userKey.d.ts.map +1 -0
- package/dist/keys/{puk.js → userKey.js} +23 -21
- package/dist/keys/userKey.js.map +1 -0
- package/dist/keys/{pukCascade.d.ts → userKeyCascade.d.ts} +69 -69
- package/dist/keys/userKeyCascade.d.ts.map +1 -0
- package/dist/keys/{pukCascade.js → userKeyCascade.js} +77 -75
- package/dist/keys/userKeyCascade.js.map +1 -0
- package/dist/keys/{pukRoster.d.ts → userKeyRoster.d.ts} +141 -64
- package/dist/keys/userKeyRoster.d.ts.map +1 -0
- package/dist/keys/{pukRoster.js → userKeyRoster.js} +200 -72
- package/dist/keys/userKeyRoster.js.map +1 -0
- package/dist/recovery/index.d.ts +1 -1
- package/dist/recovery/index.js +1 -1
- package/dist/recovery/recoveryCode.d.ts +1 -1
- package/dist/recovery/recoveryCode.js +6 -6
- package/dist/recovery/recoveryRecord.d.ts +1 -1
- package/dist/recovery/recoveryWebvh.d.ts +1 -1
- package/dist/recovery/recoveryWebvh.js +1 -1
- package/dist/request/classify.d.ts +15 -1
- package/dist/request/classify.d.ts.map +1 -1
- package/dist/request/classify.js +38 -14
- package/dist/request/classify.js.map +1 -1
- package/dist/request/composeVp.d.ts.map +1 -1
- package/dist/request/composeVp.js +10 -3
- package/dist/request/composeVp.js.map +1 -1
- package/dist/request/matching.d.ts +6 -0
- package/dist/request/matching.d.ts.map +1 -1
- package/dist/request/matching.js +33 -8
- package/dist/request/matching.js.map +1 -1
- package/dist/request/parse.d.ts +5 -2
- package/dist/request/parse.d.ts.map +1 -1
- package/dist/request/parse.js +30 -5
- package/dist/request/parse.js.map +1 -1
- package/dist/request/presentationSuite.d.ts.map +1 -1
- package/dist/request/presentationSuite.js +6 -2
- package/dist/request/presentationSuite.js.map +1 -1
- package/dist/request/processRequest.js +1 -1
- package/dist/request/processRequest.js.map +1 -1
- package/dist/space/activity.d.ts +22 -8
- package/dist/space/activity.d.ts.map +1 -1
- package/dist/space/activity.js +19 -7
- package/dist/space/activity.js.map +1 -1
- package/dist/space/collections.d.ts +33 -21
- package/dist/space/collections.d.ts.map +1 -1
- package/dist/space/collections.js +34 -22
- package/dist/space/collections.js.map +1 -1
- package/dist/space/index.d.ts +2 -2
- package/dist/space/index.d.ts.map +1 -1
- package/dist/space/index.js +2 -2
- package/dist/space/index.js.map +1 -1
- package/dist/space/wasLink.d.ts +6 -2
- package/dist/space/wasLink.d.ts.map +1 -1
- package/dist/space/wasLink.js +5 -2
- package/dist/space/wasLink.js.map +1 -1
- package/dist/sync/contactsConflict.d.ts +1 -1
- package/dist/sync/contactsConflict.js +1 -1
- package/dist/sync/engine.d.ts +33 -11
- package/dist/sync/engine.d.ts.map +1 -1
- package/dist/sync/engine.js +4 -3
- package/dist/sync/engine.js.map +1 -1
- package/dist/sync/pull.d.ts +5 -3
- package/dist/sync/pull.d.ts.map +1 -1
- package/dist/sync/pull.js +34 -10
- package/dist/sync/pull.js.map +1 -1
- package/dist/sync/push.d.ts.map +1 -1
- package/dist/sync/push.js +24 -8
- package/dist/sync/push.js.map +1 -1
- package/dist/sync/types.d.ts +30 -6
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/webvh/didWebvh.d.ts +29 -1
- package/dist/webvh/didWebvh.d.ts.map +1 -1
- package/dist/webvh/didWebvh.js +46 -11
- package/dist/webvh/didWebvh.js.map +1 -1
- package/dist/webvh/index.d.ts +1 -1
- package/dist/webvh/index.d.ts.map +1 -1
- package/dist/webvh/index.js +1 -1
- package/dist/webvh/index.js.map +1 -1
- package/dist/webvh/listClients.d.ts +19 -0
- package/dist/webvh/listClients.d.ts.map +1 -1
- package/dist/webvh/listClients.js +37 -1
- package/dist/webvh/listClients.js.map +1 -1
- package/dist/webvh/revokeClient.d.ts +11 -3
- package/dist/webvh/revokeClient.d.ts.map +1 -1
- package/dist/webvh/revokeClient.js +83 -14
- package/dist/webvh/revokeClient.js.map +1 -1
- package/package.json +3 -3
- package/dist/keys/puk.d.ts +0 -42
- package/dist/keys/puk.d.ts.map +0 -1
- package/dist/keys/puk.js.map +0 -1
- package/dist/keys/pukCascade.d.ts.map +0 -1
- package/dist/keys/pukCascade.js.map +0 -1
- package/dist/keys/pukRoster.d.ts.map +0 -1
- package/dist/keys/pukRoster.js.map +0 -1
|
@@ -1,12 +1,37 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { convergeUserKeyRosterToDocument, UserKeyRosterContinuityError, UserKeyRosterIntegrityError, UserKeyRosterUnwrapError, readUserKeyRoster } from '../keys/index.js';
|
|
2
2
|
import { verifyAccountLog } from '../webvh/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Whether a thrown error is one of the three roster refusals -- a rolled-back
|
|
5
|
+
* or replayed roster, an epoch configuration that fails authentication, and a
|
|
6
|
+
* current epoch this client cannot unwrap. They are the continuity class that
|
|
7
|
+
* refuses a session rather than degrading it, so both entry points rethrow
|
|
8
|
+
* them instead of warning and carrying on.
|
|
9
|
+
*
|
|
10
|
+
* @param err {unknown}
|
|
11
|
+
* @returns {boolean}
|
|
12
|
+
*/
|
|
13
|
+
function isRosterRefusal(err) {
|
|
14
|
+
return (err instanceof UserKeyRosterContinuityError ||
|
|
15
|
+
err instanceof UserKeyRosterIntegrityError ||
|
|
16
|
+
err instanceof UserKeyRosterUnwrapError);
|
|
17
|
+
}
|
|
3
18
|
/**
|
|
4
19
|
* The login-time roster read. See the module doc for the failure semantics.
|
|
5
20
|
*
|
|
21
|
+
* A read that adopts an epoch from the roster (a rotation by another client,
|
|
22
|
+
* or this client's first read) must trace it to the account document, so the
|
|
23
|
+
* account log is fetched and verified lazily on exactly that path (via
|
|
24
|
+
* `pointer`). A log that cannot be fetched then lands in the
|
|
25
|
+
* transport-failure class -- the session carries on under the cached key,
|
|
26
|
+
* WITHOUT adopting the unverifiable rotation -- while a roster whose epoch
|
|
27
|
+
* configuration no enrolled client signed is a refusal like the other three.
|
|
28
|
+
*
|
|
6
29
|
* @param options {object}
|
|
7
30
|
* @param options.store {EncryptionDescriptorStore} the roster's descriptor
|
|
8
31
|
* store
|
|
9
|
-
* @param
|
|
32
|
+
* @param options.pointer {AccountLogPointer} where the account log lives,
|
|
33
|
+
* for the lazy document verification above
|
|
34
|
+
* @param [options.userKey] {UserKey} this client's cached user key; omitted (a
|
|
10
35
|
* freshly enrolled client's first read) the key is always taken from the
|
|
11
36
|
* roster
|
|
12
37
|
* @param options.clientKeyAgreementKey {IKeyAgreementKey} this client's own
|
|
@@ -14,40 +39,39 @@ import { verifyAccountLog } from '../webvh/index.js';
|
|
|
14
39
|
* @param [options.pinnedEpochId] {string} the locally pinned latest-seen
|
|
15
40
|
* roster epoch
|
|
16
41
|
* @param [options.onRosterRead] {Function} called with the
|
|
17
|
-
* {@link
|
|
42
|
+
* {@link AdoptedUserKey} of every successful read (whether or not it rotated),
|
|
18
43
|
* so the epoch pin advances to the epoch just authenticated; the key and the
|
|
19
44
|
* pin must persist atomically
|
|
20
|
-
* @returns {Promise<
|
|
45
|
+
* @returns {Promise<UserKeyRosterReadResult | null>} the read, or `null` when
|
|
21
46
|
* the account has no roster yet or the server could not be reached
|
|
22
47
|
*/
|
|
23
|
-
export async function
|
|
48
|
+
export async function checkUserKeyRosterAtLogin({ store, pointer, userKey, clientKeyAgreementKey, pinnedEpochId, onRosterRead }) {
|
|
24
49
|
try {
|
|
25
|
-
const read = await
|
|
50
|
+
const read = await readUserKeyRoster({
|
|
26
51
|
store,
|
|
27
|
-
...(
|
|
52
|
+
...(userKey ? { userKey } : {}),
|
|
28
53
|
clientKeyAgreementKey,
|
|
29
|
-
pinnedEpochId
|
|
54
|
+
pinnedEpochId,
|
|
55
|
+
resolveDocument: async () => (await verifyAccountLog(pointer)).doc
|
|
30
56
|
});
|
|
31
57
|
if (!read) {
|
|
32
58
|
return null;
|
|
33
59
|
}
|
|
34
60
|
await onRosterRead?.({
|
|
35
|
-
|
|
61
|
+
userKey: read.userKey,
|
|
36
62
|
latestEpochId: read.latestEpochId,
|
|
37
63
|
descriptor: read.descriptor
|
|
38
64
|
});
|
|
39
65
|
return read;
|
|
40
66
|
}
|
|
41
67
|
catch (err) {
|
|
42
|
-
if (err
|
|
43
|
-
err instanceof PukRosterIntegrityError ||
|
|
44
|
-
err instanceof PukRosterUnwrapError) {
|
|
68
|
+
if (isRosterRefusal(err)) {
|
|
45
69
|
throw err;
|
|
46
70
|
}
|
|
47
71
|
// An unreachable server (or any transport hiccup) must not lock the user
|
|
48
72
|
// out of an offline start: the cached key stays authoritative.
|
|
49
73
|
console.warn('The wrap-set roster check failed; continuing with the cached ' +
|
|
50
|
-
'
|
|
74
|
+
'user key:', err);
|
|
51
75
|
return null;
|
|
52
76
|
}
|
|
53
77
|
}
|
|
@@ -56,70 +80,104 @@ export async function checkPukRosterAtLogin({ store, puk, clientKeyAgreementKey,
|
|
|
56
80
|
* adopting a rotation the ordinary way (a roster re-read) and handing back the
|
|
57
81
|
* key and descriptor the collection fan-out should run against.
|
|
58
82
|
*
|
|
59
|
-
* Best-effort
|
|
60
|
-
*
|
|
83
|
+
* Best-effort UP TO the rotation: a log that cannot be fetched or verified, or
|
|
84
|
+
* a roster that turns out to need nothing, resolves to the unchanged input,
|
|
85
|
+
* since the fan-out is still worth running on the key this start already has.
|
|
86
|
+
* Past the rotation it is not best-effort at all -- once the roster has moved
|
|
87
|
+
* to a fresh key, that key is readable only from the roster, so a failed
|
|
88
|
+
* adoption throws rather than reporting `rotated: false` with the retired key
|
|
89
|
+
* and descriptor (which would skip `onUserKeyAdopted` and fan the collections
|
|
90
|
+
* out onto the pre-rotation epoch). The three roster refusals rethrow
|
|
91
|
+
* throughout, exactly as {@link checkUserKeyRosterAtLogin} rethrows them.
|
|
61
92
|
*
|
|
62
93
|
* @param options {object}
|
|
63
94
|
* @param options.pointer {AccountLogPointer} where the account log lives
|
|
64
95
|
* @param options.store {EncryptionDescriptorStore} the roster's descriptor
|
|
65
96
|
* store
|
|
66
|
-
* @param options.
|
|
97
|
+
* @param options.userKey {UserKey} the start's current user key
|
|
67
98
|
* @param options.descriptor {CollectionEncryption} the start's roster read
|
|
68
99
|
* @param options.clientKeyAgreementKey {IKeyAgreementKey} this client's own
|
|
69
100
|
* (identity) key-agreement key
|
|
101
|
+
* @param options.signEpochs {EpochsSigner} this client's epoch-configuration
|
|
102
|
+
* signer (`userKeyRosterEpochsSigner`), for the rotation this call may perform
|
|
70
103
|
* @param [options.pinnedEpochId] {string} the locally pinned latest-seen
|
|
71
104
|
* roster epoch
|
|
72
|
-
* @param [options.
|
|
73
|
-
* {@link
|
|
105
|
+
* @param [options.onUserKeyAdopted] {Function} called with the
|
|
106
|
+
* {@link AdoptedUserKey} of a rotation, before the fan-out runs
|
|
74
107
|
* @returns {Promise<object>} whether the roster rotated on this call, the
|
|
75
108
|
* stale recipient kids found, and the key + descriptor to fan out with
|
|
76
109
|
*/
|
|
77
|
-
export async function
|
|
110
|
+
export async function convergeUserKeyRosterToAccount({ pointer, store, userKey, descriptor, clientKeyAgreementKey, signEpochs, pinnedEpochId, onUserKeyAdopted }) {
|
|
78
111
|
const unchanged = {
|
|
79
112
|
rotated: false,
|
|
80
113
|
staleRecipientIds: [],
|
|
81
|
-
|
|
114
|
+
userKey,
|
|
82
115
|
descriptor
|
|
83
116
|
};
|
|
117
|
+
let rotated;
|
|
118
|
+
let staleRecipientIds;
|
|
119
|
+
let accountDocument;
|
|
84
120
|
try {
|
|
85
121
|
const { doc } = await verifyAccountLog(pointer);
|
|
86
|
-
|
|
122
|
+
accountDocument = doc;
|
|
123
|
+
const converged = await convergeUserKeyRosterToDocument({
|
|
87
124
|
store,
|
|
88
125
|
document: doc,
|
|
89
|
-
descriptor
|
|
126
|
+
descriptor,
|
|
127
|
+
signEpochs
|
|
90
128
|
});
|
|
91
|
-
|
|
92
|
-
|
|
129
|
+
rotated = converged.rotated;
|
|
130
|
+
staleRecipientIds = converged.staleRecipientIds;
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
if (isRosterRefusal(err)) {
|
|
134
|
+
throw err;
|
|
93
135
|
}
|
|
94
|
-
console.warn('
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
136
|
+
console.warn('Could not converge the wrap-set roster onto the account document:', err);
|
|
137
|
+
return unchanged;
|
|
138
|
+
}
|
|
139
|
+
if (!rotated) {
|
|
140
|
+
return unchanged;
|
|
141
|
+
}
|
|
142
|
+
console.warn('The wrap-set roster still wrapped the current key to ' +
|
|
143
|
+
`${staleRecipientIds.length} recipient(s) the account document no ` +
|
|
144
|
+
'longer keys; the rotation has been completed.');
|
|
145
|
+
// Rotated: the fresh key is only readable from the roster, so re-read it
|
|
146
|
+
// and adopt it before the collection fan-out runs against it. A failure
|
|
147
|
+
// here cannot resolve to the unchanged input -- the roster HAS moved.
|
|
148
|
+
let read;
|
|
149
|
+
try {
|
|
150
|
+
read = await readUserKeyRoster({
|
|
100
151
|
store,
|
|
101
|
-
|
|
152
|
+
userKey,
|
|
102
153
|
clientKeyAgreementKey,
|
|
103
|
-
pinnedEpochId
|
|
154
|
+
pinnedEpochId,
|
|
155
|
+
document: accountDocument
|
|
104
156
|
});
|
|
105
|
-
if (!read) {
|
|
106
|
-
return unchanged;
|
|
107
|
-
}
|
|
108
|
-
await onPukAdopted?.({
|
|
109
|
-
puk: read.puk,
|
|
110
|
-
latestEpochId: read.latestEpochId,
|
|
111
|
-
descriptor: read.descriptor
|
|
112
|
-
});
|
|
113
|
-
return {
|
|
114
|
-
rotated: true,
|
|
115
|
-
staleRecipientIds,
|
|
116
|
-
puk: read.puk,
|
|
117
|
-
descriptor: read.descriptor
|
|
118
|
-
};
|
|
119
157
|
}
|
|
120
158
|
catch (err) {
|
|
121
|
-
|
|
122
|
-
|
|
159
|
+
if (isRosterRefusal(err)) {
|
|
160
|
+
throw err;
|
|
161
|
+
}
|
|
162
|
+
throw new Error('The wrap-set roster was rotated onto a fresh user key, but the ' +
|
|
163
|
+
'read that adopts it failed; this session must not continue under ' +
|
|
164
|
+
'the retired key.', { cause: err });
|
|
165
|
+
}
|
|
166
|
+
if (!read) {
|
|
167
|
+
throw new Error('The wrap-set roster was rotated onto a fresh user key and then ' +
|
|
168
|
+
'reported absent; this session must not continue under the retired ' +
|
|
169
|
+
'key.');
|
|
123
170
|
}
|
|
171
|
+
await onUserKeyAdopted?.({
|
|
172
|
+
userKey: read.userKey,
|
|
173
|
+
latestEpochId: read.latestEpochId,
|
|
174
|
+
descriptor: read.descriptor
|
|
175
|
+
});
|
|
176
|
+
return {
|
|
177
|
+
rotated: true,
|
|
178
|
+
staleRecipientIds,
|
|
179
|
+
userKey: read.userKey,
|
|
180
|
+
descriptor: read.descriptor
|
|
181
|
+
};
|
|
124
182
|
}
|
|
125
183
|
//# sourceMappingURL=rosterPolicy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rosterPolicy.js","sourceRoot":"","sources":["../../src/clients/rosterPolicy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rosterPolicy.js","sourceRoot":"","sources":["../../src/clients/rosterPolicy.ts"],"names":[],"mappings":"AAoDA,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,EAIlB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAapD;;;;;;;;;GASG;AACH,SAAS,eAAe,CAAC,GAAY;IACnC,OAAO,CACL,GAAG,YAAY,4BAA4B;QAC3C,GAAG,YAAY,2BAA2B;QAC1C,GAAG,YAAY,wBAAwB,CACxC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,EAC9C,KAAK,EACL,OAAO,EACP,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,YAAY,EAQb;IACC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC;YACnC,KAAK;YACL,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,qBAAqB;YACrB,aAAa;YACb,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;SACnE,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,YAAY,EAAE,CAAC;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,CAAA;QACX,CAAC;QACD,yEAAyE;QACzE,+DAA+D;QAC/D,OAAO,CAAC,IAAI,CACV,+DAA+D;YAC7D,WAAW,EACb,GAAG,CACJ,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,EACnD,OAAO,EACP,KAAK,EACL,OAAO,EACP,UAAU,EACV,qBAAqB,EACrB,UAAU,EACV,aAAa,EACb,gBAAgB,EAUjB;IAMC,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,KAAK;QACd,iBAAiB,EAAE,EAAc;QACjC,OAAO;QACP,UAAU;KACX,CAAA;IACD,IAAI,OAAgB,CAAA;IACpB,IAAI,iBAA2B,CAAA;IAC/B,IAAI,eAAwC,CAAA;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC/C,eAAe,GAAG,GAAG,CAAA;QACrB,MAAM,SAAS,GAAG,MAAM,+BAA+B,CAAC;YACtD,KAAK;YACL,QAAQ,EAAE,GAAG;YACb,UAAU;YACV,UAAU;SACX,CAAC,CAAA;QACF,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;QAC3B,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAA;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,CAAA;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CACV,mEAAmE,EACnE,GAAG,CACJ,CAAA;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,CAAC,IAAI,CACV,uDAAuD;QACrD,GAAG,iBAAiB,CAAC,MAAM,wCAAwC;QACnE,+CAA+C,CAClD,CAAA;IAED,yEAAyE;IACzE,wEAAwE;IACxE,sEAAsE;IACtE,IAAI,IAAoC,CAAA;IACxC,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,iBAAiB,CAAC;YAC7B,KAAK;YACL,OAAO;YACP,qBAAqB;YACrB,aAAa;YACb,QAAQ,EAAE,eAAe;SAC1B,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,CAAA;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CACb,iEAAiE;YAC/D,mEAAmE;YACnE,kBAAkB,EACpB,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAA;IACH,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,iEAAiE;YAC/D,oEAAoE;YACpE,MAAM,CACT,CAAA;IACH,CAAC;IACD,MAAM,gBAAgB,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAA;IACF,OAAO;QACL,OAAO,EAAE,IAAI;QACb,iBAAiB;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAA;AACH,CAAC"}
|
|
@@ -24,7 +24,9 @@ export declare class DescriptorRefreshPolicy {
|
|
|
24
24
|
collectionId: string;
|
|
25
25
|
}) => Promise<void>;
|
|
26
26
|
});
|
|
27
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Whether a collection still has its one refresh this session.
|
|
29
|
+
*/
|
|
28
30
|
shouldRefresh({ collectionId }: {
|
|
29
31
|
collectionId: string;
|
|
30
32
|
}): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../src/descriptors/refresh.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,qBAAa,uBAAuB;;gBAKtB,EACV,OAAO,EACR,EAAE;QACD,OAAO,EAAE,CAAC,OAAO,EAAE;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAC9D;IAID
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../src/descriptors/refresh.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,qBAAa,uBAAuB;;gBAKtB,EACV,OAAO,EACR,EAAE;QACD,OAAO,EAAE,CAAC,OAAO,EAAE;YAAE,YAAY,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAC9D;IAID;;OAEG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAIlE;;;;;;;;;;;OAWG;IACG,eAAe,CAAC,CAAC,EAAE,EACvB,YAAY,EACZ,IAAI,EACL,EAAE;QACD,YAAY,EAAE,MAAM,CAAA;QACpB,IAAI,EAAE,MAAM,OAAO,CAAC;YAAE,KAAK,EAAE,CAAC,CAAC;YAAC,YAAY,EAAE,OAAO,CAAA;SAAE,CAAC,CAAA;KACzD,GAAG,OAAO,CAAC,CAAC,CAAC;IAUd;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAOjD"}
|
|
@@ -24,7 +24,9 @@ export class DescriptorRefreshPolicy {
|
|
|
24
24
|
constructor({ refresh }) {
|
|
25
25
|
this.#refresh = refresh;
|
|
26
26
|
}
|
|
27
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Whether a collection still has its one refresh this session.
|
|
29
|
+
*/
|
|
28
30
|
shouldRefresh({ collectionId }) {
|
|
29
31
|
return !this.#refreshed.has(collectionId);
|
|
30
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/descriptors/refresh.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,MAAM,OAAO,uBAAuB;IACzB,QAAQ,CAAsD;IACvE,kEAAkE;IACzD,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IAEvC,YAAY,EACV,OAAO,EAGR;QACC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IACzB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/descriptors/refresh.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,MAAM,OAAO,uBAAuB;IACzB,QAAQ,CAAsD;IACvE,kEAAkE;IACzD,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IAEvC,YAAY,EACV,OAAO,EAGR;QACC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;IACzB,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,EAAE,YAAY,EAA4B;QACtD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IAC3C,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,eAAe,CAAI,EACvB,YAAY,EACZ,IAAI,EAIL;QACC,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,CAAA;QAC1B,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;YACrC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAA;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAmC;QACvC,IAAI,OAAO,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -16,13 +16,19 @@
|
|
|
16
16
|
* Both had passing tests in their respective apps and both are exported.
|
|
17
17
|
*/
|
|
18
18
|
import type { IAlignment } from '@interop/data-integrity-core';
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* The trimmed, always-present-string alignment view `normalizeAlignments`
|
|
21
|
+
* emits.
|
|
22
|
+
*/
|
|
20
23
|
export interface IAlignmentView {
|
|
21
24
|
targetName: string;
|
|
22
25
|
targetUrl: string;
|
|
23
26
|
targetDescription: string;
|
|
24
27
|
}
|
|
25
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* A display-safe alignment with an optional validated URL
|
|
30
|
+
* (`getValidAlignments`).
|
|
31
|
+
*/
|
|
26
32
|
export interface ValidAlignment {
|
|
27
33
|
targetName: string;
|
|
28
34
|
targetUrl?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alignment.d.ts","sourceRoot":"","sources":["../../src/display/alignment.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAG9D
|
|
1
|
+
{"version":3,"file":"alignment.d.ts","sourceRoot":"","sources":["../../src/display/alignment.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAG9D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,OAAO,GAAG,cAAc,EAAE,CAqB5E;AAyED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,CAAC,EAAE,UAAU,EAAE,GACxB,cAAc,EAAE,CAwBlB"}
|
|
@@ -51,28 +51,31 @@ function isStrictHttpUrl(raw) {
|
|
|
51
51
|
return null;
|
|
52
52
|
}
|
|
53
53
|
try {
|
|
54
|
-
const
|
|
54
|
+
const parsedUrl = new URL(normalized);
|
|
55
55
|
// Only allow http(s)
|
|
56
|
-
if (
|
|
56
|
+
if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {
|
|
57
57
|
return null;
|
|
58
58
|
}
|
|
59
59
|
// Must have a hostname
|
|
60
|
-
if (!
|
|
60
|
+
if (!parsedUrl.hostname) {
|
|
61
61
|
return null;
|
|
62
62
|
}
|
|
63
63
|
// Forbid credentials/userinfo
|
|
64
|
-
if (
|
|
64
|
+
if (parsedUrl.username || parsedUrl.password) {
|
|
65
65
|
return null;
|
|
66
66
|
}
|
|
67
67
|
// Hostname must be reasonable, or be 'localhost' or an IPv4
|
|
68
|
-
const isHostname = /^[A-Za-z0-9.-]+$/.test(
|
|
69
|
-
const isLocalhost =
|
|
70
|
-
const isIPv4 = /^(25[0-5]|2[0-4]\d|1?\d?\d)(\.(25[0-5]|2[0-4]\d|1?\d?\d)){3}$/.test(
|
|
68
|
+
const isHostname = /^[A-Za-z0-9.-]+$/.test(parsedUrl.hostname);
|
|
69
|
+
const isLocalhost = parsedUrl.hostname.toLowerCase() === 'localhost';
|
|
70
|
+
const isIPv4 = /^(25[0-5]|2[0-4]\d|1?\d?\d)(\.(25[0-5]|2[0-4]\d|1?\d?\d)){3}$/.test(parsedUrl.hostname);
|
|
71
71
|
if (!(isHostname || isLocalhost || isIPv4)) {
|
|
72
72
|
return null;
|
|
73
73
|
}
|
|
74
74
|
// If it's a standard hostname (not localhost/IP), require at least one dot
|
|
75
|
-
if (isHostname &&
|
|
75
|
+
if (isHostname &&
|
|
76
|
+
!isLocalhost &&
|
|
77
|
+
!isIPv4 &&
|
|
78
|
+
!parsedUrl.hostname.includes('.')) {
|
|
76
79
|
return null;
|
|
77
80
|
}
|
|
78
81
|
return normalized;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alignment.js","sourceRoot":"","sources":["../../src/display/alignment.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"alignment.js","sourceRoot":"","sources":["../../src/display/alignment.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,11 +13,15 @@
|
|
|
13
13
|
* covered by the ported helper tests).
|
|
14
14
|
*/
|
|
15
15
|
import type { IAlignment, IVerifiableCredential } from '@interop/data-integrity-core';
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* The flat display projection of a VC for the card / detail view.
|
|
18
|
+
*/
|
|
17
19
|
export interface CredentialDisplayFields {
|
|
18
20
|
credentialName: string;
|
|
19
21
|
issuedTo: string;
|
|
20
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Raw ISO expiration string (`''` when none).
|
|
24
|
+
*/
|
|
21
25
|
expirationDate: string;
|
|
22
26
|
credentialDescription: string;
|
|
23
27
|
criteria: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"displayFields.d.ts","sourceRoot":"","sources":["../../src/display/displayFields.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAEV,UAAU,EACV,qBAAqB,EACtB,MAAM,8BAA8B,CAAA;AAerC
|
|
1
|
+
{"version":3,"file":"displayFields.d.ts","sourceRoot":"","sources":["../../src/display/displayFields.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAEV,UAAU,EACV,qBAAqB,EACtB,MAAM,8BAA8B,CAAA;AAerC;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAA;IACtB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,UAAU,EAAE,CAAA;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACtC,MAAM,CAqDR;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACtC,MAAM,CAuBR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,oBAAoB,EAAE,qBAAqB,GAC1C,uBAAuB,CA2CzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"displayFields.js","sourceRoot":"","sources":["../../src/display/displayFields.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"displayFields.js","sourceRoot":"","sources":["../../src/display/displayFields.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,18 +8,24 @@
|
|
|
8
8
|
* many shapes evidence appears in (string URL, `{ url }`, `{ id }`) and dropping
|
|
9
9
|
* anything without a usable URL.
|
|
10
10
|
*/
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* A resolved evidence link.
|
|
13
|
+
*/
|
|
12
14
|
export type PortfolioEvidenceItem = {
|
|
13
15
|
name: string;
|
|
14
16
|
url: string;
|
|
15
17
|
};
|
|
16
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Evidence item from a W3C VC evidence array: `{ id, type, name }`.
|
|
20
|
+
*/
|
|
17
21
|
export type VCEvidenceItem = {
|
|
18
22
|
id: string;
|
|
19
23
|
type?: string;
|
|
20
24
|
name?: string;
|
|
21
25
|
};
|
|
22
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* A VC carrying a top-level `evidence` array (W3C / IMS OB spec).
|
|
28
|
+
*/
|
|
23
29
|
export type VCWithEvidence = {
|
|
24
30
|
evidence?: unknown;
|
|
25
31
|
credentialSubject?: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/display/evidence.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;GAMG;AAEH
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/display/evidence.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AAgCD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,qBAAqB,EAAE,CAG3E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,cAAc,EAC1B,OAAO,CAAC,EAAE,OAAO,GAChB,qBAAqB,EAAE,CAazB"}
|
package/dist/display/evidence.js
CHANGED
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* many shapes evidence appears in (string URL, `{ url }`, `{ id }`) and dropping
|
|
9
9
|
* anything without a usable URL.
|
|
10
10
|
*/
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Parses a single evidence item into `{ name, url }`, or `null` when unusable.
|
|
13
|
+
*/
|
|
12
14
|
function parseEvidenceItem(item) {
|
|
13
15
|
if (typeof item === 'string') {
|
|
14
16
|
const url = item.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/display/evidence.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/display/evidence.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;GAMG;AAwBH;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAa;IACtC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,MAAM,GACT,IAAgC,CAAC,GAAG;QACpC,IAAgC,CAAC,EAAE;QACpC,EAAE,CAAA;IACJ,MAAM,GAAG,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACtE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAAI,IAAgC,CAAC,IAAI,IAAI,EAAE,CAAA;IAC5D,MAAM,IAAI,GAAG,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1E,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,CAAA;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC9C,OAAO,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAA4B,CAAA;AAChF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAA0B,EAC1B,OAAiB;IAEjB,MAAM,YAAY,GAAG,UAAU,EAAE,QAAQ,CAAA;IACzC,IAAI,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,OAAO,qBAAqB,CAAC,YAAY,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,EAAE,iBAAiB,CAAA;IAChD,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IACrE,MAAM,SAAS,GACb,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,WAAW,IAAI,IAAI;QACrD,CAAC,CAAE,IAAgC,CAAC,SAAS;QAC7C,CAAC,CAAC,SAAS,CAAA;IACf,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAA;AACzC,CAAC"}
|
package/dist/display/index.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export { portfolioEvidenceFrom, evidenceFromCredential } from './evidence.js';
|
|
|
29
29
|
export type { PortfolioEvidenceItem, VCEvidenceItem, VCWithEvidence } from './evidence.js';
|
|
30
30
|
export { isResumeCredentialSubject, isResumeCredential, isEmploymentCredential, isVolunteerCredential } from './types.js';
|
|
31
31
|
export { imageSourceFrom } from './image.js';
|
|
32
|
-
export { asNonEmptyString, getTrimmedString, asRecord } from './text.js';
|
|
32
|
+
export { asNonEmptyString, getTrimmedString, asRecord, recordList } from './text.js';
|
|
33
33
|
export { getDisplayFields, buildCredentialDescription, buildCriteria } from './displayFields.js';
|
|
34
34
|
export type { CredentialDisplayFields } from './displayFields.js';
|
|
35
35
|
export { buildVerificationChecklist, getVerificationAggregateStatus, isFullyVerified, isExpiredOnly, hasVerificationWarning, issuerRecognizedByVerification } from './verificationView.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExE,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,gCAAgC,EACjC,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAElE,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,2BAA2B,EAC5B,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAErD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACV,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC7E,YAAY,EACV,qBAAqB,EACrB,cAAc,EACd,cAAc,EACf,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExE,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,gCAAgC,EACjC,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAElE,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,2BAA2B,EAC5B,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAErD,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACV,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAC7E,YAAY,EACV,qBAAqB,EACrB,cAAc,EACd,cAAc,EACf,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACX,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,aAAa,EACd,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAEjE,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,YAAY,CAAA"}
|
package/dist/display/index.js
CHANGED
|
@@ -25,7 +25,7 @@ export { normalizeAlignments, getValidAlignments } from './alignment.js';
|
|
|
25
25
|
export { portfolioEvidenceFrom, evidenceFromCredential } from './evidence.js';
|
|
26
26
|
export { isResumeCredentialSubject, isResumeCredential, isEmploymentCredential, isVolunteerCredential } from './types.js';
|
|
27
27
|
export { imageSourceFrom } from './image.js';
|
|
28
|
-
export { asNonEmptyString, getTrimmedString, asRecord } from './text.js';
|
|
28
|
+
export { asNonEmptyString, getTrimmedString, asRecord, recordList } from './text.js';
|
|
29
29
|
export { getDisplayFields, buildCredentialDescription, buildCriteria } from './displayFields.js';
|
|
30
30
|
export { buildVerificationChecklist, getVerificationAggregateStatus, isFullyVerified, isExpiredOnly, hasVerificationWarning, issuerRecognizedByVerification } from './verificationView.js';
|
|
31
31
|
export { credentialsFromJSON, extractCredentialsFrom, resolveCredentialsInput, ResolveCredentialsInputError, VPQR_UNSUPPORTED_MESSAGE } from './parse.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExE,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,gCAAgC,EACjC,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,2BAA2B,EAC5B,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACV,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAGxE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAO7E,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExE,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,gCAAgC,EACjC,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,2BAA2B,EAC5B,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACV,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAGxE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAO7E,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACX,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,aAAa,EACd,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,uBAAuB,CAAA;AAS9B,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,YAAY,CAAA"}
|
package/dist/display/issuer.d.ts
CHANGED
|
@@ -15,27 +15,35 @@
|
|
|
15
15
|
* verifier module) so both apps can pass their own log shape.
|
|
16
16
|
*/
|
|
17
17
|
import type { IIssuerObject, IVerifiableCredential } from '@interop/data-integrity-core';
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* All-string issuer detail record (Freewallet; `''` defaults).
|
|
20
|
+
*/
|
|
19
21
|
export interface IssuerDetails {
|
|
20
22
|
id: string;
|
|
21
23
|
name: string;
|
|
22
24
|
url: string;
|
|
23
25
|
image: string;
|
|
24
26
|
}
|
|
25
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Nullable issuer render fields (DCW).
|
|
29
|
+
*/
|
|
26
30
|
export interface IssuerRenderInfo {
|
|
27
31
|
issuerName: string | null;
|
|
28
32
|
issuerUrl: string | null;
|
|
29
33
|
issuerId: string | null;
|
|
30
34
|
issuerImage: string | null;
|
|
31
35
|
}
|
|
32
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* The registry metadata overlay carried in a `registered_issuer` log entry.
|
|
38
|
+
*/
|
|
33
39
|
interface FederationEntity {
|
|
34
40
|
organization_name?: string;
|
|
35
41
|
homepage_uri?: string;
|
|
36
42
|
logo_uri?: string;
|
|
37
43
|
}
|
|
38
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Structural shape of the verification result read for the registry overlay.
|
|
46
|
+
*/
|
|
39
47
|
interface VerifyResultLike {
|
|
40
48
|
log?: Array<{
|
|
41
49
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issuer.d.ts","sourceRoot":"","sources":["../../src/display/issuer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAEV,aAAa,EACb,qBAAqB,EACtB,MAAM,8BAA8B,CAAA;AAMrC
|
|
1
|
+
{"version":3,"file":"issuer.d.ts","sourceRoot":"","sources":["../../src/display/issuer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAEV,aAAa,EACb,qBAAqB,EACtB,MAAM,8BAA8B,CAAA;AAMrC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED;;GAEG;AACH,UAAU,gBAAgB;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,KAAK,CAAC;QACV,EAAE,EAAE,MAAM,CAAA;QACV,eAAe,CAAC,EAAE,KAAK,CAAC;YACtB,MAAM,CAAC,EAAE;gBAAE,iBAAiB,CAAC,EAAE,gBAAgB,CAAA;aAAE,CAAA;SAClD,CAAC,CAAA;KACH,CAAC,CAAA;CACH;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,CAMpE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GACtC,aAAa,CAmBf;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,CAAC,EAAE,qBAAqB,GACjC,MAAM,GAAG,IAAI,CAUf;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,GAAG,MAAM,EAC9B,UAAU,CAAC,EAAE,qBAAqB,GACjC,gBAAgB,CAkBlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,aAAa,GAAG,MAAM,EAC9B,YAAY,CAAC,EAAE,gBAAgB,EAC/B,UAAU,CAAC,EAAE,qBAAqB,GACjC,gBAAgB,CAqClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issuer.js","sourceRoot":"","sources":["../../src/display/issuer.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"issuer.js","sourceRoot":"","sources":["../../src/display/issuer.ts"],"names":[],"mappings":"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"}
|