react-native-nitro-auth 0.5.3 → 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/build.gradle +2 -5
- package/android/src/main/cpp/JniOnLoad.cpp +3 -1
- package/android/src/main/cpp/PlatformAuth+Android.cpp +95 -29
- package/android/src/main/java/com/auth/AuthAdapter.kt +124 -126
- package/android/src/main/java/com/auth/NitroAuthModule.kt +8 -1
- package/cpp/AuthCache.cpp +0 -44
- package/cpp/AuthCache.hpp +0 -7
- package/cpp/HybridAuth.cpp +20 -2
- package/cpp/HybridAuth.hpp +1 -0
- package/ios/AuthAdapter.swift +64 -28
- package/lib/commonjs/Auth.web.js +96 -43
- package/lib/commonjs/Auth.web.js.map +1 -1
- package/lib/commonjs/index.js +23 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/service.js +33 -8
- package/lib/commonjs/service.js.map +1 -1
- package/lib/commonjs/use-auth.js +51 -54
- 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/Auth.web.js +96 -43
- package/lib/module/Auth.web.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/service.js +33 -8
- package/lib/module/service.js.map +1 -1
- package/lib/module/use-auth.js +51 -54
- 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/Auth.web.d.ts +7 -0
- package/lib/typescript/commonjs/Auth.web.d.ts.map +1 -1
- 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/Auth.web.d.ts +7 -0
- package/lib/typescript/module/Auth.web.d.ts.map +1 -1
- 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/react-native-nitro-auth.podspec +1 -1
- package/src/Auth.web.ts +124 -50
- package/src/index.ts +1 -0
- package/src/service.ts +34 -8
- package/src/use-auth.ts +81 -114
- package/src/utils/auth-error.ts +49 -0
- package/ios/KeychainStore.swift +0 -43
package/lib/module/use-auth.js
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import { useState, useEffect, useCallback, useMemo } from "react";
|
|
4
4
|
import { AuthService } from "./service";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
import { AuthError } from "./utils/auth-error.js";
|
|
6
|
+
const areScopesEqual = (left, right) => {
|
|
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;
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
return true;
|
|
12
|
+
};
|
|
12
13
|
export function useAuth() {
|
|
13
14
|
const [state, setState] = useState({
|
|
14
15
|
user: AuthService.currentUser,
|
|
@@ -16,6 +17,21 @@ export function useAuth() {
|
|
|
16
17
|
loading: false,
|
|
17
18
|
error: undefined
|
|
18
19
|
});
|
|
20
|
+
const syncStateFromService = useCallback((nextLoading, nextError) => {
|
|
21
|
+
const nextUser = AuthService.currentUser;
|
|
22
|
+
const nextScopes = AuthService.grantedScopes;
|
|
23
|
+
setState(prev => {
|
|
24
|
+
if (prev.loading === nextLoading && prev.error === nextError && prev.user === nextUser && areScopesEqual(prev.scopes, nextScopes)) {
|
|
25
|
+
return prev;
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
user: nextUser,
|
|
29
|
+
scopes: nextScopes,
|
|
30
|
+
loading: nextLoading,
|
|
31
|
+
error: nextError
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
}, []);
|
|
19
35
|
const login = useCallback(async (provider, options) => {
|
|
20
36
|
setState(prev => ({
|
|
21
37
|
...prev,
|
|
@@ -24,14 +40,9 @@ export function useAuth() {
|
|
|
24
40
|
}));
|
|
25
41
|
try {
|
|
26
42
|
await AuthService.login(provider, options);
|
|
27
|
-
|
|
28
|
-
user: AuthService.currentUser,
|
|
29
|
-
scopes: AuthService.grantedScopes,
|
|
30
|
-
loading: false,
|
|
31
|
-
error: undefined
|
|
32
|
-
});
|
|
43
|
+
syncStateFromService(false, undefined);
|
|
33
44
|
} catch (e) {
|
|
34
|
-
const error =
|
|
45
|
+
const error = AuthError.from(e);
|
|
35
46
|
setState(prev => ({
|
|
36
47
|
...prev,
|
|
37
48
|
loading: false,
|
|
@@ -39,7 +50,7 @@ export function useAuth() {
|
|
|
39
50
|
}));
|
|
40
51
|
throw error;
|
|
41
52
|
}
|
|
42
|
-
}, []);
|
|
53
|
+
}, [syncStateFromService]);
|
|
43
54
|
const logout = useCallback(() => {
|
|
44
55
|
AuthService.logout();
|
|
45
56
|
setState({
|
|
@@ -57,14 +68,9 @@ export function useAuth() {
|
|
|
57
68
|
}));
|
|
58
69
|
try {
|
|
59
70
|
await AuthService.requestScopes(newScopes);
|
|
60
|
-
|
|
61
|
-
user: AuthService.currentUser,
|
|
62
|
-
scopes: AuthService.grantedScopes,
|
|
63
|
-
loading: false,
|
|
64
|
-
error: undefined
|
|
65
|
-
});
|
|
71
|
+
syncStateFromService(false, undefined);
|
|
66
72
|
} catch (e) {
|
|
67
|
-
const error =
|
|
73
|
+
const error = AuthError.from(e);
|
|
68
74
|
setState(prev => ({
|
|
69
75
|
...prev,
|
|
70
76
|
loading: false,
|
|
@@ -72,7 +78,7 @@ export function useAuth() {
|
|
|
72
78
|
}));
|
|
73
79
|
throw error;
|
|
74
80
|
}
|
|
75
|
-
}, []);
|
|
81
|
+
}, [syncStateFromService]);
|
|
76
82
|
const revokeScopes = useCallback(async scopesToRevoke => {
|
|
77
83
|
setState(prev => ({
|
|
78
84
|
...prev,
|
|
@@ -81,14 +87,9 @@ export function useAuth() {
|
|
|
81
87
|
}));
|
|
82
88
|
try {
|
|
83
89
|
await AuthService.revokeScopes(scopesToRevoke);
|
|
84
|
-
|
|
85
|
-
user: AuthService.currentUser,
|
|
86
|
-
scopes: AuthService.grantedScopes,
|
|
87
|
-
loading: false,
|
|
88
|
-
error: undefined
|
|
89
|
-
});
|
|
90
|
+
syncStateFromService(false, undefined);
|
|
90
91
|
} catch (e) {
|
|
91
|
-
const error =
|
|
92
|
+
const error = AuthError.from(e);
|
|
92
93
|
setState(prev => ({
|
|
93
94
|
...prev,
|
|
94
95
|
loading: false,
|
|
@@ -96,7 +97,7 @@ export function useAuth() {
|
|
|
96
97
|
}));
|
|
97
98
|
throw error;
|
|
98
99
|
}
|
|
99
|
-
}, []);
|
|
100
|
+
}, [syncStateFromService]);
|
|
100
101
|
const getAccessToken = useCallback(() => AuthService.getAccessToken(), []);
|
|
101
102
|
const refreshToken = useCallback(async () => {
|
|
102
103
|
setState(prev => ({
|
|
@@ -106,24 +107,18 @@ export function useAuth() {
|
|
|
106
107
|
}));
|
|
107
108
|
try {
|
|
108
109
|
const tokens = await AuthService.refreshToken();
|
|
109
|
-
|
|
110
|
-
user: AuthService.currentUser,
|
|
111
|
-
scopes: AuthService.grantedScopes,
|
|
112
|
-
loading: false,
|
|
113
|
-
error: undefined
|
|
114
|
-
});
|
|
110
|
+
syncStateFromService(false, undefined);
|
|
115
111
|
return tokens;
|
|
116
112
|
} catch (e) {
|
|
117
|
-
const
|
|
118
|
-
const authError = new AuthHookError(msg, AuthService.currentUser?.underlyingError);
|
|
113
|
+
const error = AuthError.from(e);
|
|
119
114
|
setState(prev => ({
|
|
120
115
|
...prev,
|
|
121
116
|
loading: false,
|
|
122
|
-
error
|
|
117
|
+
error
|
|
123
118
|
}));
|
|
124
|
-
throw
|
|
119
|
+
throw error;
|
|
125
120
|
}
|
|
126
|
-
}, []);
|
|
121
|
+
}, [syncStateFromService]);
|
|
127
122
|
const silentRestore = useCallback(async () => {
|
|
128
123
|
setState(prev => ({
|
|
129
124
|
...prev,
|
|
@@ -132,14 +127,9 @@ export function useAuth() {
|
|
|
132
127
|
}));
|
|
133
128
|
try {
|
|
134
129
|
await AuthService.silentRestore();
|
|
135
|
-
|
|
136
|
-
user: AuthService.currentUser,
|
|
137
|
-
scopes: AuthService.grantedScopes,
|
|
138
|
-
loading: false,
|
|
139
|
-
error: undefined
|
|
140
|
-
});
|
|
130
|
+
syncStateFromService(false, undefined);
|
|
141
131
|
} catch (e) {
|
|
142
|
-
const error =
|
|
132
|
+
const error = AuthError.from(e);
|
|
143
133
|
setState(prev => ({
|
|
144
134
|
...prev,
|
|
145
135
|
loading: false,
|
|
@@ -147,14 +137,21 @@ export function useAuth() {
|
|
|
147
137
|
}));
|
|
148
138
|
throw error;
|
|
149
139
|
}
|
|
150
|
-
}, []);
|
|
140
|
+
}, [syncStateFromService]);
|
|
151
141
|
useEffect(() => {
|
|
152
142
|
const unsubscribe = AuthService.onAuthStateChanged(currentUser => {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
user
|
|
156
|
-
|
|
157
|
-
|
|
143
|
+
const nextScopes = AuthService.grantedScopes;
|
|
144
|
+
setState(prev => {
|
|
145
|
+
if (prev.user === currentUser && areScopesEqual(prev.scopes, nextScopes) && prev.loading === false) {
|
|
146
|
+
return prev;
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
...prev,
|
|
150
|
+
user: currentUser,
|
|
151
|
+
scopes: nextScopes,
|
|
152
|
+
loading: false
|
|
153
|
+
};
|
|
154
|
+
});
|
|
158
155
|
});
|
|
159
156
|
return unsubscribe;
|
|
160
157
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useEffect","useCallback","useMemo","AuthService","
|
|
1
|
+
{"version":3,"names":["useState","useEffect","useCallback","useMemo","AuthService","AuthError","areScopesEqual","left","right","length","i","useAuth","state","setState","user","currentUser","scopes","grantedScopes","loading","error","undefined","syncStateFromService","nextLoading","nextError","nextUser","nextScopes","prev","login","provider","options","e","from","logout","requestScopes","newScopes","revokeScopes","scopesToRevoke","getAccessToken","refreshToken","tokens","silentRestore","unsubscribe","onAuthStateChanged","hasPlayServices"],"sourceRoot":"../../src","sources":["use-auth.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
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"]);
|
|
4
|
+
export function isAuthErrorCode(value) {
|
|
5
|
+
return AUTH_ERROR_CODES.has(value);
|
|
6
|
+
}
|
|
7
|
+
export function toAuthErrorCode(raw) {
|
|
8
|
+
return isAuthErrorCode(raw) ? raw : "unknown";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Typed error thrown by all AuthService operations.
|
|
13
|
+
*
|
|
14
|
+
* - `code` — always a valid `AuthErrorCode`, safe to switch on
|
|
15
|
+
* - `underlyingMessage` — the raw platform message when it differs from `code`
|
|
16
|
+
*/
|
|
17
|
+
export class AuthError extends Error {
|
|
18
|
+
constructor(raw) {
|
|
19
|
+
const message = raw instanceof Error ? raw.message : String(raw);
|
|
20
|
+
const code = toAuthErrorCode(message);
|
|
21
|
+
super(code);
|
|
22
|
+
this.name = "AuthError";
|
|
23
|
+
this.code = code;
|
|
24
|
+
this.underlyingMessage = code !== message ? message : undefined;
|
|
25
|
+
}
|
|
26
|
+
static from(e) {
|
|
27
|
+
return e instanceof AuthError ? e : new AuthError(e);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# 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"],"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;AAEF,OAAO,SAASC,eAAeA,CAACC,KAAa,EAA0B;EACrE,OAAOH,gBAAgB,CAACI,GAAG,CAACD,KAAK,CAAC;AACpC;AAEA,OAAO,SAASE,eAAeA,CAACC,GAAW,EAAiB;EAC1D,OAAOJ,eAAe,CAACI,GAAG,CAAC,GAAGA,GAAG,GAAG,SAAS;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,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","ignoreList":[]}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import type { Auth, AuthUser, AuthProvider, LoginOptions, AuthTokens } from "./Auth.nitro";
|
|
2
2
|
import type { JSStorageAdapter } from "./js-storage-adapter";
|
|
3
3
|
declare class AuthWeb implements Auth {
|
|
4
|
+
private readonly _config;
|
|
4
5
|
private _currentUser;
|
|
5
6
|
private _grantedScopes;
|
|
6
7
|
private _listeners;
|
|
7
8
|
private _tokenListeners;
|
|
8
9
|
private _storageAdapter;
|
|
10
|
+
private _browserStorageResolved;
|
|
11
|
+
private _browserStorageCache;
|
|
12
|
+
private _refreshPromise;
|
|
13
|
+
private _appleSdkLoadPromise;
|
|
9
14
|
constructor();
|
|
10
15
|
private isPromiseLike;
|
|
11
16
|
private createWebStorageDriver;
|
|
@@ -32,6 +37,7 @@ declare class AuthWeb implements Auth {
|
|
|
32
37
|
revokeScopes(scopes: string[]): Promise<void>;
|
|
33
38
|
getAccessToken(): Promise<string | undefined>;
|
|
34
39
|
refreshToken(): Promise<AuthTokens>;
|
|
40
|
+
private performRefreshToken;
|
|
35
41
|
private mapError;
|
|
36
42
|
private parseResponseObject;
|
|
37
43
|
private parseJwtPayload;
|
|
@@ -45,6 +51,7 @@ declare class AuthWeb implements Auth {
|
|
|
45
51
|
private exchangeMicrosoftCodeForTokens;
|
|
46
52
|
private getMicrosoftAuthBaseUrl;
|
|
47
53
|
private decodeMicrosoftJwt;
|
|
54
|
+
private ensureAppleSdkLoaded;
|
|
48
55
|
private loginApple;
|
|
49
56
|
silentRestore(): Promise<void>;
|
|
50
57
|
logout(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Auth.web.d.ts","sourceRoot":"","sources":["../../../src/Auth.web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAgK7D,cAAM,OAAQ,YAAW,IAAI;IAC3B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,eAAe,CAA+B;;
|
|
1
|
+
{"version":3,"file":"Auth.web.d.ts","sourceRoot":"","sources":["../../../src/Auth.web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAgK7D,cAAM,OAAQ,YAAW,IAAI;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,oBAAoB,CAA4B;;IAOxD,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,sBAAsB;IA0B9B,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,2BAA2B;IAgBnC,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,aAAa;IAgDrB,OAAO,CAAC,eAAe;IAIvB,IAAI,WAAW,IAAI,QAAQ,GAAG,SAAS,CAEtC;IAED,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,kBAAkB,CAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,KAAK,IAAI,GAC7C,MAAM,IAAI;IAQb,iBAAiB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAOrE,OAAO,CAAC,MAAM;IAMR,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BpE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB9C,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7C,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAW7C,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;YAgB3B,mBAAmB;IA6GjC,OAAO,CAAC,QAAQ;YAoBF,mBAAmB;IAQjC,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,oBAAoB;YA8Dd,WAAW;IAgFzB,OAAO,CAAC,eAAe;YAcT,cAAc;IA2G5B,OAAO,CAAC,oBAAoB;YAMd,qBAAqB;IAOnC,OAAO,CAAC,eAAe;YAKT,8BAA8B;IA8E5C,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,kBAAkB;YAiBZ,oBAAoB;YA2DpB,UAAU;IAqClB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAcpC,MAAM,IAAI,IAAI;IASd,OAAO,CAAC,UAAU;IAOlB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI;IAQjE,IAAI,SAAU;IACd,OAAO;IACP,MAAM,CAAC,KAAK,EAAE,OAAO;CAGtB;AAED,eAAO,MAAM,UAAU,SAAgB,CAAC"}
|
|
@@ -2,4 +2,5 @@ export * from "./Auth.nitro";
|
|
|
2
2
|
export * from "./ui/social-button";
|
|
3
3
|
export { useAuth, type UseAuthReturn } from "./use-auth";
|
|
4
4
|
export { AuthService } from "./service";
|
|
5
|
+
export { AuthError, isAuthErrorCode, toAuthErrorCode } from "./utils/auth-error";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EAKL,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EAKL,MAAM,cAAc,CAAC;AAKtB,eAAO,MAAM,WAAW,EAAE,IA0FzB,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { AuthUser, AuthProvider, LoginOptions, AuthTokens } from "./Auth.nitro";
|
|
2
|
+
import { AuthError } from "./utils/auth-error";
|
|
2
3
|
type AuthState = {
|
|
3
4
|
user: AuthUser | undefined;
|
|
4
5
|
scopes: string[];
|
|
5
6
|
loading: boolean;
|
|
6
|
-
error:
|
|
7
|
+
error: AuthError | undefined;
|
|
7
8
|
};
|
|
8
9
|
export type UseAuthReturn = AuthState & {
|
|
9
10
|
hasPlayServices: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-auth.d.ts","sourceRoot":"","sources":["../../../src/use-auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"use-auth.d.ts","sourceRoot":"","sources":["../../../src/use-auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B,CAAC;AAUF,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG;IACtC,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD,YAAY,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF,wBAAgB,OAAO,IAAI,aAAa,CAuIvC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AuthErrorCode } from "../Auth.nitro";
|
|
2
|
+
export declare function isAuthErrorCode(value: string): value is AuthErrorCode;
|
|
3
|
+
export declare function toAuthErrorCode(raw: string): AuthErrorCode;
|
|
4
|
+
/**
|
|
5
|
+
* Typed error thrown by all AuthService operations.
|
|
6
|
+
*
|
|
7
|
+
* - `code` — always a valid `AuthErrorCode`, safe to switch on
|
|
8
|
+
* - `underlyingMessage` — the raw platform message when it differs from `code`
|
|
9
|
+
*/
|
|
10
|
+
export declare class AuthError extends Error {
|
|
11
|
+
readonly code: AuthErrorCode;
|
|
12
|
+
readonly underlyingMessage: string | undefined;
|
|
13
|
+
constructor(raw: unknown);
|
|
14
|
+
static from(e: unknown): AuthError;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=auth-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-error.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAkBnD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAE1D;AAED;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEnC,GAAG,EAAE,OAAO;IASxB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS;CAGnC"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import type { Auth, AuthUser, AuthProvider, LoginOptions, AuthTokens } from "./Auth.nitro";
|
|
2
2
|
import type { JSStorageAdapter } from "./js-storage-adapter";
|
|
3
3
|
declare class AuthWeb implements Auth {
|
|
4
|
+
private readonly _config;
|
|
4
5
|
private _currentUser;
|
|
5
6
|
private _grantedScopes;
|
|
6
7
|
private _listeners;
|
|
7
8
|
private _tokenListeners;
|
|
8
9
|
private _storageAdapter;
|
|
10
|
+
private _browserStorageResolved;
|
|
11
|
+
private _browserStorageCache;
|
|
12
|
+
private _refreshPromise;
|
|
13
|
+
private _appleSdkLoadPromise;
|
|
9
14
|
constructor();
|
|
10
15
|
private isPromiseLike;
|
|
11
16
|
private createWebStorageDriver;
|
|
@@ -32,6 +37,7 @@ declare class AuthWeb implements Auth {
|
|
|
32
37
|
revokeScopes(scopes: string[]): Promise<void>;
|
|
33
38
|
getAccessToken(): Promise<string | undefined>;
|
|
34
39
|
refreshToken(): Promise<AuthTokens>;
|
|
40
|
+
private performRefreshToken;
|
|
35
41
|
private mapError;
|
|
36
42
|
private parseResponseObject;
|
|
37
43
|
private parseJwtPayload;
|
|
@@ -45,6 +51,7 @@ declare class AuthWeb implements Auth {
|
|
|
45
51
|
private exchangeMicrosoftCodeForTokens;
|
|
46
52
|
private getMicrosoftAuthBaseUrl;
|
|
47
53
|
private decodeMicrosoftJwt;
|
|
54
|
+
private ensureAppleSdkLoaded;
|
|
48
55
|
private loginApple;
|
|
49
56
|
silentRestore(): Promise<void>;
|
|
50
57
|
logout(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Auth.web.d.ts","sourceRoot":"","sources":["../../../src/Auth.web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAgK7D,cAAM,OAAQ,YAAW,IAAI;IAC3B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,eAAe,CAA+B;;
|
|
1
|
+
{"version":3,"file":"Auth.web.d.ts","sourceRoot":"","sources":["../../../src/Auth.web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAgK7D,cAAM,OAAQ,YAAW,IAAI;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,oBAAoB,CAA4B;;IAOxD,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,sBAAsB;IA0B9B,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,2BAA2B;IAgBnC,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,aAAa;IAgDrB,OAAO,CAAC,eAAe;IAIvB,IAAI,WAAW,IAAI,QAAQ,GAAG,SAAS,CAEtC;IAED,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,kBAAkB,CAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,KAAK,IAAI,GAC7C,MAAM,IAAI;IAQb,iBAAiB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAOrE,OAAO,CAAC,MAAM;IAMR,KAAK,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BpE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB9C,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7C,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAW7C,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;YAgB3B,mBAAmB;IA6GjC,OAAO,CAAC,QAAQ;YAoBF,mBAAmB;IAQjC,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,oBAAoB;YA8Dd,WAAW;IAgFzB,OAAO,CAAC,eAAe;YAcT,cAAc;IA2G5B,OAAO,CAAC,oBAAoB;YAMd,qBAAqB;IAOnC,OAAO,CAAC,eAAe;YAKT,8BAA8B;IA8E5C,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,kBAAkB;YAiBZ,oBAAoB;YA2DpB,UAAU;IAqClB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAcpC,MAAM,IAAI,IAAI;IASd,OAAO,CAAC,UAAU;IAOlB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI;IAQjE,IAAI,SAAU;IACd,OAAO;IACP,MAAM,CAAC,KAAK,EAAE,OAAO;CAGtB;AAED,eAAO,MAAM,UAAU,SAAgB,CAAC"}
|
|
@@ -2,4 +2,5 @@ export * from "./Auth.nitro";
|
|
|
2
2
|
export * from "./ui/social-button";
|
|
3
3
|
export { useAuth, type UseAuthReturn } from "./use-auth";
|
|
4
4
|
export { AuthService } from "./service";
|
|
5
|
+
export { AuthError, isAuthErrorCode, toAuthErrorCode } from "./utils/auth-error";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EAKL,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EAKL,MAAM,cAAc,CAAC;AAKtB,eAAO,MAAM,WAAW,EAAE,IA0FzB,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { AuthUser, AuthProvider, LoginOptions, AuthTokens } from "./Auth.nitro";
|
|
2
|
+
import { AuthError } from "./utils/auth-error";
|
|
2
3
|
type AuthState = {
|
|
3
4
|
user: AuthUser | undefined;
|
|
4
5
|
scopes: string[];
|
|
5
6
|
loading: boolean;
|
|
6
|
-
error:
|
|
7
|
+
error: AuthError | undefined;
|
|
7
8
|
};
|
|
8
9
|
export type UseAuthReturn = AuthState & {
|
|
9
10
|
hasPlayServices: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-auth.d.ts","sourceRoot":"","sources":["../../../src/use-auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"use-auth.d.ts","sourceRoot":"","sources":["../../../src/use-auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,UAAU,EACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B,CAAC;AAUF,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG;IACtC,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD,YAAY,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC,CAAC;AAEF,wBAAgB,OAAO,IAAI,aAAa,CAuIvC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AuthErrorCode } from "../Auth.nitro";
|
|
2
|
+
export declare function isAuthErrorCode(value: string): value is AuthErrorCode;
|
|
3
|
+
export declare function toAuthErrorCode(raw: string): AuthErrorCode;
|
|
4
|
+
/**
|
|
5
|
+
* Typed error thrown by all AuthService operations.
|
|
6
|
+
*
|
|
7
|
+
* - `code` — always a valid `AuthErrorCode`, safe to switch on
|
|
8
|
+
* - `underlyingMessage` — the raw platform message when it differs from `code`
|
|
9
|
+
*/
|
|
10
|
+
export declare class AuthError extends Error {
|
|
11
|
+
readonly code: AuthErrorCode;
|
|
12
|
+
readonly underlyingMessage: string | undefined;
|
|
13
|
+
constructor(raw: unknown);
|
|
14
|
+
static from(e: unknown): AuthError;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=auth-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-error.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAkBnD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAErE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAE1D;AAED;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEnC,GAAG,EAAE,OAAO;IASxB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS;CAGnC"}
|
|
@@ -20,25 +20,30 @@
|
|
|
20
20
|
namespace margelo::nitro::NitroAuth {
|
|
21
21
|
|
|
22
22
|
int initialize(JavaVM* vm) {
|
|
23
|
+
return facebook::jni::initialize(vm, []() {
|
|
24
|
+
::margelo::nitro::NitroAuth::registerAllNatives();
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
void registerAllNatives() {
|
|
23
31
|
using namespace margelo::nitro;
|
|
24
32
|
using namespace margelo::nitro::NitroAuth;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
);
|
|
41
|
-
});
|
|
33
|
+
|
|
34
|
+
// Register native JNI methods
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
// Register Nitro Hybrid Objects
|
|
38
|
+
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
39
|
+
"Auth",
|
|
40
|
+
[]() -> std::shared_ptr<HybridObject> {
|
|
41
|
+
static_assert(std::is_default_constructible_v<HybridAuth>,
|
|
42
|
+
"The HybridObject \"HybridAuth\" is not default-constructible! "
|
|
43
|
+
"Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
|
|
44
|
+
return std::make_shared<HybridAuth>();
|
|
45
|
+
}
|
|
46
|
+
);
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
} // namespace margelo::nitro::NitroAuth
|
|
@@ -6,20 +6,29 @@
|
|
|
6
6
|
///
|
|
7
7
|
|
|
8
8
|
#include <jni.h>
|
|
9
|
+
#include <functional>
|
|
9
10
|
#include <NitroModules/NitroDefines.hpp>
|
|
10
11
|
|
|
11
12
|
namespace margelo::nitro::NitroAuth {
|
|
12
13
|
|
|
14
|
+
[[deprecated("Use registerNatives() instead.")]]
|
|
15
|
+
int initialize(JavaVM* vm);
|
|
16
|
+
|
|
13
17
|
/**
|
|
14
|
-
*
|
|
15
|
-
* Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`)
|
|
18
|
+
* Register the native (C++) part of NitroAuth, and autolinks all Hybrid Objects.
|
|
19
|
+
* Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`),
|
|
20
|
+
* inside a `facebook::jni::initialize(vm, ...)` call.
|
|
16
21
|
* Example:
|
|
17
22
|
* ```cpp (cpp-adapter.cpp)
|
|
18
23
|
* JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
|
|
19
|
-
* return
|
|
24
|
+
* return facebook::jni::initialize(vm, []() {
|
|
25
|
+
* // register all NitroAuth HybridObjects
|
|
26
|
+
* margelo::nitro::NitroAuth::registerNatives();
|
|
27
|
+
* // any other custom registrations go here.
|
|
28
|
+
* });
|
|
20
29
|
* }
|
|
21
30
|
* ```
|
|
22
31
|
*/
|
|
23
|
-
|
|
32
|
+
void registerAllNatives();
|
|
24
33
|
|
|
25
34
|
} // namespace margelo::nitro::NitroAuth
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-nitro-auth",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.5",
|
|
4
4
|
"description": "High-performance authentication library for React Native with Google Sign-In, Apple Sign-In, and Microsoft Sign-In support, powered by Nitro Modules (JSI)",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -81,21 +81,21 @@
|
|
|
81
81
|
"access": "public"
|
|
82
82
|
},
|
|
83
83
|
"devDependencies": {
|
|
84
|
-
"@expo/config-plugins": "^
|
|
85
|
-
"@react-native/babel-preset": "^0.
|
|
84
|
+
"@expo/config-plugins": "^55.0.6",
|
|
85
|
+
"@react-native/babel-preset": "^0.83.0",
|
|
86
86
|
"@testing-library/react": "^16.3.2",
|
|
87
87
|
"@types/node": "^22.19.11",
|
|
88
88
|
"jest-environment-jsdom": "^29.7.0",
|
|
89
|
-
"react": "19.
|
|
90
|
-
"react-native": "0.
|
|
91
|
-
"react-native-nitro-modules": "^0.
|
|
89
|
+
"react": "19.2.0",
|
|
90
|
+
"react-native": "0.83.2",
|
|
91
|
+
"react-native-nitro-modules": "^0.35.0",
|
|
92
92
|
"react-native-web": "^0.21.2",
|
|
93
93
|
"typescript": "^5.9.3"
|
|
94
94
|
},
|
|
95
95
|
"peerDependencies": {
|
|
96
96
|
"react": "*",
|
|
97
97
|
"react-native": ">=0.75.0",
|
|
98
|
-
"react-native-nitro-modules": ">=0.
|
|
98
|
+
"react-native-nitro-modules": ">=0.35.0"
|
|
99
99
|
},
|
|
100
100
|
"react-native-builder-bob": {
|
|
101
101
|
"source": "src",
|