@regulaforensics/idv 3.2.59-beta → 3.2.69-beta

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 (48) hide show
  1. package/RNIDV.podspec +3 -3
  2. package/android/CVDIDV.kt +3 -0
  3. package/android/build.gradle +1 -1
  4. package/android/cordova.gradle +1 -1
  5. package/android/src/main/java/com/regula/plugin/idv/JSONConstructor.kt +32 -0
  6. package/android/src/main/java/com/regula/plugin/idv/Main.kt +21 -1
  7. package/android/src/main/java/com/regula/plugin/idv/RNIDVModule.kt +3 -0
  8. package/examples/capacitor/android/app/src/main/AndroidManifest.xml +3 -0
  9. package/examples/capacitor/index.tsx +5 -5
  10. package/examples/capacitor/ios/App/App/Info.plist +8 -6
  11. package/examples/capacitor/ios/App/App.xcodeproj/project.pbxproj +4 -0
  12. package/examples/capacitor/package-lock.json +12 -12
  13. package/examples/capacitor/package.json +7 -7
  14. package/examples/capacitor/src/main.html +1 -1
  15. package/examples/capacitor/src/main.tsx +2 -2
  16. package/examples/ionic/config.xml +5 -0
  17. package/examples/ionic/index.tsx +5 -1
  18. package/examples/ionic/package-lock.json +4742 -2430
  19. package/examples/ionic/package.json +16 -16
  20. package/examples/ionic/src/main.html +1 -1
  21. package/examples/ionic/src/main.tsx +2 -2
  22. package/examples/react_native/app.config.ts +6 -1
  23. package/examples/react_native/index.html +5 -4
  24. package/examples/react_native/package-lock.json +40 -40
  25. package/examples/react_native/package.json +7 -7
  26. package/examples/react_native/src/main.html +1 -1
  27. package/examples/react_native/src/main.tsx +2 -2
  28. package/ios/CVDIDV.swift +26 -3
  29. package/ios/JSONConstructor.swift +24 -2
  30. package/ios/Main.swift +28 -12
  31. package/ios/RNIDV.m +11 -0
  32. package/ios/RNIDV.swift +35 -12
  33. package/ios/Utils.swift +0 -4
  34. package/package.json +1 -1
  35. package/plugin.xml +2 -2
  36. package/test/json.tsx +9 -0
  37. package/test/package-lock.json +1 -1
  38. package/test/test.tsx +4 -2
  39. package/www/capacitor/config/send_data_config.js +28 -0
  40. package/www/capacitor/config/start_session_config.js +24 -0
  41. package/www/capacitor/index.js +16 -8
  42. package/www/cordova.js +141 -43
  43. package/www/react-native/config/send_data_config.js +28 -0
  44. package/www/react-native/config/start_session_config.js +24 -0
  45. package/www/react-native/index.js +16 -8
  46. package/www/types/config/send_data_config.d.ts +5 -0
  47. package/www/types/config/start_session_config.d.ts +4 -0
  48. package/www/types/index.d.ts +7 -8
package/RNIDV.podspec CHANGED
@@ -5,7 +5,7 @@ source = File.join(__dir__, 'ios')
5
5
 
6
6
  Pod::Spec.new do |s|
7
7
  s.name = 'RNIDV'
8
- s.version = '3.2.59-beta'
8
+ s.version = '3.2.69-beta'
9
9
  s.summary = package['description']
10
10
  s.license = package['license']
11
11
 
@@ -14,8 +14,8 @@ Pod::Spec.new do |s|
14
14
 
15
15
  s.source = { http: "file:#{source}" }
16
16
  s.ios.deployment_target = '14.0'
17
- s.source_files = 'ios/**/*.swift'
17
+ s.source_files = [ 'ios/**/*.swift', 'ios/**/RN*.m' ]
18
18
  s.exclude_files = [ 'ios/CVDIDV.swift' ]
19
- s.dependency 'IDVSDK', '3.1.1492'
19
+ s.dependency 'IDVSDK', '3.2.1670'
20
20
  s.dependency 'React'
21
21
  end
package/android/CVDIDV.kt CHANGED
@@ -1,5 +1,6 @@
1
1
  package com.regula.plugin.idv
