@k3-universe/react-kit 0.0.29 → 0.0.30
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 +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1013 -21
- package/dist/kit/builder/auth/components/Can.d.ts +13 -0
- package/dist/kit/builder/auth/components/Can.d.ts.map +1 -0
- package/dist/kit/builder/auth/components/RequireAuth.d.ts +45 -0
- package/dist/kit/builder/auth/components/RequireAuth.d.ts.map +1 -0
- package/dist/kit/builder/auth/components/ShowWhenAuthenticated.d.ts +8 -0
- package/dist/kit/builder/auth/components/ShowWhenAuthenticated.d.ts.map +1 -0
- package/dist/kit/builder/auth/components/ShowWhenError.d.ts +8 -0
- package/dist/kit/builder/auth/components/ShowWhenError.d.ts.map +1 -0
- package/dist/kit/builder/auth/components/ShowWhenLoading.d.ts +8 -0
- package/dist/kit/builder/auth/components/ShowWhenLoading.d.ts.map +1 -0
- package/dist/kit/builder/auth/components/ShowWhenUnauthenticated.d.ts +8 -0
- package/dist/kit/builder/auth/components/ShowWhenUnauthenticated.d.ts.map +1 -0
- package/dist/kit/builder/auth/components/withPermission.d.ts +7 -0
- package/dist/kit/builder/auth/components/withPermission.d.ts.map +1 -0
- package/dist/kit/builder/auth/hooks/action-hooks.d.ts +18 -0
- package/dist/kit/builder/auth/hooks/action-hooks.d.ts.map +1 -0
- package/dist/kit/builder/auth/hooks/core-hooks.d.ts +56 -0
- package/dist/kit/builder/auth/hooks/core-hooks.d.ts.map +1 -0
- package/dist/kit/builder/auth/hooks/index.d.ts +5 -0
- package/dist/kit/builder/auth/hooks/index.d.ts.map +1 -0
- package/dist/kit/builder/auth/hooks/permission-hooks.d.ts +18 -0
- package/dist/kit/builder/auth/hooks/permission-hooks.d.ts.map +1 -0
- package/dist/kit/builder/auth/hooks/token-hooks.d.ts +13 -0
- package/dist/kit/builder/auth/hooks/token-hooks.d.ts.map +1 -0
- package/dist/kit/builder/auth/index.d.ts +14 -8
- package/dist/kit/builder/auth/index.d.ts.map +1 -1
- package/dist/kit/builder/auth/{AuthProvider.d.ts → providers/AuthProvider.d.ts} +1 -1
- package/dist/kit/builder/auth/providers/AuthProvider.d.ts.map +1 -0
- package/dist/kit/builder/auth/types/adapter-config.d.ts +31 -0
- package/dist/kit/builder/auth/types/adapter-config.d.ts.map +1 -0
- package/dist/kit/builder/auth/types/adapter.d.ts +80 -0
- package/dist/kit/builder/auth/types/adapter.d.ts.map +1 -0
- package/dist/kit/builder/auth/types/core.d.ts +16 -0
- package/dist/kit/builder/auth/types/core.d.ts.map +1 -0
- package/dist/kit/builder/auth/types/index.d.ts +10 -0
- package/dist/kit/builder/auth/types/index.d.ts.map +1 -0
- package/dist/kit/builder/auth/types/middleware.d.ts +11 -0
- package/dist/kit/builder/auth/types/middleware.d.ts.map +1 -0
- package/dist/kit/builder/auth/types/permissions.d.ts +17 -0
- package/dist/kit/builder/auth/types/permissions.d.ts.map +1 -0
- package/dist/kit/builder/auth/types/state.d.ts +13 -0
- package/dist/kit/builder/auth/types/state.d.ts.map +1 -0
- package/dist/kit/builder/auth/types/storage.d.ts +20 -0
- package/dist/kit/builder/auth/types/storage.d.ts.map +1 -0
- package/dist/kit/builder/auth/types/token-manager.d.ts +7 -0
- package/dist/kit/builder/auth/types/token-manager.d.ts.map +1 -0
- package/dist/kit/builder/auth/types/utils.d.ts +7 -0
- package/dist/kit/builder/auth/types/utils.d.ts.map +1 -0
- package/dist/kit/builder/auth/{adapter.d.ts → utils/auth-adapter.d.ts} +2 -2
- package/dist/kit/builder/auth/utils/auth-adapter.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/client-adapters/apollo-link.d.ts +4 -0
- package/dist/kit/builder/auth/utils/client-adapters/apollo-link.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/client-adapters/axios.d.ts +6 -0
- package/dist/kit/builder/auth/utils/client-adapters/axios.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/client-adapters/fetch.d.ts +6 -0
- package/dist/kit/builder/auth/utils/client-adapters/fetch.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/client-adapters/graphql.d.ts +9 -0
- package/dist/kit/builder/auth/utils/client-adapters/graphql.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/client-adapters/index.d.ts +7 -0
- package/dist/kit/builder/auth/utils/client-adapters/index.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/client-adapters/rest.d.ts +9 -0
- package/dist/kit/builder/auth/utils/client-adapters/rest.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/client-adapters/urql-exchange.d.ts +14 -0
- package/dist/kit/builder/auth/utils/client-adapters/urql-exchange.d.ts.map +1 -0
- package/dist/kit/builder/auth/{permission-checker.d.ts → utils/permission-checker.d.ts} +1 -1
- package/dist/kit/builder/auth/utils/permission-checker.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/storage/browser.d.ts +11 -0
- package/dist/kit/builder/auth/utils/storage/browser.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/storage/cookie.d.ts +3 -0
- package/dist/kit/builder/auth/utils/storage/cookie.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/storage/encryption.d.ts +7 -0
- package/dist/kit/builder/auth/utils/storage/encryption.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/storage/env.d.ts +2 -0
- package/dist/kit/builder/auth/utils/storage/env.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/storage/factory.d.ts +6 -0
- package/dist/kit/builder/auth/utils/storage/factory.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/storage/index.d.ts +7 -0
- package/dist/kit/builder/auth/utils/storage/index.d.ts.map +1 -0
- package/dist/kit/builder/auth/utils/storage/memory.d.ts +3 -0
- package/dist/kit/builder/auth/utils/storage/memory.d.ts.map +1 -0
- package/dist/kit/builder/auth/{token-manager.d.ts → utils/token-manager.d.ts} +1 -1
- package/dist/kit/builder/auth/utils/token-manager.d.ts.map +1 -0
- package/dist/kit/components/login/Login.d.ts.map +1 -1
- package/dist/kit/layouts/admin/components/AdminLayout.d.ts +2 -1
- package/dist/kit/layouts/admin/components/AdminLayout.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/kit/builder/auth/components/Can.tsx +27 -0
- package/src/kit/builder/auth/components/RequireAuth.tsx +78 -0
- package/src/kit/builder/auth/components/ShowWhenAuthenticated.tsx +10 -0
- package/src/kit/builder/auth/components/ShowWhenError.tsx +10 -0
- package/src/kit/builder/auth/components/ShowWhenLoading.tsx +10 -0
- package/src/kit/builder/auth/components/ShowWhenUnauthenticated.tsx +10 -0
- package/src/kit/builder/auth/components/withPermission.tsx +23 -0
- package/src/kit/builder/auth/hooks/action-hooks.ts +34 -0
- package/src/kit/builder/auth/hooks/core-hooks.ts +65 -0
- package/src/kit/builder/auth/hooks/index.ts +4 -0
- package/src/kit/builder/auth/hooks/permission-hooks.ts +43 -0
- package/src/kit/builder/auth/hooks/token-hooks.ts +25 -0
- package/src/kit/builder/auth/index.ts +16 -18
- package/src/kit/builder/auth/{AuthProvider.tsx → providers/AuthProvider.tsx} +1 -1
- package/src/kit/builder/auth/types/adapter-config.ts +44 -0
- package/src/kit/builder/auth/types/adapter.ts +132 -0
- package/src/kit/builder/auth/types/core.ts +27 -0
- package/src/kit/builder/auth/types/index.ts +9 -0
- package/src/kit/builder/auth/types/middleware.ts +20 -0
- package/src/kit/builder/auth/types/permissions.ts +23 -0
- package/src/kit/builder/auth/types/state.ts +16 -0
- package/src/kit/builder/auth/types/storage.ts +21 -0
- package/src/kit/builder/auth/types/token-manager.ts +9 -0
- package/src/kit/builder/auth/types/utils.ts +55 -0
- package/src/kit/builder/auth/{adapter.ts → utils/auth-adapter.ts} +3 -2
- package/src/kit/builder/auth/utils/client-adapters/apollo-link.ts +30 -0
- package/src/kit/builder/auth/utils/client-adapters/axios.ts +61 -0
- package/src/kit/builder/auth/utils/client-adapters/fetch.ts +48 -0
- package/src/kit/builder/auth/utils/client-adapters/graphql.ts +60 -0
- package/src/kit/builder/auth/utils/client-adapters/index.ts +6 -0
- package/src/kit/builder/auth/utils/client-adapters/rest.ts +60 -0
- package/src/kit/builder/auth/utils/client-adapters/urql-exchange.ts +76 -0
- package/src/kit/builder/auth/{permission-checker.ts → utils/permission-checker.ts} +1 -1
- package/src/kit/builder/auth/utils/storage/browser.ts +99 -0
- package/src/kit/builder/auth/utils/storage/cookie.ts +116 -0
- package/src/kit/builder/auth/utils/storage/encryption.ts +80 -0
- package/src/kit/builder/auth/utils/storage/env.ts +2 -0
- package/src/kit/builder/auth/utils/storage/factory.ts +37 -0
- package/src/kit/builder/auth/utils/storage/index.ts +6 -0
- package/src/kit/builder/auth/utils/storage/memory.ts +15 -0
- package/src/kit/builder/auth/{token-manager.ts → utils/token-manager.ts} +1 -1
- package/src/kit/components/login/Login.tsx +9 -7
- package/src/kit/layouts/admin/components/AdminLayout.tsx +24 -17
- package/dist/kit/builder/auth/AuthProvider.d.ts.map +0 -1
- package/dist/kit/builder/auth/adapter.d.ts.map +0 -1
- package/dist/kit/builder/auth/client-adapters.d.ts +0 -149
- package/dist/kit/builder/auth/client-adapters.d.ts.map +0 -1
- package/dist/kit/builder/auth/components.d.ts +0 -119
- package/dist/kit/builder/auth/components.d.ts.map +0 -1
- package/dist/kit/builder/auth/hooks.d.ts +0 -158
- package/dist/kit/builder/auth/hooks.d.ts.map +0 -1
- package/dist/kit/builder/auth/permission-checker.d.ts.map +0 -1
- package/dist/kit/builder/auth/storage.d.ts +0 -17
- package/dist/kit/builder/auth/storage.d.ts.map +0 -1
- package/dist/kit/builder/auth/token-manager.d.ts.map +0 -1
- package/dist/kit/builder/auth/types.d.ts +0 -183
- package/dist/kit/builder/auth/types.d.ts.map +0 -1
- package/src/kit/builder/auth/client-adapters.ts +0 -398
- package/src/kit/builder/auth/components.tsx +0 -221
- package/src/kit/builder/auth/hooks.ts +0 -237
- package/src/kit/builder/auth/storage.ts +0 -366
- package/src/kit/builder/auth/types.ts +0 -393
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import { AuthAdapterConfig, AuthSession, GraphQLAuthClient, RESTAuthClient } from './types';
|
|
2
|
-
export type GraphQLClientAdapterOptions<TUser = unknown, TRole extends string = string, TPermission extends string = string, TSession extends AuthSession<TUser, TRole, TPermission> = AuthSession<TUser, TRole, TPermission>, TCredentials = unknown> = {
|
|
3
|
-
client: GraphQLAuthClient<TSession, TCredentials>;
|
|
4
|
-
resolveUser?: (session: TSession | null) => TUser | null;
|
|
5
|
-
resolveRoles?: (session: TSession | null) => TRole[];
|
|
6
|
-
resolvePermissions?: (session: TSession | null) => TPermission[];
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Creates an auth adapter config for GraphQL clients
|
|
10
|
-
* Works with Apollo Client, urql, graphql-request, etc.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```tsx
|
|
14
|
-
* import { ApolloClient } from '@apollo/client';
|
|
15
|
-
* import { createGraphQLAuthAdapter } from '@k3mart/react-kit/auth2';
|
|
16
|
-
*
|
|
17
|
-
* const apolloClient = new ApolloClient({ ... });
|
|
18
|
-
*
|
|
19
|
-
* const authConfig = createGraphQLAuthAdapter({
|
|
20
|
-
* client: {
|
|
21
|
-
* login: async (credentials) => {
|
|
22
|
-
* const result = await apolloClient.mutate({
|
|
23
|
-
* mutation: LOGIN_MUTATION,
|
|
24
|
-
* variables: credentials,
|
|
25
|
-
* });
|
|
26
|
-
* return result.data.login;
|
|
27
|
-
* },
|
|
28
|
-
* logout: async () => {
|
|
29
|
-
* await apolloClient.mutate({ mutation: LOGOUT_MUTATION });
|
|
30
|
-
* },
|
|
31
|
-
* refresh: async (refreshToken) => {
|
|
32
|
-
* const result = await apolloClient.mutate({
|
|
33
|
-
* mutation: REFRESH_MUTATION,
|
|
34
|
-
* variables: { refreshToken },
|
|
35
|
-
* });
|
|
36
|
-
* return result.data.refresh;
|
|
37
|
-
* },
|
|
38
|
-
* getCurrentUser: async () => {
|
|
39
|
-
* const result = await apolloClient.query({
|
|
40
|
-
* query: GET_CURRENT_USER_QUERY,
|
|
41
|
-
* });
|
|
42
|
-
* return result.data.currentUser;
|
|
43
|
-
* },
|
|
44
|
-
* },
|
|
45
|
-
* });
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
export declare function createGraphQLAuthAdapter<TUser = unknown, TRole extends string = string, TPermission extends string = string, TSession extends AuthSession<TUser, TRole, TPermission> = AuthSession<TUser, TRole, TPermission>, TCredentials = unknown>(options: GraphQLClientAdapterOptions<TUser, TRole, TPermission, TSession, TCredentials>): Partial<AuthAdapterConfig<TUser, TRole, TPermission, TSession, TCredentials>>;
|
|
49
|
-
export type RESTClientAdapterOptions<TUser = unknown, TRole extends string = string, TPermission extends string = string, TSession extends AuthSession<TUser, TRole, TPermission> = AuthSession<TUser, TRole, TPermission>, TCredentials = unknown> = {
|
|
50
|
-
client: RESTAuthClient<TSession, TCredentials>;
|
|
51
|
-
resolveUser?: (session: TSession | null) => TUser | null;
|
|
52
|
-
resolveRoles?: (session: TSession | null) => TRole[];
|
|
53
|
-
resolvePermissions?: (session: TSession | null) => TPermission[];
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* Creates an auth adapter config for REST API clients
|
|
57
|
-
* Works with fetch, axios, ky, etc.
|
|
58
|
-
*
|
|
59
|
-
* @example
|
|
60
|
-
* ```tsx
|
|
61
|
-
* import axios from 'axios';
|
|
62
|
-
* import { createRESTAuthAdapter } from '@k3mart/react-kit/auth2';
|
|
63
|
-
*
|
|
64
|
-
* const api = axios.create({ baseURL: 'https://api.example.com' });
|
|
65
|
-
*
|
|
66
|
-
* const authConfig = createRESTAuthAdapter({
|
|
67
|
-
* client: {
|
|
68
|
-
* login: async (credentials) => {
|
|
69
|
-
* const response = await api.post('/auth/login', credentials);
|
|
70
|
-
* return response.data;
|
|
71
|
-
* },
|
|
72
|
-
* logout: async () => {
|
|
73
|
-
* await api.post('/auth/logout');
|
|
74
|
-
* },
|
|
75
|
-
* refresh: async (refreshToken) => {
|
|
76
|
-
* const response = await api.post('/auth/refresh', { refreshToken });
|
|
77
|
-
* return response.data;
|
|
78
|
-
* },
|
|
79
|
-
* getCurrentUser: async () => {
|
|
80
|
-
* const response = await api.get('/auth/me');
|
|
81
|
-
* return response.data;
|
|
82
|
-
* },
|
|
83
|
-
* },
|
|
84
|
-
* });
|
|
85
|
-
* ```
|
|
86
|
-
*/
|
|
87
|
-
export declare function createRESTAuthAdapter<TUser = unknown, TRole extends string = string, TPermission extends string = string, TSession extends AuthSession<TUser, TRole, TPermission> = AuthSession<TUser, TRole, TPermission>, TCredentials = unknown>(options: RESTClientAdapterOptions<TUser, TRole, TPermission, TSession, TCredentials>): Partial<AuthAdapterConfig<TUser, TRole, TPermission, TSession, TCredentials>>;
|
|
88
|
-
/**
|
|
89
|
-
* Helper to create an axios interceptor that automatically adds auth token
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* ```tsx
|
|
93
|
-
* import axios from 'axios';
|
|
94
|
-
* import { createAxiosAuthInterceptor } from '@k3mart/react-kit/auth2';
|
|
95
|
-
*
|
|
96
|
-
* const api = axios.create({ baseURL: 'https://api.example.com' });
|
|
97
|
-
*
|
|
98
|
-
* createAxiosAuthInterceptor(api, authAdapter);
|
|
99
|
-
* ```
|
|
100
|
-
*/
|
|
101
|
-
export declare function createAxiosAuthInterceptor(axiosInstance: any, getToken: () => string | null, options?: {
|
|
102
|
-
tokenType?: string;
|
|
103
|
-
onTokenExpired?: () => void;
|
|
104
|
-
refreshToken?: () => Promise<void>;
|
|
105
|
-
}): void;
|
|
106
|
-
/**
|
|
107
|
-
* Helper to create a fetch wrapper with auth token injection
|
|
108
|
-
*
|
|
109
|
-
* @example
|
|
110
|
-
* ```tsx
|
|
111
|
-
* import { createAuthFetch } from '@k3mart/react-kit/auth2';
|
|
112
|
-
*
|
|
113
|
-
* const authenticatedFetch = createAuthFetch(
|
|
114
|
-
* () => authAdapter.getToken(),
|
|
115
|
-
* {
|
|
116
|
-
* onTokenExpired: () => authAdapter.logout(),
|
|
117
|
-
* refreshToken: () => authAdapter.refresh(),
|
|
118
|
-
* }
|
|
119
|
-
* );
|
|
120
|
-
*
|
|
121
|
-
* // Use it like regular fetch
|
|
122
|
-
* const response = await authenticatedFetch('/api/users');
|
|
123
|
-
* ```
|
|
124
|
-
*/
|
|
125
|
-
export declare function createAuthFetch(getToken: () => string | null, options?: {
|
|
126
|
-
tokenType?: string;
|
|
127
|
-
onTokenExpired?: () => void;
|
|
128
|
-
refreshToken?: () => Promise<void>;
|
|
129
|
-
}): typeof fetch;
|
|
130
|
-
/**
|
|
131
|
-
* Helper to create Apollo Link with auth token injection
|
|
132
|
-
*
|
|
133
|
-
* @example
|
|
134
|
-
* ```tsx
|
|
135
|
-
* import { ApolloClient, InMemoryCache, from } from '@apollo/client';
|
|
136
|
-
* import { createApolloAuthLink } from '@k3mart/react-kit/auth2';
|
|
137
|
-
*
|
|
138
|
-
* const authLink = createApolloAuthLink(() => authAdapter.getToken());
|
|
139
|
-
*
|
|
140
|
-
* const client = new ApolloClient({
|
|
141
|
-
* link: from([authLink, httpLink]),
|
|
142
|
-
* cache: new InMemoryCache(),
|
|
143
|
-
* });
|
|
144
|
-
* ```
|
|
145
|
-
*/
|
|
146
|
-
export declare function createApolloAuthLink(getToken: () => string | null, options?: {
|
|
147
|
-
tokenType?: string;
|
|
148
|
-
}): (ApolloLink: any) => any;
|
|
149
|
-
//# sourceMappingURL=client-adapters.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-adapters.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/auth/client-adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { ComponentType } from 'react';
|
|
2
|
-
import { CanProps, RequireAuthProps, WithPermissionOptions } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* Component that requires authentication
|
|
5
|
-
* Optionally checks for specific roles and permissions
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```tsx
|
|
9
|
-
* // Basic authentication check
|
|
10
|
-
* <RequireAuth fallback={<Login />}>
|
|
11
|
-
* <Dashboard />
|
|
12
|
-
* </RequireAuth>
|
|
13
|
-
*
|
|
14
|
-
* // With role check
|
|
15
|
-
* <RequireAuth
|
|
16
|
-
* roles="admin"
|
|
17
|
-
* fallback={<Forbidden />}
|
|
18
|
-
* loadingFallback={<Spinner />}
|
|
19
|
-
* >
|
|
20
|
-
* <AdminPanel />
|
|
21
|
-
* </RequireAuth>
|
|
22
|
-
*
|
|
23
|
-
* // With permission check
|
|
24
|
-
* <RequireAuth
|
|
25
|
-
* permissions={['post:edit', 'post:delete']}
|
|
26
|
-
* fallback={<Forbidden />}
|
|
27
|
-
* >
|
|
28
|
-
* <PostEditor />
|
|
29
|
-
* </RequireAuth>
|
|
30
|
-
*
|
|
31
|
-
* // Complex rule
|
|
32
|
-
* <RequireAuth
|
|
33
|
-
* roles={['admin', 'moderator']}
|
|
34
|
-
* permissions={{
|
|
35
|
-
* operator: 'OR',
|
|
36
|
-
* permissions: ['post:edit', 'post:delete']
|
|
37
|
-
* }}
|
|
38
|
-
* requireAll={false}
|
|
39
|
-
* fallback={<Forbidden />}
|
|
40
|
-
* >
|
|
41
|
-
* <ContentManager />
|
|
42
|
-
* </RequireAuth>
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
export declare function RequireAuth<TRole extends string = string, TPermission extends string = string>({ children, fallback, loadingFallback, roles, permissions, requireAll, }: RequireAuthProps<TRole, TPermission>): import('react').ReactNode;
|
|
46
|
-
/**
|
|
47
|
-
* Component for conditional rendering based on permissions
|
|
48
|
-
* More flexible than RequireAuth - doesn't check authentication status
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
* ```tsx
|
|
52
|
-
* // Show button only if user can edit
|
|
53
|
-
* <Can permissions="post:edit" fallback={<ReadOnlyView />}>
|
|
54
|
-
* <EditButton />
|
|
55
|
-
* </Can>
|
|
56
|
-
*
|
|
57
|
-
* // Show admin panel if user is admin
|
|
58
|
-
* <Can roles="admin">
|
|
59
|
-
* <AdminPanel />
|
|
60
|
-
* </Can>
|
|
61
|
-
*
|
|
62
|
-
* // Complex permission check
|
|
63
|
-
* <Can
|
|
64
|
-
* roles={['admin', 'moderator']}
|
|
65
|
-
* permissions={{
|
|
66
|
-
* operator: 'OR',
|
|
67
|
-
* permissions: ['post:edit', 'post:delete']
|
|
68
|
-
* }}
|
|
69
|
-
* requireAll={false}
|
|
70
|
-
* >
|
|
71
|
-
* <ManageButton />
|
|
72
|
-
* </Can>
|
|
73
|
-
* ```
|
|
74
|
-
*/
|
|
75
|
-
export declare function Can<TRole extends string = string, TPermission extends string = string>({ children, fallback, roles, permissions, requireAll, }: CanProps<TRole, TPermission>): import('react').ReactNode;
|
|
76
|
-
/**
|
|
77
|
-
* Higher-order component that wraps a component with permission checks
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* ```tsx
|
|
81
|
-
* const AdminButton = withPermission(Button, {
|
|
82
|
-
* roles: 'admin'
|
|
83
|
-
* });
|
|
84
|
-
*
|
|
85
|
-
* const EditButton = withPermission(Button, {
|
|
86
|
-
* permissions: 'post:edit'
|
|
87
|
-
* });
|
|
88
|
-
*
|
|
89
|
-
* // Use like regular component
|
|
90
|
-
* <AdminButton onClick={handleAdmin}>Admin Action</AdminButton>
|
|
91
|
-
* <EditButton onClick={handleEdit}>Edit Post</EditButton>
|
|
92
|
-
* ```
|
|
93
|
-
*/
|
|
94
|
-
export declare function withPermission<TRole extends string = string, TPermission extends string = string, TProps extends Record<string, unknown> = Record<string, unknown>>(Component: ComponentType<TProps>, options: WithPermissionOptions<TRole, TPermission>): ComponentType<TProps>;
|
|
95
|
-
/**
|
|
96
|
-
* Component that shows children only when authenticated
|
|
97
|
-
*/
|
|
98
|
-
export declare function ShowWhenAuthenticated({ children, }: {
|
|
99
|
-
children: React.ReactNode;
|
|
100
|
-
}): import('react').ReactNode;
|
|
101
|
-
/**
|
|
102
|
-
* Component that shows children only when NOT authenticated
|
|
103
|
-
*/
|
|
104
|
-
export declare function ShowWhenUnauthenticated({ children, }: {
|
|
105
|
-
children: React.ReactNode;
|
|
106
|
-
}): import('react').ReactNode;
|
|
107
|
-
/**
|
|
108
|
-
* Component that shows children only while loading
|
|
109
|
-
*/
|
|
110
|
-
export declare function ShowWhenLoading({ children }: {
|
|
111
|
-
children: React.ReactNode;
|
|
112
|
-
}): import('react').ReactNode;
|
|
113
|
-
/**
|
|
114
|
-
* Component that shows children only when there's an error
|
|
115
|
-
*/
|
|
116
|
-
export declare function ShowWhenError({ children }: {
|
|
117
|
-
children: React.ReactNode;
|
|
118
|
-
}): import('react').ReactNode;
|
|
119
|
-
//# sourceMappingURL=components.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/auth/components.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EACV,QAAQ,EACR,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAQjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,WAAW,CACzB,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,WAAW,SAAS,MAAM,GAAG,MAAM,EACnC,EACA,QAAQ,EACR,QAAe,EACf,eAAsB,EACtB,KAAK,EACL,WAAW,EACX,UAAiB,GAClB,EAAE,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,6BAwBtC;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,GAAG,CACjB,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,WAAW,SAAS,MAAM,GAAG,MAAM,EACnC,EACA,QAAQ,EACR,QAAe,EACf,KAAK,EACL,WAAW,EACX,UAAiB,GAClB,EAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,6BAI9B;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,WAAW,SAAS,MAAM,GAAG,MAAM,EACnC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAEhE,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,EAChC,OAAO,EAAE,qBAAqB,CAAC,KAAK,EAAE,WAAW,CAAC,GACjD,aAAa,CAAC,MAAM,CAAC,CAQvB;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,6BAGA;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,6BAGA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,6BAG1E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,6BAGxE"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { AuthSession, PermissionPolicy, PermissionRule, WithPermissionOptions } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Hook to access the entire auth context
|
|
4
|
-
*/
|
|
5
|
-
export declare function useAuth(): {
|
|
6
|
-
state: import('./types').AuthAdapterState<AuthSession<unknown, string, string>, unknown, string, string>;
|
|
7
|
-
status: import('./types').AuthStatus;
|
|
8
|
-
session: AuthSession<unknown, string, string> | null;
|
|
9
|
-
user: unknown;
|
|
10
|
-
roles: string[];
|
|
11
|
-
permissions: string[];
|
|
12
|
-
error?: unknown;
|
|
13
|
-
login?: ((credentials: unknown) => Promise<import('./types').AuthAdapterState<AuthSession<unknown, string, string>, unknown, string, string>>) | undefined;
|
|
14
|
-
logout: () => Promise<void>;
|
|
15
|
-
refresh: () => Promise<import('./types').AuthAdapterState<AuthSession<unknown, string, string>, unknown, string, string>>;
|
|
16
|
-
setSession: (session: AuthSession<unknown, string, string> | null) => Promise<import('./types').AuthAdapterState<AuthSession<unknown, string, string>, unknown, string, string>>;
|
|
17
|
-
hasRole: (target: string | string[], options?: {
|
|
18
|
-
requireAll?: boolean;
|
|
19
|
-
}) => boolean;
|
|
20
|
-
hasPermission: (target: string | string[] | PermissionPolicy<string>, options?: {
|
|
21
|
-
requireAll?: boolean;
|
|
22
|
-
}) => boolean;
|
|
23
|
-
can: (rule: PermissionRule<string, string>) => boolean;
|
|
24
|
-
getToken: () => string | null;
|
|
25
|
-
isTokenExpired: () => boolean;
|
|
26
|
-
getTimeUntilExpiry: () => number;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Hook to get the current auth status
|
|
30
|
-
*/
|
|
31
|
-
export declare function useAuthStatus(): import('./types').AuthStatus;
|
|
32
|
-
/**
|
|
33
|
-
* Hook to check if user is authenticated
|
|
34
|
-
*/
|
|
35
|
-
export declare function useIsAuthenticated(): boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Hook to get the current session
|
|
38
|
-
*/
|
|
39
|
-
export declare function useAuthSession<TSession extends AuthSession>(): TSession | null;
|
|
40
|
-
/**
|
|
41
|
-
* Hook to get the current user
|
|
42
|
-
*/
|
|
43
|
-
export declare function useAuthUser<TUser>(): TUser | null;
|
|
44
|
-
/**
|
|
45
|
-
* Hook to get user roles
|
|
46
|
-
*/
|
|
47
|
-
export declare function useAuthRoles<TRole extends string = string>(): TRole[];
|
|
48
|
-
/**
|
|
49
|
-
* Hook to get user permissions
|
|
50
|
-
*/
|
|
51
|
-
export declare function useAuthPermissions<TPermission extends string = string>(): TPermission[];
|
|
52
|
-
/**
|
|
53
|
-
* Hook to get authentication error
|
|
54
|
-
*/
|
|
55
|
-
export declare function useAuthError(): unknown;
|
|
56
|
-
/**
|
|
57
|
-
* Hook to check if user has specific permission(s)
|
|
58
|
-
* Supports permission policies with AND/OR operators
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
* ```tsx
|
|
62
|
-
* // Check single permission
|
|
63
|
-
* const canEdit = usePermission('post:edit');
|
|
64
|
-
*
|
|
65
|
-
* // Check multiple permissions (all required by default)
|
|
66
|
-
* const canManage = usePermission(['post:edit', 'post:delete']);
|
|
67
|
-
*
|
|
68
|
-
* // Check multiple permissions (any one required)
|
|
69
|
-
* const canModify = usePermission(['post:edit', 'post:delete'], { requireAll: false });
|
|
70
|
-
*
|
|
71
|
-
* // Check with policy
|
|
72
|
-
* const canAccess = usePermission({
|
|
73
|
-
* operator: 'OR',
|
|
74
|
-
* permissions: ['admin:access', 'moderator:access']
|
|
75
|
-
* });
|
|
76
|
-
* ```
|
|
77
|
-
*/
|
|
78
|
-
export declare function usePermission<TPermission extends string = string>(permission: TPermission | TPermission[] | PermissionPolicy<TPermission>, options?: {
|
|
79
|
-
requireAll?: boolean;
|
|
80
|
-
}): boolean;
|
|
81
|
-
/**
|
|
82
|
-
* Hook to check if user has specific role(s)
|
|
83
|
-
*
|
|
84
|
-
* @example
|
|
85
|
-
* ```tsx
|
|
86
|
-
* // Check single role
|
|
87
|
-
* const isAdmin = useRole('admin');
|
|
88
|
-
*
|
|
89
|
-
* // Check multiple roles (all required by default)
|
|
90
|
-
* const isSuperAdmin = useRole(['admin', 'super']);
|
|
91
|
-
*
|
|
92
|
-
* // Check multiple roles (any one required)
|
|
93
|
-
* const isStaff = useRole(['admin', 'moderator'], { requireAll: false });
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
export declare function useRole<TRole extends string = string>(roles: TRole | TRole[], options?: {
|
|
97
|
-
requireAll?: boolean;
|
|
98
|
-
}): boolean;
|
|
99
|
-
/**
|
|
100
|
-
* Hook to check complex permission rules
|
|
101
|
-
* Combines role and permission checks with flexible logic
|
|
102
|
-
*
|
|
103
|
-
* @example
|
|
104
|
-
* ```tsx
|
|
105
|
-
* // Check if user has admin role AND edit permission
|
|
106
|
-
* const canAdminEdit = useCan({
|
|
107
|
-
* roles: 'admin',
|
|
108
|
-
* permissions: 'post:edit',
|
|
109
|
-
* requireAll: true
|
|
110
|
-
* });
|
|
111
|
-
*
|
|
112
|
-
* // Check if user has admin role OR edit permission
|
|
113
|
-
* const canAccess = useCan({
|
|
114
|
-
* roles: 'admin',
|
|
115
|
-
* permissions: 'post:edit',
|
|
116
|
-
* requireAll: false
|
|
117
|
-
* });
|
|
118
|
-
*
|
|
119
|
-
* // Complex policy
|
|
120
|
-
* const canManage = useCan({
|
|
121
|
-
* roles: ['admin', 'moderator'],
|
|
122
|
-
* permissions: {
|
|
123
|
-
* operator: 'OR',
|
|
124
|
-
* permissions: ['post:edit', 'post:delete']
|
|
125
|
-
* }
|
|
126
|
-
* });
|
|
127
|
-
* ```
|
|
128
|
-
*/
|
|
129
|
-
export declare function useCan<TRole extends string = string, TPermission extends string = string>(rule: WithPermissionOptions<TRole, TPermission> | PermissionRule<TRole, TPermission>): boolean;
|
|
130
|
-
/**
|
|
131
|
-
* Hook to get the current auth token
|
|
132
|
-
*/
|
|
133
|
-
export declare function useAuthToken(): string | null;
|
|
134
|
-
/**
|
|
135
|
-
* Hook to check if token is expired
|
|
136
|
-
*/
|
|
137
|
-
export declare function useIsTokenExpired(): boolean;
|
|
138
|
-
/**
|
|
139
|
-
* Hook to get time until token expiry in milliseconds
|
|
140
|
-
*/
|
|
141
|
-
export declare function useTimeUntilExpiry(): number;
|
|
142
|
-
/**
|
|
143
|
-
* Hook to get the login function
|
|
144
|
-
*/
|
|
145
|
-
export declare function useLogin<TCredentials = unknown>(): ((credentials: TCredentials) => Promise<unknown>) | undefined;
|
|
146
|
-
/**
|
|
147
|
-
* Hook to get the logout function
|
|
148
|
-
*/
|
|
149
|
-
export declare function useLogout(): () => Promise<void>;
|
|
150
|
-
/**
|
|
151
|
-
* Hook to get the refresh function
|
|
152
|
-
*/
|
|
153
|
-
export declare function useRefresh(): () => Promise<import('./types').AuthAdapterState<AuthSession<unknown, string, string>, unknown, string, string>>;
|
|
154
|
-
/**
|
|
155
|
-
* Hook to get the setSession function
|
|
156
|
-
*/
|
|
157
|
-
export declare function useSetSession<TSession extends AuthSession>(): (session: TSession | null) => Promise<unknown>;
|
|
158
|
-
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/auth/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAOjB;;GAEG;AACH,wBAAgB,OAAO;;;;;;;;;;;;;kBA8NulF,CAAC;;;kBAAmJ,CAAC;;;;;;EA5NlwF;AAED;;GAEG;AACH,wBAAgB,aAAa,iCAG5B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,YAGjC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,SAAS,WAAW,KAEvC,QAAQ,GAAG,IAAI,CAClC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,KAEhB,KAAK,GAAG,IAAI,CAC5B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,KAExC,KAAK,EAAE,CACxB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,SAAS,MAAM,GAAG,MAAM,KAE9C,WAAW,EAAE,CACpC;AAED;;GAEG;AACH,wBAAgB,YAAY,YAG3B;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,WAAW,SAAS,MAAM,GAAG,MAAM,EAC/D,UAAU,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,gBAAgB,CAAC,WAAW,CAAC,EACvE,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,WAInC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EACnD,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,EACtB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,WAInC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,MAAM,CACpB,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,WAAW,SAAS,MAAM,GAAG,MAAM,EAEnC,IAAI,EACA,qBAAqB,CAAC,KAAK,EAAE,WAAW,CAAC,GACzC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,WAIvC;AAMD;;GAEG;AACH,wBAAgB,YAAY,kBAG3B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,YAGhC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,WAGjC;AAMD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,YAAY,GAAG,OAAO,KAE7B,CAAC,CAAC,WAAW,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAC9E;AAED;;GAEG;AACH,wBAAgB,SAAS,wBAGxB;AAED;;GAEG;AACH,wBAAgB,UAAU,qHAGzB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,SAAS,WAAW,KAEnC,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,CACpE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"permission-checker.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/auth/permission-checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,WAAW,EAAE,CAAC,EAAE,EAChB,SAAS,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GACjC,CAAC,EAAE,CAsBL;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAC1C,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAC3B,CAAC,EAAE,CAsBL;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAC/C,eAAe,EAAE,CAAC,EAAE,EACpB,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,EACrC,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,OAAO,CAsBT;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,SAAS,EAAE,CAAC,EAAE,EACd,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EACf,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,OAAO,CAST;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,WAAW,SAAS,MAAM,GAAG,MAAM,EAEnC,SAAS,EAAE,KAAK,EAAE,EAClB,eAAe,EAAE,WAAW,EAAE,EAC9B,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,GACvC,OAAO,CAkBT"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { AuthStorage, StorageOptions } from './types';
|
|
2
|
-
export declare const createMemoryStorage: <T>() => AuthStorage<T>;
|
|
3
|
-
export declare const createCookieStorage: <T>(options: StorageOptions) => AuthStorage<T>;
|
|
4
|
-
export type BrowserStorageOptions<T> = {
|
|
5
|
-
key: string;
|
|
6
|
-
serialize?: (value: T | null) => Promise<string | null> | string | null;
|
|
7
|
-
deserialize?: (value: string | null) => Promise<T | null> | T | null;
|
|
8
|
-
storage?: Storage;
|
|
9
|
-
encrypt?: boolean;
|
|
10
|
-
encryptionKey?: string;
|
|
11
|
-
};
|
|
12
|
-
export declare const createBrowserStorage: <T>(options: BrowserStorageOptions<T>) => AuthStorage<T>;
|
|
13
|
-
/**
|
|
14
|
-
* Creates appropriate storage based on options
|
|
15
|
-
*/
|
|
16
|
-
export declare function createStorage<T>(options?: StorageOptions): AuthStorage<T>;
|
|
17
|
-
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/auth/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAS3D,eAAO,MAAM,mBAAmB,GAAI,CAAC,OAAK,WAAW,CAAC,CAAC,CAYtD,CAAC;AAmGF,eAAO,MAAM,mBAAmB,GAAI,CAAC,EACnC,SAAS,cAAc,KACtB,WAAW,CAAC,CAAC,CA4Gf,CAAC;AAMF,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IACxE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,CAAC,EACpC,SAAS,qBAAqB,CAAC,CAAC,CAAC,KAChC,WAAW,CAAC,CAAC,CAkFf,CAAC;AAMF;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAE,cAAmB,GAAG,WAAW,CAAC,CAAC,CAAC,CA2B7E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/auth/token-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,YAAY,CA8Cf"}
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
export type AuthStatus = 'idle' | 'loading' | 'authenticated' | 'unauthenticated' | 'error';
|
|
3
|
-
export type TokenType = 'bearer' | 'jwt' | 'custom';
|
|
4
|
-
export type RefreshStrategy = 'auto' | 'manual' | 'sliding';
|
|
5
|
-
export type AuthSession<TUser = unknown, TRole = string, TPermission = string> = {
|
|
6
|
-
user?: TUser | null;
|
|
7
|
-
accessToken?: string | null;
|
|
8
|
-
refreshToken?: string | null;
|
|
9
|
-
tokenType?: TokenType;
|
|
10
|
-
roles?: TRole[] | null;
|
|
11
|
-
permissions?: TPermission[] | null;
|
|
12
|
-
expiresAt?: number | null;
|
|
13
|
-
refreshExpiresAt?: number | null;
|
|
14
|
-
issuedAt?: number | null;
|
|
15
|
-
meta?: Record<string, unknown> | null;
|
|
16
|
-
};
|
|
17
|
-
export type PermissionOperator = 'AND' | 'OR';
|
|
18
|
-
export type PermissionPolicy<TPermission extends string = string> = {
|
|
19
|
-
operator?: PermissionOperator;
|
|
20
|
-
permissions: TPermission[];
|
|
21
|
-
};
|
|
22
|
-
export type PermissionRule<TRole extends string = string, TPermission extends string = string> = {
|
|
23
|
-
roles?: TRole | TRole[];
|
|
24
|
-
permissions?: TPermission | TPermission[] | PermissionPolicy<TPermission>;
|
|
25
|
-
requireAll?: boolean;
|
|
26
|
-
};
|
|
27
|
-
export type PermissionHierarchy<TPermission extends string = string> = {
|
|
28
|
-
[key in TPermission]?: TPermission[];
|
|
29
|
-
};
|
|
30
|
-
export type RoleHierarchy<TRole extends string = string> = {
|
|
31
|
-
[key in TRole]?: TRole[];
|
|
32
|
-
};
|
|
33
|
-
export type AuthAdapterState<TSession, TUser, TRole, TPermission> = {
|
|
34
|
-
status: AuthStatus;
|
|
35
|
-
session: TSession | null;
|
|
36
|
-
user: TUser | null;
|
|
37
|
-
roles: TRole[];
|
|
38
|
-
permissions: TPermission[];
|
|
39
|
-
error?: unknown;
|
|
40
|
-
lastRefresh?: number;
|
|
41
|
-
tokenExpiresIn?: number;
|
|
42
|
-
};
|
|
43
|
-
export type AuthAdapterSubscriber<TSession, TUser, TRole, TPermission> = (state: AuthAdapterState<TSession, TUser, TRole, TPermission>) => void;
|
|
44
|
-
export type AuthStorage<TSession> = {
|
|
45
|
-
get: () => Promise<TSession | null> | TSession | null;
|
|
46
|
-
set: (value: TSession | null) => Promise<void> | void;
|
|
47
|
-
clear: () => Promise<void> | void;
|
|
48
|
-
};
|
|
49
|
-
export type StorageType = 'local' | 'session' | 'cookie' | 'memory';
|
|
50
|
-
export type StorageOptions = {
|
|
51
|
-
key?: string;
|
|
52
|
-
encrypt?: boolean;
|
|
53
|
-
encryptionKey?: string;
|
|
54
|
-
storage?: StorageType;
|
|
55
|
-
cookieOptions?: {
|
|
56
|
-
domain?: string;
|
|
57
|
-
path?: string;
|
|
58
|
-
secure?: boolean;
|
|
59
|
-
sameSite?: 'strict' | 'lax' | 'none';
|
|
60
|
-
maxAge?: number;
|
|
61
|
-
};
|
|
62
|
-
};
|
|
63
|
-
export type AuthMiddleware<TSession = unknown, TUser = unknown, TRole extends string = string, TPermission extends string = string> = {
|
|
64
|
-
onBeforeLogin?: (credentials: unknown) => Promise<void> | void;
|
|
65
|
-
onAfterLogin?: (state: AuthAdapterState<TSession, TUser, TRole, TPermission>) => Promise<void> | void;
|
|
66
|
-
onBeforeLogout?: () => Promise<void> | void;
|
|
67
|
-
onAfterLogout?: () => Promise<void> | void;
|
|
68
|
-
onRefresh?: (state: AuthAdapterState<TSession, TUser, TRole, TPermission>) => Promise<void> | void;
|
|
69
|
-
onError?: (error: unknown) => Promise<void> | void;
|
|
70
|
-
onSessionExpired?: () => Promise<void> | void;
|
|
71
|
-
};
|
|
72
|
-
export type TokenManager = {
|
|
73
|
-
isExpired: (expiresAt?: number | null) => boolean;
|
|
74
|
-
shouldRefresh: (expiresAt?: number | null, threshold?: number) => boolean;
|
|
75
|
-
getTimeUntilExpiry: (expiresAt?: number | null) => number;
|
|
76
|
-
scheduleRefresh?: (callback: () => void, expiresAt?: number | null) => () => void;
|
|
77
|
-
};
|
|
78
|
-
export type AuthAdapterConfig<TUser = unknown, TRole extends string = string, TPermission extends string = string, TSession extends AuthSession<TUser, TRole, TPermission> = AuthSession<TUser, TRole, TPermission>, TCredentials = unknown> = {
|
|
79
|
-
storage?: AuthStorage<TSession>;
|
|
80
|
-
loadSession?: () => Promise<TSession | null>;
|
|
81
|
-
login?: (credentials: TCredentials) => Promise<TSession>;
|
|
82
|
-
logout?: (session: TSession | null) => Promise<void> | void;
|
|
83
|
-
refresh?: (session: TSession) => Promise<TSession>;
|
|
84
|
-
resolveUser?: (session: TSession | null) => TUser | null;
|
|
85
|
-
resolveRoles?: (session: TSession | null) => TRole[];
|
|
86
|
-
resolvePermissions?: (session: TSession | null) => TPermission[];
|
|
87
|
-
shouldRefresh?: (session: TSession) => boolean;
|
|
88
|
-
onStateChange?: (state: AuthAdapterState<TSession, TUser, TRole, TPermission>) => void;
|
|
89
|
-
refreshStrategy?: RefreshStrategy;
|
|
90
|
-
refreshThreshold?: number;
|
|
91
|
-
autoRefresh?: boolean;
|
|
92
|
-
permissionHierarchy?: PermissionHierarchy<TPermission>;
|
|
93
|
-
roleHierarchy?: RoleHierarchy<TRole>;
|
|
94
|
-
middleware?: AuthMiddleware<TSession, TUser, TRole, TPermission>[];
|
|
95
|
-
tokenManager?: TokenManager;
|
|
96
|
-
retryConfig?: {
|
|
97
|
-
maxRetries?: number;
|
|
98
|
-
retryDelay?: number;
|
|
99
|
-
retryOn?: (error: unknown) => boolean;
|
|
100
|
-
};
|
|
101
|
-
};
|
|
102
|
-
export type AuthAdapter<TUser = unknown, TRole extends string = string, TPermission extends string = string, TSession extends AuthSession<TUser, TRole, TPermission> = AuthSession<TUser, TRole, TPermission>, TCredentials = unknown> = {
|
|
103
|
-
getState: () => AuthAdapterState<TSession, TUser, TRole, TPermission>;
|
|
104
|
-
subscribe: (listener: AuthAdapterSubscriber<TSession, TUser, TRole, TPermission>) => () => void;
|
|
105
|
-
sync: () => Promise<AuthAdapterState<TSession, TUser, TRole, TPermission>>;
|
|
106
|
-
login?: (credentials: TCredentials) => Promise<AuthAdapterState<TSession, TUser, TRole, TPermission>>;
|
|
107
|
-
logout: () => Promise<void>;
|
|
108
|
-
refresh: () => Promise<AuthAdapterState<TSession, TUser, TRole, TPermission>>;
|
|
109
|
-
setSession: (session: TSession | null) => Promise<AuthAdapterState<TSession, TUser, TRole, TPermission>>;
|
|
110
|
-
hasRole: (target: TRole | TRole[], options?: {
|
|
111
|
-
requireAll?: boolean;
|
|
112
|
-
}) => boolean;
|
|
113
|
-
hasPermission: (target: TPermission | TPermission[] | PermissionPolicy<TPermission>, options?: {
|
|
114
|
-
requireAll?: boolean;
|
|
115
|
-
}) => boolean;
|
|
116
|
-
can: (rule: PermissionRule<TRole, TPermission>) => boolean;
|
|
117
|
-
getToken: () => string | null;
|
|
118
|
-
isTokenExpired: () => boolean;
|
|
119
|
-
getTimeUntilExpiry: () => number;
|
|
120
|
-
scheduleAutoRefresh?: () => () => void;
|
|
121
|
-
};
|
|
122
|
-
export type AuthContextValue<TUser = unknown, TRole extends string = string, TPermission extends string = string, TSession extends AuthSession<TUser, TRole, TPermission> = AuthSession<TUser, TRole, TPermission>, TCredentials = unknown> = {
|
|
123
|
-
state: AuthAdapterState<TSession, TUser, TRole, TPermission>;
|
|
124
|
-
status: AuthStatus;
|
|
125
|
-
session: TSession | null;
|
|
126
|
-
user: TUser | null;
|
|
127
|
-
roles: TRole[];
|
|
128
|
-
permissions: TPermission[];
|
|
129
|
-
error?: unknown;
|
|
130
|
-
login?: (credentials: TCredentials) => Promise<AuthAdapterState<TSession, TUser, TRole, TPermission>>;
|
|
131
|
-
logout: () => Promise<void>;
|
|
132
|
-
refresh: () => Promise<AuthAdapterState<TSession, TUser, TRole, TPermission>>;
|
|
133
|
-
setSession: (session: TSession | null) => Promise<AuthAdapterState<TSession, TUser, TRole, TPermission>>;
|
|
134
|
-
hasRole: (target: TRole | TRole[], options?: {
|
|
135
|
-
requireAll?: boolean;
|
|
136
|
-
}) => boolean;
|
|
137
|
-
hasPermission: (target: TPermission | TPermission[] | PermissionPolicy<TPermission>, options?: {
|
|
138
|
-
requireAll?: boolean;
|
|
139
|
-
}) => boolean;
|
|
140
|
-
can: (rule: PermissionRule<TRole, TPermission>) => boolean;
|
|
141
|
-
getToken: () => string | null;
|
|
142
|
-
isTokenExpired: () => boolean;
|
|
143
|
-
getTimeUntilExpiry: () => number;
|
|
144
|
-
};
|
|
145
|
-
export type RequireAuthProps<TRole extends string = string, TPermission extends string = string> = {
|
|
146
|
-
children: ReactNode;
|
|
147
|
-
fallback?: ReactNode;
|
|
148
|
-
loadingFallback?: ReactNode;
|
|
149
|
-
roles?: TRole | TRole[];
|
|
150
|
-
permissions?: TPermission | TPermission[] | PermissionPolicy<TPermission>;
|
|
151
|
-
requireAll?: boolean;
|
|
152
|
-
};
|
|
153
|
-
export type CanProps<TRole extends string = string, TPermission extends string = string> = {
|
|
154
|
-
children: ReactNode;
|
|
155
|
-
fallback?: ReactNode;
|
|
156
|
-
roles?: TRole | TRole[];
|
|
157
|
-
permissions?: TPermission | TPermission[] | PermissionPolicy<TPermission>;
|
|
158
|
-
requireAll?: boolean;
|
|
159
|
-
};
|
|
160
|
-
export type WithPermissionOptions<TRole extends string = string, TPermission extends string = string> = {
|
|
161
|
-
roles?: TRole | TRole[];
|
|
162
|
-
permissions?: TPermission | TPermission[] | PermissionPolicy<TPermission>;
|
|
163
|
-
requireAll?: boolean;
|
|
164
|
-
};
|
|
165
|
-
export type GraphQLAuthClient<TSession = unknown, TCredentials = unknown> = {
|
|
166
|
-
login: (credentials: TCredentials) => Promise<TSession>;
|
|
167
|
-
logout?: () => Promise<void>;
|
|
168
|
-
refresh?: (refreshToken: string) => Promise<TSession>;
|
|
169
|
-
getCurrentUser?: () => Promise<TSession>;
|
|
170
|
-
};
|
|
171
|
-
export type RESTAuthClient<TSession = unknown, TCredentials = unknown> = {
|
|
172
|
-
login: (credentials: TCredentials) => Promise<TSession>;
|
|
173
|
-
logout?: () => Promise<void>;
|
|
174
|
-
refresh?: (refreshToken: string) => Promise<TSession>;
|
|
175
|
-
getCurrentUser?: () => Promise<TSession>;
|
|
176
|
-
};
|
|
177
|
-
export type ClientAdapter<TSession = unknown, TCredentials = unknown> = GraphQLAuthClient<TSession, TCredentials> | RESTAuthClient<TSession, TCredentials>;
|
|
178
|
-
export type InferSession<T> = T extends AuthAdapter<infer _User, infer _Role extends string, infer _Permission extends string, infer TSession, infer _Credentials> ? TSession : never;
|
|
179
|
-
export type InferUser<T> = T extends AuthAdapter<infer TUser, infer _Role extends string, infer _Permission extends string, infer _Session, infer _Credentials> ? TUser : never;
|
|
180
|
-
export type InferRole<T> = T extends AuthAdapter<infer _User, infer TRole extends string, infer _Permission extends string, infer _Session, infer _Credentials> ? TRole : never;
|
|
181
|
-
export type InferPermission<T> = T extends AuthAdapter<infer _User, infer _Role extends string, infer TPermission extends string, infer _Session, infer _Credentials> ? TPermission : never;
|
|
182
|
-
export type InferCredentials<T> = T extends AuthAdapter<infer _User, infer _Role extends string, infer _Permission extends string, infer _Session, infer TCredentials> ? TCredentials : never;
|
|
183
|
-
//# sourceMappingURL=types.d.ts.map
|