@interop/wallet-core 0.51.0 → 0.53.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 (292) 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 +51 -30
  10. package/dist/clientAnnex/forgetLast.d.ts.map +1 -1
  11. package/dist/clientAnnex/forgetLast.js +72 -26
  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 +6 -6
  18. package/dist/clientAnnex/index.d.ts.map +1 -1
  19. package/dist/clientAnnex/index.js +5 -5
  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 +146 -10
  26. package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
  27. package/dist/clientAnnex/ladderAnchored.js +230 -26
  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 +18 -7
  34. package/dist/clientAnnex/recoveryLadderAnchored.d.ts.map +1 -1
  35. package/dist/clientAnnex/recoveryLadderAnchored.js +54 -14
  36. package/dist/clientAnnex/recoveryLadderAnchored.js.map +1 -1
  37. package/dist/clientAnnex/selfEnroll.d.ts +67 -6
  38. package/dist/clientAnnex/selfEnroll.d.ts.map +1 -1
  39. package/dist/clientAnnex/selfEnroll.js +91 -15
  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/clients/rosterPolicy.js +10 -7
  49. package/dist/clients/rosterPolicy.js.map +1 -1
  50. package/dist/descriptors/acquire.js +1 -1
  51. package/dist/descriptors/logSource.d.ts +6 -4
  52. package/dist/descriptors/logSource.d.ts.map +1 -1
  53. package/dist/descriptors/logSource.js +7 -4
  54. package/dist/descriptors/logSource.js.map +1 -1
  55. package/dist/enrollment/enrollment.d.ts +1 -1
  56. package/dist/enrollment/enrollment.d.ts.map +1 -1
  57. package/dist/enrollment/enrollment.js +2 -1
  58. package/dist/enrollment/enrollment.js.map +1 -1
  59. package/dist/genesis/accountGenesis.d.ts +1 -1
  60. package/dist/genesis/accountGenesis.d.ts.map +1 -1
  61. package/dist/genesis/accountGenesis.js +1 -1
  62. package/dist/index.d.ts +8 -3
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +7 -3
  65. package/dist/index.js.map +1 -1
  66. package/dist/keyring/kdf.d.ts +6 -20
  67. package/dist/keyring/kdf.d.ts.map +1 -1
  68. package/dist/keyring/kdf.js +8 -5
  69. package/dist/keyring/kdf.js.map +1 -1
  70. package/dist/keyring/unlockSpace.js +1 -1
  71. package/dist/keys/clientKeyRecord.d.ts +68 -1
  72. package/dist/keys/clientKeyRecord.d.ts.map +1 -1
  73. package/dist/keys/clientKeyRecord.js +155 -20
  74. package/dist/keys/clientKeyRecord.js.map +1 -1
  75. package/dist/keys/index.d.ts +2 -2
  76. package/dist/keys/index.d.ts.map +1 -1
  77. package/dist/keys/index.js +1 -1
  78. package/dist/keys/index.js.map +1 -1
  79. package/dist/keys/rosterLogStore.d.ts +16 -14
  80. package/dist/keys/rosterLogStore.d.ts.map +1 -1
  81. package/dist/keys/rosterLogStore.js +164 -32
  82. package/dist/keys/rosterLogStore.js.map +1 -1
  83. package/dist/keys/rosterStore.d.ts +8 -7
  84. package/dist/keys/rosterStore.d.ts.map +1 -1
  85. package/dist/keys/rosterStore.js +6 -6
  86. package/dist/keys/rosterStore.js.map +1 -1
  87. package/dist/keys/spaceEpochs.d.ts +1 -1
  88. package/dist/keys/spaceEpochs.js +1 -1
  89. package/dist/keys/userKeyRoster.d.ts +3 -3
  90. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  91. package/dist/keys/userKeyRoster.js +3 -3
  92. package/dist/keys/userKeyRoster.js.map +1 -1
  93. package/dist/log.d.ts +49 -0
  94. package/dist/log.d.ts.map +1 -0
  95. package/dist/log.js +53 -0
  96. package/dist/log.js.map +1 -0
  97. package/dist/recovery/index.d.ts +2 -2
  98. package/dist/recovery/index.js +2 -2
  99. package/dist/recovery/recoveryDelegation.d.ts +6 -2
  100. package/dist/recovery/recoveryDelegation.d.ts.map +1 -1
  101. package/dist/recovery/recoveryDelegation.js +32 -6
  102. package/dist/recovery/recoveryDelegation.js.map +1 -1
  103. package/dist/recovery/recoveryWebvh.d.ts +67 -8
  104. package/dist/recovery/recoveryWebvh.d.ts.map +1 -1
  105. package/dist/recovery/recoveryWebvh.js +114 -19
  106. package/dist/recovery/recoveryWebvh.js.map +1 -1
  107. package/dist/request/appKey.d.ts +9 -3
  108. package/dist/request/appKey.d.ts.map +1 -1
  109. package/dist/request/appKey.js +13 -8
  110. package/dist/request/appKey.js.map +1 -1
  111. package/dist/request/capabilityRequest.d.ts +9 -1
  112. package/dist/request/capabilityRequest.d.ts.map +1 -1
  113. package/dist/request/capabilityRequest.js +13 -2
  114. package/dist/request/capabilityRequest.js.map +1 -1
  115. package/dist/request/classify.d.ts +37 -1
  116. package/dist/request/classify.d.ts.map +1 -1
  117. package/dist/request/classify.js +74 -3
  118. package/dist/request/classify.js.map +1 -1
  119. package/dist/request/ephemeralExchange.d.ts +5 -18
  120. package/dist/request/ephemeralExchange.d.ts.map +1 -1
  121. package/dist/request/ephemeralExchange.js +9 -3
  122. package/dist/request/ephemeralExchange.js.map +1 -1
  123. package/dist/request/exchangeClient.d.ts +0 -23
  124. package/dist/request/exchangeClient.d.ts.map +1 -1
  125. package/dist/request/exchangeClient.js +30 -1
  126. package/dist/request/exchangeClient.js.map +1 -1
  127. package/dist/request/index.d.ts +4 -1
  128. package/dist/request/index.d.ts.map +1 -1
  129. package/dist/request/index.js +4 -1
  130. package/dist/request/index.js.map +1 -1
  131. package/dist/request/interactionRequest.d.ts +23 -0
  132. package/dist/request/interactionRequest.d.ts.map +1 -0
  133. package/dist/request/interactionRequest.js +46 -0
  134. package/dist/request/interactionRequest.js.map +1 -0
  135. package/dist/request/interactionUrl.d.ts +3 -14
  136. package/dist/request/interactionUrl.d.ts.map +1 -1
  137. package/dist/request/interactionUrl.js +24 -3
  138. package/dist/request/interactionUrl.js.map +1 -1
  139. package/dist/request/parse.d.ts +0 -10
  140. package/dist/request/parse.d.ts.map +1 -1
  141. package/dist/request/parse.js +15 -1
  142. package/dist/request/parse.js.map +1 -1
  143. package/dist/request/processRequest.d.ts.map +1 -1
  144. package/dist/request/processRequest.js +2 -1
  145. package/dist/request/processRequest.js.map +1 -1
  146. package/dist/request/types.d.ts +23 -2
  147. package/dist/request/types.d.ts.map +1 -1
  148. package/dist/resourceLog/controller.d.ts +48 -49
  149. package/dist/resourceLog/controller.d.ts.map +1 -1
  150. package/dist/resourceLog/controller.js +41 -20
  151. package/dist/resourceLog/controller.js.map +1 -1
  152. package/dist/resourceLog/errors.d.ts +12 -78
  153. package/dist/resourceLog/errors.d.ts.map +1 -1
  154. package/dist/resourceLog/errors.js +12 -79
  155. package/dist/resourceLog/errors.js.map +1 -1
  156. package/dist/resourceLog/index.d.ts +17 -22
  157. package/dist/resourceLog/index.d.ts.map +1 -1
  158. package/dist/resourceLog/index.js +16 -21
  159. package/dist/resourceLog/index.js.map +1 -1
  160. package/dist/resourceLog/license.d.ts +42 -27
  161. package/dist/resourceLog/license.d.ts.map +1 -1
  162. package/dist/resourceLog/license.js +53 -30
  163. package/dist/resourceLog/license.js.map +1 -1
  164. package/dist/space/activity.d.ts +48 -1
  165. package/dist/space/activity.d.ts.map +1 -1
  166. package/dist/space/activity.js +52 -4
  167. package/dist/space/activity.js.map +1 -1
  168. package/dist/space/index.d.ts +1 -1
  169. package/dist/space/index.d.ts.map +1 -1
  170. package/dist/space/index.js +1 -1
  171. package/dist/space/index.js.map +1 -1
  172. package/dist/sync/pull.d.ts +0 -22
  173. package/dist/sync/pull.d.ts.map +1 -1
  174. package/dist/sync/pull.js +30 -2
  175. package/dist/sync/pull.js.map +1 -1
  176. package/dist/unlock/index.d.ts +7 -7
  177. package/dist/unlock/index.d.ts.map +1 -1
  178. package/dist/unlock/index.js +6 -6
  179. package/dist/unlock/index.js.map +1 -1
  180. package/dist/unlock/retire.d.ts +29 -28
  181. package/dist/unlock/retire.d.ts.map +1 -1
  182. package/dist/unlock/retire.js +25 -16
  183. package/dist/unlock/retire.js.map +1 -1
  184. package/dist/unlock/standingClient.d.ts +1 -1
  185. package/dist/unlock/standingClient.js +3 -3
  186. package/dist/unlock/standingWebvh.d.ts +28 -10
  187. package/dist/unlock/standingWebvh.d.ts.map +1 -1
  188. package/dist/unlock/standingWebvh.js +75 -37
  189. package/dist/unlock/standingWebvh.js.map +1 -1
  190. package/dist/unlock/unlockRecord.d.ts +37 -0
  191. package/dist/unlock/unlockRecord.d.ts.map +1 -1
  192. package/dist/unlock/unlockRecord.js +54 -1
  193. package/dist/unlock/unlockRecord.js.map +1 -1
  194. package/dist/webvh/delegatedLogStore.d.ts +2 -2
  195. package/dist/webvh/delegatedLogStore.js +2 -2
  196. package/dist/webvh/didWeb.js +1 -1
  197. package/dist/webvh/didWeb.js.map +1 -1
  198. package/dist/webvh/didWebvh.d.ts +33 -3
  199. package/dist/webvh/didWebvh.d.ts.map +1 -1
  200. package/dist/webvh/didWebvh.js +40 -11
  201. package/dist/webvh/didWebvh.js.map +1 -1
  202. package/dist/webvh/index.d.ts +1 -1
  203. package/dist/webvh/index.d.ts.map +1 -1
  204. package/dist/webvh/index.js +1 -1
  205. package/dist/webvh/index.js.map +1 -1
  206. package/dist/webvh/listClients.js +1 -1
  207. package/dist/webvh/listClients.js.map +1 -1
  208. package/dist/webvh/verifyLog.d.ts +1 -1
  209. package/dist/webvh/verifyLog.d.ts.map +1 -1
  210. package/dist/webvh/verifyLog.js +1 -2
  211. package/dist/webvh/verifyLog.js.map +1 -1
  212. package/package.json +9 -11
  213. package/dist/display/alignment.d.ts +0 -55
  214. package/dist/display/alignment.d.ts.map +0 -1
  215. package/dist/display/alignment.js +0 -117
  216. package/dist/display/alignment.js.map +0 -1
  217. package/dist/display/credentialName.d.ts +0 -42
  218. package/dist/display/credentialName.d.ts.map +0 -1
  219. package/dist/display/credentialName.js +0 -106
  220. package/dist/display/credentialName.js.map +0 -1
  221. package/dist/display/displayFields.d.ts +0 -59
  222. package/dist/display/displayFields.d.ts.map +0 -1
  223. package/dist/display/displayFields.js +0 -136
  224. package/dist/display/displayFields.js.map +0 -1
  225. package/dist/display/evidence.d.ts +0 -50
  226. package/dist/display/evidence.d.ts.map +0 -1
  227. package/dist/display/evidence.js +0 -67
  228. package/dist/display/evidence.js.map +0 -1
  229. package/dist/display/image.d.ts +0 -18
  230. package/dist/display/image.d.ts.map +0 -1
  231. package/dist/display/image.js +0 -23
  232. package/dist/display/image.js.map +0 -1
  233. package/dist/display/index.d.ts +0 -38
  234. package/dist/display/index.d.ts.map +0 -1
  235. package/dist/display/index.js +0 -32
  236. package/dist/display/index.js.map +0 -1
  237. package/dist/display/issuer.d.ts +0 -105
  238. package/dist/display/issuer.d.ts.map +0 -1
  239. package/dist/display/issuer.js +0 -126
  240. package/dist/display/issuer.js.map +0 -1
  241. package/dist/display/obv3.d.ts +0 -82
  242. package/dist/display/obv3.d.ts.map +0 -1
  243. package/dist/display/obv3.js +0 -117
  244. package/dist/display/obv3.js.map +0 -1
  245. package/dist/display/parse.d.ts +0 -66
  246. package/dist/display/parse.d.ts.map +0 -1
  247. package/dist/display/parse.js +0 -104
  248. package/dist/display/parse.js.map +0 -1
  249. package/dist/display/subject.d.ts +0 -79
  250. package/dist/display/subject.d.ts.map +0 -1
  251. package/dist/display/subject.js +0 -124
  252. package/dist/display/subject.js.map +0 -1
  253. package/dist/display/text.d.ts +0 -53
  254. package/dist/display/text.d.ts.map +0 -1
  255. package/dist/display/text.js +0 -78
  256. package/dist/display/text.js.map +0 -1
  257. package/dist/display/types.d.ts +0 -55
  258. package/dist/display/types.d.ts.map +0 -1
  259. package/dist/display/types.js +0 -41
  260. package/dist/display/types.js.map +0 -1
  261. package/dist/display/validity.d.ts +0 -51
  262. package/dist/display/validity.d.ts.map +0 -1
  263. package/dist/display/validity.js +0 -51
  264. package/dist/display/validity.js.map +0 -1
  265. package/dist/display/verificationView.d.ts +0 -115
  266. package/dist/display/verificationView.d.ts.map +0 -1
  267. package/dist/display/verificationView.js +0 -199
  268. package/dist/display/verificationView.js.map +0 -1
  269. package/dist/resourceLog/append.d.ts +0 -112
  270. package/dist/resourceLog/append.d.ts.map +0 -1
  271. package/dist/resourceLog/append.js +0 -197
  272. package/dist/resourceLog/append.js.map +0 -1
  273. package/dist/resourceLog/entry.d.ts +0 -68
  274. package/dist/resourceLog/entry.d.ts.map +0 -1
  275. package/dist/resourceLog/entry.js +0 -167
  276. package/dist/resourceLog/entry.js.map +0 -1
  277. package/dist/resourceLog/pin.d.ts +0 -82
  278. package/dist/resourceLog/pin.d.ts.map +0 -1
  279. package/dist/resourceLog/pin.js +0 -57
  280. package/dist/resourceLog/pin.js.map +0 -1
  281. package/dist/resourceLog/seal.d.ts +0 -97
  282. package/dist/resourceLog/seal.d.ts.map +0 -1
  283. package/dist/resourceLog/seal.js +0 -113
  284. package/dist/resourceLog/seal.js.map +0 -1
  285. package/dist/resourceLog/verify.d.ts +0 -96
  286. package/dist/resourceLog/verify.d.ts.map +0 -1
  287. package/dist/resourceLog/verify.js +0 -474
  288. package/dist/resourceLog/verify.js.map +0 -1
  289. package/dist/resourceLog/vmFragment.d.ts +0 -33
  290. package/dist/resourceLog/vmFragment.d.ts.map +0 -1
  291. package/dist/resourceLog/vmFragment.js +0 -39
  292. package/dist/resourceLog/vmFragment.js.map +0 -1
