@payez/next-mvp 4.0.1 → 4.0.3

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 (434) hide show
  1. package/dist/api/auth-handler.d.ts +66 -0
  2. package/dist/api/auth-handler.js +397 -0
  3. package/dist/api/index.d.ts +10 -0
  4. package/dist/api/index.js +19 -0
  5. package/dist/api-handlers/account/change-password.d.ts +9 -0
  6. package/dist/api-handlers/account/change-password.js +110 -0
  7. package/dist/api-handlers/account/masked-info.d.ts +2 -0
  8. package/dist/api-handlers/account/masked-info.js +41 -0
  9. package/dist/api-handlers/account/profile.d.ts +3 -0
  10. package/dist/api-handlers/account/profile.js +63 -0
  11. package/dist/api-handlers/account/recovery/initiate.d.ts +2 -0
  12. package/dist/api-handlers/account/recovery/initiate.js +26 -0
  13. package/dist/api-handlers/account/recovery/send-code.d.ts +2 -0
  14. package/dist/api-handlers/account/recovery/send-code.js +28 -0
  15. package/dist/api-handlers/account/recovery/verify-code.d.ts +2 -0
  16. package/dist/api-handlers/account/recovery/verify-code.js +28 -0
  17. package/dist/api-handlers/account/reset-password.d.ts +2 -0
  18. package/dist/api-handlers/account/reset-password.js +26 -0
  19. package/dist/api-handlers/account/send-code.d.ts +24 -0
  20. package/dist/api-handlers/account/send-code.js +60 -0
  21. package/dist/api-handlers/account/update-phone.d.ts +27 -0
  22. package/dist/api-handlers/account/update-phone.js +64 -0
  23. package/dist/api-handlers/account/validate-password.d.ts +17 -0
  24. package/dist/api-handlers/account/validate-password.js +81 -0
  25. package/dist/api-handlers/account/verify-email.d.ts +26 -0
  26. package/dist/api-handlers/account/verify-email.js +106 -0
  27. package/dist/api-handlers/account/verify-sms.d.ts +26 -0
  28. package/dist/api-handlers/account/verify-sms.js +106 -0
  29. package/dist/api-handlers/admin/analytics.d.ts +19 -0
  30. package/dist/api-handlers/admin/analytics.js +378 -0
  31. package/dist/api-handlers/admin/audit.d.ts +19 -0
  32. package/dist/api-handlers/admin/audit.js +213 -0
  33. package/dist/api-handlers/admin/index.d.ts +21 -0
  34. package/dist/api-handlers/admin/index.js +42 -0
  35. package/dist/api-handlers/admin/redis-sessions.d.ts +35 -0
  36. package/dist/api-handlers/admin/redis-sessions.js +203 -0
  37. package/dist/api-handlers/admin/sessions.d.ts +20 -0
  38. package/dist/api-handlers/admin/sessions.js +283 -0
  39. package/dist/api-handlers/admin/site-logs.d.ts +45 -0
  40. package/dist/api-handlers/admin/site-logs.js +317 -0
  41. package/dist/api-handlers/admin/stats.d.ts +20 -0
  42. package/dist/api-handlers/admin/stats.js +239 -0
  43. package/dist/api-handlers/admin/users.d.ts +19 -0
  44. package/dist/api-handlers/admin/users.js +221 -0
  45. package/dist/api-handlers/admin/vibe-data.d.ts +79 -0
  46. package/dist/api-handlers/admin/vibe-data.js +267 -0
  47. package/dist/api-handlers/anon/preferences.d.ts +37 -0
  48. package/dist/api-handlers/anon/preferences.js +96 -0
  49. package/dist/api-handlers/auth/jwks.d.ts +2 -0
  50. package/dist/api-handlers/auth/jwks.js +24 -0
  51. package/dist/api-handlers/auth/login.d.ts +42 -0
  52. package/dist/api-handlers/auth/login.js +178 -0
  53. package/dist/api-handlers/auth/refresh.d.ts +74 -0
  54. package/dist/api-handlers/auth/refresh.js +633 -0
  55. package/dist/api-handlers/auth/signout.d.ts +37 -0
  56. package/dist/api-handlers/auth/signout.js +186 -0
  57. package/dist/api-handlers/auth/status.d.ts +8 -0
  58. package/dist/api-handlers/auth/status.js +23 -0
  59. package/dist/api-handlers/auth/update-session.d.ts +37 -0
  60. package/dist/api-handlers/auth/update-session.js +93 -0
  61. package/dist/api-handlers/auth/validate.d.ts +6 -0
  62. package/dist/api-handlers/auth/validate.js +43 -0
  63. package/dist/api-handlers/auth/verify-code.d.ts +43 -0
  64. package/dist/api-handlers/auth/verify-code.js +90 -0
  65. package/dist/api-handlers/session/refresh-viability.d.ts +14 -0
  66. package/dist/api-handlers/session/refresh-viability.js +39 -0
  67. package/dist/api-handlers/session/viability.d.ts +13 -0
  68. package/dist/api-handlers/session/viability.js +114 -0
  69. package/dist/api-handlers/test/force-expire.d.ts +23 -0
  70. package/dist/api-handlers/test/force-expire.js +59 -0
  71. package/dist/auth/auth-decision.d.ts +39 -0
  72. package/dist/auth/auth-decision.js +182 -0
  73. package/dist/auth/better-auth.d.ts +79 -0
  74. package/dist/auth/better-auth.js +119 -0
  75. package/dist/auth/route-config.d.ts +66 -0
  76. package/dist/auth/route-config.js +190 -0
  77. package/dist/auth/types/auth-types.d.ts +417 -0
  78. package/dist/auth/types/auth-types.js +53 -0
  79. package/dist/auth/types/index.d.ts +6 -0
  80. package/dist/auth/types/index.js +22 -0
  81. package/dist/auth/unauthenticated-routes.d.ts +1 -0
  82. package/dist/auth/unauthenticated-routes.js +19 -0
  83. package/dist/auth/utils/idp-client.d.ts +94 -0
  84. package/dist/auth/utils/idp-client.js +384 -0
  85. package/dist/auth/utils/index.d.ts +5 -0
  86. package/dist/auth/utils/index.js +21 -0
  87. package/dist/auth/utils/token-utils.d.ts +83 -0
  88. package/dist/auth/utils/token-utils.js +218 -0
  89. package/dist/client/AuthContext.d.ts +19 -0
  90. package/dist/client/AuthContext.js +115 -0
  91. package/dist/client/better-auth-client.d.ts +1020 -0
  92. package/dist/client/better-auth-client.js +68 -0
  93. package/dist/client/fetch-with-auth.d.ts +11 -0
  94. package/dist/client/fetch-with-auth.js +44 -0
  95. package/dist/client/fetchWithSession.d.ts +3 -0
  96. package/dist/client/fetchWithSession.js +24 -0
  97. package/dist/client/index.d.ts +9 -0
  98. package/dist/client/index.js +20 -0
  99. package/dist/client/useAnonSession.d.ts +36 -0
  100. package/dist/client/useAnonSession.js +99 -0
  101. package/dist/components/SessionSync.d.ts +13 -0
  102. package/dist/components/SessionSync.js +121 -0
  103. package/dist/components/SignalRHealthCheck.d.ts +10 -0
  104. package/dist/components/SignalRHealthCheck.js +97 -0
  105. package/dist/components/account/MobileNavDrawer.d.ts +32 -0
  106. package/dist/components/account/MobileNavDrawer.js +81 -0
  107. package/dist/components/account/UserAvatarMenu.d.ts +20 -0
  108. package/dist/components/account/UserAvatarMenu.js +91 -0
  109. package/dist/components/account/index.d.ts +9 -0
  110. package/dist/components/account/index.js +13 -0
  111. package/dist/components/admin/AlertSettingsTab.d.ts +48 -0
  112. package/dist/components/admin/AlertSettingsTab.js +351 -0
  113. package/dist/components/admin/AnalyticsTab.d.ts +22 -0
  114. package/dist/components/admin/AnalyticsTab.js +167 -0
  115. package/dist/components/admin/DataBrowserTab.d.ts +19 -0
  116. package/dist/components/admin/DataBrowserTab.js +252 -0
  117. package/dist/components/admin/LoggingSettingsTab.d.ts +73 -0
  118. package/dist/components/admin/LoggingSettingsTab.js +339 -0
  119. package/dist/components/admin/SessionsTab.d.ts +37 -0
  120. package/dist/components/admin/SessionsTab.js +165 -0
  121. package/dist/components/admin/StatsTab.d.ts +53 -0
  122. package/dist/components/admin/StatsTab.js +161 -0
  123. package/dist/components/admin/VibeAdminContext.d.ts +32 -0
  124. package/dist/components/admin/VibeAdminContext.js +38 -0
  125. package/dist/components/admin/VibeAdminLayout.d.ts +11 -0
  126. package/dist/components/admin/VibeAdminLayout.js +71 -0
  127. package/dist/components/admin/index.d.ts +29 -0
  128. package/dist/components/admin/index.js +44 -0
  129. package/dist/components/auth/FederatedAuthSection.d.ts +8 -0
  130. package/dist/components/auth/FederatedAuthSection.js +45 -0
  131. package/dist/components/auth/ModeAwareLoginPage.d.ts +10 -0
  132. package/dist/components/auth/ModeAwareLoginPage.js +42 -0
  133. package/dist/components/auth/ModeAwareSignupPage.d.ts +9 -0
  134. package/dist/components/auth/ModeAwareSignupPage.js +78 -0
  135. package/dist/components/auth/TraditionalAuthSection.d.ts +14 -0
  136. package/dist/components/auth/TraditionalAuthSection.js +20 -0
  137. package/dist/components/recovery/CompleteStep.d.ts +5 -0
  138. package/dist/components/recovery/CompleteStep.js +8 -0
  139. package/dist/components/recovery/InitiateRecoveryStep.d.ts +8 -0
  140. package/dist/components/recovery/InitiateRecoveryStep.js +20 -0
  141. package/dist/components/recovery/SelectMethodStep.d.ts +8 -0
  142. package/dist/components/recovery/SelectMethodStep.js +8 -0
  143. package/dist/components/recovery/SetPasswordStep.d.ts +6 -0
  144. package/dist/components/recovery/SetPasswordStep.js +20 -0
  145. package/dist/components/recovery/VerifyCodeStep.d.ts +10 -0
  146. package/dist/components/recovery/VerifyCodeStep.js +24 -0
  147. package/dist/components/reserved/ReservedRecoveryWarning.d.ts +38 -0
  148. package/dist/components/reserved/ReservedRecoveryWarning.js +92 -0
  149. package/dist/components/reserved/ReservedStatusBox.d.ts +30 -0
  150. package/dist/components/reserved/ReservedStatusBox.js +71 -0
  151. package/dist/components/ui/BetaBadge.d.ts +29 -0
  152. package/dist/components/ui/BetaBadge.js +38 -0
  153. package/dist/components/ui/Footer.d.ts +37 -0
  154. package/dist/components/ui/Footer.js +41 -0
  155. package/dist/config/env.d.ts +66 -0
  156. package/dist/config/env.js +57 -0
  157. package/dist/config/logger.d.ts +57 -0
  158. package/dist/config/logger.js +73 -0
  159. package/dist/config/logging-config.d.ts +30 -0
  160. package/dist/config/logging-config.js +122 -0
  161. package/dist/config/unauthenticated-routes.d.ts +17 -0
  162. package/dist/config/unauthenticated-routes.js +24 -0
  163. package/dist/config/vibe-log-transport.d.ts +81 -0
  164. package/dist/config/vibe-log-transport.js +212 -0
  165. package/dist/edge/internal-api-url.d.ts +53 -0
  166. package/dist/edge/internal-api-url.js +63 -0
  167. package/dist/edge/middleware.d.ts +14 -0
  168. package/dist/edge/middleware.js +32 -0
  169. package/dist/hooks/useAuth.d.ts +23 -0
  170. package/dist/hooks/useAuth.js +83 -0
  171. package/dist/hooks/useAuthSettings.d.ts +59 -0
  172. package/dist/hooks/useAuthSettings.js +93 -0
  173. package/dist/hooks/useAvailableProviders.d.ts +43 -0
  174. package/dist/hooks/useAvailableProviders.js +112 -0
  175. package/dist/hooks/usePasswordValidation.d.ts +27 -0
  176. package/dist/hooks/usePasswordValidation.js +102 -0
  177. package/dist/hooks/useProfile.d.ts +15 -0
  178. package/dist/hooks/useProfile.js +59 -0
  179. package/dist/hooks/usePublicAuthSettings.d.ts +56 -0
  180. package/dist/hooks/usePublicAuthSettings.js +131 -0
  181. package/dist/hooks/useSessionExpiration.d.ts +56 -0
  182. package/dist/hooks/useSessionExpiration.js +72 -0
  183. package/dist/hooks/useViabilitySession.d.ts +75 -0
  184. package/dist/hooks/useViabilitySession.js +269 -0
  185. package/dist/index.d.ts +12 -0
  186. package/dist/index.js +53 -0
  187. package/dist/lib/anon-session.d.ts +74 -0
  188. package/dist/lib/anon-session.js +169 -0
  189. package/dist/lib/api-handler.d.ts +123 -0
  190. package/dist/lib/api-handler.js +478 -0
  191. package/dist/lib/app-slug.d.ts +95 -0
  192. package/dist/lib/app-slug.js +172 -0
  193. package/dist/lib/demo-mode.d.ts +6 -0
  194. package/dist/lib/demo-mode.js +16 -0
  195. package/dist/lib/geolocation.d.ts +64 -0
  196. package/dist/lib/geolocation.js +235 -0
  197. package/dist/lib/idp-client-config.d.ts +75 -0
  198. package/dist/lib/idp-client-config.js +425 -0
  199. package/dist/lib/idp-fetch.d.ts +14 -0
  200. package/dist/lib/idp-fetch.js +91 -0
  201. package/dist/lib/internal-api.d.ts +87 -0
  202. package/dist/lib/internal-api.js +122 -0
  203. package/dist/lib/jwt-decode-client.d.ts +10 -0
  204. package/dist/lib/jwt-decode-client.js +46 -0
  205. package/dist/lib/jwt-decode.d.ts +48 -0
  206. package/dist/lib/jwt-decode.js +57 -0
  207. package/dist/lib/rate-limit-service.d.ts +23 -0
  208. package/dist/lib/rate-limit-service.js +6 -0
  209. package/dist/lib/redis.d.ts +5 -0
  210. package/dist/lib/redis.js +28 -0
  211. package/dist/lib/refresh-token-validator.d.ts +13 -0
  212. package/dist/lib/refresh-token-validator.js +117 -0
  213. package/dist/lib/roles.d.ts +145 -0
  214. package/dist/lib/roles.js +168 -0
  215. package/dist/lib/secret-validation.d.ts +4 -0
  216. package/dist/lib/secret-validation.js +14 -0
  217. package/dist/lib/session-store.d.ts +170 -0
  218. package/dist/lib/session-store.js +545 -0
  219. package/dist/lib/session.d.ts +21 -0
  220. package/dist/lib/session.js +26 -0
  221. package/dist/lib/site-logger.d.ts +214 -0
  222. package/dist/lib/site-logger.js +210 -0
  223. package/dist/lib/standardized-client-api.d.ts +161 -0
  224. package/dist/lib/standardized-client-api.js +791 -0
  225. package/dist/lib/startup-init.d.ts +40 -0
  226. package/dist/lib/startup-init.js +257 -0
  227. package/dist/lib/test-aware-get-token.d.ts +2 -0
  228. package/dist/lib/test-aware-get-token.js +86 -0
  229. package/dist/lib/token-expiry.d.ts +14 -0
  230. package/dist/lib/token-expiry.js +39 -0
  231. package/dist/lib/token-lifecycle.d.ts +78 -0
  232. package/dist/lib/token-lifecycle.js +360 -0
  233. package/dist/lib/types/api-responses.d.ts +128 -0
  234. package/dist/lib/types/api-responses.js +171 -0
  235. package/dist/lib/user-agent-parser.d.ts +50 -0
  236. package/dist/lib/user-agent-parser.js +220 -0
  237. package/dist/logging/api/admin-analytics.d.ts +3 -0
  238. package/dist/logging/api/admin-analytics.js +45 -0
  239. package/dist/logging/api/audit-log.d.ts +3 -0
  240. package/dist/logging/api/audit-log.js +52 -0
  241. package/dist/logging/components/AdminAnalyticsLayout.d.ts +10 -0
  242. package/dist/logging/components/AdminAnalyticsLayout.js +11 -0
  243. package/dist/logging/components/AuditLogViewer.d.ts +7 -0
  244. package/dist/logging/components/AuditLogViewer.js +51 -0
  245. package/dist/logging/components/ErrorMetricsCard.d.ts +7 -0
  246. package/dist/logging/components/ErrorMetricsCard.js +16 -0
  247. package/dist/logging/components/HealthMetricsCard.d.ts +7 -0
  248. package/dist/logging/components/HealthMetricsCard.js +19 -0
  249. package/dist/logging/hooks/useAdminAnalytics.d.ts +24 -0
  250. package/dist/logging/hooks/useAdminAnalytics.js +22 -0
  251. package/dist/logging/hooks/useAuditLog.d.ts +6 -0
  252. package/dist/logging/hooks/useAuditLog.js +25 -0
  253. package/dist/logging/hooks/useErrorMetrics.d.ts +6 -0
  254. package/dist/logging/hooks/useErrorMetrics.js +38 -0
  255. package/dist/logging/hooks/useHealthMetrics.d.ts +6 -0
  256. package/dist/logging/hooks/useHealthMetrics.js +41 -0
  257. package/dist/logging/index.d.ts +11 -0
  258. package/dist/logging/index.js +40 -0
  259. package/dist/logging/types/analytics.d.ts +68 -0
  260. package/dist/logging/types/analytics.js +3 -0
  261. package/dist/logging/types/audit.d.ts +29 -0
  262. package/dist/logging/types/audit.js +2 -0
  263. package/dist/logging/types/index.d.ts +2 -0
  264. package/dist/logging/types/index.js +19 -0
  265. package/dist/middleware/auth-decision.d.ts +33 -0
  266. package/dist/middleware/auth-decision.js +65 -0
  267. package/dist/middleware/create-middleware.d.ts +102 -0
  268. package/dist/middleware/create-middleware.js +469 -0
  269. package/dist/middleware/rbac-check.d.ts +51 -0
  270. package/dist/middleware/rbac-check.js +219 -0
  271. package/dist/middleware/twofa-presets.d.ts +134 -0
  272. package/dist/middleware/twofa-presets.js +175 -0
  273. package/dist/models/DecodedAccessToken.d.ts +17 -0
  274. package/dist/models/DecodedAccessToken.js +2 -0
  275. package/dist/models/SessionModel.d.ts +122 -0
  276. package/dist/models/SessionModel.js +136 -0
  277. package/dist/pages/admin-login/page.d.ts +31 -0
  278. package/dist/pages/admin-login/page.js +73 -0
  279. package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.d.ts +18 -0
  280. package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.js +276 -0
  281. package/dist/pages/admin-page-permissions/index.d.ts +6 -0
  282. package/dist/pages/admin-page-permissions/index.js +13 -0
  283. package/dist/pages/admin-roles/RolesAdminPage.d.ts +16 -0
  284. package/dist/pages/admin-roles/RolesAdminPage.js +261 -0
  285. package/dist/pages/admin-roles/index.d.ts +8 -0
  286. package/dist/pages/admin-roles/index.js +15 -0
  287. package/dist/pages/admin-roles/modals.d.ts +72 -0
  288. package/dist/pages/admin-roles/modals.js +154 -0
  289. package/dist/pages/client-admin/ClientSiteAdminPage.d.ts +79 -0
  290. package/dist/pages/client-admin/ClientSiteAdminPage.js +179 -0
  291. package/dist/pages/client-admin/index.d.ts +32 -0
  292. package/dist/pages/client-admin/index.js +37 -0
  293. package/dist/pages/coming-soon/page.d.ts +8 -0
  294. package/dist/pages/coming-soon/page.js +28 -0
  295. package/dist/pages/login/page.d.ts +22 -0
  296. package/dist/pages/login/page.js +230 -0
  297. package/dist/pages/profile/EnhancedProfilePage.d.ts +13 -0
  298. package/dist/pages/profile/EnhancedProfilePage.js +150 -0
  299. package/dist/pages/profile/index.d.ts +8 -0
  300. package/dist/pages/profile/index.js +16 -0
  301. package/dist/pages/profile/page.d.ts +19 -0
  302. package/dist/pages/profile/page.js +47 -0
  303. package/dist/pages/recovery/page.d.ts +1 -0
  304. package/dist/pages/recovery/page.js +142 -0
  305. package/dist/pages/roles/MyRolesPage.d.ts +24 -0
  306. package/dist/pages/roles/MyRolesPage.js +71 -0
  307. package/dist/pages/roles/components.d.ts +63 -0
  308. package/dist/pages/roles/components.js +108 -0
  309. package/dist/pages/roles/index.d.ts +8 -0
  310. package/dist/pages/roles/index.js +19 -0
  311. package/dist/pages/security/EnhancedSecurityPage.d.ts +14 -0
  312. package/dist/pages/security/EnhancedSecurityPage.js +248 -0
  313. package/dist/pages/security/index.d.ts +8 -0
  314. package/dist/pages/security/index.js +16 -0
  315. package/dist/pages/security/page.d.ts +21 -0
  316. package/dist/pages/security/page.js +212 -0
  317. package/dist/pages/settings/EnhancedSettingsPage.d.ts +46 -0
  318. package/dist/pages/settings/EnhancedSettingsPage.js +231 -0
  319. package/dist/pages/settings/index.d.ts +8 -0
  320. package/dist/pages/settings/index.js +16 -0
  321. package/dist/pages/settings/page.d.ts +7 -0
  322. package/dist/pages/settings/page.js +26 -0
  323. package/dist/pages/showcase/ShowcasePage.d.ts +13 -0
  324. package/dist/pages/showcase/ShowcasePage.js +142 -0
  325. package/dist/pages/showcase/index.d.ts +12 -0
  326. package/dist/pages/showcase/index.js +17 -0
  327. package/dist/pages/test-env/EmergencyLogoutPage.d.ts +14 -0
  328. package/dist/pages/test-env/EmergencyLogoutPage.js +99 -0
  329. package/dist/pages/test-env/JwtInspectPage.d.ts +14 -0
  330. package/dist/pages/test-env/JwtInspectPage.js +116 -0
  331. package/dist/pages/test-env/RefreshTokenPage.d.ts +15 -0
  332. package/dist/pages/test-env/RefreshTokenPage.js +93 -0
  333. package/dist/pages/test-env/TestEnvPage.d.ts +13 -0
  334. package/dist/pages/test-env/TestEnvPage.js +51 -0
  335. package/dist/pages/test-env/index.d.ts +24 -0
  336. package/dist/pages/test-env/index.js +32 -0
  337. package/dist/pages/verify-code/page.d.ts +30 -0
  338. package/dist/pages/verify-code/page.js +412 -0
  339. package/dist/routes/account/index.d.ts +28 -0
  340. package/dist/routes/account/index.js +71 -0
  341. package/dist/routes/account/masked-info.d.ts +33 -0
  342. package/dist/routes/account/masked-info.js +39 -0
  343. package/dist/routes/account/send-code.d.ts +37 -0
  344. package/dist/routes/account/send-code.js +42 -0
  345. package/dist/routes/account/update-phone.d.ts +13 -0
  346. package/dist/routes/account/update-phone.js +17 -0
  347. package/dist/routes/account/verify-email.d.ts +38 -0
  348. package/dist/routes/account/verify-email.js +43 -0
  349. package/dist/routes/account/verify-sms.d.ts +38 -0
  350. package/dist/routes/account/verify-sms.js +43 -0
  351. package/dist/routes/auth/index.d.ts +19 -0
  352. package/dist/routes/auth/index.js +64 -0
  353. package/dist/routes/auth/logout.d.ts +31 -0
  354. package/dist/routes/auth/logout.js +98 -0
  355. package/dist/routes/auth/nextauth.d.ts +22 -0
  356. package/dist/routes/auth/nextauth.js +40 -0
  357. package/dist/routes/auth/refresh.d.ts +30 -0
  358. package/dist/routes/auth/refresh.js +51 -0
  359. package/dist/routes/auth/session.d.ts +43 -0
  360. package/dist/routes/auth/session.js +157 -0
  361. package/dist/routes/auth/settings.d.ts +25 -0
  362. package/dist/routes/auth/settings.js +55 -0
  363. package/dist/routes/auth/viability.d.ts +52 -0
  364. package/dist/routes/auth/viability.js +190 -0
  365. package/dist/routes/index.d.ts +12 -0
  366. package/dist/routes/index.js +54 -0
  367. package/dist/routes/session/index.d.ts +6 -0
  368. package/dist/routes/session/index.js +10 -0
  369. package/dist/routes/session/refresh-viability.d.ts +16 -0
  370. package/dist/routes/session/refresh-viability.js +20 -0
  371. package/dist/server/auth-guard.d.ts +46 -0
  372. package/dist/server/auth-guard.js +128 -0
  373. package/dist/server/auth.d.ts +50 -0
  374. package/dist/server/auth.js +62 -0
  375. package/dist/server/decode-session.d.ts +30 -0
  376. package/dist/server/decode-session.js +78 -0
  377. package/dist/server/slim-middleware.d.ts +23 -0
  378. package/dist/server/slim-middleware.js +89 -0
  379. package/dist/server/with-auth.d.ts +33 -0
  380. package/dist/server/with-auth.js +59 -0
  381. package/dist/services/signalrActivityService.d.ts +44 -0
  382. package/dist/services/signalrActivityService.js +257 -0
  383. package/dist/stores/authStore.d.ts +154 -0
  384. package/dist/stores/authStore.js +1527 -0
  385. package/dist/theme/ThemeProvider.d.ts +14 -0
  386. package/dist/theme/ThemeProvider.js +28 -0
  387. package/dist/theme/default.d.ts +8 -0
  388. package/dist/theme/default.js +33 -0
  389. package/dist/theme/index.d.ts +15 -0
  390. package/dist/theme/index.js +25 -0
  391. package/dist/theme/types.d.ts +56 -0
  392. package/dist/theme/types.js +8 -0
  393. package/dist/theme/useTheme.d.ts +60 -0
  394. package/dist/theme/useTheme.js +63 -0
  395. package/dist/theme/utils.d.ts +13 -0
  396. package/dist/theme/utils.js +39 -0
  397. package/dist/types/api.d.ts +134 -0
  398. package/dist/types/api.js +44 -0
  399. package/dist/types/auth.d.ts +19 -0
  400. package/dist/types/auth.js +2 -0
  401. package/dist/types/logging.d.ts +42 -0
  402. package/dist/types/logging.js +2 -0
  403. package/dist/types/recovery.d.ts +48 -0
  404. package/dist/types/recovery.js +2 -0
  405. package/dist/types/security.d.ts +1 -0
  406. package/dist/types/security.js +2 -0
  407. package/dist/utils/api.d.ts +85 -0
  408. package/dist/utils/api.js +287 -0
  409. package/dist/utils/circuitBreaker.d.ts +43 -0
  410. package/dist/utils/circuitBreaker.js +91 -0
  411. package/dist/utils/error-message.d.ts +1 -0
  412. package/dist/utils/error-message.js +103 -0
  413. package/dist/utils/layout/reservedSpace.d.ts +59 -0
  414. package/dist/utils/layout/reservedSpace.js +102 -0
  415. package/dist/utils/logout.d.ts +14 -0
  416. package/dist/utils/logout.js +32 -0
  417. package/dist/vibe/client.d.ts +261 -0
  418. package/dist/vibe/client.js +445 -0
  419. package/dist/vibe/enterprise-auth.d.ts +106 -0
  420. package/dist/vibe/enterprise-auth.js +173 -0
  421. package/dist/vibe/errors.d.ts +83 -0
  422. package/dist/vibe/errors.js +146 -0
  423. package/dist/vibe/generic.d.ts +234 -0
  424. package/dist/vibe/generic.js +369 -0
  425. package/dist/vibe/hooks/index.d.ts +169 -0
  426. package/dist/vibe/hooks/index.js +252 -0
  427. package/dist/vibe/index.d.ts +25 -0
  428. package/dist/vibe/index.js +72 -0
  429. package/dist/vibe/sessions.d.ts +161 -0
  430. package/dist/vibe/sessions.js +391 -0
  431. package/dist/vibe/types.d.ts +353 -0
  432. package/dist/vibe/types.js +315 -0
  433. package/package.json +1 -1
  434. package/src/auth/better-auth.ts +2 -2
