@payez/next-mvp 4.0.0 → 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 (459) hide show
  1. package/package.json +6 -16
  2. package/dist/api/auth-handler.d.ts +0 -66
  3. package/dist/api/auth-handler.js +0 -397
  4. package/dist/api/index.d.ts +0 -10
  5. package/dist/api/index.js +0 -19
  6. package/dist/api-handlers/account/change-password.d.ts +0 -9
  7. package/dist/api-handlers/account/change-password.js +0 -110
  8. package/dist/api-handlers/account/masked-info.d.ts +0 -2
  9. package/dist/api-handlers/account/masked-info.js +0 -41
  10. package/dist/api-handlers/account/profile.d.ts +0 -3
  11. package/dist/api-handlers/account/profile.js +0 -63
  12. package/dist/api-handlers/account/recovery/initiate.d.ts +0 -2
  13. package/dist/api-handlers/account/recovery/initiate.js +0 -26
  14. package/dist/api-handlers/account/recovery/send-code.d.ts +0 -2
  15. package/dist/api-handlers/account/recovery/send-code.js +0 -28
  16. package/dist/api-handlers/account/recovery/verify-code.d.ts +0 -2
  17. package/dist/api-handlers/account/recovery/verify-code.js +0 -28
  18. package/dist/api-handlers/account/reset-password.d.ts +0 -2
  19. package/dist/api-handlers/account/reset-password.js +0 -26
  20. package/dist/api-handlers/account/send-code.d.ts +0 -24
  21. package/dist/api-handlers/account/send-code.js +0 -60
  22. package/dist/api-handlers/account/update-phone.d.ts +0 -27
  23. package/dist/api-handlers/account/update-phone.js +0 -64
  24. package/dist/api-handlers/account/validate-password.d.ts +0 -17
  25. package/dist/api-handlers/account/validate-password.js +0 -81
  26. package/dist/api-handlers/account/verify-email.d.ts +0 -26
  27. package/dist/api-handlers/account/verify-email.js +0 -106
  28. package/dist/api-handlers/account/verify-sms.d.ts +0 -26
  29. package/dist/api-handlers/account/verify-sms.js +0 -106
  30. package/dist/api-handlers/admin/analytics.d.ts +0 -19
  31. package/dist/api-handlers/admin/analytics.js +0 -378
  32. package/dist/api-handlers/admin/audit.d.ts +0 -19
  33. package/dist/api-handlers/admin/audit.js +0 -213
  34. package/dist/api-handlers/admin/index.d.ts +0 -21
  35. package/dist/api-handlers/admin/index.js +0 -42
  36. package/dist/api-handlers/admin/redis-sessions.d.ts +0 -35
  37. package/dist/api-handlers/admin/redis-sessions.js +0 -203
  38. package/dist/api-handlers/admin/sessions.d.ts +0 -20
  39. package/dist/api-handlers/admin/sessions.js +0 -283
  40. package/dist/api-handlers/admin/site-logs.d.ts +0 -45
  41. package/dist/api-handlers/admin/site-logs.js +0 -317
  42. package/dist/api-handlers/admin/stats.d.ts +0 -20
  43. package/dist/api-handlers/admin/stats.js +0 -239
  44. package/dist/api-handlers/admin/users.d.ts +0 -19
  45. package/dist/api-handlers/admin/users.js +0 -221
  46. package/dist/api-handlers/admin/vibe-data.d.ts +0 -79
  47. package/dist/api-handlers/admin/vibe-data.js +0 -267
  48. package/dist/api-handlers/anon/preferences.d.ts +0 -37
  49. package/dist/api-handlers/anon/preferences.js +0 -96
  50. package/dist/api-handlers/auth/jwks.d.ts +0 -2
  51. package/dist/api-handlers/auth/jwks.js +0 -24
  52. package/dist/api-handlers/auth/login.d.ts +0 -42
  53. package/dist/api-handlers/auth/login.js +0 -178
  54. package/dist/api-handlers/auth/refresh.d.ts +0 -74
  55. package/dist/api-handlers/auth/refresh.js +0 -633
  56. package/dist/api-handlers/auth/signout.d.ts +0 -37
  57. package/dist/api-handlers/auth/signout.js +0 -186
  58. package/dist/api-handlers/auth/status.d.ts +0 -8
  59. package/dist/api-handlers/auth/status.js +0 -23
  60. package/dist/api-handlers/auth/update-session.d.ts +0 -37
  61. package/dist/api-handlers/auth/update-session.js +0 -93
  62. package/dist/api-handlers/auth/validate.d.ts +0 -6
  63. package/dist/api-handlers/auth/validate.js +0 -43
  64. package/dist/api-handlers/auth/verify-code.d.ts +0 -43
  65. package/dist/api-handlers/auth/verify-code.js +0 -90
  66. package/dist/api-handlers/session/refresh-viability.d.ts +0 -14
  67. package/dist/api-handlers/session/refresh-viability.js +0 -39
  68. package/dist/api-handlers/session/viability.d.ts +0 -13
  69. package/dist/api-handlers/session/viability.js +0 -114
  70. package/dist/api-handlers/test/force-expire.d.ts +0 -23
  71. package/dist/api-handlers/test/force-expire.js +0 -59
  72. package/dist/auth/auth-decision.d.ts +0 -39
  73. package/dist/auth/auth-decision.js +0 -182
  74. package/dist/auth/auth-options.d.ts +0 -57
  75. package/dist/auth/auth-options.js +0 -213
  76. package/dist/auth/better-auth.d.ts +0 -79
  77. package/dist/auth/better-auth.js +0 -119
  78. package/dist/auth/callbacks/index.d.ts +0 -6
  79. package/dist/auth/callbacks/index.js +0 -12
  80. package/dist/auth/callbacks/jwt.d.ts +0 -45
  81. package/dist/auth/callbacks/jwt.js +0 -305
  82. package/dist/auth/callbacks/session.d.ts +0 -60
  83. package/dist/auth/callbacks/session.js +0 -170
  84. package/dist/auth/callbacks/signin.d.ts +0 -23
  85. package/dist/auth/callbacks/signin.js +0 -44
  86. package/dist/auth/events/index.d.ts +0 -4
  87. package/dist/auth/events/index.js +0 -8
  88. package/dist/auth/events/signout.d.ts +0 -17
  89. package/dist/auth/events/signout.js +0 -32
  90. package/dist/auth/providers/credentials.d.ts +0 -32
  91. package/dist/auth/providers/credentials.js +0 -223
  92. package/dist/auth/providers/index.d.ts +0 -5
  93. package/dist/auth/providers/index.js +0 -21
  94. package/dist/auth/providers/oauth.d.ts +0 -26
  95. package/dist/auth/providers/oauth.js +0 -105
  96. package/dist/auth/route-config.d.ts +0 -66
  97. package/dist/auth/route-config.js +0 -190
  98. package/dist/auth/types/auth-types.d.ts +0 -417
  99. package/dist/auth/types/auth-types.js +0 -53
  100. package/dist/auth/types/index.d.ts +0 -6
  101. package/dist/auth/types/index.js +0 -22
  102. package/dist/auth/unauthenticated-routes.d.ts +0 -1
  103. package/dist/auth/unauthenticated-routes.js +0 -19
  104. package/dist/auth/utils/idp-client.d.ts +0 -94
  105. package/dist/auth/utils/idp-client.js +0 -384
  106. package/dist/auth/utils/index.d.ts +0 -5
  107. package/dist/auth/utils/index.js +0 -21
  108. package/dist/auth/utils/token-utils.d.ts +0 -83
  109. package/dist/auth/utils/token-utils.js +0 -218
  110. package/dist/client/AuthContext.d.ts +0 -19
  111. package/dist/client/AuthContext.js +0 -115
  112. package/dist/client/better-auth-client.d.ts +0 -1020
  113. package/dist/client/better-auth-client.js +0 -68
  114. package/dist/client/fetch-with-auth.d.ts +0 -11
  115. package/dist/client/fetch-with-auth.js +0 -44
  116. package/dist/client/fetchWithSession.d.ts +0 -3
  117. package/dist/client/fetchWithSession.js +0 -24
  118. package/dist/client/index.d.ts +0 -9
  119. package/dist/client/index.js +0 -20
  120. package/dist/client/useAnonSession.d.ts +0 -36
  121. package/dist/client/useAnonSession.js +0 -99
  122. package/dist/components/SessionSync.d.ts +0 -13
  123. package/dist/components/SessionSync.js +0 -121
  124. package/dist/components/SignalRHealthCheck.d.ts +0 -10
  125. package/dist/components/SignalRHealthCheck.js +0 -97
  126. package/dist/components/account/MobileNavDrawer.d.ts +0 -32
  127. package/dist/components/account/MobileNavDrawer.js +0 -81
  128. package/dist/components/account/UserAvatarMenu.d.ts +0 -20
  129. package/dist/components/account/UserAvatarMenu.js +0 -91
  130. package/dist/components/account/index.d.ts +0 -9
  131. package/dist/components/account/index.js +0 -13
  132. package/dist/components/admin/AlertSettingsTab.d.ts +0 -48
  133. package/dist/components/admin/AlertSettingsTab.js +0 -351
  134. package/dist/components/admin/AnalyticsTab.d.ts +0 -22
  135. package/dist/components/admin/AnalyticsTab.js +0 -167
  136. package/dist/components/admin/DataBrowserTab.d.ts +0 -19
  137. package/dist/components/admin/DataBrowserTab.js +0 -252
  138. package/dist/components/admin/LoggingSettingsTab.d.ts +0 -73
  139. package/dist/components/admin/LoggingSettingsTab.js +0 -339
  140. package/dist/components/admin/SessionsTab.d.ts +0 -37
  141. package/dist/components/admin/SessionsTab.js +0 -165
  142. package/dist/components/admin/StatsTab.d.ts +0 -53
  143. package/dist/components/admin/StatsTab.js +0 -161
  144. package/dist/components/admin/VibeAdminContext.d.ts +0 -32
  145. package/dist/components/admin/VibeAdminContext.js +0 -38
  146. package/dist/components/admin/VibeAdminLayout.d.ts +0 -11
  147. package/dist/components/admin/VibeAdminLayout.js +0 -71
  148. package/dist/components/admin/index.d.ts +0 -29
  149. package/dist/components/admin/index.js +0 -44
  150. package/dist/components/auth/FederatedAuthSection.d.ts +0 -8
  151. package/dist/components/auth/FederatedAuthSection.js +0 -45
  152. package/dist/components/auth/ModeAwareLoginPage.d.ts +0 -10
  153. package/dist/components/auth/ModeAwareLoginPage.js +0 -42
  154. package/dist/components/auth/ModeAwareSignupPage.d.ts +0 -9
  155. package/dist/components/auth/ModeAwareSignupPage.js +0 -78
  156. package/dist/components/auth/TraditionalAuthSection.d.ts +0 -14
  157. package/dist/components/auth/TraditionalAuthSection.js +0 -20
  158. package/dist/components/recovery/CompleteStep.d.ts +0 -5
  159. package/dist/components/recovery/CompleteStep.js +0 -8
  160. package/dist/components/recovery/InitiateRecoveryStep.d.ts +0 -8
  161. package/dist/components/recovery/InitiateRecoveryStep.js +0 -20
  162. package/dist/components/recovery/SelectMethodStep.d.ts +0 -8
  163. package/dist/components/recovery/SelectMethodStep.js +0 -8
  164. package/dist/components/recovery/SetPasswordStep.d.ts +0 -6
  165. package/dist/components/recovery/SetPasswordStep.js +0 -20
  166. package/dist/components/recovery/VerifyCodeStep.d.ts +0 -10
  167. package/dist/components/recovery/VerifyCodeStep.js +0 -24
  168. package/dist/components/reserved/ReservedRecoveryWarning.d.ts +0 -38
  169. package/dist/components/reserved/ReservedRecoveryWarning.js +0 -92
  170. package/dist/components/reserved/ReservedStatusBox.d.ts +0 -30
  171. package/dist/components/reserved/ReservedStatusBox.js +0 -71
  172. package/dist/components/ui/BetaBadge.d.ts +0 -29
  173. package/dist/components/ui/BetaBadge.js +0 -38
  174. package/dist/components/ui/Footer.d.ts +0 -37
  175. package/dist/components/ui/Footer.js +0 -41
  176. package/dist/config/env.d.ts +0 -66
  177. package/dist/config/env.js +0 -57
  178. package/dist/config/logger.d.ts +0 -57
  179. package/dist/config/logger.js +0 -73
  180. package/dist/config/logging-config.d.ts +0 -30
  181. package/dist/config/logging-config.js +0 -122
  182. package/dist/config/unauthenticated-routes.d.ts +0 -17
  183. package/dist/config/unauthenticated-routes.js +0 -24
  184. package/dist/config/vibe-log-transport.d.ts +0 -81
  185. package/dist/config/vibe-log-transport.js +0 -212
  186. package/dist/edge/internal-api-url.d.ts +0 -53
  187. package/dist/edge/internal-api-url.js +0 -63
  188. package/dist/edge/middleware.d.ts +0 -14
  189. package/dist/edge/middleware.js +0 -32
  190. package/dist/hooks/useAuth.d.ts +0 -23
  191. package/dist/hooks/useAuth.js +0 -83
  192. package/dist/hooks/useAuthSettings.d.ts +0 -59
  193. package/dist/hooks/useAuthSettings.js +0 -93
  194. package/dist/hooks/useAvailableProviders.d.ts +0 -43
  195. package/dist/hooks/useAvailableProviders.js +0 -112
  196. package/dist/hooks/usePasswordValidation.d.ts +0 -27
  197. package/dist/hooks/usePasswordValidation.js +0 -102
  198. package/dist/hooks/useProfile.d.ts +0 -15
  199. package/dist/hooks/useProfile.js +0 -59
  200. package/dist/hooks/usePublicAuthSettings.d.ts +0 -56
  201. package/dist/hooks/usePublicAuthSettings.js +0 -131
  202. package/dist/hooks/useSessionExpiration.d.ts +0 -56
  203. package/dist/hooks/useSessionExpiration.js +0 -72
  204. package/dist/hooks/useViabilitySession.d.ts +0 -75
  205. package/dist/hooks/useViabilitySession.js +0 -269
  206. package/dist/index.d.ts +0 -12
  207. package/dist/index.js +0 -53
  208. package/dist/lib/anon-session.d.ts +0 -74
  209. package/dist/lib/anon-session.js +0 -169
  210. package/dist/lib/api-handler.d.ts +0 -123
  211. package/dist/lib/api-handler.js +0 -478
  212. package/dist/lib/app-slug.d.ts +0 -95
  213. package/dist/lib/app-slug.js +0 -172
  214. package/dist/lib/demo-mode.d.ts +0 -6
  215. package/dist/lib/demo-mode.js +0 -16
  216. package/dist/lib/geolocation.d.ts +0 -64
  217. package/dist/lib/geolocation.js +0 -235
  218. package/dist/lib/idp-client-config.d.ts +0 -75
  219. package/dist/lib/idp-client-config.js +0 -425
  220. package/dist/lib/idp-fetch.d.ts +0 -14
  221. package/dist/lib/idp-fetch.js +0 -91
  222. package/dist/lib/internal-api.d.ts +0 -87
  223. package/dist/lib/internal-api.js +0 -122
  224. package/dist/lib/jwt-decode-client.d.ts +0 -10
  225. package/dist/lib/jwt-decode-client.js +0 -46
  226. package/dist/lib/jwt-decode.d.ts +0 -48
  227. package/dist/lib/jwt-decode.js +0 -57
  228. package/dist/lib/nextauth-secret.d.ts +0 -10
  229. package/dist/lib/nextauth-secret.js +0 -100
  230. package/dist/lib/rate-limit-service.d.ts +0 -23
  231. package/dist/lib/rate-limit-service.js +0 -6
  232. package/dist/lib/redis.d.ts +0 -5
  233. package/dist/lib/redis.js +0 -28
  234. package/dist/lib/refresh-token-validator.d.ts +0 -13
  235. package/dist/lib/refresh-token-validator.js +0 -117
  236. package/dist/lib/roles.d.ts +0 -145
  237. package/dist/lib/roles.js +0 -168
  238. package/dist/lib/secret-validation.d.ts +0 -4
  239. package/dist/lib/secret-validation.js +0 -14
  240. package/dist/lib/session-store.d.ts +0 -170
  241. package/dist/lib/session-store.js +0 -545
  242. package/dist/lib/session.d.ts +0 -21
  243. package/dist/lib/session.js +0 -26
  244. package/dist/lib/site-logger.d.ts +0 -214
  245. package/dist/lib/site-logger.js +0 -210
  246. package/dist/lib/standardized-client-api.d.ts +0 -161
  247. package/dist/lib/standardized-client-api.js +0 -791
  248. package/dist/lib/startup-init.d.ts +0 -40
  249. package/dist/lib/startup-init.js +0 -257
  250. package/dist/lib/test-aware-get-token.d.ts +0 -2
  251. package/dist/lib/test-aware-get-token.js +0 -86
  252. package/dist/lib/token-expiry.d.ts +0 -14
  253. package/dist/lib/token-expiry.js +0 -39
  254. package/dist/lib/token-lifecycle.d.ts +0 -78
  255. package/dist/lib/token-lifecycle.js +0 -360
  256. package/dist/lib/types/api-responses.d.ts +0 -128
  257. package/dist/lib/types/api-responses.js +0 -171
  258. package/dist/lib/user-agent-parser.d.ts +0 -50
  259. package/dist/lib/user-agent-parser.js +0 -220
  260. package/dist/logging/api/admin-analytics.d.ts +0 -3
  261. package/dist/logging/api/admin-analytics.js +0 -45
  262. package/dist/logging/api/audit-log.d.ts +0 -3
  263. package/dist/logging/api/audit-log.js +0 -52
  264. package/dist/logging/components/AdminAnalyticsLayout.d.ts +0 -10
  265. package/dist/logging/components/AdminAnalyticsLayout.js +0 -11
  266. package/dist/logging/components/AuditLogViewer.d.ts +0 -7
  267. package/dist/logging/components/AuditLogViewer.js +0 -51
  268. package/dist/logging/components/ErrorMetricsCard.d.ts +0 -7
  269. package/dist/logging/components/ErrorMetricsCard.js +0 -16
  270. package/dist/logging/components/HealthMetricsCard.d.ts +0 -7
  271. package/dist/logging/components/HealthMetricsCard.js +0 -19
  272. package/dist/logging/hooks/useAdminAnalytics.d.ts +0 -24
  273. package/dist/logging/hooks/useAdminAnalytics.js +0 -22
  274. package/dist/logging/hooks/useAuditLog.d.ts +0 -6
  275. package/dist/logging/hooks/useAuditLog.js +0 -25
  276. package/dist/logging/hooks/useErrorMetrics.d.ts +0 -6
  277. package/dist/logging/hooks/useErrorMetrics.js +0 -38
  278. package/dist/logging/hooks/useHealthMetrics.d.ts +0 -6
  279. package/dist/logging/hooks/useHealthMetrics.js +0 -41
  280. package/dist/logging/index.d.ts +0 -11
  281. package/dist/logging/index.js +0 -40
  282. package/dist/logging/types/analytics.d.ts +0 -68
  283. package/dist/logging/types/analytics.js +0 -3
  284. package/dist/logging/types/audit.d.ts +0 -29
  285. package/dist/logging/types/audit.js +0 -2
  286. package/dist/logging/types/index.d.ts +0 -2
  287. package/dist/logging/types/index.js +0 -19
  288. package/dist/middleware/auth-decision.d.ts +0 -33
  289. package/dist/middleware/auth-decision.js +0 -65
  290. package/dist/middleware/create-middleware.d.ts +0 -102
  291. package/dist/middleware/create-middleware.js +0 -469
  292. package/dist/middleware/rbac-check.d.ts +0 -51
  293. package/dist/middleware/rbac-check.js +0 -219
  294. package/dist/middleware/twofa-presets.d.ts +0 -134
  295. package/dist/middleware/twofa-presets.js +0 -175
  296. package/dist/models/DecodedAccessToken.d.ts +0 -17
  297. package/dist/models/DecodedAccessToken.js +0 -2
  298. package/dist/models/SessionModel.d.ts +0 -122
  299. package/dist/models/SessionModel.js +0 -136
  300. package/dist/pages/admin-login/page.d.ts +0 -31
  301. package/dist/pages/admin-login/page.js +0 -73
  302. package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.d.ts +0 -18
  303. package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.js +0 -276
  304. package/dist/pages/admin-page-permissions/index.d.ts +0 -6
  305. package/dist/pages/admin-page-permissions/index.js +0 -13
  306. package/dist/pages/admin-roles/RolesAdminPage.d.ts +0 -16
  307. package/dist/pages/admin-roles/RolesAdminPage.js +0 -261
  308. package/dist/pages/admin-roles/index.d.ts +0 -8
  309. package/dist/pages/admin-roles/index.js +0 -15
  310. package/dist/pages/admin-roles/modals.d.ts +0 -72
  311. package/dist/pages/admin-roles/modals.js +0 -154
  312. package/dist/pages/client-admin/ClientSiteAdminPage.d.ts +0 -79
  313. package/dist/pages/client-admin/ClientSiteAdminPage.js +0 -179
  314. package/dist/pages/client-admin/index.d.ts +0 -32
  315. package/dist/pages/client-admin/index.js +0 -37
  316. package/dist/pages/coming-soon/page.d.ts +0 -8
  317. package/dist/pages/coming-soon/page.js +0 -28
  318. package/dist/pages/login/page.d.ts +0 -22
  319. package/dist/pages/login/page.js +0 -230
  320. package/dist/pages/profile/EnhancedProfilePage.d.ts +0 -13
  321. package/dist/pages/profile/EnhancedProfilePage.js +0 -150
  322. package/dist/pages/profile/index.d.ts +0 -8
  323. package/dist/pages/profile/index.js +0 -16
  324. package/dist/pages/profile/page.d.ts +0 -19
  325. package/dist/pages/profile/page.js +0 -47
  326. package/dist/pages/profile/profile-patch.d.ts +0 -1
  327. package/dist/pages/profile/profile-patch.js +0 -281
  328. package/dist/pages/recovery/page.d.ts +0 -1
  329. package/dist/pages/recovery/page.js +0 -142
  330. package/dist/pages/roles/MyRolesPage.d.ts +0 -24
  331. package/dist/pages/roles/MyRolesPage.js +0 -71
  332. package/dist/pages/roles/components.d.ts +0 -63
  333. package/dist/pages/roles/components.js +0 -108
  334. package/dist/pages/roles/index.d.ts +0 -8
  335. package/dist/pages/roles/index.js +0 -19
  336. package/dist/pages/security/EnhancedSecurityPage.d.ts +0 -14
  337. package/dist/pages/security/EnhancedSecurityPage.js +0 -248
  338. package/dist/pages/security/index.d.ts +0 -8
  339. package/dist/pages/security/index.js +0 -16
  340. package/dist/pages/security/page.d.ts +0 -21
  341. package/dist/pages/security/page.js +0 -212
  342. package/dist/pages/security/security-patch.d.ts +0 -1
  343. package/dist/pages/security/security-patch.js +0 -302
  344. package/dist/pages/settings/EnhancedSettingsPage.d.ts +0 -46
  345. package/dist/pages/settings/EnhancedSettingsPage.js +0 -231
  346. package/dist/pages/settings/index.d.ts +0 -8
  347. package/dist/pages/settings/index.js +0 -16
  348. package/dist/pages/settings/page.d.ts +0 -7
  349. package/dist/pages/settings/page.js +0 -26
  350. package/dist/pages/showcase/ShowcasePage.d.ts +0 -13
  351. package/dist/pages/showcase/ShowcasePage.js +0 -142
  352. package/dist/pages/showcase/index.d.ts +0 -12
  353. package/dist/pages/showcase/index.js +0 -17
  354. package/dist/pages/test-env/EmergencyLogoutPage.d.ts +0 -14
  355. package/dist/pages/test-env/EmergencyLogoutPage.js +0 -99
  356. package/dist/pages/test-env/JwtInspectPage.d.ts +0 -14
  357. package/dist/pages/test-env/JwtInspectPage.js +0 -116
  358. package/dist/pages/test-env/RefreshTokenPage.d.ts +0 -15
  359. package/dist/pages/test-env/RefreshTokenPage.js +0 -93
  360. package/dist/pages/test-env/TestEnvPage.d.ts +0 -13
  361. package/dist/pages/test-env/TestEnvPage.js +0 -51
  362. package/dist/pages/test-env/index.d.ts +0 -24
  363. package/dist/pages/test-env/index.js +0 -32
  364. package/dist/pages/verify-code/page.d.ts +0 -30
  365. package/dist/pages/verify-code/page.js +0 -412
  366. package/dist/routes/account/index.d.ts +0 -28
  367. package/dist/routes/account/index.js +0 -71
  368. package/dist/routes/account/masked-info.d.ts +0 -33
  369. package/dist/routes/account/masked-info.js +0 -39
  370. package/dist/routes/account/send-code.d.ts +0 -37
  371. package/dist/routes/account/send-code.js +0 -42
  372. package/dist/routes/account/update-phone.d.ts +0 -13
  373. package/dist/routes/account/update-phone.js +0 -17
  374. package/dist/routes/account/verify-email.d.ts +0 -38
  375. package/dist/routes/account/verify-email.js +0 -43
  376. package/dist/routes/account/verify-sms.d.ts +0 -38
  377. package/dist/routes/account/verify-sms.js +0 -43
  378. package/dist/routes/auth/index.d.ts +0 -19
  379. package/dist/routes/auth/index.js +0 -64
  380. package/dist/routes/auth/logout.d.ts +0 -31
  381. package/dist/routes/auth/logout.js +0 -98
  382. package/dist/routes/auth/nextauth.d.ts +0 -22
  383. package/dist/routes/auth/nextauth.js +0 -40
  384. package/dist/routes/auth/refresh.d.ts +0 -30
  385. package/dist/routes/auth/refresh.js +0 -51
  386. package/dist/routes/auth/session.d.ts +0 -43
  387. package/dist/routes/auth/session.js +0 -157
  388. package/dist/routes/auth/settings.d.ts +0 -25
  389. package/dist/routes/auth/settings.js +0 -55
  390. package/dist/routes/auth/viability.d.ts +0 -52
  391. package/dist/routes/auth/viability.js +0 -190
  392. package/dist/routes/index.d.ts +0 -12
  393. package/dist/routes/index.js +0 -54
  394. package/dist/routes/session/index.d.ts +0 -6
  395. package/dist/routes/session/index.js +0 -10
  396. package/dist/routes/session/refresh-viability.d.ts +0 -16
  397. package/dist/routes/session/refresh-viability.js +0 -20
  398. package/dist/server/auth-guard.d.ts +0 -46
  399. package/dist/server/auth-guard.js +0 -128
  400. package/dist/server/auth.d.ts +0 -50
  401. package/dist/server/auth.js +0 -62
  402. package/dist/server/decode-session.d.ts +0 -30
  403. package/dist/server/decode-session.js +0 -78
  404. package/dist/server/slim-middleware.d.ts +0 -23
  405. package/dist/server/slim-middleware.js +0 -89
  406. package/dist/server/with-auth.d.ts +0 -33
  407. package/dist/server/with-auth.js +0 -59
  408. package/dist/services/signalrActivityService.d.ts +0 -44
  409. package/dist/services/signalrActivityService.js +0 -257
  410. package/dist/stores/authStore.d.ts +0 -154
  411. package/dist/stores/authStore.js +0 -1527
  412. package/dist/theme/ThemeProvider.d.ts +0 -14
  413. package/dist/theme/ThemeProvider.js +0 -28
  414. package/dist/theme/default.d.ts +0 -8
  415. package/dist/theme/default.js +0 -33
  416. package/dist/theme/index.d.ts +0 -15
  417. package/dist/theme/index.js +0 -25
  418. package/dist/theme/types.d.ts +0 -56
  419. package/dist/theme/types.js +0 -8
  420. package/dist/theme/useTheme.d.ts +0 -60
  421. package/dist/theme/useTheme.js +0 -63
  422. package/dist/theme/utils.d.ts +0 -13
  423. package/dist/theme/utils.js +0 -39
  424. package/dist/types/api.d.ts +0 -134
  425. package/dist/types/api.js +0 -44
  426. package/dist/types/auth.d.ts +0 -19
  427. package/dist/types/auth.js +0 -2
  428. package/dist/types/logging.d.ts +0 -42
  429. package/dist/types/logging.js +0 -2
  430. package/dist/types/recovery.d.ts +0 -48
  431. package/dist/types/recovery.js +0 -2
  432. package/dist/types/security.d.ts +0 -1
  433. package/dist/types/security.js +0 -2
  434. package/dist/utils/api.d.ts +0 -85
  435. package/dist/utils/api.js +0 -287
  436. package/dist/utils/circuitBreaker.d.ts +0 -43
  437. package/dist/utils/circuitBreaker.js +0 -91
  438. package/dist/utils/error-message.d.ts +0 -1
  439. package/dist/utils/error-message.js +0 -103
  440. package/dist/utils/layout/reservedSpace.d.ts +0 -59
  441. package/dist/utils/layout/reservedSpace.js +0 -102
  442. package/dist/utils/logout.d.ts +0 -14
  443. package/dist/utils/logout.js +0 -32
  444. package/dist/vibe/client.d.ts +0 -261
  445. package/dist/vibe/client.js +0 -445
  446. package/dist/vibe/enterprise-auth.d.ts +0 -106
  447. package/dist/vibe/enterprise-auth.js +0 -173
  448. package/dist/vibe/errors.d.ts +0 -83
  449. package/dist/vibe/errors.js +0 -146
  450. package/dist/vibe/generic.d.ts +0 -234
  451. package/dist/vibe/generic.js +0 -369
  452. package/dist/vibe/hooks/index.d.ts +0 -169
  453. package/dist/vibe/hooks/index.js +0 -252
  454. package/dist/vibe/index.d.ts +0 -25
  455. package/dist/vibe/index.js +0 -72
  456. package/dist/vibe/sessions.d.ts +0 -161
  457. package/dist/vibe/sessions.js +0 -391
  458. package/dist/vibe/types.d.ts +0 -353
  459. package/dist/vibe/types.js +0 -315
