@payez/next-mvp 4.1.11 → 4.1.12

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 (91) hide show
  1. package/dist/api-handlers/auth/refresh.js +15 -38
  2. package/dist/auth/better-auth.js +12 -33
  3. package/dist/client/better-auth-client.d.ts +14 -2
  4. package/dist/lib/ensure-fresh-access-token.js +8 -42
  5. package/dist/lib/session-store.d.ts +0 -1
  6. package/dist/lib/session-store.js +29 -33
  7. package/dist/lib/startup-init.js +19 -19
  8. package/dist/lib/token-lifecycle.d.ts +0 -2
  9. package/dist/lib/token-lifecycle.js +3 -21
  10. package/package.json +4 -3
  11. package/scripts/check-internal-url-usage.sh +73 -73
  12. package/src/api/index.ts +17 -17
  13. package/src/api-handlers/account/masked-info.ts +45 -45
  14. package/src/api-handlers/account/profile.ts +80 -80
  15. package/src/api-handlers/account/recovery/initiate.ts +23 -23
  16. package/src/api-handlers/account/recovery/send-code.ts +25 -25
  17. package/src/api-handlers/account/recovery/verify-code.ts +25 -25
  18. package/src/api-handlers/account/reset-password.ts +23 -23
  19. package/src/api-handlers/account/send-code.ts +76 -76
  20. package/src/api-handlers/account/validate-password.ts +118 -118
  21. package/src/api-handlers/admin/stats.ts +249 -249
  22. package/src/api-handlers/anon/preferences.ts +123 -123
  23. package/src/api-handlers/auth/jwks.ts +20 -20
  24. package/src/api-handlers/auth/login.ts +240 -240
  25. package/src/api-handlers/auth/refresh.ts +15 -38
  26. package/src/api-handlers/auth/validate.ts +43 -43
  27. package/src/api-handlers/session/viability.ts +142 -142
  28. package/src/auth/better-auth.ts +450 -467
  29. package/src/auth/unauthenticated-routes.ts +2 -2
  30. package/src/client/better-auth-client.ts +70 -70
  31. package/src/client/fetchWithSession.ts +21 -21
  32. package/src/client/index.ts +13 -13
  33. package/src/client/useAnonSession.ts +131 -131
  34. package/src/components/admin/VibeAdminContext.tsx +87 -87
  35. package/src/config/logging-config.ts +82 -82
  36. package/src/config/unauthenticated-routes.ts +19 -19
  37. package/src/edge/internal-api-url.ts +65 -65
  38. package/src/edge/middleware.ts +42 -42
  39. package/src/hooks/useProfile.ts +75 -75
  40. package/src/lib/anon-session.ts +213 -213
  41. package/src/lib/auth-secret.ts +137 -137
  42. package/src/lib/demo-mode.ts +17 -17
  43. package/src/lib/ensure-fresh-access-token.ts +8 -42
  44. package/src/lib/idp-client-config.ts +559 -559
  45. package/src/lib/idp-fetch.ts +126 -126
  46. package/src/lib/internal-api.ts +171 -171
  47. package/src/lib/jwt-decode-client.ts +45 -45
  48. package/src/lib/rate-limit-service.ts +9 -9
  49. package/src/lib/redis.ts +26 -26
  50. package/src/lib/refresh-token-validator.ts +64 -64
  51. package/src/lib/secret-validation.ts +8 -8
  52. package/src/lib/session-store.ts +692 -695
  53. package/src/lib/session.ts +34 -34
  54. package/src/lib/startup-init.ts +251 -251
  55. package/src/lib/token-expiry.ts +40 -40
  56. package/src/lib/token-lifecycle.ts +470 -497
  57. package/src/lib/types/api-responses.ts +336 -336
  58. package/src/middleware/auth-decision.ts +43 -43
  59. package/src/models/DecodedAccessToken.ts +16 -16
  60. package/src/models/SessionModel.ts +264 -264
  61. package/src/pages/admin-roles/index.ts +9 -9
  62. package/src/pages/security/EnhancedSecurityPage.tsx +9 -9
  63. package/src/routes/account/index.ts +31 -31
  64. package/src/routes/account/masked-info.ts +36 -36
  65. package/src/routes/account/send-code.ts +39 -39
  66. package/src/routes/account/verify-email.ts +40 -40
  67. package/src/routes/account/verify-sms.ts +40 -40
  68. package/src/routes/auth/index.ts +22 -22
  69. package/src/routes/auth/refresh.ts +48 -48
  70. package/src/routes/auth/session.ts +166 -166
  71. package/src/routes/index.ts +17 -17
  72. package/src/routes/session/index.ts +7 -7
  73. package/src/routes/session/refresh-viability.ts +17 -17
  74. package/src/server/auth.ts +373 -373
  75. package/src/server/decode-session.ts +202 -202
  76. package/src/services/signalrActivityService.ts +258 -258
  77. package/src/theme/ThemeProvider.tsx +39 -39
  78. package/src/theme/default.ts +33 -33
  79. package/src/theme/index.ts +31 -31
  80. package/src/theme/types.ts +69 -69
  81. package/src/theme/useTheme.ts +57 -57
  82. package/src/theme/utils.ts +40 -40
  83. package/src/types/api.ts +12 -12
  84. package/src/types/auth.d.ts +23 -23
  85. package/src/types/auth.ts +22 -22
  86. package/src/types/logging.ts +11 -11
  87. package/src/types/recovery.ts +54 -54
  88. package/src/utils/api.ts +353 -353
  89. package/src/utils/circuitBreaker.ts +40 -40
  90. package/src/utils/error-message.ts +108 -108
  91. package/src/utils/layout/reservedSpace.ts +124 -124
