@payez/next-mvp 3.9.1 → 4.0.1

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 (526) hide show
  1. package/package.json +6 -18
  2. package/src/api/auth-handler.ts +550 -549
  3. package/src/api-handlers/account/change-password.ts +5 -8
  4. package/src/api-handlers/admin/analytics.ts +4 -6
  5. package/src/api-handlers/admin/audit.ts +5 -7
  6. package/src/api-handlers/admin/index.ts +1 -2
  7. package/src/api-handlers/admin/redis-sessions.ts +6 -8
  8. package/src/api-handlers/admin/sessions.ts +5 -7
  9. package/src/api-handlers/admin/site-logs.ts +8 -10
  10. package/src/api-handlers/admin/stats.ts +4 -6
  11. package/src/api-handlers/admin/users.ts +5 -7
  12. package/src/api-handlers/admin/vibe-data.ts +10 -12
  13. package/src/api-handlers/auth/refresh.ts +5 -7
  14. package/src/api-handlers/auth/signout.ts +5 -6
  15. package/src/api-handlers/auth/status.ts +4 -7
  16. package/src/api-handlers/auth/update-session.ts +123 -125
  17. package/src/api-handlers/auth/verify-code.ts +9 -13
  18. package/src/api-handlers/session/viability.ts +10 -47
  19. package/src/api-handlers/test/force-expire.ts +4 -11
  20. package/src/auth/auth-decision.ts +1 -1
  21. package/src/auth/better-auth.ts +138 -141
  22. package/src/auth/route-config.ts +219 -219
  23. package/src/auth/utils/token-utils.ts +0 -1
  24. package/src/client/AuthContext.tsx +6 -2
  25. package/src/client/fetch-with-auth.ts +47 -47
  26. package/src/components/SessionSync.tsx +6 -5
  27. package/src/components/account/MobileNavDrawer.tsx +3 -3
  28. package/src/components/account/UserAvatarMenu.tsx +6 -3
  29. package/src/components/admin/VibeAdminLayout.tsx +4 -2
  30. package/src/config/logger.ts +1 -1
  31. package/src/hooks/useAuth.ts +117 -115
  32. package/src/hooks/useAuthSettings.ts +2 -2
  33. package/src/hooks/useAvailableProviders.ts +9 -5
  34. package/src/hooks/useSessionExpiration.ts +101 -102
  35. package/src/hooks/useViabilitySession.ts +336 -335
  36. package/src/index.ts +60 -63
  37. package/src/lib/api-handler.ts +0 -1
  38. package/src/lib/app-slug.ts +6 -6
  39. package/src/lib/standardized-client-api.ts +901 -895
  40. package/src/lib/startup-init.ts +243 -247
  41. package/src/lib/test-aware-get-token.ts +22 -12
  42. package/src/lib/token-lifecycle.ts +12 -53
  43. package/src/pages/admin-login/page.tsx +9 -17
  44. package/src/pages/client-admin/ClientSiteAdminPage.tsx +4 -2
  45. package/src/pages/login/page.tsx +21 -28
  46. package/src/pages/showcase/ShowcasePage.tsx +4 -2
  47. package/src/pages/test-env/EmergencyLogoutPage.tsx +7 -6
  48. package/src/pages/test-env/JwtInspectPage.tsx +5 -3
  49. package/src/pages/test-env/RefreshTokenPage.tsx +157 -155
  50. package/src/pages/test-env/TestEnvPage.tsx +4 -2
  51. package/src/pages/verify-code/page.tsx +10 -6
  52. package/src/routes/auth/logout.ts +7 -25
  53. package/src/routes/auth/nextauth.ts +45 -71
  54. package/src/routes/auth/session.ts +25 -50
  55. package/src/routes/auth/viability.ts +7 -19
  56. package/src/server/auth.ts +60 -0
  57. package/src/stores/authStore.ts +1899 -1904
  58. package/src/utils/logout.ts +30 -30
  59. package/dist/api/auth-handler.d.ts +0 -67
  60. package/dist/api/auth-handler.js +0 -397
  61. package/dist/api/index.d.ts +0 -10
  62. package/dist/api/index.js +0 -19
  63. package/dist/api-handlers/account/change-password.d.ts +0 -9
  64. package/dist/api-handlers/account/change-password.js +0 -112
  65. package/dist/api-handlers/account/masked-info.d.ts +0 -2
  66. package/dist/api-handlers/account/masked-info.js +0 -41
  67. package/dist/api-handlers/account/profile.d.ts +0 -3
  68. package/dist/api-handlers/account/profile.js +0 -63
  69. package/dist/api-handlers/account/recovery/initiate.d.ts +0 -2
  70. package/dist/api-handlers/account/recovery/initiate.js +0 -26
  71. package/dist/api-handlers/account/recovery/send-code.d.ts +0 -2
  72. package/dist/api-handlers/account/recovery/send-code.js +0 -28
  73. package/dist/api-handlers/account/recovery/verify-code.d.ts +0 -2
  74. package/dist/api-handlers/account/recovery/verify-code.js +0 -28
  75. package/dist/api-handlers/account/reset-password.d.ts +0 -2
  76. package/dist/api-handlers/account/reset-password.js +0 -26
  77. package/dist/api-handlers/account/send-code.d.ts +0 -24
  78. package/dist/api-handlers/account/send-code.js +0 -60
  79. package/dist/api-handlers/account/update-phone.d.ts +0 -27
  80. package/dist/api-handlers/account/update-phone.js +0 -64
  81. package/dist/api-handlers/account/validate-password.d.ts +0 -17
  82. package/dist/api-handlers/account/validate-password.js +0 -81
  83. package/dist/api-handlers/account/verify-email.d.ts +0 -26
  84. package/dist/api-handlers/account/verify-email.js +0 -106
  85. package/dist/api-handlers/account/verify-sms.d.ts +0 -26
  86. package/dist/api-handlers/account/verify-sms.js +0 -106
  87. package/dist/api-handlers/admin/analytics.d.ts +0 -20
  88. package/dist/api-handlers/admin/analytics.js +0 -379
  89. package/dist/api-handlers/admin/audit.d.ts +0 -20
  90. package/dist/api-handlers/admin/audit.js +0 -214
  91. package/dist/api-handlers/admin/index.d.ts +0 -22
  92. package/dist/api-handlers/admin/index.js +0 -43
  93. package/dist/api-handlers/admin/redis-sessions.d.ts +0 -36
  94. package/dist/api-handlers/admin/redis-sessions.js +0 -204
  95. package/dist/api-handlers/admin/sessions.d.ts +0 -21
  96. package/dist/api-handlers/admin/sessions.js +0 -284
  97. package/dist/api-handlers/admin/site-logs.d.ts +0 -46
  98. package/dist/api-handlers/admin/site-logs.js +0 -318
  99. package/dist/api-handlers/admin/stats.d.ts +0 -21
  100. package/dist/api-handlers/admin/stats.js +0 -240
  101. package/dist/api-handlers/admin/users.d.ts +0 -20
  102. package/dist/api-handlers/admin/users.js +0 -222
  103. package/dist/api-handlers/admin/vibe-data.d.ts +0 -80
  104. package/dist/api-handlers/admin/vibe-data.js +0 -268
  105. package/dist/api-handlers/anon/preferences.d.ts +0 -37
  106. package/dist/api-handlers/anon/preferences.js +0 -96
  107. package/dist/api-handlers/auth/jwks.d.ts +0 -2
  108. package/dist/api-handlers/auth/jwks.js +0 -24
  109. package/dist/api-handlers/auth/login.d.ts +0 -42
  110. package/dist/api-handlers/auth/login.js +0 -178
  111. package/dist/api-handlers/auth/refresh.d.ts +0 -74
  112. package/dist/api-handlers/auth/refresh.js +0 -635
  113. package/dist/api-handlers/auth/signout.d.ts +0 -37
  114. package/dist/api-handlers/auth/signout.js +0 -187
  115. package/dist/api-handlers/auth/status.d.ts +0 -8
  116. package/dist/api-handlers/auth/status.js +0 -26
  117. package/dist/api-handlers/auth/update-session.d.ts +0 -37
  118. package/dist/api-handlers/auth/update-session.js +0 -95
  119. package/dist/api-handlers/auth/validate.d.ts +0 -6
  120. package/dist/api-handlers/auth/validate.js +0 -43
  121. package/dist/api-handlers/auth/verify-code.d.ts +0 -43
  122. package/dist/api-handlers/auth/verify-code.js +0 -94
  123. package/dist/api-handlers/session/refresh-viability.d.ts +0 -14
  124. package/dist/api-handlers/session/refresh-viability.js +0 -39
  125. package/dist/api-handlers/session/viability.d.ts +0 -13
  126. package/dist/api-handlers/session/viability.js +0 -146
  127. package/dist/api-handlers/test/force-expire.d.ts +0 -23
  128. package/dist/api-handlers/test/force-expire.js +0 -65
  129. package/dist/auth/auth-decision.d.ts +0 -39
  130. package/dist/auth/auth-decision.js +0 -182
  131. package/dist/auth/auth-options.d.ts +0 -57
  132. package/dist/auth/auth-options.js +0 -213
  133. package/dist/auth/better-auth.d.ts +0 -82
  134. package/dist/auth/better-auth.js +0 -122
  135. package/dist/auth/callbacks/index.d.ts +0 -6
  136. package/dist/auth/callbacks/index.js +0 -12
  137. package/dist/auth/callbacks/jwt.d.ts +0 -45
  138. package/dist/auth/callbacks/jwt.js +0 -305
  139. package/dist/auth/callbacks/session.d.ts +0 -60
  140. package/dist/auth/callbacks/session.js +0 -170
  141. package/dist/auth/callbacks/signin.d.ts +0 -23
  142. package/dist/auth/callbacks/signin.js +0 -44
  143. package/dist/auth/events/index.d.ts +0 -4
  144. package/dist/auth/events/index.js +0 -8
  145. package/dist/auth/events/signout.d.ts +0 -17
  146. package/dist/auth/events/signout.js +0 -32
  147. package/dist/auth/providers/credentials.d.ts +0 -32
  148. package/dist/auth/providers/credentials.js +0 -223
  149. package/dist/auth/providers/index.d.ts +0 -5
  150. package/dist/auth/providers/index.js +0 -21
  151. package/dist/auth/providers/oauth.d.ts +0 -26
  152. package/dist/auth/providers/oauth.js +0 -105
  153. package/dist/auth/route-config.d.ts +0 -66
  154. package/dist/auth/route-config.js +0 -190
  155. package/dist/auth/types/auth-types.d.ts +0 -417
  156. package/dist/auth/types/auth-types.js +0 -53
  157. package/dist/auth/types/index.d.ts +0 -6
  158. package/dist/auth/types/index.js +0 -22
  159. package/dist/auth/unauthenticated-routes.d.ts +0 -1
  160. package/dist/auth/unauthenticated-routes.js +0 -19
  161. package/dist/auth/utils/idp-client.d.ts +0 -94
  162. package/dist/auth/utils/idp-client.js +0 -384
  163. package/dist/auth/utils/index.d.ts +0 -5
  164. package/dist/auth/utils/index.js +0 -21
  165. package/dist/auth/utils/token-utils.d.ts +0 -84
  166. package/dist/auth/utils/token-utils.js +0 -219
  167. package/dist/client/AuthContext.d.ts +0 -19
  168. package/dist/client/AuthContext.js +0 -112
  169. package/dist/client/better-auth-client.d.ts +0 -1020
  170. package/dist/client/better-auth-client.js +0 -68
  171. package/dist/client/fetch-with-auth.d.ts +0 -11
  172. package/dist/client/fetch-with-auth.js +0 -44
  173. package/dist/client/fetchWithSession.d.ts +0 -3
  174. package/dist/client/fetchWithSession.js +0 -24
  175. package/dist/client/index.d.ts +0 -9
  176. package/dist/client/index.js +0 -20
  177. package/dist/client/useAnonSession.d.ts +0 -36
  178. package/dist/client/useAnonSession.js +0 -99
  179. package/dist/components/SessionSync.d.ts +0 -13
  180. package/dist/components/SessionSync.js +0 -119
  181. package/dist/components/SignalRHealthCheck.d.ts +0 -10
  182. package/dist/components/SignalRHealthCheck.js +0 -97
  183. package/dist/components/account/MobileNavDrawer.d.ts +0 -32
  184. package/dist/components/account/MobileNavDrawer.js +0 -81
  185. package/dist/components/account/UserAvatarMenu.d.ts +0 -20
  186. package/dist/components/account/UserAvatarMenu.js +0 -88
  187. package/dist/components/account/index.d.ts +0 -9
  188. package/dist/components/account/index.js +0 -13
  189. package/dist/components/admin/AlertSettingsTab.d.ts +0 -48
  190. package/dist/components/admin/AlertSettingsTab.js +0 -351
  191. package/dist/components/admin/AnalyticsTab.d.ts +0 -22
  192. package/dist/components/admin/AnalyticsTab.js +0 -167
  193. package/dist/components/admin/DataBrowserTab.d.ts +0 -19
  194. package/dist/components/admin/DataBrowserTab.js +0 -252
  195. package/dist/components/admin/LoggingSettingsTab.d.ts +0 -73
  196. package/dist/components/admin/LoggingSettingsTab.js +0 -339
  197. package/dist/components/admin/SessionsTab.d.ts +0 -37
  198. package/dist/components/admin/SessionsTab.js +0 -165
  199. package/dist/components/admin/StatsTab.d.ts +0 -53
  200. package/dist/components/admin/StatsTab.js +0 -161
  201. package/dist/components/admin/VibeAdminContext.d.ts +0 -32
  202. package/dist/components/admin/VibeAdminContext.js +0 -38
  203. package/dist/components/admin/VibeAdminLayout.d.ts +0 -11
  204. package/dist/components/admin/VibeAdminLayout.js +0 -69
  205. package/dist/components/admin/index.d.ts +0 -29
  206. package/dist/components/admin/index.js +0 -44
  207. package/dist/components/auth/FederatedAuthSection.d.ts +0 -8
  208. package/dist/components/auth/FederatedAuthSection.js +0 -45
  209. package/dist/components/auth/ModeAwareLoginPage.d.ts +0 -10
  210. package/dist/components/auth/ModeAwareLoginPage.js +0 -42
  211. package/dist/components/auth/ModeAwareSignupPage.d.ts +0 -9
  212. package/dist/components/auth/ModeAwareSignupPage.js +0 -78
  213. package/dist/components/auth/TraditionalAuthSection.d.ts +0 -14
  214. package/dist/components/auth/TraditionalAuthSection.js +0 -20
  215. package/dist/components/recovery/CompleteStep.d.ts +0 -5
  216. package/dist/components/recovery/CompleteStep.js +0 -8
  217. package/dist/components/recovery/InitiateRecoveryStep.d.ts +0 -8
  218. package/dist/components/recovery/InitiateRecoveryStep.js +0 -20
  219. package/dist/components/recovery/SelectMethodStep.d.ts +0 -8
  220. package/dist/components/recovery/SelectMethodStep.js +0 -8
  221. package/dist/components/recovery/SetPasswordStep.d.ts +0 -6
  222. package/dist/components/recovery/SetPasswordStep.js +0 -20
  223. package/dist/components/recovery/VerifyCodeStep.d.ts +0 -10
  224. package/dist/components/recovery/VerifyCodeStep.js +0 -24
  225. package/dist/components/reserved/ReservedRecoveryWarning.d.ts +0 -38
  226. package/dist/components/reserved/ReservedRecoveryWarning.js +0 -92
  227. package/dist/components/reserved/ReservedStatusBox.d.ts +0 -30
  228. package/dist/components/reserved/ReservedStatusBox.js +0 -71
  229. package/dist/components/ui/BetaBadge.d.ts +0 -29
  230. package/dist/components/ui/BetaBadge.js +0 -38
  231. package/dist/components/ui/Footer.d.ts +0 -37
  232. package/dist/components/ui/Footer.js +0 -41
  233. package/dist/config/env.d.ts +0 -66
  234. package/dist/config/env.js +0 -57
  235. package/dist/config/logger.d.ts +0 -57
  236. package/dist/config/logger.js +0 -73
  237. package/dist/config/logging-config.d.ts +0 -30
  238. package/dist/config/logging-config.js +0 -122
  239. package/dist/config/unauthenticated-routes.d.ts +0 -17
  240. package/dist/config/unauthenticated-routes.js +0 -24
  241. package/dist/config/vibe-log-transport.d.ts +0 -81
  242. package/dist/config/vibe-log-transport.js +0 -212
  243. package/dist/edge/internal-api-url.d.ts +0 -53
  244. package/dist/edge/internal-api-url.js +0 -63
  245. package/dist/edge/middleware.d.ts +0 -14
  246. package/dist/edge/middleware.js +0 -32
  247. package/dist/hooks/useAuth.d.ts +0 -23
  248. package/dist/hooks/useAuth.js +0 -81
  249. package/dist/hooks/useAuthSettings.d.ts +0 -59
  250. package/dist/hooks/useAuthSettings.js +0 -93
  251. package/dist/hooks/useAvailableProviders.d.ts +0 -45
  252. package/dist/hooks/useAvailableProviders.js +0 -108
  253. package/dist/hooks/usePasswordValidation.d.ts +0 -27
  254. package/dist/hooks/usePasswordValidation.js +0 -102
  255. package/dist/hooks/useProfile.d.ts +0 -15
  256. package/dist/hooks/useProfile.js +0 -59
  257. package/dist/hooks/usePublicAuthSettings.d.ts +0 -56
  258. package/dist/hooks/usePublicAuthSettings.js +0 -131
  259. package/dist/hooks/useSessionExpiration.d.ts +0 -57
  260. package/dist/hooks/useSessionExpiration.js +0 -72
  261. package/dist/hooks/useViabilitySession.d.ts +0 -75
  262. package/dist/hooks/useViabilitySession.js +0 -268
  263. package/dist/index.d.ts +0 -12
  264. package/dist/index.js +0 -55
  265. package/dist/lib/anon-session.d.ts +0 -74
  266. package/dist/lib/anon-session.js +0 -169
  267. package/dist/lib/api-handler.d.ts +0 -123
  268. package/dist/lib/api-handler.js +0 -478
  269. package/dist/lib/app-slug.d.ts +0 -95
  270. package/dist/lib/app-slug.js +0 -172
  271. package/dist/lib/demo-mode.d.ts +0 -6
  272. package/dist/lib/demo-mode.js +0 -16
  273. package/dist/lib/geolocation.d.ts +0 -64
  274. package/dist/lib/geolocation.js +0 -235
  275. package/dist/lib/idp-client-config.d.ts +0 -75
  276. package/dist/lib/idp-client-config.js +0 -425
  277. package/dist/lib/idp-fetch.d.ts +0 -14
  278. package/dist/lib/idp-fetch.js +0 -91
  279. package/dist/lib/internal-api.d.ts +0 -87
  280. package/dist/lib/internal-api.js +0 -122
  281. package/dist/lib/jwt-decode-client.d.ts +0 -10
  282. package/dist/lib/jwt-decode-client.js +0 -46
  283. package/dist/lib/jwt-decode.d.ts +0 -48
  284. package/dist/lib/jwt-decode.js +0 -57
  285. package/dist/lib/nextauth-secret.d.ts +0 -10
  286. package/dist/lib/nextauth-secret.js +0 -100
  287. package/dist/lib/rate-limit-service.d.ts +0 -23
  288. package/dist/lib/rate-limit-service.js +0 -6
  289. package/dist/lib/redis.d.ts +0 -5
  290. package/dist/lib/redis.js +0 -28
  291. package/dist/lib/refresh-token-validator.d.ts +0 -13
  292. package/dist/lib/refresh-token-validator.js +0 -117
  293. package/dist/lib/roles.d.ts +0 -145
  294. package/dist/lib/roles.js +0 -168
  295. package/dist/lib/secret-validation.d.ts +0 -4
  296. package/dist/lib/secret-validation.js +0 -14
  297. package/dist/lib/session-store.d.ts +0 -170
  298. package/dist/lib/session-store.js +0 -545
  299. package/dist/lib/session.d.ts +0 -21
  300. package/dist/lib/session.js +0 -26
  301. package/dist/lib/site-logger.d.ts +0 -214
  302. package/dist/lib/site-logger.js +0 -210
  303. package/dist/lib/standardized-client-api.d.ts +0 -161
  304. package/dist/lib/standardized-client-api.js +0 -786
  305. package/dist/lib/startup-init.d.ts +0 -40
  306. package/dist/lib/startup-init.js +0 -261
  307. package/dist/lib/test-aware-get-token.d.ts +0 -2
  308. package/dist/lib/test-aware-get-token.js +0 -81
  309. package/dist/lib/token-expiry.d.ts +0 -14
  310. package/dist/lib/token-expiry.js +0 -39
  311. package/dist/lib/token-lifecycle.d.ts +0 -52
  312. package/dist/lib/token-lifecycle.js +0 -398
  313. package/dist/lib/types/api-responses.d.ts +0 -128
  314. package/dist/lib/types/api-responses.js +0 -171
  315. package/dist/lib/user-agent-parser.d.ts +0 -50
  316. package/dist/lib/user-agent-parser.js +0 -220
  317. package/dist/logging/api/admin-analytics.d.ts +0 -3
  318. package/dist/logging/api/admin-analytics.js +0 -45
  319. package/dist/logging/api/audit-log.d.ts +0 -3
  320. package/dist/logging/api/audit-log.js +0 -52
  321. package/dist/logging/components/AdminAnalyticsLayout.d.ts +0 -10
  322. package/dist/logging/components/AdminAnalyticsLayout.js +0 -11
  323. package/dist/logging/components/AuditLogViewer.d.ts +0 -7
  324. package/dist/logging/components/AuditLogViewer.js +0 -51
  325. package/dist/logging/components/ErrorMetricsCard.d.ts +0 -7
  326. package/dist/logging/components/ErrorMetricsCard.js +0 -16
  327. package/dist/logging/components/HealthMetricsCard.d.ts +0 -7
  328. package/dist/logging/components/HealthMetricsCard.js +0 -19
  329. package/dist/logging/hooks/useAdminAnalytics.d.ts +0 -24
  330. package/dist/logging/hooks/useAdminAnalytics.js +0 -22
  331. package/dist/logging/hooks/useAuditLog.d.ts +0 -6
  332. package/dist/logging/hooks/useAuditLog.js +0 -25
  333. package/dist/logging/hooks/useErrorMetrics.d.ts +0 -6
  334. package/dist/logging/hooks/useErrorMetrics.js +0 -38
  335. package/dist/logging/hooks/useHealthMetrics.d.ts +0 -6
  336. package/dist/logging/hooks/useHealthMetrics.js +0 -41
  337. package/dist/logging/index.d.ts +0 -11
  338. package/dist/logging/index.js +0 -40
  339. package/dist/logging/types/analytics.d.ts +0 -68
  340. package/dist/logging/types/analytics.js +0 -3
  341. package/dist/logging/types/audit.d.ts +0 -29
  342. package/dist/logging/types/audit.js +0 -2
  343. package/dist/logging/types/index.d.ts +0 -2
  344. package/dist/logging/types/index.js +0 -19
  345. package/dist/middleware/auth-decision.d.ts +0 -33
  346. package/dist/middleware/auth-decision.js +0 -65
  347. package/dist/middleware/create-middleware.d.ts +0 -102
  348. package/dist/middleware/create-middleware.js +0 -469
  349. package/dist/middleware/rbac-check.d.ts +0 -51
  350. package/dist/middleware/rbac-check.js +0 -219
  351. package/dist/middleware/twofa-presets.d.ts +0 -134
  352. package/dist/middleware/twofa-presets.js +0 -175
  353. package/dist/models/DecodedAccessToken.d.ts +0 -17
  354. package/dist/models/DecodedAccessToken.js +0 -2
  355. package/dist/models/SessionModel.d.ts +0 -122
  356. package/dist/models/SessionModel.js +0 -136
  357. package/dist/pages/admin-login/page.d.ts +0 -31
  358. package/dist/pages/admin-login/page.js +0 -83
  359. package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.d.ts +0 -18
  360. package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.js +0 -276
  361. package/dist/pages/admin-page-permissions/index.d.ts +0 -6
  362. package/dist/pages/admin-page-permissions/index.js +0 -13
  363. package/dist/pages/admin-roles/RolesAdminPage.d.ts +0 -16
  364. package/dist/pages/admin-roles/RolesAdminPage.js +0 -261
  365. package/dist/pages/admin-roles/index.d.ts +0 -8
  366. package/dist/pages/admin-roles/index.js +0 -15
  367. package/dist/pages/admin-roles/modals.d.ts +0 -72
  368. package/dist/pages/admin-roles/modals.js +0 -154
  369. package/dist/pages/client-admin/ClientSiteAdminPage.d.ts +0 -79
  370. package/dist/pages/client-admin/ClientSiteAdminPage.js +0 -177
  371. package/dist/pages/client-admin/index.d.ts +0 -32
  372. package/dist/pages/client-admin/index.js +0 -37
  373. package/dist/pages/coming-soon/page.d.ts +0 -8
  374. package/dist/pages/coming-soon/page.js +0 -28
  375. package/dist/pages/login/page.d.ts +0 -22
  376. package/dist/pages/login/page.js +0 -239
  377. package/dist/pages/profile/EnhancedProfilePage.d.ts +0 -13
  378. package/dist/pages/profile/EnhancedProfilePage.js +0 -150
  379. package/dist/pages/profile/index.d.ts +0 -8
  380. package/dist/pages/profile/index.js +0 -16
  381. package/dist/pages/profile/page.d.ts +0 -19
  382. package/dist/pages/profile/page.js +0 -47
  383. package/dist/pages/profile/profile-patch.d.ts +0 -1
  384. package/dist/pages/profile/profile-patch.js +0 -281
  385. package/dist/pages/recovery/page.d.ts +0 -1
  386. package/dist/pages/recovery/page.js +0 -142
  387. package/dist/pages/roles/MyRolesPage.d.ts +0 -24
  388. package/dist/pages/roles/MyRolesPage.js +0 -71
  389. package/dist/pages/roles/components.d.ts +0 -63
  390. package/dist/pages/roles/components.js +0 -108
  391. package/dist/pages/roles/index.d.ts +0 -8
  392. package/dist/pages/roles/index.js +0 -19
  393. package/dist/pages/security/EnhancedSecurityPage.d.ts +0 -14
  394. package/dist/pages/security/EnhancedSecurityPage.js +0 -248
  395. package/dist/pages/security/index.d.ts +0 -8
  396. package/dist/pages/security/index.js +0 -16
  397. package/dist/pages/security/page.d.ts +0 -21
  398. package/dist/pages/security/page.js +0 -212
  399. package/dist/pages/security/security-patch.d.ts +0 -1
  400. package/dist/pages/security/security-patch.js +0 -302
  401. package/dist/pages/settings/EnhancedSettingsPage.d.ts +0 -46
  402. package/dist/pages/settings/EnhancedSettingsPage.js +0 -231
  403. package/dist/pages/settings/index.d.ts +0 -8
  404. package/dist/pages/settings/index.js +0 -16
  405. package/dist/pages/settings/page.d.ts +0 -7
  406. package/dist/pages/settings/page.js +0 -26
  407. package/dist/pages/showcase/ShowcasePage.d.ts +0 -13
  408. package/dist/pages/showcase/ShowcasePage.js +0 -140
  409. package/dist/pages/showcase/index.d.ts +0 -12
  410. package/dist/pages/showcase/index.js +0 -17
  411. package/dist/pages/test-env/EmergencyLogoutPage.d.ts +0 -14
  412. package/dist/pages/test-env/EmergencyLogoutPage.js +0 -98
  413. package/dist/pages/test-env/JwtInspectPage.d.ts +0 -14
  414. package/dist/pages/test-env/JwtInspectPage.js +0 -114
  415. package/dist/pages/test-env/RefreshTokenPage.d.ts +0 -15
  416. package/dist/pages/test-env/RefreshTokenPage.js +0 -91
  417. package/dist/pages/test-env/TestEnvPage.d.ts +0 -13
  418. package/dist/pages/test-env/TestEnvPage.js +0 -49
  419. package/dist/pages/test-env/index.d.ts +0 -24
  420. package/dist/pages/test-env/index.js +0 -32
  421. package/dist/pages/verify-code/page.d.ts +0 -30
  422. package/dist/pages/verify-code/page.js +0 -408
  423. package/dist/routes/account/index.d.ts +0 -28
  424. package/dist/routes/account/index.js +0 -71
  425. package/dist/routes/account/masked-info.d.ts +0 -33
  426. package/dist/routes/account/masked-info.js +0 -39
  427. package/dist/routes/account/send-code.d.ts +0 -37
  428. package/dist/routes/account/send-code.js +0 -42
  429. package/dist/routes/account/update-phone.d.ts +0 -13
  430. package/dist/routes/account/update-phone.js +0 -17
  431. package/dist/routes/account/verify-email.d.ts +0 -38
  432. package/dist/routes/account/verify-email.js +0 -43
  433. package/dist/routes/account/verify-sms.d.ts +0 -38
  434. package/dist/routes/account/verify-sms.js +0 -43
  435. package/dist/routes/auth/index.d.ts +0 -19
  436. package/dist/routes/auth/index.js +0 -64
  437. package/dist/routes/auth/logout.d.ts +0 -31
  438. package/dist/routes/auth/logout.js +0 -113
  439. package/dist/routes/auth/nextauth.d.ts +0 -19
  440. package/dist/routes/auth/nextauth.js +0 -72
  441. package/dist/routes/auth/refresh.d.ts +0 -30
  442. package/dist/routes/auth/refresh.js +0 -51
  443. package/dist/routes/auth/session.d.ts +0 -43
  444. package/dist/routes/auth/session.js +0 -179
  445. package/dist/routes/auth/settings.d.ts +0 -25
  446. package/dist/routes/auth/settings.js +0 -55
  447. package/dist/routes/auth/viability.d.ts +0 -52
  448. package/dist/routes/auth/viability.js +0 -201
  449. package/dist/routes/index.d.ts +0 -12
  450. package/dist/routes/index.js +0 -54
  451. package/dist/routes/session/index.d.ts +0 -6
  452. package/dist/routes/session/index.js +0 -10
  453. package/dist/routes/session/refresh-viability.d.ts +0 -16
  454. package/dist/routes/session/refresh-viability.js +0 -20
  455. package/dist/server/auth-guard.d.ts +0 -46
  456. package/dist/server/auth-guard.js +0 -128
  457. package/dist/server/decode-session.d.ts +0 -30
  458. package/dist/server/decode-session.js +0 -78
  459. package/dist/server/slim-middleware.d.ts +0 -23
  460. package/dist/server/slim-middleware.js +0 -89
  461. package/dist/server/with-auth.d.ts +0 -33
  462. package/dist/server/with-auth.js +0 -59
  463. package/dist/services/signalrActivityService.d.ts +0 -44
  464. package/dist/services/signalrActivityService.js +0 -257
  465. package/dist/stores/authStore.d.ts +0 -154
  466. package/dist/stores/authStore.js +0 -1531
  467. package/dist/theme/ThemeProvider.d.ts +0 -14
  468. package/dist/theme/ThemeProvider.js +0 -28
  469. package/dist/theme/default.d.ts +0 -8
  470. package/dist/theme/default.js +0 -33
  471. package/dist/theme/index.d.ts +0 -15
  472. package/dist/theme/index.js +0 -25
  473. package/dist/theme/types.d.ts +0 -56
  474. package/dist/theme/types.js +0 -8
  475. package/dist/theme/useTheme.d.ts +0 -60
  476. package/dist/theme/useTheme.js +0 -63
  477. package/dist/theme/utils.d.ts +0 -13
  478. package/dist/theme/utils.js +0 -39
  479. package/dist/types/api.d.ts +0 -134
  480. package/dist/types/api.js +0 -44
  481. package/dist/types/auth.d.ts +0 -19
  482. package/dist/types/auth.js +0 -2
  483. package/dist/types/logging.d.ts +0 -42
  484. package/dist/types/logging.js +0 -2
  485. package/dist/types/recovery.d.ts +0 -48
  486. package/dist/types/recovery.js +0 -2
  487. package/dist/types/security.d.ts +0 -1
  488. package/dist/types/security.js +0 -2
  489. package/dist/utils/api.d.ts +0 -85
  490. package/dist/utils/api.js +0 -287
  491. package/dist/utils/circuitBreaker.d.ts +0 -43
  492. package/dist/utils/circuitBreaker.js +0 -91
  493. package/dist/utils/error-message.d.ts +0 -1
  494. package/dist/utils/error-message.js +0 -103
  495. package/dist/utils/layout/reservedSpace.d.ts +0 -59
  496. package/dist/utils/layout/reservedSpace.js +0 -102
  497. package/dist/utils/logout.d.ts +0 -14
  498. package/dist/utils/logout.js +0 -32
  499. package/dist/vibe/client.d.ts +0 -261
  500. package/dist/vibe/client.js +0 -445
  501. package/dist/vibe/enterprise-auth.d.ts +0 -106
  502. package/dist/vibe/enterprise-auth.js +0 -173
  503. package/dist/vibe/errors.d.ts +0 -83
  504. package/dist/vibe/errors.js +0 -146
  505. package/dist/vibe/generic.d.ts +0 -234
  506. package/dist/vibe/generic.js +0 -369
  507. package/dist/vibe/hooks/index.d.ts +0 -169
  508. package/dist/vibe/hooks/index.js +0 -252
  509. package/dist/vibe/index.d.ts +0 -25
  510. package/dist/vibe/index.js +0 -72
  511. package/dist/vibe/sessions.d.ts +0 -161
  512. package/dist/vibe/sessions.js +0 -391
  513. package/dist/vibe/types.d.ts +0 -353
  514. package/dist/vibe/types.js +0 -315
  515. package/src/auth/auth-options.ts +0 -237
  516. package/src/auth/callbacks/index.ts +0 -7
  517. package/src/auth/callbacks/jwt.ts +0 -382
  518. package/src/auth/callbacks/session.ts +0 -243
  519. package/src/auth/callbacks/signin.ts +0 -56
  520. package/src/auth/events/index.ts +0 -5
  521. package/src/auth/events/signout.ts +0 -33
  522. package/src/auth/providers/credentials.ts +0 -256
  523. package/src/auth/providers/index.ts +0 -6
  524. package/src/auth/providers/oauth.ts +0 -114
  525. package/src/lib/nextauth-secret.ts +0 -121
  526. package/src/types/next-auth.d.ts +0 -15
