@test-web/react-native-sdk 2.2.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/android/build/.transforms/246c075ea944392e66db7aa639265547/results.bin +1 -0
  2. package/android/build/.transforms/246c075ea944392e66db7aa639265547/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/yourcompany/sdk/BuildConfig.dex +0 -0
  3. package/android/build/.transforms/246c075ea944392e66db7aa639265547/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/yourcompany/sdk/YourSDKModule.dex +0 -0
  4. package/android/build/.transforms/246c075ea944392e66db7aa639265547/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/yourcompany/sdk/YourSDKPackage.dex +0 -0
  5. package/android/build/.transforms/246c075ea944392e66db7aa639265547/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  6. package/android/build/.transforms/952af5a0e7b5b2ac3d48ad66eccefd1f/results.bin +1 -0
  7. package/android/build/.transforms/952af5a0e7b5b2ac3d48ad66eccefd1f/transformed/classes/classes_dex/classes.dex +0 -0
  8. package/android/build/generated/source/buildConfig/debug/com/yourcompany/sdk/BuildConfig.java +10 -0
  9. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +34 -0
  10. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  11. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  12. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  13. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  14. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  15. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  16. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
  17. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  18. package/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +2 -0
  19. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  20. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  21. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/yourcompany/sdk/BuildConfig.class +0 -0
  22. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/yourcompany/sdk/YourSDKModule.class +0 -0
  23. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/yourcompany/sdk/YourSDKPackage.class +0 -0
  24. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +2 -0
  25. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +56 -0
  26. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +34 -0
  27. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  28. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  29. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/yourcompany/sdk/BuildConfig.class +0 -0
  30. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/yourcompany/sdk/YourSDKModule.class +0 -0
  31. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/yourcompany/sdk/YourSDKPackage.class +0 -0
  32. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  33. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +1 -0
  34. package/android/build/outputs/logs/manifest-merger-debug-report.txt +61 -0
  35. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  36. package/package.json +1 -1
  37. package/src/apis/captureBarcode.ts +37 -0
  38. package/src/apis/captureMRZ.ts +39 -0
  39. package/src/apis/checkLiveness.ts +48 -0
  40. package/src/apis/index.ts +26 -75
  41. package/src/components/common/Footer.tsx +19 -22
  42. package/src/components/common/Header.tsx +22 -21
  43. package/src/components/common/Loader.tsx +9 -28
  44. package/src/components/ui/Button.tsx +23 -31
  45. package/src/components/ui/ThemedText.tsx +21 -32
  46. package/src/context/FailedCountContext.tsx +35 -0
  47. package/src/context/IDMConfigurationContext.tsx +12 -2
  48. package/src/context/themes.ts +20 -0
  49. package/src/index.tsx +41 -29
  50. package/src/screens/BackDocumentAdvice.tsx +13 -18
  51. package/src/screens/BarcodeAdvice.tsx +39 -19
  52. package/src/screens/BarcodeCapture.tsx +127 -158
  53. package/src/screens/DocumentCaptureBack.tsx +145 -102
  54. package/src/screens/DocumentCaptureFront.tsx +146 -113
  55. package/src/screens/FrontDocumentAdvice.tsx +13 -18
  56. package/src/screens/LocationPermission.tsx +124 -17
  57. package/src/screens/MrzAdvice.tsx +27 -13
  58. package/src/screens/MrzCapture.tsx +233 -206
  59. package/src/screens/SelectDocuments.tsx +57 -66
  60. package/src/screens/SelfieAdvice.tsx +2 -3
  61. package/src/screens/SelfieCapture.tsx +135 -103
  62. package/src/screens/ThankYou.tsx +25 -31
  63. package/src/screens/VerifyIdentity.tsx +1 -0
  64. package/src/styles/BarcodeAdviceStyles.ts +6 -6
  65. package/src/styles/DocumentCaptureBackStyle.ts +70 -0
  66. package/src/styles/DocumentCaptureFrontStyle.ts +70 -0
  67. package/src/styles/FooterStyles.ts +27 -0
  68. package/src/styles/HeaderStyles.ts +20 -0
  69. package/src/styles/LoaderStyles.ts +14 -0
  70. package/src/styles/ScannerStyles.ts +46 -9
  71. package/src/styles/ThankYouStyles.ts +8 -11
  72. package/src/types/index.ts +8 -0
  73. package/src/utils/MRZ_README.md +111 -0
  74. package/src/utils/imagesHelper.ts +264 -0
  75. package/src/utils/metadata_new.json +11373 -1
  76. package/src/utils/mrzExamples.ts +127 -0
  77. package/src/utils/mrzParser.ts +303 -0
  78. package/src/utils/mrzUtils.ts +70 -0