@@ -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":"AAqBA,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AA2C5C;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,UAAiC;IAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;IAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAA;IACf,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,gBAAgB,CAAA;AACrD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAuC;IAEvC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IACrD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAA;IAC7B,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,KAAK,GAAG,QAAQ,CAAA;IAClB,CAAC;SAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;QACxE,KAAK,GAAG,MAAM,CAAE,QAA4B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;QACvB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE;QACrB,KAAK;KACN,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAkC;IAElC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;IACtC,OAAO,CACL,gBAAgB,CACb,OAA2C,EAAE,MAAM,EAAE,IAAI,CAC3D,IAAI,IAAI,CACV,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA8B,EAC9B,UAAkC;IAElC,MAAM,sBAAsB,GAAG,UAAU;QACvC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAC7D,CAAC,CAAC,KAAK,CAAA;IACT,MAAM,UAAU,GAAG,sBAAsB;QACvC,CAAC,CAAC,wBAAwB,CAAC,UAAU,CAAC;QACtC,CAAC,CAAC,IAAI,CAAA;IAER,MAAM,UAAU,GACd,UAAU,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,CAAA;IAC5E,MAAM,SAAS,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,CAAA;IAC3E,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAA;IAC/D,MAAM,WAAW,GACf,OAAO,MAAM,KAAK,QAAQ;QACxB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAA0C,CAAC,CAAA;IAExE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;AACzD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gCAAgC,CAC9C,MAA8B,EAC9B,YAA+B,EAC/B,UAAkC;IAElC,MAAM,sBAAsB,GAAG,UAAU;QACvC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAC7D,CAAC,CAAC,KAAK,CAAA;IACT,MAAM,UAAU,GAAG,sBAAsB;QACvC,CAAC,CAAC,wBAAwB,CAAC,UAAU,CAAC;QACtC,CAAC,CAAC,IAAI,CAAA;IAER,MAAM,mBAAmB,GAAG,YAAY,EAAE,GAAG,EAAE,IAAI,CACjD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,mBAAmB,CACtC,CAAA;IACD,MAAM,cAAc,GAAG,mBAAmB,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,CAAA;IAEhE,IAAI,cAAc,EAAE,MAAM,EAAE,iBAAiB,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7D,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAA;QAChE,OAAO;YACL,UAAU,EAAE,gBAAgB,CAAC,iBAAiB,IAAI,EAAE;YACpD,SAAS,EAAE,gBAAgB,CAAC,YAAY,IAAI,EAAE;YAC9C,QAAQ,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC;YAChE,WAAW,EACT,OAAO,MAAM,KAAK,QAAQ;gBACxB,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAA0C,CAAC;gBACpE,CAAC,CAAC,IAAI;SACX,CAAA;IACH,CAAC;IAED,sEAAsE;IACtE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC7C,OAAO;QACL,UAAU,EAAE,UAAU,IAAI,QAAQ,CAAC,UAAU,IAAI,EAAE;QACnD,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,EAAE;QACnC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;QACjC,WAAW,EACT,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ;YACnD,QAAQ,CAAC,WAAW;YACpB,EAAE;KACL,CAAA;AACH,CAAC"}
@@ -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"}
@@ -1,117 +0,0 @@
1
- import { asRecord, getTrimmedString, recordList } from './text.js';
2
- /**
3
- * The recipient display name carried in an OBv3 `identifier` entry: the
4
- * `identityHash` of the first identifier that has one and is not marked
5
- * `hashed: true`. Returns `undefined` when no such identifier is present.
6
- *
7
- * Note: unlike the name-guarded path in `extractIssuedTo`, this returns the
8
- * hash of ANY identifier (regardless of `identityType`), matching DCW's
9
- * historical behavior. Callers wanting only name-typed identifiers use
10
- * `extractIssuedTo`.
11
- *
12
- * Non-object entries in the `identifier` array (a `null`, a bare string) are
13
- * skipped rather than dereferenced.
14
- *
15
- * @param credentialSubject {IOpenBadgeSubject | ICredentialSubject}
16
- * @returns {string | undefined}
17
- */
18
- export function extractNameFromOBV3Identifier(credentialSubject) {
19
- if (!credentialSubject?.identifier) {
20
- return undefined;
21
- }
22
- const identifiers = recordList(credentialSubject.identifier);
23
- const identifierWithHash = identifiers.find(identifier => identifier.identityHash &&
24
- (identifier.hashed === false || identifier.hashed === undefined));
25
- return getTrimmedString(identifierWithHash?.identityHash) || undefined;
26
- }
27
- /**
28
- * Normalizes a subject's `achievement` field to an array of records (a single
29
- * achievement object is wrapped; a missing one yields `[]`). Non-object entries
30
- * are dropped, so callers can read each achievement's fields directly.
31
- *
32
- * @param subject {Record<string, unknown>}
33
- * @returns {Record<string, unknown>[]}
34
- */
35
- export function achievementsList(subject) {
36
- return recordList(subject?.achievement);
37
- }
38
- /**
39
- * Normalizes a subject's `skill` field to an array of records (a single skill
40
- * object is wrapped; a missing one yields `[]`). Non-object entries are
41
- * dropped, so callers can read each skill's fields directly.
42
- *
43
- * @param subject {Record<string, unknown>}
44
- * @returns {Record<string, unknown>[]}
45
- */
46
- export function skillsList(subject) {
47
- return recordList(subject?.skill);
48
- }
49
- /**
50
- * The image URL of the first skill in a list: an object image's `id`, or a
51
- * string image, else `''`.
52
- *
53
- * @param skills {Record<string, unknown>[]}
54
- * @returns {string}
55
- */
56
- export function getSkillImage(skills) {
57
- const first = skills[0];
58
- if (!first) {
59
- return '';
60
- }
61
- const image = asRecord(first.image);
62
- if (image) {
63
- return getTrimmedString(image.id);
64
- }
65
- return getTrimmedString(first.image);
66
- }
67
- const IMAGE_EXTENSION_RE = /\.(jpe?g|png|gif|webp|svg|avif)(\?|$)/i;
68
- /**
69
- * The `id` (URL) of the first evidence item that looks like an image -- either
70
- * its `id` or `name` ends in a known image extension -- else `''`.
71
- *
72
- * @param evidence {unknown[]}
73
- * @returns {string}
74
- */
75
- export function getEvidenceImage(evidence) {
76
- for (const ev of evidence) {
77
- const item = asRecord(ev);
78
- if (!item) {
79
- continue;
80
- }
81
- const id = getTrimmedString(item.id);
82
- const name = getTrimmedString(item.name);
83
- if (id && (IMAGE_EXTENSION_RE.test(id) || IMAGE_EXTENSION_RE.test(name))) {
84
- return id;
85
- }
86
- }
87
- return '';
88
- }
89
- /**
90
- * The achievement's image URL: a string image directly, or an object image's
91
- * `id`, else `''`.
92
- *
93
- * @param primaryAchievement {IAchievement | undefined}
94
- * @returns {string}
95
- */
96
- export function getAchievementImage(primaryAchievement) {
97
- if (!primaryAchievement?.image) {
98
- return '';
99
- }
100
- if (typeof primaryAchievement.image === 'string') {
101
- return primaryAchievement.image;
102
- }
103
- return primaryAchievement.image.id ?? '';
104
- }
105
- /**
106
- * The achievement's `achievementType` when it is a string, else `''`.
107
- *
108
- * @param primaryAchievement {IAchievement | undefined}
109
- * @returns {string}
110
- */
111
- export function getAchievementType(primaryAchievement) {
112
- if (typeof primaryAchievement?.achievementType === 'string') {
113
- return primaryAchievement.achievementType;
114
- }
115
- return '';
116
- }
117
- //# sourceMappingURL=obv3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"obv3.js","sourceRoot":"","sources":["../../src/display/obv3.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAElE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,6BAA6B,CAC3C,iBAAyD;IAEzD,IAAI,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC;QACnC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAE5D,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CACzC,UAAU,CAAC,EAAE,CACX,UAAU,CAAC,YAAY;QACvB,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CACnE,CAAA;IAED,OAAO,gBAAgB,CAAC,kBAAkB,EAAE,YAAY,CAAC,IAAI,SAAS,CAAA;AACxE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAgC;IAEhC,OAAO,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;AACzC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,OAAgC;IAEhC,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAiC;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAe,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,kBAAkB,GAAG,wCAAwC,CAAA;AAEnE;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAmB;IAClD,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAQ;QACV,CAAC;QACD,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACpC,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,kBAAiC;IACnE,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,OAAO,kBAAkB,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO,kBAAkB,CAAC,KAAK,CAAA;IACjC,CAAC;IACD,OAAO,kBAAkB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,kBAAiC;IAClE,IAAI,OAAO,kBAAkB,EAAE,eAAe,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,kBAAkB,CAAC,eAAe,CAAA;IAC3C,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -1,66 +0,0 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * Credential input parsing: turning decoded JSON (or a raw user / QR string)
6
- * into an array of Verifiable Credentials. File reading and network transport
7
- * stay app-side -- `resolveCredentialsInput` takes an injected `fetchUrl` so the
8
- * library never imports an HTTP client (DCW passes its `fetchWithTimeout`,
9
- * Freewallet its CORS-proxy `fetchFromURL`).
10
- *
11
- * Drift resolution: `credentialsFromJSON` (Freewallet) and
12
- * `extractCredentialsFrom` (DCW) both survive -- the former accepts an array /
13
- * a bare VC / a VP wrapper from a JSON string, the latter routes an
14
- * already-decoded object. Both now share the data-integrity-core shape guards
15
- * instead of open-coding the `type` checks. Freewallet's
16
- * `ResolveCredentialsInputError` code taxonomy is kept; DCW's
17
- * `VPQR_UNSUPPORTED_MESSAGE` constant is exported for apps that surface it.
18
- */
19
- import type { IVerifiableCredential, IVerifiablePresentation } from '@interop/data-integrity-core';
20
- /**
21
- * Message DCW surfaced for the (now unsupported) VPQR `VP1-` input.
22
- */
23
- export declare const VPQR_UNSUPPORTED_MESSAGE = "VPQR encoded credentials are not supported.";
24
- /**
25
- * Coded failure of {@link resolveCredentialsInput}.
26
- */
27
- export declare class ResolveCredentialsInputError extends Error {
28
- readonly code: 'empty' | 'invalid_input' | 'none_found' | 'vpqr_unsupported';
29
- constructor(code: 'empty' | 'invalid_input' | 'none_found' | 'vpqr_unsupported');
30
- }
31
- /**
32
- * Decodes one or more Verifiable Credentials from a JSON string: an array of
33
- * VCs (non-credential entries filtered out), a Verifiable Presentation wrapping
34
- * one or many credentials, or a single VC object. Throws when nothing decodes.
35
- *
36
- * @param text {string}
37
- * @returns {IVerifiableCredential[]}
38
- */
39
- export declare function credentialsFromJSON(text: string): IVerifiableCredential[];
40
- /**
41
- * Extracts the VCs from an already-decoded object: a bare VC becomes a
42
- * single-element array, a VP yields its `verifiableCredential` (VC-vs-VP
43
- * detection runs the VC check first), anything else yields `null`.
44
- *
45
- * @param obj {IVerifiableCredential | IVerifiablePresentation}
46
- * @returns {IVerifiableCredential[] | null}
47
- */
48
- export declare function extractCredentialsFrom(obj: IVerifiableCredential | IVerifiablePresentation): IVerifiableCredential[] | null;
49
- /**
50
- * Normalizes raw user / QR input into an array of VCs. A URL (http/https) is
51
- * fetched via the injected `fetchUrl` and its body parsed; raw JSON / JSON-LD
52
- * (`{` or `[`) is parsed directly; a `VP1-` (VPQR) prefix is detected but not
53
- * supported. Throws a coded {@link ResolveCredentialsInputError} on each
54
- * failure path.
55
- *
56
- * @param options {object}
57
- * @param options.raw {string} the raw input text
58
- * @param options.fetchUrl {(url: string) => Promise<string>} fetches a URL's
59
- * body text (app-provided transport)
60
- * @returns {Promise<IVerifiableCredential[]>}
61
- */
62
- export declare function resolveCredentialsInput({ raw, fetchUrl }: {
63
- raw: string;
64
- fetchUrl: (url: string) => Promise<string>;
65
- }): Promise<IVerifiableCredential[]>;
66
- //# sourceMappingURL=parse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/display/parse.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,8BAA8B,CAAA;AAMrC;;GAEG;AACH,eAAO,MAAM,wBAAwB,gDACU,CAAA;AAE/C;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,GAAG,YAAY,GAAG,kBAAkB,CAAA;gBAE1E,IAAI,EAAE,OAAO,GAAG,eAAe,GAAG,YAAY,GAAG,kBAAkB;CAMtE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,EAAE,CA0BzE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,qBAAqB,GAAG,uBAAuB,GACnD,qBAAqB,EAAE,GAAG,IAAI,CAYhC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,GAAG,EACH,QAAQ,EACT,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC3C,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAwBnC"}
@@ -1,104 +0,0 @@
1
- import { isVerifiableCredential, isVerifiablePresentation } from '@interop/data-integrity-core/guards';
2
- /**
3
- * Message DCW surfaced for the (now unsupported) VPQR `VP1-` input.
4
- */
5
- export const VPQR_UNSUPPORTED_MESSAGE = 'VPQR encoded credentials are not supported.';
6
- /**
7
- * Coded failure of {@link resolveCredentialsInput}.
8
- */
9
- export class ResolveCredentialsInputError extends Error {
10
- code;
11
- constructor(code) {
12
- super(code);
13
- this.name = 'ResolveCredentialsInputError';
14
- this.code = code;
15
- }
16
- }
17
- /**
18
- * Decodes one or more Verifiable Credentials from a JSON string: an array of
19
- * VCs (non-credential entries filtered out), a Verifiable Presentation wrapping
20
- * one or many credentials, or a single VC object. Throws when nothing decodes.
21
- *
22
- * @param text {string}
23
- * @returns {IVerifiableCredential[]}
24
- */
25
- export function credentialsFromJSON(text) {
26
- const data = JSON.parse(text);
27
- if (Array.isArray(data)) {
28
- const vcs = data.filter(item => isVerifiableCredential(item));
29
- if (vcs.length > 0) {
30
- return vcs;
31
- }
32
- throw new Error('Array did not contain any Verifiable Credentials.');
33
- }
34
- if (isVerifiablePresentation(data) &&
35
- data &&
36
- typeof data === 'object' &&
37
- 'verifiableCredential' in data) {
38
- const wrapped = data.verifiableCredential;
39
- return Array.isArray(wrapped) ? wrapped : [wrapped];
40
- }
41
- if (isVerifiableCredential(data)) {
42
- return [data];
43
- }
44
- throw new Error('Could not decode Verifiable Credential(s) from the JSON.');
45
- }
46
- /**
47
- * Extracts the VCs from an already-decoded object: a bare VC becomes a
48
- * single-element array, a VP yields its `verifiableCredential` (VC-vs-VP
49
- * detection runs the VC check first), anything else yields `null`.
50
- *
51
- * @param obj {IVerifiableCredential | IVerifiablePresentation}
52
- * @returns {IVerifiableCredential[] | null}
53
- */
54
- export function extractCredentialsFrom(obj) {
55
- if (isVerifiableCredential(obj)) {
56
- return [obj];
57
- }
58
- if (isVerifiablePresentation(obj) && 'verifiableCredential' in obj) {
59
- const verifiableCredential = obj.verifiableCredential;
60
- if (Array.isArray(verifiableCredential)) {
61
- return verifiableCredential;
62
- }
63
- return [verifiableCredential];
64
- }
65
- return null;
66
- }
67
- /**
68
- * Normalizes raw user / QR input into an array of VCs. A URL (http/https) is
69
- * fetched via the injected `fetchUrl` and its body parsed; raw JSON / JSON-LD
70
- * (`{` or `[`) is parsed directly; a `VP1-` (VPQR) prefix is detected but not
71
- * supported. Throws a coded {@link ResolveCredentialsInputError} on each
72
- * failure path.
73
- *
74
- * @param options {object}
75
- * @param options.raw {string} the raw input text
76
- * @param options.fetchUrl {(url: string) => Promise<string>} fetches a URL's
77
- * body text (app-provided transport)
78
- * @returns {Promise<IVerifiableCredential[]>}
79
- */
80
- export async function resolveCredentialsInput({ raw, fetchUrl }) {
81
- const trimmed = raw.trimStart();
82
- if (!trimmed) {
83
- throw new ResolveCredentialsInputError('empty');
84
- }
85
- let credentials;
86
- if (trimmed.startsWith('http://') || trimmed.startsWith('https://')) {
87
- const jsonText = await fetchUrl(trimmed.trim());
88
- credentials = credentialsFromJSON(jsonText);
89
- }
90
- else if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
91
- credentials = credentialsFromJSON(trimmed);
92
- }
93
- else if (trimmed.startsWith('VP1-')) {
94
- throw new ResolveCredentialsInputError('vpqr_unsupported');
95
- }
96
- else {
97
- throw new ResolveCredentialsInputError('invalid_input');
98
- }
99
- if (credentials.length === 0) {
100
- throw new ResolveCredentialsInputError('none_found');
101
- }
102
- return credentials;
103
- }
104
- //# sourceMappingURL=parse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/display/parse.ts"],"names":[],"mappings":"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"}