@@ -1,122 +0,0 @@
1
- "use strict";
2
- /**
3
- * Centralized internal API helper for the app to call ITSELF.
4
- *
5
- * IMPORTANT: All calls from the Next.js server to its own API routes MUST use
6
- * these functions. Never use req.url, req.nextUrl.origin, or construct URLs
7
- * from the incoming request.
8
- *
9
- * WHY HTTP IS REQUIRED (not optional):
10
- * - This is the app calling its OWN backend within the same pod/container
11
- * - NextAuth cookies are encrypted based on request protocol
12
- * - TLS is terminated at ingress, so the pod receives HTTP internally
13
- * - Using HTTPS here causes cookie decryption failures and 403 errors
14
- * - This is NOT about "K8s traffic doesn't need TLS" - it's about
15
- * protocol consistency for cookie/session encryption
16
- *
17
- * Environment:
18
- * - INTERNAL_API_URL: Required in production (e.g., http://service.namespace.svc.cluster.local:80)
19
- * - Falls back to http://localhost:3200 in development only
20
- */
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.getInternalApiUrl = getInternalApiUrl;
23
- exports.internalFetch = internalFetch;
24
- exports.internalRefresh = internalRefresh;
25
- /**
26
- * Get the internal API base URL for the app to call itself.
27
- *
28
- * @throws Error in production if INTERNAL_API_URL is not set
29
- * @returns The base URL (no trailing slash)
30
- */
31
- function getInternalApiUrl() {
32
- const url = process.env.INTERNAL_API_URL;
33
- if (url)
34
- return url.replace(/\/$/, ''); // strip trailing slash
35
- if (process.env.NODE_ENV !== 'production') {
36
- return 'http://localhost:3200';
37
- }
38
- throw new Error('[INTERNAL_API_URL] FATAL: INTERNAL_API_URL environment variable is REQUIRED in production. ' +
39
- 'This is for the app to call ITSELF. MUST be HTTP (not HTTPS) due to cookie encryption. ' +
40
- 'Set to http://service.namespace.svc.cluster.local:80');
41
- }
42
- /**
43
- * Make a fetch call to an internal API route (app calling itself).
44
- *
45
- * @param path - The API path (e.g., '/api/auth/refresh')
46
- * @param options - Fetch options
47
- * @returns The fetch result with parsed data
48
- *
49
- * @example
50
- * ```ts
51
- * // Simple GET
52
- * const result = await internalFetch('/api/health');
53
- *
54
- * // POST with session
55
- * const result = await internalFetch('/api/auth/refresh', {
56
- * method: 'POST',
57
- * cookie: req.headers.get('cookie') || '',
58
- * sessionToken: token.redisSessionId,
59
- * body: JSON.stringify({ refresh_token: refreshToken }),
60
- * });
61
- * ```
62
- */
63
- async function internalFetch(path, options = {}) {
64
- const { headers: extraHeaders = {}, cookie, sessionToken, requestId, parseJson = true, ...fetchOptions } = options;
65
- const baseUrl = getInternalApiUrl();
66
- const url = `${baseUrl}${path.startsWith('/') ? path : `/${path}`}`;
67
- // Build headers
68
- const headers = {
69
- 'Accept': 'application/json',
70
- 'Content-Type': 'application/json',
71
- ...extraHeaders,
72
- };
73
- if (cookie) {
74
- headers['Cookie'] = cookie;
75
- }
76
- if (sessionToken) {
77
- headers['X-Session-Token'] = sessionToken;
78
- }
79
- if (requestId) {
80
- headers['X-Request-Id'] = requestId;
81
- }
82
- const response = await fetch(url, {
83
- ...fetchOptions,
84
- headers,
85
- });
86
- let data = null;
87
- if (parseJson) {
88
- try {
89
- data = await response.json();
90
- }
91
- catch {
92
- data = null;
93
- }
94
- }
95
- return {
96
- ok: response.ok,
97
- status: response.status,
98
- statusText: response.statusText,
99
- data,
100
- response,
101
- };
102
- }
103
- /**
104
- * Trigger a token refresh via the internal API.
105
- * This is a convenience wrapper for the common refresh pattern.
106
- *
107
- * @param cookie - The cookie header from the incoming request
108
- * @param sessionToken - The session token
109
- * @param refreshToken - Optional refresh token to include in body
110
- * @param requestId - Optional request ID for tracing
111
- * @returns Whether the refresh was successful
112
- */
113
- async function internalRefresh(cookie, sessionToken, refreshToken, requestId) {
114
- const result = await internalFetch('/api/auth/refresh', {
115
- method: 'POST',
116
- cookie,
117
- sessionToken,
118
- requestId,
119
- body: refreshToken ? JSON.stringify({ refresh_token: refreshToken }) : undefined,
120
- });
121
- return { ok: result.ok, status: result.status };
122
- }
@@ -1,10 +0,0 @@
1
- /**
2
- * Client-safe JWT decode (no Node.js dependencies)
3
- * This is a lightweight version for browser usage
4
- */
5
- /**
6
- * Simple JWT decode for client-side use (no signature verification)
7
- * @param token - JWT token string
8
- * @returns Decoded payload or null if invalid
9
- */
10
- export declare function jwtDecode<T = any>(token: string): T | null;
@@ -1,46 +0,0 @@
1
- "use strict";
2
- /**
3
- * Client-safe JWT decode (no Node.js dependencies)
4
- * This is a lightweight version for browser usage
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.jwtDecode = jwtDecode;
8
- // Decode base64url
9
- function base64urlDecode(base64url) {
10
- try {
11
- // Convert base64url to base64
12
- let base64 = base64url.replace(/-/g, '+').replace(/_/g, '/');
13
- // Add padding if needed
14
- while (base64.length % 4) {
15
- base64 += '=';
16
- }
17
- return atob(base64);
18
- }
19
- catch (e) {
20
- throw new Error('Invalid base64url encoding');
21
- }
22
- }
23
- /**
24
- * Simple JWT decode for client-side use (no signature verification)
25
- * @param token - JWT token string
26
- * @returns Decoded payload or null if invalid
27
- */
28
- function jwtDecode(token) {
29
- if (!token)
30
- return null;
31
- try {
32
- const parts = token.split('.');
33
- if (parts.length < 2) {
34
- console.error('[JWT] Invalid token format');
35
- return null;
36
- }
37
- const payload = parts[1];
38
- const decoded = base64urlDecode(payload);
39
- const parsedPayload = JSON.parse(decoded);
40
- return parsedPayload;
41
- }
42
- catch (e) {
43
- console.error('[JWT] Decode failed:', e instanceof Error ? e.message : 'Unknown error');
44
- return null;
45
- }
46
- }
@@ -1,48 +0,0 @@
1
- export interface JwtPayload {
2
- iss?: string;
3
- sub?: string;
4
- aud?: string[] | string;
5
- exp?: number;
6
- nbf?: number;
7
- iat?: number;
8
- jti?: string;
9
- }
10
- /**
11
- * JWT Header structure.
12
- * Contains metadata about the token including the signing key ID.
13
- */
14
- export interface JwtHeader {
15
- /** Algorithm used to sign the token (e.g., 'RS256', 'HS256') */
16
- alg: string;
17
- /** Token type (typically 'JWT') */
18
- typ?: string;
19
- /** Key ID - identifies which key was used to sign this token */
20
- kid?: string;
21
- /** Content type */
22
- cty?: string;
23
- }
24
- /**
25
- * Decode JWT payload (standard claims).
26
- * This is a thin wrapper around jwt-decode library.
27
- */
28
- export declare function jwtDecode<T = JwtPayload>(token: string): T;
29
- /**
30
- * Decode JWT header to extract kid, alg, and other header claims.
31
- *
32
- * The JWT header contains critical information:
33
- * - kid: Key ID used to sign the token (needed for key governance)
34
- * - alg: Algorithm used for signing
35
- * - typ: Token type
36
- *
37
- * @param token - The JWT token string
38
- * @returns Decoded header or null if decoding fails
39
- */
40
- export declare function decodeJwtHeader(token: string): JwtHeader | null;
41
- /**
42
- * Extract just the kid (Key ID) from a JWT token.
43
- * Convenience function for when you only need the key ID.
44
- *
45
- * @param token - The JWT token string
46
- * @returns The kid value or undefined if not present/decodable
47
- */
48
- export declare function extractKidFromToken(token: string): string | undefined;
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.jwtDecode = jwtDecode;
4
- exports.decodeJwtHeader = decodeJwtHeader;
5
- exports.extractKidFromToken = extractKidFromToken;
6
- const jwt_decode_1 = require("jwt-decode");
7
- /**
8
- * Decode JWT payload (standard claims).
9
- * This is a thin wrapper around jwt-decode library.
10
- */
11
- function jwtDecode(token) {
12
- return (0, jwt_decode_1.jwtDecode)(token);
13
- }
14
- /**
15
- * Decode JWT header to extract kid, alg, and other header claims.
16
- *
17
- * The JWT header contains critical information:
18
- * - kid: Key ID used to sign the token (needed for key governance)
19
- * - alg: Algorithm used for signing
20
- * - typ: Token type
21
- *
22
- * @param token - The JWT token string
23
- * @returns Decoded header or null if decoding fails
24
- */
25
- function decodeJwtHeader(token) {
26
- try {
27
- if (!token || typeof token !== 'string') {
28
- return null;
29
- }
30
- const parts = token.split('.');
31
- if (parts.length !== 3) {
32
- console.warn('[JWT_DECODE] Invalid JWT structure - expected 3 parts, got', parts.length);
33
- return null;
34
- }
35
- // Decode base64url header (part 0)
36
- const headerB64 = parts[0].replace(/-/g, '+').replace(/_/g, '/');
37
- const headerJson = typeof atob !== 'undefined'
38
- ? atob(headerB64)
39
- : Buffer.from(headerB64, 'base64').toString('utf-8');
40
- return JSON.parse(headerJson);
41
- }
42
- catch (error) {
43
- console.error('[JWT_DECODE] Failed to decode JWT header:', error);
44
- return null;
45
- }
46
- }
47
- /**
48
- * Extract just the kid (Key ID) from a JWT token.
49
- * Convenience function for when you only need the key ID.
50
- *
51
- * @param token - The JWT token string
52
- * @returns The kid value or undefined if not present/decodable
53
- */
54
- function extractKidFromToken(token) {
55
- const header = decodeJwtHeader(token);
56
- return header?.kid;
57
- }
@@ -1,10 +0,0 @@
1
- import 'server-only';
2
- /**
3
- * Resolve the NextAuth secret (server-only).
4
- *
5
- * Priority:
6
- * 1) Use process.env.NEXTAUTH_SECRET if present (allows overrides/production)
7
- * 2) Fetch from IDP broker endpoint - IDP handles all Key Vault/signing
8
- * 3) Cache result in-memory and set process.env.NEXTAUTH_SECRET for subsequent calls
9
- */
10
- export declare function resolveNextAuthSecret(): Promise<string>;
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveNextAuthSecret = resolveNextAuthSecret;
4
- require("server-only");
5
- const secret_validation_1 = require("./secret-validation");
6
- const crypto_1 = require("crypto");
7
- let cachedSecret = null;
8
- let lastFetchedAt = 0;
9
- /**
10
- * Resolve the NextAuth secret (server-only).
11
- *
12
- * Priority:
13
- * 1) Use process.env.NEXTAUTH_SECRET if present (allows overrides/production)
14
- * 2) Fetch from IDP broker endpoint - IDP handles all Key Vault/signing
15
- * 3) Cache result in-memory and set process.env.NEXTAUTH_SECRET for subsequent calls
16
- */
17
- async function resolveNextAuthSecret() {
18
- // Check if already in environment
19
- if (process.env.NEXTAUTH_SECRET && process.env.NEXTAUTH_SECRET.trim() !== '') {
20
- // Silent - already configured
21
- return process.env.NEXTAUTH_SECRET;
22
- }
23
- // Check if cached and fresh (within 5 minutes)
24
- if (cachedSecret && Date.now() - lastFetchedAt < 5 * 60 * 1000) {
25
- return cachedSecret;
26
- }
27
- // Broker mode: fetch from IDP (IDP handles all Key Vault/signing)
28
- const base = process.env.IDP_URL;
29
- if (!base)
30
- throw new Error('IDP_URL environment variable is required');
31
- const clientIdStr = process.env.CLIENT_ID;
32
- if (!clientIdStr || clientIdStr.trim() === '')
33
- throw new Error('CLIENT_ID is required (e.g., "ideal_resume_website")');
34
- // Step 1: Request IDP to sign a client assertion (IDP has the keys, not us)
35
- const signingUrl = new URL(`${base.replace(/\/$/, '')}/api/ExternalAuth/sign-client-assertion`);
36
- const signingPayload = {
37
- issuer: clientIdStr,
38
- subject: clientIdStr,
39
- audience: 'urn:payez:externalauth:nextauthsecret',
40
- expires_in: 60,
41
- };
42
- const signingResp = await fetch(signingUrl.toString(), {
43
- method: 'POST',
44
- headers: {
45
- 'Accept': 'application/json',
46
- 'Content-Type': 'application/json',
47
- 'X-Client-Id': clientIdStr,
48
- 'X-Correlation-Id': (0, crypto_1.randomUUID)().replace(/-/g, ''),
49
- },
50
- body: JSON.stringify(signingPayload),
51
- cache: 'no-store'
52
- });
53
- if (!signingResp.ok) {
54
- const txt = await signingResp.text().catch(() => 'Unknown error');
55
- throw new Error(`Failed to sign client assertion: ${signingResp.status} ${signingResp.statusText} - ${txt}`);
56
- }
57
- const signingBody = await signingResp.json().catch(() => ({}));
58
- const client_assertion = (signingBody?.data?.client_assertion ??
59
- signingBody?.data?.clientAssertion ??
60
- signingBody?.client_assertion ??
61
- signingBody?.clientAssertion ??
62
- signingBody?.data?.ClientAssertion ??
63
- signingBody?.ClientAssertion);
64
- if (!client_assertion || typeof client_assertion !== 'string') {
65
- throw new Error('IDP did not return a valid signed client assertion');
66
- }
67
- // Step 2: Use the signed assertion to fetch the NextAuth secret
68
- const proxyUrl = new URL(`${base.replace(/\/$/, '')}/api/ExternalAuth/next-auth/secret`);
69
- const proxyResp = await fetch(proxyUrl.toString(), {
70
- method: 'POST',
71
- headers: {
72
- 'Accept': 'application/json',
73
- 'Content-Type': 'application/json',
74
- 'X-Client-Id': clientIdStr,
75
- 'X-Correlation-Id': (0, crypto_1.randomUUID)().replace(/-/g, ''),
76
- },
77
- body: JSON.stringify({ client_assertion }),
78
- cache: 'no-store'
79
- });
80
- if (!proxyResp.ok) {
81
- const txt = await proxyResp.text().catch(() => 'Unknown error');
82
- throw new Error(`Proxy error: ${proxyResp.status} ${proxyResp.statusText} - ${txt}`);
83
- }
84
- const proxyBody = await proxyResp.json().catch(() => ({}));
85
- const secret = (proxyBody?.data?.secret ?? proxyBody?.secret);
86
- const configuration = (proxyBody?.data?.configuration ?? proxyBody?.configuration);
87
- // Configuration is available but we don't log it verbosely
88
- if (!secret || typeof secret !== 'string') {
89
- throw new Error('Proxy did not return a valid NextAuth secret');
90
- }
91
- const validation = (0, secret_validation_1.validateNextAuthSecret)(secret);
92
- if (!validation.valid) {
93
- throw new Error(`Fetched NextAuth secret failed validation: ${validation.reason}`);
94
- }
95
- cachedSecret = secret;
96
- lastFetchedAt = Date.now();
97
- process.env.NEXTAUTH_SECRET = secret;
98
- console.log('[NEXTAUTH-SECRET] Resolved from IDP (length:', secret.length + ')');
99
- return secret;
100
- }
@@ -1,23 +0,0 @@
1
- export interface RateLimitRule {
2
- endpoint: string;
3
- period: string;
4
- limit: number;
5
- }
6
- export interface RateLimitResult {
7
- isAllowed: boolean;
8
- requestCount: number;
9
- limit: number;
10
- retryAfterSeconds?: number;
11
- failedAttempts?: number;
12
- }
13
- export declare function createPayEzRateLimitResponse(retryAfterSeconds: number, remainingAttempts?: number): {
14
- success: boolean;
15
- message: string;
16
- user_info: null;
17
- errors: {
18
- code: string;
19
- message: string;
20
- resolution: string;
21
- remainingAttempts: number;
22
- }[];
23
- };
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPayEzRateLimitResponse = createPayEzRateLimitResponse;
4
- function createPayEzRateLimitResponse(retryAfterSeconds, remainingAttempts = 0) {
5
- return { success: false, message: 'Too many failed attempts', user_info: null, errors: [{ code: 'RateLimitExceeded', message: 'Too many failed authentication attempts', resolution: `Please try again in ${retryAfterSeconds} seconds`, remainingAttempts }] };
6
- }
@@ -1,5 +0,0 @@
1
- import Redis from 'ioredis';
2
- export declare function getRedis(): Redis;
3
- declare const redis: Redis;
4
- export { redis };
5
- export default redis;
package/dist/lib/redis.js DELETED
@@ -1,28 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.redis = void 0;
7
- exports.getRedis = getRedis;
8
- // E:\Repos\PayEz-Next-MVP\packages\next-mvp\src\lib\redis.ts
9
- const ioredis_1 = __importDefault(require("ioredis"));
10
- let client = null;
11
- function createClient() {
12
- const url = process.env.REDIS_URL;
13
- if (url && url.trim() !== '') {
14
- // Use a standard configuration for better Docker compatibility
15
- return new ioredis_1.default(url);
16
- }
17
- // No REDIS_URL set, create a client that will fail fast.
18
- return new ioredis_1.default({ lazyConnect: true });
19
- }
20
- function getRedis() {
21
- if (!client) {
22
- client = createClient();
23
- }
24
- return client;
25
- }
26
- const redis = getRedis();
27
- exports.redis = redis;
28
- exports.default = redis;
@@ -1,13 +0,0 @@
1
- export declare function isRefreshTokenValid(token: string): boolean;
2
- export declare function isRefreshTokenExpiring(token: string, bufferMinutes?: number): boolean;
3
- export declare function getRefreshTokenExpiration(token: string): number | null;
4
- export declare function getRefreshTokenTimeRemaining(token: string): number | null;
5
- export interface RefreshViabilityCheck {
6
- canRefresh: boolean;
7
- reason: 'valid_refresh_token' | 'no_refresh_token' | 'refresh_token_expired' | 'session_missing';
8
- timeRemaining?: number;
9
- expiresAt?: string;
10
- accessTokenExpired?: boolean;
11
- accessTokenTimeRemaining?: number;
12
- }
13
- export declare function checkRefreshViability(sessionData: any): RefreshViabilityCheck;
@@ -1,117 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isRefreshTokenValid = isRefreshTokenValid;
4
- exports.isRefreshTokenExpiring = isRefreshTokenExpiring;
5
- exports.getRefreshTokenExpiration = getRefreshTokenExpiration;
6
- exports.getRefreshTokenTimeRemaining = getRefreshTokenTimeRemaining;
7
- exports.checkRefreshViability = checkRefreshViability;
8
- const jwt_decode_1 = require("./jwt-decode");
9
- const logger_1 = require("../config/logger");
10
- function isRefreshTokenValid(token) {
11
- if (!token)
12
- return false;
13
- try {
14
- const decoded = (0, jwt_decode_1.jwtDecode)(token);
15
- if (!decoded)
16
- return false;
17
- const now = Math.floor(Date.now() / 1000);
18
- if (decoded.exp < now)
19
- return false;
20
- if (decoded.token_type !== 'refresh_token')
21
- return false;
22
- return true;
23
- }
24
- catch {
25
- return false;
26
- }
27
- }
28
- function isRefreshTokenExpiring(token, bufferMinutes = 60) {
29
- if (!token)
30
- return true;
31
- try {
32
- const decoded = (0, jwt_decode_1.jwtDecode)(token);
33
- if (!decoded?.exp)
34
- return true;
35
- const now = Math.floor(Date.now() / 1000);
36
- const buffer = bufferMinutes * 60;
37
- return decoded.exp <= (now + buffer);
38
- }
39
- catch {
40
- return true;
41
- }
42
- }
43
- function getRefreshTokenExpiration(token) {
44
- if (!token)
45
- return null;
46
- try {
47
- const decoded = (0, jwt_decode_1.jwtDecode)(token);
48
- if (!decoded?.exp)
49
- return null;
50
- return decoded.exp * 1000;
51
- }
52
- catch {
53
- return null;
54
- }
55
- }
56
- function getRefreshTokenTimeRemaining(token) {
57
- if (!token)
58
- return null;
59
- try {
60
- const decoded = (0, jwt_decode_1.jwtDecode)(token);
61
- if (!decoded?.exp)
62
- return null;
63
- const now = Math.floor(Date.now() / 1000);
64
- const timeRemaining = decoded.exp - now;
65
- return timeRemaining > 0 ? timeRemaining : null;
66
- }
67
- catch {
68
- return null;
69
- }
70
- }
71
- function checkRefreshViability(sessionData) {
72
- if (!sessionData)
73
- return { canRefresh: false, reason: 'session_missing' };
74
- let accessTokenExpired = false;
75
- let accessTokenTimeRemaining;
76
- if (sessionData.idpAccessTokenExpires) {
77
- const now = Date.now();
78
- let expiresAtMs = sessionData.idpAccessTokenExpires;
79
- if (typeof expiresAtMs === 'string')
80
- expiresAtMs = parseInt(expiresAtMs, 10);
81
- if (expiresAtMs < 1000000000000)
82
- expiresAtMs = expiresAtMs * 1000;
83
- accessTokenTimeRemaining = Math.floor((expiresAtMs - now) / 1000);
84
- const bufferSec = 5 * 60; // 5 minutes pre-expiry buffer
85
- accessTokenExpired = accessTokenTimeRemaining <= bufferSec;
86
- logger_1.tokenRefreshLogger.debug('[REFRESH_VIABILITY] Access token expiration check', { now, expiresAtMs, accessTokenTimeRemaining, bufferSec, accessTokenExpired });
87
- }
88
- if (!sessionData.idpRefreshToken)
89
- return { canRefresh: false, reason: 'no_refresh_token', accessTokenExpired, accessTokenTimeRemaining };
90
- if (sessionData.idpRefreshTokenExpires) {
91
- let refreshExpMs = sessionData.idpRefreshTokenExpires;
92
- if (typeof refreshExpMs === 'string')
93
- refreshExpMs = parseInt(refreshExpMs, 10);
94
- if (refreshExpMs < 1000000000000)
95
- refreshExpMs = refreshExpMs * 1000;
96
- const nowMs = Date.now();
97
- const timeRemainingSec = Math.floor((refreshExpMs - nowMs) / 1000);
98
- if (timeRemainingSec <= 0)
99
- return { canRefresh: false, reason: 'refresh_token_expired', accessTokenExpired, accessTokenTimeRemaining };
100
- return { canRefresh: true, reason: 'valid_refresh_token', timeRemaining: timeRemainingSec, expiresAt: new Date(refreshExpMs).toISOString(), accessTokenExpired, accessTokenTimeRemaining };
101
- }
102
- try {
103
- const decoded = (0, jwt_decode_1.jwtDecode)(sessionData.idpRefreshToken);
104
- const nowSec = Math.floor(Date.now() / 1000);
105
- if (!decoded?.exp || decoded.token_type !== 'refresh_token')
106
- return { canRefresh: false, reason: 'refresh_token_expired', accessTokenExpired, accessTokenTimeRemaining };
107
- const timeRemaining = decoded.exp - nowSec;
108
- if (timeRemaining <= 0)
109
- return { canRefresh: false, reason: 'refresh_token_expired', accessTokenExpired, accessTokenTimeRemaining };
110
- const expiresAtIso = new Date(decoded.exp * 1000).toISOString();
111
- return { canRefresh: true, reason: 'valid_refresh_token', timeRemaining, expiresAt: expiresAtIso, accessTokenExpired, accessTokenTimeRemaining };
112
- }
113
- catch (error) {
114
- logger_1.tokenRefreshLogger.debug('[REFRESH_VIABILITY] Failed to decode refresh token for viability', { error: error instanceof Error ? error.message : String(error) });
115
- return { canRefresh: false, reason: 'refresh_token_expired', accessTokenExpired, accessTokenTimeRemaining };
116
- }
117
- }