@interop/wallet-core 0.66.0 → 0.67.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.
Files changed (241) hide show
  1. package/README.md +12 -8
  2. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts +5 -4
  3. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts.map +1 -1
  4. package/dist/clientAnnex/credentialAnchoredGenesis.js +32 -50
  5. package/dist/clientAnnex/credentialAnchoredGenesis.js.map +1 -1
  6. package/dist/clientAnnex/establish.d.ts +46 -18
  7. package/dist/clientAnnex/establish.d.ts.map +1 -1
  8. package/dist/clientAnnex/establish.js +112 -65
  9. package/dist/clientAnnex/establish.js.map +1 -1
  10. package/dist/clientAnnex/forget.d.ts.map +1 -1
  11. package/dist/clientAnnex/forget.js +5 -6
  12. package/dist/clientAnnex/forget.js.map +1 -1
  13. package/dist/clientAnnex/forgetLast.d.ts +26 -113
  14. package/dist/clientAnnex/forgetLast.d.ts.map +1 -1
  15. package/dist/clientAnnex/forgetLast.js +26 -150
  16. package/dist/clientAnnex/forgetLast.js.map +1 -1
  17. package/dist/clientAnnex/heal.d.ts +79 -13
  18. package/dist/clientAnnex/heal.d.ts.map +1 -1
  19. package/dist/clientAnnex/heal.js +67 -122
  20. package/dist/clientAnnex/heal.js.map +1 -1
  21. package/dist/clientAnnex/index.d.ts +6 -6
  22. package/dist/clientAnnex/index.d.ts.map +1 -1
  23. package/dist/clientAnnex/index.js +4 -4
  24. package/dist/clientAnnex/index.js.map +1 -1
  25. package/dist/clientAnnex/ladder.d.ts +51 -4
  26. package/dist/clientAnnex/ladder.d.ts.map +1 -1
  27. package/dist/clientAnnex/ladder.js +283 -47
  28. package/dist/clientAnnex/ladder.js.map +1 -1
  29. package/dist/clientAnnex/ladderAnchored.d.ts +37 -3
  30. package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
  31. package/dist/clientAnnex/ladderAnchored.js +69 -34
  32. package/dist/clientAnnex/ladderAnchored.js.map +1 -1
  33. package/dist/clientAnnex/log.d.ts +68 -57
  34. package/dist/clientAnnex/log.d.ts.map +1 -1
  35. package/dist/clientAnnex/log.js +96 -126
  36. package/dist/clientAnnex/log.js.map +1 -1
  37. package/dist/clientAnnex/mend.js +44 -20
  38. package/dist/clientAnnex/mend.js.map +1 -1
  39. package/dist/clientAnnex/recoveryLadderAnchored.d.ts +20 -1
  40. package/dist/clientAnnex/recoveryLadderAnchored.d.ts.map +1 -1
  41. package/dist/clientAnnex/recoveryLadderAnchored.js +77 -294
  42. package/dist/clientAnnex/recoveryLadderAnchored.js.map +1 -1
  43. package/dist/clientAnnex/rosterDeliveredEpochs.d.ts +13 -5
  44. package/dist/clientAnnex/rosterDeliveredEpochs.d.ts.map +1 -1
  45. package/dist/clientAnnex/rosterDeliveredEpochs.js +18 -9
  46. package/dist/clientAnnex/rosterDeliveredEpochs.js.map +1 -1
  47. package/dist/clientAnnex/selfEnroll.js +1 -1
  48. package/dist/clientAnnex/selfEnroll.js.map +1 -1
  49. package/dist/clientAnnex/zcap.d.ts +19 -0
  50. package/dist/clientAnnex/zcap.d.ts.map +1 -1
  51. package/dist/clientAnnex/zcap.js +80 -12
  52. package/dist/clientAnnex/zcap.js.map +1 -1
  53. package/dist/clients/index.d.ts +3 -2
  54. package/dist/clients/index.d.ts.map +1 -1
  55. package/dist/clients/index.js +3 -2
  56. package/dist/clients/index.js.map +1 -1
  57. package/dist/clients/listing.d.ts.map +1 -1
  58. package/dist/clients/listing.js +33 -15
  59. package/dist/clients/listing.js.map +1 -1
  60. package/dist/clients/policy.d.ts +18 -0
  61. package/dist/clients/policy.d.ts.map +1 -1
  62. package/dist/clients/policy.js +22 -8
  63. package/dist/clients/policy.js.map +1 -1
  64. package/dist/clients/revocation.d.ts +18 -30
  65. package/dist/clients/revocation.d.ts.map +1 -1
  66. package/dist/clients/revocation.js +12 -27
  67. package/dist/clients/revocation.js.map +1 -1
  68. package/dist/clients/rosterPolicy.d.ts +6 -1
  69. package/dist/clients/rosterPolicy.d.ts.map +1 -1
  70. package/dist/clients/rosterPolicy.js +27 -30
  71. package/dist/clients/rosterPolicy.js.map +1 -1
  72. package/dist/descriptors/errors.d.ts +6 -5
  73. package/dist/descriptors/errors.d.ts.map +1 -1
  74. package/dist/descriptors/errors.js +6 -5
  75. package/dist/descriptors/errors.js.map +1 -1
  76. package/dist/descriptors/index.d.ts +7 -3
  77. package/dist/descriptors/index.d.ts.map +1 -1
  78. package/dist/descriptors/index.js +7 -3
  79. package/dist/descriptors/index.js.map +1 -1
  80. package/dist/descriptors/logSource.d.ts +28 -6
  81. package/dist/descriptors/logSource.d.ts.map +1 -1
  82. package/dist/descriptors/logSource.js +33 -7
  83. package/dist/descriptors/logSource.js.map +1 -1
  84. package/dist/enrollment/enrollment.d.ts.map +1 -1
  85. package/dist/enrollment/enrollment.js +3 -7
  86. package/dist/enrollment/enrollment.js.map +1 -1
  87. package/dist/genesis/accountGenesis.d.ts +8 -10
  88. package/dist/genesis/accountGenesis.d.ts.map +1 -1
  89. package/dist/genesis/accountGenesis.js +39 -41
  90. package/dist/genesis/accountGenesis.js.map +1 -1
  91. package/dist/genesis/kmsAuthentication.d.ts +50 -0
  92. package/dist/genesis/kmsAuthentication.d.ts.map +1 -0
  93. package/dist/genesis/kmsAuthentication.js +49 -0
  94. package/dist/genesis/kmsAuthentication.js.map +1 -0
  95. package/dist/keyring/kdf.d.ts +16 -20
  96. package/dist/keyring/kdf.d.ts.map +1 -1
  97. package/dist/keyring/kdf.js +2 -2
  98. package/dist/keyring/kdf.js.map +1 -1
  99. package/dist/keyring/unlockSpace.d.ts +8 -30
  100. package/dist/keyring/unlockSpace.d.ts.map +1 -1
  101. package/dist/keyring/unlockSpace.js +8 -31
  102. package/dist/keyring/unlockSpace.js.map +1 -1
  103. package/dist/keys/clientKeyRecord.d.ts +2 -1
  104. package/dist/keys/clientKeyRecord.d.ts.map +1 -1
  105. package/dist/keys/clientKeyRecord.js +28 -11
  106. package/dist/keys/clientKeyRecord.js.map +1 -1
  107. package/dist/keys/index.d.ts +6 -2
  108. package/dist/keys/index.d.ts.map +1 -1
  109. package/dist/keys/index.js +5 -1
  110. package/dist/keys/index.js.map +1 -1
  111. package/dist/keys/rosterLogStore.d.ts.map +1 -1
  112. package/dist/keys/rosterLogStore.js +14 -5
  113. package/dist/keys/rosterLogStore.js.map +1 -1
  114. package/dist/keys/spaceEpochs.d.ts +92 -3
  115. package/dist/keys/spaceEpochs.d.ts.map +1 -1
  116. package/dist/keys/spaceEpochs.js +110 -4
  117. package/dist/keys/spaceEpochs.js.map +1 -1
  118. package/dist/keys/userKeyRoster.d.ts +30 -3
  119. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  120. package/dist/keys/userKeyRoster.js +90 -15
  121. package/dist/keys/userKeyRoster.js.map +1 -1
  122. package/dist/keys/userKeyRosterCascade.d.ts.map +1 -1
  123. package/dist/keys/userKeyRosterCascade.js +5 -1
  124. package/dist/keys/userKeyRosterCascade.js.map +1 -1
  125. package/dist/recovery/continuation.d.ts +255 -0
  126. package/dist/recovery/continuation.d.ts.map +1 -0
  127. package/dist/recovery/continuation.js +471 -0
  128. package/dist/recovery/continuation.js.map +1 -0
  129. package/dist/recovery/index.d.ts +12 -8
  130. package/dist/recovery/index.d.ts.map +1 -1
  131. package/dist/recovery/index.js +11 -7
  132. package/dist/recovery/index.js.map +1 -1
  133. package/dist/recovery/recoveryDelegation.d.ts +23 -126
  134. package/dist/recovery/recoveryDelegation.d.ts.map +1 -1
  135. package/dist/recovery/recoveryDelegation.js +1 -266
  136. package/dist/recovery/recoveryDelegation.js.map +1 -1
  137. package/dist/recovery/recoveryWebvh.d.ts +42 -83
  138. package/dist/recovery/recoveryWebvh.d.ts.map +1 -1
  139. package/dist/recovery/recoveryWebvh.js +44 -380
  140. package/dist/recovery/recoveryWebvh.js.map +1 -1
  141. package/dist/request/classify.d.ts +3 -14
  142. package/dist/request/classify.d.ts.map +1 -1
  143. package/dist/request/classify.js +19 -40
  144. package/dist/request/classify.js.map +1 -1
  145. package/dist/request/index.d.ts +1 -0
  146. package/dist/request/index.d.ts.map +1 -1
  147. package/dist/request/index.js +1 -0
  148. package/dist/request/index.js.map +1 -1
  149. package/dist/request/onboarding.d.ts.map +1 -1
  150. package/dist/request/onboarding.js +19 -27
  151. package/dist/request/onboarding.js.map +1 -1
  152. package/dist/request/parse.d.ts +5 -3
  153. package/dist/request/parse.d.ts.map +1 -1
  154. package/dist/request/parse.js +7 -6
  155. package/dist/request/parse.js.map +1 -1
  156. package/dist/request/processRequest.d.ts.map +1 -1
  157. package/dist/request/processRequest.js +2 -1
  158. package/dist/request/processRequest.js.map +1 -1
  159. package/dist/request/queryPredicates.d.ts +98 -0
  160. package/dist/request/queryPredicates.d.ts.map +1 -0
  161. package/dist/request/queryPredicates.js +107 -0
  162. package/dist/request/queryPredicates.js.map +1 -0
  163. package/dist/resourceLog/document.d.ts +39 -0
  164. package/dist/resourceLog/document.d.ts.map +1 -1
  165. package/dist/resourceLog/document.js +41 -0
  166. package/dist/resourceLog/document.js.map +1 -1
  167. package/dist/resourceLog/ladderRungs.d.ts.map +1 -1
  168. package/dist/resourceLog/ladderRungs.js +3 -2
  169. package/dist/resourceLog/ladderRungs.js.map +1 -1
  170. package/dist/sync/contactsConflict.d.ts.map +1 -1
  171. package/dist/sync/contactsConflict.js +8 -2
  172. package/dist/sync/contactsConflict.js.map +1 -1
  173. package/dist/sync/engine.d.ts +38 -23
  174. package/dist/sync/engine.d.ts.map +1 -1
  175. package/dist/sync/engine.js +36 -5
  176. package/dist/sync/engine.js.map +1 -1
  177. package/dist/sync/index.d.ts +9 -12
  178. package/dist/sync/index.d.ts.map +1 -1
  179. package/dist/sync/index.js +8 -11
  180. package/dist/sync/index.js.map +1 -1
  181. package/dist/sync/push.d.ts.map +1 -1
  182. package/dist/sync/push.js +1 -2
  183. package/dist/sync/push.js.map +1 -1
  184. package/dist/sync/remint.d.ts +0 -31
  185. package/dist/sync/remint.d.ts.map +1 -1
  186. package/dist/sync/remint.js +32 -1
  187. package/dist/sync/remint.js.map +1 -1
  188. package/dist/sync/types.d.ts +4 -41
  189. package/dist/sync/types.d.ts.map +1 -1
  190. package/dist/sync/types.js +4 -47
  191. package/dist/sync/types.js.map +1 -1
  192. package/dist/unlock/index.d.ts +1 -1
  193. package/dist/unlock/index.d.ts.map +1 -1
  194. package/dist/unlock/index.js +1 -1
  195. package/dist/unlock/index.js.map +1 -1
  196. package/dist/unlock/retire.d.ts +16 -56
  197. package/dist/unlock/retire.d.ts.map +1 -1
  198. package/dist/unlock/retire.js +7 -76
  199. package/dist/unlock/retire.js.map +1 -1
  200. package/dist/unlock/standingWebvh.d.ts +20 -40
  201. package/dist/unlock/standingWebvh.d.ts.map +1 -1
  202. package/dist/unlock/standingWebvh.js +35 -76
  203. package/dist/unlock/standingWebvh.js.map +1 -1
  204. package/dist/unlock/unlockRecord.d.ts.map +1 -1
  205. package/dist/unlock/unlockRecord.js +69 -44
  206. package/dist/unlock/unlockRecord.js.map +1 -1
  207. package/dist/webvh/accountEntry.d.ts +63 -7
  208. package/dist/webvh/accountEntry.d.ts.map +1 -1
  209. package/dist/webvh/accountEntry.js +110 -19
  210. package/dist/webvh/accountEntry.js.map +1 -1
  211. package/dist/webvh/delegatedLogStore.d.ts +18 -12
  212. package/dist/webvh/delegatedLogStore.d.ts.map +1 -1
  213. package/dist/webvh/delegatedLogStore.js +32 -11
  214. package/dist/webvh/delegatedLogStore.js.map +1 -1
  215. package/dist/webvh/didWebvh.d.ts +39 -23
  216. package/dist/webvh/didWebvh.d.ts.map +1 -1
  217. package/dist/webvh/didWebvh.js +63 -45
  218. package/dist/webvh/didWebvh.js.map +1 -1
  219. package/dist/webvh/enrollClient.d.ts.map +1 -1
  220. package/dist/webvh/enrollClient.js +19 -23
  221. package/dist/webvh/enrollClient.js.map +1 -1
  222. package/dist/webvh/index.d.ts +11 -7
  223. package/dist/webvh/index.d.ts.map +1 -1
  224. package/dist/webvh/index.js +9 -6
  225. package/dist/webvh/index.js.map +1 -1
  226. package/dist/webvh/listClients.d.ts.map +1 -1
  227. package/dist/webvh/listClients.js +102 -65
  228. package/dist/webvh/listClients.js.map +1 -1
  229. package/dist/webvh/mergeMethods.d.ts +84 -0
  230. package/dist/webvh/mergeMethods.d.ts.map +1 -0
  231. package/dist/webvh/mergeMethods.js +46 -0
  232. package/dist/webvh/mergeMethods.js.map +1 -0
  233. package/dist/webvh/revokeClient.d.ts +12 -2
  234. package/dist/webvh/revokeClient.d.ts.map +1 -1
  235. package/dist/webvh/revokeClient.js +126 -48
  236. package/dist/webvh/revokeClient.js.map +1 -1
  237. package/dist/webvh/verifyLog.d.ts +21 -0
  238. package/dist/webvh/verifyLog.d.ts.map +1 -1
  239. package/dist/webvh/verifyLog.js +36 -14
  240. package/dist/webvh/verifyLog.js.map +1 -1
  241. package/package.json +11 -11
