react-native-nitro-auth 0.5.4 → 0.5.5

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 (43) hide show
  1. package/README.md +60 -30
  2. package/android/src/main/cpp/JniOnLoad.cpp +3 -1
  3. package/android/src/main/cpp/PlatformAuth+Android.cpp +11 -11
  4. package/android/src/main/java/com/auth/AuthAdapter.kt +100 -116
  5. package/android/src/main/java/com/auth/NitroAuthModule.kt +8 -1
  6. package/ios/AuthAdapter.swift +62 -28
  7. package/lib/commonjs/index.js +23 -1
  8. package/lib/commonjs/index.js.map +1 -1
  9. package/lib/commonjs/service.js +31 -6
  10. package/lib/commonjs/service.js.map +1 -1
  11. package/lib/commonjs/use-auth.js +11 -22
  12. package/lib/commonjs/use-auth.js.map +1 -1
  13. package/lib/commonjs/utils/auth-error.js +37 -0
  14. package/lib/commonjs/utils/auth-error.js.map +1 -0
  15. package/lib/module/index.js +1 -0
  16. package/lib/module/index.js.map +1 -1
  17. package/lib/module/service.js +31 -6
  18. package/lib/module/service.js.map +1 -1
  19. package/lib/module/use-auth.js +11 -22
  20. package/lib/module/use-auth.js.map +1 -1
  21. package/lib/module/utils/auth-error.js +30 -0
  22. package/lib/module/utils/auth-error.js.map +1 -0
  23. package/lib/typescript/commonjs/index.d.ts +1 -0
  24. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  25. package/lib/typescript/commonjs/service.d.ts.map +1 -1
  26. package/lib/typescript/commonjs/use-auth.d.ts +2 -1
  27. package/lib/typescript/commonjs/use-auth.d.ts.map +1 -1
  28. package/lib/typescript/commonjs/utils/auth-error.d.ts +16 -0
  29. package/lib/typescript/commonjs/utils/auth-error.d.ts.map +1 -0
  30. package/lib/typescript/module/index.d.ts +1 -0
  31. package/lib/typescript/module/index.d.ts.map +1 -1
  32. package/lib/typescript/module/service.d.ts.map +1 -1
  33. package/lib/typescript/module/use-auth.d.ts +2 -1
  34. package/lib/typescript/module/use-auth.d.ts.map +1 -1
  35. package/lib/typescript/module/utils/auth-error.d.ts +16 -0
  36. package/lib/typescript/module/utils/auth-error.d.ts.map +1 -0
  37. package/nitrogen/generated/android/NitroAuthOnLoad.cpp +22 -17
  38. package/nitrogen/generated/android/NitroAuthOnLoad.hpp +13 -4
  39. package/package.json +7 -7
  40. package/src/index.ts +1 -0
  41. package/src/service.ts +32 -6
  42. package/src/use-auth.ts +21 -86
  43. package/src/utils/auth-error.ts +49 -0
