@interop/wallet-core 0.51.0 → 0.52.1

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 (239) hide show
  1. package/README.md +7 -11
  2. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts +2 -2
  3. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts.map +1 -1
  4. package/dist/clientAnnex/credentialAnchoredGenesis.js +1 -1
  5. package/dist/clientAnnex/forget.d.ts +18 -6
  6. package/dist/clientAnnex/forget.d.ts.map +1 -1
  7. package/dist/clientAnnex/forget.js +19 -6
  8. package/dist/clientAnnex/forget.js.map +1 -1
  9. package/dist/clientAnnex/forgetLast.d.ts +33 -20
  10. package/dist/clientAnnex/forgetLast.d.ts.map +1 -1
  11. package/dist/clientAnnex/forgetLast.js +43 -17
  12. package/dist/clientAnnex/forgetLast.js.map +1 -1
  13. package/dist/clientAnnex/gc.d.ts +3 -3
  14. package/dist/clientAnnex/gc.d.ts.map +1 -1
  15. package/dist/clientAnnex/gc.js +2 -2
  16. package/dist/clientAnnex/gc.js.map +1 -1
  17. package/dist/clientAnnex/index.d.ts +5 -5
  18. package/dist/clientAnnex/index.d.ts.map +1 -1
  19. package/dist/clientAnnex/index.js +4 -4
  20. package/dist/clientAnnex/index.js.map +1 -1
  21. package/dist/clientAnnex/ladder.d.ts +19 -11
  22. package/dist/clientAnnex/ladder.d.ts.map +1 -1
  23. package/dist/clientAnnex/ladder.js +77 -14
  24. package/dist/clientAnnex/ladder.js.map +1 -1
  25. package/dist/clientAnnex/ladderAnchored.d.ts +36 -7
  26. package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
  27. package/dist/clientAnnex/ladderAnchored.js +80 -18
  28. package/dist/clientAnnex/ladderAnchored.js.map +1 -1
  29. package/dist/clientAnnex/log.d.ts +6 -6
  30. package/dist/clientAnnex/log.d.ts.map +1 -1
  31. package/dist/clientAnnex/log.js +8 -8
  32. package/dist/clientAnnex/log.js.map +1 -1
  33. package/dist/clientAnnex/recoveryLadderAnchored.d.ts +7 -7
  34. package/dist/clientAnnex/recoveryLadderAnchored.js +9 -9
  35. package/dist/clientAnnex/recoveryLadderAnchored.js.map +1 -1
  36. package/dist/clientAnnex/selfEnroll.d.ts +6 -4
  37. package/dist/clientAnnex/selfEnroll.d.ts.map +1 -1
  38. package/dist/clientAnnex/selfEnroll.js +19 -7
  39. package/dist/clientAnnex/selfEnroll.js.map +1 -1
  40. package/dist/clients/listing.d.ts +1 -1
  41. package/dist/clients/listing.d.ts.map +1 -1
  42. package/dist/clients/listing.js +1 -1
  43. package/dist/clients/listing.js.map +1 -1
  44. package/dist/clients/revocation.d.ts +1 -1
  45. package/dist/clients/rosterPolicy.d.ts +1 -1
  46. package/dist/clients/rosterPolicy.d.ts.map +1 -1
  47. package/dist/descriptors/acquire.js +1 -1
  48. package/dist/descriptors/logSource.d.ts +1 -2
  49. package/dist/descriptors/logSource.d.ts.map +1 -1
  50. package/dist/descriptors/logSource.js +2 -2
  51. package/dist/descriptors/logSource.js.map +1 -1
  52. package/dist/enrollment/enrollment.d.ts +1 -1
  53. package/dist/enrollment/enrollment.d.ts.map +1 -1
  54. package/dist/enrollment/enrollment.js +2 -1
  55. package/dist/enrollment/enrollment.js.map +1 -1
  56. package/dist/genesis/accountGenesis.d.ts +1 -1
  57. package/dist/genesis/accountGenesis.d.ts.map +1 -1
  58. package/dist/genesis/accountGenesis.js +1 -1
  59. package/dist/index.d.ts +1 -3
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1 -3
  62. package/dist/index.js.map +1 -1
  63. package/dist/keyring/kdf.d.ts +6 -20
  64. package/dist/keyring/kdf.d.ts.map +1 -1
  65. package/dist/keyring/kdf.js +8 -5
  66. package/dist/keyring/kdf.js.map +1 -1
  67. package/dist/keyring/unlockSpace.js +1 -1
  68. package/dist/keys/rosterLogStore.d.ts +16 -14
  69. package/dist/keys/rosterLogStore.d.ts.map +1 -1
  70. package/dist/keys/rosterLogStore.js +149 -32
  71. package/dist/keys/rosterLogStore.js.map +1 -1
  72. package/dist/keys/rosterStore.d.ts +8 -7
  73. package/dist/keys/rosterStore.d.ts.map +1 -1
  74. package/dist/keys/rosterStore.js +6 -6
  75. package/dist/keys/rosterStore.js.map +1 -1
  76. package/dist/keys/spaceEpochs.d.ts +1 -1
  77. package/dist/keys/spaceEpochs.js +1 -1
  78. package/dist/keys/userKeyRoster.d.ts +3 -3
  79. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  80. package/dist/keys/userKeyRoster.js +3 -3
  81. package/dist/keys/userKeyRoster.js.map +1 -1
  82. package/dist/recovery/index.d.ts +2 -2
  83. package/dist/recovery/index.js +2 -2
  84. package/dist/recovery/recoveryDelegation.js +1 -1
  85. package/dist/recovery/recoveryDelegation.js.map +1 -1
  86. package/dist/recovery/recoveryWebvh.d.ts +4 -4
  87. package/dist/recovery/recoveryWebvh.js +5 -5
  88. package/dist/request/appKey.d.ts +9 -3
  89. package/dist/request/appKey.d.ts.map +1 -1
  90. package/dist/request/appKey.js +13 -8
  91. package/dist/request/appKey.js.map +1 -1
  92. package/dist/request/classify.d.ts.map +1 -1
  93. package/dist/request/classify.js +13 -1
  94. package/dist/request/classify.js.map +1 -1
  95. package/dist/request/ephemeralExchange.d.ts +6 -1
  96. package/dist/request/ephemeralExchange.d.ts.map +1 -1
  97. package/dist/request/ephemeralExchange.js +6 -1
  98. package/dist/request/ephemeralExchange.js.map +1 -1
  99. package/dist/request/exchangeClient.d.ts +0 -23
  100. package/dist/request/exchangeClient.d.ts.map +1 -1
  101. package/dist/request/exchangeClient.js +30 -1
  102. package/dist/request/exchangeClient.js.map +1 -1
  103. package/dist/request/index.d.ts +4 -1
  104. package/dist/request/index.d.ts.map +1 -1
  105. package/dist/request/index.js +4 -1
  106. package/dist/request/index.js.map +1 -1
  107. package/dist/request/interactionRequest.d.ts +23 -0
  108. package/dist/request/interactionRequest.d.ts.map +1 -0
  109. package/dist/request/interactionRequest.js +46 -0
  110. package/dist/request/interactionRequest.js.map +1 -0
  111. package/dist/request/interactionUrl.d.ts +3 -14
  112. package/dist/request/interactionUrl.d.ts.map +1 -1
  113. package/dist/request/interactionUrl.js +20 -1
  114. package/dist/request/interactionUrl.js.map +1 -1
  115. package/dist/resourceLog/controller.d.ts +48 -49
  116. package/dist/resourceLog/controller.d.ts.map +1 -1
  117. package/dist/resourceLog/controller.js +40 -20
  118. package/dist/resourceLog/controller.js.map +1 -1
  119. package/dist/resourceLog/errors.d.ts +12 -78
  120. package/dist/resourceLog/errors.d.ts.map +1 -1
  121. package/dist/resourceLog/errors.js +12 -79
  122. package/dist/resourceLog/errors.js.map +1 -1
  123. package/dist/resourceLog/index.d.ts +17 -22
  124. package/dist/resourceLog/index.d.ts.map +1 -1
  125. package/dist/resourceLog/index.js +16 -21
  126. package/dist/resourceLog/index.js.map +1 -1
  127. package/dist/resourceLog/license.d.ts +27 -26
  128. package/dist/resourceLog/license.d.ts.map +1 -1
  129. package/dist/resourceLog/license.js +31 -30
  130. package/dist/resourceLog/license.js.map +1 -1
  131. package/dist/unlock/index.d.ts +6 -6
  132. package/dist/unlock/index.d.ts.map +1 -1
  133. package/dist/unlock/index.js +5 -5
  134. package/dist/unlock/retire.d.ts +29 -28
  135. package/dist/unlock/retire.d.ts.map +1 -1
  136. package/dist/unlock/retire.js +25 -16
  137. package/dist/unlock/retire.js.map +1 -1
  138. package/dist/unlock/standingClient.d.ts +1 -1
  139. package/dist/unlock/standingClient.js +3 -3
  140. package/dist/unlock/standingWebvh.d.ts +28 -10
  141. package/dist/unlock/standingWebvh.d.ts.map +1 -1
  142. package/dist/unlock/standingWebvh.js +75 -37
  143. package/dist/unlock/standingWebvh.js.map +1 -1
  144. package/dist/unlock/unlockRecord.js +1 -1
  145. package/dist/webvh/delegatedLogStore.d.ts +2 -2
  146. package/dist/webvh/delegatedLogStore.js +2 -2
  147. package/dist/webvh/didWeb.js +1 -1
  148. package/dist/webvh/didWeb.js.map +1 -1
  149. package/dist/webvh/didWebvh.d.ts +3 -3
  150. package/dist/webvh/didWebvh.d.ts.map +1 -1
  151. package/dist/webvh/didWebvh.js +5 -5
  152. package/dist/webvh/didWebvh.js.map +1 -1
  153. package/dist/webvh/listClients.js +1 -1
  154. package/dist/webvh/listClients.js.map +1 -1
  155. package/dist/webvh/verifyLog.d.ts +1 -1
  156. package/dist/webvh/verifyLog.d.ts.map +1 -1
  157. package/dist/webvh/verifyLog.js +1 -2
  158. package/dist/webvh/verifyLog.js.map +1 -1
  159. package/package.json +5 -9
  160. package/dist/display/alignment.d.ts +0 -55
  161. package/dist/display/alignment.d.ts.map +0 -1
  162. package/dist/display/alignment.js +0 -117
  163. package/dist/display/alignment.js.map +0 -1
  164. package/dist/display/credentialName.d.ts +0 -42
  165. package/dist/display/credentialName.d.ts.map +0 -1
  166. package/dist/display/credentialName.js +0 -106
  167. package/dist/display/credentialName.js.map +0 -1
  168. package/dist/display/displayFields.d.ts +0 -59
  169. package/dist/display/displayFields.d.ts.map +0 -1
  170. package/dist/display/displayFields.js +0 -136
  171. package/dist/display/displayFields.js.map +0 -1
  172. package/dist/display/evidence.d.ts +0 -50
  173. package/dist/display/evidence.d.ts.map +0 -1
  174. package/dist/display/evidence.js +0 -67
  175. package/dist/display/evidence.js.map +0 -1
  176. package/dist/display/image.d.ts +0 -18
  177. package/dist/display/image.d.ts.map +0 -1
  178. package/dist/display/image.js +0 -23
  179. package/dist/display/image.js.map +0 -1
  180. package/dist/display/index.d.ts +0 -38
  181. package/dist/display/index.d.ts.map +0 -1
  182. package/dist/display/index.js +0 -32
  183. package/dist/display/index.js.map +0 -1
  184. package/dist/display/issuer.d.ts +0 -105
  185. package/dist/display/issuer.d.ts.map +0 -1
  186. package/dist/display/issuer.js +0 -126
  187. package/dist/display/issuer.js.map +0 -1
  188. package/dist/display/obv3.d.ts +0 -82
  189. package/dist/display/obv3.d.ts.map +0 -1
  190. package/dist/display/obv3.js +0 -117
  191. package/dist/display/obv3.js.map +0 -1
  192. package/dist/display/parse.d.ts +0 -66
  193. package/dist/display/parse.d.ts.map +0 -1
  194. package/dist/display/parse.js +0 -104
  195. package/dist/display/parse.js.map +0 -1
  196. package/dist/display/subject.d.ts +0 -79
  197. package/dist/display/subject.d.ts.map +0 -1
  198. package/dist/display/subject.js +0 -124
  199. package/dist/display/subject.js.map +0 -1
  200. package/dist/display/text.d.ts +0 -53
  201. package/dist/display/text.d.ts.map +0 -1
  202. package/dist/display/text.js +0 -78
  203. package/dist/display/text.js.map +0 -1
  204. package/dist/display/types.d.ts +0 -55
  205. package/dist/display/types.d.ts.map +0 -1
  206. package/dist/display/types.js +0 -41
  207. package/dist/display/types.js.map +0 -1
  208. package/dist/display/validity.d.ts +0 -51
  209. package/dist/display/validity.d.ts.map +0 -1
  210. package/dist/display/validity.js +0 -51
  211. package/dist/display/validity.js.map +0 -1
  212. package/dist/display/verificationView.d.ts +0 -115
  213. package/dist/display/verificationView.d.ts.map +0 -1
  214. package/dist/display/verificationView.js +0 -199
  215. package/dist/display/verificationView.js.map +0 -1
  216. package/dist/resourceLog/append.d.ts +0 -112
  217. package/dist/resourceLog/append.d.ts.map +0 -1
  218. package/dist/resourceLog/append.js +0 -197
  219. package/dist/resourceLog/append.js.map +0 -1
  220. package/dist/resourceLog/entry.d.ts +0 -68
  221. package/dist/resourceLog/entry.d.ts.map +0 -1
  222. package/dist/resourceLog/entry.js +0 -167
  223. package/dist/resourceLog/entry.js.map +0 -1
  224. package/dist/resourceLog/pin.d.ts +0 -82
  225. package/dist/resourceLog/pin.d.ts.map +0 -1
  226. package/dist/resourceLog/pin.js +0 -57
  227. package/dist/resourceLog/pin.js.map +0 -1
  228. package/dist/resourceLog/seal.d.ts +0 -97
  229. package/dist/resourceLog/seal.d.ts.map +0 -1
  230. package/dist/resourceLog/seal.js +0 -113
  231. package/dist/resourceLog/seal.js.map +0 -1
  232. package/dist/resourceLog/verify.d.ts +0 -96
  233. package/dist/resourceLog/verify.d.ts.map +0 -1
  234. package/dist/resourceLog/verify.js +0 -474
  235. package/dist/resourceLog/verify.js.map +0 -1
  236. package/dist/resourceLog/vmFragment.d.ts +0 -33
  237. package/dist/resourceLog/vmFragment.d.ts.map +0 -1
  238. package/dist/resourceLog/vmFragment.js +0 -39
  239. package/dist/resourceLog/vmFragment.js.map +0 -1
