@bifold/core 2.10.2 → 2.11.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 (266) hide show
  1. package/lib/commonjs/components/listItems/NotificationListItem.js +19 -11
  2. package/lib/commonjs/components/listItems/NotificationListItem.js.map +1 -1
  3. package/lib/commonjs/components/misc/CredentialCard.js +3 -1
  4. package/lib/commonjs/components/misc/CredentialCard.js.map +1 -1
  5. package/lib/commonjs/components/misc/CredentialCard10.js +13 -5
  6. package/lib/commonjs/components/misc/CredentialCard10.js.map +1 -1
  7. package/lib/commonjs/components/misc/CredentialCard11.js +25 -22
  8. package/lib/commonjs/components/misc/CredentialCard11.js.map +1 -1
  9. package/lib/commonjs/components/views/CredentialDetailPrimaryHeader.js +8 -7
  10. package/lib/commonjs/components/views/CredentialDetailPrimaryHeader.js.map +1 -1
  11. package/lib/commonjs/components/views/KeyboardView.js +19 -4
  12. package/lib/commonjs/components/views/KeyboardView.js.map +1 -1
  13. package/lib/commonjs/constants.js +1 -0
  14. package/lib/commonjs/constants.js.map +1 -1
  15. package/lib/commonjs/container-api.js +3 -1
  16. package/lib/commonjs/container-api.js.map +1 -1
  17. package/lib/commonjs/container-impl.js +16 -0
  18. package/lib/commonjs/container-impl.js.map +1 -1
  19. package/lib/commonjs/hooks/notifications.js +4 -2
  20. package/lib/commonjs/hooks/notifications.js.map +1 -1
  21. package/lib/commonjs/hooks/useBifoldAgentSetup.js +5 -3
  22. package/lib/commonjs/hooks/useBifoldAgentSetup.js.map +1 -1
  23. package/lib/commonjs/index.js +16 -0
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/commonjs/localization/en/en.json +8 -1
  26. package/lib/commonjs/localization/fr/fr.json +8 -1
  27. package/lib/commonjs/localization/pt-br/pt-br.json +8 -1
  28. package/lib/commonjs/modules/openid/components/OpenIDCredentialCard.js +41 -1
  29. package/lib/commonjs/modules/openid/components/OpenIDCredentialCard.js.map +1 -1
  30. package/lib/commonjs/modules/openid/context/OpenIDCredentialRecordProvider.js +34 -111
  31. package/lib/commonjs/modules/openid/context/OpenIDCredentialRecordProvider.js.map +1 -1
  32. package/lib/commonjs/modules/openid/hooks/openid.js +38 -6
  33. package/lib/commonjs/modules/openid/hooks/openid.js.map +1 -1
  34. package/lib/commonjs/modules/openid/hooks/useAcceptReplacement.js +82 -0
  35. package/lib/commonjs/modules/openid/hooks/useAcceptReplacement.js.map +1 -0
  36. package/lib/commonjs/modules/openid/hooks/useCredentialErrorsFromRegistry.js +60 -0
  37. package/lib/commonjs/modules/openid/hooks/useCredentialErrorsFromRegistry.js.map +1 -0
  38. package/lib/commonjs/modules/openid/hooks/useDeclineReplacement.js +84 -0
  39. package/lib/commonjs/modules/openid/hooks/useDeclineReplacement.js.map +1 -0
  40. package/lib/commonjs/modules/openid/hooks/useOpenIdReplacementNavigation.js +55 -0
  41. package/lib/commonjs/modules/openid/hooks/useOpenIdReplacementNavigation.js.map +1 -0
  42. package/lib/commonjs/modules/openid/hooks/useReplacementNotifications.js +82 -0
  43. package/lib/commonjs/modules/openid/hooks/useReplacementNotifications.js.map +1 -0
  44. package/lib/commonjs/modules/openid/metadata.js +60 -1
  45. package/lib/commonjs/modules/openid/metadata.js.map +1 -1
  46. package/lib/commonjs/modules/openid/notification.js +42 -0
  47. package/lib/commonjs/modules/openid/notification.js.map +1 -0
  48. package/lib/commonjs/modules/openid/offerResolve.js +6 -0
  49. package/lib/commonjs/modules/openid/offerResolve.js.map +1 -1
  50. package/lib/commonjs/modules/openid/refresh/reIssuance.js +95 -0
  51. package/lib/commonjs/modules/openid/refresh/reIssuance.js.map +1 -0
  52. package/lib/commonjs/modules/openid/refresh/refreshOrchestrator.js +265 -0
  53. package/lib/commonjs/modules/openid/refresh/refreshOrchestrator.js.map +1 -0
  54. package/lib/commonjs/modules/openid/refresh/refreshToken.js +78 -0
  55. package/lib/commonjs/modules/openid/refresh/refreshToken.js.map +1 -0
  56. package/lib/commonjs/modules/openid/refresh/registery.js +143 -0
  57. package/lib/commonjs/modules/openid/refresh/registery.js.map +1 -0
  58. package/lib/commonjs/modules/openid/refresh/types.js +17 -0
  59. package/lib/commonjs/modules/openid/refresh/types.js.map +1 -0
  60. package/lib/commonjs/modules/openid/refresh/verifyCredentialStatus.js +34 -0
  61. package/lib/commonjs/modules/openid/refresh/verifyCredentialStatus.js.map +1 -0
  62. package/lib/commonjs/modules/openid/screens/OpenIDCredentialOffer.js +39 -2
  63. package/lib/commonjs/modules/openid/screens/OpenIDCredentialOffer.js.map +1 -1
  64. package/lib/commonjs/modules/openid/utils/utils.js +66 -0
  65. package/lib/commonjs/modules/openid/utils/utils.js.map +1 -1
  66. package/lib/commonjs/screens/CredentialDetails.js +28 -6
  67. package/lib/commonjs/screens/CredentialDetails.js.map +1 -1
  68. package/lib/commonjs/screens/CredentialOffer.js +6 -9
  69. package/lib/commonjs/screens/CredentialOffer.js.map +1 -1
  70. package/lib/commonjs/screens/CredentialOfferAccept.js +18 -2
  71. package/lib/commonjs/screens/CredentialOfferAccept.js.map +1 -1
  72. package/lib/commonjs/screens/Developer.js +26 -0
  73. package/lib/commonjs/screens/Developer.js.map +1 -1
  74. package/lib/commonjs/screens/Home.js +39 -1
  75. package/lib/commonjs/screens/Home.js.map +1 -1
  76. package/lib/commonjs/screens/ListCredentials.js +2 -2
  77. package/lib/commonjs/screens/ListCredentials.js.map +1 -1
  78. package/lib/commonjs/screens/ProofChangeCredential.js +3 -3
  79. package/lib/commonjs/screens/ProofChangeCredential.js.map +1 -1
  80. package/lib/commonjs/screens/ProofRequest.js +4 -4
  81. package/lib/commonjs/screens/ProofRequest.js.map +1 -1
  82. package/lib/commonjs/services/AgentBridge.js +90 -0
  83. package/lib/commonjs/services/AgentBridge.js.map +1 -0
  84. package/lib/commonjs/types/credentials.js +9 -0
  85. package/lib/commonjs/types/credentials.js.map +1 -1
  86. package/lib/commonjs/utils/agent.js +1 -1
  87. package/lib/commonjs/utils/agent.js.map +1 -1
  88. package/lib/commonjs/utils/cred-def.js +50 -43
  89. package/lib/commonjs/utils/cred-def.js.map +1 -1
  90. package/lib/commonjs/utils/credential.js +217 -1
  91. package/lib/commonjs/utils/credential.js.map +1 -1
  92. package/lib/commonjs/utils/helpers.js +83 -22
  93. package/lib/commonjs/utils/helpers.js.map +1 -1
  94. package/lib/module/components/listItems/NotificationListItem.js +19 -11
  95. package/lib/module/components/listItems/NotificationListItem.js.map +1 -1
  96. package/lib/module/components/misc/CredentialCard.js +3 -1
  97. package/lib/module/components/misc/CredentialCard.js.map +1 -1
  98. package/lib/module/components/misc/CredentialCard10.js +14 -6
  99. package/lib/module/components/misc/CredentialCard10.js.map +1 -1
  100. package/lib/module/components/misc/CredentialCard11.js +17 -14
  101. package/lib/module/components/misc/CredentialCard11.js.map +1 -1
  102. package/lib/module/components/views/CredentialDetailPrimaryHeader.js +9 -8
  103. package/lib/module/components/views/CredentialDetailPrimaryHeader.js.map +1 -1
  104. package/lib/module/components/views/KeyboardView.js +19 -4
  105. package/lib/module/components/views/KeyboardView.js.map +1 -1
  106. package/lib/module/constants.js +1 -0
  107. package/lib/module/constants.js.map +1 -1
  108. package/lib/module/container-api.js +3 -1
  109. package/lib/module/container-api.js.map +1 -1
  110. package/lib/module/container-impl.js +16 -0
  111. package/lib/module/container-impl.js.map +1 -1
  112. package/lib/module/hooks/notifications.js +4 -2
  113. package/lib/module/hooks/notifications.js.map +1 -1
  114. package/lib/module/hooks/useBifoldAgentSetup.js +5 -3
  115. package/lib/module/hooks/useBifoldAgentSetup.js.map +1 -1
  116. package/lib/module/index.js +3 -1
  117. package/lib/module/index.js.map +1 -1
  118. package/lib/module/localization/en/en.json +8 -1
  119. package/lib/module/localization/fr/fr.json +8 -1
  120. package/lib/module/localization/pt-br/pt-br.json +8 -1
  121. package/lib/module/modules/openid/components/OpenIDCredentialCard.js +41 -1
  122. package/lib/module/modules/openid/components/OpenIDCredentialCard.js.map +1 -1
  123. package/lib/module/modules/openid/context/OpenIDCredentialRecordProvider.js +34 -111
  124. package/lib/module/modules/openid/context/OpenIDCredentialRecordProvider.js.map +1 -1
  125. package/lib/module/modules/openid/hooks/openid.js +38 -5
  126. package/lib/module/modules/openid/hooks/openid.js.map +1 -1
  127. package/lib/module/modules/openid/hooks/useAcceptReplacement.js +76 -0
  128. package/lib/module/modules/openid/hooks/useAcceptReplacement.js.map +1 -0
  129. package/lib/module/modules/openid/hooks/useCredentialErrorsFromRegistry.js +54 -0
  130. package/lib/module/modules/openid/hooks/useCredentialErrorsFromRegistry.js.map +1 -0
  131. package/lib/module/modules/openid/hooks/useDeclineReplacement.js +77 -0
  132. package/lib/module/modules/openid/hooks/useDeclineReplacement.js.map +1 -0
  133. package/lib/module/modules/openid/hooks/useOpenIdReplacementNavigation.js +47 -0
  134. package/lib/module/modules/openid/hooks/useOpenIdReplacementNavigation.js.map +1 -0
  135. package/lib/module/modules/openid/hooks/useReplacementNotifications.js +75 -0
  136. package/lib/module/modules/openid/hooks/useReplacementNotifications.js.map +1 -0
  137. package/lib/module/modules/openid/metadata.js +52 -1
  138. package/lib/module/modules/openid/metadata.js.map +1 -1
  139. package/lib/module/modules/openid/notification.js +38 -0
  140. package/lib/module/modules/openid/notification.js.map +1 -0
  141. package/lib/module/modules/openid/offerResolve.js +7 -1
  142. package/lib/module/modules/openid/offerResolve.js.map +1 -1
  143. package/lib/module/modules/openid/refresh/reIssuance.js +89 -0
  144. package/lib/module/modules/openid/refresh/reIssuance.js.map +1 -0
  145. package/lib/module/modules/openid/refresh/refreshOrchestrator.js +257 -0
  146. package/lib/module/modules/openid/refresh/refreshOrchestrator.js.map +1 -0
  147. package/lib/module/modules/openid/refresh/refreshToken.js +72 -0
  148. package/lib/module/modules/openid/refresh/refreshToken.js.map +1 -0
  149. package/lib/module/modules/openid/refresh/registery.js +135 -0
  150. package/lib/module/modules/openid/refresh/registery.js.map +1 -0
  151. package/lib/module/modules/openid/refresh/types.js +11 -0
  152. package/lib/module/modules/openid/refresh/types.js.map +1 -0
  153. package/lib/module/modules/openid/refresh/verifyCredentialStatus.js +28 -0
  154. package/lib/module/modules/openid/refresh/verifyCredentialStatus.js.map +1 -0
  155. package/lib/module/modules/openid/screens/OpenIDCredentialOffer.js +39 -2
  156. package/lib/module/modules/openid/screens/OpenIDCredentialOffer.js.map +1 -1
  157. package/lib/module/modules/openid/utils/utils.js +64 -1
  158. package/lib/module/modules/openid/utils/utils.js.map +1 -1
  159. package/lib/module/screens/CredentialDetails.js +29 -7
  160. package/lib/module/screens/CredentialDetails.js.map +1 -1
  161. package/lib/module/screens/CredentialOffer.js +7 -10
  162. package/lib/module/screens/CredentialOffer.js.map +1 -1
  163. package/lib/module/screens/CredentialOfferAccept.js +19 -3
  164. package/lib/module/screens/CredentialOfferAccept.js.map +1 -1
  165. package/lib/module/screens/Developer.js +27 -1
  166. package/lib/module/screens/Developer.js.map +1 -1
  167. package/lib/module/screens/Home.js +41 -3
  168. package/lib/module/screens/Home.js.map +1 -1
  169. package/lib/module/screens/ListCredentials.js +1 -1
  170. package/lib/module/screens/ListCredentials.js.map +1 -1
  171. package/lib/module/screens/ProofChangeCredential.js +1 -1
  172. package/lib/module/screens/ProofChangeCredential.js.map +1 -1
  173. package/lib/module/screens/ProofRequest.js +1 -1
  174. package/lib/module/screens/ProofRequest.js.map +1 -1
  175. package/lib/module/services/AgentBridge.js +83 -0
  176. package/lib/module/services/AgentBridge.js.map +1 -0
  177. package/lib/module/types/credentials.js +8 -1
  178. package/lib/module/types/credentials.js.map +1 -1
  179. package/lib/module/utils/agent.js +2 -2
  180. package/lib/module/utils/agent.js.map +1 -1
  181. package/lib/module/utils/cred-def.js +46 -43
  182. package/lib/module/utils/cred-def.js.map +1 -1
  183. package/lib/module/utils/credential.js +210 -0
  184. package/lib/module/utils/credential.js.map +1 -1
  185. package/lib/module/utils/helpers.js +80 -22
  186. package/lib/module/utils/helpers.js.map +1 -1
  187. package/lib/typescript/src/components/listItems/NotificationListItem.d.ts.map +1 -1
  188. package/lib/typescript/src/components/misc/CredentialCard.d.ts +1 -2
  189. package/lib/typescript/src/components/misc/CredentialCard.d.ts.map +1 -1
  190. package/lib/typescript/src/components/misc/CredentialCard10.d.ts.map +1 -1
  191. package/lib/typescript/src/components/misc/CredentialCard11.d.ts +1 -5
  192. package/lib/typescript/src/components/misc/CredentialCard11.d.ts.map +1 -1
  193. package/lib/typescript/src/components/views/CredentialDetailPrimaryHeader.d.ts.map +1 -1
  194. package/lib/typescript/src/components/views/KeyboardView.d.ts +14 -0
  195. package/lib/typescript/src/components/views/KeyboardView.d.ts.map +1 -1
  196. package/lib/typescript/src/constants.d.ts +2 -1
  197. package/lib/typescript/src/constants.d.ts.map +1 -1
  198. package/lib/typescript/src/container-api.d.ts +8 -0
  199. package/lib/typescript/src/container-api.d.ts.map +1 -1
  200. package/lib/typescript/src/container-impl.d.ts +2 -0
  201. package/lib/typescript/src/container-impl.d.ts.map +1 -1
  202. package/lib/typescript/src/hooks/notifications.d.ts +2 -1
  203. package/lib/typescript/src/hooks/notifications.d.ts.map +1 -1
  204. package/lib/typescript/src/hooks/useBifoldAgentSetup.d.ts.map +1 -1
  205. package/lib/typescript/src/index.d.ts +4 -1
  206. package/lib/typescript/src/index.d.ts.map +1 -1
  207. package/lib/typescript/src/modules/openid/components/OpenIDCredentialCard.d.ts.map +1 -1
  208. package/lib/typescript/src/modules/openid/context/OpenIDCredentialRecordProvider.d.ts +1 -2
  209. package/lib/typescript/src/modules/openid/context/OpenIDCredentialRecordProvider.d.ts.map +1 -1
  210. package/lib/typescript/src/modules/openid/hooks/openid.d.ts.map +1 -1
  211. package/lib/typescript/src/modules/openid/hooks/useAcceptReplacement.d.ts +11 -0
  212. package/lib/typescript/src/modules/openid/hooks/useAcceptReplacement.d.ts.map +1 -0
  213. package/lib/typescript/src/modules/openid/hooks/useCredentialErrorsFromRegistry.d.ts +9 -0
  214. package/lib/typescript/src/modules/openid/hooks/useCredentialErrorsFromRegistry.d.ts.map +1 -0
  215. package/lib/typescript/src/modules/openid/hooks/useDeclineReplacement.d.ts +16 -0
  216. package/lib/typescript/src/modules/openid/hooks/useDeclineReplacement.d.ts.map +1 -0
  217. package/lib/typescript/src/modules/openid/hooks/useOpenIdReplacementNavigation.d.ts +8 -0
  218. package/lib/typescript/src/modules/openid/hooks/useOpenIdReplacementNavigation.d.ts.map +1 -0
  219. package/lib/typescript/src/modules/openid/hooks/useReplacementNotifications.d.ts +6 -0
  220. package/lib/typescript/src/modules/openid/hooks/useReplacementNotifications.d.ts.map +1 -0
  221. package/lib/typescript/src/modules/openid/metadata.d.ts +27 -2
  222. package/lib/typescript/src/modules/openid/metadata.d.ts.map +1 -1
  223. package/lib/typescript/src/modules/openid/notification.d.ts +16 -0
  224. package/lib/typescript/src/modules/openid/notification.d.ts.map +1 -0
  225. package/lib/typescript/src/modules/openid/offerResolve.d.ts.map +1 -1
  226. package/lib/typescript/src/modules/openid/refresh/reIssuance.d.ts +19 -0
  227. package/lib/typescript/src/modules/openid/refresh/reIssuance.d.ts.map +1 -0
  228. package/lib/typescript/src/modules/openid/refresh/refreshOrchestrator.d.ts +25 -0
  229. package/lib/typescript/src/modules/openid/refresh/refreshOrchestrator.d.ts.map +1 -0
  230. package/lib/typescript/src/modules/openid/refresh/refreshToken.d.ts +9 -0
  231. package/lib/typescript/src/modules/openid/refresh/refreshToken.d.ts.map +1 -0
  232. package/lib/typescript/src/modules/openid/refresh/registery.d.ts +55 -0
  233. package/lib/typescript/src/modules/openid/refresh/registery.d.ts.map +1 -0
  234. package/lib/typescript/src/modules/openid/refresh/types.d.ts +59 -0
  235. package/lib/typescript/src/modules/openid/refresh/types.d.ts.map +1 -0
  236. package/lib/typescript/src/modules/openid/refresh/verifyCredentialStatus.d.ts +11 -0
  237. package/lib/typescript/src/modules/openid/refresh/verifyCredentialStatus.d.ts.map +1 -0
  238. package/lib/typescript/src/modules/openid/screens/OpenIDCredentialOffer.d.ts.map +1 -1
  239. package/lib/typescript/src/modules/openid/utils/utils.d.ts +4 -0
  240. package/lib/typescript/src/modules/openid/utils/utils.d.ts.map +1 -1
  241. package/lib/typescript/src/screens/CredentialDetails.d.ts.map +1 -1
  242. package/lib/typescript/src/screens/CredentialOffer.d.ts.map +1 -1
  243. package/lib/typescript/src/screens/CredentialOfferAccept.d.ts.map +1 -1
  244. package/lib/typescript/src/screens/Developer.d.ts.map +1 -1
  245. package/lib/typescript/src/screens/Home.d.ts.map +1 -1
  246. package/lib/typescript/src/screens/ListCredentials.d.ts.map +1 -1
  247. package/lib/typescript/src/services/AgentBridge.d.ts +31 -0
  248. package/lib/typescript/src/services/AgentBridge.d.ts.map +1 -0
  249. package/lib/typescript/src/types/credentials.d.ts +5 -0
  250. package/lib/typescript/src/types/credentials.d.ts.map +1 -1
  251. package/lib/typescript/src/types/notification.d.ts +4 -0
  252. package/lib/typescript/src/types/notification.d.ts.map +1 -1
  253. package/lib/typescript/src/utils/agent.d.ts.map +1 -1
  254. package/lib/typescript/src/utils/cred-def.d.ts +8 -3
  255. package/lib/typescript/src/utils/cred-def.d.ts.map +1 -1
  256. package/lib/typescript/src/utils/credential.d.ts +36 -0
  257. package/lib/typescript/src/utils/credential.d.ts.map +1 -1
  258. package/lib/typescript/src/utils/helpers.d.ts +5 -1
  259. package/lib/typescript/src/utils/helpers.d.ts.map +1 -1
  260. package/package.json +10 -4
  261. package/lib/commonjs/modules/openid/refresh/refreshMetadata.js +0 -25
  262. package/lib/commonjs/modules/openid/refresh/refreshMetadata.js.map +0 -1
  263. package/lib/module/modules/openid/refresh/refreshMetadata.js +0 -18
  264. package/lib/module/modules/openid/refresh/refreshMetadata.js.map +0 -1
  265. package/lib/typescript/src/modules/openid/refresh/refreshMetadata.d.ts +0 -20
  266. package/lib/typescript/src/modules/openid/refresh/refreshMetadata.d.ts.map +0 -1
