@bifold/core 2.4.6 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/lib/commonjs/components/listItems/ContactCredentialListItem.js +9 -8
  2. package/lib/commonjs/components/listItems/ContactCredentialListItem.js.map +1 -1
  3. package/lib/commonjs/components/misc/CredentialCard11Logo.js +8 -7
  4. package/lib/commonjs/components/misc/CredentialCard11Logo.js.map +1 -1
  5. package/lib/commonjs/components/misc/PINHeader.js +5 -3
  6. package/lib/commonjs/components/misc/PINHeader.js.map +1 -1
  7. package/lib/commonjs/contexts/network.js +10 -9
  8. package/lib/commonjs/contexts/network.js.map +1 -1
  9. package/lib/commonjs/contexts/reducers/store.js +3 -2
  10. package/lib/commonjs/contexts/reducers/store.js.map +1 -1
  11. package/lib/commonjs/contexts/theme.js +7 -6
  12. package/lib/commonjs/contexts/theme.js.map +1 -1
  13. package/lib/commonjs/index.js +127 -104
  14. package/lib/commonjs/index.js.map +1 -1
  15. package/lib/commonjs/modules/openid/components/CredentialRowCard.js +9 -7
  16. package/lib/commonjs/modules/openid/components/CredentialRowCard.js.map +1 -1
  17. package/lib/commonjs/modules/openid/context/OpenIDCredentialRecordProvider.js +9 -8
  18. package/lib/commonjs/modules/openid/context/OpenIDCredentialRecordProvider.js.map +1 -1
  19. package/lib/commonjs/screens/AttemptLockout.js +27 -35
  20. package/lib/commonjs/screens/AttemptLockout.js.map +1 -1
  21. package/lib/commonjs/screens/ConfigureMediator.js +22 -21
  22. package/lib/commonjs/screens/ConfigureMediator.js.map +1 -1
  23. package/lib/commonjs/screens/JSONDetails.js +16 -15
  24. package/lib/commonjs/screens/JSONDetails.js.map +1 -1
  25. package/lib/commonjs/screens/MobileVerifierLoading.js +4 -3
  26. package/lib/commonjs/screens/MobileVerifierLoading.js.map +1 -1
  27. package/lib/commonjs/screens/PINCreate.js +3 -10
  28. package/lib/commonjs/screens/PINCreate.js.map +1 -1
  29. package/lib/commonjs/screens/WhatAreContacts.js +3 -2
  30. package/lib/commonjs/screens/WhatAreContacts.js.map +1 -1
  31. package/lib/commonjs/services/logger.js +35 -27
  32. package/lib/commonjs/services/logger.js.map +1 -1
  33. package/lib/module/components/listItems/ContactCredentialListItem.js +3 -3
  34. package/lib/module/components/listItems/ContactCredentialListItem.js.map +1 -1
  35. package/lib/module/components/misc/CredentialCard11Logo.js +5 -4
  36. package/lib/module/components/misc/CredentialCard11Logo.js.map +1 -1
  37. package/lib/module/components/misc/PINHeader.js +2 -1
  38. package/lib/module/components/misc/PINHeader.js.map +1 -1
  39. package/lib/module/contexts/network.js +3 -3
  40. package/lib/module/contexts/network.js.map +1 -1
  41. package/lib/module/contexts/reducers/store.js +3 -2
  42. package/lib/module/contexts/reducers/store.js.map +1 -1
  43. package/lib/module/contexts/theme.js +2 -2
  44. package/lib/module/contexts/theme.js.map +1 -1
  45. package/lib/module/index.js +43 -45
  46. package/lib/module/index.js.map +1 -1
  47. package/lib/module/modules/openid/components/CredentialRowCard.js +2 -1
  48. package/lib/module/modules/openid/components/CredentialRowCard.js.map +1 -1
  49. package/lib/module/modules/openid/context/OpenIDCredentialRecordProvider.js +5 -5
  50. package/lib/module/modules/openid/context/OpenIDCredentialRecordProvider.js.map +1 -1
  51. package/lib/module/screens/AttemptLockout.js +28 -36
  52. package/lib/module/screens/AttemptLockout.js.map +1 -1
  53. package/lib/module/screens/ConfigureMediator.js +10 -10
  54. package/lib/module/screens/ConfigureMediator.js.map +1 -1
  55. package/lib/module/screens/JSONDetails.js +9 -8
  56. package/lib/module/screens/JSONDetails.js.map +1 -1
  57. package/lib/module/screens/MobileVerifierLoading.js +4 -3
  58. package/lib/module/screens/MobileVerifierLoading.js.map +1 -1
  59. package/lib/module/screens/PINCreate.js +3 -10
  60. package/lib/module/screens/PINCreate.js.map +1 -1
  61. package/lib/module/screens/WhatAreContacts.js +3 -2
  62. package/lib/module/screens/WhatAreContacts.js.map +1 -1
  63. package/lib/module/services/logger.js +37 -28
  64. package/lib/module/services/logger.js.map +1 -1
  65. package/lib/typescript/src/components/listItems/ContactCredentialListItem.d.ts +2 -1
  66. package/lib/typescript/src/components/listItems/ContactCredentialListItem.d.ts.map +1 -1
  67. package/lib/typescript/src/components/misc/CredentialCard11Logo.d.ts +1 -0
  68. package/lib/typescript/src/components/misc/CredentialCard11Logo.d.ts.map +1 -1
  69. package/lib/typescript/src/components/misc/PINHeader.d.ts +2 -1
  70. package/lib/typescript/src/components/misc/PINHeader.d.ts.map +1 -1
  71. package/lib/typescript/src/contexts/network.d.ts +3 -3
  72. package/lib/typescript/src/contexts/network.d.ts.map +1 -1
  73. package/lib/typescript/src/contexts/reducers/store.d.ts.map +1 -1
  74. package/lib/typescript/src/contexts/theme.d.ts +2 -1
  75. package/lib/typescript/src/contexts/theme.d.ts.map +1 -1
  76. package/lib/typescript/src/index.d.ts +58 -61
  77. package/lib/typescript/src/index.d.ts.map +1 -1
  78. package/lib/typescript/src/modules/openid/components/CredentialRowCard.d.ts +2 -1
  79. package/lib/typescript/src/modules/openid/components/CredentialRowCard.d.ts.map +1 -1
  80. package/lib/typescript/src/modules/openid/context/OpenIDCredentialRecordProvider.d.ts +3 -3
  81. package/lib/typescript/src/modules/openid/context/OpenIDCredentialRecordProvider.d.ts.map +1 -1
  82. package/lib/typescript/src/screens/AttemptLockout.d.ts.map +1 -1
  83. package/lib/typescript/src/screens/ConfigureMediator.d.ts +2 -1
  84. package/lib/typescript/src/screens/ConfigureMediator.d.ts.map +1 -1
  85. package/lib/typescript/src/screens/JSONDetails.d.ts +2 -1
  86. package/lib/typescript/src/screens/JSONDetails.d.ts.map +1 -1
  87. package/lib/typescript/src/screens/MobileVerifierLoading.d.ts.map +1 -1
  88. package/lib/typescript/src/screens/PINCreate.d.ts.map +1 -1
  89. package/lib/typescript/src/screens/WhatAreContacts.d.ts.map +1 -1
  90. package/lib/typescript/src/services/logger.d.ts +7 -8
  91. package/lib/typescript/src/services/logger.d.ts.map +1 -1
  92. package/package.json +5 -6
  93. package/src/App.tsx +0 -79
  94. package/src/animated-components.ts +0 -30
  95. package/src/assets/fonts/MaterialIcons.ttf +0 -0
  96. package/src/assets/icons/code.svg +0 -4
  97. package/src/assets/icons/large-arrow.svg +0 -5
  98. package/src/assets/icons/pencil.svg +0 -15
  99. package/src/assets/icons/trash.svg +0 -31
  100. package/src/assets/img/Artwork_1024x1024.png +0 -0
  101. package/src/assets/img/HistoryCardAcceptedIcon.svg +0 -4
  102. package/src/assets/img/HistoryCardExpiredIcon.svg +0 -4
  103. package/src/assets/img/HistoryCardRevokedIcon.svg +0 -4
  104. package/src/assets/img/HistoryInformationSentIcon.svg +0 -4
  105. package/src/assets/img/HistoryPinUpdatedIcon.svg +0 -4
  106. package/src/assets/img/IconChevronRight.svg +0 -5
  107. package/src/assets/img/activity-indicator-circle.svg +0 -90
  108. package/src/assets/img/app-lockout.svg +0 -1
  109. package/src/assets/img/biometrics.svg +0 -74
  110. package/src/assets/img/chat-loading.svg +0 -1
  111. package/src/assets/img/check-in-circle.svg +0 -18
  112. package/src/assets/img/connection-pending.svg +0 -112
  113. package/src/assets/img/contact-book.svg +0 -21
  114. package/src/assets/img/credential-card.svg +0 -18
  115. package/src/assets/img/credential-declined.svg +0 -28
  116. package/src/assets/img/credential-in-hand.svg +0 -48
  117. package/src/assets/img/credential-list.svg +0 -60
  118. package/src/assets/img/credential-pending.svg +0 -96
  119. package/src/assets/img/credential-success.svg +0 -48
  120. package/src/assets/img/delete-notification.svg +0 -1
  121. package/src/assets/img/empty-wallet.svg +0 -23
  122. package/src/assets/img/error-filled.svg +0 -12
  123. package/src/assets/img/exclamation-mark.svg +0 -17
  124. package/src/assets/img/home-center-img.svg +0 -71
  125. package/src/assets/img/icon-credential-offer-dark.svg +0 -7
  126. package/src/assets/img/icon-credential-offer-light.svg +0 -7
  127. package/src/assets/img/icon-info-recieved-dark.svg +0 -8
  128. package/src/assets/img/icon-info-recieved-light.svg +0 -8
  129. package/src/assets/img/icon-info-sent-dark.svg +0 -8
  130. package/src/assets/img/icon-info-sent-light.svg +0 -8
  131. package/src/assets/img/icon-proof-request-dark.svg +0 -11
  132. package/src/assets/img/icon-proof-request-light.svg +0 -11
  133. package/src/assets/img/information-received.svg +0 -1
  134. package/src/assets/img/logo-large.png +0 -0
  135. package/src/assets/img/logo-large@2x.png +0 -0
  136. package/src/assets/img/logo-large@3x.png +0 -0
  137. package/src/assets/img/logo.svg +0 -15
  138. package/src/assets/img/message-text-icon-outline.svg +0 -1
  139. package/src/assets/img/message-text-icon.svg +0 -1
  140. package/src/assets/img/no_information_shared.svg +0 -36
  141. package/src/assets/img/preface.svg +0 -15
  142. package/src/assets/img/proof-declined.svg +0 -66
  143. package/src/assets/img/proof-pending.svg +0 -61
  144. package/src/assets/img/proof-success.svg +0 -72
  145. package/src/assets/img/push-notifications.svg +0 -1
  146. package/src/assets/img/qrcode-scan-icon.svg +0 -1
  147. package/src/assets/img/scan-share.svg +0 -102
  148. package/src/assets/img/secure-check.svg +0 -4
  149. package/src/assets/img/secure-image.svg +0 -64
  150. package/src/assets/img/update-available.svg +0 -26
  151. package/src/assets/img/verifier-request-declined.svg +0 -34
  152. package/src/assets/img/wallet-back.svg +0 -20
  153. package/src/assets/img/wallet-front.svg +0 -32
  154. package/src/assets/img/wallet-icon-outline.svg +0 -1
  155. package/src/assets/img/wallet-icon.svg +0 -1
  156. package/src/assets/img/wallet.svg +0 -43
  157. package/src/assets/oca-bundles.json +0 -174
  158. package/src/components/animated/ButtonLoading.tsx +0 -32
  159. package/src/components/animated/ConnectionLoading.tsx +0 -53
  160. package/src/components/animated/CredentialAdded.tsx +0 -72
  161. package/src/components/animated/CredentialPending.tsx +0 -63
  162. package/src/components/animated/LoadingIndicator.tsx +0 -49
  163. package/src/components/animated/PresentationLoading.tsx +0 -52
  164. package/src/components/animated/RecordLoading.tsx +0 -75
  165. package/src/components/animated/SendingProof.tsx +0 -53
  166. package/src/components/animated/SentProof.tsx +0 -72
  167. package/src/components/buttons/Button-api.tsx +0 -46
  168. package/src/components/buttons/Button.tsx +0 -125
  169. package/src/components/buttons/HeaderHome.tsx +0 -25
  170. package/src/components/buttons/IconButton.tsx +0 -93
  171. package/src/components/buttons/InfoIcon.tsx +0 -35
  172. package/src/components/buttons/SettingsMenu.tsx +0 -26
  173. package/src/components/buttons/ToggleButton.tsx +0 -93
  174. package/src/components/buttons/index.ts +0 -4
  175. package/src/components/chat/ActionSlider.tsx +0 -104
  176. package/src/components/chat/ChatActions.tsx +0 -33
  177. package/src/components/chat/ChatBubble.tsx +0 -20
  178. package/src/components/chat/ChatEvent.tsx +0 -31
  179. package/src/components/chat/ChatMessage.tsx +0 -142
  180. package/src/components/chat/MessageInput.tsx +0 -46
  181. package/src/components/chat/index.ts +0 -4
  182. package/src/components/forms/WalletNameForm.tsx +0 -148
  183. package/src/components/index.ts +0 -4
  184. package/src/components/inputs/BiometryControl.tsx +0 -190
  185. package/src/components/inputs/BulletPoint.tsx +0 -32
  186. package/src/components/inputs/CheckBoxRow.tsx +0 -67
  187. package/src/components/inputs/InlineErrorText.tsx +0 -60
  188. package/src/components/inputs/LimitedTextInput.tsx +0 -71
  189. package/src/components/inputs/PINInput.tsx +0 -175
  190. package/src/components/inputs/SingleSelectBlock.tsx +0 -53
  191. package/src/components/listItems/ContactCredentialListItem.tsx +0 -79
  192. package/src/components/listItems/ContactListItem.tsx +0 -121
  193. package/src/components/listItems/NotificationListItem.tsx +0 -514
  194. package/src/components/misc/AvatarView.tsx +0 -33
  195. package/src/components/misc/CardWatermark.tsx +0 -52
  196. package/src/components/misc/ConnectionAlert.tsx +0 -123
  197. package/src/components/misc/ConnectionImage.tsx +0 -45
  198. package/src/components/misc/ContentGradient.tsx +0 -40
  199. package/src/components/misc/CredentialCard.tsx +0 -161
  200. package/src/components/misc/CredentialCard10.tsx +0 -329
  201. package/src/components/misc/CredentialCard11.tsx +0 -701
  202. package/src/components/misc/CredentialCard11ActionFooter.tsx +0 -55
  203. package/src/components/misc/CredentialCard11Issuer.tsx +0 -74
  204. package/src/components/misc/CredentialCard11Logo.tsx +0 -61
  205. package/src/components/misc/EmptyList.tsx +0 -27
  206. package/src/components/misc/EmptyListContacts.tsx +0 -55
  207. package/src/components/misc/ErrorBoundary.tsx +0 -200
  208. package/src/components/misc/FauxHeader.tsx +0 -75
  209. package/src/components/misc/InfoBox.tsx +0 -283
  210. package/src/components/misc/NoNewUpdates.tsx +0 -38
  211. package/src/components/misc/PINHeader.tsx +0 -25
  212. package/src/components/misc/PINValidationHelper.tsx +0 -48
  213. package/src/components/misc/Pagination.tsx +0 -114
  214. package/src/components/misc/QRRenderer.tsx +0 -53
  215. package/src/components/misc/QRScanner.tsx +0 -395
  216. package/src/components/misc/QRScannerTorch.tsx +0 -74
  217. package/src/components/misc/ScanCamera.tsx +0 -86
  218. package/src/components/misc/ScanTab.tsx +0 -45
  219. package/src/components/misc/SharedProofData.tsx +0 -98
  220. package/src/components/misc/UnorderedList.tsx +0 -28
  221. package/src/components/misc/VerifierCredentialCard.tsx +0 -378
  222. package/src/components/misc/index.ts +0 -2
  223. package/src/components/modals/AlertModal.tsx +0 -42
  224. package/src/components/modals/AppGuideModal.tsx +0 -142
  225. package/src/components/modals/CameraDisclosureModal.tsx +0 -126
  226. package/src/components/modals/CommonRemoveModal.tsx +0 -337
  227. package/src/components/modals/DeveloperModal.tsx +0 -32
  228. package/src/components/modals/DismissiblePopupModal.tsx +0 -169
  229. package/src/components/modals/ErrorModal.tsx +0 -107
  230. package/src/components/modals/ImageModal.tsx +0 -80
  231. package/src/components/modals/NetInfoModal.tsx +0 -35
  232. package/src/components/modals/PopupModal.tsx +0 -56
  233. package/src/components/modals/ProofCancelModal.tsx +0 -79
  234. package/src/components/modals/SafeAreaModal.tsx +0 -17
  235. package/src/components/record/Record.tsx +0 -100
  236. package/src/components/record/RecordBinaryField.tsx +0 -55
  237. package/src/components/record/RecordDateIntField.tsx +0 -63
  238. package/src/components/record/RecordField.tsx +0 -154
  239. package/src/components/record/RecordFooter.tsx +0 -17
  240. package/src/components/record/RecordHeader.tsx +0 -17
  241. package/src/components/record/RecordRemove.tsx +0 -66
  242. package/src/components/texts/HeaderTitle.tsx +0 -25
  243. package/src/components/texts/HighlightTextBox.tsx +0 -41
  244. package/src/components/texts/InfoTextBox.tsx +0 -129
  245. package/src/components/texts/Link.tsx +0 -41
  246. package/src/components/texts/Text.tsx +0 -21
  247. package/src/components/texts/ThemedText.tsx +0 -24
  248. package/src/components/toast/BaseToast.tsx +0 -128
  249. package/src/components/toast/ToastConfig.tsx +0 -21
  250. package/src/components/tour/AttachTourStep.tsx +0 -73
  251. package/src/components/tour/CredentialOfferTourSteps.tsx +0 -41
  252. package/src/components/tour/CredentialsTourSteps.tsx +0 -41
  253. package/src/components/tour/HomeTourSteps.tsx +0 -104
  254. package/src/components/tour/ProofRequestTourSteps.tsx +0 -41
  255. package/src/components/tour/SpotCutout.tsx +0 -65
  256. package/src/components/tour/TourBox.tsx +0 -255
  257. package/src/components/tour/TourOverlay.tsx +0 -134
  258. package/src/components/views/Banner.tsx +0 -181
  259. package/src/components/views/CredentialCardLogo.tsx +0 -77
  260. package/src/components/views/CredentialDetailPrimaryHeader.tsx +0 -107
  261. package/src/components/views/CredentialDetailSecondaryHeader.tsx +0 -60
  262. package/src/components/views/HeaderWithBanner.tsx +0 -17
  263. package/src/components/views/HomeFooterView.tsx +0 -110
  264. package/src/components/views/HomeHeaderView.tsx +0 -12
  265. package/src/components/views/KeyboardView.tsx +0 -41
  266. package/src/components/views/LoadingPlaceholder.tsx +0 -168
  267. package/src/components/views/LoadingView.tsx +0 -29
  268. package/src/components/views/ProgressBar.tsx +0 -53
  269. package/src/components/views/PushNotificationsContent.tsx +0 -51
  270. package/src/components/views/PushNotificationsDisabledContent.tsx +0 -47
  271. package/src/configs/ledgers/indy/index.ts +0 -8
  272. package/src/configs/ledgers/indy/ledgers.json +0 -51
  273. package/src/constants.ts +0 -107
  274. package/src/container-api.ts +0 -247
  275. package/src/container-impl.ts +0 -243
  276. package/src/contexts/activity.tsx +0 -145
  277. package/src/contexts/animated-components.ts +0 -9
  278. package/src/contexts/auth.tsx +0 -240
  279. package/src/contexts/index.ts +0 -3
  280. package/src/contexts/navigation.tsx +0 -19
  281. package/src/contexts/network.tsx +0 -125
  282. package/src/contexts/reducers/index.ts +0 -3
  283. package/src/contexts/reducers/store.ts +0 -754
  284. package/src/contexts/store.tsx +0 -103
  285. package/src/contexts/theme.tsx +0 -51
  286. package/src/contexts/tour/tour-context.tsx +0 -160
  287. package/src/contexts/tour/tour-provider.tsx +0 -160
  288. package/src/hooks/bundle-resolver.ts +0 -95
  289. package/src/hooks/chat-messages.tsx +0 -263
  290. package/src/hooks/connections.ts +0 -37
  291. package/src/hooks/credential-card-styles.ts +0 -144
  292. package/src/hooks/credentials.ts +0 -11
  293. package/src/hooks/deep-links.ts +0 -49
  294. package/src/hooks/developer-mode.ts +0 -25
  295. package/src/hooks/lockout.ts +0 -77
  296. package/src/hooks/notifications.ts +0 -108
  297. package/src/hooks/oob.ts +0 -17
  298. package/src/hooks/proof-request-templates.ts +0 -40
  299. package/src/hooks/proofs.ts +0 -32
  300. package/src/hooks/screen-capture.ts +0 -52
  301. package/src/hooks/useBifoldAgentSetup.ts +0 -169
  302. package/src/hooks/useOnboardingState.ts +0 -53
  303. package/src/hooks/usePINValidation.ts +0 -98
  304. package/src/index.ts +0 -239
  305. package/src/layout/ScreenLayout.tsx +0 -53
  306. package/src/localization/en/en.json +0 -951
  307. package/src/localization/en/index.ts +0 -3
  308. package/src/localization/fr/fr.json +0 -933
  309. package/src/localization/fr/index.ts +0 -3
  310. package/src/localization/index.ts +0 -66
  311. package/src/localization/pt-br/index.ts +0 -3
  312. package/src/localization/pt-br/pt-br.json +0 -911
  313. package/src/modules/history/context/historyManager.tsx +0 -247
  314. package/src/modules/history/index.ts +0 -2
  315. package/src/modules/history/navigation/HistoryStack.tsx +0 -29
  316. package/src/modules/history/services/queue.service.tsx +0 -31
  317. package/src/modules/history/types/index.ts +0 -92
  318. package/src/modules/history/ui/HistoryPage.tsx +0 -133
  319. package/src/modules/history/ui/HistorySettings.tsx +0 -183
  320. package/src/modules/history/ui/assets/img/HistoryCardAcceptedIcon.svg +0 -4
  321. package/src/modules/history/ui/assets/img/HistoryCardExpiredIcon.svg +0 -4
  322. package/src/modules/history/ui/assets/img/HistoryCardRevokedIcon.svg +0 -4
  323. package/src/modules/history/ui/assets/img/HistoryInformationSentIcon.svg +0 -4
  324. package/src/modules/history/ui/assets/img/HistoryPinUpdatedIcon.svg +0 -4
  325. package/src/modules/history/ui/assets/img/IconChevronRight.svg +0 -3
  326. package/src/modules/history/ui/components/BulletPoint.tsx +0 -49
  327. package/src/modules/history/ui/components/HistoryListItem.tsx +0 -251
  328. package/src/modules/history/ui/components/HistoryMenu.tsx +0 -25
  329. package/src/modules/history/ui/components/SingleSelectBlock.tsx +0 -72
  330. package/src/modules/openid/components/CredentialRowCard.tsx +0 -64
  331. package/src/modules/openid/components/OpenIDCredentialCard.tsx +0 -276
  332. package/src/modules/openid/context/OpenIDCredentialRecordProvider.tsx +0 -296
  333. package/src/modules/openid/display.tsx +0 -467
  334. package/src/modules/openid/displayProof.tsx +0 -86
  335. package/src/modules/openid/hooks/openid.tsx +0 -111
  336. package/src/modules/openid/metadata.tsx +0 -59
  337. package/src/modules/openid/offerResolve.tsx +0 -281
  338. package/src/modules/openid/resolverProof.tsx +0 -286
  339. package/src/modules/openid/screens/OpenIDCredentialDetails.tsx +0 -214
  340. package/src/modules/openid/screens/OpenIDCredentialOffer.tsx +0 -192
  341. package/src/modules/openid/screens/OpenIDProofChangeCredential.tsx +0 -133
  342. package/src/modules/openid/screens/OpenIDProofPresentation.tsx +0 -423
  343. package/src/modules/openid/types.tsx +0 -111
  344. package/src/modules/openid/utils/utils.tsx +0 -119
  345. package/src/navigators/ConnectStack.tsx +0 -68
  346. package/src/navigators/ContactStack.tsx +0 -91
  347. package/src/navigators/CredentialStack.tsx +0 -48
  348. package/src/navigators/DeliveryStack.tsx +0 -76
  349. package/src/navigators/HomeStack.tsx +0 -37
  350. package/src/navigators/MainStack.tsx +0 -146
  351. package/src/navigators/NotificationStack.tsx +0 -56
  352. package/src/navigators/OnboardingScreens.ts +0 -142
  353. package/src/navigators/OnboardingStack.tsx +0 -205
  354. package/src/navigators/ProofRequestStack.tsx +0 -113
  355. package/src/navigators/RootStack.tsx +0 -71
  356. package/src/navigators/SettingStack.tsx +0 -174
  357. package/src/navigators/TabStack.tsx +0 -304
  358. package/src/navigators/defaultLayoutOptions.tsx +0 -17
  359. package/src/navigators/defaultStackOptions.tsx +0 -102
  360. package/src/navigators/index.ts +0 -27
  361. package/src/onboarding.ts +0 -90
  362. package/src/screens/AttemptLockout.tsx +0 -153
  363. package/src/screens/AutoLock.tsx +0 -140
  364. package/src/screens/Biometry.tsx +0 -54
  365. package/src/screens/Chat.tsx +0 -141
  366. package/src/screens/ConfigureMediator.tsx +0 -160
  367. package/src/screens/Connection.tsx +0 -394
  368. package/src/screens/ContactDetails.tsx +0 -350
  369. package/src/screens/CredentialDetails.tsx +0 -473
  370. package/src/screens/CredentialOffer.tsx +0 -334
  371. package/src/screens/CredentialOfferAccept.tsx +0 -189
  372. package/src/screens/DataRetention.tsx +0 -91
  373. package/src/screens/Developer.tsx +0 -289
  374. package/src/screens/Home.tsx +0 -173
  375. package/src/screens/JSONDetails.tsx +0 -104
  376. package/src/screens/Language.tsx +0 -97
  377. package/src/screens/ListContacts.tsx +0 -112
  378. package/src/screens/ListCredentials.tsx +0 -135
  379. package/src/screens/ListProofRequests.tsx +0 -148
  380. package/src/screens/MobileVerifierLoading.tsx +0 -106
  381. package/src/screens/NameWallet.tsx +0 -9
  382. package/src/screens/Onboarding.tsx +0 -162
  383. package/src/screens/OnboardingPages.tsx +0 -160
  384. package/src/screens/PINChange.tsx +0 -249
  385. package/src/screens/PINCreate.tsx +0 -185
  386. package/src/screens/PINEnter.tsx +0 -432
  387. package/src/screens/PINExplainer.tsx +0 -85
  388. package/src/screens/PINVerify.tsx +0 -195
  389. package/src/screens/PasteUrl.tsx +0 -140
  390. package/src/screens/Preface.tsx +0 -78
  391. package/src/screens/ProofChangeCredential.tsx +0 -179
  392. package/src/screens/ProofDetails.tsx +0 -348
  393. package/src/screens/ProofRequest.tsx +0 -999
  394. package/src/screens/ProofRequestAccept.tsx +0 -133
  395. package/src/screens/ProofRequestDetails.tsx +0 -270
  396. package/src/screens/ProofRequestUsageHistory.tsx +0 -152
  397. package/src/screens/ProofRequesting.tsx +0 -245
  398. package/src/screens/PushNotifications.tsx +0 -59
  399. package/src/screens/RenameContact.tsx +0 -155
  400. package/src/screens/RenameWallet.tsx +0 -26
  401. package/src/screens/Scan.tsx +0 -145
  402. package/src/screens/ScanHelp.tsx +0 -48
  403. package/src/screens/Settings.tsx +0 -415
  404. package/src/screens/Splash.tsx +0 -80
  405. package/src/screens/Terms.tsx +0 -127
  406. package/src/screens/ToggleBiometry.tsx +0 -153
  407. package/src/screens/TogglePushNotifications.tsx +0 -118
  408. package/src/screens/Tours.tsx +0 -93
  409. package/src/screens/UpdateAvailable.tsx +0 -119
  410. package/src/screens/WhatAreContacts.tsx +0 -71
  411. package/src/services/bifoldLogger.ts +0 -3
  412. package/src/services/keychain.ts +0 -184
  413. package/src/services/logger.ts +0 -89
  414. package/src/services/storage.ts +0 -136
  415. package/src/theme-builder.ts +0 -157
  416. package/src/theme.interface.ts +0 -580
  417. package/src/theme.ts +0 -1346
  418. package/src/types/attempt-lockout-config.ts +0 -8
  419. package/src/types/attestation.ts +0 -17
  420. package/src/types/chat.ts +0 -4
  421. package/src/types/config.ts +0 -64
  422. package/src/types/contact-details.ts +0 -5
  423. package/src/types/credential-list-footer.ts +0 -3
  424. package/src/types/credential-status.ts +0 -3
  425. package/src/types/credentials.ts +0 -7
  426. package/src/types/decline.ts +0 -5
  427. package/src/types/error.ts +0 -40
  428. package/src/types/fn.ts +0 -2
  429. package/src/types/genesis.ts +0 -35
  430. package/src/types/index.ts +0 -2
  431. package/src/types/metadata.ts +0 -16
  432. package/src/types/navigators.ts +0 -239
  433. package/src/types/notification.ts +0 -24
  434. package/src/types/permissions.ts +0 -2
  435. package/src/types/proof-items.ts +0 -32
  436. package/src/types/react-i18next.d.ts +0 -10
  437. package/src/types/remove.ts +0 -8
  438. package/src/types/security.ts +0 -32
  439. package/src/types/settings.ts +0 -28
  440. package/src/types/state.ts +0 -97
  441. package/src/types/tour.ts +0 -20
  442. package/src/types/version-check.ts +0 -18
  443. package/src/utils/PINValidation.ts +0 -98
  444. package/src/utils/agent.ts +0 -128
  445. package/src/utils/anonCredsProofRequestMapper.ts +0 -205
  446. package/src/utils/contacts.ts +0 -59
  447. package/src/utils/cred-def.ts +0 -33
  448. package/src/utils/credential.ts +0 -37
  449. package/src/utils/crypto.ts +0 -12
  450. package/src/utils/fileCache.ts +0 -152
  451. package/src/utils/helpers.ts +0 -1292
  452. package/src/utils/ledger.ts +0 -212
  453. package/src/utils/luminance.ts +0 -40
  454. package/src/utils/mediatorhelpers.ts +0 -71
  455. package/src/utils/migration.ts +0 -40
  456. package/src/utils/network.tsx +0 -55
  457. package/src/utils/oca.ts +0 -173
  458. package/src/utils/parsers.tsx +0 -111
  459. package/src/utils/proofBundle.ts +0 -220
  460. package/src/utils/schema.ts +0 -28
  461. package/src/utils/testable.ts +0 -17