@@ -1,6 +1,6 @@
1
1
  import { vmFragmentOf } from '@interop/vh-resource-log';
2
2
  import { clientKeyAgreementController, effectiveParameters } from './didWebvh.js';
3
- import { relationIds, resolvedKeyAgreementMethods } from '../resourceLog/document.js';
3
+ import { relationIds, resolvedKeyAgreementMethods, resolvedRelationMethods } from '../resourceLog/document.js';
4
4
  /**
5
5
  * The key multibases the document currently publishes: every verification
6
6
  * method's `publicKeyMultibase`, plus the fragment of its id (for a did:webvh
@@ -28,37 +28,28 @@ export function documentKeyMultibases({ doc }) {
28
28
  * The key multibases the document currently lists under
29
29
  * `capabilityDelegation`. A relation member is either a verification-method
30
30
  * id or an embedded method, so each is resolved both ways: the fragment of
31
- * its id, its own `publicKeyMultibase` when embedded, and the
32
- * `publicKeyMultibase` of the `verificationMethod` entry a string reference
33
- * names.
31
+ * its id, and the `publicKeyMultibase` of the method it resolves to (its own
32
+ * when embedded, the `verificationMethod` entry's when a string reference
33
+ * names one).
34
34
  *
35
35
  * @param options {object}
36
36
  * @param options.doc {PublishedKeyDocument} a locally verified document
37
37
  * @returns {Set<string>}
38
38
  */
