otpless-headless-rn 2.2.0 → 3.0.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.
@@ -11,13 +11,15 @@ class OtplessHeadlessRN: RCTEventEmitter, OtplessResponseDelegate {
11
11
 
12
12
  @objc(commitResponse:)
13
13
  func commitResponse(response: [String: Any]?) {
14
- guard let response = response else {
14
+ guard let response = response else { return }
15
+ guard let responseTypeString = response["responseType"] as? String,
16
+ let responseType = ResponseTypes(rawValue: responseTypeString) else {
17
+ print("OtplessHeadlessRN: commitResponse — unknown responseType, ignoring call")
15
18
  return
16
19
  }
17
- let responseType = response["responseType"] as? String ?? "FAILED"
18
- let statusCode = response["statusCode"] as? Int ?? -25000
20
+ let statusCode = response["statusCode"] as? Int ?? 0
19
21
  let responseDict = response["response"] as? [String: Any]
20
- let otplessResponse = OtplessResponse(responseType: ResponseTypes(rawValue: responseType) ?? .FAILED, response: responseDict, statusCode: statusCode)
22
+ let otplessResponse = OtplessResponse(responseType: responseType, response: responseDict, statusCode: statusCode)
21
23
  Otpless.shared.commitOtplessResponse(otplessResponse)
22
24
  }
23
25
 
@@ -34,35 +36,40 @@ class OtplessHeadlessRN: RCTEventEmitter, OtplessResponseDelegate {
34
36
 
35
37
  private func createOtplessRequest(args: [String: Any]) -> OtplessRequest {
36
38
  let otplessRequest = OtplessRequest()
37
- if let phone = args["phone"] as? String,
38
- let countryCode = args["countryCode"] as? String {
39
+
40
+ if let phone = args["phone"] as? String, !phone.isEmpty {
41
+ let countryCode = args["countryCode"] as? String ?? ""
39
42
  otplessRequest.set(phoneNumber: phone, withCountryCode: countryCode)
40
- } else if let email = args["email"] as? String {
43
+ }
44
+ if let email = args["email"] as? String, !email.isEmpty {
41
45
  otplessRequest.set(email: email)
42
- } else if let channelType = args["channelType"] as? String {
46
+ }
47
+ if let channelType = args["channelType"] as? String, !channelType.isEmpty {
43
48
  otplessRequest.set(channelType: OtplessChannelType.fromString(channelType))
44
49
  }
45
- if let otp = args["otp"] as? String {
50
+ if let requestId = args["requestId"] as? String, !requestId.isEmpty {
51
+ otplessRequest.set(fromBackend: requestId)
52
+ }
53
+ if let otp = args["otp"] as? String, !otp.isEmpty {
46
54
  otplessRequest.set(otp: otp)
47
55
  }
48
- if let deliveryChannel = args["deliveryChannel"] as? String,
49
- !deliveryChannel.isEmpty {
50
- otplessRequest.set(deliveryChannelForTransaction: deliveryChannel)
56
+ if let deliveryChannel = args["deliveryChannel"] as? String, !deliveryChannel.isEmpty {
57
+ otplessRequest.set(deliveryChannelForTransaction: deliveryChannel.uppercased())
51
58
  }
52
- if let otpExpiry = args["expiry"] as? String,
53
- !otpExpiry.isEmpty {
59
+ if let otpExpiry = args["expiry"] as? String, !otpExpiry.isEmpty {
54
60
  otplessRequest.set(otpExpiry: otpExpiry)
55
61
  }
56
- if let otpLength = args["otpLength"] as? String,
57
- !otpLength.isEmpty {
62
+ if let otpLength = args["otpLength"] as? String, !otpLength.isEmpty {
58
63
  otplessRequest.set(otpLength: otpLength)
59
64
  }
60
-
61
- if let tid = args["tid"] as? String,
62
- !tid.isEmpty {
65
+ if let tid = args["tid"] as? String, !tid.isEmpty {
63
66
  otplessRequest.set(tid: tid)
64
67
  }
65
-
68
+ if let modeString = args["deviceFingerprintMode"] as? String,
69
+ let mode = fingerprintModeFromString(modeString.uppercased()) {
70
+ otplessRequest.set(deviceFingerprintMode: mode)
71
+ }
72
+
66
73
  return otplessRequest
67
74
  }
68
75
 
@@ -84,7 +91,86 @@ class OtplessHeadlessRN: RCTEventEmitter, OtplessResponseDelegate {
84
91
  Otpless.shared.setLoggerDelegate(self)
85
92
  }
86
93
  }
94
+
95
+ @objc(setMfaEnabled:)
96
+ func setMfaEnabled(enabled: Bool) {
97
+ Otpless.shared.setMfaEnabled(enabled)
98
+ }
99
+
100
+ private func fingerprintModeFromString(_ name: String) -> DeviceFingerprintMode? {
101
+ switch name {
102
+ case "NONE": return .NONE
103
+ case "ASYNC": return .ASYNC
104
+ case "SYNC": return .SYNC
105
+ default: return nil
106
+ }
107
+ }
108
+
109
+ @objc(startBackgroundAuth:resolver:rejecter:)
110
+ func startBackgroundAuth(config: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
111
+ let isForeground = (config["isForeground"] as? Bool) ?? true
112
+ let otp = config["otp"] as? String
113
+ let tid = config["tid"] as? String
114
+ let mode = (config["deviceFingerprintMode"] as? String)
115
+ .flatMap { fingerprintModeFromString($0.uppercased()) } ?? .NONE
116
+ Otpless.shared.setDeviceFingerprintMode(mode)
117
+ let authConfig = OtplessAuthCofig(isForeground: isForeground, otp: otp, tid: tid)
118
+ DispatchQueue.main.async {
119
+ let rvc = UIApplication.shared.delegate?.window??.rootViewController
120
+ ?? self.getRootViewControllerFromWindowScene()
121
+ guard let vc = rvc else {
122
+ resolve(false)
123
+ return
124
+ }
125
+ Task(priority: .userInitiated) {
126
+ let result = await Otpless.shared.startAuth(parent: vc, config: authConfig)
127
+ resolve(result)
128
+ }
129
+ }
130
+ }
87
131
 
132
+ private func authEventFromString(_ name: String) -> AuthEvent? {
133
+ switch name {
134
+ case "AUTH_INITIATED": return .AUTH_INITIATED
135
+ case "AUTH_SUCCESS": return .AUTH_SUCCESS
136
+ case "AUTH_FAILED": return .AUTH_FAILED
137
+ default: return nil
138
+ }
139
+ }
140
+
141
+ private func providerTypeFromString(_ name: String) -> ProviderType? {
142
+ switch name {
143
+ case "CLIENT": return .CLIENT
144
+ case "OTPLESS": return .OTPLESS
145
+ default: return nil
146
+ }
147
+ }
148
+
149
+ @objc(userAuthEvent:fallback:providerType:providerInfo:)
150
+ func userAuthEvent(event: String, fallback: Bool, providerType: String, providerInfo: [String: Any]?) {
151
+ guard let authEvent = authEventFromString(event) else { return }
152
+ guard let provider = providerTypeFromString(providerType) else { return }
153
+ var info: [String: String] = [:]
154
+ if let raw = providerInfo {
155
+ for (key, value) in raw {
156
+ if let s = value as? String {
157
+ info[key] = s
158
+ } else if let n = value as? NSNumber {
159
+ info[key] = n.stringValue
160
+ } else if let arr = value as? [Any],
161
+ let data = try? JSONSerialization.data(withJSONObject: arr),
162
+ let s = String(data: data, encoding: .utf8) {
163
+ info[key] = s
164
+ } else if let dict = value as? [String: Any],
165
+ let data = try? JSONSerialization.data(withJSONObject: dict),
166
+ let s = String(data: data, encoding: .utf8) {
167
+ info[key] = s
168
+ }
169
+ }
170
+ }
171
+ Otpless.shared.userAuthEvent(event: authEvent, fallback: fallback, providerType: provider, providerInfo: info)
172
+ }
173
+
88
174
  override func supportedEvents() -> [String]! {
89
175
  return ["OTPlessEventResult"]
90
176
  }
@@ -94,23 +180,35 @@ class OtplessHeadlessRN: RCTEventEmitter, OtplessResponseDelegate {
94
180
  resolve(Otpless.shared.isSdkReady())
95
181
  }
96
182
 
97
- @objc(initialize:loginUri:)
98
- func initialize(appId: String, loginUri: String?) {
183
+ @objc(initialize:loginUri:sslPinning:buildPlatform:)
184
+ func initialize(appId: String, loginUri: String?, sslPinning: String?, buildPlatform: String?) {
185
+ let sslKind: OtplessSslKind = sslPinning == "enabled" ? .sslEnabled : .sslDisabled
186
+ // Wrapper attribution, computed in JS (which owns the single source of
187
+ // truth for the package version) and arriving as
188
+ // "react-native-ios-<packageVersion>". This bridge is a dumb forwarder; the
189
+ // literal fallback covers an older JS layer that does not send the
190
+ // argument, so the token can never be blank.
191
+ let trimmedBuildPlatform = buildPlatform?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
192
+ let buildPlatformToken = trimmedBuildPlatform.isEmpty ? "react-native-ios" : trimmedBuildPlatform
99
193
  DispatchQueue.main.async {
194
+ // Tells the native SDK this session came through the React Native
195
+ // wrapper, so device telemetry reports
196
+ // platform = "otpless-headless(react-native-ios-<version>)" instead of
197
+ // the default "otpless-headless(ios)". Must be set before initialise,
198
+ // which is what emits the event.
100
199
  let rootViewController = UIApplication.shared.delegate?.window??.rootViewController
101
- if rootViewController != nil {
200
+ if let rvc = rootViewController {
102
201
  Otpless.shared.setResponseDelegate(self)
103
- Otpless.shared.initialise(withAppId: appId, vc: rootViewController!)
202
+ Otpless.shared.setBuildPlatform(buildPlatformToken)
203
+ Otpless.shared.initialise(withAppId: appId, loginUri: loginUri, vc: rvc, sslKind: sslKind)
104
204
  return
105
205
  }
106
-
107
- // Could not get an instance of RootViewController. Try to get RootViewController from `windowScene`.
206
+
108
207
  if #available(iOS 13.0, *) {
109
- let windowSceneVC = self.getRootViewControllerFromWindowScene()
110
- if windowSceneVC != nil {
208
+ if let windowSceneVC = self.getRootViewControllerFromWindowScene() {
111
209
  Otpless.shared.setResponseDelegate(self)
112
- Otpless.shared.initialise(withAppId: appId, vc: rootViewController!)
113
- return
210
+ Otpless.shared.setBuildPlatform(buildPlatformToken)
211
+ Otpless.shared.initialise(withAppId: appId, loginUri: loginUri, vc: windowSceneVC, sslKind: sslKind)
114
212
  }
115
213
  }
116
214
  }
@@ -8,6 +8,7 @@ var _exportNames = {
8
8
  };
9
9
  exports.OtplessHeadlessModule = void 0;
10
10
  var _reactNative = require("react-native");
11
+ var _version = require("./version");
11
12
  var _models = require("./models");
12
13
  Object.keys(_models).forEach(function (key) {
13
14
  if (key === "default" || key === "__esModule") return;
@@ -29,6 +30,23 @@ const OtplessHeadlessRN = _reactNative.NativeModules.OtplessHeadlessRN ? _reactN
29
30
  throw new Error(LINKING_ERROR);
30
31
  }
31
32
  });
33
+
34
+ /**
35
+ * Wrapper-attribution token sent to the native SDKs at `initialize`.
36
+ *
37
+ * Computed here, in JS, so `otplessRnVersion` is the single source of truth:
38
+ * the Kotlin and Swift bridges only forward whatever arrives over the bridge,
39
+ * instead of each hardcoding a version that would drift on every release.
40
+ *
41
+ * Emitted by the native device-telemetry event as:
42
+ * - Android - `otpless-headless-sdk(react-native-android-<version>)`
43
+ * - iOS - `otpless-headless(react-native-ios-<version>)`
44
+ *
45
+ * The `react-native-` prefix distinguishes this package from the sibling
46
+ * wrappers (`react-native-lite-*`, `react-native-turbo-*`), which share the
47
+ * same iOS telemetry prefix.
48
+ */
49
+ const BUILD_PLATFORM = `react-native-${_reactNative.Platform.OS}-${_version.otplessRnVersion}`;
32
50
  class OtplessHeadlessModule {
33
51
  eventEmitter = null;
34
52
  constructor() {
@@ -38,12 +56,15 @@ class OtplessHeadlessModule {
38
56
  var _this$eventEmitter;
39
57
  (_this$eventEmitter = this.eventEmitter) === null || _this$eventEmitter === void 0 || _this$eventEmitter.removeAllListeners('OTPlessEventResult');
40
58
  }
41
- initialize(appId, loginUri = null) {
59
+ initialize(appId, loginUri = null, options = null) {
42
60
  if (this.eventEmitter == null) {
43
61
  this.eventEmitter = new _reactNative.NativeEventEmitter(OtplessHeadlessRN);
44
62
  }
45
- // call the native method
46
- OtplessHeadlessRN.initialize(appId, loginUri);
63
+ // call the native method; sslPinning is a plain string so an older
64
+ // native module degrades to pinning disabled. buildPlatform is internal
65
+ // wrapper attribution, not a merchant-facing parameter; the native bridges
66
+ // fall back to a bare "react-native-<platform>" if it ever arrives blank.
67
+ OtplessHeadlessRN.initialize(appId, loginUri, (options === null || options === void 0 ? void 0 : options.sslPinning) ?? 'disabled', BUILD_PLATFORM);
47
68
  }
48
69
  setResponseCallback(callback) {
49
70
  var _this$eventEmitter2;
@@ -76,6 +97,33 @@ class OtplessHeadlessModule {
76
97
  setDevLogging(enable) {
77
98
  OtplessHeadlessRN.setDevLogging(enable);
78
99
  }
100
+ setMfaEnabled(enabled) {
101
+ OtplessHeadlessRN.setMfaEnabled(enabled);
102
+ }
103
+ async startBackgroundAuth(config) {
104
+ return await OtplessHeadlessRN.startBackgroundAuth(config);
105
+ }
106
+ startInBackground(input) {
107
+ if (_reactNative.Platform.OS === 'android') {
108
+ OtplessHeadlessRN.startInBackground(input);
109
+ }
110
+ }
111
+ setSimBindingEnabled(enabled) {
112
+ if (_reactNative.Platform.OS === 'android') {
113
+ OtplessHeadlessRN.setSimBindingEnabled(enabled);
114
+ }
115
+ }
116
+ async checkSimBindingStatus() {
117
+ if (_reactNative.Platform.OS === 'android') {
118
+ return await OtplessHeadlessRN.checkSimBindingStatus();
119
+ }
120
+ return false;
121
+ }
122
+ async clearSimBinding() {
123
+ if (_reactNative.Platform.OS === 'android') {
124
+ await OtplessHeadlessRN.clearSimBinding();
125
+ }
126
+ }
79
127
  async isSdkReady() {
80
128
  return await OtplessHeadlessRN.isSdkReady();
81
129
  }
@@ -85,14 +133,8 @@ class OtplessHeadlessModule {
85
133
  }
86
134
  return false;
87
135
  }
88
-
89
- // Android only — OtplessBM (iOS) has no equivalent.
90
- userAuthEvent(event, providerType, fallback = false, providerInfo = {} // `any` avoids Record<string,string> conflicts across RN versions
91
- ) {
92
- if (_reactNative.Platform.OS === 'android') {
93
- // args reordered to match Kotlin bridge: (event, fallback, providerType, providerInfo)
94
- OtplessHeadlessRN.userAuthEvent(event, fallback, providerType, providerInfo);
95
- }
136
+ userAuthEvent(event, providerType, fallback = false, providerInfo = {}) {
137
+ OtplessHeadlessRN.userAuthEvent(event, fallback, providerType, providerInfo);
96
138
  }
97
139
  }
98
140
  exports.OtplessHeadlessModule = OtplessHeadlessModule;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_models","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","LINKING_ERROR","Platform","select","ios","default","OtplessHeadlessRN","NativeModules","Proxy","Error","OtplessHeadlessModule","eventEmitter","constructor","clearListener","_this$eventEmitter","removeAllListeners","initialize","appId","loginUri","NativeEventEmitter","setResponseCallback","callback","_this$eventEmitter2","addListener","start","input","commitResponse","response","isWhatsappInstalledForAndroid","OS","isWhatsappInstalled","cleanup","decimateAll","toLowerCase","setDevLogging","enable","isSdkReady","initTrueCaller","requestMap","userAuthEvent","event","providerType","fallback","providerInfo"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_version","_models","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","LINKING_ERROR","Platform","select","ios","default","OtplessHeadlessRN","NativeModules","Proxy","Error","BUILD_PLATFORM","OS","otplessRnVersion","OtplessHeadlessModule","eventEmitter","constructor","clearListener","_this$eventEmitter","removeAllListeners","initialize","appId","loginUri","options","NativeEventEmitter","sslPinning","setResponseCallback","callback","_this$eventEmitter2","addListener","start","input","commitResponse","response","isWhatsappInstalledForAndroid","isWhatsappInstalled","cleanup","decimateAll","toLowerCase","setDevLogging","enable","setMfaEnabled","enabled","startBackgroundAuth","config","startInBackground","setSimBindingEnabled","checkSimBindingStatus","clearSimBinding","isSdkReady","initTrueCaller","requestMap","userAuthEvent","event","providerType","fallback","providerInfo"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.otplessRnVersion = void 0;
7
+ /**
8
+ * This package's own version, kept in lock-step with `version` in
9
+ * `package.json`.
10
+ *
11
+ * Internal only: this module is deliberately **not** re-exported from
12
+ * `src/index.tsx` (which exports `OtplessHeadlessModule` and `./models`), so it
13
+ * never becomes merchant-facing API. It exists so the wrapper-attribution token
14
+ * sent to the native SDKs at `initialize`
15
+ * (`react-native-android-<version>` / `react-native-ios-<version>`) has a
16
+ * single source of truth in TypeScript instead of being duplicated in Kotlin
17
+ * and Swift, where it would silently drift on every release.
18
+ *
19
+ * `src/__tests__/version.test.ts` reads `package.json` and fails if this
20
+ * constant falls out of sync, so a forgotten bump breaks CI rather than
21
+ * shipping a wrong token.
22
+ */
23
+ const otplessRnVersion = exports.otplessRnVersion = '3.0.0';
24
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["otplessRnVersion","exports"],"sourceRoot":"../../src","sources":["version.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG,OAAO","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import { NativeModules, Platform, NativeEventEmitter } from 'react-native';
2
+ import { otplessRnVersion } from './version';
2
3
  const LINKING_ERROR = `The package 'otpless-headless-rn' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
3
4
  ios: "- You have run 'pod install'\n",
4
5
  default: ''
@@ -8,6 +9,23 @@ const OtplessHeadlessRN = NativeModules.OtplessHeadlessRN ? NativeModules.Otples
8
9
  throw new Error(LINKING_ERROR);
9
10
  }
10
11
  });
12
+
13
+ /**
14
+ * Wrapper-attribution token sent to the native SDKs at `initialize`.
15
+ *
16
+ * Computed here, in JS, so `otplessRnVersion` is the single source of truth:
17
+ * the Kotlin and Swift bridges only forward whatever arrives over the bridge,
18
+ * instead of each hardcoding a version that would drift on every release.
19
+ *
20
+ * Emitted by the native device-telemetry event as:
21
+ * - Android - `otpless-headless-sdk(react-native-android-<version>)`
22
+ * - iOS - `otpless-headless(react-native-ios-<version>)`
23
+ *
24
+ * The `react-native-` prefix distinguishes this package from the sibling
25
+ * wrappers (`react-native-lite-*`, `react-native-turbo-*`), which share the
26
+ * same iOS telemetry prefix.
27
+ */
28
+ const BUILD_PLATFORM = `react-native-${Platform.OS}-${otplessRnVersion}`;
11
29
  class OtplessHeadlessModule {
12
30
  eventEmitter = null;
13
31
  constructor() {
@@ -17,12 +35,15 @@ class OtplessHeadlessModule {
17
35
  var _this$eventEmitter;
18
36
  (_this$eventEmitter = this.eventEmitter) === null || _this$eventEmitter === void 0 || _this$eventEmitter.removeAllListeners('OTPlessEventResult');
19
37
  }
20
- initialize(appId, loginUri = null) {
38
+ initialize(appId, loginUri = null, options = null) {
21
39
  if (this.eventEmitter == null) {
22
40
  this.eventEmitter = new NativeEventEmitter(OtplessHeadlessRN);
23
41
  }
24
- // call the native method
25
- OtplessHeadlessRN.initialize(appId, loginUri);
42
+ // call the native method; sslPinning is a plain string so an older
43
+ // native module degrades to pinning disabled. buildPlatform is internal
44
+ // wrapper attribution, not a merchant-facing parameter; the native bridges
45
+ // fall back to a bare "react-native-<platform>" if it ever arrives blank.
46
+ OtplessHeadlessRN.initialize(appId, loginUri, (options === null || options === void 0 ? void 0 : options.sslPinning) ?? 'disabled', BUILD_PLATFORM);
26
47
  }
27
48
  setResponseCallback(callback) {
28
49
  var _this$eventEmitter2;
@@ -55,6 +76,33 @@ class OtplessHeadlessModule {
55
76
  setDevLogging(enable) {
56
77
  OtplessHeadlessRN.setDevLogging(enable);
57
78
  }
79
+ setMfaEnabled(enabled) {
80
+ OtplessHeadlessRN.setMfaEnabled(enabled);
81
+ }
82
+ async startBackgroundAuth(config) {
83
+ return await OtplessHeadlessRN.startBackgroundAuth(config);
84
+ }
85
+ startInBackground(input) {
86
+ if (Platform.OS === 'android') {
87
+ OtplessHeadlessRN.startInBackground(input);
88
+ }
89
+ }
90
+ setSimBindingEnabled(enabled) {
91
+ if (Platform.OS === 'android') {
92
+ OtplessHeadlessRN.setSimBindingEnabled(enabled);
93
+ }
94
+ }
95
+ async checkSimBindingStatus() {
96
+ if (Platform.OS === 'android') {
97
+ return await OtplessHeadlessRN.checkSimBindingStatus();
98
+ }
99
+ return false;
100
+ }
101
+ async clearSimBinding() {
102
+ if (Platform.OS === 'android') {
103
+ await OtplessHeadlessRN.clearSimBinding();
104
+ }
105
+ }
58
106
  async isSdkReady() {
59
107
  return await OtplessHeadlessRN.isSdkReady();
60
108
  }
@@ -64,14 +112,8 @@ class OtplessHeadlessModule {
64
112
  }
65
113
  return false;
66
114
  }
67
-
68
- // Android only — OtplessBM (iOS) has no equivalent.
69
- userAuthEvent(event, providerType, fallback = false, providerInfo = {} // `any` avoids Record<string,string> conflicts across RN versions
70
- ) {
71
- if (Platform.OS === 'android') {
72
- // args reordered to match Kotlin bridge: (event, fallback, providerType, providerInfo)
73
- OtplessHeadlessRN.userAuthEvent(event, fallback, providerType, providerInfo);
74
- }
115
+ userAuthEvent(event, providerType, fallback = false, providerInfo = {}) {
116
+ OtplessHeadlessRN.userAuthEvent(event, fallback, providerType, providerInfo);
75
117
  }
76
118
  }
77
119
  export { OtplessHeadlessModule };
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","NativeEventEmitter","LINKING_ERROR","select","ios","default","OtplessHeadlessRN","Proxy","get","Error","OtplessHeadlessModule","eventEmitter","constructor","clearListener","_this$eventEmitter","removeAllListeners","initialize","appId","loginUri","setResponseCallback","callback","_this$eventEmitter2","addListener","start","input","commitResponse","response","isWhatsappInstalledForAndroid","OS","isWhatsappInstalled","cleanup","decimateAll","toLowerCase","setDevLogging","enable","isSdkReady","initTrueCaller","requestMap","userAuthEvent","event","providerType","fallback","providerInfo"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","NativeEventEmitter","otplessRnVersion","LINKING_ERROR","select","ios","default","OtplessHeadlessRN","Proxy","get","Error","BUILD_PLATFORM","OS","OtplessHeadlessModule","eventEmitter","constructor","clearListener","_this$eventEmitter","removeAllListeners","initialize","appId","loginUri","options","sslPinning","setResponseCallback","callback","_this$eventEmitter2","addListener","start","input","commitResponse","response","isWhatsappInstalledForAndroid","isWhatsappInstalled","cleanup","decimateAll","toLowerCase","setDevLogging","enable","setMfaEnabled","enabled","startBackgroundAuth","config","startInBackground","setSimBindingEnabled","checkSimBindingStatus","clearSimBinding","isSdkReady","initTrueCaller","requestMap","userAuthEvent","event","providerType","fallback","providerInfo"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * This package's own version, kept in lock-step with `version` in
3
+ * `package.json`.
4
+ *
5
+ * Internal only: this module is deliberately **not** re-exported from
6
+ * `src/index.tsx` (which exports `OtplessHeadlessModule` and `./models`), so it
7
+ * never becomes merchant-facing API. It exists so the wrapper-attribution token
8
+ * sent to the native SDKs at `initialize`
9
+ * (`react-native-android-<version>` / `react-native-ios-<version>`) has a
10
+ * single source of truth in TypeScript instead of being duplicated in Kotlin
11
+ * and Swift, where it would silently drift on every release.
12
+ *
13
+ * `src/__tests__/version.test.ts` reads `package.json` and fails if this
14
+ * constant falls out of sync, so a forgotten bump breaks CI rather than
15
+ * shipping a wrong token.
16
+ */
17
+ export const otplessRnVersion = '3.0.0';
18
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["otplessRnVersion"],"sourceRoot":"../../src","sources":["version.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,gBAAgB,GAAG,OAAO","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { OtplessTruecallerRequest, OtplessAuthEvent, OtplessProviderType } from './models';
1
+ import type { OtplessTruecallerRequest, OtplessAuthEvent, OtplessProviderType, OtplessRequestInput, OtplessBackgroundAuthConfig, OtplessInitOptions } from './models';
2
2
  interface OtplessResultCallback {
3
3
  (result: any): void;
4
4
  }
@@ -6,14 +6,20 @@ declare class OtplessHeadlessModule {
6
6
  private eventEmitter;
7
7
  constructor();
8
8
  clearListener(): void;
9
- initialize(appId: String, loginUri?: string | null): void;
9
+ initialize(appId: string, loginUri?: string | null, options?: OtplessInitOptions | null): void;
10
10
  setResponseCallback(callback: OtplessResultCallback): void;
11
- start(input: any): void;
11
+ start(input: OtplessRequestInput): void;
12
12
  commitResponse(response: any): void;
13
13
  isWhatsappInstalledForAndroid(): Promise<boolean>;
14
14
  cleanup(): void;
15
15
  decimateAll(): void;
16
16
  setDevLogging(enable: boolean): void;
17
+ setMfaEnabled(enabled: boolean): void;
18
+ startBackgroundAuth(config: OtplessBackgroundAuthConfig): Promise<boolean>;
19
+ startInBackground(input: OtplessRequestInput): void;
20
+ setSimBindingEnabled(enabled: boolean): void;
21
+ checkSimBindingStatus(): Promise<boolean>;
22
+ clearSimBinding(): Promise<void>;
17
23
  isSdkReady(): Promise<boolean>;
18
24
  initTrueCaller(requestMap: OtplessTruecallerRequest): Promise<boolean>;
19
25
  userAuthEvent(event: OtplessAuthEvent, providerType: OtplessProviderType, fallback?: boolean, providerInfo?: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAmBlB,UAAU,qBAAqB;IAC7B,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;CACrB;AAED,cAAM,qBAAqB;IACzB,OAAO,CAAC,YAAY,CAAmC;;IAMvD,aAAa;IAIb,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW;IAQxD,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB;IAInD,KAAK,CAAC,KAAK,EAAE,GAAG;IAIhB,cAAc,CAAC,QAAQ,EAAE,GAAG;IAKtB,6BAA6B,IAAI,OAAO,CAAC,OAAO,CAAC;IASvD,OAAO;IAIP,WAAW;IAMX,aAAa,CAAC,MAAM,EAAE,OAAO;IAIvB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,cAAc,CAAC,UAAU,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ5E,aAAa,CACX,KAAK,EAAE,gBAAgB,EACvB,YAAY,EAAE,mBAAmB,EACjC,QAAQ,GAAE,OAAe,EACzB,YAAY,GAAE,GAAQ;CAYzB;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACjC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAqClB,UAAU,qBAAqB;IAC7B,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;CACrB;AAED,cAAM,qBAAqB;IACzB,OAAO,CAAC,YAAY,CAAmC;;IAMvD,aAAa;IAIb,UAAU,CACR,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,OAAO,GAAE,kBAAkB,GAAG,IAAW;IAiB3C,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB;IAInD,KAAK,CAAC,KAAK,EAAE,mBAAmB;IAIhC,cAAc,CAAC,QAAQ,EAAE,GAAG;IAKtB,6BAA6B,IAAI,OAAO,CAAC,OAAO,CAAC;IASvD,OAAO;IAIP,WAAW;IAMX,aAAa,CAAC,MAAM,EAAE,OAAO;IAI7B,aAAa,CAAC,OAAO,EAAE,OAAO;IAIxB,mBAAmB,CACvB,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,OAAO,CAAC;IAInB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB;IAM5C,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAM/B,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAOzC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,cAAc,CAAC,UAAU,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAO5E,aAAa,CACX,KAAK,EAAE,gBAAgB,EACvB,YAAY,EAAE,mBAAmB,EACjC,QAAQ,GAAE,OAAe,EACzB,YAAY,GAAE,GAAQ;CASzB;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACjC,cAAc,UAAU,CAAC"}
@@ -13,7 +13,7 @@ export interface OtplessTruecallerConfig {
13
13
  buttonColor?: number;
14
14
  buttonTextColor?: number;
15
15
  }
16
- export type OTScope = "profile" | "phone" | "open_id" | "offline_access" | "email" | "address";
16
+ export type OTScope = 'profile' | 'phone' | 'open_id' | 'offline_access' | 'email' | 'address';
17
17
  export type OTFooterType = 'footer_type_skip' | 'footer_type_another_mobile_no' | 'footer_type_another_method' | 'footer_type_manually' | 'footer_type_later';
18
18
  export type OTButtonShape = 'button_shape_rounded' | 'button_shape_rectangle';
19
19
  export type OTVerifyOption = 'option_verify_only_tc_users' | 'option_verify_all_users';
@@ -22,4 +22,38 @@ export type OTLoginPrefixText = 'login_text_prefix_to_get_started' | 'login_text
22
22
  export type OTCtaText = 'cta_text_proceed' | 'cta_text_continue' | 'cta_text_accept' | 'cta_text_confirm';
23
23
  export type OtplessAuthEvent = 'AUTH_INITIATED' | 'AUTH_SUCCESS' | 'AUTH_FAILED';
24
24
  export type OtplessProviderType = 'CLIENT' | 'OTPLESS';
25
+ export interface OtplessRequestInput {
26
+ phone?: string;
27
+ /** Required together with `phone`. */
28
+ countryCode?: string;
29
+ email?: string;
30
+ channelType?: OtplessChannelType;
31
+ otp?: string;
32
+ expiry?: string;
33
+ otpLength?: string;
34
+ deliveryChannel?: string;
35
+ tid?: string;
36
+ /** Backend-generated or WebAuthn request ID. */
37
+ requestId?: string;
38
+ deviceFingerprintMode?: OtplessDeviceFingerprintMode;
39
+ }
40
+ export interface OtplessBackgroundAuthConfig {
41
+ /** Defaults to `true` — presents the OneTap bottom sheet. `false` runs in background when possible. */
42
+ isForeground?: boolean;
43
+ otp?: string;
44
+ tid?: string;
45
+ deviceFingerprintMode?: OtplessDeviceFingerprintMode;
46
+ }
47
+ export type OtplessChannelType = 'WHATSAPP' | 'GOOGLE_SDK' | 'FACEBOOK_SDK' | 'APPLE' | 'APPLE_SDK' | 'GMAIL' | 'TWITTER' | 'DISCORD' | 'SLACK' | 'FACEBOOK' | 'LINKEDIN' | 'MICROSOFT' | 'LINE' | 'LINEAR' | 'NOTION' | 'TWITCH' | 'GITHUB' | 'BITBUCKET' | 'ATLASSIAN' | 'GITLAB' | 'TRUE_CALLER';
48
+ export type OtplessDeviceFingerprintMode = 'NONE' | 'ASYNC' | 'SYNC';
49
+ /**
50
+ * SSL pinning mode for `initialize`. `'disabled'` (default) keeps the
51
+ * 2.3.x behaviour. `'enabled'` pins `sigma.otpless.app`; a pin mismatch
52
+ * (e.g. an intercepting proxy) fails closed with `FAILED` / statusCode `5004`.
53
+ */
54
+ export type OtplessSslPinning = 'enabled' | 'disabled';
55
+ export interface OtplessInitOptions {
56
+ /** Defaults to `'disabled'`. */
57
+ sslPinning?: OtplessSslPinning;
58
+ }
25
59
  //# sourceMappingURL=models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.tsx"],"names":[],"mappings":"AACA,MAAM,WAAW,wBAAwB;IACrC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CACzB;AAGD,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,gBAAgB,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/F,MAAM,MAAM,YAAY,GAClB,kBAAkB,GAClB,+BAA+B,GAC/B,4BAA4B,GAC5B,sBAAsB,GACtB,mBAAmB,CAAC;AAE1B,MAAM,MAAM,aAAa,GACnB,sBAAsB,GACtB,wBAAwB,CAAC;AAG/B,MAAM,MAAM,cAAc,GACpB,6BAA6B,GAC7B,yBAAyB,CAAC;AAGhC,MAAM,MAAM,gBAAgB,GACtB,+BAA+B,GAC/B,kCAAkC,GAClC,gCAAgC,GAChC,wCAAwC,GACxC,mCAAmC,GACnC,sCAAsC,GACtC,kCAAkC,GAClC,iCAAiC,GACjC,yCAAyC,GACzC,8CAA8C,GAC9C,0CAA0C,GAC1C,yCAAyC,GACzC,mCAAmC,GACnC,yCAAyC,GACzC,sCAAsC,GACtC,2CAA2C,GAC3C,mCAAmC,GACnC,yCAAyC,GACzC,8CAA8C,GAC9C,2CAA2C,GAC3C,kCAAkC,GAClC,sCAAsC,GACtC,yCAAyC,GACzC,0CAA0C,GAC1C,uCAAuC,CAAC;AAG9C,MAAM,MAAM,iBAAiB,GACvB,kCAAkC,GAClC,+BAA+B,GAC/B,kCAAkC,GAClC,6CAA6C,GAC7C,+BAA+B,GAC/B,4CAA4C,GAC5C,gDAAgD,GAChD,iDAAiD,GACjD,kCAAkC,GAClC,gCAAgC,GAChC,uCAAuC,GACvC,8BAA8B,GAC9B,mCAAmC,GACnC,kCAAkC,GAClC,gCAAgC,GAChC,gDAAgD,CAAC;AAGvD,MAAM,MAAM,SAAS,GACf,kBAAkB,GAClB,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,cAAc,GAAG,aAAa,CAAC;AAEjF,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * This package's own version, kept in lock-step with `version` in
3
+ * `package.json`.
4
+ *
5
+ * Internal only: this module is deliberately **not** re-exported from
6
+ * `src/index.tsx` (which exports `OtplessHeadlessModule` and `./models`), so it
7
+ * never becomes merchant-facing API. It exists so the wrapper-attribution token
8
+ * sent to the native SDKs at `initialize`
9
+ * (`react-native-android-<version>` / `react-native-ios-<version>`) has a
10
+ * single source of truth in TypeScript instead of being duplicated in Kotlin
11
+ * and Swift, where it would silently drift on every release.
12
+ *
13
+ * `src/__tests__/version.test.ts` reads `package.json` and fails if this
14
+ * constant falls out of sync, so a forgotten bump breaks CI rather than
15
+ * shipping a wrong token.
16
+ */
17
+ export declare const otplessRnVersion = "3.0.0";
18
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAC"}
@@ -17,7 +17,7 @@ Pod::Spec.new do |s|
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
18
 
19
19
  s.dependency "React-Core"
20
- s.dependency 'OtplessBM/Core', '2.0.9'
20
+ s.dependency 'OtplessBM/Core', '3.0.1'
21
21
  s.swift_versions = ['5.5']
22
22
 
23
23
  # Don't install the dependencies when we run `pod install` in the old architecture.