@@ -0,0 +1 @@
1
+ o/bundleLibRuntimeToDirDebug
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Automatically generated file. DO NOT MODIFY
3
+ */
4
+ package com.yourcompany.sdk;
5
+
6
+ public final class BuildConfig {
7
+ public static final boolean DEBUG = Boolean.parseBoolean("true");
8
+ public static final String LIBRARY_PACKAGE_NAME = "com.yourcompany.sdk";
9
+ public static final String BUILD_TYPE = "debug";
10
+ }
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
+ package="com.yourcompany.sdk" >
4
+
5
+ <uses-sdk android:minSdkVersion="24" />
6
+
7
+ <!-- Camera Permission -->
8
+ <uses-permission android:name="android.permission.CAMERA" />
9
+
10
+ <!-- Location Permissions -->
11
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
12
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
13
+
14
+ <!-- Storage Permissions (for saving captured images) -->
15
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
16
+ <uses-permission
17
+ android:name="android.permission.WRITE_EXTERNAL_STORAGE"
18
+ android:maxSdkVersion="28" />
19
+
20
+ <!-- Internet Permission (for API calls when needed) -->
21
+ <uses-permission android:name="android.permission.INTERNET" />
22
+
23
+ <!-- Camera Features -->
24
+ <uses-feature
25
+ android:name="android.hardware.camera"
26
+ android:required="false" />
27
+ <uses-feature
28
+ android:name="android.hardware.camera.autofocus"
29
+ android:required="false" />
30
+ <uses-feature
31
+ android:name="android.hardware.camera.front"
32
+ android:required="false" />
33
+
34
+ </manifest>
@@ -0,0 +1,18 @@
1
+ {
2
+ "version": 3,
3
+ "artifactType": {
4
+ "type": "AAPT_FRIENDLY_MERGED_MANIFESTS",
5
+ "kind": "Directory"
6
+ },
7
+ "applicationId": "com.yourcompany.sdk",
8
+ "variantName": "debug",
9
+ "elements": [
10
+ {
11
+ "type": "SINGLE",
12
+ "filters": [],
13
+ "attributes": [],
14
+ "outputFile": "AndroidManifest.xml"
15
+ }
16
+ ],
17
+ "elementType": "File"
18
+ }
@@ -0,0 +1,6 @@
1
+ aarFormatVersion=1.0
2
+ aarMetadataVersion=1.0
3
+ minCompileSdk=1
4
+ minCompileSdkExtension=0
5
+ minAndroidGradlePluginVersion=1.0.0
6
+ coreLibraryDesugaringEnabled=false
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\debug\res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\debug\res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\build\generated\res\resValues\debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\build\generated\res\resValues\debug"/></dataSet><mergedItems/></merger>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\assets"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\debug\assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\build\intermediates\shader_assets\debug\compileDebugShaders\out"/></dataSet></merger>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\debug\jniLibs"/></dataSet></merger>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\debug\shaders"/></dataSet></merger>
@@ -0,0 +1,2 @@
1
+ R_DEF: Internal format may change without notice
2
+ local
@@ -0,0 +1,56 @@
1
+ 1<?xml version="1.0" encoding="utf-8"?>
2
+ 2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
+ 3 package="com.yourcompany.sdk" >
4
+ 4
5
+ 5 <uses-sdk android:minSdkVersion="24" />
6
+ 6
7
+ 7 <!-- Camera Permission -->
8
+ 8 <uses-permission android:name="android.permission.CAMERA" />
9
+ 8-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:5:5-65
10
+ 8-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:5:22-62
11
+ 9
12
+ 10 <!-- Location Permissions -->
13
+ 11 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
14
+ 11-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:8:5-79
15
+ 11-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:8:22-76
16
+ 12 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
17
+ 12-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:9:5-81
18
+ 12-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:9:22-78
19
+ 13
20
+ 14 <!-- Storage Permissions (for saving captured images) -->
21
+ 15 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
22
+ 15-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:12:5-80
23
+ 15-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:12:22-77
24
+ 16 <uses-permission
25
+ 16-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:13:5-14:51
26
+ 17 android:name="android.permission.WRITE_EXTERNAL_STORAGE"
27
+ 17-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:13:22-78
28
+ 18 android:maxSdkVersion="28" />
29
+ 18-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:14:22-48
30
+ 19
31
+ 20 <!-- Internet Permission (for API calls when needed) -->
32
+ 21 <uses-permission android:name="android.permission.INTERNET" />
33
+ 21-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:17:5-67
34
+ 21-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:17:22-64
35
+ 22
36
+ 23 <!-- Camera Features -->
37
+ 24 <uses-feature
38
+ 24-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:20:5-85
39
+ 25 android:name="android.hardware.camera"
40
+ 25-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:20:19-57
41
+ 26 android:required="false" />
42
+ 26-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:20:58-82
43
+ 27 <uses-feature
44
+ 27-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:21:5-95
45
+ 28 android:name="android.hardware.camera.autofocus"
46
+ 28-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:21:19-67
47
+ 29 android:required="false" />
48
+ 29-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:21:68-92
49
+ 30 <uses-feature
50
+ 30-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:22:5-91
51
+ 31 android:name="android.hardware.camera.front"
52
+ 31-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:22:19-63
53
+ 32 android:required="false" />
54
+ 32-->G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:22:64-88
55
+ 33
56
+ 34</manifest>
@@ -0,0 +1,34 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
+ package="com.yourcompany.sdk" >
4
+
5
+ <uses-sdk android:minSdkVersion="24" />
6
+
7
+ <!-- Camera Permission -->
8
+ <uses-permission android:name="android.permission.CAMERA" />
9
+
10
+ <!-- Location Permissions -->
11
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
12
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
13
+
14
+ <!-- Storage Permissions (for saving captured images) -->
15
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
16
+ <uses-permission
17
+ android:name="android.permission.WRITE_EXTERNAL_STORAGE"
18
+ android:maxSdkVersion="28" />
19
+
20
+ <!-- Internet Permission (for API calls when needed) -->
21
+ <uses-permission android:name="android.permission.INTERNET" />
22
+
23
+ <!-- Camera Features -->
24
+ <uses-feature
25
+ android:name="android.hardware.camera"
26
+ android:required="false" />
27
+ <uses-feature
28
+ android:name="android.hardware.camera.autofocus"
29
+ android:required="false" />
30
+ <uses-feature
31
+ android:name="android.hardware.camera.front"
32
+ android:required="false" />
33
+
34
+ </manifest>
@@ -0,0 +1,61 @@
1
+ -- Merging decision tree log ---
2
+ manifest
3
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:1:1-24:12
4
+ INJECTED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:1:1-24:12
5
+ package
6
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:2:11-40
7
+ INJECTED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml
8
+ xmlns:android
9
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:1:11-69
10
+ uses-permission#android.permission.CAMERA
11
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:5:5-65
12
+ android:name
13
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:5:22-62
14
+ uses-permission#android.permission.ACCESS_FINE_LOCATION
15
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:8:5-79
16
+ android:name
17
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:8:22-76
18
+ uses-permission#android.permission.ACCESS_COARSE_LOCATION
19
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:9:5-81
20
+ android:name
21
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:9:22-78
22
+ uses-permission#android.permission.READ_EXTERNAL_STORAGE
23
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:12:5-80
24
+ android:name
25
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:12:22-77
26
+ uses-permission#android.permission.WRITE_EXTERNAL_STORAGE
27
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:13:5-14:51
28
+ android:maxSdkVersion
29
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:14:22-48
30
+ android:name
31
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:13:22-78
32
+ uses-permission#android.permission.INTERNET
33
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:17:5-67
34
+ android:name
35
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:17:22-64
36
+ uses-feature#android.hardware.camera
37
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:20:5-85
38
+ android:required
39
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:20:58-82
40
+ android:name
41
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:20:19-57
42
+ uses-feature#android.hardware.camera.autofocus
43
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:21:5-95
44
+ android:required
45
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:21:68-92
46
+ android:name
47
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:21:19-67
48
+ uses-feature#android.hardware.camera.front
49
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:22:5-91
50
+ android:required
51
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:22:64-88
52
+ android:name
53
+ ADDED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml:22:19-63
54
+ uses-sdk
55
+ INJECTED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml reason: use-sdk injection requested
56
+ INJECTED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml
57
+ INJECTED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml
58
+ android:targetSdkVersion
59
+ INJECTED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml
60
+ android:minSdkVersion
61
+ INJECTED from G:\React Naive\Projects\scanApp2\node_modules\@test-web\react-native-sdk\android\src\main\AndroidManifest.xml
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@test-web/react-native-sdk",
3
- "version": "2.2.0",
3
+ "version": "2.4.0",
4
4
  "description": "Dynamic React Native SDK for document verification with API-driven configuration",
