@ackplus/nest-auth-react 1.1.9 → 1.1.29

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 (71) hide show
  1. package/README.md +58 -4
  2. package/dist/context/auth-context.d.ts +21 -0
  3. package/dist/context/auth-context.js +23 -0
  4. package/dist/context/auth-context.js.map +1 -0
  5. package/dist/context/auth-provider.d.ts +16 -0
  6. package/dist/context/auth-provider.js +200 -0
  7. package/dist/context/auth-provider.js.map +1 -0
  8. package/dist/guards/auth-guard.d.ts +8 -0
  9. package/dist/guards/auth-guard.js +21 -0
  10. package/dist/guards/auth-guard.js.map +1 -0
  11. package/dist/guards/guest-guard.d.ts +8 -0
  12. package/dist/guards/guest-guard.js +21 -0
  13. package/dist/guards/guest-guard.js.map +1 -0
  14. package/dist/guards/require-permission.d.ts +10 -0
  15. package/dist/guards/require-permission.js +24 -0
  16. package/dist/guards/require-permission.js.map +1 -0
  17. package/dist/guards/require-role.d.ts +10 -0
  18. package/dist/guards/require-role.js +24 -0
  19. package/dist/guards/require-role.js.map +1 -0
  20. package/dist/hooks/use-access-token.d.ts +1 -0
  21. package/dist/hooks/use-access-token.js +21 -0
  22. package/dist/hooks/use-access-token.js.map +1 -0
  23. package/dist/hooks/use-auth-status.d.ts +8 -0
  24. package/dist/hooks/use-auth-status.js +12 -0
  25. package/dist/hooks/use-auth-status.js.map +1 -0
  26. package/dist/hooks/use-auth.d.ts +2 -0
  27. package/dist/hooks/use-auth.js +10 -0
  28. package/dist/hooks/use-auth.js.map +1 -0
  29. package/dist/hooks/use-has-role.d.ts +2 -0
  30. package/dist/hooks/use-has-role.js +16 -0
  31. package/dist/hooks/use-has-role.js.map +1 -0
  32. package/dist/hooks/use-session.d.ts +2 -0
  33. package/dist/hooks/use-session.js +7 -0
  34. package/dist/hooks/use-session.js.map +1 -0
  35. package/dist/hooks/use-user.d.ts +2 -0
  36. package/dist/hooks/use-user.js +7 -0
  37. package/dist/hooks/use-user.js.map +1 -0
  38. package/dist/index.d.ts +18 -0
  39. package/dist/index.js +18 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/next/create-next-auth-helpers.d.ts +20 -0
  42. package/dist/next/create-next-auth-helpers.js +88 -0
  43. package/dist/next/create-next-auth-helpers.js.map +1 -0
  44. package/dist/next/next-auth-provider.d.ts +10 -0
  45. package/dist/next/next-auth-provider.js +17 -0
  46. package/dist/next/next-auth-provider.js.map +1 -0
  47. package/dist/sync/cross-tab-sync.d.ts +24 -0
  48. package/dist/sync/cross-tab-sync.js +109 -0
  49. package/dist/sync/cross-tab-sync.js.map +1 -0
  50. package/package.json +43 -30
  51. package/client/create-client.d.ts +0 -63
  52. package/client/create-client.d.ts.map +0 -1
  53. package/context/auth-context.d.ts +0 -50
  54. package/context/auth-context.d.ts.map +0 -1
  55. package/context/mfa-service-context.d.ts +0 -5
  56. package/context/mfa-service-context.d.ts.map +0 -1
  57. package/hooks/use-auth.d.ts +0 -50
  58. package/hooks/use-auth.d.ts.map +0 -1
  59. package/hooks/use-mfa.d.ts +0 -23
  60. package/hooks/use-mfa.d.ts.map +0 -1
  61. package/index.cjs +0 -6
  62. package/index.d.ts +0 -13
  63. package/index.js +0 -2779
  64. package/provider/nest-auth-provider.d.ts +0 -15
  65. package/provider/nest-auth-provider.d.ts.map +0 -1
  66. package/storage/token-storage.d.ts +0 -3
  67. package/storage/token-storage.d.ts.map +0 -1
  68. package/utils/errors.d.ts +0 -6
  69. package/utils/errors.d.ts.map +0 -1
  70. package/utils/request.d.ts +0 -10
  71. package/utils/request.d.ts.map +0 -1