@@ -0,0 +1,122 @@
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
+ }
@@ -0,0 +1,10 @@
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;
@@ -0,0 +1,46 @@
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
+ }
@@ -0,0 +1,48 @@
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;
@@ -0,0 +1,57 @@
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
+ }
@@ -0,0 +1,23 @@
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
+ };
@@ -0,0 +1,6 @@
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
+ }
@@ -0,0 +1,5 @@
1
+ import Redis from 'ioredis';
2
+ export declare function getRedis(): Redis;
3
+ declare const redis: Redis;
4
+ export { redis };
5
+ export default redis;
@@ -0,0 +1,28 @@
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;
@@ -0,0 +1,13 @@
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;
@@ -0,0 +1,117 @@
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
+ }
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Vibe Role Constants and Utilities
3
+ *
4
+ * Centralized role definitions for consistent authorization across the stack.
5
+ *
6
+ * @version 1.0
7
+ */
8
+ /**
9
+ * Global platform roles (IDP-level)
10
+ * These roles are managed at the IDP and grant cross-client access.
11
+ */
12
+ export declare const GlobalRoles: {
13
+ /** Platform super admin - full access to everything */
14
+ readonly PAYEZ_ADMIN: "payez_admin";
15
+ /** IDP client admin - manages IDP client configuration */
16
+ readonly IDP_CLIENT_ADMIN: "idp_client_admin";
17
+ /** Vibe platform admin - manages Vibe infrastructure globally */
18
+ readonly VIBE_APP_ADMIN: "vibe_app_admin";
19
+ /** Vibe client admin - manages Vibe for a specific tenant */
20
+ readonly VIBE_CLIENT_ADMIN: "vibe_client_admin";
21
+ /** Vibe agents user - AI agents operating via CLI/automation */
22
+ readonly VIBE_AGENTS_USER: "vibe_agents_user";
23
+ };
24
+ /**
25
+ * Application-level roles (per-client)
26
+ * These roles are scoped to a specific client/tenant.
27
+ */
28
+ export declare const AppRoles: {
29
+ /** Standard authenticated user */
30
+ readonly VIBE_APP_USER: "vibe_app_user";
31
+ };
32
+ /**
33
+ * All Vibe roles combined
34
+ */
35
+ export declare const VibeRoles: {
36
+ /** Standard authenticated user */
37
+ readonly VIBE_APP_USER: "vibe_app_user";
38
+ /** Platform super admin - full access to everything */
39
+ readonly PAYEZ_ADMIN: "payez_admin";
40
+ /** IDP client admin - manages IDP client configuration */
41
+ readonly IDP_CLIENT_ADMIN: "idp_client_admin";
42
+ /** Vibe platform admin - manages Vibe infrastructure globally */
43
+ readonly VIBE_APP_ADMIN: "vibe_app_admin";
44
+ /** Vibe client admin - manages Vibe for a specific tenant */
45
+ readonly VIBE_CLIENT_ADMIN: "vibe_client_admin";
46
+ /** Vibe agents user - AI agents operating via CLI/automation */
47
+ readonly VIBE_AGENTS_USER: "vibe_agents_user";
48
+ };
49
+ /**
50
+ * Roles that grant admin access to the /admin section.
51
+ * Any of these roles allows access to admin pages.
52
+ */
53
+ export declare const ADMIN_ROLES: readonly string[];
54
+ /**
55
+ * Roles that grant platform-wide admin access (not client-scoped).
56
+ * These can access/modify any client's data.
57
+ */
58
+ export declare const PLATFORM_ADMIN_ROLES: readonly string[];
59
+ /**
60
+ * Roles that grant client-scoped admin access.
61
+ * These can only access their own client's data.
62
+ */
63
+ export declare const CLIENT_ADMIN_ROLES: readonly string[];
64
+ /**
65
+ * Check if user has a specific role
66
+ */
67
+ export declare function hasRole(userRoles: string[] | undefined, role: string): boolean;
68
+ /**
69
+ * Check if user has any of the specified roles
70
+ */
71
+ export declare function hasAnyRole(userRoles: string[] | undefined, roles: readonly string[]): boolean;
72
+ /**
73
+ * Check if user has all of the specified roles
74
+ */
75
+ export declare function hasAllRoles(userRoles: string[] | undefined, roles: readonly string[]): boolean;
76
+ /**
77
+ * Check if user has admin access (any admin role)
78
+ */
79
+ export declare function isAdmin(userRoles: string[] | undefined): boolean;
80
+ /**
81
+ * Check if user has platform-wide admin access
82
+ */
83
+ export declare function isPlatformAdmin(userRoles: string[] | undefined): boolean;
84
+ /**
85
+ * Check if user is a client-scoped admin (not platform admin)
86
+ */
87
+ export declare function isClientAdmin(userRoles: string[] | undefined): boolean;
88
+ /**
89
+ * Role hierarchy (higher index = more access)
90
+ *
91
+ * payez_admin (4) - IDP super admin, can do anything
92
+ * vibe_app_admin (3) - Platform admin, manages Vibe globally
93
+ * vibe_client_admin (2) - Client admin, manages their own tenant
94
+ * idp_client_admin (2) - IDP client admin, manages IDP config
95
+ * vibe_app_user (1) - Regular authenticated user
96
+ * (anonymous) (0) - No authentication
97
+ */
98
+ export declare const ROLE_HIERARCHY: Record<string, number>;
99
+ /**
100
+ * Get the highest role level for a user
101
+ */
102
+ export declare function getHighestRoleLevel(userRoles: string[] | undefined): number;
103
+ declare const _default: {
104
+ VibeRoles: {
105
+ /** Standard authenticated user */
106
+ readonly VIBE_APP_USER: "vibe_app_user";
107
+ /** Platform super admin - full access to everything */
108
+ readonly PAYEZ_ADMIN: "payez_admin";
109
+ /** IDP client admin - manages IDP client configuration */
110
+ readonly IDP_CLIENT_ADMIN: "idp_client_admin";
111
+ /** Vibe platform admin - manages Vibe infrastructure globally */
112
+ readonly VIBE_APP_ADMIN: "vibe_app_admin";
113
+ /** Vibe client admin - manages Vibe for a specific tenant */
114
+ readonly VIBE_CLIENT_ADMIN: "vibe_client_admin";
115
+ /** Vibe agents user - AI agents operating via CLI/automation */
116
+ readonly VIBE_AGENTS_USER: "vibe_agents_user";
117
+ };
118
+ GlobalRoles: {
119
+ /** Platform super admin - full access to everything */
120
+ readonly PAYEZ_ADMIN: "payez_admin";
121
+ /** IDP client admin - manages IDP client configuration */
122
+ readonly IDP_CLIENT_ADMIN: "idp_client_admin";
123
+ /** Vibe platform admin - manages Vibe infrastructure globally */
124
+ readonly VIBE_APP_ADMIN: "vibe_app_admin";
125
+ /** Vibe client admin - manages Vibe for a specific tenant */
126
+ readonly VIBE_CLIENT_ADMIN: "vibe_client_admin";
127
+ /** Vibe agents user - AI agents operating via CLI/automation */
128
+ readonly VIBE_AGENTS_USER: "vibe_agents_user";
129
+ };
130
+ AppRoles: {
131
+ /** Standard authenticated user */
132
+ readonly VIBE_APP_USER: "vibe_app_user";
133
+ };
134
+ ADMIN_ROLES: readonly string[];
135
+ PLATFORM_ADMIN_ROLES: readonly string[];
136
+ CLIENT_ADMIN_ROLES: readonly string[];
137
+ hasRole: typeof hasRole;
138
+ hasAnyRole: typeof hasAnyRole;
139
+ hasAllRoles: typeof hasAllRoles;
140
+ isAdmin: typeof isAdmin;
141
+ isPlatformAdmin: typeof isPlatformAdmin;
142
+ isClientAdmin: typeof isClientAdmin;
143
+ getHighestRoleLevel: typeof getHighestRoleLevel;
144
+ };
145
+ export default _default;