@sanctum-key/react-native-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +278 -0
- package/android/build/.transforms/f62cb96b2d1f78ca96ab35932dd530dc/results.bin +1 -0
- package/android/build/.transforms/f62cb96b2d1f78ca96ab35932dd530dc/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/generated/source/buildConfig/debug/kyc/transfergratis/com/BuildConfig.java +10 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +69 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
- package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
- package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +1 -0
- package/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/xml_file_paths.xml.flat +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +2 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/transfergratis-react-native-sdk_debug.kotlin_module +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/kyc/transfergratis/com/BuildConfig.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +3 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +110 -0
- package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +69 -0
- package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
- package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
- package/android/build/intermediates/packaged_res/debug/packageDebugResources/xml/file_paths.xml +15 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +2 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +101 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/META-INF/transfergratis-react-native-sdk_debug.kotlin_module +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$1$5$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$1$5$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$4.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$5.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunction$6.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$4.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$$inlined$View$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$lambda$4$$inlined$Prop$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule$definition$lambda$5$lambda$4$$inlined$Prop$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/transfergratis/com/TransfergratisSdkView.class +0 -0
- package/android/build.gradle +43 -0
- package/android/src/main/AndroidManifest.xml +49 -0
- package/android/src/main/java/kyc/transfergratis/com/TransfergratisSdkModule.kt +131 -0
- package/android/src/main/java/kyc/transfergratis/com/TransfergratisSdkView.kt +161 -0
- package/android/src/main/res/xml/file_paths.xml +15 -0
- package/build/App.d.ts +3 -0
- package/build/App.d.ts.map +1 -0
- package/build/App.js +9 -0
- package/build/App.js.map +1 -0
- package/build/TransfergratisSdk.types.d.ts +32 -0
- package/build/TransfergratisSdk.types.d.ts.map +1 -0
- package/build/TransfergratisSdk.types.js +2 -0
- package/build/TransfergratisSdk.types.js.map +1 -0
- package/build/TransfergratisSdkModule.d.ts +21 -0
- package/build/TransfergratisSdkModule.d.ts.map +1 -0
- package/build/TransfergratisSdkModule.js +4 -0
- package/build/TransfergratisSdkModule.js.map +1 -0
- package/build/TransfergratisSdkModule.web.d.ts +20 -0
- package/build/TransfergratisSdkModule.web.d.ts.map +1 -0
- package/build/TransfergratisSdkModule.web.js +25 -0
- package/build/TransfergratisSdkModule.web.js.map +1 -0
- package/build/TransfergratisSdkView.d.ts +4 -0
- package/build/TransfergratisSdkView.d.ts.map +1 -0
- package/build/TransfergratisSdkView.js +7 -0
- package/build/TransfergratisSdkView.js.map +1 -0
- package/build/TransfergratisSdkView.web.d.ts +4 -0
- package/build/TransfergratisSdkView.web.d.ts.map +1 -0
- package/build/TransfergratisSdkView.web.js +11 -0
- package/build/TransfergratisSdkView.web.js.map +1 -0
- package/build/api/axios.d.ts +30 -0
- package/build/api/axios.d.ts.map +1 -0
- package/build/api/axios.js +92 -0
- package/build/api/axios.js.map +1 -0
- package/build/components/Camera/index.d.ts +2 -0
- package/build/components/Camera/index.d.ts.map +1 -0
- package/build/components/Camera/index.js +2 -0
- package/build/components/Camera/index.js.map +1 -0
- package/build/components/Camera/index.web.d.ts +2 -0
- package/build/components/Camera/index.web.d.ts.map +1 -0
- package/build/components/Camera/index.web.js +2 -0
- package/build/components/Camera/index.web.js.map +1 -0
- package/build/components/Camera/types.d.ts +2 -0
- package/build/components/Camera/types.d.ts.map +1 -0
- package/build/components/Camera/types.js +2 -0
- package/build/components/Camera/types.js.map +1 -0
- package/build/components/ConfigurableKYCFlow.d.ts +11 -0
- package/build/components/ConfigurableKYCFlow.d.ts.map +1 -0
- package/build/components/ConfigurableKYCFlow.js +257 -0
- package/build/components/ConfigurableKYCFlow.js.map +1 -0
- package/build/components/CustomCameraExample.d.ts +10 -0
- package/build/components/CustomCameraExample.d.ts.map +1 -0
- package/build/components/CustomCameraExample.js +232 -0
- package/build/components/CustomCameraExample.js.map +1 -0
- package/build/components/EnhancedCameraView.d.ts +4 -0
- package/build/components/EnhancedCameraView.d.ts.map +1 -0
- package/build/components/EnhancedCameraView.js +393 -0
- package/build/components/EnhancedCameraView.js.map +1 -0
- package/build/components/EnhancedCameraView.web.d.ts +4 -0
- package/build/components/EnhancedCameraView.web.d.ts.map +1 -0
- package/build/components/EnhancedCameraView.web.js +499 -0
- package/build/components/EnhancedCameraView.web.js.map +1 -0
- package/build/components/FileUpload.d.ts +13 -0
- package/build/components/FileUpload.d.ts.map +1 -0
- package/build/components/FileUpload.js +216 -0
- package/build/components/FileUpload.js.map +1 -0
- package/build/components/KYCElementRenderer.d.ts +14 -0
- package/build/components/KYCElementRenderer.d.ts.map +1 -0
- package/build/components/KYCElementRenderer.js +31 -0
- package/build/components/KYCElementRenderer.js.map +1 -0
- package/build/components/KYCElements/AdditionalDocumentsTemplate.d.ts +12 -0
- package/build/components/KYCElements/AdditionalDocumentsTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/AdditionalDocumentsTemplate.js +283 -0
- package/build/components/KYCElements/AdditionalDocumentsTemplate.js.map +1 -0
- package/build/components/KYCElements/CameraCapture.d.ts +11 -0
- package/build/components/KYCElements/CameraCapture.d.ts.map +1 -0
- package/build/components/KYCElements/CameraCapture.js +219 -0
- package/build/components/KYCElements/CameraCapture.js.map +1 -0
- package/build/components/KYCElements/CompletionStep.d.ts +10 -0
- package/build/components/KYCElements/CompletionStep.d.ts.map +1 -0
- package/build/components/KYCElements/CompletionStep.js +147 -0
- package/build/components/KYCElements/CompletionStep.js.map +1 -0
- package/build/components/KYCElements/CountrySelection.d.ts +11 -0
- package/build/components/KYCElements/CountrySelection.d.ts.map +1 -0
- package/build/components/KYCElements/CountrySelection.js +147 -0
- package/build/components/KYCElements/CountrySelection.js.map +1 -0
- package/build/components/KYCElements/CountrySelectionTemplate.d.ts +15 -0
- package/build/components/KYCElements/CountrySelectionTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/CountrySelectionTemplate.js +438 -0
- package/build/components/KYCElements/CountrySelectionTemplate.js.map +1 -0
- package/build/components/KYCElements/DocumentTypeSelection.d.ts +11 -0
- package/build/components/KYCElements/DocumentTypeSelection.d.ts.map +1 -0
- package/build/components/KYCElements/DocumentTypeSelection.js +143 -0
- package/build/components/KYCElements/DocumentTypeSelection.js.map +1 -0
- package/build/components/KYCElements/EmailVerificationTemplate.d.ts +12 -0
- package/build/components/KYCElements/EmailVerificationTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/EmailVerificationTemplate.js +212 -0
- package/build/components/KYCElements/EmailVerificationTemplate.js.map +1 -0
- package/build/components/KYCElements/FileUpload.d.ts +11 -0
- package/build/components/KYCElements/FileUpload.d.ts.map +1 -0
- package/build/components/KYCElements/FileUpload.js +268 -0
- package/build/components/KYCElements/FileUpload.js.map +1 -0
- package/build/components/KYCElements/FileUploadTemplate.d.ts +12 -0
- package/build/components/KYCElements/FileUploadTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/FileUploadTemplate.js +331 -0
- package/build/components/KYCElements/FileUploadTemplate.js.map +1 -0
- package/build/components/KYCElements/IDCardCapture.d.ts +19 -0
- package/build/components/KYCElements/IDCardCapture.d.ts.map +1 -0
- package/build/components/KYCElements/IDCardCapture.js +877 -0
- package/build/components/KYCElements/IDCardCapture.js.map +1 -0
- package/build/components/KYCElements/InitializationStep.d.ts +5 -0
- package/build/components/KYCElements/InitializationStep.d.ts.map +1 -0
- package/build/components/KYCElements/InitializationStep.js +41 -0
- package/build/components/KYCElements/InitializationStep.js.map +1 -0
- package/build/components/KYCElements/LocationCaptureTemplate.d.ts +20 -0
- package/build/components/KYCElements/LocationCaptureTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/LocationCaptureTemplate.js +318 -0
- package/build/components/KYCElements/LocationCaptureTemplate.js.map +1 -0
- package/build/components/KYCElements/OrientationVideoCapture.d.ts +14 -0
- package/build/components/KYCElements/OrientationVideoCapture.d.ts.map +1 -0
- package/build/components/KYCElements/OrientationVideoCapture.js +534 -0
- package/build/components/KYCElements/OrientationVideoCapture.js.map +1 -0
- package/build/components/KYCElements/OrientationVideoCaptureEnhanced.d.ts +14 -0
- package/build/components/KYCElements/OrientationVideoCaptureEnhanced.d.ts.map +1 -0
- package/build/components/KYCElements/OrientationVideoCaptureEnhanced.js +504 -0
- package/build/components/KYCElements/OrientationVideoCaptureEnhanced.js.map +1 -0
- package/build/components/KYCElements/OrientationVideoCaptureFinal.d.ts +14 -0
- package/build/components/KYCElements/OrientationVideoCaptureFinal.d.ts.map +1 -0
- package/build/components/KYCElements/OrientationVideoCaptureFinal.js +430 -0
- package/build/components/KYCElements/OrientationVideoCaptureFinal.js.map +1 -0
- package/build/components/KYCElements/PersonalInformationTemplate.d.ts +12 -0
- package/build/components/KYCElements/PersonalInformationTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/PersonalInformationTemplate.js +120 -0
- package/build/components/KYCElements/PersonalInformationTemplate.js.map +1 -0
- package/build/components/KYCElements/PhoneVerificationTemplate.d.ts +12 -0
- package/build/components/KYCElements/PhoneVerificationTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/PhoneVerificationTemplate.js +185 -0
- package/build/components/KYCElements/PhoneVerificationTemplate.js.map +1 -0
- package/build/components/KYCElements/ReviewSubmitTemplate.d.ts +12 -0
- package/build/components/KYCElements/ReviewSubmitTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/ReviewSubmitTemplate.js +171 -0
- package/build/components/KYCElements/ReviewSubmitTemplate.js.map +1 -0
- package/build/components/KYCElements/SelfieCapture.d.ts +11 -0
- package/build/components/KYCElements/SelfieCapture.d.ts.map +1 -0
- package/build/components/KYCElements/SelfieCapture.js +236 -0
- package/build/components/KYCElements/SelfieCapture.js.map +1 -0
- package/build/components/KYCElements/SelfieCaptureTemplate.d.ts +16 -0
- package/build/components/KYCElements/SelfieCaptureTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/SelfieCaptureTemplate.js +568 -0
- package/build/components/KYCElements/SelfieCaptureTemplate.js.map +1 -0
- package/build/components/KYCElements/VerificationProgressTemplate.d.ts +12 -0
- package/build/components/KYCElements/VerificationProgressTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/VerificationProgressTemplate.js +195 -0
- package/build/components/KYCElements/VerificationProgressTemplate.js.map +1 -0
- package/build/components/KYCElements/VerificationStep.d.ts +10 -0
- package/build/components/KYCElements/VerificationStep.d.ts.map +1 -0
- package/build/components/KYCElements/VerificationStep.js +199 -0
- package/build/components/KYCElements/VerificationStep.js.map +1 -0
- package/build/components/KYCElements/WelcomeTemplate.d.ts +12 -0
- package/build/components/KYCElements/WelcomeTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/WelcomeTemplate.js +244 -0
- package/build/components/KYCElements/WelcomeTemplate.js.map +1 -0
- package/build/components/KYCExample.d.ts +3 -0
- package/build/components/KYCExample.d.ts.map +1 -0
- package/build/components/KYCExample.js +247 -0
- package/build/components/KYCExample.js.map +1 -0
- package/build/components/KYCFlow.d.ts +3 -0
- package/build/components/KYCFlow.d.ts.map +1 -0
- package/build/components/KYCFlow.js +308 -0
- package/build/components/KYCFlow.js.map +1 -0
- package/build/components/NativeCameraView.d.ts +11 -0
- package/build/components/NativeCameraView.d.ts.map +1 -0
- package/build/components/NativeCameraView.js +27 -0
- package/build/components/NativeCameraView.js.map +1 -0
- package/build/components/OverLay/IdCard.d.ts +4 -0
- package/build/components/OverLay/IdCard.d.ts.map +1 -0
- package/build/components/OverLay/IdCard.js +185 -0
- package/build/components/OverLay/IdCard.js.map +1 -0
- package/build/components/OverLay/SelfieOverlay.d.ts +4 -0
- package/build/components/OverLay/SelfieOverlay.d.ts.map +1 -0
- package/build/components/OverLay/SelfieOverlay.js +169 -0
- package/build/components/OverLay/SelfieOverlay.js.map +1 -0
- package/build/components/OverLay/StepOverlay.d.ts +9 -0
- package/build/components/OverLay/StepOverlay.d.ts.map +1 -0
- package/build/components/OverLay/StepOverlay.js +53 -0
- package/build/components/OverLay/StepOverlay.js.map +1 -0
- package/build/components/OverLay/type.d.ts +98 -0
- package/build/components/OverLay/type.d.ts.map +1 -0
- package/build/components/OverLay/type.js +2 -0
- package/build/components/OverLay/type.js.map +1 -0
- package/build/components/ProgressIndicator.d.ts +8 -0
- package/build/components/ProgressIndicator.d.ts.map +1 -0
- package/build/components/ProgressIndicator.js +48 -0
- package/build/components/ProgressIndicator.js.map +1 -0
- package/build/components/SelfieCapture.d.ts +3 -0
- package/build/components/SelfieCapture.d.ts.map +1 -0
- package/build/components/SelfieCapture.js +197 -0
- package/build/components/SelfieCapture.js.map +1 -0
- package/build/components/SimpleExample.d.ts +3 -0
- package/build/components/SimpleExample.d.ts.map +1 -0
- package/build/components/SimpleExample.js +89 -0
- package/build/components/SimpleExample.js.map +1 -0
- package/build/components/Svgs/GpsIcon.d.ts +3 -0
- package/build/components/Svgs/GpsIcon.d.ts.map +1 -0
- package/build/components/Svgs/GpsIcon.js +9 -0
- package/build/components/Svgs/GpsIcon.js.map +1 -0
- package/build/components/Svgs/Schield.d.ts +3 -0
- package/build/components/Svgs/Schield.d.ts.map +1 -0
- package/build/components/Svgs/Schield.js +22 -0
- package/build/components/Svgs/Schield.js.map +1 -0
- package/build/components/Svgs/directionArrow.gif +0 -0
- package/build/components/Svgs/frontSelfieIcon.d.ts +3 -0
- package/build/components/Svgs/frontSelfieIcon.d.ts.map +1 -0
- package/build/components/Svgs/frontSelfieIcon.js +11 -0
- package/build/components/Svgs/frontSelfieIcon.js.map +1 -0
- package/build/components/Svgs/scanningLine.d.ts +9 -0
- package/build/components/Svgs/scanningLine.d.ts.map +1 -0
- package/build/components/Svgs/scanningLine.js +61 -0
- package/build/components/Svgs/scanningLine.js.map +1 -0
- package/build/components/Svgs/sideSelfieIcon.d.ts +3 -0
- package/build/components/Svgs/sideSelfieIcon.d.ts.map +1 -0
- package/build/components/Svgs/sideSelfieIcon.js +9 -0
- package/build/components/Svgs/sideSelfieIcon.js.map +1 -0
- package/build/components/TemplateKYCExample.d.ts +22 -0
- package/build/components/TemplateKYCExample.d.ts.map +1 -0
- package/build/components/TemplateKYCExample.js +155 -0
- package/build/components/TemplateKYCExample.js.map +1 -0
- package/build/components/TemplateKYCFlowRefactored.d.ts +26 -0
- package/build/components/TemplateKYCFlowRefactored.d.ts.map +1 -0
- package/build/components/TemplateKYCFlowRefactored.js +359 -0
- package/build/components/TemplateKYCFlowRefactored.js.map +1 -0
- package/build/components/VisionCameraView.d.ts +22 -0
- package/build/components/VisionCameraView.d.ts.map +1 -0
- package/build/components/VisionCameraView.js +142 -0
- package/build/components/VisionCameraView.js.map +1 -0
- package/build/components/example/CameraCaptureEx.d.ts +4 -0
- package/build/components/example/CameraCaptureEx.d.ts.map +1 -0
- package/build/components/example/CameraCaptureEx.js +219 -0
- package/build/components/example/CameraCaptureEx.js.map +1 -0
- package/build/components/example/CameraCaptureExAdvanced.d.ts +3 -0
- package/build/components/example/CameraCaptureExAdvanced.d.ts.map +1 -0
- package/build/components/example/CameraCaptureExAdvanced.js +229 -0
- package/build/components/example/CameraCaptureExAdvanced.js.map +1 -0
- package/build/components/example/CameraCaptureExScan.d.ts +3 -0
- package/build/components/example/CameraCaptureExScan.d.ts.map +1 -0
- package/build/components/example/CameraCaptureExScan.js +213 -0
- package/build/components/example/CameraCaptureExScan.js.map +1 -0
- package/build/components/example/CameraCaptureExSimple.d.ts +3 -0
- package/build/components/example/CameraCaptureExSimple.d.ts.map +1 -0
- package/build/components/example/CameraCaptureExSimple.js +138 -0
- package/build/components/example/CameraCaptureExSimple.js.map +1 -0
- package/build/components/example/DynamicTemplateExample.d.ts +10 -0
- package/build/components/example/DynamicTemplateExample.d.ts.map +1 -0
- package/build/components/example/DynamicTemplateExample.js +241 -0
- package/build/components/example/DynamicTemplateExample.js.map +1 -0
- package/build/components/example/OrientationVideoExample.d.ts +4 -0
- package/build/components/example/OrientationVideoExample.d.ts.map +1 -0
- package/build/components/example/OrientationVideoExample.js +325 -0
- package/build/components/example/OrientationVideoExample.js.map +1 -0
- package/build/components/example/SelfieCaptureEx.d.ts +4 -0
- package/build/components/example/SelfieCaptureEx.d.ts.map +1 -0
- package/build/components/example/SelfieCaptureEx.js +238 -0
- package/build/components/example/SelfieCaptureEx.js.map +1 -0
- package/build/components/ui/Button.d.ts +37 -0
- package/build/components/ui/Button.d.ts.map +1 -0
- package/build/components/ui/Button.js +194 -0
- package/build/components/ui/Button.js.map +1 -0
- package/build/components/ui/ButtonExample.d.ts +4 -0
- package/build/components/ui/ButtonExample.d.ts.map +1 -0
- package/build/components/ui/ButtonExample.js +209 -0
- package/build/components/ui/ButtonExample.js.map +1 -0
- package/build/components/ui/ButtonStyles.d.ts +521 -0
- package/build/components/ui/ButtonStyles.d.ts.map +1 -0
- package/build/components/ui/ButtonStyles.js +429 -0
- package/build/components/ui/ButtonStyles.js.map +1 -0
- package/build/config/KYCConfig.d.ts +14 -0
- package/build/config/KYCConfig.d.ts.map +1 -0
- package/build/config/KYCConfig.js +26 -0
- package/build/config/KYCConfig.js.map +1 -0
- package/build/config/KYCConfigs.d.ts +7 -0
- package/build/config/KYCConfigs.d.ts.map +1 -0
- package/build/config/KYCConfigs.js +516 -0
- package/build/config/KYCConfigs.js.map +1 -0
- package/build/config/allowedDomains.d.ts +30 -0
- package/build/config/allowedDomains.d.ts.map +1 -0
- package/build/config/allowedDomains.js +112 -0
- package/build/config/allowedDomains.js.map +1 -0
- package/build/config/countriesData.d.ts +3 -0
- package/build/config/countriesData.d.ts.map +1 -0
- package/build/config/countriesData.js +80 -0
- package/build/config/countriesData.js.map +1 -0
- package/build/config/region_mapping.d.ts +3 -0
- package/build/config/region_mapping.d.ts.map +1 -0
- package/build/config/region_mapping.js +736 -0
- package/build/config/region_mapping.js.map +1 -0
- package/build/hooks/useI18n.d.ts +11 -0
- package/build/hooks/useI18n.d.ts.map +1 -0
- package/build/hooks/useI18n.js +37 -0
- package/build/hooks/useI18n.js.map +1 -0
- package/build/hooks/useKYC.d.ts +15 -0
- package/build/hooks/useKYC.d.ts.map +1 -0
- package/build/hooks/useKYC.js +103 -0
- package/build/hooks/useKYC.js.map +1 -0
- package/build/hooks/useKYCFlow.d.ts +3 -0
- package/build/hooks/useKYCFlow.d.ts.map +1 -0
- package/build/hooks/useKYCFlow.js +221 -0
- package/build/hooks/useKYCFlow.js.map +1 -0
- package/build/hooks/useLocation.d.ts +32 -0
- package/build/hooks/useLocation.d.ts.map +1 -0
- package/build/hooks/useLocation.js +165 -0
- package/build/hooks/useLocation.js.map +1 -0
- package/build/hooks/useOrientationVideo.d.ts +10 -0
- package/build/hooks/useOrientationVideo.d.ts.map +1 -0
- package/build/hooks/useOrientationVideo.js +118 -0
- package/build/hooks/useOrientationVideo.js.map +1 -0
- package/build/hooks/useRealtimeVerifier.d.ts +28 -0
- package/build/hooks/useRealtimeVerifier.d.ts.map +1 -0
- package/build/hooks/useRealtimeVerifier.js +91 -0
- package/build/hooks/useRealtimeVerifier.js.map +1 -0
- package/build/hooks/useTemplateKYCFlow.d.ts +48 -0
- package/build/hooks/useTemplateKYCFlow.d.ts.map +1 -0
- package/build/hooks/useTemplateKYCFlow.js +910 -0
- package/build/hooks/useTemplateKYCFlow.js.map +1 -0
- package/build/hooks/useTemplateLoader.d.ts +14 -0
- package/build/hooks/useTemplateLoader.d.ts.map +1 -0
- package/build/hooks/useTemplateLoader.js +85 -0
- package/build/hooks/useTemplateLoader.js.map +1 -0
- package/build/i18n/en/index.d.ts +233 -0
- package/build/i18n/en/index.d.ts.map +1 -0
- package/build/i18n/en/index.js +261 -0
- package/build/i18n/en/index.js.map +1 -0
- package/build/i18n/fr/index.d.ts +219 -0
- package/build/i18n/fr/index.d.ts.map +1 -0
- package/build/i18n/fr/index.js +246 -0
- package/build/i18n/fr/index.js.map +1 -0
- package/build/i18n/index.d.ts +10 -0
- package/build/i18n/index.d.ts.map +1 -0
- package/build/i18n/index.js +56 -0
- package/build/i18n/index.js.map +1 -0
- package/build/i18n/types.d.ts +162 -0
- package/build/i18n/types.d.ts.map +1 -0
- package/build/i18n/types.js +3 -0
- package/build/i18n/types.js.map +1 -0
- package/build/i18n/usage-example.d.ts +4 -0
- package/build/i18n/usage-example.d.ts.map +1 -0
- package/build/i18n/usage-example.js +189 -0
- package/build/i18n/usage-example.js.map +1 -0
- package/build/index.d.ts +11 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +17 -0
- package/build/index.js.map +1 -0
- package/build/modules/api/CardAuthentification.d.ts +72 -0
- package/build/modules/api/CardAuthentification.d.ts.map +1 -0
- package/build/modules/api/CardAuthentification.js +487 -0
- package/build/modules/api/CardAuthentification.js.map +1 -0
- package/build/modules/api/KYCService.d.ts +116 -0
- package/build/modules/api/KYCService.d.ts.map +1 -0
- package/build/modules/api/KYCService.js +526 -0
- package/build/modules/api/KYCService.js.map +1 -0
- package/build/modules/api/SelfieVerification.d.ts +5 -0
- package/build/modules/api/SelfieVerification.d.ts.map +1 -0
- package/build/modules/api/SelfieVerification.js +25 -0
- package/build/modules/api/SelfieVerification.js.map +1 -0
- package/build/modules/api/TemplateService.d.ts +44 -0
- package/build/modules/api/TemplateService.d.ts.map +1 -0
- package/build/modules/api/TemplateService.js +146 -0
- package/build/modules/api/TemplateService.js.map +1 -0
- package/build/modules/api/backendApi.d.ts +2 -0
- package/build/modules/api/backendApi.d.ts.map +1 -0
- package/build/modules/api/backendApi.js +6 -0
- package/build/modules/api/backendApi.js.map +1 -0
- package/build/modules/api/types.d.ts +53 -0
- package/build/modules/api/types.d.ts.map +1 -0
- package/build/modules/api/types.js +2 -0
- package/build/modules/api/types.js.map +1 -0
- package/build/modules/camera/NativeCameraModule.d.ts +52 -0
- package/build/modules/camera/NativeCameraModule.d.ts.map +1 -0
- package/build/modules/camera/NativeCameraModule.js +149 -0
- package/build/modules/camera/NativeCameraModule.js.map +1 -0
- package/build/modules/camera/UnifiedCameraModule.d.ts +70 -0
- package/build/modules/camera/UnifiedCameraModule.d.ts.map +1 -0
- package/build/modules/camera/UnifiedCameraModule.js +125 -0
- package/build/modules/camera/UnifiedCameraModule.js.map +1 -0
- package/build/modules/camera/VisionCameraModule.d.ts +62 -0
- package/build/modules/camera/VisionCameraModule.d.ts.map +1 -0
- package/build/modules/camera/VisionCameraModule.js +313 -0
- package/build/modules/camera/VisionCameraModule.js.map +1 -0
- package/build/modules/camera/VisionCameraModule.web.d.ts +145 -0
- package/build/modules/camera/VisionCameraModule.web.d.ts.map +1 -0
- package/build/modules/camera/VisionCameraModule.web.js +589 -0
- package/build/modules/camera/VisionCameraModule.web.js.map +1 -0
- package/build/modules/camera/index.d.ts +5 -0
- package/build/modules/camera/index.d.ts.map +1 -0
- package/build/modules/camera/index.js +4 -0
- package/build/modules/camera/index.js.map +1 -0
- package/build/stores/kycStore.d.ts +55 -0
- package/build/stores/kycStore.d.ts.map +1 -0
- package/build/stores/kycStore.js +98 -0
- package/build/stores/kycStore.js.map +1 -0
- package/build/types/KYC.types.d.ts +643 -0
- package/build/types/KYC.types.d.ts.map +1 -0
- package/build/types/KYC.types.js +25 -0
- package/build/types/KYC.types.js.map +1 -0
- package/build/types/env.types.d.ts +13 -0
- package/build/types/env.types.d.ts.map +1 -0
- package/build/types/env.types.js +2 -0
- package/build/types/env.types.js.map +1 -0
- package/build/utils/cropByObb.d.ts +37 -0
- package/build/utils/cropByObb.d.ts.map +1 -0
- package/build/utils/cropByObb.js +215 -0
- package/build/utils/cropByObb.js.map +1 -0
- package/build/utils/deviceDetection.d.ts +6 -0
- package/build/utils/deviceDetection.d.ts.map +1 -0
- package/build/utils/deviceDetection.js +12 -0
- package/build/utils/deviceDetection.js.map +1 -0
- package/build/utils/get-document-type-info.d.ts +13 -0
- package/build/utils/get-document-type-info.d.ts.map +1 -0
- package/build/utils/get-document-type-info.js +59 -0
- package/build/utils/get-document-type-info.js.map +1 -0
- package/build/utils/logger.d.ts +12 -0
- package/build/utils/logger.d.ts.map +1 -0
- package/build/utils/logger.js +45 -0
- package/build/utils/logger.js.map +1 -0
- package/build/utils/pathToBase64.d.ts +3 -0
- package/build/utils/pathToBase64.d.ts.map +1 -0
- package/build/utils/pathToBase64.js +65 -0
- package/build/utils/pathToBase64.js.map +1 -0
- package/build/utils/platformAlert.d.ts +20 -0
- package/build/utils/platformAlert.d.ts.map +1 -0
- package/build/utils/platformAlert.js +67 -0
- package/build/utils/platformAlert.js.map +1 -0
- package/build/utils/remove-duplicate.d.ts +2 -0
- package/build/utils/remove-duplicate.d.ts.map +1 -0
- package/build/utils/remove-duplicate.js +4 -0
- package/build/utils/remove-duplicate.js.map +1 -0
- package/build/utils/template-transformer.d.ts +10 -0
- package/build/utils/template-transformer.d.ts.map +1 -0
- package/build/utils/template-transformer.js +365 -0
- package/build/utils/template-transformer.js.map +1 -0
- package/build/web/WebKYCEntry.d.ts +9 -0
- package/build/web/WebKYCEntry.d.ts.map +1 -0
- package/build/web/WebKYCEntry.js +288 -0
- package/build/web/WebKYCEntry.js.map +1 -0
- package/build/web/index.d.ts +2 -0
- package/build/web/index.d.ts.map +1 -0
- package/build/web/index.js +2 -0
- package/build/web/index.js.map +1 -0
- package/expo-module.config.json +9 -0
- package/ios/TransfergratisSdk.podspec +31 -0
- package/ios/TransfergratisSdkModule.swift +409 -0
- package/package.json +71 -0
- package/plugin/build/index.d.ts +5 -0
- package/plugin/build/index.js +12 -0
- package/plugin/build/withLocation.d.ts +9 -0
- package/plugin/build/withLocation.js +77 -0
- package/plugin/build/withRemovePermissions.d.ts +3 -0
- package/plugin/build/withRemovePermissions.js +67 -0
- package/plugin/build/withVisionCamera.d.ts +8 -0
- package/plugin/build/withVisionCamera.js +68 -0
- package/plugin/src/index.ts +5 -0
- package/plugin/src/withLocation.ts +109 -0
- package/plugin/src/withRemovePermissions.js +85 -0
- package/plugin/src/withRemovePermissions.ts +83 -0
- package/plugin/src/withVisionCamera.js +88 -0
- package/plugin/src/withVisionCamera.ts +97 -0
- package/plugin/tsconfig.json +17 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
- package/plugin.js +19 -0
- package/src/App.tsx +9 -0
- package/src/TransfergratisSdk.types.ts +30 -0
- package/src/TransfergratisSdkModule.ts +16 -0
- package/src/TransfergratisSdkModule.web.ts +31 -0
- package/src/TransfergratisSdkView.tsx +11 -0
- package/src/TransfergratisSdkView.web.tsx +15 -0
- package/src/api/axios.ts +144 -0
- package/src/components/Camera/index.tsx +0 -0
- package/src/components/Camera/index.web.tsx +0 -0
- package/src/components/Camera/types.ts +0 -0
- package/src/components/ConfigurableKYCFlow.tsx +334 -0
- package/src/components/CustomCameraExample.tsx +274 -0
- package/src/components/EnhancedCameraView.tsx +482 -0
- package/src/components/EnhancedCameraView.web.tsx +597 -0
- package/src/components/FileUpload.tsx +249 -0
- package/src/components/KYCElementRenderer.tsx +106 -0
- package/src/components/KYCElements/AdditionalDocumentsTemplate.tsx +346 -0
- package/src/components/KYCElements/CameraCapture.tsx +268 -0
- package/src/components/KYCElements/CompletionStep.tsx +161 -0
- package/src/components/KYCElements/CountrySelection.tsx +177 -0
- package/src/components/KYCElements/CountrySelectionTemplate.tsx +526 -0
- package/src/components/KYCElements/DocumentTypeSelection.tsx +173 -0
- package/src/components/KYCElements/EmailVerificationTemplate.tsx +278 -0
- package/src/components/KYCElements/FileUpload.tsx +318 -0
- package/src/components/KYCElements/FileUploadTemplate.tsx +395 -0
- package/src/components/KYCElements/IDCardCapture.tsx +1053 -0
- package/src/components/KYCElements/InitializationStep.tsx +53 -0
- package/src/components/KYCElements/LocationCaptureTemplate.tsx +378 -0
- package/src/components/KYCElements/OrientationVideoCapture.tsx +649 -0
- package/src/components/KYCElements/OrientationVideoCaptureEnhanced.tsx +616 -0
- package/src/components/KYCElements/OrientationVideoCaptureFinal.tsx +534 -0
- package/src/components/KYCElements/PersonalInformationTemplate.tsx +158 -0
- package/src/components/KYCElements/PhoneVerificationTemplate.tsx +253 -0
- package/src/components/KYCElements/ReviewSubmitTemplate.tsx +201 -0
- package/src/components/KYCElements/SelfieCapture.tsx +284 -0
- package/src/components/KYCElements/SelfieCaptureTemplate.tsx +662 -0
- package/src/components/KYCElements/VerificationProgressTemplate.tsx +247 -0
- package/src/components/KYCElements/VerificationStep.tsx +234 -0
- package/src/components/KYCElements/WelcomeTemplate.tsx +290 -0
- package/src/components/KYCExample.tsx +297 -0
- package/src/components/KYCFlow.tsx +377 -0
- package/src/components/NativeCameraView.tsx +47 -0
- package/src/components/OverLay/IdCard.tsx +277 -0
- package/src/components/OverLay/SelfieOverlay.tsx +211 -0
- package/src/components/OverLay/StepOverlay.tsx +64 -0
- package/src/components/OverLay/type.ts +91 -0
- package/src/components/ProgressIndicator.tsx +62 -0
- package/src/components/SelfieCapture.tsx +244 -0
- package/src/components/SimpleExample.tsx +92 -0
- package/src/components/Svgs/GpsIcon.tsx +12 -0
- package/src/components/Svgs/Schield.tsx +26 -0
- package/src/components/Svgs/directionArrow.gif +0 -0
- package/src/components/Svgs/frontSelfieIcon.tsx +13 -0
- package/src/components/Svgs/scanningLine.tsx +88 -0
- package/src/components/Svgs/sideSelfieIcon.tsx +10 -0
- package/src/components/TemplateKYCExample.tsx +194 -0
- package/src/components/TemplateKYCFlowRefactored.tsx +473 -0
- package/src/components/VisionCameraView.tsx +197 -0
- package/src/components/example/CameraCaptureEx.tsx +335 -0
- package/src/components/example/CameraCaptureExAdvanced.tsx +357 -0
- package/src/components/example/CameraCaptureExScan.tsx +336 -0
- package/src/components/example/CameraCaptureExSimple.tsx +215 -0
- package/src/components/example/DynamicTemplateExample.tsx +289 -0
- package/src/components/example/OrientationVideoExample.tsx +380 -0
- package/src/components/example/SelfieCaptureEx.tsx +358 -0
- package/src/components/ui/Button.tsx +328 -0
- package/src/components/ui/ButtonExample.tsx +318 -0
- package/src/components/ui/ButtonStyles.ts +465 -0
- package/src/config/KYCConfig.ts +34 -0
- package/src/config/KYCConfigs.ts +528 -0
- package/src/config/allowedDomains.ts +133 -0
- package/src/config/countriesData.ts +85 -0
- package/src/config/region_mapping.json +735 -0
- package/src/config/region_mapping.ts +737 -0
- package/src/hooks/useI18n.ts +53 -0
- package/src/hooks/useKYC.ts +131 -0
- package/src/hooks/useKYCFlow.ts +248 -0
- package/src/hooks/useLocation.ts +221 -0
- package/src/hooks/useOrientationVideo.ts +149 -0
- package/src/hooks/useRealtimeVerifier.ts +128 -0
- package/src/hooks/useTemplateKYCFlow.tsx +1051 -0
- package/src/hooks/useTemplateLoader.ts +102 -0
- package/src/i18n/README.md +288 -0
- package/src/i18n/en/index.ts +275 -0
- package/src/i18n/fr/index.ts +260 -0
- package/src/i18n/index.ts +65 -0
- package/src/i18n/types.ts +182 -0
- package/src/i18n/usage-example.tsx +202 -0
- package/src/index.ts +25 -0
- package/src/modules/api/CardAuthentification.ts +589 -0
- package/src/modules/api/KYCService.ts +666 -0
- package/src/modules/api/SelfieVerification.ts +33 -0
- package/src/modules/api/TemplateService.ts +168 -0
- package/src/modules/api/backendApi.ts +8 -0
- package/src/modules/api/types.ts +59 -0
- package/src/modules/camera/NativeCameraModule.ts +170 -0
- package/src/modules/camera/UnifiedCameraModule.ts +160 -0
- package/src/modules/camera/VisionCameraModule.ts +334 -0
- package/src/modules/camera/VisionCameraModule.web.ts +679 -0
- package/src/modules/camera/index.ts +6 -0
- package/src/stores/kycStore.ts +161 -0
- package/src/types/KYC.types.ts +837 -0
- package/src/types/env.types.ts +13 -0
- package/src/utils/cropByObb.ts +254 -0
- package/src/utils/deviceDetection.ts +11 -0
- package/src/utils/get-document-type-info.ts +62 -0
- package/src/utils/logger.ts +48 -0
- package/src/utils/pathToBase64.ts +63 -0
- package/src/utils/platformAlert.ts +86 -0
- package/src/utils/remove-duplicate.ts +3 -0
- package/src/utils/template-transformer.ts +445 -0
- package/src/web/WebKYCEntry.tsx +375 -0
- package/src/web/index.ts +1 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export async function pathToBase64(uri) {
|
|
2
|
+
if (!uri)
|
|
3
|
+
throw new Error('pathToBase64: uri is required');
|
|
4
|
+
// If already a data URI, return the base64 part
|
|
5
|
+
if (uri.startsWith('data:')) {
|
|
6
|
+
const commaIndex = uri.indexOf(',');
|
|
7
|
+
return commaIndex !== -1 ? uri.substring(commaIndex + 1) : uri;
|
|
8
|
+
}
|
|
9
|
+
// Try Expo FileSystem if available (React Native + Expo)
|
|
10
|
+
try {
|
|
11
|
+
// Try legacy API from expo-file-system/legacy first (Expo SDK 54+)
|
|
12
|
+
// This is the recommended way to avoid deprecation warnings
|
|
13
|
+
try {
|
|
14
|
+
// @ts-ignore - legacy export might not be in types
|
|
15
|
+
const LegacyFileSystem = require('expo-file-system');
|
|
16
|
+
if (LegacyFileSystem?.readAsStringAsync) {
|
|
17
|
+
const base64 = await LegacyFileSystem.readAsStringAsync(uri, { encoding: LegacyFileSystem.EncodingType.Base64 });
|
|
18
|
+
if (base64)
|
|
19
|
+
return base64;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch (legacyError) {
|
|
23
|
+
// Legacy not available (SDK 53 or earlier), try regular import
|
|
24
|
+
const errorMessage = legacyError instanceof Error ? legacyError.message : String(legacyError);
|
|
25
|
+
if (errorMessage.includes('Cannot find module') || errorMessage.includes('Module not found')) {
|
|
26
|
+
// SDK 53 or earlier - use regular import as fallback
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
const FileSystem = require('expo-file-system');
|
|
29
|
+
if (FileSystem?.readAsStringAsync) {
|
|
30
|
+
const base64 = await FileSystem.readAsStringAsync(uri, { encoding: FileSystem.EncodingType.Base64 });
|
|
31
|
+
if (base64)
|
|
32
|
+
return base64;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// If it's a different error, continue to other strategies
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (_) {
|
|
39
|
+
// All FileSystem APIs failed, fall back to other strategies (fetch + FileReader)
|
|
40
|
+
}
|
|
41
|
+
// Generic fetch + FileReader strategy (works on web; often works on RN for file:// URIs)
|
|
42
|
+
try {
|
|
43
|
+
const response = await fetch(uri);
|
|
44
|
+
const blob = await response.blob();
|
|
45
|
+
const dataUrl = await new Promise((resolve, reject) => {
|
|
46
|
+
const reader = new FileReader();
|
|
47
|
+
reader.onloadend = () => {
|
|
48
|
+
if (typeof reader.result === 'string')
|
|
49
|
+
resolve(reader.result);
|
|
50
|
+
else
|
|
51
|
+
reject(new Error('Failed to convert blob to data URL'));
|
|
52
|
+
};
|
|
53
|
+
reader.onerror = reject;
|
|
54
|
+
reader.readAsDataURL(blob);
|
|
55
|
+
});
|
|
56
|
+
const commaIndex = dataUrl.indexOf(',');
|
|
57
|
+
return commaIndex !== -1 ? dataUrl.substring(commaIndex + 1) : dataUrl;
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
// continue to final error
|
|
61
|
+
}
|
|
62
|
+
throw new Error('pathToBase64: unable to convert uri to base64');
|
|
63
|
+
}
|
|
64
|
+
export default pathToBase64;
|
|
65
|
+
//# sourceMappingURL=pathToBase64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathToBase64.js","sourceRoot":"","sources":["../../src/utils/pathToBase64.ts"],"names":[],"mappings":"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","sourcesContent":["export async function pathToBase64(uri: string): Promise<string> {\n if (!uri) throw new Error('pathToBase64: uri is required');\n\n // If already a data URI, return the base64 part\n if (uri.startsWith('data:')) {\n const commaIndex = uri.indexOf(',');\n return commaIndex !== -1 ? uri.substring(commaIndex + 1) : uri;\n }\n\n // Try Expo FileSystem if available (React Native + Expo)\n try {\n // Try legacy API from expo-file-system/legacy first (Expo SDK 54+)\n // This is the recommended way to avoid deprecation warnings\n try {\n // @ts-ignore - legacy export might not be in types\n const LegacyFileSystem = require('expo-file-system');\n if (LegacyFileSystem?.readAsStringAsync) {\n const base64 = await LegacyFileSystem.readAsStringAsync(uri, { encoding: LegacyFileSystem.EncodingType.Base64 });\n if (base64) return base64;\n }\n } catch (legacyError) {\n // Legacy not available (SDK 53 or earlier), try regular import\n const errorMessage = legacyError instanceof Error ? legacyError.message : String(legacyError);\n if (errorMessage.includes('Cannot find module') || errorMessage.includes('Module not found')) {\n // SDK 53 or earlier - use regular import as fallback\n // @ts-ignore\n const FileSystem = require('expo-file-system');\n if (FileSystem?.readAsStringAsync) {\n const base64 = await FileSystem.readAsStringAsync(uri, { encoding: FileSystem.EncodingType.Base64 });\n if (base64) return base64;\n }\n }\n // If it's a different error, continue to other strategies\n }\n } catch (_) {\n // All FileSystem APIs failed, fall back to other strategies (fetch + FileReader)\n }\n\n // Generic fetch + FileReader strategy (works on web; often works on RN for file:// URIs)\n try {\n const response = await fetch(uri);\n const blob = await response.blob();\n const dataUrl = await new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n if (typeof reader.result === 'string') resolve(reader.result);\n else reject(new Error('Failed to convert blob to data URL'));\n };\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n const commaIndex = dataUrl.indexOf(',');\n return commaIndex !== -1 ? dataUrl.substring(commaIndex + 1) : dataUrl;\n } catch (err) {\n // continue to final error\n }\n\n throw new Error('pathToBase64: unable to convert uri to base64');\n}\n\nexport default pathToBase64;\n\n\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface AlertButton {
|
|
2
|
+
text?: string;
|
|
3
|
+
onPress?: () => void;
|
|
4
|
+
style?: 'default' | 'cancel' | 'destructive';
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Platform-aware alert helper that works on both native and web platforms
|
|
8
|
+
* On web, uses window.confirm/window.alert since Alert.alert is not supported
|
|
9
|
+
* On native, uses the standard Alert.alert
|
|
10
|
+
*/
|
|
11
|
+
export declare const showAlert: (title: string, message?: string, buttons?: AlertButton[]) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Simplified confirm dialog for yes/no scenarios
|
|
14
|
+
*/
|
|
15
|
+
export declare const showConfirm: (title: string, message: string, onConfirm: () => void, onCancel?: () => void) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Simple alert with just an OK button
|
|
18
|
+
*/
|
|
19
|
+
export declare const showSimpleAlert: (title: string, message?: string, onPress?: () => void) => void;
|
|
20
|
+
//# sourceMappingURL=platformAlert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformAlert.d.ts","sourceRoot":"","sources":["../../src/utils/platformAlert.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,aAAa,CAAC;CAC9C;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GACpB,OAAO,MAAM,EACb,UAAU,MAAM,EAChB,UAAU,WAAW,EAAE,KACtB,IAiCF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,MAAM,EACb,SAAS,MAAM,EACf,WAAW,MAAM,IAAI,EACrB,WAAW,MAAM,IAAI,KACpB,IAYF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,EAAE,UAAU,MAAM,IAAI,KAAG,IAOvF,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Platform, Alert } from 'react-native';
|
|
2
|
+
/**
|
|
3
|
+
* Platform-aware alert helper that works on both native and web platforms
|
|
4
|
+
* On web, uses window.confirm/window.alert since Alert.alert is not supported
|
|
5
|
+
* On native, uses the standard Alert.alert
|
|
6
|
+
*/
|
|
7
|
+
export const showAlert = (title, message, buttons) => {
|
|
8
|
+
if (Platform.OS === 'web') {
|
|
9
|
+
// Web implementation using native browser dialogs
|
|
10
|
+
const fullMessage = message ? `${title}\n\n${message}` : title;
|
|
11
|
+
if (buttons && buttons.length > 1) {
|
|
12
|
+
// Multiple buttons - use confirm dialog
|
|
13
|
+
const confirmed = window.confirm(fullMessage);
|
|
14
|
+
if (confirmed) {
|
|
15
|
+
// Find and call the primary/positive button callback
|
|
16
|
+
const confirmButton = buttons.find(btn => btn.style !== 'cancel' && btn.onPress);
|
|
17
|
+
confirmButton?.onPress?.();
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
// Find and call the cancel button callback
|
|
21
|
+
const cancelButton = buttons.find(btn => btn.style === 'cancel');
|
|
22
|
+
cancelButton?.onPress?.();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else if (buttons && buttons.length === 1) {
|
|
26
|
+
// Single button - use alert dialog
|
|
27
|
+
window.alert(fullMessage);
|
|
28
|
+
buttons[0]?.onPress?.();
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// No buttons - just show alert
|
|
32
|
+
window.alert(fullMessage);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// Native implementation - use standard Alert.alert
|
|
37
|
+
Alert.alert(title, message, buttons);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Simplified confirm dialog for yes/no scenarios
|
|
42
|
+
*/
|
|
43
|
+
export const showConfirm = (title, message, onConfirm, onCancel) => {
|
|
44
|
+
showAlert(title, message, [
|
|
45
|
+
{
|
|
46
|
+
text: 'Cancel',
|
|
47
|
+
style: 'cancel',
|
|
48
|
+
onPress: onCancel,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
text: 'OK',
|
|
52
|
+
onPress: onConfirm,
|
|
53
|
+
},
|
|
54
|
+
]);
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Simple alert with just an OK button
|
|
58
|
+
*/
|
|
59
|
+
export const showSimpleAlert = (title, message, onPress) => {
|
|
60
|
+
showAlert(title, message, [
|
|
61
|
+
{
|
|
62
|
+
text: 'OK',
|
|
63
|
+
onPress,
|
|
64
|
+
},
|
|
65
|
+
]);
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=platformAlert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platformAlert.js","sourceRoot":"","sources":["../../src/utils/platformAlert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAQ/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,KAAa,EACb,OAAgB,EAChB,OAAuB,EACjB,EAAE;IACR,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC1B,kDAAkD;QAClD,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAE/D,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAElC,wCAAwC;YACxC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAE9C,IAAI,SAAS,EAAE,CAAC;gBACd,qDAAqD;gBACrD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAChC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAC7C,CAAC;gBACF,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;gBACjE,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,mCAAmC;YACnC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mDAAmD;QACnD,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAa,EACb,OAAe,EACf,SAAqB,EACrB,QAAqB,EACf,EAAE;IACR,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;QACxB;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,QAAQ;SAClB;QACD;YACE,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,SAAS;SACnB;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,OAAgB,EAAE,OAAoB,EAAQ,EAAE;IAC7F,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;QACxB;YACE,IAAI,EAAE,IAAI;YACV,OAAO;SACR;KACF,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { Platform, Alert } from 'react-native';\n\nexport interface AlertButton {\n text?: string;\n onPress?: () => void;\n style?: 'default' | 'cancel' | 'destructive';\n}\n\n/**\n * Platform-aware alert helper that works on both native and web platforms\n * On web, uses window.confirm/window.alert since Alert.alert is not supported\n * On native, uses the standard Alert.alert\n */\nexport const showAlert = (\n title: string,\n message?: string,\n buttons?: AlertButton[]\n): void => {\n if (Platform.OS === 'web') {\n // Web implementation using native browser dialogs\n const fullMessage = message ? `${title}\\n\\n${message}` : title;\n\n if (buttons && buttons.length > 1) {\n \n // Multiple buttons - use confirm dialog\n const confirmed = window.confirm(fullMessage);\n \n if (confirmed) {\n // Find and call the primary/positive button callback\n const confirmButton = buttons.find(\n btn => btn.style !== 'cancel' && btn.onPress\n );\n confirmButton?.onPress?.();\n } else {\n // Find and call the cancel button callback\n const cancelButton = buttons.find(btn => btn.style === 'cancel');\n cancelButton?.onPress?.();\n }\n } else if (buttons && buttons.length === 1) {\n // Single button - use alert dialog\n window.alert(fullMessage);\n buttons[0]?.onPress?.();\n } else {\n // No buttons - just show alert\n window.alert(fullMessage);\n }\n } else {\n // Native implementation - use standard Alert.alert\n Alert.alert(title, message, buttons);\n }\n};\n\n/**\n * Simplified confirm dialog for yes/no scenarios\n */\nexport const showConfirm = (\n title: string,\n message: string,\n onConfirm: () => void,\n onCancel?: () => void\n): void => {\n showAlert(title, message, [\n {\n text: 'Cancel',\n style: 'cancel',\n onPress: onCancel,\n },\n {\n text: 'OK',\n onPress: onConfirm,\n },\n ]);\n};\n\n/**\n * Simple alert with just an OK button\n */\nexport const showSimpleAlert = (title: string, message?: string, onPress?: () => void): void => {\n showAlert(title, message, [\n {\n text: 'OK',\n onPress,\n },\n ]);\n};\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-duplicate.d.ts","sourceRoot":"","sources":["../../src/utils/remove-duplicate.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAExD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-duplicate.js","sourceRoot":"","sources":["../../src/utils/remove-duplicate.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,GAAa;IAC1C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["export function removeDuplicates(arr: string[]): string[] {\n return [...new Set(arr)];\n}"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BackendKYCTemplate, KYCTemplate } from '../types/KYC.types';
|
|
2
|
+
/**
|
|
3
|
+
* Transform backend template to SDK template format
|
|
4
|
+
*/
|
|
5
|
+
export declare function transformBackendTemplateToSDK(backendTemplate: BackendKYCTemplate): KYCTemplate;
|
|
6
|
+
/**
|
|
7
|
+
* Validate transformed template
|
|
8
|
+
*/
|
|
9
|
+
export declare function validateTransformedTemplate(template: KYCTemplate): boolean;
|
|
10
|
+
//# sourceMappingURL=template-transformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-transformer.d.ts","sourceRoot":"","sources":["../../src/utils/template-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAElB,WAAW,EAaZ,MAAM,oBAAoB,CAAC;AA6S5B;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,kBAAkB,GAClC,WAAW,CAgGb;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAqB1E"}
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import { logger } from './logger';
|
|
2
|
+
/**
|
|
3
|
+
* Hash a string to a number (simple hash function)
|
|
4
|
+
*/
|
|
5
|
+
function hashStringToNumber(str) {
|
|
6
|
+
let hash = 0;
|
|
7
|
+
for (let i = 0; i < str.length; i++) {
|
|
8
|
+
const char = str.charCodeAt(i);
|
|
9
|
+
hash = ((hash << 5) - hash) + char;
|
|
10
|
+
hash = hash & hash; // Convert to 32-bit integer
|
|
11
|
+
}
|
|
12
|
+
return Math.abs(hash);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Map backend component types to SDK component types
|
|
16
|
+
*/
|
|
17
|
+
const COMPONENT_TYPE_MAPPING = {
|
|
18
|
+
'welcome': 'welcome',
|
|
19
|
+
'government-id': 'id_card',
|
|
20
|
+
'selfie-capture': 'selfie',
|
|
21
|
+
'location-capture': 'location',
|
|
22
|
+
'review-submit': 'review_submit',
|
|
23
|
+
'verification-progress': 'verification_progress',
|
|
24
|
+
'file-upload': 'file_upload',
|
|
25
|
+
'country-selection': 'country_selection',
|
|
26
|
+
'email-verification': 'email_verification',
|
|
27
|
+
'phone-verification': 'phone_verification',
|
|
28
|
+
'personal-information': 'personal_information',
|
|
29
|
+
'additional-documents': 'additional_documents',
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Transform backend translations to SDK labels and instructions
|
|
33
|
+
*/
|
|
34
|
+
function transformTranslations(translations, defaultLanguage = 'en') {
|
|
35
|
+
const labels = { en: '', fr: '' };
|
|
36
|
+
const instructions = { en: '', fr: '' };
|
|
37
|
+
// Extract title as label
|
|
38
|
+
if (translations.en?.title)
|
|
39
|
+
labels.en = translations.en.title;
|
|
40
|
+
if (translations.fr?.title)
|
|
41
|
+
labels.fr = translations.fr.title;
|
|
42
|
+
// Extract instructions
|
|
43
|
+
if (translations.en?.instructions)
|
|
44
|
+
instructions.en = translations.en.instructions;
|
|
45
|
+
if (translations.fr?.instructions)
|
|
46
|
+
instructions.fr = translations.fr.instructions;
|
|
47
|
+
// Fallback to description if instructions not available
|
|
48
|
+
if (!instructions.en && translations.en?.description) {
|
|
49
|
+
instructions.en = translations.en.description;
|
|
50
|
+
}
|
|
51
|
+
if (!instructions.fr && translations.fr?.description) {
|
|
52
|
+
instructions.fr = translations.fr.description;
|
|
53
|
+
}
|
|
54
|
+
// Support other languages
|
|
55
|
+
Object.keys(translations).forEach((lang) => {
|
|
56
|
+
if (lang !== 'en' && lang !== 'fr' && translations[lang]) {
|
|
57
|
+
labels[lang] = translations[lang]?.title || '';
|
|
58
|
+
instructions[lang] = translations[lang]?.instructions || translations[lang]?.description || '';
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return { labels, instructions };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Transform UI configuration
|
|
65
|
+
*/
|
|
66
|
+
function transformUI(translations) {
|
|
67
|
+
const buttonText = { en: '', fr: '' };
|
|
68
|
+
if (translations.en?.buttonText)
|
|
69
|
+
buttonText.en = translations.en.buttonText;
|
|
70
|
+
if (translations.fr?.buttonText)
|
|
71
|
+
buttonText.fr = translations.fr.buttonText;
|
|
72
|
+
// Support other languages
|
|
73
|
+
Object.keys(translations).forEach((lang) => {
|
|
74
|
+
if (lang !== 'en' && lang !== 'fr' && translations[lang]?.buttonText) {
|
|
75
|
+
buttonText[lang] = translations[lang].buttonText;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return {
|
|
79
|
+
buttonText,
|
|
80
|
+
themeColor: '#2DBD60', // Default theme color
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Transform welcome config
|
|
85
|
+
*/
|
|
86
|
+
function transformWelcomeConfig(config) {
|
|
87
|
+
return {
|
|
88
|
+
subtitle: config.subtitle,
|
|
89
|
+
buttonText: config.buttonText,
|
|
90
|
+
requirements: config.requirements || [],
|
|
91
|
+
estimatedTime: config.estimatedTime,
|
|
92
|
+
consentOptions: config.consentOptions || {
|
|
93
|
+
showPrivacyPolicy: true,
|
|
94
|
+
showTermsOfService: true,
|
|
95
|
+
showMarketingConsent: false,
|
|
96
|
+
},
|
|
97
|
+
welcomeMessage: config.welcomeMessage,
|
|
98
|
+
showEstimatedTime: config.showEstimatedTime !== false,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Transform government ID config to IDCardConfig
|
|
103
|
+
*/
|
|
104
|
+
function transformGovernmentIdConfig(config) {
|
|
105
|
+
const documentTypes = config.documentTypes || ['passport', 'nationalId'];
|
|
106
|
+
const sides = [];
|
|
107
|
+
if (config.requiredSides === 'front-back' || config.requiredSides === 'both') {
|
|
108
|
+
sides.push('front', 'back');
|
|
109
|
+
}
|
|
110
|
+
else if (config.requiredSides === 'front') {
|
|
111
|
+
sides.push('front');
|
|
112
|
+
}
|
|
113
|
+
else if (config.requiredSides === 'back') {
|
|
114
|
+
sides.push('back');
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// Default to both sides
|
|
118
|
+
sides.push('front', 'back');
|
|
119
|
+
}
|
|
120
|
+
const idCardConfig = {
|
|
121
|
+
sides,
|
|
122
|
+
allowed_formats: ['jpg', 'jpeg', 'png'],
|
|
123
|
+
max_size_mb: 10,
|
|
124
|
+
document_types: documentTypes.map((dt) => {
|
|
125
|
+
const mapping = {
|
|
126
|
+
'passport': 'passport',
|
|
127
|
+
'nationalId': 'national_id',
|
|
128
|
+
'driversLicense': 'drivers_licence',
|
|
129
|
+
'identityCard': 'identity_card',
|
|
130
|
+
};
|
|
131
|
+
return mapping[dt] || dt;
|
|
132
|
+
}),
|
|
133
|
+
};
|
|
134
|
+
// Add bbox configs if available
|
|
135
|
+
if (config.cameraOverlay?.bbox) {
|
|
136
|
+
const bbox = config.cameraOverlay.bbox;
|
|
137
|
+
idCardConfig.bbox_configs = {};
|
|
138
|
+
documentTypes.forEach((dt) => {
|
|
139
|
+
const docType = dt;
|
|
140
|
+
idCardConfig.bbox_configs[docType] = {
|
|
141
|
+
xMin: bbox.xMin || 20,
|
|
142
|
+
yMin: bbox.yMin || 140,
|
|
143
|
+
xMax: bbox.xMax || 370,
|
|
144
|
+
yMax: bbox.yMax || 340,
|
|
145
|
+
borderColor: bbox.borderColor || '#2DBD60',
|
|
146
|
+
borderWidth: bbox.borderWidth || 3,
|
|
147
|
+
cornerRadius: bbox.cornerRadius || 8,
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
// Store additional backend-specific config in a way that can be accessed
|
|
152
|
+
idCardConfig.authenticationMethods = config.authenticationMethods;
|
|
153
|
+
idCardConfig.documentTypesByCountry = config.documentTypesByCountry;
|
|
154
|
+
idCardConfig.selectedCountries = config.selectedCountries;
|
|
155
|
+
idCardConfig.instructionsByDocumentType = config.instructionsByDocumentType;
|
|
156
|
+
idCardConfig.cameraSettings = config.cameraSettings;
|
|
157
|
+
idCardConfig.validationRules = config.validationRules;
|
|
158
|
+
return idCardConfig;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Transform location capture config
|
|
162
|
+
*/
|
|
163
|
+
function transformLocationConfig(config) {
|
|
164
|
+
return {
|
|
165
|
+
accuracy: config.accuracy || 'high',
|
|
166
|
+
required: config.required !== false,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Transform selfie capture config
|
|
171
|
+
*/
|
|
172
|
+
function transformSelfieConfig(config) {
|
|
173
|
+
return {
|
|
174
|
+
liveness_check: config.livenessEnabled !== false,
|
|
175
|
+
max_attempts: config.maxAttempts || 5,
|
|
176
|
+
orientations: config.orientations || ['center'],
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Transform component config based on type
|
|
181
|
+
*/
|
|
182
|
+
function transformComponentConfig(type, backendConfig) {
|
|
183
|
+
switch (type) {
|
|
184
|
+
case 'welcome':
|
|
185
|
+
return transformWelcomeConfig(backendConfig);
|
|
186
|
+
case 'id_card':
|
|
187
|
+
return transformGovernmentIdConfig(backendConfig);
|
|
188
|
+
case 'location':
|
|
189
|
+
return transformLocationConfig(backendConfig);
|
|
190
|
+
case 'selfie':
|
|
191
|
+
return transformSelfieConfig(backendConfig);
|
|
192
|
+
case 'file_upload':
|
|
193
|
+
return {
|
|
194
|
+
allowed_formats: backendConfig.allowed_formats || ['jpg', 'jpeg', 'png', 'pdf'],
|
|
195
|
+
max_size_mb: backendConfig.max_size_mb || 10,
|
|
196
|
+
required: backendConfig.required !== false,
|
|
197
|
+
};
|
|
198
|
+
case 'country_selection':
|
|
199
|
+
return {
|
|
200
|
+
allowed_countries: backendConfig.allowed_countries || [],
|
|
201
|
+
default_country: backendConfig.default_country || '',
|
|
202
|
+
required: backendConfig.required !== false,
|
|
203
|
+
};
|
|
204
|
+
case 'email_verification':
|
|
205
|
+
return backendConfig;
|
|
206
|
+
case 'phone_verification':
|
|
207
|
+
return backendConfig;
|
|
208
|
+
case 'personal_information':
|
|
209
|
+
return backendConfig;
|
|
210
|
+
case 'additional_documents':
|
|
211
|
+
return backendConfig;
|
|
212
|
+
default:
|
|
213
|
+
return backendConfig;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Transform a single backend component to SDK component
|
|
218
|
+
*/
|
|
219
|
+
function transformComponent(backendComponent, componentIndex) {
|
|
220
|
+
const mappedType = COMPONENT_TYPE_MAPPING[backendComponent.type];
|
|
221
|
+
if (!mappedType) {
|
|
222
|
+
logger.warn(`Unknown component type: ${backendComponent.type}, defaulting to initialization`);
|
|
223
|
+
}
|
|
224
|
+
const componentId = hashStringToNumber(backendComponent.id);
|
|
225
|
+
const { labels, instructions } = transformTranslations(backendComponent.translations);
|
|
226
|
+
const ui = transformUI(backendComponent.translations);
|
|
227
|
+
const config = transformComponentConfig(mappedType || 'initialization', backendComponent.config);
|
|
228
|
+
// For components with multiple sides (like id_card), create nested structure
|
|
229
|
+
let finalLabels = labels;
|
|
230
|
+
let finalInstructions = instructions;
|
|
231
|
+
let finalUI = ui;
|
|
232
|
+
if (mappedType === 'id_card' && backendComponent.config.requiredSides === 'front-back') {
|
|
233
|
+
// Create separate labels/instructions for front and back
|
|
234
|
+
finalLabels = {
|
|
235
|
+
front: {
|
|
236
|
+
en: backendComponent.translations.en?.title || labels.en,
|
|
237
|
+
fr: backendComponent.translations.fr?.title || labels.fr,
|
|
238
|
+
},
|
|
239
|
+
back: {
|
|
240
|
+
en: `${labels.en} (Back)`,
|
|
241
|
+
fr: `${labels.fr} (Verso)`,
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
finalInstructions = {
|
|
245
|
+
front: instructions,
|
|
246
|
+
back: instructions,
|
|
247
|
+
};
|
|
248
|
+
finalUI = {
|
|
249
|
+
front: ui,
|
|
250
|
+
back: ui,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
id: componentId,
|
|
255
|
+
type: mappedType || 'initialization',
|
|
256
|
+
order: backendComponent.order,
|
|
257
|
+
labels: finalLabels,
|
|
258
|
+
instructions: finalInstructions,
|
|
259
|
+
ui: finalUI,
|
|
260
|
+
config,
|
|
261
|
+
required: backendComponent.required !== false,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Transform backend template to SDK template format
|
|
266
|
+
*/
|
|
267
|
+
export function transformBackendTemplateToSDK(backendTemplate) {
|
|
268
|
+
try {
|
|
269
|
+
// Validate backend template
|
|
270
|
+
if (!backendTemplate.id || !backendTemplate.name || !Array.isArray(backendTemplate.components)) {
|
|
271
|
+
throw new Error('Invalid backend template structure');
|
|
272
|
+
}
|
|
273
|
+
// Sort components by order
|
|
274
|
+
const sortedComponents = [...backendTemplate.components].sort((a, b) => a.order - b.order);
|
|
275
|
+
// Transform each component
|
|
276
|
+
const transformedComponents = sortedComponents.map((comp, index) => transformComponent(comp, index));
|
|
277
|
+
// Auto-create country_selection component before id_card if government-id has selection data
|
|
278
|
+
// Check if country_selection already exists in backend template
|
|
279
|
+
const hasCountrySelectionInBackend = sortedComponents.some(c => c.type === 'country-selection');
|
|
280
|
+
if (!hasCountrySelectionInBackend) {
|
|
281
|
+
// Find the first government-id component with selection data
|
|
282
|
+
const govIdWithSelection = sortedComponents.find(backendComp => backendComp.type === 'government-id' &&
|
|
283
|
+
backendComp.config && (backendComp.config.selectedCountries ||
|
|
284
|
+
backendComp.config.documentTypesByCountry));
|
|
285
|
+
if (govIdWithSelection) {
|
|
286
|
+
// Find the corresponding transformed id_card component
|
|
287
|
+
const transformedIdCard = transformedComponents.find(c => hashStringToNumber(govIdWithSelection.id) === c.id);
|
|
288
|
+
if (transformedIdCard) {
|
|
289
|
+
// Create a country_selection component before id_card
|
|
290
|
+
const countrySelectionComponent = {
|
|
291
|
+
id: hashStringToNumber(`${govIdWithSelection.id}-country-selection`),
|
|
292
|
+
type: 'country_selection',
|
|
293
|
+
order: transformedIdCard.order - 0.5, // Insert before id_card
|
|
294
|
+
labels: {
|
|
295
|
+
en: govIdWithSelection.translations.en?.title || 'Select Country and Document',
|
|
296
|
+
fr: govIdWithSelection.translations.fr?.title || 'Sélectionnez le pays et le document',
|
|
297
|
+
},
|
|
298
|
+
instructions: {
|
|
299
|
+
en: 'Please select your country and document type',
|
|
300
|
+
fr: 'Veuillez sélectionner votre pays et le type de document',
|
|
301
|
+
},
|
|
302
|
+
ui: {
|
|
303
|
+
themeColor: '#2DBD60',
|
|
304
|
+
buttonText: {
|
|
305
|
+
en: 'Continue',
|
|
306
|
+
fr: 'Continuer',
|
|
307
|
+
},
|
|
308
|
+
},
|
|
309
|
+
config: {
|
|
310
|
+
allowed_countries: govIdWithSelection.config.selectedCountries || [],
|
|
311
|
+
default_country: '',
|
|
312
|
+
required: true,
|
|
313
|
+
},
|
|
314
|
+
};
|
|
315
|
+
// Insert country_selection before id_card in transformedComponents
|
|
316
|
+
const idCardIndex = transformedComponents.indexOf(transformedIdCard);
|
|
317
|
+
transformedComponents.splice(idCardIndex, 0, countrySelectionComponent);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
// Re-assign order values sequentially after insertion
|
|
322
|
+
transformedComponents.forEach((comp, index) => {
|
|
323
|
+
comp.order = index + 1;
|
|
324
|
+
});
|
|
325
|
+
// Create SDK template
|
|
326
|
+
const sdkTemplate = {
|
|
327
|
+
id: hashStringToNumber(backendTemplate.id),
|
|
328
|
+
name: backendTemplate.name,
|
|
329
|
+
description: backendTemplate.description || {
|
|
330
|
+
en: '',
|
|
331
|
+
fr: '',
|
|
332
|
+
},
|
|
333
|
+
version: backendTemplate.version || '1.0.0',
|
|
334
|
+
components: transformedComponents,
|
|
335
|
+
};
|
|
336
|
+
logger.log(`Template transformed: ${backendTemplate.id} -> ${sdkTemplate.id} with ${transformedComponents.length} components`);
|
|
337
|
+
return sdkTemplate;
|
|
338
|
+
}
|
|
339
|
+
catch (error) {
|
|
340
|
+
logger.error('Error transforming template:', error);
|
|
341
|
+
throw new Error(`Failed to transform template: ${error.message}`);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Validate transformed template
|
|
346
|
+
*/
|
|
347
|
+
export function validateTransformedTemplate(template) {
|
|
348
|
+
if (!template.id || !template.name || !Array.isArray(template.components)) {
|
|
349
|
+
return false;
|
|
350
|
+
}
|
|
351
|
+
if (!template.name.en || !template.name.fr) {
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
// Validate each component
|
|
355
|
+
for (const component of template.components) {
|
|
356
|
+
if (!component.id || !component.type || typeof component.order !== 'number') {
|
|
357
|
+
return false;
|
|
358
|
+
}
|
|
359
|
+
if (!component.labels || !component.instructions || !component.config) {
|
|
360
|
+
return false;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return true;
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=template-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-transformer.js","sourceRoot":"","sources":["../../src/utils/template-transformer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,4BAA4B;IAClD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,sBAAsB,GAA8C;IACxE,SAAS,EAAE,SAAS;IACpB,eAAe,EAAE,SAAS;IAC1B,gBAAgB,EAAE,QAAQ;IAC1B,kBAAkB,EAAE,UAAU;IAC9B,eAAe,EAAE,eAAe;IAChC,uBAAuB,EAAE,uBAAuB;IAChD,aAAa,EAAE,aAAa;IAC5B,mBAAmB,EAAE,mBAAmB;IACxC,oBAAoB,EAAE,oBAAoB;IAC1C,oBAAoB,EAAE,oBAAoB;IAC1C,sBAAsB,EAAE,sBAAsB;IAC9C,sBAAsB,EAAE,sBAAsB;CAC/C,CAAC;AAEF;;GAEG;AACH,SAAS,qBAAqB,CAC5B,YAAsD,EACtD,kBAA0B,IAAI;IAE9B,MAAM,MAAM,GAAkB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACjD,MAAM,YAAY,GAAkB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAEvD,yBAAyB;IACzB,IAAI,YAAY,CAAC,EAAE,EAAE,KAAK;QAAE,MAAM,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC;IAC9D,IAAI,YAAY,CAAC,EAAE,EAAE,KAAK;QAAE,MAAM,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC;IAE9D,uBAAuB;IACvB,IAAI,YAAY,CAAC,EAAE,EAAE,YAAY;QAAE,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC;IAClF,IAAI,YAAY,CAAC,EAAE,EAAE,YAAY;QAAE,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC;IAElF,wDAAwD;IACxD,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC;QACrD,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC;IAChD,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC;QACrD,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC;IAChD,CAAC;IAED,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACzC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YAC/C,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,YAAsD;IACzE,MAAM,UAAU,GAAkB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAErD,IAAI,YAAY,CAAC,EAAE,EAAE,UAAU;QAAE,UAAU,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC;IAC5E,IAAI,YAAY,CAAC,EAAE,EAAE,UAAU;QAAE,UAAU,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC;IAE5E,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACzC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;YACrE,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAE,CAAC,UAAW,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,UAAU;QACV,UAAU,EAAE,SAAS,EAAE,sBAAsB;KAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,MAAW;IACzC,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;QACvC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI;YACvC,iBAAiB,EAAE,IAAI;YACvB,kBAAkB,EAAE,IAAI;YACxB,oBAAoB,EAAE,KAAK;SAC5B;QACD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,KAAK,KAAK;KACrC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAAC,MAAW;IAC9C,MAAM,aAAa,GAAa,MAAM,CAAC,aAAa,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACnF,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,MAAM,CAAC,aAAa,KAAK,YAAY,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;SAAM,IAAI,MAAM,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;SAAM,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,wBAAwB;QACxB,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,YAAY,GAAiB;QACjC,KAAK;QACL,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;QACvC,WAAW,EAAE,EAAE;QACf,cAAc,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE;YAC/C,MAAM,OAAO,GAAwB;gBACnC,UAAU,EAAE,UAAU;gBACtB,YAAY,EAAE,aAAa;gBAC3B,gBAAgB,EAAE,iBAAiB;gBACnC,cAAc,EAAE,eAAe;aAChC,CAAC;YACF,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC,CAAU;KACZ,CAAC;IAEF,gCAAgC;IAChC,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;QACvC,YAAY,CAAC,YAAY,GAAG,EAQ1B,CAAC;QACH,aAAa,CAAC,OAAO,CAAC,CAAC,EAAU,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,EAA4B,CAAC;YAC5C,YAAY,CAAC,YAAoB,CAAC,OAAO,CAAC,GAAG;gBAC5C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG;gBACtB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS;gBAC1C,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;gBAClC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;aACrC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IACxE,YAAoB,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAC1E,YAAoB,CAAC,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;IAC5E,YAAoB,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAClE,YAAoB,CAAC,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC;IACpF,YAAoB,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAC5D,YAAoB,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAE/D,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAW;IAC1C,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,KAAK;KAClB,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,MAAW;IACxC,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,eAAe,KAAK,KAAK;QAChD,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC;QACrC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC;KAChC,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,IAA+B,EAC/B,aAAkB;IAElB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAC/C,KAAK,SAAS;YACZ,OAAO,2BAA2B,CAAC,aAAa,CAAC,CAAC;QACpD,KAAK,UAAU;YACb,OAAO,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAChD,KAAK,QAAQ;YACX,OAAO,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAC9C,KAAK,aAAa;YAChB,OAAO;gBACL,eAAe,EAAE,aAAa,CAAC,eAAe,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;gBAC/E,WAAW,EAAE,aAAa,CAAC,WAAW,IAAI,EAAE;gBAC5C,QAAQ,EAAE,aAAa,CAAC,QAAQ,KAAK,KAAK;aACvB,CAAC;QACxB,KAAK,mBAAmB;YACtB,OAAO;gBACL,iBAAiB,EAAE,aAAa,CAAC,iBAAiB,IAAI,EAAE;gBACxD,eAAe,EAAE,aAAa,CAAC,eAAe,IAAI,EAAE;gBACpD,QAAQ,EAAE,aAAa,CAAC,QAAQ,KAAK,KAAK;aACjB,CAAC;QAC9B,KAAK,oBAAoB;YACvB,OAAO,aAAoB,CAAC;QAC9B,KAAK,oBAAoB;YACvB,OAAO,aAAoB,CAAC;QAC9B,KAAK,sBAAsB;YACzB,OAAO,aAAoB,CAAC;QAC9B,KAAK,sBAAsB;YACzB,OAAO,aAAoB,CAAC;QAC9B;YACE,OAAO,aAAgC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,gBAA0C,EAC1C,cAAsB;IAEtB,MAAM,UAAU,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEjE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,2BAA2B,gBAAgB,CAAC,IAAI,gCAAgC,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACtF,MAAM,EAAE,GAAG,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,wBAAwB,CAAC,UAAU,IAAI,gBAAgB,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEjG,6EAA6E;IAC7E,IAAI,WAAW,GAAkD,MAAM,CAAC;IACxE,IAAI,iBAAiB,GAAkD,YAAY,CAAC;IACpF,IAAI,OAAO,GAA8C,EAAE,CAAC;IAE5D,IAAI,UAAU,KAAK,SAAS,IAAK,gBAAgB,CAAC,MAA6B,CAAC,aAAa,KAAK,YAAY,EAAE,CAAC;QAC/G,yDAAyD;QACzD,WAAW,GAAG;YACZ,KAAK,EAAE;gBACL,EAAE,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,IAAI,MAAM,CAAC,EAAE;gBACxD,EAAE,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,IAAI,MAAM,CAAC,EAAE;aACzD;YACD,IAAI,EAAE;gBACJ,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,SAAS;gBACzB,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,UAAU;aAC3B;SACF,CAAC;QACF,iBAAiB,GAAG;YAClB,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,YAAY;SACnB,CAAC;QACF,OAAO,GAAG;YACR,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;SACT,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,UAAU,IAAI,gBAAgB;QACpC,KAAK,EAAE,gBAAgB,CAAC,KAAK;QAC7B,MAAM,EAAE,WAAW;QACnB,YAAY,EAAE,iBAAiB;QAC/B,EAAE,EAAE,OAAO;QACX,MAAM;QACN,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,KAAK,KAAK;KACzB,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,eAAmC;IAEnC,IAAI,CAAC;QACH,4BAA4B;QAC5B,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/F,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,2BAA2B;QAC3B,MAAM,gBAAgB,GAAG,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,CAC3D,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAC5B,CAAC;QAEF,2BAA2B;QAC3B,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACjE,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAChC,CAAC;QAEF,6FAA6F;QAC7F,gEAAgE;QAChE,MAAM,4BAA4B,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAE,CAAS,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC;QAEzG,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAClC,6DAA6D;YAC7D,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAC7D,WAAW,CAAC,IAAI,KAAK,eAAe;gBACpC,WAAW,CAAC,MAAM,IAAI,CACnB,WAAW,CAAC,MAAc,CAAC,iBAAiB;gBAC5C,WAAW,CAAC,MAAc,CAAC,sBAAsB,CACnD,CACF,CAAC;YAEF,IAAI,kBAAkB,EAAE,CAAC;gBACvB,uDAAuD;gBACvD,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACvD,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CACnD,CAAC;gBAEF,IAAI,iBAAiB,EAAE,CAAC;oBACtB,sDAAsD;oBACtD,MAAM,yBAAyB,GAAsB;wBACnD,EAAE,EAAE,kBAAkB,CAAC,GAAG,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;wBACpE,IAAI,EAAE,mBAAmB;wBACzB,KAAK,EAAE,iBAAiB,CAAC,KAAK,GAAG,GAAG,EAAE,wBAAwB;wBAC9D,MAAM,EAAE;4BACN,EAAE,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,IAAI,6BAA6B;4BAC9E,EAAE,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,IAAI,qCAAqC;yBACvF;wBACD,YAAY,EAAE;4BACZ,EAAE,EAAE,8CAA8C;4BAClD,EAAE,EAAE,yDAAyD;yBAC9D;wBACD,EAAE,EAAE;4BACF,UAAU,EAAE,SAAS;4BACrB,UAAU,EAAE;gCACV,EAAE,EAAE,UAAU;gCACd,EAAE,EAAE,WAAW;6BAChB;yBACa;wBAChB,MAAM,EAAE;4BACN,iBAAiB,EAAG,kBAAkB,CAAC,MAAc,CAAC,iBAAiB,IAAI,EAAE;4BAC7E,eAAe,EAAE,EAAE;4BACnB,QAAQ,EAAE,IAAI;yBACW;qBAC5B,CAAC;oBAEF,mEAAmE;oBACnE,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;oBACrE,qBAAqB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,yBAAyB,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC5C,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,WAAW,GAAgB;YAC/B,EAAE,EAAE,kBAAkB,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1C,IAAI,EAAE,eAAe,CAAC,IAAqB;YAC3C,WAAW,EAAE,eAAe,CAAC,WAAW,IAAI;gBAC1C,EAAE,EAAE,EAAE;gBACN,EAAE,EAAE,EAAE;aACP;YACD,OAAO,EAAE,eAAe,CAAC,OAAO,IAAI,OAAO;YAC3C,UAAU,EAAE,qBAAqB;SAClC,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,yBAAyB,eAAe,CAAC,EAAE,OAAO,WAAW,CAAC,EAAE,SAAS,qBAAqB,CAAC,MAAM,aAAa,CAAC,CAAC;QAE/H,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAqB;IAC/D,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import {\n BackendKYCTemplate,\n BackendTemplateComponent,\n KYCTemplate,\n TemplateComponent,\n LocalizedText,\n ComponentUI,\n IDCardConfig,\n LocationConfig,\n SelfieConfig,\n FileUploadConfig,\n CountrySelectionConfig,\n ComponentConfig,\n WelcomeConfig,\n GovernmentDocumentType,\n GovernmentIdConfig,\n} from '../types/KYC.types';\nimport { logger } from './logger';\n\n/**\n * Hash a string to a number (simple hash function)\n */\nfunction hashStringToNumber(str: string): number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return Math.abs(hash);\n}\n\n/**\n * Map backend component types to SDK component types\n */\nconst COMPONENT_TYPE_MAPPING: Record<string, TemplateComponent['type']> = {\n 'welcome': 'welcome',\n 'government-id': 'id_card',\n 'selfie-capture': 'selfie',\n 'location-capture': 'location',\n 'review-submit': 'review_submit',\n 'verification-progress': 'verification_progress',\n 'file-upload': 'file_upload',\n 'country-selection': 'country_selection',\n 'email-verification': 'email_verification',\n 'phone-verification': 'phone_verification',\n 'personal-information': 'personal_information',\n 'additional-documents': 'additional_documents',\n};\n\n/**\n * Transform backend translations to SDK labels and instructions\n */\nfunction transformTranslations(\n translations: BackendTemplateComponent['translations'],\n defaultLanguage: string = 'en'\n): { labels: LocalizedText; instructions: LocalizedText } {\n const labels: LocalizedText = { en: '', fr: '' };\n const instructions: LocalizedText = { en: '', fr: '' };\n\n // Extract title as label\n if (translations.en?.title) labels.en = translations.en.title;\n if (translations.fr?.title) labels.fr = translations.fr.title;\n\n // Extract instructions\n if (translations.en?.instructions) instructions.en = translations.en.instructions;\n if (translations.fr?.instructions) instructions.fr = translations.fr.instructions;\n\n // Fallback to description if instructions not available\n if (!instructions.en && translations.en?.description) {\n instructions.en = translations.en.description;\n }\n if (!instructions.fr && translations.fr?.description) {\n instructions.fr = translations.fr.description;\n }\n\n // Support other languages\n Object.keys(translations).forEach((lang) => {\n if (lang !== 'en' && lang !== 'fr' && translations[lang]) {\n labels[lang] = translations[lang]?.title || '';\n instructions[lang] = translations[lang]?.instructions || translations[lang]?.description || '';\n }\n });\n\n return { labels, instructions };\n}\n\n/**\n * Transform UI configuration\n */\nfunction transformUI(translations: BackendTemplateComponent['translations']): ComponentUI {\n const buttonText: LocalizedText = { en: '', fr: '' };\n\n if (translations.en?.buttonText) buttonText.en = translations.en.buttonText;\n if (translations.fr?.buttonText) buttonText.fr = translations.fr.buttonText;\n\n // Support other languages\n Object.keys(translations).forEach((lang) => {\n if (lang !== 'en' && lang !== 'fr' && translations[lang]?.buttonText) {\n buttonText[lang] = translations[lang]!.buttonText!;\n }\n });\n\n return {\n buttonText,\n themeColor: '#2DBD60', // Default theme color\n };\n}\n\n/**\n * Transform welcome config\n */\nfunction transformWelcomeConfig(config: any): WelcomeConfig {\n return {\n subtitle: config.subtitle,\n buttonText: config.buttonText,\n requirements: config.requirements || [],\n estimatedTime: config.estimatedTime,\n consentOptions: config.consentOptions || {\n showPrivacyPolicy: true,\n showTermsOfService: true,\n showMarketingConsent: false,\n },\n welcomeMessage: config.welcomeMessage,\n showEstimatedTime: config.showEstimatedTime !== false,\n } as WelcomeConfig;\n}\n\n/**\n * Transform government ID config to IDCardConfig\n */\nfunction transformGovernmentIdConfig(config: any): IDCardConfig {\n const documentTypes: string[] = config.documentTypes || ['passport', 'nationalId'];\n const sides: string[] = [];\n\n if (config.requiredSides === 'front-back' || config.requiredSides === 'both') {\n sides.push('front', 'back');\n } else if (config.requiredSides === 'front') {\n sides.push('front');\n } else if (config.requiredSides === 'back') {\n sides.push('back');\n } else {\n // Default to both sides\n sides.push('front', 'back');\n }\n\n const idCardConfig: IDCardConfig = {\n sides,\n allowed_formats: ['jpg', 'jpeg', 'png'],\n max_size_mb: 10,\n document_types: documentTypes.map((dt: string) => {\n const mapping: Record<string, any> = {\n 'passport': 'passport',\n 'nationalId': 'national_id',\n 'driversLicense': 'drivers_licence',\n 'identityCard': 'identity_card',\n };\n return mapping[dt] || dt;\n }) as any[],\n };\n\n // Add bbox configs if available\n if (config.cameraOverlay?.bbox) {\n const bbox = config.cameraOverlay.bbox;\n idCardConfig.bbox_configs = {} as Record<GovernmentDocumentType, {\n xMin: number;\n yMin: number;\n xMax: number;\n yMax: number;\n borderColor?: string;\n borderWidth?: number;\n cornerRadius?: number;\n }>;\n documentTypes.forEach((dt: string) => {\n const docType = dt as GovernmentDocumentType;\n (idCardConfig.bbox_configs as any)[docType] = {\n xMin: bbox.xMin || 20,\n yMin: bbox.yMin || 140,\n xMax: bbox.xMax || 370,\n yMax: bbox.yMax || 340,\n borderColor: bbox.borderColor || '#2DBD60',\n borderWidth: bbox.borderWidth || 3,\n cornerRadius: bbox.cornerRadius || 8,\n };\n });\n }\n\n // Store additional backend-specific config in a way that can be accessed\n (idCardConfig as any).authenticationMethods = config.authenticationMethods;\n (idCardConfig as any).documentTypesByCountry = config.documentTypesByCountry;\n (idCardConfig as any).selectedCountries = config.selectedCountries;\n (idCardConfig as any).instructionsByDocumentType = config.instructionsByDocumentType;\n (idCardConfig as any).cameraSettings = config.cameraSettings;\n (idCardConfig as any).validationRules = config.validationRules;\n\n return idCardConfig;\n}\n\n/**\n * Transform location capture config\n */\nfunction transformLocationConfig(config: any): LocationConfig {\n return {\n accuracy: config.accuracy || 'high',\n required: config.required !== false,\n } as LocationConfig;\n}\n\n/**\n * Transform selfie capture config\n */\nfunction transformSelfieConfig(config: any): SelfieConfig {\n return {\n liveness_check: config.livenessEnabled !== false,\n max_attempts: config.maxAttempts || 5,\n orientations: config.orientations || ['center'],\n } as SelfieConfig;\n}\n\n/**\n * Transform component config based on type\n */\nfunction transformComponentConfig(\n type: TemplateComponent['type'],\n backendConfig: any\n): ComponentConfig {\n switch (type) {\n case 'welcome':\n return transformWelcomeConfig(backendConfig);\n case 'id_card':\n return transformGovernmentIdConfig(backendConfig);\n case 'location':\n return transformLocationConfig(backendConfig);\n case 'selfie':\n return transformSelfieConfig(backendConfig);\n case 'file_upload':\n return {\n allowed_formats: backendConfig.allowed_formats || ['jpg', 'jpeg', 'png', 'pdf'],\n max_size_mb: backendConfig.max_size_mb || 10,\n required: backendConfig.required !== false,\n } as FileUploadConfig;\n case 'country_selection':\n return {\n allowed_countries: backendConfig.allowed_countries || [],\n default_country: backendConfig.default_country || '',\n required: backendConfig.required !== false,\n } as CountrySelectionConfig;\n case 'email_verification':\n return backendConfig as any;\n case 'phone_verification':\n return backendConfig as any;\n case 'personal_information':\n return backendConfig as any;\n case 'additional_documents':\n return backendConfig as any;\n default:\n return backendConfig as ComponentConfig;\n }\n}\n\n/**\n * Transform a single backend component to SDK component\n */\nfunction transformComponent(\n backendComponent: BackendTemplateComponent,\n componentIndex: number\n): TemplateComponent {\n const mappedType = COMPONENT_TYPE_MAPPING[backendComponent.type];\n\n if (!mappedType) {\n logger.warn(`Unknown component type: ${backendComponent.type}, defaulting to initialization`);\n }\n\n const componentId = hashStringToNumber(backendComponent.id);\n const { labels, instructions } = transformTranslations(backendComponent.translations);\n const ui = transformUI(backendComponent.translations);\n const config = transformComponentConfig(mappedType || 'initialization', backendComponent.config);\n\n // For components with multiple sides (like id_card), create nested structure\n let finalLabels: LocalizedText | Record<string, LocalizedText> = labels;\n let finalInstructions: LocalizedText | Record<string, LocalizedText> = instructions;\n let finalUI: ComponentUI | Record<string, ComponentUI> = ui;\n\n if (mappedType === 'id_card' && (backendComponent.config as GovernmentIdConfig).requiredSides === 'front-back') {\n // Create separate labels/instructions for front and back\n finalLabels = {\n front: {\n en: backendComponent.translations.en?.title || labels.en,\n fr: backendComponent.translations.fr?.title || labels.fr,\n },\n back: {\n en: `${labels.en} (Back)`,\n fr: `${labels.fr} (Verso)`,\n },\n };\n finalInstructions = {\n front: instructions,\n back: instructions,\n };\n finalUI = {\n front: ui,\n back: ui,\n };\n }\n\n return {\n id: componentId,\n type: mappedType || 'initialization',\n order: backendComponent.order,\n labels: finalLabels,\n instructions: finalInstructions,\n ui: finalUI,\n config,\n required: backendComponent.required !== false,\n } as TemplateComponent;\n}\n\n/**\n * Transform backend template to SDK template format\n */\nexport function transformBackendTemplateToSDK(\n backendTemplate: BackendKYCTemplate\n): KYCTemplate {\n try {\n // Validate backend template\n if (!backendTemplate.id || !backendTemplate.name || !Array.isArray(backendTemplate.components)) {\n throw new Error('Invalid backend template structure');\n }\n\n // Sort components by order\n const sortedComponents = [...backendTemplate.components].sort(\n (a, b) => a.order - b.order\n );\n\n // Transform each component\n const transformedComponents = sortedComponents.map((comp, index) =>\n transformComponent(comp, index)\n );\n\n // Auto-create country_selection component before id_card if government-id has selection data\n // Check if country_selection already exists in backend template\n const hasCountrySelectionInBackend = sortedComponents.some(c => (c as any).type === 'country-selection');\n\n if (!hasCountrySelectionInBackend) {\n // Find the first government-id component with selection data\n const govIdWithSelection = sortedComponents.find(backendComp =>\n backendComp.type === 'government-id' &&\n backendComp.config && (\n (backendComp.config as any).selectedCountries ||\n (backendComp.config as any).documentTypesByCountry\n )\n );\n\n if (govIdWithSelection) {\n // Find the corresponding transformed id_card component\n const transformedIdCard = transformedComponents.find(c =>\n hashStringToNumber(govIdWithSelection.id) === c.id\n );\n\n if (transformedIdCard) {\n // Create a country_selection component before id_card\n const countrySelectionComponent: TemplateComponent = {\n id: hashStringToNumber(`${govIdWithSelection.id}-country-selection`),\n type: 'country_selection',\n order: transformedIdCard.order - 0.5, // Insert before id_card\n labels: {\n en: govIdWithSelection.translations.en?.title || 'Select Country and Document',\n fr: govIdWithSelection.translations.fr?.title || 'Sélectionnez le pays et le document',\n },\n instructions: {\n en: 'Please select your country and document type',\n fr: 'Veuillez sélectionner votre pays et le type de document',\n },\n ui: {\n themeColor: '#2DBD60',\n buttonText: {\n en: 'Continue',\n fr: 'Continuer',\n },\n } as ComponentUI,\n config: {\n allowed_countries: (govIdWithSelection.config as any).selectedCountries || [],\n default_country: '',\n required: true,\n } as CountrySelectionConfig,\n };\n\n // Insert country_selection before id_card in transformedComponents\n const idCardIndex = transformedComponents.indexOf(transformedIdCard);\n transformedComponents.splice(idCardIndex, 0, countrySelectionComponent);\n }\n }\n }\n\n // Re-assign order values sequentially after insertion\n transformedComponents.forEach((comp, index) => {\n comp.order = index + 1;\n });\n\n // Create SDK template\n const sdkTemplate: KYCTemplate = {\n id: hashStringToNumber(backendTemplate.id),\n name: backendTemplate.name as LocalizedText,\n description: backendTemplate.description || {\n en: '',\n fr: '',\n },\n version: backendTemplate.version || '1.0.0',\n components: transformedComponents,\n };\n\n logger.log(`Template transformed: ${backendTemplate.id} -> ${sdkTemplate.id} with ${transformedComponents.length} components`);\n\n return sdkTemplate;\n } catch (error: any) {\n logger.error('Error transforming template:', error);\n throw new Error(`Failed to transform template: ${error.message}`);\n }\n}\n\n/**\n * Validate transformed template\n */\nexport function validateTransformedTemplate(template: KYCTemplate): boolean {\n if (!template.id || !template.name || !Array.isArray(template.components)) {\n return false;\n }\n\n if (!template.name.en || !template.name.fr) {\n return false;\n }\n\n // Validate each component\n for (const component of template.components) {\n if (!component.id || !component.type || typeof component.order !== 'number') {\n return false;\n }\n\n if (!component.labels || !component.instructions || !component.config) {\n return false;\n }\n }\n\n return true;\n}"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface WebKYCEntryProps {
|
|
3
|
+
onComplete?: (data: any) => void;
|
|
4
|
+
onError?: (error: string) => void;
|
|
5
|
+
onCancel?: () => void;
|
|
6
|
+
}
|
|
7
|
+
declare const WebKYCEntry: React.FC<WebKYCEntryProps>;
|
|
8
|
+
export default WebKYCEntry;
|
|
9
|
+
//# sourceMappingURL=WebKYCEntry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebKYCEntry.d.ts","sourceRoot":"","sources":["../../src/web/WebKYCEntry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAUhE,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AA0BD,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAoR3C,CAAC;AA0DF,eAAe,WAAW,CAAC"}
|