@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.
Files changed (152) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1013 -21
  4. package/dist/kit/builder/auth/components/Can.d.ts +13 -0
  5. package/dist/kit/builder/auth/components/Can.d.ts.map +1 -0
  6. package/dist/kit/builder/auth/components/RequireAuth.d.ts +45 -0
  7. package/dist/kit/builder/auth/components/RequireAuth.d.ts.map +1 -0
  8. package/dist/kit/builder/auth/components/ShowWhenAuthenticated.d.ts +8 -0
  9. package/dist/kit/builder/auth/components/ShowWhenAuthenticated.d.ts.map +1 -0
  10. package/dist/kit/builder/auth/components/ShowWhenError.d.ts +8 -0
  11. package/dist/kit/builder/auth/components/ShowWhenError.d.ts.map +1 -0
  12. package/dist/kit/builder/auth/components/ShowWhenLoading.d.ts +8 -0
  13. package/dist/kit/builder/auth/components/ShowWhenLoading.d.ts.map +1 -0
  14. package/dist/kit/builder/auth/components/ShowWhenUnauthenticated.d.ts +8 -0
  15. package/dist/kit/builder/auth/components/ShowWhenUnauthenticated.d.ts.map +1 -0
  16. package/dist/kit/builder/auth/components/withPermission.d.ts +7 -0
  17. package/dist/kit/builder/auth/components/withPermission.d.ts.map +1 -0
  18. package/dist/kit/builder/auth/hooks/action-hooks.d.ts +18 -0
  19. package/dist/kit/builder/auth/hooks/action-hooks.d.ts.map +1 -0
  20. package/dist/kit/builder/auth/hooks/core-hooks.d.ts +56 -0
  21. package/dist/kit/builder/auth/hooks/core-hooks.d.ts.map +1 -0
  22. package/dist/kit/builder/auth/hooks/index.d.ts +5 -0
  23. package/dist/kit/builder/auth/hooks/index.d.ts.map +1 -0
  24. package/dist/kit/builder/auth/hooks/permission-hooks.d.ts +18 -0
  25. package/dist/kit/builder/auth/hooks/permission-hooks.d.ts.map +1 -0
  26. package/dist/kit/builder/auth/hooks/token-hooks.d.ts +13 -0
  27. package/dist/kit/builder/auth/hooks/token-hooks.d.ts.map +1 -0
  28. package/dist/kit/builder/auth/index.d.ts +14 -8
  29. package/dist/kit/builder/auth/index.d.ts.map +1 -1
  30. package/dist/kit/builder/auth/{AuthProvider.d.ts → providers/AuthProvider.d.ts} +1 -1
  31. package/dist/kit/builder/auth/providers/AuthProvider.d.ts.map +1 -0
  32. package/dist/kit/builder/auth/types/adapter-config.d.ts +31 -0
  33. package/dist/kit/builder/auth/types/adapter-config.d.ts.map +1 -0
  34. package/dist/kit/builder/auth/types/adapter.d.ts +80 -0
  35. package/dist/kit/builder/auth/types/adapter.d.ts.map +1 -0
  36. package/dist/kit/builder/auth/types/core.d.ts +16 -0
  37. package/dist/kit/builder/auth/types/core.d.ts.map +1 -0
  38. package/dist/kit/builder/auth/types/index.d.ts +10 -0
  39. package/dist/kit/builder/auth/types/index.d.ts.map +1 -0
  40. package/dist/kit/builder/auth/types/middleware.d.ts +11 -0
  41. package/dist/kit/builder/auth/types/middleware.d.ts.map +1 -0
  42. package/dist/kit/builder/auth/types/permissions.d.ts +17 -0
  43. package/dist/kit/builder/auth/types/permissions.d.ts.map +1 -0
  44. package/dist/kit/builder/auth/types/state.d.ts +13 -0
  45. package/dist/kit/builder/auth/types/state.d.ts.map +1 -0
  46. package/dist/kit/builder/auth/types/storage.d.ts +20 -0
  47. package/dist/kit/builder/auth/types/storage.d.ts.map +1 -0
  48. package/dist/kit/builder/auth/types/token-manager.d.ts +7 -0
  49. package/dist/kit/builder/auth/types/token-manager.d.ts.map +1 -0
  50. package/dist/kit/builder/auth/types/utils.d.ts +7 -0
  51. package/dist/kit/builder/auth/types/utils.d.ts.map +1 -0
  52. package/dist/kit/builder/auth/{adapter.d.ts → utils/auth-adapter.d.ts} +2 -2
  53. package/dist/kit/builder/auth/utils/auth-adapter.d.ts.map +1 -0
  54. package/dist/kit/builder/auth/utils/client-adapters/apollo-link.d.ts +4 -0
  55. package/dist/kit/builder/auth/utils/client-adapters/apollo-link.d.ts.map +1 -0
  56. package/dist/kit/builder/auth/utils/client-adapters/axios.d.ts +6 -0
  57. package/dist/kit/builder/auth/utils/client-adapters/axios.d.ts.map +1 -0
  58. package/dist/kit/builder/auth/utils/client-adapters/fetch.d.ts +6 -0
  59. package/dist/kit/builder/auth/utils/client-adapters/fetch.d.ts.map +1 -0
  60. package/dist/kit/builder/auth/utils/client-adapters/graphql.d.ts +9 -0
  61. package/dist/kit/builder/auth/utils/client-adapters/graphql.d.ts.map +1 -0
  62. package/dist/kit/builder/auth/utils/client-adapters/index.d.ts +7 -0
  63. package/dist/kit/builder/auth/utils/client-adapters/index.d.ts.map +1 -0
  64. package/dist/kit/builder/auth/utils/client-adapters/rest.d.ts +9 -0
  65. package/dist/kit/builder/auth/utils/client-adapters/rest.d.ts.map +1 -0
  66. package/dist/kit/builder/auth/utils/client-adapters/urql-exchange.d.ts +14 -0
  67. package/dist/kit/builder/auth/utils/client-adapters/urql-exchange.d.ts.map +1 -0
  68. package/dist/kit/builder/auth/{permission-checker.d.ts → utils/permission-checker.d.ts} +1 -1
  69. package/dist/kit/builder/auth/utils/permission-checker.d.ts.map +1 -0
  70. package/dist/kit/builder/auth/utils/storage/browser.d.ts +11 -0
  71. package/dist/kit/builder/auth/utils/storage/browser.d.ts.map +1 -0
  72. package/dist/kit/builder/auth/utils/storage/cookie.d.ts +3 -0
  73. package/dist/kit/builder/auth/utils/storage/cookie.d.ts.map +1 -0
  74. package/dist/kit/builder/auth/utils/storage/encryption.d.ts +7 -0
  75. package/dist/kit/builder/auth/utils/storage/encryption.d.ts.map +1 -0
  76. package/dist/kit/builder/auth/utils/storage/env.d.ts +2 -0
  77. package/dist/kit/builder/auth/utils/storage/env.d.ts.map +1 -0
  78. package/dist/kit/builder/auth/utils/storage/factory.d.ts +6 -0
  79. package/dist/kit/builder/auth/utils/storage/factory.d.ts.map +1 -0
  80. package/dist/kit/builder/auth/utils/storage/index.d.ts +7 -0
  81. package/dist/kit/builder/auth/utils/storage/index.d.ts.map +1 -0
  82. package/dist/kit/builder/auth/utils/storage/memory.d.ts +3 -0
  83. package/dist/kit/builder/auth/utils/storage/memory.d.ts.map +1 -0
  84. package/dist/kit/builder/auth/{token-manager.d.ts → utils/token-manager.d.ts} +1 -1
  85. package/dist/kit/builder/auth/utils/token-manager.d.ts.map +1 -0
  86. package/dist/kit/components/login/Login.d.ts.map +1 -1
  87. package/dist/kit/layouts/admin/components/AdminLayout.d.ts +2 -1
  88. package/dist/kit/layouts/admin/components/AdminLayout.d.ts.map +1 -1
  89. package/package.json +1 -1
  90. package/src/index.ts +1 -0
  91. package/src/kit/builder/auth/components/Can.tsx +27 -0
  92. package/src/kit/builder/auth/components/RequireAuth.tsx +78 -0
  93. package/src/kit/builder/auth/components/ShowWhenAuthenticated.tsx +10 -0
  94. package/src/kit/builder/auth/components/ShowWhenError.tsx +10 -0
  95. package/src/kit/builder/auth/components/ShowWhenLoading.tsx +10 -0
  96. package/src/kit/builder/auth/components/ShowWhenUnauthenticated.tsx +10 -0
  97. package/src/kit/builder/auth/components/withPermission.tsx +23 -0
  98. package/src/kit/builder/auth/hooks/action-hooks.ts +34 -0
  99. package/src/kit/builder/auth/hooks/core-hooks.ts +65 -0
  100. package/src/kit/builder/auth/hooks/index.ts +4 -0
  101. package/src/kit/builder/auth/hooks/permission-hooks.ts +43 -0
  102. package/src/kit/builder/auth/hooks/token-hooks.ts +25 -0
  103. package/src/kit/builder/auth/index.ts +16 -18
  104. package/src/kit/builder/auth/{AuthProvider.tsx → providers/AuthProvider.tsx} +1 -1
  105. package/src/kit/builder/auth/types/adapter-config.ts +44 -0
  106. package/src/kit/builder/auth/types/adapter.ts +132 -0
  107. package/src/kit/builder/auth/types/core.ts +27 -0
  108. package/src/kit/builder/auth/types/index.ts +9 -0
  109. package/src/kit/builder/auth/types/middleware.ts +20 -0
  110. package/src/kit/builder/auth/types/permissions.ts +23 -0
  111. package/src/kit/builder/auth/types/state.ts +16 -0
  112. package/src/kit/builder/auth/types/storage.ts +21 -0
  113. package/src/kit/builder/auth/types/token-manager.ts +9 -0
  114. package/src/kit/builder/auth/types/utils.ts +55 -0
  115. package/src/kit/builder/auth/{adapter.ts → utils/auth-adapter.ts} +3 -2
  116. package/src/kit/builder/auth/utils/client-adapters/apollo-link.ts +30 -0
  117. package/src/kit/builder/auth/utils/client-adapters/axios.ts +61 -0
  118. package/src/kit/builder/auth/utils/client-adapters/fetch.ts +48 -0
  119. package/src/kit/builder/auth/utils/client-adapters/graphql.ts +60 -0
  120. package/src/kit/builder/auth/utils/client-adapters/index.ts +6 -0
  121. package/src/kit/builder/auth/utils/client-adapters/rest.ts +60 -0
  122. package/src/kit/builder/auth/utils/client-adapters/urql-exchange.ts +76 -0
  123. package/src/kit/builder/auth/{permission-checker.ts → utils/permission-checker.ts} +1 -1
  124. package/src/kit/builder/auth/utils/storage/browser.ts +99 -0
  125. package/src/kit/builder/auth/utils/storage/cookie.ts +116 -0
  126. package/src/kit/builder/auth/utils/storage/encryption.ts +80 -0
  127. package/src/kit/builder/auth/utils/storage/env.ts +2 -0
  128. package/src/kit/builder/auth/utils/storage/factory.ts +37 -0
  129. package/src/kit/builder/auth/utils/storage/index.ts +6 -0
  130. package/src/kit/builder/auth/utils/storage/memory.ts +15 -0
  131. package/src/kit/builder/auth/{token-manager.ts → utils/token-manager.ts} +1 -1
  132. package/src/kit/components/login/Login.tsx +9 -7
  133. package/src/kit/layouts/admin/components/AdminLayout.tsx +24 -17
  134. package/dist/kit/builder/auth/AuthProvider.d.ts.map +0 -1
  135. package/dist/kit/builder/auth/adapter.d.ts.map +0 -1
  136. package/dist/kit/builder/auth/client-adapters.d.ts +0 -149
  137. package/dist/kit/builder/auth/client-adapters.d.ts.map +0 -1
  138. package/dist/kit/builder/auth/components.d.ts +0 -119
  139. package/dist/kit/builder/auth/components.d.ts.map +0 -1
  140. package/dist/kit/builder/auth/hooks.d.ts +0 -158
  141. package/dist/kit/builder/auth/hooks.d.ts.map +0 -1
  142. package/dist/kit/builder/auth/permission-checker.d.ts.map +0 -1
  143. package/dist/kit/builder/auth/storage.d.ts +0 -17
  144. package/dist/kit/builder/auth/storage.d.ts.map +0 -1
  145. package/dist/kit/builder/auth/token-manager.d.ts.map +0 -1
  146. package/dist/kit/builder/auth/types.d.ts +0 -183
  147. package/dist/kit/builder/auth/types.d.ts.map +0 -1
  148. package/src/kit/builder/auth/client-adapters.ts +0 -398
  149. package/src/kit/builder/auth/components.tsx +0 -221
  150. package/src/kit/builder/auth/hooks.ts +0 -237
  151. package/src/kit/builder/auth/storage.ts +0 -366
  152. 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