2
2
 
3
+ import android.app.Activity
3
4
  import android.content.Context
4
5
  import android.util.Log
5
6
  import org.apache.cordova.CallbackContext
@@ -13,6 +14,8 @@ lateinit var args: JSONArray
13
14
  lateinit var binding: CordovaPlugin
14
15
  val context: Context
15
16
  get() = binding.cordova.context
17
+ val activity: Activity
18
+ get() = binding.cordova.activity
16
19
 
17
20
  fun sendEvent(callbackId: String, data: Any? = "") {
18
21
  val pluginResult = when (data) {
@@ -25,7 +25,7 @@ rootProject.allprojects {
25
25
 
26
26
  dependencies {
27
27
  implementation 'com.facebook.react:react-native:+'
28
- implementation('com.regula.idv:api:3.1.90') {
28
+ implementation('com.regula.idv:api:3.2.101') {
29
29
  transitive = true
30
30
  }
31
31
  }
@@ -14,7 +14,7 @@ repositories {
14
14
  }
15
15
 
16
16
  dependencies {
17
- implementation('com.regula.idv:api:3.1.90') {
17
+ implementation('com.regula.idv:api:3.2.101') {
18
18
  transitive = true
19
19
  }
20
20
  }
@@ -5,6 +5,8 @@ package com.regula.plugin.idv
5
5
  import com.regula.idv.api.config.ApiKeyConnectionConfig
6
6
  import com.regula.idv.api.config.CredentialsConnectionConfig
7
7
  import com.regula.idv.api.config.PrepareWorkflowConfig
8
+ import com.regula.idv.api.config.SendDataConfig
9
+ import com.regula.idv.api.config.SessionConfig
8
10
  import com.regula.idv.api.config.StartWorkflowConfig
9
11
  import com.regula.idv.api.config.TokenConnectionConfig
10
12
  import com.regula.idv.api.models.WorkflowResult
@@ -84,6 +86,36 @@ fun generateStartWorkflowConfig(input: StartWorkflowConfig?) = input?.let {
84
86
  ).toJson()
85
87
  }
86
88
 
89
+ fun sendDataConfigFromJSON(input: JSONObject?) = input?.let {
90
+ SendDataConfig(
91
+ it.getString("sessionId"),
92
+ it.getString("step"),
93
+ it.getJSONObject("data")
94
+ )
95
+ }
96
+
97
+ fun generateSendDataConfig(input: SendDataConfig?) = input?.let {
98
+ mapOf(
99
+ "sessionId" to it.sessionId,
100
+ "step" to it.step,
101
+ "data" to it.data,
102
+ ).toJson()
103
+ }
104
+
105
+ fun startSessionConfigFromJSON(input: JSONObject?) = input?.let {
106
+ SessionConfig(
107
+ it.getString("workflowId"),
108
+ it.getJSONObjectOrNull("metadata")
109
+ )
110
+ }
111
+
112
+ fun generateStartSessionConfig(input: SessionConfig?) = input?.let {
113
+ mapOf(
114
+ "workflowId" to it.workflowId,
115
+ "metadata" to it.metadata,
116
+ ).toJson()
117
+ }
118
+
87
119
  // Model ------------------------------
88
120
 
89
121
  fun workflowFromJSON(input: JSONObject?) = input?.let {
@@ -29,6 +29,8 @@ fun methodCall(method: String, callback: Callback): Any = when (method) {
29
29
  "prepareWorkflow" -> prepareWorkflow(callback, args(0))
30
30
  "startWorkflow" -> startWorkflow(callback, argsNullable(0))
31
31
  "getWorkflows" -> getWorkflows(callback)
32
+ "startSession" -> startSession(args(0), callback)
33
+ "sendData" -> sendData(args(0), callback)
32
34
  else -> Unit
33
35
  }
34
36
 
@@ -99,7 +101,7 @@ fun prepareWorkflow(callback: Callback, data: JSONObject) = instance().prepareWo
99
101
  }
100
102
 
101
103
  fun startWorkflow(callback: Callback, data: JSONObject?) = instance().startWorkflow(
102
- context,
104
+ activity,
103
105
  startWorkflowConfigFromJSON(data)
104
106
  ) {
105
107
  generateCompletion(
@@ -115,6 +117,24 @@ fun getWorkflows(callback: Callback) = instance().getWorkflows {
115
117
  ).send(callback)
116
118
  }
117
119
 
120
+ fun startSession(config: JSONObject, callback: Callback) = instance().startSession(
121
+ startSessionConfigFromJSON(config)!!
122
+ ) {
123
+ generateCompletion(
124
+ it.getOrNull(),
125
+ it.exceptionOrNull() as BaseException?
126
+ ).send(callback)
127
+ }
128
+
129
+ fun sendData(config: JSONObject, callback: Callback) = instance().sendData(
130
+ sendDataConfigFromJSON(config)!!
131
+ ) {
132
+ generateCompletion(
133
+ it.isSuccess,
134
+ it.exceptionOrNull() as BaseException?
135
+ ).send(callback)
136
+ }
137
+
118
138
  // Weak references
119
139
  var listener = object : IdvSdkListener {
120
140
  override fun didStartSession() = sendEvent(didStartSessionEvent)
@@ -2,6 +2,7 @@
2
2
 
3
3
  package com.regula.plugin.idv
4
4
 
5
+ import android.app.Activity
5
6
  import android.content.Context
6
7
  import android.util.Log
7
8
  import com.facebook.react.ReactPackage
@@ -22,6 +23,8 @@ lateinit var args: JSONArray
22
23
  lateinit var binding: ReactContext
23
24
  val context: Context
24
25
  get() = binding.applicationContext
26
+ val activity: Activity
27
+ get() = binding.currentActivity!!
25
28
 
26
29
  fun sendEvent(event: String, data: Any? = "") {
27
30
  if (listenerCount <= 0) return
@@ -23,4 +23,7 @@
23
23
 
24
24
  <uses-permission android:name="android.permission.NFC" />
25
25
  <uses-permission android:name="android.permission.INTERNET" />
26
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
27
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
28
+
26
29
  </manifest>
@@ -4,11 +4,11 @@ import { setupIonicReact } from '@ionic/react'
4
4
  import { StatusBar, Style } from '@capacitor/status-bar'
5
5
  import { main } from './src/main'
6
6
 
7
- document.addEventListener('deviceready', () => fetch("main.html")
8
- .then(response => response.text())
9
- .then(html => document.getElementById("content").innerHTML = html)
10
- .then(_ => document.dispatchEvent(new Event('ready')))
11
- )
7
+ document.addEventListener('deviceready', async () => {
8
+ document.getElementById("content").innerHTML = await fetch("main.html").then(r => r.text())
9
+ await new Promise(resolve => requestAnimationFrame(() => requestAnimationFrame(resolve)))
10
+ document.dispatchEvent(new Event('ready'))
11
+ })
12
12
 
13
13
  document.addEventListener('ready', main)
14
14
 
@@ -22,17 +22,11 @@
22
22
  <string>$(CURRENT_PROJECT_VERSION)</string>
23
23
  <key>LSRequiresIPhoneOS</key>
24
24
  <true/>
25
- <key>NFCReaderUsageDescription</key>
26
- <string>To use NFC</string>
27
25
  <key>NSAppTransportSecurity</key>
28
26
  <dict>
29
27
  <key>NSAllowsArbitraryLoads</key>
30
28
  <true/>
31
29
  </dict>
32
- <key>NSCameraUsageDescription</key>
33
- <string></string>
34
- <key>NSPhotoLibraryUsageDescription</key>
35
- <string></string>
36
30
  <key>UILaunchStoryboardName</key>
37
31
  <string>LaunchScreen</string>
38
32
  <key>UIMainStoryboardFile</key>
@@ -51,6 +45,14 @@
51
45
  </array>
52
46
  <key>UIViewControllerBasedStatusBarAppearance</key>
53
47
  <true/>
48
+ <key>NSCameraUsageDescription</key>
49
+ <string></string>
50
+ <key>NSPhotoLibraryUsageDescription</key>
51
+ <string></string>
52
+ <key>NSLocationWhenInUseUsageDescription</key>
53
+ <string>To use location</string>
54
+ <key>NFCReaderUsageDescription</key>
55
+ <string>To use NFC</string>
54
56
  <key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
55
57
  <array>
56
58
  <string>A0000002471001</string>
@@ -16,6 +16,7 @@
16
16
  50B271D11FEDC1A000F3C39B /* public in Resources */ = {isa = PBXBuildFile; fileRef = 50B271D01FEDC1A000F3C39B /* public */; };
17
17
  A084ECDBA7D38E1E42DFC39D /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */; };
18
18
  C3C12F0D2DEDD3AA0068B75D /* db.dat in Resources */ = {isa = PBXBuildFile; fileRef = C3C12F0C2DEDD3AA0068B75D /* db.dat */; };
19
+ C3D68A432E9FF39D006194D2 /* regula.license in Resources */ = {isa = PBXBuildFile; fileRef = C3D68A422E9FF39D006194D2 /* regula.license */; };
19
20
  /* End PBXBuildFile section */
20
21
 
21
22
  /* Begin PBXFileReference section */
@@ -32,6 +33,7 @@
32
33
  AF277DCFFFF123FFC6DF26C7 /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; };
33
34
  AF51FD2D460BCFE21FA515B2 /* Pods-App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.release.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.release.xcconfig"; sourceTree = "<group>"; };
34
35
  C3C12F0C2DEDD3AA0068B75D /* db.dat */ = {isa = PBXFileReference; lastKnownFileType = file; path = db.dat; sourceTree = "<group>"; };
36
+ C3D68A422E9FF39D006194D2 /* regula.license */ = {isa = PBXFileReference; lastKnownFileType = file; path = regula.license; sourceTree = "<group>"; };
35
37
  FC68EB0AF532CFC21C3344DD /* Pods-App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.debug.xcconfig"; path = "Pods/Target Support Files/Pods-App/Pods-App.debug.xcconfig"; sourceTree = "<group>"; };
36
38
  /* End PBXFileReference section */
37
39
 
@@ -85,6 +87,7 @@
85
87
  504EC3131FED79650016851F /* Info.plist */,
86
88
  2FAD9762203C412B000D30F8 /* config.xml */,
87
89
  50B271D01FEDC1A000F3C39B /* public */,
90
+ C3D68A422E9FF39D006194D2 /* regula.license */,
88
91
  C3C12F0C2DEDD3AA0068B75D /* db.dat */,
89
92
  );
90
93
  path = App;
@@ -167,6 +170,7 @@
167
170
  504EC30D1FED79650016851F /* Main.storyboard in Resources */,
168
171
  2FAD9763203C412B000D30F8 /* config.xml in Resources */,
169
172
  C3C12F0D2DEDD3AA0068B75D /* db.dat in Resources */,
173
+ C3D68A432E9FF39D006194D2 /* regula.license in Resources */,
170
174
  );
171
175
  runOnlyForDeploymentPostprocessing = 0;
172
176
  };
@@ -2190,14 +2190,14 @@
2190
2190
  }
2191
2191
  },