@@ -0,0 +1,18 @@
1
+ export { AuthContext, AuthContextValue } from './context/auth-context';
2
+ export { AuthProvider, AuthProviderProps, InitialAuthState } from './context/auth-provider';
3
+ export { useNestAuth } from './hooks/use-auth';
4
+ export { useUser } from './hooks/use-user';
5
+ export { useSession } from './hooks/use-session';
6
+ export { useAccessToken } from './hooks/use-access-token';
7
+ export { useAuthStatus, AuthStatusResult } from './hooks/use-auth-status';
8
+ export { useHasRole, useHasPermission } from './hooks/use-has-role';
9
+ export { AuthGuard, AuthGuardProps } from './guards/auth-guard';
10
+ export { GuestGuard, GuestGuardProps } from './guards/guest-guard';
11
+ export { RequireRole, RequireRoleProps } from './guards/require-role';
12
+ export { RequirePermission, RequirePermissionProps } from './guards/require-permission';
13
+ export { createNextAuthHelpers, NextAuthHelpers, ServerAuthState } from './next/create-next-auth-helpers';
14
+ export { NextAuthProvider, NextAuthProviderProps } from './next/next-auth-provider';
15
+ export { CrossTabSync, createCrossTabSync, SyncEvent, SyncEventType, SyncHandler } from './sync/cross-tab-sync';
16
+ export type { IAuthUser as AuthUser, ClientSession as AuthSession, AuthStatus, AuthState, AuthError, ITokenPair as TokenPair, ILoginRequest as LoginDto, ISignupRequest as SignupDto, IAuthResponse as AuthResponse, AuthClientConfig, } from '@ackplus/nest-auth-client';
17
+ export { AuthClient } from '@ackplus/nest-auth-client';
18
+ export { hasRole, hasPermission, hasAnyAccess, hasAllAccess } from '@ackplus/nest-auth-client';
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ export { AuthContext } from './context/auth-context';
2
+ export { AuthProvider } from './context/auth-provider';
3
+ export { useNestAuth } from './hooks/use-auth';
4
+ export { useUser } from './hooks/use-user';
5
+ export { useSession } from './hooks/use-session';
6
+ export { useAccessToken } from './hooks/use-access-token';
7
+ export { useAuthStatus } from './hooks/use-auth-status';
8
+ export { useHasRole, useHasPermission } from './hooks/use-has-role';
9
+ export { AuthGuard } from './guards/auth-guard';
10
+ export { GuestGuard } from './guards/guest-guard';
11
+ export { RequireRole } from './guards/require-role';
12
+ export { RequirePermission } from './guards/require-permission';
13
+ export { createNextAuthHelpers } from './next/create-next-auth-helpers';
14
+ export { NextAuthProvider } from './next/next-auth-provider';
15
+ export { CrossTabSync, createCrossTabSync } from './sync/cross-tab-sync';
16
+ export { AuthClient } from '@ackplus/nest-auth-client';
17
+ export { hasRole, hasPermission, hasAnyAccess, hasAllAccess } from '@ackplus/nest-auth-client';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAoB,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAuC,MAAM,yBAAyB,CAAC;AAI5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAoB,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIpE,OAAO,EAAE,SAAS,EAAkB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAmB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAA0B,MAAM,6BAA6B,CAAC;AAIxF,OAAO,EAAE,qBAAqB,EAAoC,MAAM,iCAAiC,CAAC;AAC1G,OAAO,EAAE,gBAAgB,EAAyB,MAAM,2BAA2B,CAAC;AAIpF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAyC,MAAM,uBAAuB,CAAC;AAiBhH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { AuthClientConfig, IAuthUser, ClientSession } from '@ackplus/nest-auth-client';
2
+ export interface ServerAuthState {
3
+ user: IAuthUser | null;
4
+ session: ClientSession | null;
5
+ }
6
+ export interface NextAuthHelpers {
7
+ getServerAuth: (request: Request | {
8
+ cookies: {
9
+ get: (name: string) => {
10
+ value: string;
11
+ } | undefined;
12
+ };
13
+ }) => Promise<ServerAuthState>;
14
+ withAuth: <T extends (...args: any[]) => any>(handler: T) => T;
15
+ createInitialState: (serverAuth: ServerAuthState) => {
16
+ user: IAuthUser | null;
17
+ session: ClientSession | null;
18
+ };
19
+ }
20
+ export declare function createNextAuthHelpers(config: AuthClientConfig): NextAuthHelpers;
@@ -0,0 +1,88 @@
1
+ import { AuthClient, } from '@ackplus/nest-auth-client';
2
+ const COOKIE_NAMES = {
3
+ ACCESS_TOKEN: 'access_token',
4
+ REFRESH_TOKEN: 'refresh_token',
5
+ };
6
+ export function createNextAuthHelpers(config) {
7
+ const getServerAuth = async (request) => {
8
+ try {
9
+ let accessToken;
10
+ if (request instanceof Request) {
11
+ const cookieHeader = request.headers.get('cookie');
12
+ if (cookieHeader) {
13
+ const cookies = parseCookies(cookieHeader);
14
+ accessToken = cookies[COOKIE_NAMES.ACCESS_TOKEN];
15
+ }
16
+ }
17
+ else {
18
+ accessToken = request.cookies.get(COOKIE_NAMES.ACCESS_TOKEN)?.value;
19
+ }
20
+ if (!accessToken) {
21
+ return { user: null, session: null };
22
+ }
23
+ const serverClient = new AuthClient({
24
+ ...config,
25
+ accessTokenType: 'header',
26
+ });
27
+ const response = await fetch(`${config.baseUrl}${config.endpoints?.verifySession || '/auth/verify-session'}`, {
28
+ headers: {
29
+ Authorization: `Bearer ${accessToken}`,
30
+ 'Content-Type': 'application/json',
31
+ },
32
+ cache: 'no-store',
33
+ });
34
+ if (!response.ok) {
35
+ return { user: null, session: null };
36
+ }
37
+ const user = await response.json();
38
+ return {
39
+ user,
40
+ session: {
41
+ id: '',
42
+ userId: user.id,
43
+ accessToken,
44
+ },
45
+ };
46
+ }
47
+ catch {
48
+ return { user: null, session: null };
49
+ }
50
+ };
51
+ const withAuth = (handler) => {
52
+ return (async (...args) => {
53
+ const request = args[0];
54
+ const auth = await getServerAuth(request);
55
+ if (!auth.user) {
56
+ return new Response(JSON.stringify({ message: 'Unauthorized' }), {
57
+ status: 401,
58
+ headers: { 'Content-Type': 'application/json' },
59
+ });
60
+ }
61
+ const headers = new Headers(request.headers);
62
+ headers.set('x-auth-user', JSON.stringify(auth.user));
63
+ return handler(...args);
64
+ });
65
+ };
66
+ const createInitialState = (serverAuth) => {
67
+ return {
68
+ user: serverAuth.user,
69
+ session: serverAuth.session,
70
+ };
71
+ };
72
+ return {
73
+ getServerAuth,
74
+ withAuth,
75
+ createInitialState,
76
+ };
77
+ }
78
+ function parseCookies(cookieHeader) {
79
+ const cookies = {};
80
+ cookieHeader.split(';').forEach(cookie => {
81
+ const [name, ...rest] = cookie.trim().split('=');
82
+ if (name) {
83
+ cookies[name] = rest.join('=');
84
+ }
85
+ });
86
+ return cookies;
87
+ }
88
+ //# sourceMappingURL=create-next-auth-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-next-auth-helpers.js","sourceRoot":"","sources":["../../src/next/create-next-auth-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { IAuthUser, ClientSession } from '@ackplus/nest-auth-client';
3
+ import { AuthProviderProps } from '../context/auth-provider';
4
+ export interface NextAuthProviderProps extends Omit<AuthProviderProps, 'initialState'> {
5
+ initialState?: {
6
+ user?: IAuthUser | null;
7
+ session?: ClientSession | null;
8
+ };
9
+ }
10
+ export declare function NextAuthProvider({ client, initialState, autoLoadMe, onUnauthenticated, children, }: NextAuthProviderProps): React.FunctionComponentElement<AuthProviderProps>;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { AuthProvider } from '../context/auth-provider';
3
+ export function NextAuthProvider({ client, initialState, autoLoadMe = true, onUnauthenticated, children, }) {
4
+ const shouldAutoLoad = autoLoadMe && !initialState?.user;
5
+ return React.createElement(AuthProvider, {
6
+ client,
7
+ initialState: initialState ? {
8
+ user: initialState.user ?? null,
9
+ session: initialState.session ?? null,
10
+ status: initialState.user ? 'authenticated' : 'unauthenticated',
11
+ } : undefined,
12
+ autoLoadMe: shouldAutoLoad,
13
+ onUnauthenticated,
14
+ children,
15
+ });
16
+ }
17
+ //# sourceMappingURL=next-auth-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-auth-provider.js","sourceRoot":"","sources":["../../src/next/next-auth-provider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAqB,MAAM,0BAA0B,CAAC;AA0C3E,MAAM,UAAU,gBAAgB,CAAC,EAC7B,MAAM,EACN,YAAY,EACZ,UAAU,GAAG,IAAI,EACjB,iBAAiB,EACjB,QAAQ,GACY;IAEpB,MAAM,cAAc,GAAG,UAAU,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;IAEzD,OAAO,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE;QACrC,MAAM;QACN,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;YACzB,IAAI,EAAE,YAAY,CAAC,IAAI,IAAI,IAAI;YAC/B,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,IAAI;YACrC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB;SAClE,CAAC,CAAC,CAAC,SAAS;QACb,UAAU,EAAE,cAAc;QAC1B,iBAAiB;QACjB,QAAQ;KACX,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,24 @@
1
+ export type SyncEventType = 'logout' | 'login' | 'refresh';
2
+ export interface SyncEvent {
3
+ type: SyncEventType;
4
+ timestamp: number;
5
+ }
6
+ export type SyncHandler = (event: SyncEvent) => void;
7
+ export declare class CrossTabSync {
8
+ private channel;
9
+ private handlers;
10
+ private lastEventTime;
11
+ private storageListener;
12
+ constructor();
13
+ private initBroadcastChannel;
14
+ private initStorageFallback;
15
+ private isValidEvent;
16
+ private notifyHandlers;
17
+ subscribe(handler: SyncHandler): () => void;
18
+ broadcast(type: SyncEventType): void;
19
+ broadcastLogout(): void;
20
+ broadcastLogin(): void;
21
+ broadcastRefresh(): void;
22
+ destroy(): void;
23
+ }
24
+ export declare function createCrossTabSync(): CrossTabSync;
@@ -0,0 +1,109 @@
1
+ const CHANNEL_NAME = 'nest-auth-sync';
2
+ const STORAGE_KEY = 'nest_auth_sync_event';
3
+ export class CrossTabSync {
4
+ constructor() {
5
+ this.channel = null;
6
+ this.handlers = new Set();
7
+ this.lastEventTime = 0;
8
+ this.storageListener = null;
9
+ if (typeof window === 'undefined')
10
+ return;
11
+ if (typeof BroadcastChannel !== 'undefined') {
12
+ this.initBroadcastChannel();
13
+ }
14
+ else {
15
+ this.initStorageFallback();
16
+ }
17
+ }
18
+ initBroadcastChannel() {
19
+ try {
20
+ this.channel = new BroadcastChannel(CHANNEL_NAME);
21
+ this.channel.onmessage = (event) => {
22
+ if (event.data && this.isValidEvent(event.data)) {
23
+ this.notifyHandlers(event.data);
24
+ }
25
+ };
26
+ }
27
+ catch {
28
+ this.initStorageFallback();
29
+ }
30
+ }
31
+ initStorageFallback() {
32
+ this.storageListener = (event) => {
33
+ if (event.key === STORAGE_KEY && event.newValue) {
34
+ try {
35
+ const syncEvent = JSON.parse(event.newValue);
36
+ if (this.isValidEvent(syncEvent)) {
37
+ this.notifyHandlers(syncEvent);
38
+ }
39
+ }
40
+ catch {
41
+ }
42
+ }
43
+ };
44
+ window.addEventListener('storage', this.storageListener);
45
+ }
46
+ isValidEvent(data) {
47
+ return (data &&
48
+ typeof data.type === 'string' &&
49
+ typeof data.timestamp === 'number' &&
50
+ data.timestamp > this.lastEventTime);
51
+ }
52
+ notifyHandlers(event) {
53
+ this.lastEventTime = event.timestamp;
54
+ this.handlers.forEach(handler => {
55
+ try {
56
+ handler(event);
57
+ }
58
+ catch {
59
+ }
60
+ });
61
+ }
62
+ subscribe(handler) {
63
+ this.handlers.add(handler);
64
+ return () => {
65
+ this.handlers.delete(handler);
66
+ };
67
+ }
68
+ broadcast(type) {
69
+ const event = {
70
+ type,
71
+ timestamp: Date.now(),
72
+ };
73
+ if (this.channel) {
74
+ this.channel.postMessage(event);
75
+ }
76
+ else if (typeof window !== 'undefined' && window.localStorage) {
77
+ try {
78
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(event));
79
+ localStorage.removeItem(STORAGE_KEY);
80
+ }
81
+ catch {
82
+ }
83
+ }
84
+ }
85
+ broadcastLogout() {
86
+ this.broadcast('logout');
87
+ }
88
+ broadcastLogin() {
89
+ this.broadcast('login');
90
+ }
91
+ broadcastRefresh() {
92
+ this.broadcast('refresh');
93
+ }
94
+ destroy() {
95
+ if (this.channel) {
96
+ this.channel.close();
97
+ this.channel = null;
98
+ }
99
+ if (this.storageListener) {
100
+ window.removeEventListener('storage', this.storageListener);
101
+ this.storageListener = null;
102
+ }
103
+ this.handlers.clear();
104
+ }
105
+ }
106
+ export function createCrossTabSync() {
107
+ return new CrossTabSync();
108
+ }
109
+ //# sourceMappingURL=cross-tab-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-tab-sync.js","sourceRoot":"","sources":["../../src/sync/cross-tab-sync.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,40 +1,53 @@
1
1
  {
2
2
  "name": "@ackplus/nest-auth-react",
3
- "version": "1.1.9",
4
- "main": "./index.cjs",
5
- "module": "./index.js",
6
- "types": "./index.d.ts",
3
+ "version": "1.1.29",
4
+ "description": "React SDK for NestJS authentication - hooks, guards, and Next.js integration",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
7
9
  "exports": {
8
10
  ".": {
9
- "types": "./index.d.ts",
10
- "import": "./index.js",
11
- "require": "./index.cjs"
12
- },
13
- "./styles/default.css": {
14
- "default": "./styles/default.css"
15
- },
16
- "./styles": {
17
- "default": "./styles/default.css"
18
- },
19
- "./package.json": "./package.json"
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.js"
14
+ }
20
15
  },
