@nauth-toolkit/nestjs 0.1.13 → 0.1.17

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 (63) hide show
  1. package/dist/auth.module.d.ts +48 -0
  2. package/dist/auth.module.d.ts.map +1 -1
  3. package/dist/auth.module.js +161 -19
  4. package/dist/auth.module.js.map +1 -1
  5. package/dist/decorators/client-info.decorator.d.ts +39 -0
  6. package/dist/decorators/client-info.decorator.d.ts.map +1 -1
  7. package/dist/decorators/client-info.decorator.js +41 -0
  8. package/dist/decorators/client-info.decorator.js.map +1 -1
  9. package/dist/decorators/current-user.decorator.d.ts +6 -0
  10. package/dist/decorators/current-user.decorator.d.ts.map +1 -1
  11. package/dist/decorators/current-user.decorator.js +6 -0
  12. package/dist/decorators/current-user.decorator.js.map +1 -1
  13. package/dist/decorators/public.decorator.d.ts +7 -0
  14. package/dist/decorators/public.decorator.d.ts.map +1 -1
  15. package/dist/decorators/public.decorator.js +7 -0
  16. package/dist/decorators/public.decorator.js.map +1 -1
  17. package/dist/decorators/token-delivery.decorator.d.ts +20 -0
  18. package/dist/decorators/token-delivery.decorator.d.ts.map +1 -1
  19. package/dist/dto/index.d.ts +9 -0
  20. package/dist/dto/index.d.ts.map +1 -1
  21. package/dist/dto/index.js +10 -0
  22. package/dist/dto/index.js.map +1 -1
  23. package/dist/factories/storage-adapter.factory.d.ts +107 -0
  24. package/dist/factories/storage-adapter.factory.d.ts.map +1 -1
  25. package/dist/factories/storage-adapter.factory.js +129 -0
  26. package/dist/factories/storage-adapter.factory.js.map +1 -1
  27. package/dist/filters/nauth-http-exception.filter.d.ts +80 -0
  28. package/dist/filters/nauth-http-exception.filter.d.ts.map +1 -1
  29. package/dist/filters/nauth-http-exception.filter.js +96 -0
  30. package/dist/filters/nauth-http-exception.filter.js.map +1 -1
  31. package/dist/guards/auth.guard.d.ts +26 -0
  32. package/dist/guards/auth.guard.d.ts.map +1 -1
  33. package/dist/guards/auth.guard.js +44 -0
  34. package/dist/guards/auth.guard.js.map +1 -1
  35. package/dist/guards/csrf.guard.d.ts +21 -0
  36. package/dist/guards/csrf.guard.d.ts.map +1 -1
  37. package/dist/guards/csrf.guard.js +30 -1
  38. package/dist/guards/csrf.guard.js.map +1 -1
  39. package/dist/index.d.ts +34 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +46 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/interceptors/client-info.interceptor.d.ts +37 -0
  44. package/dist/interceptors/client-info.interceptor.d.ts.map +1 -1
  45. package/dist/interceptors/client-info.interceptor.js +89 -1
  46. package/dist/interceptors/client-info.interceptor.js.map +1 -1
  47. package/dist/interceptors/cookie-token.interceptor.d.ts +16 -0
  48. package/dist/interceptors/cookie-token.interceptor.d.ts.map +1 -1
  49. package/dist/interceptors/cookie-token.interceptor.js +80 -16
  50. package/dist/interceptors/cookie-token.interceptor.js.map +1 -1
  51. package/dist/providers/nestjs-logger.adapter.d.ts +96 -0
  52. package/dist/providers/nestjs-logger.adapter.d.ts.map +1 -1
  53. package/dist/providers/nestjs-logger.adapter.js +105 -1
  54. package/dist/providers/nestjs-logger.adapter.js.map +1 -1
  55. package/dist/services/csrf.service.d.ts +61 -0
  56. package/dist/services/csrf.service.d.ts.map +1 -1
  57. package/dist/services/csrf.service.js +62 -1
  58. package/dist/services/csrf.service.js.map +1 -1
  59. package/dist/services/migrations-bootstrap.service.d.ts +6 -0
  60. package/dist/services/migrations-bootstrap.service.d.ts.map +1 -1
  61. package/dist/services/migrations-bootstrap.service.js +6 -0
  62. package/dist/services/migrations-bootstrap.service.js.map +1 -1
  63. package/package.json +14 -2
