@interop/wallet-core 0.51.0 → 0.52.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/README.md +7 -11
  2. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts +2 -2
  3. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts.map +1 -1
  4. package/dist/clientAnnex/credentialAnchoredGenesis.js +1 -1
  5. package/dist/clientAnnex/forget.d.ts +18 -6
  6. package/dist/clientAnnex/forget.d.ts.map +1 -1
  7. package/dist/clientAnnex/forget.js +19 -6
  8. package/dist/clientAnnex/forget.js.map +1 -1
  9. package/dist/clientAnnex/forgetLast.d.ts +33 -20
  10. package/dist/clientAnnex/forgetLast.d.ts.map +1 -1
  11. package/dist/clientAnnex/forgetLast.js +43 -17
  12. package/dist/clientAnnex/forgetLast.js.map +1 -1
  13. package/dist/clientAnnex/gc.d.ts +3 -3
  14. package/dist/clientAnnex/gc.d.ts.map +1 -1
  15. package/dist/clientAnnex/gc.js +2 -2
  16. package/dist/clientAnnex/gc.js.map +1 -1
  17. package/dist/clientAnnex/index.d.ts +5 -5
  18. package/dist/clientAnnex/index.d.ts.map +1 -1
  19. package/dist/clientAnnex/index.js +4 -4
  20. package/dist/clientAnnex/index.js.map +1 -1
  21. package/dist/clientAnnex/ladder.d.ts +19 -11
  22. package/dist/clientAnnex/ladder.d.ts.map +1 -1
  23. package/dist/clientAnnex/ladder.js +77 -14
  24. package/dist/clientAnnex/ladder.js.map +1 -1
  25. package/dist/clientAnnex/ladderAnchored.d.ts +36 -7
  26. package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
  27. package/dist/clientAnnex/ladderAnchored.js +80 -18
  28. package/dist/clientAnnex/ladderAnchored.js.map +1 -1
  29. package/dist/clientAnnex/log.d.ts +6 -6
  30. package/dist/clientAnnex/log.d.ts.map +1 -1
  31. package/dist/clientAnnex/log.js +8 -8
  32. package/dist/clientAnnex/log.js.map +1 -1
  33. package/dist/clientAnnex/recoveryLadderAnchored.d.ts +7 -7
  34. package/dist/clientAnnex/recoveryLadderAnchored.js +9 -9
  35. package/dist/clientAnnex/recoveryLadderAnchored.js.map +1 -1
  36. package/dist/clientAnnex/selfEnroll.d.ts +6 -4
  37. package/dist/clientAnnex/selfEnroll.d.ts.map +1 -1
  38. package/dist/clientAnnex/selfEnroll.js +19 -7
  39. package/dist/clientAnnex/selfEnroll.js.map +1 -1
  40. package/dist/clients/listing.d.ts +1 -1
  41. package/dist/clients/listing.d.ts.map +1 -1
  42. package/dist/clients/listing.js +1 -1
  43. package/dist/clients/listing.js.map +1 -1
  44. package/dist/clients/revocation.d.ts +1 -1
  45. package/dist/clients/rosterPolicy.d.ts +1 -1
  46. package/dist/clients/rosterPolicy.d.ts.map +1 -1
  47. package/dist/descriptors/acquire.js +1 -1
  48. package/dist/descriptors/logSource.d.ts +1 -2
  49. package/dist/descriptors/logSource.d.ts.map +1 -1
  50. package/dist/descriptors/logSource.js +2 -2
  51. package/dist/descriptors/logSource.js.map +1 -1
  52. package/dist/enrollment/enrollment.d.ts +1 -1
  53. package/dist/enrollment/enrollment.d.ts.map +1 -1
  54. package/dist/enrollment/enrollment.js +2 -1
  55. package/dist/enrollment/enrollment.js.map +1 -1
  56. package/dist/genesis/accountGenesis.d.ts +1 -1
  57. package/dist/genesis/accountGenesis.d.ts.map +1 -1
  58. package/dist/genesis/accountGenesis.js +1 -1
  59. package/dist/index.d.ts +1 -3
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1 -3
  62. package/dist/index.js.map +1 -1
  63. package/dist/keyring/kdf.d.ts +6 -20
  64. package/dist/keyring/kdf.d.ts.map +1 -1
  65. package/dist/keyring/kdf.js +8 -5
  66. package/dist/keyring/kdf.js.map +1 -1
  67. package/dist/keyring/unlockSpace.js +1 -1
  68. package/dist/keys/rosterLogStore.d.ts +16 -14
  69. package/dist/keys/rosterLogStore.d.ts.map +1 -1
  70. package/dist/keys/rosterLogStore.js +149 -32
  71. package/dist/keys/rosterLogStore.js.map +1 -1
  72. package/dist/keys/rosterStore.d.ts +8 -7
  73. package/dist/keys/rosterStore.d.ts.map +1 -1
  74. package/dist/keys/rosterStore.js +6 -6
  75. package/dist/keys/rosterStore.js.map +1 -1
  76. package/dist/keys/spaceEpochs.d.ts +1 -1
  77. package/dist/keys/spaceEpochs.js +1 -1
  78. package/dist/keys/userKeyRoster.d.ts +3 -3
  79. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  80. package/dist/keys/userKeyRoster.js +3 -3
  81. package/dist/keys/userKeyRoster.js.map +1 -1
  82. package/dist/recovery/index.d.ts +2 -2
  83. package/dist/recovery/index.js +2 -2
  84. package/dist/recovery/recoveryDelegation.js +1 -1
  85. package/dist/recovery/recoveryDelegation.js.map +1 -1
  86. package/dist/recovery/recoveryWebvh.d.ts +4 -4
  87. package/dist/recovery/recoveryWebvh.js +5 -5
  88. package/dist/request/appKey.d.ts +9 -3
  89. package/dist/request/appKey.d.ts.map +1 -1
  90. package/dist/request/appKey.js +13 -8
  91. package/dist/request/appKey.js.map +1 -1
  92. package/dist/request/classify.d.ts.map +1 -1
  93. package/dist/request/classify.js +13 -1
  94. package/dist/request/classify.js.map +1 -1
  95. package/dist/request/ephemeralExchange.d.ts +6 -1
  96. package/dist/request/ephemeralExchange.d.ts.map +1 -1
  97. package/dist/request/ephemeralExchange.js +6 -1
  98. package/dist/request/ephemeralExchange.js.map +1 -1
  99. package/dist/request/exchangeClient.d.ts +0 -23
  100. package/dist/request/exchangeClient.d.ts.map +1 -1
  101. package/dist/request/exchangeClient.js +30 -1
  102. package/dist/request/exchangeClient.js.map +1 -1
  103. package/dist/request/index.d.ts +4 -1
  104. package/dist/request/index.d.ts.map +1 -1
  105. package/dist/request/index.js +4 -1
  106. package/dist/request/index.js.map +1 -1
  107. package/dist/request/interactionRequest.d.ts +23 -0
  108. package/dist/request/interactionRequest.d.ts.map +1 -0
  109. package/dist/request/interactionRequest.js +46 -0
  110. package/dist/request/interactionRequest.js.map +1 -0
  111. package/dist/request/interactionUrl.d.ts +3 -14
  112. package/dist/request/interactionUrl.d.ts.map +1 -1
  113. package/dist/request/interactionUrl.js +20 -1
  114. package/dist/request/interactionUrl.js.map +1 -1
  115. package/dist/resourceLog/controller.d.ts +48 -49
  116. package/dist/resourceLog/controller.d.ts.map +1 -1
  117. package/dist/resourceLog/controller.js +40 -20
  118. package/dist/resourceLog/controller.js.map +1 -1
  119. package/dist/resourceLog/errors.d.ts +12 -78
  120. package/dist/resourceLog/errors.d.ts.map +1 -1
  121. package/dist/resourceLog/errors.js +12 -79
  122. package/dist/resourceLog/errors.js.map +1 -1
  123. package/dist/resourceLog/index.d.ts +17 -22
  124. package/dist/resourceLog/index.d.ts.map +1 -1
  125. package/dist/resourceLog/index.js +16 -21
  126. package/dist/resourceLog/index.js.map +1 -1
  127. package/dist/resourceLog/license.d.ts +27 -26
  128. package/dist/resourceLog/license.d.ts.map +1 -1
  129. package/dist/resourceLog/license.js +31 -30
  130. package/dist/resourceLog/license.js.map +1 -1
  131. package/dist/unlock/index.d.ts +6 -6
  132. package/dist/unlock/index.d.ts.map +1 -1
  133. package/dist/unlock/index.js +5 -5
  134. package/dist/unlock/retire.d.ts +29 -28
  135. package/dist/unlock/retire.d.ts.map +1 -1
  136. package/dist/unlock/retire.js +25 -16
  137. package/dist/unlock/retire.js.map +1 -1
  138. package/dist/unlock/standingClient.d.ts +1 -1
  139. package/dist/unlock/standingClient.js +3 -3
  140. package/dist/unlock/standingWebvh.d.ts +28 -10
  141. package/dist/unlock/standingWebvh.d.ts.map +1 -1
  142. package/dist/unlock/standingWebvh.js +75 -37
  143. package/dist/unlock/standingWebvh.js.map +1 -1
  144. package/dist/unlock/unlockRecord.js +1 -1
  145. package/dist/webvh/delegatedLogStore.d.ts +2 -2
  146. package/dist/webvh/delegatedLogStore.js +2 -2
  147. package/dist/webvh/didWeb.js +1 -1
  148. package/dist/webvh/didWeb.js.map +1 -1
  149. package/dist/webvh/didWebvh.d.ts +3 -3
  150. package/dist/webvh/didWebvh.d.ts.map +1 -1
  151. package/dist/webvh/didWebvh.js +5 -5
  152. package/dist/webvh/didWebvh.js.map +1 -1
  153. package/dist/webvh/listClients.js +1 -1
  154. package/dist/webvh/listClients.js.map +1 -1
  155. package/dist/webvh/verifyLog.d.ts +1 -1
  156. package/dist/webvh/verifyLog.d.ts.map +1 -1
  157. package/dist/webvh/verifyLog.js +1 -2
  158. package/dist/webvh/verifyLog.js.map +1 -1
  159. package/package.json +5 -9
  160. package/dist/display/alignment.d.ts +0 -55
  161. package/dist/display/alignment.d.ts.map +0 -1
  162. package/dist/display/alignment.js +0 -117
  163. package/dist/display/alignment.js.map +0 -1
  164. package/dist/display/credentialName.d.ts +0 -42
  165. package/dist/display/credentialName.d.ts.map +0 -1
  166. package/dist/display/credentialName.js +0 -106
  167. package/dist/display/credentialName.js.map +0 -1
  168. package/dist/display/displayFields.d.ts +0 -59
  169. package/dist/display/displayFields.d.ts.map +0 -1
  170. package/dist/display/displayFields.js +0 -136
  171. package/dist/display/displayFields.js.map +0 -1
  172. package/dist/display/evidence.d.ts +0 -50
  173. package/dist/display/evidence.d.ts.map +0 -1
  174. package/dist/display/evidence.js +0 -67
  175. package/dist/display/evidence.js.map +0 -1
  176. package/dist/display/image.d.ts +0 -18
  177. package/dist/display/image.d.ts.map +0 -1
  178. package/dist/display/image.js +0 -23
  179. package/dist/display/image.js.map +0 -1
  180. package/dist/display/index.d.ts +0 -38
  181. package/dist/display/index.d.ts.map +0 -1
  182. package/dist/display/index.js +0 -32
  183. package/dist/display/index.js.map +0 -1
  184. package/dist/display/issuer.d.ts +0 -105
  185. package/dist/display/issuer.d.ts.map +0 -1
  186. package/dist/display/issuer.js +0 -126
  187. package/dist/display/issuer.js.map +0 -1
  188. package/dist/display/obv3.d.ts +0 -82
  189. package/dist/display/obv3.d.ts.map +0 -1
  190. package/dist/display/obv3.js +0 -117
  191. package/dist/display/obv3.js.map +0 -1
  192. package/dist/display/parse.d.ts +0 -66
  193. package/dist/display/parse.d.ts.map +0 -1
  194. package/dist/display/parse.js +0 -104
  195. package/dist/display/parse.js.map +0 -1
  196. package/dist/display/subject.d.ts +0 -79
  197. package/dist/display/subject.d.ts.map +0 -1
  198. package/dist/display/subject.js +0 -124
  199. package/dist/display/subject.js.map +0 -1
  200. package/dist/display/text.d.ts +0 -53
  201. package/dist/display/text.d.ts.map +0 -1
  202. package/dist/display/text.js +0 -78
  203. package/dist/display/text.js.map +0 -1
  204. package/dist/display/types.d.ts +0 -55
  205. package/dist/display/types.d.ts.map +0 -1
  206. package/dist/display/types.js +0 -41
  207. package/dist/display/types.js.map +0 -1
  208. package/dist/display/validity.d.ts +0 -51
  209. package/dist/display/validity.d.ts.map +0 -1
  210. package/dist/display/validity.js +0 -51
  211. package/dist/display/validity.js.map +0 -1
  212. package/dist/display/verificationView.d.ts +0 -115
  213. package/dist/display/verificationView.d.ts.map +0 -1
  214. package/dist/display/verificationView.js +0 -199
  215. package/dist/display/verificationView.js.map +0 -1
  216. package/dist/resourceLog/append.d.ts +0 -112
  217. package/dist/resourceLog/append.d.ts.map +0 -1
  218. package/dist/resourceLog/append.js +0 -197
  219. package/dist/resourceLog/append.js.map +0 -1
  220. package/dist/resourceLog/entry.d.ts +0 -68
  221. package/dist/resourceLog/entry.d.ts.map +0 -1
  222. package/dist/resourceLog/entry.js +0 -167
  223. package/dist/resourceLog/entry.js.map +0 -1
  224. package/dist/resourceLog/pin.d.ts +0 -82
  225. package/dist/resourceLog/pin.d.ts.map +0 -1
  226. package/dist/resourceLog/pin.js +0 -57
  227. package/dist/resourceLog/pin.js.map +0 -1
  228. package/dist/resourceLog/seal.d.ts +0 -97
  229. package/dist/resourceLog/seal.d.ts.map +0 -1
  230. package/dist/resourceLog/seal.js +0 -113
  231. package/dist/resourceLog/seal.js.map +0 -1
  232. package/dist/resourceLog/verify.d.ts +0 -96
  233. package/dist/resourceLog/verify.d.ts.map +0 -1
  234. package/dist/resourceLog/verify.js +0 -474
  235. package/dist/resourceLog/verify.js.map +0 -1
  236. package/dist/resourceLog/vmFragment.d.ts +0 -33
  237. package/dist/resourceLog/vmFragment.d.ts.map +0 -1
  238. package/dist/resourceLog/vmFragment.js +0 -39
  239. package/dist/resourceLog/vmFragment.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"verifyLog.d.ts","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAI/D,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAA;AAE9B;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAMxE;AAED;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,SAA0C;CAI9D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,GAAG,EACH,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAC/B,GAAG,kBAAkB,CA4CrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,GAAG,EACH,OAAO,EACP,IAAI,EACJ,QAAQ,EACT,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,mBAAmB,CAAA;CAC/B,GAAG,OAAO,CAAC;IACV,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,CAAC,CA6CD"}