@@ -12,7 +12,9 @@ var _constants = require("../../../constants");
12
12
  var _error = require("../../../types/error");
13
13
  var _offerResolve = require("../offerResolve");
14
14
  var _resolverProof = require("../resolverProof");
15
- var _refreshMetadata = require("../refresh/refreshMetadata");
15
+ var _utils = require("../utils/utils");
16
+ var _metadata = require("../metadata");
17
+ var _types = require("../refresh/types");
16
18
  const useOpenID = ({
17
19
  openIDUri,
18
20
  openIDPresentationUri
@@ -29,31 +31,61 @@ const useOpenID = ({
29
31
  return;
30
32
  }
31
33
  try {
32
- var _resolvedCredentialOf;
34
+ var _getCredentialConfigu;
33
35
  const resolvedCredentialOffer = await (0, _offerResolve.resolveOpenId4VciOffer)({
34
36
  agent: agent,
35
37
  uri: uri
36
38
  });
37
- const authServer = (_resolvedCredentialOf = resolvedCredentialOffer.metadata.credentialIssuerMetadata.authorization_servers) === null || _resolvedCredentialOf === void 0 ? void 0 : _resolvedCredentialOf[0];
39
+ const authServers = resolvedCredentialOffer.metadata.credentialIssuerMetadata.authorization_servers;
40
+ // const authServer = authServers?.[0]
41
+ const credentialIssuer = resolvedCredentialOffer.metadata.issuer;
42
+ const authServer = credentialIssuer;
43
+ const configID = (_getCredentialConfigu = (0, _utils.getCredentialConfigurationIds)(resolvedCredentialOffer)) === null || _getCredentialConfigu === void 0 ? void 0 : _getCredentialConfigu[0];
44
+ const tokenEndpoint = resolvedCredentialOffer.metadata.token_endpoint;
45
+ const issuerMetadata = resolvedCredentialOffer.metadata.credentialIssuerMetadata;
46
+ const credentialEndpoint = resolvedCredentialOffer.metadata.credential_endpoint;
47
+ if (!configID) {
48
+ throw new Error('No credential configuration ID found in the credential offer metadata');
49
+ }
50
+ if (!authServer) {
51
+ throw new Error('No authorization server found in the credential offer metadata');
52
+ }
53
+ if (!credentialIssuer) {
54
+ throw new Error('No credential issuer found in the credential offer metadata');
55
+ }
38
56
  const tokenResponse = await (0, _offerResolve.acquirePreAuthorizedAccessToken)({
39
57
  agent,
40
58
  resolvedCredentialOffer
41
59
  });
42
60
  const refreshToken = tokenResponse.refreshToken;
61
+ _metadata.temporaryMetaVanillaObject.tokenResponse = tokenResponse;
43
62
  const credential = await (0, _offerResolve.receiveCredentialFromOpenId4VciOffer)({
44
63
  agent,
45
64
  resolvedCredentialOffer,
46
65
  tokenResponse: tokenResponse
47
66
  });
48
67
  if (refreshToken && authServer) {
49
- (0, _refreshMetadata.setRefreshCredentialMetadata)(credential, {
68
+ (0, _metadata.setRefreshCredentialMetadata)(credential, {
50
69
  authServer: authServer,
51
- refreshToken: refreshToken
70
+ tokenEndpoint: tokenEndpoint,
71
+ refreshToken: refreshToken,
72
+ issuerMetadataCache: {
73
+ credential_issuer: credentialIssuer,
74
+ credential_endpoint: credentialEndpoint,
75
+ token_endpoint: tokenEndpoint,
76
+ authorization_servers: authServers,
77
+ credential_configurations_supported: issuerMetadata === null || issuerMetadata === void 0 ? void 0 : issuerMetadata.credential_configurations_supported
78
+ },
79
+ credentialIssuer: credentialIssuer,
80
+ credentialConfigurationId: configID,
81
+ lastCheckedAt: Date.now(),
82
+ lastCheckResult: _types.RefreshStatus.Valid,
83
+ attemptCount: 0,
84
+ resolvedCredentialOffer: resolvedCredentialOffer
52
85
  });
53
86
  }
54
87
  return credential;
55
88
  } catch (err) {
56
- //TODO: Sppecify different error
57
89
  const error = new _error.BifoldError(t('Error.Title1024'), t('Error.Message1024'), (err === null || err === void 0 ? void 0 : err.message) ?? err, 1043);
58
90
  _reactNative.DeviceEventEmitter.emit(_constants.EventTypes.ERROR_ADDED, error);
59
91
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactHooks","require","_react","_reactI18next","_reactNative","_constants","_error","_offerResolve","_resolverProof","_refreshMetadata","useOpenID","openIDUri","openIDPresentationUri","openIdRecord","setOpenIdRecord","useState","agent","useAgent","t","useTranslation","resolveOpenIDCredential","useCallback","uri","_resolvedCredentialOf","resolvedCredentialOffer","resolveOpenId4VciOffer","authServer","metadata","credentialIssuerMetadata","authorization_servers","tokenResponse","acquirePreAuthorizedAccessToken","refreshToken","credential","receiveCredentialFromOpenId4VciOffer","setRefreshCredentialMetadata","err","error","BifoldError","message","DeviceEventEmitter","emit","EventTypes","ERROR_ADDED","resolveOpenIDPresentationRequest","record","getCredentialsForProofRequest","useEffect","then","value","exports"],"sourceRoot":"../../../../../src","sources":["modules/openid/hooks/openid.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactHooks","require","_react","_reactI18next","_reactNative","_constants","_error","_offerResolve","_resolverProof","_utils","_metadata","_types","useOpenID","openIDUri","openIDPresentationUri","openIdRecord","setOpenIdRecord","useState","agent","useAgent","t","useTranslation","resolveOpenIDCredential","useCallback","uri","_getCredentialConfigu","resolvedCredentialOffer","resolveOpenId4VciOffer","authServers","metadata","credentialIssuerMetadata","authorization_servers","credentialIssuer","issuer","authServer","configID","getCredentialConfigurationIds","tokenEndpoint","token_endpoint","issuerMetadata","credentialEndpoint","credential_endpoint","Error","tokenResponse","acquirePreAuthorizedAccessToken","refreshToken","temporaryMetaVanillaObject","credential","receiveCredentialFromOpenId4VciOffer","setRefreshCredentialMetadata","issuerMetadataCache","credential_issuer","credential_configurations_supported","credentialConfigurationId","lastCheckedAt","Date","now","lastCheckResult","RefreshStatus","Valid","attemptCount","err","error","BifoldError","message","DeviceEventEmitter","emit","EventTypes","ERROR_ADDED","resolveOpenIDPresentationRequest","record","getCredentialsForProofRequest","useEffect","then","value","exports"],"sourceRoot":"../../../../../src","sources":["modules/openid/hooks/openid.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useAcceptReplacement = useAcceptReplacement;
7
+ var _react = require("react");
8
+ var _containerApi = require("../../../container-api");
9
+ var _OpenIDCredentialRecordProvider = require("../context/OpenIDCredentialRecordProvider");
10
+ var _registery = require("../refresh/registery");
11
+ var _types = require("../types");
12
+ // modules/openid/hooks/useAcceptReplacement.ts
13
+
14
+ const sleep = ms => new Promise(res => setTimeout(res, ms));
15
+ /**
16
+ * A hook that provides functions to accept newly issued credentials, handling replacements if applicable.
17
+ */
18
+
19
+ function useAcceptReplacement() {
20
+ const {
21
+ storeCredential,
22
+ removeCredential,
23
+ getW3CCredentialById,
24
+ getSdJwtCredentialById
25
+ } = (0, _OpenIDCredentialRecordProvider.useOpenIDCredentials)();
26
+ const [logger] = (0, _containerApi.useServices)([_containerApi.TOKENS.UTIL_LOGGER]);
27
+
28
+ /**
29
+ * Accept a newly issued credential:
30
+ * 1) store it
31
+ * 2) if it replaces an old one (per registry), fetch old via provider & delete it
32
+ * 3) update the registry (acceptReplacement)
33
+ */
34
+ const acceptNewCredential = (0, _react.useCallback)(async newCred => {
35
+ logger.info(`🟢 [useAcceptReplacement] accepting new credential → ${newCred.id}`);
36
+
37
+ // 1) persist new
38
+ await storeCredential(newCred);
39
+
40
+ // 2) check if it replaces an old credential
41
+ const oldId = (0, _registery.selectOldIdByReplacementId)(newCred.id);
42
+ if (!oldId) {
43
+ logger.info(`ℹ️ [useAcceptReplacement] no replacement mapping for ${newCred.id} — done`);
44
+ return;
45
+ }
46
+
47
+ // 3) fetch old via provider (always)
48
+ const oldRecord = await getSdJwtCredentialById(oldId);
49
+ if (!oldRecord) {
50
+ logger.warn(`⚠️ [useAcceptReplacement] old record ${oldId} not found — skipping delete`);
51
+ // still accept swap in registry to avoid stuck state
52
+ _registery.credentialRegistry.getState().acceptReplacement(oldId);
53
+ return;
54
+ }
55
+ await sleep(200);
56
+
57
+ // 4) delete old
58
+ await removeCredential(oldRecord, _types.OpenIDCredentialType.SdJwtVc);
59
+
60
+ // 5) finalize the swap in registry
61
+ _registery.credentialRegistry.getState().acceptReplacement(oldId);
62
+ logger.info(`✅ [useAcceptReplacement] replacement complete: old=${oldId} → new=${newCred.id}`);
63
+ }, [storeCredential, removeCredential, getSdJwtCredentialById, logger]);
64
+
65
+ /**
66
+ * Convenience: accept by new credential id (fetch via provider first).
67
+ * Useful if your screen only carries the new id.
68
+ */
69
+ const acceptById = (0, _react.useCallback)(async newId => {
70
+ // try W3C first, then Sd-JWT
71
+ const newW3c = await getW3CCredentialById(newId);
72
+ const newSd = newW3c ? undefined : await getSdJwtCredentialById(newId);
73
+ const rec = newW3c ?? newSd;
74
+ if (!rec) throw new Error(`New credential not found for id=${newId}`);
75
+ await acceptNewCredential(rec);
76
+ }, [getW3CCredentialById, getSdJwtCredentialById, acceptNewCredential]);
77
+ return {
78
+ acceptNewCredential,
79
+ acceptById
80
+ };
81
+ }
82
+ //# sourceMappingURL=useAcceptReplacement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_containerApi","_OpenIDCredentialRecordProvider","_registery","_types","sleep","ms","Promise","res","setTimeout","useAcceptReplacement","storeCredential","removeCredential","getW3CCredentialById","getSdJwtCredentialById","useOpenIDCredentials","logger","useServices","TOKENS","UTIL_LOGGER","acceptNewCredential","useCallback","newCred","info","id","oldId","selectOldIdByReplacementId","oldRecord","warn","credentialRegistry","getState","acceptReplacement","OpenIDCredentialType","SdJwtVc","acceptById","newId","newW3c","newSd","undefined","rec","Error"],"sourceRoot":"../../../../../src","sources":["modules/openid/hooks/useAcceptReplacement.ts"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,+BAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AANA;;AAUA,MAAMK,KAAK,GAAIC,EAAU,IAAK,IAAIC,OAAO,CAAQC,GAAG,IAAKC,UAAU,CAACD,GAAG,EAAEF,EAAE,CAAC,CAAC;AAC7E;AACA;AACA;;AAEO,SAASI,oBAAoBA,CAAA,EAAG;EACrC,MAAM;IAAEC,eAAe;IAAEC,gBAAgB;IAAEC,oBAAoB;IAAEC;EAAuB,CAAC,GAAG,IAAAC,oDAAoB,EAAC,CAAC;EAClH,MAAM,CAACC,MAAM,CAAC,GAAG,IAAAC,yBAAW,EAAC,CAACC,oBAAM,CAACC,WAAW,CAAC,CAAC;;EAElD;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,mBAAmB,GAAG,IAAAC,kBAAW,EACrC,MAAOC,OAAgB,IAAK;IAC1BN,MAAM,CAACO,IAAI,CAAC,wDAAwDD,OAAO,CAACE,EAAE,EAAE,CAAC;;IAEjF;IACA,MAAMb,eAAe,CAACW,OAAO,CAAC;;IAE9B;IACA,MAAMG,KAAK,GAAG,IAAAC,qCAA0B,EAACJ,OAAO,CAACE,EAAE,CAAC;IACpD,IAAI,CAACC,KAAK,EAAE;MACVT,MAAM,CAACO,IAAI,CAAC,wDAAwDD,OAAO,CAACE,EAAE,SAAS,CAAC;MACxF;IACF;;IAEA;IACA,MAAMG,SAAS,GAAG,MAAMb,sBAAsB,CAACW,KAAK,CAAC;IAErD,IAAI,CAACE,SAAS,EAAE;MACdX,MAAM,CAACY,IAAI,CAAC,wCAAwCH,KAAK,8BAA8B,CAAC;MACxF;MACAI,6BAAkB,CAACC,QAAQ,CAAC,CAAC,CAACC,iBAAiB,CAACN,KAAK,CAAC;MACtD;IACF;IAEA,MAAMpB,KAAK,CAAC,GAAG,CAAC;;IAEhB;IACA,MAAMO,gBAAgB,CAACe,SAAS,EAAEK,2BAAoB,CAACC,OAAO,CAAC;;IAE/D;IACAJ,6BAAkB,CAACC,QAAQ,CAAC,CAAC,CAACC,iBAAiB,CAACN,KAAK,CAAC;IAEtDT,MAAM,CAACO,IAAI,CAAC,sDAAsDE,KAAK,UAAUH,OAAO,CAACE,EAAE,EAAE,CAAC;EAChG,CAAC,EACD,CAACb,eAAe,EAAEC,gBAAgB,EAAEE,sBAAsB,EAAEE,MAAM,CACpE,CAAC;;EAED;AACF;AACA;AACA;EACE,MAAMkB,UAAU,GAAG,IAAAb,kBAAW,EAC5B,MAAOc,KAAa,IAAK;IACvB;IACA,MAAMC,MAAM,GAAG,MAAMvB,oBAAoB,CAACsB,KAAK,CAAC;IAChD,MAAME,KAAK,GAAGD,MAAM,GAAGE,SAAS,GAAG,MAAMxB,sBAAsB,CAACqB,KAAK,CAAC;IACtE,MAAMI,GAAG,GAAIH,MAAM,IAAIC,KAA6B;IACpD,IAAI,CAACE,GAAG,EAAE,MAAM,IAAIC,KAAK,CAAC,mCAAmCL,KAAK,EAAE,CAAC;IACrE,MAAMf,mBAAmB,CAACmB,GAAG,CAAC;EAChC,CAAC,EACD,CAAC1B,oBAAoB,EAAEC,sBAAsB,EAAEM,mBAAmB,CACpE,CAAC;EAED,OAAO;IAAEA,mBAAmB;IAAEc;EAAW,CAAC;AAC5C","ignoreList":[]}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useCredentialErrorsFromRegistry = useCredentialErrorsFromRegistry;
7
+ var _react = require("react");
8
+ var _registery = require("../refresh/registery");
9
+ var _metadata = require("../metadata");
10
+ var _types = require("../refresh/types");
11
+ var _credentials = require("../../../types/credentials");
12
+ var _core = require("@credo-ts/core");
13
+ // hooks/useCredentialErrorsFromRegistry.ts
14
+
15
+ /**
16
+ * Computes the UI error list for a credential by:
17
+ * 1) Checking the in-memory registry (live session truth)
18
+ * 2) Falling back to persisted refresh metadata (after app restart)
19
+ * You can merge with any existing `propErrors` provided by the caller.
20
+ */
21
+ function useCredentialErrorsFromRegistry(credential, propErrors) {
22
+ const id = credential === null || credential === void 0 ? void 0 : credential.id;
23
+ const [isInvalidByRegistry, setIsInvalidByRegistry] = (0, _react.useState)(false);
24
+
25
+ // Subscribe to registry changes and keep a boolean for this credential
26
+ (0, _react.useEffect)(() => {
27
+ if (!id) return;
28
+
29
+ // Immediate read
30
+ const s = _registery.credentialRegistry.getState();
31
+ setIsInvalidByRegistry(s.expired.includes(id));
32
+
33
+ // Subscribe to changes
34
+ const unsub = _registery.credentialRegistry.subscribe(next => {
35
+ const flagged = next.expired.includes(id);
36
+ setIsInvalidByRegistry(flagged);
37
+ });
38
+ return unsub;
39
+ }, [id]);
40
+
41
+ // Fallback: metadata (covers case after restart when registry is empty)
42
+ const isInvalidByMetadata = (0, _react.useMemo)(() => {
43
+ if (!(credential instanceof _core.W3cCredentialRecord || credential instanceof _core.SdJwtVcRecord || credential instanceof _core.MdocRecord)) {
44
+ return;
45
+ }
46
+ if (!credential) return false;
47
+ const meta = (0, _metadata.getRefreshCredentialMetadata)(credential);
48
+ return (meta === null || meta === void 0 ? void 0 : meta.lastCheckResult) === _types.RefreshStatus.Invalid;
49
+ }, [credential]);
50
+
51
+ // Merge: propErrors + derived “invalid” → map to existing enum (Revoked)
52
+ const merged = (0, _react.useMemo)(() => {
53
+ const base = Array.isArray(propErrors) ? [...propErrors] : [];
54
+ const withoutRevoked = base.filter(e => e !== _credentials.CredentialErrors.Revoked);
55
+ const shouldMarkInvalid = isInvalidByRegistry || isInvalidByMetadata;
56
+ return shouldMarkInvalid ? [...withoutRevoked, _credentials.CredentialErrors.Revoked] : withoutRevoked;
57
+ }, [propErrors, isInvalidByRegistry, isInvalidByMetadata]);
58
+ return merged;
59
+ }
60
+ //# sourceMappingURL=useCredentialErrorsFromRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_registery","_metadata","_types","_credentials","_core","useCredentialErrorsFromRegistry","credential","propErrors","id","isInvalidByRegistry","setIsInvalidByRegistry","useState","useEffect","s","credentialRegistry","getState","expired","includes","unsub","subscribe","next","flagged","isInvalidByMetadata","useMemo","W3cCredentialRecord","SdJwtVcRecord","MdocRecord","meta","getRefreshCredentialMetadata","lastCheckResult","RefreshStatus","Invalid","merged","base","Array","isArray","withoutRevoked","filter","e","CredentialErrors","Revoked","shouldMarkInvalid"],"sourceRoot":"../../../../../src","sources":["modules/openid/hooks/useCredentialErrorsFromRegistry.ts"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AANA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACO,SAASM,+BAA+BA,CAC7CC,UAAuD,EACvDC,UAA+B,EAC/B;EACA,MAAMC,EAAE,GAAGF,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEE,EAAE;EACzB,MAAM,CAACC,mBAAmB,EAAEC,sBAAsB,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;;EAErE;EACA,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACJ,EAAE,EAAE;;IAET;IACA,MAAMK,CAAC,GAAGC,6BAAkB,CAACC,QAAQ,CAAC,CAAC;IACvCL,sBAAsB,CAACG,CAAC,CAACG,OAAO,CAACC,QAAQ,CAACT,EAAE,CAAC,CAAC;;IAE9C;IACA,MAAMU,KAAK,GAAGJ,6BAAkB,CAACK,SAAS,CAAEC,IAAmB,IAAK;MAClE,MAAMC,OAAO,GAAGD,IAAI,CAACJ,OAAO,CAACC,QAAQ,CAACT,EAAE,CAAC;MACzCE,sBAAsB,CAACW,OAAO,CAAC;IACjC,CAAC,CAAC;IAEF,OAAOH,KAAK;EACd,CAAC,EAAE,CAACV,EAAE,CAAC,CAAC;;EAER;EACA,MAAMc,mBAAmB,GAAG,IAAAC,cAAO,EAAC,MAAM;IACxC,IACE,EACEjB,UAAU,YAAYkB,yBAAmB,IACzClB,UAAU,YAAYmB,mBAAa,IACnCnB,UAAU,YAAYoB,gBAAU,CACjC,EACD;MACA;IACF;IACA,IAAI,CAACpB,UAAU,EAAE,OAAO,KAAK;IAC7B,MAAMqB,IAAI,GAAG,IAAAC,sCAA4B,EAACtB,UAAU,CAAC;IACrD,OAAO,CAAAqB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEE,eAAe,MAAKC,oBAAa,CAACC,OAAO;EACxD,CAAC,EAAE,CAACzB,UAAU,CAAC,CAAC;;EAEhB;EACA,MAAM0B,MAAM,GAAG,IAAAT,cAAO,EAAC,MAAM;IAC3B,MAAMU,IAAI,GAAGC,KAAK,CAACC,OAAO,CAAC5B,UAAU,CAAC,GAAG,CAAC,GAAGA,UAAU,CAAC,GAAG,EAAE;IAC7D,MAAM6B,cAAc,GAAGH,IAAI,CAACI,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAKC,6BAAgB,CAACC,OAAO,CAAC;IACzE,MAAMC,iBAAiB,GAAGhC,mBAAmB,IAAIa,mBAAmB;IACpE,OAAOmB,iBAAiB,GAAG,CAAC,GAAGL,cAAc,EAAEG,6BAAgB,CAACC,OAAO,CAAC,GAAGJ,cAAc;EAC3F,CAAC,EAAE,CAAC7B,UAAU,EAAEE,mBAAmB,EAAEa,mBAAmB,CAAC,CAAC;EAE1D,OAAOU,MAAM;AACf","ignoreList":[]}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useDeclineReplacement = useDeclineReplacement;
7
+ var _react = require("react");
8
+ var _registery = require("../refresh/registery");
9
+ // modules/openid/hooks/useDeclineReplacement.ts
10
+
11
+ function findOldIdByNewId(newId) {
12
+ const s = _registery.credentialRegistry.getState();
13
+ // replacements: { [oldId]: { id: newId, ... } }
14
+ for (const [oldId, lite] of Object.entries(s.replacements)) {
15
+ if ((lite === null || lite === void 0 ? void 0 : lite.id) === newId) return oldId;
16
+ }
17
+ return undefined;
18
+ }
19
+
20
+ /**
21
+ * Decline a replacement offer: clears the registry entry so the notification disappears.
22
+ * No repo operations (no save/delete) are performed.
23
+ */
24
+ function useDeclineReplacement(opts = {}) {
25
+ const {
26
+ logger
27
+ } = opts;
28
+
29
+ /**
30
+ * Decline by OLD credential id (kept for callers that know oldId)
31
+ */
32
+ const declineByOldId = (0, _react.useCallback)(async oldId => {
33
+ _registery.credentialRegistry.setState(prev => {
34
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
35
+ const {
36
+ [oldId]: _drop,
37
+ ...restRepl
38
+ } = prev.replacements;
39
+ return {
40
+ ...prev,
41
+ expired: prev.expired.filter(x => x !== oldId),
42
+ replacements: restRepl,
43
+ refreshing: Object.fromEntries(Object.entries(prev.refreshing).filter(([k]) => k !== oldId))
44
+ };
45
+ });
46
+ logger === null || logger === void 0 || logger.info(`🧹 [Decline] Cleared replacement notification for oldId=${oldId}`);
47
+ }, [logger]);
48
+
49
+ /**
50
+ * Decline by NEW credential id (use this from the Offer screen where you only know newId)
51
+ */
52
+ const declineByNewId = (0, _react.useCallback)(async newId => {
53
+ const oldId = findOldIdByNewId(newId);
54
+ if (!oldId) {
55
+ logger === null || logger === void 0 || logger.warn(`🧹 [Decline] No matching oldId found for newId=${newId}`);
56
+ return;
57
+ }
58
+ await declineByOldId(oldId);
59
+ }, [declineByOldId, logger]);
60
+
61
+ /**
62
+ * Helper: decline directly from a CustomNotification object
63
+ */
64
+ const declineFromNotification = (0, _react.useCallback)(async notif => {
65
+ var _notif$metadata, _notif$metadata2;
66
+ const oldId = notif === null || notif === void 0 || (_notif$metadata = notif.metadata) === null || _notif$metadata === void 0 ? void 0 : _notif$metadata.oldId;
67
+ if (oldId) {
68
+ await declineByOldId(oldId);
69
+ return;
70
+ }
71
+ const newId = notif === null || notif === void 0 || (_notif$metadata2 = notif.metadata) === null || _notif$metadata2 === void 0 ? void 0 : _notif$metadata2.replacementId;
72
+ if (newId) {
73
+ await declineByNewId(newId);
74
+ return;
75
+ }
76
+ logger === null || logger === void 0 || logger.warn(`🧹 [Decline] Missing oldId/newId in notification.metadata`);
77
+ }, [declineByOldId, declineByNewId, logger]);
78
+ return {
79
+ declineByOldId,
80
+ declineByNewId,
81
+ declineFromNotification
82
+ };
83
+ }
84
+ //# sourceMappingURL=useDeclineReplacement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_registery","findOldIdByNewId","newId","s","credentialRegistry","getState","oldId","lite","Object","entries","replacements","id","undefined","useDeclineReplacement","opts","logger","declineByOldId","useCallback","setState","prev","_drop","restRepl","expired","filter","x","refreshing","fromEntries","k","info","declineByNewId","warn","declineFromNotification","notif","_notif$metadata","_notif$metadata2","metadata","replacementId"],"sourceRoot":"../../../../../src","sources":["modules/openid/hooks/useDeclineReplacement.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useOpenIdReplacementNavigation = useOpenIdReplacementNavigation;
7
+ var _react = require("react");
8
+ var _native = require("@react-navigation/native");
9
+ var _reactNativeToastMessage = _interopRequireDefault(require("react-native-toast-message"));
10
+ var _containerApi = require("../../../container-api");
11
+ var _navigators = require("../../../types/navigators");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ // hooks/useOpenIdReplacementNavigation.ts
14
+
15
+ /**
16
+ * A hook that returns a function to open the OpenID Credential Offer screen for a replacement credential
17
+ */
18
+ function useOpenIdReplacementNavigation() {
19
+ const navigation = (0, _native.useNavigation)();
20
+ const [orchestrator] = (0, _containerApi.useServices)([_containerApi.TOKENS.UTIL_REFRESH_ORCHESTRATOR]);
21
+ const openReplacementOffer = (0, _react.useCallback)(notif => {
22
+ var _notif$metadata;
23
+ const replacementId = notif === null || notif === void 0 || (_notif$metadata = notif.metadata) === null || _notif$metadata === void 0 ? void 0 : _notif$metadata['replacementId'];
24
+ // const oldId = notif?.metadata?.['oldId'] as string | undefined
25
+
26
+ if (!replacementId) {
27
+ _reactNativeToastMessage.default.show({
28
+ type: 'error',
29
+ text1: 'Missing replacement',
30
+ text2: 'No replacementId in notification.'
31
+ });
32
+ return;
33
+ }
34
+
35
+ // Fetch the full record strictly from orchestrator’s in-memory cache
36
+ const full = orchestrator.resolveFull(replacementId);
37
+ if (!full) {
38
+ // Keep it dead simple: no repo lookups here
39
+ _reactNativeToastMessage.default.show({
40
+ type: 'info',
41
+ text1: 'Preparing credential',
42
+ text2: 'Please try again in a moment.'
43
+ });
44
+ return;
45
+ }
46
+ navigation.navigate(_navigators.Stacks.ConnectionStack, {
47
+ screen: _navigators.Screens.OpenIDCredentialOffer,
48
+ params: {
49
+ credential: full
50
+ }
51
+ });
52
+ }, [navigation, orchestrator]);
53
+ return openReplacementOffer;
54
+ }
55
+ //# sourceMappingURL=useOpenIdReplacementNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_native","_reactNativeToastMessage","_interopRequireDefault","_containerApi","_navigators","e","__esModule","default","useOpenIdReplacementNavigation","navigation","useNavigation","orchestrator","useServices","TOKENS","UTIL_REFRESH_ORCHESTRATOR","openReplacementOffer","useCallback","notif","_notif$metadata","replacementId","metadata","Toast","show","type","text1","text2","full","resolveFull","navigate","Stacks","ConnectionStack","screen","Screens","OpenIDCredentialOffer","params","credential"],"sourceRoot":"../../../../../src","sources":["modules/openid/hooks/useOpenIdReplacementNavigation.ts"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,wBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AAA4E,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAL5E;;AAUA;AACA;AACA;AACO,SAASG,8BAA8BA,CAAA,EAA2B;EACvE,MAAMC,UAAU,GAAG,IAAAC,qBAAa,EAAkC,CAAC;EACnE,MAAM,CAACC,YAAY,CAAC,GAAG,IAAAC,yBAAW,EAAC,CAACC,oBAAM,CAACC,yBAAyB,CAAC,CAAC;EAEtE,MAAMC,oBAAoB,GAAG,IAAAC,kBAAW,EACrCC,KAAK,IAAK;IAAA,IAAAC,eAAA;IACT,MAAMC,aAAa,GAAGF,KAAK,aAALA,KAAK,gBAAAC,eAAA,GAALD,KAAK,CAAEG,QAAQ,cAAAF,eAAA,uBAAfA,eAAA,CAAkB,eAAe,CAAuB;IAC9E;;IAEA,IAAI,CAACC,aAAa,EAAE;MAClBE,gCAAK,CAACC,IAAI,CAAC;QAAEC,IAAI,EAAE,OAAO;QAAEC,KAAK,EAAE,qBAAqB;QAAEC,KAAK,EAAE;MAAoC,CAAC,CAAC;MACvG;IACF;;IAEA;IACA,MAAMC,IAAI,GAAGf,YAAY,CAACgB,WAAW,CAACR,aAAa,CAAC;IACpD,IAAI,CAACO,IAAI,EAAE;MACT;MACAL,gCAAK,CAACC,IAAI,CAAC;QAAEC,IAAI,EAAE,MAAM;QAAEC,KAAK,EAAE,sBAAsB;QAAEC,KAAK,EAAE;MAAgC,CAAC,CAAC;MACnG;IACF;IAEAhB,UAAU,CAACmB,QAAQ,CAACC,kBAAM,CAACC,eAAe,EAAE;MAC1CC,MAAM,EAAEC,mBAAO,CAACC,qBAAqB;MACrCC,MAAM,EAAE;QAAEC,UAAU,EAAET;MAAK;IAC7B,CAAC,CAAC;EACJ,CAAC,EACD,CAACjB,UAAU,EAAEE,YAAY,CAC3B,CAAC;EAED,OAAOI,oBAAoB;AAC7B","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useReplacementNotifications = void 0;
7
+ var _react = require("react");
8
+ var _registery = require("../refresh/registery");
9
+ var _types = require("../refresh/types");
10
+ var _useDeclineReplacement = require("./useDeclineReplacement");
11
+ var _containerApi = require("../../../container-api");
12
+ // modules/openid/ui/useReplacementNotifications.ts
13
+
14
+ /**
15
+ * A hook that returns a list of CustomNotifications for credentials that have replacements available
16
+ */
17
+
18
+ const useReplacementNotifications = () => {
19
+ const [items, setItems] = (0, _react.useState)([]);
20
+ const [logger] = (0, _containerApi.useServices)([_containerApi.TOKENS.UTIL_LOGGER]);
21
+ const {
22
+ declineByOldId
23
+ } = (0, _useDeclineReplacement.useDeclineReplacement)({
24
+ logger
25
+ });
26
+
27
+ // Keep first-seen timestamps stable per (oldId -> replId)
28
+ const firstSeenRef = (0, _react.useRef)({});
29
+ const build = (0, _react.useCallback)(s => {
30
+ const out = [];
31
+ for (const oldId of s.expired) {
32
+ const repl = s.replacements[oldId];
33
+ if (!repl) continue;
34
+ const key = `${oldId}::${repl.id}`;
35
+ if (!firstSeenRef.current[key]) firstSeenRef.current[key] = new Date().toISOString();
36
+ out.push({
37
+ type: _types.OpenIDCustomNotificationType.CredentialReplacementAvailable,
38
+ title: 'Credential update available',
39
+ pageTitle: 'Credential Update',
40
+ buttonTitle: 'Review update',
41
+ description: 'A newer version of this credential is ready to accept.',
42
+ createdAt: new Date(firstSeenRef.current[key]),
43
+ onPressAction: () => {},
44
+ // your list item handles navigation
45
+ onCloseAction: () => declineByOldId(oldId),
46
+ component: () => null,
47
+ // keeps renderer happy
48
+ metadata: {
49
+ oldId,
50
+ replacementId: repl.id
51
+ }
52
+ });
53
+ }
54
+
55
+ // Newest first for consistent UI
56
+ out.sort((a, b) => {
57
+ var _b$createdAt, _a$createdAt;
58
+ return (((_b$createdAt = b.createdAt) === null || _b$createdAt === void 0 ? void 0 : _b$createdAt.getTime()) ?? 0) - (((_a$createdAt = a.createdAt) === null || _a$createdAt === void 0 ? void 0 : _a$createdAt.getTime()) ?? 0);
59
+ });
60
+ return out;
61
+ }, [declineByOldId]);
62
+ (0, _react.useEffect)(() => {
63
+ // Initial build
64
+ const s = _registery.credentialRegistry.getState();
65
+ setItems(build({
66
+ expired: s.expired,
67
+ replacements: s.replacements
68
+ }));
69
+
70
+ // Subscribe to full state updates (since vanilla store lacks selector arg)
71
+ const unsub = _registery.credentialRegistry.subscribe(state => {
72
+ setItems(build({
73
+ expired: state.expired,
74
+ replacements: state.replacements
75
+ }));
76
+ });
77
+ return unsub;
78
+ }, [build]);
79
+ return (0, _react.useMemo)(() => items, [items]);
80
+ };
81
+ exports.useReplacementNotifications = useReplacementNotifications;
82
+ //# sourceMappingURL=useReplacementNotifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_registery","_types","_useDeclineReplacement","_containerApi","useReplacementNotifications","items","setItems","useState","logger","useServices","TOKENS","UTIL_LOGGER","declineByOldId","useDeclineReplacement","firstSeenRef","useRef","build","useCallback","s","out","oldId","expired","repl","replacements","key","id","current","Date","toISOString","push","type","OpenIDCustomNotificationType","CredentialReplacementAvailable","title","pageTitle","buttonTitle","description","createdAt","onPressAction","onCloseAction","component","metadata","replacementId","sort","a","b","_b$createdAt","_a$createdAt","getTime","useEffect","credentialRegistry","getState","unsub","subscribe","state","useMemo","exports"],"sourceRoot":"../../../../../src","sources":["modules/openid/hooks/useReplacementNotifications.ts"],"mappings":"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","ignoreList":[]}
@@ -3,10 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.deleteRefreshCredentialMetadata = deleteRefreshCredentialMetadata;
6
7
  exports.extractOpenId4VcCredentialMetadata = extractOpenId4VcCredentialMetadata;
7
8
  exports.getOpenId4VcCredentialMetadata = getOpenId4VcCredentialMetadata;
9
+ exports.getRefreshCredentialMetadata = getRefreshCredentialMetadata;
10
+ exports.markOpenIDCredentialStatus = markOpenIDCredentialStatus;
11
+ exports.openId4VcCredentialMetadataKey = void 0;
12
+ exports.persistCredentialRecord = persistCredentialRecord;
13
+ exports.refreshCredentialMetadataKey = void 0;
8
14
  exports.setOpenId4VcCredentialMetadata = setOpenId4VcCredentialMetadata;
9
- const openId4VcCredentialMetadataKey = '_bifold/openId4VcCredentialMetadata';
15
+ exports.setRefreshCredentialMetadata = setRefreshCredentialMetadata;
16
+ exports.temporaryMetaVanillaObject = void 0;
17
+ var _core = require("@credo-ts/core");
18
+ const openId4VcCredentialMetadataKey = exports.openId4VcCredentialMetadataKey = '_bifold/openId4VcCredentialMetadata';
19
+ const refreshCredentialMetadataKey = exports.refreshCredentialMetadataKey = '_bifold/refreshCredentialMetadata';
10
20
  function extractOpenId4VcCredentialMetadata(credentialMetadata, serverMetadata) {
11
21
  return {
12
22
  credential: {
@@ -36,4 +46,53 @@ function getOpenId4VcCredentialMetadata(credentialRecord) {
36
46
  function setOpenId4VcCredentialMetadata(credentialRecord, metadata) {
37
47
  credentialRecord.metadata.set(openId4VcCredentialMetadataKey, metadata);
38
48
  }
49
+
50
+ /**
51
+ * Gets the refresh credential metadata from the given credential record.
52
+ */
53
+ function getRefreshCredentialMetadata(credentialRecord) {
54
+ return credentialRecord.metadata.get(refreshCredentialMetadataKey);
55
+ }
56
+
57
+ /**
58
+ * Sets the refresh credential metadata on the given credential record
59
+ *
60
+ * NOTE: this does not save the record.
61
+ */
62
+ function setRefreshCredentialMetadata(credentialRecord, metadata) {
63
+ credentialRecord.metadata.set(refreshCredentialMetadataKey, metadata);
64
+ }
65
+ function deleteRefreshCredentialMetadata(credentialRecord) {
66
+ credentialRecord.metadata.delete(refreshCredentialMetadataKey);
67
+ }
68
+ async function persistCredentialRecord(agentContext, record) {
69
+ if (record instanceof _core.W3cCredentialRecord) {
70
+ await agentContext.dependencyManager.resolve(_core.W3cCredentialRepository).update(agentContext, record);
71
+ } else if (record instanceof _core.SdJwtVcRecord) {
72
+ await agentContext.dependencyManager.resolve(_core.SdJwtVcRepository).update(agentContext, record);
73
+ } else if (record instanceof _core.MdocRecord) {
74
+ await agentContext.dependencyManager.resolve(_core.MdocRepository).update(agentContext, record);
75
+ } else {
76
+ throw new Error('Unsupported credential record type for persistence');
77
+ }
78
+ }
79
+ async function markOpenIDCredentialStatus({
80
+ credential,
81
+ status,
82
+ agentContext
83
+ }) {
84
+ const refreshMetadata = getRefreshCredentialMetadata(credential);
85
+ if (!refreshMetadata) {
86
+ throw new Error('No refresh metadata found on the credential record.');
87
+ }
88
+ refreshMetadata.lastCheckResult = status;
89
+ setRefreshCredentialMetadata(credential, refreshMetadata);
90
+
91
+ // Persist the updated credential record
92
+ await persistCredentialRecord(agentContext, credential);
93
+ }
94
+ const temporaryMetaVanillaObject = exports.temporaryMetaVanillaObject = {
95
+ notificationMetadata: undefined,
96
+ tokenResponse: undefined
97
+ };
39
98
  //# sourceMappingURL=metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["openId4VcCredentialMetadataKey","extractOpenId4VcCredentialMetadata","credentialMetadata","serverMetadata","credential","display","order","credential_subject","issuer","id","getOpenId4VcCredentialMetadata","credentialRecord","metadata","get","setOpenId4VcCredentialMetadata","set"],"sourceRoot":"../../../../src","sources":["modules/openid/metadata.tsx"],"mappings":";;;;;;;;AAoBA,MAAMA,8BAA8B,GAAG,qCAAqC;AAErE,SAASC,kCAAkCA,CAChDC,kBAA4G,EAC5GC,cAA2D,EAC9B;EAC7B,OAAO;IACLC,UAAU,EAAE;MACVC,OAAO,EAAEH,kBAAkB,CAACG,OAAO;MACnCC,KAAK,EAAEJ,kBAAkB,CAACI,KAAK;MAC/BC,kBAAkB,EAAEL,kBAAkB,CAACK;IACzC,CAAC;IACDC,MAAM,EAAE;MACNH,OAAO,EAAEF,cAAc,CAACE,OAAO;MAC/BI,EAAE,EAAEN,cAAc,CAACM;IACrB;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACO,SAASC,8BAA8BA,CAC5CC,gBAAkE,EAC9B;EACpC,OAAOA,gBAAgB,CAACC,QAAQ,CAACC,GAAG,CAACb,8BAA8B,CAAC;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASc,8BAA8BA,CAC5CH,gBAAkE,EAClEC,QAAqC,EACrC;EACAD,gBAAgB,CAACC,QAAQ,CAACG,GAAG,CAACf,8BAA8B,EAAEY,QAAQ,CAAC;AACzE","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","openId4VcCredentialMetadataKey","exports","refreshCredentialMetadataKey","extractOpenId4VcCredentialMetadata","credentialMetadata","serverMetadata","credential","display","order","credential_subject","issuer","id","getOpenId4VcCredentialMetadata","credentialRecord","metadata","get","setOpenId4VcCredentialMetadata","set","getRefreshCredentialMetadata","setRefreshCredentialMetadata","deleteRefreshCredentialMetadata","delete","persistCredentialRecord","agentContext","record","W3cCredentialRecord","dependencyManager","resolve","W3cCredentialRepository","update","SdJwtVcRecord","SdJwtVcRepository","MdocRecord","MdocRepository","Error","markOpenIDCredentialStatus","status","refreshMetadata","lastCheckResult","temporaryMetaVanillaObject","notificationMetadata","undefined","tokenResponse"],"sourceRoot":"../../../../src","sources":["modules/openid/metadata.tsx"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAmBO,MAAMC,8BAA8B,GAAAC,OAAA,CAAAD,8BAAA,GAAG,qCAAqC;AAC5E,MAAME,4BAA4B,GAAAD,OAAA,CAAAC,4BAAA,GAAG,mCAAmC;AAsBxE,SAASC,kCAAkCA,CAChDC,kBAA4G,EAC5GC,cAA2D,EAC9B;EAC7B,OAAO;IACLC,UAAU,EAAE;MACVC,OAAO,EAAEH,kBAAkB,CAACG,OAAO;MACnCC,KAAK,EAAEJ,kBAAkB,CAACI,KAAK;MAC/BC,kBAAkB,EAAEL,kBAAkB,CAACK;IACzC,CAAC;IACDC,MAAM,EAAE;MACNH,OAAO,EAAEF,cAAc,CAACE,OAAO;MAC/BI,EAAE,EAAEN,cAAc,CAACM;IACrB;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACO,SAASC,8BAA8BA,CAC5CC,gBAAkE,EAC9B;EACpC,OAAOA,gBAAgB,CAACC,QAAQ,CAACC,GAAG,CAACf,8BAA8B,CAAC;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASgB,8BAA8BA,CAC5CH,gBAAkE,EAClEC,QAAqC,EACrC;EACAD,gBAAgB,CAACC,QAAQ,CAACG,GAAG,CAACjB,8BAA8B,EAAEc,QAAQ,CAAC;AACzE;;AAEA;AACA;AACA;AACO,SAASI,4BAA4BA,CAC1CL,gBAAkE,EAChC;EAClC,OAAOA,gBAAgB,CAACC,QAAQ,CAACC,GAAG,CAACb,4BAA4B,CAAC;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASiB,4BAA4BA,CAC1CN,gBAAkE,EAClEC,QAAmC,EACnC;EACAD,gBAAgB,CAACC,QAAQ,CAACG,GAAG,CAACf,4BAA4B,EAAEY,QAAQ,CAAC;AACvE;AAEO,SAASM,+BAA+BA,CAACP,gBAAkE,EAAE;EAClHA,gBAAgB,CAACC,QAAQ,CAACO,MAAM,CAACnB,4BAA4B,CAAC;AAChE;AAEO,eAAeoB,uBAAuBA,CAC3CC,YAA0B,EAC1BC,MAAwD,EACxD;EACA,IAAIA,MAAM,YAAYC,yBAAmB,EAAE;IACzC,MAAMF,YAAY,CAACG,iBAAiB,CAACC,OAAO,CAACC,6BAAuB,CAAC,CAACC,MAAM,CAACN,YAAY,EAAEC,MAAM,CAAC;EACpG,CAAC,MAAM,IAAIA,MAAM,YAAYM,mBAAa,EAAE;IAC1C,MAAMP,YAAY,CAACG,iBAAiB,CAACC,OAAO,CAACI,uBAAiB,CAAC,CAACF,MAAM,CAACN,YAAY,EAAEC,MAAM,CAAC;EAC9F,CAAC,MAAM,IAAIA,MAAM,YAAYQ,gBAAU,EAAE;IACvC,MAAMT,YAAY,CAACG,iBAAiB,CAACC,OAAO,CAACM,oBAAc,CAAC,CAACJ,MAAM,CAACN,YAAY,EAAEC,MAAM,CAAC;EAC3F,CAAC,MAAM;IACL,MAAM,IAAIU,KAAK,CAAC,oDAAoD,CAAC;EACvE;AACF;AAEO,eAAeC,0BAA0BA,CAAC;EAC/C7B,UAAU;EACV8B,MAAM;EACNb;AAKF,CAAC,EAAE;EACD,MAAMc,eAAe,GAAGnB,4BAA4B,CAACZ,UAAU,CAAC;EAChE,IAAI,CAAC+B,eAAe,EAAE;IACpB,MAAM,IAAIH,KAAK,CAAC,qDAAqD,CAAC;EACxE;EAEAG,eAAe,CAACC,eAAe,GAAGF,MAAM;EAExCjB,4BAA4B,CAACb,UAAU,EAAE+B,eAAe,CAAC;;EAEzD;EACA,MAAMf,uBAAuB,CAACC,YAAY,EAAEjB,UAAU,CAAC;AACzD;AAEO,MAAMiC,0BAAgE,GAAAtC,OAAA,CAAAsC,0BAAA,GAAG;EAC9EC,oBAAoB,EAAEC,SAAS;EAC/BC,aAAa,EAAED;AACjB,CAAC","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useOpenId4VciNotifications = exports.NotificationEventType = void 0;
7
+ var _reactHooks = require("@credo-ts/react-hooks");
8
+ var _containerApi = require("../../container-api");
9
+ let NotificationEventType = exports.NotificationEventType = /*#__PURE__*/function (NotificationEventType) {
10
+ NotificationEventType["CREDENTIAL_ACCEPTED"] = "credential_accepted";
11
+ NotificationEventType["CREDENTIAL_DELETED"] = "credential_deleted";
12
+ NotificationEventType["CREDENTIAL_FAILURE"] = "credential_failure";
13
+ return NotificationEventType;
14
+ }({}); //TODO: ADD TYPE SAFETY
15
+ const useOpenId4VciNotifications = () => {
16
+ const {
17
+ agent
18
+ } = (0, _reactHooks.useAgent)();
19
+ const [logger] = (0, _containerApi.useServices)([_containerApi.TOKENS.UTIL_LOGGER, _containerApi.TOKENS.UTIL_OCA_RESOLVER]);
20
+
21
+ /**
22
+ * Sends notification to issuer with credential status.
23
+ * @param options
24
+ */
25
+ const sendOpenId4VciNotification = async options => {
26
+ if (!agent) {
27
+ const error = 'Agent undefined!';
28
+ logger.error(`[OpenIDCredentialNotification] ${error}`);
29
+ throw new Error(error);
30
+ }
31
+ await agent.modules.openId4VcHolder.sendNotification({
32
+ notificationMetadata: options === null || options === void 0 ? void 0 : options.notificationMetadata,
33
+ accessToken: options === null || options === void 0 ? void 0 : options.accessToken,
34
+ notificationEvent: options === null || options === void 0 ? void 0 : options.notificationEvent
35
+ });
36
+ };
37
+ return {
38
+ sendOpenId4VciNotification
39
+ };
40
+ };
41
+ exports.useOpenId4VciNotifications = useOpenId4VciNotifications;
42
+ //# sourceMappingURL=notification.js.map