@@ -20,6 +20,22 @@ const core_2 = require("@nauth-toolkit/core");
20
20
  const internal_1 = require("@nauth-toolkit/core/internal");
21
21
  const token_delivery_decorator_1 = require("../decorators/token-delivery.decorator");
22
22
  const csrf_service_1 = require("../services/csrf.service");
23
+ /**
24
+ * Cookie Token Interceptor
25
+ *
26
+ * Automatically sets JWT tokens as httpOnly cookies for HTTP responses when
27
+ * token delivery mode is configured as 'cookies' or 'hybrid'.
28
+ *
29
+ * Security defaults:
30
+ * - Cookie names prefixed with 'nauth_' to avoid conflicts: 'nauth_access_token', 'nauth_refresh_token'
31
+ * - httpOnly: true (always)
32
+ * - secure: true (configurable via cookieOptions.secure)
33
+ * - sameSite: 'strict' (configurable via cookieOptions.sameSite)
34
+ * - path: '/' (configurable via cookieOptions.path)
35
+ *
36
+ * This interceptor is transport-aware and only applies to HTTP requests.
37
+ * It does nothing in other contexts (e.g., WebSocket, GraphQL).
38
+ */
23
39
  let CookieTokenInterceptor = class CookieTokenInterceptor {
24
40
  config;
25
41
  jwtService;
@@ -32,6 +48,7 @@ let CookieTokenInterceptor = class CookieTokenInterceptor {
32
48
  this.csrfService = csrfService;
33
49
  }
34
50
  intercept(context, next) {
51
+ // Only operate in HTTP context
35
52
  if (context.getType() !== 'http') {
36
53
  return next.handle();
37
54
  }
@@ -39,17 +56,23 @@ let CookieTokenInterceptor = class CookieTokenInterceptor {
39
56
  const http = context.switchToHttp();
40
57
  const req = http.getRequest();
41
58
  const res = http.getResponse();
59
+ // Determine effective delivery for this request
42
60
  const routeMode = this.reflector.get(token_delivery_decorator_1.TOKEN_DELIVERY_KEY, context.getHandler());
43
61
  const method = deliveryConfig?.method || 'json';
62
+ // Validate route-level delivery mode against global configuration
44
63
  if (routeMode === 'cookies') {
64
+ // Route requests cookies - config must allow cookies (cookies or hybrid)
45
65
  if (method === 'json') {
46
66
  throw new core_2.NAuthException(core_2.AuthErrorCode.COOKIES_NOT_ALLOWED, "Route-level cookie delivery requested, but tokenDelivery.method is 'json' (cookies disabled)");
47
67
  }
68
+ // method === 'cookies' or 'hybrid' - both allow cookies, so OK
48
69
  }
49
70
  else if (routeMode === 'json') {
71
+ // Route requests JSON - config must allow JSON (json or hybrid)
50
72
  if (method === 'cookies') {
51
73
  throw new core_2.NAuthException(core_2.AuthErrorCode.BEARER_NOT_ALLOWED, "Route-level JSON delivery requested, but tokenDelivery.method is 'cookies' (JSON/Bearer tokens disabled)");
52
74
  }
75
+ // method === 'json' or 'hybrid' - both allow JSON, so OK
53
76
  }
54
77
  let effective = 'json';
55
78
  if (routeMode) {
@@ -65,24 +88,54 @@ let CookieTokenInterceptor = class CookieTokenInterceptor {
65
88
  effective = 'json';
66
89
  }
67
90
  return next.handle().pipe((0, operators_1.map)((data) => {
68
- const hasDeviceTokenOnly = data && 'deviceToken' in data && !('accessToken' in data);
69
- const hasAccessToken = data && 'accessToken' in data && data.accessToken;
70
- if (!data || (!hasAccessToken && !hasDeviceTokenOnly)) {
91
+ // ============================================================================
92
+ // Safety: Only process object responses
93
+ // ============================================================================
94
+ // Some consumer endpoints (e.g. health checks) legitimately return primitives
95
+ // like strings. The `in` operator throws on non-objects, so we must no-op.
96
+ if (!data || typeof data !== 'object' || Array.isArray(data)) {
71
97
  return data;
72
98
  }
99
+ const responseData = data;
100
+ const record = data;
101
+ // Handle trust-device endpoint which returns only deviceToken
102
+ const hasDeviceTokenOnly = 'deviceToken' in record && !('accessToken' in record) && typeof responseData.deviceToken === 'string';
103
+ const hasAccessToken = 'accessToken' in record && typeof responseData.accessToken === 'string' && !!responseData.accessToken;
104
+ // Only process responses that include tokens OR deviceToken
105
+ if (!hasAccessToken && !hasDeviceTokenOnly) {
106
+ return responseData;
107
+ }
108
+ // Smart default cookie options
73
109
  const opt = deliveryConfig?.cookieOptions;
110
+ // Cookie domain handling:
111
+ // - undefined: Cookie set for exact host:port (e.g., localhost:3000)
112
+ // For cross-port requests (localhost:4200 → localhost:3000), cookies work IF:
113
+ // - Frontend sends withCredentials: true
114
+ // - Backend CORS allows credentials
115
+ // - SameSite allows cross-site requests (e.g., 'lax' or 'none')
116
+ //
117
+ // - 'localhost' or '.localhost': Some browsers accept this, others reject it
118
+ // Modern browsers generally allow 'localhost' without domain attribute
119
+ //
120
+ // - '.example.com': For production cross-subdomain sharing
121
+ // Allows cookies set by api.example.com to be sent from app.example.com
74
122
  const cookieOptions = {
75
123
  httpOnly: true,
76
- secure: opt?.secure !== false,
124
+ secure: opt?.secure !== false, // default true
77
125
  sameSite: (opt?.sameSite || 'strict'),
78
126
  path: opt?.path || '/',
79
127
  };
128
+ // Include domain if provided (browsers handle localhost differently - some accept, some reject)
129
+ // For cross-port testing (like Cognito), omitting domain works with sameSite: 'lax' or 'none'
80
130
  if (opt?.domain) {
81
131
  cookieOptions.domain = opt.domain;
82
132
  }
133
+ // Derive expiry strictly from JWT claims (no fallback)
134
+ // We decode here (signature already trusted as tokens are freshly issued);
135
+ // full validation and blacklist checks happen in the AuthGuard on subsequent requests.
83
136
  let accessTokenMaxAgeMs = 0;
84
- if (hasAccessToken && 'accessToken' in data && data.accessToken) {
85
- const accessPayload = this.jwtService.decodeToken(data.accessToken);
137
+ if (hasAccessToken && responseData.accessToken) {
138
+ const accessPayload = this.jwtService.decodeToken(responseData.accessToken);
86
139
  if (!accessPayload?.exp) {
87
140
  throw new core_2.NAuthException(core_2.AuthErrorCode.TOKEN_INVALID, 'Access token missing or invalid exp claim; refusing to set cookies');
88
141
  }
@@ -100,15 +153,16 @@ let CookieTokenInterceptor = class CookieTokenInterceptor {
100
153
  res.setCookie(name, value, options);
101
154
  }
102
155
  };
103
- if (effective === 'cookies' && hasAccessToken && 'accessToken' in data && data.accessToken) {
156
+ // Set cookies only when effective is 'cookies'
157
+ if (effective === 'cookies' && hasAccessToken && responseData.accessToken) {
104
158
  const accessTokenCookieName = (0, core_2.getAccessTokenCookieName)(this.config);
105
- setCookie(accessTokenCookieName, data.accessToken, {
159
+ setCookie(accessTokenCookieName, responseData.accessToken, {
106
160
  ...cookieOptions,
107
161
  maxAge: accessTokenMaxAgeMs,
108
162
  });
109
163
  }
110
- if ('refreshToken' in data && data.refreshToken && effective === 'cookies') {
111
- const refreshPayload = this.jwtService.decodeToken(data.refreshToken);
164
+ if (typeof responseData.refreshToken === 'string' && responseData.refreshToken && effective === 'cookies') {
165
+ const refreshPayload = this.jwtService.decodeToken(responseData.refreshToken);
112
166
  if (!refreshPayload?.exp) {
113
167
  throw new core_2.NAuthException(core_2.AuthErrorCode.TOKEN_INVALID, 'Refresh token missing or invalid exp claim; refusing to set cookies');
114
168
  }
@@ -118,38 +172,48 @@ let CookieTokenInterceptor = class CookieTokenInterceptor {
118
172
  throw new core_2.NAuthException(core_2.AuthErrorCode.TOKEN_INVALID, 'Refresh token already expired; refusing to set cookies');
119
173
  }
120
174
  const refreshTokenCookieName = (0, core_2.getRefreshTokenCookieName)(this.config);
121
- setCookie(refreshTokenCookieName, data.refreshToken, {
175
+ setCookie(refreshTokenCookieName, responseData.refreshToken, {
122
176
  ...cookieOptions,
123
177
  maxAge: refreshTokenMaxAgeMs,
124
178
  });
125
179
  }
126
- if ('deviceToken' in data && data.deviceToken && effective === 'cookies') {
180
+ // Set device token cookie for trusted device feature (web)
181
+ // Only set cookie when deviceToken is present and effective is cookies
182
+ // (hybrid mode may resolve to cookies for web origins)
183
+ if (typeof responseData.deviceToken === 'string' && responseData.deviceToken && effective === 'cookies') {
127
184
  const rememberDeviceDays = this.config.mfa?.rememberDeviceDays || 30;
128
- const deviceTokenMaxAgeMs = rememberDeviceDays * 24 * 60 * 60 * 1000;
185
+ const deviceTokenMaxAgeMs = rememberDeviceDays * 24 * 60 * 60 * 1000; // Convert days to milliseconds
129
186
  const deviceTokenCookieName = (0, core_2.getDeviceTokenCookieName)(this.config);
130
- setCookie(deviceTokenCookieName, data.deviceToken, {
187
+ setCookie(deviceTokenCookieName, responseData.deviceToken, {
131
188
  ...cookieOptions,
132
189
  maxAge: deviceTokenMaxAgeMs,
133
190
  });
134
191
  }
192
+ // Set CSRF token cookie when using cookie-based token delivery
193
+ // CSRF token is required for state-changing requests to prevent CSRF attacks
135
194
  if (effective === 'cookies' && this.csrfService && this.config.security?.csrf) {
136
195
  const csrfToken = this.csrfService.generateToken();
137
196
  const csrfCookieName = this.csrfService.getCookieName();
138
197
  const csrfCookieOptions = this.csrfService.getCookieOptions();
198
+ // Use same max age as access token for CSRF cookie
199
+ // This ensures CSRF token expires when access token expires
139
200
  setCookie(csrfCookieName, csrfToken, {
140
201
  ...csrfCookieOptions,
141
202
  maxAge: accessTokenMaxAgeMs > 0 ? accessTokenMaxAgeMs : undefined,
142
203
  });
143
204
  }
205
+ // Strip tokens, deviceToken, and expiration fields only when effective is cookies (strict web path)
206
+ // Expiration is managed by cookie maxAge, so these fields are not needed
144
207
  if (effective === 'cookies') {
145
208
  if (hasDeviceTokenOnly) {
209
+ // For trust-device endpoint, return empty object (deviceToken set as cookie)
146
210
  return {};
147
211
  }
148
- const authData = data;
212
+ const authData = responseData;
149
213
  const { accessToken, refreshToken, deviceToken, accessTokenExpiresAt, refreshTokenExpiresAt, ...sanitized } = authData;
150
214
  return sanitized;
151
215
  }
152
- return data;
216
+ return responseData;
153
217
  }));
154
218
  }
155
219
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cookie-token.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/cookie-token.interceptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cookie-token.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/cookie-token.interceptor.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,114 @@
1
1
  import { LoggerProvider, LogMetadata, LogLevel } from '@nauth-toolkit/core';
2
+ /**
3
+ * NestJS Logger Adapter
4
+ *
5
+ * Default logger adapter that uses NestJS's built-in Logger.
6
+ * Automatically redacts PII from all log messages and metadata.
7
+ *
8
+ * **Features:**
9
+ * - Uses NestJS Logger (familiar to NestJS developers)
10
+ * - Automatic PII redaction (emails, IPs, tokens, passwords)
11
+ * - Structured logging with metadata
12
+ * - Color-coded output in development
13
+ * - JSON output in production (via NestJS config)
14
+ *
15
+ * **Usage:**
16
+ * ```typescript
17
+ * // Default (automatically used if no logger provided)
18
+ * AuthModule.forRoot({
19
+ * logger: {
20
+ * provider: new NestJsLoggerAdapter(),
21
+ * },
22
+ * })
23
+ *
24
+ * // With custom configuration
25
+ * AuthModule.forRoot({
26
+ * logger: {
27
+ * provider: new NestJsLoggerAdapter({
28
+ * context: 'CustomAuth',
29
+ * enablePiiRedaction: true,
30
+ * }),
31
+ * },
32
+ * })
33
+ * ```
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const logger = new NestJsLoggerAdapter();
38
+ *
39
+ * logger.log('User logged in', {
40
+ * userId: '123',
41
+ * email: 'user@example.com', // Redacted to u***@***.com
42
+ * ipAddress: '192.168.1.100' // Redacted to 192.168.1.***
43
+ * });
44
+ * ```
45
+ */
2
46
  export declare class NestJsLoggerAdapter implements LoggerProvider {
3
47
  private readonly logger;
4
48
  private readonly piiRedactor;
5
49
  private readonly enablePiiRedaction;
50
+ /**
51
+ * Constructor
52
+ *
53
+ * @param options - Logger configuration options
54
+ */
6
55
  constructor(options?: {
7
56
  context?: string;
8
57
  enablePiiRedaction?: boolean;
9
58
  piiRedactionOptions?: Record<string, unknown>;
10
59
  });
60
+ /**
61
+ * Log debug message (lowest priority)
62
+ *
63
+ * Used for detailed debugging information.
64
+ * Only logged if log level is set to 'debug'.
65
+ *
66
+ * @param message - Log message
67
+ * @param metadata - Additional context (PII will be redacted)
68
+ */
11
69
  debug(message: string, metadata?: LogMetadata): void;
70
+ /**
71
+ * Log informational message
72
+ *
73
+ * Used for general informational messages about system operation.
74
+ *
75
+ * @param message - Log message
76
+ * @param metadata - Additional context (PII will be redacted)
77
+ */
12
78
  log(message: string, metadata?: LogMetadata): void;
79
+ /**
80
+ * Log warning message
81
+ *
82
+ * Used for potentially harmful situations.
83
+ *
84
+ * @param message - Log message
85
+ * @param metadata - Additional context (PII will be redacted)
86
+ */
13
87
  warn(message: string, metadata?: LogMetadata): void;
88
+ /**
89
+ * Log error message (highest priority)
90
+ *
91
+ * Used for error events that might still allow the application to continue.
92
+ *
93
+ * @param message - Log message
94
+ * @param metadata - Additional context (PII will be redacted)
95
+ */
14
96
  error(message: string, metadata?: LogMetadata): void;
97
+ /**
98
+ * Set log level at runtime
99
+ *
100
+ * Note: NestJS Logger doesn't directly support runtime log level changes,
101
+ * but you can use Logger.overrideLogger() globally.
102
+ *
103
+ * @param level - Log level to set
104
+ */
15
105
  setLogLevel(level: LogLevel): void;
106
+ /**
107
+ * Check if a log level is enabled
108
+ *
109
+ * @param level - Log level to check
110
+ * @returns True if the level is enabled
111
+ */
16
112
  isLevelEnabled(_level: LogLevel): boolean;
17
113
  }
18
114
  //# sourceMappingURL=nestjs-logger.adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nestjs-logger.adapter.d.ts","sourceRoot":"","sources":["../../src/providers/nestjs-logger.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAe,MAAM,qBAAqB,CAAC;AA8CzF,qBACa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;gBAOjC,OAAO,CAAC,EAAE;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/C;IAkBD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAmBpD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAmBlD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAmBnD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IA4BpD,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAYlC,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;CAK1C"}
1
+ {"version":3,"file":"nestjs-logger.adapter.d.ts","sourceRoot":"","sources":["../../src/providers/nestjs-logger.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAe,MAAM,qBAAqB,CAAC;AAEzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBACa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C;;;;OAIG;gBACS,OAAO,CAAC,EAAE;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/C;IASD;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAWpD;;;;;;;OAOG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAWlD;;;;;;;OAOG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAWnD;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI;IAoBpD;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAMlC;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;CAK1C"}
@@ -12,15 +12,75 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.NestJsLoggerAdapter = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const core_1 = require("@nauth-toolkit/core");
15
+ /**
16
+ * NestJS Logger Adapter
17
+ *
18
+ * Default logger adapter that uses NestJS's built-in Logger.
19
+ * Automatically redacts PII from all log messages and metadata.
20
+ *
21
+ * **Features:**
22
+ * - Uses NestJS Logger (familiar to NestJS developers)
23
+ * - Automatic PII redaction (emails, IPs, tokens, passwords)
24
+ * - Structured logging with metadata
25
+ * - Color-coded output in development
26
+ * - JSON output in production (via NestJS config)
27
+ *
28
+ * **Usage:**
29
+ * ```typescript
30
+ * // Default (automatically used if no logger provided)
31
+ * AuthModule.forRoot({
32
+ * logger: {
33
+ * provider: new NestJsLoggerAdapter(),
34
+ * },
35
+ * })
36
+ *
37
+ * // With custom configuration
38
+ * AuthModule.forRoot({
39
+ * logger: {
40
+ * provider: new NestJsLoggerAdapter({
41
+ * context: 'CustomAuth',
42
+ * enablePiiRedaction: true,
43
+ * }),
44
+ * },
45
+ * })
46
+ * ```
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const logger = new NestJsLoggerAdapter();
51
+ *
52
+ * logger.log('User logged in', {
53
+ * userId: '123',
54
+ * email: 'user@example.com', // Redacted to u***@***.com
55
+ * ipAddress: '192.168.1.100' // Redacted to 192.168.1.***
56
+ * });
57
+ * ```
58
+ */
15
59
  let NestJsLoggerAdapter = class NestJsLoggerAdapter {
16
60
  logger;
17
61
  piiRedactor;
18
62
  enablePiiRedaction;
63
+ /**
64
+ * Constructor
65
+ *
66
+ * @param options - Logger configuration options
67
+ */
19
68
  constructor(options) {
69
+ // Initialize NestJS Logger with context
20
70
  this.logger = new common_1.Logger(options?.context || 'nauth-toolkit');
21
- this.enablePiiRedaction = options?.enablePiiRedaction !== false;
71
+ // Initialize PII redactor
72
+ this.enablePiiRedaction = options?.enablePiiRedaction !== false; // Default: true
22
73
  this.piiRedactor = new core_1.PiiRedactor(options?.piiRedactionOptions);
23
74
  }
75
+ /**
76
+ * Log debug message (lowest priority)
77
+ *
78
+ * Used for detailed debugging information.
79
+ * Only logged if log level is set to 'debug'.
80
+ *
81
+ * @param message - Log message
82
+ * @param metadata - Additional context (PII will be redacted)
83
+ */
24
84
  debug(message, metadata) {
25
85
  const safeMessage = this.enablePiiRedaction ? this.piiRedactor.redactMessage(message) : message;
26
86
  const safeMetadata = this.enablePiiRedaction ? this.piiRedactor.redactMetadata(metadata) : metadata;
@@ -31,6 +91,14 @@ let NestJsLoggerAdapter = class NestJsLoggerAdapter {
31
91
  this.logger.debug(safeMessage);
32
92
  }
33
93
  }
94
+ /**
95
+ * Log informational message
96
+ *
97
+ * Used for general informational messages about system operation.
98
+ *
99
+ * @param message - Log message
100
+ * @param metadata - Additional context (PII will be redacted)
101
+ */
34
102
  log(message, metadata) {
35
103
  const safeMessage = this.enablePiiRedaction ? this.piiRedactor.redactMessage(message) : message;
36
104
  const safeMetadata = this.enablePiiRedaction ? this.piiRedactor.redactMetadata(metadata) : metadata;
@@ -41,6 +109,14 @@ let NestJsLoggerAdapter = class NestJsLoggerAdapter {
41
109
  this.logger.log(safeMessage);
42
110
  }
43
111
  }
112
+ /**
113
+ * Log warning message
114
+ *
115
+ * Used for potentially harmful situations.
116
+ *
117
+ * @param message - Log message
118
+ * @param metadata - Additional context (PII will be redacted)
119
+ */
44
120
  warn(message, metadata) {
45
121
  const safeMessage = this.enablePiiRedaction ? this.piiRedactor.redactMessage(message) : message;
46
122
  const safeMetadata = this.enablePiiRedaction ? this.piiRedactor.redactMetadata(metadata) : metadata;
@@ -51,11 +127,21 @@ let NestJsLoggerAdapter = class NestJsLoggerAdapter {
51
127
  this.logger.warn(safeMessage);
52
128
  }
53
129
  }
130
+ /**
131
+ * Log error message (highest priority)
132
+ *
133
+ * Used for error events that might still allow the application to continue.
134
+ *
135
+ * @param message - Log message
136
+ * @param metadata - Additional context (PII will be redacted)
137
+ */
54
138
  error(message, metadata) {
55
139
  const safeMessage = this.enablePiiRedaction ? this.piiRedactor.redactMessage(message) : message;
56
140
  const safeMetadata = this.enablePiiRedaction ? this.piiRedactor.redactMetadata(metadata) : metadata;
57
141
  if (safeMetadata && safeMetadata.error instanceof Error) {
142
+ // Log error stack trace separately
58
143
  this.logger.error(safeMessage, safeMetadata.error.stack);
144
+ // Log remaining metadata
59
145
  const { error, ...rest } = safeMetadata;
60
146
  if (Object.keys(rest).length > 0) {
61
147
  this.logger.error(JSON.stringify(rest));
@@ -68,10 +154,28 @@ let NestJsLoggerAdapter = class NestJsLoggerAdapter {
68
154
  this.logger.error(safeMessage);
69
155
  }
70
156
  }
157
+ /**
158
+ * Set log level at runtime
159
+ *
160
+ * Note: NestJS Logger doesn't directly support runtime log level changes,
161
+ * but you can use Logger.overrideLogger() globally.
162
+ *
163
+ * @param level - Log level to set
164
+ */
71
165
  setLogLevel(level) {
166
+ // NestJS Logger uses global log levels
167
+ // This is a placeholder for future enhancement
72
168
  this.logger.log(`Log level set to: ${level}`);
73
169
  }
170
+ /**
171
+ * Check if a log level is enabled
172
+ *
173
+ * @param level - Log level to check
174
+ * @returns True if the level is enabled
175
+ */
74
176
  isLevelEnabled(_level) {
177
+ // NestJS Logger doesn't expose this directly
178
+ // Default: all levels enabled
75
179
  return true;
76
180
  }
77
181
  };
@@ -1 +1 @@
1
- {"version":3,"file":"nestjs-logger.adapter.js","sourceRoot":"","sources":["../../src/providers/nestjs-logger.adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nestjs-logger.adapter.js","sourceRoot":"","sources":["../../src/providers/nestjs-logger.adapter.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,44 @@
1
1
  import { NAuthConfig } from '@nauth-toolkit/core';
2
+ /**
3
+ * CSRF Service
4
+ *
5
+ * Generates and manages CSRF tokens for cookie-based token delivery.
6
+ * CSRF protection prevents Cross-Site Request Forgery attacks when tokens
7
+ * are stored in httpOnly cookies.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const csrfService = new CsrfService(config);
12
+ * const token = csrfService.generateToken();
13
+ * const cookieOptions = csrfService.getCookieOptions();
14
+ * ```
15
+ */
2
16
  export declare class CsrfService {
3
17
  private readonly config;
4
18
  constructor(config: NAuthConfig);
19
+ /**
20
+ * Generate a cryptographically secure CSRF token
21
+ *
22
+ * @returns CSRF token as hexadecimal string
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const token = csrfService.generateToken();
27
+ * // Returns: 'a1b2c3d4e5f6...' (length depends on config.security.csrf.tokenLength)
28
+ * ```
29
+ */
5
30
  generateToken(): string;
31
+ /**
32
+ * Get CSRF cookie options from configuration
33
+ *
34
+ * @returns Cookie options object with defaults
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const options = csrfService.getCookieOptions();
39
+ * res.cookie(csrfService.getCookieName(), token, options);
40
+ * ```
41
+ */
6
42
  getCookieOptions(): {
7
43
  httpOnly: boolean;
8
44
  secure: boolean;
@@ -10,7 +46,32 @@ export declare class CsrfService {
10
46
  domain?: string;
11
47
  path?: string;
12
48
  };
49
+ /**
50
+ * Get CSRF cookie name from configuration
51
+ *
52
+ * If explicitly configured via security.csrf.cookieName, uses that value.
53
+ * Otherwise, uses the prefix: `${prefix}csrf_token` (default: 'nauth_csrf_token')
54
+ *
55
+ * @returns Cookie name (default: 'nauth_csrf_token' with default prefix)
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const cookieName = csrfService.getCookieName();
60
+ * // Returns: 'nauth_csrf_token' (or configured value)
61
+ * ```
62
+ */
13
63
  getCookieName(): string;
64
+ /**
65
+ * Get CSRF header name from configuration
66
+ *
67
+ * @returns Header name (default: 'x-csrf-token')
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * const headerName = csrfService.getHeaderName();
72
+ * // Returns: 'x-csrf-token' (or configured value)
73
+ * ```
74
+ */
14
75
  getHeaderName(): string;
15
76
  }
16
77
  //# sourceMappingURL=csrf.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"csrf.service.d.ts","sourceRoot":"","sources":["../../src/services/csrf.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA0B,MAAM,qBAAqB,CAAC;AAgB1E,qBACa,WAAW;IAGpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IActC,aAAa,IAAI,MAAM;IAgBvB,gBAAgB,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;IAyBD,aAAa,IAAI,MAAM;IAevB,aAAa,IAAI,MAAM;CAGxB"}
1
+ {"version":3,"file":"csrf.service.d.ts","sourceRoot":"","sources":["../../src/services/csrf.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA0B,MAAM,qBAAqB,CAAC;AAE1E;;;;;;;;;;;;;GAaG;AACH,qBACa,WAAW;IAGpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAGtC;;;;;;;;;;OAUG;IACH,aAAa,IAAI,MAAM;IAKvB;;;;;;;;;;OAUG;IACH,gBAAgB,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;QACpC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;IAWD;;;;;;;;;;;;;OAaG;IACH,aAAa,IAAI,MAAM;IAIvB;;;;;;;;;;OAUG;IACH,aAAa,IAAI,MAAM;CAGxB"}