@lenne.tech/nest-server 11.36.2 → 11.36.4

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 (35) hide show
  1. package/.claude/rules/better-auth.md +54 -0
  2. package/.claude/rules/configurable-features.md +1 -1
  3. package/.claude/rules/testing.md +88 -4
  4. package/CLAUDE.md +1 -0
  5. package/FRAMEWORK-API.md +1 -1
  6. package/dist/core/modules/better-auth/better-auth.types.d.ts +4 -0
  7. package/dist/core/modules/better-auth/better-auth.types.js +9 -0
  8. package/dist/core/modules/better-auth/better-auth.types.js.map +1 -1
  9. package/dist/core/modules/better-auth/core-better-auth-cookie.helper.d.ts +1 -1
  10. package/dist/core/modules/better-auth/core-better-auth-cookie.helper.js +16 -6
  11. package/dist/core/modules/better-auth/core-better-auth-cookie.helper.js.map +1 -1
  12. package/dist/core/modules/better-auth/core-better-auth-token.helper.d.ts +1 -0
  13. package/dist/core/modules/better-auth/core-better-auth-token.helper.js +4 -0
  14. package/dist/core/modules/better-auth/core-better-auth-token.helper.js.map +1 -1
  15. package/dist/core/modules/better-auth/core-better-auth.controller.d.ts +1 -0
  16. package/dist/core/modules/better-auth/core-better-auth.controller.js +9 -4
  17. package/dist/core/modules/better-auth/core-better-auth.controller.js.map +1 -1
  18. package/dist/core/modules/better-auth/core-better-auth.resolver.js +1 -1
  19. package/dist/core/modules/better-auth/core-better-auth.resolver.js.map +1 -1
  20. package/dist/core/modules/better-auth/core-better-auth.service.js +2 -1
  21. package/dist/core/modules/better-auth/core-better-auth.service.js.map +1 -1
  22. package/dist/tsconfig.build.tsbuildinfo +1 -1
  23. package/docs/REQUEST-LIFECYCLE.md +8 -0
  24. package/migration-guides/11.36.2-to-11.36.3.md +131 -0
  25. package/migration-guides/11.36.3-to-11.36.4.md +145 -0
  26. package/package.json +1 -1
  27. package/src/core/modules/better-auth/CUSTOMIZATION.md +25 -0
  28. package/src/core/modules/better-auth/INTEGRATION-CHECKLIST.md +6 -0
  29. package/src/core/modules/better-auth/README.md +4 -4
  30. package/src/core/modules/better-auth/better-auth.types.ts +30 -0
  31. package/src/core/modules/better-auth/core-better-auth-cookie.helper.ts +49 -7
  32. package/src/core/modules/better-auth/core-better-auth-token.helper.ts +16 -0
  33. package/src/core/modules/better-auth/core-better-auth.controller.ts +53 -7
  34. package/src/core/modules/better-auth/core-better-auth.resolver.ts +6 -1
  35. package/src/core/modules/better-auth/core-better-auth.service.ts +5 -2
@@ -13,6 +13,7 @@ import {
13
13
  hasSession,
14
14
  hasUser,
15
15
  requires2FA,
16
+ sessionTokenFromResponse,
16
17
  } from './better-auth.types';
17
18
  import { CoreBetterAuthAuthModel } from './core-better-auth-auth.model';
18
19
  import { CoreBetterAuthEmailVerificationService } from './core-better-auth-email-verification.service';
@@ -490,7 +491,11 @@ export class CoreBetterAuthResolver {
490
491
  // If email verification is enabled, revoke the session and don't return session data
491
492
  // The user must verify their email before they can use any session
492
493
  if (this.emailVerificationService?.isEnabled()) {
493
- const sessionToken = hasSession(response) ? response.session.token : undefined;
494
+ // Shared chain, NOT `hasSession(response) ? response.session.token : undefined`: `token` is
495
+ // optional on the guard, so that expression returns `undefined` for a response shape that
496
+ // still carries a revocable token — and the endpoint would then report a revoked session
497
+ // while a live one remained in the database.
498
+ const sessionToken = sessionTokenFromResponse(response);
494
499
  if (sessionToken) {
495
500
  await this.betterAuthService.revokeSession(sessionToken);
496
501
  }
@@ -11,6 +11,7 @@ import { ConfigService } from '../../common/services/config.service';
11
11
  import { ErrorCode } from '../error-code/error-codes';
12
12
  import { resolveBetterAuthCookiePrefix } from './better-auth-cookie-prefix.helper';
13
13
  import { BetterAuthInstance } from './better-auth.config';
14
+ import { isJwtShaped } from './core-better-auth-token.helper';
14
15
  import { BetterAuthSessionUser } from './core-better-auth-user.mapper';
15
16
  import { convertExpressHeaders, parseCookieHeader, signCookieValueIfNeeded } from './core-better-auth-web.helper';
16
17
  import { BETTER_AUTH_CONFIG, BETTER_AUTH_COOKIE_DOMAIN, BETTER_AUTH_INSTANCE } from './core-better-auth.constants';
@@ -359,8 +360,10 @@ export class CoreBetterAuthService implements OnModuleInit {
359
360
  return token;
360
361
  }
361
362
 
362
- // Already a JWT (three base64url segments separated by dots)
363
- if (token.startsWith('eyJ') && token.split('.').length === 3) {
363
+ // Already a JWT (three base64url segments separated by dots). Shares ONE definition with the
364
+ // session-cookie guard two copies of this predicate would let the conversion path and the
365
+ // cookie path disagree about the same token, silently.
366
+ if (isJwtShaped(token)) {
364
367
  return token;
365
368
  }
366
369