5
5
  "main": "src/index.tsx",
6
6
  "types": "src/index.tsx",
@@ -0,0 +1,37 @@
1
+ import { getBaseURL } from '../config/apiConfig';
2
+ import { IDMConf } from '../types/IDMConf';
3
+
4
+ const captureBarcode = async (
5
+ idmConf: IDMConf,
6
+ requestData: {
7
+ token: string;
8
+ text: string;
9
+ }
10
+ ): Promise<any> => {
11
+ try {
12
+ if (!idmConf.accessToken) {
13
+ throw new Error('Access token is missing');
14
+ }
15
+
16
+ const URL = `${getBaseURL(idmConf.environment)}/ocr/base64/barcode/text`;
17
+
18
+ const formData = new FormData();
19
+ formData.append('text', requestData.text);
20
+ formData.append('token', requestData.token);
21
+
22
+ const response = await fetch(URL, {
23
+ method: 'POST',
24
+ headers: {
25
+ Authorization: `Bearer ${idmConf.accessToken}`,
26
+ },
27
+ body: formData,
28
+ });
29
+
30
+ const data = await response.json();
31
+ return data;
32
+ } catch (error: any) {
33
+ throw new Error(`captureBarcode failed: ${error.message}`);
34
+ }
35
+ };
36
+
37
+ export default captureBarcode;
@@ -0,0 +1,39 @@
1
+ import { getBaseURL } from '../config/apiConfig';
2
+ import { IDMConf } from '../types/IDMConf';
3
+
4
+ const captureMRZ = async (
5
+ idmConf: IDMConf,
6
+ requestData: {
7
+ token: string;
8
+ code: string;
9
+ engine: string;
10
+ }
11
+ ): Promise<any> => {
12
+ try {
13
+ if (!idmConf.accessToken) {
14
+ throw new Error('Access token is missing');
15
+ }
16
+
17
+ const URL = `${getBaseURL(idmConf.environment)}/ocr/mrz/text`;
18
+
19
+ const formData = new FormData();
20
+ formData.append('token', requestData.token);
21
+ formData.append('code', requestData.code);
22
+ formData.append('engine', requestData.engine);
23
+
24
+ const response = await fetch(URL, {
25
+ method: 'POST',
26
+ headers: {
27
+ Authorization: `Bearer ${idmConf.accessToken}`,
28
+ },
29
+ body: formData,
30
+ });
31
+
32
+ const data = await response.json();
33
+ return data;
34
+ } catch (error: any) {
35
+ throw new Error(`captureMRZ failed: ${error.message}`);
36
+ }
37
+ };
38
+
39
+ export default captureMRZ;
@@ -0,0 +1,48 @@
1
+ import { getBaseURL } from '../config/apiConfig';
2
+ import { IDMConf } from '../types/IDMConf';
3
+
4
+ const checkLiveness = async (
5
+ idmConf: IDMConf,
6
+ requestData: {
7
+ latitude: string;
8
+ longitude: string;
9
+ token: string;
10
+ file: { uri: string; type: string; name: string };
11
+ }
12
+ ): Promise<any> => {
13
+ try {
14
+ if (!idmConf.accessToken) {
15
+ throw new Error('Access token is missing');
16
+ }
17
+
18
+ const URL = `${getBaseURL(idmConf.environment)}/ocr/liveness`;
19
+
20
+ console.log('idmConf.userDetails.deviceInfo.model', idmConf.userDetails.deviceInfo.model);
21
+ const formData = new FormData();
22
+ formData.append('latitude', requestData.latitude);
23
+ formData.append('longitude', requestData.longitude);
24
+ formData.append('token', requestData.token);
25
+ formData.append('user_agent', idmConf.userDetails.deviceInfo.model);
26
+ formData.append('file', {
27
+ uri: requestData.file.uri,
28
+ type: requestData.file.type,
29
+ name: requestData.file.name,
30
+ } as any);
31
+
32
+ const response = await fetch(URL, {
33
+ method: 'POST',
34
+ headers: {
35
+ Authorization: `Bearer ${idmConf.accessToken}`,
36
+ },
37
+ body: formData,
38
+ });
39
+
40
+ const data = await response.json();
41
+ return data;
42
+ } catch (error: any) {
43
+ console.error('checkLiveness error:', error.message);
44
+ throw new Error(`checkLiveness failed: ${error.message}`);
45
+ }
46
+ };
47
+
48
+ export default checkLiveness;
package/src/apis/index.ts CHANGED
@@ -2,6 +2,12 @@ import { IDMConf } from '../types/IDMConf';
2
2
  import { getBaseURL } from '../config/apiConfig';