2192
2192
  "node_modules/glob": {
2193
- "version": "11.0.3",
2194
- "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz",
2195
- "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==",
2196
- "license": "ISC",
2193
+ "version": "11.1.0",
2194
+ "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz",
2195
+ "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==",
2196
+ "license": "BlueOak-1.0.0",
2197
2197
  "dependencies": {
2198
2198
  "foreground-child": "^3.3.1",
2199
2199
  "jackspeak": "^4.1.1",
2200
- "minimatch": "^10.0.3",
2200
+ "minimatch": "^10.1.1",
2201
2201
  "minipass": "^7.1.2",
2202
2202
  "package-json-from-dist": "^1.0.0",
2203
2203
  "path-scurry": "^2.0.0"
@@ -2414,10 +2414,10 @@
2414
2414
  }
2415
2415
  },
2416
2416
  "node_modules/minimatch": {
2417
- "version": "10.0.3",
2418
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
2419
- "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
2420
- "license": "ISC",
2417
+ "version": "10.1.1",
2418
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
2419
+ "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
2420
+ "license": "BlueOak-1.0.0",
2421
2421
  "dependencies": {
2422
2422
  "@isaacs/brace-expansion": "^5.0.0"
2423
2423
  },
@@ -3156,9 +3156,9 @@
3156
3156
  "license": "MIT"
3157
3157
  },