21
16
  "files": [
22
- "index.cjs",
23
- "index.js",
24
- "index.d.ts",
25
- "client",
26
- "context",
27
- "hooks",
28
- "provider",
29
- "storage",
30
- "types",
31
- "utils"
17
+ "dist",
18
+ "README.md",
19
+ "LICENSE"
32
20
  ],
33
- "sideEffects": [
34
- "./styles/**"
21
+ "keywords": [
22
+ "auth",
23
+ "authentication",
24
+ "react",
25
+ "hooks",
26
+ "nextjs",
27
+ "nestjs",
28
+ "jwt",
29
+ "oauth"
35
30
  ],
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://github.com/ack-solutions/nest-auth"
34
+ },
35
+ "license": "MIT",
36
+ "author": "Ackplus",
36
37
  "peerDependencies": {
37
- "react": "^18.0.0",
38
- "react-dom": "^18.0.0"
38
+ "react": "^18.0.0 || ^19.0.0"
39
+ },
40
+ "dependencies": {
41
+ "@ackplus/nest-auth-client": "1.1.29"
42
+ },
43
+ "devDependencies": {
44
+ "typescript": "^5.7.3",
45
+ "@types/react": "^18.0.0"
46
+ },
47
+ "scripts": {
48
+ "clean": "rm -rf dist tsconfig.build.tsbuildinfo",
49
+ "build": "pnpm clean && tsc -p tsconfig.build.json",
50
+ "format": "prettier --write \"src/**/*.ts\" \"src/**/*.tsx\"",
51
+ "lint": "eslint \"src/**/*.ts\" \"src/**/*.tsx\" --fix"
39
52
  }
