@nextsparkjs/core 0.1.0-beta.185 → 0.1.0-beta.187
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/components/app/guards/DeveloperGuard.d.ts.map +1 -1
- package/dist/components/app/guards/DeveloperGuard.js +8 -4
- package/dist/components/app/guards/SuperAdminGuard.d.ts.map +1 -1
- package/dist/components/app/guards/SuperAdminGuard.js +8 -4
- package/dist/components/app/layouts/PublicFooter.d.ts.map +1 -1
- package/dist/components/app/layouts/PublicFooter.js +2 -2
- package/dist/components/app/layouts/PublicNavbar.d.ts.map +1 -1
- package/dist/components/app/layouts/PublicNavbar.js +2 -2
- package/dist/components/app/misc/ThemeToggle.d.ts.map +1 -1
- package/dist/components/app/misc/ThemeToggle.js +4 -1
- package/dist/components/auth/DevKeyring.d.ts.map +1 -1
- package/dist/components/auth/DevKeyring.js +10 -2
- package/dist/components/auth/SessionCookieRefresher.d.ts +21 -0
- package/dist/components/auth/SessionCookieRefresher.d.ts.map +1 -0
- package/dist/components/auth/SessionCookieRefresher.js +11 -0
- package/dist/components/auth/forms/LoginForm.d.ts.map +1 -1
- package/dist/components/auth/forms/LoginForm.js +300 -6
- package/dist/components/auth/index.d.ts +1 -0
- package/dist/components/auth/index.d.ts.map +1 -1
- package/dist/components/auth/index.js +2 -0
- package/dist/components/billing/InvoicesTable.d.ts.map +1 -1
- package/dist/components/billing/InvoicesTable.js +4 -3
- package/dist/components/dashboard/block-editor/dynamic-form.d.ts.map +1 -1
- package/dist/components/dashboard/layouts/AuthGuard.d.ts.map +1 -1
- package/dist/components/dashboard/layouts/AuthGuard.js +2 -2
- package/dist/components/dashboard/layouts/DashboardAuthLayout.d.ts.map +1 -1
- package/dist/components/dashboard/layouts/DashboardAuthLayout.js +2 -2
- package/dist/components/dashboard/layouts/DashboardAuthSkeleton.d.ts +17 -0
- package/dist/components/dashboard/layouts/DashboardAuthSkeleton.d.ts.map +1 -0
- package/dist/components/dashboard/layouts/DashboardAuthSkeleton.js +52 -0
- package/dist/components/dashboard/layouts/Sidebar.d.ts.map +1 -1
- package/dist/components/dashboard/layouts/Sidebar.js +2 -3
- package/dist/components/dashboard/layouts/TopNavbar.js +2 -2
- package/dist/components/dashboard/layouts/index.d.ts +1 -0
- package/dist/components/dashboard/layouts/index.d.ts.map +1 -1
- package/dist/components/dashboard/layouts/index.js +2 -0
- package/dist/components/devtools/api-explorer/ApiExplorer.js +4 -4
- package/dist/components/entities/EntityFieldRenderer.d.ts.map +1 -1
- package/dist/components/entities/EntityFieldRenderer.js +3 -0
- package/dist/components/entities/EntityTable.d.ts.map +1 -1
- package/dist/components/entities/EntityTable.js +2 -1
- package/dist/components/entities/wrappers/EntityFormWrapper.d.ts.map +1 -1
- package/dist/components/entities/wrappers/EntityFormWrapper.js +7 -2
- package/dist/components/patterns/pages/PatternEditPage.d.ts +5 -1
- package/dist/components/patterns/pages/PatternEditPage.d.ts.map +1 -1
- package/dist/components/patterns/pages/PatternEditPage.js +16 -5
- package/dist/components/patterns/pages/PatternsCreatePage.d.ts +2 -1
- package/dist/components/patterns/pages/PatternsCreatePage.d.ts.map +1 -1
- package/dist/components/patterns/pages/PatternsCreatePage.js +17 -5
- package/dist/components/ui/combobox.d.ts +8 -1
- package/dist/components/ui/combobox.d.ts.map +1 -1
- package/dist/components/ui/combobox.js +37 -44
- package/dist/components/ui/country-select.d.ts +3 -1
- package/dist/components/ui/country-select.d.ts.map +1 -1
- package/dist/components/ui/country-select.js +3 -1
- package/dist/components/ui/currency-select.d.ts +3 -1
- package/dist/components/ui/currency-select.d.ts.map +1 -1
- package/dist/components/ui/currency-select.js +3 -1
- package/dist/components/ui/sheet.d.ts +5 -0
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/sheet.js +46 -26
- package/dist/components/ui/timezone-select.d.ts +3 -1
- package/dist/components/ui/timezone-select.d.ts.map +1 -1
- package/dist/components/ui/timezone-select.js +3 -1
- package/dist/contexts/TeamContext.d.ts +6 -0
- package/dist/contexts/TeamContext.d.ts.map +1 -1
- package/dist/contexts/TeamContext.js +8 -1
- package/dist/emails/otp-verification.d.ts.map +1 -1
- package/dist/emails/reset-password.d.ts.map +1 -1
- package/dist/emails/team-invitation.d.ts.map +1 -1
- package/dist/emails/team-invitation.js +3 -2
- package/dist/emails/verify-email.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useAuth.d.ts +29 -0
- package/dist/hooks/useAuth.d.ts.map +1 -1
- package/dist/hooks/useAuth.js +24 -0
- package/dist/hooks/useEnsureUserMetadata.d.ts +22 -0
- package/dist/hooks/useEnsureUserMetadata.d.ts.map +1 -1
- package/dist/hooks/useEnsureUserMetadata.js +18 -5
- package/dist/hooks/useSessionCookieRefresh.d.ts +35 -0
- package/dist/hooks/useSessionCookieRefresh.d.ts.map +1 -0
- package/dist/hooks/useSessionCookieRefresh.js +49 -0
- package/dist/lib/api/api-error.d.ts +3 -1
- package/dist/lib/api/api-error.d.ts.map +1 -1
- package/dist/lib/api/api-error.js +4 -2
- package/dist/lib/api/auth/dual-auth.d.ts +38 -3
- package/dist/lib/api/auth/dual-auth.d.ts.map +1 -1
- package/dist/lib/api/auth/dual-auth.js +42 -7
- package/dist/lib/api/auth/permissions.d.ts +7 -2
- package/dist/lib/api/auth/permissions.d.ts.map +1 -1
- package/dist/lib/api/auth/permissions.js +2 -2
- package/dist/lib/api/auth/scope-policy.d.ts +71 -0
- package/dist/lib/api/auth/scope-policy.d.ts.map +1 -0
- package/dist/lib/api/auth/scope-policy.js +53 -0
- package/dist/lib/api/auth.d.ts +15 -0
- package/dist/lib/api/auth.d.ts.map +1 -1
- package/dist/lib/api/auth.js +17 -4
- package/dist/lib/api/entities.js +2 -1
- package/dist/lib/api/entity/audit-log.d.ts +35 -0
- package/dist/lib/api/entity/audit-log.d.ts.map +1 -0
- package/dist/lib/api/entity/audit-log.js +35 -0
- package/dist/lib/api/entity/generic-handler.d.ts.map +1 -1
- package/dist/lib/api/entity/generic-handler.js +333 -138
- package/dist/lib/api/entity-handler.js +2 -2
- package/dist/lib/api/helpers.d.ts +29 -4
- package/dist/lib/api/helpers.d.ts.map +1 -1
- package/dist/lib/api/helpers.js +30 -6
- package/dist/lib/api/keys.d.ts +16 -0
- package/dist/lib/api/keys.d.ts.map +1 -1
- package/dist/lib/api/keys.js +19 -1
- package/dist/lib/api/routes/patterns-usages.d.ts.map +1 -1
- package/dist/lib/api/routes/patterns-usages.js +3 -11
- package/dist/lib/auth/auth-methods.d.ts +52 -0
- package/dist/lib/auth/auth-methods.d.ts.map +1 -0
- package/dist/lib/auth/auth-methods.js +63 -0
- package/dist/lib/auth/registration-guard-plugin.d.ts.map +1 -1
- package/dist/lib/auth/registration-helpers.d.ts +9 -0
- package/dist/lib/auth/registration-helpers.d.ts.map +1 -1
- package/dist/lib/auth/registration-helpers.js +8 -2
- package/dist/lib/auth/security-notifications/device-fingerprint.d.ts +52 -0
- package/dist/lib/auth/security-notifications/device-fingerprint.d.ts.map +1 -0
- package/dist/lib/auth/security-notifications/device-fingerprint.js +42 -0
- package/dist/lib/auth/security-notifications/dispatcher.d.ts +37 -0
- package/dist/lib/auth/security-notifications/dispatcher.d.ts.map +1 -0
- package/dist/lib/auth/security-notifications/dispatcher.js +157 -0
- package/dist/lib/auth/security-notifications/index.d.ts +20 -0
- package/dist/lib/auth/security-notifications/index.d.ts.map +1 -0
- package/dist/lib/auth/security-notifications/index.js +22 -0
- package/dist/lib/auth/security-notifications/registry.d.ts +36 -0
- package/dist/lib/auth/security-notifications/registry.d.ts.map +1 -0
- package/dist/lib/auth/security-notifications/registry.js +26 -0
- package/dist/lib/auth/security-notifications/templates/email-changed.d.ts +12 -0
- package/dist/lib/auth/security-notifications/templates/email-changed.d.ts.map +1 -0
- package/dist/lib/auth/security-notifications/templates/email-changed.js +43 -0
- package/dist/lib/auth/security-notifications/templates/new-device-login.d.ts +7 -0
- package/dist/lib/auth/security-notifications/templates/new-device-login.d.ts.map +1 -0
- package/dist/lib/auth/security-notifications/templates/new-device-login.js +46 -0
- package/dist/lib/auth/security-notifications/templates/password-changed.d.ts +7 -0
- package/dist/lib/auth/security-notifications/templates/password-changed.d.ts.map +1 -0
- package/dist/lib/auth/security-notifications/templates/password-changed.js +35 -0
- package/dist/lib/auth/security-notifications/templates/shared.d.ts +36 -0
- package/dist/lib/auth/security-notifications/templates/shared.d.ts.map +1 -0
- package/dist/lib/auth/security-notifications/templates/shared.js +68 -0
- package/dist/lib/auth/security-notifications/types.d.ts +74 -0
- package/dist/lib/auth/security-notifications/types.d.ts.map +1 -0
- package/dist/lib/auth/session-config.d.ts +37 -0
- package/dist/lib/auth/session-config.d.ts.map +1 -0
- package/dist/lib/auth/session-config.js +59 -0
- package/dist/lib/auth/session-refresh.d.ts +46 -0
- package/dist/lib/auth/session-refresh.d.ts.map +1 -0
- package/dist/lib/auth/session-refresh.js +11 -0
- package/dist/lib/auth-client.d.ts +1639 -0
- package/dist/lib/auth-client.d.ts.map +1 -0
- package/dist/lib/auth-client.js +13 -1
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +45 -11
- package/dist/lib/billing/gateways/factory.d.ts +8 -3
- package/dist/lib/billing/gateways/factory.d.ts.map +1 -1
- package/dist/lib/billing/gateways/factory.js +37 -23
- package/dist/lib/billing/stripe-webhook.d.ts.map +1 -1
- package/dist/lib/billing/stripe-webhook.js +2 -1
- package/dist/lib/config/app.config.d.ts.map +1 -1
- package/dist/lib/config/app.config.js +71 -0
- package/dist/lib/config/config-sync.d.ts +1 -4
- package/dist/lib/config/config-sync.d.ts.map +1 -1
- package/dist/lib/config/config-sync.js +6 -2
- package/dist/lib/config/types.d.ts +130 -0
- package/dist/lib/config/types.d.ts.map +1 -1
- package/dist/lib/email/templates.d.ts +3 -3
- package/dist/lib/email/templates.d.ts.map +1 -1
- package/dist/lib/entities/api-generator.js +5 -5
- package/dist/lib/entities/entity-hooks.d.ts +9 -1
- package/dist/lib/entities/entity-hooks.d.ts.map +1 -1
- package/dist/lib/entities/entity-hooks.js +77 -4
- package/dist/lib/entities/schema-generator.d.ts.map +1 -1
- package/dist/lib/entities/schema-generator.js +20 -4
- package/dist/lib/entities/serialization.d.ts +2 -2
- package/dist/lib/entities/serialization.d.ts.map +1 -1
- package/dist/lib/entities/serialization.js +3 -2
- package/dist/lib/entities/types.d.ts +20 -0
- package/dist/lib/entities/types.d.ts.map +1 -1
- package/dist/lib/locale.d.ts.map +1 -1
- package/dist/lib/locale.js +4 -1
- package/dist/lib/mcp/audit.d.ts +8 -4
- package/dist/lib/mcp/audit.d.ts.map +1 -1
- package/dist/lib/plugins/hook-system.d.ts +13 -0
- package/dist/lib/plugins/hook-system.d.ts.map +1 -1
- package/dist/lib/plugins/hook-system.js +32 -2
- package/dist/lib/scheduled-actions/handlers/index.d.ts +1 -0
- package/dist/lib/scheduled-actions/handlers/index.d.ts.map +1 -1
- package/dist/lib/scheduled-actions/handlers/index.js +3 -1
- package/dist/lib/scheduled-actions/handlers/security-notification.d.ts +26 -0
- package/dist/lib/scheduled-actions/handlers/security-notification.d.ts.map +1 -0
- package/dist/lib/scheduled-actions/handlers/security-notification.js +54 -0
- package/dist/lib/selectors/core-selectors.d.ts +12 -0
- package/dist/lib/selectors/core-selectors.d.ts.map +1 -1
- package/dist/lib/selectors/domains/auth.selectors.d.ts +12 -0
- package/dist/lib/selectors/domains/auth.selectors.d.ts.map +1 -1
- package/dist/lib/selectors/domains/auth.selectors.js +14 -1
- package/dist/lib/selectors/selectors.d.ts +24 -0
- package/dist/lib/selectors/selectors.d.ts.map +1 -1
- package/dist/lib/services/api-docs.service.d.ts +5 -1
- package/dist/lib/services/api-docs.service.d.ts.map +1 -1
- package/dist/lib/services/api-presets.service.d.ts +6 -1
- package/dist/lib/services/api-presets.service.d.ts.map +1 -1
- package/dist/lib/services/feature.service.d.ts +58 -4
- package/dist/lib/services/feature.service.d.ts.map +1 -1
- package/dist/lib/services/generic-entity.service.d.ts.map +1 -1
- package/dist/lib/services/generic-entity.service.js +16 -32
- package/dist/lib/services/membership.service.d.ts +10 -2
- package/dist/lib/services/membership.service.d.ts.map +1 -1
- package/dist/lib/services/membership.service.js +37 -16
- package/dist/lib/services/permission.service.d.ts +10 -4
- package/dist/lib/services/permission.service.d.ts.map +1 -1
- package/dist/lib/services/plugin.service.d.ts +1 -1
- package/dist/lib/services/plugin.service.d.ts.map +1 -1
- package/dist/lib/services/subscription.service.d.ts.map +1 -1
- package/dist/lib/services/subscription.service.js +2 -1
- package/dist/lib/services/team-member.service.d.ts +15 -3
- package/dist/lib/services/team-member.service.d.ts.map +1 -1
- package/dist/lib/services/team-member.service.js +27 -6
- package/dist/lib/services/team.service.d.ts.map +1 -1
- package/dist/lib/teams/permissions.d.ts +3 -1
- package/dist/lib/teams/permissions.d.ts.map +1 -1
- package/dist/lib/teams/permissions.js +6 -0
- package/dist/lib/teams/schema.d.ts.map +1 -1
- package/dist/lib/teams/schema.js +3 -0
- package/dist/lib/template-resolver.d.ts +3 -3
- package/dist/lib/theme/forced-theme.d.ts +34 -0
- package/dist/lib/theme/forced-theme.d.ts.map +1 -0
- package/dist/lib/theme/forced-theme.js +27 -0
- package/dist/lib/theme/get-default-theme-mode.d.ts +3 -0
- package/dist/lib/theme/get-default-theme-mode.d.ts.map +1 -1
- package/dist/lib/theme/get-default-theme-mode.js +5 -3
- package/dist/lib/utils/cors.d.ts +13 -0
- package/dist/lib/utils/cors.d.ts.map +1 -1
- package/dist/lib/utils/cors.js +20 -0
- package/dist/messages/de/auth.json +25 -2
- package/dist/messages/de/index.d.ts +83 -0
- package/dist/messages/de/index.d.ts.map +1 -1
- package/dist/messages/de/index.js +2 -0
- package/dist/messages/de/index.ts +2 -0
- package/dist/messages/de/navigation.json +3 -1
- package/dist/messages/en/auth.json +25 -2
- package/dist/messages/en/index.d.ts +83 -0
- package/dist/messages/en/index.d.ts.map +1 -1
- package/dist/messages/en/index.js +2 -0
- package/dist/messages/en/index.ts +2 -0
- package/dist/messages/en/navigation.json +3 -1
- package/dist/messages/es/auth.json +25 -2
- package/dist/messages/es/index.d.ts +83 -0
- package/dist/messages/es/index.d.ts.map +1 -1
- package/dist/messages/es/index.js +2 -0
- package/dist/messages/es/index.ts +2 -0
- package/dist/messages/es/navigation.json +3 -1
- package/dist/messages/fr/auth.json +25 -2
- package/dist/messages/fr/index.d.ts +83 -0
- package/dist/messages/fr/index.d.ts.map +1 -1
- package/dist/messages/fr/index.js +2 -0
- package/dist/messages/fr/index.ts +2 -0
- package/dist/messages/fr/navigation.json +3 -1
- package/dist/messages/it/auth.json +25 -2
- package/dist/messages/it/index.d.ts +83 -0
- package/dist/messages/it/index.d.ts.map +1 -1
- package/dist/messages/it/index.js +2 -0
- package/dist/messages/it/index.ts +2 -0
- package/dist/messages/it/navigation.json +3 -1
- package/dist/messages/pt/auth.json +25 -2
- package/dist/messages/pt/index.d.ts +83 -0
- package/dist/messages/pt/index.d.ts.map +1 -1
- package/dist/messages/pt/index.js +2 -0
- package/dist/messages/pt/index.ts +2 -0
- package/dist/messages/pt/navigation.json +3 -1
- package/dist/migrations/005_api_audit_log.sql +2 -1
- package/dist/migrations/025_api_audit_log_nullable_api_key.sql +12 -0
- package/dist/migrations/026_login_events.sql +91 -0
- package/dist/migrations/027_rls_bypass_developer_and_system_admin_team.sql +197 -0
- package/dist/nextspark-registries.d.ts +580 -236
- package/dist/providers/DashboardProviders.d.ts +12 -3
- package/dist/providers/DashboardProviders.d.ts.map +1 -1
- package/dist/providers/DashboardProviders.js +6 -2
- package/dist/providers/theme-provider.d.ts +19 -2
- package/dist/providers/theme-provider.d.ts.map +1 -1
- package/dist/providers/theme-provider.js +6 -2
- package/dist/templates/app/(auth)/signup/page.tsx +8 -0
- package/dist/templates/app/(public)/[...slug]/page.tsx +9 -14
- package/dist/templates/app/api/auth/[...all]/route.ts +23 -1
- package/dist/templates/app/api/health/route.ts +4 -2
- package/dist/templates/app/api/internal/user-metadata/route.ts +5 -3
- package/dist/templates/app/api/mcp/route.ts +4 -1
- package/dist/templates/app/api/superadmin/subscriptions/route.ts +2 -1
- package/dist/templates/app/api/superadmin/teams/[teamId]/route.ts +4 -3
- package/dist/templates/app/api/superadmin/users/[userId]/route.ts +10 -3
- package/dist/templates/app/api/v1/api-keys/[id]/route.ts +50 -71
- package/dist/templates/app/api/v1/api-keys/route.ts +21 -43
- package/dist/templates/app/api/v1/auth/signup-with-invite/route.ts +14 -14
- package/dist/templates/app/api/v1/billing/cancel/route.ts +7 -6
- package/dist/templates/app/api/v1/billing/change-plan/route.ts +5 -4
- package/dist/templates/app/api/v1/billing/check-action/route.ts +6 -4
- package/dist/templates/app/api/v1/billing/checkout/route.ts +7 -5
- package/dist/templates/app/api/v1/billing/plans/route.ts +8 -12
- package/dist/templates/app/api/v1/billing/portal/route.ts +7 -5
- package/dist/templates/app/api/v1/billing/webhooks/polar/route.ts +1 -1
- package/dist/templates/app/api/v1/devtools/blocks/route.ts +5 -4
- package/dist/templates/app/api/v1/devtools/features/route.ts +5 -4
- package/dist/templates/app/api/v1/devtools/flows/route.ts +5 -4
- package/dist/templates/app/api/v1/devtools/scheduled-actions/route.ts +9 -7
- package/dist/templates/app/api/v1/devtools/scheduled-actions/run/route.ts +5 -4
- package/dist/templates/app/api/v1/devtools/testing/route.ts +5 -4
- package/dist/templates/app/api/v1/media/[id]/route.ts +13 -25
- package/dist/templates/app/api/v1/media/[id]/tags/route.ts +17 -25
- package/dist/templates/app/api/v1/media/check-duplicates/route.ts +5 -7
- package/dist/templates/app/api/v1/media/route.ts +5 -9
- package/dist/templates/app/api/v1/media/upload/route.ts +9 -21
- package/dist/templates/app/api/v1/media-tags/route.ts +9 -13
- package/dist/templates/app/api/v1/patterns/[id]/usages/route.ts +11 -19
- package/dist/templates/app/api/v1/post-categories/[id]/route.ts +9 -7
- package/dist/templates/app/api/v1/post-categories/route.ts +5 -4
- package/dist/templates/app/api/v1/team-invitations/[token]/accept/route.ts +16 -18
- package/dist/templates/app/api/v1/team-invitations/[token]/decline/route.ts +15 -17
- package/dist/templates/app/api/v1/team-invitations/[token]/route.ts +8 -8
- package/dist/templates/app/api/v1/team-invitations/route.ts +9 -11
- package/dist/templates/app/api/v1/teams/[teamId]/invitations/route.ts +41 -32
- package/dist/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +15 -16
- package/dist/templates/app/api/v1/teams/[teamId]/invoices/route.ts +14 -15
- package/dist/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +32 -36
- package/dist/templates/app/api/v1/teams/[teamId]/members/route.ts +33 -33
- package/dist/templates/app/api/v1/teams/[teamId]/route.ts +35 -41
- package/dist/templates/app/api/v1/teams/[teamId]/subscription/route.ts +5 -3
- package/dist/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +10 -6
- package/dist/templates/app/api/v1/teams/route.ts +33 -27
- package/dist/templates/app/api/v1/teams/switch/route.ts +11 -13
- package/dist/templates/app/api/v1/theme/[...path]/route.ts +23 -2
- package/dist/templates/app/api/v1/users/[id]/meta/[key]/route.ts +32 -77
- package/dist/templates/app/api/v1/users/[id]/route.ts +35 -68
- package/dist/templates/app/api/v1/users/route.ts +21 -25
- package/dist/templates/app/dashboard/layout.tsx +2 -6
- package/dist/templates/app/layout.ppr.tsx +15 -15
- package/dist/templates/app/layout.tsx +46 -20
- package/dist/templates/contents/themes/starter/config/app.config.ts +19 -0
- package/dist/templates/contents/themes/starter/config/theme.config.ts +6 -0
- package/dist/templates/contents/themes/starter/styles/globals.css +6 -2
- package/dist/templates/proxy.ts +46 -10
- package/dist/templates/tsconfig.json +4 -0
- package/dist/types/theme.d.ts +9 -0
- package/dist/types/theme.d.ts.map +1 -1
- package/migrations/005_api_audit_log.sql +2 -1
- package/migrations/025_api_audit_log_nullable_api_key.sql +12 -0
- package/migrations/026_login_events.sql +91 -0
- package/migrations/027_rls_bypass_developer_and_system_admin_team.sql +197 -0
- package/package.json +14 -11
- package/scripts/build/registry/__tests__/scope-registry.test.mjs +18 -0
- package/scripts/build/registry/generators/scope-registry.mjs +9 -2
- package/templates/app/(auth)/signup/page.tsx +8 -0
- package/templates/app/(public)/[...slug]/page.tsx +9 -14
- package/templates/app/api/auth/[...all]/route.ts +23 -1
- package/templates/app/api/health/route.ts +4 -2
- package/templates/app/api/internal/user-metadata/route.ts +5 -3
- package/templates/app/api/mcp/route.ts +4 -1
- package/templates/app/api/superadmin/subscriptions/route.ts +2 -1
- package/templates/app/api/superadmin/teams/[teamId]/route.ts +4 -3
- package/templates/app/api/superadmin/users/[userId]/route.ts +10 -3
- package/templates/app/api/v1/api-keys/[id]/route.ts +50 -71
- package/templates/app/api/v1/api-keys/route.ts +21 -43
- package/templates/app/api/v1/auth/signup-with-invite/route.ts +14 -14
- package/templates/app/api/v1/billing/cancel/route.ts +7 -6
- package/templates/app/api/v1/billing/change-plan/route.ts +5 -4
- package/templates/app/api/v1/billing/check-action/route.ts +6 -4
- package/templates/app/api/v1/billing/checkout/route.ts +7 -5
- package/templates/app/api/v1/billing/plans/route.ts +8 -12
- package/templates/app/api/v1/billing/portal/route.ts +7 -5
- package/templates/app/api/v1/billing/webhooks/polar/route.ts +1 -1
- package/templates/app/api/v1/devtools/blocks/route.ts +5 -4
- package/templates/app/api/v1/devtools/features/route.ts +5 -4
- package/templates/app/api/v1/devtools/flows/route.ts +5 -4
- package/templates/app/api/v1/devtools/scheduled-actions/route.ts +9 -7
- package/templates/app/api/v1/devtools/scheduled-actions/run/route.ts +5 -4
- package/templates/app/api/v1/devtools/testing/route.ts +5 -4
- package/templates/app/api/v1/media/[id]/route.ts +13 -25
- package/templates/app/api/v1/media/[id]/tags/route.ts +17 -25
- package/templates/app/api/v1/media/check-duplicates/route.ts +5 -7
- package/templates/app/api/v1/media/route.ts +5 -9
- package/templates/app/api/v1/media/upload/route.ts +9 -21
- package/templates/app/api/v1/media-tags/route.ts +9 -13
- package/templates/app/api/v1/patterns/[id]/usages/route.ts +11 -19
- package/templates/app/api/v1/post-categories/[id]/route.ts +9 -7
- package/templates/app/api/v1/post-categories/route.ts +5 -4
- package/templates/app/api/v1/team-invitations/[token]/accept/route.ts +16 -18
- package/templates/app/api/v1/team-invitations/[token]/decline/route.ts +15 -17
- package/templates/app/api/v1/team-invitations/[token]/route.ts +8 -8
- package/templates/app/api/v1/team-invitations/route.ts +9 -11
- package/templates/app/api/v1/teams/[teamId]/invitations/route.ts +41 -32
- package/templates/app/api/v1/teams/[teamId]/invoices/[invoiceNumber]/route.ts +15 -16
- package/templates/app/api/v1/teams/[teamId]/invoices/route.ts +14 -15
- package/templates/app/api/v1/teams/[teamId]/members/[memberId]/route.ts +32 -36
- package/templates/app/api/v1/teams/[teamId]/members/route.ts +33 -33
- package/templates/app/api/v1/teams/[teamId]/route.ts +35 -41
- package/templates/app/api/v1/teams/[teamId]/subscription/route.ts +5 -3
- package/templates/app/api/v1/teams/[teamId]/usage/[limitSlug]/route.ts +10 -6
- package/templates/app/api/v1/teams/route.ts +33 -27
- package/templates/app/api/v1/teams/switch/route.ts +11 -13
- package/templates/app/api/v1/theme/[...path]/route.ts +23 -2
- package/templates/app/api/v1/users/[id]/meta/[key]/route.ts +32 -77
- package/templates/app/api/v1/users/[id]/route.ts +35 -68
- package/templates/app/api/v1/users/route.ts +21 -25
- package/templates/app/dashboard/layout.tsx +2 -6
- package/templates/app/layout.ppr.tsx +15 -15
- package/templates/app/layout.tsx +46 -20
- package/templates/contents/themes/starter/config/app.config.ts +19 -0
- package/templates/contents/themes/starter/config/theme.config.ts +6 -0
- package/templates/contents/themes/starter/styles/globals.css +6 -2
- package/templates/proxy.ts +46 -10
- package/templates/tsconfig.json +4 -0
- package/tests/jest/__mocks__/@nextsparkjs/registries/permissions-registry.ts +23 -0
- package/tests/jest/__mocks__/next-server.js +24 -0
- package/dist/components/teams/TeamSwitchModal.d.js +0 -0
- package/dist/components/ui/accordion.d.js +0 -0
- package/dist/components/ui/avatar.d.js +0 -0
- package/dist/components/ui/badge.d.js +0 -0
- package/dist/components/ui/button.d.js +0 -0
- package/dist/components/ui/card.d.js +0 -0
- package/dist/components/ui/dialog.d.js +0 -0
- package/dist/components/ui/dropdown-menu.d.js +0 -0
- package/dist/components/ui/input.d.js +0 -0
- package/dist/components/ui/progress.d.js +0 -0
- package/dist/components/ui/scroll-area.d.js +0 -0
- package/dist/components/ui/select.d.js +0 -0
- package/dist/components/ui/separator.d.js +0 -0
- package/dist/components/ui/table.d.js +0 -0
- package/dist/components/ui/textarea.d.js +0 -0
- package/dist/contexts/TeamContext.d.js +0 -0
- package/dist/hooks/useAuth.d.js +0 -0
- package/dist/hooks/useLastAuthMethod.d.js +0 -0
- package/dist/hooks/useOrigin.d.js +0 -0
- package/dist/lib/api/auth/dual-auth.d.js +0 -0
- package/dist/lib/api/auth.d.js +0 -0
- package/dist/lib/api/cache.d.js +0 -0
- package/dist/lib/api/keys.d.js +0 -0
- package/dist/lib/auth-client.d.js +0 -0
- package/dist/lib/auth-context.d.js +0 -0
- package/dist/lib/auth.d.js +0 -0
- package/dist/lib/billing/config-types.d.js +0 -0
- package/dist/lib/billing/enforcement.d.js +0 -0
- package/dist/lib/billing/helpers.d.js +0 -0
- package/dist/lib/billing/jobs.d.js +0 -0
- package/dist/lib/billing/types.d.js +0 -0
- package/dist/lib/blocks/loader.d.js +0 -0
- package/dist/lib/config/app.config.d.js +0 -0
- package/dist/lib/config/config-loader.d.js +0 -0
- package/dist/lib/config/config-sync.d.js +0 -0
- package/dist/lib/config/config-types.d.js +0 -0
- package/dist/lib/config/config-utils.d.js +0 -0
- package/dist/lib/config/dashboard-types.d.js +0 -0
- package/dist/lib/config/dashboard.config.d.js +0 -0
- package/dist/lib/config/icon-map.d.js +0 -0
- package/dist/lib/config/index.d.js +0 -7
- package/dist/lib/config/nextspark-types.d.js +0 -0
- package/dist/lib/config/roles-merge.d.js +0 -0
- package/dist/lib/config/types.d.js +0 -0
- package/dist/lib/db.d.js +0 -0
- package/dist/lib/email/factory.d.js +0 -0
- package/dist/lib/email/index.d.js +0 -3
- package/dist/lib/email/providers/console.d.js +0 -0
- package/dist/lib/email/providers/resend.d.js +0 -0
- package/dist/lib/email/templates.d.js +0 -0
- package/dist/lib/email/types.d.js +0 -0
- package/dist/lib/entities/types.d.js +0 -0
- package/dist/lib/permissions/system.d.js +0 -0
- package/dist/lib/permissions/types.d.js +0 -0
- package/dist/lib/plugins/hook-system.d.js +0 -0
- package/dist/lib/scheduled-actions/cleanup.d.js +0 -0
- package/dist/lib/scheduled-actions/index.d.js +0 -19
- package/dist/lib/scheduled-actions/initializer.d.js +0 -1
- package/dist/lib/scheduled-actions/processor.d.js +0 -0
- package/dist/lib/scheduled-actions/registry.d.js +0 -0
- package/dist/lib/scheduled-actions/scheduler.d.js +0 -0
- package/dist/lib/scheduled-actions/types.d.js +0 -0
- package/dist/lib/services/api-routes.service.d.js +0 -0
- package/dist/lib/services/entity-type.service.d.js +0 -0
- package/dist/lib/services/index.d.js +0 -40
- package/dist/lib/services/invoice.service.d.js +0 -0
- package/dist/lib/services/membership.service.d.js +0 -0
- package/dist/lib/services/meta.service.d.js +0 -0
- package/dist/lib/services/middleware.service.d.js +0 -0
- package/dist/lib/services/namespace.service.d.js +0 -0
- package/dist/lib/services/permission.service.d.js +0 -0
- package/dist/lib/services/plan.service.d.js +0 -0
- package/dist/lib/services/plugin.service.d.js +0 -0
- package/dist/lib/services/route-handler.service.d.js +0 -0
- package/dist/lib/services/scope.service.d.js +0 -0
- package/dist/lib/services/subscription.service.d.js +0 -0
- package/dist/lib/services/team-member.service.d.js +0 -0
- package/dist/lib/services/team.service.d.js +0 -0
- package/dist/lib/services/theme.service.d.js +0 -0
- package/dist/lib/services/usage.service.d.js +0 -0
- package/dist/lib/services/user-flags.service.d.js +0 -0
- package/dist/lib/services/user.service.d.js +0 -0
- package/dist/lib/teams/helpers.d.js +0 -0
- package/dist/lib/teams/permissions.d.js +0 -0
- package/dist/lib/teams/types.d.js +0 -0
- package/dist/lib/utils/config-merge.d.js +0 -0
- package/dist/lib/utils/file-logger.d.js +0 -0
- package/dist/lib/utils.d.js +0 -0
- package/dist/styles/classes.json +0 -1093
- package/dist/styles/ui.css +0 -2
- package/dist/types/auth.d.js +0 -0
- package/dist/types/blocks.d.js +0 -0
- package/dist/types/meta.types.d.js +0 -0
- package/dist/types/plugin.d.js +0 -0
- package/dist/types/testing.types.d.js +0 -0
- package/dist/types/theme.d.js +0 -0
- package/dist/types/user.types.d.js +0 -0
- package/scripts/build/build-ui-css.mjs +0 -351
- /package/dist/{components/app/layouts/PublicFooter.d.js → lib/auth/security-notifications/types.js} +0 -0
- /package/dist/{components/app/layouts/PublicNavbar.d.js → nextspark-registries.d.js} +0 -0
- /package/dist/{components/app/misc/ThemeToggle.d.js → types/use-intl-react-shim.d.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-client.d.ts","sourceRoot":"","sources":["../../src/lib/auth-client.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/auth-client.js
CHANGED
|
@@ -2,7 +2,15 @@ import { createAuthClient } from "better-auth/react";
|
|
|
2
2
|
import { inferAdditionalFields } from "better-auth/client/plugins";
|
|
3
3
|
import { emailOTPClient } from "better-auth/client/plugins";
|
|
4
4
|
const authClient = createAuthClient({
|
|
5
|
-
|
|
5
|
+
// In the browser, always talk to the origin the page was actually served
|
|
6
|
+
// from — better-auth falls back to `window.location.origin` when baseURL
|
|
7
|
+
// is undefined (see its getBaseURL()). NEXT_PUBLIC_APP_URL is inlined at
|
|
8
|
+
// build time to one fixed origin, so using it unconditionally breaks any
|
|
9
|
+
// request from a different-but-valid origin: LAN/device testing, Vercel
|
|
10
|
+
// preview deployments, and tenant subdomains (#163). Server-side (no
|
|
11
|
+
// window), keep the env var since there's no request origin to infer from
|
|
12
|
+
// on the very first render before hydration.
|
|
13
|
+
baseURL: typeof window === "undefined" ? process.env.NEXT_PUBLIC_APP_URL || "http://localhost:5173" : void 0,
|
|
6
14
|
plugins: [
|
|
7
15
|
inferAdditionalFields(),
|
|
8
16
|
emailOTPClient()
|
|
@@ -19,9 +27,13 @@ const {
|
|
|
19
27
|
sendVerificationEmail,
|
|
20
28
|
emailOtp
|
|
21
29
|
} = authClient;
|
|
30
|
+
async function refreshSessionCookie() {
|
|
31
|
+
return authClient.getSession({ query: { disableCookieCache: true } });
|
|
32
|
+
}
|
|
22
33
|
export {
|
|
23
34
|
authClient,
|
|
24
35
|
emailOtp,
|
|
36
|
+
refreshSessionCookie,
|
|
25
37
|
requestPasswordReset,
|
|
26
38
|
resetPassword,
|
|
27
39
|
sendVerificationEmail,
|
package/dist/lib/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAUA,OAAO,EAAgF,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAUA,OAAO,EAAgF,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAevH;;;;;;;;;;;;;GAaG;AACH,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQlF;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnF;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+GD,eAAO,MAAM,IAAI,qEAoWf,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,kBAAkB,EAAE,QAAQ,EAAE,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAO9B"}
|
package/dist/lib/auth.js
CHANGED
|
@@ -15,7 +15,9 @@ import { TeamMemberService } from "./services/team-member.service.js";
|
|
|
15
15
|
import { shouldSkipTeamCreation, getSignupContext } from "./auth-context.js";
|
|
16
16
|
import { isDomainAllowed } from "./auth/registration-helpers.js";
|
|
17
17
|
import { registrationGuardPlugin } from "./auth/registration-guard-plugin.js";
|
|
18
|
-
import {
|
|
18
|
+
import { resolveSessionConfig } from "./auth/session-config.js";
|
|
19
|
+
import { isPasswordLoginEnabled } from "./auth/auth-methods.js";
|
|
20
|
+
import { getCorsOrigins, isPrivateLanOrigin, normalizeCorsEnvironment } from "./utils/cors.js";
|
|
19
21
|
async function hasPendingInvitationForEmail(email) {
|
|
20
22
|
const row = await queryOne(
|
|
21
23
|
`SELECT id FROM "team_invitations"
|
|
@@ -42,6 +44,7 @@ const pool = new Pool({
|
|
|
42
44
|
idleTimeoutMillis: 3e4,
|
|
43
45
|
max: 20
|
|
44
46
|
});
|
|
47
|
+
const sessionConfig = resolveSessionConfig(AUTH_CONFIG);
|
|
45
48
|
function resolveNonOwnerSignupRole() {
|
|
46
49
|
var _a, _b, _c, _d;
|
|
47
50
|
const cfg = AUTH_CONFIG.signupIntent;
|
|
@@ -128,7 +131,11 @@ const auth = betterAuth({
|
|
|
128
131
|
}
|
|
129
132
|
},
|
|
130
133
|
emailAndPassword: {
|
|
131
|
-
|
|
134
|
+
// Enabled by default even under the passwordless preset (AUTH_CONFIG.methods
|
|
135
|
+
// only shapes the login UI) so password accounts, seeded test users and
|
|
136
|
+
// API logins keep working. A theme hard-disables it with
|
|
137
|
+
// `auth.emailAndPassword.enabled: false`.
|
|
138
|
+
enabled: isPasswordLoginEnabled(AUTH_CONFIG),
|
|
132
139
|
requireEmailVerification: true,
|
|
133
140
|
minPasswordLength: 8,
|
|
134
141
|
maxPasswordLength: 128,
|
|
@@ -143,6 +150,7 @@ const auth = betterAuth({
|
|
|
143
150
|
// means (OTP, invitation token, claim-account flow, etc.).
|
|
144
151
|
sendOnSignUp: AUTH_CONFIG.sendVerificationEmailOnSignup ?? true,
|
|
145
152
|
sendVerificationEmail: (params) => sendVerificationEmailCallback(params, emailService),
|
|
153
|
+
// @ts-expect-error — pre-existing type error, tracked in https://github.com/NextSpark-js/nextspark/issues/131
|
|
146
154
|
verifyTokenExpiresIn: 60 * 60 * 24
|
|
147
155
|
// 24 hours
|
|
148
156
|
},
|
|
@@ -172,8 +180,29 @@ const auth = betterAuth({
|
|
|
172
180
|
}
|
|
173
181
|
},
|
|
174
182
|
baseURL: baseUrl,
|
|
175
|
-
// Use unified CORS configuration from app.config.ts + theme extensions + env vars
|
|
176
|
-
|
|
183
|
+
// Use unified CORS configuration from app.config.ts + theme extensions + env vars.
|
|
184
|
+
// A function (rather than a static array) so dev-like environments can also
|
|
185
|
+
// trust the request's OWN origin when it's a private LAN address — #163's
|
|
186
|
+
// client fix made the browser call back to whatever origin the page was
|
|
187
|
+
// loaded from (LAN IP, phone, etc.), but the static origin list could never
|
|
188
|
+
// enumerate that address in advance, so the server still rejected it with
|
|
189
|
+
// "Invalid origin" (#170). Scoped to private/LAN addresses and non-production
|
|
190
|
+
// only: never trusts an arbitrary public origin, and never applies in prod.
|
|
191
|
+
// Public-internet cases (Vercel previews, tenant subdomains) are covered by
|
|
192
|
+
// adding a wildcard entry (e.g. "https://*.vercel.app") to
|
|
193
|
+
// api.cors.additionalOrigins — better-auth's own trustedOrigins matching
|
|
194
|
+
// already supports the same wildcard syntax as isOriginAllowed() above.
|
|
195
|
+
trustedOrigins: async (request) => {
|
|
196
|
+
const origins = getCorsOrigins(APP_CONFIG_MERGED);
|
|
197
|
+
if (normalizeCorsEnvironment(process.env.NODE_ENV || "development") === "production") {
|
|
198
|
+
return origins;
|
|
199
|
+
}
|
|
200
|
+
const requestOrigin = request == null ? void 0 : request.headers.get("origin");
|
|
201
|
+
if (requestOrigin && isPrivateLanOrigin(requestOrigin)) {
|
|
202
|
+
return [...origins, requestOrigin];
|
|
203
|
+
}
|
|
204
|
+
return origins;
|
|
205
|
+
},
|
|
177
206
|
// Redirect auth errors to our custom error page instead of Better Auth's default
|
|
178
207
|
onAPIError: {
|
|
179
208
|
errorURL: "/auth-error"
|
|
@@ -181,6 +210,10 @@ const auth = betterAuth({
|
|
|
181
210
|
plugins: [
|
|
182
211
|
registrationGuardPlugin(),
|
|
183
212
|
// Intercept OAuth signup attempts
|
|
213
|
+
// Passwordless preset: one-time code by email (AUTH_CONFIG.methods
|
|
214
|
+
// 'email-otp', on by default). Always registered so a theme can switch
|
|
215
|
+
// presets without touching the server; the code travels through the
|
|
216
|
+
// configured email provider (Resend in the default setup).
|
|
184
217
|
emailOTP({
|
|
185
218
|
async sendVerificationOTP({ email, otp, type }) {
|
|
186
219
|
const template = await sendOtpVerificationEmail({
|
|
@@ -202,14 +235,13 @@ const auth = betterAuth({
|
|
|
202
235
|
// MUST be the last plugin for Next.js cookie handling
|
|
203
236
|
],
|
|
204
237
|
session: {
|
|
205
|
-
|
|
206
|
-
//
|
|
207
|
-
|
|
208
|
-
|
|
238
|
+
// Configurable per theme via `auth.session` in app.config.ts (defaults:
|
|
239
|
+
// 7 days / renewed daily / 5-minute cookie cache).
|
|
240
|
+
expiresIn: sessionConfig.expiresIn,
|
|
241
|
+
updateAge: sessionConfig.updateAge,
|
|
209
242
|
cookieCache: {
|
|
210
|
-
enabled:
|
|
211
|
-
maxAge:
|
|
212
|
-
// 5 minutes
|
|
243
|
+
enabled: sessionConfig.cookieCache.enabled,
|
|
244
|
+
maxAge: sessionConfig.cookieCache.maxAge
|
|
213
245
|
}
|
|
214
246
|
},
|
|
215
247
|
// Database hooks for user lifecycle events (Better Auth API)
|
|
@@ -217,6 +249,7 @@ const auth = betterAuth({
|
|
|
217
249
|
user: {
|
|
218
250
|
create: {
|
|
219
251
|
// Validate registration mode before creating user
|
|
252
|
+
// @ts-expect-error — pre-existing type error, tracked in https://github.com/NextSpark-js/nextspark/issues/131
|
|
220
253
|
before: async (user) => {
|
|
221
254
|
var _a, _b, _c, _d;
|
|
222
255
|
const registrationMode = ((_b = (_a = AUTH_CONFIG) == null ? void 0 : _a.registration) == null ? void 0 : _b.mode) ?? "open";
|
|
@@ -285,6 +318,7 @@ const auth = betterAuth({
|
|
|
285
318
|
session: {
|
|
286
319
|
create: {
|
|
287
320
|
// Enforce domain restrictions on EVERY login (not just signup)
|
|
321
|
+
// @ts-expect-error — pre-existing type error, tracked in https://github.com/NextSpark-js/nextspark/issues/131
|
|
288
322
|
before: async (session) => {
|
|
289
323
|
var _a, _b, _c, _d, _e;
|
|
290
324
|
const registrationMode = ((_b = (_a = AUTH_CONFIG) == null ? void 0 : _a.registration) == null ? void 0 : _b.mode) ?? "open";
|
|
@@ -14,8 +14,13 @@ import type { BillingGateway } from './interface';
|
|
|
14
14
|
* Singleton - the same instance is returned on subsequent calls.
|
|
15
15
|
*
|
|
16
16
|
* Provider is determined by BILLING_REGISTRY.config.provider (from billing.config.ts).
|
|
17
|
+
*
|
|
18
|
+
* Gateway modules are imported dynamically inside the switch so that only the
|
|
19
|
+
* configured provider's SDK ends up in the bundle (see #127). Every call site
|
|
20
|
+
* that transitively imports this factory (root layout resource hints, auth
|
|
21
|
+
* pages, ...) would otherwise ship every provider SDK.
|
|
17
22
|
*/
|
|
18
|
-
export declare function getBillingGateway(): BillingGateway
|
|
23
|
+
export declare function getBillingGateway(): Promise<BillingGateway>;
|
|
19
24
|
/**
|
|
20
25
|
* Get resource hint domains for the configured billing provider.
|
|
21
26
|
* Use in <head> for performance optimization.
|
|
@@ -24,10 +29,10 @@ export declare function getBillingGateway(): BillingGateway;
|
|
|
24
29
|
* // In layout.tsx:
|
|
25
30
|
* const { preconnect, dnsPrefetch } = getBillingResourceHints()
|
|
26
31
|
*/
|
|
27
|
-
export declare function getBillingResourceHints(): {
|
|
32
|
+
export declare function getBillingResourceHints(): Promise<{
|
|
28
33
|
preconnect: string[];
|
|
29
34
|
dnsPrefetch: string[];
|
|
30
|
-
}
|
|
35
|
+
}>;
|
|
31
36
|
/**
|
|
32
37
|
* Reset the cached gateway instance.
|
|
33
38
|
* Useful for testing or when billing config changes at runtime.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/lib/billing/gateways/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/lib/billing/gateways/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAKjD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC,CAejE;AA0BD;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAOxG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C"}
|
|
@@ -1,38 +1,52 @@
|
|
|
1
1
|
import { BILLING_REGISTRY } from "@nextsparkjs/registries/billing-registry";
|
|
2
|
-
import { StripeGateway } from "./stripe.js";
|
|
3
|
-
import { PolarGateway } from "./polar.js";
|
|
4
2
|
let gatewayInstance = null;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
3
|
+
let gatewayLoading = null;
|
|
4
|
+
async function getBillingGateway() {
|
|
5
|
+
if (gatewayInstance) {
|
|
6
|
+
return gatewayInstance;
|
|
7
|
+
}
|
|
8
|
+
if (!gatewayLoading) {
|
|
9
|
+
gatewayLoading = loadGateway().then((gateway) => {
|
|
10
|
+
gatewayInstance = gateway;
|
|
11
|
+
return gateway;
|
|
12
|
+
}).finally(() => {
|
|
13
|
+
gatewayLoading = null;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return gatewayLoading;
|
|
17
|
+
}
|
|
18
|
+
async function loadGateway() {
|
|
19
|
+
const provider = BILLING_REGISTRY.provider;
|
|
20
|
+
switch (provider) {
|
|
21
|
+
case "stripe": {
|
|
22
|
+
const { StripeGateway } = await import("./stripe.js");
|
|
23
|
+
return new StripeGateway();
|
|
24
|
+
}
|
|
25
|
+
case "polar": {
|
|
26
|
+
const { PolarGateway } = await import("./polar.js");
|
|
27
|
+
return new PolarGateway();
|
|
23
28
|
}
|
|
29
|
+
// Future providers (each one only enters the bundle when configured):
|
|
30
|
+
// case 'paddle': { const { PaddleGateway } = await import('./paddle.js'); return new PaddleGateway() }
|
|
31
|
+
// case 'lemonsqueezy': { ... }
|
|
32
|
+
// case 'mercadopago': { ... }
|
|
33
|
+
default:
|
|
34
|
+
throw new Error(
|
|
35
|
+
`Unsupported billing provider: "${provider}". Supported providers: stripe, polar. Check your billing.config.ts provider setting.`
|
|
36
|
+
);
|
|
24
37
|
}
|
|
25
|
-
return gatewayInstance;
|
|
26
38
|
}
|
|
27
|
-
function getBillingResourceHints() {
|
|
39
|
+
async function getBillingResourceHints() {
|
|
28
40
|
try {
|
|
29
|
-
|
|
41
|
+
const gateway = await getBillingGateway();
|
|
42
|
+
return gateway.getResourceHintDomains();
|
|
30
43
|
} catch {
|
|
31
44
|
return { preconnect: [], dnsPrefetch: [] };
|
|
32
45
|
}
|
|
33
46
|
}
|
|
34
47
|
function resetBillingGateway() {
|
|
35
48
|
gatewayInstance = null;
|
|
49
|
+
gatewayLoading = null;
|
|
36
50
|
}
|
|
37
51
|
export {
|
|
38
52
|
getBillingGateway,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stripe-webhook.d.ts","sourceRoot":"","sources":["../../../src/lib/billing/stripe-webhook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAKzC,OAAO,KAAK,EAAiB,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEnE,YAAY,EAAE,qBAAqB,EAAE,CAAA;AAErC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,uBAAuB,GACnC,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"stripe-webhook.d.ts","sourceRoot":"","sources":["../../../src/lib/billing/stripe-webhook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAKzC,OAAO,KAAK,EAAiB,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEnE,YAAY,EAAE,qBAAqB,EAAE,CAAA;AAErC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,uBAAuB,GACnC,OAAO,CAAC,QAAQ,CAAC,CAwEnB"}
|
|
@@ -9,7 +9,8 @@ async function handleStripeWebhook(request, extensions) {
|
|
|
9
9
|
}
|
|
10
10
|
let event;
|
|
11
11
|
try {
|
|
12
|
-
const
|
|
12
|
+
const gateway = await getBillingGateway();
|
|
13
|
+
const verified = gateway.verifyWebhookSignature(payload, signature);
|
|
13
14
|
event = { id: verified.id, type: verified.type, data: verified.data };
|
|
14
15
|
} catch (error) {
|
|
15
16
|
console.error("[stripe-webhook] Signature verification failed:", error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.config.d.ts","sourceRoot":"","sources":["../../../src/lib/config/app.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"app.config.d.ts","sourceRoot":"","sources":["../../../src/lib/config/app.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,SAAS,CAAA;AAMzD,eAAO,MAAM,kBAAkB,EAAE,SA2jBhC,CAAA"}
|
|
@@ -370,6 +370,30 @@ const DEFAULT_APP_CONFIG = {
|
|
|
370
370
|
enabled: true
|
|
371
371
|
}
|
|
372
372
|
},
|
|
373
|
+
/**
|
|
374
|
+
* Login methods offered by the app, in priority order — the PASSWORDLESS
|
|
375
|
+
* preset by default: a one-time code by email + Google OAuth, no password
|
|
376
|
+
* field ("the smoothest possible flow for forgetful users").
|
|
377
|
+
*
|
|
378
|
+
* Themes override the list in their app.config.ts (arrays replace, they
|
|
379
|
+
* don't merge):
|
|
380
|
+
* methods: ['email-password', 'google'] // classic preset
|
|
381
|
+
* methods: ['email-otp', 'email-password', 'google'] // both, code first
|
|
382
|
+
*
|
|
383
|
+
* Requirements: an email provider for the code (RESEND_API_KEY +
|
|
384
|
+
* RESEND_FROM_EMAIL) and GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET for Google.
|
|
385
|
+
* See docs/06-authentication/12-passwordless-preset.md.
|
|
386
|
+
*/
|
|
387
|
+
methods: ["email-otp", "google"],
|
|
388
|
+
/**
|
|
389
|
+
* Better Auth's email + password endpoints stay enabled by default (even
|
|
390
|
+
* under the passwordless preset) so password accounts, seeded test users
|
|
391
|
+
* and API-based logins keep working. Set `enabled: false` in a theme to
|
|
392
|
+
* hard-disable password auth server-side.
|
|
393
|
+
*/
|
|
394
|
+
emailAndPassword: {
|
|
395
|
+
enabled: true
|
|
396
|
+
},
|
|
373
397
|
/**
|
|
374
398
|
* Whether Better Auth automatically sends the verification email on signup.
|
|
375
399
|
*
|
|
@@ -391,6 +415,53 @@ const DEFAULT_APP_CONFIG = {
|
|
|
391
415
|
enabled: false,
|
|
392
416
|
roleMap: {},
|
|
393
417
|
skipTeamForNonOwnerIntents: false
|
|
418
|
+
},
|
|
419
|
+
/**
|
|
420
|
+
* Built-in security email notifications (issue #75).
|
|
421
|
+
*
|
|
422
|
+
* Better Auth does not send new-device / password-changed / email-changed
|
|
423
|
+
* emails on its own. With this enabled, core dispatches them best-effort
|
|
424
|
+
* after a successful sign-in / change-password / change-email — every app on
|
|
425
|
+
* the platform gets the same baseline security emails without patching the
|
|
426
|
+
* auth route in its theme.
|
|
427
|
+
*
|
|
428
|
+
* Opt out entirely with `enabled: false`, or disable individual events.
|
|
429
|
+
* Brand/localize the emails from a theme via `registerSecurityEmailTemplate`.
|
|
430
|
+
*/
|
|
431
|
+
securityNotifications: {
|
|
432
|
+
enabled: true,
|
|
433
|
+
events: {
|
|
434
|
+
newDeviceLogin: true,
|
|
435
|
+
passwordChanged: true,
|
|
436
|
+
emailChanged: true
|
|
437
|
+
},
|
|
438
|
+
// null = fingerprints never expire (one alert per device, ever).
|
|
439
|
+
fingerprintTtlDays: null
|
|
440
|
+
},
|
|
441
|
+
/**
|
|
442
|
+
* Session duration and renewal (seconds). Passed straight to Better Auth's
|
|
443
|
+
* `session` options, so a theme can ship long-lived sessions (e.g. for an
|
|
444
|
+
* installed PWA) by overriding these in its own app.config.ts:
|
|
445
|
+
*
|
|
446
|
+
* auth: { session: { expiresIn: 60 * 60 * 24 * 90, updateAge: 60 * 60 * 24 * 7 } }
|
|
447
|
+
*
|
|
448
|
+
* The session is "rolling": every `updateAge` seconds of activity the
|
|
449
|
+
* expiration is pushed `expiresIn` seconds into the future and the cookie
|
|
450
|
+
* is re-issued. NOTE: that cookie re-issue only happens when the session is
|
|
451
|
+
* read from a Route Handler or Server Action — Server Component renders
|
|
452
|
+
* cannot write cookies (see `lib/auth/session-refresh.ts` and
|
|
453
|
+
* `useSessionCookieRefresh`).
|
|
454
|
+
*/
|
|
455
|
+
session: {
|
|
456
|
+
expiresIn: 60 * 60 * 24 * 7,
|
|
457
|
+
// 7 days
|
|
458
|
+
updateAge: 60 * 60 * 24,
|
|
459
|
+
// 1 day
|
|
460
|
+
cookieCache: {
|
|
461
|
+
enabled: true,
|
|
462
|
+
maxAge: 60 * 5
|
|
463
|
+
// 5 minutes
|
|
464
|
+
}
|
|
394
465
|
}
|
|
395
466
|
},
|
|
396
467
|
// =============================================================================
|
|
@@ -29,10 +29,6 @@ export declare const MOBILE_NAV_CONFIG: any;
|
|
|
29
29
|
export declare const TEAMS_CONFIG: any;
|
|
30
30
|
export declare const MEDIA_CONFIG: any;
|
|
31
31
|
export declare const AUTH_CONFIG: any;
|
|
32
|
-
/**
|
|
33
|
-
* Public auth config safe for client-side consumption.
|
|
34
|
-
* Strips allowedDomains and other sensitive data.
|
|
35
|
-
*/
|
|
36
32
|
export declare const PUBLIC_AUTH_CONFIG: {
|
|
37
33
|
registration: {
|
|
38
34
|
mode: import("./types").RegistrationMode;
|
|
@@ -42,6 +38,7 @@ export declare const PUBLIC_AUTH_CONFIG: {
|
|
|
42
38
|
enabled: boolean;
|
|
43
39
|
};
|
|
44
40
|
};
|
|
41
|
+
methods: import("./types").AuthLoginMethod[];
|
|
45
42
|
};
|
|
46
43
|
export declare const TOPBAR_CONFIG: any;
|
|
47
44
|
export declare const SIDEBAR_CONFIG: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-sync.d.ts","sourceRoot":"","sources":["../../../src/lib/config/config-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"config-sync.d.ts","sourceRoot":"","sources":["../../../src/lib/config/config-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA+NH,eAAO,MAAM,iBAAiB,KAAkB,CAAA;AAChD,eAAO,MAAM,gBAAgB,KAAwB,CAAA;AACrD,eAAO,MAAM,UAAU,6BAAkB,CAAA;AAGzC,eAAO,MAAM,iBAAiB,KAA0C,CAAA;AACxE,eAAO,MAAM,cAAc,KAAuC,CAAA;AAClE,eAAO,MAAM,eAAe,KAA6C,CAAA;AACzE,eAAO,MAAM,YAAY,KAA0C,CAAA;AACnE,eAAO,MAAM,QAAQ,KAA6B,CAAA;AAClD,eAAO,MAAM,WAAW,KAAgC,CAAA;AAGxD,eAAO,MAAM,WAAW,KAAyB,CAAA;AACjD,eAAO,MAAM,UAAU,KAAwB,CAAA;AAC/C,eAAO,MAAM,iBAAiB,KAA8B,CAAA;AAC5D,eAAO,MAAM,UAAU,KAAwB,CAAA;AAC/C,eAAO,MAAM,iBAAiB,KAA8B,CAAA;AAC5D,eAAO,MAAM,YAAY,KAA0B,CAAA;AACnD,eAAO,MAAM,YAAY,KAA0B,CAAA;AACnD,eAAO,MAAM,WAAW,KAAyB,CAAA;AAUjD,eAAO,MAAM,kBAAkB;;cAEqC,OAAO,SAAS,EAAE,gBAAgB;;;;;;;;CAYxD,CAAA;AAI9C,eAAO,MAAM,aAAa,KAA0B,CAAA;AACpD,eAAO,MAAM,cAAc,KAA2B,CAAA;AACtD,eAAO,MAAM,eAAe,KAA4B,CAAA;AACxD,eAAO,MAAM,eAAe,KAA4B,CAAA;AACxD,eAAO,MAAM,eAAe,KAA4B,CAAA;AACxD,eAAO,MAAM,kBAAkB,KAA+B,CAAA;AAC9D,eAAO,MAAM,oBAAoB,KAAiC,CAAA;AAIlE,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,OAExD,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,uBAAuB,QAAO,mBAAmB,EAE7D,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,KAAG,OAExD,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,KAAG,CAAC,GAAG,SAGzF,CAAA;AAGD,MAAM,MAAM,eAAe,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;AACpF,MAAM,MAAM,oBAAoB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;AACnF,MAAM,MAAM,QAAQ,GAAG,OAAO,iBAAiB,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA"}
|
|
@@ -4,6 +4,7 @@ import { DEFAULT_DASHBOARD_CONFIG } from "./dashboard.config.js";
|
|
|
4
4
|
import { ThemeService } from "../services/theme.service.js";
|
|
5
5
|
import { mergeConfigs } from "../utils/config-merge.js";
|
|
6
6
|
import { mergeRolesConfig } from "./roles-merge.js";
|
|
7
|
+
import { resolveAuthMethods } from "../auth/auth-methods.js";
|
|
7
8
|
import {
|
|
8
9
|
AVAILABLE_ROLES as REGISTRY_AVAILABLE_ROLES,
|
|
9
10
|
ROLE_HIERARCHY as REGISTRY_ROLE_HIERARCHY,
|
|
@@ -141,6 +142,7 @@ const MOBILE_NAV_CONFIG = APP_CONFIG_MERGED.mobileNav;
|
|
|
141
142
|
const TEAMS_CONFIG = APP_CONFIG_MERGED.teams;
|
|
142
143
|
const MEDIA_CONFIG = APP_CONFIG_MERGED.media;
|
|
143
144
|
const AUTH_CONFIG = APP_CONFIG_MERGED.auth;
|
|
145
|
+
const RESOLVED_AUTH_METHODS = resolveAuthMethods(APP_CONFIG_MERGED.auth);
|
|
144
146
|
const PUBLIC_AUTH_CONFIG = {
|
|
145
147
|
registration: {
|
|
146
148
|
mode: ((_b = (_a = APP_CONFIG_MERGED.auth) == null ? void 0 : _a.registration) == null ? void 0 : _b.mode) ?? "open"
|
|
@@ -148,9 +150,11 @@ const PUBLIC_AUTH_CONFIG = {
|
|
|
148
150
|
},
|
|
149
151
|
providers: {
|
|
150
152
|
google: {
|
|
151
|
-
|
|
153
|
+
// Offered only when listed in `methods` AND not disabled in `providers`.
|
|
154
|
+
enabled: ((_e = (_d = (_c = APP_CONFIG_MERGED.auth) == null ? void 0 : _c.providers) == null ? void 0 : _d.google) == null ? void 0 : _e.enabled) !== false && RESOLVED_AUTH_METHODS.includes("google")
|
|
152
155
|
}
|
|
153
|
-
}
|
|
156
|
+
},
|
|
157
|
+
methods: RESOLVED_AUTH_METHODS
|
|
154
158
|
};
|
|
155
159
|
const TOPBAR_CONFIG = DASHBOARD_CONFIG.topbar;
|
|
156
160
|
const SIDEBAR_CONFIG = DASHBOARD_CONFIG.sidebar;
|
|
@@ -388,11 +388,138 @@ export interface SignupIntentConfig {
|
|
|
388
388
|
*/
|
|
389
389
|
skipTeamForNonOwnerIntents?: boolean;
|
|
390
390
|
}
|
|
391
|
+
/**
|
|
392
|
+
* Built-in security email notifications (issue #75).
|
|
393
|
+
*
|
|
394
|
+
* Better Auth does not ship new-device / password-changed / email-changed
|
|
395
|
+
* emails. When enabled, the core auth route dispatches them best-effort after a
|
|
396
|
+
* successful sign-in / change-password / change-email. Themes brand or localize
|
|
397
|
+
* the emails via `registerSecurityEmailTemplate(type, locale, builder)` without
|
|
398
|
+
* forking core.
|
|
399
|
+
*/
|
|
400
|
+
export interface SecurityNotificationsConfig {
|
|
401
|
+
/** Master switch. When false the dispatcher is a complete no-op. */
|
|
402
|
+
enabled: boolean;
|
|
403
|
+
/** Per-event switches (all default on). */
|
|
404
|
+
events: {
|
|
405
|
+
/** Email on a sign-in from a never-seen device fingerprint. */
|
|
406
|
+
newDeviceLogin: boolean;
|
|
407
|
+
/** Email confirming a password change. */
|
|
408
|
+
passwordChanged: boolean;
|
|
409
|
+
/** Email to the OLD address when the account email is being changed. */
|
|
410
|
+
emailChanged: boolean;
|
|
411
|
+
};
|
|
412
|
+
/**
|
|
413
|
+
* How long a device fingerprint stays "known" before a re-login from it is
|
|
414
|
+
* treated as new again.
|
|
415
|
+
* - `null` (default): fingerprints never expire — one alert per device, ever.
|
|
416
|
+
* - a positive number of days: re-alert if the last matching login is older.
|
|
417
|
+
*/
|
|
418
|
+
fingerprintTtlDays: number | null;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Session lifetime configuration (all values in seconds).
|
|
422
|
+
*
|
|
423
|
+
* Maps 1:1 to Better Auth's `session` options so a theme can tune session
|
|
424
|
+
* duration and renewal from its `app.config.ts` without patching the core:
|
|
425
|
+
*
|
|
426
|
+
* ```ts
|
|
427
|
+
* auth: {
|
|
428
|
+
* session: {
|
|
429
|
+
* expiresIn: 60 * 60 * 24 * 90, // 90 days — long-lived sessions for an installed PWA
|
|
430
|
+
* updateAge: 60 * 60 * 24 * 7, // extend the session (and re-issue the cookie) weekly
|
|
431
|
+
* },
|
|
432
|
+
* }
|
|
433
|
+
* ```
|
|
434
|
+
*
|
|
435
|
+
* Invalid values (non-positive, NaN) fall back to the core defaults with a
|
|
436
|
+
* warning; `updateAge` is clamped to `expiresIn`. See
|
|
437
|
+
* `lib/auth/session-config.ts` for the resolution rules.
|
|
438
|
+
*/
|
|
439
|
+
export interface AuthSessionConfig {
|
|
440
|
+
/** Total session lifetime. Default: 7 days. */
|
|
441
|
+
expiresIn?: number;
|
|
442
|
+
/**
|
|
443
|
+
* How often a session that is actively used gets its expiration extended
|
|
444
|
+
* (rolling session). Default: 1 day, or `expiresIn / 2` when `expiresIn` is
|
|
445
|
+
* shorter than 2 days. Must be <= `expiresIn`.
|
|
446
|
+
*/
|
|
447
|
+
updateAge?: number;
|
|
448
|
+
/**
|
|
449
|
+
* Cookie cache: serve the session from a short-lived signed cookie instead
|
|
450
|
+
* of hitting the database on every request.
|
|
451
|
+
*/
|
|
452
|
+
cookieCache?: {
|
|
453
|
+
/** Default: true */
|
|
454
|
+
enabled?: boolean;
|
|
455
|
+
/** Cache lifetime. Default: 5 minutes. */
|
|
456
|
+
maxAge?: number;
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Login methods an app can offer.
|
|
461
|
+
*
|
|
462
|
+
* - `'email-otp'`: passwordless — a 6-digit one-time code is emailed to the
|
|
463
|
+
* user (Better Auth `emailOTP` plugin, sent through the configured email
|
|
464
|
+
* provider — Resend in the default setup). A first sign-in creates the
|
|
465
|
+
* account, so no separate signup form is needed.
|
|
466
|
+
* - `'google'`: Google OAuth (needs GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET;
|
|
467
|
+
* also gated by `providers.google.enabled`).
|
|
468
|
+
* - `'email-password'`: classic email + password, with signup and
|
|
469
|
+
* forgot/reset-password flows.
|
|
470
|
+
*/
|
|
471
|
+
export type AuthLoginMethod = 'email-otp' | 'google' | 'email-password';
|
|
472
|
+
/**
|
|
473
|
+
* Named bundles of login methods (see `AUTH_PRESETS` in
|
|
474
|
+
* `lib/auth/auth-methods.ts`):
|
|
475
|
+
* - `'passwordless'`: `['email-otp', 'google']` — the DEFAULT. No password field.
|
|
476
|
+
* - `'classic'`: `['email-password', 'google']`.
|
|
477
|
+
*/
|
|
478
|
+
export type AuthPreset = 'passwordless' | 'classic';
|
|
391
479
|
export interface AuthConfig {
|
|
392
480
|
/** Registration settings */
|
|
393
481
|
registration: AuthRegistrationConfig;
|
|
482
|
+
/**
|
|
483
|
+
* Login methods offered by the app, in priority order.
|
|
484
|
+
*
|
|
485
|
+
* Drives the login templates (web `LoginForm`, mobile login screen) and
|
|
486
|
+
* `PUBLIC_AUTH_CONFIG.methods`. The first email method in the list
|
|
487
|
+
* (`'email-otp'` or `'email-password'`) is the one the login form opens
|
|
488
|
+
* with; when both are listed the user can switch between them.
|
|
489
|
+
*
|
|
490
|
+
* Default: the passwordless preset `['email-otp', 'google']` — the login has
|
|
491
|
+
* no password field at all. Themes override it in their app.config.ts:
|
|
492
|
+
*
|
|
493
|
+
* ```ts
|
|
494
|
+
* auth: { methods: ['email-password', 'google'] } // classic
|
|
495
|
+
* auth: { methods: ['email-otp', 'email-password', 'google'] } // both, OTP first
|
|
496
|
+
* ```
|
|
497
|
+
*
|
|
498
|
+
* This only shapes the UI and the signup page. Better Auth's password
|
|
499
|
+
* endpoints stay enabled unless `emailAndPassword.enabled` is set to false.
|
|
500
|
+
*/
|
|
501
|
+
methods?: AuthLoginMethod[];
|
|
502
|
+
/**
|
|
503
|
+
* Server-side switch for Better Auth's email + password endpoints
|
|
504
|
+
* (`sign-in/email`, `sign-up/email`, forget/reset/change-password).
|
|
505
|
+
*
|
|
506
|
+
* Default: `true` — even under the passwordless preset — so existing
|
|
507
|
+
* password accounts, seeded test users and API-based logins keep working
|
|
508
|
+
* when a theme only changes the login UI. Set `{ enabled: false }` to
|
|
509
|
+
* hard-disable password auth for a strictly passwordless app.
|
|
510
|
+
*/
|
|
511
|
+
emailAndPassword?: {
|
|
512
|
+
enabled?: boolean;
|
|
513
|
+
};
|
|
514
|
+
/**
|
|
515
|
+
* Session duration / renewal. Optional — every field falls back to the core
|
|
516
|
+
* defaults (7 days, renewed daily, 5-minute cookie cache).
|
|
517
|
+
*/
|
|
518
|
+
session?: AuthSessionConfig;
|
|
394
519
|
/** OAuth provider settings */
|
|
395
520
|
providers?: AuthProvidersConfig;
|
|
521
|
+
/** Built-in security email notifications (new-device / password / email changed). */
|
|
522
|
+
securityNotifications?: SecurityNotificationsConfig;
|
|
396
523
|
/**
|
|
397
524
|
* Whether Better Auth should automatically send the built-in
|
|
398
525
|
* verification email when a user signs up via `/api/auth/sign-up/email`.
|
|
@@ -424,9 +551,12 @@ export interface PublicAuthConfig {
|
|
|
424
551
|
};
|
|
425
552
|
providers: {
|
|
426
553
|
google: {
|
|
554
|
+
/** Google is offered: listed in `methods` AND not disabled in `providers`. */
|
|
427
555
|
enabled: boolean;
|
|
428
556
|
};
|
|
429
557
|
};
|
|
558
|
+
/** Resolved login methods, in priority order (see `AuthConfig.methods`). */
|
|
559
|
+
methods: AuthLoginMethod[];
|
|
430
560
|
}
|
|
431
561
|
/**
|
|
432
562
|
* Complete Application Configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/config/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/config/types.ts"],"names":[],"mappings":"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"}
|