@atzentis/auth-react 0.0.10 → 0.0.12
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/dist/index.d.ts +29 -7
- package/dist/index.js +66 -18
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,34 +1,56 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
3
|
import * as _atzentis_auth_sdk from '@atzentis/auth-sdk';
|
|
4
|
-
import { AuthClient, User,
|
|
4
|
+
import { AuthClient, User, Session, AuthError, LoginAlert, ITokenStorage, LoginCredentials, SignupData } from '@atzentis/auth-sdk';
|
|
5
5
|
|
|
6
|
+
interface AuthProviderProps {
|
|
7
|
+
apiKey?: string;
|
|
8
|
+
baseUrl: string;
|
|
9
|
+
autoRefreshToken?: boolean;
|
|
10
|
+
refreshThreshold?: number;
|
|
11
|
+
timeout?: number;
|
|
12
|
+
collectDeviceSignals?: boolean;
|
|
13
|
+
onSessionExpired?: () => void;
|
|
14
|
+
onTokenRefreshed?: (token: string) => void;
|
|
15
|
+
onNewDeviceAlert?: (alert: LoginAlert) => void;
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
initialToken?: string;
|
|
18
|
+
initialUser?: User;
|
|
19
|
+
storage?: ITokenStorage;
|
|
20
|
+
}
|
|
6
21
|
interface AuthContextValue {
|
|
7
22
|
client: AuthClient;
|
|
8
23
|
user: User | null;
|
|
24
|
+
session: Session | null;
|
|
9
25
|
isAuthenticated: boolean;
|
|
10
26
|
isLoading: boolean;
|
|
27
|
+
error: AuthError | null;
|
|
11
28
|
setUser: (user: User | null) => void;
|
|
29
|
+
setSession: (session: Session | null) => void;
|
|
30
|
+
setError: (error: AuthError | null) => void;
|
|
31
|
+
clearError: () => void;
|
|
12
32
|
}
|
|
33
|
+
|
|
13
34
|
declare const AuthContext: react.Context<AuthContextValue | null>;
|
|
14
|
-
|
|
15
|
-
config: AuthConfig;
|
|
16
|
-
children: React.ReactNode;
|
|
17
|
-
}
|
|
18
|
-
declare function AuthProvider({ config, children }: AuthProviderProps): react_jsx_runtime.JSX.Element;
|
|
35
|
+
declare function AuthProvider({ apiKey, baseUrl, autoRefreshToken, refreshThreshold, timeout, collectDeviceSignals, onSessionExpired, onTokenRefreshed, onNewDeviceAlert, children, initialUser, storage, }: AuthProviderProps): react_jsx_runtime.JSX.Element;
|
|
19
36
|
|
|
20
37
|
declare function useAuth(): {
|
|
21
38
|
user: _atzentis_auth_sdk.User | null;
|
|
22
39
|
isAuthenticated: boolean;
|
|
23
40
|
isLoading: boolean;
|
|
41
|
+
error: _atzentis_auth_sdk.AuthError | null;
|
|
24
42
|
login: (credentials: LoginCredentials) => Promise<_atzentis_auth_sdk.LoginResponse>;
|
|
25
43
|
signup: (data: SignupData) => Promise<_atzentis_auth_sdk.SignupResponse>;
|
|
44
|
+
clearError: () => void;
|
|
26
45
|
};
|
|
27
46
|
|
|
47
|
+
declare function useAuthContext(): AuthContextValue;
|
|
48
|
+
|
|
28
49
|
declare function useSession(): {
|
|
29
50
|
user: _atzentis_auth_sdk.User | null;
|
|
51
|
+
session: _atzentis_auth_sdk.Session | null;
|
|
30
52
|
isAuthenticated: boolean;
|
|
31
53
|
isLoading: boolean;
|
|
32
54
|
};
|
|
33
55
|
|
|
34
|
-
export { AuthContext, type AuthContextValue, AuthProvider, useAuth, useSession };
|
|
56
|
+
export { AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, useAuth, useAuthContext, useSession };
|
package/dist/index.js
CHANGED
|
@@ -1,30 +1,76 @@
|
|
|
1
1
|
import { AuthClient } from '@atzentis/auth-sdk';
|
|
2
|
-
import { createContext, useState, useMemo, useContext
|
|
2
|
+
import { createContext, useState, useCallback, useMemo, useContext } from 'react';
|
|
3
3
|
import { jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
5
5
|
var AuthContext = createContext(null);
|
|
6
|
-
function AuthProvider({
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
function AuthProvider({
|
|
7
|
+
apiKey,
|
|
8
|
+
baseUrl,
|
|
9
|
+
autoRefreshToken,
|
|
10
|
+
refreshThreshold,
|
|
11
|
+
timeout,
|
|
12
|
+
collectDeviceSignals,
|
|
13
|
+
onSessionExpired,
|
|
14
|
+
onTokenRefreshed,
|
|
15
|
+
onNewDeviceAlert,
|
|
16
|
+
children,
|
|
17
|
+
initialUser,
|
|
18
|
+
storage
|
|
19
|
+
}) {
|
|
20
|
+
const [client] = useState(() => {
|
|
21
|
+
const handleSessionExpired = () => {
|
|
22
|
+
setUser(null);
|
|
23
|
+
setSession(null);
|
|
24
|
+
onSessionExpired?.();
|
|
25
|
+
};
|
|
26
|
+
return new AuthClient({
|
|
27
|
+
apiKey,
|
|
28
|
+
baseUrl,
|
|
29
|
+
timeout,
|
|
30
|
+
autoRefreshToken,
|
|
31
|
+
refreshThreshold,
|
|
32
|
+
collectDeviceSignals,
|
|
33
|
+
onSessionExpired: handleSessionExpired,
|
|
34
|
+
onTokenRefreshed,
|
|
35
|
+
onNewDeviceAlert,
|
|
36
|
+
storage
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
const [user, setUser] = useState(initialUser ?? null);
|
|
40
|
+
const [session, setSession] = useState(null);
|
|
9
41
|
const [isLoading] = useState(false);
|
|
42
|
+
const [error, setError] = useState(null);
|
|
43
|
+
const clearError = useCallback(() => {
|
|
44
|
+
setError(null);
|
|
45
|
+
}, []);
|
|
10
46
|
const value = useMemo(
|
|
11
47
|
() => ({
|
|
12
48
|
client,
|
|
13
49
|
user,
|
|
50
|
+
session,
|
|
14
51
|
isAuthenticated: user !== null,
|
|
15
52
|
isLoading,
|
|
16
|
-
|
|
53
|
+
error,
|
|
54
|
+
setUser,
|
|
55
|
+
setSession,
|
|
56
|
+
setError,
|
|
57
|
+
clearError
|
|
17
58
|
}),
|
|
18
|
-
[client, user, isLoading]
|
|
59
|
+
[client, user, session, isLoading, error, clearError]
|
|
19
60
|
);
|
|
20
61
|
return /* @__PURE__ */ jsx(AuthContext.Provider, { value, children });
|
|
21
62
|
}
|
|
22
|
-
function
|
|
63
|
+
function useAuthContext() {
|
|
23
64
|
const context = useContext(AuthContext);
|
|
24
65
|
if (!context) {
|
|
25
|
-
throw new Error("
|
|
66
|
+
throw new Error("useAuthContext must be used within AuthProvider");
|
|
26
67
|
}
|
|
27
|
-
|
|
68
|
+
return context;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// src/use-auth.ts
|
|
72
|
+
function useAuth() {
|
|
73
|
+
const { client, user, isAuthenticated, isLoading, error, setUser, clearError } = useAuthContext();
|
|
28
74
|
const login = useCallback(
|
|
29
75
|
async (credentials) => {
|
|
30
76
|
const response = await client.login(credentials);
|
|
@@ -45,22 +91,24 @@ function useAuth() {
|
|
|
45
91
|
user,
|
|
46
92
|
isAuthenticated,
|
|
47
93
|
isLoading,
|
|
94
|
+
error,
|
|
48
95
|
login,
|
|
49
|
-
signup
|
|
96
|
+
signup,
|
|
97
|
+
clearError
|
|
50
98
|
};
|
|
51
99
|
}
|
|
100
|
+
|
|
101
|
+
// src/use-session.ts
|
|
52
102
|
function useSession() {
|
|
53
|
-
const
|
|
54
|
-
if (!context) {
|
|
55
|
-
throw new Error("useSession must be used within AuthProvider");
|
|
56
|
-
}
|
|
103
|
+
const { user, session, isAuthenticated, isLoading } = useAuthContext();
|
|
57
104
|
return {
|
|
58
|
-
user
|
|
59
|
-
|
|
60
|
-
|
|
105
|
+
user,
|
|
106
|
+
session,
|
|
107
|
+
isAuthenticated,
|
|
108
|
+
isLoading
|
|
61
109
|
};
|
|
62
110
|
}
|
|
63
111
|
|
|
64
|
-
export { AuthContext, AuthProvider, useAuth, useSession };
|
|
112
|
+
export { AuthContext, AuthProvider, useAuth, useAuthContext, useSession };
|
|
65
113
|
//# sourceMappingURL=index.js.map
|
|
66
114
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/provider.tsx","../src/use-auth.ts","../src/use-session.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["../src/provider.tsx","../src/use-auth-context.ts","../src/use-auth.ts","../src/use-session.ts"],"names":["useCallback"],"mappings":"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","file":"index.js","sourcesContent":["// AuthProvider — React context provider for @atzentis/auth-react\n\nimport type { AuthError, User } from \"@atzentis/auth-sdk\";\nimport { AuthClient } from \"@atzentis/auth-sdk\";\nimport type { Session } from \"@atzentis/auth-sdk\";\nimport { createContext, useCallback, useMemo, useState } from \"react\";\nimport type { AuthContextValue, AuthProviderProps } from \"./types\";\n\nexport const AuthContext = createContext<AuthContextValue | null>(null);\n\nexport function AuthProvider({\n apiKey,\n baseUrl,\n autoRefreshToken,\n refreshThreshold,\n timeout,\n collectDeviceSignals,\n onSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n children,\n initialUser,\n storage,\n}: AuthProviderProps) {\n const [client] = useState(() => {\n const handleSessionExpired = () => {\n setUser(null);\n setSession(null);\n onSessionExpired?.();\n };\n\n return new AuthClient({\n apiKey,\n baseUrl,\n timeout,\n autoRefreshToken,\n refreshThreshold,\n collectDeviceSignals,\n onSessionExpired: handleSessionExpired,\n onTokenRefreshed,\n onNewDeviceAlert,\n storage,\n });\n });\n\n const [user, setUser] = useState<User | null>(initialUser ?? null);\n const [session, setSession] = useState<Session | null>(null);\n const [isLoading] = useState(false);\n const [error, setError] = useState<AuthError | null>(null);\n\n const clearError = useCallback(() => {\n setError(null);\n }, []);\n\n const value: AuthContextValue = useMemo(\n () => ({\n client,\n user,\n session,\n isAuthenticated: user !== null,\n isLoading,\n error,\n setUser,\n setSession,\n setError,\n clearError,\n }),\n [client, user, session, isLoading, error, clearError],\n );\n\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\n}\n","// Internal hook to access auth context with error boundary\n\nimport { useContext } from \"react\";\nimport { AuthContext } from \"./provider\";\nimport type { AuthContextValue } from \"./types\";\n\nexport function useAuthContext(): AuthContextValue {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"useAuthContext must be used within AuthProvider\");\n }\n\n return context;\n}\n","// useAuth hook — auth state and methods\n\nimport type { LoginCredentials, SignupData } from \"@atzentis/auth-sdk\";\nimport { useCallback } from \"react\";\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useAuth() {\n const { client, user, isAuthenticated, isLoading, error, setUser, clearError } = useAuthContext();\n\n const login = useCallback(\n async (credentials: LoginCredentials) => {\n const response = await client.login(credentials);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n const signup = useCallback(\n async (data: SignupData) => {\n const response = await client.signup(data);\n setUser(response.user);\n return response;\n },\n [client, setUser],\n );\n\n return {\n user,\n isAuthenticated,\n isLoading,\n error,\n login,\n signup,\n clearError,\n };\n}\n","// useSession hook — current session state\n\nimport { useAuthContext } from \"./use-auth-context\";\n\nexport function useSession() {\n const { user, session, isAuthenticated, isLoading } = useAuthContext();\n\n return {\n user,\n session,\n isAuthenticated,\n isLoading,\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atzentis/auth-react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"description": "Atzentis Auth React — hooks and components for auth.atzentis.com",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"atzentis",
|
|
@@ -34,13 +34,14 @@
|
|
|
34
34
|
"LICENSE"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@atzentis/auth-sdk": "0.0.
|
|
37
|
+
"@atzentis/auth-sdk": "0.0.12"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"react": ">=18.0.0",
|
|
41
41
|
"react-dom": ">=18.0.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
+
"@testing-library/react": "^16.3.2",
|
|
44
45
|
"@types/react": "^19.0.0",
|
|
45
46
|
"jsdom": "^28.0.0",
|
|
46
47
|
"react": "^19.0.0",
|