@interop/wallet-core 0.50.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 (241) hide show
  1. package/README.md +7 -11
  2. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts +17 -8
  3. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts.map +1 -1
  4. package/dist/clientAnnex/credentialAnchoredGenesis.js +33 -12
  5. package/dist/clientAnnex/credentialAnchoredGenesis.js.map +1 -1
  6. package/dist/clientAnnex/forget.d.ts +18 -6
  7. package/dist/clientAnnex/forget.d.ts.map +1 -1
  8. package/dist/clientAnnex/forget.js +19 -6
  9. package/dist/clientAnnex/forget.js.map +1 -1
  10. package/dist/clientAnnex/forgetLast.d.ts +65 -28
  11. package/dist/clientAnnex/forgetLast.d.ts.map +1 -1
  12. package/dist/clientAnnex/forgetLast.js +78 -18
  13. package/dist/clientAnnex/forgetLast.js.map +1 -1
  14. package/dist/clientAnnex/gc.d.ts +3 -3
  15. package/dist/clientAnnex/gc.d.ts.map +1 -1
  16. package/dist/clientAnnex/gc.js +2 -2
  17. package/dist/clientAnnex/gc.js.map +1 -1
  18. package/dist/clientAnnex/index.d.ts +6 -6
  19. package/dist/clientAnnex/index.d.ts.map +1 -1
  20. package/dist/clientAnnex/index.js +5 -5
  21. package/dist/clientAnnex/index.js.map +1 -1
  22. package/dist/clientAnnex/ladder.d.ts +19 -11
  23. package/dist/clientAnnex/ladder.d.ts.map +1 -1
  24. package/dist/clientAnnex/ladder.js +77 -14
  25. package/dist/clientAnnex/ladder.js.map +1 -1
  26. package/dist/clientAnnex/ladderAnchored.d.ts +36 -7
  27. package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
  28. package/dist/clientAnnex/ladderAnchored.js +80 -18
  29. package/dist/clientAnnex/ladderAnchored.js.map +1 -1
  30. package/dist/clientAnnex/log.d.ts +6 -6
  31. package/dist/clientAnnex/log.d.ts.map +1 -1
  32. package/dist/clientAnnex/log.js +8 -8
  33. package/dist/clientAnnex/log.js.map +1 -1
  34. package/dist/clientAnnex/recoveryLadderAnchored.d.ts +7 -7
  35. package/dist/clientAnnex/recoveryLadderAnchored.js +9 -9
  36. package/dist/clientAnnex/recoveryLadderAnchored.js.map +1 -1
  37. package/dist/clientAnnex/selfEnroll.d.ts +6 -4
  38. package/dist/clientAnnex/selfEnroll.d.ts.map +1 -1
  39. package/dist/clientAnnex/selfEnroll.js +19 -7
  40. package/dist/clientAnnex/selfEnroll.js.map +1 -1
  41. package/dist/clients/listing.d.ts +1 -1
  42. package/dist/clients/listing.d.ts.map +1 -1
  43. package/dist/clients/listing.js +1 -1
  44. package/dist/clients/listing.js.map +1 -1
  45. package/dist/clients/revocation.d.ts +1 -1
  46. package/dist/clients/rosterPolicy.d.ts +1 -1
  47. package/dist/clients/rosterPolicy.d.ts.map +1 -1
  48. package/dist/descriptors/acquire.js +1 -1
  49. package/dist/descriptors/logSource.d.ts +1 -2
  50. package/dist/descriptors/logSource.d.ts.map +1 -1
  51. package/dist/descriptors/logSource.js +2 -2
  52. package/dist/descriptors/logSource.js.map +1 -1
  53. package/dist/enrollment/enrollment.d.ts +1 -1
  54. package/dist/enrollment/enrollment.d.ts.map +1 -1
  55. package/dist/enrollment/enrollment.js +2 -1
  56. package/dist/enrollment/enrollment.js.map +1 -1
  57. package/dist/genesis/accountGenesis.d.ts +13 -1
  58. package/dist/genesis/accountGenesis.d.ts.map +1 -1
  59. package/dist/genesis/accountGenesis.js +1 -1
  60. package/dist/genesis/accountGenesis.js.map +1 -1
  61. package/dist/index.d.ts +1 -3
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +1 -3
  64. package/dist/index.js.map +1 -1
  65. package/dist/keyring/kdf.d.ts +6 -20
  66. package/dist/keyring/kdf.d.ts.map +1 -1
  67. package/dist/keyring/kdf.js +8 -5
  68. package/dist/keyring/kdf.js.map +1 -1
  69. package/dist/keyring/unlockSpace.js +1 -1
  70. package/dist/keys/rosterLogStore.d.ts +16 -14
  71. package/dist/keys/rosterLogStore.d.ts.map +1 -1
  72. package/dist/keys/rosterLogStore.js +149 -32
  73. package/dist/keys/rosterLogStore.js.map +1 -1
  74. package/dist/keys/rosterStore.d.ts +8 -7
  75. package/dist/keys/rosterStore.d.ts.map +1 -1
  76. package/dist/keys/rosterStore.js +6 -6
  77. package/dist/keys/rosterStore.js.map +1 -1
  78. package/dist/keys/spaceEpochs.d.ts +1 -1
  79. package/dist/keys/spaceEpochs.js +1 -1
  80. package/dist/keys/userKeyRoster.d.ts +3 -3
  81. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  82. package/dist/keys/userKeyRoster.js +3 -3
  83. package/dist/keys/userKeyRoster.js.map +1 -1
  84. package/dist/recovery/index.d.ts +2 -2
  85. package/dist/recovery/index.js +2 -2
  86. package/dist/recovery/recoveryDelegation.js +1 -1
  87. package/dist/recovery/recoveryDelegation.js.map +1 -1
  88. package/dist/recovery/recoveryWebvh.d.ts +4 -4
  89. package/dist/recovery/recoveryWebvh.js +5 -5
  90. package/dist/request/appKey.d.ts +9 -3
  91. package/dist/request/appKey.d.ts.map +1 -1
  92. package/dist/request/appKey.js +13 -8
  93. package/dist/request/appKey.js.map +1 -1
  94. package/dist/request/classify.d.ts.map +1 -1
  95. package/dist/request/classify.js +13 -1
  96. package/dist/request/classify.js.map +1 -1
  97. package/dist/request/ephemeralExchange.d.ts +6 -1
  98. package/dist/request/ephemeralExchange.d.ts.map +1 -1
  99. package/dist/request/ephemeralExchange.js +6 -1
  100. package/dist/request/ephemeralExchange.js.map +1 -1
  101. package/dist/request/exchangeClient.d.ts +0 -23
  102. package/dist/request/exchangeClient.d.ts.map +1 -1
  103. package/dist/request/exchangeClient.js +30 -1
  104. package/dist/request/exchangeClient.js.map +1 -1
  105. package/dist/request/index.d.ts +4 -1
  106. package/dist/request/index.d.ts.map +1 -1
  107. package/dist/request/index.js +4 -1
  108. package/dist/request/index.js.map +1 -1
  109. package/dist/request/interactionRequest.d.ts +23 -0
  110. package/dist/request/interactionRequest.d.ts.map +1 -0
  111. package/dist/request/interactionRequest.js +46 -0
  112. package/dist/request/interactionRequest.js.map +1 -0
  113. package/dist/request/interactionUrl.d.ts +3 -14
  114. package/dist/request/interactionUrl.d.ts.map +1 -1
  115. package/dist/request/interactionUrl.js +20 -1
  116. package/dist/request/interactionUrl.js.map +1 -1
  117. package/dist/resourceLog/controller.d.ts +48 -49
  118. package/dist/resourceLog/controller.d.ts.map +1 -1
  119. package/dist/resourceLog/controller.js +40 -20
  120. package/dist/resourceLog/controller.js.map +1 -1
  121. package/dist/resourceLog/errors.d.ts +12 -78
  122. package/dist/resourceLog/errors.d.ts.map +1 -1
  123. package/dist/resourceLog/errors.js +12 -79
  124. package/dist/resourceLog/errors.js.map +1 -1
  125. package/dist/resourceLog/index.d.ts +17 -22
  126. package/dist/resourceLog/index.d.ts.map +1 -1
  127. package/dist/resourceLog/index.js +16 -21
  128. package/dist/resourceLog/index.js.map +1 -1
  129. package/dist/resourceLog/license.d.ts +27 -26
  130. package/dist/resourceLog/license.d.ts.map +1 -1
  131. package/dist/resourceLog/license.js +31 -30
  132. package/dist/resourceLog/license.js.map +1 -1
  133. package/dist/unlock/index.d.ts +6 -6
  134. package/dist/unlock/index.d.ts.map +1 -1
  135. package/dist/unlock/index.js +5 -5
  136. package/dist/unlock/retire.d.ts +29 -28
  137. package/dist/unlock/retire.d.ts.map +1 -1
  138. package/dist/unlock/retire.js +25 -16
  139. package/dist/unlock/retire.js.map +1 -1
  140. package/dist/unlock/standingClient.d.ts +1 -1
  141. package/dist/unlock/standingClient.js +3 -3
  142. package/dist/unlock/standingWebvh.d.ts +28 -10
  143. package/dist/unlock/standingWebvh.d.ts.map +1 -1
  144. package/dist/unlock/standingWebvh.js +75 -37
  145. package/dist/unlock/standingWebvh.js.map +1 -1
  146. package/dist/unlock/unlockRecord.js +1 -1
  147. package/dist/webvh/delegatedLogStore.d.ts +2 -2
  148. package/dist/webvh/delegatedLogStore.js +2 -2
  149. package/dist/webvh/didWeb.js +1 -1
  150. package/dist/webvh/didWeb.js.map +1 -1
  151. package/dist/webvh/didWebvh.d.ts +3 -3
  152. package/dist/webvh/didWebvh.d.ts.map +1 -1
  153. package/dist/webvh/didWebvh.js +5 -5
  154. package/dist/webvh/didWebvh.js.map +1 -1
  155. package/dist/webvh/listClients.js +1 -1
  156. package/dist/webvh/listClients.js.map +1 -1
  157. package/dist/webvh/verifyLog.d.ts +1 -1
  158. package/dist/webvh/verifyLog.d.ts.map +1 -1
  159. package/dist/webvh/verifyLog.js +1 -2
  160. package/dist/webvh/verifyLog.js.map +1 -1
  161. package/package.json +6 -10
  162. package/dist/display/alignment.d.ts +0 -55
  163. package/dist/display/alignment.d.ts.map +0 -1
  164. package/dist/display/alignment.js +0 -117
  165. package/dist/display/alignment.js.map +0 -1
  166. package/dist/display/credentialName.d.ts +0 -42
  167. package/dist/display/credentialName.d.ts.map +0 -1
  168. package/dist/display/credentialName.js +0 -106
  169. package/dist/display/credentialName.js.map +0 -1
  170. package/dist/display/displayFields.d.ts +0 -59
  171. package/dist/display/displayFields.d.ts.map +0 -1
  172. package/dist/display/displayFields.js +0 -136
  173. package/dist/display/displayFields.js.map +0 -1
  174. package/dist/display/evidence.d.ts +0 -50
  175. package/dist/display/evidence.d.ts.map +0 -1
  176. package/dist/display/evidence.js +0 -67
  177. package/dist/display/evidence.js.map +0 -1
  178. package/dist/display/image.d.ts +0 -18
  179. package/dist/display/image.d.ts.map +0 -1
  180. package/dist/display/image.js +0 -23
  181. package/dist/display/image.js.map +0 -1
  182. package/dist/display/index.d.ts +0 -38
  183. package/dist/display/index.d.ts.map +0 -1
  184. package/dist/display/index.js +0 -32
  185. package/dist/display/index.js.map +0 -1
  186. package/dist/display/issuer.d.ts +0 -105
  187. package/dist/display/issuer.d.ts.map +0 -1
  188. package/dist/display/issuer.js +0 -126
  189. package/dist/display/issuer.js.map +0 -1
  190. package/dist/display/obv3.d.ts +0 -82
  191. package/dist/display/obv3.d.ts.map +0 -1
  192. package/dist/display/obv3.js +0 -117
  193. package/dist/display/obv3.js.map +0 -1
  194. package/dist/display/parse.d.ts +0 -66
  195. package/dist/display/parse.d.ts.map +0 -1
  196. package/dist/display/parse.js +0 -104
  197. package/dist/display/parse.js.map +0 -1
  198. package/dist/display/subject.d.ts +0 -79
  199. package/dist/display/subject.d.ts.map +0 -1
  200. package/dist/display/subject.js +0 -124
  201. package/dist/display/subject.js.map +0 -1
  202. package/dist/display/text.d.ts +0 -53
  203. package/dist/display/text.d.ts.map +0 -1
  204. package/dist/display/text.js +0 -78
  205. package/dist/display/text.js.map +0 -1
  206. package/dist/display/types.d.ts +0 -55
  207. package/dist/display/types.d.ts.map +0 -1
  208. package/dist/display/types.js +0 -41
  209. package/dist/display/types.js.map +0 -1
  210. package/dist/display/validity.d.ts +0 -51
  211. package/dist/display/validity.d.ts.map +0 -1
  212. package/dist/display/validity.js +0 -51
  213. package/dist/display/validity.js.map +0 -1
  214. package/dist/display/verificationView.d.ts +0 -115
  215. package/dist/display/verificationView.d.ts.map +0 -1
  216. package/dist/display/verificationView.js +0 -199
  217. package/dist/display/verificationView.js.map +0 -1
  218. package/dist/resourceLog/append.d.ts +0 -112
  219. package/dist/resourceLog/append.d.ts.map +0 -1
  220. package/dist/resourceLog/append.js +0 -197
  221. package/dist/resourceLog/append.js.map +0 -1
  222. package/dist/resourceLog/entry.d.ts +0 -68
  223. package/dist/resourceLog/entry.d.ts.map +0 -1
  224. package/dist/resourceLog/entry.js +0 -167
  225. package/dist/resourceLog/entry.js.map +0 -1
  226. package/dist/resourceLog/pin.d.ts +0 -82
  227. package/dist/resourceLog/pin.d.ts.map +0 -1
  228. package/dist/resourceLog/pin.js +0 -57
  229. package/dist/resourceLog/pin.js.map +0 -1
  230. package/dist/resourceLog/seal.d.ts +0 -97
  231. package/dist/resourceLog/seal.d.ts.map +0 -1
  232. package/dist/resourceLog/seal.js +0 -113
  233. package/dist/resourceLog/seal.js.map +0 -1
  234. package/dist/resourceLog/verify.d.ts +0 -96
  235. package/dist/resourceLog/verify.d.ts.map +0 -1
  236. package/dist/resourceLog/verify.js +0 -474
  237. package/dist/resourceLog/verify.js.map +0 -1
  238. package/dist/resourceLog/vmFragment.d.ts +0 -33
  239. package/dist/resourceLog/vmFragment.d.ts.map +0 -1
  240. package/dist/resourceLog/vmFragment.js +0 -39
  241. package/dist/resourceLog/vmFragment.js.map +0 -1
