@microblink/blinkid-react-native 7.2.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 (176) hide show
  1. package/BlinkidReactNative.podspec +31 -0
  2. package/LICENSE +21 -0
  3. package/README.md +409 -0
  4. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  5. package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
  6. package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
  7. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  8. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  9. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  10. package/android/.gradle/8.9/gc.properties +0 -0
  11. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  12. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  13. package/android/.gradle/vcs-1/gc.properties +0 -0
  14. package/android/build.gradle +85 -0
  15. package/android/gradle.properties +5 -0
  16. package/android/src/main/AndroidManifest.xml +2 -0
  17. package/android/src/main/java/com/microblink/blinkid/reactnative/BlinkIdDeserializationUtilities.kt +354 -0
  18. package/android/src/main/java/com/microblink/blinkid/reactnative/BlinkIdSerializationUtilities.kt +661 -0
  19. package/android/src/main/java/com/microblink/blinkid/reactnative/BlinkidReactNativeModule.kt +209 -0
  20. package/android/src/main/java/com/microblink/blinkid/reactnative/BlinkidReactNativePackage.kt +33 -0
  21. package/ios/BlinkIdDeserializationUtilities.swift +345 -0
  22. package/ios/BlinkIdSerializationUtilities.swift +675 -0
  23. package/ios/BlinkidReactNative.h +6 -0
  24. package/ios/BlinkidReactNative.mm +97 -0
  25. package/ios/BlinkidReactNativeModule.swift +138 -0
  26. package/ios/Frameworks/BlinkID.xcframework/Info.plist +44 -0
  27. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/BlinkID +0 -0
  28. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Headers/BlinkID-Swift.h +34696 -0
  29. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Headers/BlinkID.h +19 -0
  30. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Headers/MBSampleBufferWrapper.h +28 -0
  31. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Info.plist +0 -0
  32. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios.abi.json +59963 -0
  33. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios.private.swiftinterface +1630 -0
  34. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  35. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios.swiftinterface +1630 -0
  36. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Modules/module.modulemap +10 -0
  37. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/Modules/module.private.modulemap +12 -0
  38. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/PrivacyInfo.xcprivacy +56 -0
  39. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/PrivateHeaders/SwiftCxxBridge.hpp +16 -0
  40. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/_CodeSignature/CodeResources +245 -0
  41. package/ios/Frameworks/BlinkID.xcframework/ios-arm64/BlinkID.framework/conan.xcconfig +36 -0
  42. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/BlinkID +0 -0
  43. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Headers/BlinkID-Swift.h +69407 -0
  44. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Headers/BlinkID.h +19 -0
  45. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Headers/MBSampleBufferWrapper.h +28 -0
  46. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Info.plist +0 -0
  47. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios-simulator.abi.json +59963 -0
  48. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +1630 -0
  49. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  50. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/arm64-apple-ios-simulator.swiftinterface +1630 -0
  51. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/x86_64-apple-ios-simulator.abi.json +59963 -0
  52. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +1630 -0
  53. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  54. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/BlinkID.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +1630 -0
  55. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/module.modulemap +10 -0
  56. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/Modules/module.private.modulemap +12 -0
  57. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/PrivacyInfo.xcprivacy +56 -0
  58. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/PrivateHeaders/SwiftCxxBridge.hpp +16 -0
  59. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/_CodeSignature/CodeResources +300 -0
  60. package/ios/Frameworks/BlinkID.xcframework/ios-arm64_x86_64-simulator/BlinkID.framework/conan.xcconfig +36 -0
  61. package/ios/Frameworks/BlinkIDUX.xcframework/Info.plist +44 -0
  62. package/ios/Frameworks/BlinkIDUX.xcframework/_CodeSignature/CodeDirectory +0 -0
  63. package/ios/Frameworks/BlinkIDUX.xcframework/_CodeSignature/CodeRequirements +0 -0
  64. package/ios/Frameworks/BlinkIDUX.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
  65. package/ios/Frameworks/BlinkIDUX.xcframework/_CodeSignature/CodeResources +1575 -0
  66. package/ios/Frameworks/BlinkIDUX.xcframework/_CodeSignature/CodeSignature +0 -0
  67. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX +0 -0
  68. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/Assets.car +0 -0
  69. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/Info.plist +0 -0
  70. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/PrivacyInfo.xcprivacy +56 -0
  71. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/ar.lproj/Localizable.strings +0 -0
  72. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/cs.lproj/Localizable.strings +0 -0
  73. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/de.lproj/Localizable.strings +0 -0
  74. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/en.lproj/Localizable.strings +0 -0
  75. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/es.lproj/Localizable.strings +0 -0
  76. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/fil.lproj/Localizable.strings +0 -0
  77. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/fr.lproj/Localizable.strings +0 -0
  78. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/he.lproj/Localizable.strings +0 -0
  79. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/hr.lproj/Localizable.strings +0 -0
  80. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/hu.lproj/Localizable.strings +0 -0
  81. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/id.lproj/Localizable.strings +0 -0
  82. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/it.lproj/Localizable.strings +0 -0
  83. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/ms.lproj/Localizable.strings +0 -0
  84. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/nl.lproj/Localizable.strings +0 -0
  85. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/pt.lproj/Localizable.strings +0 -0
  86. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/ro.lproj/Localizable.strings +0 -0
  87. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/sk.lproj/Localizable.strings +0 -0
  88. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/sl.lproj/Localizable.strings +0 -0
  89. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/sr.lproj/Localizable.strings +0 -0
  90. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/th.lproj/Localizable.strings +0 -0
  91. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/vi.lproj/Localizable.strings +0 -0
  92. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/zh-Hans.lproj/Localizable.strings +0 -0
  93. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/zh-Hant.lproj/Localizable.strings +0 -0
  94. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Info.plist +0 -0
  95. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios.abi.json +15405 -0
  96. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios.package.swiftinterface +563 -0
  97. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios.private.swiftinterface +563 -0
  98. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  99. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios.swiftinterface +563 -0
  100. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX +0 -0
  101. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/Assets.car +0 -0
  102. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/Info.plist +0 -0
  103. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/PrivacyInfo.xcprivacy +56 -0
  104. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/_CodeSignature/CodeDirectory +0 -0
  105. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/_CodeSignature/CodeRequirements +0 -0
  106. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/_CodeSignature/CodeRequirements-1 +0 -0
  107. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/_CodeSignature/CodeResources +634 -0
  108. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/_CodeSignature/CodeSignature +0 -0
  109. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/ar.lproj/Localizable.strings +0 -0
  110. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/cs.lproj/Localizable.strings +0 -0
  111. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/de.lproj/Localizable.strings +0 -0
  112. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/en.lproj/Localizable.strings +0 -0
  113. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/es.lproj/Localizable.strings +0 -0
  114. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/fil.lproj/Localizable.strings +0 -0
  115. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/fr.lproj/Localizable.strings +0 -0
  116. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/he.lproj/Localizable.strings +0 -0
  117. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/hr.lproj/Localizable.strings +0 -0
  118. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/hu.lproj/Localizable.strings +0 -0
  119. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/id.lproj/Localizable.strings +0 -0
  120. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/it.lproj/Localizable.strings +0 -0
  121. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/ms.lproj/Localizable.strings +0 -0
  122. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/nl.lproj/Localizable.strings +0 -0
  123. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/pt.lproj/Localizable.strings +0 -0
  124. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/ro.lproj/Localizable.strings +0 -0
  125. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/sk.lproj/Localizable.strings +0 -0
  126. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/sl.lproj/Localizable.strings +0 -0
  127. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/sr.lproj/Localizable.strings +0 -0
  128. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/th.lproj/Localizable.strings +0 -0
  129. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/vi.lproj/Localizable.strings +0 -0
  130. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/zh-Hans.lproj/Localizable.strings +0 -0
  131. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/BlinkIDUX_BlinkIDUX.bundle/zh-Hant.lproj/Localizable.strings +0 -0
  132. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Info.plist +0 -0
  133. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios-simulator.abi.json +15405 -0
  134. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios-simulator.package.swiftinterface +563 -0
  135. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +563 -0
  136. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  137. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/arm64-apple-ios-simulator.swiftinterface +563 -0
  138. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/x86_64-apple-ios-simulator.abi.json +15405 -0
  139. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/x86_64-apple-ios-simulator.package.swiftinterface +563 -0
  140. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +563 -0
  141. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  142. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/Modules/BlinkIDUX.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +563 -0
  143. package/ios/Frameworks/BlinkIDUX.xcframework/ios-arm64_x86_64-simulator/BlinkIDUX.framework/_CodeSignature/CodeResources +101 -0
  144. package/lib/module/NativeBlinkidReactNative.js +15 -0
  145. package/lib/module/NativeBlinkidReactNative.js.map +1 -0
  146. package/lib/module/blinkIdResult.js +612 -0
  147. package/lib/module/blinkIdResult.js.map +1 -0
  148. package/lib/module/blinkIdSettings.js +465 -0
  149. package/lib/module/blinkIdSettings.js.map +1 -0
  150. package/lib/module/blinkIdUtilities.js +21 -0
  151. package/lib/module/blinkIdUtilities.js.map +1 -0
  152. package/lib/module/index.js +63 -0
  153. package/lib/module/index.js.map +1 -0
  154. package/lib/module/package.json +1 -0
  155. package/lib/module/types.js +3375 -0
  156. package/lib/module/types.js.map +1 -0
  157. package/lib/typescript/package.json +1 -0
  158. package/lib/typescript/src/NativeBlinkidReactNative.d.ts +43 -0
  159. package/lib/typescript/src/NativeBlinkidReactNative.d.ts.map +1 -0
  160. package/lib/typescript/src/blinkIdResult.d.ts +294 -0
  161. package/lib/typescript/src/blinkIdResult.d.ts.map +1 -0
  162. package/lib/typescript/src/blinkIdSettings.d.ts +416 -0
  163. package/lib/typescript/src/blinkIdSettings.d.ts.map +1 -0
  164. package/lib/typescript/src/blinkIdUtilities.d.ts +8 -0
  165. package/lib/typescript/src/blinkIdUtilities.d.ts.map +1 -0
  166. package/lib/typescript/src/index.d.ts +52 -0
  167. package/lib/typescript/src/index.d.ts.map +1 -0
  168. package/lib/typescript/src/types.d.ts +3025 -0
  169. package/lib/typescript/src/types.d.ts.map +1 -0
  170. package/package.json +110 -0
  171. package/src/NativeBlinkidReactNative.ts +45 -0
  172. package/src/blinkIdResult.ts +711 -0
  173. package/src/blinkIdSettings.ts +515 -0
  174. package/src/blinkIdUtilities.ts +20 -0
  175. package/src/index.tsx +72 -0
  176. package/src/types.ts +4334 -0
