@transfergratis/react-native-sdk 0.1.32 → 0.1.34
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/build/package.json +71 -0
- package/build/src/App.d.ts.map +1 -0
- package/build/src/App.js.map +1 -0
- package/build/src/TransfergratisSdk.types.d.ts.map +1 -0
- package/build/src/TransfergratisSdk.types.js.map +1 -0
- package/build/src/TransfergratisSdkModule.d.ts.map +1 -0
- package/build/src/TransfergratisSdkModule.js.map +1 -0
- package/build/src/TransfergratisSdkModule.web.d.ts.map +1 -0
- package/build/src/TransfergratisSdkModule.web.js.map +1 -0
- package/build/src/TransfergratisSdkView.d.ts.map +1 -0
- package/build/src/TransfergratisSdkView.js.map +1 -0
- package/build/src/TransfergratisSdkView.web.d.ts.map +1 -0
- package/build/src/TransfergratisSdkView.web.js.map +1 -0
- package/build/src/api/axios.d.ts.map +1 -0
- package/build/src/api/axios.js.map +1 -0
- package/build/src/components/Camera/index.d.ts.map +1 -0
- package/build/src/components/Camera/index.js.map +1 -0
- package/build/src/components/Camera/index.web.d.ts.map +1 -0
- package/build/src/components/Camera/index.web.js.map +1 -0
- package/build/src/components/Camera/types.d.ts.map +1 -0
- package/build/src/components/Camera/types.js.map +1 -0
- package/build/src/components/ConfigurableKYCFlow.d.ts.map +1 -0
- package/build/src/components/ConfigurableKYCFlow.js.map +1 -0
- package/build/src/components/CustomCameraExample.d.ts.map +1 -0
- package/build/src/components/CustomCameraExample.js.map +1 -0
- package/build/src/components/EnhancedCameraView.d.ts.map +1 -0
- package/build/src/components/EnhancedCameraView.js.map +1 -0
- package/build/src/components/EnhancedCameraView.web.d.ts.map +1 -0
- package/build/src/components/EnhancedCameraView.web.js.map +1 -0
- package/build/src/components/FileUpload.d.ts.map +1 -0
- package/build/src/components/FileUpload.js.map +1 -0
- package/build/src/components/KYCElementRenderer.d.ts.map +1 -0
- package/build/src/components/KYCElementRenderer.js.map +1 -0
- package/build/src/components/KYCElements/AdditionalDocumentsTemplate.d.ts.map +1 -0
- package/build/src/components/KYCElements/AdditionalDocumentsTemplate.js.map +1 -0
- package/build/src/components/KYCElements/CameraCapture.d.ts.map +1 -0
- package/build/src/components/KYCElements/CameraCapture.js.map +1 -0
- package/build/src/components/KYCElements/CompletionStep.d.ts.map +1 -0
- package/build/src/components/KYCElements/CompletionStep.js.map +1 -0
- package/build/src/components/KYCElements/CountrySelection.d.ts.map +1 -0
- package/build/src/components/KYCElements/CountrySelection.js.map +1 -0
- package/build/src/components/KYCElements/CountrySelectionTemplate.d.ts.map +1 -0
- package/build/src/components/KYCElements/CountrySelectionTemplate.js.map +1 -0
- package/build/src/components/KYCElements/DocumentTypeSelection.d.ts.map +1 -0
- package/build/src/components/KYCElements/DocumentTypeSelection.js.map +1 -0
- package/build/src/components/KYCElements/EmailVerificationTemplate.d.ts.map +1 -0
- package/build/src/components/KYCElements/EmailVerificationTemplate.js.map +1 -0
- package/build/src/components/KYCElements/FileUpload.d.ts.map +1 -0
- package/build/src/components/KYCElements/FileUpload.js.map +1 -0
- package/build/src/components/KYCElements/FileUploadTemplate.d.ts.map +1 -0
- package/build/src/components/KYCElements/FileUploadTemplate.js.map +1 -0
- package/build/src/components/KYCElements/IDCardCapture.d.ts.map +1 -0
- package/build/{components → src/components}/KYCElements/IDCardCapture.js +26 -4
- package/build/src/components/KYCElements/IDCardCapture.js.map +1 -0
- package/build/src/components/KYCElements/InitializationStep.d.ts.map +1 -0
- package/build/src/components/KYCElements/InitializationStep.js.map +1 -0
- package/build/src/components/KYCElements/LocationCaptureTemplate.d.ts.map +1 -0
- package/build/src/components/KYCElements/LocationCaptureTemplate.js.map +1 -0
- package/build/src/components/KYCElements/OrientationVideoCapture.d.ts.map +1 -0
- package/build/src/components/KYCElements/OrientationVideoCapture.js.map +1 -0
- package/build/src/components/KYCElements/OrientationVideoCaptureEnhanced.d.ts.map +1 -0
- package/build/src/components/KYCElements/OrientationVideoCaptureEnhanced.js.map +1 -0
- package/build/src/components/KYCElements/OrientationVideoCaptureFinal.d.ts.map +1 -0
- package/build/src/components/KYCElements/OrientationVideoCaptureFinal.js.map +1 -0
- package/build/src/components/KYCElements/PersonalInformationTemplate.d.ts.map +1 -0
- package/build/src/components/KYCElements/PersonalInformationTemplate.js.map +1 -0
- package/build/src/components/KYCElements/PhoneVerificationTemplate.d.ts.map +1 -0
- package/build/src/components/KYCElements/PhoneVerificationTemplate.js.map +1 -0
- package/build/src/components/KYCElements/ReviewSubmitTemplate.d.ts.map +1 -0
- package/build/src/components/KYCElements/ReviewSubmitTemplate.js.map +1 -0
- package/build/src/components/KYCElements/SelfieCapture.d.ts.map +1 -0
- package/build/src/components/KYCElements/SelfieCapture.js.map +1 -0
- package/build/src/components/KYCElements/SelfieCaptureTemplate.d.ts.map +1 -0
- package/build/src/components/KYCElements/SelfieCaptureTemplate.js.map +1 -0
- package/build/src/components/KYCElements/VerificationProgressTemplate.d.ts.map +1 -0
- package/build/src/components/KYCElements/VerificationProgressTemplate.js.map +1 -0
- package/build/src/components/KYCElements/VerificationStep.d.ts.map +1 -0
- package/build/src/components/KYCElements/VerificationStep.js.map +1 -0
- package/build/src/components/KYCElements/WelcomeTemplate.d.ts.map +1 -0
- package/build/{components → src/components}/KYCElements/WelcomeTemplate.js +9 -0
- package/build/src/components/KYCElements/WelcomeTemplate.js.map +1 -0
- package/build/src/components/KYCExample.d.ts.map +1 -0
- package/build/src/components/KYCExample.js.map +1 -0
- package/build/src/components/KYCFlow.d.ts.map +1 -0
- package/build/src/components/KYCFlow.js.map +1 -0
- package/build/src/components/NativeCameraView.d.ts.map +1 -0
- package/build/src/components/NativeCameraView.js.map +1 -0
- package/build/src/components/OverLay/IdCard.d.ts.map +1 -0
- package/build/src/components/OverLay/IdCard.js.map +1 -0
- package/build/src/components/OverLay/SelfieOverlay.d.ts.map +1 -0
- package/build/src/components/OverLay/SelfieOverlay.js.map +1 -0
- package/build/src/components/OverLay/StepOverlay.d.ts.map +1 -0
- package/build/src/components/OverLay/StepOverlay.js.map +1 -0
- package/build/src/components/OverLay/type.d.ts.map +1 -0
- package/build/src/components/OverLay/type.js.map +1 -0
- package/build/src/components/ProgressIndicator.d.ts.map +1 -0
- package/build/src/components/ProgressIndicator.js.map +1 -0
- package/build/src/components/SelfieCapture.d.ts.map +1 -0
- package/build/src/components/SelfieCapture.js.map +1 -0
- package/build/src/components/SimpleExample.d.ts.map +1 -0
- package/build/src/components/SimpleExample.js.map +1 -0
- package/build/src/components/Svgs/GpsIcon.d.ts.map +1 -0
- package/build/src/components/Svgs/GpsIcon.js.map +1 -0
- package/build/src/components/Svgs/Schield.d.ts.map +1 -0
- package/build/src/components/Svgs/Schield.js.map +1 -0
- package/build/src/components/Svgs/frontSelfieIcon.d.ts.map +1 -0
- package/build/src/components/Svgs/frontSelfieIcon.js.map +1 -0
- package/build/src/components/Svgs/scanningLine.d.ts.map +1 -0
- package/build/src/components/Svgs/scanningLine.js.map +1 -0
- package/build/src/components/Svgs/sideSelfieIcon.d.ts.map +1 -0
- package/build/src/components/Svgs/sideSelfieIcon.js.map +1 -0
- package/build/{components → src/components}/TemplateKYCExample.d.ts +1 -0
- package/build/src/components/TemplateKYCExample.d.ts.map +1 -0
- package/build/{components → src/components}/TemplateKYCExample.js +2 -2
- package/build/src/components/TemplateKYCExample.js.map +1 -0
- package/build/{components → src/components}/TemplateKYCFlowRefactored.d.ts +1 -0
- package/build/src/components/TemplateKYCFlowRefactored.d.ts.map +1 -0
- package/build/{components → src/components}/TemplateKYCFlowRefactored.js +2 -2
- package/build/src/components/TemplateKYCFlowRefactored.js.map +1 -0
- package/build/src/components/VisionCameraView.d.ts.map +1 -0
- package/build/src/components/VisionCameraView.js.map +1 -0
- package/build/src/components/example/CameraCaptureEx.d.ts.map +1 -0
- package/build/src/components/example/CameraCaptureEx.js.map +1 -0
- package/build/src/components/example/CameraCaptureExAdvanced.d.ts.map +1 -0
- package/build/src/components/example/CameraCaptureExAdvanced.js.map +1 -0
- package/build/src/components/example/CameraCaptureExScan.d.ts.map +1 -0
- package/build/src/components/example/CameraCaptureExScan.js.map +1 -0
- package/build/src/components/example/CameraCaptureExSimple.d.ts.map +1 -0
- package/build/src/components/example/CameraCaptureExSimple.js.map +1 -0
- package/build/src/components/example/DynamicTemplateExample.d.ts.map +1 -0
- package/build/src/components/example/DynamicTemplateExample.js.map +1 -0
- package/build/src/components/example/OrientationVideoExample.d.ts.map +1 -0
- package/build/src/components/example/OrientationVideoExample.js.map +1 -0
- package/build/src/components/example/SelfieCaptureEx.d.ts.map +1 -0
- package/build/src/components/example/SelfieCaptureEx.js.map +1 -0
- package/build/src/components/ui/Button.d.ts.map +1 -0
- package/build/src/components/ui/Button.js.map +1 -0
- package/build/src/components/ui/ButtonExample.d.ts.map +1 -0
- package/build/src/components/ui/ButtonExample.js.map +1 -0
- package/build/src/components/ui/ButtonStyles.d.ts.map +1 -0
- package/build/src/components/ui/ButtonStyles.js.map +1 -0
- package/build/src/config/KYCConfig.d.ts.map +1 -0
- package/build/src/config/KYCConfig.js.map +1 -0
- package/build/src/config/KYCConfigs.d.ts.map +1 -0
- package/build/src/config/KYCConfigs.js.map +1 -0
- package/build/src/config/allowedDomains.d.ts.map +1 -0
- package/build/src/config/allowedDomains.js.map +1 -0
- package/build/src/config/countriesData.d.ts.map +1 -0
- package/build/src/config/countriesData.js.map +1 -0
- package/build/src/config/region_mapping.d.ts.map +1 -0
- package/build/src/config/region_mapping.js.map +1 -0
- package/build/src/hooks/useI18n.d.ts.map +1 -0
- package/build/src/hooks/useI18n.js.map +1 -0
- package/build/src/hooks/useKYC.d.ts.map +1 -0
- package/build/src/hooks/useKYC.js.map +1 -0
- package/build/src/hooks/useKYCFlow.d.ts.map +1 -0
- package/build/src/hooks/useKYCFlow.js.map +1 -0
- package/build/src/hooks/useLocation.d.ts.map +1 -0
- package/build/src/hooks/useLocation.js.map +1 -0
- package/build/src/hooks/useOrientationVideo.d.ts.map +1 -0
- package/build/src/hooks/useOrientationVideo.js.map +1 -0
- package/build/src/hooks/useRealtimeVerifier.d.ts.map +1 -0
- package/build/src/hooks/useRealtimeVerifier.js.map +1 -0
- package/build/{hooks → src/hooks}/useTemplateKYCFlow.d.ts +2 -1
- package/build/src/hooks/useTemplateKYCFlow.d.ts.map +1 -0
- package/build/{hooks → src/hooks}/useTemplateKYCFlow.js +25 -7
- package/build/src/hooks/useTemplateKYCFlow.js.map +1 -0
- package/build/src/hooks/useTemplateLoader.d.ts.map +1 -0
- package/build/src/hooks/useTemplateLoader.js.map +1 -0
- package/build/{i18n → src/i18n}/en/index.d.ts.map +1 -1
- package/build/src/i18n/en/index.js.map +1 -0
- package/build/{i18n → src/i18n}/fr/index.d.ts.map +1 -1
- package/build/src/i18n/fr/index.js.map +1 -0
- package/build/src/i18n/index.d.ts.map +1 -0
- package/build/src/i18n/index.js.map +1 -0
- package/build/src/i18n/types.d.ts.map +1 -0
- package/build/src/i18n/types.js.map +1 -0
- package/build/src/i18n/usage-example.d.ts.map +1 -0
- package/build/src/i18n/usage-example.js.map +1 -0
- package/build/src/index.d.ts.map +1 -0
- package/build/src/index.js.map +1 -0
- package/build/{modules → src/modules}/api/CardAuthentification.d.ts +13 -0
- package/build/src/modules/api/CardAuthentification.d.ts.map +1 -0
- package/build/{modules → src/modules}/api/CardAuthentification.js +6 -107
- package/build/src/modules/api/CardAuthentification.js.map +1 -0
- package/build/src/modules/api/KYCService.d.ts.map +1 -0
- package/build/{modules → src/modules}/api/KYCService.js +2 -2
- package/build/src/modules/api/KYCService.js.map +1 -0
- package/build/src/modules/api/SelfieVerification.d.ts.map +1 -0
- package/build/src/modules/api/SelfieVerification.js.map +1 -0
- package/build/src/modules/api/TemplateService.d.ts.map +1 -0
- package/build/src/modules/api/TemplateService.js.map +1 -0
- package/build/src/modules/api/backendApi.d.ts.map +1 -0
- package/build/src/modules/api/backendApi.js.map +1 -0
- package/build/src/modules/api/types.d.ts.map +1 -0
- package/build/src/modules/api/types.js.map +1 -0
- package/build/src/modules/camera/NativeCameraModule.d.ts.map +1 -0
- package/build/src/modules/camera/NativeCameraModule.js.map +1 -0
- package/build/src/modules/camera/UnifiedCameraModule.d.ts.map +1 -0
- package/build/src/modules/camera/UnifiedCameraModule.js.map +1 -0
- package/build/src/modules/camera/VisionCameraModule.d.ts.map +1 -0
- package/build/src/modules/camera/VisionCameraModule.js.map +1 -0
- package/build/src/modules/camera/VisionCameraModule.web.d.ts.map +1 -0
- package/build/src/modules/camera/VisionCameraModule.web.js.map +1 -0
- package/build/src/modules/camera/index.d.ts.map +1 -0
- package/build/src/modules/camera/index.js.map +1 -0
- package/build/src/stores/kycStore.d.ts.map +1 -0
- package/build/src/stores/kycStore.js.map +1 -0
- package/build/src/types/KYC.types.d.ts.map +1 -0
- package/build/src/types/KYC.types.js.map +1 -0
- package/build/src/types/env.types.d.ts.map +1 -0
- package/build/src/types/env.types.js.map +1 -0
- package/build/src/utils/cropByObb.d.ts.map +1 -0
- package/build/src/utils/cropByObb.js.map +1 -0
- package/build/src/utils/deviceDetection.d.ts.map +1 -0
- package/build/src/utils/deviceDetection.js.map +1 -0
- package/build/src/utils/get-document-type-info.d.ts.map +1 -0
- package/build/src/utils/get-document-type-info.js.map +1 -0
- package/build/src/utils/logger.d.ts.map +1 -0
- package/build/src/utils/logger.js.map +1 -0
- package/build/src/utils/pathToBase64.d.ts.map +1 -0
- package/build/src/utils/pathToBase64.js.map +1 -0
- package/build/src/utils/platformAlert.d.ts.map +1 -0
- package/build/src/utils/platformAlert.js.map +1 -0
- package/build/src/utils/remove-duplicate.d.ts.map +1 -0
- package/build/src/utils/remove-duplicate.js.map +1 -0
- package/build/src/utils/template-transformer.d.ts.map +1 -0
- package/build/src/utils/template-transformer.js.map +1 -0
- package/build/src/web/WebKYCEntry.d.ts.map +1 -0
- package/build/{web → src/web}/WebKYCEntry.js +57 -40
- package/build/src/web/WebKYCEntry.js.map +1 -0
- package/build/src/web/index.d.ts.map +1 -0
- package/build/src/web/index.js.map +1 -0
- package/package.json +1 -1
- package/src/components/KYCElements/IDCardCapture.tsx +30 -4
- package/src/components/KYCElements/WelcomeTemplate.tsx +9 -0
- package/src/components/TemplateKYCExample.tsx +3 -1
- package/src/components/TemplateKYCFlowRefactored.tsx +3 -0
- package/src/hooks/useTemplateKYCFlow.tsx +27 -5
- package/src/modules/api/CardAuthentification.ts +21 -124
- package/src/modules/api/KYCService.ts +2 -2
- package/src/web/WebKYCEntry.tsx +59 -48
- package/build/App.d.ts.map +0 -1
- package/build/App.js.map +0 -1
- package/build/TransfergratisSdk.types.d.ts.map +0 -1
- package/build/TransfergratisSdk.types.js.map +0 -1
- package/build/TransfergratisSdkModule.d.ts.map +0 -1
- package/build/TransfergratisSdkModule.js.map +0 -1
- package/build/TransfergratisSdkModule.web.d.ts.map +0 -1
- package/build/TransfergratisSdkModule.web.js.map +0 -1
- package/build/TransfergratisSdkView.d.ts.map +0 -1
- package/build/TransfergratisSdkView.js.map +0 -1
- package/build/TransfergratisSdkView.web.d.ts.map +0 -1
- package/build/TransfergratisSdkView.web.js.map +0 -1
- package/build/api/axios.d.ts.map +0 -1
- package/build/api/axios.js.map +0 -1
- package/build/components/Camera/index.d.ts.map +0 -1
- package/build/components/Camera/index.js.map +0 -1
- package/build/components/Camera/index.web.d.ts.map +0 -1
- package/build/components/Camera/index.web.js.map +0 -1
- package/build/components/Camera/types.d.ts.map +0 -1
- package/build/components/Camera/types.js.map +0 -1
- package/build/components/ConfigurableKYCFlow.d.ts.map +0 -1
- package/build/components/ConfigurableKYCFlow.js.map +0 -1
- package/build/components/CustomCameraExample.d.ts.map +0 -1
- package/build/components/CustomCameraExample.js.map +0 -1
- package/build/components/EnhancedCameraView.d.ts.map +0 -1
- package/build/components/EnhancedCameraView.js.map +0 -1
- package/build/components/EnhancedCameraView.web.d.ts.map +0 -1
- package/build/components/EnhancedCameraView.web.js.map +0 -1
- package/build/components/FileUpload.d.ts.map +0 -1
- package/build/components/FileUpload.js.map +0 -1
- package/build/components/KYCElementRenderer.d.ts.map +0 -1
- package/build/components/KYCElementRenderer.js.map +0 -1
- package/build/components/KYCElements/AdditionalDocumentsTemplate.d.ts.map +0 -1
- package/build/components/KYCElements/AdditionalDocumentsTemplate.js.map +0 -1
- package/build/components/KYCElements/CameraCapture.d.ts.map +0 -1
- package/build/components/KYCElements/CameraCapture.js.map +0 -1
- package/build/components/KYCElements/CompletionStep.d.ts.map +0 -1
- package/build/components/KYCElements/CompletionStep.js.map +0 -1
- package/build/components/KYCElements/CountrySelection.d.ts.map +0 -1
- package/build/components/KYCElements/CountrySelection.js.map +0 -1
- package/build/components/KYCElements/CountrySelectionTemplate.d.ts.map +0 -1
- package/build/components/KYCElements/CountrySelectionTemplate.js.map +0 -1
- package/build/components/KYCElements/DocumentTypeSelection.d.ts.map +0 -1
- package/build/components/KYCElements/DocumentTypeSelection.js.map +0 -1
- package/build/components/KYCElements/EmailVerificationTemplate.d.ts.map +0 -1
- package/build/components/KYCElements/EmailVerificationTemplate.js.map +0 -1
- package/build/components/KYCElements/FileUpload.d.ts.map +0 -1
- package/build/components/KYCElements/FileUpload.js.map +0 -1
- package/build/components/KYCElements/FileUploadTemplate.d.ts.map +0 -1
- package/build/components/KYCElements/FileUploadTemplate.js.map +0 -1
- package/build/components/KYCElements/IDCardCapture.d.ts.map +0 -1
- package/build/components/KYCElements/IDCardCapture.js.map +0 -1
- package/build/components/KYCElements/InitializationStep.d.ts.map +0 -1
- package/build/components/KYCElements/InitializationStep.js.map +0 -1
- package/build/components/KYCElements/LocationCaptureTemplate.d.ts.map +0 -1
- package/build/components/KYCElements/LocationCaptureTemplate.js.map +0 -1
- package/build/components/KYCElements/OrientationVideoCapture.d.ts.map +0 -1
- package/build/components/KYCElements/OrientationVideoCapture.js.map +0 -1
- package/build/components/KYCElements/OrientationVideoCaptureEnhanced.d.ts.map +0 -1
- package/build/components/KYCElements/OrientationVideoCaptureEnhanced.js.map +0 -1
- package/build/components/KYCElements/OrientationVideoCaptureFinal.d.ts.map +0 -1
- package/build/components/KYCElements/OrientationVideoCaptureFinal.js.map +0 -1
- package/build/components/KYCElements/PersonalInformationTemplate.d.ts.map +0 -1
- package/build/components/KYCElements/PersonalInformationTemplate.js.map +0 -1
- package/build/components/KYCElements/PhoneVerificationTemplate.d.ts.map +0 -1
- package/build/components/KYCElements/PhoneVerificationTemplate.js.map +0 -1
- package/build/components/KYCElements/ReviewSubmitTemplate.d.ts.map +0 -1
- package/build/components/KYCElements/ReviewSubmitTemplate.js.map +0 -1
- package/build/components/KYCElements/SelfieCapture.d.ts.map +0 -1
- package/build/components/KYCElements/SelfieCapture.js.map +0 -1
- package/build/components/KYCElements/SelfieCaptureTemplate.d.ts.map +0 -1
- package/build/components/KYCElements/SelfieCaptureTemplate.js.map +0 -1
- package/build/components/KYCElements/VerificationProgressTemplate.d.ts.map +0 -1
- package/build/components/KYCElements/VerificationProgressTemplate.js.map +0 -1
- package/build/components/KYCElements/VerificationStep.d.ts.map +0 -1
- package/build/components/KYCElements/VerificationStep.js.map +0 -1
- package/build/components/KYCElements/WelcomeTemplate.d.ts.map +0 -1
- package/build/components/KYCElements/WelcomeTemplate.js.map +0 -1
- package/build/components/KYCExample.d.ts.map +0 -1
- package/build/components/KYCExample.js.map +0 -1
- package/build/components/KYCFlow.d.ts.map +0 -1
- package/build/components/KYCFlow.js.map +0 -1
- package/build/components/NativeCameraView.d.ts.map +0 -1
- package/build/components/NativeCameraView.js.map +0 -1
- package/build/components/OverLay/IdCard.d.ts.map +0 -1
- package/build/components/OverLay/IdCard.js.map +0 -1
- package/build/components/OverLay/SelfieOverlay.d.ts.map +0 -1
- package/build/components/OverLay/SelfieOverlay.js.map +0 -1
- package/build/components/OverLay/StepOverlay.d.ts.map +0 -1
- package/build/components/OverLay/StepOverlay.js.map +0 -1
- package/build/components/OverLay/type.d.ts.map +0 -1
- package/build/components/OverLay/type.js.map +0 -1
- package/build/components/ProgressIndicator.d.ts.map +0 -1
- package/build/components/ProgressIndicator.js.map +0 -1
- package/build/components/SelfieCapture.d.ts.map +0 -1
- package/build/components/SelfieCapture.js.map +0 -1
- package/build/components/SimpleExample.d.ts.map +0 -1
- package/build/components/SimpleExample.js.map +0 -1
- package/build/components/Svgs/GpsIcon.d.ts.map +0 -1
- package/build/components/Svgs/GpsIcon.js.map +0 -1
- package/build/components/Svgs/Schield.d.ts.map +0 -1
- package/build/components/Svgs/Schield.js.map +0 -1
- package/build/components/Svgs/frontSelfieIcon.d.ts.map +0 -1
- package/build/components/Svgs/frontSelfieIcon.js.map +0 -1
- package/build/components/Svgs/scanningLine.d.ts.map +0 -1
- package/build/components/Svgs/scanningLine.js.map +0 -1
- package/build/components/Svgs/sideSelfieIcon.d.ts.map +0 -1
- package/build/components/Svgs/sideSelfieIcon.js.map +0 -1
- package/build/components/TemplateKYCExample.d.ts.map +0 -1
- package/build/components/TemplateKYCExample.js.map +0 -1
- package/build/components/TemplateKYCFlowRefactored.d.ts.map +0 -1
- package/build/components/TemplateKYCFlowRefactored.js.map +0 -1
- package/build/components/VisionCameraView.d.ts.map +0 -1
- package/build/components/VisionCameraView.js.map +0 -1
- package/build/components/example/CameraCaptureEx.d.ts.map +0 -1
- package/build/components/example/CameraCaptureEx.js.map +0 -1
- package/build/components/example/CameraCaptureExAdvanced.d.ts.map +0 -1
- package/build/components/example/CameraCaptureExAdvanced.js.map +0 -1
- package/build/components/example/CameraCaptureExScan.d.ts.map +0 -1
- package/build/components/example/CameraCaptureExScan.js.map +0 -1
- package/build/components/example/CameraCaptureExSimple.d.ts.map +0 -1
- package/build/components/example/CameraCaptureExSimple.js.map +0 -1
- package/build/components/example/DynamicTemplateExample.d.ts.map +0 -1
- package/build/components/example/DynamicTemplateExample.js.map +0 -1
- package/build/components/example/OrientationVideoExample.d.ts.map +0 -1
- package/build/components/example/OrientationVideoExample.js.map +0 -1
- package/build/components/example/SelfieCaptureEx.d.ts.map +0 -1
- package/build/components/example/SelfieCaptureEx.js.map +0 -1
- package/build/components/ui/Button.d.ts.map +0 -1
- package/build/components/ui/Button.js.map +0 -1
- package/build/components/ui/ButtonExample.d.ts.map +0 -1
- package/build/components/ui/ButtonExample.js.map +0 -1
- package/build/components/ui/ButtonStyles.d.ts.map +0 -1
- package/build/components/ui/ButtonStyles.js.map +0 -1
- package/build/config/KYCConfig.d.ts.map +0 -1
- package/build/config/KYCConfig.js.map +0 -1
- package/build/config/KYCConfigs.d.ts.map +0 -1
- package/build/config/KYCConfigs.js.map +0 -1
- package/build/config/allowedDomains.d.ts.map +0 -1
- package/build/config/allowedDomains.js.map +0 -1
- package/build/config/countriesData.d.ts.map +0 -1
- package/build/config/countriesData.js.map +0 -1
- package/build/config/region_mapping.d.ts.map +0 -1
- package/build/config/region_mapping.js.map +0 -1
- package/build/hooks/useI18n.d.ts.map +0 -1
- package/build/hooks/useI18n.js.map +0 -1
- package/build/hooks/useKYC.d.ts.map +0 -1
- package/build/hooks/useKYC.js.map +0 -1
- package/build/hooks/useKYCFlow.d.ts.map +0 -1
- package/build/hooks/useKYCFlow.js.map +0 -1
- package/build/hooks/useLocation.d.ts.map +0 -1
- package/build/hooks/useLocation.js.map +0 -1
- package/build/hooks/useOrientationVideo.d.ts.map +0 -1
- package/build/hooks/useOrientationVideo.js.map +0 -1
- package/build/hooks/useRealtimeVerifier.d.ts.map +0 -1
- package/build/hooks/useRealtimeVerifier.js.map +0 -1
- package/build/hooks/useTemplateKYCFlow.d.ts.map +0 -1
- package/build/hooks/useTemplateKYCFlow.js.map +0 -1
- package/build/hooks/useTemplateLoader.d.ts.map +0 -1
- package/build/hooks/useTemplateLoader.js.map +0 -1
- package/build/i18n/en/index.js.map +0 -1
- package/build/i18n/fr/index.js.map +0 -1
- package/build/i18n/index.d.ts.map +0 -1
- package/build/i18n/index.js.map +0 -1
- package/build/i18n/types.d.ts.map +0 -1
- package/build/i18n/types.js.map +0 -1
- package/build/i18n/usage-example.d.ts.map +0 -1
- package/build/i18n/usage-example.js.map +0 -1
- package/build/index.d.ts.map +0 -1
- package/build/index.js.map +0 -1
- package/build/modules/api/CardAuthentification.d.ts.map +0 -1
- package/build/modules/api/CardAuthentification.js.map +0 -1
- package/build/modules/api/KYCService.d.ts.map +0 -1
- package/build/modules/api/KYCService.js.map +0 -1
- package/build/modules/api/SelfieVerification.d.ts.map +0 -1
- package/build/modules/api/SelfieVerification.js.map +0 -1
- package/build/modules/api/TemplateService.d.ts.map +0 -1
- package/build/modules/api/TemplateService.js.map +0 -1
- package/build/modules/api/backendApi.d.ts.map +0 -1
- package/build/modules/api/backendApi.js.map +0 -1
- package/build/modules/api/types.d.ts.map +0 -1
- package/build/modules/api/types.js.map +0 -1
- package/build/modules/camera/NativeCameraModule.d.ts.map +0 -1
- package/build/modules/camera/NativeCameraModule.js.map +0 -1
- package/build/modules/camera/UnifiedCameraModule.d.ts.map +0 -1
- package/build/modules/camera/UnifiedCameraModule.js.map +0 -1
- package/build/modules/camera/VisionCameraModule.d.ts.map +0 -1
- package/build/modules/camera/VisionCameraModule.js.map +0 -1
- package/build/modules/camera/VisionCameraModule.web.d.ts.map +0 -1
- package/build/modules/camera/VisionCameraModule.web.js.map +0 -1
- package/build/modules/camera/index.d.ts.map +0 -1
- package/build/modules/camera/index.js.map +0 -1
- package/build/stores/kycStore.d.ts.map +0 -1
- package/build/stores/kycStore.js.map +0 -1
- package/build/types/KYC.types.d.ts.map +0 -1
- package/build/types/KYC.types.js.map +0 -1
- package/build/types/env.types.d.ts.map +0 -1
- package/build/types/env.types.js.map +0 -1
- package/build/utils/cropByObb.d.ts.map +0 -1
- package/build/utils/cropByObb.js.map +0 -1
- package/build/utils/deviceDetection.d.ts.map +0 -1
- package/build/utils/deviceDetection.js.map +0 -1
- package/build/utils/get-document-type-info.d.ts.map +0 -1
- package/build/utils/get-document-type-info.js.map +0 -1
- package/build/utils/logger.d.ts.map +0 -1
- package/build/utils/logger.js.map +0 -1
- package/build/utils/pathToBase64.d.ts.map +0 -1
- package/build/utils/pathToBase64.js.map +0 -1
- package/build/utils/platformAlert.d.ts.map +0 -1
- package/build/utils/platformAlert.js.map +0 -1
- package/build/utils/remove-duplicate.d.ts.map +0 -1
- package/build/utils/remove-duplicate.js.map +0 -1
- package/build/utils/template-transformer.d.ts.map +0 -1
- package/build/utils/template-transformer.js.map +0 -1
- package/build/web/WebKYCEntry.d.ts.map +0 -1
- package/build/web/WebKYCEntry.js.map +0 -1
- package/build/web/index.d.ts.map +0 -1
- package/build/web/index.js.map +0 -1
- /package/build/{App.d.ts → src/App.d.ts} +0 -0
- /package/build/{App.js → src/App.js} +0 -0
- /package/build/{TransfergratisSdk.types.d.ts → src/TransfergratisSdk.types.d.ts} +0 -0
- /package/build/{TransfergratisSdk.types.js → src/TransfergratisSdk.types.js} +0 -0
- /package/build/{TransfergratisSdkModule.d.ts → src/TransfergratisSdkModule.d.ts} +0 -0
- /package/build/{TransfergratisSdkModule.js → src/TransfergratisSdkModule.js} +0 -0
- /package/build/{TransfergratisSdkModule.web.d.ts → src/TransfergratisSdkModule.web.d.ts} +0 -0
- /package/build/{TransfergratisSdkModule.web.js → src/TransfergratisSdkModule.web.js} +0 -0
- /package/build/{TransfergratisSdkView.d.ts → src/TransfergratisSdkView.d.ts} +0 -0
- /package/build/{TransfergratisSdkView.js → src/TransfergratisSdkView.js} +0 -0
- /package/build/{TransfergratisSdkView.web.d.ts → src/TransfergratisSdkView.web.d.ts} +0 -0
- /package/build/{TransfergratisSdkView.web.js → src/TransfergratisSdkView.web.js} +0 -0
- /package/build/{api → src/api}/axios.d.ts +0 -0
- /package/build/{api → src/api}/axios.js +0 -0
- /package/build/{components → src/components}/Camera/index.d.ts +0 -0
- /package/build/{components → src/components}/Camera/index.js +0 -0
- /package/build/{components → src/components}/Camera/index.web.d.ts +0 -0
- /package/build/{components → src/components}/Camera/index.web.js +0 -0
- /package/build/{components → src/components}/Camera/types.d.ts +0 -0
- /package/build/{components → src/components}/Camera/types.js +0 -0
- /package/build/{components → src/components}/ConfigurableKYCFlow.d.ts +0 -0
- /package/build/{components → src/components}/ConfigurableKYCFlow.js +0 -0
- /package/build/{components → src/components}/CustomCameraExample.d.ts +0 -0
- /package/build/{components → src/components}/CustomCameraExample.js +0 -0
- /package/build/{components → src/components}/EnhancedCameraView.d.ts +0 -0
- /package/build/{components → src/components}/EnhancedCameraView.js +0 -0
- /package/build/{components → src/components}/EnhancedCameraView.web.d.ts +0 -0
- /package/build/{components → src/components}/EnhancedCameraView.web.js +0 -0
- /package/build/{components → src/components}/FileUpload.d.ts +0 -0
- /package/build/{components → src/components}/FileUpload.js +0 -0
- /package/build/{components → src/components}/KYCElementRenderer.d.ts +0 -0
- /package/build/{components → src/components}/KYCElementRenderer.js +0 -0
- /package/build/{components → src/components}/KYCElements/AdditionalDocumentsTemplate.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/AdditionalDocumentsTemplate.js +0 -0
- /package/build/{components → src/components}/KYCElements/CameraCapture.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/CameraCapture.js +0 -0
- /package/build/{components → src/components}/KYCElements/CompletionStep.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/CompletionStep.js +0 -0
- /package/build/{components → src/components}/KYCElements/CountrySelection.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/CountrySelection.js +0 -0
- /package/build/{components → src/components}/KYCElements/CountrySelectionTemplate.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/CountrySelectionTemplate.js +0 -0
- /package/build/{components → src/components}/KYCElements/DocumentTypeSelection.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/DocumentTypeSelection.js +0 -0
- /package/build/{components → src/components}/KYCElements/EmailVerificationTemplate.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/EmailVerificationTemplate.js +0 -0
- /package/build/{components → src/components}/KYCElements/FileUpload.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/FileUpload.js +0 -0
- /package/build/{components → src/components}/KYCElements/FileUploadTemplate.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/FileUploadTemplate.js +0 -0
- /package/build/{components → src/components}/KYCElements/IDCardCapture.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/InitializationStep.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/InitializationStep.js +0 -0
- /package/build/{components → src/components}/KYCElements/LocationCaptureTemplate.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/LocationCaptureTemplate.js +0 -0
- /package/build/{components → src/components}/KYCElements/OrientationVideoCapture.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/OrientationVideoCapture.js +0 -0
- /package/build/{components → src/components}/KYCElements/OrientationVideoCaptureEnhanced.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/OrientationVideoCaptureEnhanced.js +0 -0
- /package/build/{components → src/components}/KYCElements/OrientationVideoCaptureFinal.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/OrientationVideoCaptureFinal.js +0 -0
- /package/build/{components → src/components}/KYCElements/PersonalInformationTemplate.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/PersonalInformationTemplate.js +0 -0
- /package/build/{components → src/components}/KYCElements/PhoneVerificationTemplate.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/PhoneVerificationTemplate.js +0 -0
- /package/build/{components → src/components}/KYCElements/ReviewSubmitTemplate.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/ReviewSubmitTemplate.js +0 -0
- /package/build/{components → src/components}/KYCElements/SelfieCapture.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/SelfieCapture.js +0 -0
- /package/build/{components → src/components}/KYCElements/SelfieCaptureTemplate.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/SelfieCaptureTemplate.js +0 -0
- /package/build/{components → src/components}/KYCElements/VerificationProgressTemplate.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/VerificationProgressTemplate.js +0 -0
- /package/build/{components → src/components}/KYCElements/VerificationStep.d.ts +0 -0
- /package/build/{components → src/components}/KYCElements/VerificationStep.js +0 -0
- /package/build/{components → src/components}/KYCElements/WelcomeTemplate.d.ts +0 -0
- /package/build/{components → src/components}/KYCExample.d.ts +0 -0
- /package/build/{components → src/components}/KYCExample.js +0 -0
- /package/build/{components → src/components}/KYCFlow.d.ts +0 -0
- /package/build/{components → src/components}/KYCFlow.js +0 -0
- /package/build/{components → src/components}/NativeCameraView.d.ts +0 -0
- /package/build/{components → src/components}/NativeCameraView.js +0 -0
- /package/build/{components → src/components}/OverLay/IdCard.d.ts +0 -0
- /package/build/{components → src/components}/OverLay/IdCard.js +0 -0
- /package/build/{components → src/components}/OverLay/SelfieOverlay.d.ts +0 -0
- /package/build/{components → src/components}/OverLay/SelfieOverlay.js +0 -0
- /package/build/{components → src/components}/OverLay/StepOverlay.d.ts +0 -0
- /package/build/{components → src/components}/OverLay/StepOverlay.js +0 -0
- /package/build/{components → src/components}/OverLay/type.d.ts +0 -0
- /package/build/{components → src/components}/OverLay/type.js +0 -0
- /package/build/{components → src/components}/ProgressIndicator.d.ts +0 -0
- /package/build/{components → src/components}/ProgressIndicator.js +0 -0
- /package/build/{components → src/components}/SelfieCapture.d.ts +0 -0
- /package/build/{components → src/components}/SelfieCapture.js +0 -0
- /package/build/{components → src/components}/SimpleExample.d.ts +0 -0
- /package/build/{components → src/components}/SimpleExample.js +0 -0
- /package/build/{components → src/components}/Svgs/GpsIcon.d.ts +0 -0
- /package/build/{components → src/components}/Svgs/GpsIcon.js +0 -0
- /package/build/{components → src/components}/Svgs/Schield.d.ts +0 -0
- /package/build/{components → src/components}/Svgs/Schield.js +0 -0
- /package/build/{components → src/components}/Svgs/frontSelfieIcon.d.ts +0 -0
- /package/build/{components → src/components}/Svgs/frontSelfieIcon.js +0 -0
- /package/build/{components → src/components}/Svgs/scanningLine.d.ts +0 -0
- /package/build/{components → src/components}/Svgs/scanningLine.js +0 -0
- /package/build/{components → src/components}/Svgs/sideSelfieIcon.d.ts +0 -0
- /package/build/{components → src/components}/Svgs/sideSelfieIcon.js +0 -0
- /package/build/{components → src/components}/VisionCameraView.d.ts +0 -0
- /package/build/{components → src/components}/VisionCameraView.js +0 -0
- /package/build/{components → src/components}/example/CameraCaptureEx.d.ts +0 -0
- /package/build/{components → src/components}/example/CameraCaptureEx.js +0 -0
- /package/build/{components → src/components}/example/CameraCaptureExAdvanced.d.ts +0 -0
- /package/build/{components → src/components}/example/CameraCaptureExAdvanced.js +0 -0
- /package/build/{components → src/components}/example/CameraCaptureExScan.d.ts +0 -0
- /package/build/{components → src/components}/example/CameraCaptureExScan.js +0 -0
- /package/build/{components → src/components}/example/CameraCaptureExSimple.d.ts +0 -0
- /package/build/{components → src/components}/example/CameraCaptureExSimple.js +0 -0
- /package/build/{components → src/components}/example/DynamicTemplateExample.d.ts +0 -0
- /package/build/{components → src/components}/example/DynamicTemplateExample.js +0 -0
- /package/build/{components → src/components}/example/OrientationVideoExample.d.ts +0 -0
- /package/build/{components → src/components}/example/OrientationVideoExample.js +0 -0
- /package/build/{components → src/components}/example/SelfieCaptureEx.d.ts +0 -0
- /package/build/{components → src/components}/example/SelfieCaptureEx.js +0 -0
- /package/build/{components → src/components}/ui/Button.d.ts +0 -0
- /package/build/{components → src/components}/ui/Button.js +0 -0
- /package/build/{components → src/components}/ui/ButtonExample.d.ts +0 -0
- /package/build/{components → src/components}/ui/ButtonExample.js +0 -0
- /package/build/{components → src/components}/ui/ButtonStyles.d.ts +0 -0
- /package/build/{components → src/components}/ui/ButtonStyles.js +0 -0
- /package/build/{config → src/config}/KYCConfig.d.ts +0 -0
- /package/build/{config → src/config}/KYCConfig.js +0 -0
- /package/build/{config → src/config}/KYCConfigs.d.ts +0 -0
- /package/build/{config → src/config}/KYCConfigs.js +0 -0
- /package/build/{config → src/config}/allowedDomains.d.ts +0 -0
- /package/build/{config → src/config}/allowedDomains.js +0 -0
- /package/build/{config → src/config}/countriesData.d.ts +0 -0
- /package/build/{config → src/config}/countriesData.js +0 -0
- /package/build/{config → src/config}/region_mapping.d.ts +0 -0
- /package/build/{config → src/config}/region_mapping.js +0 -0
- /package/build/{hooks → src/hooks}/useI18n.d.ts +0 -0
- /package/build/{hooks → src/hooks}/useI18n.js +0 -0
- /package/build/{hooks → src/hooks}/useKYC.d.ts +0 -0
- /package/build/{hooks → src/hooks}/useKYC.js +0 -0
- /package/build/{hooks → src/hooks}/useKYCFlow.d.ts +0 -0
- /package/build/{hooks → src/hooks}/useKYCFlow.js +0 -0
- /package/build/{hooks → src/hooks}/useLocation.d.ts +0 -0
- /package/build/{hooks → src/hooks}/useLocation.js +0 -0
- /package/build/{hooks → src/hooks}/useOrientationVideo.d.ts +0 -0
- /package/build/{hooks → src/hooks}/useOrientationVideo.js +0 -0
- /package/build/{hooks → src/hooks}/useRealtimeVerifier.d.ts +0 -0
- /package/build/{hooks → src/hooks}/useRealtimeVerifier.js +0 -0
- /package/build/{hooks → src/hooks}/useTemplateLoader.d.ts +0 -0
- /package/build/{hooks → src/hooks}/useTemplateLoader.js +0 -0
- /package/build/{i18n → src/i18n}/en/index.d.ts +0 -0
- /package/build/{i18n → src/i18n}/en/index.js +0 -0
- /package/build/{i18n → src/i18n}/fr/index.d.ts +0 -0
- /package/build/{i18n → src/i18n}/fr/index.js +0 -0
- /package/build/{i18n → src/i18n}/index.d.ts +0 -0
- /package/build/{i18n → src/i18n}/index.js +0 -0
- /package/build/{i18n → src/i18n}/types.d.ts +0 -0
- /package/build/{i18n → src/i18n}/types.js +0 -0
- /package/build/{i18n → src/i18n}/usage-example.d.ts +0 -0
- /package/build/{i18n → src/i18n}/usage-example.js +0 -0
- /package/build/{index.d.ts → src/index.d.ts} +0 -0
- /package/build/{index.js → src/index.js} +0 -0
- /package/build/{modules → src/modules}/api/KYCService.d.ts +0 -0
- /package/build/{modules → src/modules}/api/SelfieVerification.d.ts +0 -0
- /package/build/{modules → src/modules}/api/SelfieVerification.js +0 -0
- /package/build/{modules → src/modules}/api/TemplateService.d.ts +0 -0
- /package/build/{modules → src/modules}/api/TemplateService.js +0 -0
- /package/build/{modules → src/modules}/api/backendApi.d.ts +0 -0
- /package/build/{modules → src/modules}/api/backendApi.js +0 -0
- /package/build/{modules → src/modules}/api/types.d.ts +0 -0
- /package/build/{modules → src/modules}/api/types.js +0 -0
- /package/build/{modules → src/modules}/camera/NativeCameraModule.d.ts +0 -0
- /package/build/{modules → src/modules}/camera/NativeCameraModule.js +0 -0
- /package/build/{modules → src/modules}/camera/UnifiedCameraModule.d.ts +0 -0
- /package/build/{modules → src/modules}/camera/UnifiedCameraModule.js +0 -0
- /package/build/{modules → src/modules}/camera/VisionCameraModule.d.ts +0 -0
- /package/build/{modules → src/modules}/camera/VisionCameraModule.js +0 -0
- /package/build/{modules → src/modules}/camera/VisionCameraModule.web.d.ts +0 -0
- /package/build/{modules → src/modules}/camera/VisionCameraModule.web.js +0 -0
- /package/build/{modules → src/modules}/camera/index.d.ts +0 -0
- /package/build/{modules → src/modules}/camera/index.js +0 -0
- /package/build/{stores → src/stores}/kycStore.d.ts +0 -0
- /package/build/{stores → src/stores}/kycStore.js +0 -0
- /package/build/{types → src/types}/KYC.types.d.ts +0 -0
- /package/build/{types → src/types}/KYC.types.js +0 -0
- /package/build/{types → src/types}/env.types.d.ts +0 -0
- /package/build/{types → src/types}/env.types.js +0 -0
- /package/build/{utils → src/utils}/cropByObb.d.ts +0 -0
- /package/build/{utils → src/utils}/cropByObb.js +0 -0
- /package/build/{utils → src/utils}/deviceDetection.d.ts +0 -0
- /package/build/{utils → src/utils}/deviceDetection.js +0 -0
- /package/build/{utils → src/utils}/get-document-type-info.d.ts +0 -0
- /package/build/{utils → src/utils}/get-document-type-info.js +0 -0
- /package/build/{utils → src/utils}/logger.d.ts +0 -0
- /package/build/{utils → src/utils}/logger.js +0 -0
- /package/build/{utils → src/utils}/pathToBase64.d.ts +0 -0
- /package/build/{utils → src/utils}/pathToBase64.js +0 -0
- /package/build/{utils → src/utils}/platformAlert.d.ts +0 -0
- /package/build/{utils → src/utils}/platformAlert.js +0 -0
- /package/build/{utils → src/utils}/remove-duplicate.d.ts +0 -0
- /package/build/{utils → src/utils}/remove-duplicate.js +0 -0
- /package/build/{utils → src/utils}/template-transformer.d.ts +0 -0
- /package/build/{utils → src/utils}/template-transformer.js +0 -0
- /package/build/{web → src/web}/WebKYCEntry.d.ts +0 -0
- /package/build/{web → src/web}/index.d.ts +0 -0
- /package/build/{web → src/web}/index.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/i18n/en/index.ts"],"names":[],"mappings":"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","sourcesContent":["export const en = {\n // Common UI elements\n common: {\n next: 'Next',\n previous: 'Previous',\n continue: 'Continue',\n cancel: 'Cancel',\n confirm: 'Confirm',\n submit: 'Submit',\n retry: 'Retry',\n close: 'Close',\n back: 'Back',\n loading: 'Loading...',\n error: 'Error',\n success: 'Success',\n warning: 'Warning',\n info: 'Information',\n invalidCode: 'Invalid code',\n resendCode: 'Resend code',\n verify: 'Verify',\n sendCode: 'Send code',\n resend: 'Resend',\n email: 'Email',\n otp: 'OTP',\n verificationCode: 'Verification code',\n changeEmail: 'Change Email',\n processing: \"Processing\",\n codeResent: 'Code Resent',\n codeResentMessage: 'Code resent to %{email}',\n phone: 'Phone number with country code',\n },\n\n // KYC Flow\n kyc: {\n title: 'Identity Verification',\n subtitle: 'Complete your identity verification to continue',\n step: 'Step %{current} of %{total}',\n enterCodeSent: \"Enter code sent\",\n\n additionalDocs: {\n title: 'Additional Documents',\n add: \"Press to select file\",\n subtitle: 'Upload additional documents to complete your identity verification',\n uploadButton: 'Upload',\n uploadButtonText: 'Upload',\n uploadSubtext: 'Upload a clear photo of your document',\n supportedFormats: 'Supported formats: JPG, PNG, PDF',\n maxSize: 'Max file size: 10MB',\n processing: 'Processing file...',\n success: 'File uploaded successfully',\n error: 'Failed to upload file. Please try again.'\n },\n\n // Initialization\n initialization: {\n title: 'Welcome to Identity Verification',\n description: 'We need to verify your identity to comply with regulations and ensure security.',\n startButton: 'Start Verification',\n requirements: 'What you\\'ll need:',\n requirementsList: [\n 'Valid government-issued ID',\n 'Good lighting for photos',\n 'Stable internet connection'\n ]\n },\n\n welcome: {\n requirements: 'What you\\'ll need:',\n estimatedTime: 'Estimated time:',\n consent: 'Please accept the following:',\n privacyPolicy: 'I agree to the Privacy Policy',\n termsOfService: 'I agree to the Terms of Service',\n marketingConsent: 'I agree to receive marketing communications',\n readMore: 'Read more',\n getStarted: 'Get Started'\n },\n\n // Location Capture\n locationCapture: {\n title: 'Secure Your Verification',\n description: 'Allow location access to help us protect your account and prevent fraudulent activity during verification.',\n howThisHelps: 'How this helps:',\n howThisHelpsList: '• Verifies your device location matches your identity\\n• Detects and prevents unauthorized access\\n• Ensures compliance with security regulations',\n permissionDeniedTitle: 'Permission denied',\n permissionDeniedMessage: 'Location permission is required to continue.',\n locationDisabledTitle: 'Location disabled',\n locationDisabledMessage: 'Please enable location services on your device to continue.',\n errorTitle: 'Error',\n errorMessage: 'Unable to retrieve your location. Please try again.',\n obtained: 'Location obtained',\n latitudeLabel: 'Latitude',\n longitudeLabel: 'Longitude',\n accuracyLabel: 'Accuracy',\n resetButton: 'Reset',\n enableButton: 'Enable Location Access',\n fetching: 'Fetching...'\n },\n\n // Country Selection\n countrySelection: {\n title: 'Select Your Country',\n subtitle: 'Choose the country that issued your ID document',\n searchPlaceholder: 'Search for your country...',\n noResults: 'No countries found',\n selectCountry: 'Select Country'\n },\n\n // ID Card Capture\n idCardCapture: {\n title: 'Capture Your ID Document',\n subtitle: 'Take a clear photo of your ID document',\n frontSide: 'Front Side',\n backSide: 'Back Side',\n instructions: {\n title: 'Instructions:',\n list: [\n 'Place your ID on a flat surface',\n 'Ensure good lighting',\n 'Keep the entire document in frame',\n 'Avoid glare and shadows'\n ]\n },\n captureButton: 'Capture Photo',\n retakeButton: 'Retake',\n usePhotoButton: 'Use This Photo',\n processing: 'Processing image...',\n success: 'ID captured successfully',\n error: 'Failed to capture ID. Please try again.',\n captureTitle: '%{side} side of your government document',\n cardNotFullyInFrame: 'The ID is not fully in frame. Position the entire card within the frame.',\n continueOnPhone: 'Continue on Phone',\n continueOnMobile: 'Continue on Mobile',\n scanQrCode: 'Scan this QR code with your phone to continue the verification process.',\n },\n\n // Selfie Capture\n selfieCapture: {\n title: 'Take a Selfie',\n subtitle: 'Take a clear selfie for identity verification',\n instructions: {\n title: 'Instructions:',\n list: [\n 'Look directly at the camera',\n 'Ensure good lighting on your face',\n 'Remove glasses and hats',\n 'Keep a neutral expression'\n ]\n },\n captureButton: 'Take Selfie',\n retakeButton: 'Retake',\n usePhotoButton: 'Use This Photo',\n processing: 'Processing selfie...',\n success: 'Selfie captured successfully',\n error: 'Failed to capture selfie. Please try again.'\n },\n\n // File Upload\n fileUpload: {\n title: 'Upload Document',\n subtitle: 'Upload a clear photo of your document',\n selectFile: 'Select File',\n uploadButton: 'Upload',\n dragDropText: 'Drag and drop your file here, or click to select',\n supportedFormats: 'Supported formats: JPG, PNG, PDF',\n maxSize: 'Max file size: 10MB',\n processing: 'Processing file...',\n success: 'File uploaded successfully',\n error: 'Failed to upload file. Please try again.'\n },\n\n // Verification Progress\n verificationProgress: {\n title: 'Verifying Your Identity',\n subtitle: 'Please wait while we verify your information',\n steps: {\n analyzing: 'Analyzing documents...',\n extracting: 'Extracting information...',\n verifying: 'Verifying identity...',\n complete: 'Verification complete'\n },\n retrying: 'Retrying ( %{current} / %{max} )',\n estimatedTime: 'Estimated time: 2-3 minutes',\n status: {\n pending: 'Pending',\n processing: 'Processing',\n completed: 'Completed',\n failed: 'Failed',\n retry: 'Retry'\n }\n },\n\n // Review and Submit\n reviewSubmit: {\n title: 'Review Your Information',\n subtitle: 'Please review the information we extracted',\n personalInfo: 'Personal Information',\n documentInfo: 'Document Information',\n editButton: 'Edit',\n submitButton: 'Submit for Verification',\n confirmMessage: 'Are you sure you want to submit this information?',\n processing: 'Submitting...',\n success: 'Information submitted successfully',\n error: 'Failed to submit information. Please try again.',\n selfieSide: {\n center: 'Center',\n right: 'Right',\n left: 'Left'\n }\n },\n\n // Cancel Confirmation\n cancelConfirmation: {\n title: 'Are you sure you want to cancel?',\n message: 'You will lose all your progress.',\n cancelButton: 'Cancel',\n confirmButton: 'OK'\n }\n },\n\n // Camera and Media\n camera: {\n permissionTitle: 'Camera Permission Required',\n permissionMessage: 'We need access to your camera to capture your ID and selfie.',\n permissionButton: 'Grant Permission',\n settingsButton: 'Open Settings',\n notAvailable: 'Camera not available',\n switchCamera: 'Switch Camera',\n flashOn: 'Flash On',\n flashOff: 'Flash Off',\n capturePhoto: 'Capture Photo',\n processing: 'Processing...',\n permissionRequired: 'Camera permission required. Please grant permission to continue.',\n deviceNotAvailable: 'Camera device not available',\n notReady: 'Camera not ready',\n analyzing: 'Analyzing...',\n errorOccurred: 'Camera error occurred',\n failedToCapture: 'Failed to capture photo',\n failedToStartRecording: 'Failed to start video recording',\n failedToStopRecording: 'Failed to stop video recording'\n },\n\n // Errors\n errors: {\n networkError: 'Network error. Please check your connection.',\n serverError: 'Server error. Please try again later.',\n validationError: 'Please check your information and try again.',\n cameraError: 'Camera error. Please try again.',\n fileError: 'File error. Please try again.',\n timeoutError: 'Request timeout. Please try again.',\n unknownError: 'An unknown error occurred. Please try again.',\n wrongCode: \"Wrong code\",\n invalidCode: \"Invalid code\",\n invalidEmail: \"Invalid email\",\n invalidPhone: \"Invalid phone\",\n invalidDate: \"Invalid date\",\n minLength: \"Min length\",\n maxLength: \"Max length\",\n invalidFormat: \"Invalid format\",\n fileTooLarge: \"File too large\",\n fileTypeNotSupported: \"File type not supported\",\n },\n\n // Validation messages\n validation: {\n required: 'This field is required',\n invalidEmail: 'Please enter a valid email address',\n invalidPhone: 'Please enter a valid phone number',\n invalidDate: 'Please enter a valid date',\n minLength: 'Must be at least %{min} characters',\n maxLength: 'Must be no more than %{max} characters',\n invalidFormat: 'Invalid format',\n fileTooLarge: 'File is too large',\n fileTypeNotSupported: 'File type not supported'\n }\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/i18n/fr/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmQd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/i18n/fr/index.ts"],"names":[],"mappings":"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","sourcesContent":["export const fr = {\n // Common UI elements\n common: {\n next: 'Suivant',\n previous: 'Précédent',\n continue: 'Continuer',\n cancel: 'Annuler',\n confirm: 'Confirmer',\n submit: 'Soumettre',\n retry: 'Réessayer',\n close: 'Fermer',\n back: 'Retour',\n loading: 'Chargement...',\n error: 'Erreur',\n success: 'Succès',\n warning: 'Avertissement',\n info: 'Information',\n invalidCode: 'Code invalide',\n resendCode: 'Renvoyer le code',\n verify: 'Vérifier',\n sendCode: 'Envoyer le code',\n resend: 'Renvoyer',\n email: 'Email',\n otp: 'OTP',\n verificationCode: 'Code de vérification',\n changeEmail: 'Changer d\\'email',\n processing: \"Traitement\",\n codeResent: 'Code Renvoyé',\n codeResentMessage: 'Code renvoyé à %{email}',\n phone: 'Numéro de téléphone avec code pays',\n\n },\n\n // KYC Flow\n kyc: {\n title: 'Vérification d\\'Identité',\n subtitle: 'Complétez votre vérification d\\'identité pour continuer',\n step: 'Étape %{current} sur %{total}',\n\n // Initialization\n initialization: {\n title: 'Bienvenue dans la Vérification d\\'Identité',\n description: 'Nous devons vérifier votre identité pour respecter les réglementations et assurer la sécurité.',\n startButton: 'Commencer la Vérification',\n requirements: 'Ce dont vous aurez besoin :',\n requirementsList: [\n 'Une pièce d\\'identité officielle valide',\n 'Un bon éclairage pour les photos',\n 'Une connexion internet stable'\n ]\n },\n welcome: {\n requirements: 'Ce dont vous aurez besoin :',\n estimatedTime: 'Temps estimé :',\n consent: 'Veuillez accepter les suivants :',\n privacyPolicy: 'J\\'accepte la Politique de Confidentialité',\n termsOfService: 'J\\'accepte les Conditions d\\'Utilisation',\n marketingConsent: 'J\\'accepte de recevoir des communications marketing',\n readMore: 'Lire plus',\n getStarted: 'Commencer'\n },\n\n // Location Capture\n locationCapture: {\n title: 'Sécurisez Votre Vérification',\n description: 'Autorisez l\\'accès à la localisation pour nous aider à protéger votre compte et à prévenir les activités frauduleuses pendant la vérification.',\n howThisHelps: 'Comment cela aide :',\n howThisHelpsList: '• Vérifie que la localisation de votre appareil correspond à votre identité\\n• Détecte et empêche les accès non autorisés\\n• Garantit la conformité aux réglementations de sécurité',\n permissionDeniedTitle: 'Permission refusée',\n permissionDeniedMessage: 'La permission de localisation est nécessaire pour continuer.',\n locationDisabledTitle: 'Localisation désactivée',\n locationDisabledMessage: 'Veuillez activer la localisation sur votre appareil pour continuer.',\n errorTitle: 'Erreur',\n errorMessage: 'Impossible de récupérer votre localisation. Veuillez réessayer.',\n obtained: 'Localisation obtenue',\n latitudeLabel: 'Latitude',\n longitudeLabel: 'Longitude',\n accuracyLabel: 'Précision',\n resetButton: 'Réinitialiser',\n enableButton: 'Activer l\\'accès à la localisation',\n fetching: 'Récupération...'\n },\n\n // Country Selection\n countrySelection: {\n title: 'Sélectionnez Votre Pays',\n subtitle: 'Choisissez le pays qui a émis votre document d\\'identité',\n searchPlaceholder: 'Recherchez votre pays...',\n noResults: 'Aucun pays trouvé',\n selectCountry: 'Sélectionner le Pays'\n },\n\n // ID Card Capture\n idCardCapture: {\n title: 'Capturez Votre Document d\\'Identité',\n subtitle: 'Prenez une photo claire de votre document d\\'identité',\n frontSide: 'Face Avant',\n backSide: 'Face Arrière',\n instructions: {\n title: 'Instructions :',\n list: [\n 'Placez votre pièce d\\'identité sur une surface plane',\n 'Assurez-vous d\\'un bon éclairage',\n 'Gardez tout le document dans le cadre',\n 'Évitez les reflets et les ombres'\n ]\n },\n captureButton: 'Prendre la Photo',\n retakeButton: 'Reprendre',\n usePhotoButton: 'Utiliser Cette Photo',\n processing: 'Traitement de l\\'image...',\n success: 'Document d\\'identité capturé avec succès',\n error: 'Échec de la capture du document. Veuillez réessayer.',\n captureTitle: '%{side} de votre document d\\'identité',\n cardNotFullyInFrame: 'La carte n\\'est pas entièrement visible. Positionnez toute la carte dans le cadre.',\n continueOnPhone: 'Continuer sur mobile',\n continueOnMobile: 'Continuer sur mobile',\n scanQrCode: 'Scannez ce code QR avec votre téléphone pour continuer la vérification.',\n },\n\n // Selfie Capture\n selfieCapture: {\n title: 'Prenez un Selfie',\n subtitle: 'Prenez un selfie clair pour la vérification d\\'identité',\n instructions: {\n title: 'Instructions :',\n list: [\n 'Regardez directement la caméra',\n 'Assurez-vous d\\'un bon éclairage sur votre visage',\n 'Retirez les lunettes et les chapeaux',\n 'Gardez une expression neutre'\n ]\n },\n captureButton: 'Prendre le Selfie',\n retakeButton: 'Reprendre',\n usePhotoButton: 'Utiliser Cette Photo',\n processing: 'Traitement du selfie...',\n success: 'Selfie capturé avec succès',\n error: 'Échec de la capture du selfie. Veuillez réessayer.'\n },\n\n // File Upload\n fileUpload: {\n title: 'Télécharger le Document',\n subtitle: 'Téléchargez une photo claire de votre document',\n selectFile: 'Sélectionner le Fichier',\n uploadButton: 'Télécharger',\n dragDropText: 'Glissez-déposez votre fichier ici, ou cliquez pour sélectionner',\n supportedFormats: 'Formats supportés : JPG, PNG, PDF',\n maxSize: 'Taille maximale : 10MB',\n processing: 'Traitement du fichier...',\n success: 'Fichier téléchargé avec succès',\n error: 'Échec du téléchargement. Veuillez réessayer.'\n },\n\n // Verification Progress\n verificationProgress: {\n title: 'Vérification de Votre Identité',\n subtitle: 'Veuillez patienter pendant que nous vérifions vos informations',\n steps: {\n analyzing: 'Analyse des documents...',\n extracting: 'Extraction des informations...',\n verifying: 'Vérification de l\\'identité...',\n complete: 'Vérification terminée'\n },\n retrying: 'Réessayer ( %{current}/ %{max} )',\n estimatedTime: 'Temps estimé : 2-3 minutes',\n status: {\n pending: 'En attente',\n processing: 'En cours',\n completed: 'Terminé',\n failed: 'Échoué',\n retry: 'Réessayer'\n }\n },\n\n // Review and Submit\n reviewSubmit: {\n title: 'Vérifiez Vos Informations',\n subtitle: 'Veuillez vérifier les informations que nous avons extraites',\n personalInfo: 'Informations Personnelles',\n documentInfo: 'Informations du Document',\n editButton: 'Modifier',\n submitButton: 'Soumettre pour Vérification',\n confirmMessage: 'Êtes-vous sûr de vouloir soumettre ces informations ?',\n processing: 'Soumission...',\n success: 'Informations soumises avec succès',\n error: 'Échec de la soumission. Veuillez réessayer.',\n selfieSide: {\n center: 'Face',\n right: 'Droite',\n left: 'Gauche'\n }\n },\n\n // Confirmation d'annulation\n cancelConfirmation: {\n title: 'Êtes-vous sûr de vouloir annuler ?',\n message: 'Vous perdrez tout votre progrès.',\n cancelButton: 'Annuler',\n confirmButton: 'OK'\n }\n },\n\n // Camera and Media\n camera: {\n permissionTitle: 'Permission Caméra Requise',\n permissionMessage: 'Nous avons besoin d\\'accéder à votre caméra pour capturer votre pièce d\\'identité et votre selfie.',\n permissionButton: 'Accorder la Permission',\n settingsButton: 'Ouvrir les Paramètres',\n notAvailable: 'Caméra non disponible',\n switchCamera: 'Changer de Caméra',\n flashOn: 'Flash Activé',\n flashOff: 'Flash Désactivé',\n capturePhoto: 'Prendre la Photo',\n processing: 'Traitement...',\n permissionRequired: 'Permission caméra requise. Veuillez accorder la permission pour continuer.',\n deviceNotAvailable: 'Appareil photo non disponible',\n notReady: 'Caméra pas prête',\n analyzing: 'Analyse en cours...',\n errorOccurred: 'Erreur de caméra survenue',\n failedToCapture: 'Échec de la capture photo',\n failedToStartRecording: 'Échec du démarrage de l\\'enregistrement vidéo',\n failedToStopRecording: 'Échec de l\\'arrêt de l\\'enregistrement vidéo'\n },\n\n // Errors\n errors: {\n networkError: 'Erreur réseau. Veuillez vérifier votre connexion.',\n serverError: 'Erreur serveur. Veuillez réessayer plus tard.',\n validationError: 'Veuillez vérifier vos informations et réessayer.',\n cameraError: 'Erreur caméra. Veuillez réessayer.',\n fileError: 'Erreur fichier. Veuillez réessayer.',\n timeoutError: 'Délai d\\'attente dépassé. Veuillez réessayer.',\n unknownError: 'Une erreur inconnue s\\'est produite. Veuillez réessayer.',\n wrongCode: \"Wrong code\",\n invalidCode: \"Invalid code\",\n invalidEmail: \"Invalid email\",\n invalidPhone: \"Invalid phone\",\n invalidDate: \"Invalid date\",\n minLength: \"Min length\",\n maxLength: \"Max length\",\n invalidFormat: \"Invalid format\",\n fileTooLarge: \"File too large\",\n fileTypeNotSupported: \"File type not supported\",\n },\n\n validation: {\n required: 'Ce champ est obligatoire',\n invalidEmail: 'Veuillez entrer une adresse email valide',\n invalidPhone: 'Veuillez entrer un numéro de téléphone valide',\n invalidDate: 'Veuillez entrer une date valide',\n minLength: 'Doit contenir au moins {min} caractères',\n maxLength: 'Ne doit pas dépasser {max} caractères',\n invalidFormat: 'Format invalide',\n fileTooLarge: 'Fichier trop volumineux',\n fileTypeNotSupported: 'Type de fichier non supporté'\n }\n\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAK/B,QAAA,MAAM,IAAI,MAAa,CAAC;AA8BxB,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,SAOvC,CAAC;AAGF,eAAO,MAAM,gBAAgB,cAAoB,CAAC;AAGlD,eAAO,MAAM,mBAAmB,gBAAuC,CAAC;AAGxE,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,EAAE,UAAU,GAAG,WAEnD,CAAC;AAGF,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,UAAU,GAAG,WAExE,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,CAAC;AAGhB,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,uBAAuB;AACvB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AAExB,mBAAmB;AACnB,IAAI,CAAC,YAAY,GAAG;IAClB,EAAE;IACF,EAAE;CACH,CAAC;AAEF,qBAAqB;AACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAE1B,qBAAqB;AACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAEnB,oCAAoC;AACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAE3B,gCAAgC;AAChC,IAAI,CAAC,aAAa,GAAG;IACnB,EAAE,EAAE,CAAC,KAAa,EAAE,EAAE;QACpB,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,EAAE,EAAE,CAAC,KAAa,EAAE,EAAE;QACpB,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7C,OAAO,OAAO,CAAC;IACjB,CAAC;CACK,CAAC;AAET,gCAAgC;AAChC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE;IAC1C,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,8CAA8C,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;IACnC,CAAC;AACH,CAAC,CAAC;AAEF,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AAElD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAExE,kDAAkD;AAClD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,OAAa,EAAE,EAAE;IACtD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,OAAa,EAAE,EAAE;IAC3E,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,2BAA2B;AAC3B,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,iBAAiB;AACjB,eAAe,IAAI,CAAC","sourcesContent":["import { I18n } from 'i18n-js';\nimport { en } from './en';\nimport { fr } from './fr';\n\n// Create i18n instance\nconst i18n = new I18n();\n\n// Set translations\ni18n.translations = {\n en,\n fr,\n};\n\n// Set default locale\ni18n.defaultLocale = 'en';\n\n// Set current locale\ni18n.locale = 'en';\n\n// Enable fallback to default locale\ni18n.enableFallback = true;\n\n// Configure pluralization rules\ni18n.pluralization = {\n en: (count: number) => {\n if (count === 1) return 'one';\n return 'other';\n },\n fr: (count: number) => {\n if (count === 0 || count === 1) return 'one';\n return 'other';\n },\n} as any;\n\n// Helper function to set locale\nexport const setLocale = (locale: string) => {\n if (i18n.translations[locale]) {\n i18n.locale = locale;\n } else {\n console.warn(`Locale '${locale}' not found. Falling back to default locale.`);\n i18n.locale = i18n.defaultLocale;\n }\n};\n\n// Helper function to get current locale\nexport const getCurrentLocale = () => i18n.locale;\n\n// Helper function to get available locales\nexport const getAvailableLocales = () => Object.keys(i18n.translations);\n\n// Helper function to translate with interpolation\nexport const translate = (key: string, options?: any) => {\n return i18n.t(key, options);\n};\n\n// Helper function to translate with pluralization\nexport const translatePlural = (key: string, count: number, options?: any) => {\n return i18n.t(key, { count, ...options });\n};\n\n// Export the i18n instance\nexport { i18n };\n\n// Export default\nexport default i18n;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/i18n/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/i18n/types.ts"],"names":[],"mappings":"AAAA,yCAAyC","sourcesContent":["// Type definitions for i18n translations\n\nexport interface CommonTranslations {\n next: string;\n previous: string;\n continue: string;\n cancel: string;\n confirm: string;\n submit: string;\n retry: string;\n close: string;\n back: string;\n loading: string;\n error: string;\n success: string;\n warning: string;\n info: string;\n}\n\nexport interface KYCTranslations {\n title: string;\n subtitle: string;\n step: string;\n \n initialization: {\n title: string;\n description: string;\n startButton: string;\n requirements: string;\n requirementsList: string[];\n };\n \n countrySelection: {\n title: string;\n subtitle: string;\n searchPlaceholder: string;\n noResults: string;\n selectCountry: string;\n };\n \n idCardCapture: {\n title: string;\n subtitle: string;\n frontSide: string;\n backSide: string;\n instructions: {\n title: string;\n list: string[];\n };\n captureButton: string;\n retakeButton: string;\n usePhotoButton: string;\n processing: string;\n success: string;\n error: string;\n captureTitle?: string;\n cardNotFullyInFrame?: string;\n };\n \n selfieCapture: {\n title: string;\n subtitle: string;\n instructions: {\n title: string;\n list: string[];\n };\n captureButton: string;\n retakeButton: string;\n usePhotoButton: string;\n processing: string;\n success: string;\n error: string;\n };\n \n fileUpload: {\n title: string;\n subtitle: string;\n selectFile: string;\n uploadButton: string;\n dragDropText: string;\n supportedFormats: string;\n maxSize: string;\n processing: string;\n success: string;\n error: string;\n };\n \n verificationProgress: {\n title: string;\n subtitle: string;\n steps: {\n analyzing: string;\n extracting: string;\n verifying: string;\n complete: string;\n };\n estimatedTime: string;\n status: {\n pending: string;\n processing: string;\n completed: string;\n failed: string;\n retry: string;\n };\n };\n \n reviewSubmit: {\n title: string;\n subtitle: string;\n personalInfo: string;\n documentInfo: string;\n editButton: string;\n submitButton: string;\n confirmMessage: string;\n processing: string;\n success: string;\n error: string;\n };\n \n cancelConfirmation: {\n title: string;\n message: string;\n cancelButton: string;\n confirmButton: string;\n };\n}\n\nexport interface CameraTranslations {\n permissionTitle: string;\n permissionMessage: string;\n permissionButton: string;\n settingsButton: string;\n notAvailable: string;\n switchCamera: string;\n flashOn: string;\n flashOff: string;\n capturePhoto: string;\n processing: string;\n}\n\nexport interface ErrorTranslations {\n networkError: string;\n serverError: string;\n validationError: string;\n cameraError: string;\n fileError: string;\n timeoutError: string;\n unknownError: string;\n}\n\nexport interface ValidationTranslations {\n required: string;\n invalidEmail: string;\n invalidPhone: string;\n invalidDate: string;\n minLength: string;\n maxLength: string;\n invalidFormat: string;\n fileTooLarge: string;\n fileTypeNotSupported: string;\n}\n\nexport interface TranslationKeys {\n common: CommonTranslations;\n kyc: KYCTranslations;\n camera: CameraTranslations;\n errors: ErrorTranslations;\n validation: ValidationTranslations;\n}\n\n// Type for supported locales\nexport type SupportedLocale = 'en' | 'fr';\n\n// Type for translation function parameters\nexport interface TranslationOptions {\n [key: string]: any;\n}\n\n// Type for pluralization options\nexport interface PluralizationOptions extends TranslationOptions {\n count: number;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-example.d.ts","sourceRoot":"","sources":["../../../src/i18n/usage-example.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAyEnC,CAAC;AA2HF,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-example.js","sourceRoot":"","sources":["../../../src/i18n/usage-example.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View, Text, TouchableOpacity, StyleSheet } from 'react-native';\nimport { useI18n } from '../hooks/useI18n';\n\n// Exemple d'utilisation du système i18n dans votre application\nexport const KYCFlowWithI18n: React.FC = () => {\n const { t, locale, setLocale, availableLocales } = useI18n();\n\n \n\n return (\n <View style={styles.container}>\n {/* Sélecteur de langue */}\n <View style={styles.languageSelector}>\n <Text style={styles.languageLabel}>{t('kyc.countrySelection.title')}</Text>\n <View style={styles.languageButtons}>\n {availableLocales.map((loc) => (\n <TouchableOpacity\n key={loc}\n style={[\n styles.languageButton,\n locale === loc && styles.activeLanguageButton\n ]}\n onPress={() => setLocale(loc)}\n >\n <Text style={[\n styles.languageButtonText,\n locale === loc && styles.activeLanguageButtonText\n ]}>\n {loc.toUpperCase()}\n </Text>\n </TouchableOpacity>\n ))}\n </View>\n </View>\n\n {/* Titre principal */}\n <Text style={styles.title}>{t('kyc.title')}</Text>\n <Text style={styles.subtitle}>{t('kyc.subtitle')}</Text>\n\n {/* Boutons d'action */}\n <View style={styles.buttonContainer}>\n <TouchableOpacity style={styles.primaryButton}>\n <Text style={styles.primaryButtonText}>\n {t('kyc.initialization.startButton')}\n </Text>\n </TouchableOpacity>\n \n <TouchableOpacity style={styles.secondaryButton}>\n <Text style={styles.secondaryButtonText}>\n {t('common.cancel')}\n </Text>\n </TouchableOpacity>\n </View>\n\n {/* Instructions */}\n <View style={styles.instructionsContainer}>\n <Text style={styles.instructionsTitle}>\n {t('kyc.initialization.requirements')}\n </Text>\n {/* {t('kyc.initialization.requirementsList').map((requirement: string, index: number) => (\n <Text key={index} style={styles.requirementItem}>\n • {requirement}\n </Text>\n ))} */}\n </View>\n\n {/* Exemple d'utilisation avec interpolation */}\n <Text style={styles.stepText}>\n {t('kyc.step', { current: 1, total: 3 })}\n </Text>\n\n {/* Exemple d'utilisation avec pluralisation */}\n <Text style={styles.countText}>\n {t('kyc.verificationProgress.estimatedTime')}\n </Text>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n padding: 20,\n backgroundColor: '#FFFFFF',\n },\n languageSelector: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: 20,\n paddingVertical: 10,\n borderBottomWidth: 1,\n borderBottomColor: '#E0E0E0',\n },\n languageLabel: {\n fontSize: 16,\n fontWeight: '600',\n color: '#333333',\n },\n languageButtons: {\n flexDirection: 'row',\n gap: 10,\n },\n languageButton: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n borderRadius: 20,\n backgroundColor: '#F5F5F5',\n borderWidth: 1,\n borderColor: '#E0E0E0',\n },\n activeLanguageButton: {\n backgroundColor: '#007AFF',\n borderColor: '#007AFF',\n },\n languageButtonText: {\n fontSize: 14,\n fontWeight: '500',\n color: '#666666',\n },\n activeLanguageButtonText: {\n color: '#FFFFFF',\n },\n title: {\n fontSize: 28,\n fontWeight: 'bold',\n textAlign: 'center',\n marginBottom: 10,\n color: '#333333',\n },\n subtitle: {\n fontSize: 16,\n textAlign: 'center',\n marginBottom: 30,\n color: '#666666',\n lineHeight: 22,\n },\n buttonContainer: {\n gap: 15,\n marginBottom: 30,\n },\n primaryButton: {\n backgroundColor: '#007AFF',\n paddingVertical: 15,\n paddingHorizontal: 30,\n borderRadius: 8,\n alignItems: 'center',\n },\n primaryButtonText: {\n color: '#FFFFFF',\n fontSize: 16,\n fontWeight: '600',\n },\n secondaryButton: {\n backgroundColor: 'transparent',\n paddingVertical: 15,\n paddingHorizontal: 30,\n borderRadius: 8,\n alignItems: 'center',\n borderWidth: 1,\n borderColor: '#E0E0E0',\n },\n secondaryButtonText: {\n color: '#666666',\n fontSize: 16,\n fontWeight: '500',\n },\n instructionsContainer: {\n backgroundColor: '#F8F9FA',\n padding: 20,\n borderRadius: 10,\n marginBottom: 20,\n },\n instructionsTitle: {\n fontSize: 16,\n fontWeight: '600',\n marginBottom: 15,\n color: '#333333',\n },\n requirementItem: {\n fontSize: 14,\n marginBottom: 8,\n color: '#666666',\n lineHeight: 20,\n },\n stepText: {\n fontSize: 14,\n textAlign: 'center',\n color: '#007AFF',\n fontWeight: '500',\n marginBottom: 10,\n },\n countText: {\n fontSize: 12,\n textAlign: 'center',\n color: '#999999',\n fontStyle: 'italic',\n },\n});\n\nexport default KYCFlowWithI18n;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAI1C,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAG/F,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAGzE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAG3E,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAG1C,mBAAmB;AACnB,cAAc,mBAAmB,CAAC;AAElC,2BAA2B;AAC3B,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE/F,kCAAkC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAEzE,wCAAwC;AACxC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,6BAA6B;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,4BAA4B;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC","sourcesContent":["export * from './TransfergratisSdk.types';\n\n\n// Export KYC types\nexport * from './types/KYC.types';\n\n// Export Environment types\nexport * from './types/env.types';\n\n\nexport { TemplateKYCExample as LauchTransferGratisKYC } from './components/TemplateKYCExample';\n\n// Export Template Flow Components\nexport { TemplateKYCFlow } from './components/TemplateKYCFlowRefactored';\n\n// Export Template Service and Utilities\nexport { default as templateService } from './modules/api/TemplateService';\nexport { transformBackendTemplateToSDK, validateTransformedTemplate } from './utils/template-transformer';\nexport { useTemplateLoader } from './hooks/useTemplateLoader';\n\n// Export Template Components\nexport { WelcomeTemplate } from './components/KYCElements/WelcomeTemplate';\n\n// Export Web KYC Components\nexport { WebKYCEntry } from './web';\n"]}
|
|
@@ -6,6 +6,15 @@ interface CardObbData {
|
|
|
6
6
|
card_in_frame?: boolean;
|
|
7
7
|
cropped_sides?: string[];
|
|
8
8
|
}
|
|
9
|
+
interface ApiVerificationResponse {
|
|
10
|
+
result?: boolean;
|
|
11
|
+
success?: boolean;
|
|
12
|
+
detail?: any[];
|
|
13
|
+
card_obb?: CardObbData[] | any;
|
|
14
|
+
template_path?: string;
|
|
15
|
+
Error?: any;
|
|
16
|
+
[key: string]: any;
|
|
17
|
+
}
|
|
9
18
|
export declare function frontVerification(result: {
|
|
10
19
|
path?: string;
|
|
11
20
|
regionMapping: {
|
|
@@ -42,8 +51,11 @@ export declare function frontVerification(result: {
|
|
|
42
51
|
croppedBase64: string | undefined;
|
|
43
52
|
bbox: IBbox | undefined;
|
|
44
53
|
result?: boolean;
|
|
54
|
+
success?: boolean;
|
|
45
55
|
detail?: any[];
|
|
46
56
|
card_obb?: CardObbData[] | any;
|
|
57
|
+
template_path?: string;
|
|
58
|
+
Error?: any;
|
|
47
59
|
}>;
|
|
48
60
|
export declare function backVerification(result: {
|
|
49
61
|
path?: string;
|
|
@@ -56,6 +68,7 @@ export declare function backVerification(result: {
|
|
|
56
68
|
currentSide: string;
|
|
57
69
|
templatePath?: string;
|
|
58
70
|
mrzType?: string;
|
|
71
|
+
templateResponse?: ApiVerificationResponse;
|
|
59
72
|
}, env?: KycEnvironment): Promise<any>;
|
|
60
73
|
/**
|
|
61
74
|
* Check template type
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CardAuthentification.d.ts","sourceRoot":"","sources":["../../../../src/modules/api/CardAuthentification.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,UAAU,WAAW;IACjB,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,UAAU,uBAAuB;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,wBAAsB,iBAAiB,CACnC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE;QAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAChM,GAAG,GAAE,cAA6B;;;;;;;;;;;;;;;;;;;;;;;;aAXzB,OAAO;cACN,OAAO;aACR,GAAG,EAAE;eACH,WAAW,EAAE,GAAG,GAAG;oBACd,MAAM;YACd,GAAG;GAkJd;AAGD,wBAAsB,gBAAgB,CAClC,MAAM,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,EAAE;QAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC5D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;CAC7C,EACD,GAAG,GAAE,cAA6B,gBAoNrC;AAGD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,GAAE,cAA6B,gBAoFzJ"}
|
|
@@ -88,8 +88,11 @@ export async function frontVerification(result, env = 'PRODUCTION') {
|
|
|
88
88
|
bbox = crop.bbox;
|
|
89
89
|
}
|
|
90
90
|
catch { }
|
|
91
|
-
// MRZ Extraction
|
|
92
|
-
|
|
91
|
+
// MRZ Extraction: only run when a concrete mrzType is available
|
|
92
|
+
const shouldRunMrzExtraction = result.regionMapping?.authMethod?.length > 0 &&
|
|
93
|
+
result.regionMapping.authMethod.includes('MRZ') &&
|
|
94
|
+
!!result?.mrzType;
|
|
95
|
+
if (shouldRunMrzExtraction) {
|
|
93
96
|
const mrzResponse = await kycService.extractMrzText({
|
|
94
97
|
fileUri: result.path || '',
|
|
95
98
|
docType: result?.selectedDocumentType || '',
|
|
@@ -114,110 +117,6 @@ export async function frontVerification(result, env = 'PRODUCTION') {
|
|
|
114
117
|
throw new Error(e?.message || 'Erreur de détection du visage');
|
|
115
118
|
}
|
|
116
119
|
}
|
|
117
|
-
// export async function frontVerification(
|
|
118
|
-
// result: { path?: string, regionMapping: { authMethod: string[], mrzTypes: string[] }, selectedDocumentType: string, code: string, currentSide: string, templatePath?: string, mrzType?: string },
|
|
119
|
-
// env: KycEnvironment = 'PRODUCTION'
|
|
120
|
-
// ) {
|
|
121
|
-
// try {
|
|
122
|
-
// console.log("Front verification START", JSON.stringify({ result }, null, 2));
|
|
123
|
-
// logger.log("Front verification", JSON.stringify({ result }, null, 2));
|
|
124
|
-
// // SANDBOX mode
|
|
125
|
-
// if (env === 'SANDBOX') {
|
|
126
|
-
// console.log("SANDBOX mode: Skipping AI verification for front document");
|
|
127
|
-
// logger.log("SANDBOX mode: Returning mock front verification response");
|
|
128
|
-
// const mockBbox: IBbox = { minX: 400, minY: 800, width: 2200, height: 1400 };
|
|
129
|
-
// // ==========================================
|
|
130
|
-
// // 🧪 TEST OVERRIDE (SANDBOX) 🧪
|
|
131
|
-
// // Immediately throw the error to test the UI
|
|
132
|
-
// // ==========================================
|
|
133
|
-
// throw new Error('CARD_NOT_FULLY_IN_FRAME');
|
|
134
|
-
// const mockResponse = {
|
|
135
|
-
// result: true,
|
|
136
|
-
// detail: [{ confidence: 0.95 }],
|
|
137
|
-
// card_obb: [{
|
|
138
|
-
// obb: [[400,800], [2600,800], [2600,2200], [400,2200]],
|
|
139
|
-
// confidence: 0.95,
|
|
140
|
-
// card_in_frame: false, // Hardcoded to false
|
|
141
|
-
// cropped_sides: ['left', 'top'] // Hardcoded cropped sides
|
|
142
|
-
// }],
|
|
143
|
-
// bbox: mockBbox,
|
|
144
|
-
// ...(result.regionMapping?.authMethod?.includes('MRZ') ? {
|
|
145
|
-
// mrz: {
|
|
146
|
-
// success: true,
|
|
147
|
-
// parsed_data: {
|
|
148
|
-
// status: 'success',
|
|
149
|
-
// document_type: result.selectedDocumentType,
|
|
150
|
-
// mrz_type: result.mrzType || 'TD1'
|
|
151
|
-
// }
|
|
152
|
-
// }
|
|
153
|
-
// } : {})
|
|
154
|
-
// };
|
|
155
|
-
// return mockResponse;
|
|
156
|
-
// }
|
|
157
|
-
// const token = await authentification();
|
|
158
|
-
// // Cast the response so TypeScript knows about card_obb
|
|
159
|
-
// const detected = await kycService.detectFaceOnId(result?.path || '', token, result?.selectedDocumentType || '', env) as ApiVerificationResponse;
|
|
160
|
-
// // ==========================================
|
|
161
|
-
// // 🧪 TEST OVERRIDE (PRODUCTION) 🧪
|
|
162
|
-
// // Hijack the real API response and force it to look cropped
|
|
163
|
-
// // ==========================================
|
|
164
|
-
// if (detected.card_obb && Array.isArray(detected.card_obb) && detected.card_obb.length > 0) {
|
|
165
|
-
// detected.card_obb[0].card_in_frame = false;
|
|
166
|
-
// detected.card_obb[0].cropped_sides = ['left', 'top'];
|
|
167
|
-
// console.warn("⚠️ FORCING CROPPED ERROR FOR UI TESTING ⚠️");
|
|
168
|
-
// }
|
|
169
|
-
// // ==========================================
|
|
170
|
-
// if (!detected.result) {
|
|
171
|
-
// throw new Error('Aucun visage détecté sur la carte. Veuillez reprendre.');
|
|
172
|
-
// }
|
|
173
|
-
// const cardData = detected.card_obb && Array.isArray(detected.card_obb) && detected.card_obb.length > 0
|
|
174
|
-
// ? detected.card_obb[0]
|
|
175
|
-
// : null;
|
|
176
|
-
// // --- STRICT FRAMING CHECK ---
|
|
177
|
-
// if (cardData && typeof cardData.card_in_frame !== 'undefined') {
|
|
178
|
-
// const isCardInFrame = cardData.card_in_frame === true;
|
|
179
|
-
// const hasCroppedSides = Array.isArray(cardData.cropped_sides) && cardData.cropped_sides.length > 0;
|
|
180
|
-
// // If it is NOT in the frame, OR if any side is cropped, block progression
|
|
181
|
-
// if (!isCardInFrame || hasCroppedSides) {
|
|
182
|
-
// logger.log(`Framing failed. Cropped sides: ${hasCroppedSides ? cardData.cropped_sides?.join(', ') : 'none'}`);
|
|
183
|
-
// throw new Error('CARD_NOT_FULLY_IN_FRAME');
|
|
184
|
-
// }
|
|
185
|
-
// }
|
|
186
|
-
// // Check Confidence Threshold
|
|
187
|
-
// const obbConfidence = getObbConfidence(detected.card_obb);
|
|
188
|
-
// if (obbConfidence !== null && obbConfidence < OBB_CONFIDENCE_THRESHOLD) {
|
|
189
|
-
// throw new Error('Carte non entièrement visible. Positionnez toute la carte dans le cadre.');
|
|
190
|
-
// }
|
|
191
|
-
// // Optional: crop image using card_obb for better MRZ/barcode extraction
|
|
192
|
-
// let croppedBase64: string | undefined;
|
|
193
|
-
// let bbox: IBbox | undefined;
|
|
194
|
-
// let mrz: any | undefined;
|
|
195
|
-
// try {
|
|
196
|
-
// const crop = await cropByObb(result?.path || '', detected.card_obb);
|
|
197
|
-
// croppedBase64 = crop.base64;
|
|
198
|
-
// bbox = crop.bbox;
|
|
199
|
-
// } catch { }
|
|
200
|
-
// // MRZ Extraction
|
|
201
|
-
// if (result.regionMapping?.authMethod?.length > 0 && result.regionMapping.authMethod.includes('MRZ')) {
|
|
202
|
-
// mrz = await kycService.extractMrzText(
|
|
203
|
-
// {
|
|
204
|
-
// fileUri: result.path || '',
|
|
205
|
-
// docType: result?.selectedDocumentType || '',
|
|
206
|
-
// docRegion: result?.code || "",
|
|
207
|
-
// postfix: result?.currentSide,
|
|
208
|
-
// token: token,
|
|
209
|
-
// template_path: result?.templatePath || '',
|
|
210
|
-
// mrz_type: result?.mrzType || ''
|
|
211
|
-
// },
|
|
212
|
-
// env
|
|
213
|
-
// );
|
|
214
|
-
// }
|
|
215
|
-
// return { ...detected, croppedBase64, bbox, ...(mrz ? { mrz } : {}) };
|
|
216
|
-
// } catch (e: any) {
|
|
217
|
-
// logger.error('Error front verification:', JSON.stringify(errorMessage(e), null, 2));
|
|
218
|
-
// throw new Error(e?.message || 'Erreur de détection du visage');
|
|
219
|
-
// }
|
|
220
|
-
// }
|
|
221
120
|
export async function backVerification(result, env = 'PRODUCTION') {
|
|
222
121
|
try {
|
|
223
122
|
if (!result.path)
|
|
@@ -259,7 +158,7 @@ export async function backVerification(result, env = 'PRODUCTION') {
|
|
|
259
158
|
}
|
|
260
159
|
const token = await authentification();
|
|
261
160
|
logger.log("1. Checking template and framing for back document...");
|
|
262
|
-
const templateResponse = await kycService.checkTemplateType({
|
|
161
|
+
const templateResponse = result.templateResponse || await kycService.checkTemplateType({
|
|
263
162
|
fileUri: result.path,
|
|
264
163
|
docType: result.selectedDocumentType,
|
|
265
164
|
docRegion: result.code,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CardAuthentification.js","sourceRoot":"","sources":["../../../../src/modules/api/CardAuthentification.ts"],"names":[],"mappings":"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","sourcesContent":["import kycService, { authentification, errorMessage, truncateFields } from \"./KYCService\";\nimport { cropByObb, getObbConfidence, OBB_CONFIDENCE_THRESHOLD } from \"../../utils/cropByObb\";\nimport { GovernmentDocumentType, IBbox } from \"../../types/KYC.types\";\nimport { KycEnvironment } from \"../../types/env.types\";\nimport { logger } from \"../../utils/logger\";\nimport { countryData } from \"../../config/countriesData\";\n\n// 1. Add this interface to tell TypeScript what the AI response actually looks like\ninterface CardObbData {\n obb: number[][];\n confidence: number;\n card_in_frame?: boolean;\n cropped_sides?: string[];\n}\n\ninterface ApiVerificationResponse {\n result?: boolean;\n success?: boolean;\n detail?: any[];\n card_obb?: CardObbData[] | any; \n template_path?: string;\n Error?: any;\n [key: string]: any; \n}\n\nexport async function frontVerification(\n result: { path?: string, regionMapping: { authMethod: string[], mrzTypes: string[] }, selectedDocumentType: string, code: string, currentSide: string, templatePath?: string, mrzType?: string }, \n env: KycEnvironment = 'PRODUCTION'\n) {\n try {\n console.log(\"Front verification START\", JSON.stringify({ result }, null, 2));\n logger.log(\"Front verification\", JSON.stringify({ result }, null, 2));\n \n // SANDBOX mode\n if (env === 'SANDBOX') {\n console.log(\"SANDBOX mode: Skipping AI verification for front document\");\n logger.log(\"SANDBOX mode: Returning mock front verification response\");\n const mockBbox: IBbox = { minX: 400, minY: 800, width: 2200, height: 1400 };\n \n const mockResponse = {\n result: true,\n detail: [{ confidence: 0.95 }],\n card_obb: [{\n obb: [[400,800], [2600,800], [2600,2200], [400,2200]],\n confidence: 0.95,\n card_in_frame: true,\n cropped_sides: []\n }],\n bbox: mockBbox,\n ...(result.regionMapping?.authMethod?.includes('MRZ') ? {\n mrz: {\n success: true,\n parsed_data: {\n status: 'success',\n document_type: result.selectedDocumentType,\n mrz_type: result.mrzType || 'TD1'\n }\n }\n } : {})\n };\n return mockResponse;\n }\n \n const token = await authentification();\n \n // Cast the response so TypeScript knows about card_obb\n const detected = await kycService.detectFaceOnId(result?.path || '', token, result?.selectedDocumentType || '', env) as ApiVerificationResponse;\n\n if (!detected.result) {\n throw new Error('Aucun visage détecté sur la carte. Veuillez reprendre.');\n }\n\n const cardData = detected.card_obb && Array.isArray(detected.card_obb) && detected.card_obb.length > 0 \n ? detected.card_obb[0] \n : null;\n\n let points = null;\n let isCardInFrame = true;\n let hasCroppedSides = false;\n\n // Extract data safely\n if (cardData) {\n points = cardData.obb;\n if (typeof cardData.card_in_frame !== 'undefined') {\n isCardInFrame = cardData.card_in_frame === true;\n hasCroppedSides = Array.isArray(cardData.cropped_sides) && cardData.cropped_sides.length > 0;\n }\n }\n\n // --- 1. STRICT FRAMING CHECK (MUST HAPPEN FIRST) ---\n if (!isCardInFrame || hasCroppedSides) {\n logger.log(`Front Framing failed. Cropped sides detected.`);\n throw new Error('CARD_NOT_FULLY_IN_FRAME');\n }\n\n // --- 2. STRICT DISTANCE CHECK (ONLY RUNS IF FULLY IN FRAME) ---\n if (points && points.length === 4) {\n const getDistance = (p1: number[], p2: number[]) => Math.sqrt(Math.pow(p2[0] - p1[0], 2) + Math.pow(p2[1] - p1[1], 2));\n const longestCardEdge = Math.max(getDistance(points[0], points[1]), getDistance(points[1], points[2]));\n\n const maxX = Math.max(points[0][0], points[1][0], points[2][0], points[3][0]);\n const maxY = Math.max(points[0][1], points[1][1], points[2][1], points[3][1]);\n const estimatedImageScale = Math.max(maxX, maxY);\n\n const fillPercentage = longestCardEdge / estimatedImageScale;\n logger.log(`Front Card Fill Percentage: ${(fillPercentage * 100).toFixed(1)}%`);\n\n if (fillPercentage < 0.50) { \n logger.log(\"🛑 Front Image rejected: Document is too far away.\");\n throw new Error(\"TOO_FAR_AWAY\"); \n }\n }\n\n \n\n \n\n // Check Confidence Threshold\n const obbConfidence = getObbConfidence(detected.card_obb);\n if (obbConfidence !== null && obbConfidence < OBB_CONFIDENCE_THRESHOLD) {\n throw new Error('Carte non entièrement visible. Positionnez toute la carte dans le cadre.');\n }\n\n // Optional: crop image using card_obb for better MRZ/barcode extraction\n let croppedBase64: string | undefined;\n let bbox: IBbox | undefined;\n let mrz: any | undefined;\n try {\n const crop = await cropByObb(result?.path || '', detected.card_obb);\n croppedBase64 = crop.base64;\n bbox = crop.bbox;\n } catch { }\n\n // MRZ Extraction: only run when a concrete mrzType is available\n const shouldRunMrzExtraction =\n result.regionMapping?.authMethod?.length > 0 &&\n result.regionMapping.authMethod.includes('MRZ') &&\n !!result?.mrzType;\n if (shouldRunMrzExtraction) {\n const mrzResponse = await kycService.extractMrzText(\n {\n fileUri: result.path || '',\n docType: result?.selectedDocumentType || '',\n docRegion: result?.code || \"\",\n postfix: result?.currentSide,\n token: token,\n template_path: result?.templatePath || '',\n mrz_type: result?.mrzType || ''\n },\n env\n );\n\n // Safety check: parse if it was returned as a raw string\n mrz = typeof mrzResponse === 'string' ? JSON.parse(mrzResponse) : mrzResponse;\n\n if (mrz && (!mrz.success || mrz.parsed_data?.status === 'FAILURE')) {\n logger.log(\"🛑 Front MRZ Extraction Failed:\", mrz.parsed_data?.status_message);\n throw new Error(`MRZ illisible: ${mrz.parsed_data?.status_message || 'Veuillez nettoyer l\\'objectif et réessayer'}`);\n }\n }\n\n return { ...detected, croppedBase64, bbox, ...(mrz ? { mrz } : {}) };\n } catch (e: any) {\n logger.error('Error front verification:', e?.message);\n // Do not use LogBox for background silent errors\n throw new Error(e?.message || 'Erreur de détection du visage');\n }\n}\n\n\nexport async function backVerification(\n result: {\n path?: string,\n regionMapping: { authMethod: string[], mrzTypes: string[] },\n selectedDocumentType: string,\n code: string,\n currentSide: string,\n templatePath?: string,\n mrzType?: string,\n templateResponse?: ApiVerificationResponse\n }, \n env: KycEnvironment = 'PRODUCTION'\n) {\n try {\n if (!result.path) throw new Error('No path provided');\n logger.log(\"result.regionMapping\", result.regionMapping, result.currentSide, result.code);\n \n if (env === 'SANDBOX') {\n console.log(\"SANDBOX mode: Skipping AI verification for back document\");\n \n const mockBbox: IBbox = { minX: 400, minY: 800, width: 2200, height: 1400 };\n const mockCardObb = [{\n obb: [[400,800], [2600,800], [2600,2200], [400,2200]],\n confidence: 0.95,\n card_in_frame: true,\n cropped_sides: []\n }];\n \n if (result.regionMapping?.authMethod?.includes('MRZ')) {\n return {\n success: true,\n mrz: { \n success: true,\n parsed_data: {\n status: 'SUCCESS', \n document_type: result.selectedDocumentType,\n mrz_type: result.mrzType || 'TD1'\n }\n },\n bbox: mockBbox,\n card_obb: mockCardObb\n };\n } else if (result.regionMapping?.authMethod?.includes('2D_barcode')) {\n return {\n success: true,\n barcode: { barcode_data: 'SANDBOX_MOCK_BARCODE' },\n bbox: mockBbox,\n card_obb: mockCardObb\n };\n }\n return { success: true, bbox: mockBbox, card_obb: mockCardObb };\n }\n \n const token = await authentification();\n\n logger.log(\"1. Checking template and framing for back document...\");\n \n const templateResponse: ApiVerificationResponse = result.templateResponse || await kycService.checkTemplateType({\n fileUri: result.path,\n docType: result.selectedDocumentType as any,\n docRegion: result.code,\n postfix: 'back',\n token: token\n }, env);\n\n if (templateResponse.success === false || templateResponse.Error) {\n logger.log(\"Backend returned an error:\", templateResponse.Error);\n throw new Error('Impossible de lire le document. Veuillez vous rapprocher et stabiliser la caméra.');\n }\n\n const cardData = templateResponse?.card_obb && Array.isArray(templateResponse.card_obb) && templateResponse.card_obb.length > 0 \n ? templateResponse.card_obb[0] \n : null;\n\n if (!cardData) {\n throw new Error('CARD_NOT_FULLY_IN_FRAME');\n }\n\n let points = null;\n let isCardInFrame = false; \n let hasCroppedSides = true; \n\n // Safely extract coordinates and frame status\n if (cardData.obb) { \n points = cardData.obb;\n if (typeof cardData.card_in_frame !== 'undefined') {\n isCardInFrame = cardData.card_in_frame === true;\n hasCroppedSides = Array.isArray(cardData.cropped_sides) && cardData.cropped_sides.length > 0;\n }\n } else if (Array.isArray(cardData) && Array.isArray(cardData[0])) { \n points = cardData[0];\n isCardInFrame = true; \n hasCroppedSides = false;\n \n if (points && points.length === 4) {\n const minX = Math.min(...points.map((p: number[]) => p[0]));\n const minY = Math.min(...points.map((p: number[]) => p[1]));\n if (minX <= 15 || minY <= 15) {\n isCardInFrame = false;\n hasCroppedSides = true;\n }\n }\n }\n\n // --- 2. STRICT FRAMING CHECK (MUST HAPPEN FIRST) ---\n if (!isCardInFrame || hasCroppedSides) {\n logger.log(`Back Framing failed. Coordinates hit image boundary.`);\n throw new Error('CARD_NOT_FULLY_IN_FRAME');\n }\n\n // --- 3. STRICT DISTANCE CHECK (ONLY RUNS IF FULLY IN FRAME) ---\n if (points && points.length === 4) {\n const getDistance = (p1: number[], p2: number[]) => Math.sqrt(Math.pow(p2[0] - p1[0], 2) + Math.pow(p2[1] - p1[1], 2));\n const longestCardEdge = Math.max(getDistance(points[0], points[1]), getDistance(points[1], points[2]));\n\n const maxX = Math.max(points[0][0], points[1][0], points[2][0], points[3][0]);\n const maxY = Math.max(points[0][1], points[1][1], points[2][1], points[3][1]);\n const estimatedImageScale = Math.max(maxX, maxY);\n\n const fillPercentage = longestCardEdge / estimatedImageScale;\n logger.log(`Back Card Fill Percentage: ${(fillPercentage * 100).toFixed(1)}%`);\n\n if (fillPercentage < 0.50) { \n logger.log(\"🛑 Back Image rejected: Document is too far away.\");\n throw new Error(\"TOO_FAR_AWAY\"); \n }\n }\n \n const obbConf = getObbConfidence(templateResponse?.card_obb);\n if (obbConf !== null && obbConf < OBB_CONFIDENCE_THRESHOLD) {\n throw new Error('Carte non entièrement visible. Positionnez toute la carte dans le cadre.');\n }\n\n const activeTemplatePath = templateResponse.template_path || result.templatePath || '';\n \n if (activeTemplatePath) {\n const expectedCountryName = countryData[result.code]?.name_en || '';\n const hasCodeMatch = activeTemplatePath.includes(`_${result.code}_`);\n const hasNameMatch = expectedCountryName && activeTemplatePath.toLowerCase().includes(expectedCountryName.toLowerCase());\n\n if (!hasCodeMatch && !hasNameMatch) {\n logger.log(`Template mismatch! Expected country: ${result.code} (${expectedCountryName}), Detected: ${activeTemplatePath}`);\n throw new Error(`Le document ne correspond pas au pays sélectionné (${result.code}).`);\n }\n }\n\n logger.log(\"Framing and Country Template verified successfully. Proceeding to Data Extraction.\");\n\n const hasMrz = result.regionMapping?.authMethod?.includes('MRZ') || !result.regionMapping?.authMethod?.length;\n const hasBarcode = result.regionMapping?.authMethod?.includes('2D_barcode');\n\n let extractionResult: any = {};\n\n // --- 4. Try MRZ First (If required or default) ---\n if (hasMrz) {\n try {\n logger.log(\"Tentative d'extraction MRZ\");\n const mrzResponse = await kycService.extractMrzText({\n fileUri: result.path!,\n docType: result?.selectedDocumentType || '',\n docRegion: result?.code || '',\n postfix: 'back',\n token: token,\n template_path: activeTemplatePath, \n mrz_type: result?.mrzType || '' // Safe to send empty string\n }, env);\n \n const mrz = typeof mrzResponse === 'string' ? JSON.parse(mrzResponse) : mrzResponse;\n \n if (!mrz || !mrz.success || mrz.parsed_data?.status === 'FAILURE') {\n throw new Error(mrz?.parsed_data?.status_message || 'Lecture MRZ échouée');\n }\n \n extractionResult = { mrz };\n\n } catch (mrzError: any) {\n if (hasBarcode) {\n logger.log(`MRZ échoué (${mrzError?.message}), tentative d'extraction barcode...`);\n try {\n const barcode = await kycService.extractBarcode({ fileUri: result.path!, token: token }, env);\n extractionResult = { barcode };\n } catch (barcodeError: any) {\n throw new Error(`MRZ et Barcode ont échoué. Veuillez stabiliser la carte.`);\n }\n } else {\n throw new Error(`Lecture MRZ invalide: ${mrzError?.message}`);\n }\n }\n } \n // --- 5. Try Barcode Only ---\n else if (hasBarcode) {\n try {\n logger.log(\"Tentative d'extraction barcode seule\");\n const barcode = await kycService.extractBarcode({ fileUri: result.path!, token: token }, env);\n extractionResult = { barcode };\n } catch (e: any) {\n throw new Error(`Lecture Barcode échouée: ${e?.message}`);\n }\n }\n\n let bbox: IBbox | undefined;\n let croppedBase64: string | undefined;\n\n try {\n const crop = await cropByObb(result?.path || '', templateResponse.card_obb);\n bbox = crop.bbox;\n croppedBase64 = crop.base64;\n } catch { }\n\n return { \n success: true,\n ...extractionResult, \n bbox, \n croppedBase64, \n card_obb: templateResponse.card_obb \n };\n\n } catch (e: any) {\n if (e?.message === 'CARD_NOT_FULLY_IN_FRAME' || e?.message === 'TOO_FAR_AWAY') {\n throw e; \n }\n throw new Error(e?.message || 'Erreur de détection des données');\n }\n}\n\n\n/**\n * Check template type\n * @param result \n * @returns \n */\nexport async function checkTemplateType(result: { path?: string, docType: string, docRegion: string, postfix: string }, env: KycEnvironment = 'PRODUCTION') {\n try {\n if (env === 'SANDBOX') {\n return {\n template_path: `templates/${result.docType}_${result.docRegion}_${result.postfix}.jpg`,\n card_obb: [{\n obb: [[400,800], [2600,800], [2600,2200], [400,2200]],\n confidence: 0.95,\n card_in_frame: true,\n cropped_sides: []\n }]\n };\n }\n \n const token = await authentification();\n const templateType = await kycService.checkTemplateType({ fileUri: result.path || '', docType: result?.docType as GovernmentDocumentType, docRegion: result?.docRegion || \"\", postfix: result?.postfix, token: token }, env);\n\n if (templateType.success === false || templateType.Error) {\n logger.log(\"Backend returned an error:\", templateType.Error);\n throw new Error('Impossible de lire le document. Veuillez vous rapprocher et stabiliser la caméra.');\n }\n\n const cardData = templateType.card_obb && Array.isArray(templateType.card_obb) && templateType.card_obb.length > 0 \n ? templateType.card_obb[0] \n : null;\n\n if (!cardData) {\n throw new Error('CARD_NOT_FULLY_IN_FRAME');\n }\n\n // Default to FALSE so it must prove it is in the frame\n let points = null;\n let isCardInFrame = false; \n let hasCroppedSides = true; \n\n // Extract data safely based on API response format\n if (cardData.obb) { \n points = cardData.obb;\n if (typeof cardData.card_in_frame !== 'undefined') {\n isCardInFrame = cardData.card_in_frame === true;\n hasCroppedSides = Array.isArray(cardData.cropped_sides) && cardData.cropped_sides.length > 0;\n }\n } else if (Array.isArray(cardData) && Array.isArray(cardData[0])) { \n points = cardData[0];\n isCardInFrame = true; // Passed initial existence check\n hasCroppedSides = false;\n \n // MATH FALLBACK: Check if the coordinates are touching the absolute edge of the photo.\n if (points && points.length === 4) {\n const minX = Math.min(...points.map((p: number[]) => p[0]));\n const minY = Math.min(...points.map((p: number[]) => p[1]));\n // If any corner is within 15 pixels of the edge, it is physically cut off!\n if (minX <= 15 || minY <= 15) {\n isCardInFrame = false;\n hasCroppedSides = true;\n }\n }\n }\n\n // --- 3. STRICT FRAMING CHECK (MUST HAPPEN FIRST) ---\n if (!isCardInFrame || hasCroppedSides) {\n logger.log(`Template Framing failed. Coordinates hit image boundary.`);\n throw new Error('CARD_NOT_FULLY_IN_FRAME');\n }\n\n \n const LPIPS_THRESHOLD = 0.75; \n \n if (templateType.lpips_score !== undefined && templateType.lpips_score > LPIPS_THRESHOLD) {\n logger.log(`🛑 Country Mismatch! LPIPS Score too high: ${templateType.lpips_score}`);\n throw new Error(`Le document présenté ne correspond pas au pays sélectionné (${result.docRegion}).`);\n }\n\n logger.log(\"templateType result\", JSON.stringify(truncateFields(templateType), null, 2));\n return templateType;\n } catch (e: any) {\n logger.error('Error checking template type:', JSON.stringify(errorMessage(e), null, 2));\n \n if (e?.message === 'CARD_NOT_FULLY_IN_FRAME' || e?.message?.includes('ne correspond pas')) {\n throw e; \n }\n \n throw new Error(e?.message || 'Erreur de vérification du template');\n }\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KYCService.d.ts","sourceRoot":"","sources":["../../../../src/modules/api/KYCService.ts"],"names":[],"mappings":"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"}
|
|
@@ -487,10 +487,10 @@ export function truncateFields(obj, maxLength = 420) {
|
|
|
487
487
|
}
|
|
488
488
|
export const authentification = async () => {
|
|
489
489
|
try {
|
|
490
|
-
logger.log('authentification params', 'kyc_frontend', '
|
|
490
|
+
logger.log('authentification params', 'kyc_frontend', 'QhgAmvKgmwODzsEp98dnA4PeUEMMaFHd');
|
|
491
491
|
const params = new URLSearchParams();
|
|
492
492
|
params.append('client_id', 'kyc_frontend');
|
|
493
|
-
params.append('client_secret', '
|
|
493
|
+
params.append('client_secret', 'QhgAmvKgmwODzsEp98dnA4PeUEMMaFHd');
|
|
494
494
|
params.append('grant_type', 'client_credentials');
|
|
495
495
|
const res = await axios.post(`https://keycloak.transfergratis.net/realms/kyc/protocol/openid-connect/token`, params, {
|
|
496
496
|
headers: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KYCService.js","sourceRoot":"","sources":["../../../../src/modules/api/KYCService.ts"],"names":[],"mappings":"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","sourcesContent":["import axios from 'axios';\nimport { GovernmentDocumentType, GovernmentDocumentTypeShorted, OrientationVideoResponse } from '../../types/KYC.types';\nimport { CheckTemplateTypeResponse, ExtractMrzTextResponse } from '../../components/OverLay/type';\nimport { SessionResponse, VerificationResult, VerificationSessionRequest } from './types';\nimport { KycEnvironment } from '../../types/env.types';\nimport { logger } from '../../utils/logger';\nimport { Platform } from 'react-native';\nimport KYCConfig from '../../config/KYCConfig';\n\nconst appendFileToFormData = async (formData: FormData, key: string, uri: string, name: string = 'file.jpg', type: string = 'image/jpeg') => {\n if (Platform.OS === 'web') {\n const response = await fetch(uri);\n const blob = await response.blob();\n formData.append(key, blob, name);\n } else {\n formData.append(key, { uri, type, name } as any);\n }\n};\n\n\nexport interface KYCRequest {\n userId: string;\n documentImage: string;\n selfieImage: string;\n documentType: 'passport' | 'id_card' | 'drivers_license';\n}\n\nexport interface KYCResponse {\n success: boolean;\n verificationId: string;\n status: 'pending' | 'approved' | 'rejected';\n message?: string;\n}\n\nexport interface FaceDetectionRequest {\n selfieImage: string;\n documentImage: string;\n}\n\nexport interface FaceDetectionResponse {\n match: boolean;\n confidence: number;\n message: string;\n}\n\nexport interface SelfieVideoResponse {\n orientation_direction: \"center\" | \"left\" | \"right\",\n turn_score: number;\n bbox: number[];\n capture: boolean;\n instruction: string;\n error: string;\n}\n\n\nexport class KYCService {\n private baseURL: string;\n private apiKey: string;\n // Additional service base URLs (fixed as per current infra)\n private faceServiceURL = 'https://kyc-engine.transfergratis.net:8000';\n private textExtractionServiceURL = 'https://kyc-engine.transfergratis.net:8006';\n private mrzServiceURL = 'https://kyc-engine.transfergratis.net:8002';\n private barcodeServiceURL = 'https://kyc-engine.transfergratis.net:8000';\n private orientationServiceURL = 'http://18.188.180.154:8080';\n\n constructor(baseURL: string, apiKey: string) {\n this.baseURL = baseURL;\n this.apiKey = apiKey;\n }\n\n private getHeaders() {\n return {\n 'Authorization': `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n };\n }\n\n async submitKYC(data: KYCRequest): Promise<KYCResponse> {\n try {\n const response = await axios.post(\n `${this.baseURL}/kyc/submit`,\n data,\n { headers: this.getHeaders() }\n );\n return response.data;\n } catch (error) {\n logger.error('Error submitting KYC:', error);\n throw error;\n }\n }\n\n async detectFace(data: FaceDetectionRequest): Promise<FaceDetectionResponse> {\n try {\n const response = await axios.post(\n `${this.baseURL}/ai/face-detection`,\n data,\n { headers: this.getHeaders() }\n );\n return response.data;\n } catch (error) {\n logger.error('Error detecting face:', error);\n throw error;\n }\n }\n\n async validateDocument(documentImage: string, documentType: string): Promise<any> {\n try {\n const response = await axios.post(\n `${this.baseURL}/ai/document-validation`,\n { documentImage, documentType },\n { headers: this.getHeaders() }\n );\n return response.data;\n } catch (error) {\n logger.error('Error validating document:', error);\n throw error;\n }\n }\n\n async getKYCStatus(verificationId: string): Promise<KYCResponse> {\n try {\n const response = await axios.get(\n `${this.baseURL}/kyc/status/${verificationId}`,\n { headers: this.getHeaders() }\n );\n return response.data;\n } catch (error) {\n logger.error('Error getting KYC status:', error);\n throw error;\n }\n }\n\n async processSelfieOrientationPicture(videoFile: string, token: string): Promise<SelfieVideoResponse[]> {\n try {\n const formData = new FormData();\n await appendFileToFormData(formData, 'file', videoFile, 'selfie_picture.jpg', 'image/jpeg');\n\n const response = await axios.post<SelfieVideoResponse[]>(\n `${this.faceServiceURL}/detect_face_orientation/`,\n formData,\n {\n timeout: 20000,\n headers: { 'Content-Type': 'multipart/form-data', 'Authorization': `Bearer ${token}`, },\n }\n );\n return response.data;\n } catch (error) {\n logger.error('Error processing selfie orientation:', error);\n throw error;\n }\n }\n\n async processOrientationVideo(videoFile: string, env: KycEnvironment = 'PRODUCTION'): Promise<OrientationVideoResponse> {\n try {\n // SANDBOX mode: skip AI verification and return mock response\n if (env === 'SANDBOX') {\n console.log(\"SANDBOX mode: Skipping AI orientation video processing\");\n logger.log(\"SANDBOX mode: Returning mock orientation video response\");\n return {\n success: true,\n data: {\n center: { captured: true, frame: 10 },\n left: { captured: true, frame: 30 },\n right: { captured: true, frame: 50 }\n },\n message: 'SANDBOX: Orientation video processed successfully (mocked)'\n };\n }\n\n // Create FormData for multipart/form-data request\n const formData = new FormData();\n await appendFileToFormData(formData, 'file', videoFile, 'orientation_video.mp4', 'video/mp4');\n\n\n const response = await axios.post(\n `${this.orientationServiceURL}/process_orientation_video_stream/`,\n formData,\n {\n // Let axios set the proper multipart boundary header automatically\n timeout: 90000,\n }\n );\n\n return {\n success: true,\n data: response.data,\n message: 'Orientation video processed successfully'\n };\n } catch (error: any) {\n logger.error('Error processing orientation video:', JSON.stringify(error, null, 2));\n\n // Handle specific error cases\n if (error.response?.status === 503) {\n return {\n success: false,\n error: {\n code: 'SERVICE_UNAVAILABLE',\n message: 'Service not ready, model not initialized.',\n details: error.response.data\n },\n message: 'Service temporarily unavailable'\n };\n }\n\n return {\n success: false,\n error: {\n code: 'PROCESSING_ERROR',\n message: error.response?.data?.detail || error.message || 'Unknown error occurred',\n details: error.response?.data\n },\n message: 'Failed to process orientation video'\n };\n }\n }\n\n // STEP 1 - ID CARD VALIDATION\n async detectFaceOnId(idCardImageUri: string, token: string, docType: string, env: KycEnvironment = 'PRODUCTION'): Promise<{ result: boolean, detail: any[] }> {\n // SANDBOX mode\n if (env === 'SANDBOX') {\n console.log(\"SANDBOX mode: Skipping AI face detection on ID\");\n logger.log(\"SANDBOX mode: Returning mock face detection response\");\n return {\n result: true,\n detail: [{ confidence: 0.95, bbox: [50, 50, 200, 200] }],\n card_obb: { x: 50, y: 50, width: 200, height: 200 }\n } as any;\n }\n\n const formData = new FormData();\n // Defaulting to photo since we don't pass postfix here currently, but making the name generic\n await appendFileToFormData(formData, 'file', idCardImageUri, 'id_card_photo.jpg', 'image/jpeg');\n\n logger.log('detectFaceOnId formData', JSON.stringify(formData, null, 2));\n\n const docTypeShorted = GovernmentDocumentTypeShorted[docType as GovernmentDocumentType];\n logger.log('detectFaceOnId docTypeShorted', docTypeShorted);\n try {\n const res = await axios.post(`${this.faceServiceURL}/detect_face/?doc_type=${docTypeShorted}`, formData,\n {\n headers: { 'Content-Type': 'multipart/form-data', 'Authorization': `Bearer ${token}`, },\n timeout: 20000\n });\n logger.log('detectFaceOnId res', JSON.stringify(res.data, null, 2));\n\n if (res.data?.result) return res.data;\n throw new Error(res.data?.detail || 'detect_face failed');\n } catch (error) {\n logger.error('Error detecting face on id:', JSON.stringify(error));\n throw error;\n }\n }\n\n //check templatetemplate_type\n async checkTemplateType(params: { fileUri: string; docType: string; docRegion: string; token: string; postfix: string }, env: KycEnvironment = 'PRODUCTION'): Promise<any> {\n // SANDBOX mode\n if (env === 'SANDBOX') {\n console.log(\"SANDBOX mode: Skipping AI template type check\");\n logger.log(\"SANDBOX mode: Returning mock template type response\");\n const { docType, docRegion, postfix } = params;\n return {\n template_path: `templates/${docType}_${docRegion}_${postfix}.jpg`,\n card_obb: { x: 50, y: 50, width: 200, height: 200 }\n };\n }\n\n const { fileUri, docType, docRegion, token, postfix } = params;\n const formData = new FormData();\n \n // ✅ FIX: Dynamically assign the postfix to the filename\n await appendFileToFormData(formData, 'file', fileUri, `id_card_${postfix}.jpg`, 'image/jpeg');\n\n const docTypeShorted = GovernmentDocumentTypeShorted[docType as GovernmentDocumentType];\n const url = `${this.mrzServiceURL}/get_template_version/?doc_type=${encodeURIComponent(docTypeShorted)}&doc_region=${encodeURIComponent(docRegion)}&postfix=${postfix}`;\n\n logger.log('checkTemplateType params', this.mrzServiceURL, JSON.stringify({ fileUri, docTypeShorted, docRegion, token, postfix, url }, null, 2));\n try {\n const res = await axios.post<CheckTemplateTypeResponse>(url, formData, {\n headers: { 'Content-Type': 'multipart/form-data', 'Authorization': `Bearer ${token}`, },\n timeout: 60000,\n });\n logger.log('checkTemplateType res', JSON.stringify(res.data, null, 2));\n return res.data;\n } catch (e: any) {\n logger.error('Error checking template type:', JSON.stringify(e));\n throw e;\n }\n\n }\n\n async extractDocumentInformation(params: { fileUri: string; docType: string; docRegion: string; token: string; postfix?: string }): Promise<any> {\n const { fileUri, docType, docRegion, token, postfix = 'front' } = params;\n const formData = new FormData();\n \n // ✅ FIX: Dynamic filename\n await appendFileToFormData(formData, 'file', fileUri, `id_card_${postfix}.jpg`, 'image/jpeg');\n\n const url = `${this.textExtractionServiceURL}/extract_doc_information/?doc_type=${encodeURIComponent(docType)}&doc_region=${encodeURIComponent(docRegion)}`;\n const attempt = async () => {\n const res = await axios.post(url, formData, {\n headers: { 'Content-Type': 'multipart/form-data', 'Authorization': `Bearer ${token}`, },\n timeout: 60000,\n });\n logger.log('extractDocumentInformation res', JSON.stringify(truncateFields(res)));\n\n if (res.data?.detail) throw new Error(res.data.detail);\n return res.data;\n };\n try {\n return await attempt();\n } catch (e) {\n logger.error('Error extracting document information:', JSON.stringify(truncateFields(e)));\n throw e;\n }\n }\n\n // STEP 2 - barcode extraction\n async extractBarcode(params: { fileUri: string; token: string; postfix?: string }, env: KycEnvironment = 'PRODUCTION'): Promise<any> {\n // SANDBOX mode\n if (env === 'SANDBOX') {\n console.log(\"SANDBOX mode: Skipping AI barcode extraction\");\n logger.log(\"SANDBOX mode: Returning mock barcode response\");\n return {\n barcode_data: 'SANDBOX_MOCK_BARCODE_DATA',\n card_obb: { x: 50, y: 50, width: 200, height: 200 }\n };\n }\n\n const { fileUri, token, postfix = 'back' } = params;\n const formData = new FormData();\n \n // ✅ FIX: Dynamic filename\n await appendFileToFormData(formData, 'file', fileUri, `id_card_${postfix}.jpg`, 'image/jpeg');\n\n const url = `${this.barcodeServiceURL}/decode_barcode/`;\n const attempt = async () => {\n try {\n const res = await axios.post(url, formData, {\n headers: { 'Content-Type': 'multipart/form-data', 'Authorization': `Bearer ${token}`, },\n timeout: 60000,\n });\n logger.log('extractBarcode res', JSON.stringify(res.data, null, 2));\n if (Object.keys(res.data).length === 0) throw new Error('No data found');\n return res.data;\n } catch (e: any) {\n throw new Error(e?.message || 'Erreur de détection du barcode');\n }\n };\n try {\n return await attempt();\n } catch (e) {\n logger.error('Error extracting Barcode text:', JSON.stringify(e));\n throw e;\n }\n }\n\n // STEP 3 - MRZ TEXT EXTRACTION\n async extractMrzText(\n params: { \n fileUri: string; \n docType: string; \n docRegion: string; \n postfix?: string; \n token: string; \n template_path: string; \n mrz_type?: string; \n }, \n env: KycEnvironment = 'PRODUCTION'\n ): Promise<any> {\n // SANDBOX mode\n if (env === 'SANDBOX') {\n console.log(\"SANDBOX mode: Skipping AI MRZ extraction\");\n logger.log(\"SANDBOX mode: Returning mock MRZ response\");\n const { docType, docRegion, postfix = 'back', mrz_type } = params;\n return {\n success: true,\n parsed_data: {\n status: 'success',\n document_type: docType,\n mrz_type: mrz_type || 'TD1',\n doc_region: docRegion,\n postfix: postfix\n },\n card_obb: { x: 50, y: 50, width: 200, height: 200 }\n };\n }\n\n const { fileUri, docType, docRegion, postfix = 'back', token, template_path, mrz_type } = params;\n const formData = new FormData();\n \n // ✅ Dynamic filename to prevent passports from crashing (since their MRZ is on the front)\n await appendFileToFormData(formData, 'file', fileUri, `id_card_${postfix}.jpg`, 'image/jpeg');\n\n const docTypeShorted = GovernmentDocumentTypeShorted[docType as GovernmentDocumentType] || docType;\n logger.log(\"docTypeShorted\", docTypeShorted, docRegion, postfix);\n\n let url = `${this.mrzServiceURL}/extract_mrz_text/?doc_type=${encodeURIComponent(docTypeShorted)}&doc_region=${encodeURIComponent(docRegion)}&postfix=${encodeURIComponent(postfix)}&template_path=${encodeURIComponent(template_path)}`;\n \n if (mrz_type && mrz_type.trim() !== '') {\n url += `&mrz_type=${encodeURIComponent(mrz_type)}`;\n }\n \n logger.log(\"url\", url);\n\n const attempt = async () => {\n try {\n const res = await axios.post<ExtractMrzTextResponse>(url, formData, {\n headers: { 'Content-Type': 'multipart/form-data', 'Authorization': `Bearer ${token}` },\n // Note: Reduced timeout to 10000ms (10s) based on our earlier network fix to prevent infinite hanging!\n timeout: 10000, \n });\n \n logger.log('extractMrzText res', JSON.stringify(res.data, null, 2));\n \n if (Object.keys(res.data).length === 0) throw new Error('No data found');\n if (res.data?.success === false) throw new Error(res.data.parsed_data?.status || 'Échec de l\\'extraction MRZ');\n \n return res.data;\n } catch (e: any) {\n throw new Error(e?.message || 'Erreur de détection du MRZ');\n }\n };\n\n try {\n return await attempt();\n } catch (e) {\n logger.error('Error extracting MRZ text:', JSON.stringify(errorMessage(e), null, 2));\n throw e;\n }\n }\n\n // STEP 2 - SELFIE VALIDATION\n async recognizeFace(params: { idPhotoUri: string; selfiePhotoUri: string }, env: KycEnvironment = 'PRODUCTION'): Promise<{ is_match: boolean; similarity: number; id_bbox?: number[]; selfie_bbox?: number[] }> {\n // SANDBOX mode\n if (env === 'SANDBOX') {\n console.log(\"SANDBOX mode: Skipping AI face recognition\");\n logger.log(\"SANDBOX mode: Returning mock face recognition response\");\n return {\n is_match: true,\n similarity: 0.95,\n id_bbox: [50, 50, 200, 200],\n selfie_bbox: [50, 50, 200, 200]\n };\n }\n\n const { idPhotoUri, selfiePhotoUri } = params;\n const formData = new FormData();\n await appendFileToFormData(formData, 'id_photo', idPhotoUri, 'id_card_photo.jpg', 'image/jpeg');\n await appendFileToFormData(formData, 'selfie_photo', selfiePhotoUri, 'selfie_final.jpg', 'image/jpeg');\n\n const res = await axios.post(`${this.faceServiceURL}/recognize_face/`, formData, { timeout: 45000 });\n if (res.data?.detail) throw new Error(res.data.detail);\n return res.data;\n }\n\n // HEALTH CHECKS\n async healthFaceDetection(): Promise<any> {\n const res = await axios.get(`${this.faceServiceURL}/health`);\n return res.data;\n }\n\n async healthTextExtraction(): Promise<any> {\n const res = await axios.get(`${this.textExtractionServiceURL}/health`);\n return res.data;\n }\n\n async healthMrzService(): Promise<any> {\n const res = await axios.get(`${this.mrzServiceURL}/health`);\n return res.data;\n }\n\n async healthOrientationService(): Promise<any> {\n const res = await axios.get(`${this.orientationServiceURL}/health`);\n return res.data;\n }\n\n async newSession({ token, apiKey }: { token?: string, apiKey?: string }): Promise<SessionResponse> {\n try {\n const data = {\n \"status\": \"PENDING\",\n \"metadata\": {},\n }\n const res = await axios.post<SessionResponse>(`${KYCConfig.getBackendUrl()}/verification/sessions/`,\n data, {\n headers: {\n 'Content-Type': 'application/json',\n ...(apiKey ? { 'Authorization': `ApiKey ${apiKey}` } : { 'Authorization': `Bearer ${token}` })\n }\n });\n return res.data;\n } catch (error: any) {\n logger.error('Error creating session:', JSON.stringify(errorMessage(error), null, 2));\n\n // Extract backend error message if available\n const backendMessage = errorMessage(error);\n\n if (backendMessage) {\n logger.error('Backend error message:', JSON.stringify(truncateFields(backendMessage), null, 2));\n throw new Error(`Backend error: ${JSON.stringify(truncateFields(backendMessage))}`);\n }\n\n throw error;\n }\n }\n\n async verificationSession(payload: VerificationSessionRequest): Promise<any> {\n console.log('apiKey in verificationSession', payload.apiKey);\n try {\n const { session_id, step, data, templateId, action, apiKey } = payload;\n const token = apiKey ? undefined : await authentification();\n const payloadData = {\n action: action,\n data: {\n step,\n templateId,\n ...(action === \"location_permission\" ? { permissionGranted: true, } : {}),\n ...data,\n },\n ...({ session_id: session_id }),\n timestamp: new Date().toISOString()\n }\n const url = `${KYCConfig.getBackendUrl()}/verification/api/kyc/sessions/${session_id}/steps/${step}/`;\n\n const logPayload = truncateFields({ payloadData, session_id, step });\n logger.log('verificationSession payload',\n JSON.stringify(truncateFields({ logPayload, token: token ?? \"-\", path: url, apiKey }),\n null, 2))\n\n const res = await axios.post<SessionResponse>(url,\n payloadData,\n {\n headers: {\n 'Content-Type': 'application/json',\n ...(apiKey ? { 'Authorization': `ApiKey ${apiKey}` } : { 'Authorization': `Bearer ${token}` })\n }\n });\n logger.log('verificationSession res', JSON.stringify(truncateFields(res.data), null, 2));\n return res.data;\n\n } catch (error) {\n logger.error('Error validating component:', JSON.stringify(error, null, 2));\n throw new Error(errorMessage(error));\n }\n }\n\n /** Send email verification code. POST /api/v1/accounts/email/send/ */\n async sendEmailVerificationCode(\n email: string,\n auth?: { apiKey?: string; token?: string }\n ): Promise<unknown> {\n const url = `${KYCConfig.getBackendUrl()}/accounts/email/send/`;\n const token = auth?.apiKey ? undefined : (auth?.token ?? await authentification());\n const res = await axios.post(\n url,\n { email },\n {\n headers: {\n 'Content-Type': 'application/json',\n ...(auth?.apiKey ? { 'Authorization': `ApiKey ${auth.apiKey}` } : { 'Authorization': `Bearer ${token}` }),\n },\n }\n );\n return res.data;\n }\n\n /** Verify email with OTP. POST /api/v1/accounts/email/verify/ */\n async verifyEmailCode(\n otp: string,\n auth?: { apiKey?: string; token?: string }\n ): Promise<unknown> {\n const url = `${KYCConfig.getBackendUrl()}/accounts/email/verify/`;\n const token = auth?.apiKey ? undefined : (auth?.token ?? await authentification());\n const res = await axios.post(\n url,\n { otp },\n {\n headers: {\n 'Content-Type': 'application/json',\n ...(auth?.apiKey ? { 'Authorization': `ApiKey ${auth.apiKey}` } : { 'Authorization': `Bearer ${token}` }),\n },\n }\n );\n return res.data;\n }\n\n async getVerificationResult(session_id: string): Promise<VerificationResult> {\n try {\n const token = await authentification();\n const url = `${KYCConfig.getBackendUrl()}/verification/api/kyc/result/?session_id=${session_id}`;\n const res = await axios.get<VerificationResult>(url,\n { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` } });\n logger.log('getVerificationResult res', JSON.stringify(truncateFields(res.data), null, 2));\n return res.data;\n } catch (error) {\n logger.error('Error getting verification result:', JSON.stringify(errorMessage(error), null, 2));\n throw error;\n }\n }\n}\n\nconst kycService = new KYCService(\"\", \"\");\nexport default kycService;\n\n// Pour éviter d'afficher des champs trop longs, on tronque les valeurs longues dans le log\nexport function truncateFields(obj: any, maxLength = 420): any {\n if (typeof obj !== 'object' || obj === null) return obj;\n if (Array.isArray(obj)) return obj.map(item => truncateFields(item, maxLength));\n const truncated: any = {};\n for (const key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n const value = obj[key];\n if (typeof value === 'string' && value.length > maxLength) {\n truncated[key] = value.slice(0, maxLength) + '... [truncated]';\n } else if (typeof value === 'object' && value !== null) {\n truncated[key] = truncateFields(value, maxLength);\n } else {\n truncated[key] = value;\n }\n }\n return truncated;\n}\n\nexport const authentification = async () => {\n try {\n logger.log('authentification params', 'kyc_frontend', 'QhgAmvKgmwODzsEp98dnA4PeUEMMaFHd');\n const params = new URLSearchParams();\n params.append('client_id', 'kyc_frontend');\n params.append('client_secret', 'QhgAmvKgmwODzsEp98dnA4PeUEMMaFHd');\n params.append('grant_type', 'client_credentials');\n const res = await axios.post(`https://keycloak.transfergratis.net/realms/kyc/protocol/openid-connect/token`,\n params,\n {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }\n );\n logger.log('authentification res', JSON.stringify(truncateFields(res.data)));\n return res.data.access_token;\n } catch (error: any) {\n logger.error('Error authentifying:', {\n message: error.message,\n status: error.response?.status,\n statusText: error.response?.statusText,\n data: error.response?.data,\n url: error.config?.url,\n method: error.config?.method\n });\n\n const backendMessage = errorMessage(error);\n\n if (backendMessage) {\n logger.error('Backend authentication error:', JSON.stringify(truncateFields(backendMessage), null, 2));\n throw new Error(`Authentication failed: ${JSON.stringify(truncateFields(backendMessage))}`);\n }\n\n throw error;\n }\n}\n\nexport const errorMessage = (error: any) => {\n return error.response?.data?.message ||\n error.response?.data?.detail ||\n error.response?.data?.error ||\n error.response?.data;\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelfieVerification.d.ts","sourceRoot":"","sources":["../../../../src/modules/api/SelfieVerification.ts"],"names":[],"mappings":"AAAA,OAAmB,EAAoB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,QAAA,MAAM,kBAAkB,GAAU,aAAa,MAAM,EAAE,MAAK,cAA6B,KAAG,OAAO,CAAC,mBAAmB,EAAE,CAuBxH,CAAA;AAKD,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelfieVerification.js","sourceRoot":"","sources":["../../../../src/modules/api/SelfieVerification.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,EAAE,EAAE,gBAAgB,EAAuB,MAAM,cAAc,CAAC;AAIjF,MAAM,kBAAkB,GAAG,KAAK,EAAE,WAAmB,EAAE,MAAsB,YAAY,EAAkC,EAAE;IACzH,2EAA2E;IAC3E,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,gEAAgE;QAChE,gEAAgE;QAEhE,MAAM,YAAY,GAA0B,CAAC;gBACzC,qBAAqB,EAAE,QAAQ;gBAC/B,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;gBACtB,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,kCAAkC;gBAC/C,KAAK,EAAE,EAAE;aACZ,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,kDAAkD;IAClD,MAAM,KAAK,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,+BAA+B,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAA;AAKD,eAAe,kBAAkB,CAAC","sourcesContent":["import kycService, { authentification, SelfieVideoResponse } from \"./KYCService\";\n\nimport { KycEnvironment } from \"../../types/env.types\";\n\nconst selfieVerification = async (selfieImage: string, env: KycEnvironment = 'PRODUCTION'): Promise<SelfieVideoResponse[]> => {\n // In SANDBOX mode, skip AI verification and return a mock success response\n if (env === 'SANDBOX') {\n console.log(\"SANDBOX mode: Skipping AI verification for selfie\");\n // Return a mock response that simulates successful verification\n // This allows the flow to continue without actual AI processing\n \n const mockResponse: SelfieVideoResponse[] = [{\n orientation_direction: \"center\",\n turn_score: 1.0,\n bbox: [0, 0, 100, 100],\n capture: true,\n instruction: \"SANDBOX: AI verification skipped\",\n error: \"\"\n }];\n return mockResponse;\n }\n\n // PRODUCTION mode: perform actual AI verification\n const token = await authentification();\n const response = await kycService.processSelfieOrientationPicture(selfieImage, token);\n console.log(\"selfieVerification response\", JSON.stringify(response, null, 2));\n return response;\n}\n\n\n\n\nexport default selfieVerification;"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateService.d.ts","sourceRoot":"","sources":["../../../../src/modules/api/TemplateService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAuB,MAAM,uBAAuB,CAAC;AAKhF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAA+E;IAC5F,OAAO,CAAC,YAAY,CAAiB;IAErC;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;;;;;;OAOG;IACG,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,GAAE,OAAc,GACvB,OAAO,CAAC,kBAAkB,CAAC;IAgE9B;;;OAGG;IACH,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAUrC;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAahE;;;;;OAKG;IACG,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAiB1J;AAGD,QAAA,MAAM,eAAe,sBAA6B,CAAC;AACnD,eAAe,eAAe,CAAC"}
|