@@ -1,212 +0,0 @@
1
- import { IndyVdrPoolConfig } from '@credo-ts/indy-vdr'
2
- import axios from 'axios'
3
-
4
- const INDY_NETWORK_URL =
5
- 'https://raw.githubusercontent.com/hyperledger/indy-node-monitor/main/fetch-validator-status/networks.json'
6
-
7
- const ERROR_TAG = 'LEDGER ERROR'
8
-
9
- export enum IndyLedger {
10
- SOVRIN_BUILDER_NET = 'sbn',
11
- SOVRIN_STAGING_NET = 'ssn',
12
- SOVERIN_MAIN_NET = 'smn',
13
- LOCAL_VON_NETWORK = 'vn',
14
- LINUX_LOCAL_VON_NETWORK = 'lln',
15
- BCOVRIN_DEV = 'bcd',
16
- BCOVRIN_TEST = 'bct',
17
- BCOVRIN = 'bcp',
18
- GREENLIGHT_DEV_LEDGER = 'gld',
19
- INDICO_MAINNET = 'imn',
20
- INDICO_DEMONET = 'idn',
21
- INDICO_TESTNET = 'itn',
22
- CANDY_DEV_NETWORK = 'cdn',
23
- CANDY_TEST_NETWORK = 'ctn',
24
- CANDY_PRODUCTION_NETWORK = 'cpn',
25
- }
26
-
27
- export interface IndyLedgerConfig {
28
- ledgerId: IndyLedger
29
- isProduction: boolean
30
- doNotConnectOnStartup?: true
31
- }
32
-
33
- export interface IndyLedgerJSON extends IndyVdrPoolConfig {
34
- // A human-readable identifier for the ledger, useful for identifing the ledger in the JSON file.
35
- // Note: This value will not be used downstream as the IndyVdrPoolConfig interface will exclude it.
36
- id: string
37
- }
38
-
39
- export type IndyLedgersRecord = Record<
40
- IndyLedger,
41
- {
42
- name: string
43
- indyNamespace: string
44
- genesisUrl: string
45
- }
46
- >
47
-
48
- // This interface allows us to abstract the file system operations,
49
- // preventing android from complaining about the use of the Node.js module 'fs'.
50
- export interface IndyLedgerFileSystem {
51
- /**
52
- * Writes data to a file at the specified file path.
53
- *
54
- * @param {string} filePath - The path to the file where data should be written.
55
- * @param {*} {string} data - The data to write to the file.
56
- * @returns {*} {void}
57
- */
58
- writeFile: (filePath: string, data: string) => void
59
- /**
60
- * Reads and returns the content of a file at the specified file path.
61
- *
62
- * @param {string} filePath - The path to the file to read.
63
- * @returns {*} {string} - The content of the file as a string.
64
- */
65
- readFile: (filePath: string) => string
66
- /**
67
- * Checks if a file exists at the specified file path.
68
- *
69
- * @param {string} filePath - The path to the file to check.
70
- * @returns {*} {boolean} - True if the file exists, false otherwise.
71
- */
72
- fileExists: (filePath: string) => boolean
73
- /**
74
- * Resolves and returns the absolute path for a given file path.
75
- *
76
- * @example ./ledgers.json -> /Users/username/project/ledgers.json
77
- *
78
- * @param {string} filePath - The file path to resolve.
79
- * @returns {*} {string} - The resolved absolute file path.
80
- */
81
- pathResolve: (filePath: string) => string
82
- }
83
-
84
- /**
85
- * Fetches the content from a given URL and returns it as a Promise.
86
- *
87
- * @throws {Error} - Throws an error if the fetch operation fails.
88
- * @template T - The type of content expected from the URL.
89
- * @param {string} url - The URL to fetch content from.
90
- * @returns {*} {Promise<T>} - A promise that resolves to the content fetched from the URL
91
- */
92
- export async function _fetchUrlContent<T>(url: string): Promise<T> {
93
- try {
94
- const response = await axios.get<T>(url)
95
- return response.data
96
- } catch (error: any) {
97
- throw new Error(`${ERROR_TAG}: Failed to fetch content from URL ${url}: ${error.message}`)
98
- }
99
- }
100
-
101
- /**
102
- * Fetches and returns a list of Indy ledgers based on the provided configurations.
103
- *
104
- * @throws {Error} - Throws an error if a ledgerConfig is not found in the IndyLedgersRecord.
105
- * @param {IndyLedgerConfig[]} indyLedgerConfigs - The list of supported Indy ledger configurations.
106
- * @returns {*} {Promise<IndyLedgerJSON[]>} - A promise that resolves to an array of ledgers.
107
- */
108
- export async function getIndyLedgers(indyLedgerConfigs: IndyLedgerConfig[]): Promise<IndyLedgerJSON[]> {
109
- if (!indyLedgerConfigs.length) {
110
- return []
111
- }
112
-
113
- const allIndyLedgers = await _fetchUrlContent<IndyLedgersRecord>(INDY_NETWORK_URL)
114
-
115
- const ledgers: IndyLedgerJSON[] = []
116
- // Iterate through the supported network configs and map them to the Indy ledgers
117
- for (const ledgerConfig of indyLedgerConfigs) {
118
- const indyLedger = allIndyLedgers[ledgerConfig.ledgerId]
119
-
120
- if (!indyLedger) {
121
- throw new Error(`${ERROR_TAG}: Ledger config for ${ledgerConfig.ledgerId} not found`)
122
- }
123
-
124
- const ledgerId = indyLedger.name
125
- .split(' ')
126
- .filter((word) => !/\W+/im.test(word))
127
- .join('')
128
-
129
- ledgers.push({
130
- id: ledgerId,
131
- indyNamespace: indyLedger.indyNamespace,
132
- isProduction: ledgerConfig.isProduction,
133
- connectOnStartup: !ledgerConfig.doNotConnectOnStartup,
134
- // This url will need to be fetched to get the genesis transactions
135
- genesisTransactions: indyLedger.genesisUrl,
136
- })
137
- }
138
-
139
- // Step 1: Collect all genesis transaction promises
140
- const genesisPromises = ledgers.map((ledger) => _fetchUrlContent<string>(ledger.genesisTransactions))
141
-
142
- // Step 2: Await all promises to resolve in parallel
143
- const genesisTransactions = await Promise.all(genesisPromises)
144
-
145
- // Step 3: Assign the fetched genesis transactions back to the ledgers
146
- genesisTransactions.forEach((transactions, index) => {
147
- ledgers[index].genesisTransactions = transactions.trim()
148
- })
149
-
150
- return ledgers
151
- }
152
-
153
- /**
154
- * Writes the provided Indy ledgers to a JSON file at the specified file path.
155
- *
156
- * @throws {Error} - Throws an error if writing to the file fails or if the file path is invalid.
157
- * @param {IndyLedgerFileSystem} fileSystem - The file system interface to use for writing the file.
158
- * @param {string} filePath - The path to the JSON file where the ledgers should be written.
159
- * @param {IndyLedgerJSON[]} ledgers - The array of Indy ledgers to write to the file.
160
- * @returns {*} {void}
161
- */
162
- export function writeIndyLedgersToFile(
163
- fileSystem: IndyLedgerFileSystem,
164
- filePath: string,
165
- ledgers: IndyLedgerJSON[]
166
- ): void {
167
- try {
168
- if (!filePath.endsWith('.json')) {
169
- throw new Error('File path must point to a JSON file')
170
- }
171
-
172
- // Skip writing to file if the new ledgers are the same
173
- if (
174
- fileSystem.fileExists(filePath) &&
175
- JSON.stringify(readIndyLedgersFromFile(fileSystem, filePath)) === JSON.stringify(ledgers)
176
- ) {
177
- return
178
- }
179
-
180
- const jsonContent = JSON.stringify(ledgers, null, 2)
181
-
182
- // Convert to absolute path ie: ./ledgers.json -> /Users/username/project/ledgers.json
183
- const absoluteFilePath = fileSystem.pathResolve(filePath)
184
- fileSystem.writeFile(absoluteFilePath, jsonContent)
185
- } catch (error: any) {
186
- throw new Error(`${ERROR_TAG}: Failed to write ledgers to file ${filePath}: ${error.message}`)
187
- }
188
- }
189
-
190
- /**
191
- * Reads and parses Indy ledgers from a JSON file at the specified file path.
192
- *
193
- * @throws {Error} - Throws an error if reading from the file fails, if the file path is invalid, or if parsing fails.
194
- * @param {IndyLedgerFileSystem} fileSystem - The file system interface to use for reading the file.
195
- * @param {string} filePath - The path to the JSON file to read the ledgers from.
196
- * @returns {*} {IndyLedgerJSON[]} - An array of Indy ledgers read from the file.
197
- */
198
- export function readIndyLedgersFromFile(fileSystem: IndyLedgerFileSystem, filePath: string): IndyLedgerJSON[] {
199
- try {
200
- if (!filePath.endsWith('.json')) {
201
- throw new Error('File path must point to a JSON file')
202
- }
203
-
204
- // Convert to absolute path ie: ./ledgers.json -> /Users/username/project/ledgers.json
205
- const absoluteFilePath = fileSystem.pathResolve(filePath)
206
- const jsonContent = fileSystem.readFile(absoluteFilePath)
207
-
208
- return JSON.parse(jsonContent)
209
- } catch (error: any) {
210
- throw new Error(`${ERROR_TAG}: Failed to read ledgers from file ${filePath}: ${error.message}`)
211
- }
212
- }
@@ -1,40 +0,0 @@
1
- export enum StatusBarStyles {
2
- Light = 'light-content',
3
- Dark = 'dark-content',
4
- }
5
-
6
- export enum Shade {
7
- Light = 'light',
8
- Dark = 'dark',
9
- }
10
-
11
- export const luminanceForHexColor = (hex: string): number | undefined => {
12
- if (!/^#([A-Fa-f0-9]{6})$/.test(hex)) {
13
- return
14
- }
15
-
16
- const hexAsNumber = Number(`0x${hex.slice(1)}`)
17
- const [r, g, b] = [(hexAsNumber >> 16) & 255, (hexAsNumber >> 8) & 255, hexAsNumber & 255]
18
- // Scalars below defined [here](https://en.wikipedia.org/wiki/Relative_luminance)
19
- const y = 0.2126 * r + 0.7152 * g + 0.0722 * b
20
-
21
- return Math.round(y)
22
- }
23
-
24
- export const shadeIsLightOrDark = (hex: string): Shade => {
25
- const rgbMidPoint = 255 / 2
26
- const y = luminanceForHexColor(hex) ?? 0
27
-
28
- return y <= rgbMidPoint ? Shade.Dark : Shade.Light
29
- }
30
-
31
- export const statusBarStyleForColor = (hex: string): StatusBarStyles | undefined => {
32
- const rgbMidPoint = 255 / 2
33
- const y = luminanceForHexColor(hex)
34
-
35
- if (typeof y === 'undefined') {
36
- return
37
- }
38
-
39
- return y <= rgbMidPoint ? StatusBarStyles.Light : StatusBarStyles.Dark
40
- }
@@ -1,71 +0,0 @@
1
- import { Agent, MediationRecord } from '@credo-ts/core'
2
-
3
- export const isMediatorInvitation = async (agent: Agent, url: string): Promise<boolean> => {
4
- try {
5
- const invitation = await agent.oob.parseInvitation(url)
6
- if (!invitation) {
7
- return false
8
- }
9
-
10
- if (invitation.goalCode === 'aries.vc.mediate') {
11
- agent.config.logger.info(`Invitation is a mediator invitation with goal code: ${invitation.goalCode}`)
12
- return true
13
- }
14
-
15
- return false
16
- } catch (error) {
17
- agent.config.logger.error(`Invitation is not a mediator invitation.`, error as Error)
18
- return false
19
- }
20
- }
21
-
22
- const provisionMediationRecordFromMediatorUrl = async (
23
- agent: Agent,
24
- url: string
25
- ): Promise<MediationRecord | undefined> => {
26
- try {
27
- const invitation = await agent.oob.parseInvitation(url)
28
- if (!invitation) {
29
- agent.config.logger.error(`No invitation found in URL: ${url}`)
30
- return undefined
31
- }
32
-
33
- const outOfBandRecord = await agent.oob.findByReceivedInvitationId(invitation.id)
34
- let [connection] = outOfBandRecord ? await agent.connections.findAllByOutOfBandId(outOfBandRecord.id) : []
35
-
36
- if (!connection) {
37
- agent.config.logger.warn(`No connection found for out-of-band record: ${outOfBandRecord?.id}`)
38
- const invite = await agent.oob.parseInvitation(url)
39
- const { connectionRecord: newConnection } = await agent.oob.receiveInvitation(invite)
40
-
41
- if (!newConnection) {
42
- agent.config.logger.error(`Failed to create connection from invitation: ${JSON.stringify(invite, null, 2)}`)
43
- return
44
- }
45
- connection = newConnection
46
- }
47
-
48
- const result = connection.isReady ? connection : await agent.connections.returnWhenIsConnected(connection.id)
49
- return agent.mediationRecipient.provision(result)
50
- } catch (error) {
51
- agent.config.logger.error(`Failed to get connection ID from mediator URL: ${error}`)
52
- return
53
- }
54
- }
55
-
56
- export const setMediationToDefault = async (agent: Agent, mediatorUrl: string) => {
57
- const mediationRecord = await provisionMediationRecordFromMediatorUrl(agent, mediatorUrl)
58
- if (!mediationRecord) {
59
- agent.config.logger.error(`No connection record found for mediator URL: ${mediatorUrl}`)
60
- return
61
- }
62
-
63
- const currentDefault = await agent.mediationRecipient.findDefaultMediator()
64
- if (currentDefault?.connectionId === mediationRecord.id) {
65
- agent.config.logger.info(`Default mediator already set for connection ID: ${mediationRecord.id}`)
66
- return
67
- }
68
-
69
- await agent.mediationRecipient.setDefaultMediator(mediationRecord)
70
- agent.config.logger.info(`setting default mediator with record: ${JSON.stringify(mediationRecord)}`)
71
- }
@@ -1,40 +0,0 @@
1
- import { AskarModule } from '@credo-ts/askar'
2
- import { Agent, ConsoleLogger, LogLevel } from '@credo-ts/core'
3
- import { IndySdkToAskarMigrationUpdater } from '@credo-ts/indy-sdk-to-askar-migration'
4
- import { agentDependencies } from '@credo-ts/react-native'
5
- import { ariesAskar } from '@hyperledger/aries-askar-react-native'
6
- import { Platform } from 'react-native'
7
- import * as RNFS from 'react-native-fs'
8
-
9
- export const migrateToAskar = async (walletId: string, key: string, agent?: Agent) => {
10
- // The backup file is kept in case anything goes wrong. this will allow us to release patches and still update the
11
- // original indy-sdk database in a future version we could manually add a check to remove the old file from storage.
12
- const basePath = Platform.OS === 'ios' ? RNFS.DocumentDirectoryPath : RNFS.ExternalDirectoryPath
13
- const dbPath = `${basePath}/.indy_client/wallet/${walletId}/sqlite.db`
14
- const aAgent =
15
- agent ??
16
- new Agent({
17
- config: {
18
- label: 'Aries Bifold',
19
- walletConfig: {
20
- id: walletId,
21
- key,
22
- },
23
- logger: new ConsoleLogger(LogLevel.trace),
24
- autoUpdateStorageOnStartup: false,
25
- },
26
- modules: {
27
- askar: new AskarModule({
28
- ariesAskar,
29
- }),
30
- },
31
- dependencies: agentDependencies,
32
- })
33
-
34
- const updater = await IndySdkToAskarMigrationUpdater.initialize({
35
- dbPath,
36
- agent: aAgent,
37
- })
38
-
39
- await updater.update()
40
- }
@@ -1,55 +0,0 @@
1
- import TcpSocket from 'react-native-tcp-socket'
2
-
3
- import pools from '../configs/ledgers/indy'
4
- import { GenesisTransaction } from '../types/genesis'
5
-
6
- export const canConnectToHost = async (host: { host: string; port: number }): Promise<boolean> =>
7
- new Promise((resolve) => {
8
- const socketTimeoutInMs = 3000
9
- const client = TcpSocket.createConnection(host, () => {
10
- resolve(true)
11
- client.destroy()
12
- })
13
-
14
- // Other events that can be safely be ignored. See the
15
- // library for more details:
16
- // https://www.npmjs.com/package/react-native-tcp-socket
17
-
18
- client.on('error', () => {
19
- client.destroy()
20
- resolve(false)
21
- })
22
-
23
- client.on('timeout', () => {
24
- client.destroy()
25
- client.removeAllListeners()
26
-
27
- resolve(false)
28
- })
29
-
30
- client.setTimeout(socketTimeoutInMs)
31
- })
32
-
33
- export const fetchLedgerNodes = (indyNamespace = 'sovrin'): Array<{ host: string; port: number }> => {
34
- const [pool] = pools.filter((p) => p.indyNamespace === indyNamespace)
35
- if (!pool) {
36
- return []
37
- }
38
-
39
- const genesisTransactionsAsString = pool.genesisTransactions
40
- let genesisTransactions: Array<GenesisTransaction> = []
41
-
42
- if (genesisTransactionsAsString) {
43
- try {
44
- genesisTransactions = genesisTransactionsAsString.split('\n').map((g) => JSON.parse(g))
45
- } catch (error: unknown) {
46
- return []
47
- }
48
- }
49
-
50
- const nodes = genesisTransactions.map((g) => {
51
- return { host: g.txn.data.data.client_ip, port: parseInt(g.txn.data.data.client_port) }
52
- })
53
-
54
- return nodes
55
- }
package/src/utils/oca.ts DELETED
@@ -1,173 +0,0 @@
1
- import { CredentialExchangeRecord } from '@credo-ts/core'
2
- import { AnonCredsProofRequestTemplatePayloadData, CredentialSharedProofData } from '@bifold/verifier'
3
- import {
4
- Attribute,
5
- CredentialOverlay,
6
- Field,
7
- OCABundleResolveAllParams,
8
- OCABundleResolverType,
9
- Predicate,
10
- } from '@bifold/oca/build/legacy'
11
- import { W3cCredentialDisplay } from '../modules/openid/types'
12
- import { BrandingOverlay } from '@bifold/oca'
13
-
14
- export type FieldExt = {
15
- field: Attribute
16
- attribute_name: string
17
- }
18
-
19
- type AttributeFieldValue = string | number | null
20
-
21
- export const getAttributeField = (display: W3cCredentialDisplay, searchKey: string): FieldExt | undefined => {
22
- let attributeName: string = 'Unknown'
23
- let attributeValue: AttributeFieldValue = 'Unknown'
24
-
25
- for (const [key, value] of Object.entries(display.attributes)) {
26
- let formattedValue: AttributeFieldValue
27
-
28
- if (searchKey === key) {
29
- if (typeof value === 'object' && value !== null) {
30
- formattedValue = JSON.stringify(value) // Convert object to string
31
- } else {
32
- formattedValue = value as AttributeFieldValue
33
- }
34
-
35
- attributeName = key
36
- attributeValue = formattedValue
37
- }
38
- }
39
-
40
- //Now check credentialSubject for attributeName mapping
41
- const credentialSubject = display.credentialSubject
42
-
43
- if (credentialSubject) {
44
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
45
- for (const [key, value] of Object.entries(credentialSubject)) {
46
- if (key !== searchKey || !value) continue
47
- const { display } = value
48
- const { name } = display[0]
49
- attributeName = name
50
- }
51
- }
52
-
53
- return {
54
- field: new Attribute({
55
- name: attributeName,
56
- value: attributeValue,
57
- mimeType: typeof attributeValue === 'number' ? 'text/number' : 'text/plain',
58
- }),
59
- attribute_name: searchKey,
60
- }
61
- }
62
-
63
- export const buildFieldsFromW3cCredsCredential = (
64
- display: W3cCredentialDisplay,
65
- filterByAttributes?: string[]
66
- ): Array<Field> => {
67
- return (
68
- Object.entries(display.attributes)
69
- .filter(([key]) => key !== 'id')
70
- .map(([key]) => getAttributeField(display, key))
71
- .filter((field) => field !== undefined)
72
- .filter((field: FieldExt) => (filterByAttributes ? filterByAttributes.includes(field.attribute_name) : true))
73
- .map((fld) => fld.field) || []
74
- )
75
- }
76
-
77
- export const buildFieldsFromAnonCredsCredential = (credential: CredentialExchangeRecord): Array<Field> => {
78
- return credential?.credentialAttributes?.map((attr) => new Attribute(attr)) || []
79
- }
80
-
81
- export const buildFieldsFromAnonCredsProofRequestTemplate = (
82
- data: AnonCredsProofRequestTemplatePayloadData
83
- ): Array<Field> => {
84
- const fields = []
85
- if (data.requestedAttributes) {
86
- for (const item of data.requestedAttributes) {
87
- if (item.name) {
88
- fields.push(new Attribute({ name: item.name, value: null, ...item }))
89
- }
90
- if (item.names) {
91
- for (const name of item.names) {
92
- fields.push(new Attribute({ name, value: null, ...item }))
93
- }
94
- }
95
- }
96
- }
97
- if (data.requestedPredicates) {
98
- for (const item of data.requestedPredicates) {
99
- fields.push(
100
- new Predicate({
101
- pType: item.predicateType,
102
- pValue: item.predicateValue,
103
- ...item,
104
- })
105
- )
106
- }
107
- }
108
- return fields
109
- }
110
-
111
- export const buildFieldsFromSharedAnonCredsProof = (data: CredentialSharedProofData): Array<Field> => {
112
- const fields = []
113
- for (const attribute of data.sharedAttributes) {
114
- fields.push(
115
- new Attribute({
116
- name: attribute.name,
117
- value: attribute.value,
118
- })
119
- )
120
- }
121
- for (const attributesGroup of data.sharedAttributeGroups) {
122
- for (const attribute of attributesGroup.attributes) {
123
- fields.push(
124
- new Attribute({
125
- name: attribute.name,
126
- value: attribute.value,
127
- })
128
- )
129
- }
130
- }
131
- for (const predicate of data.resolvedPredicates) {
132
- fields.push(
133
- new Predicate({
134
- name: predicate.name,
135
- pType: predicate.predicateType,
136
- pValue: predicate.predicateValue,
137
- satisfied: true,
138
- })
139
- )
140
- }
141
- return fields
142
- }
143
-
144
- export const buildOverlayFromW3cCredential = async ({
145
- credentialDisplay,
146
- language,
147
- resolver,
148
- }: {
149
- credentialDisplay: W3cCredentialDisplay
150
- language: string
151
- resolver: OCABundleResolverType
152
- }): Promise<CredentialOverlay<BrandingOverlay>> => {
153
- const params: OCABundleResolveAllParams = {
154
- identifiers: {
155
- schemaId: '',
156
- credentialDefinitionId: credentialDisplay.id,
157
- },
158
- meta: {
159
- alias: credentialDisplay.display.issuer.name,
160
- credConnectionId: undefined,
161
- credName: credentialDisplay.display.name,
162
- },
163
- attributes: buildFieldsFromW3cCredsCredential(credentialDisplay),
164
- language,
165
- }
166
-
167
- const bundle = await resolver.resolveAllBundles(params)
168
-
169
- return {
170
- ...(bundle as CredentialOverlay<BrandingOverlay>),
171
- presentationFields: buildFieldsFromW3cCredsCredential(credentialDisplay),
172
- }
173
- }
@@ -1,111 +0,0 @@
1
- export type ParseInvitationResult =
2
- | {
3
- success: true
4
- result: ParsedInvitation
5
- }
6
- | {
7
- success: false
8
- error: string
9
- }
10
-
11
- export type ParsedInvitation = {
12
- type: 'didcomm' | 'openid-credential-offer' | 'openid-authorization-request'
13
- format: 'url' | 'parsed'
14
- data: string | Record<string, unknown>
15
- }
16
-
17
- export enum InvitationQrTypes {
18
- OPENID_INITIATE_ISSUANCE = 'openid-initiate-issuance://',
19
- OPENID_CREDENTIAL_OFFER = 'openid-credential-offer://',
20
- // TODO: I think we should not support openid://, as we mainly support openid4vp
21
- // But older requests do use openid:// I think (such as the DIIP dbc login)
22
- // but I think we're going to move to just openid4p in the future
23
- OPENID = 'openid://',
24
- OPENID4VP = 'openid4vp://',
25
- OPENID_VC = 'openid-vc://',
26
- DIDCOMM = 'didcomm://',
27
- HTTPS = 'https://',
28
- }
29
-
30
- export const isOpenIdCredentialOffer = (url: string) => {
31
- if (
32
- url.startsWith(InvitationQrTypes.OPENID_INITIATE_ISSUANCE) ||
33
- url.startsWith(InvitationQrTypes.OPENID_CREDENTIAL_OFFER)
34
- ) {
35
- return true
36
- }
37
-
38
- if (url.includes('credential_offer_uri=') || url.includes('credential_offer=')) {
39
- return true
40
- }
41
-
42
- return false
43
- }
44
-
45
- export const isOpenIdPresentationRequest = (url: string) => {
46
- if (
47
- url.startsWith(InvitationQrTypes.OPENID) ||
48
- url.startsWith(InvitationQrTypes.OPENID_VC) ||
49
- url.startsWith(InvitationQrTypes.OPENID4VP)
50
- ) {
51
- return true
52
- }
53
-
54
- if (url.includes('request_uri=') || url.includes('request=')) {
55
- return true
56
- }
57
-
58
- return false
59
- }
60
-
61
- export const isDidCommInvitation = (url: string) => {
62
- if (url.startsWith(InvitationQrTypes.DIDCOMM)) {
63
- return true
64
- }
65
-
66
- if (url.includes('c_i=') || url.includes('oob=') || url.includes('oobUrl=') || url.includes('d_m=')) {
67
- return true
68
- }
69
-
70
- return false
71
- }
72
-
73
- export async function parseInvitationUrl(invitationUrl: string): Promise<ParseInvitationResult> {
74
- if (isOpenIdCredentialOffer(invitationUrl)) {
75
- return {
76
- success: true,
77
- result: {
78
- format: 'url',
79
- type: 'openid-credential-offer',
80
- data: invitationUrl,
81
- },
82
- }
83
- }
84
-
85
- if (isOpenIdPresentationRequest(invitationUrl)) {
86
- return {
87
- success: true,
88
- result: {
89
- format: 'url',
90
- type: 'openid-authorization-request',
91
- data: invitationUrl,
92
- },
93
- }
94
- }
95
-
96
- if (isDidCommInvitation(invitationUrl)) {
97
- return {
98
- success: true,
99
- result: {
100
- format: 'url',
101
- type: 'didcomm',
102
- data: invitationUrl,
103
- },
104
- }
105
- }
106
-
107
- return {
108
- success: false,
109
- error: 'Invitation not recognized.',
110
- }
111
- }