@payez/next-mvp 4.0.1 → 4.0.2
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.
- package/dist/api/auth-handler.d.ts +66 -0
- package/dist/api/auth-handler.js +397 -0
- package/dist/api/index.d.ts +10 -0
- package/dist/api/index.js +19 -0
- package/dist/api-handlers/account/change-password.d.ts +9 -0
- package/dist/api-handlers/account/change-password.js +110 -0
- package/dist/api-handlers/account/masked-info.d.ts +2 -0
- package/dist/api-handlers/account/masked-info.js +41 -0
- package/dist/api-handlers/account/profile.d.ts +3 -0
- package/dist/api-handlers/account/profile.js +63 -0
- package/dist/api-handlers/account/recovery/initiate.d.ts +2 -0
- package/dist/api-handlers/account/recovery/initiate.js +26 -0
- package/dist/api-handlers/account/recovery/send-code.d.ts +2 -0
- package/dist/api-handlers/account/recovery/send-code.js +28 -0
- package/dist/api-handlers/account/recovery/verify-code.d.ts +2 -0
- package/dist/api-handlers/account/recovery/verify-code.js +28 -0
- package/dist/api-handlers/account/reset-password.d.ts +2 -0
- package/dist/api-handlers/account/reset-password.js +26 -0
- package/dist/api-handlers/account/send-code.d.ts +24 -0
- package/dist/api-handlers/account/send-code.js +60 -0
- package/dist/api-handlers/account/update-phone.d.ts +27 -0
- package/dist/api-handlers/account/update-phone.js +64 -0
- package/dist/api-handlers/account/validate-password.d.ts +17 -0
- package/dist/api-handlers/account/validate-password.js +81 -0
- package/dist/api-handlers/account/verify-email.d.ts +26 -0
- package/dist/api-handlers/account/verify-email.js +106 -0
- package/dist/api-handlers/account/verify-sms.d.ts +26 -0
- package/dist/api-handlers/account/verify-sms.js +106 -0
- package/dist/api-handlers/admin/analytics.d.ts +19 -0
- package/dist/api-handlers/admin/analytics.js +378 -0
- package/dist/api-handlers/admin/audit.d.ts +19 -0
- package/dist/api-handlers/admin/audit.js +213 -0
- package/dist/api-handlers/admin/index.d.ts +21 -0
- package/dist/api-handlers/admin/index.js +42 -0
- package/dist/api-handlers/admin/redis-sessions.d.ts +35 -0
- package/dist/api-handlers/admin/redis-sessions.js +203 -0
- package/dist/api-handlers/admin/sessions.d.ts +20 -0
- package/dist/api-handlers/admin/sessions.js +283 -0
- package/dist/api-handlers/admin/site-logs.d.ts +45 -0
- package/dist/api-handlers/admin/site-logs.js +317 -0
- package/dist/api-handlers/admin/stats.d.ts +20 -0
- package/dist/api-handlers/admin/stats.js +239 -0
- package/dist/api-handlers/admin/users.d.ts +19 -0
- package/dist/api-handlers/admin/users.js +221 -0
- package/dist/api-handlers/admin/vibe-data.d.ts +79 -0
- package/dist/api-handlers/admin/vibe-data.js +267 -0
- package/dist/api-handlers/anon/preferences.d.ts +37 -0
- package/dist/api-handlers/anon/preferences.js +96 -0
- package/dist/api-handlers/auth/jwks.d.ts +2 -0
- package/dist/api-handlers/auth/jwks.js +24 -0
- package/dist/api-handlers/auth/login.d.ts +42 -0
- package/dist/api-handlers/auth/login.js +178 -0
- package/dist/api-handlers/auth/refresh.d.ts +74 -0
- package/dist/api-handlers/auth/refresh.js +633 -0
- package/dist/api-handlers/auth/signout.d.ts +37 -0
- package/dist/api-handlers/auth/signout.js +186 -0
- package/dist/api-handlers/auth/status.d.ts +8 -0
- package/dist/api-handlers/auth/status.js +23 -0
- package/dist/api-handlers/auth/update-session.d.ts +37 -0
- package/dist/api-handlers/auth/update-session.js +93 -0
- package/dist/api-handlers/auth/validate.d.ts +6 -0
- package/dist/api-handlers/auth/validate.js +43 -0
- package/dist/api-handlers/auth/verify-code.d.ts +43 -0
- package/dist/api-handlers/auth/verify-code.js +90 -0
- package/dist/api-handlers/session/refresh-viability.d.ts +14 -0
- package/dist/api-handlers/session/refresh-viability.js +39 -0
- package/dist/api-handlers/session/viability.d.ts +13 -0
- package/dist/api-handlers/session/viability.js +114 -0
- package/dist/api-handlers/test/force-expire.d.ts +23 -0
- package/dist/api-handlers/test/force-expire.js +59 -0
- package/dist/auth/auth-decision.d.ts +39 -0
- package/dist/auth/auth-decision.js +182 -0
- package/dist/auth/better-auth.d.ts +79 -0
- package/dist/auth/better-auth.js +119 -0
- package/dist/auth/route-config.d.ts +66 -0
- package/dist/auth/route-config.js +190 -0
- package/dist/auth/types/auth-types.d.ts +417 -0
- package/dist/auth/types/auth-types.js +53 -0
- package/dist/auth/types/index.d.ts +6 -0
- package/dist/auth/types/index.js +22 -0
- package/dist/auth/unauthenticated-routes.d.ts +1 -0
- package/dist/auth/unauthenticated-routes.js +19 -0
- package/dist/auth/utils/idp-client.d.ts +94 -0
- package/dist/auth/utils/idp-client.js +384 -0
- package/dist/auth/utils/index.d.ts +5 -0
- package/dist/auth/utils/index.js +21 -0
- package/dist/auth/utils/token-utils.d.ts +83 -0
- package/dist/auth/utils/token-utils.js +218 -0
- package/dist/client/AuthContext.d.ts +19 -0
- package/dist/client/AuthContext.js +115 -0
- package/dist/client/better-auth-client.d.ts +1020 -0
- package/dist/client/better-auth-client.js +68 -0
- package/dist/client/fetch-with-auth.d.ts +11 -0
- package/dist/client/fetch-with-auth.js +44 -0
- package/dist/client/fetchWithSession.d.ts +3 -0
- package/dist/client/fetchWithSession.js +24 -0
- package/dist/client/index.d.ts +9 -0
- package/dist/client/index.js +20 -0
- package/dist/client/useAnonSession.d.ts +36 -0
- package/dist/client/useAnonSession.js +99 -0
- package/dist/components/SessionSync.d.ts +13 -0
- package/dist/components/SessionSync.js +121 -0
- package/dist/components/SignalRHealthCheck.d.ts +10 -0
- package/dist/components/SignalRHealthCheck.js +97 -0
- package/dist/components/account/MobileNavDrawer.d.ts +32 -0
- package/dist/components/account/MobileNavDrawer.js +81 -0
- package/dist/components/account/UserAvatarMenu.d.ts +20 -0
- package/dist/components/account/UserAvatarMenu.js +91 -0
- package/dist/components/account/index.d.ts +9 -0
- package/dist/components/account/index.js +13 -0
- package/dist/components/admin/AlertSettingsTab.d.ts +48 -0
- package/dist/components/admin/AlertSettingsTab.js +351 -0
- package/dist/components/admin/AnalyticsTab.d.ts +22 -0
- package/dist/components/admin/AnalyticsTab.js +167 -0
- package/dist/components/admin/DataBrowserTab.d.ts +19 -0
- package/dist/components/admin/DataBrowserTab.js +252 -0
- package/dist/components/admin/LoggingSettingsTab.d.ts +73 -0
- package/dist/components/admin/LoggingSettingsTab.js +339 -0
- package/dist/components/admin/SessionsTab.d.ts +37 -0
- package/dist/components/admin/SessionsTab.js +165 -0
- package/dist/components/admin/StatsTab.d.ts +53 -0
- package/dist/components/admin/StatsTab.js +161 -0
- package/dist/components/admin/VibeAdminContext.d.ts +32 -0
- package/dist/components/admin/VibeAdminContext.js +38 -0
- package/dist/components/admin/VibeAdminLayout.d.ts +11 -0
- package/dist/components/admin/VibeAdminLayout.js +71 -0
- package/dist/components/admin/index.d.ts +29 -0
- package/dist/components/admin/index.js +44 -0
- package/dist/components/auth/FederatedAuthSection.d.ts +8 -0
- package/dist/components/auth/FederatedAuthSection.js +45 -0
- package/dist/components/auth/ModeAwareLoginPage.d.ts +10 -0
- package/dist/components/auth/ModeAwareLoginPage.js +42 -0
- package/dist/components/auth/ModeAwareSignupPage.d.ts +9 -0
- package/dist/components/auth/ModeAwareSignupPage.js +78 -0
- package/dist/components/auth/TraditionalAuthSection.d.ts +14 -0
- package/dist/components/auth/TraditionalAuthSection.js +20 -0
- package/dist/components/recovery/CompleteStep.d.ts +5 -0
- package/dist/components/recovery/CompleteStep.js +8 -0
- package/dist/components/recovery/InitiateRecoveryStep.d.ts +8 -0
- package/dist/components/recovery/InitiateRecoveryStep.js +20 -0
- package/dist/components/recovery/SelectMethodStep.d.ts +8 -0
- package/dist/components/recovery/SelectMethodStep.js +8 -0
- package/dist/components/recovery/SetPasswordStep.d.ts +6 -0
- package/dist/components/recovery/SetPasswordStep.js +20 -0
- package/dist/components/recovery/VerifyCodeStep.d.ts +10 -0
- package/dist/components/recovery/VerifyCodeStep.js +24 -0
- package/dist/components/reserved/ReservedRecoveryWarning.d.ts +38 -0
- package/dist/components/reserved/ReservedRecoveryWarning.js +92 -0
- package/dist/components/reserved/ReservedStatusBox.d.ts +30 -0
- package/dist/components/reserved/ReservedStatusBox.js +71 -0
- package/dist/components/ui/BetaBadge.d.ts +29 -0
- package/dist/components/ui/BetaBadge.js +38 -0
- package/dist/components/ui/Footer.d.ts +37 -0
- package/dist/components/ui/Footer.js +41 -0
- package/dist/config/env.d.ts +66 -0
- package/dist/config/env.js +57 -0
- package/dist/config/logger.d.ts +57 -0
- package/dist/config/logger.js +73 -0
- package/dist/config/logging-config.d.ts +30 -0
- package/dist/config/logging-config.js +122 -0
- package/dist/config/unauthenticated-routes.d.ts +17 -0
- package/dist/config/unauthenticated-routes.js +24 -0
- package/dist/config/vibe-log-transport.d.ts +81 -0
- package/dist/config/vibe-log-transport.js +212 -0
- package/dist/edge/internal-api-url.d.ts +53 -0
- package/dist/edge/internal-api-url.js +63 -0
- package/dist/edge/middleware.d.ts +14 -0
- package/dist/edge/middleware.js +32 -0
- package/dist/hooks/useAuth.d.ts +23 -0
- package/dist/hooks/useAuth.js +83 -0
- package/dist/hooks/useAuthSettings.d.ts +59 -0
- package/dist/hooks/useAuthSettings.js +93 -0
- package/dist/hooks/useAvailableProviders.d.ts +43 -0
- package/dist/hooks/useAvailableProviders.js +112 -0
- package/dist/hooks/usePasswordValidation.d.ts +27 -0
- package/dist/hooks/usePasswordValidation.js +102 -0
- package/dist/hooks/useProfile.d.ts +15 -0
- package/dist/hooks/useProfile.js +59 -0
- package/dist/hooks/usePublicAuthSettings.d.ts +56 -0
- package/dist/hooks/usePublicAuthSettings.js +131 -0
- package/dist/hooks/useSessionExpiration.d.ts +56 -0
- package/dist/hooks/useSessionExpiration.js +72 -0
- package/dist/hooks/useViabilitySession.d.ts +75 -0
- package/dist/hooks/useViabilitySession.js +269 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +53 -0
- package/dist/lib/anon-session.d.ts +74 -0
- package/dist/lib/anon-session.js +169 -0
- package/dist/lib/api-handler.d.ts +123 -0
- package/dist/lib/api-handler.js +478 -0
- package/dist/lib/app-slug.d.ts +95 -0
- package/dist/lib/app-slug.js +172 -0
- package/dist/lib/demo-mode.d.ts +6 -0
- package/dist/lib/demo-mode.js +16 -0
- package/dist/lib/geolocation.d.ts +64 -0
- package/dist/lib/geolocation.js +235 -0
- package/dist/lib/idp-client-config.d.ts +75 -0
- package/dist/lib/idp-client-config.js +425 -0
- package/dist/lib/idp-fetch.d.ts +14 -0
- package/dist/lib/idp-fetch.js +91 -0
- package/dist/lib/internal-api.d.ts +87 -0
- package/dist/lib/internal-api.js +122 -0
- package/dist/lib/jwt-decode-client.d.ts +10 -0
- package/dist/lib/jwt-decode-client.js +46 -0
- package/dist/lib/jwt-decode.d.ts +48 -0
- package/dist/lib/jwt-decode.js +57 -0
- package/dist/lib/rate-limit-service.d.ts +23 -0
- package/dist/lib/rate-limit-service.js +6 -0
- package/dist/lib/redis.d.ts +5 -0
- package/dist/lib/redis.js +28 -0
- package/dist/lib/refresh-token-validator.d.ts +13 -0
- package/dist/lib/refresh-token-validator.js +117 -0
- package/dist/lib/roles.d.ts +145 -0
- package/dist/lib/roles.js +168 -0
- package/dist/lib/secret-validation.d.ts +4 -0
- package/dist/lib/secret-validation.js +14 -0
- package/dist/lib/session-store.d.ts +170 -0
- package/dist/lib/session-store.js +545 -0
- package/dist/lib/session.d.ts +21 -0
- package/dist/lib/session.js +26 -0
- package/dist/lib/site-logger.d.ts +214 -0
- package/dist/lib/site-logger.js +210 -0
- package/dist/lib/standardized-client-api.d.ts +161 -0
- package/dist/lib/standardized-client-api.js +791 -0
- package/dist/lib/startup-init.d.ts +40 -0
- package/dist/lib/startup-init.js +257 -0
- package/dist/lib/test-aware-get-token.d.ts +2 -0
- package/dist/lib/test-aware-get-token.js +86 -0
- package/dist/lib/token-expiry.d.ts +14 -0
- package/dist/lib/token-expiry.js +39 -0
- package/dist/lib/token-lifecycle.d.ts +78 -0
- package/dist/lib/token-lifecycle.js +360 -0
- package/dist/lib/types/api-responses.d.ts +128 -0
- package/dist/lib/types/api-responses.js +171 -0
- package/dist/lib/user-agent-parser.d.ts +50 -0
- package/dist/lib/user-agent-parser.js +220 -0
- package/dist/logging/api/admin-analytics.d.ts +3 -0
- package/dist/logging/api/admin-analytics.js +45 -0
- package/dist/logging/api/audit-log.d.ts +3 -0
- package/dist/logging/api/audit-log.js +52 -0
- package/dist/logging/components/AdminAnalyticsLayout.d.ts +10 -0
- package/dist/logging/components/AdminAnalyticsLayout.js +11 -0
- package/dist/logging/components/AuditLogViewer.d.ts +7 -0
- package/dist/logging/components/AuditLogViewer.js +51 -0
- package/dist/logging/components/ErrorMetricsCard.d.ts +7 -0
- package/dist/logging/components/ErrorMetricsCard.js +16 -0
- package/dist/logging/components/HealthMetricsCard.d.ts +7 -0
- package/dist/logging/components/HealthMetricsCard.js +19 -0
- package/dist/logging/hooks/useAdminAnalytics.d.ts +24 -0
- package/dist/logging/hooks/useAdminAnalytics.js +22 -0
- package/dist/logging/hooks/useAuditLog.d.ts +6 -0
- package/dist/logging/hooks/useAuditLog.js +25 -0
- package/dist/logging/hooks/useErrorMetrics.d.ts +6 -0
- package/dist/logging/hooks/useErrorMetrics.js +38 -0
- package/dist/logging/hooks/useHealthMetrics.d.ts +6 -0
- package/dist/logging/hooks/useHealthMetrics.js +41 -0
- package/dist/logging/index.d.ts +11 -0
- package/dist/logging/index.js +40 -0
- package/dist/logging/types/analytics.d.ts +68 -0
- package/dist/logging/types/analytics.js +3 -0
- package/dist/logging/types/audit.d.ts +29 -0
- package/dist/logging/types/audit.js +2 -0
- package/dist/logging/types/index.d.ts +2 -0
- package/dist/logging/types/index.js +19 -0
- package/dist/middleware/auth-decision.d.ts +33 -0
- package/dist/middleware/auth-decision.js +65 -0
- package/dist/middleware/create-middleware.d.ts +102 -0
- package/dist/middleware/create-middleware.js +469 -0
- package/dist/middleware/rbac-check.d.ts +51 -0
- package/dist/middleware/rbac-check.js +219 -0
- package/dist/middleware/twofa-presets.d.ts +134 -0
- package/dist/middleware/twofa-presets.js +175 -0
- package/dist/models/DecodedAccessToken.d.ts +17 -0
- package/dist/models/DecodedAccessToken.js +2 -0
- package/dist/models/SessionModel.d.ts +122 -0
- package/dist/models/SessionModel.js +136 -0
- package/dist/pages/admin-login/page.d.ts +31 -0
- package/dist/pages/admin-login/page.js +73 -0
- package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.d.ts +18 -0
- package/dist/pages/admin-page-permissions/PagePermissionsAdminPage.js +276 -0
- package/dist/pages/admin-page-permissions/index.d.ts +6 -0
- package/dist/pages/admin-page-permissions/index.js +13 -0
- package/dist/pages/admin-roles/RolesAdminPage.d.ts +16 -0
- package/dist/pages/admin-roles/RolesAdminPage.js +261 -0
- package/dist/pages/admin-roles/index.d.ts +8 -0
- package/dist/pages/admin-roles/index.js +15 -0
- package/dist/pages/admin-roles/modals.d.ts +72 -0
- package/dist/pages/admin-roles/modals.js +154 -0
- package/dist/pages/client-admin/ClientSiteAdminPage.d.ts +79 -0
- package/dist/pages/client-admin/ClientSiteAdminPage.js +179 -0
- package/dist/pages/client-admin/index.d.ts +32 -0
- package/dist/pages/client-admin/index.js +37 -0
- package/dist/pages/coming-soon/page.d.ts +8 -0
- package/dist/pages/coming-soon/page.js +28 -0
- package/dist/pages/login/page.d.ts +22 -0
- package/dist/pages/login/page.js +230 -0
- package/dist/pages/profile/EnhancedProfilePage.d.ts +13 -0
- package/dist/pages/profile/EnhancedProfilePage.js +150 -0
- package/dist/pages/profile/index.d.ts +8 -0
- package/dist/pages/profile/index.js +16 -0
- package/dist/pages/profile/page.d.ts +19 -0
- package/dist/pages/profile/page.js +47 -0
- package/dist/pages/recovery/page.d.ts +1 -0
- package/dist/pages/recovery/page.js +142 -0
- package/dist/pages/roles/MyRolesPage.d.ts +24 -0
- package/dist/pages/roles/MyRolesPage.js +71 -0
- package/dist/pages/roles/components.d.ts +63 -0
- package/dist/pages/roles/components.js +108 -0
- package/dist/pages/roles/index.d.ts +8 -0
- package/dist/pages/roles/index.js +19 -0
- package/dist/pages/security/EnhancedSecurityPage.d.ts +14 -0
- package/dist/pages/security/EnhancedSecurityPage.js +248 -0
- package/dist/pages/security/index.d.ts +8 -0
- package/dist/pages/security/index.js +16 -0
- package/dist/pages/security/page.d.ts +21 -0
- package/dist/pages/security/page.js +212 -0
- package/dist/pages/settings/EnhancedSettingsPage.d.ts +46 -0
- package/dist/pages/settings/EnhancedSettingsPage.js +231 -0
- package/dist/pages/settings/index.d.ts +8 -0
- package/dist/pages/settings/index.js +16 -0
- package/dist/pages/settings/page.d.ts +7 -0
- package/dist/pages/settings/page.js +26 -0
- package/dist/pages/showcase/ShowcasePage.d.ts +13 -0
- package/dist/pages/showcase/ShowcasePage.js +142 -0
- package/dist/pages/showcase/index.d.ts +12 -0
- package/dist/pages/showcase/index.js +17 -0
- package/dist/pages/test-env/EmergencyLogoutPage.d.ts +14 -0
- package/dist/pages/test-env/EmergencyLogoutPage.js +99 -0
- package/dist/pages/test-env/JwtInspectPage.d.ts +14 -0
- package/dist/pages/test-env/JwtInspectPage.js +116 -0
- package/dist/pages/test-env/RefreshTokenPage.d.ts +15 -0
- package/dist/pages/test-env/RefreshTokenPage.js +93 -0
- package/dist/pages/test-env/TestEnvPage.d.ts +13 -0
- package/dist/pages/test-env/TestEnvPage.js +51 -0
- package/dist/pages/test-env/index.d.ts +24 -0
- package/dist/pages/test-env/index.js +32 -0
- package/dist/pages/verify-code/page.d.ts +30 -0
- package/dist/pages/verify-code/page.js +412 -0
- package/dist/routes/account/index.d.ts +28 -0
- package/dist/routes/account/index.js +71 -0
- package/dist/routes/account/masked-info.d.ts +33 -0
- package/dist/routes/account/masked-info.js +39 -0
- package/dist/routes/account/send-code.d.ts +37 -0
- package/dist/routes/account/send-code.js +42 -0
- package/dist/routes/account/update-phone.d.ts +13 -0
- package/dist/routes/account/update-phone.js +17 -0
- package/dist/routes/account/verify-email.d.ts +38 -0
- package/dist/routes/account/verify-email.js +43 -0
- package/dist/routes/account/verify-sms.d.ts +38 -0
- package/dist/routes/account/verify-sms.js +43 -0
- package/dist/routes/auth/index.d.ts +19 -0
- package/dist/routes/auth/index.js +64 -0
- package/dist/routes/auth/logout.d.ts +31 -0
- package/dist/routes/auth/logout.js +98 -0
- package/dist/routes/auth/nextauth.d.ts +22 -0
- package/dist/routes/auth/nextauth.js +40 -0
- package/dist/routes/auth/refresh.d.ts +30 -0
- package/dist/routes/auth/refresh.js +51 -0
- package/dist/routes/auth/session.d.ts +43 -0
- package/dist/routes/auth/session.js +157 -0
- package/dist/routes/auth/settings.d.ts +25 -0
- package/dist/routes/auth/settings.js +55 -0
- package/dist/routes/auth/viability.d.ts +52 -0
- package/dist/routes/auth/viability.js +190 -0
- package/dist/routes/index.d.ts +12 -0
- package/dist/routes/index.js +54 -0
- package/dist/routes/session/index.d.ts +6 -0
- package/dist/routes/session/index.js +10 -0
- package/dist/routes/session/refresh-viability.d.ts +16 -0
- package/dist/routes/session/refresh-viability.js +20 -0
- package/dist/server/auth-guard.d.ts +46 -0
- package/dist/server/auth-guard.js +128 -0
- package/dist/server/auth.d.ts +50 -0
- package/dist/server/auth.js +62 -0
- package/dist/server/decode-session.d.ts +30 -0
- package/dist/server/decode-session.js +78 -0
- package/dist/server/slim-middleware.d.ts +23 -0
- package/dist/server/slim-middleware.js +89 -0
- package/dist/server/with-auth.d.ts +33 -0
- package/dist/server/with-auth.js +59 -0
- package/dist/services/signalrActivityService.d.ts +44 -0
- package/dist/services/signalrActivityService.js +257 -0
- package/dist/stores/authStore.d.ts +154 -0
- package/dist/stores/authStore.js +1527 -0
- package/dist/theme/ThemeProvider.d.ts +14 -0
- package/dist/theme/ThemeProvider.js +28 -0
- package/dist/theme/default.d.ts +8 -0
- package/dist/theme/default.js +33 -0
- package/dist/theme/index.d.ts +15 -0
- package/dist/theme/index.js +25 -0
- package/dist/theme/types.d.ts +56 -0
- package/dist/theme/types.js +8 -0
- package/dist/theme/useTheme.d.ts +60 -0
- package/dist/theme/useTheme.js +63 -0
- package/dist/theme/utils.d.ts +13 -0
- package/dist/theme/utils.js +39 -0
- package/dist/types/api.d.ts +134 -0
- package/dist/types/api.js +44 -0
- package/dist/types/auth.d.ts +19 -0
- package/dist/types/auth.js +2 -0
- package/dist/types/logging.d.ts +42 -0
- package/dist/types/logging.js +2 -0
- package/dist/types/recovery.d.ts +48 -0
- package/dist/types/recovery.js +2 -0
- package/dist/types/security.d.ts +1 -0
- package/dist/types/security.js +2 -0
- package/dist/utils/api.d.ts +85 -0
- package/dist/utils/api.js +287 -0
- package/dist/utils/circuitBreaker.d.ts +43 -0
- package/dist/utils/circuitBreaker.js +91 -0
- package/dist/utils/error-message.d.ts +1 -0
- package/dist/utils/error-message.js +103 -0
- package/dist/utils/layout/reservedSpace.d.ts +59 -0
- package/dist/utils/layout/reservedSpace.js +102 -0
- package/dist/utils/logout.d.ts +14 -0
- package/dist/utils/logout.js +32 -0
- package/dist/vibe/client.d.ts +261 -0
- package/dist/vibe/client.js +445 -0
- package/dist/vibe/enterprise-auth.d.ts +106 -0
- package/dist/vibe/enterprise-auth.js +173 -0
- package/dist/vibe/errors.d.ts +83 -0
- package/dist/vibe/errors.js +146 -0
- package/dist/vibe/generic.d.ts +234 -0
- package/dist/vibe/generic.js +369 -0
- package/dist/vibe/hooks/index.d.ts +169 -0
- package/dist/vibe/hooks/index.js +252 -0
- package/dist/vibe/index.d.ts +25 -0
- package/dist/vibe/index.js +72 -0
- package/dist/vibe/sessions.d.ts +161 -0
- package/dist/vibe/sessions.js +391 -0
- package/dist/vibe/types.d.ts +353 -0
- package/dist/vibe/types.js +315 -0
- package/package.json +1 -1
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Site Logger Utility
|
|
3
|
+
*
|
|
4
|
+
* Logs user activity events to the site_logs table via Redis buffer.
|
|
5
|
+
* Fire-and-forget - logging failures never break the app.
|
|
6
|
+
*
|
|
7
|
+
* Uses Redis queue (vibe:site-logs:pending) which is drained by
|
|
8
|
+
* DotNetPert's SiteLogDrainBackgroundService to Vibe site_logs table.
|
|
9
|
+
*
|
|
10
|
+
* @version 1.0
|
|
11
|
+
*/
|
|
12
|
+
export type SiteLogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
13
|
+
export type SiteLogCategory = 'auth' | 'session' | 'navigation' | 'user_action' | 'page_view' | 'error' | 'api';
|
|
14
|
+
export interface SiteLogEntry {
|
|
15
|
+
level: SiteLogLevel;
|
|
16
|
+
category: SiteLogCategory;
|
|
17
|
+
message: string;
|
|
18
|
+
context?: Record<string, unknown>;
|
|
19
|
+
user_id?: string | number;
|
|
20
|
+
session_id?: string;
|
|
21
|
+
url?: string;
|
|
22
|
+
user_agent?: string;
|
|
23
|
+
ip_address?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface SiteLoggerConfig {
|
|
26
|
+
app_slug?: string;
|
|
27
|
+
vibe_client_id?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Configure the site logger with app-specific settings
|
|
31
|
+
*/
|
|
32
|
+
export declare function configureSiteLogger(config: SiteLoggerConfig): void;
|
|
33
|
+
/**
|
|
34
|
+
* Log a site event to the site_logs table
|
|
35
|
+
* Fire-and-forget - never awaited in critical path
|
|
36
|
+
*/
|
|
37
|
+
export declare function logSiteEvent(entry: SiteLogEntry): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Helper to extract client IP from request headers
|
|
40
|
+
*/
|
|
41
|
+
export declare function getClientIp(headers: Headers | Record<string, string | string[] | undefined>): string | null;
|
|
42
|
+
/**
|
|
43
|
+
* Pre-built event loggers for common auth events
|
|
44
|
+
*/
|
|
45
|
+
export declare const siteEvents: {
|
|
46
|
+
loginSuccess: (opts: {
|
|
47
|
+
user_id: string | number;
|
|
48
|
+
session_id?: string;
|
|
49
|
+
method?: string;
|
|
50
|
+
provider?: string;
|
|
51
|
+
url?: string;
|
|
52
|
+
user_agent?: string;
|
|
53
|
+
ip_address?: string;
|
|
54
|
+
}) => void;
|
|
55
|
+
loginFailed: (opts: {
|
|
56
|
+
reason: string;
|
|
57
|
+
email?: string;
|
|
58
|
+
url?: string;
|
|
59
|
+
user_agent?: string;
|
|
60
|
+
ip_address?: string;
|
|
61
|
+
}) => void;
|
|
62
|
+
logout: (opts: {
|
|
63
|
+
user_id: string | number;
|
|
64
|
+
session_id?: string;
|
|
65
|
+
trigger?: "user" | "session_timeout" | "admin";
|
|
66
|
+
url?: string;
|
|
67
|
+
user_agent?: string;
|
|
68
|
+
ip_address?: string;
|
|
69
|
+
}) => void;
|
|
70
|
+
twoFactorSuccess: (opts: {
|
|
71
|
+
user_id: string | number;
|
|
72
|
+
session_id?: string;
|
|
73
|
+
method: "totp" | "sms" | "email";
|
|
74
|
+
url?: string;
|
|
75
|
+
user_agent?: string;
|
|
76
|
+
ip_address?: string;
|
|
77
|
+
}) => void;
|
|
78
|
+
twoFactorFailed: (opts: {
|
|
79
|
+
user_id?: string | number;
|
|
80
|
+
method: "totp" | "sms" | "email";
|
|
81
|
+
attempts?: number;
|
|
82
|
+
url?: string;
|
|
83
|
+
user_agent?: string;
|
|
84
|
+
ip_address?: string;
|
|
85
|
+
}) => void;
|
|
86
|
+
sessionCreated: (opts: {
|
|
87
|
+
user_id: string | number;
|
|
88
|
+
session_id: string;
|
|
89
|
+
device_type?: string;
|
|
90
|
+
user_agent?: string;
|
|
91
|
+
ip_address?: string;
|
|
92
|
+
}) => void;
|
|
93
|
+
adminAccess: (opts: {
|
|
94
|
+
user_id: string | number;
|
|
95
|
+
page: string;
|
|
96
|
+
session_id?: string;
|
|
97
|
+
user_agent?: string;
|
|
98
|
+
ip_address?: string;
|
|
99
|
+
}) => void;
|
|
100
|
+
pageView: (opts: {
|
|
101
|
+
url: string;
|
|
102
|
+
user_id?: string | number;
|
|
103
|
+
session_id?: string;
|
|
104
|
+
referrer?: string;
|
|
105
|
+
user_agent?: string;
|
|
106
|
+
ip_address?: string;
|
|
107
|
+
}) => void;
|
|
108
|
+
error: (opts: {
|
|
109
|
+
message: string;
|
|
110
|
+
error?: string;
|
|
111
|
+
stack?: string;
|
|
112
|
+
user_id?: string | number;
|
|
113
|
+
url?: string;
|
|
114
|
+
user_agent?: string;
|
|
115
|
+
ip_address?: string;
|
|
116
|
+
}) => void;
|
|
117
|
+
userAction: (opts: {
|
|
118
|
+
action: string;
|
|
119
|
+
target?: string;
|
|
120
|
+
user_id?: string | number;
|
|
121
|
+
session_id?: string;
|
|
122
|
+
url?: string;
|
|
123
|
+
user_agent?: string;
|
|
124
|
+
ip_address?: string;
|
|
125
|
+
}) => void;
|
|
126
|
+
};
|
|
127
|
+
declare const _default: {
|
|
128
|
+
logSiteEvent: typeof logSiteEvent;
|
|
129
|
+
getClientIp: typeof getClientIp;
|
|
130
|
+
siteEvents: {
|
|
131
|
+
loginSuccess: (opts: {
|
|
132
|
+
user_id: string | number;
|
|
133
|
+
session_id?: string;
|
|
134
|
+
method?: string;
|
|
135
|
+
provider?: string;
|
|
136
|
+
url?: string;
|
|
137
|
+
user_agent?: string;
|
|
138
|
+
ip_address?: string;
|
|
139
|
+
}) => void;
|
|
140
|
+
loginFailed: (opts: {
|
|
141
|
+
reason: string;
|
|
142
|
+
email?: string;
|
|
143
|
+
url?: string;
|
|
144
|
+
user_agent?: string;
|
|
145
|
+
ip_address?: string;
|
|
146
|
+
}) => void;
|
|
147
|
+
logout: (opts: {
|
|
148
|
+
user_id: string | number;
|
|
149
|
+
session_id?: string;
|
|
150
|
+
trigger?: "user" | "session_timeout" | "admin";
|
|
151
|
+
url?: string;
|
|
152
|
+
user_agent?: string;
|
|
153
|
+
ip_address?: string;
|
|
154
|
+
}) => void;
|
|
155
|
+
twoFactorSuccess: (opts: {
|
|
156
|
+
user_id: string | number;
|
|
157
|
+
session_id?: string;
|
|
158
|
+
method: "totp" | "sms" | "email";
|
|
159
|
+
url?: string;
|
|
160
|
+
user_agent?: string;
|
|
161
|
+
ip_address?: string;
|
|
162
|
+
}) => void;
|
|
163
|
+
twoFactorFailed: (opts: {
|
|
164
|
+
user_id?: string | number;
|
|
165
|
+
method: "totp" | "sms" | "email";
|
|
166
|
+
attempts?: number;
|
|
167
|
+
url?: string;
|
|
168
|
+
user_agent?: string;
|
|
169
|
+
ip_address?: string;
|
|
170
|
+
}) => void;
|
|
171
|
+
sessionCreated: (opts: {
|
|
172
|
+
user_id: string | number;
|
|
173
|
+
session_id: string;
|
|
174
|
+
device_type?: string;
|
|
175
|
+
user_agent?: string;
|
|
176
|
+
ip_address?: string;
|
|
177
|
+
}) => void;
|
|
178
|
+
adminAccess: (opts: {
|
|
179
|
+
user_id: string | number;
|
|
180
|
+
page: string;
|
|
181
|
+
session_id?: string;
|
|
182
|
+
user_agent?: string;
|
|
183
|
+
ip_address?: string;
|
|
184
|
+
}) => void;
|
|
185
|
+
pageView: (opts: {
|
|
186
|
+
url: string;
|
|
187
|
+
user_id?: string | number;
|
|
188
|
+
session_id?: string;
|
|
189
|
+
referrer?: string;
|
|
190
|
+
user_agent?: string;
|
|
191
|
+
ip_address?: string;
|
|
192
|
+
}) => void;
|
|
193
|
+
error: (opts: {
|
|
194
|
+
message: string;
|
|
195
|
+
error?: string;
|
|
196
|
+
stack?: string;
|
|
197
|
+
user_id?: string | number;
|
|
198
|
+
url?: string;
|
|
199
|
+
user_agent?: string;
|
|
200
|
+
ip_address?: string;
|
|
201
|
+
}) => void;
|
|
202
|
+
userAction: (opts: {
|
|
203
|
+
action: string;
|
|
204
|
+
target?: string;
|
|
205
|
+
user_id?: string | number;
|
|
206
|
+
session_id?: string;
|
|
207
|
+
url?: string;
|
|
208
|
+
user_agent?: string;
|
|
209
|
+
ip_address?: string;
|
|
210
|
+
}) => void;
|
|
211
|
+
};
|
|
212
|
+
configureSiteLogger: typeof configureSiteLogger;
|
|
213
|
+
};
|
|
214
|
+
export default _default;
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Site Logger Utility
|
|
4
|
+
*
|
|
5
|
+
* Logs user activity events to the site_logs table via Redis buffer.
|
|
6
|
+
* Fire-and-forget - logging failures never break the app.
|
|
7
|
+
*
|
|
8
|
+
* Uses Redis queue (vibe:site-logs:pending) which is drained by
|
|
9
|
+
* DotNetPert's SiteLogDrainBackgroundService to Vibe site_logs table.
|
|
10
|
+
*
|
|
11
|
+
* @version 1.0
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.siteEvents = void 0;
|
|
15
|
+
exports.configureSiteLogger = configureSiteLogger;
|
|
16
|
+
exports.logSiteEvent = logSiteEvent;
|
|
17
|
+
exports.getClientIp = getClientIp;
|
|
18
|
+
const redis_1 = require("./redis");
|
|
19
|
+
// Redis key for site logs (separate from data_logs)
|
|
20
|
+
const REDIS_SITE_LOG_KEY = 'vibe:site-logs:pending';
|
|
21
|
+
const REDIS_LOG_TTL = 7 * 24 * 60 * 60; // 1 week
|
|
22
|
+
let _config = {};
|
|
23
|
+
/**
|
|
24
|
+
* Configure the site logger with app-specific settings
|
|
25
|
+
*/
|
|
26
|
+
function configureSiteLogger(config) {
|
|
27
|
+
_config = { ..._config, ...config };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Log a site event to the site_logs table
|
|
31
|
+
* Fire-and-forget - never awaited in critical path
|
|
32
|
+
*/
|
|
33
|
+
async function logSiteEvent(entry) {
|
|
34
|
+
try {
|
|
35
|
+
const redis = (0, redis_1.getRedis)();
|
|
36
|
+
const logRecord = JSON.stringify({
|
|
37
|
+
log_level: entry.level,
|
|
38
|
+
category: entry.category,
|
|
39
|
+
message: entry.message,
|
|
40
|
+
context: entry.context || {},
|
|
41
|
+
user_id: entry.user_id ? (typeof entry.user_id === 'number' ? entry.user_id : null) : null,
|
|
42
|
+
session_id: entry.session_id || null,
|
|
43
|
+
url: entry.url || null,
|
|
44
|
+
user_agent: entry.user_agent || null,
|
|
45
|
+
ip_address: entry.ip_address || null,
|
|
46
|
+
created_at: new Date().toISOString(),
|
|
47
|
+
app_slug: _config.app_slug || process.env.APP_SLUG || process.env.CLIENT_ID || 'unknown',
|
|
48
|
+
vibe_client_id: _config.vibe_client_id || process.env.VIBE_CLIENT_ID || '',
|
|
49
|
+
});
|
|
50
|
+
// Fire and forget - use .then().catch() to not block
|
|
51
|
+
console.log('[site-logger] Pushing to Redis:', REDIS_SITE_LOG_KEY, entry.category, entry.message);
|
|
52
|
+
redis.lpush(REDIS_SITE_LOG_KEY, logRecord).then((result) => {
|
|
53
|
+
console.log('[site-logger] Redis push success, queue length:', result);
|
|
54
|
+
redis.expire(REDIS_SITE_LOG_KEY, REDIS_LOG_TTL).catch(() => { });
|
|
55
|
+
}).catch(err => {
|
|
56
|
+
console.error('[site-logger] Redis push failed:', err.message);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
// Fail silently - logging should never break the app
|
|
61
|
+
console.error('[site-logger] Failed to log event:', error);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Helper to extract client IP from request headers
|
|
66
|
+
*/
|
|
67
|
+
function getClientIp(headers) {
|
|
68
|
+
const getHeader = (name) => {
|
|
69
|
+
if (headers instanceof Headers) {
|
|
70
|
+
return headers.get(name);
|
|
71
|
+
}
|
|
72
|
+
const value = headers[name];
|
|
73
|
+
return Array.isArray(value) ? value[0] : value || null;
|
|
74
|
+
};
|
|
75
|
+
return (getHeader('x-forwarded-for')?.split(',')[0]?.trim() ||
|
|
76
|
+
getHeader('x-real-ip') ||
|
|
77
|
+
getHeader('cf-connecting-ip') ||
|
|
78
|
+
null);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Pre-built event loggers for common auth events
|
|
82
|
+
*/
|
|
83
|
+
exports.siteEvents = {
|
|
84
|
+
loginSuccess: (opts) => {
|
|
85
|
+
logSiteEvent({
|
|
86
|
+
level: 'info',
|
|
87
|
+
category: 'auth',
|
|
88
|
+
message: 'User logged in',
|
|
89
|
+
context: { method: opts.method || 'password', provider: opts.provider },
|
|
90
|
+
user_id: opts.user_id,
|
|
91
|
+
session_id: opts.session_id,
|
|
92
|
+
url: opts.url || '/auth/login',
|
|
93
|
+
user_agent: opts.user_agent,
|
|
94
|
+
ip_address: opts.ip_address,
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
loginFailed: (opts) => {
|
|
98
|
+
logSiteEvent({
|
|
99
|
+
level: 'warn',
|
|
100
|
+
category: 'auth',
|
|
101
|
+
message: 'Login failed',
|
|
102
|
+
context: { reason: opts.reason, email: opts.email },
|
|
103
|
+
url: opts.url || '/auth/login',
|
|
104
|
+
user_agent: opts.user_agent,
|
|
105
|
+
ip_address: opts.ip_address,
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
logout: (opts) => {
|
|
109
|
+
logSiteEvent({
|
|
110
|
+
level: 'info',
|
|
111
|
+
category: 'auth',
|
|
112
|
+
message: 'User logged out',
|
|
113
|
+
context: { trigger: opts.trigger || 'user' },
|
|
114
|
+
user_id: opts.user_id,
|
|
115
|
+
session_id: opts.session_id,
|
|
116
|
+
url: opts.url || '/auth/logout',
|
|
117
|
+
user_agent: opts.user_agent,
|
|
118
|
+
ip_address: opts.ip_address,
|
|
119
|
+
});
|
|
120
|
+
},
|
|
121
|
+
twoFactorSuccess: (opts) => {
|
|
122
|
+
logSiteEvent({
|
|
123
|
+
level: 'info',
|
|
124
|
+
category: 'auth',
|
|
125
|
+
message: '2FA verified',
|
|
126
|
+
context: { method: opts.method },
|
|
127
|
+
user_id: opts.user_id,
|
|
128
|
+
session_id: opts.session_id,
|
|
129
|
+
url: opts.url || '/auth/2fa',
|
|
130
|
+
user_agent: opts.user_agent,
|
|
131
|
+
ip_address: opts.ip_address,
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
twoFactorFailed: (opts) => {
|
|
135
|
+
logSiteEvent({
|
|
136
|
+
level: 'warn',
|
|
137
|
+
category: 'auth',
|
|
138
|
+
message: '2FA verification failed',
|
|
139
|
+
context: { method: opts.method, attempts: opts.attempts },
|
|
140
|
+
user_id: opts.user_id,
|
|
141
|
+
url: opts.url || '/auth/2fa',
|
|
142
|
+
user_agent: opts.user_agent,
|
|
143
|
+
ip_address: opts.ip_address,
|
|
144
|
+
});
|
|
145
|
+
},
|
|
146
|
+
sessionCreated: (opts) => {
|
|
147
|
+
logSiteEvent({
|
|
148
|
+
level: 'info',
|
|
149
|
+
category: 'session',
|
|
150
|
+
message: 'Session created',
|
|
151
|
+
context: { device_type: opts.device_type },
|
|
152
|
+
user_id: opts.user_id,
|
|
153
|
+
session_id: opts.session_id,
|
|
154
|
+
user_agent: opts.user_agent,
|
|
155
|
+
ip_address: opts.ip_address,
|
|
156
|
+
});
|
|
157
|
+
},
|
|
158
|
+
adminAccess: (opts) => {
|
|
159
|
+
logSiteEvent({
|
|
160
|
+
level: 'info',
|
|
161
|
+
category: 'navigation',
|
|
162
|
+
message: 'Admin panel accessed',
|
|
163
|
+
context: { page: opts.page },
|
|
164
|
+
user_id: opts.user_id,
|
|
165
|
+
session_id: opts.session_id,
|
|
166
|
+
url: opts.page,
|
|
167
|
+
user_agent: opts.user_agent,
|
|
168
|
+
ip_address: opts.ip_address,
|
|
169
|
+
});
|
|
170
|
+
},
|
|
171
|
+
pageView: (opts) => {
|
|
172
|
+
logSiteEvent({
|
|
173
|
+
level: 'info',
|
|
174
|
+
category: 'page_view',
|
|
175
|
+
message: 'Page viewed',
|
|
176
|
+
context: { referrer: opts.referrer },
|
|
177
|
+
user_id: opts.user_id,
|
|
178
|
+
session_id: opts.session_id,
|
|
179
|
+
url: opts.url,
|
|
180
|
+
user_agent: opts.user_agent,
|
|
181
|
+
ip_address: opts.ip_address,
|
|
182
|
+
});
|
|
183
|
+
},
|
|
184
|
+
error: (opts) => {
|
|
185
|
+
logSiteEvent({
|
|
186
|
+
level: 'error',
|
|
187
|
+
category: 'error',
|
|
188
|
+
message: opts.message,
|
|
189
|
+
context: { error: opts.error, stack: opts.stack },
|
|
190
|
+
user_id: opts.user_id,
|
|
191
|
+
url: opts.url,
|
|
192
|
+
user_agent: opts.user_agent,
|
|
193
|
+
ip_address: opts.ip_address,
|
|
194
|
+
});
|
|
195
|
+
},
|
|
196
|
+
userAction: (opts) => {
|
|
197
|
+
logSiteEvent({
|
|
198
|
+
level: 'info',
|
|
199
|
+
category: 'user_action',
|
|
200
|
+
message: opts.action,
|
|
201
|
+
context: { target: opts.target },
|
|
202
|
+
user_id: opts.user_id,
|
|
203
|
+
session_id: opts.session_id,
|
|
204
|
+
url: opts.url,
|
|
205
|
+
user_agent: opts.user_agent,
|
|
206
|
+
ip_address: opts.ip_address,
|
|
207
|
+
});
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
exports.default = { logSiteEvent, getClientIp, siteEvents: exports.siteEvents, configureSiteLogger };
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ERROR THROWN WHEN API RESPONSE FORMAT IS INVALID
|
|
3
|
+
* This means the API is NOT following our standardized format
|
|
4
|
+
*/
|
|
5
|
+
export declare class ApiResponseFormatError extends Error {
|
|
6
|
+
readonly endpoint: string;
|
|
7
|
+
readonly rawResponse: unknown;
|
|
8
|
+
constructor(message: string, endpoint: string, rawResponse: unknown);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* ERROR THROWN WHEN API RETURNS A STANDARDIZED ERROR RESPONSE
|
|
12
|
+
* This is a properly formatted error from the API
|
|
13
|
+
*/
|
|
14
|
+
export declare class ApiBusinessLogicError extends Error {
|
|
15
|
+
readonly errorCode: string;
|
|
16
|
+
readonly operation: string;
|
|
17
|
+
readonly details?: unknown | undefined;
|
|
18
|
+
constructor(errorCode: string, message: string, operation: string, details?: unknown | undefined);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* ERROR THROWN WHEN VALIDATION FAILS
|
|
22
|
+
* This is a properly formatted validation error from the API
|
|
23
|
+
*/
|
|
24
|
+
export declare class ApiValidationError extends Error {
|
|
25
|
+
readonly operation: string;
|
|
26
|
+
readonly validationErrors: Record<string, string[]>;
|
|
27
|
+
readonly invalidValue?: unknown | undefined;
|
|
28
|
+
readonly primaryField?: string | undefined;
|
|
29
|
+
constructor(message: string, operation: string, validationErrors: Record<string, string[]>, invalidValue?: unknown | undefined, primaryField?: string | undefined);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* ERROR THROWN WHEN NETWORK/HTTP ISSUES OCCUR
|
|
33
|
+
*/
|
|
34
|
+
export declare class ApiNetworkError extends Error {
|
|
35
|
+
readonly status: number;
|
|
36
|
+
readonly endpoint: string;
|
|
37
|
+
constructor(message: string, status: number, endpoint: string);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* SUCCESSFUL API CALL RESULT
|
|
41
|
+
* This is what gets returned to the calling code for successful operations
|
|
42
|
+
*/
|
|
43
|
+
export interface ApiSuccessResult<TData> {
|
|
44
|
+
/** Always true for success */
|
|
45
|
+
success: true;
|
|
46
|
+
/** The actual data - NO NESTING! Direct access! */
|
|
47
|
+
data: TData;
|
|
48
|
+
/** Human-readable success message from API */
|
|
49
|
+
message: string;
|
|
50
|
+
/** Operation code for tracking/debugging */
|
|
51
|
+
operation_code: string;
|
|
52
|
+
/** Server timestamp (if provided) */
|
|
53
|
+
timestamp?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* SUCCESSFUL PAGED API CALL RESULT
|
|
57
|
+
* This is what gets returned for successful paged operations
|
|
58
|
+
*/
|
|
59
|
+
export interface ApiPagedResult<TData> {
|
|
60
|
+
/** Always true for success */
|
|
61
|
+
success: true;
|
|
62
|
+
/** The actual data array - NO NESTING! Direct access! */
|
|
63
|
+
items: TData[];
|
|
64
|
+
/** Human-readable success message from API */
|
|
65
|
+
message: string;
|
|
66
|
+
/** Operation code for tracking/debugging */
|
|
67
|
+
operation_code: string;
|
|
68
|
+
/** Pagination information */
|
|
69
|
+
pagination: {
|
|
70
|
+
current_page: number;
|
|
71
|
+
total_pages: number;
|
|
72
|
+
page_size: number;
|
|
73
|
+
total_items: number;
|
|
74
|
+
has_next_page: boolean;
|
|
75
|
+
has_previous_page: boolean;
|
|
76
|
+
};
|
|
77
|
+
/** Server timestamp (if provided) */
|
|
78
|
+
timestamp?: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* FAILED API CALL RESULT
|
|
82
|
+
* This is what gets returned to the calling code for failed operations
|
|
83
|
+
*/
|
|
84
|
+
export interface ApiErrorResult {
|
|
85
|
+
/** Always false for errors */
|
|
86
|
+
success: false;
|
|
87
|
+
/** Standardized error code */
|
|
88
|
+
error_code: string;
|
|
89
|
+
/** Human-readable error message */
|
|
90
|
+
message: string;
|
|
91
|
+
/** Operation that failed */
|
|
92
|
+
operation: string;
|
|
93
|
+
/** Additional error details (if any) */
|
|
94
|
+
details?: unknown;
|
|
95
|
+
/** Validation errors (if any) */
|
|
96
|
+
validation_errors?: Record<string, string[]>;
|
|
97
|
+
/** Server-provided request identifier for tracing (only set on real errors) */
|
|
98
|
+
request_id?: string;
|
|
99
|
+
}
|
|
100
|
+
/** UNION TYPE FOR ALL POSSIBLE API RESULTS */
|
|
101
|
+
export type ApiResult<TData> = ApiSuccessResult<TData> | ApiPagedResult<TData> | ApiErrorResult;
|
|
102
|
+
declare class StandardizedClientApiService {
|
|
103
|
+
private baseUrl;
|
|
104
|
+
constructor();
|
|
105
|
+
/**
|
|
106
|
+
* MAKES HTTP REQUEST AND VALIDATES RESPONSE FORMAT
|
|
107
|
+
* This method ENFORCES standardized response format compliance
|
|
108
|
+
* Will throw ApiResponseFormatError if format is invalid
|
|
109
|
+
*/
|
|
110
|
+
private makeRequest;
|
|
111
|
+
/**
|
|
112
|
+
* CONVERTS VALIDATED STANDARDIZED RESPONSE TO CLIENT RESULT
|
|
113
|
+
* This normalizes the response for client consumption
|
|
114
|
+
*/
|
|
115
|
+
private convertToApiResult;
|
|
116
|
+
/**
|
|
117
|
+
* GET REQUEST - Returns typed result with direct data access
|
|
118
|
+
*/
|
|
119
|
+
get<TData = unknown>(endpoint: string, sessionToken?: string): Promise<ApiResult<TData>>;
|
|
120
|
+
/**
|
|
121
|
+
* POST REQUEST - Returns typed result with direct data access
|
|
122
|
+
*/
|
|
123
|
+
post<TData = unknown>(endpoint: string, data?: unknown, sessionToken?: string): Promise<ApiResult<TData>>;
|
|
124
|
+
/**
|
|
125
|
+
* PUT REQUEST - Returns typed result with direct data access
|
|
126
|
+
*/
|
|
127
|
+
put<TData = unknown>(endpoint: string, data?: unknown, sessionToken?: string): Promise<ApiResult<TData>>;
|
|
128
|
+
/**
|
|
129
|
+
* DELETE REQUEST - Returns typed result with direct data access
|
|
130
|
+
*/
|
|
131
|
+
delete<TData = unknown>(endpoint: string): Promise<ApiResult<TData>>;
|
|
132
|
+
}
|
|
133
|
+
export declare const standardizedApi: StandardizedClientApiService;
|
|
134
|
+
/**
|
|
135
|
+
* TYPE-SAFE SUCCESS CHECK
|
|
136
|
+
* Use this to check if API call was successful with proper type narrowing
|
|
137
|
+
*/
|
|
138
|
+
export declare function isApiSuccess<TData>(result: ApiResult<TData>): result is ApiSuccessResult<TData>;
|
|
139
|
+
/**
|
|
140
|
+
* TYPE-SAFE PAGED SUCCESS CHECK
|
|
141
|
+
* Use this to check if API call was successful paged response with proper type narrowing
|
|
142
|
+
*/
|
|
143
|
+
export declare function isApiPagedSuccess<TData>(result: ApiResult<TData>): result is ApiPagedResult<TData>;
|
|
144
|
+
/**
|
|
145
|
+
* TYPE-SAFE ERROR CHECK
|
|
146
|
+
* Use this to check if API call failed with proper type narrowing
|
|
147
|
+
*/
|
|
148
|
+
export declare function isApiError<TData>(result: ApiResult<TData>): result is ApiErrorResult;
|
|
149
|
+
/**
|
|
150
|
+
* EXTRACT DATA FROM SUCCESS RESULT
|
|
151
|
+
* Use this to get the data from a successful API call
|
|
152
|
+
* Will throw if result is not successful
|
|
153
|
+
*/
|
|
154
|
+
export declare function extractApiData<TData>(result: ApiResult<TData>): TData;
|
|
155
|
+
/**
|
|
156
|
+
* EXTRACT ITEMS FROM PAGED SUCCESS RESULT
|
|
157
|
+
* Use this to get the items array from a successful paged API call
|
|
158
|
+
* Will throw if result is not successful paged response
|
|
159
|
+
*/
|
|
160
|
+
export declare function extractApiItems<TData>(result: ApiResult<TData>): TData[];
|
|
161
|
+
export {};
|