react-native-otp-auto-verify 0.2.0 → 0.2.2

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.
@@ -65,4 +65,5 @@ android {
65
65
  dependencies {
66
66
  implementation "com.facebook.react:react-android"
67
67
  implementation "com.google.android.gms:play-services-auth:21.3.0"
68
+ implementation "com.google.android.gms:play-services-auth-api-phone:18.3.0"
68
69
  }
@@ -1,153 +1,148 @@
1
- package com.otpautoverify
2
-
3
- import android.annotation.SuppressLint
4
- import android.content.IntentFilter
5
- import android.os.Build
6
- import android.util.Log
7
- import com.facebook.react.bridge.Arguments
8
- import com.facebook.react.bridge.LifecycleEventListener
9
- import com.facebook.react.bridge.Promise
10
- import com.facebook.react.bridge.ReactApplicationContext
11
- import com.google.android.gms.auth.api.phone.SmsRetriever
12
- import com.google.android.gms.tasks.OnFailureListener
13
- import com.google.android.gms.tasks.OnSuccessListener
14
- class OtpAutoVerifyModule(reactContext: ReactApplicationContext) :
15
- NativeOtpAutoVerifySpec(reactContext), LifecycleEventListener {
16
-
17
- companion object {
18
- const val NAME = NativeOtpAutoVerifySpec.NAME
19
- private const val TAG = "OtpAutoVerifyModule"
20
- const val OTP_RECEIVED_EVENT = "otpReceived"
21
- }
22
-
23
- private var smsReceiver: SmsRetrieverBroadcastReceiver? = null
24
- private var isReceiverRegistered = false
25
- private var isListening = false
26
-
27
- init {
28
- reactContext.addLifecycleEventListener(this)
29
- }
30
-
31
- override fun getTypedExportedConstants(): MutableMap<String, Any> {
32
- return mutableMapOf("OTP_RECEIVED_EVENT" to OTP_RECEIVED_EVENT)
33
- }
34
-
35
- override fun getHash(promise: Promise) {
36
- try {
37
- val helper = AppSignatureHelper(reactApplicationContext)
38
- val signatures = helper.getAppSignatures()
39
- val arr = Arguments.createArray()
40
- for (s in signatures) {
41
- arr.pushString(s)
42
- }
43
- promise.resolve(arr)
44
- } catch (e: Exception) {
45
- Log.e(TAG, "getHash failed", e)
46
- promise.reject("GET_HASH_ERROR", e.message, e)
47
- }
48
- }
49
-
50
- override fun startSmsRetriever(promise: Promise) {
51
- val activity = currentActivity
52
- if (activity == null) {
53
- promise.reject("NO_ACTIVITY", "No current activity. Ensure the app is in the foreground.")
54
- return
55
- }
56
-
57
- registerReceiverIfNecessary(activity)
58
-
59
- val client = SmsRetriever.getClient(reactApplicationContext)
60
- client.startSmsRetriever()
61
- .addOnSuccessListener(OnSuccessListener {
62
- Log.d(TAG, "SMS retriever started")
63
- isListening = true
64
- promise.resolve(true)
65
- })
66
- .addOnFailureListener(OnFailureListener { e ->
67
- Log.e(TAG, "Failed to start SMS retriever", e)
68
- promise.reject("START_SMS_RETRIEVER_ERROR", e.message, e)
69
- })
70
- }
71
-
72
- @SuppressLint("UnspecifiedRegisterReceiverFlag")
73
- private fun registerReceiverIfNecessary(activity: android.app.Activity) {
74
- if (isReceiverRegistered) return
75
- try {
76
- smsReceiver = SmsRetrieverBroadcastReceiver(reactApplicationContext, OTP_RECEIVED_EVENT)
77
- val filter = IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION)
78
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
79
- activity.registerReceiver(
80
- smsReceiver,
81
- filter,
82
- SmsRetriever.SEND_PERMISSION,
83
- null,
84
- android.content.Context.RECEIVER_EXPORTED
85
- )
86
- } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
87
- activity.registerReceiver(
88
- smsReceiver,
89
- filter,
90
- android.content.Context.RECEIVER_EXPORTED
91
- )
92
- } else {
93
- activity.registerReceiver(smsReceiver, filter)
94
- }
95
- isReceiverRegistered = true
96
- Log.d(TAG, "SMS receiver registered")
97
- } catch (e: Exception) {
98
- Log.e(TAG, "Failed to register SMS receiver", e)
99
- }
100
- }
101
-
102
- private fun unregisterReceiver() {
103
- if (!isReceiverRegistered || smsReceiver == null) {
104
- isListening = false
105
- return
106
- }
107
- val activity = currentActivity
108
- try {
109
- if (activity != null) {
110
- activity.unregisterReceiver(smsReceiver)
111
- Log.d(TAG, "SMS receiver unregistered")
112
- }
113
- } catch (e: IllegalArgumentException) {
114
- Log.w(TAG, "Receiver already unregistered", e)
115
- } catch (e: Exception) {
116
- Log.e(TAG, "Failed to unregister SMS receiver", e)
117
- } finally {
118
- isReceiverRegistered = false
119
- smsReceiver = null
120
- isListening = false
121
- }
122
- }
123
-
124
- override fun addListener(eventName: String) {
125
- // Required for NativeEventEmitter; no-op.
126
- }
127
-
128
- override fun removeListeners(count: Double) {
129
- unregisterReceiver()
130
- }
131
-
132
- override fun onHostResume() {
133
- // Optionally re-register if we were listening and activity was recreated.
134
- if (isListening && currentActivity != null && !isReceiverRegistered) {
135
- currentActivity?.let { registerReceiverIfNecessary(it) }
136
- }
137
- }
138
-
139
- override fun onHostPause() {
140
- unregisterReceiver()
141
- }
142
-
143
- override fun onHostDestroy() {
144
- unregisterReceiver()
145
- reactApplicationContext.removeLifecycleEventListener(this)
146
- }
147
-
148
- override fun invalidate() {
149
- unregisterReceiver()
150
- reactApplicationContext.removeLifecycleEventListener(this)
151
- super.invalidate()
152
- }
153
- }
1
+ package com.otpautoverify
2
+
3
+ import android.annotation.SuppressLint
4
+ import android.content.IntentFilter
5
+ import android.os.Build
6
+ import android.util.Log
7
+ import com.facebook.react.bridge.Arguments
8
+ import com.facebook.react.bridge.LifecycleEventListener
9
+ import com.facebook.react.bridge.Promise
10
+ import com.facebook.react.bridge.ReactApplicationContext
11
+ import com.google.android.gms.auth.api.phone.SmsRetriever
12
+ import com.google.android.gms.tasks.OnFailureListener
13
+ import com.google.android.gms.tasks.OnSuccessListener
14
+ class OtpAutoVerifyModule(reactContext: ReactApplicationContext) :
15
+ NativeOtpAutoVerifySpec(reactContext), LifecycleEventListener {
16
+
17
+ companion object {
18
+ const val NAME = NativeOtpAutoVerifySpec.NAME
19
+ private const val TAG = "OtpAutoVerifyModule"
20
+ const val OTP_RECEIVED_EVENT = "otpReceived"
21
+ }
22
+
23
+ private var smsReceiver: SmsRetrieverBroadcastReceiver? = null
24
+ private var isReceiverRegistered = false
25
+ private var isListening = false
26
+
27
+ init {
28
+ reactContext.addLifecycleEventListener(this)
29
+ }
30
+
31
+ override fun getTypedExportedConstants(): MutableMap<String, Any> {
32
+ return mutableMapOf("OTP_RECEIVED_EVENT" to OTP_RECEIVED_EVENT)
33
+ }
34
+
35
+ override fun getHash(promise: Promise) {
36
+ try {
37
+ val helper = AppSignatureHelper(reactApplicationContext)
38
+ val signatures = helper.getAppSignatures()
39
+ val arr = Arguments.createArray()
40
+ for (s in signatures) {
41
+ arr.pushString(s)
42
+ }
43
+ promise.resolve(arr)
44
+ } catch (e: Exception) {
45
+ Log.e(TAG, "getHash failed", e)
46
+ promise.reject("GET_HASH_ERROR", e.message, e)
47
+ }
48
+ }
49
+
50
+ override fun startSmsRetriever(promise: Promise) {
51
+ val activity = currentActivity
52
+ if (activity == null) {
53
+ promise.reject("NO_ACTIVITY", "No current activity. Ensure the app is in the foreground.")
54
+ return
55
+ }
56
+
57
+ registerReceiverIfNecessary(activity)
58
+
59
+ val client = SmsRetriever.getClient(reactApplicationContext)
60
+ client.startSmsRetriever()
61
+ .addOnSuccessListener(OnSuccessListener {
62
+ Log.d(TAG, "SMS retriever started")
63
+ isListening = true
64
+ promise.resolve(true)
65
+ })
66
+ .addOnFailureListener(OnFailureListener { e ->
67
+ Log.e(TAG, "Failed to start SMS retriever", e)
68
+ promise.reject("START_SMS_RETRIEVER_ERROR", e.message, e)
69
+ })
70
+ }
71
+
72
+ @SuppressLint("UnspecifiedRegisterReceiverFlag")
73
+ private fun registerReceiverIfNecessary(activity: android.app.Activity) {
74
+ if (isReceiverRegistered) return
75
+ try {
76
+ smsReceiver = SmsRetrieverBroadcastReceiver(reactApplicationContext, OTP_RECEIVED_EVENT)
77
+ val filter = IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION)
78
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
79
+ activity.registerReceiver(
80
+ smsReceiver,
81
+ filter,
82
+ SmsRetriever.SEND_PERMISSION,
83
+ null,
84
+ android.content.Context.RECEIVER_EXPORTED
85
+ )
86
+ } else {
87
+ activity.registerReceiver(smsReceiver, filter)
88
+ }
89
+ isReceiverRegistered = true
90
+ Log.d(TAG, "SMS receiver registered")
91
+ } catch (e: Exception) {
92
+ Log.e(TAG, "Failed to register SMS receiver", e)
93
+ }
94
+ }
95
+
96
+ private fun unregisterReceiver() {
97
+ if (!isReceiverRegistered || smsReceiver == null) {
98
+ isListening = false
99
+ return
100
+ }
101
+ val activity = currentActivity
102
+ try {
103
+ if (activity != null) {
104
+ activity.unregisterReceiver(smsReceiver)
105
+ Log.d(TAG, "SMS receiver unregistered")
106
+ }
107
+ } catch (e: IllegalArgumentException) {
108
+ Log.w(TAG, "Receiver already unregistered", e)
109
+ } catch (e: Exception) {
110
+ Log.e(TAG, "Failed to unregister SMS receiver", e)
111
+ } finally {
112
+ isReceiverRegistered = false
113
+ smsReceiver = null
114
+ isListening = false
115
+ }
116
+ }
117
+
118
+ override fun addListener(eventName: String) {
119
+ // Required for NativeEventEmitter; no-op.
120
+ }
121
+
122
+ override fun removeListeners(count: Double) {
123
+ unregisterReceiver()
124
+ }
125
+
126
+ override fun onHostResume() {
127
+ // Optionally re-register if we were listening and activity was recreated.
128
+ if (isListening && currentActivity != null && !isReceiverRegistered) {
129
+ currentActivity?.let { registerReceiverIfNecessary(it) }
130
+ }
131
+ }
132
+
133
+ override fun onHostPause() {
134
+ // Keep the SMS receiver registered while paused so OTP can still arrive if the user
135
+ // briefly switches away (e.g. to read the SMS). Teardown happens in onHostDestroy / invalidate.
136
+ }
137
+
138
+ override fun onHostDestroy() {
139
+ unregisterReceiver()
140
+ reactApplicationContext.removeLifecycleEventListener(this)
141
+ }
142
+
143
+ override fun invalidate() {
144
+ unregisterReceiver()
145
+ reactApplicationContext.removeLifecycleEventListener(this)
146
+ super.invalidate()
147
+ }
148
+ }
@@ -1,6 +1,10 @@
1
- import { NativeModules, TurboModuleRegistry, type TurboModule } from 'react-native';
1
+ import {
2
+ NativeModules,
3
+ TurboModuleRegistry,
4
+ type TurboModule,
5
+ } from 'react-native';
2
6
 