@@ -0,0 +1,209 @@
1
+ package com.microblink.blinkid.reactnative
2
+
3
+ import android.app.Activity
4
+ import android.content.Intent
5
+ import com.facebook.react.bridge.BaseActivityEventListener
6
+ import com.facebook.react.bridge.Promise
7
+ import com.facebook.react.bridge.ReactApplicationContext
8
+ import com.facebook.react.module.annotations.ReactModule
9
+ import com.microblink.blinkid.core.BlinkIdSdk
10
+ import com.microblink.blinkid.core.session.BlinkIdProcessResult
11
+ import com.microblink.blinkid.ux.contract.BlinkIdScanActivityResultStatus
12
+ import com.microblink.blinkid.ux.contract.BlinkIdScanActivitySettings
13
+ import com.microblink.blinkid.ux.contract.MbBlinkIdScan
14
+ import com.microblink.core.LicenseLockedException
15
+ import com.microblink.core.image.InputImage
16
+ import com.microblink.ux.UiSettings
17
+ import kotlinx.coroutines.CoroutineScope
18
+ import kotlinx.coroutines.Dispatchers
19
+ import kotlinx.coroutines.launch
20
+ import kotlinx.coroutines.withContext
21
+ import org.json.JSONObject
22
+
23
+ @ReactModule(name = BlinkidReactNativeModule.NAME)
24
+ class BlinkidReactNativeModule(reactContext: ReactApplicationContext) :
25
+ NativeBlinkidReactNativeSpec(reactContext) {
26
+ private val BLINKID_REQUEST_CODE = 1453
27
+ private val BLINKID_ERROR_RESULT_CODE = "BlinkIdAndroid"
28
+
29
+ var pendingPromise: Promise? = null
30
+
31
+ override fun getName(): String {
32
+ return NAME
33
+ }
34
+
35
+ init {
36
+ reactApplicationContext.addActivityEventListener(object : BaseActivityEventListener() {
37
+ override fun onActivityResult(
38
+ activity: Activity?,
39
+ requestCode: Int,
40
+ resultCode: Int,
41
+ data: Intent?
42
+ ) {
43
+ if (requestCode == BLINKID_REQUEST_CODE) {
44
+
45
+ val blinkIdResult = MbBlinkIdScan().parseResult(resultCode, data)
46
+ when (blinkIdResult.status) {
47
+ BlinkIdScanActivityResultStatus.DocumentScanned -> {
48
+ blinkIdResult.result?.let { scanningResult ->
49
+ val success = BlinkIdSerializationUtilities.serializeBlinkIdScanningResult(
50
+ scanningResult
51
+ )
52
+ pendingPromise?.resolve(success)
53
+
54
+ } ?: pendingPromise?.reject(BLINKID_ERROR_RESULT_CODE, "BlinkID result is empty.")
55
+ }
56
+
57
+ BlinkIdScanActivityResultStatus.Canceled -> {
58
+ pendingPromise?.reject(BLINKID_ERROR_RESULT_CODE, "Scanning is canceled.")
59
+ }
60
+
61
+ BlinkIdScanActivityResultStatus.ErrorSdkInit -> {
62
+ pendingPromise?.reject(
63
+ BLINKID_ERROR_RESULT_CODE,
64
+ "Could not initialize the SDK."
65
+ )
66
+ }
67
+ }
68
+ }
69
+ }
70
+ })
71
+ }
72
+
73
+ override fun performScan(
74
+ blinkIdSdkSettings: String?,
75
+ blinkIdSessionSettings: String?,
76
+ blinkIdUiSettings: String?,
77
+ classFilter: String?,
78
+ promise: Promise?
79
+ ) {
80
+ pendingPromise = promise
81
+
82
+ try {
83
+ val sdkSettingsJson = blinkIdSdkSettings?.let { JSONObject(it) }
84
+ val sessionSettingsJson = blinkIdSessionSettings?.let { JSONObject(it) }
85
+ val classFilterJson = classFilter?.let { JSONObject(it) }
86
+ val blinkIdUiSettingsJson = blinkIdUiSettings?.let { JSONObject(it) }
87
+ val sdkSettings = sdkSettingsJson?.let {
88
+ BlinkIdDeserializationUtilities.deserializeBlinkIdSdkSettings(it)
89
+ } ?: run {
90
+ pendingPromise?.reject(BLINKID_ERROR_RESULT_CODE, "Invalid SDK settings.")
91
+ return
92
+ }
93
+
94
+ currentActivity?.applicationContext?.let {
95
+ val intent = MbBlinkIdScan().createIntent(
96
+ it,
97
+ BlinkIdScanActivitySettings(
98
+ sdkSettings = sdkSettings,
99
+ scanningSessionSettings = BlinkIdDeserializationUtilities.deserializeBlinkIdSessionSettings(
100
+ sessionSettingsJson,
101
+ false
102
+ ),
103
+ uxSettings = BlinkIdDeserializationUtilities.deserializeBlinkIdUxSettings(
104
+ sessionSettingsJson,
105
+ classFilterJson,
106
+ ),
107
+ showHelpButton = blinkIdUiSettingsJson?.optBoolean("showHelpButton", true)?: true,
108
+ showOnboardingDialog = blinkIdUiSettingsJson?.optBoolean("showOnboardingDialog", true) ?: true
109
+ )
110
+ )
111
+ currentActivity?.startActivityForResult(intent, BLINKID_REQUEST_CODE, null)
112
+ } ?: pendingPromise?.reject(BLINKID_ERROR_RESULT_CODE, "Activity not found.")
113
+ } catch (error: Exception) {
114
+ when (error) {
115
+ is LicenseLockedException -> {
116
+ pendingPromise?.reject(BLINKID_ERROR_RESULT_CODE, error.message)
117
+ }
118
+
119
+ else -> {
120
+ pendingPromise?.reject(BLINKID_ERROR_RESULT_CODE, error.message)
121
+ }
122
+ }
123
+ }
124
+ }
125
+
126
+ override fun performDirectApiScan(
127
+ blinkIdSdkSettings: String?,
128
+ blinkIdSessionSettings: String?,
129
+ firstImage: String?,
130
+ secondImage: String?,
131
+ promise: Promise?
132
+ ) {
133
+ CoroutineScope(Dispatchers.Default).launch {
134
+ try {
135
+ val sdkSettingsJson = blinkIdSdkSettings?.let { JSONObject(it) }
136
+ val sessionSettingsJson = blinkIdSessionSettings?.let { JSONObject(it) }
137
+
138
+ val sdkSettings =
139
+ BlinkIdDeserializationUtilities.deserializeBlinkIdSdkSettings(sdkSettingsJson)
140
+ ?: return@launch withContext(Dispatchers.Main) {
141
+ promise?.reject(BLINKID_ERROR_RESULT_CODE, "Invalid SDK settings")
142
+ }
143
+
144
+ val context = currentActivity?.applicationContext
145
+ ?: return@launch withContext(Dispatchers.Main) {
146
+ promise?.reject(BLINKID_ERROR_RESULT_CODE, "No activity")
147
+ }
148
+
149
+ val sdkInit = BlinkIdSdk.initializeSdk(context, sdkSettings)
150
+ when {
151
+ sdkInit.isSuccess -> {
152
+ val instance = sdkInit.getOrNull() ?: return@launch withContext(Dispatchers.Main) {
153
+ promise?.reject(BLINKID_ERROR_RESULT_CODE, "SDK returned null instance")
154
+ }
155
+
156
+ val session = instance.createScanningSession(
157
+ BlinkIdDeserializationUtilities.deserializeBlinkIdSessionSettings(
158
+ sessionSettingsJson,
159
+ true
160
+ )
161
+ )
162
+
163
+ val inputImages = listOfNotNull(
164
+ firstImage?.let { BlinkIdDeserializationUtilities.base64ToBitmap(it) },
165
+ secondImage?.let { BlinkIdDeserializationUtilities.base64ToBitmap(it) }
166
+ )
167
+
168
+ var result: Result<BlinkIdProcessResult>? = null
169
+
170
+ for (img in inputImages) {
171
+ result = session.process(InputImage.createFromBitmap(img))
172
+ }
173
+
174
+ if (result?.isSuccess == true) {
175
+ val scanResult = session.getResult()
176
+ val resultJson =
177
+ BlinkIdSerializationUtilities.serializeBlinkIdScanningResult(scanResult)
178
+
179
+ withContext(Dispatchers.Main) {
180
+ promise?.resolve(resultJson.toString())
181
+ }
182
+ } else {
183
+ withContext(Dispatchers.Main) {
184
+ promise?.reject(BLINKID_ERROR_RESULT_CODE, "Could not get the results.")
185
+ }
186
+ }
187
+
188
+ instance.close()
189
+ }
190
+
191
+ sdkInit.isFailure -> {
192
+ return@launch withContext(Dispatchers.Main) {
193
+ promise?.reject(BLINKID_ERROR_RESULT_CODE, sdkInit.exceptionOrNull()?.message)
194
+ }
195
+ }
196
+ }
197
+
198
+ } catch (e: Exception) {
199
+ withContext(Dispatchers.Main) {
200
+ promise?.reject(BLINKID_ERROR_RESULT_CODE, e.message)
201
+ }
202
+ }
203
+ }
204
+ }
205
+
206
+ companion object {
207
+ const val NAME = "BlinkidReactNative"
208
+ }
209
+ }
@@ -0,0 +1,33 @@
1
+ package com.microblink.blinkid.reactnative
2
+
3
+ import com.facebook.react.BaseReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.module.model.ReactModuleInfo
7
+ import com.facebook.react.module.model.ReactModuleInfoProvider
8
+ import java.util.HashMap
9
+
10
+ class BlinkidReactNativePackage : BaseReactPackage() {
11
+ override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
12
+ return if (name == BlinkidReactNativeModule.NAME) {
13
+ BlinkidReactNativeModule(reactContext)
14
+ } else {
15
+ null
16
+ }
17
+ }
18
+
19
+ override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
20
+ return ReactModuleInfoProvider {
21
+ val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
22
+ moduleInfos[BlinkidReactNativeModule.NAME] = ReactModuleInfo(
23
+ BlinkidReactNativeModule.NAME,
24
+ BlinkidReactNativeModule.NAME,
25
+ false, // canOverrideExistingModule
26
+ false, // needsEagerInit
27
+ false, // isCxxModule
28
+ true // isTurboModule
29
+ )
30
+ moduleInfos
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,345 @@
1
+ //
2
+ // BlinkIdDeserializationUtilities.swift
3
+ // BlinkidReactNative
4
+ //
5
+ // Created by Milan Parađina on 22.05.2025..
6
+ //
7
+
8
+ import Foundation
9
+ import BlinkID
10
+
11
+ class BlinkIdDeserializationUtilities {
12
+ static func deserializeBlinkIdSdkSettings(_ sdkSettingsDict: Dictionary<String, Any>?) -> BlinkIDSdkSettings? {
13
+ var blinkidSdkSettings: BlinkIDSdkSettings?
14
+
15
+ if let licenseKey = sdkSettingsDict?["licenseKey"] as? String {
16
+ blinkidSdkSettings = BlinkIDSdkSettings(licenseKey: licenseKey)
17
+ }
18
+ if let licensee = sdkSettingsDict?["licensee"] as? String {
19
+ blinkidSdkSettings?.licensee = licensee
20
+ }
21
+ if let helloLogEnabled = sdkSettingsDict?["helloLogEnabled"] as? Bool {
22
+ blinkidSdkSettings?.helloLogEnabled = helloLogEnabled
23
+ }
24
+ if let downloadResources = sdkSettingsDict?["downloadResources"] as? Bool {
25
+ blinkidSdkSettings?.downloadResources = downloadResources
26
+ }
27
+ if let resourceDownloadUrl = sdkSettingsDict?["resourceDownloadUrl"] as? String {
28
+ blinkidSdkSettings?.resourceDownloadUrl = resourceDownloadUrl
29
+ }
30
+ if let resourceLocalFolder = sdkSettingsDict?["resourceLocalFolder"] as? String {
31
+ blinkidSdkSettings?.resourceLocalFolder = resourceLocalFolder
32
+ }
33
+ if let bundleURL = sdkSettingsDict?["bundleURL"] as? String,
34
+ let url = URL(string: bundleURL) {
35
+ blinkidSdkSettings?.bundleURL = url
36
+ }
37
+ if let resourceRequestTimeout = sdkSettingsDict?["resourceRequestTimeout"] as? Int {
38
+ blinkidSdkSettings?.resourceRequestTimeout = BlinkID.RequestTimeout.default
39
+ }
40
+ return blinkidSdkSettings
41
+ }
42
+
43
+ static func deserializeBlinkIdSessionSettings(_ sessionSettingsDict: Dictionary<String, Any>?) -> BlinkIDSessionSettings {
44
+ var blinkidSessionSettings = BlinkIDSessionSettings()
45
+
46
+ if let scanningSettings = sessionSettingsDict?["scanningSettings"] as? Dictionary<String, Any> {
47
+ blinkidSessionSettings.scanningSettings = deserializeBlinkIdScanningSettings(scanningSettings)
48
+ }
49
+
50
+ if let scanningMode = sessionSettingsDict?["scanningMode"] as? Int {
51
+ blinkidSessionSettings.scanningMode = deseralizeScanningMode(scanningMode)
52
+ }
53
+
54
+ if let stepTimeoutDuration = sessionSettingsDict?["stepTimeoutDuration"] as? Int {
55
+ blinkidSessionSettings.stepTimeoutDuration = Double(stepTimeoutDuration) / 1000.0
56
+ }
57
+
58
+ return blinkidSessionSettings
59
+ }
60
+
61
+ static func deserializeBlinkIdScanningSettings(_ scanningSettingsDict: Dictionary<String, Any>?) -> ScanningSettings {
62
+ var scanningSettings = ScanningSettings()
63
+
64
+ if let blurDetectionLevel = scanningSettingsDict?["blurDetectionLevel"] as? Int {
65
+
66
+ scanningSettings.blurDetectionLevel = deseralizeDetectionLevel(blurDetectionLevel)
67
+ }
68
+ if let skipImagesWithBlur = scanningSettingsDict?["skipImagesWithBlur"] as? Bool {
69
+ scanningSettings.skipImagesWithBlur = skipImagesWithBlur
70
+ }
71
+ if let glareDetectionLevel = scanningSettingsDict?["glareDetectionLevel"] as? Int {
72
+ scanningSettings.glareDetectionLevel = deseralizeDetectionLevel(glareDetectionLevel)
73
+ }
74
+ if let skipImagesWithGlare = scanningSettingsDict?["skipImagesWithGlare"] as? Bool {
75
+ scanningSettings.skipImagesWithGlare = skipImagesWithGlare
76
+ }
77
+ if let tiltDetectionLevel = scanningSettingsDict?["tiltDetectionLevel"] as? Int {
78
+ scanningSettings.tiltDetectionLevel = deseralizeDetectionLevel(tiltDetectionLevel)
79
+ }
80
+ if let skipImagesWithInadequateLightingConditions = scanningSettingsDict?["skipImagesWithInadequateLightingConditions"] as? Bool {
81
+ scanningSettings.skipImagesWithInadequateLightingConditions = skipImagesWithInadequateLightingConditions
82
+ }
83
+ if let skipImagesOccludedByHand = scanningSettingsDict?["skipImagesOccludedByHand"] as? Bool {
84
+ scanningSettings.skipImagesOccludedByHand = skipImagesOccludedByHand
85
+ }
86
+ if let combineResultsFromMultipleInputImages = scanningSettingsDict?["combineResultsFromMultipleInputImages"] as? Bool {
87
+ scanningSettings.combineResultsFromMultipleInputImages = combineResultsFromMultipleInputImages
88
+ }
89
+ if let enableBarcodeScanOnly = scanningSettingsDict?["enableBarcodeScanOnly"] as? Bool {
90
+ scanningSettings.enableBarcodeScanOnly = enableBarcodeScanOnly
91
+ }
92
+
93
+ if let customDocumentRules = scanningSettingsDict?["customDocumentRules"] as? Array<Dictionary<String, Any>> {
94
+ scanningSettings.customDocumentRules = deserializeCustomDocumentRules(customDocumentRules)
95
+ }
96
+
97
+ if let anonymizationMode = scanningSettingsDict?["anonymizationMode"] as? String,
98
+ let value = AnonymizationMode(rawValue: anonymizationMode) {
99
+ scanningSettings.anonymizationMode = value
100
+ }
101
+
102
+ if let customDocumentAnonymizationSettings = scanningSettingsDict?["customDocumentAnonymizationSettings"] as? Array<Dictionary<String, Any>> {
103
+ scanningSettings.customDocumentAnonymizationSettings = deserializeCustomDocumentAnonymizationSettings(customDocumentAnonymizationSettings)
104
+ }
105
+ if let returnInputImages = scanningSettingsDict?["returnInputImages"] as? Bool {
106
+ scanningSettings.returnInputImages = returnInputImages
107
+ }
108
+ if let scanCroppedDocumentImage = scanningSettingsDict?["scanCroppedDocumentImage"] as? Bool {
109
+ scanningSettings.scanCroppedDocumentImage = scanCroppedDocumentImage
110
+ }
111
+ if let recognitionModeFilter = scanningSettingsDict?["recognitionModeFilter"] as? Dictionary<String, Any> {
112
+ scanningSettings.recognitionModeFilter = deserializeRecognitionModeFilter(recognitionModeFilter)
113
+ }
114
+ if let inputImageMargin = scanningSettingsDict?["inputImageMargin"] as? Double {
115
+ scanningSettings.inputImageMargin = Float(inputImageMargin)
116
+ }
117
+ if let scanUnsupportedBack = scanningSettingsDict?["scanUnsupportedBack"] as? Bool {
118
+ scanningSettings.scanUnsupportedBack = scanUnsupportedBack
119
+ }
120
+ if let allowUncertainFrontSideScan = scanningSettingsDict?["allowUncertainFrontSideScan"] as? Bool {
121
+ scanningSettings.allowUncertainFrontSideScan = allowUncertainFrontSideScan
122
+ }
123
+ if let maxAllowedMismatchesPerField = scanningSettingsDict?["maxAllowedMismatchesPerField"] as? Int {
124
+ scanningSettings.maxAllowedMismatchesPerField = maxAllowedMismatchesPerField
125
+ }
126
+ if let scanPassportDataPageOnly = scanningSettingsDict?["scanPassportDataPageOnly"] as? Bool {
127
+ scanningSettings.scanPassportDataPageOnly = scanPassportDataPageOnly
128
+ }
129
+ if let croppedImageSettings = scanningSettingsDict?["croppedImageSettings"] as? Dictionary<String, Any> {
130
+ scanningSettings.croppedImageSettings = deserializeBlinkIdCroppedImageSettings(croppedImageSettings)
131
+ }
132
+
133
+ return scanningSettings
134
+ }
135
+
136
+ static func deserializeBlinkIdCroppedImageSettings(_ croppedImageSettingsDict: Dictionary<String, Any>) -> CroppedImageSettings {
137
+ var croppedImageSettings = CroppedImageSettings()
138
+
139
+ if let dotsPerInch = croppedImageSettingsDict["dotsPerInch"] as? Int {
140
+ croppedImageSettings.dotsPerInch = dotsPerInch
141
+ }
142
+ if let extensionFactor = croppedImageSettingsDict["extensionFactor"] as? Double {
143
+ croppedImageSettings.extensionFactor = Float(extensionFactor)
144
+ }
145
+ if let returnDocumentImage = croppedImageSettingsDict["returnDocumentImage"] as? Bool {
146
+ croppedImageSettings.returnDocumentImage = returnDocumentImage
147
+ }
148
+ if let returnFaceImage = croppedImageSettingsDict["returnFaceImage"] as? Bool {
149
+ croppedImageSettings.returnFaceImage = returnFaceImage
150
+ }
151
+ if let returnSignatureImage = croppedImageSettingsDict["returnSignatureImage"] as? Bool {
152
+ croppedImageSettings.returnSignatureImage = returnSignatureImage
153
+ }
154
+
155
+ return croppedImageSettings
156
+ }
157
+
158
+ static func deserializeRecognitionModeFilter(_ recognitionModeFilterDict: Dictionary<String, Any>) -> RecognitionModeFilter {
159
+ var recognitionModeFilter = RecognitionModeFilter()
160
+
161
+ if let enableMrzId = recognitionModeFilterDict["enableMrzId"] as? Bool {
162
+ recognitionModeFilter.enableMrzId = enableMrzId
163
+ }
164
+ if let enableMrzVisa = recognitionModeFilterDict["enableMrzVisa"] as? Bool {
165
+ recognitionModeFilter.enableMrzVisa = enableMrzVisa
166
+ }
167
+ if let enableMrzPassport = recognitionModeFilterDict["enableMrzPassport"] as? Bool {
168
+ recognitionModeFilter.enableMrzPassport = enableMrzPassport
169
+ }
170
+ if let enablePhotoId = recognitionModeFilterDict["enablePhotoId"] as? Bool {
171
+ recognitionModeFilter.enablePhotoId = enablePhotoId
172
+ }
173
+ if let enableBarcodeId = recognitionModeFilterDict["enableBarcodeId"] as? Bool {
174
+ recognitionModeFilter.enableBarcodeId = enableBarcodeId
175
+ }
176
+ if let enableFullDocumentRecognition = recognitionModeFilterDict["enableFullDocumentRecognition"] as? Bool {
177
+ recognitionModeFilter.enableFullDocumentRecognition = enableFullDocumentRecognition
178
+ }
179
+ return recognitionModeFilter
180
+ }
181
+
182
+ static func deserializeCustomDocumentRules(_ customDocumentRulesArray: [[String: Any]]) -> [DocumentRules] {
183
+ var documentRulesArr = Array<DocumentRules>()
184
+
185
+ for customRuleDict in customDocumentRulesArray {
186
+ guard let fields = customRuleDict["fields"] as? Array<Dictionary<String, Any>> else { continue }
187
+
188
+ let deserializedFields = fields.compactMap { deserializeDetailedFieldType($0) }
189
+ var documentRule = DocumentRules(fields: deserializedFields)
190
+
191
+ if let documentFilter = customRuleDict["documentFilter"] as? [String: Any] {
192
+ documentRule.documentFilter = deserializeDocumentFilter(documentFilter)
193
+ }
194
+
195
+ documentRulesArr.append(documentRule)
196
+ }
197
+
198
+ return documentRulesArr
199
+ }
200
+
201
+ static func deserializeDocumentFilter(_ documentFilterDict: Dictionary<String, Any>) -> DocumentFilter {
202
+ var documentFilter = DocumentFilter()
203
+
204
+ if let country = documentFilterDict["country"] as? String {
205
+ documentFilter.country = Country(rawValue: country)
206
+ }
207
+
208
+ if let region = documentFilterDict["region"] as? String {
209
+ documentFilter.region = Region(rawValue: region)
210
+ }
211
+
212
+ if let documentType = documentFilterDict["documentType"] as? String {
213
+ documentFilter.documentType = DocumentType(rawValue: documentType)
214
+ }
215
+ return documentFilter
216
+ }
217
+
218
+ static func deserializeDetailedFieldType(_ detailedFieldTypeDict: Dictionary<String, Any>?) -> DetailedFieldType? {
219
+ if let fieldType = detailedFieldTypeDict?["fieldType"] as? String,
220
+ let alphabetType = detailedFieldTypeDict?["alphabetType"] as? String,
221
+ let fieldTypeValue = FieldType.init(rawValue: fieldType),
222
+ let alphabetTypeValue = AlphabetType(rawValue: alphabetType) {
223
+ return DetailedFieldType(
224
+ fieldType: fieldTypeValue,
225
+ alphabetType: alphabetTypeValue)
226
+ }
227
+ return nil
228
+ }
229
+
230
+ static func deserializeCustomDocumentAnonymizationSettings(_ customAnonymizationArray: Array<Dictionary<String, Any>>) -> [DocumentAnonymizationSettings] {
231
+ var documentAnonymizationSettingsArray = Array<DocumentAnonymizationSettings>()
232
+
233
+ for customAnonymizationDict in customAnonymizationArray {
234
+ guard let fields = customAnonymizationDict["fields"] as? Array<String> else { continue }
235
+ var documentAnonymizationSettings = DocumentAnonymizationSettings(fields: deserializeFieldType(fields))
236
+
237
+ if let documentFilter = customAnonymizationDict["documentFilter"] as? Dictionary<String, Any> {
238
+ documentAnonymizationSettings.documentFilter = deserializeDocumentFilter(documentFilter)
239
+ }
240
+
241
+ if let documentNumberAnonymizationSettings = customAnonymizationDict["documentNumberAnonymizationSettings"] as? Dictionary<String, Any> {
242
+ documentAnonymizationSettings.documentNumberAnonymizationSettings = deserializeDocumentNumberAnonymizationSettings(documentNumberAnonymizationSettings)
243
+ }
244
+
245
+ documentAnonymizationSettingsArray.append(documentAnonymizationSettings)
246
+ }
247
+
248
+ return documentAnonymizationSettingsArray
249
+ }
250
+
251
+ static func deserializeDocumentNumberAnonymizationSettings(_ documentNumberAnonymizationSettingsDict: Dictionary<String, Any>) -> DocumentNumberAnonymizationSettings {
252
+ var documentNumberAnonymizationSettings = DocumentNumberAnonymizationSettings()
253
+
254
+ if let prefixDigitsVisible = documentNumberAnonymizationSettingsDict["prefixDigitsVisible"] as? Int {
255
+ documentNumberAnonymizationSettings.prefixDigitsVisible = prefixDigitsVisible
256
+ }
257
+ if let suffixDigitsVisible = documentNumberAnonymizationSettingsDict["suffixDigitsVisible"] as? Int {
258
+ documentNumberAnonymizationSettings.suffixDigitsVisible = suffixDigitsVisible
259
+ }
260
+ return documentNumberAnonymizationSettings
261
+ }
262
+
263
+ static func deserializeFieldType(_ fieldType: Array<String>) -> [FieldType] {
264
+ return fieldType.compactMap { FieldType.init(rawValue: $0) }
265
+ }
266
+
267
+ static func deserializeClassFilter(_ classFilterDictArr: Dictionary<String, Any>?, _ classInfo: BlinkID.BlinkIDSDK.DocumentClassInfo) -> Bool {
268
+ guard let sanitizedDict = sanitizeDictionary(classFilterDictArr) else { return true}
269
+ var includeClass = false
270
+ var excludeClass = true
271
+
272
+ if let includedClasses = sanitizedDict["includeDocuments"] as? Array<Dictionary<String, Any>> {
273
+ for includedClass in includedClasses {
274
+ includeClass = includeClass || matchClassFilter(includedClass, classInfo: classInfo)
275
+ }
276
+ } else {
277
+ includeClass = true
278
+ }
279
+
280
+ if let excludedClasses = sanitizedDict["excludeDocuments"] as? Array<Dictionary<String, Any>> {
281
+ for excludedClass in excludedClasses {
282
+ excludeClass = excludeClass && !matchClassFilter(excludedClass, classInfo: classInfo)
283
+ }
284
+ }
285
+
286
+ return includeClass && excludeClass
287
+ }
288
+
289
+ static func matchClassFilter(_ filteredClass: Dictionary<String, Any>, classInfo: BlinkID.BlinkIDSDK.DocumentClassInfo) -> Bool {
290
+ let country = filteredClass["country"] as? String
291
+ let type = filteredClass["documentType"] as? String
292
+ let region = filteredClass["region"] as? String
293
+
294
+ return (country == nil || classInfo.country == Country.init(rawValue: country!)) &&
295
+ (type == nil || classInfo.documentType == DocumentType.init(rawValue: type!) &&
296
+ (region == nil || classInfo.region == Region.init(rawValue: region!)))
297
+ }
298
+
299
+ static func deseralizeDetectionLevel(_ value: Int) -> DetectionLevel {
300
+ switch value {
301
+ case 0:
302
+ return DetectionLevel.off
303
+ case 1:
304
+ return DetectionLevel.low
305
+ case 2:
306
+ return DetectionLevel.mid
307
+ case 3:
308
+ return DetectionLevel.high
309
+ default:
310
+ return DetectionLevel.mid
311
+ }
312
+ }
313
+
314
+ static func deseralizeScanningMode(_ value: Int) -> ScanningMode {
315
+ switch value {
316
+ case 0:
317
+ return ScanningMode.single
318
+ case 1:
319
+ return ScanningMode.automatic
320
+ default:
321
+ return ScanningMode.automatic
322
+ }
323
+ }
324
+
325
+ static func sanitizeDictionary(_ dictionary: Dictionary<String, Any>?) -> Dictionary<String, Any>? {
326
+ if let dictionary = dictionary {
327
+ var sanitized = dictionary
328
+ for (key, value) in dictionary {
329
+ if value is NSNull {
330
+ sanitized[key] = nil
331
+ }
332
+ }
333
+ return sanitized
334
+ }
335
+ return nil
336
+ }
337
+
338
+ static func deserializeBase64Image(_ base64Image: String?) -> UIImage? {
339
+ if let base64Image = base64Image,
340
+ let data = Data(base64Encoded: base64Image, options: .ignoreUnknownCharacters) {
341
+ return UIImage(data: data)
342
+ }
343
+ return nil
344
+ }
345
+ }