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.
- package/README.md +60 -30
- package/android/src/main/cpp/JniOnLoad.cpp +3 -1
- package/android/src/main/cpp/PlatformAuth+Android.cpp +11 -11
- package/android/src/main/java/com/auth/AuthAdapter.kt +100 -116
- package/android/src/main/java/com/auth/NitroAuthModule.kt +8 -1
- package/ios/AuthAdapter.swift +62 -28
- package/lib/commonjs/index.js +23 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/service.js +31 -6
- package/lib/commonjs/service.js.map +1 -1
- package/lib/commonjs/use-auth.js +11 -22
- package/lib/commonjs/use-auth.js.map +1 -1
- package/lib/commonjs/utils/auth-error.js +37 -0
- package/lib/commonjs/utils/auth-error.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/service.js +31 -6
- package/lib/module/service.js.map +1 -1
- package/lib/module/use-auth.js +11 -22
- package/lib/module/use-auth.js.map +1 -1
- package/lib/module/utils/auth-error.js +30 -0
- package/lib/module/utils/auth-error.js.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +1 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/service.d.ts.map +1 -1
- package/lib/typescript/commonjs/use-auth.d.ts +2 -1
- package/lib/typescript/commonjs/use-auth.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/auth-error.d.ts +16 -0
- package/lib/typescript/commonjs/utils/auth-error.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +1 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/service.d.ts.map +1 -1
- package/lib/typescript/module/use-auth.d.ts +2 -1
- package/lib/typescript/module/use-auth.d.ts.map +1 -1
- package/lib/typescript/module/utils/auth-error.d.ts +16 -0
- package/lib/typescript/module/utils/auth-error.d.ts.map +1 -0
- package/nitrogen/generated/android/NitroAuthOnLoad.cpp +22 -17
- package/nitrogen/generated/android/NitroAuthOnLoad.hpp +13 -4
- package/package.json +7 -7
- package/src/index.ts +1 -0
- package/src/service.ts +32 -6
- package/src/use-auth.ts +21 -86
- package/src/utils/auth-error.ts +49 -0
package/ios/AuthAdapter.swift
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
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, "
|
|
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
|
-
|
|
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, "
|
|
148
|
+
completion(nil, "invalid_state")
|
|
143
149
|
return
|
|
144
150
|
}
|
|
145
|
-
|
|
151
|
+
|
|
146
152
|
guard let code = params["code"] else {
|
|
147
|
-
completion(nil, "
|
|
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
|
-
|
|
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, "
|
|
250
|
+
completion(nil, "parse_error")
|
|
240
251
|
return
|
|
241
252
|
}
|
|
242
|
-
|
|
253
|
+
|
|
243
254
|
if let errorCode = json["error"] as? String {
|
|
244
|
-
|
|
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, "
|
|
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, "
|
|
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
|
|
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
|
-
|
|
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,
|
|
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, "
|
|
556
|
+
completion(nil, "parse_error")
|
|
523
557
|
return
|
|
524
558
|
}
|
|
525
559
|
if let errorCode = json["error"] as? String {
|
|
526
|
-
completion(nil, (
|
|
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
|
|
632
|
+
completion(nil, AuthAdapter.mapError(error))
|
|
599
633
|
}
|
|
600
634
|
}
|
|
601
635
|
|
package/lib/commonjs/index.js
CHANGED
|
@@ -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":"
|
|
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":[]}
|
package/lib/commonjs/service.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
45
|
+
try {
|
|
46
|
+
return await nitroAuth.getAccessToken();
|
|
47
|
+
} catch (e) {
|
|
48
|
+
throw _authError.AuthError.from(e);
|
|
49
|
+
}
|
|
33
50
|
},
|
|
34
51
|
async refreshToken() {
|
|
35
|
-
|
|
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
|
-
|
|
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;
|
|
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":[]}
|
package/lib/commonjs/use-auth.js
CHANGED
|
@@ -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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
121
|
+
error
|
|
133
122
|
}));
|
|
134
|
-
throw
|
|
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 =
|
|
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","
|
|
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":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -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
|
package/lib/module/index.js.map
CHANGED
|
@@ -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":[]}
|
package/lib/module/service.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
34
|
+
try {
|
|
35
|
+
return await nitroAuth.revokeScopes(scopes);
|
|
36
|
+
} catch (e) {
|
|
37
|
+
throw AuthError.from(e);
|
|
38
|
+
}
|
|
26
39
|
},
|
|
27
40
|
async getAccessToken() {
|
|
28
|
-
|
|
41
|
+
try {
|
|
42
|
+
return await nitroAuth.getAccessToken();
|
|
43
|
+
} catch (e) {
|
|
44
|
+
throw AuthError.from(e);
|
|
45
|
+
}
|
|
29
46
|
},
|
|
30
47
|
async refreshToken() {
|
|
31
|
-
|
|
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
|
-
|
|
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;
|
|
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":[]}
|
package/lib/module/use-auth.js
CHANGED
|
@@ -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
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
117
|
+
error
|
|
129
118
|
}));
|
|
130
|
-
throw
|
|
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 =
|
|
132
|
+
const error = AuthError.from(e);
|
|
144
133
|
setState(prev => ({
|
|
145
134
|
...prev,
|
|
146
135
|
loading: false,
|