39
39
  function delegationRelationMultibases({ doc }) {
40
- const byId = new Map();
41
- for (const method of doc.verificationMethod ?? []) {
42
- if (method.id && method.publicKeyMultibase) {
43
- byId.set(method.id, method.publicKeyMultibase);
44
- }
45
- }
46
40
  const multibases = new Set();
47
- for (const member of doc.capabilityDelegation ?? []) {
48
- const id = typeof member === 'string' ? member : member?.id;
49
- const embedded = typeof member === 'string' ? undefined : member?.publicKeyMultibase;
50
- if (embedded) {
51
- multibases.add(embedded);
41
+ for (const id of relationIds(doc.capabilityDelegation)) {
42
+ const fragment = vmFragmentOf(id);
43
+ if (fragment) {
44
+ multibases.add(fragment);
52
45
  }
53
- if (id) {
54
- const fragment = vmFragmentOf(id);
55
- if (fragment) {
56
- multibases.add(fragment);
57
- }
58
- const referenced = byId.get(id);
59
- if (referenced) {
60
- multibases.add(referenced);
61
- }
46
+ }
47
+ for (const method of resolvedRelationMethods({
48
+ doc,
49
+ relation: 'capabilityDelegation'
50
+ })) {
51
+ if (method.publicKeyMultibase) {
52
+ multibases.add(method.publicKeyMultibase);
62
53
  }
63
54
  }
64
55
  return multibases;
@@ -210,41 +201,75 @@ function addedUpdateKeys(params, index) {
210
201
  return params[index].updateKeys.filter(key => !previous.has(key));
211
202
  }
212
203
  /**
213
- * Attributes one client's ACTIVE update key from the log: its initial key is
204
+ * Attributes every listed client's ACTIVE update key from the log in ONE
205
+ * forward pass -- the single-pass twin of {@link clientAddIndexes}, so a
206
+ * listing never walks the log tail once per client. A client's initial key is
214
207
  * whatever the entry publishing its verification methods revealed, and each
215
208
  * later entry that retired the attributed key while revealing exactly one
216
- * replacement is that client's self-rotation. Returns `undefined` on any
217
- * ambiguity (an entry revealing several keys beside the client's methods, a
218
- * retirement with several candidate replacements) or when the attributed key
219
- * is not authorized by the final entry.
209
+ * replacement is that client's self-rotation. A client attributes to
210
+ * `undefined` on any ambiguity (an entry revealing several keys beside the
211
+ * client's methods, a retirement with several candidate replacements) or when
212
+ * the attributed key is not authorized by the final entry.
213
+ *
214
+ * Each entry's revealed set is computed once and applied to every client
215
+ * whose key that entry retired, which is what the per-client walk recomputed
216
+ * per client. The pass starts at the earliest enrollment it is asked about
217
+ * and, for one client, is the tail walk from that client's add entry.
220
218
  *
221
219
  * @param options {object}
222
220
  * @param options.params {Array<{ updateKeys: string[]; nextKeyHashes: string[] }>}
223
221
  * the log's effective parameters, one entry per log entry
224
- * @param options.addIndex {number} the entry that published the client's
225
- * verification methods
226
- * @returns {string | undefined}
222
+ * @param options.addIndexes {Map<string, number>} each client's
223
+ * signing-key multibase to the entry that published its verification
224
+ * methods
225
+ * @returns {Map<string, string | undefined>} each client's signing-key
226
+ * multibase to its attributed active update key, `undefined` where the
227
+ * attribution cannot isolate a single key
227
228
  */
228
- function attributeActiveUpdateKey({ params, addIndex }) {
229
- const initial = addedUpdateKeys(params, addIndex);
230
- if (initial.length !== 1) {
231
- return undefined;
229
+ function attributeActiveUpdateKeys({ params, addIndexes }) {
230
+ const active = new Map();
231
+ // Clients grouped by the entry that added them, so each entry's pass picks
232
+ // up its own newcomers without rescanning the map.
233
+ const addedAt = new Map();
234
+ for (const [signingKeyMultibase, addIndex] of addIndexes) {
235
+ const group = addedAt.get(addIndex);
236
+ if (group) {
237
+ group.push(signingKeyMultibase);
238
+ }
239
+ else {
240
+ addedAt.set(addIndex, [signingKeyMultibase]);
241
+ }
232
242
  }
233
- let active = initial[0];
234
- for (let index = addIndex + 1; index < params.length; index++) {
235
- const stillPresent = params[index].updateKeys.includes(active);
236
- if (stillPresent) {
237
- continue;
243
+ if (addedAt.size === 0) {
244
+ return active;
245
+ }
246
+ // Nothing before the earliest enrollment can touch a listed client.
247
+ const first = Math.min(...addedAt.keys());
248
+ for (let index = first; index < params.length; index++) {
249
+ // An entry's `updateKeys` is a handful of keys, so membership is a scan
250
+ // rather than a Set built per entry.
251
+ const authorized = params[index].updateKeys;
252
+ // Lazily computed: most entries retire nobody's key.
253
+ let revealed;
254
+ for (const [signingKeyMultibase, key] of active) {
255
+ if (key === undefined || authorized.includes(key)) {
256
+ continue;
257
+ }
258
+ revealed ??= addedUpdateKeys(params, index);
259
+ active.set(signingKeyMultibase, revealed.length === 1 ? revealed[0] : undefined);
260
+ }
261
+ for (const signingKeyMultibase of addedAt.get(index) ?? []) {
262
+ revealed ??= addedUpdateKeys(params, index);
263
+ active.set(signingKeyMultibase, revealed.length === 1 ? revealed[0] : undefined);
238
264
  }
239
- const revealed = addedUpdateKeys(params, index);
240
- if (revealed.length !== 1) {
241
- return undefined;
265
+ }
266
+ const final = params[params.length - 1].updateKeys;
267
+ for (const [signingKeyMultibase, key] of active) {
268
+ if (key !== undefined && !final.includes(key)) {
269
+ active.set(signingKeyMultibase, undefined);
242
270
  }
243
- active = revealed[0];
244
271
  }
245
- return params[params.length - 1].updateKeys.includes(active)
246
- ? active
247
- : undefined;
272
+ return active;
248
273
  }
249
274
  /**
250
275
  * The index of the entry that published a client's verification methods (its
@@ -280,25 +305,35 @@ export function attributeClientUpdateKey({ log, signingKeyMultibase }) {
280
305
  const addIndex = clientAddIndex({ log, signingKeyMultibase });
281
306
  return addIndex === -1
282
307
  ? undefined
283
- : attributeActiveUpdateKey({ params: effectiveParameters(log), addIndex });
308
+ : attributeActiveUpdateKeys({
309
+ params: effectiveParameters(log),
310
+ addIndexes: new Map([[signingKeyMultibase, addIndex]])
311
+ }).get(signingKeyMultibase);
284
312
  }
285
313
  /**
286
- * A map from an enrolled client's signing-key multibase to the index of the
287
- * FIRST entry that published it under `capabilityInvocation` -- the whole log's
288
- * enrollment moments in one forward pass, so a listing attributes every client
289
- * without rescanning. A multibase the log never published is absent from the
290
- * map.
314
+ * A map from each LISTED client's signing-key multibase to the index of the
315
+ * FIRST entry that published it under `capabilityInvocation` -- the listed
316
+ * clients' enrollment moments in one forward pass, so a listing attributes
317
+ * every client without rescanning. Clients the final document no longer lists
318
+ * (revoked ones) are never entered, so the attribution pass that follows never
319
+ * tracks them. A multibase the log never published is absent from the map.
291
320
  *
292
321
  * @param options {object}
293
322
  * @param options.log {DIDLog}
323
+ * @param options.signingKeyMultibases {Set<string>} the listed clients
294
324
  * @returns {Map<string, number>}
295
325
  */
296
- function clientAddIndexes({ log }) {
326
+ function clientAddIndexes({ log, signingKeyMultibases }) {
297
327
  const addIndexes = new Map();
298
328
  for (const [index, entry] of log.entries()) {
329
+ if (addIndexes.size === signingKeyMultibases.size) {
330
+ break;
331
+ }
299
332
  for (const vmId of relationIds(entry.state.capabilityInvocation)) {
300
333
  const signingKeyMultibase = vmFragmentOf(vmId);
301
- if (signingKeyMultibase && !addIndexes.has(signingKeyMultibase)) {
334
+ if (signingKeyMultibase &&
335
+ signingKeyMultibases.has(signingKeyMultibase) &&
336
+ !addIndexes.has(signingKeyMultibase)) {
302
337
  addIndexes.set(signingKeyMultibase, index);
303
338
  }
304
339
  }
@@ -322,27 +357,29 @@ export function listEnrolledWebvhClients({ log }) {
322
357
  }
323
358
  const doc = log[log.length - 1].state;
324
359
  const params = effectiveParameters(log);
360
+ const signingKeyMultibases = relationIds(doc.capabilityInvocation)
361
+ .map(vmId => vmFragmentOf(vmId))
362
+ .filter((multibase) => Boolean(multibase));
325
363
  // The entry that published each client's verification methods -- its
326
364
  // enrollment moment, and the attribution anchor for its update key.
327
- const addIndexes = clientAddIndexes({ log });
365
+ const addIndexes = clientAddIndexes({
366
+ log,
367
+ signingKeyMultibases: new Set(signingKeyMultibases)
368
+ });
369
+ // Every client's active update key, attributed in one forward pass.
370
+ const updateKeys = attributeActiveUpdateKeys({ params, addIndexes });
328
371
  // Every keyAgreement method, grouped by controller, in one pass -- keying by
329
372
  // controller string picks up only MARKED methods (a client's own), since the
330
373
  // account DID controller a recovery code's unmarked method carries is never
331
374
  // looked up below.
332
375
  const keyAgreementIndex = markedKeyAgreementIndex({ doc });
333
376
  const clients = [];
334
- for (const vmId of relationIds(doc.capabilityInvocation)) {
335
- const signingKeyMultibase = vmFragmentOf(vmId);
336
- if (!signingKeyMultibase) {
337
- continue;
338
- }
377
+ for (const signingKeyMultibase of signingKeyMultibases) {
339
378
  const addIndex = addIndexes.get(signingKeyMultibase);
340
379
  clients.push({
341
380
  signingKeyMultibase,
342
381
  keyAgreementKeyMultibases: keyAgreementIndex.get(clientKeyAgreementController({ signingKeyMultibase })) ?? [],
343
- updateKeyMultibase: addIndex === undefined
344
- ? undefined
345
- : attributeActiveUpdateKey({ params, addIndex }),
382
+ updateKeyMultibase: updateKeys.get(signingKeyMultibase),
346
383
  addedAt: addIndex === undefined ? undefined : log[addIndex].versionTime
347
384
  });
348
385
  }
@@ -1 +1 @@
1
- {"version":3,"file":"listClients.js","sourceRoot":"","sources":["../../src/webvh/listClients.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listClients.js","sourceRoot":"","sources":["../../src/webvh/listClients.ts"],"names":[],"mappings":"AA0DA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACpB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,WAAW,EACX,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,4BAA4B,CAAA;AAkCnC;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,EACpC,GAAG,EAGJ;IACC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IACpC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,kBAAkB,IAAI,EAAE,EAAE,CAAC;QAClD,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC9B,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC3C,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAChE,IAAI,QAAQ,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,4BAA4B,CAAC,EACpC,GAAG,EAGJ;IACC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IACpC,KAAK,MAAM,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;QACjC,IAAI,QAAQ,EAAE,CAAC;YACb,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,uBAAuB,CAAC;QAC3C,GAAG;QACH,QAAQ,EAAE,sBAAsB;KACjC,CAAC,EAAE,CAAC;QACH,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC9B,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,uBAAuB,CAAC,EACtC,GAAG,EACH,eAAe,EAIhB;IACC,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC7E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,4BAA4B,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AAC7D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,yBAAyB,CAAC,EACxC,GAAG,EACH,mBAAmB,EAIpB;IACC,MAAM,MAAM,GAAG,4BAA4B,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACpE,OAAO,2BAA2B,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAChD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,MAAM,CACvC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,4BAA4B,CAAC,EAC3C,GAAG,EACH,mBAAmB,EAIpB;IACC,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,KAAK,MAAM,MAAM,IAAI,yBAAyB,CAAC;QAC7C,GAAG;QACH,mBAAmB;KACpB,CAAC,EAAE,CAAC;QACH,MAAM,SAAS,GACb,MAAM,CAAC,kBAAkB;YACzB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACnD,IAAI,SAAS,EAAE,CAAC;YACd,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAA;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,uBAAuB,CAAC,EAC/B,GAAG,EAGJ;IACC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAA;IACzC,KAAK,MAAM,MAAM,IAAI,2BAA2B,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,SAAQ;QACV,CAAC;QACD,MAAM,SAAS,GACb,MAAM,CAAC,kBAAkB;YACzB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACnD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAQ;QACV,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CACtB,MAAuC,EACvC,KAAa;IAEb,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACxE,OAAO,MAAM,CAAC,KAAK,CAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AACpE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAS,yBAAyB,CAAC,EACjC,MAAM,EACN,UAAU,EAIX;IACC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8B,CAAA;IACpD,2EAA2E;IAC3E,mDAAmD;IACnD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAA;IAC3C,KAAK,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACnC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,oEAAoE;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACzC,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,wEAAwE;QACxE,qCAAqC;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAE,CAAC,UAAU,CAAA;QAC5C,qDAAqD;QACrD,IAAI,QAA8B,CAAA;QAClC,KAAK,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;YAChD,IAAI,GAAG,KAAK,SAAS,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,SAAQ;YACV,CAAC;YACD,QAAQ,KAAK,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YAC3C,MAAM,CAAC,GAAG,CACR,mBAAmB,EACnB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAChD,CAAA;QACH,CAAC;QACD,KAAK,MAAM,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3D,QAAQ,KAAK,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YAC3C,MAAM,CAAC,GAAG,CACR,mBAAmB,EACnB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAChD,CAAA;QACH,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,UAAU,CAAA;IACnD,KAAK,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;QAChD,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,cAAc,CAAC,EACtB,GAAG,EACH,mBAAmB,EAIpB;IACC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAC3B,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAChD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,mBAAmB,CACnD,CACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,GAAG,EACH,mBAAmB,EAIpB;IACC,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAC7D,OAAO,QAAQ,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,yBAAyB,CAAC;YACxB,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC;YAChC,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC,CAAC;SACvD,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AACjC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB,CAAC,EACxB,GAAG,EACH,oBAAoB,EAIrB;IACC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC5C,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3C,IAAI,UAAU,CAAC,IAAI,KAAK,oBAAoB,CAAC,IAAI,EAAE,CAAC;YAClD,MAAK;QACP,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACjE,MAAM,mBAAmB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;YAC9C,IACE,mBAAmB;gBACnB,oBAAoB,CAAC,GAAG,CAAC,mBAAmB,CAAC;gBAC7C,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC,EACpC,CAAC;gBACD,UAAU,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,GAAG,EAGJ;IACC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,KAAK,CAAA;IACtC,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACvC,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC;SAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC/B,MAAM,CAAC,CAAC,SAAS,EAAuB,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IACjE,qEAAqE;IACrE,oEAAoE;IACpE,MAAM,UAAU,GAAG,gBAAgB,CAAC;QAClC,GAAG;QACH,oBAAoB,EAAE,IAAI,GAAG,CAAC,oBAAoB,CAAC;KACpD,CAAC,CAAA;IACF,oEAAoE;IACpE,MAAM,UAAU,GAAG,yBAAyB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;IACpE,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,mBAAmB;IACnB,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAC1D,MAAM,OAAO,GAA0B,EAAE,CAAA;IACzC,KAAK,MAAM,mBAAmB,IAAI,oBAAoB,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QACpD,OAAO,CAAC,IAAI,CAAC;YACX,mBAAmB;YACnB,yBAAyB,EACvB,iBAAiB,CAAC,GAAG,CACnB,4BAA4B,CAAC,EAAE,mBAAmB,EAAE,CAAC,CACtD,IAAI,EAAE;YACT,kBAAkB,EAAE,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC;YACvD,OAAO,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,WAAW;SACzE,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,84 @@
1
+ /*!
2
+ * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
+ */
4
+ /**
5
+ * The one merge of new verification methods into a published account
6
+ * document, shared by every entry builder that ADDS methods: the enrollment
7
+ * add entry, the self-enrollment add entry, and the recovery continuation's
8
+ * add-and-retire entry. Each site hands over its methods and the ids each
9
+ * relation gains; the merge replaces a method already published under the
10
+ * same id, dedupes each relation's references, and applies one optional
11
+ * retirement predicate over the EXISTING document alone.
12
+ *
13
+ * Shared because a drift here is silent: a relation missed at one site or a
14
+ * filter run in a different order publishes a document the other replica
15
+ * would not have written, and nothing refuses it. Deliberately dependency-
16
+ * light -- the relation reader and the method type only -- so the layers
17
+ * that build entries can take it without the ceremony graph.
18
+ */
19
+ import type { VerificationMethod } from '@interop/did-method-webvh';
20
+ /**
21
+ * The ids a merge adds to each verification relation. Order is load-bearing
22
+ * on the wire: each relation gains the ids in the order given, after the
23
+ * references the document already carries.
24
+ */
25
+ export interface RelationMembership {
26
+ authentication?: string[];
27
+ assertionMethod?: string[];
28
+ keyAgreement?: string[];
29
+ capabilityInvocation?: string[];
30
+ capabilityDelegation?: string[];
31
+ }
32
+ /**
33
+ * Merges verification methods into a published document across the five
34
+ * relations. `verificationMethod` keeps every existing method the predicate
35
+ * does not retire and that no added method replaces by id, then the added
36
+ * methods in order; each relation keeps its existing references (retired ones
37
+ * dropped) and then the ids `relations` names for it, deduped.
38
+ *
39
+ * The retirement predicate runs over the existing document only, and the
40
+ * added ids join afterwards: a method this entry publishes may already stand
41
+ * in a relation (a reinstalled ladder VM, say), and filtering the union would
42
+ * strike the very method being published.
43
+ *
44
+ * @param options {object}
45
+ * @param options.doc {object} the published document the entry extends
46
+ * @param options.methods {VerificationMethod[]} the methods to publish, in
47
+ * the order they land in `verificationMethod`
48
+ * @param options.relations {RelationMembership} the ids each relation gains
49
+ * @param [options.retire] {(id: string) => boolean} which existing method
50
+ * ids and relation references leave the document in the same entry
51
+ * @returns {object} the merged `verificationMethods` and the five relations,
52
+ * as the account-entry seam takes them
53
+ */
54
+ export declare function mergeVerificationMethods({ doc, methods, relations, retire }: {
55
+ doc: {
56
+ verificationMethod?: VerificationMethod[];
57
+ authentication?: Array<string | {
58
+ id?: string;
59
+ }>;
60
+ assertionMethod?: Array<string | {
61
+ id?: string;
62
+ }>;
63
+ keyAgreement?: Array<string | {
64
+ id?: string;
65
+ }>;
66
+ capabilityInvocation?: Array<string | {
67
+ id?: string;
68
+ }>;
69
+ capabilityDelegation?: Array<string | {
70
+ id?: string;
71
+ }>;
72
+ };
73
+ methods: VerificationMethod[];
74
+ relations: RelationMembership;
75
+ retire?: (id: string) => boolean;
76
+ }): {
77
+ verificationMethods: VerificationMethod[];
78
+ authentication: string[];
79
+ assertionMethod: string[];
80
+ keyAgreement: string[];
81
+ capabilityInvocation: string[];
82
+ capabilityDelegation: string[];
83
+ };
84
+ //# sourceMappingURL=mergeMethods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeMethods.d.ts","sourceRoot":"","sources":["../../src/webvh/mergeMethods.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAGnE;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC/B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,GAAG,EACH,OAAO,EACP,SAAS,EACT,MAAoB,EACrB,EAAE;IACD,GAAG,EAAE;QACH,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,CAAA;QACzC,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QAChD,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACjD,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QAC9C,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACtD,oBAAoB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KACvD,CAAA;IACD,OAAO,EAAE,kBAAkB,EAAE,CAAA;IAC7B,SAAS,EAAE,kBAAkB,CAAA;IAC7B,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;CACjC,GAAG;IACF,mBAAmB,EAAE,kBAAkB,EAAE,CAAA;IACzC,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,oBAAoB,EAAE,MAAM,EAAE,CAAA;IAC9B,oBAAoB,EAAE,MAAM,EAAE,CAAA;CAC/B,CAwCA"}
@@ -0,0 +1,46 @@
1
+ import { relationIds } from '../resourceLog/document.js';
2
+ /**
3
+ * Merges verification methods into a published document across the five
4
+ * relations. `verificationMethod` keeps every existing method the predicate
5
+ * does not retire and that no added method replaces by id, then the added
6
+ * methods in order; each relation keeps its existing references (retired ones
7
+ * dropped) and then the ids `relations` names for it, deduped.
8
+ *
9
+ * The retirement predicate runs over the existing document only, and the
10
+ * added ids join afterwards: a method this entry publishes may already stand
11
+ * in a relation (a reinstalled ladder VM, say), and filtering the union would
12
+ * strike the very method being published.
13
+ *
14
+ * @param options {object}
15
+ * @param options.doc {object} the published document the entry extends
16
+ * @param options.methods {VerificationMethod[]} the methods to publish, in
17
+ * the order they land in `verificationMethod`
18
+ * @param options.relations {RelationMembership} the ids each relation gains
19
+ * @param [options.retire] {(id: string) => boolean} which existing method
20
+ * ids and relation references leave the document in the same entry
21
+ * @returns {object} the merged `verificationMethods` and the five relations,
22
+ * as the account-entry seam takes them
23
+ */
24
+ export function mergeVerificationMethods({ doc, methods, relations, retire = () => false }) {
25
+ const retired = (id) => id !== undefined && retire(id);
26
+ const existingMethods = doc.verificationMethod ?? [];
27
+ const verificationMethods = [
28
+ ...existingMethods.filter(method => !retired(method.id) && !methods.some(added => added.id === method.id)),
29
+ ...methods
30
+ ];
31
+ const withReferences = (relation, ids) => [
32
+ ...new Set([
33
+ ...relationIds(relation).filter(id => !retired(id)),
34
+ ...(ids ?? [])
35
+ ])
36
+ ];
37
+ return {
38
+ verificationMethods,
39
+ authentication: withReferences(doc.authentication, relations.authentication),
40
+ assertionMethod: withReferences(doc.assertionMethod, relations.assertionMethod),
41
+ keyAgreement: withReferences(doc.keyAgreement, relations.keyAgreement),
42
+ capabilityInvocation: withReferences(doc.capabilityInvocation, relations.capabilityInvocation),
43
+ capabilityDelegation: withReferences(doc.capabilityDelegation, relations.capabilityDelegation)
44
+ };
45
+ }
46
+ //# sourceMappingURL=mergeMethods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeMethods.js","sourceRoot":"","sources":["../../src/webvh/mergeMethods.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAexD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,GAAG,EACH,OAAO,EACP,SAAS,EACT,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,EAarB;IAQC,MAAM,OAAO,GAAG,CAAC,EAAsB,EAAW,EAAE,CAClD,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC,CAAA;IAChC,MAAM,eAAe,GAAG,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAA;IACpD,MAAM,mBAAmB,GAAG;QAC1B,GAAG,eAAe,CAAC,MAAM,CACvB,MAAM,CAAC,EAAE,CACP,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CACxE;QACD,GAAG,OAAO;KACX,CAAA;IACD,MAAM,cAAc,GAAG,CACrB,QAAqD,EACrD,GAAyB,EACzB,EAAE,CAAC;QACH,GAAG,IAAI,GAAG,CAAC;YACT,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnD,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;SACf,CAAC;KACH,CAAA;IACD,OAAO;QACL,mBAAmB;QACnB,cAAc,EAAE,cAAc,CAC5B,GAAG,CAAC,cAAc,EAClB,SAAS,CAAC,cAAc,CACzB;QACD,eAAe,EAAE,cAAc,CAC7B,GAAG,CAAC,eAAe,EACnB,SAAS,CAAC,eAAe,CAC1B;QACD,YAAY,EAAE,cAAc,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC;QACtE,oBAAoB,EAAE,cAAc,CAClC,GAAG,CAAC,oBAAoB,EACxB,SAAS,CAAC,oBAAoB,CAC/B;QACD,oBAAoB,EAAE,cAAc,CAClC,GAAG,CAAC,oBAAoB,EACxB,SAAS,CAAC,oBAAoB,CAC/B;KACF,CAAA;AACH,CAAC"}
@@ -86,12 +86,22 @@ export declare function clientRemovalTarget({ published, client }: {
86
86
  * these to `updateDID` beside its own signer -- an enrolled client's update
87
87
  * key for a revocation, a revealed ladder rung for a forget.
88
88
  *
89
+ * The latent commitments excluded from that attribution are derived here
90
+ * from the log (`standingCredentialLatentHashes`), so no caller has to know
91
+ * the account's standing credentials to remove a client correctly; a caller's
92
+ * own list is excluded beside them as a cross-check and vouches for what the
93
+ * walk could not read (a credential an earlier recovery's add-and-retire
94
+ * entry introduced has no anchor, and a registry still names its hash). The
95
+ * derived set never overrides the decision-0007 position, so a walk that
96
+ * over-claimed cannot leave the client's own staged hash standing.
97
+ *
89
98
  * @param options {object}
90
99
  * @param options.published {PublishedWebvhLog}
91
100
  * @param options.target {ClientRemovalTarget}
92
101
  * @param [options.knownLatentHashes] {string[]} standing latent commitments
93
- * the caller vouches for (the recovery registry's update-key hashes),
94
- * excluded from the staged-hash attribution
102
+ * the caller vouches for beyond the derived set (a recovery registry's
103
+ * update-key hashes, a ladder's own rung hashes), excluded from the
104
+ * staged-hash attribution alongside it
95
105
  * @returns {Promise<object>} the `updateDID` field bundle
96
106
  */
97
107
  export declare function clientRemovalFields({ published, target, knownLatentHashes }: {
@@ -1 +1 @@
1
- {"version":3,"file":"revokeClient.d.ts","sourceRoot":"","sources":["../../src/webvh/revokeClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"revokeClient.d.ts","sourceRoot":"","sources":["../../src/webvh/revokeClient.ts"],"names":[],"mappings":"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"}