3158
3158
  "node_modules/vite": {
3159
- "version": "6.3.6",
3160
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz",
3161
- "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==",
3159
+ "version": "6.4.1",
3160
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
3161
+ "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
3162
3162
  "license": "MIT",
3163
3163
  "peer": true,
3164
3164
  "dependencies": {
@@ -6,13 +6,13 @@
6
6
  "android": "scripts/android.sh"
7
7
  },
8
8
  "dependencies": {
9
- "@regulaforensics/idv": "3.2.59-beta",
10
- "@regulaforensics/document-reader": "8.4.341-beta",
11
- "@regulaforensics/face-sdk": "8.1.506-beta",
12
- "@regulaforensics/document-reader-core-fullauthrfid": "8.4.325-beta",
13
- "@regulaforensics/face-core-basic": "7.3.282-beta",
14
- "@regulaforensics/idv-module-document-reader": "3.2.30-beta",
15
- "@regulaforensics/idv-module-face": "3.2.31-beta",
9
+ "@regulaforensics/idv": "3.2.69-beta",
10
+ "@regulaforensics/document-reader": "9.1.505",
11
+ "@regulaforensics/face-sdk": "7.2.691",
12
+ "@regulaforensics/document-reader-core-fullauthrfid": "9.1.1281",
13
+ "@regulaforensics/face-core-basic": "7.2.265",
14
+ "@regulaforensics/idv-module-document-reader": "3.2.48-beta",
15
+ "@regulaforensics/idv-module-face": "3.2.49-beta",
16
16
  "@capacitor/cli": "7.0.1",
17
17
  "@capacitor/core": "7.0.1",
18
18
  "@capacitor/app": "7.0.0",
@@ -1,6 +1,6 @@
1
1
  <div class="column" style="height: 100%">
2
2
  <div class="column header">
3
- <span id="status">Loading...</span>
3
+ <span id="status">Initializing...</span>
4
4
  <div class="column divider"></div>
5
5
  </div>
6
6
  <div id="sub-header" class="column sub-header" style="display: none;">
@@ -71,11 +71,11 @@ async function startWorkflow(): Promise<void> {
71
71
  setDescription(`SessionID: ${result?.sessionId}`)
72
72
  }
73
73
 
74
- function handleException(error?: string, tag?: string): boolean {
74
+ function handleException(error?: string | null, tag?: string): boolean {
75
75
  if (error == null) return false
76
76
  setStatus(`Error - IDV.${tag}()`)
77
77
  setDescription(error)
78
- console.error(error)
78
+ console.log(error)
79
79
  return true
80
80
  }
81
81
 
@@ -14,6 +14,8 @@
14
14
  <preference name="GradlePluginKotlinVersion" value="2.1.20" />
15
15
  <config-file parent="/*" target="AndroidManifest.xml">
16
16
  <uses-permission android:name="android.permission.NFC" />
17
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
18
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
17
19
  </config-file>
18
20
  <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
19
21
  <application android:usesCleartextTraffic="true" />
@@ -32,6 +34,9 @@
32
34
  <config-file parent="NSPhotoLibraryUsageDescription" target="*-Info.plist">
33
35
  <string>To pick images</string>
34
36
  </config-file>
37
+ <config-file parent="NSLocationWhenInUseUsageDescription" target="*-Info.plist">
38
+ <string>To use location</string>
39
+ </config-file>
35
40
  <config-file parent="NFCReaderUsageDescription" target="*-Info.plist">
36
41
  <string>To use NFC</string>
37
42
  </config-file>
@@ -14,7 +14,11 @@ import { main } from './src/main'
14
14
  })
15
15
  class Main {
16
16
  constructor(platform: Platform) {
17
- platform.ready().then(main)
17
+ (async () => {
18
+ await platform.ready()
19
+ await new Promise(resolve => requestAnimationFrame(() => requestAnimationFrame(resolve)))
20
+ main()
21
+ })()
18
22
  }
19
23
  }
20
24