1
+ {"version":3,"file":"verifyLog.d.ts","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAG/D,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAA;AAEjC;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAMxE;AAED;;;;;;GAMG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,SAA0C;CAI9D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,GAAG,EACH,GAAG,EACJ,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,kBAAkB,GAAG,IAAI,CAAA;CAC/B,GAAG,kBAAkB,CA4CrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,GAAG,EACH,OAAO,EACP,IAAI,EACJ,QAAQ,EACT,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,mBAAmB,CAAA;CAC/B,GAAG,OAAO,CAAC;IACV,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB,CAAC,CA6CD"}
@@ -29,8 +29,7 @@
29
29
  import { readLogFromString, resolveDIDFromLog } from '@interop/did-method-webvh';
30
30
  import { resourcePath, toUrl } from '@interop/was-client/paths';
31
31
  import { DID_LOG_RESOURCE, ID_COLLECTION } from '../space/collections.js';
32
- import { ResourceLogContinuityError } from '../resourceLog/errors.js';
33
- import { resourceLogPinId } from '../resourceLog/pin.js';
32
+ import { ResourceLogContinuityError, resourceLogPinId } from '@interop/vh-resource-log';
34
33
  /**
35
34
  * The pin-slot key for an account's did:webvh log (`id/did.jsonl`) -- what a
36
35
  * ceremony taking its own read of the log names its pin by, and what
@@ -1 +1 @@
1
- {"version":3,"file":"verifyLog.js","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyLog.js","sourceRoot":"","sources":["../../src/webvh/verifyLog.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@interop/wallet-core",
3
3
  "description": "Shared wallet-domain logic (WAS sync engine core and wallet Space layout contracts) for Interop wallet apps.",
4
- "version": "0.51.0",
4
+ "version": "0.52.1",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "build": "pnpm run clear && tsc",
@@ -21,14 +21,16 @@
21
21
  "dependencies": {
22
22
  "@interop/data-integrity-core": "^8.7.1",
23
23
  "@interop/data-integrity-proof": "^3.4.5",
24
- "@interop/did-method-webvh": "^5.5.0",
24
+ "@interop/did-method-webvh": "^5.5.1",
25
25
  "@interop/ed25519-signature": "^7.1.4",
26
26
  "@interop/ed25519-verification-key": "^8.0.4",
27
27
  "@interop/ezcap": "^7.4.3",
28
28
  "@interop/security-document-loader": "^10.0.4",
29
29
  "@interop/social-core": "^0.8.1",
30
+ "@interop/storage-core": "^0.9.1",
30
31
  "@interop/vc": "^11.0.7",
31
- "@interop/was-client": "^0.43.0",
32
+ "@interop/vh-resource-log": "^0.4.0",
33
+ "@interop/was-client": "^0.44.4",
32
34
  "@interop/webkms-client": "^14.7.3",
33
35
  "@interop/x25519-key-agreement-key": "^5.2.2",
34
36
  "@noble/ciphers": "^2.3.0",
@@ -93,12 +95,6 @@
93
95
  "import": "./dist/request/matching.js",
94
96
  "default": "./dist/request/matching.js"
95
97
  },
96
- "./display": {
97
- "types": "./dist/display/index.d.ts",
98
- "react-native": "./dist/display/index.js",
99
- "import": "./dist/display/index.js",
100
- "default": "./dist/display/index.js"
101
- },
102
98
  "./webvh": {
103
99
  "types": "./dist/webvh/index.d.ts",
104
100
  "react-native": "./dist/webvh/index.js",
@@ -1,55 +0,0 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * Achievement alignment normalization. Two functions are kept on purpose
6
- * because they answer different questions:
7
- *
8
- * - `normalizeAlignments` (from Freewallet) trims each alignment and drops the
9
- * ones with no `targetName`, returning a plain `{ targetName, targetUrl,
10
- * targetDescription }` view. It does NOT validate URLs.
11
- * - `getValidAlignments` (from DCW) additionally runs a strict http(s) URL
12
- * safety check and reports it via an `isValidUrl` flag, so the UI can decide
13
- * whether to render a target as a clickable link. It omits `targetUrl` when
14
- * absent (rather than emitting `''`).
15
- *
16
- * Both had passing tests in their respective apps and both are exported.
17
- */
18
- import type { IAlignment } from '@interop/data-integrity-core';
19
- /**
20
- * The trimmed, always-present-string alignment view `normalizeAlignments`
21
- * emits.
22
- */
23
- export interface IAlignmentView {
24
- targetName: string;
25
- targetUrl: string;
26
- targetDescription: string;
27
- }
28
- /**
29
- * A display-safe alignment with an optional validated URL
30
- * (`getValidAlignments`).
31
- */
32
- export interface ValidAlignment {
33
- targetName: string;
34
- targetUrl?: string;
35
- targetDescription?: string;
36
- isValidUrl?: boolean;
37
- }
38
- /**
39
- * Normalizes a raw alignment field (a single alignment or an array) to trimmed
40
- * views, dropping entries with no `targetName`. Does not validate URLs.
41
- *
42
- * @param rawAlignments {unknown}
43
- * @returns {IAlignmentView[]}
44
- */
45
- export declare function normalizeAlignments(rawAlignments: unknown): IAlignmentView[];
46
- /**
47
- * Filters alignments to those with a `targetName` and, for each, reports
48
- * whether its `targetUrl` (when present) is a safe http(s) URL via `isValidUrl`.
49
- * `targetUrl` is omitted from the result when the input had none.
50
- *
51
- * @param alignments {IAlignment[] | undefined}
52
- * @returns {ValidAlignment[]}
53
- */
54
- export declare function getValidAlignments(alignments?: IAlignment[]): ValidAlignment[];
55
- //# sourceMappingURL=alignment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alignment.d.ts","sourceRoot":"","sources":["../../src/display/alignment.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAG9D;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,OAAO,GAAG,cAAc,EAAE,CAqB5E;AAyED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,CAAC,EAAE,UAAU,EAAE,GACxB,cAAc,EAAE,CAwBlB"}
@@ -1,117 +0,0 @@
1
- import { asRecord } from './text.js';
2
- /**
3
- * Normalizes a raw alignment field (a single alignment or an array) to trimmed
4
- * views, dropping entries with no `targetName`. Does not validate URLs.
5
- *
6
- * @param rawAlignments {unknown}
7
- * @returns {IAlignmentView[]}
8
- */
9
- export function normalizeAlignments(rawAlignments) {
10
- if (!rawAlignments) {
11
- return [];
12
- }
13
- const alignmentArray = Array.isArray(rawAlignments)
14
- ? rawAlignments
15
- : [rawAlignments];
16
- return alignmentArray
17
- .map((alignmentField) => {
18
- const normalizedField = asRecord(alignmentField) ?? {};
19
- return {
20
- targetName: String(normalizedField.targetName ?? '').trim(),
21
- targetUrl: String(normalizedField.targetUrl ?? '').trim(),
22
- targetDescription: String(normalizedField.targetDescription ?? '').trim()
23
- };
24
- })
25
- .filter(alignmentField => Boolean(alignmentField.targetName));
26
- }
27
- function normalizeUrl(raw) {
28
- const trimmed = String(raw).trim();
29
- // If it already has a scheme (e.g., http:, https:)
30
- if (/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(trimmed)) {
31
- return trimmed;
32
- }
33
- // Otherwise, assume https
34
- return `https://${trimmed}`;
35
- }
36
- function isStrictHttpUrl(raw) {
37
- const candidate = String(raw).trim();
38
- if (candidate.length === 0) {
39
- return null;
40
- }
41
- if (/\s/.test(candidate)) {
42
- return null;
43
- }
44
- const normalized = normalizeUrl(candidate);
45
- // Reject strings that embed multiple schemes
46
- const firstSchemeIdx = normalized.indexOf('://');
47
- if (firstSchemeIdx === -1) {
48
- return null;
49
- }
50
- if (normalized.indexOf('://', firstSchemeIdx + 3) !== -1) {
51
- return null;
52
- }
53
- try {
54
- const parsedUrl = new URL(normalized);
55
- // Only allow http(s)
56
- if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {
57
- return null;
58
- }
59
- // Must have a hostname
60
- if (!parsedUrl.hostname) {
61
- return null;
62
- }
63
- // Forbid credentials/userinfo
64
- if (parsedUrl.username || parsedUrl.password) {
65
- return null;
66
- }
67
- // Hostname must be reasonable, or be 'localhost' or an IPv4
68
- const isHostname = /^[A-Za-z0-9.-]+$/.test(parsedUrl.hostname);
69
- const isLocalhost = parsedUrl.hostname.toLowerCase() === 'localhost';
70
- const isIPv4 = /^(25[0-5]|2[0-4]\d|1?\d?\d)(\.(25[0-5]|2[0-4]\d|1?\d?\d)){3}$/.test(parsedUrl.hostname);
71
- if (!(isHostname || isLocalhost || isIPv4)) {
72
- return null;
73
- }
74
- // If it's a standard hostname (not localhost/IP), require at least one dot
75
- if (isHostname &&
76
- !isLocalhost &&
77
- !isIPv4 &&
78
- !parsedUrl.hostname.includes('.')) {
79
- return null;
80
- }
81
- return normalized;
82
- }
83
- catch {
84
- return null;
85
- }
86
- }
87
- /**
88
- * Filters alignments to those with a `targetName` and, for each, reports
89
- * whether its `targetUrl` (when present) is a safe http(s) URL via `isValidUrl`.
90
- * `targetUrl` is omitted from the result when the input had none.
91
- *
92
- * @param alignments {IAlignment[] | undefined}
93
- * @returns {ValidAlignment[]}
94
- */
95
- export function getValidAlignments(alignments) {
96
- if (!alignments || !Array.isArray(alignments)) {
97
- return [];
98
- }
99
- return alignments
100
- .filter(alignment => {
101
- // targetName is required for display
102
- return !!alignment.targetName;
103
- })
104
- .map(alignment => {
105
- const result = {
106
- targetName: alignment.targetName,
107
- targetDescription: alignment.targetDescription
108
- };
109
- if (alignment.targetUrl) {
110
- const normalizedUrl = isStrictHttpUrl(alignment.targetUrl);
111
- result.targetUrl = alignment.targetUrl;
112
- result.isValidUrl = !!normalizedUrl;
113
- }
114
- return result;
115
- });
116
- }
117
- //# sourceMappingURL=alignment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alignment.js","sourceRoot":"","sources":["../../src/display/alignment.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- /*!
2
- * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
- */
4
- /**
5
- * Credential title derivation.
6
- *
7
- * Drift resolution (merged chain): DCW and Freewallet produced different titles
8
- * for the same credential. The merged `credentialName` keeps DCW's
9
- * type-specific human prefixes first (product copy its screens rely on:
10
- * `Recommendation From ...`, `Performance Review: ...`, the SkillClaim skill
11
- * name, `Employment: ... @ ...`, `Volunteer: ... @ ...`), then falls through to
12
- * Freewallet's more complete generic chain: top-level `vc.name`, achievement
13
- * name(s) JOINED with `' · '` (DCW returned only the first), skill name(s),
14
- * resolved person full name, `hasCredential.name`, a `'Skill Claim'` label for
15
- * a SkillClaimCredential, and finally `'Verifiable Credential'`.
16
- *
17
- * Deliberate behavior changes vs DCW: the final fallback is now
18
- * `'Verifiable Credential'` (was `'Unknown Credential'`); a multi-achievement
19
- * VC joins all names with `' · '`; and an `achievement` name now wins over a
20
- * sibling `hasCredential` name (Freewallet's chain order), where DCW preferred
21
- * `hasCredential`.
22
- */
23
- import type { IVerifiableCredential } from '@interop/data-integrity-core';
24
- /**
25
- * Freewallet's generic title chain over a resolved subject: top-level name,
26
- * achievement name(s), skill name(s), person full name, `hasCredential.name`,
27
- * a `'Skill Claim'` label, else `'Verifiable Credential'`.
28
- *
29
- * @param verifiableCredential {IVerifiableCredential}
30
- * @param subject {Record<string, unknown>}
31
- * @returns {string}
32
- */
33
- export declare function credentialNameFrom(verifiableCredential: IVerifiableCredential, subject: Record<string, unknown>): string;
34
- /**
35
- * The display title for a credential: DCW's type-specific prefixes first, then
36
- * the generic {@link credentialNameFrom} chain.
37
- *
38
- * @param credential {IVerifiableCredential}
39
- * @returns {string}
40
- */
41
- export declare function credentialName(credential: IVerifiableCredential): string;
42
- //# sourceMappingURL=credentialName.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentialName.d.ts","sourceRoot":"","sources":["../../src/display/credentialName.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAOzE;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,oBAAoB,EAAE,qBAAqB,EAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CA8CR;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,CAkDxE"}
@@ -1,106 +0,0 @@
1
- import { typeArray } from '@interop/data-integrity-core/guards';
2
- import { getSubject, resolvePersonFullName } from './subject.js';
3
- import { achievementsList, skillsList } from './obv3.js';
4
- import { isEmploymentCredential, isVolunteerCredential } from './types.js';
5
- import { asNonEmptyString, asRecord, getTrimmedString } from './text.js';
6
- /**
7
- * Freewallet's generic title chain over a resolved subject: top-level name,
8
- * achievement name(s), skill name(s), person full name, `hasCredential.name`,
9
- * a `'Skill Claim'` label, else `'Verifiable Credential'`.
10
- *
11
- * @param verifiableCredential {IVerifiableCredential}
12
- * @param subject {Record<string, unknown>}
13
- * @returns {string}
14
- */
15
- export function credentialNameFrom(verifiableCredential, subject) {
16
- const topLevelName = getTrimmedString(verifiableCredential.name);
17
- if (topLevelName) {
18
- return topLevelName;
19
- }
20
- const achievementNames = achievementsList(subject)
21
- .map(achievement => getTrimmedString(achievement.name))
22
- .filter((name) => Boolean(name));
23
- if (achievementNames.length > 1) {
24
- return achievementNames.join(' · ');
25
- }
26
- const [firstAchievementName] = achievementNames;
27
- if (firstAchievementName) {
28
- return firstAchievementName;
29
- }
30
- const skillNames = skillsList(subject)
31
- .map(skill => getTrimmedString(skill.name))
32
- .filter((name) => Boolean(name));
33
- if (skillNames.length > 1) {
34
- return skillNames.join(' · ');
35
- }
36
- const [firstSkillName] = skillNames;
37
- if (firstSkillName) {
38
- return firstSkillName;
39
- }
40
- const resumeFullName = resolvePersonFullName(subject);
41
- if (resumeFullName) {
42
- return resumeFullName;
43
- }
44
- const hasCredential = asRecord(subject.hasCredential);
45
- const hasCredentialName = getTrimmedString(hasCredential?.name);
46
- if (hasCredentialName) {
47
- return hasCredentialName;
48
- }
49
- if (typeArray(verifiableCredential.type).includes('SkillClaimCredential')) {
50
- return 'Skill Claim';
51
- }
52
- return 'Verifiable Credential';
53
- }
54
- /**
55
- * The display title for a credential: DCW's type-specific prefixes first, then
56
- * the generic {@link credentialNameFrom} chain.
57
- *
58
- * @param credential {IVerifiableCredential}
59
- * @returns {string}
60
- */
61
- export function credentialName(credential) {
62
- const types = typeArray(credential.type);
63
- const subject = asRecord(getSubject(credential)) ?? {};
64
- if (types.includes('https://schema.org/RecommendationCredential')) {
65
- const name = asNonEmptyString(subject.name);
66
- return name ? `Recommendation From ${name}` : 'Recommendation Credential';
67
- }
68
- if (types.includes('PerformanceReviewCredential')) {
69
- const employeeName = asNonEmptyString(subject.employeeName);
70
- return employeeName
71
- ? `Performance Review: ${employeeName}`
72
- : 'Performance Review Credential';
73
- }
74
- if (types.includes('SkillClaimCredential')) {
75
- const [firstSkill] = skillsList(subject);
76
- const skillName = asNonEmptyString(firstSkill?.name);
77
- if (skillName) {
78
- return skillName;
79
- }
80
- // fall through to the generic chain (lands on 'Skill Claim')
81
- }
82
- if (isEmploymentCredential(credential)) {
83
- const fullName = asNonEmptyString(subject.fullName);
84
- const company = asNonEmptyString(subject.company);
85
- if (fullName && company) {
86
- return `Employment: ${fullName} @ ${company}`;
87
- }
88
- if (fullName) {
89
- return `Employment: ${fullName}`;
90
- }
91
- return 'Employment Credential';
92
- }
93
- if (isVolunteerCredential(credential)) {
94
- const fullName = asNonEmptyString(subject.fullName);
95
- const volunteerOrg = asNonEmptyString(subject.volunteerOrg);
96
- if (fullName && volunteerOrg) {
97
- return `Volunteer: ${fullName} @ ${volunteerOrg}`;
98
- }
99
- if (fullName) {
100
- return `Volunteer: ${fullName}`;
101
- }
102
- return 'Volunteer Credential';
103
- }
104
- return credentialNameFrom(credential, subject);
105
- }
106
- //# sourceMappingURL=credentialName.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentialName.js","sourceRoot":"","sources":["../../src/display/credentialName.ts"],"names":[],"mappings":"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"}
@@ -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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"}