omnipay-reactnative-sdk 1.2.2-beta.9 → 1.2.3-beta.10

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 (97) hide show
  1. package/README.md +58 -48
  2. package/android/build.gradle +4 -7
  3. package/android/src/main/AndroidManifest.xml +0 -5
  4. package/android/src/main/java/com/omniretail/omnipay/FaceVerificationFrameProcessor.kt +111 -0
  5. package/android/src/main/java/com/omniretail/omnipay/OmnipayActivityPackage.java +6 -4
  6. package/ios/FaceVerificationFrameProcessor.swift +138 -0
  7. package/ios/FaceVerificationFrameProcessorPlugin.m +4 -0
  8. package/ios/OmnipayReactnativeSdk.m +5 -0
  9. package/ios/OmnipayReactnativeSdk.swift +10 -0
  10. package/ios/omnipay_reactnative_sdk.h +6 -0
  11. package/lib/commonjs/components/Button.js +68 -0
  12. package/lib/commonjs/components/Button.js.map +1 -0
  13. package/lib/commonjs/components/OmnipayProvider.js +7 -23
  14. package/lib/commonjs/components/OmnipayProvider.js.map +1 -1
  15. package/lib/commonjs/components/biometrics/FaceVerification.js +294 -270
  16. package/lib/commonjs/components/biometrics/FaceVerification.js.map +1 -1
  17. package/lib/commonjs/components/biometrics/useFaceVerification.js +85 -0
  18. package/lib/commonjs/components/biometrics/useFaceVerification.js.map +1 -0
  19. package/lib/commonjs/components/biometrics/useFaceVerificationFlow.js +157 -0
  20. package/lib/commonjs/components/biometrics/useFaceVerificationFlow.js.map +1 -0
  21. package/lib/commonjs/index.js +0 -33
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/module/components/Button.js +61 -0
  24. package/lib/module/components/Button.js.map +1 -0
  25. package/lib/module/components/OmnipayProvider.js +7 -23
  26. package/lib/module/components/OmnipayProvider.js.map +1 -1
  27. package/lib/module/components/biometrics/FaceVerification.js +294 -271
  28. package/lib/module/components/biometrics/FaceVerification.js.map +1 -1
  29. package/lib/module/components/biometrics/useFaceVerification.js +78 -0
  30. package/lib/module/components/biometrics/useFaceVerification.js.map +1 -0
  31. package/lib/module/components/biometrics/useFaceVerificationFlow.js +150 -0
  32. package/lib/module/components/biometrics/useFaceVerificationFlow.js.map +1 -0
  33. package/lib/module/index.js +0 -6
  34. package/lib/module/index.js.map +1 -1
  35. package/lib/typescript/components/Button.d.ts +17 -0
  36. package/lib/typescript/components/Button.d.ts.map +1 -0
  37. package/lib/typescript/components/OmnipayProvider.d.ts.map +1 -1
  38. package/lib/typescript/components/biometrics/FaceVerification.d.ts +1 -3
  39. package/lib/typescript/components/biometrics/FaceVerification.d.ts.map +1 -1
  40. package/lib/typescript/components/biometrics/useFaceVerification.d.ts +38 -0
  41. package/lib/typescript/components/biometrics/useFaceVerification.d.ts.map +1 -0
  42. package/lib/typescript/components/biometrics/useFaceVerificationFlow.d.ts +29 -0
  43. package/lib/typescript/components/biometrics/useFaceVerificationFlow.d.ts.map +1 -0
  44. package/lib/typescript/index.d.ts +0 -2
  45. package/lib/typescript/index.d.ts.map +1 -1
  46. package/omnipay_reactnative_sdk.podspec +46 -0
  47. package/package.json +5 -8
  48. package/src/components/Button.tsx +86 -0
  49. package/src/components/OmnipayProvider.tsx +7 -24
  50. package/src/components/biometrics/FaceVerification.tsx +315 -309
  51. package/src/components/biometrics/useFaceVerification.ts +120 -0
  52. package/src/components/biometrics/useFaceVerificationFlow.ts +224 -0
  53. package/src/index.tsx +0 -7
  54. package/android/src/main/java/com/omniretail/omnipay/OmnipayLivenessCameraView.java +0 -153
  55. package/android/src/main/java/com/omniretail/omnipay/OmnipayLivenessCameraViewManager.java +0 -49
  56. package/android/src/main/java/com/omniretail/omnipay/OmnipayLivenessModule.java +0 -557
  57. package/ios/OmnipayLivenessCameraView.h +0 -15
  58. package/ios/OmnipayLivenessCameraView.m +0 -80
  59. package/ios/OmnipayLivenessCameraViewManager.m +0 -19
  60. package/ios/OmnipayLivenessModule.h +0 -38
  61. package/ios/OmnipayLivenessModule.m +0 -615
  62. package/lib/commonjs/components/biometrics/LivenessDetection.js +0 -149
  63. package/lib/commonjs/components/biometrics/LivenessDetection.js.map +0 -1
  64. package/lib/commonjs/components/biometrics/OmnipayLivenessCameraView.js +0 -15
  65. package/lib/commonjs/components/biometrics/OmnipayLivenessCameraView.js.map +0 -1
  66. package/lib/commonjs/components/biometrics/PermissionManager.js +0 -279
  67. package/lib/commonjs/components/biometrics/PermissionManager.js.map +0 -1
  68. package/lib/commonjs/components/biometrics/index.js +0 -45
  69. package/lib/commonjs/components/biometrics/index.js.map +0 -1
  70. package/lib/commonjs/components/biometrics/types.js +0 -17
  71. package/lib/commonjs/components/biometrics/types.js.map +0 -1
  72. package/lib/module/components/biometrics/LivenessDetection.js +0 -129
  73. package/lib/module/components/biometrics/LivenessDetection.js.map +0 -1
  74. package/lib/module/components/biometrics/OmnipayLivenessCameraView.js +0 -7
  75. package/lib/module/components/biometrics/OmnipayLivenessCameraView.js.map +0 -1
  76. package/lib/module/components/biometrics/PermissionManager.js +0 -272
  77. package/lib/module/components/biometrics/PermissionManager.js.map +0 -1
  78. package/lib/module/components/biometrics/index.js +0 -12
  79. package/lib/module/components/biometrics/index.js.map +0 -1
  80. package/lib/module/components/biometrics/types.js +0 -16
  81. package/lib/module/components/biometrics/types.js.map +0 -1
  82. package/lib/typescript/components/biometrics/LivenessDetection.d.ts +0 -33
  83. package/lib/typescript/components/biometrics/LivenessDetection.d.ts.map +0 -1
  84. package/lib/typescript/components/biometrics/OmnipayLivenessCameraView.d.ts +0 -18
  85. package/lib/typescript/components/biometrics/OmnipayLivenessCameraView.d.ts.map +0 -1
  86. package/lib/typescript/components/biometrics/PermissionManager.d.ts +0 -58
  87. package/lib/typescript/components/biometrics/PermissionManager.d.ts.map +0 -1
  88. package/lib/typescript/components/biometrics/index.d.ts +0 -5
  89. package/lib/typescript/components/biometrics/index.d.ts.map +0 -1
  90. package/lib/typescript/components/biometrics/types.d.ts +0 -73
  91. package/lib/typescript/components/biometrics/types.d.ts.map +0 -1
  92. package/omnipay-reactnative-sdk.podspec +0 -50
  93. package/src/components/biometrics/LivenessDetection.ts +0 -178
  94. package/src/components/biometrics/OmnipayLivenessCameraView.tsx +0 -19
  95. package/src/components/biometrics/PermissionManager.ts +0 -317
  96. package/src/components/biometrics/index.ts +0 -11
  97. package/src/components/biometrics/types.ts +0 -86