@@ -1,50 +0,0 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * Portfolio-evidence extraction (from DCW; no Freewallet equivalent beyond the
6
- * image helper in `obv3.ts`). Turns a credential's `evidence` array (or a
7
- * subject `portfolio`) into a flat list of `{ name, url }` links, coercing the
8
- * many shapes evidence appears in (string URL, `{ url }`, `{ id }`) and dropping
9
- * anything without a usable URL.
10
- */
11
- /**
12
- * A resolved evidence link.
13
- */
14
- export type PortfolioEvidenceItem = {
15
- name: string;
16
- url: string;
17
- };
18
- /**
19
- * Evidence item from a W3C VC evidence array: `{ id, type, name }`.
20
- */
21
- export type VCEvidenceItem = {
22
- id: string;
23
- type?: string;
24
- name?: string;
25
- };
26
- /**
27
- * A VC carrying a top-level `evidence` array (W3C / IMS OB spec).
28
- */
29
- export type VCWithEvidence = {
30
- evidence?: unknown;
31
- credentialSubject?: unknown;
32
- };
33
- /**
34
- * Extracts evidence links from a raw array/object/string, dropping items with
35
- * no usable URL.
36
- *
37
- * @param raw {unknown}
38
- * @returns {PortfolioEvidenceItem[]}
39
- */
40
- export declare function portfolioEvidenceFrom(raw: unknown): PortfolioEvidenceItem[];
41
- /**
42
- * Extracts evidence from a credential: prefers the credential's top-level
43
- * `evidence` array, else falls back to the subject's `portfolio`.
44
- *
45
- * @param credential {VCWithEvidence}
46
- * @param subject {unknown} optional pre-resolved subject
47
- * @returns {PortfolioEvidenceItem[]}
48
- */
49
- export declare function evidenceFromCredential(credential: VCWithEvidence, subject?: unknown): PortfolioEvidenceItem[];
50
- //# sourceMappingURL=evidence.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,67 +0,0 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * Portfolio-evidence extraction (from DCW; no Freewallet equivalent beyond the
6
- * image helper in `obv3.ts`). Turns a credential's `evidence` array (or a
7
- * subject `portfolio`) into a flat list of `{ name, url }` links, coercing the
8
- * many shapes evidence appears in (string URL, `{ url }`, `{ id }`) and dropping
9
- * anything without a usable URL.
10
- */
11
- /**
12
- * Parses a single evidence item into `{ name, url }`, or `null` when unusable.
13
- */
14
- function parseEvidenceItem(item) {
15
- if (typeof item === 'string') {
16
- const url = item.trim();
17
- if (!url) {
18
- return null;
19
- }
20
- return { name: url, url };
21
- }
22
- if (!item || typeof item !== 'object') {
23
- return null;
24
- }
25
- const rawUrl = item.url ??
26
- item.id ??
27
- '';
28
- const url = (typeof rawUrl === 'string' ? rawUrl : `${rawUrl}`).trim();
29
- if (!url) {
30
- return null;
31
- }
32
- const rawName = item.name ?? '';
33
- const name = (typeof rawName === 'string' ? rawName : `${rawName}`).trim();
34
- return { name: name || url, url };
35
- }
36
- /**
37
- * Extracts evidence links from a raw array/object/string, dropping items with
38
- * no usable URL.
39
- *
40
- * @param raw {unknown}
41
- * @returns {PortfolioEvidenceItem[]}
42
- */
43
- export function portfolioEvidenceFrom(raw) {
44
- const items = Array.isArray(raw) ? raw : [raw];
45
- return items.map(parseEvidenceItem).filter(Boolean);
46
- }
47
- /**
48
- * Extracts evidence from a credential: prefers the credential's top-level
49
- * `evidence` array, else falls back to the subject's `portfolio`.
50
- *
51
- * @param credential {VCWithEvidence}
52
- * @param subject {unknown} optional pre-resolved subject
53
- * @returns {PortfolioEvidenceItem[]}
54
- */
55
- export function evidenceFromCredential(credential, subject) {
56
- const fromEvidence = credential?.evidence;
57
- if (fromEvidence && Array.isArray(fromEvidence) && fromEvidence.length > 0) {
58
- return portfolioEvidenceFrom(fromEvidence);
59
- }
60
- const rawSubject = credential?.credentialSubject;
61
- const subj = subject ?? (Array.isArray(rawSubject) ? rawSubject[0] : rawSubject);
62
- const portfolio = subj && typeof subj === 'object' && 'portfolio' in subj
63
- ? subj.portfolio
64
- : undefined;
65
- return portfolioEvidenceFrom(portfolio);
66
- }
67
- //# sourceMappingURL=evidence.js.map
@@ -1 +0,0 @@
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"}
@@ -1,18 +0,0 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * Resolves an image reference to its URL string. A VC image may be a bare URL
6
- * string or an `IImageObject` (`{ id, type }`) whose `id` is the URL. Returns
7
- * `null` (not `''`) when there is no usable image, matching DCW's convention.
8
- */
9
- import type { IImageObject } from '@interop/data-integrity-core';
10
- /**
11
- * The URL string of an image reference (the object's `id`, or the string
12
- * itself), or `null` when absent.
13
- *
14
- * @param image {IImageObject | string | null | undefined}
15
- * @returns {string | null}
16
- */
17
- export declare function imageSourceFrom(image?: IImageObject | string | null): string | null;
18
- //# sourceMappingURL=image.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/display/image.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;GAIG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAMhE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,GACnC,MAAM,GAAG,IAAI,CAWf"}
@@ -1,23 +0,0 @@
1
- function isImageObject(obj) {
2
- return typeof obj === 'object' && obj !== null && 'id' in obj && 'type' in obj;
3
- }
4
- /**
5
- * The URL string of an image reference (the object's `id`, or the string
6
- * itself), or `null` when absent.
7
- *
8
- * @param image {IImageObject | string | null | undefined}
9
- * @returns {string | null}
10
- */
11
- export function imageSourceFrom(image) {
12
- if (image === undefined || image === null) {
13
- return null;
14
- }
15
- if (isImageObject(image)) {
16
- return image.id;
17
- }
18
- if (typeof image === 'string') {
19
- return image;
20
- }
21
- return null;
22
- }
23
- //# sourceMappingURL=image.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/display/image.ts"],"names":[],"mappings":"AAUA,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,CAAA;AAChF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAoC;IAEpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,EAAE,CAAA;IACjB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,38 +0,0 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * The `@interop/wallet-core/display` subpath: the pure VC derivation / display
6
- * helpers and credential input parsing two wallet apps (DCW, Freewallet) share,
7
- * reconciled from their two drifted implementations.
8
- *
9
- * Guiding seam: RETURN RAW VALUES, FORMAT IN THE UI. Nothing here imports
10
- * `moment`, `Intl`, `i18next`, `react-native`, or any app config. Dates come
11
- * out as ISO strings / `Date`; verification messages are injected as a `labels`
12
- * map; URL fetching is injected as a `fetchUrl` callback. Each app keeps a thin
13
- * wrapper that re-applies its own formatting / localization / transport.
14
- *
15
- * The loose-shape guards / normalizers (`isVerifiableCredential`, `typeArray`,
16
- * `issuerId`, `subjectId`, ...) live in `@interop/data-integrity-core` (shared
17
- * with the `./request` subpath); import them from there.
18
- */
19
- export { credentialName, credentialNameFrom } from './credentialName.js';
20
- export { issuerName, getIssuerDetails, personNameFromCredential, issuerRenderInfoFrom, issuerRenderInfoWithVerification } from './issuer.js';
21
- export type { IssuerDetails, IssuerRenderInfo } from './issuer.js';
22
- export { getSubject, resolvePersonFullName, extractIssuedTo, credentialSubjectRenderInfo } from './subject.js';
23
- export type { SubjectRenderInfo } from './subject.js';
24
- export { getIssuanceDate, getExpirationDate, getExpirationInstant, isExpired } from './validity.js';
25
- export { extractNameFromOBV3Identifier, achievementsList, skillsList, getSkillImage, getEvidenceImage, getAchievementImage, getAchievementType } from './obv3.js';
26
- export { normalizeAlignments, getValidAlignments } from './alignment.js';
27
- export type { IAlignmentView, ValidAlignment } from './alignment.js';
28
- export { portfolioEvidenceFrom, evidenceFromCredential } from './evidence.js';
29
- export type { PortfolioEvidenceItem, VCEvidenceItem, VCWithEvidence } from './evidence.js';
30
- export { isResumeCredentialSubject, isResumeCredential, isEmploymentCredential, isVolunteerCredential } from './types.js';
31
- export { imageSourceFrom } from './image.js';
32
- export { asNonEmptyString, getTrimmedString, asRecord, recordList } from './text.js';
33
- export { getDisplayFields, buildCredentialDescription, buildCriteria } from './displayFields.js';
34
- export type { CredentialDisplayFields } from './displayFields.js';
35
- export { buildVerificationChecklist, getVerificationAggregateStatus, isFullyVerified, isExpiredOnly, hasVerificationWarning, issuerRecognizedByVerification } from './verificationView.js';
36
- export type { VerificationStep, VerificationChecklist, VerificationStepStatus, VerificationAggregateStatus, ChecklistMsgKey } from './verificationView.js';
37
- export { credentialsFromJSON, extractCredentialsFrom, resolveCredentialsInput, ResolveCredentialsInputError, VPQR_UNSUPPORTED_MESSAGE } from './parse.js';
38
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,32 +0,0 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * The `@interop/wallet-core/display` subpath: the pure VC derivation / display
6
- * helpers and credential input parsing two wallet apps (DCW, Freewallet) share,
7
- * reconciled from their two drifted implementations.
8
- *
9
- * Guiding seam: RETURN RAW VALUES, FORMAT IN THE UI. Nothing here imports
10
- * `moment`, `Intl`, `i18next`, `react-native`, or any app config. Dates come
11
- * out as ISO strings / `Date`; verification messages are injected as a `labels`
12
- * map; URL fetching is injected as a `fetchUrl` callback. Each app keeps a thin
13
- * wrapper that re-applies its own formatting / localization / transport.
14
- *
15
- * The loose-shape guards / normalizers (`isVerifiableCredential`, `typeArray`,
16
- * `issuerId`, `subjectId`, ...) live in `@interop/data-integrity-core` (shared
17
- * with the `./request` subpath); import them from there.
18
- */
19
- export { credentialName, credentialNameFrom } from './credentialName.js';
20
- export { issuerName, getIssuerDetails, personNameFromCredential, issuerRenderInfoFrom, issuerRenderInfoWithVerification } from './issuer.js';
21
- export { getSubject, resolvePersonFullName, extractIssuedTo, credentialSubjectRenderInfo } from './subject.js';
22
- export { getIssuanceDate, getExpirationDate, getExpirationInstant, isExpired } from './validity.js';
23
- export { extractNameFromOBV3Identifier, achievementsList, skillsList, getSkillImage, getEvidenceImage, getAchievementImage, getAchievementType } from './obv3.js';
24
- export { normalizeAlignments, getValidAlignments } from './alignment.js';
25
- export { portfolioEvidenceFrom, evidenceFromCredential } from './evidence.js';
26
- export { isResumeCredentialSubject, isResumeCredential, isEmploymentCredential, isVolunteerCredential } from './types.js';
27
- export { imageSourceFrom } from './image.js';
28
- export { asNonEmptyString, getTrimmedString, asRecord, recordList } from './text.js';
29
- export { getDisplayFields, buildCredentialDescription, buildCriteria } from './displayFields.js';
30
- export { buildVerificationChecklist, getVerificationAggregateStatus, isFullyVerified, isExpiredOnly, hasVerificationWarning, issuerRecognizedByVerification } from './verificationView.js';
31
- export { credentialsFromJSON, extractCredentialsFrom, resolveCredentialsInput, ResolveCredentialsInputError, VPQR_UNSUPPORTED_MESSAGE } from './parse.js';
32
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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"}
@@ -1,105 +0,0 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * Issuer display derivation.
6
- *
7
- * Drift resolution: DCW's `issuerRenderInfoFrom` /
8
- * `issuerRenderInfoWithVerification` are the superset and win -- they return
9
- * nullable fields, apply the SkillClaimCredential `person.name` override, and
10
- * overlay registry `federation_entity` metadata from the `registered_issuer`
11
- * verification-log entry. Freewallet's simpler string conveniences
12
- * (`issuerName`, `getIssuerDetails`) are kept and layered on top for callers
13
- * that just want a single string / an all-string detail record. The
14
- * verification-log argument is typed structurally (not against any app's
15
- * verifier module) so both apps can pass their own log shape.
16
- */
17
- import type { IIssuerObject, IVerifiableCredential } from '@interop/data-integrity-core';
18
- /**
19
- * All-string issuer detail record (Freewallet; `''` defaults).
20
- */
21
- export interface IssuerDetails {
22
- id: string;
23
- name: string;
24
- url: string;
25
- image: string;
26
- }
27
- /**
28
- * Nullable issuer render fields (DCW).
29
- */
30
- export interface IssuerRenderInfo {
31
- issuerName: string | null;
32
- issuerUrl: string | null;
33
- issuerId: string | null;
34
- issuerImage: string | null;
35
- }
36
- /**
37
- * The registry metadata overlay carried in a `registered_issuer` log entry.
38
- */
39
- interface FederationEntity {
40
- organization_name?: string;
41
- homepage_uri?: string;
42
- logo_uri?: string;
43
- }
44
- /**
45
- * Structural shape of the verification result read for the registry overlay.
46
- */
47
- interface VerifyResultLike {
48
- log?: Array<{
49
- id: string;
50
- matchingIssuers?: Array<{
51
- issuer?: {
52
- federation_entity?: FederationEntity;
53
- };
54
- }>;
55
- }>;
56
- }
57
- /**
58
- * Human-readable issuer string: the issuer object's `name`, else its `id`, else
59
- * (for a string issuer) the DID string itself, else `'Unknown Issuer'`. Never
60
- * returns `null`.
61
- *
62
- * @param credential {IVerifiableCredential}
63
- * @returns {string}
64
- */
65
- export declare function issuerName(credential: IVerifiableCredential): string;
66
- /**
67
- * Maps a VC `issuer` to an all-string detail record (`id` / `name` / `url` /
68
- * `image`), defaulting missing fields to `''`.
69
- *
70
- * @param issuer {IVerifiableCredential['issuer']}
71
- * @returns {IssuerDetails}
72
- */
73
- export declare function getIssuerDetails(issuer: IVerifiableCredential['issuer']): IssuerDetails;
74
- /**
75
- * The `credentialSubject.person.name` (SkillClaimCredential), used to override
76
- * the issuer display name. `null` when absent or no credential is given.
77
- *
78
- * @param credential {IVerifiableCredential | undefined}
79
- * @returns {string | null}
80
- */
81
- export declare function personNameFromCredential(credential?: IVerifiableCredential): string | null;
82
- /**
83
- * Nullable issuer render fields derived from the VC `issuer` alone, with a
84
- * SkillClaimCredential `person.name` override when a credential is supplied.
85
- *
86
- * @param issuer {IIssuerObject | string}
87
- * @param credential {IVerifiableCredential | undefined}
88
- * @returns {IssuerRenderInfo}
89
- */
90
- export declare function issuerRenderInfoFrom(issuer: IIssuerObject | string, credential?: IVerifiableCredential): IssuerRenderInfo;
91
- /**
92
- * Like {@link issuerRenderInfoFrom} but overlays registry `federation_entity`
93
- * metadata (organization name / homepage / logo) from the `registered_issuer`
94
- * verification-log entry when the issuer matched the registry and there is no
95
- * SkillClaimCredential person-name override.
96
- *
97
- * @param issuer {IIssuerObject | string}
98
- * @param verifyResult {VerifyResultLike | undefined} verification result whose
99
- * `log[]` may carry a `registered_issuer` match
100
- * @param credential {IVerifiableCredential | undefined}
101
- * @returns {IssuerRenderInfo}
102
- */
103
- export declare function issuerRenderInfoWithVerification(issuer: IIssuerObject | string, verifyResult?: VerifyResultLike, credential?: IVerifiableCredential): IssuerRenderInfo;
104
- export {};
105
- //# sourceMappingURL=issuer.d.ts.map
@@ -1 +0,0 @@
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,126 +0,0 @@
1
- import { typeArray } from '@interop/data-integrity-core/guards';
2
- import { imageSourceFrom } from './image.js';
3
- import { getSubject } from './subject.js';
4
- import { asNonEmptyString } from './text.js';
5
- /**
6
- * Human-readable issuer string: the issuer object's `name`, else its `id`, else
7
- * (for a string issuer) the DID string itself, else `'Unknown Issuer'`. Never
8
- * returns `null`.
9
- *
10
- * @param credential {IVerifiableCredential}
11
- * @returns {string}
12
- */
13
- export function issuerName(credential) {
14
- const { issuer } = credential;
15
- if (typeof issuer === 'string') {
16
- return issuer;
17
- }
18
- return issuer.name ?? issuer.id ?? 'Unknown Issuer';
19
- }
20
- /**
21
- * Maps a VC `issuer` to an all-string detail record (`id` / `name` / `url` /
22
- * `image`), defaulting missing fields to `''`.
23
- *
24
- * @param issuer {IVerifiableCredential['issuer']}
25
- * @returns {IssuerDetails}
26
- */
27
- export function getIssuerDetails(issuer) {
28
- if (typeof issuer === 'string') {
29
- return { id: issuer, name: '', url: '', image: '' };
30
- }
31
- const imageRaw = issuer.image;
32
- let image = '';
33
- if (typeof imageRaw === 'string') {
34
- image = imageRaw;
35
- }
36
- else if (imageRaw && typeof imageRaw === 'object' && 'id' in imageRaw) {
37
- image = String(imageRaw.id ?? '');
38
- }
39
- return {
40
- id: issuer.id ?? '',
41
- name: issuer.name ?? '',
42
- url: issuer.url ?? '',
43
- image
44
- };
45
- }
46
- /**
47
- * The `credentialSubject.person.name` (SkillClaimCredential), used to override
48
- * the issuer display name. `null` when absent or no credential is given.
49
- *
50
- * @param credential {IVerifiableCredential | undefined}
51
- * @returns {string | null}
52
- */
53
- export function personNameFromCredential(credential) {
54
- if (!credential) {
55
- return null;
56
- }
57
- const subject = getSubject(credential);
58
- return (asNonEmptyString(subject?.person?.name) ?? null);
59
- }
60
- /**
61
- * Nullable issuer render fields derived from the VC `issuer` alone, with a
62
- * SkillClaimCredential `person.name` override when a credential is supplied.
63
- *
64
- * @param issuer {IIssuerObject | string}
65
- * @param credential {IVerifiableCredential | undefined}
66
- * @returns {IssuerRenderInfo}
67
- */
68
- export function issuerRenderInfoFrom(issuer, credential) {
69
- const isSkillClaimCredential = credential
70
- ? typeArray(credential.type).includes('SkillClaimCredential')
71
- : false;
72
- const personName = isSkillClaimCredential
73
- ? personNameFromCredential(credential)
74
- : null;
75
- const issuerName = personName ?? (typeof issuer === 'string' ? issuer : issuer?.name) ?? null;
76
- const issuerUrl = (typeof issuer === 'string' ? null : issuer?.url) ?? null;
77
- const issuerId = typeof issuer === 'string' ? null : issuer?.id;
78
- const issuerImage = typeof issuer === 'string'
79
- ? null
80
- : imageSourceFrom(issuer.image);
81
- return { issuerName, issuerUrl, issuerId, issuerImage };
82
- }
83
- /**
84
- * Like {@link issuerRenderInfoFrom} but overlays registry `federation_entity`
85
- * metadata (organization name / homepage / logo) from the `registered_issuer`
86
- * verification-log entry when the issuer matched the registry and there is no
87
- * SkillClaimCredential person-name override.
88
- *
89
- * @param issuer {IIssuerObject | string}
90
- * @param verifyResult {VerifyResultLike | undefined} verification result whose
91
- * `log[]` may carry a `registered_issuer` match
92
- * @param credential {IVerifiableCredential | undefined}
93
- * @returns {IssuerRenderInfo}
94
- */
95
- export function issuerRenderInfoWithVerification(issuer, verifyResult, credential) {
96
- const isSkillClaimCredential = credential
97
- ? typeArray(credential.type).includes('SkillClaimCredential')
98
- : false;
99
- const personName = isSkillClaimCredential
100
- ? personNameFromCredential(credential)
101
- : null;
102
- const registeredIssuerLog = verifyResult?.log?.find(log => log.id === 'registered_issuer');
103
- const matchingIssuer = registeredIssuerLog?.matchingIssuers?.[0];
104
- if (matchingIssuer?.issuer?.federation_entity && !personName) {
105
- const federationEntity = matchingIssuer.issuer.federation_entity;
106
- return {
107
- issuerName: federationEntity.organization_name ?? '',
108
- issuerUrl: federationEntity.homepage_uri ?? '',
109
- issuerId: typeof issuer === 'string' ? null : (issuer?.id ?? ''),
110
- issuerImage: typeof issuer === 'object'
111
- ? imageSourceFrom(issuer.image)
112
- : null
113
- };
114
- }
115
- // Fallback to the plain issuer logic (or person name for SkillClaim).
116
- const fallback = issuerRenderInfoFrom(issuer);
117
- return {
118
- issuerName: personName ?? fallback.issuerName ?? '',
119
- issuerUrl: fallback.issuerUrl ?? '',
120
- issuerId: fallback.issuerId ?? '',
121
- issuerImage: matchingIssuer?.issuer?.federation_entity?.logo_uri ??
122
- fallback.issuerImage ??
123
- ''
124
- };
125
- }
126
- //# sourceMappingURL=issuer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issuer.js","sourceRoot":"","sources":["../../src/display/issuer.ts"],"names":[],"mappings":"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"}
@@ -1,82 +0,0 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * Open Badges v3.0 subject helpers: normalizing the `achievement` / `skill`
6
- * arrays and pulling out achievement images / types, the recipient name from an
7
- * OBv3 `identifier`, and an image URL from an evidence list.
8
- *
9
- * Drift resolution: DCW open-coded the achievement/skill array handling inline
10
- * inside its subject render mapper, while Freewallet had these as explicit,
11
- * separately-tested helpers -- Freewallet's factored helpers win. DCW's
12
- * standalone `extractNameFromOBV3Identifier` is kept verbatim (it has its own
13
- * test and is used as a fallback branch by the subject render mapper).
14
- */
15
- import type { IAchievement, ICredentialSubject, IOpenBadgeSubject } from '@interop/data-integrity-core';
16
- /**
17
- * The recipient display name carried in an OBv3 `identifier` entry: the
18
- * `identityHash` of the first identifier that has one and is not marked
19
- * `hashed: true`. Returns `undefined` when no such identifier is present.
20
- *
21
- * Note: unlike the name-guarded path in `extractIssuedTo`, this returns the
22
- * hash of ANY identifier (regardless of `identityType`), matching DCW's
23
- * historical behavior. Callers wanting only name-typed identifiers use
24
- * `extractIssuedTo`.
25
- *
26
- * Non-object entries in the `identifier` array (a `null`, a bare string) are
27
- * skipped rather than dereferenced.
28
- *
29
- * @param credentialSubject {IOpenBadgeSubject | ICredentialSubject}
30
- * @returns {string | undefined}
31
- */
32
- export declare function extractNameFromOBV3Identifier(credentialSubject: IOpenBadgeSubject | ICredentialSubject): string | undefined;
33
- /**
34
- * Normalizes a subject's `achievement` field to an array of records (a single
35
- * achievement object is wrapped; a missing one yields `[]`). Non-object entries
36
- * are dropped, so callers can read each achievement's fields directly.
37
- *
38
- * @param subject {Record<string, unknown>}
39
- * @returns {Record<string, unknown>[]}
40
- */
41
- export declare function achievementsList(subject: Record<string, unknown>): Record<string, unknown>[];
42
- /**
43
- * Normalizes a subject's `skill` field to an array of records (a single skill
44
- * object is wrapped; a missing one yields `[]`). Non-object entries are
45
- * dropped, so callers can read each skill's fields directly.
46
- *
47
- * @param subject {Record<string, unknown>}
48
- * @returns {Record<string, unknown>[]}
49
- */
50
- export declare function skillsList(subject: Record<string, unknown>): Record<string, unknown>[];
51
- /**
52
- * The image URL of the first skill in a list: an object image's `id`, or a
53
- * string image, else `''`.
54
- *
55
- * @param skills {Record<string, unknown>[]}
56
- * @returns {string}
57
- */
58
- export declare function getSkillImage(skills: Record<string, unknown>[]): string;
59
- /**
60
- * The `id` (URL) of the first evidence item that looks like an image -- either
61
- * its `id` or `name` ends in a known image extension -- else `''`.
62
- *
63
- * @param evidence {unknown[]}
64
- * @returns {string}
65
- */
66
- export declare function getEvidenceImage(evidence: unknown[]): string;
67
- /**
68
- * The achievement's image URL: a string image directly, or an object image's
69
- * `id`, else `''`.
70
- *
71
- * @param primaryAchievement {IAchievement | undefined}
72
- * @returns {string}
73
- */
74
- export declare function getAchievementImage(primaryAchievement?: IAchievement): string;
75
- /**
76
- * The achievement's `achievementType` when it is a string, else `''`.
77
- *
78
- * @param primaryAchievement {IAchievement | undefined}
79
- * @returns {string}
80
- */
81
- export declare function getAchievementType(primaryAchievement?: IAchievement): string;
82
- //# sourceMappingURL=obv3.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"obv3.d.ts","sourceRoot":"","sources":["../../src/display/obv3.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,8BAA8B,CAAA;AAGrC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAC3C,iBAAiB,EAAE,iBAAiB,GAAG,kBAAkB,GACxD,MAAM,GAAG,SAAS,CAcpB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE3B;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE3B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,CAUvE;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAa5D;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,kBAAkB,CAAC,EAAE,YAAY,GAAG,MAAM,CAQ7E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,YAAY,GAAG,MAAM,CAK5E"}