3
- export interface OtpAutoVerifySpec extends TurboModule {
7
+ export interface Spec extends TurboModule {
4
8
  getConstants(): { OTP_RECEIVED_EVENT: string };
5
9
  getHash(): Promise<ReadonlyArray<string>>;
6
10
  startSmsRetriever(): Promise<boolean>;
@@ -8,9 +12,9 @@ export interface OtpAutoVerifySpec extends TurboModule {
8
12
  removeListeners(count: number): void;
9
13
  }
10
14
 
11
- function getNativeModule(): OtpAutoVerifySpec {
15
+ function loadNativeModule(): Spec {
12
16
  try {
13
- return TurboModuleRegistry.getEnforcing<OtpAutoVerifySpec>('OtpAutoVerify');
17
+ return TurboModuleRegistry.getEnforcing<Spec>('OtpAutoVerify');
14
18
  } catch {
15
19
  const legacy = NativeModules.OtpAutoVerify;
16
20
  if (!legacy) {
@@ -18,8 +22,16 @@ function getNativeModule(): OtpAutoVerifySpec {
18
22
  'OtpAutoVerify native module is not available. Ensure the library is properly linked.'
19
23
  );
20
24
  }
21
- return legacy as OtpAutoVerifySpec;
25
+ return legacy as Spec;
22
26
  }
23
27
  }
24
28
 
25
- export default getNativeModule();
29
+ let cachedModule: Spec | null = null;
30
+
31
+ /** Resolves the native module on first use so importing this package does not throw before APIs run. */
32
+ export function getOtpNativeModule(): Spec {
33
+ if (cachedModule === null) {
34
+ cachedModule = loadNativeModule();
35
+ }
36
+ return cachedModule;
37
+ }
@@ -2,18 +2,32 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import { NativeEventEmitter, Platform } from 'react-native';
5
- import NativeOtpAutoVerify from './NativeOtpAutoVerify';
6
- const eventEmitter = Platform.OS === 'android' && NativeOtpAutoVerify ? new NativeEventEmitter(NativeOtpAutoVerify) : null;
7
- const OTP_RECEIVED_EVENT = NativeOtpAutoVerify.getConstants?.()?.OTP_RECEIVED_EVENT ?? 'otpReceived';
5
+ import { getOtpNativeModule } from './NativeOtpAutoVerify';
6
+
7
+ /** Must match native `OTP_RECEIVED_EVENT` (Android/iOS). */
8
+ export const OTP_RECEIVED_EVENT = 'otpReceived';
8
9
  export const TIMEOUT_MESSAGE = 'Timeout Error.';
9
10
  const DEFAULT_DIGITS = 6;
10
11
  const MIN_OTP_DIGITS = 4;
11
12
  const MAX_OTP_DIGITS = 8;
12
- function getOtpRegex(digits) {
13
- if (digits < MIN_OTP_DIGITS || digits > MAX_OTP_DIGITS) {
14
- return new RegExp(`\\b(\\d{${DEFAULT_DIGITS}})\\b`);
13
+ let androidEventEmitter;
14
+ function getAndroidEventEmitter() {
15
+ if (Platform.OS !== 'android') return null;
16
+ if (androidEventEmitter !== undefined) {
17
+ return androidEventEmitter;
18
+ }
19
+ try {
20
+ androidEventEmitter = new NativeEventEmitter(getOtpNativeModule());
21
+ return androidEventEmitter;
22
+ } catch {
23
+ androidEventEmitter = null;
24
+ return null;
15
25
  }
16
- return new RegExp(`\\b(\\d{${digits}})\\b`);
26
+ }
27
+ function getOtpRegex(digits) {
28
+ const d = digits >= MIN_OTP_DIGITS && digits <= MAX_OTP_DIGITS ? digits : DEFAULT_DIGITS;
29
+ // Prefer non-`\b` boundaries so OTPs still match after ":" and similar (e.g. "OTP:123456").
30
+ return new RegExp(`(^|[^0-9])(\\d{${d}})(?!\\d)`);
17
31
  }
18
32
  /**
19
33
  * Extracts a numeric OTP of 4–8 digits from SMS text.
@@ -24,13 +38,13 @@ export function extractOtp(sms, numberOfDigits = DEFAULT_DIGITS) {
24
38
  if (!trimmed) return null;
25
39
  const regex = getOtpRegex(numberOfDigits);
26
40
  const match = trimmed.match(regex);
27
- return match ? match[1] : null;
41
+ return match ? match[2] : null;
28
42
  }
29
43
 
30
44
  /** Returns app hash strings for the current app. Android only; iOS returns []. */
31
45
  export async function getHash() {
32
46
  if (Platform.OS !== 'android') return [];
33
- const arr = await NativeOtpAutoVerify.getHash();
47
+ const arr = await getOtpNativeModule().getHash();
34
48
  return Array.from(arr);
35
49
  }
36
50
 
@@ -41,19 +55,32 @@ const NOOP_SUBSCRIPTION = {
41
55
 
42
56
  /** Starts SMS Retriever and subscribes to OTP events. Returns subscription with remove(). On iOS, returns no-op (call remove() safely). */
43
57
  export async function activateOtpListener(handler, options) {
44
- if (Platform.OS !== 'android' || !eventEmitter) {
58
+ if (Platform.OS !== 'android') {
59
+ return NOOP_SUBSCRIPTION;
60
+ }
61
+ const emitter = getAndroidEventEmitter();
62
+ if (!emitter) {
45
63
  return NOOP_SUBSCRIPTION;
46
64
  }
47
65
  const numberOfDigits = options?.numberOfDigits ?? DEFAULT_DIGITS;
48
- const subscription = eventEmitter.addListener(OTP_RECEIVED_EVENT, (...args) => {
66
+ const subscription = emitter.addListener(OTP_RECEIVED_EVENT, (...args) => {
49
67
  const smsText = String(args[0] ?? '');
50
68
  handler(smsText, extractOtp(smsText, numberOfDigits));
51
69
  });
52
- await NativeOtpAutoVerify.startSmsRetriever();
70
+ try {
71
+ await getOtpNativeModule().startSmsRetriever();
72
+ } catch (err) {
73
+ subscription.remove();
74
+ throw err;
75
+ }
53
76
  return {
54
77
  remove: () => {
55
78
  subscription.remove();
56
- NativeOtpAutoVerify.removeListeners(0);
79
+ try {
80
+ getOtpNativeModule().removeListeners(0);
81
+ } catch {
82
+ // Native may be unavailable during teardown
83
+ }
57
84
  }
58
85
  };
59
86
  }
@@ -63,8 +90,11 @@ export async function activateOtpListener(handler, options) {
63
90
  * The native module ignores the count parameter and always unregisters the SMS receiver.
64
91
  */
65
92
  export function removeListener() {
66
- if (Platform.OS === 'android') {
67
- NativeOtpAutoVerify.removeListeners(0);
93
+ if (Platform.OS !== 'android') return;
94
+ try {
95
+ getOtpNativeModule().removeListeners(0);
96
+ } catch {
97
+ // Native not linked or already torn down
68
98
  }
69
99
  }
70
100
 
@@ -99,7 +129,9 @@ export function useOtpVerification(options = {}) {
99
129
  const hashes = await getHash();
100
130
  setHashCode(hashes[0] ?? '');
101
131
  } catch (err) {
102
- setError(err instanceof Error ? err : new Error(String(err)));
132
+ const wrapped = err instanceof Error ? err : new Error(String(err));
133
+ setError(wrapped);
134
+ return;
103
135
  }
104
136
  const sub = await activateOtpListener((smsText, extractedOtp) => {
105
137
  setSms(smsText);
@@ -134,5 +166,4 @@ export function useOtpVerification(options = {}) {
134
166
  stopListening
135
167
  }), [hashCode, otp, sms, timeoutError, error, startListening, stopListening]);
136
168
  }
137
- export { OTP_RECEIVED_EVENT };
138
169
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","NativeEventEmitter","Platform","NativeOtpAutoVerify","eventEmitter","OS","OTP_RECEIVED_EVENT","getConstants","TIMEOUT_MESSAGE","DEFAULT_DIGITS","MIN_OTP_DIGITS","MAX_OTP_DIGITS","getOtpRegex","digits","RegExp","extractOtp","sms","numberOfDigits","trimmed","trim","regex","match","getHash","arr","Array","from","NOOP_SUBSCRIPTION","remove","activateOtpListener","handler","options","subscription","addListener","args","smsText","String","startSmsRetriever","removeListeners","removeListener","useOtpVerification","hashCode","setHashCode","useState","otp","setOtp","setSms","timeoutError","setTimeoutError","error","setError","subscriptionRef","useRef","isStartingRef","stopListening","useCallback","current","startListening","hashes","err","Error","sub","extractedOtp","wrapped","cause","useEffect","useMemo"],"sourceRoot":"..\\..\\src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","NativeEventEmitter","Platform","getOtpNativeModule","OTP_RECEIVED_EVENT","TIMEOUT_MESSAGE","DEFAULT_DIGITS","MIN_OTP_DIGITS","MAX_OTP_DIGITS","androidEventEmitter","getAndroidEventEmitter","OS","undefined","getOtpRegex","digits","d","RegExp","extractOtp","sms","numberOfDigits","trimmed","trim","regex","match","getHash","arr","Array","from","NOOP_SUBSCRIPTION","remove","activateOtpListener","handler","options","emitter","subscription","addListener","args","smsText","String","startSmsRetriever","err","removeListeners","removeListener","useOtpVerification","hashCode","setHashCode","useState","otp","setOtp","setSms","timeoutError","setTimeoutError","error","setError","subscriptionRef","useRef","isStartingRef","stopListening","useCallback","current","startListening","hashes","wrapped","Error","sub","extractedOtp","cause","useEffect","useMemo"],"sourceRoot":"..\\..\\src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { type TurboModule } from 'react-native';
2
- export interface OtpAutoVerifySpec extends TurboModule {
2
+ export interface Spec extends TurboModule {
3
3
  getConstants(): {
4
4
  OTP_RECEIVED_EVENT: string;
5
5
  };
@@ -8,6 +8,6 @@ export interface OtpAutoVerifySpec extends TurboModule {
8
8
  addListener(eventName: string): void;
9
9
  removeListeners(count: number): void;
10
10
  }
11
- declare const _default: OtpAutoVerifySpec;
12
- export default _default;
11
+ /** Resolves the native module on first use so importing this package does not throw before APIs run. */
12
+ export declare function getOtpNativeModule(): Spec;
13
13
  //# sourceMappingURL=NativeOtpAutoVerify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NativeOtpAutoVerify.d.ts","sourceRoot":"","sources":["../../../src/NativeOtpAutoVerify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEpF,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,YAAY,IAAI;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;;AAgBD,wBAAiC"}
1
+ {"version":3,"file":"NativeOtpAutoVerify.d.ts","sourceRoot":"","sources":["../../../src/NativeOtpAutoVerify.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,YAAY,IAAI;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAkBD,wGAAwG;AACxG,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC"}
@@ -1,4 +1,5 @@
1
- declare const OTP_RECEIVED_EVENT: string;
1
+ /** Must match native `OTP_RECEIVED_EVENT` (Android/iOS). */
2
+ export declare const OTP_RECEIVED_EVENT = "otpReceived";
2
3
  export declare const TIMEOUT_MESSAGE = "Timeout Error.";
3
4
  export type OtpDigits = 4 | 5 | 6 | 7 | 8;
4
5
  export interface UseOtpVerificationOptions {
@@ -41,5 +42,4 @@ export declare function activateOtpListener(handler: (sms: string, extractedOtp?
41
42
  export declare function removeListener(): void;
42
43
  /** Hook for OTP verification. Call startListening() to begin; listener is stopped on unmount. */
43
44
  export declare function useOtpVerification(options?: UseOtpVerificationOptions): UseOtpVerificationResult;
44
- export { OTP_RECEIVED_EVENT };
45
45
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AASA,QAAA,MAAM,kBAAkB,QAET,CAAC;AAEhB,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAMhD,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAS1C,MAAM,WAAW,yBAAyB;IACxC,gFAAgF;IAChF,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,mCAAmC;IACnC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAC;IACtB,oHAAoH;IACpH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,mEAAmE;IACnE,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,oDAAoD;IACpD,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,cAAc,GAAE,SAA0B,GACzC,MAAM,GAAG,IAAI,CAOf;AAED,kFAAkF;AAClF,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAIjD;AAOD,2IAA2I;AAC3I,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,EAC5D,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,SAAS,CAAA;CAAE,GACvC,OAAO,CAAC,uBAAuB,CAAC,CAqBlC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAED,iGAAiG;AACjG,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CAyE1B;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAIA,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD,eAAO,MAAM,eAAe,mBAAmB,CAAC;AAMhD,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AA2B1C,MAAM,WAAW,yBAAyB;IACxC,gFAAgF;IAChF,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,mCAAmC;IACnC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAC;IACtB,oHAAoH;IACpH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,mEAAmE;IACnE,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,oDAAoD;IACpD,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,cAAc,GAAE,SAA0B,GACzC,MAAM,GAAG,IAAI,CAOf;AAED,kFAAkF;AAClF,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAIjD;AAOD,2IAA2I;AAC3I,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,EAC5D,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,SAAS,CAAA;CAAE,GACvC,OAAO,CAAC,uBAAuB,CAAC,CAoClC;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAOrC;AAED,iGAAiG;AACjG,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CA2E1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-otp-auto-verify",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "react-native-otp-auto-verify is a React Native library for automatic OTP verification on Android and iOS. It uses the Google SMS Retriever API to detect OTP codes automatically without requiring the READ_SMS permission. The library is fully Play Store compliant, improves user login experience, supports TurboModule, and works with the React Native New Architecture",
5
5
  "keywords": [
6
6
  "react-native",
@@ -62,24 +62,32 @@
62
62
  "release": "release-it --only-version"
63
63
  },
64
64
  "devDependencies": {
65
+ "@babel/eslint-parser": "^7.28.0",
65
66
  "@commitlint/config-conventional": "^19.8.1",
66
- "@eslint/compat": "^1.3.2",
67
67
  "@eslint/eslintrc": "^3.3.4",
68
- "@eslint/js": "^9.35.0",
69
- "@react-native/babel-preset": "0.83.0",
68
+ "@eslint/js": "9.35.0",
70
69
  "@react-native-community/eslint-config": "^3.2.0",
71
- "@release-it/conventional-changelog": "^10.0.1",
70
+ "@react-native-community/eslint-plugin": "^1.1.0",
71
+ "@typescript-eslint/eslint-plugin": "^8.15.0",
72
+ "@typescript-eslint/parser": "^8.15.0",
73
+ "@react-native/babel-preset": "0.83.3",
74
+ "@release-it/conventional-changelog": "^10.0.6",
72
75
  "@types/jest": "^29.5.14",
73
76
  "@types/react": "^19.2.0",
74
77
  "commitlint": "^19.8.1",
75
- "eslint": "^10.0.2",
76
- "eslint-config-prettier": "^10.1.8",
78
+ "eslint": "9.35.0",
79
+ "eslint-config-prettier": "^9.1.0",
80
+ "eslint-plugin-eslint-comments": "^3.2.0",
81
+ "eslint-plugin-ft-flow": "^2.0.1",
82
+ "eslint-plugin-jest": "^28.11.0",
77
83
  "eslint-plugin-prettier": "^5.5.4",
84
+ "eslint-plugin-react": "^7.37.0",
85
+ "eslint-plugin-react-hooks": "^4.6.0",
78
86
  "eslint-plugin-react-native": "^5.0.0",
79
- "jest": "^30.2.0",
80
- "prettier": "^2.8.8",
81
- "react": "19.2.4",
82
- "react-native": "0.83.0",
87
+ "jest": "^30.3.0",
88
+ "prettier": "^3.4.2",
89
+ "react": "19.2.5",
90
+ "react-native": "0.83.3",
83
91
  "react-native-builder-bob": "0.39.1",
84
92
  "release-it": "^19.0.4",
85
93
  "typescript": "^5.9.3"