3
3
  import { base64Encode } from '../utils/base64';
4
4
  import getUserData from '../services/getUserData';
5
+ import checkLiveness from './checkLiveness';
6
+ import captureBarcode from './captureBarcode';
7
+ import captureMRZ from './captureMRZ';
8
+ import countryMetaData from '../utils/metadata_new.json';
9
+
10
+ export { checkLiveness, captureBarcode, captureMRZ, countryMetaData };
5
11
 
6
12
  /**
7
13
  * Get user data including location, device info, and permissions
@@ -241,81 +247,7 @@ export async function captureDocumentBack(
241
247
  }
242
248
  }
243
249
 
244
- /**
245
- * Capture barcode data
246
- */
247
- export async function captureBarcode(
248
- conf: IDMConf,
249
- requestData: {
250
- token: string;
251
- text: string;
252
- }
253
- ): Promise<any> {
254
- if (!conf.accessToken) {
255
- throw new Error('Access token is missing');
256
- }
257
-
258
- const URL = `${getBaseURL(conf.environment)}/ocr/base64/barcode/text`;
259
-
260
- try {
261
- const formData = new FormData();
262
- formData.append('text', requestData.text);
263
- formData.append('token', requestData.token);
264
-
265
- const response = await fetch(URL, {
266
- method: 'POST',
267
- headers: {
268
- Authorization: `Bearer ${conf.accessToken}`,
269
- },
270
- body: formData,
271
- });
272
-
273
- const data = await response.json();
274
- return data;
275
- } catch (error: any) {
276
- console.error('captureBarcode error:', error);
277
- throw new Error(`captureBarcode failed: ${error.message}`);
278
- }
279
- }
280
-
281
- /**
282
- * Capture MRZ data
283
- */
284
- export async function captureMRZ(
285
- conf: IDMConf,
286
- requestData: {
287
- token: string;
288
- code: string;
289
- engine: string;
290
- }
291
- ): Promise<any> {
292
- if (!conf.accessToken) {
293
- throw new Error('Access token is missing');
294
- }
295
250
 
296
- const URL = `${getBaseURL(conf.environment)}/ocr/mrz/text`;
297
-
298
- try {
299
- const formData = new FormData();
300
- formData.append('token', requestData.token);
301
- formData.append('code', requestData.code);
302
- formData.append('engine', requestData.engine);
303
-
304
- const response = await fetch(URL, {
305
- method: 'POST',
306
- headers: {
307
- Authorization: `Bearer ${conf.accessToken}`,
308
- },
309
- body: formData,
310
- });
311
-
312
- const data = await response.json();
313
- return data;
314
- } catch (error: any) {
315
- console.error('captureMRZ error:', error);
316
- throw new Error(`captureMRZ failed: ${error.message}`);
317
- }
318
- }
319
251
 
