@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.
- package/lib/commonjs/components/listItems/ContactCredentialListItem.js +9 -8
- package/lib/commonjs/components/listItems/ContactCredentialListItem.js.map +1 -1
- package/lib/commonjs/components/misc/CredentialCard11Logo.js +8 -7
- package/lib/commonjs/components/misc/CredentialCard11Logo.js.map +1 -1
- package/lib/commonjs/components/misc/PINHeader.js +5 -3
- package/lib/commonjs/components/misc/PINHeader.js.map +1 -1
- package/lib/commonjs/contexts/network.js +10 -9
- package/lib/commonjs/contexts/network.js.map +1 -1
- package/lib/commonjs/contexts/reducers/store.js +3 -2
- package/lib/commonjs/contexts/reducers/store.js.map +1 -1
- package/lib/commonjs/contexts/theme.js +7 -6
- package/lib/commonjs/contexts/theme.js.map +1 -1
- package/lib/commonjs/index.js +127 -104
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/modules/openid/components/CredentialRowCard.js +9 -7
- package/lib/commonjs/modules/openid/components/CredentialRowCard.js.map +1 -1
- package/lib/commonjs/modules/openid/context/OpenIDCredentialRecordProvider.js +9 -8
- package/lib/commonjs/modules/openid/context/OpenIDCredentialRecordProvider.js.map +1 -1
- package/lib/commonjs/screens/AttemptLockout.js +27 -35
- package/lib/commonjs/screens/AttemptLockout.js.map +1 -1
- package/lib/commonjs/screens/ConfigureMediator.js +22 -21
- package/lib/commonjs/screens/ConfigureMediator.js.map +1 -1
- package/lib/commonjs/screens/JSONDetails.js +16 -15
- package/lib/commonjs/screens/JSONDetails.js.map +1 -1
- package/lib/commonjs/screens/MobileVerifierLoading.js +4 -3
- package/lib/commonjs/screens/MobileVerifierLoading.js.map +1 -1
- package/lib/commonjs/screens/PINCreate.js +3 -10
- package/lib/commonjs/screens/PINCreate.js.map +1 -1
- package/lib/commonjs/screens/WhatAreContacts.js +3 -2
- package/lib/commonjs/screens/WhatAreContacts.js.map +1 -1
- package/lib/commonjs/services/logger.js +35 -27
- package/lib/commonjs/services/logger.js.map +1 -1
- package/lib/module/components/listItems/ContactCredentialListItem.js +3 -3
- package/lib/module/components/listItems/ContactCredentialListItem.js.map +1 -1
- package/lib/module/components/misc/CredentialCard11Logo.js +5 -4
- package/lib/module/components/misc/CredentialCard11Logo.js.map +1 -1
- package/lib/module/components/misc/PINHeader.js +2 -1
- package/lib/module/components/misc/PINHeader.js.map +1 -1
- package/lib/module/contexts/network.js +3 -3
- package/lib/module/contexts/network.js.map +1 -1
- package/lib/module/contexts/reducers/store.js +3 -2
- package/lib/module/contexts/reducers/store.js.map +1 -1
- package/lib/module/contexts/theme.js +2 -2
- package/lib/module/contexts/theme.js.map +1 -1
- package/lib/module/index.js +43 -45
- package/lib/module/index.js.map +1 -1
- package/lib/module/modules/openid/components/CredentialRowCard.js +2 -1
- package/lib/module/modules/openid/components/CredentialRowCard.js.map +1 -1
- package/lib/module/modules/openid/context/OpenIDCredentialRecordProvider.js +5 -5
- package/lib/module/modules/openid/context/OpenIDCredentialRecordProvider.js.map +1 -1
- package/lib/module/screens/AttemptLockout.js +28 -36
- package/lib/module/screens/AttemptLockout.js.map +1 -1
- package/lib/module/screens/ConfigureMediator.js +10 -10
- package/lib/module/screens/ConfigureMediator.js.map +1 -1
- package/lib/module/screens/JSONDetails.js +9 -8
- package/lib/module/screens/JSONDetails.js.map +1 -1
- package/lib/module/screens/MobileVerifierLoading.js +4 -3
- package/lib/module/screens/MobileVerifierLoading.js.map +1 -1
- package/lib/module/screens/PINCreate.js +3 -10
- package/lib/module/screens/PINCreate.js.map +1 -1
- package/lib/module/screens/WhatAreContacts.js +3 -2
- package/lib/module/screens/WhatAreContacts.js.map +1 -1
- package/lib/module/services/logger.js +37 -28
- package/lib/module/services/logger.js.map +1 -1
- package/lib/typescript/src/components/listItems/ContactCredentialListItem.d.ts +2 -1
- package/lib/typescript/src/components/listItems/ContactCredentialListItem.d.ts.map +1 -1
- package/lib/typescript/src/components/misc/CredentialCard11Logo.d.ts +1 -0
- package/lib/typescript/src/components/misc/CredentialCard11Logo.d.ts.map +1 -1
- package/lib/typescript/src/components/misc/PINHeader.d.ts +2 -1
- package/lib/typescript/src/components/misc/PINHeader.d.ts.map +1 -1
- package/lib/typescript/src/contexts/network.d.ts +3 -3
- package/lib/typescript/src/contexts/network.d.ts.map +1 -1
- package/lib/typescript/src/contexts/reducers/store.d.ts.map +1 -1
- package/lib/typescript/src/contexts/theme.d.ts +2 -1
- package/lib/typescript/src/contexts/theme.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +58 -61
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/components/CredentialRowCard.d.ts +2 -1
- package/lib/typescript/src/modules/openid/components/CredentialRowCard.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/context/OpenIDCredentialRecordProvider.d.ts +3 -3
- package/lib/typescript/src/modules/openid/context/OpenIDCredentialRecordProvider.d.ts.map +1 -1
- package/lib/typescript/src/screens/AttemptLockout.d.ts.map +1 -1
- package/lib/typescript/src/screens/ConfigureMediator.d.ts +2 -1
- package/lib/typescript/src/screens/ConfigureMediator.d.ts.map +1 -1
- package/lib/typescript/src/screens/JSONDetails.d.ts +2 -1
- package/lib/typescript/src/screens/JSONDetails.d.ts.map +1 -1
- package/lib/typescript/src/screens/MobileVerifierLoading.d.ts.map +1 -1
- package/lib/typescript/src/screens/PINCreate.d.ts.map +1 -1
- package/lib/typescript/src/screens/WhatAreContacts.d.ts.map +1 -1
- package/lib/typescript/src/services/logger.d.ts +7 -8
- package/lib/typescript/src/services/logger.d.ts.map +1 -1
- package/package.json +5 -6
- package/src/App.tsx +0 -79
- package/src/animated-components.ts +0 -30
- package/src/assets/fonts/MaterialIcons.ttf +0 -0
- package/src/assets/icons/code.svg +0 -4
- package/src/assets/icons/large-arrow.svg +0 -5
- package/src/assets/icons/pencil.svg +0 -15
- package/src/assets/icons/trash.svg +0 -31
- package/src/assets/img/Artwork_1024x1024.png +0 -0
- package/src/assets/img/HistoryCardAcceptedIcon.svg +0 -4
- package/src/assets/img/HistoryCardExpiredIcon.svg +0 -4
- package/src/assets/img/HistoryCardRevokedIcon.svg +0 -4
- package/src/assets/img/HistoryInformationSentIcon.svg +0 -4
- package/src/assets/img/HistoryPinUpdatedIcon.svg +0 -4
- package/src/assets/img/IconChevronRight.svg +0 -5
- package/src/assets/img/activity-indicator-circle.svg +0 -90
- package/src/assets/img/app-lockout.svg +0 -1
- package/src/assets/img/biometrics.svg +0 -74
- package/src/assets/img/chat-loading.svg +0 -1
- package/src/assets/img/check-in-circle.svg +0 -18
- package/src/assets/img/connection-pending.svg +0 -112
- package/src/assets/img/contact-book.svg +0 -21
- package/src/assets/img/credential-card.svg +0 -18
- package/src/assets/img/credential-declined.svg +0 -28
- package/src/assets/img/credential-in-hand.svg +0 -48
- package/src/assets/img/credential-list.svg +0 -60
- package/src/assets/img/credential-pending.svg +0 -96
- package/src/assets/img/credential-success.svg +0 -48
- package/src/assets/img/delete-notification.svg +0 -1
- package/src/assets/img/empty-wallet.svg +0 -23
- package/src/assets/img/error-filled.svg +0 -12
- package/src/assets/img/exclamation-mark.svg +0 -17
- package/src/assets/img/home-center-img.svg +0 -71
- package/src/assets/img/icon-credential-offer-dark.svg +0 -7
- package/src/assets/img/icon-credential-offer-light.svg +0 -7
- package/src/assets/img/icon-info-recieved-dark.svg +0 -8
- package/src/assets/img/icon-info-recieved-light.svg +0 -8
- package/src/assets/img/icon-info-sent-dark.svg +0 -8
- package/src/assets/img/icon-info-sent-light.svg +0 -8
- package/src/assets/img/icon-proof-request-dark.svg +0 -11
- package/src/assets/img/icon-proof-request-light.svg +0 -11
- package/src/assets/img/information-received.svg +0 -1
- package/src/assets/img/logo-large.png +0 -0
- package/src/assets/img/logo-large@2x.png +0 -0
- package/src/assets/img/logo-large@3x.png +0 -0
- package/src/assets/img/logo.svg +0 -15
- package/src/assets/img/message-text-icon-outline.svg +0 -1
- package/src/assets/img/message-text-icon.svg +0 -1
- package/src/assets/img/no_information_shared.svg +0 -36
- package/src/assets/img/preface.svg +0 -15
- package/src/assets/img/proof-declined.svg +0 -66
- package/src/assets/img/proof-pending.svg +0 -61
- package/src/assets/img/proof-success.svg +0 -72
- package/src/assets/img/push-notifications.svg +0 -1
- package/src/assets/img/qrcode-scan-icon.svg +0 -1
- package/src/assets/img/scan-share.svg +0 -102
- package/src/assets/img/secure-check.svg +0 -4
- package/src/assets/img/secure-image.svg +0 -64
- package/src/assets/img/update-available.svg +0 -26
- package/src/assets/img/verifier-request-declined.svg +0 -34
- package/src/assets/img/wallet-back.svg +0 -20
- package/src/assets/img/wallet-front.svg +0 -32
- package/src/assets/img/wallet-icon-outline.svg +0 -1
- package/src/assets/img/wallet-icon.svg +0 -1
- package/src/assets/img/wallet.svg +0 -43
- package/src/assets/oca-bundles.json +0 -174
- package/src/components/animated/ButtonLoading.tsx +0 -32
- package/src/components/animated/ConnectionLoading.tsx +0 -53
- package/src/components/animated/CredentialAdded.tsx +0 -72
- package/src/components/animated/CredentialPending.tsx +0 -63
- package/src/components/animated/LoadingIndicator.tsx +0 -49
- package/src/components/animated/PresentationLoading.tsx +0 -52
- package/src/components/animated/RecordLoading.tsx +0 -75
- package/src/components/animated/SendingProof.tsx +0 -53
- package/src/components/animated/SentProof.tsx +0 -72
- package/src/components/buttons/Button-api.tsx +0 -46
- package/src/components/buttons/Button.tsx +0 -125
- package/src/components/buttons/HeaderHome.tsx +0 -25
- package/src/components/buttons/IconButton.tsx +0 -93
- package/src/components/buttons/InfoIcon.tsx +0 -35
- package/src/components/buttons/SettingsMenu.tsx +0 -26
- package/src/components/buttons/ToggleButton.tsx +0 -93
- package/src/components/buttons/index.ts +0 -4
- package/src/components/chat/ActionSlider.tsx +0 -104
- package/src/components/chat/ChatActions.tsx +0 -33
- package/src/components/chat/ChatBubble.tsx +0 -20
- package/src/components/chat/ChatEvent.tsx +0 -31
- package/src/components/chat/ChatMessage.tsx +0 -142
- package/src/components/chat/MessageInput.tsx +0 -46
- package/src/components/chat/index.ts +0 -4
- package/src/components/forms/WalletNameForm.tsx +0 -148
- package/src/components/index.ts +0 -4
- package/src/components/inputs/BiometryControl.tsx +0 -190
- package/src/components/inputs/BulletPoint.tsx +0 -32
- package/src/components/inputs/CheckBoxRow.tsx +0 -67
- package/src/components/inputs/InlineErrorText.tsx +0 -60
- package/src/components/inputs/LimitedTextInput.tsx +0 -71
- package/src/components/inputs/PINInput.tsx +0 -175
- package/src/components/inputs/SingleSelectBlock.tsx +0 -53
- package/src/components/listItems/ContactCredentialListItem.tsx +0 -79
- package/src/components/listItems/ContactListItem.tsx +0 -121
- package/src/components/listItems/NotificationListItem.tsx +0 -514
- package/src/components/misc/AvatarView.tsx +0 -33
- package/src/components/misc/CardWatermark.tsx +0 -52
- package/src/components/misc/ConnectionAlert.tsx +0 -123
- package/src/components/misc/ConnectionImage.tsx +0 -45
- package/src/components/misc/ContentGradient.tsx +0 -40
- package/src/components/misc/CredentialCard.tsx +0 -161
- package/src/components/misc/CredentialCard10.tsx +0 -329
- package/src/components/misc/CredentialCard11.tsx +0 -701
- package/src/components/misc/CredentialCard11ActionFooter.tsx +0 -55
- package/src/components/misc/CredentialCard11Issuer.tsx +0 -74
- package/src/components/misc/CredentialCard11Logo.tsx +0 -61
- package/src/components/misc/EmptyList.tsx +0 -27
- package/src/components/misc/EmptyListContacts.tsx +0 -55
- package/src/components/misc/ErrorBoundary.tsx +0 -200
- package/src/components/misc/FauxHeader.tsx +0 -75
- package/src/components/misc/InfoBox.tsx +0 -283
- package/src/components/misc/NoNewUpdates.tsx +0 -38
- package/src/components/misc/PINHeader.tsx +0 -25
- package/src/components/misc/PINValidationHelper.tsx +0 -48
- package/src/components/misc/Pagination.tsx +0 -114
- package/src/components/misc/QRRenderer.tsx +0 -53
- package/src/components/misc/QRScanner.tsx +0 -395
- package/src/components/misc/QRScannerTorch.tsx +0 -74
- package/src/components/misc/ScanCamera.tsx +0 -86
- package/src/components/misc/ScanTab.tsx +0 -45
- package/src/components/misc/SharedProofData.tsx +0 -98
- package/src/components/misc/UnorderedList.tsx +0 -28
- package/src/components/misc/VerifierCredentialCard.tsx +0 -378
- package/src/components/misc/index.ts +0 -2
- package/src/components/modals/AlertModal.tsx +0 -42
- package/src/components/modals/AppGuideModal.tsx +0 -142
- package/src/components/modals/CameraDisclosureModal.tsx +0 -126
- package/src/components/modals/CommonRemoveModal.tsx +0 -337
- package/src/components/modals/DeveloperModal.tsx +0 -32
- package/src/components/modals/DismissiblePopupModal.tsx +0 -169
- package/src/components/modals/ErrorModal.tsx +0 -107
- package/src/components/modals/ImageModal.tsx +0 -80
- package/src/components/modals/NetInfoModal.tsx +0 -35
- package/src/components/modals/PopupModal.tsx +0 -56
- package/src/components/modals/ProofCancelModal.tsx +0 -79
- package/src/components/modals/SafeAreaModal.tsx +0 -17
- package/src/components/record/Record.tsx +0 -100
- package/src/components/record/RecordBinaryField.tsx +0 -55
- package/src/components/record/RecordDateIntField.tsx +0 -63
- package/src/components/record/RecordField.tsx +0 -154
- package/src/components/record/RecordFooter.tsx +0 -17
- package/src/components/record/RecordHeader.tsx +0 -17
- package/src/components/record/RecordRemove.tsx +0 -66
- package/src/components/texts/HeaderTitle.tsx +0 -25
- package/src/components/texts/HighlightTextBox.tsx +0 -41
- package/src/components/texts/InfoTextBox.tsx +0 -129
- package/src/components/texts/Link.tsx +0 -41
- package/src/components/texts/Text.tsx +0 -21
- package/src/components/texts/ThemedText.tsx +0 -24
- package/src/components/toast/BaseToast.tsx +0 -128
- package/src/components/toast/ToastConfig.tsx +0 -21
- package/src/components/tour/AttachTourStep.tsx +0 -73
- package/src/components/tour/CredentialOfferTourSteps.tsx +0 -41
- package/src/components/tour/CredentialsTourSteps.tsx +0 -41
- package/src/components/tour/HomeTourSteps.tsx +0 -104
- package/src/components/tour/ProofRequestTourSteps.tsx +0 -41
- package/src/components/tour/SpotCutout.tsx +0 -65
- package/src/components/tour/TourBox.tsx +0 -255
- package/src/components/tour/TourOverlay.tsx +0 -134
- package/src/components/views/Banner.tsx +0 -181
- package/src/components/views/CredentialCardLogo.tsx +0 -77
- package/src/components/views/CredentialDetailPrimaryHeader.tsx +0 -107
- package/src/components/views/CredentialDetailSecondaryHeader.tsx +0 -60
- package/src/components/views/HeaderWithBanner.tsx +0 -17
- package/src/components/views/HomeFooterView.tsx +0 -110
- package/src/components/views/HomeHeaderView.tsx +0 -12
- package/src/components/views/KeyboardView.tsx +0 -41
- package/src/components/views/LoadingPlaceholder.tsx +0 -168
- package/src/components/views/LoadingView.tsx +0 -29
- package/src/components/views/ProgressBar.tsx +0 -53
- package/src/components/views/PushNotificationsContent.tsx +0 -51
- package/src/components/views/PushNotificationsDisabledContent.tsx +0 -47
- package/src/configs/ledgers/indy/index.ts +0 -8
- package/src/configs/ledgers/indy/ledgers.json +0 -51
- package/src/constants.ts +0 -107
- package/src/container-api.ts +0 -247
- package/src/container-impl.ts +0 -243
- package/src/contexts/activity.tsx +0 -145
- package/src/contexts/animated-components.ts +0 -9
- package/src/contexts/auth.tsx +0 -240
- package/src/contexts/index.ts +0 -3
- package/src/contexts/navigation.tsx +0 -19
- package/src/contexts/network.tsx +0 -125
- package/src/contexts/reducers/index.ts +0 -3
- package/src/contexts/reducers/store.ts +0 -754
- package/src/contexts/store.tsx +0 -103
- package/src/contexts/theme.tsx +0 -51
- package/src/contexts/tour/tour-context.tsx +0 -160
- package/src/contexts/tour/tour-provider.tsx +0 -160
- package/src/hooks/bundle-resolver.ts +0 -95
- package/src/hooks/chat-messages.tsx +0 -263
- package/src/hooks/connections.ts +0 -37
- package/src/hooks/credential-card-styles.ts +0 -144
- package/src/hooks/credentials.ts +0 -11
- package/src/hooks/deep-links.ts +0 -49
- package/src/hooks/developer-mode.ts +0 -25
- package/src/hooks/lockout.ts +0 -77
- package/src/hooks/notifications.ts +0 -108
- package/src/hooks/oob.ts +0 -17
- package/src/hooks/proof-request-templates.ts +0 -40
- package/src/hooks/proofs.ts +0 -32
- package/src/hooks/screen-capture.ts +0 -52
- package/src/hooks/useBifoldAgentSetup.ts +0 -169
- package/src/hooks/useOnboardingState.ts +0 -53
- package/src/hooks/usePINValidation.ts +0 -98
- package/src/index.ts +0 -239
- package/src/layout/ScreenLayout.tsx +0 -53
- package/src/localization/en/en.json +0 -951
- package/src/localization/en/index.ts +0 -3
- package/src/localization/fr/fr.json +0 -933
- package/src/localization/fr/index.ts +0 -3
- package/src/localization/index.ts +0 -66
- package/src/localization/pt-br/index.ts +0 -3
- package/src/localization/pt-br/pt-br.json +0 -911
- package/src/modules/history/context/historyManager.tsx +0 -247
- package/src/modules/history/index.ts +0 -2
- package/src/modules/history/navigation/HistoryStack.tsx +0 -29
- package/src/modules/history/services/queue.service.tsx +0 -31
- package/src/modules/history/types/index.ts +0 -92
- package/src/modules/history/ui/HistoryPage.tsx +0 -133
- package/src/modules/history/ui/HistorySettings.tsx +0 -183
- package/src/modules/history/ui/assets/img/HistoryCardAcceptedIcon.svg +0 -4
- package/src/modules/history/ui/assets/img/HistoryCardExpiredIcon.svg +0 -4
- package/src/modules/history/ui/assets/img/HistoryCardRevokedIcon.svg +0 -4
- package/src/modules/history/ui/assets/img/HistoryInformationSentIcon.svg +0 -4
- package/src/modules/history/ui/assets/img/HistoryPinUpdatedIcon.svg +0 -4
- package/src/modules/history/ui/assets/img/IconChevronRight.svg +0 -3
- package/src/modules/history/ui/components/BulletPoint.tsx +0 -49
- package/src/modules/history/ui/components/HistoryListItem.tsx +0 -251
- package/src/modules/history/ui/components/HistoryMenu.tsx +0 -25
- package/src/modules/history/ui/components/SingleSelectBlock.tsx +0 -72
- package/src/modules/openid/components/CredentialRowCard.tsx +0 -64
- package/src/modules/openid/components/OpenIDCredentialCard.tsx +0 -276
- package/src/modules/openid/context/OpenIDCredentialRecordProvider.tsx +0 -296
- package/src/modules/openid/display.tsx +0 -467
- package/src/modules/openid/displayProof.tsx +0 -86
- package/src/modules/openid/hooks/openid.tsx +0 -111
- package/src/modules/openid/metadata.tsx +0 -59
- package/src/modules/openid/offerResolve.tsx +0 -281
- package/src/modules/openid/resolverProof.tsx +0 -286
- package/src/modules/openid/screens/OpenIDCredentialDetails.tsx +0 -214
- package/src/modules/openid/screens/OpenIDCredentialOffer.tsx +0 -192
- package/src/modules/openid/screens/OpenIDProofChangeCredential.tsx +0 -133
- package/src/modules/openid/screens/OpenIDProofPresentation.tsx +0 -423
- package/src/modules/openid/types.tsx +0 -111
- package/src/modules/openid/utils/utils.tsx +0 -119
- package/src/navigators/ConnectStack.tsx +0 -68
- package/src/navigators/ContactStack.tsx +0 -91
- package/src/navigators/CredentialStack.tsx +0 -48
- package/src/navigators/DeliveryStack.tsx +0 -76
- package/src/navigators/HomeStack.tsx +0 -37
- package/src/navigators/MainStack.tsx +0 -146
- package/src/navigators/NotificationStack.tsx +0 -56
- package/src/navigators/OnboardingScreens.ts +0 -142
- package/src/navigators/OnboardingStack.tsx +0 -205
- package/src/navigators/ProofRequestStack.tsx +0 -113
- package/src/navigators/RootStack.tsx +0 -71
- package/src/navigators/SettingStack.tsx +0 -174
- package/src/navigators/TabStack.tsx +0 -304
- package/src/navigators/defaultLayoutOptions.tsx +0 -17
- package/src/navigators/defaultStackOptions.tsx +0 -102
- package/src/navigators/index.ts +0 -27
- package/src/onboarding.ts +0 -90
- package/src/screens/AttemptLockout.tsx +0 -153
- package/src/screens/AutoLock.tsx +0 -140
- package/src/screens/Biometry.tsx +0 -54
- package/src/screens/Chat.tsx +0 -141
- package/src/screens/ConfigureMediator.tsx +0 -160
- package/src/screens/Connection.tsx +0 -394
- package/src/screens/ContactDetails.tsx +0 -350
- package/src/screens/CredentialDetails.tsx +0 -473
- package/src/screens/CredentialOffer.tsx +0 -334
- package/src/screens/CredentialOfferAccept.tsx +0 -189
- package/src/screens/DataRetention.tsx +0 -91
- package/src/screens/Developer.tsx +0 -289
- package/src/screens/Home.tsx +0 -173
- package/src/screens/JSONDetails.tsx +0 -104
- package/src/screens/Language.tsx +0 -97
- package/src/screens/ListContacts.tsx +0 -112
- package/src/screens/ListCredentials.tsx +0 -135
- package/src/screens/ListProofRequests.tsx +0 -148
- package/src/screens/MobileVerifierLoading.tsx +0 -106
- package/src/screens/NameWallet.tsx +0 -9
- package/src/screens/Onboarding.tsx +0 -162
- package/src/screens/OnboardingPages.tsx +0 -160
- package/src/screens/PINChange.tsx +0 -249
- package/src/screens/PINCreate.tsx +0 -185
- package/src/screens/PINEnter.tsx +0 -432
- package/src/screens/PINExplainer.tsx +0 -85
- package/src/screens/PINVerify.tsx +0 -195
- package/src/screens/PasteUrl.tsx +0 -140
- package/src/screens/Preface.tsx +0 -78
- package/src/screens/ProofChangeCredential.tsx +0 -179
- package/src/screens/ProofDetails.tsx +0 -348
- package/src/screens/ProofRequest.tsx +0 -999
- package/src/screens/ProofRequestAccept.tsx +0 -133
- package/src/screens/ProofRequestDetails.tsx +0 -270
- package/src/screens/ProofRequestUsageHistory.tsx +0 -152
- package/src/screens/ProofRequesting.tsx +0 -245
- package/src/screens/PushNotifications.tsx +0 -59
- package/src/screens/RenameContact.tsx +0 -155
- package/src/screens/RenameWallet.tsx +0 -26
- package/src/screens/Scan.tsx +0 -145
- package/src/screens/ScanHelp.tsx +0 -48
- package/src/screens/Settings.tsx +0 -415
- package/src/screens/Splash.tsx +0 -80
- package/src/screens/Terms.tsx +0 -127
- package/src/screens/ToggleBiometry.tsx +0 -153
- package/src/screens/TogglePushNotifications.tsx +0 -118
- package/src/screens/Tours.tsx +0 -93
- package/src/screens/UpdateAvailable.tsx +0 -119
- package/src/screens/WhatAreContacts.tsx +0 -71
- package/src/services/bifoldLogger.ts +0 -3
- package/src/services/keychain.ts +0 -184
- package/src/services/logger.ts +0 -89
- package/src/services/storage.ts +0 -136
- package/src/theme-builder.ts +0 -157
- package/src/theme.interface.ts +0 -580
- package/src/theme.ts +0 -1346
- package/src/types/attempt-lockout-config.ts +0 -8
- package/src/types/attestation.ts +0 -17
- package/src/types/chat.ts +0 -4
- package/src/types/config.ts +0 -64
- package/src/types/contact-details.ts +0 -5
- package/src/types/credential-list-footer.ts +0 -3
- package/src/types/credential-status.ts +0 -3
- package/src/types/credentials.ts +0 -7
- package/src/types/decline.ts +0 -5
- package/src/types/error.ts +0 -40
- package/src/types/fn.ts +0 -2
- package/src/types/genesis.ts +0 -35
- package/src/types/index.ts +0 -2
- package/src/types/metadata.ts +0 -16
- package/src/types/navigators.ts +0 -239
- package/src/types/notification.ts +0 -24
- package/src/types/permissions.ts +0 -2
- package/src/types/proof-items.ts +0 -32
- package/src/types/react-i18next.d.ts +0 -10
- package/src/types/remove.ts +0 -8
- package/src/types/security.ts +0 -32
- package/src/types/settings.ts +0 -28
- package/src/types/state.ts +0 -97
- package/src/types/tour.ts +0 -20
- package/src/types/version-check.ts +0 -18
- package/src/utils/PINValidation.ts +0 -98
- package/src/utils/agent.ts +0 -128
- package/src/utils/anonCredsProofRequestMapper.ts +0 -205
- package/src/utils/contacts.ts +0 -59
- package/src/utils/cred-def.ts +0 -33
- package/src/utils/credential.ts +0 -37
- package/src/utils/crypto.ts +0 -12
- package/src/utils/fileCache.ts +0 -152
- package/src/utils/helpers.ts +0 -1292
- package/src/utils/ledger.ts +0 -212
- package/src/utils/luminance.ts +0 -40
- package/src/utils/mediatorhelpers.ts +0 -71
- package/src/utils/migration.ts +0 -40
- package/src/utils/network.tsx +0 -55
- package/src/utils/oca.ts +0 -173
- package/src/utils/parsers.tsx +0 -111
- package/src/utils/proofBundle.ts +0 -220
- package/src/utils/schema.ts +0 -28
- package/src/utils/testable.ts +0 -17
package/src/types/state.ts
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { BannerMessage } from '../components/views/Banner'
|
|
2
|
-
|
|
3
|
-
export interface Onboarding {
|
|
4
|
-
didSeePreface: boolean
|
|
5
|
-
didCompleteTutorial: boolean
|
|
6
|
-
didAgreeToTerms: boolean | string
|
|
7
|
-
didCreatePIN: boolean
|
|
8
|
-
didConsiderBiometry: boolean
|
|
9
|
-
didConsiderPushNotifications: boolean
|
|
10
|
-
didNameWallet: boolean
|
|
11
|
-
onboardingVersion: number
|
|
12
|
-
didCompleteOnboarding: boolean
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export interface Migration {
|
|
16
|
-
didMigrateToAskar: boolean
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface Preferences {
|
|
20
|
-
useBiometry: boolean
|
|
21
|
-
usePushNotifications: boolean
|
|
22
|
-
biometryPreferencesUpdated: boolean
|
|
23
|
-
developerModeEnabled: boolean
|
|
24
|
-
useVerifierCapability?: boolean
|
|
25
|
-
useConnectionInviterCapability?: boolean
|
|
26
|
-
useDevVerifierTemplates?: boolean
|
|
27
|
-
enableWalletNaming: boolean
|
|
28
|
-
walletName: string
|
|
29
|
-
acceptDevCredentials: boolean
|
|
30
|
-
useDataRetention: boolean
|
|
31
|
-
disableDataRetentionOption?: boolean
|
|
32
|
-
preventAutoLock: boolean
|
|
33
|
-
enableShareableLink: boolean
|
|
34
|
-
alternateContactNames: Record<string, string>
|
|
35
|
-
autoLockTime: number
|
|
36
|
-
theme?: string
|
|
37
|
-
selectedMediator: string
|
|
38
|
-
availableMediators: string[]
|
|
39
|
-
bannerMessages: BannerMessage[]
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export interface Tours {
|
|
43
|
-
seenToursPrompt: boolean
|
|
44
|
-
enableTours: boolean
|
|
45
|
-
seenHomeTour: boolean
|
|
46
|
-
seenCredentialsTour: boolean
|
|
47
|
-
seenCredentialOfferTour: boolean
|
|
48
|
-
seenProofRequestTour: boolean
|
|
49
|
-
[key: `seen${string}Tour`]: boolean
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export interface Lockout {
|
|
53
|
-
displayNotification: boolean
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export interface LoginAttempt {
|
|
57
|
-
lockoutDate?: number
|
|
58
|
-
servedPenalty: boolean
|
|
59
|
-
loginAttempts: number
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export interface Authentication {
|
|
63
|
-
didAuthenticate: boolean
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Represents information about latest the
|
|
68
|
-
* available version of the application.
|
|
69
|
-
*/
|
|
70
|
-
export type VersionInfo = {
|
|
71
|
-
needsUpdate: boolean
|
|
72
|
-
lastChecked?: Date
|
|
73
|
-
version?: string
|
|
74
|
-
dismissed?: boolean
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export interface State {
|
|
78
|
-
stateLoaded: boolean
|
|
79
|
-
onboarding: Onboarding
|
|
80
|
-
authentication: Authentication
|
|
81
|
-
lockout: Lockout
|
|
82
|
-
loginAttempt: LoginAttempt
|
|
83
|
-
preferences: Preferences
|
|
84
|
-
tours: Tours
|
|
85
|
-
deepLink?: string
|
|
86
|
-
migration: Migration
|
|
87
|
-
versionInfo: VersionInfo
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export type PersistentState = {
|
|
91
|
-
MigrationState: Migration
|
|
92
|
-
OnboardingState: Onboarding
|
|
93
|
-
PreferencesState: Preferences
|
|
94
|
-
historySettingsOption: boolean // TODO: Migrate to proper name (Caps)
|
|
95
|
-
language: string // TODO: Migrate to proper name (Caps)
|
|
96
|
-
Lockout: string
|
|
97
|
-
}
|
package/src/types/tour.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Makes the target optional. I.e, it can be the target type or `undefined`.
|
|
5
|
-
*/
|
|
6
|
-
export type Optional<T> = T | undefined
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* An alias of what a React child looks when passed as function.
|
|
10
|
-
*/
|
|
11
|
-
export type ChildFn<T> = (value: T) => ReactNode
|
|
12
|
-
|
|
13
|
-
export enum BaseTourID {
|
|
14
|
-
HomeTour = 'homeTourSteps',
|
|
15
|
-
CredentialsTour = 'credentialsTourSteps',
|
|
16
|
-
CredentialOfferTour = 'credentialOfferTourSteps',
|
|
17
|
-
ProofRequestTour = 'proofRequestTourSteps',
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export type TourID = `${string}TourSteps`
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { VersionInfo } from './state'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Interface defining the version check service capabilities
|
|
5
|
-
*/
|
|
6
|
-
export interface IVersionCheckService {
|
|
7
|
-
/**
|
|
8
|
-
* The date when the version was last checked
|
|
9
|
-
*/
|
|
10
|
-
readonly lastChecked: Date | undefined
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Checks if an update is available for the application
|
|
14
|
-
* @param forceCheck If true, checks for update regardless of when last check occurred
|
|
15
|
-
* @returns Current version information
|
|
16
|
-
*/
|
|
17
|
-
checkForUpdate(forceCheck?: boolean): Promise<VersionInfo | undefined>
|
|
18
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { PINValidationRules } from '../types/security'
|
|
2
|
-
|
|
3
|
-
const consecutiveSeriesOfThree = new RegExp(/012|123|234|345|456|567|678|789|987|876|765|654|543|432|321|210/)
|
|
4
|
-
const evenNumberSeries = new RegExp('(13579)')
|
|
5
|
-
const oddNumberSeries = new RegExp('(02468)')
|
|
6
|
-
const isNumber = new RegExp('^[0-9]+$')
|
|
7
|
-
const crossNumberPattern = ['159753', '159357', '951357', '951753', '357159', '357951', '753159', '753951']
|
|
8
|
-
|
|
9
|
-
export enum PINError {
|
|
10
|
-
CrossPatternValidation = 'CrossPatternValidation',
|
|
11
|
-
OddOrEvenSequenceValidation = 'OddOrEvenSequenceValidation',
|
|
12
|
-
NoRepetitionOfTheSameNumbersValidation = 'NoRepetitionOfTheSameNumbersValidation',
|
|
13
|
-
MaxAdjacentNumberRepetitionValidation = 'MaxAdjacentNumberRepetitionValidation',
|
|
14
|
-
NoRepetitionOfTheTwoSameNumbersValidation = 'NoRepetitionOfTheTwoSameNumbersValidation',
|
|
15
|
-
NoSeriesOfNumbersValidation = 'NoSeriesOfNumbersValidation',
|
|
16
|
-
PINOnlyContainDigitsValidation = 'PINOnlyContainDigitsValidation',
|
|
17
|
-
PINTooShortValidation = 'PINTooShortValidation',
|
|
18
|
-
PINTooLongValidation = 'PINTooLongValidation',
|
|
19
|
-
PINIsExpectedLength = 'PINExpectedLengthValidation',
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export interface PINValidationsType {
|
|
23
|
-
isInvalid: boolean
|
|
24
|
-
errorName: PINError
|
|
25
|
-
errorTextAddition?: Record<string, string>
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export const createPINValidations = (PIN: string, PINRules: PINValidationRules) => {
|
|
29
|
-
const PINValidations: PINValidationsType[] = []
|
|
30
|
-
|
|
31
|
-
if (PINRules.no_cross_pattern) {
|
|
32
|
-
PINValidations.push({
|
|
33
|
-
isInvalid: crossNumberPattern.includes(PIN),
|
|
34
|
-
errorName: PINError.CrossPatternValidation,
|
|
35
|
-
} as PINValidationsType)
|
|
36
|
-
}
|
|
37
|
-
if (PINRules.no_even_or_odd_series_of_numbers) {
|
|
38
|
-
PINValidations.push({
|
|
39
|
-
isInvalid: evenNumberSeries.test(PIN) || oddNumberSeries.test(PIN),
|
|
40
|
-
errorName: PINError.OddOrEvenSequenceValidation,
|
|
41
|
-
} as PINValidationsType)
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (1 == PINRules.no_repeated_numbers) {
|
|
45
|
-
const repetitionPattern = new RegExp(/(\d)\1{1,}/)
|
|
46
|
-
PINValidations.push({
|
|
47
|
-
isInvalid: repetitionPattern.test(PIN),
|
|
48
|
-
errorName: PINError.NoRepetitionOfTheSameNumbersValidation,
|
|
49
|
-
} as PINValidationsType)
|
|
50
|
-
} else if (1 < PINRules.no_repeated_numbers) {
|
|
51
|
-
const repetitionPattern = new RegExp(String.raw`(\d)\1{${PINRules.no_repeated_numbers},}`, 'g')
|
|
52
|
-
PINValidations.push({
|
|
53
|
-
isInvalid: repetitionPattern.test(PIN),
|
|
54
|
-
errorName: PINError.MaxAdjacentNumberRepetitionValidation,
|
|
55
|
-
} as PINValidationsType)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (PINRules.no_repetition_of_the_two_same_numbers) {
|
|
59
|
-
let noRepetitionOfTheTwoSameNumbers = new RegExp(/([0-9][0-9])\1{1,}/)
|
|
60
|
-
if (typeof PINRules.no_repetition_of_the_two_same_numbers === 'number') {
|
|
61
|
-
noRepetitionOfTheTwoSameNumbers = new RegExp(
|
|
62
|
-
`([0-9][0-9])\\1{${PINRules.no_repetition_of_the_two_same_numbers - 1},}`
|
|
63
|
-
)
|
|
64
|
-
}
|
|
65
|
-
PINValidations.push({
|
|
66
|
-
isInvalid: noRepetitionOfTheTwoSameNumbers.test(PIN),
|
|
67
|
-
errorName: PINError.NoRepetitionOfTheTwoSameNumbersValidation,
|
|
68
|
-
} as PINValidationsType)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (PINRules.no_series_of_numbers) {
|
|
72
|
-
PINValidations.push({
|
|
73
|
-
isInvalid: consecutiveSeriesOfThree.test(PIN),
|
|
74
|
-
errorName: PINError.NoSeriesOfNumbersValidation,
|
|
75
|
-
} as PINValidationsType)
|
|
76
|
-
}
|
|
77
|
-
if (PINRules.only_numbers) {
|
|
78
|
-
PINValidations.push({
|
|
79
|
-
isInvalid: !isNumber.test(PIN),
|
|
80
|
-
errorName: PINError.PINOnlyContainDigitsValidation,
|
|
81
|
-
} as PINValidationsType)
|
|
82
|
-
}
|
|
83
|
-
PINValidations.push({
|
|
84
|
-
isInvalid: PIN.length < PINRules.min_length || PIN.length > PINRules.max_length,
|
|
85
|
-
errorName:
|
|
86
|
-
PINRules.min_length === PINRules.max_length
|
|
87
|
-
? PINError.PINIsExpectedLength
|
|
88
|
-
: PIN.length <= PINRules.max_length
|
|
89
|
-
? PINError.PINTooShortValidation
|
|
90
|
-
: PINError.PINTooLongValidation,
|
|
91
|
-
errorTextAddition:
|
|
92
|
-
PINRules.min_length === PINRules.max_length
|
|
93
|
-
? { num: `${PINRules.min_length}` }
|
|
94
|
-
: { num: PIN.length <= PINRules.max_length ? `${PINRules.min_length - 1}` : `${PINRules.max_length + 1}` },
|
|
95
|
-
} as PINValidationsType)
|
|
96
|
-
|
|
97
|
-
return PINValidations
|
|
98
|
-
}
|
package/src/utils/agent.ts
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AnonCredsCredentialFormatService,
|
|
3
|
-
AnonCredsModule,
|
|
4
|
-
AnonCredsProofFormatService,
|
|
5
|
-
DataIntegrityCredentialFormatService,
|
|
6
|
-
LegacyIndyCredentialFormatService,
|
|
7
|
-
LegacyIndyProofFormatService,
|
|
8
|
-
V1CredentialProtocol,
|
|
9
|
-
V1ProofProtocol,
|
|
10
|
-
} from '@credo-ts/anoncreds'
|
|
11
|
-
import { AskarModule } from '@credo-ts/askar'
|
|
12
|
-
import {
|
|
13
|
-
Agent,
|
|
14
|
-
AutoAcceptCredential,
|
|
15
|
-
AutoAcceptProof,
|
|
16
|
-
ConnectionsModule,
|
|
17
|
-
CredentialsModule,
|
|
18
|
-
DifPresentationExchangeProofFormatService,
|
|
19
|
-
MediationRecipientModule,
|
|
20
|
-
MediatorPickupStrategy,
|
|
21
|
-
ProofsModule,
|
|
22
|
-
V2CredentialProtocol,
|
|
23
|
-
V2ProofProtocol,
|
|
24
|
-
} from '@credo-ts/core'
|
|
25
|
-
import { IndyVdrAnonCredsRegistry, IndyVdrModule, IndyVdrPoolConfig } from '@credo-ts/indy-vdr'
|
|
26
|
-
import { OpenId4VcHolderModule } from '@credo-ts/openid4vc'
|
|
27
|
-
import { PushNotificationsApnsModule, PushNotificationsFcmModule } from '@credo-ts/push-notifications'
|
|
28
|
-
import { useAgent } from '@credo-ts/react-hooks'
|
|
29
|
-
import { anoncreds } from '@hyperledger/anoncreds-react-native'
|
|
30
|
-
import { ariesAskar } from '@hyperledger/aries-askar-react-native'
|
|
31
|
-
import { indyVdr } from '@hyperledger/indy-vdr-react-native'
|
|
32
|
-
|
|
33
|
-
interface GetAgentModulesOptions {
|
|
34
|
-
indyNetworks: IndyVdrPoolConfig[]
|
|
35
|
-
mediatorInvitationUrl?: string
|
|
36
|
-
txnCache?: { capacity: number; expiryOffsetMs: number; path?: string }
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export type BifoldAgent = Agent<ReturnType<typeof getAgentModules>>
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Constructs the modules to be used in the agent setup
|
|
43
|
-
* @param indyNetworks
|
|
44
|
-
* @param mediatorInvitationUrl determine which mediator to use
|
|
45
|
-
* @param txnCache optional local cache config for indyvdr
|
|
46
|
-
* @returns modules to be used in agent setup
|
|
47
|
-
*/
|
|
48
|
-
export function getAgentModules({ indyNetworks, mediatorInvitationUrl, txnCache }: GetAgentModulesOptions) {
|
|
49
|
-
const indyCredentialFormat = new LegacyIndyCredentialFormatService()
|
|
50
|
-
const indyProofFormat = new LegacyIndyProofFormatService()
|
|
51
|
-
|
|
52
|
-
if (txnCache) {
|
|
53
|
-
indyVdr.setLedgerTxnCache({
|
|
54
|
-
capacity: txnCache.capacity,
|
|
55
|
-
expiry_offset_ms: txnCache.expiryOffsetMs,
|
|
56
|
-
path: txnCache.path,
|
|
57
|
-
})
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return {
|
|
61
|
-
askar: new AskarModule({
|
|
62
|
-
ariesAskar,
|
|
63
|
-
}),
|
|
64
|
-
anoncreds: new AnonCredsModule({
|
|
65
|
-
anoncreds,
|
|
66
|
-
registries: [new IndyVdrAnonCredsRegistry()],
|
|
67
|
-
}),
|
|
68
|
-
indyVdr: new IndyVdrModule({
|
|
69
|
-
indyVdr,
|
|
70
|
-
networks: indyNetworks as [IndyVdrPoolConfig],
|
|
71
|
-
}),
|
|
72
|
-
connections: new ConnectionsModule({
|
|
73
|
-
autoAcceptConnections: true,
|
|
74
|
-
}),
|
|
75
|
-
credentials: new CredentialsModule({
|
|
76
|
-
autoAcceptCredentials: AutoAcceptCredential.ContentApproved,
|
|
77
|
-
credentialProtocols: [
|
|
78
|
-
new V1CredentialProtocol({ indyCredentialFormat }),
|
|
79
|
-
new V2CredentialProtocol({
|
|
80
|
-
credentialFormats: [
|
|
81
|
-
indyCredentialFormat,
|
|
82
|
-
new AnonCredsCredentialFormatService(),
|
|
83
|
-
new DataIntegrityCredentialFormatService(),
|
|
84
|
-
],
|
|
85
|
-
}),
|
|
86
|
-
],
|
|
87
|
-
}),
|
|
88
|
-
proofs: new ProofsModule({
|
|
89
|
-
autoAcceptProofs: AutoAcceptProof.ContentApproved,
|
|
90
|
-
proofProtocols: [
|
|
91
|
-
new V1ProofProtocol({ indyProofFormat }),
|
|
92
|
-
new V2ProofProtocol({
|
|
93
|
-
proofFormats: [
|
|
94
|
-
indyProofFormat,
|
|
95
|
-
new AnonCredsProofFormatService(),
|
|
96
|
-
new DifPresentationExchangeProofFormatService(),
|
|
97
|
-
],
|
|
98
|
-
}),
|
|
99
|
-
],
|
|
100
|
-
}),
|
|
101
|
-
mediationRecipient: new MediationRecipientModule({
|
|
102
|
-
mediatorInvitationUrl: mediatorInvitationUrl,
|
|
103
|
-
mediatorPickupStrategy: MediatorPickupStrategy.Implicit,
|
|
104
|
-
}),
|
|
105
|
-
pushNotificationsFcm: new PushNotificationsFcmModule(),
|
|
106
|
-
pushNotificationsApns: new PushNotificationsApnsModule(),
|
|
107
|
-
openId4VcHolder: new OpenId4VcHolderModule(),
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
interface MyAgentContextInterface {
|
|
112
|
-
loading: boolean
|
|
113
|
-
agent: BifoldAgent
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export const useAppAgent = useAgent as () => MyAgentContextInterface
|
|
117
|
-
|
|
118
|
-
export const createLinkSecretIfRequired = async (agent: Agent) => {
|
|
119
|
-
// If we don't have any link secrets yet, we will create a
|
|
120
|
-
// default link secret that will be used for all anoncreds
|
|
121
|
-
// credential requests.
|
|
122
|
-
const linkSecretIds = await agent.modules.anoncreds.getLinkSecretIds()
|
|
123
|
-
if (linkSecretIds.length === 0) {
|
|
124
|
-
await agent.modules.anoncreds.createLinkSecret({
|
|
125
|
-
setAsDefault: true,
|
|
126
|
-
})
|
|
127
|
-
}
|
|
128
|
-
}
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AnonCredsCredentialTags,
|
|
3
|
-
AnonCredsCredentialsForProofRequest,
|
|
4
|
-
AnonCredsProofRequest,
|
|
5
|
-
AnonCredsProofRequestRestriction,
|
|
6
|
-
AnonCredsRequestedAttribute,
|
|
7
|
-
AnonCredsRequestedPredicate,
|
|
8
|
-
getAnonCredsTagsFromRecord,
|
|
9
|
-
} from '@credo-ts/anoncreds'
|
|
10
|
-
import {
|
|
11
|
-
ClaimFormat,
|
|
12
|
-
DifPexCredentialsForRequest,
|
|
13
|
-
DifPresentationExchangeDefinition,
|
|
14
|
-
DifPresentationExchangeDefinitionV2,
|
|
15
|
-
W3cCredentialRecord,
|
|
16
|
-
} from '@credo-ts/core'
|
|
17
|
-
|
|
18
|
-
import { ProofCredentialAttributes, ProofCredentialPredicates } from '../types/proof-items'
|
|
19
|
-
|
|
20
|
-
export type RecordWithMetadata = {
|
|
21
|
-
record: W3cCredentialRecord
|
|
22
|
-
anonCredsTags: AnonCredsCredentialTags
|
|
23
|
-
}
|
|
24
|
-
export type DescriptorMetadata = { [key: string]: RecordWithMetadata[] }
|
|
25
|
-
|
|
26
|
-
export interface DifPexAnonCredsProofRequest extends AnonCredsProofRequest {
|
|
27
|
-
requested_attributes: Record<string, AnonCredsRequestedAttribute & { descriptorId?: string }>
|
|
28
|
-
requested_predicates: Record<string, AnonCredsRequestedPredicate & { descriptorId?: string }>
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
type FieldV2 = NonNullable<
|
|
32
|
-
DifPresentationExchangeDefinitionV2['input_descriptors'][number]['constraints']['fields']
|
|
33
|
-
>[number]
|
|
34
|
-
|
|
35
|
-
const getPredicateTypeAndValues = (predicateFilter: NonNullable<FieldV2['filter']>) => {
|
|
36
|
-
const predicates: {
|
|
37
|
-
predicateType: AnonCredsRequestedPredicate['p_type']
|
|
38
|
-
predicateValue: AnonCredsRequestedPredicate['p_value']
|
|
39
|
-
}[] = []
|
|
40
|
-
|
|
41
|
-
const supportedJsonSchemaNumericRangeProperties: Record<string, AnonCredsRequestedPredicate['p_type']> = {
|
|
42
|
-
exclusiveMinimum: '>',
|
|
43
|
-
exclusiveMaximum: '<',
|
|
44
|
-
minimum: '>=',
|
|
45
|
-
maximum: '<=',
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
for (const [key, value] of Object.entries(predicateFilter)) {
|
|
49
|
-
if (key === 'type') continue
|
|
50
|
-
|
|
51
|
-
const predicateType = supportedJsonSchemaNumericRangeProperties[key]
|
|
52
|
-
if (!predicateType) throw new Error(`Unsupported predicate filter property '${key}'`)
|
|
53
|
-
predicates.push({ predicateType, predicateValue: value })
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return predicates
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const getClaimNameForField = (field: FieldV2) => {
|
|
60
|
-
if (!field.path) throw new Error('Field path is required')
|
|
61
|
-
const baseClaimPath = '$.credentialSubject.'
|
|
62
|
-
const claimPaths = field.path.filter((path) => path.startsWith(baseClaimPath))
|
|
63
|
-
if (claimPaths.length === 0) return undefined
|
|
64
|
-
|
|
65
|
-
const claimNames = claimPaths.map((path) => path.slice(baseClaimPath.length))
|
|
66
|
-
const propertyName = claimNames[0]
|
|
67
|
-
|
|
68
|
-
return propertyName
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export type ProcessedAttributes = { [key: string]: ProofCredentialAttributes }
|
|
72
|
-
export type ProcessedPredicates = { [key: string]: ProofCredentialPredicates }
|
|
73
|
-
|
|
74
|
-
export const createAnonCredsProofRequest = (
|
|
75
|
-
presentationDefinition: DifPresentationExchangeDefinition,
|
|
76
|
-
descriptorMetadata: DescriptorMetadata
|
|
77
|
-
) => {
|
|
78
|
-
const anonCredsProofRequest: DifPexAnonCredsProofRequest = {
|
|
79
|
-
version: '1.0',
|
|
80
|
-
name: presentationDefinition.name ?? 'Proof request',
|
|
81
|
-
nonce: 'nonce',
|
|
82
|
-
requested_attributes: {},
|
|
83
|
-
requested_predicates: {},
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const nonRevokedTime = Math.floor(Date.now() / 1000)
|
|
87
|
-
const nonRevokedInterval = { from: nonRevokedTime, to: nonRevokedTime }
|
|
88
|
-
|
|
89
|
-
for (const descriptor of presentationDefinition.input_descriptors) {
|
|
90
|
-
const referent = descriptor.id
|
|
91
|
-
let predicateReferentIndex = 0
|
|
92
|
-
|
|
93
|
-
const fields = descriptor.constraints?.fields
|
|
94
|
-
if (!fields) throw new Error('Unclear mapping of constraint with no fields.')
|
|
95
|
-
|
|
96
|
-
// Setting `requiresRevocationStatus` to `false` returns all
|
|
97
|
-
// credentials even if they are revokable (and revoked). We need this to
|
|
98
|
-
// be able to show why a proof cannot be satisfied. Otherwise we can only
|
|
99
|
-
// show failure.
|
|
100
|
-
const requiresRevocationStatus = false
|
|
101
|
-
|
|
102
|
-
const credentialMeta = descriptorMetadata[descriptor.id]
|
|
103
|
-
const restrictions: AnonCredsProofRequestRestriction[] = credentialMeta.map((credentialMeta) => {
|
|
104
|
-
return {
|
|
105
|
-
cred_def_id: credentialMeta.anonCredsTags.anonCredsCredentialDefinitionId,
|
|
106
|
-
schema_id: credentialMeta.anonCredsTags.anonCredsSchemaId,
|
|
107
|
-
}
|
|
108
|
-
})
|
|
109
|
-
|
|
110
|
-
for (const field of fields) {
|
|
111
|
-
const propertyName = getClaimNameForField(field)
|
|
112
|
-
if (!propertyName) continue
|
|
113
|
-
|
|
114
|
-
if (field.predicate) {
|
|
115
|
-
if (!field.filter) throw new Error('Missing required predicate filter property.')
|
|
116
|
-
const predicateTypeAndValues = getPredicateTypeAndValues(field.filter)
|
|
117
|
-
for (const { predicateType, predicateValue } of predicateTypeAndValues) {
|
|
118
|
-
const predicateReferent = `${referent}_${predicateReferentIndex++}`
|
|
119
|
-
anonCredsProofRequest.requested_predicates[predicateReferent] = {
|
|
120
|
-
name: propertyName,
|
|
121
|
-
p_type: predicateType,
|
|
122
|
-
p_value: predicateValue,
|
|
123
|
-
restrictions,
|
|
124
|
-
non_revoked: requiresRevocationStatus ? nonRevokedInterval : undefined,
|
|
125
|
-
descriptorId: descriptor.id,
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
} else {
|
|
129
|
-
if (!anonCredsProofRequest.requested_attributes[referent]) {
|
|
130
|
-
anonCredsProofRequest.requested_attributes[referent] = {
|
|
131
|
-
names: [propertyName],
|
|
132
|
-
restrictions,
|
|
133
|
-
non_revoked: requiresRevocationStatus ? nonRevokedInterval : undefined,
|
|
134
|
-
descriptorId: descriptor.id,
|
|
135
|
-
}
|
|
136
|
-
} else {
|
|
137
|
-
const names = anonCredsProofRequest.requested_attributes[referent].names ?? []
|
|
138
|
-
anonCredsProofRequest.requested_attributes[referent].names = [...names, propertyName]
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return anonCredsProofRequest
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export const getDescriptorMetadata = (credentialsForRequest: DifPexCredentialsForRequest) => {
|
|
148
|
-
const descriptorMetadata: DescriptorMetadata = {}
|
|
149
|
-
|
|
150
|
-
for (const requestedAttribute of Object.values(credentialsForRequest.requirements)) {
|
|
151
|
-
for (const entry of requestedAttribute.submissionEntry) {
|
|
152
|
-
const inputDescriptorId = entry.inputDescriptorId
|
|
153
|
-
|
|
154
|
-
const recordsWithMetadata = entry.verifiableCredentials.map((submissionEntryCredential) => {
|
|
155
|
-
if (submissionEntryCredential.type !== ClaimFormat.LdpVc) {
|
|
156
|
-
throw new Error(`Unsupported credential type. ${submissionEntryCredential.type}`)
|
|
157
|
-
}
|
|
158
|
-
const record = submissionEntryCredential.credentialRecord
|
|
159
|
-
const anonCredsTags = getAnonCredsTagsFromRecord(record as W3cCredentialRecord)
|
|
160
|
-
if (!anonCredsTags) throw new Error('Missing AnonCreds tags from credential record')
|
|
161
|
-
return { record, anonCredsTags }
|
|
162
|
-
})
|
|
163
|
-
|
|
164
|
-
if (!descriptorMetadata[inputDescriptorId]) descriptorMetadata[inputDescriptorId] = []
|
|
165
|
-
|
|
166
|
-
for (const recordWithMetadata of recordsWithMetadata) {
|
|
167
|
-
if (!descriptorMetadata[inputDescriptorId].find((item) => item.record.id === recordWithMetadata.record.id)) {
|
|
168
|
-
descriptorMetadata[inputDescriptorId].push(recordWithMetadata)
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
return descriptorMetadata
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* The matches returned by our artificial anonCredsProofRequest could contain matches,
|
|
179
|
-
* which are not valid thus we need to filter them out
|
|
180
|
-
*/
|
|
181
|
-
export const filterInvalidProofRequestMatches = (
|
|
182
|
-
anonCredsCredentialsForRequest: AnonCredsCredentialsForProofRequest,
|
|
183
|
-
descriptorMetadata: DescriptorMetadata
|
|
184
|
-
) => {
|
|
185
|
-
anonCredsCredentialsForRequest.attributes = Object.fromEntries(
|
|
186
|
-
Object.entries(anonCredsCredentialsForRequest.attributes).map(([referent, matches]) => {
|
|
187
|
-
const descriptorMeta = descriptorMetadata[referent]
|
|
188
|
-
const validCredentialsForReferent = descriptorMeta.map((meta) => meta.record.id)
|
|
189
|
-
const validMatches = matches.filter((match) => validCredentialsForReferent.includes(match.credentialId))
|
|
190
|
-
return [referent, validMatches]
|
|
191
|
-
})
|
|
192
|
-
)
|
|
193
|
-
|
|
194
|
-
anonCredsCredentialsForRequest.predicates = Object.fromEntries(
|
|
195
|
-
Object.entries(anonCredsCredentialsForRequest.predicates).map(([_referent, matches]) => {
|
|
196
|
-
const referent = _referent.split('_').slice(0, -1).join('_')
|
|
197
|
-
const descriptorMeta = descriptorMetadata[referent]
|
|
198
|
-
const validCredentialsForReferent = descriptorMeta.map((meta) => meta.record.id)
|
|
199
|
-
const validMatches = matches.filter((match) => validCredentialsForReferent.includes(match.credentialId))
|
|
200
|
-
return [_referent, validMatches]
|
|
201
|
-
})
|
|
202
|
-
)
|
|
203
|
-
|
|
204
|
-
return anonCredsCredentialsForRequest
|
|
205
|
-
}
|
package/src/utils/contacts.ts
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { BasicMessageRecord, ConnectionRecord, CredentialExchangeRecord, ProofExchangeRecord } from '@credo-ts/core'
|
|
2
|
-
|
|
3
|
-
import { BifoldAgent } from './agent'
|
|
4
|
-
|
|
5
|
-
interface ConnectionWithMessages {
|
|
6
|
-
conn: ConnectionRecord
|
|
7
|
-
msgs: (BasicMessageRecord | CredentialExchangeRecord | ProofExchangeRecord)[]
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
interface ConnectionWithLatestMessage {
|
|
11
|
-
conn: ConnectionRecord
|
|
12
|
-
latestMsg: BasicMessageRecord | CredentialExchangeRecord | ProofExchangeRecord
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Function to fetch contacts (connections) in order of latest chat message without using hooks
|
|
17
|
-
* @param agent - Credo agent
|
|
18
|
-
* @returns ConnectionRecord[] sorted by most recent message
|
|
19
|
-
*/
|
|
20
|
-
export const fetchContactsByLatestMessage = async (
|
|
21
|
-
agent: BifoldAgent,
|
|
22
|
-
connections: ConnectionRecord[]
|
|
23
|
-
): Promise<ConnectionRecord[]> => {
|
|
24
|
-
const connectionsWithMessages = await Promise.all<ConnectionWithMessages>(
|
|
25
|
-
connections.map(
|
|
26
|
-
async (conn: ConnectionRecord): Promise<ConnectionWithMessages> => ({
|
|
27
|
-
conn,
|
|
28
|
-
msgs: [
|
|
29
|
-
...(await agent.basicMessages.findAllByQuery({ connectionId: conn.id })),
|
|
30
|
-
...(await agent.proofs.findAllByQuery({ connectionId: conn.id })),
|
|
31
|
-
...(await agent.credentials.findAllByQuery({ connectionId: conn.id })),
|
|
32
|
-
],
|
|
33
|
-
})
|
|
34
|
-
)
|
|
35
|
-
)
|
|
36
|
-
|
|
37
|
-
const connectionsWithLatestMessage: ConnectionWithLatestMessage[] = connectionsWithMessages.map((pair) => {
|
|
38
|
-
return {
|
|
39
|
-
conn: pair.conn,
|
|
40
|
-
latestMsg: pair.msgs.reduce(
|
|
41
|
-
(acc, cur) => {
|
|
42
|
-
const accDate = acc.updatedAt || acc.createdAt
|
|
43
|
-
const curDate = cur.updatedAt || cur.createdAt
|
|
44
|
-
return accDate > curDate ? acc : cur
|
|
45
|
-
},
|
|
46
|
-
// Initial value if no messages exist for this connection is a placeholder with the date the connection was created
|
|
47
|
-
{ createdAt: pair.conn.createdAt } as BasicMessageRecord | CredentialExchangeRecord | ProofExchangeRecord
|
|
48
|
-
),
|
|
49
|
-
}
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
return connectionsWithLatestMessage
|
|
53
|
-
.sort(
|
|
54
|
-
(a, b) =>
|
|
55
|
-
new Date(b.latestMsg.updatedAt || b.latestMsg.createdAt).valueOf() -
|
|
56
|
-
new Date(a.latestMsg.updatedAt || a.latestMsg.createdAt).valueOf()
|
|
57
|
-
)
|
|
58
|
-
.map((pair) => pair.conn)
|
|
59
|
-
}
|
package/src/utils/cred-def.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { AnonCredsCredentialMetadataKey, parseIndyCredentialDefinitionId, parseIndySchemaId } from '@credo-ts/anoncreds'
|
|
2
|
-
import { CredentialExchangeRecord as CredentialRecord } from '@credo-ts/core'
|
|
3
|
-
|
|
4
|
-
import { credentialSchema } from './schema'
|
|
5
|
-
|
|
6
|
-
export function parseCredDefFromId(credDefId?: string, schemaId?: string): string {
|
|
7
|
-
let name = 'Credential'
|
|
8
|
-
if (credDefId) {
|
|
9
|
-
const parseIndyCredDefId = parseIndyCredentialDefinitionId(credDefId)
|
|
10
|
-
name = parseIndyCredDefId.tag
|
|
11
|
-
}
|
|
12
|
-
if (name.toLocaleLowerCase() === 'default' || name.toLowerCase() === 'credential') {
|
|
13
|
-
if (schemaId) {
|
|
14
|
-
const parseIndySchema = parseIndySchemaId(schemaId)
|
|
15
|
-
name = parseIndySchema.schemaName
|
|
16
|
-
} else {
|
|
17
|
-
name = 'Credential'
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return name
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function credentialDefinition(credential: CredentialRecord): string | undefined {
|
|
24
|
-
return credential.metadata.get(AnonCredsCredentialMetadataKey)?.credentialDefinitionId
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function parsedCredDefNameFromCredential(credential: CredentialRecord): string {
|
|
28
|
-
return parseCredDefFromId(credentialDefinition(credential), credentialSchema(credential))
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export function parsedCredDefName(credentialDefinitionId: string, schemaId: string): string {
|
|
32
|
-
return parseCredDefFromId(credentialDefinitionId, schemaId)
|
|
33
|
-
}
|