@@ -1,283 +0,0 @@
1
- "use strict";
2
- /**
3
- * Admin Sessions API Handler
4
- *
5
- * Provides admin-level access to login sessions using service account credentials.
6
- * Used by SessionsTab component.
7
- *
8
- * @version 1.0
9
- * @requires Admin role (vibe_app_admin or payez_admin)
10
- */
11
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
- if (k2 === undefined) k2 = k;
13
- var desc = Object.getOwnPropertyDescriptor(m, k);
14
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
- desc = { enumerable: true, get: function() { return m[k]; } };
16
- }
17
- Object.defineProperty(o, k2, desc);
18
- }) : (function(o, m, k, k2) {
19
- if (k2 === undefined) k2 = k;
20
- o[k2] = m[k];
21
- }));
22
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
- Object.defineProperty(o, "default", { enumerable: true, value: v });
24
- }) : function(o, v) {
25
- o["default"] = v;
26
- });
27
- var __importStar = (this && this.__importStar) || (function () {
28
- var ownKeys = function(o) {
29
- ownKeys = Object.getOwnPropertyNames || function (o) {
30
- var ar = [];
31
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
- return ar;
33
- };
34
- return ownKeys(o);
35
- };
36
- return function (mod) {
37
- if (mod && mod.__esModule) return mod;
38
- var result = {};
39
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
- __setModuleDefault(result, mod);
41
- return result;
42
- };
43
- })();
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.createSessionsHandler = createSessionsHandler;
46
- const server_1 = require("next/server");
47
- const auth_1 = require("../../server/auth");
48
- const startup_init_1 = require("../../lib/startup-init");
49
- const roles_1 = require("../../lib/roles");
50
- /**
51
- * Check if the current user has admin role
52
- */
53
- async function checkAdminRole(request) {
54
- const session = await (0, auth_1.getSession)(request);
55
- if (!session?.user) {
56
- return {
57
- isAdmin: false,
58
- error: server_1.NextResponse.json({ success: false, error: 'Please sign in' }, { status: 401 }),
59
- };
60
- }
61
- const userRoles = session.user?.roles || [];
62
- const hasAdminRole = roles_1.ADMIN_ROLES.some(role => userRoles.includes(role));
63
- if (!hasAdminRole) {
64
- return {
65
- isAdmin: false,
66
- error: server_1.NextResponse.json({ success: false, error: 'Admin access required' }, { status: 403 }),
67
- };
68
- }
69
- return { isAdmin: true, userId: session.user?.id };
70
- }
71
- /**
72
- * Make a service account request to Vibe (admin mode)
73
- */
74
- async function vibeServiceRequest(endpoint, options) {
75
- const idpUrl = process.env.NEXT_PUBLIC_IDP_URL || process.env.IDP_URL;
76
- const clientId = process.env.VIBE_CLIENT_ID;
77
- const signingKey = process.env.VIBE_HMAC_KEY;
78
- if (!idpUrl || !clientId || !signingKey) {
79
- return { ok: false, status: 500, data: null, error: 'Vibe not configured' };
80
- }
81
- const timestamp = Math.floor(Date.now() / 1000);
82
- const stringToSign = `${timestamp}|${options.method}|${endpoint}`;
83
- const crypto = await Promise.resolve().then(() => __importStar(require('crypto')));
84
- const signature = crypto
85
- .createHmac('sha256', Buffer.from(signingKey, 'base64'))
86
- .update(stringToSign)
87
- .digest('base64');
88
- const proxyUrl = `${idpUrl}/api/vibe/proxy`;
89
- // Get the client slug from startup config for multi-client admin support
90
- const idpConfig = (0, startup_init_1.getStartupIDPConfig)();
91
- const idpClientId = idpConfig?.clientSlug || idpConfig?.clientId;
92
- try {
93
- const res = await fetch(proxyUrl, {
94
- method: 'POST',
95
- headers: {
96
- 'Content-Type': 'application/json',
97
- 'X-Vibe-Client-Id': clientId,
98
- 'X-Vibe-Timestamp': String(timestamp),
99
- 'X-Vibe-Signature': signature,
100
- ...(idpClientId && { 'X-Client-Id': idpClientId }),
101
- },
102
- body: JSON.stringify({
103
- endpoint,
104
- method: options.method,
105
- data: options.body ?? null,
106
- }),
107
- cache: 'no-store',
108
- });
109
- if (res.status === 204) {
110
- return { ok: true, status: 204, data: null };
111
- }
112
- if (!res.ok) {
113
- const errorText = await res.text();
114
- return { ok: false, status: res.status, data: null, error: errorText };
115
- }
116
- const body = await res.json();
117
- return { ok: true, status: res.status, data: body };
118
- }
119
- catch (error) {
120
- return { ok: false, status: 0, data: null, error: String(error) };
121
- }
122
- }
123
- // Country code to flag emoji mapping
124
- function getCountryFlag(countryCode) {
125
- if (!countryCode || countryCode.length !== 2)
126
- return '';
127
- const codePoints = countryCode
128
- .toUpperCase()
129
- .split('')
130
- .map(char => 127397 + char.charCodeAt(0));
131
- return String.fromCodePoint(...codePoints);
132
- }
133
- /**
134
- * GET /api/admin/sessions - List sessions
135
- * POST /api/admin/sessions - Stats, revoke actions
136
- */
137
- function createSessionsHandler(config) {
138
- return {
139
- async GET(request) {
140
- const adminCheck = await checkAdminRole(request);
141
- if (adminCheck.error)
142
- return adminCheck.error;
143
- const { searchParams } = new URL(request.url);
144
- const status = searchParams.get('status');
145
- const email = searchParams.get('email');
146
- // Build query for login_sessions table
147
- const queryBody = {
148
- page: 1,
149
- pageSize: 100,
150
- orderBy: 'created_at',
151
- orderDirection: 'desc',
152
- };
153
- // Build filter conditions
154
- const conditions = [];
155
- if (status && status !== 'all') {
156
- conditions.push({ field: 'status', operator: 'eq', value: status });
157
- }
158
- if (email) {
159
- conditions.push({ field: 'email', operator: 'like', value: `%${email}%` });
160
- }
161
- if (conditions.length === 1) {
162
- queryBody.filter = conditions[0];
163
- }
164
- else if (conditions.length > 1) {
165
- queryBody.filter = { operator: 'and', conditions };
166
- }
167
- const result = await vibeServiceRequest('/v1/collections/vibe_app/tables/login_sessions/query', { method: 'POST', body: queryBody });
168
- if (!result.ok) {
169
- return server_1.NextResponse.json({ error: result.error }, { status: result.status || 500 });
170
- }
171
- // Extract sessions from response
172
- const rawSessions = result.data?.data || result.data?.documents || [];
173
- const sessions = rawSessions.map((s) => ({
174
- id: s.id || s.document_id,
175
- idp_user_id: s.idp_user_id || s.user_id,
176
- email: s.email || '',
177
- name: s.name || s.display_name || '',
178
- status: s.status || 'active',
179
- ip_address: s.ip_address || s.ip,
180
- city: s.city,
181
- region: s.region,
182
- country_code: s.country_code || s.country,
183
- device_type: s.device_type || s.device,
184
- browser: s.browser,
185
- os: s.os,
186
- created_at: s.created_at,
187
- last_activity: s.last_activity || s.updated_at,
188
- revoked_at: s.revoked_at,
189
- revoked_by: s.revoked_by,
190
- country_flag: getCountryFlag(s.country_code || s.country || ''),
191
- }));
192
- return server_1.NextResponse.json({ sessions });
193
- },
194
- async POST(request) {
195
- const adminCheck = await checkAdminRole(request);
196
- if (adminCheck.error)
197
- return adminCheck.error;
198
- const body = await request.json();
199
- const { action, sessionId, userId } = body;
200
- if (action === 'stats') {
201
- // Get all sessions for stats calculation
202
- const result = await vibeServiceRequest('/v1/collections/vibe_app/tables/login_sessions/query', { method: 'POST', body: { page: 1, pageSize: 1000 } });
203
- if (!result.ok) {
204
- return server_1.NextResponse.json({ error: result.error }, { status: result.status || 500 });
205
- }
206
- const sessions = result.data?.data || result.data?.documents || [];
207
- // Calculate stats
208
- const now = new Date();
209
- const oneDayAgo = new Date(now.getTime() - 24 * 60 * 60 * 1000);
210
- const stats = {
211
- totalActive: sessions.filter((s) => s.status === 'active').length,
212
- totalRevoked: sessions.filter((s) => s.status === 'revoked').length,
213
- uniqueUsers: new Set(sessions.map((s) => s.idp_user_id || s.user_id)).size,
214
- recentLogins: sessions.filter((s) => new Date(s.created_at) > oneDayAgo).length,
215
- byCountryWithFlags: {},
216
- byDevice: {},
217
- };
218
- // Count by country
219
- sessions.forEach((s) => {
220
- const country = s.country_code || s.country || 'Unknown';
221
- if (!stats.byCountryWithFlags[country]) {
222
- stats.byCountryWithFlags[country] = { count: 0, flag: getCountryFlag(country) };
223
- }
224
- stats.byCountryWithFlags[country].count++;
225
- const device = s.device_type || s.device || 'Unknown';
226
- stats.byDevice[device] = (stats.byDevice[device] || 0) + 1;
227
- });
228
- return server_1.NextResponse.json({ stats });
229
- }
230
- if (action === 'revoke' && sessionId) {
231
- // Revoke single session
232
- const result = await vibeServiceRequest(`/v1/collections/vibe_app/tables/login_sessions/${sessionId}`, {
233
- method: 'PUT',
234
- body: {
235
- status: 'revoked',
236
- revoked_at: new Date().toISOString(),
237
- revoked_by: `admin:${adminCheck.userId}`,
238
- },
239
- });
240
- if (!result.ok) {
241
- return server_1.NextResponse.json({ error: result.error }, { status: result.status || 500 });
242
- }
243
- return server_1.NextResponse.json({ success: true });
244
- }
245
- if (action === 'revoke_all' && userId) {
246
- // Get all active sessions for user
247
- const queryResult = await vibeServiceRequest('/v1/collections/vibe_app/tables/login_sessions/query', {
248
- method: 'POST',
249
- body: {
250
- filter: {
251
- operator: 'and',
252
- conditions: [
253
- { field: 'idp_user_id', operator: 'eq', value: userId },
254
- { field: 'status', operator: 'eq', value: 'active' },
255
- ],
256
- },
257
- },
258
- });
259
- if (!queryResult.ok) {
260
- return server_1.NextResponse.json({ error: queryResult.error }, { status: queryResult.status || 500 });
261
- }
262
- const sessions = queryResult.data?.data || queryResult.data?.documents || [];
263
- let revokedCount = 0;
264
- // Revoke each session
265
- for (const session of sessions) {
266
- const id = session.id || session.document_id;
267
- const result = await vibeServiceRequest(`/v1/collections/vibe_app/tables/login_sessions/${id}`, {
268
- method: 'PUT',
269
- body: {
270
- status: 'revoked',
271
- revoked_at: new Date().toISOString(),
272
- revoked_by: `admin:${adminCheck.userId}`,
273
- },
274
- });
275
- if (result.ok)
276
- revokedCount++;
277
- }
278
- return server_1.NextResponse.json({ success: true, revokedCount });
279
- }
280
- return server_1.NextResponse.json({ error: 'Invalid action' }, { status: 400 });
281
- },
282
- };
283
- }
@@ -1,45 +0,0 @@
1
- /**
2
- * Admin Site Logs API Handlers
3
- *
4
- * Provides admin-level access to site activity logs.
5
- * - GET /site-logs - Query logs from Vibe
6
- * - POST /site-logs - Create test log entries via Redis queue
7
- * - GET /site-logs/stats - Aggregated stats { total, unique_users, by_level, by_category }
8
- * - POST /site-logs/drain - Manual drain trigger
9
- * - GET /site-logs/queue - Redis queue status
10
- *
11
- * @version 1.0
12
- * @requires Admin role (vibe_app_admin or payez_admin)
13
- */
14
- import { NextRequest, NextResponse } from 'next/server';
15
- export interface SiteLogsHandlerConfig {
16
- vibeApiUrl?: string;
17
- appSlug?: string;
18
- vibeClientId?: string;
19
- }
20
- /**
21
- * Create main site-logs handler (GET query, POST create test entries)
22
- */
23
- export declare function createSiteLogsHandler(config: SiteLogsHandlerConfig): {
24
- GET(request: NextRequest): Promise<NextResponse<any>>;
25
- POST(request: NextRequest): Promise<NextResponse<unknown>>;
26
- };
27
- /**
28
- * Create site-logs stats handler
29
- * Returns: { total, unique_users, by_level, by_category }
30
- */
31
- export declare function createSiteLogsStatsHandler(config: SiteLogsHandlerConfig): {
32
- GET(request: NextRequest): Promise<NextResponse<any>>;
33
- };
34
- /**
35
- * Create site-logs drain handler (manual trigger)
36
- */
37
- export declare function createSiteLogsDrainHandler(config: SiteLogsHandlerConfig): {
38
- POST(request: NextRequest): Promise<NextResponse<any>>;
39
- };
40
- /**
41
- * Create site-logs queue status handler
42
- */
43
- export declare function createSiteLogsQueueHandler(config: SiteLogsHandlerConfig): {
44
- GET(request: NextRequest): Promise<NextResponse<unknown>>;
45
- };
@@ -1,317 +0,0 @@
1
- "use strict";
2
- /**
3
- * Admin Site Logs API Handlers
4
- *
5
- * Provides admin-level access to site activity logs.
6
- * - GET /site-logs - Query logs from Vibe
7
- * - POST /site-logs - Create test log entries via Redis queue
8
- * - GET /site-logs/stats - Aggregated stats { total, unique_users, by_level, by_category }
9
- * - POST /site-logs/drain - Manual drain trigger
10
- * - GET /site-logs/queue - Redis queue status
11
- *
12
- * @version 1.0
13
- * @requires Admin role (vibe_app_admin or payez_admin)
14
- */
15
- Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.createSiteLogsHandler = createSiteLogsHandler;
17
- exports.createSiteLogsStatsHandler = createSiteLogsStatsHandler;
18
- exports.createSiteLogsDrainHandler = createSiteLogsDrainHandler;
19
- exports.createSiteLogsQueueHandler = createSiteLogsQueueHandler;
20
- const server_1 = require("next/server");
21
- const auth_1 = require("../../server/auth");
22
- const redis_1 = require("../../lib/redis");
23
- const roles_1 = require("../../lib/roles");
24
- const REDIS_SITE_LOG_KEY = 'vibe:site-logs:pending';
25
- const REDIS_LOG_TTL = 7 * 24 * 60 * 60; // 1 week
26
- /**
27
- * Check if the current user has admin role
28
- */
29
- async function checkAdminRole(request) {
30
- const session = await (0, auth_1.getSession)(request);
31
- if (!session?.user) {
32
- return {
33
- isAdmin: false,
34
- error: server_1.NextResponse.json({ success: false, error: 'Please sign in' }, { status: 401 }),
35
- };
36
- }
37
- const userRoles = session.user?.roles || [];
38
- const hasAdminRole = roles_1.ADMIN_ROLES.some(role => userRoles.includes(role));
39
- if (!hasAdminRole) {
40
- return {
41
- isAdmin: false,
42
- error: server_1.NextResponse.json({ success: false, error: 'Admin access required' }, { status: 403 }),
43
- };
44
- }
45
- return {
46
- isAdmin: true,
47
- userId: session.user?.id,
48
- accessToken: session.accessToken,
49
- clientId: session.clientId,
50
- };
51
- }
52
- function getVibeApiUrl(config) {
53
- if (config.vibeApiUrl)
54
- return config.vibeApiUrl;
55
- const url = process.env.VIBE_API_URL;
56
- if (url)
57
- return url;
58
- if (process.env.NODE_ENV !== 'production')
59
- return 'http://localhost:37933';
60
- throw new Error('VIBE_API_URL is required in production');
61
- }
62
- /**
63
- * Create main site-logs handler (GET query, POST create test entries)
64
- */
65
- function createSiteLogsHandler(config) {
66
- return {
67
- async GET(request) {
68
- const adminCheck = await checkAdminRole(request);
69
- if (adminCheck.error)
70
- return adminCheck.error;
71
- const { searchParams } = new URL(request.url);
72
- const vibeUrl = getVibeApiUrl(config);
73
- // Forward query params
74
- const params = new URLSearchParams();
75
- if (searchParams.get('level'))
76
- params.set('level', searchParams.get('level'));
77
- if (searchParams.get('category'))
78
- params.set('category', searchParams.get('category'));
79
- if (searchParams.get('search'))
80
- params.set('search', searchParams.get('search'));
81
- if (searchParams.get('from'))
82
- params.set('from', searchParams.get('from'));
83
- if (searchParams.get('to'))
84
- params.set('to', searchParams.get('to'));
85
- if (searchParams.get('user_id'))
86
- params.set('user_id', searchParams.get('user_id'));
87
- if (searchParams.get('limit'))
88
- params.set('limit', searchParams.get('limit'));
89
- if (searchParams.get('offset'))
90
- params.set('offset', searchParams.get('offset'));
91
- const headers = {
92
- 'Authorization': `Bearer ${adminCheck.accessToken}`,
93
- 'Content-Type': 'application/json',
94
- };
95
- if (adminCheck.clientId) {
96
- headers['X-Client-Id'] = adminCheck.clientId;
97
- }
98
- try {
99
- const response = await fetch(`${vibeUrl}/v1/admin/site-logs?${params}`, { headers });
100
- if (!response.ok) {
101
- const errorText = await response.text();
102
- console.error('[admin/site-logs] Vibe error:', response.status, errorText);
103
- return server_1.NextResponse.json({ error: 'Failed to fetch site logs', details: errorText }, { status: response.status });
104
- }
105
- const data = await response.json();
106
- return server_1.NextResponse.json(data);
107
- }
108
- catch (error) {
109
- console.error('[admin/site-logs] Error:', error);
110
- return server_1.NextResponse.json({ error: error.message || 'Internal error' }, { status: 500 });
111
- }
112
- },
113
- async POST(request) {
114
- const adminCheck = await checkAdminRole(request);
115
- if (adminCheck.error)
116
- return adminCheck.error;
117
- try {
118
- const body = await request.json();
119
- const redis = (0, redis_1.getRedis)();
120
- const userAgent = request.headers.get('user-agent') || null;
121
- const ipAddress = request.headers.get('x-forwarded-for')?.split(',')[0] || null;
122
- const baseRecord = {
123
- user_agent: userAgent,
124
- ip_address: ipAddress,
125
- created_at: new Date().toISOString(),
126
- app_slug: config.appSlug || process.env.APP_SLUG || process.env.CLIENT_ID || 'unknown',
127
- vibe_client_id: config.vibeClientId || process.env.VIBE_CLIENT_ID || '',
128
- };
129
- // If generateAll=true, create one of each event type
130
- if (body.generate_all) {
131
- const testEvents = [
132
- { log_level: 'debug', category: 'api', message: 'Test: API request traced', context: { endpoint: '/api/test', method: 'GET' }, url: '/api/test' },
133
- { log_level: 'info', category: 'auth', message: 'Test: User logged in', context: { method: 'password' }, user_id: 1, url: '/api/auth/callback' },
134
- { log_level: 'info', category: 'page_view', message: 'Test: Page viewed', context: { referrer: '/dashboard' }, user_id: 1, url: '/admin/activity' },
135
- { log_level: 'info', category: 'user_action', message: 'Test: Button clicked', context: { target: 'submit-btn' }, user_id: 1, url: '/admin/activity' },
136
- { log_level: 'warn', category: 'auth', message: 'Test: Login failed', context: { reason: 'invalid_password' }, url: '/api/auth/login' },
137
- { log_level: 'error', category: 'error', message: 'Test: Application error', context: { error: 'TestError', stack: 'at test()' }, url: '/api/test' },
138
- ];
139
- for (const event of testEvents) {
140
- const logRecord = JSON.stringify({ ...baseRecord, ...event, session_id: null });
141
- await redis.lpush(REDIS_SITE_LOG_KEY, logRecord);
142
- }
143
- await redis.expire(REDIS_SITE_LOG_KEY, REDIS_LOG_TTL);
144
- const queueLen = await redis.llen(REDIS_SITE_LOG_KEY);
145
- return server_1.NextResponse.json({
146
- success: true,
147
- message: `Created ${testEvents.length} test events`,
148
- queue_length: queueLen,
149
- events: testEvents.map(e => ({ level: e.log_level, category: e.category, message: e.message })),
150
- note: 'Events will appear after drain service processes them',
151
- }, { status: 201 });
152
- }
153
- // Single event creation
154
- const logRecord = JSON.stringify({
155
- ...baseRecord,
156
- log_level: body.level || 'info',
157
- category: body.category || 'user_action',
158
- message: body.message || 'Test log entry',
159
- context: body.context || { source: 'admin-test' },
160
- user_id: body.user_id || null,
161
- session_id: null,
162
- url: body.url || '/admin/activity',
163
- });
164
- await redis.lpush(REDIS_SITE_LOG_KEY, logRecord);
165
- await redis.expire(REDIS_SITE_LOG_KEY, REDIS_LOG_TTL);
166
- const queueLen = await redis.llen(REDIS_SITE_LOG_KEY);
167
- return server_1.NextResponse.json({
168
- success: true,
169
- message: 'Test log created',
170
- queue_length: queueLen,
171
- note: 'Log will appear after drain service processes it (every 5 seconds)',
172
- }, { status: 201 });
173
- }
174
- catch (error) {
175
- console.error('[admin/site-logs] POST Error:', error);
176
- return server_1.NextResponse.json({ error: error.message || 'Internal error' }, { status: 500 });
177
- }
178
- },
179
- };
180
- }
181
- /**
182
- * Create site-logs stats handler
183
- * Returns: { total, unique_users, by_level, by_category }
184
- */
185
- function createSiteLogsStatsHandler(config) {
186
- return {
187
- async GET(request) {
188
- const adminCheck = await checkAdminRole(request);
189
- if (adminCheck.error)
190
- return adminCheck.error;
191
- const { searchParams } = new URL(request.url);
192
- const vibeUrl = getVibeApiUrl(config);
193
- const params = new URLSearchParams();
194
- if (searchParams.get('from'))
195
- params.set('from', searchParams.get('from'));
196
- if (searchParams.get('to'))
197
- params.set('to', searchParams.get('to'));
198
- const headers = {
199
- 'Authorization': `Bearer ${adminCheck.accessToken}`,
200
- 'Content-Type': 'application/json',
201
- };
202
- if (adminCheck.clientId) {
203
- headers['X-Client-Id'] = adminCheck.clientId;
204
- }
205
- try {
206
- const response = await fetch(`${vibeUrl}/v1/admin/site-logs/stats?${params}`, { headers });
207
- if (!response.ok) {
208
- const errorText = await response.text();
209
- console.error('[admin/site-logs/stats] Vibe error:', response.status, errorText);
210
- return server_1.NextResponse.json({ error: 'Failed to fetch stats', details: errorText }, { status: response.status });
211
- }
212
- const data = await response.json();
213
- // Ensure response matches expected format: { total, unique_users, by_level, by_category }
214
- return server_1.NextResponse.json(data);
215
- }
216
- catch (error) {
217
- console.error('[admin/site-logs/stats] Error:', error);
218
- return server_1.NextResponse.json({ error: error.message || 'Internal error' }, { status: 500 });
219
- }
220
- },
221
- };
222
- }
223
- /**
224
- * Create site-logs drain handler (manual trigger)
225
- */
226
- function createSiteLogsDrainHandler(config) {
227
- return {
228
- async POST(request) {
229
- const adminCheck = await checkAdminRole(request);
230
- if (adminCheck.error)
231
- return adminCheck.error;
232
- const { searchParams } = new URL(request.url);
233
- const maxEntries = searchParams.get('max_entries') || '100';
234
- const vibeUrl = getVibeApiUrl(config);
235
- const headers = {
236
- 'Authorization': `Bearer ${adminCheck.accessToken}`,
237
- 'Content-Type': 'application/json',
238
- };
239
- if (adminCheck.clientId) {
240
- headers['X-Client-Id'] = adminCheck.clientId;
241
- }
242
- try {
243
- const response = await fetch(`${vibeUrl}/v1/admin/site-logs/drain?maxEntries=${maxEntries}`, {
244
- method: 'POST',
245
- headers,
246
- });
247
- if (!response.ok) {
248
- const errorText = await response.text();
249
- console.error('[admin/site-logs/drain] Vibe error:', response.status, errorText);
250
- return server_1.NextResponse.json({ error: 'Failed to drain site logs', details: errorText }, { status: response.status });
251
- }
252
- const data = await response.json();
253
- return server_1.NextResponse.json(data);
254
- }
255
- catch (error) {
256
- console.error('[admin/site-logs/drain] Error:', error);
257
- return server_1.NextResponse.json({ error: error.message || 'Internal error' }, { status: 500 });
258
- }
259
- },
260
- };
261
- }
262
- /**
263
- * Create site-logs queue status handler
264
- */
265
- function createSiteLogsQueueHandler(config) {
266
- return {
267
- async GET(request) {
268
- const adminCheck = await checkAdminRole(request);
269
- if (adminCheck.error)
270
- return adminCheck.error;
271
- try {
272
- const redis = (0, redis_1.getRedis)();
273
- const queueLength = await redis.llen(REDIS_SITE_LOG_KEY);
274
- // Peek at the oldest and newest entries
275
- let oldest_entry = null;
276
- let newest_entry = null;
277
- if (queueLength > 0) {
278
- const oldest = await redis.lindex(REDIS_SITE_LOG_KEY, -1); // RPOP side (oldest)
279
- const newest = await redis.lindex(REDIS_SITE_LOG_KEY, 0); // LPUSH side (newest)
280
- if (oldest) {
281
- try {
282
- const parsed = JSON.parse(oldest);
283
- oldest_entry = {
284
- message: parsed.message,
285
- level: parsed.log_level,
286
- timestamp: parsed.created_at || parsed.queued_at,
287
- };
288
- }
289
- catch { }
290
- }
291
- if (newest) {
292
- try {
293
- const parsed = JSON.parse(newest);
294
- newest_entry = {
295
- message: parsed.message,
296
- level: parsed.log_level,
297
- timestamp: parsed.created_at || parsed.queued_at,
298
- };
299
- }
300
- catch { }
301
- }
302
- }
303
- return server_1.NextResponse.json({
304
- queue_length: queueLength,
305
- redis_key: REDIS_SITE_LOG_KEY,
306
- oldest_entry,
307
- newest_entry,
308
- status: queueLength === 0 ? 'empty' : 'pending',
309
- });
310
- }
311
- catch (error) {
312
- console.error('[admin/site-logs/queue] Error:', error);
313
- return server_1.NextResponse.json({ error: error.message || 'Internal error' }, { status: 500 });
314
- }
315
- },
316
- };
317
- }
@@ -1,20 +0,0 @@
1
- /**
2
- * Admin Stats API Handler
3
- *
4
- * Aggregates dashboard statistics from users, Redis sessions, and audit logs.
5
- * Uses service account HMAC auth for Vibe API requests.
6
- *
7
- * @version 1.0
8
- * @requires Admin role (vibe_app_admin or payez_admin)
9
- */
10
- import { NextRequest, NextResponse } from 'next/server';
11
- export interface AdminStatsHandlerConfig {
12
- appSlug?: string;
13
- }
14
- /**
15
- * GET /api/admin/stats - Dashboard statistics
16
- * Aggregates users + tier breakdown, active Redis sessions, and recent audit activity.
17
- */
18
- export declare function createStatsHandler(config: AdminStatsHandlerConfig): {
19
- GET(_request: NextRequest): Promise<NextResponse<unknown>>;
20
- };