@@ -1,59 +0,0 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * Freewallet's aggregate display projection: one pass over a VC producing the
6
- * flat field set the credential card and detail view render. Dates stay RAW
7
- * (the `expirationDate` field is an ISO string, not a formatted one -- the
8
- * raw-values seam); the title comes from the merged {@link credentialName}.
9
- *
10
- * `credentialNameFrom` lives in `credentialName.ts` (co-located with the merged
11
- * title fn that calls it); `buildCredentialDescription` / `buildCriteria` are
12
- * Freewallet's, kept here as they are used only by `getDisplayFields` (and
13
- * covered by the ported helper tests).
14
- */
15
- import type { IAlignment, IVerifiableCredential } from '@interop/data-integrity-core';
16
- /**
17
- * The flat display projection of a VC for the card / detail view.
18
- */
19
- export interface CredentialDisplayFields {
20
- credentialName: string;
21
- issuedTo: string;
22
- /**
23
- * Raw ISO expiration string (`''` when none).
24
- */
25
- expirationDate: string;
26
- credentialDescription: string;
27
- criteria: string;
28
- achievementImage: string;
29
- achievementType: string;
30
- alignments: IAlignment[];
31
- }
32
- /**
33
- * Joins achievement descriptions, skill narratives / durations, and various
34
- * subject description fields into a single paragraph-separated string.
35
- *
36
- * @param subject {Record<string, unknown>}
37
- * @param achievements {Record<string, unknown>[]}
38
- * @returns {string}
39
- */
40
- export declare function buildCredentialDescription(subject: Record<string, unknown>, achievements: Record<string, unknown>[]): string;
41
- /**
42
- * Builds the criteria text from the achievements' criteria narratives (labeled
43
- * with the achievement name when there is more than one), falling back to the
44
- * subject's `hasCredential.competencyRequired`.
45
- *
46
- * @param subject {Record<string, unknown>}
47
- * @param achievements {Record<string, unknown>[]}
48
- * @returns {string}
49
- */
50
- export declare function buildCriteria(subject: Record<string, unknown>, achievements: Record<string, unknown>[]): string;
51
- /**
52
- * Projects a VC to its flat display field set. The title uses the merged
53
- * {@link credentialName}; `expirationDate` is a raw ISO string.
54
- *
55
- * @param verifiableCredential {IVerifiableCredential}
56
- * @returns {CredentialDisplayFields}
57
- */
58
- export declare function getDisplayFields(verifiableCredential: IVerifiableCredential): CredentialDisplayFields;
59
- //# sourceMappingURL=displayFields.d.ts.map
@@ -1 +0,0 @@
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,136 +0,0 @@
1
- import { credentialName } from './credentialName.js';
2
- import { getSubject, extractIssuedTo } from './subject.js';
3
- import { getExpirationDate } from './validity.js';
4
- import { achievementsList, skillsList, getSkillImage, getEvidenceImage, getAchievementImage, getAchievementType } from './obv3.js';
5
- import { normalizeAlignments } from './alignment.js';
6
- import { asRecord, getTrimmedString } from './text.js';
7
- /**
8
- * Joins achievement descriptions, skill narratives / durations, and various
9
- * subject description fields into a single paragraph-separated string.
10
- *
11
- * @param subject {Record<string, unknown>}
12
- * @param achievements {Record<string, unknown>[]}
13
- * @returns {string}
14
- */
15
- export function buildCredentialDescription(subject, achievements) {
16
- const descriptionParts = [];
17
- for (const achievement of achievements) {
18
- const achievementDescription = getTrimmedString(achievement.description);
19
- if (achievementDescription) {
20
- descriptionParts.push(achievementDescription);
21
- }
22
- }
23
- for (const skill of skillsList(subject)) {
24
- const narrative = getTrimmedString(skill.narrative);
25
- if (narrative) {
26
- descriptionParts.push(narrative);
27
- }
28
- const skillDuration = getTrimmedString(skill.durationPerformed);
29
- if (skillDuration) {
30
- descriptionParts.push(`Duration: ${skillDuration}`);
31
- }
32
- }
33
- const subjectNarrative = getTrimmedString(subject.narrative);
34
- if (subjectNarrative) {
35
- descriptionParts.push(subjectNarrative);
36
- }
37
- const evidenceDescription = getTrimmedString(subject.evidenceDescription);
38
- if (evidenceDescription) {
39
- descriptionParts.push(evidenceDescription);
40
- }
41
- const duration = getTrimmedString(subject.duration);
42
- if (duration) {
43
- descriptionParts.push(`Duration: ${duration}`);
44
- }
45
- const evidenceLink = getTrimmedString(subject.evidenceLink);
46
- if (evidenceLink) {
47
- descriptionParts.push(`Evidence: ${evidenceLink}`);
48
- }
49
- const subjectDescription = getTrimmedString(subject.description);
50
- if (subjectDescription) {
51
- descriptionParts.push(subjectDescription);
52
- }
53
- const hasCredential = asRecord(subject.hasCredential);
54
- const hasCredentialDescription = getTrimmedString(hasCredential?.description);
55
- if (hasCredentialDescription) {
56
- descriptionParts.push(hasCredentialDescription);
57
- }
58
- return descriptionParts.join('\n\n');
59
- }
60
- /**
61
- * Builds the criteria text from the achievements' criteria narratives (labeled
62
- * with the achievement name when there is more than one), falling back to the
63
- * subject's `hasCredential.competencyRequired`.
64
- *
65
- * @param subject {Record<string, unknown>}
66
- * @param achievements {Record<string, unknown>[]}
67
- * @returns {string}
68
- */
69
- export function buildCriteria(subject, achievements) {
70
- const criteriaBlocks = achievements
71
- .map(achievement => {
72
- const criteria = asRecord(achievement.criteria);
73
- const narrative = getTrimmedString(criteria?.narrative);
74
- if (!narrative) {
75
- return '';
76
- }
77
- const achievementName = getTrimmedString(achievement.name);
78
- if (achievements.length > 1 && achievementName) {
79
- return `**${achievementName}**\n\n${narrative}`;
80
- }
81
- return narrative;
82
- })
83
- .filter((criteriaBlock) => Boolean(criteriaBlock));
84
- const criteriaText = criteriaBlocks.join('\n\n');
85
- if (criteriaText) {
86
- return criteriaText;
87
- }
88
- const hasCredential = asRecord(subject.hasCredential);
89
- return getTrimmedString(hasCredential?.competencyRequired);
90
- }
91
- /**
92
- * Projects a VC to its flat display field set. The title uses the merged
93
- * {@link credentialName}; `expirationDate` is a raw ISO string.
94
- *
95
- * @param verifiableCredential {IVerifiableCredential}
96
- * @returns {CredentialDisplayFields}
97
- */
98
- export function getDisplayFields(verifiableCredential) {
99
- const commonFields = {
100
- credentialName: credentialName(verifiableCredential),
101
- issuedTo: extractIssuedTo(verifiableCredential),
102
- expirationDate: getExpirationDate(verifiableCredential) ?? ''
103
- };
104
- const subject = asRecord(getSubject(verifiableCredential));
105
- if (!subject) {
106
- return {
107
- ...commonFields,
108
- credentialDescription: '',
109
- criteria: '',
110
- achievementImage: '',
111
- achievementType: '',
112
- alignments: []
113
- };
114
- }
115
- const achievements = achievementsList(subject);
116
- const primaryAchievement = achievements[0];
117
- const skills = skillsList(subject);
118
- const alignments = achievements.flatMap(achievement => normalizeAlignments(achievement.alignment));
119
- const evidenceRaw = verifiableCredential.evidence;
120
- const evidence = Array.isArray(evidenceRaw)
121
- ? evidenceRaw
122
- : evidenceRaw
123
- ? [evidenceRaw]
124
- : [];
125
- return {
126
- ...commonFields,
127
- credentialDescription: buildCredentialDescription(subject, achievements),
128
- criteria: buildCriteria(subject, achievements),
129
- achievementImage: getAchievementImage(primaryAchievement) ||
130
- getSkillImage(skills) ||
131
- getEvidenceImage(evidence),
132
- achievementType: getAchievementType(primaryAchievement),
133
- alignments
134
- };
135
- }
136
- //# sourceMappingURL=displayFields.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"displayFields.js","sourceRoot":"","sources":["../../src/display/displayFields.ts"],"names":[],"mappings":"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"}
@@ -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"}