320
252
  /**
321
253
  * Complete verification process
@@ -325,6 +257,10 @@ export async function completeVerification(conf: IDMConf): Promise<any> {
325
257
  throw new Error('Access token is missing');
326
258
  }
327
259
 
260
+ if (!conf.verificationCode) {
261
+ throw new Error('Verification code is missing');
262
+ }
263
+
328
264
  const URL = `${getBaseURL(conf.environment)}/verify/complete/${conf.verificationCode}`;
329
265
 
330
266
  try {
@@ -334,10 +270,25 @@ export async function completeVerification(conf: IDMConf): Promise<any> {
334
270
  'Content-Type': 'application/json',
335
271
  Authorization: `Bearer ${conf.accessToken}`,
336
272
  },
273
+ body: JSON.stringify({
274
+ platform: 'sdk',
275
+ }),
337
276
  });
338
277
 
339
278
  if (!response.ok) {
340
279
  const errorBody = await response.text();
280
+ console.warn(
281
+ `completeVerification API returned ${response.status}: ${errorBody}`
282
+ );
283
+
284
+ // Don't throw error for 400 - it might mean verification is already complete or not ready
285
+ if (response.status === 400) {
286
+ return {
287
+ status: 'already_completed_or_not_ready',
288
+ message: errorBody,
289
+ };
290
+ }
291
+
341
292
  throw new Error(
342
293
  `API call failed: ${response.status} ${response.statusText} - ${errorBody}`
343
294
  );
@@ -347,7 +298,7 @@ export async function completeVerification(conf: IDMConf): Promise<any> {
347
298
  return data;
348
299
  } catch (error: any) {
349
300
  console.error('completeVerification error:', error);
350
- throw new Error(`completeVerification failed: ${error.message}`);
301
+ throw error;
351
302
  }
352
303
  }
353
304
 
@@ -1,30 +1,27 @@
1
- import React, { memo } from 'react';
2
- import { View, Text, StyleSheet } from 'react-native';
1
+ import { Image, StyleProp, Text, View, ViewStyle } from 'react-native';
3
2
  import { useTheme } from '../../context/ThemeContext';
3
+ import { useOrientation } from '../../hooks/useOrientation';
4
+ import getStyles from '../../styles/FooterStyles';
4
5
 
5
- function Footer() {
6
+ interface FooterProps {
7
+ style?: StyleProp<ViewStyle>;
8
+ }
9
+
10
+ export default function Footer({ style }: FooterProps) {
6
11
  const { theme } = useTheme();
12
+ const orientation = useOrientation();
13
+ const styles = getStyles(theme, orientation);
7
14
 
8
15
  return (
9
- <View style={[styles.container, { backgroundColor: theme.colors.background }]}>
10
- <Text style={[styles.text, { color: theme.colors.subtitle }]}>
11
- Powered by IDMerit
12
- </Text>
16
+ <View style={[styles.footer, style]}>
17
+ <View style={styles.container}>
18
+ <Text style={styles.text}>Powered by </Text>
19
+ <Image
20
+ source={require('../../../assets/images/logo.png')}
21
+ style={styles.logo}
22
+ resizeMode="contain"
23
+ />
24
+ </View>
13
25
  </View>
14
26
  );
15
27
  }
16
-
17
- const styles = StyleSheet.create({
18
- container: {
19
- height: 50,
20
- justifyContent: 'center',
21
- alignItems: 'center',
22
- borderTopWidth: 1,
23
- borderTopColor: '#e0e0e0',
24
- },
25
- text: {
26
- fontSize: 12,
27
- },
28
- });
29
-
30
- export default memo(Footer);