@@ -1,149 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _exportNames = {
7
- LivenessDetection: true
8
- };
9
- exports.LivenessDetection = void 0;
10
- var _reactNative = require("react-native");
11
- var _types = require("./types");
12
- Object.keys(_types).forEach(function (key) {
13
- if (key === "default" || key === "__esModule") return;
14
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
15
- if (key in exports && exports[key] === _types[key]) return;
16
- Object.defineProperty(exports, key, {
17
- enumerable: true,
18
- get: function () {
19
- return _types[key];
20
- }
21
- });
22
- });
23
- const {
24
- OmnipayLivenessModule
25
- } = _reactNative.NativeModules;
26
- class LivenessDetectionManager {
27
- eventListeners = {};
28
- constructor() {
29
- if (OmnipayLivenessModule) {
30
- this.eventEmitter = new _reactNative.NativeEventEmitter(OmnipayLivenessModule);
31
- }
32
- }
33
-
34
- /**
35
- * Check if liveness detection is supported on this device
36
- */
37
- async isSupported() {
38
- console.log('🔧 LivenessDetection.isSupported() called');
39
- if (!OmnipayLivenessModule) {
40
- console.log('❌ OmnipayLivenessModule not available in NativeModules');
41
- console.log('📋 Available modules:', Object.keys(_reactNative.NativeModules));
42
- return false;
43
- }
44
- console.log('✅ OmnipayLivenessModule found, calling native isSupported...');
45
- try {
46
- const result = await OmnipayLivenessModule.isSupported();
47
- console.log('📋 Native isSupported result:', result);
48
- return result;
49
- } catch (error) {
50
- console.error('💥 Liveness detection support check failed:', error);
51
- return false;
52
- }
53
- }
54
-
55
- /**
56
- * Start liveness detection with given configuration
57
- */
58
- async startDetection(config, callbacks) {
59
- if (!OmnipayLivenessModule) {
60
- throw new Error('Liveness detection module not available');
61
- }
62
-
63
- // Set up event listeners if callbacks provided
64
- if (callbacks) {
65
- this.setupEventListeners(callbacks);
66
- }
67
- try {
68
- const result = await OmnipayLivenessModule.startLivenessDetection(config);
69
- return result;
70
- } catch (error) {
71
- this.cleanupEventListeners();
72
- throw error;
73
- }
74
- }
75
-
76
- /**
77
- * Stop the current detection
78
- */
79
- async stopDetection() {
80
- if (!OmnipayLivenessModule) {
81
- return;
82
- }
83
- try {
84
- await OmnipayLivenessModule.stopDetection();
85
- } finally {
86
- this.cleanupEventListeners();
87
- }
88
- }
89
-
90
- /**
91
- * Set up event listeners for detection callbacks
92
- */
93
- setupEventListeners(callbacks) {
94
- this.cleanupEventListeners(); // Clean up any existing listeners
95
-
96
- if (!this.eventEmitter) {
97
- console.warn('Event emitter not available for liveness detection');
98
- return;
99
- }
100
- if (callbacks.onChallengeStart) {
101
- this.eventListeners.challengeStart = this.eventEmitter.addListener('onChallengeStart', challenge => callbacks.onChallengeStart(challenge));
102
- }
103
- if (callbacks.onChallengeSuccess) {
104
- this.eventListeners.challengeSuccess = this.eventEmitter.addListener('onChallengeSuccess', data => callbacks.onChallengeSuccess(data.challenge, data.result));
105
- }
106
- if (callbacks.onChallengeFailure) {
107
- this.eventListeners.challengeFailure = this.eventEmitter.addListener('onChallengeFailure', data => callbacks.onChallengeFailure(data.challenge, data.reason));
108
- }
109
- if (callbacks.onAllChallengesComplete) {
110
- this.eventListeners.allComplete = this.eventEmitter.addListener('onAllChallengesComplete', () => callbacks.onAllChallengesComplete());
111
- }
112
- if (callbacks.onScreenshotCaptured) {
113
- this.eventListeners.screenshot = this.eventEmitter.addListener('onScreenshotCaptured', screenshot => callbacks.onScreenshotCaptured(screenshot));
114
- }
115
- if (callbacks.onDetectionFailed) {
116
- this.eventListeners.failed = this.eventEmitter.addListener('onDetectionFailed', reason => callbacks.onDetectionFailed(reason));
117
- }
118
- }
119
-
120
- /**
121
- * Clean up all event listeners
122
- */
123
- cleanupEventListeners() {
124
- Object.values(this.eventListeners).forEach(listener => {
125
- if (listener && listener.remove) {
126
- listener.remove();
127
- }
128
- });
129
- this.eventListeners = {};
130
- }
131
-
132
- /**
133
- * Get default configuration
134
- */
135
- getDefaultConfig() {
136
- return {
137
- challenges: ['smile', 'blink', 'turnLeft', 'turnRight'],
138
- challengeTimeout: 10,
139
- totalTimeout: 60,
140
- debugMode: __DEV__
141
- };
142
- }
143
- }
144
-
145
- // Export singleton instance
146
- const LivenessDetection = exports.LivenessDetection = new LivenessDetectionManager();
147
-
148
- // Export types for convenience
149
- //# sourceMappingURL=LivenessDetection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_reactNative","require","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","OmnipayLivenessModule","NativeModules","LivenessDetectionManager","eventListeners","constructor","eventEmitter","NativeEventEmitter","isSupported","console","log","result","error","startDetection","config","callbacks","Error","setupEventListeners","startLivenessDetection","cleanupEventListeners","stopDetection","warn","onChallengeStart","challengeStart","addListener","challenge","onChallengeSuccess","challengeSuccess","data","onChallengeFailure","challengeFailure","reason","onAllChallengesComplete","allComplete","onScreenshotCaptured","screenshot","onDetectionFailed","failed","values","listener","remove","getDefaultConfig","challenges","challengeTimeout","totalTimeout","debugMode","__DEV__","LivenessDetection"],"sourceRoot":"../../../../src","sources":["components/biometrics/LivenessDetection.ts"],"mappings":"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","ignoreList":[]}
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.OmnipayLivenessCameraView = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _reactNative = require("react-native");
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- const NativeOmnipayLivenessCameraView = (0, _reactNative.requireNativeComponent)('OmnipayLivenessCameraView');
11
- const OmnipayLivenessCameraView = props => {
12
- return /*#__PURE__*/_react.default.createElement(NativeOmnipayLivenessCameraView, props);
13
- };
14
- exports.OmnipayLivenessCameraView = OmnipayLivenessCameraView;
15
- //# sourceMappingURL=OmnipayLivenessCameraView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","e","__esModule","default","NativeOmnipayLivenessCameraView","requireNativeComponent","OmnipayLivenessCameraView","props","createElement","exports"],"sourceRoot":"../../../../src","sources":["components/biometrics/OmnipayLivenessCameraView.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAAiE,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAQjE,MAAMG,+BAA+B,GACnC,IAAAC,mCAAsB,EACpB,2BACF,CAAC;AAEI,MAAMC,yBAEZ,GAAIC,KAAK,IAAK;EACb,oBAAOV,MAAA,CAAAM,OAAA,CAAAK,aAAA,CAACJ,+BAA+B,EAAKG,KAAQ,CAAC;AACvD,CAAC;AAACE,OAAA,CAAAH,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1,279 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.PermissionResult = exports.CameraPermissionManager = void 0;
7
- var _reactNative = require("react-native");
8
- var _LivenessDetection = require("./LivenessDetection");
9
- let PermissionResult = exports.PermissionResult = /*#__PURE__*/function (PermissionResult) {
10
- PermissionResult["GRANTED"] = "granted";
11
- PermissionResult["DENIED"] = "denied";
12
- PermissionResult["BLOCKED"] = "blocked";
13
- PermissionResult["UNAVAILABLE"] = "unavailable";
14
- return PermissionResult;
15
- }({});
16
- class CameraPermissionManager {
17
- /**
18
- * Check current camera permission status
19
- */
20
- static async checkCameraPermission() {
21
- try {
22
- if (_reactNative.Platform.OS === 'android') {
23
- return await this.checkAndroidCameraPermission();
24
- } else {
25
- // For iOS, we'll check through the native module
26
- return await this.checkIOSCameraPermission();
27
- }
28
- } catch (error) {
29
- console.error('Error checking camera permission:', error);
30
- return {
31
- result: PermissionResult.UNAVAILABLE,
32
- canRequest: false,
33
- message: 'Unable to check camera permission'
34
- };
35
- }
36
- }
37
-
38
- /**
39
- * Request camera permission with user-friendly flow
40
- */
41
- static async requestCameraPermission(showRationale = true) {
42
- try {
43
- // First check current status
44
- const currentStatus = await this.checkCameraPermission();
45
- if (currentStatus.result === PermissionResult.GRANTED) {
46
- return currentStatus;
47
- }
48
- if (currentStatus.result === PermissionResult.BLOCKED) {
49
- if (showRationale) {
50
- this.showPermissionBlockedAlert();
51
- }
52
- return currentStatus;
53
- }
54
-
55
- // Show rationale if needed
56
- if (showRationale && currentStatus.result === PermissionResult.DENIED) {
57
- const shouldProceed = await this.showPermissionRationale();
58
- if (!shouldProceed) {
59
- return {
60
- result: PermissionResult.DENIED,
61
- canRequest: true,
62
- message: 'User declined to grant permission'
63
- };
64
- }
65
- }
66
-
67
- // Request permission based on platform
68
- if (_reactNative.Platform.OS === 'android') {
69
- return await this.requestAndroidCameraPermission();
70
- } else {
71
- return await this.requestIOSCameraPermission();
72
- }
73
- } catch (error) {
74
- console.error('Error requesting camera permission:', error);
75
- return {
76
- result: PermissionResult.UNAVAILABLE,
77
- canRequest: false,
78
- message: 'Unable to request camera permission'
79
- };
80
- }
81
- }
82
-
83
- /**
84
- * Check Android camera permission using PermissionsAndroid
85
- */
86
- static async checkAndroidCameraPermission() {
87
- const hasPermission = await _reactNative.PermissionsAndroid.check(_reactNative.PermissionsAndroid.PERMISSIONS.CAMERA);
88
- if (hasPermission) {
89
- return {
90
- result: PermissionResult.GRANTED,
91
- canRequest: false,
92
- message: 'Camera permission granted'
93
- };
94
- }
95
- return {
96
- result: PermissionResult.DENIED,
97
- canRequest: true,
98
- message: 'Camera permission not granted'
99
- };
100
- }
101
-
102
- /**
103
- * Request Android camera permission
104
- */
105
- static async requestAndroidCameraPermission() {
106
- try {
107
- const granted = await _reactNative.PermissionsAndroid.request(_reactNative.PermissionsAndroid.PERMISSIONS.CAMERA, {
108
- title: 'Camera Permission Required',
109
- message: 'Face verification requires camera access to capture your image and perform liveness detection.',
110
- buttonNeutral: 'Ask Me Later',
111
- buttonNegative: 'Cancel',
112
- buttonPositive: 'OK'
113
- });
114
- switch (granted) {
115
- case _reactNative.PermissionsAndroid.RESULTS.GRANTED:
116
- return {
117
- result: PermissionResult.GRANTED,
118
- canRequest: false,
119
- message: 'Camera permission granted'
120
- };
121
- case _reactNative.PermissionsAndroid.RESULTS.DENIED:
122
- return {
123
- result: PermissionResult.DENIED,
124
- canRequest: true,
125
- message: 'Camera permission denied'
126
- };
127
- case _reactNative.PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN:
128
- return {
129
- result: PermissionResult.BLOCKED,
130
- canRequest: false,
131
- message: 'Camera permission permanently blocked'
132
- };
133
- default:
134
- return {
135
- result: PermissionResult.DENIED,
136
- canRequest: true,
137
- message: 'Camera permission denied'
138
- };
139
- }
140
- } catch (error) {
141
- console.error('Error requesting Android camera permission:', error);
142
- return {
143
- result: PermissionResult.UNAVAILABLE,
144
- canRequest: false,
145
- message: 'Unable to request camera permission'
146
- };
147
- }
148
- }
149
-
150
- /**
151
- * Check iOS camera permission through native module
152
- */
153
- static async checkIOSCameraPermission() {
154
- try {
155
- // iOS permissions are handled automatically by AVCaptureDevice
156
- // We'll use the liveness detection module to check support
157
- const isSupported = await _LivenessDetection.LivenessDetection.isSupported();
158
- if (isSupported) {
159
- return {
160
- result: PermissionResult.GRANTED,
161
- canRequest: false,
162
- message: 'Camera access available'
163
- };
164
- } else {
165
- return {
166
- result: PermissionResult.UNAVAILABLE,
167
- canRequest: false,
168
- message: 'Camera not available'
169
- };
170
- }
171
- } catch (error) {
172
- return {
173
- result: PermissionResult.UNAVAILABLE,
174
- canRequest: false,
175
- message: 'Unable to check camera availability'
176
- };
177
- }
178
- }
179
-
180
- /**
181
- * Request iOS camera permission through native module
182
- */
183
- static async requestIOSCameraPermission() {
184
- // iOS camera permissions are handled automatically by the native module
185
- // when startLivenessDetection is called. The system will show the permission
186
- // dialog automatically if needed.
187
- return {
188
- result: PermissionResult.GRANTED,
189
- canRequest: false,
190
- message: 'iOS camera permission will be requested automatically'
191
- };
192
- }
193
-
194
- /**
195
- * Request permission with retry logic
196
- */
197
- static async requestWithRetry(maxRetries = 2) {
198
- let lastResponse;
199
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
200
- const isFirstAttempt = attempt === 0;
201
- lastResponse = await this.requestCameraPermission(isFirstAttempt);
202
- if (lastResponse.result === PermissionResult.GRANTED) {
203
- return lastResponse;
204
- }
205
- if (lastResponse.result === PermissionResult.BLOCKED || lastResponse.result === PermissionResult.UNAVAILABLE) {
206
- break; // No point in retrying
207
- }
208
-
209
- // Wait a bit before retry
210
- if (attempt < maxRetries) {
211
- await new Promise(resolve => setTimeout(resolve, 1000));
212
- }
213
- }
214
- return lastResponse;
215
- }
216
-
217
- /**
218
- * Show rationale dialog explaining why camera permission is needed
219
- */
220
- static showPermissionRationale() {
221
- return new Promise(resolve => {
222
- _reactNative.Alert.alert('Camera Permission Required', 'Face verification requires camera access to capture your image and perform liveness detection. This ensures secure identity verification.', [{
223
- text: 'Not Now',
224
- style: 'cancel',
225
- onPress: () => resolve(false)
226
- }, {
227
- text: 'Allow Camera',
228
- onPress: () => resolve(true)
229
- }], {
230
- cancelable: false
231
- });
232
- });
233
- }
234
-
235
- /**
236
- * Show alert when permission is permanently blocked
237
- */
238
- static showPermissionBlockedAlert() {
239
- _reactNative.Alert.alert('Camera Permission Blocked', 'Camera access has been blocked. To use face verification, please enable camera permission in your device settings.', [{
240
- text: 'Cancel',
241
- style: 'cancel'
242
- }, {
243
- text: 'Open Settings',
244
- onPress: () => _reactNative.Linking.openSettings()
245
- }]);
246
- }
247
-
248
- /**
249
- * Get user-friendly permission status message
250
- */
251
- static getPermissionStatusMessage(result) {
252
- switch (result) {
253
- case PermissionResult.GRANTED:
254
- return 'Camera access granted';
255
- case PermissionResult.DENIED:
256
- return 'Camera access denied. Tap to allow camera permission.';
257
- case PermissionResult.BLOCKED:
258
- return 'Camera access blocked. Please enable in device settings.';
259
- case PermissionResult.UNAVAILABLE:
260
- return 'Camera not available on this device';
261
- default:
262
- return 'Unknown permission status';
263
- }
264
- }
265
-
266
- /**
267
- * Check if the device has camera capability
268
- */
269
- static async hasCamera() {
270
- try {
271
- const status = await this.checkCameraPermission();
272
- return status.result !== PermissionResult.UNAVAILABLE;
273
- } catch {
274
- return false;
275
- }
276
- }
277
- }
278
- exports.CameraPermissionManager = CameraPermissionManager;
279
- //# sourceMappingURL=PermissionManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_reactNative","require","_LivenessDetection","PermissionResult","exports","CameraPermissionManager","checkCameraPermission","Platform","OS","checkAndroidCameraPermission","checkIOSCameraPermission","error","console","result","UNAVAILABLE","canRequest","message","requestCameraPermission","showRationale","currentStatus","GRANTED","BLOCKED","showPermissionBlockedAlert","DENIED","shouldProceed","showPermissionRationale","requestAndroidCameraPermission","requestIOSCameraPermission","hasPermission","PermissionsAndroid","check","PERMISSIONS","CAMERA","granted","request","title","buttonNeutral","buttonNegative","buttonPositive","RESULTS","NEVER_ASK_AGAIN","isSupported","LivenessDetection","requestWithRetry","maxRetries","lastResponse","attempt","isFirstAttempt","Promise","resolve","setTimeout","Alert","alert","text","style","onPress","cancelable","Linking","openSettings","getPermissionStatusMessage","hasCamera","status"],"sourceRoot":"../../../../src","sources":["components/biometrics/PermissionManager.ts"],"mappings":"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","ignoreList":[]}
@@ -1,45 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _exportNames = {
7
- FaceVerification: true,
8
- LivenessDetection: true,
9
- OmnipayLivenessCameraView: true
10
- };
11
- Object.defineProperty(exports, "FaceVerification", {
12
- enumerable: true,
13
- get: function () {
14
- return _FaceVerification.default;
15
- }
16
- });
17
- Object.defineProperty(exports, "LivenessDetection", {
18
- enumerable: true,
19
- get: function () {
20
- return _LivenessDetection.LivenessDetection;
21
- }
22
- });
23
- Object.defineProperty(exports, "OmnipayLivenessCameraView", {
24
- enumerable: true,
25
- get: function () {
26
- return _OmnipayLivenessCameraView.OmnipayLivenessCameraView;
27
- }
28
- });
29
- var _FaceVerification = _interopRequireDefault(require("./FaceVerification"));
30
- var _LivenessDetection = require("./LivenessDetection");
31
- var _OmnipayLivenessCameraView = require("./OmnipayLivenessCameraView");
32
- var _types = require("./types");
33
- Object.keys(_types).forEach(function (key) {
34
- if (key === "default" || key === "__esModule") return;
35
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
36
- if (key in exports && exports[key] === _types[key]) return;
37
- Object.defineProperty(exports, key, {
38
- enumerable: true,
39
- get: function () {
40
- return _types[key];
41
- }
42
- });
43
- });
44
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
45
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_FaceVerification","_interopRequireDefault","require","_LivenessDetection","_OmnipayLivenessCameraView","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","e","__esModule","default"],"sourceRoot":"../../../../src","sources":["components/biometrics/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,kBAAA,GAAAD,OAAA;AAGA,IAAAE,0BAAA,GAAAF,OAAA;AAGA,IAAAG,MAAA,GAAAH,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAAwB,SAAAR,uBAAAiB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.LivenessChallenge = void 0;
7
- // Liveness Detection Types
8
- let LivenessChallenge = exports.LivenessChallenge = /*#__PURE__*/function (LivenessChallenge) {
9
- LivenessChallenge["SMILE"] = "smile";
10
- LivenessChallenge["BLINK"] = "blink";
11
- LivenessChallenge["TURN_LEFT"] = "turnLeft";
12
- LivenessChallenge["TURN_RIGHT"] = "turnRight";
13
- return LivenessChallenge;
14
- }({}); // Event callback types
15
- // Native module interface
16
- // Component props
17
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["LivenessChallenge","exports"],"sourceRoot":"../../../../src","sources":["components/biometrics/types.ts"],"mappings":";;;;;;AAAA;AAAA,IAEYA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA,OA0C7B;AAmBA;AAUA","ignoreList":[]}
@@ -1,129 +0,0 @@
1
- import { NativeModules, NativeEventEmitter } from 'react-native';
2
- const {
3
- OmnipayLivenessModule
4
- } = NativeModules;
5
- class LivenessDetectionManager {
6
- eventListeners = {};
7
- constructor() {
8
- if (OmnipayLivenessModule) {
9
- this.eventEmitter = new NativeEventEmitter(OmnipayLivenessModule);
10
- }
11
- }
12
-
13
- /**
14
- * Check if liveness detection is supported on this device
15
- */
16
- async isSupported() {
17
- console.log('🔧 LivenessDetection.isSupported() called');
18
- if (!OmnipayLivenessModule) {
19
- console.log('❌ OmnipayLivenessModule not available in NativeModules');
20
- console.log('📋 Available modules:', Object.keys(NativeModules));
21
- return false;
22
- }
23
- console.log('✅ OmnipayLivenessModule found, calling native isSupported...');
24
- try {
25
- const result = await OmnipayLivenessModule.isSupported();
26
- console.log('📋 Native isSupported result:', result);
27
- return result;
28
- } catch (error) {
29
- console.error('💥 Liveness detection support check failed:', error);
30
- return false;
31
- }
32
- }
33
-
34
- /**
35
- * Start liveness detection with given configuration
36
- */
37
- async startDetection(config, callbacks) {
38
- if (!OmnipayLivenessModule) {
39
- throw new Error('Liveness detection module not available');
40
- }
41
-
42
- // Set up event listeners if callbacks provided
43
- if (callbacks) {
44
- this.setupEventListeners(callbacks);
45
- }
46
- try {
47
- const result = await OmnipayLivenessModule.startLivenessDetection(config);
48
- return result;
49
- } catch (error) {
50
- this.cleanupEventListeners();
51
- throw error;
52
- }
53
- }
54
-
55
- /**
56
- * Stop the current detection
57
- */
58
- async stopDetection() {
59
- if (!OmnipayLivenessModule) {
60
- return;
61
- }
62
- try {
63
- await OmnipayLivenessModule.stopDetection();
64
- } finally {
65
- this.cleanupEventListeners();
66
- }
67
- }
68
-
69
- /**
70
- * Set up event listeners for detection callbacks
71
- */
72
- setupEventListeners(callbacks) {
73
- this.cleanupEventListeners(); // Clean up any existing listeners
74
-
75
- if (!this.eventEmitter) {
76
- console.warn('Event emitter not available for liveness detection');
77
- return;
78
- }
79
- if (callbacks.onChallengeStart) {
80
- this.eventListeners.challengeStart = this.eventEmitter.addListener('onChallengeStart', challenge => callbacks.onChallengeStart(challenge));
81
- }
82
- if (callbacks.onChallengeSuccess) {
83
- this.eventListeners.challengeSuccess = this.eventEmitter.addListener('onChallengeSuccess', data => callbacks.onChallengeSuccess(data.challenge, data.result));
84
- }
85
- if (callbacks.onChallengeFailure) {
86
- this.eventListeners.challengeFailure = this.eventEmitter.addListener('onChallengeFailure', data => callbacks.onChallengeFailure(data.challenge, data.reason));
87
- }
88
- if (callbacks.onAllChallengesComplete) {
89
- this.eventListeners.allComplete = this.eventEmitter.addListener('onAllChallengesComplete', () => callbacks.onAllChallengesComplete());
90
- }
91
- if (callbacks.onScreenshotCaptured) {
92
- this.eventListeners.screenshot = this.eventEmitter.addListener('onScreenshotCaptured', screenshot => callbacks.onScreenshotCaptured(screenshot));
93
- }
94
- if (callbacks.onDetectionFailed) {
95
- this.eventListeners.failed = this.eventEmitter.addListener('onDetectionFailed', reason => callbacks.onDetectionFailed(reason));
96
- }
97
- }
98
-
99
- /**
100
- * Clean up all event listeners
101
- */
102
- cleanupEventListeners() {
103
- Object.values(this.eventListeners).forEach(listener => {
104
- if (listener && listener.remove) {
105
- listener.remove();
106
- }
107
- });
108
- this.eventListeners = {};
109
- }
110
-
111
- /**
112
- * Get default configuration
113
- */
114
- getDefaultConfig() {
115
- return {
116
- challenges: ['smile', 'blink', 'turnLeft', 'turnRight'],
117
- challengeTimeout: 10,
118
- totalTimeout: 60,
119
- debugMode: __DEV__
120
- };
121
- }
122
- }
123
-
124
- // Export singleton instance
125
- export const LivenessDetection = new LivenessDetectionManager();
126
-
127
- // Export types for convenience
128
- export * from './types';
129
- //# sourceMappingURL=LivenessDetection.js.map