@@ -1,40 +1,40 @@
1
- import { jwtDecode } from './jwt-decode';
2
- import { logger } from '../config/logger';
3
-
4
- export interface TokenExpiryOptions {
5
- accessToken?: string;
6
- refreshToken?: string;
7
- preferJwt?: boolean;
8
- fallbackAccessMs?: number;
9
- fallbackRefreshMs?: number;
10
- }
11
-
12
- export interface TokenExpiryResult {
13
- accessTokenExpires: number;
14
- refreshTokenExpires?: number;
15
- decodedAccessToken?: any;
16
- decodedRefreshToken?: any;
17
- }
18
-
19
- export function computeTokenExpiries(opts: TokenExpiryOptions): TokenExpiryResult {
20
- const { accessToken, refreshToken, preferJwt = true, fallbackAccessMs, fallbackRefreshMs } = opts;
21
- let decodedAccessToken: any | undefined;
22
- let decodedRefreshToken: any | undefined;
23
- let accessMs: number | undefined;
24
- let refreshMs: number | undefined;
25
-
26
- if (preferJwt && accessToken) {
27
- try { decodedAccessToken = jwtDecode(accessToken); if (decodedAccessToken?.exp) accessMs = decodedAccessToken.exp * 1000; }
28
- catch (e) { logger.warn('[TOKEN_EXPIRY] Failed to decode access token', { error: e instanceof Error ? e.message : String(e) }); }
29
- }
30
- if (accessMs === undefined && typeof fallbackAccessMs === 'number') accessMs = fallbackAccessMs;
31
-
32
- if (preferJwt && refreshToken) {
33
- try { decodedRefreshToken = jwtDecode(refreshToken); if (decodedRefreshToken?.exp) refreshMs = decodedRefreshToken.exp * 1000; }
34
- catch (e) { logger.warn('[TOKEN_EXPIRY] Failed to decode refresh token', { error: e instanceof Error ? e.message : String(e) }); }
35
- }
36
- if (refreshMs === undefined && typeof fallbackRefreshMs === 'number') refreshMs = fallbackRefreshMs;
37
-
38
- if (typeof accessMs !== 'number') accessMs = Date.now();
39
- return { accessTokenExpires: accessMs, refreshTokenExpires: refreshMs, decodedAccessToken, decodedRefreshToken };
40
- }
1
+ import { jwtDecode } from './jwt-decode';
2
+ import { logger } from '../config/logger';
3
+
4
+ export interface TokenExpiryOptions {
5
+ accessToken?: string;
6
+ refreshToken?: string;
7
+ preferJwt?: boolean;
8
+ fallbackAccessMs?: number;
9
+ fallbackRefreshMs?: number;
10
+ }
11
+
12
+ export interface TokenExpiryResult {
13
+ accessTokenExpires: number;
14
+ refreshTokenExpires?: number;
15
+ decodedAccessToken?: any;
16
+ decodedRefreshToken?: any;
17
+ }
18
+
19
+ export function computeTokenExpiries(opts: TokenExpiryOptions): TokenExpiryResult {
20
+ const { accessToken, refreshToken, preferJwt = true, fallbackAccessMs, fallbackRefreshMs } = opts;
21
+ let decodedAccessToken: any | undefined;
22
+ let decodedRefreshToken: any | undefined;
23
+ let accessMs: number | undefined;
24
+ let refreshMs: number | undefined;
25
+
26
+ if (preferJwt && accessToken) {
27
+ try { decodedAccessToken = jwtDecode(accessToken); if (decodedAccessToken?.exp) accessMs = decodedAccessToken.exp * 1000; }
28
+ catch (e) { logger.warn('[TOKEN_EXPIRY] Failed to decode access token', { error: e instanceof Error ? e.message : String(e) }); }
29
+ }
30
+ if (accessMs === undefined && typeof fallbackAccessMs === 'number') accessMs = fallbackAccessMs;
31
+
32
+ if (preferJwt && refreshToken) {
33
+ try { decodedRefreshToken = jwtDecode(refreshToken); if (decodedRefreshToken?.exp) refreshMs = decodedRefreshToken.exp * 1000; }
34
+ catch (e) { logger.warn('[TOKEN_EXPIRY] Failed to decode refresh token', { error: e instanceof Error ? e.message : String(e) }); }
35
+ }
36
+ if (refreshMs === undefined && typeof fallbackRefreshMs === 'number') refreshMs = fallbackRefreshMs;
37
+
38
+ if (typeof accessMs !== 'number') accessMs = Date.now();
39
+ return { accessTokenExpires: accessMs, refreshTokenExpires: refreshMs, decodedAccessToken, decodedRefreshToken };
40
+ }