@@ -114,37 +114,43 @@ public class AuthAdapter: NSObject {
114
114
  DispatchQueue.main.async {
115
115
  let session = ASWebAuthenticationSession(url: authUrl, callbackURLScheme: callbackScheme) { callbackURL, error in
116
116
  if let error = error {
117
- if (error as NSError).code == ASWebAuthenticationSessionError.canceledLogin.rawValue {
117
+ let nsError = error as NSError
118
+ if nsError.code == ASWebAuthenticationSessionError.canceledLogin.rawValue {
118
119
  completion(nil, "cancelled")
120
+ } else if nsError.domain.lowercased().contains("network") || nsError.code == NSURLErrorNotConnectedToInternet {
121
+ completion(nil, "network_error")
119
122
  } else {
120
- completion(nil, error.localizedDescription)
123
+ completion(nil, "unknown")
121
124
  }
122
125
  return
123
126
  }
124
-
127
+
125
128
  guard let callbackURL = callbackURL,
126
129
  let components = URLComponents(url: callbackURL, resolvingAgainstBaseURL: false) else {
127
- completion(nil, "No response from Microsoft")
130
+ completion(nil, "unknown")
128
131
  return
129
132
  }
130
-
133
+
131
134
  var params: [String: String] = [:]
132
135
  for item in components.queryItems ?? [] {
133
136
  params[item.name] = item.value
134
137
  }
135
-
138
+
136
139
  if let errorCode = params["error"] {
137
- completion(nil, params["error_description"] ?? errorCode)
140
+ // OAuth error codes are already structured (e.g. "access_denied").
141
+ // Map well-known ones; fall back to "unknown".
142
+ let mapped = mapOAuthError(errorCode)
143
+ completion(nil, mapped)
138
144
  return
139
145
  }
140
-
146
+
141
147
  guard let returnedState = params["state"], returnedState == state else {
142
- completion(nil, "State mismatch - possible CSRF attack")
148
+ completion(nil, "invalid_state")
143
149
  return
144
150
  }
145
-
151
+
146
152
  guard let code = params["code"] else {
147
- completion(nil, "No authorization code in response")
153
+ completion(nil, "unknown")
148
154
  return
149
155
  }
150
156
 
@@ -230,30 +236,34 @@ public class AuthAdapter: NSObject {
230
236
  URLSession.shared.dataTask(with: request) { data, response, error in
231
237
  DispatchQueue.main.async {
232
238
  if let error = error {
233
- completion(nil, error.localizedDescription)
239
+ let nsError = error as NSError
240
+ if nsError.code == NSURLErrorNotConnectedToInternet || nsError.code == NSURLErrorTimedOut {
241
+ completion(nil, "network_error")
242
+ } else {
243
+ completion(nil, "network_error")
244
+ }
234
245
  return
235
246
  }
236
-
247
+
237
248
  guard let data = data,
238
249
  let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else {
239
- completion(nil, "Failed to parse token response")
250
+ completion(nil, "parse_error")
240
251
  return
241
252
  }
242
-
253
+
243
254
  if let errorCode = json["error"] as? String {
244
- let desc = json["error_description"] as? String ?? errorCode
245
- completion(nil, desc)
255
+ completion(nil, mapOAuthError(errorCode))
246
256
  return
247
257
  }
248
-
258
+
249
259
  guard let idToken = json["id_token"] as? String else {
250
- completion(nil, "No id_token in token response")
260
+ completion(nil, "no_id_token")
251
261
  return
252
262
  }
253
-
263
+
254
264
  let claims = decodeJwt(idToken)
255
265
  guard claims["nonce"] == expectedNonce else {
256
- completion(nil, "Nonce mismatch - token may be replayed")
266
+ completion(nil, "invalid_nonce")
257
267
  return
258
268
  }
259
269
 
@@ -311,7 +321,7 @@ public class AuthAdapter: NSObject {
311
321
 
312
322
  private static func handleGoogleResult(_ result: GIDSignInResult?, error: Error?, completion: @escaping (NSDictionary?, String?) -> Void) {
313
323
  if let error = error {
314
- completion(nil, error.localizedDescription)
324
+ completion(nil, mapError(error))
315
325
  return
316
326
  }
317
327
 
@@ -339,15 +349,39 @@ public class AuthAdapter: NSObject {
339
349
 
340
350
  static func mapError(_ error: Error) -> String {
341
351
  let nsError = error as NSError
352
+ // GIDSignIn error codes
342
353
  if nsError.domain == "com.google.GIDSignIn" {
343
- if nsError.code == -5 { return "cancelled" }
354
+ switch nsError.code {
355
+ case -5: return "cancelled" // GIDSignInErrorCodeCanceled
356
+ case -4: return "network_error" // GIDSignInErrorCodeNoCurrentUser (used for network issues)
357
+ default: break
358
+ }
359
+ }
360
+ // ASAuthorizationError codes (Apple Sign-In / ASWebAuthenticationSession)
361
+ if nsError.domain == ASAuthorizationError.errorDomain {
362
+ switch nsError.code {
363
+ case ASAuthorizationError.canceled.rawValue: return "cancelled"
364
+ case ASAuthorizationError.invalidResponse.rawValue: return "configuration_error"
365
+ default: return "unknown"
366
+ }
344
367
  }
345
368
  let msg = error.localizedDescription.lowercased()
346
369
  if msg.contains("cancel") { return "cancelled" }
347
- if msg.contains("network") { return "network_error" }
370
+ if msg.contains("network") || msg.contains("internet") || msg.contains("offline") { return "network_error" }
348
371
  return "unknown"
349
372
  }
350
373
 
374
+ /// Maps OAuth 2.0 error codes (returned in query params or JSON) to AuthErrorCode values.
375
+ private static func mapOAuthError(_ oauthCode: String) -> String {
376
+ switch oauthCode {
377
+ case "access_denied": return "cancelled"
378
+ case "invalid_client", "unauthorized_client", "invalid_scope": return "configuration_error"
379
+ case "invalid_grant", "invalid_request": return "token_error"
380
+ case "temporarily_unavailable", "server_error": return "network_error"
381
+ default: return "unknown"
382
+ }
383
+ }
384
+
351
385
  @objc
352
386
  public static func addScopes(scopes: [String], completion: @escaping (NSDictionary?, String?) -> Void) {
353
387
  if let currentUser = GIDSignIn.sharedInstance.currentUser {
@@ -514,16 +548,16 @@ public class AuthAdapter: NSObject {
514
548
  URLSession.shared.dataTask(with: request) { data, response, error in
515
549
  DispatchQueue.main.async {
516
550
  if let error = error {
517
- completion(nil, error.localizedDescription)
551
+ completion(nil, "network_error")
518
552
  return
519
553
  }
520
554
  guard let data = data,
521
555
  let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else {
522
- completion(nil, "Token refresh failed")
556
+ completion(nil, "parse_error")
523
557
  return
524
558
  }
525
559
  if let errorCode = json["error"] as? String {
526
- completion(nil, (json["error_description"] as? String) ?? errorCode)
560
+ completion(nil, AuthAdapter.mapOAuthError(errorCode))
527
561
  return
528
562
  }
529
563
  let idToken = json["id_token"] as? String ?? ""
@@ -595,7 +629,7 @@ class AppleSignInDelegate: NSObject, ASAuthorizationControllerDelegate {
595
629
  }
596
630
 
597
631
  func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
598
- completion(nil, error.localizedDescription)
632
+ completion(nil, AuthAdapter.mapError(error))
599
633
  }
600
634
  }
601
635
 
@@ -5,14 +5,35 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  var _exportNames = {
7
7
  useAuth: true,
8
- AuthService: true
8
+ AuthService: true,
9
+ AuthError: true,
10
+ isAuthErrorCode: true,
11
+ toAuthErrorCode: true
9
12
  };
13
+ Object.defineProperty(exports, "AuthError", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _authError.AuthError;
17
+ }
18
+ });
10
19
  Object.defineProperty(exports, "AuthService", {
11
20
  enumerable: true,
12
21
  get: function () {
13
22
  return _service.AuthService;
14
23
  }
15
24
  });
25
+ Object.defineProperty(exports, "isAuthErrorCode", {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _authError.isAuthErrorCode;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "toAuthErrorCode", {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _authError.toAuthErrorCode;
35
+ }
36
+ });
16
37
  Object.defineProperty(exports, "useAuth", {
17
38
  enumerable: true,
18
39
  get: function () {
@@ -45,4 +66,5 @@ Object.keys(_socialButton).forEach(function (key) {
45
66
  });
46
67
  var _useAuth = require("./use-auth.js");
47
68
  var _service = require("./service");
69
+ var _authError = require("./utils/auth-error.js");
48
70
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_AuthNitro","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_socialButton","_useAuth","_service"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,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,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,aAAA,EAAAV,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,MAAAS,aAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,aAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,QAAA,GAAAd,OAAA;AACA,IAAAe,QAAA,GAAAf,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_AuthNitro","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_socialButton","_useAuth","_service","_authError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,UAAA,EAAAI,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,MAAAL,UAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,UAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,aAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,aAAA,EAAAV,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,MAAAS,aAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,aAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,QAAA,GAAAd,OAAA;AACA,IAAAe,QAAA,GAAAf,OAAA;AACA,IAAAgB,UAAA,GAAAhB,OAAA","ignoreList":[]}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.AuthService = void 0;
7
7
  var _reactNativeNitroModules = require("react-native-nitro-modules");
8
+ var _authError = require("./utils/auth-error.js");
8
9
  const nitroAuth = _reactNativeNitroModules.NitroModules.createHybridObject("Auth");
9
10
  const AuthService = exports.AuthService = {
10
11
  get name() {
@@ -20,25 +21,49 @@ const AuthService = exports.AuthService = {
20
21
  return nitroAuth.hasPlayServices;
21
22
  },
22
23
  async login(provider, options) {
23
- return nitroAuth.login(provider, options);
24
+ try {
25
+ return await nitroAuth.login(provider, options);
26
+ } catch (e) {
27
+ throw _authError.AuthError.from(e);
28
+ }
24
29
  },
25
30
  async requestScopes(scopes) {
26
- return nitroAuth.requestScopes(scopes);
31
+ try {
32
+ return await nitroAuth.requestScopes(scopes);
33
+ } catch (e) {
34
+ throw _authError.AuthError.from(e);
35
+ }
27
36
  },
28
37
  async revokeScopes(scopes) {
29
- return nitroAuth.revokeScopes(scopes);
38
+ try {
39
+ return await nitroAuth.revokeScopes(scopes);
40
+ } catch (e) {
41
+ throw _authError.AuthError.from(e);
42
+ }
30
43
  },
31
44
  async getAccessToken() {
32
- return nitroAuth.getAccessToken();
45
+ try {
46
+ return await nitroAuth.getAccessToken();
47
+ } catch (e) {
48
+ throw _authError.AuthError.from(e);
49
+ }
33
50
  },
34
51
  async refreshToken() {
35
- return nitroAuth.refreshToken();
52
+ try {
53
+ return await nitroAuth.refreshToken();
54
+ } catch (e) {
55
+ throw _authError.AuthError.from(e);
56
+ }
36
57
  },
37
58
  logout() {
38
59
  nitroAuth.logout();
39
60
  },
40
61
  async silentRestore() {
41
- return nitroAuth.silentRestore();
62
+ try {
63
+ return await nitroAuth.silentRestore();
64
+ } catch (e) {
65
+ throw _authError.AuthError.from(e);
66
+ }
42
67
  },
43
68
  onAuthStateChanged(callback) {
44
69
  return nitroAuth.onAuthStateChanged(user => {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","nitroAuth","NitroModules","createHybridObject","AuthService","exports","name","currentUser","grantedScopes","hasPlayServices","login","provider","options","requestScopes","scopes","revokeScopes","getAccessToken","refreshToken","logout","silentRestore","onAuthStateChanged","callback","user","onTokensRefreshed","setLoggingEnabled","enabled","dispose","equals","other"],"sourceRoot":"../../src","sources":["service.ts"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AASA,MAAMC,SAAS,GAAGC,qCAAY,CAACC,kBAAkB,CAAO,MAAM,CAAC;AACxD,MAAMC,WAAiB,GAAAC,OAAA,CAAAD,WAAA,GAAG;EAC/B,IAAIE,IAAIA,CAAA,EAAG;IACT,OAAOL,SAAS,CAACK,IAAI;EACvB,CAAC;EAED,IAAIC,WAAWA,CAAA,EAAG;IAChB,OAAON,SAAS,CAACM,WAAW;EAC9B,CAAC;EAED,IAAIC,aAAaA,CAAA,EAAG;IAClB,OAAOP,SAAS,CAACO,aAAa;EAChC,CAAC;EAED,IAAIC,eAAeA,CAAA,EAAG;IACpB,OAAOR,SAAS,CAACQ,eAAe;EAClC,CAAC;EAED,MAAMC,KAAKA,CAACC,QAAsB,EAAEC,OAAsB,EAAE;IAC1D,OAAOX,SAAS,CAACS,KAAK,CAACC,QAAQ,EAAEC,OAAO,CAAC;EAC3C,CAAC;EAED,MAAMC,aAAaA,CAACC,MAAgB,EAAE;IACpC,OAAOb,SAAS,CAACY,aAAa,CAACC,MAAM,CAAC;EACxC,CAAC;EAED,MAAMC,YAAYA,CAACD,MAAgB,EAAE;IACnC,OAAOb,SAAS,CAACc,YAAY,CAACD,MAAM,CAAC;EACvC,CAAC;EAED,MAAME,cAAcA,CAAA,EAAG;IACrB,OAAOf,SAAS,CAACe,cAAc,CAAC,CAAC;EACnC,CAAC;EAED,MAAMC,YAAYA,CAAA,EAAG;IACnB,OAAOhB,SAAS,CAACgB,YAAY,CAAC,CAAC;EACjC,CAAC;EAEDC,MAAMA,CAAA,EAAG;IACPjB,SAAS,CAACiB,MAAM,CAAC,CAAC;EACpB,CAAC;EAED,MAAMC,aAAaA,CAAA,EAAG;IACpB,OAAOlB,SAAS,CAACkB,aAAa,CAAC,CAAC;EAClC,CAAC;EAEDC,kBAAkBA,CAACC,QAA8C,EAAE;IACjE,OAAOpB,SAAS,CAACmB,kBAAkB,CAAEE,IAAI,IAAK;MAC5CD,QAAQ,CAACC,IAAI,CAAC;IAChB,CAAC,CAAC;EACJ,CAAC;EAEDC,iBAAiBA,CAACF,QAAsC,EAAE;IACxD,OAAOpB,SAAS,CAACsB,iBAAiB,CAACF,QAAQ,CAAC;EAC9C,CAAC;EAEDG,iBAAiBA,CAACC,OAAgB,EAAE;IAClCxB,SAAS,CAACuB,iBAAiB,CAACC,OAAO,CAAC;EACtC,CAAC;EAEDC,OAAOA,CAAA,EAAG;IACRzB,SAAS,CAACyB,OAAO,CAAC,CAAC;EACrB,CAAC;EAEDC,MAAMA,CAACC,KAAoC,EAAW;IACpD,OAAO3B,SAAS,CAAC0B,MAAM,CAACC,KAAK,CAAC;EAChC;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","_authError","nitroAuth","NitroModules","createHybridObject","AuthService","exports","name","currentUser","grantedScopes","hasPlayServices","login","provider","options","e","AuthError","from","requestScopes","scopes","revokeScopes","getAccessToken","refreshToken","logout","silentRestore","onAuthStateChanged","callback","user","onTokensRefreshed","setLoggingEnabled","enabled","dispose","equals","other"],"sourceRoot":"../../src","sources":["service.ts"],"mappings":"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","ignoreList":[]}
@@ -6,24 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.useAuth = useAuth;
7
7
  var _react = require("react");
8
8
  var _service = require("./service");
9
+ var _authError = require("./utils/auth-error.js");
9
10
  const areScopesEqual = (left, right) => {
10
- if (left.length !== right.length) {
11
- return false;
12
- }
13
- for (let index = 0; index < left.length; index += 1) {
14
- if (left[index] !== right[index]) {
15
- return false;
16
- }
11
+ if (left.length !== right.length) return false;
12
+ for (let i = 0; i < left.length; i += 1) {
13
+ if (left[i] !== right[i]) return false;
17
14
  }
18
15
  return true;
19
16
  };
20
- class AuthHookError extends Error {
21
- constructor(message, underlyingError) {
22
- super(message);
23
- this.name = "AuthHookError";
24
- this.underlyingError = underlyingError;
25
- }
26
- }
27
17
  function useAuth() {
28
18
  const [state, setState] = (0, _react.useState)({
29
19
  user: _service.AuthService.currentUser,
@@ -56,7 +46,7 @@ function useAuth() {
56
46
  await _service.AuthService.login(provider, options);
57
47
  syncStateFromService(false, undefined);
58
48
  } catch (e) {
59
- const error = e instanceof Error ? e : new Error(String(e));
49
+ const error = _authError.AuthError.from(e);
60
50
  setState(prev => ({
61
51
  ...prev,
62
52
  loading: false,
@@ -84,7 +74,7 @@ function useAuth() {
84
74
  await _service.AuthService.requestScopes(newScopes);
85
75
  syncStateFromService(false, undefined);
86
76
  } catch (e) {
87
- const error = e instanceof Error ? e : new Error(String(e));
77
+ const error = _authError.AuthError.from(e);
88
78
  setState(prev => ({
89
79
  ...prev,
90
80
  loading: false,
@@ -103,7 +93,7 @@ function useAuth() {
103
93
  await _service.AuthService.revokeScopes(scopesToRevoke);
104
94
  syncStateFromService(false, undefined);
105
95
  } catch (e) {
106
- const error = e instanceof Error ? e : new Error(String(e));
96
+ const error = _authError.AuthError.from(e);
107
97
  setState(prev => ({
108
98
  ...prev,
109
99
  loading: false,
@@ -124,14 +114,13 @@ function useAuth() {
124
114
  syncStateFromService(false, undefined);
125
115
  return tokens;
126
116
  } catch (e) {
127
- const msg = e instanceof Error ? e.message : String(e);
128
- const authError = new AuthHookError(msg, _service.AuthService.currentUser?.underlyingError);
117
+ const error = _authError.AuthError.from(e);
129
118
  setState(prev => ({
130
119
  ...prev,
131
120
  loading: false,
132
- error: authError
121
+ error
133
122
  }));
134
- throw authError;
123
+ throw error;
135
124
  }
136
125
  }, [syncStateFromService]);
137
126
  const silentRestore = (0, _react.useCallback)(async () => {
@@ -144,7 +133,7 @@ function useAuth() {
144
133
  await _service.AuthService.silentRestore();
145
134
  syncStateFromService(false, undefined);
146
135
  } catch (e) {
147
- const error = e instanceof Error ? e : new Error(String(e));
136
+ const error = _authError.AuthError.from(e);
148
137
  setState(prev => ({
149
138
  ...prev,
150
139
  loading: false,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_service","areScopesEqual","left","right","length","index","AuthHookError","Error","constructor","message","underlyingError","name","useAuth","state","setState","useState","user","AuthService","currentUser","scopes","grantedScopes","loading","error","undefined","syncStateFromService","useCallback","nextLoading","nextError","nextUser","nextScopes","prev","login","provider","options","e","String","logout","requestScopes","newScopes","revokeScopes","scopesToRevoke","getAccessToken","refreshToken","tokens","msg","authError","silentRestore","useEffect","unsubscribe","onAuthStateChanged","useMemo","hasPlayServices"],"sourceRoot":"../../src","sources":["use-auth.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_service","_authError","areScopesEqual","left","right","length","i","useAuth","state","setState","useState","user","AuthService","currentUser","scopes","grantedScopes","loading","error","undefined","syncStateFromService","useCallback","nextLoading","nextError","nextUser","nextScopes","prev","login","provider","options","e","AuthError","from","logout","requestScopes","newScopes","revokeScopes","scopesToRevoke","getAccessToken","refreshToken","tokens","silentRestore","useEffect","unsubscribe","onAuthStateChanged","useMemo","hasPlayServices"],"sourceRoot":"../../src","sources":["use-auth.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AuthError = void 0;
7
+ exports.isAuthErrorCode = isAuthErrorCode;
8
+ exports.toAuthErrorCode = toAuthErrorCode;
9
+ const AUTH_ERROR_CODES = new Set(["cancelled", "timeout", "popup_blocked", "network_error", "configuration_error", "unsupported_provider", "invalid_state", "invalid_nonce", "token_error", "no_id_token", "parse_error", "refresh_failed", "unknown"]);
10
+ function isAuthErrorCode(value) {
11
+ return AUTH_ERROR_CODES.has(value);
12
+ }
13
+ function toAuthErrorCode(raw) {
14
+ return isAuthErrorCode(raw) ? raw : "unknown";
15
+ }
16
+
17
+ /**
18
+ * Typed error thrown by all AuthService operations.
19
+ *
20
+ * - `code` — always a valid `AuthErrorCode`, safe to switch on
21
+ * - `underlyingMessage` — the raw platform message when it differs from `code`
22
+ */
23
+ class AuthError extends Error {
24
+ constructor(raw) {
25
+ const message = raw instanceof Error ? raw.message : String(raw);
26
+ const code = toAuthErrorCode(message);
27
+ super(code);
28
+ this.name = "AuthError";
29
+ this.code = code;
30
+ this.underlyingMessage = code !== message ? message : undefined;
31
+ }
32
+ static from(e) {
33
+ return e instanceof AuthError ? e : new AuthError(e);
34
+ }
35
+ }
36
+ exports.AuthError = AuthError;
37
+ //# sourceMappingURL=auth-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AUTH_ERROR_CODES","Set","isAuthErrorCode","value","has","toAuthErrorCode","raw","AuthError","Error","constructor","message","String","code","name","underlyingMessage","undefined","from","e","exports"],"sourceRoot":"../../../src","sources":["utils/auth-error.ts"],"mappings":";;;;;;;;AAEA,MAAMA,gBAAqC,GAAG,IAAIC,GAAG,CAAgB,CACnE,WAAW,EACX,SAAS,EACT,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,SAAS,CACV,CAAC;AAEK,SAASC,eAAeA,CAACC,KAAa,EAA0B;EACrE,OAAOH,gBAAgB,CAACI,GAAG,CAACD,KAAK,CAAC;AACpC;AAEO,SAASE,eAAeA,CAACC,GAAW,EAAiB;EAC1D,OAAOJ,eAAe,CAACI,GAAG,CAAC,GAAGA,GAAG,GAAG,SAAS;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,SAAS,SAASC,KAAK,CAAC;EAInCC,WAAWA,CAACH,GAAY,EAAE;IACxB,MAAMI,OAAO,GAAGJ,GAAG,YAAYE,KAAK,GAAGF,GAAG,CAACI,OAAO,GAAGC,MAAM,CAACL,GAAG,CAAC;IAChE,MAAMM,IAAI,GAAGP,eAAe,CAACK,OAAO,CAAC;IACrC,KAAK,CAACE,IAAI,CAAC;IACX,IAAI,CAACC,IAAI,GAAG,WAAW;IACvB,IAAI,CAACD,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACE,iBAAiB,GAAGF,IAAI,KAAKF,OAAO,GAAGA,OAAO,GAAGK,SAAS;EACjE;EAEA,OAAOC,IAAIA,CAACC,CAAU,EAAa;IACjC,OAAOA,CAAC,YAAYV,SAAS,GAAGU,CAAC,GAAG,IAAIV,SAAS,CAACU,CAAC,CAAC;EACtD;AACF;AAACC,OAAA,CAAAX,SAAA,GAAAA,SAAA","ignoreList":[]}
@@ -4,4 +4,5 @@ export * from "./Auth.nitro.js";
4
4
  export * from "./ui/social-button";
5
5
  export { useAuth } from "./use-auth.js";
6
6
  export { AuthService } from "./service";
7
+ export { AuthError, isAuthErrorCode, toAuthErrorCode } from "./utils/auth-error.js";
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useAuth","AuthService"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,iBAAc;AAC5B,cAAc,oBAAoB;AAClC,SAASA,OAAO,QAA4B,eAAY;AACxD,SAASC,WAAW,QAAQ,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["useAuth","AuthService","AuthError","isAuthErrorCode","toAuthErrorCode"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,iBAAc;AAC5B,cAAc,oBAAoB;AAClC,SAASA,OAAO,QAA4B,eAAY;AACxD,SAASC,WAAW,QAAQ,WAAW;AACvC,SAASC,SAAS,EAAEC,eAAe,EAAEC,eAAe,QAAQ,uBAAoB","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { NitroModules } from "react-native-nitro-modules";
4
+ import { AuthError } from "./utils/auth-error.js";
4
5
  const nitroAuth = NitroModules.createHybridObject("Auth");
5
6
  export const AuthService = {
6
7
  get name() {
@@ -16,25 +17,49 @@ export const AuthService = {
16
17
  return nitroAuth.hasPlayServices;
17
18
  },
18
19
  async login(provider, options) {
19
- return nitroAuth.login(provider, options);
20
+ try {
21
+ return await nitroAuth.login(provider, options);
22
+ } catch (e) {
23
+ throw AuthError.from(e);
24
+ }
20
25
  },
21
26
  async requestScopes(scopes) {
22
- return nitroAuth.requestScopes(scopes);
27
+ try {
28
+ return await nitroAuth.requestScopes(scopes);
29
+ } catch (e) {
30
+ throw AuthError.from(e);
31
+ }
23
32
  },
24
33
  async revokeScopes(scopes) {
25
- return nitroAuth.revokeScopes(scopes);
34
+ try {
35
+ return await nitroAuth.revokeScopes(scopes);
36
+ } catch (e) {
37
+ throw AuthError.from(e);
38
+ }
26
39
  },
27
40
  async getAccessToken() {
28
- return nitroAuth.getAccessToken();
41
+ try {
42
+ return await nitroAuth.getAccessToken();
43
+ } catch (e) {
44
+ throw AuthError.from(e);
45
+ }
29
46
  },
30
47
  async refreshToken() {
31
- return nitroAuth.refreshToken();
48
+ try {
49
+ return await nitroAuth.refreshToken();
50
+ } catch (e) {
51
+ throw AuthError.from(e);
52
+ }
32
53
  },
33
54
  logout() {
34
55
  nitroAuth.logout();
35
56
  },
36
57
  async silentRestore() {
37
- return nitroAuth.silentRestore();
58
+ try {
59
+ return await nitroAuth.silentRestore();
60
+ } catch (e) {
61
+ throw AuthError.from(e);
62
+ }
38
63
  },
39
64
  onAuthStateChanged(callback) {
40
65
  return nitroAuth.onAuthStateChanged(user => {
@@ -1 +1 @@
1
- {"version":3,"names":["NitroModules","nitroAuth","createHybridObject","AuthService","name","currentUser","grantedScopes","hasPlayServices","login","provider","options","requestScopes","scopes","revokeScopes","getAccessToken","refreshToken","logout","silentRestore","onAuthStateChanged","callback","user","onTokensRefreshed","setLoggingEnabled","enabled","dispose","equals","other"],"sourceRoot":"../../src","sources":["service.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AASzD,MAAMC,SAAS,GAAGD,YAAY,CAACE,kBAAkB,CAAO,MAAM,CAAC;AAC/D,OAAO,MAAMC,WAAiB,GAAG;EAC/B,IAAIC,IAAIA,CAAA,EAAG;IACT,OAAOH,SAAS,CAACG,IAAI;EACvB,CAAC;EAED,IAAIC,WAAWA,CAAA,EAAG;IAChB,OAAOJ,SAAS,CAACI,WAAW;EAC9B,CAAC;EAED,IAAIC,aAAaA,CAAA,EAAG;IAClB,OAAOL,SAAS,CAACK,aAAa;EAChC,CAAC;EAED,IAAIC,eAAeA,CAAA,EAAG;IACpB,OAAON,SAAS,CAACM,eAAe;EAClC,CAAC;EAED,MAAMC,KAAKA,CAACC,QAAsB,EAAEC,OAAsB,EAAE;IAC1D,OAAOT,SAAS,CAACO,KAAK,CAACC,QAAQ,EAAEC,OAAO,CAAC;EAC3C,CAAC;EAED,MAAMC,aAAaA,CAACC,MAAgB,EAAE;IACpC,OAAOX,SAAS,CAACU,aAAa,CAACC,MAAM,CAAC;EACxC,CAAC;EAED,MAAMC,YAAYA,CAACD,MAAgB,EAAE;IACnC,OAAOX,SAAS,CAACY,YAAY,CAACD,MAAM,CAAC;EACvC,CAAC;EAED,MAAME,cAAcA,CAAA,EAAG;IACrB,OAAOb,SAAS,CAACa,cAAc,CAAC,CAAC;EACnC,CAAC;EAED,MAAMC,YAAYA,CAAA,EAAG;IACnB,OAAOd,SAAS,CAACc,YAAY,CAAC,CAAC;EACjC,CAAC;EAEDC,MAAMA,CAAA,EAAG;IACPf,SAAS,CAACe,MAAM,CAAC,CAAC;EACpB,CAAC;EAED,MAAMC,aAAaA,CAAA,EAAG;IACpB,OAAOhB,SAAS,CAACgB,aAAa,CAAC,CAAC;EAClC,CAAC;EAEDC,kBAAkBA,CAACC,QAA8C,EAAE;IACjE,OAAOlB,SAAS,CAACiB,kBAAkB,CAAEE,IAAI,IAAK;MAC5CD,QAAQ,CAACC,IAAI,CAAC;IAChB,CAAC,CAAC;EACJ,CAAC;EAEDC,iBAAiBA,CAACF,QAAsC,EAAE;IACxD,OAAOlB,SAAS,CAACoB,iBAAiB,CAACF,QAAQ,CAAC;EAC9C,CAAC;EAEDG,iBAAiBA,CAACC,OAAgB,EAAE;IAClCtB,SAAS,CAACqB,iBAAiB,CAACC,OAAO,CAAC;EACtC,CAAC;EAEDC,OAAOA,CAAA,EAAG;IACRvB,SAAS,CAACuB,OAAO,CAAC,CAAC;EACrB,CAAC;EAEDC,MAAMA,CAACC,KAAoC,EAAW;IACpD,OAAOzB,SAAS,CAACwB,MAAM,CAACC,KAAK,CAAC;EAChC;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["NitroModules","AuthError","nitroAuth","createHybridObject","AuthService","name","currentUser","grantedScopes","hasPlayServices","login","provider","options","e","from","requestScopes","scopes","revokeScopes","getAccessToken","refreshToken","logout","silentRestore","onAuthStateChanged","callback","user","onTokensRefreshed","setLoggingEnabled","enabled","dispose","equals","other"],"sourceRoot":"../../src","sources":["service.ts"],"mappings":"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","ignoreList":[]}
@@ -2,24 +2,14 @@
2
2
 
3
3
  import { useState, useEffect, useCallback, useMemo } from "react";
4
4
  import { AuthService } from "./service";
5
+ import { AuthError } from "./utils/auth-error.js";
5
6
  const areScopesEqual = (left, right) => {
6
- if (left.length !== right.length) {
7
- return false;
8
- }
9
- for (let index = 0; index < left.length; index += 1) {
10
- if (left[index] !== right[index]) {
11
- return false;
12
- }
7
+ if (left.length !== right.length) return false;
8
+ for (let i = 0; i < left.length; i += 1) {
9
+ if (left[i] !== right[i]) return false;
13
10
  }
14
11
  return true;
15
12
  };
16
- class AuthHookError extends Error {
17
- constructor(message, underlyingError) {
18
- super(message);
19
- this.name = "AuthHookError";
20
- this.underlyingError = underlyingError;
21
- }
22
- }
23
13
  export function useAuth() {
24
14
  const [state, setState] = useState({
25
15
  user: AuthService.currentUser,
@@ -52,7 +42,7 @@ export function useAuth() {
52
42
  await AuthService.login(provider, options);
53
43
  syncStateFromService(false, undefined);
54
44
  } catch (e) {
55
- const error = e instanceof Error ? e : new Error(String(e));
45
+ const error = AuthError.from(e);
56
46
  setState(prev => ({
57
47
  ...prev,
58
48
  loading: false,
@@ -80,7 +70,7 @@ export function useAuth() {
80
70
  await AuthService.requestScopes(newScopes);
81
71
  syncStateFromService(false, undefined);
82
72
  } catch (e) {
83
- const error = e instanceof Error ? e : new Error(String(e));
73
+ const error = AuthError.from(e);
84
74
  setState(prev => ({
85
75
  ...prev,
86
76
  loading: false,
@@ -99,7 +89,7 @@ export function useAuth() {
99
89
  await AuthService.revokeScopes(scopesToRevoke);
100
90
  syncStateFromService(false, undefined);
101
91
  } catch (e) {
102
- const error = e instanceof Error ? e : new Error(String(e));
92
+ const error = AuthError.from(e);
103
93
  setState(prev => ({
104
94
  ...prev,
105
95
  loading: false,
@@ -120,14 +110,13 @@ export function useAuth() {
120
110
  syncStateFromService(false, undefined);
121
111
  return tokens;
122
112
  } catch (e) {
123
- const msg = e instanceof Error ? e.message : String(e);
124
- const authError = new AuthHookError(msg, AuthService.currentUser?.underlyingError);
113
+ const error = AuthError.from(e);
125
114
  setState(prev => ({
126
115
  ...prev,
127
116
  loading: false,
128
- error: authError
117
+ error
129
118
  }));
130
- throw authError;
119
+ throw error;
131
120
  }
132
121
  }, [syncStateFromService]);
133
122
  const silentRestore = useCallback(async () => {
@@ -140,7 +129,7 @@ export function useAuth() {
140
129
  await AuthService.silentRestore();
141
130
  syncStateFromService(false, undefined);
142
131
  } catch (e) {
143
- const error = e instanceof Error ? e : new Error(String(e));
132
+ const error = AuthError.from(e);
144
133
  setState(prev => ({
145
134
  ...prev,
146
135
  loading: false,