40
- }
53
+ }
@@ -1,63 +0,0 @@
1
- import { AuthEndpoints, AuthSession, AuthResponse, AuthTokens, AuthUser, PasswordResetRequest, LoginCredentials, BackendAuthConfig, RefreshTokenInput, AuthResponse as RefreshTokenResponse, RegisterCredentials, PasswordResetVerification, PasswordResetOtpVerification, TenantOption, MfaVerification as VerifyMfaInput, PasswordChange as ChangePasswordInput, ToggleMfaInput, MfaStatusResponse, MfaDevice, VerifyTotpSetupInput } from '../types';
2
- export interface AuthClient {
3
- login(input: LoginCredentials): Promise<AuthResponse>;
4
- register(input: RegisterCredentials): Promise<AuthResponse>;
5
- logout(tokens?: AuthTokens | null): Promise<{
6
- message?: string;
7
- } | undefined>;
8
- logoutAll(tokens?: AuthTokens | null): Promise<{
9
- message?: string;
10
- } | undefined>;
11
- refreshToken(input: RefreshTokenInput): Promise<RefreshTokenResponse>;
12
- getProfile(tokens?: AuthTokens | null): Promise<AuthUser>;
13
- getSession(tokens?: AuthTokens | null): Promise<AuthSession>;
14
- sendMfaCode(tokens: AuthTokens | null, method: string): Promise<{
15
- message?: string;
16
- }>;
17
- verifyMfa(tokens: AuthTokens | null, input: VerifyMfaInput): Promise<AuthResponse>;
18
- forgotPassword(input: PasswordResetRequest): Promise<{
19
- message?: string;
20
- }>;
21
- verifyForgotPasswordOtp(input: PasswordResetOtpVerification): Promise<{
22
- resetToken: string;
23
- }>;
24
- resetPasswordWithToken(input: PasswordResetVerification): Promise<{
25
- message?: string;
26
- }>;
27
- changePassword(input: ChangePasswordInput, tokens?: AuthTokens | null): Promise<AuthResponse>;
28
- getMfaStatus(tokens?: AuthTokens | null): Promise<MfaStatusResponse>;
29
- toggleMfa(tokens: AuthTokens | null, input: ToggleMfaInput): Promise<{
30
- message?: string;
31
- }>;
32
- listMfaDevices(tokens?: AuthTokens | null): Promise<MfaDevice[]>;
33
- removeMfaDevice(tokens: AuthTokens | null, deviceId: string): Promise<{
34
- message?: string;
35
- }>;
36
- setupTotp(tokens: AuthTokens | null): Promise<{
37
- secret: string;
38
- qrCode: string;
39
- }>;
40
- verifyTotpSetup(tokens: AuthTokens | null, input: VerifyTotpSetupInput): Promise<{
41
- message?: string;
42
- }>;
43
- generateRecoveryCode(tokens: AuthTokens | null): Promise<{
44
- code: string;
45
- }>;
46
- resetTotp(tokens: AuthTokens | null, code: string): Promise<{
47
- message?: string;
48
- }>;
49
- sendEmailVerification(tokens: AuthTokens | null): Promise<{
50
- message?: string;
51
- }>;
52
- verifyEmail(tokens: AuthTokens | null, otp: string): Promise<{
53
- message?: string;
54
- }>;
55
- fetchClientConfig(): Promise<BackendAuthConfig>;
56
- fetchTenants(tokens?: AuthTokens | null): Promise<TenantOption[]>;
57
- }
58
- export declare const createAuthClient: (params: {
59
- baseUrl: string;
60
- endpoints?: Partial<AuthEndpoints>;
61
- defaultHeaders?: Record<string, string>;
62
- }) => AuthClient;
63
- //# sourceMappingURL=create-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-client.d.ts","sourceRoot":"","sources":["../../../../packages/nest-auth-react/src/client/create-client.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import { AuthSession, AuthState, AuthSuccessResponse, AuthTokens, AuthUser, ForgotPasswordInput, LoginWithCredentialsInput, RedirectConfig, NestAuthBackendClientConfig, RefreshTokenResponse, RegisterInput, ResetPasswordWithTokenInput, VerifyForgotPasswordOtpInput, VerifyMfaInput, AuthEventEmitter, ChangePasswordInput, BackendAuthConfig } from '../types';
2
- export interface AuthContextValue extends AuthState {
3
- user: AuthUser | null;
4
- session: AuthSession | null;
5
- tokens: AuthTokens | null;
6
- isLoading: boolean;
7
- isLoadingUser: boolean;
8
- baseUrl: string;
9
- backendConfig?: BackendAuthConfig;
10
- tenantId?: string;
11
- events: AuthEventEmitter;
12
- login: (input: LoginWithCredentialsInput) => Promise<AuthSuccessResponse>;
13
- register: (input: RegisterInput) => Promise<AuthSuccessResponse>;
14
- logout: () => Promise<void>;
15
- logoutAll: () => Promise<void>;
16
- refresh: () => Promise<RefreshTokenResponse | null>;
17
- sendMfaCode: (method: string) => Promise<{
18
- message?: string;
19
- } | void>;
20
- verifyMfa: (input: VerifyMfaInput) => Promise<AuthSuccessResponse>;
21
- forgotPassword: (input: ForgotPasswordInput) => Promise<{
22
- message?: string;
23
- }>;
24
- verifyForgotPasswordOtp: (input: VerifyForgotPasswordOtpInput) => Promise<{
25
- resetToken: string;
26
- }>;
27
- resetPasswordWithToken: (input: ResetPasswordWithTokenInput) => Promise<{
28
- message?: string;
29
- }>;
30
- changePassword: (input: ChangePasswordInput) => Promise<AuthSuccessResponse>;
31
- sendEmailVerification: () => Promise<{
32
- message?: string;
33
- }>;
34
- verifyEmail: (otp: string) => Promise<{
35
- message?: string;
36
- }>;
37
- fetchBackendConfig: () => Promise<NestAuthBackendClientConfig | null>;
38
- setTokens: (tokens: AuthTokens | null, options?: {
39
- persist?: boolean;
40
- }) => void;
41
- setTenantId: (tenantId: string | null) => void;
42
- clearError: () => void;
43
- setUser: (user: AuthUser | null) => void;
44
- redirects?: RedirectConfig;
45
- navigate: (path: string) => void;
46
- }
47
- declare const AuthContext: import('react').Context<AuthContextValue>;
48
- export declare const useAuthContext: () => AuthContextValue;
49
- export default AuthContext;
50
- //# sourceMappingURL=auth-context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-context.d.ts","sourceRoot":"","sources":["../../../../packages/nest-auth-react/src/context/auth-context.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,2BAA2B,EAC3B,oBAAoB,EACpB,aAAa,EACb,2BAA2B,EAC3B,4BAA4B,EAC5B,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC1E,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACjE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACpD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACtE,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnE,cAAc,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9E,uBAAuB,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClG,sBAAsB,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,cAAc,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC7E,qBAAqB,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,kBAAkB,EAAE,MAAM,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAAC;IACtE,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAChF,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,QAAA,MAAM,WAAW,2CAAyD,CAAC;AAE3E,eAAO,MAAM,cAAc,QAAO,gBAQjC,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,5 +0,0 @@
1
- import { MfaService } from '../services/mfa-service';
2
- declare const MfaServiceContext: import('react').Context<MfaService>;
3
- export declare const useMfaServiceContext: () => MfaService;
4
- export default MfaServiceContext;
5
- //# sourceMappingURL=mfa-service-context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mfa-service-context.d.ts","sourceRoot":"","sources":["../../../../packages/nest-auth-react/src/context/mfa-service-context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,QAAA,MAAM,iBAAiB,qCAAyC,CAAC;AAEjE,eAAO,MAAM,oBAAoB,QAAO,UAMvC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,50 +0,0 @@
1
- import { AuthContextValue } from '../context/auth-context';
2
- import { BackendAuthConfig, TenantMode, TenantOption } from '../types';
3
- import { AuthApiService } from '../services/auth-api-service';
4
- /**
5
- * Extended return type for useAuth hook
6
- */
7
- export interface UseAuthReturn extends AuthContextValue {
8
- isAuthenticated: boolean;
9
- isUnauthenticated: boolean;
10
- config: BackendAuthConfig;
11
- isConfigLoaded: boolean;
12
- isConfigLoading: boolean;
13
- hasSession: boolean;
14
- tenantOptions: TenantOption[];
15
- tenantMode: TenantMode;
16
- isMultiTenant: boolean;
17
- api: AuthApiService | null;
18
- }
19
- /**
20
- * Main authentication hook - provides all auth functionality
21
- *
22
- * @example
23
- * ```tsx
24
- * const {
25
- * // Auth state
26
- * user,
27
- * tokens,
28
- * status,
29
- * isLoading,
30
- * isLoadingUser,
31
- * isAuthenticated,
32
- * isUnauthenticated,
33
- *
34
- * // Auth methods
35
- * login,
36
- * register,
37
- * logout,
38
- * refresh,
39
- *
40
- * // MFA factors (codes)
41
- * sendMfaCode,
42
- * verifyMfa,
43
- *
44
- * // User management
45
- * api,
46
- * } = useAuth();
47
- * ```
48
- */
49
- export declare const useAuth: () => UseAuthReturn;
50
- //# sourceMappingURL=use-auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-auth.d.ts","sourceRoot":"","sources":["../../../../packages/nest-auth-react/src/hooks/use-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAc,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAgB9D;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,GAAG,EAAE,cAAc,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,OAAO,QAAO,aAwF1B,CAAC"}
@@ -1,23 +0,0 @@
1
- import { MfaServiceState } from '../services/mfa-service';
2
- import { MfaMethod, VerifyTotpSetupInput } from '../types';
3
- export interface UseMfaReturn extends MfaServiceState {
4
- getStatus: (forceRefresh?: boolean) => Promise<MfaServiceState['status']>;
5
- refreshStatus: () => Promise<MfaServiceState['status']>;
6
- ensureStatusLoaded: () => Promise<void>;
7
- toggleMfa: (input: {
8
- enabled: boolean;
9
- }) => Promise<unknown>;
10
- setupTotp: () => Promise<{
11
- secret: string;
12
- qrCode: string;
13
- }>;
14
- verifyTotpSetup: (input: VerifyTotpSetupInput) => Promise<unknown>;
15
- generateRecoveryCode: () => Promise<{
16
- code: string;
17
- }>;
18
- resetTotp: (code: string) => Promise<unknown>;
19
- removeDevice: (deviceId: string) => Promise<unknown>;
20
- getAvailableMethods: () => MfaMethod[];
21
- }
22
- export declare const useMfa: () => UseMfaReturn;
23
- //# sourceMappingURL=use-mfa.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-mfa.d.ts","sourceRoot":"","sources":["../../../../packages/nest-auth-react/src/hooks/use-mfa.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhE,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1E,aAAa,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,SAAS,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,eAAe,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,oBAAoB,EAAE,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,mBAAmB,EAAE,MAAM,SAAS,EAAE,CAAC;CACxC;AAED,eAAO,MAAM,MAAM,QAAO,YAoCzB,CAAC"}