@mdguggenbichler/slugbase-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/backend/dist/app-factory.d.ts +17 -0
- package/backend/dist/app-factory.d.ts.map +1 -0
- package/backend/dist/app-factory.js +106 -0
- package/backend/dist/app-factory.js.map +1 -0
- package/backend/dist/auth/authorization.d.ts +25 -0
- package/backend/dist/auth/authorization.d.ts.map +1 -0
- package/backend/dist/auth/authorization.js +100 -0
- package/backend/dist/auth/authorization.js.map +1 -0
- package/backend/dist/auth/jwt.d.ts +5 -0
- package/backend/dist/auth/jwt.d.ts.map +1 -0
- package/backend/dist/auth/jwt.js +34 -0
- package/backend/dist/auth/jwt.js.map +1 -0
- package/backend/dist/auth/oidc.d.ts +4 -0
- package/backend/dist/auth/oidc.d.ts.map +1 -0
- package/backend/dist/auth/oidc.js +201 -0
- package/backend/dist/auth/oidc.js.map +1 -0
- package/backend/dist/config/cloud-providers.d.ts +18 -0
- package/backend/dist/config/cloud-providers.d.ts.map +1 -0
- package/backend/dist/config/cloud-providers.js +60 -0
- package/backend/dist/config/cloud-providers.js.map +1 -0
- package/backend/dist/config/cookies.d.ts +17 -0
- package/backend/dist/config/cookies.d.ts.map +1 -0
- package/backend/dist/config/cookies.js +26 -0
- package/backend/dist/config/cookies.js.map +1 -0
- package/backend/dist/config/mode.d.ts +7 -0
- package/backend/dist/config/mode.d.ts.map +1 -0
- package/backend/dist/config/mode.js +7 -0
- package/backend/dist/config/mode.js.map +1 -0
- package/backend/dist/config/swagger.d.ts +2 -0
- package/backend/dist/config/swagger.d.ts.map +1 -0
- package/backend/dist/config/swagger.js +76 -0
- package/backend/dist/config/swagger.js.map +1 -0
- package/backend/dist/config.d.ts +29 -0
- package/backend/dist/config.d.ts.map +1 -0
- package/backend/dist/config.js +41 -0
- package/backend/dist/config.js.map +1 -0
- package/backend/dist/db/index.d.ts +14 -0
- package/backend/dist/db/index.d.ts.map +1 -0
- package/backend/dist/db/index.js +114 -0
- package/backend/dist/db/index.js.map +1 -0
- package/backend/dist/db/migrate-slug-nullable.d.ts +10 -0
- package/backend/dist/db/migrate-slug-nullable.d.ts.map +1 -0
- package/backend/dist/db/migrate-slug-nullable.js +87 -0
- package/backend/dist/db/migrate-slug-nullable.js.map +1 -0
- package/backend/dist/db/migrations/001_migrate_slug_nullable.d.ts +10 -0
- package/backend/dist/db/migrations/001_migrate_slug_nullable.d.ts.map +1 -0
- package/backend/dist/db/migrations/001_migrate_slug_nullable.js +103 -0
- package/backend/dist/db/migrations/001_migrate_slug_nullable.js.map +1 -0
- package/backend/dist/db/migrations/002_add_oidc_custom_endpoints.d.ts +11 -0
- package/backend/dist/db/migrations/002_add_oidc_custom_endpoints.d.ts.map +1 -0
- package/backend/dist/db/migrations/002_add_oidc_custom_endpoints.js +92 -0
- package/backend/dist/db/migrations/002_add_oidc_custom_endpoints.js.map +1 -0
- package/backend/dist/db/migrations/003_add_bookmark_features.d.ts +5 -0
- package/backend/dist/db/migrations/003_add_bookmark_features.d.ts.map +1 -0
- package/backend/dist/db/migrations/003_add_bookmark_features.js +98 -0
- package/backend/dist/db/migrations/003_add_bookmark_features.js.map +1 -0
- package/backend/dist/db/migrations/004_make_slug_globally_unique.d.ts +12 -0
- package/backend/dist/db/migrations/004_make_slug_globally_unique.d.ts.map +1 -0
- package/backend/dist/db/migrations/004_make_slug_globally_unique.js +152 -0
- package/backend/dist/db/migrations/004_make_slug_globally_unique.js.map +1 -0
- package/backend/dist/db/migrations/005_add_email_verification.d.ts +5 -0
- package/backend/dist/db/migrations/005_add_email_verification.d.ts.map +1 -0
- package/backend/dist/db/migrations/005_add_email_verification.js +102 -0
- package/backend/dist/db/migrations/005_add_email_verification.js.map +1 -0
- package/backend/dist/db/migrations/006_refresh_tokens.d.ts +9 -0
- package/backend/dist/db/migrations/006_refresh_tokens.d.ts.map +1 -0
- package/backend/dist/db/migrations/006_refresh_tokens.js +61 -0
- package/backend/dist/db/migrations/006_refresh_tokens.js.map +1 -0
- package/backend/dist/db/migrations/007_password_reset_token_hash.d.ts +10 -0
- package/backend/dist/db/migrations/007_password_reset_token_hash.d.ts.map +1 -0
- package/backend/dist/db/migrations/007_password_reset_token_hash.js +40 -0
- package/backend/dist/db/migrations/007_password_reset_token_hash.js.map +1 -0
- package/backend/dist/db/migrations/008_slug_preferences.d.ts +8 -0
- package/backend/dist/db/migrations/008_slug_preferences.d.ts.map +1 -0
- package/backend/dist/db/migrations/008_slug_preferences.js +24 -0
- package/backend/dist/db/migrations/008_slug_preferences.js.map +1 -0
- package/backend/dist/db/migrations/009_signup_email_verified.d.ts +5 -0
- package/backend/dist/db/migrations/009_signup_email_verified.d.ts.map +1 -0
- package/backend/dist/db/migrations/009_signup_email_verified.js +79 -0
- package/backend/dist/db/migrations/009_signup_email_verified.js.map +1 -0
- package/backend/dist/db/migrations/010_organizations.d.ts +5 -0
- package/backend/dist/db/migrations/010_organizations.d.ts.map +1 -0
- package/backend/dist/db/migrations/010_organizations.js +113 -0
- package/backend/dist/db/migrations/010_organizations.js.map +1 -0
- package/backend/dist/db/migrations/011_org_scoped_teams.d.ts +11 -0
- package/backend/dist/db/migrations/011_org_scoped_teams.d.ts.map +1 -0
- package/backend/dist/db/migrations/011_org_scoped_teams.js +59 -0
- package/backend/dist/db/migrations/011_org_scoped_teams.js.map +1 -0
- package/backend/dist/db/migrations/012_org_invitations_token_hash.d.ts +10 -0
- package/backend/dist/db/migrations/012_org_invitations_token_hash.d.ts.map +1 -0
- package/backend/dist/db/migrations/012_org_invitations_token_hash.js +40 -0
- package/backend/dist/db/migrations/012_org_invitations_token_hash.js.map +1 -0
- package/backend/dist/db/migrations/013_signup_verification_token_hash.d.ts +10 -0
- package/backend/dist/db/migrations/013_signup_verification_token_hash.d.ts.map +1 -0
- package/backend/dist/db/migrations/013_signup_verification_token_hash.js +39 -0
- package/backend/dist/db/migrations/013_signup_verification_token_hash.js.map +1 -0
- package/backend/dist/db/migrations/014_stats_indexes.d.ts +8 -0
- package/backend/dist/db/migrations/014_stats_indexes.d.ts.map +1 -0
- package/backend/dist/db/migrations/014_stats_indexes.js +19 -0
- package/backend/dist/db/migrations/014_stats_indexes.js.map +1 -0
- package/backend/dist/db/migrations/015_api_tokens.d.ts +9 -0
- package/backend/dist/db/migrations/015_api_tokens.d.ts.map +1 -0
- package/backend/dist/db/migrations/015_api_tokens.js +48 -0
- package/backend/dist/db/migrations/015_api_tokens.js.map +1 -0
- package/backend/dist/db/migrations/016_free_plan_grace_ends_at.d.ts +9 -0
- package/backend/dist/db/migrations/016_free_plan_grace_ends_at.d.ts.map +1 -0
- package/backend/dist/db/migrations/016_free_plan_grace_ends_at.js +50 -0
- package/backend/dist/db/migrations/016_free_plan_grace_ends_at.js.map +1 -0
- package/backend/dist/db/migrations/017_ai_suggestions.d.ts +11 -0
- package/backend/dist/db/migrations/017_ai_suggestions.d.ts.map +1 -0
- package/backend/dist/db/migrations/017_ai_suggestions.js +78 -0
- package/backend/dist/db/migrations/017_ai_suggestions.js.map +1 -0
- package/backend/dist/db/migrations/018_ai_cache_output_language.d.ts +10 -0
- package/backend/dist/db/migrations/018_ai_cache_output_language.d.ts.map +1 -0
- package/backend/dist/db/migrations/018_ai_cache_output_language.js +89 -0
- package/backend/dist/db/migrations/018_ai_cache_output_language.js.map +1 -0
- package/backend/dist/db/migrations/019_ai_suggestion_usage.d.ts +10 -0
- package/backend/dist/db/migrations/019_ai_suggestion_usage.d.ts.map +1 -0
- package/backend/dist/db/migrations/019_ai_suggestion_usage.js +47 -0
- package/backend/dist/db/migrations/019_ai_suggestion_usage.js.map +1 -0
- package/backend/dist/db/migrations/020_tenant_scope.d.ts +5 -0
- package/backend/dist/db/migrations/020_tenant_scope.d.ts.map +1 -0
- package/backend/dist/db/migrations/020_tenant_scope.js +105 -0
- package/backend/dist/db/migrations/020_tenant_scope.js.map +1 -0
- package/backend/dist/db/migrations/_legacy_cloud_010_organizations.d.ts +5 -0
- package/backend/dist/db/migrations/_legacy_cloud_010_organizations.d.ts.map +1 -0
- package/backend/dist/db/migrations/_legacy_cloud_010_organizations.js +113 -0
- package/backend/dist/db/migrations/_legacy_cloud_010_organizations.js.map +1 -0
- package/backend/dist/db/migrations/_legacy_cloud_011_org_scoped_teams.d.ts +11 -0
- package/backend/dist/db/migrations/_legacy_cloud_011_org_scoped_teams.d.ts.map +1 -0
- package/backend/dist/db/migrations/_legacy_cloud_011_org_scoped_teams.js +59 -0
- package/backend/dist/db/migrations/_legacy_cloud_011_org_scoped_teams.js.map +1 -0
- package/backend/dist/db/migrations/_legacy_cloud_012_org_invitations_token_hash.d.ts +10 -0
- package/backend/dist/db/migrations/_legacy_cloud_012_org_invitations_token_hash.d.ts.map +1 -0
- package/backend/dist/db/migrations/_legacy_cloud_012_org_invitations_token_hash.js +40 -0
- package/backend/dist/db/migrations/_legacy_cloud_012_org_invitations_token_hash.js.map +1 -0
- package/backend/dist/db/migrations/_legacy_cloud_016_free_plan_grace_ends_at.d.ts +9 -0
- package/backend/dist/db/migrations/_legacy_cloud_016_free_plan_grace_ends_at.d.ts.map +1 -0
- package/backend/dist/db/migrations/_legacy_cloud_016_free_plan_grace_ends_at.js +50 -0
- package/backend/dist/db/migrations/_legacy_cloud_016_free_plan_grace_ends_at.js.map +1 -0
- package/backend/dist/db/migrations/_legacy_cloud_017_ai_suggestions.d.ts +11 -0
- package/backend/dist/db/migrations/_legacy_cloud_017_ai_suggestions.d.ts.map +1 -0
- package/backend/dist/db/migrations/_legacy_cloud_017_ai_suggestions.js +78 -0
- package/backend/dist/db/migrations/_legacy_cloud_017_ai_suggestions.js.map +1 -0
- package/backend/dist/db/migrations/index.d.ts +22 -0
- package/backend/dist/db/migrations/index.d.ts.map +1 -0
- package/backend/dist/db/migrations/index.js +194 -0
- package/backend/dist/db/migrations/index.js.map +1 -0
- package/backend/dist/db/pool.d.ts +13 -0
- package/backend/dist/db/pool.d.ts.map +1 -0
- package/backend/dist/db/pool.js +41 -0
- package/backend/dist/db/pool.js.map +1 -0
- package/backend/dist/db/seed-data.d.ts +66 -0
- package/backend/dist/db/seed-data.d.ts.map +1 -0
- package/backend/dist/db/seed-data.js +394 -0
- package/backend/dist/db/seed-data.js.map +1 -0
- package/backend/dist/db/seed.d.ts +19 -0
- package/backend/dist/db/seed.d.ts.map +1 -0
- package/backend/dist/db/seed.js +406 -0
- package/backend/dist/db/seed.js.map +1 -0
- package/backend/dist/index.d.ts +3 -0
- package/backend/dist/index.d.ts.map +1 -0
- package/backend/dist/index.js +64 -0
- package/backend/dist/index.js.map +1 -0
- package/backend/dist/instrument.d.ts +2 -0
- package/backend/dist/instrument.d.ts.map +1 -0
- package/backend/dist/instrument.js +16 -0
- package/backend/dist/instrument.js.map +1 -0
- package/backend/dist/load-env.d.ts +2 -0
- package/backend/dist/load-env.d.ts.map +1 -0
- package/backend/dist/load-env.js +33 -0
- package/backend/dist/load-env.js.map +1 -0
- package/backend/dist/middleware/auth.d.ts +23 -0
- package/backend/dist/middleware/auth.d.ts.map +1 -0
- package/backend/dist/middleware/auth.js +69 -0
- package/backend/dist/middleware/auth.js.map +1 -0
- package/backend/dist/middleware/error-handler.d.ts +11 -0
- package/backend/dist/middleware/error-handler.d.ts.map +1 -0
- package/backend/dist/middleware/error-handler.js +40 -0
- package/backend/dist/middleware/error-handler.js.map +1 -0
- package/backend/dist/middleware/security.d.ts +26 -0
- package/backend/dist/middleware/security.d.ts.map +1 -0
- package/backend/dist/middleware/security.js +162 -0
- package/backend/dist/middleware/security.js.map +1 -0
- package/backend/dist/middleware/stats-auth.d.ts +7 -0
- package/backend/dist/middleware/stats-auth.d.ts.map +1 -0
- package/backend/dist/middleware/stats-auth.js +20 -0
- package/backend/dist/middleware/stats-auth.js.map +1 -0
- package/backend/dist/middleware/tenant.d.ts +3 -0
- package/backend/dist/middleware/tenant.d.ts.map +1 -0
- package/backend/dist/middleware/tenant.js +13 -0
- package/backend/dist/middleware/tenant.js.map +1 -0
- package/backend/dist/register-routes.d.ts +12 -0
- package/backend/dist/register-routes.d.ts.map +1 -0
- package/backend/dist/register-routes.js +59 -0
- package/backend/dist/register-routes.js.map +1 -0
- package/backend/dist/routes/admin/demo-reset.d.ts +8 -0
- package/backend/dist/routes/admin/demo-reset.d.ts.map +1 -0
- package/backend/dist/routes/admin/demo-reset.js +66 -0
- package/backend/dist/routes/admin/demo-reset.js.map +1 -0
- package/backend/dist/routes/admin/settings.d.ts +3 -0
- package/backend/dist/routes/admin/settings.d.ts.map +1 -0
- package/backend/dist/routes/admin/settings.js +452 -0
- package/backend/dist/routes/admin/settings.js.map +1 -0
- package/backend/dist/routes/admin/stats.d.ts +7 -0
- package/backend/dist/routes/admin/stats.d.ts.map +1 -0
- package/backend/dist/routes/admin/stats.js +66 -0
- package/backend/dist/routes/admin/stats.js.map +1 -0
- package/backend/dist/routes/admin/teams.d.ts +3 -0
- package/backend/dist/routes/admin/teams.d.ts.map +1 -0
- package/backend/dist/routes/admin/teams.js +509 -0
- package/backend/dist/routes/admin/teams.js.map +1 -0
- package/backend/dist/routes/admin/users.d.ts +3 -0
- package/backend/dist/routes/admin/users.d.ts.map +1 -0
- package/backend/dist/routes/admin/users.js +525 -0
- package/backend/dist/routes/admin/users.js.map +1 -0
- package/backend/dist/routes/auth.d.ts +3 -0
- package/backend/dist/routes/auth.d.ts.map +1 -0
- package/backend/dist/routes/auth.js +992 -0
- package/backend/dist/routes/auth.js.map +1 -0
- package/backend/dist/routes/billing.d.ts +8 -0
- package/backend/dist/routes/billing.d.ts.map +1 -0
- package/backend/dist/routes/billing.js +481 -0
- package/backend/dist/routes/billing.js.map +1 -0
- package/backend/dist/routes/bookmarks.d.ts +3 -0
- package/backend/dist/routes/bookmarks.d.ts.map +1 -0
- package/backend/dist/routes/bookmarks.js +1593 -0
- package/backend/dist/routes/bookmarks.js.map +1 -0
- package/backend/dist/routes/config.d.ts +7 -0
- package/backend/dist/routes/config.d.ts.map +1 -0
- package/backend/dist/routes/config.js +52 -0
- package/backend/dist/routes/config.js.map +1 -0
- package/backend/dist/routes/contact.d.ts +9 -0
- package/backend/dist/routes/contact.d.ts.map +1 -0
- package/backend/dist/routes/contact.js +99 -0
- package/backend/dist/routes/contact.js.map +1 -0
- package/backend/dist/routes/csrf.d.ts +3 -0
- package/backend/dist/routes/csrf.d.ts.map +1 -0
- package/backend/dist/routes/csrf.js +39 -0
- package/backend/dist/routes/csrf.js.map +1 -0
- package/backend/dist/routes/dashboard.d.ts +3 -0
- package/backend/dist/routes/dashboard.d.ts.map +1 -0
- package/backend/dist/routes/dashboard.js +212 -0
- package/backend/dist/routes/dashboard.js.map +1 -0
- package/backend/dist/routes/email-verification.d.ts +3 -0
- package/backend/dist/routes/email-verification.d.ts.map +1 -0
- package/backend/dist/routes/email-verification.js +124 -0
- package/backend/dist/routes/email-verification.js.map +1 -0
- package/backend/dist/routes/folders.d.ts +3 -0
- package/backend/dist/routes/folders.d.ts.map +1 -0
- package/backend/dist/routes/folders.js +524 -0
- package/backend/dist/routes/folders.js.map +1 -0
- package/backend/dist/routes/go-helpers.d.ts +18 -0
- package/backend/dist/routes/go-helpers.d.ts.map +1 -0
- package/backend/dist/routes/go-helpers.js +64 -0
- package/backend/dist/routes/go-helpers.js.map +1 -0
- package/backend/dist/routes/go.d.ts +23 -0
- package/backend/dist/routes/go.d.ts.map +1 -0
- package/backend/dist/routes/go.js +361 -0
- package/backend/dist/routes/go.js.map +1 -0
- package/backend/dist/routes/health.d.ts +6 -0
- package/backend/dist/routes/health.d.ts.map +1 -0
- package/backend/dist/routes/health.js +79 -0
- package/backend/dist/routes/health.js.map +1 -0
- package/backend/dist/routes/invitations.d.ts +3 -0
- package/backend/dist/routes/invitations.d.ts.map +1 -0
- package/backend/dist/routes/invitations.js +172 -0
- package/backend/dist/routes/invitations.js.map +1 -0
- package/backend/dist/routes/oidc-providers.d.ts +3 -0
- package/backend/dist/routes/oidc-providers.d.ts.map +1 -0
- package/backend/dist/routes/oidc-providers.js +495 -0
- package/backend/dist/routes/oidc-providers.js.map +1 -0
- package/backend/dist/routes/organizations.d.ts +3 -0
- package/backend/dist/routes/organizations.d.ts.map +1 -0
- package/backend/dist/routes/organizations.js +538 -0
- package/backend/dist/routes/organizations.js.map +1 -0
- package/backend/dist/routes/password-reset.d.ts +3 -0
- package/backend/dist/routes/password-reset.d.ts.map +1 -0
- package/backend/dist/routes/password-reset.js +212 -0
- package/backend/dist/routes/password-reset.js.map +1 -0
- package/backend/dist/routes/redirect.d.ts +3 -0
- package/backend/dist/routes/redirect.d.ts.map +1 -0
- package/backend/dist/routes/redirect.js +124 -0
- package/backend/dist/routes/redirect.js.map +1 -0
- package/backend/dist/routes/tags.d.ts +3 -0
- package/backend/dist/routes/tags.d.ts.map +1 -0
- package/backend/dist/routes/tags.js +302 -0
- package/backend/dist/routes/tags.js.map +1 -0
- package/backend/dist/routes/teams.d.ts +3 -0
- package/backend/dist/routes/teams.d.ts.map +1 -0
- package/backend/dist/routes/teams.js +60 -0
- package/backend/dist/routes/teams.js.map +1 -0
- package/backend/dist/routes/tokens.d.ts +3 -0
- package/backend/dist/routes/tokens.d.ts.map +1 -0
- package/backend/dist/routes/tokens.js +157 -0
- package/backend/dist/routes/tokens.js.map +1 -0
- package/backend/dist/routes/users.d.ts +3 -0
- package/backend/dist/routes/users.d.ts.map +1 -0
- package/backend/dist/routes/users.js +199 -0
- package/backend/dist/routes/users.js.map +1 -0
- package/backend/dist/services/ai-suggestions.d.ts +29 -0
- package/backend/dist/services/ai-suggestions.d.ts.map +1 -0
- package/backend/dist/services/ai-suggestions.js +163 -0
- package/backend/dist/services/ai-suggestions.js.map +1 -0
- package/backend/dist/services/api-tokens.d.ts +66 -0
- package/backend/dist/services/api-tokens.d.ts.map +1 -0
- package/backend/dist/services/api-tokens.js +129 -0
- package/backend/dist/services/api-tokens.js.map +1 -0
- package/backend/dist/services/fetch-page-metadata.d.ts +15 -0
- package/backend/dist/services/fetch-page-metadata.d.ts.map +1 -0
- package/backend/dist/services/fetch-page-metadata.js +205 -0
- package/backend/dist/services/fetch-page-metadata.js.map +1 -0
- package/backend/dist/services/stats.d.ts +73 -0
- package/backend/dist/services/stats.d.ts.map +1 -0
- package/backend/dist/services/stats.js +145 -0
- package/backend/dist/services/stats.js.map +1 -0
- package/backend/dist/types/oidc-provider.d.ts +17 -0
- package/backend/dist/types/oidc-provider.d.ts.map +1 -0
- package/backend/dist/types/oidc-provider.js +2 -0
- package/backend/dist/types/oidc-provider.js.map +1 -0
- package/backend/dist/types.d.ts +86 -0
- package/backend/dist/types.d.ts.map +1 -0
- package/backend/dist/types.js +2 -0
- package/backend/dist/types.js.map +1 -0
- package/backend/dist/utils/ai-feature.d.ts +23 -0
- package/backend/dist/utils/ai-feature.d.ts.map +1 -0
- package/backend/dist/utils/ai-feature.js +62 -0
- package/backend/dist/utils/ai-feature.js.map +1 -0
- package/backend/dist/utils/email.d.ts +40 -0
- package/backend/dist/utils/email.d.ts.map +1 -0
- package/backend/dist/utils/email.js +456 -0
- package/backend/dist/utils/email.js.map +1 -0
- package/backend/dist/utils/encryption.d.ts +18 -0
- package/backend/dist/utils/encryption.d.ts.map +1 -0
- package/backend/dist/utils/encryption.js +95 -0
- package/backend/dist/utils/encryption.js.map +1 -0
- package/backend/dist/utils/env-validation.d.ts +6 -0
- package/backend/dist/utils/env-validation.d.ts.map +1 -0
- package/backend/dist/utils/env-validation.js +51 -0
- package/backend/dist/utils/env-validation.js.map +1 -0
- package/backend/dist/utils/jwt.d.ts +20 -0
- package/backend/dist/utils/jwt.d.ts.map +1 -0
- package/backend/dist/utils/jwt.js +48 -0
- package/backend/dist/utils/jwt.js.map +1 -0
- package/backend/dist/utils/org-cleanup.d.ts +6 -0
- package/backend/dist/utils/org-cleanup.d.ts.map +1 -0
- package/backend/dist/utils/org-cleanup.js +37 -0
- package/backend/dist/utils/org-cleanup.js.map +1 -0
- package/backend/dist/utils/organizations.d.ts +12 -0
- package/backend/dist/utils/organizations.d.ts.map +1 -0
- package/backend/dist/utils/organizations.js +24 -0
- package/backend/dist/utils/organizations.js.map +1 -0
- package/backend/dist/utils/plan-errors.d.ts +18 -0
- package/backend/dist/utils/plan-errors.d.ts.map +1 -0
- package/backend/dist/utils/plan-errors.js +21 -0
- package/backend/dist/utils/plan-errors.js.map +1 -0
- package/backend/dist/utils/refresh-token.d.ts +31 -0
- package/backend/dist/utils/refresh-token.d.ts.map +1 -0
- package/backend/dist/utils/refresh-token.js +63 -0
- package/backend/dist/utils/refresh-token.js.map +1 -0
- package/backend/dist/utils/session-store.d.ts +46 -0
- package/backend/dist/utils/session-store.d.ts.map +1 -0
- package/backend/dist/utils/session-store.js +222 -0
- package/backend/dist/utils/session-store.js.map +1 -0
- package/backend/dist/utils/tenant.d.ts +5 -0
- package/backend/dist/utils/tenant.d.ts.map +1 -0
- package/backend/dist/utils/tenant.js +12 -0
- package/backend/dist/utils/tenant.js.map +1 -0
- package/backend/dist/utils/user-key.d.ts +24 -0
- package/backend/dist/utils/user-key.d.ts.map +1 -0
- package/backend/dist/utils/user-key.js +116 -0
- package/backend/dist/utils/user-key.js.map +1 -0
- package/backend/dist/utils/validation.d.ts +91 -0
- package/backend/dist/utils/validation.d.ts.map +1 -0
- package/backend/dist/utils/validation.js +337 -0
- package/backend/dist/utils/validation.js.map +1 -0
- package/backend/index.js +15 -0
- package/frontend/index.js +5 -0
- package/frontend/index.tsx +7 -0
- package/package.json +16 -0
- package/types/index.js +4 -0
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database seeding functionality for DEMO_MODE
|
|
3
|
+
* Creates demo users, folders, tags, and bookmarks
|
|
4
|
+
*/
|
|
5
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
6
|
+
import bcrypt from 'bcryptjs';
|
|
7
|
+
import { query, queryOne, execute } from './index.js';
|
|
8
|
+
import { generateUserKey } from '../utils/user-key.js';
|
|
9
|
+
import { DEMO_DATA, DEMO_TEAMS } from './seed-data.js';
|
|
10
|
+
import { normalizeEmail, sanitizeString } from '../utils/validation.js';
|
|
11
|
+
import { isCloud } from '../config/mode.js';
|
|
12
|
+
/**
|
|
13
|
+
* Seed the database with demo data
|
|
14
|
+
* This should only be called when DEMO_MODE is enabled
|
|
15
|
+
* Includes: users, folders, tags, bookmarks, teams, team memberships, and bookmark sharing
|
|
16
|
+
*/
|
|
17
|
+
export async function seedDatabase() {
|
|
18
|
+
// Safety check: Only allow seeding in DEMO_MODE
|
|
19
|
+
if (process.env.DEMO_MODE !== 'true') {
|
|
20
|
+
throw new Error('seedDatabase() should only be called when DEMO_MODE=true');
|
|
21
|
+
}
|
|
22
|
+
console.log('🌱 Starting database seeding for DEMO_MODE...');
|
|
23
|
+
try {
|
|
24
|
+
// In Cloud mode, ensure demo org exists for org-scoped teams
|
|
25
|
+
let demoOrgId = null;
|
|
26
|
+
if (isCloud) {
|
|
27
|
+
const firstOrg = await queryOne('SELECT id FROM organizations ORDER BY id LIMIT 1', []);
|
|
28
|
+
if (firstOrg) {
|
|
29
|
+
demoOrgId = firstOrg.id;
|
|
30
|
+
console.log(` Using existing org: ${demoOrgId}`);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
demoOrgId = uuidv4();
|
|
34
|
+
await execute(`INSERT INTO organizations (id, name, plan, included_seats) VALUES (?, ?, 'team', 5)`, [demoOrgId, 'Demo Organization']);
|
|
35
|
+
console.log(` ✓ Created demo organization`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Map to store user IDs by email (for sharing and team membership)
|
|
39
|
+
const userIdMap = new Map(); // email -> user id
|
|
40
|
+
// Map to store bookmark IDs by composite key (ownerEmail:slug for sharing)
|
|
41
|
+
const bookmarkIdMap = new Map(); // "email:slug" -> bookmark id
|
|
42
|
+
// First pass: Create all users and collect their IDs
|
|
43
|
+
for (const userData of DEMO_DATA) {
|
|
44
|
+
const { user, folders, tags, bookmarks } = userData;
|
|
45
|
+
// Normalize email
|
|
46
|
+
const normalizedEmail = normalizeEmail(user.email);
|
|
47
|
+
// Check if user already exists
|
|
48
|
+
const existingUser = await queryOne('SELECT id FROM users WHERE email = ?', [normalizedEmail]);
|
|
49
|
+
let userId;
|
|
50
|
+
let userKey;
|
|
51
|
+
if (existingUser) {
|
|
52
|
+
// User exists, use existing ID and key
|
|
53
|
+
const existing = existingUser;
|
|
54
|
+
userId = existing.id;
|
|
55
|
+
const userRecord = await queryOne('SELECT user_key FROM users WHERE id = ?', [userId]);
|
|
56
|
+
userKey = userRecord.user_key;
|
|
57
|
+
console.log(` Using existing user: ${user.email}`);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Create new user
|
|
61
|
+
userId = uuidv4();
|
|
62
|
+
userKey = await generateUserKey();
|
|
63
|
+
// Hash password
|
|
64
|
+
const passwordHash = await bcrypt.hash(user.password, 10);
|
|
65
|
+
// Retry logic for user_key collisions
|
|
66
|
+
let retries = 0;
|
|
67
|
+
const maxRetries = 3;
|
|
68
|
+
while (retries < maxRetries) {
|
|
69
|
+
try {
|
|
70
|
+
await execute(`INSERT INTO users (id, email, name, user_key, password_hash, is_admin)
|
|
71
|
+
VALUES (?, ?, ?, ?, ?, ?)`, [
|
|
72
|
+
userId,
|
|
73
|
+
normalizedEmail,
|
|
74
|
+
sanitizeString(user.name),
|
|
75
|
+
userKey,
|
|
76
|
+
passwordHash,
|
|
77
|
+
user.isAdmin,
|
|
78
|
+
]);
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (error.message &&
|
|
83
|
+
(error.message.includes('UNIQUE constraint') ||
|
|
84
|
+
error.message.includes('duplicate')) &&
|
|
85
|
+
error.message.includes('user_key')) {
|
|
86
|
+
retries++;
|
|
87
|
+
if (retries >= maxRetries) {
|
|
88
|
+
throw new Error(`Failed to create user ${user.email} after retries`);
|
|
89
|
+
}
|
|
90
|
+
userKey = await generateUserKey();
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
console.log(` ✓ Created user: ${user.email} (${userKey})`);
|
|
97
|
+
}
|
|
98
|
+
// In Cloud mode, add user to demo org and set current_org_id
|
|
99
|
+
if (isCloud && demoOrgId) {
|
|
100
|
+
const existingMember = await queryOne('SELECT 1 FROM org_members WHERE user_id = ? AND org_id = ?', [userId, demoOrgId]);
|
|
101
|
+
if (!existingMember) {
|
|
102
|
+
const role = user.isAdmin ? 'owner' : 'member';
|
|
103
|
+
await execute('INSERT INTO org_members (user_id, org_id, role) VALUES (?, ?, ?)', [userId, demoOrgId, role]);
|
|
104
|
+
await execute('UPDATE users SET current_org_id = ? WHERE id = ?', [demoOrgId, userId]);
|
|
105
|
+
console.log(` ✓ Added ${user.email} to demo org`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Store user ID in map for sharing/teams
|
|
109
|
+
userIdMap.set(normalizedEmail, userId);
|
|
110
|
+
// Create folders
|
|
111
|
+
const folderMap = new Map(); // name -> id
|
|
112
|
+
for (const folder of folders) {
|
|
113
|
+
const existingFolder = await queryOne('SELECT id FROM folders WHERE user_id = ? AND name = ?', [userId, folder.name]);
|
|
114
|
+
let folderId;
|
|
115
|
+
if (existingFolder) {
|
|
116
|
+
folderId = existingFolder.id;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
folderId = uuidv4();
|
|
120
|
+
await execute('INSERT INTO folders (id, user_id, name, icon) VALUES (?, ?, ?, ?)', [folderId, userId, sanitizeString(folder.name), folder.icon || null]);
|
|
121
|
+
console.log(` ✓ Created folder: ${folder.name}`);
|
|
122
|
+
}
|
|
123
|
+
folderMap.set(folder.name, folderId);
|
|
124
|
+
}
|
|
125
|
+
// Create tags
|
|
126
|
+
const tagMap = new Map(); // name -> id
|
|
127
|
+
for (const tag of tags) {
|
|
128
|
+
const existingTag = await queryOne('SELECT id FROM tags WHERE user_id = ? AND name = ?', [userId, tag.name]);
|
|
129
|
+
let tagId;
|
|
130
|
+
if (existingTag) {
|
|
131
|
+
tagId = existingTag.id;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
tagId = uuidv4();
|
|
135
|
+
await execute('INSERT INTO tags (id, user_id, name) VALUES (?, ?, ?)', [tagId, userId, sanitizeString(tag.name)]);
|
|
136
|
+
console.log(` ✓ Created tag: ${tag.name}`);
|
|
137
|
+
}
|
|
138
|
+
tagMap.set(tag.name, tagId);
|
|
139
|
+
}
|
|
140
|
+
// Create bookmarks
|
|
141
|
+
for (const bookmark of bookmarks) {
|
|
142
|
+
// Check if bookmark with this slug already exists
|
|
143
|
+
let existingBookmark = null;
|
|
144
|
+
if (bookmark.slug) {
|
|
145
|
+
existingBookmark = await queryOne('SELECT id FROM bookmarks WHERE user_id = ? AND slug = ?', [userId, bookmark.slug]);
|
|
146
|
+
}
|
|
147
|
+
let bookmarkId;
|
|
148
|
+
if (existingBookmark) {
|
|
149
|
+
bookmarkId = existingBookmark.id;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
bookmarkId = uuidv4();
|
|
153
|
+
// Generate slug if not provided
|
|
154
|
+
let slug = bookmark.slug || null;
|
|
155
|
+
await execute(`INSERT INTO bookmarks (
|
|
156
|
+
id, user_id, title, url, slug, forwarding_enabled, pinned,
|
|
157
|
+
access_count, last_accessed_at
|
|
158
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
159
|
+
bookmarkId,
|
|
160
|
+
userId,
|
|
161
|
+
sanitizeString(bookmark.title),
|
|
162
|
+
bookmark.url,
|
|
163
|
+
slug,
|
|
164
|
+
bookmark.forwardingEnabled || false,
|
|
165
|
+
bookmark.pinned || false,
|
|
166
|
+
0,
|
|
167
|
+
null,
|
|
168
|
+
]);
|
|
169
|
+
console.log(` ✓ Created bookmark: ${bookmark.title}`);
|
|
170
|
+
}
|
|
171
|
+
// Store bookmark ID for sharing (using composite key: email:slug)
|
|
172
|
+
if (bookmark.slug) {
|
|
173
|
+
bookmarkIdMap.set(`${normalizedEmail}:${bookmark.slug}`, bookmarkId);
|
|
174
|
+
}
|
|
175
|
+
// Link bookmark to folders
|
|
176
|
+
if (bookmark.folderNames && bookmark.folderNames.length > 0) {
|
|
177
|
+
for (const folderName of bookmark.folderNames) {
|
|
178
|
+
const folderId = folderMap.get(folderName);
|
|
179
|
+
if (folderId) {
|
|
180
|
+
try {
|
|
181
|
+
await execute('INSERT INTO bookmark_folders (bookmark_id, folder_id) VALUES (?, ?)', [bookmarkId, folderId]);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
// Ignore duplicate key errors
|
|
185
|
+
if (!error.message ||
|
|
186
|
+
(!error.message.includes('UNIQUE constraint') &&
|
|
187
|
+
!error.message.includes('duplicate'))) {
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Link bookmark to tags
|
|
195
|
+
if (bookmark.tagNames && bookmark.tagNames.length > 0) {
|
|
196
|
+
for (const tagName of bookmark.tagNames) {
|
|
197
|
+
const tagId = tagMap.get(tagName);
|
|
198
|
+
if (tagId) {
|
|
199
|
+
try {
|
|
200
|
+
await execute('INSERT INTO bookmark_tags (bookmark_id, tag_id) VALUES (?, ?)', [bookmarkId, tagId]);
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
// Ignore duplicate key errors
|
|
204
|
+
if (!error.message ||
|
|
205
|
+
(!error.message.includes('UNIQUE constraint') &&
|
|
206
|
+
!error.message.includes('duplicate'))) {
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// Create teams and add members
|
|
216
|
+
console.log('📦 Creating teams...');
|
|
217
|
+
const teamIdMap = new Map(); // team name -> team id
|
|
218
|
+
for (const team of DEMO_TEAMS) {
|
|
219
|
+
// Check if team already exists
|
|
220
|
+
const existingTeam = await queryOne('SELECT id FROM teams WHERE name = ?', [team.name]);
|
|
221
|
+
let teamId;
|
|
222
|
+
if (existingTeam) {
|
|
223
|
+
teamId = existingTeam.id;
|
|
224
|
+
console.log(` Using existing team: ${team.name}`);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
teamId = uuidv4();
|
|
228
|
+
if (isCloud && demoOrgId) {
|
|
229
|
+
await execute('INSERT INTO teams (id, name, description, org_id) VALUES (?, ?, ?, ?)', [teamId, sanitizeString(team.name), team.description ? sanitizeString(team.description) : null, demoOrgId]);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
await execute('INSERT INTO teams (id, name, description) VALUES (?, ?, ?)', [teamId, sanitizeString(team.name), team.description ? sanitizeString(team.description) : null]);
|
|
233
|
+
}
|
|
234
|
+
console.log(` ✓ Created team: ${team.name}`);
|
|
235
|
+
}
|
|
236
|
+
teamIdMap.set(team.name, teamId);
|
|
237
|
+
// Add team members
|
|
238
|
+
for (const memberEmail of team.memberEmails) {
|
|
239
|
+
const normalizedMemberEmail = normalizeEmail(memberEmail);
|
|
240
|
+
const memberUserId = userIdMap.get(normalizedMemberEmail);
|
|
241
|
+
if (!memberUserId) {
|
|
242
|
+
console.warn(` ⚠️ Warning: User ${memberEmail} not found for team ${team.name}`);
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
// Check if membership already exists
|
|
246
|
+
const existingMember = await queryOne('SELECT * FROM team_members WHERE team_id = ? AND user_id = ?', [teamId, memberUserId]);
|
|
247
|
+
if (!existingMember) {
|
|
248
|
+
try {
|
|
249
|
+
await execute('INSERT INTO team_members (team_id, user_id) VALUES (?, ?)', [teamId, memberUserId]);
|
|
250
|
+
console.log(` ✓ Added ${memberEmail} to ${team.name}`);
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
// Ignore duplicate key errors
|
|
254
|
+
if (!error.message ||
|
|
255
|
+
(!error.message.includes('UNIQUE constraint') &&
|
|
256
|
+
!error.message.includes('duplicate'))) {
|
|
257
|
+
throw error;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// Create bookmark shares (both user-to-user and team shares)
|
|
264
|
+
console.log('🔗 Creating bookmark shares...');
|
|
265
|
+
for (const userData of DEMO_DATA) {
|
|
266
|
+
const { user, bookmarks } = userData;
|
|
267
|
+
const normalizedEmail = normalizeEmail(user.email);
|
|
268
|
+
const ownerUserId = userIdMap.get(normalizedEmail);
|
|
269
|
+
if (!ownerUserId)
|
|
270
|
+
continue;
|
|
271
|
+
for (const bookmark of bookmarks) {
|
|
272
|
+
if (!bookmark.slug)
|
|
273
|
+
continue;
|
|
274
|
+
const bookmarkKey = `${normalizedEmail}:${bookmark.slug}`;
|
|
275
|
+
const bookmarkId = bookmarkIdMap.get(bookmarkKey);
|
|
276
|
+
if (!bookmarkId)
|
|
277
|
+
continue;
|
|
278
|
+
// Share with teams
|
|
279
|
+
if (bookmark.shareWithTeams && bookmark.shareWithTeams.length > 0) {
|
|
280
|
+
for (const teamName of bookmark.shareWithTeams) {
|
|
281
|
+
const teamId = teamIdMap.get(teamName);
|
|
282
|
+
if (!teamId) {
|
|
283
|
+
console.warn(` ⚠️ Warning: Team ${teamName} not found for bookmark ${bookmark.title}`);
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
try {
|
|
287
|
+
await execute('INSERT INTO bookmark_team_shares (bookmark_id, team_id) VALUES (?, ?)', [bookmarkId, teamId]);
|
|
288
|
+
console.log(` ✓ Shared ${bookmark.title} with team ${teamName}`);
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
// Ignore duplicate key errors
|
|
292
|
+
if (!error.message ||
|
|
293
|
+
(!error.message.includes('UNIQUE constraint') &&
|
|
294
|
+
!error.message.includes('duplicate'))) {
|
|
295
|
+
throw error;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
// Share with users
|
|
301
|
+
if (bookmark.shareWithUsers && bookmark.shareWithUsers.length > 0) {
|
|
302
|
+
for (const shareUserEmail of bookmark.shareWithUsers) {
|
|
303
|
+
const normalizedShareEmail = normalizeEmail(shareUserEmail);
|
|
304
|
+
const shareUserId = userIdMap.get(normalizedShareEmail);
|
|
305
|
+
if (!shareUserId) {
|
|
306
|
+
console.warn(` ⚠️ Warning: User ${shareUserEmail} not found for bookmark ${bookmark.title}`);
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
// Don't share with yourself
|
|
310
|
+
if (shareUserId === ownerUserId) {
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
try {
|
|
314
|
+
await execute('INSERT INTO bookmark_user_shares (bookmark_id, user_id) VALUES (?, ?)', [bookmarkId, shareUserId]);
|
|
315
|
+
console.log(` ✓ Shared ${bookmark.title} with user ${shareUserEmail}`);
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
// Ignore duplicate key errors
|
|
319
|
+
if (!error.message ||
|
|
320
|
+
(!error.message.includes('UNIQUE constraint') &&
|
|
321
|
+
!error.message.includes('duplicate'))) {
|
|
322
|
+
throw error;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
console.log('✅ Database seeding completed successfully');
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
console.error('❌ Error seeding database:', error);
|
|
333
|
+
throw error;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Reset the database by dropping all user data and reseeding
|
|
338
|
+
* This will:
|
|
339
|
+
* 1. Delete all user-related data (bookmarks, folders, tags, shares, teams)
|
|
340
|
+
* 2. Delete all users
|
|
341
|
+
* 3. Reseed with fresh demo data
|
|
342
|
+
*/
|
|
343
|
+
export async function resetDatabase() {
|
|
344
|
+
console.log('🔄 Starting database reset...');
|
|
345
|
+
try {
|
|
346
|
+
const DB_TYPE = process.env.DB_TYPE || 'sqlite';
|
|
347
|
+
// Get all user IDs first (for cleanup)
|
|
348
|
+
const allUsers = await query('SELECT id FROM users', []);
|
|
349
|
+
// Delete all user-related data
|
|
350
|
+
// Order matters due to foreign key constraints
|
|
351
|
+
// Delete bookmark relationships
|
|
352
|
+
await execute('DELETE FROM bookmark_folders', []);
|
|
353
|
+
await execute('DELETE FROM bookmark_tags', []);
|
|
354
|
+
await execute('DELETE FROM bookmark_user_shares', []);
|
|
355
|
+
await execute('DELETE FROM bookmark_team_shares', []);
|
|
356
|
+
// Delete folder relationships
|
|
357
|
+
await execute('DELETE FROM folder_user_shares', []);
|
|
358
|
+
await execute('DELETE FROM folder_team_shares', []);
|
|
359
|
+
// Delete team memberships
|
|
360
|
+
await execute('DELETE FROM team_members', []);
|
|
361
|
+
// Delete bookmarks
|
|
362
|
+
await execute('DELETE FROM bookmarks', []);
|
|
363
|
+
// Delete folders
|
|
364
|
+
await execute('DELETE FROM folders', []);
|
|
365
|
+
// Delete tags
|
|
366
|
+
await execute('DELETE FROM tags', []);
|
|
367
|
+
// Delete teams
|
|
368
|
+
await execute('DELETE FROM teams', []);
|
|
369
|
+
// Delete org-related data (Cloud mode)
|
|
370
|
+
try {
|
|
371
|
+
await execute('DELETE FROM org_invitations', []);
|
|
372
|
+
await execute('DELETE FROM org_members', []);
|
|
373
|
+
await execute('DELETE FROM organizations', []);
|
|
374
|
+
}
|
|
375
|
+
catch (error) {
|
|
376
|
+
if (!error.message?.includes("doesn't exist") && !error.message?.includes('does not exist')) {
|
|
377
|
+
console.warn('Could not delete org data:', error.message);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
// Delete password reset tokens
|
|
381
|
+
await execute('DELETE FROM password_reset_tokens', []);
|
|
382
|
+
// Delete users (this will cascade delete any remaining references)
|
|
383
|
+
await execute('DELETE FROM users', []);
|
|
384
|
+
// Delete sessions (if using database session store)
|
|
385
|
+
try {
|
|
386
|
+
await execute('DELETE FROM sessions', []);
|
|
387
|
+
}
|
|
388
|
+
catch (error) {
|
|
389
|
+
// Ignore if sessions table doesn't exist
|
|
390
|
+
if (!error.message || !error.message.includes("doesn't exist") && !error.message.includes('does not exist')) {
|
|
391
|
+
console.warn('Could not delete sessions:', error.message);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
// Note: We keep schema_migrations and system_config tables intact
|
|
395
|
+
// OIDC providers are also kept (they're system-wide configuration)
|
|
396
|
+
console.log(' ✓ Cleared all user data');
|
|
397
|
+
// Reseed the database
|
|
398
|
+
await seedDatabase();
|
|
399
|
+
console.log('✅ Database reset completed successfully');
|
|
400
|
+
}
|
|
401
|
+
catch (error) {
|
|
402
|
+
console.error('❌ Error resetting database:', error);
|
|
403
|
+
throw error;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/db/seed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC;AACvB,OAAO,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// IMPORTANT: Load environment variables FIRST, before any other imports
|
|
2
|
+
import './load-env.js';
|
|
3
|
+
import './instrument.js';
|
|
4
|
+
import express from 'express';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
import { dirname } from 'path';
|
|
8
|
+
import * as Sentry from '@sentry/node';
|
|
9
|
+
import { validateEnvironmentVariables } from './utils/env-validation.js';
|
|
10
|
+
import { initDatabase, isInitialized } from './db/index.js';
|
|
11
|
+
import { loadOIDCStrategies } from './auth/oidc.js';
|
|
12
|
+
import { createApp } from './app-factory.js';
|
|
13
|
+
import { registerCoreRoutes } from './register-routes.js';
|
|
14
|
+
import { DatabaseSessionStore } from './utils/session-store.js';
|
|
15
|
+
import { errorHandler, notFoundHandler } from './middleware/error-handler.js';
|
|
16
|
+
validateEnvironmentVariables();
|
|
17
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
18
|
+
const __dirname = dirname(__filename);
|
|
19
|
+
const PORT = parseInt(process.env.PORT || '5000', 10);
|
|
20
|
+
async function start() {
|
|
21
|
+
try {
|
|
22
|
+
await initDatabase();
|
|
23
|
+
console.log('Database initialized');
|
|
24
|
+
await loadOIDCStrategies();
|
|
25
|
+
const sessionStore = new DatabaseSessionStore();
|
|
26
|
+
const app = createApp({ sessionStore });
|
|
27
|
+
registerCoreRoutes(app, {});
|
|
28
|
+
if (process.env.NODE_ENV === 'production') {
|
|
29
|
+
app.use(express.static(join(__dirname, '../../public')));
|
|
30
|
+
}
|
|
31
|
+
if (process.env.NODE_ENV === 'production') {
|
|
32
|
+
app.get('/', (_req, res) => {
|
|
33
|
+
res.sendFile(join(__dirname, '../../public/index.html'));
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
app.get('*', (req, res, next) => {
|
|
37
|
+
if (process.env.NODE_ENV !== 'production')
|
|
38
|
+
return next();
|
|
39
|
+
if (req.path.startsWith('/api/') || req.path.startsWith('/api-docs') || req.path.startsWith('/go/')) {
|
|
40
|
+
return next();
|
|
41
|
+
}
|
|
42
|
+
res.sendFile(join(__dirname, '../../public/index.html'), (err) => {
|
|
43
|
+
if (err) {
|
|
44
|
+
console.error('Error sending index.html:', err);
|
|
45
|
+
return next();
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
app.use(notFoundHandler);
|
|
50
|
+
Sentry.setupExpressErrorHandler(app);
|
|
51
|
+
app.use(errorHandler);
|
|
52
|
+
const initialized = await isInitialized();
|
|
53
|
+
console.log(`System initialized: ${initialized}`);
|
|
54
|
+
app.listen(PORT, '0.0.0.0', () => {
|
|
55
|
+
console.log(`Server running on port ${PORT}`);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error('Failed to start server:', error);
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
start();
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrument.d.ts","sourceRoot":"","sources":["../src/instrument.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sentry instrumentation - must run after load-env.ts so SENTRY_DSN is available.
|
|
3
|
+
* When SENTRY_DSN is unset, Sentry is disabled (no network calls).
|
|
4
|
+
*/
|
|
5
|
+
import * as Sentry from '@sentry/node';
|
|
6
|
+
const dsn = process.env.SENTRY_DSN;
|
|
7
|
+
if (dsn) {
|
|
8
|
+
Sentry.init({
|
|
9
|
+
dsn,
|
|
10
|
+
environment: process.env.SENTRY_ENVIRONMENT || process.env.NODE_ENV || 'development',
|
|
11
|
+
tracesSampleRate: process.env.NODE_ENV === 'production' ? 0.1 : 1.0,
|
|
12
|
+
// Avoid sending PII; scrub sensitive data in beforeSend if needed
|
|
13
|
+
sendDefaultPii: false,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=instrument.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrument.js","sourceRoot":"","sources":["../src/instrument.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACnC,IAAI,GAAG,EAAE,CAAC;IACR,MAAM,CAAC,IAAI,CAAC;QACV,GAAG;QACH,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;QACpF,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACnE,kEAAkE;QAClE,cAAc,EAAE,KAAK;KACtB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-env.d.ts","sourceRoot":"","sources":["../src/load-env.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// This file must be imported FIRST before any other modules
|
|
2
|
+
// It loads environment variables from the project root .env file
|
|
3
|
+
import dotenv from 'dotenv';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import { dirname, join } from 'path';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = dirname(__filename);
|
|
8
|
+
// Load .env from project root
|
|
9
|
+
// Try multiple paths: from backend/src (dev) or from dist (production)
|
|
10
|
+
const envPaths = [
|
|
11
|
+
join(__dirname, '../../.env'), // From backend/src or dist
|
|
12
|
+
join(process.cwd(), '../.env'), // From backend directory
|
|
13
|
+
join(process.cwd(), '.env'), // From current working directory
|
|
14
|
+
];
|
|
15
|
+
let envLoaded = false;
|
|
16
|
+
for (const envPath of envPaths) {
|
|
17
|
+
try {
|
|
18
|
+
const result = dotenv.config({ path: envPath });
|
|
19
|
+
if (!result.error) {
|
|
20
|
+
envLoaded = true;
|
|
21
|
+
console.log(`Loaded .env from: ${envPath}`);
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
// Continue to next path
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Fallback to default dotenv behavior
|
|
30
|
+
if (!envLoaded) {
|
|
31
|
+
dotenv.config();
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=load-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-env.js","sourceRoot":"","sources":["../src/load-env.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,iEAAiE;AACjE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,8BAA8B;AAC9B,uEAAuE;AACvE,MAAM,QAAQ,GAAG;IACf,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,2BAA2B;IAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,yBAAyB;IACzD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,iCAAiC;CAC/D,CAAC;AAEF,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,SAAS,GAAG,IAAI,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;YAC5C,MAAM;QACR,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wBAAwB;IAC1B,CAAC;AACH,CAAC;AAED,sCAAsC;AACtC,IAAI,CAAC,SAAS,EAAE,CAAC;IACf,MAAM,CAAC,MAAM,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Request, RequestHandler } from 'express';
|
|
2
|
+
export interface AuthRequest extends Request {
|
|
3
|
+
user?: {
|
|
4
|
+
id: string;
|
|
5
|
+
email: string;
|
|
6
|
+
name: string;
|
|
7
|
+
user_key: string;
|
|
8
|
+
is_admin: boolean;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare function isAuthRequest(req: Request): req is AuthRequest;
|
|
12
|
+
/**
|
|
13
|
+
* Middleware to authenticate requests using JWT or API token.
|
|
14
|
+
* Priority: JWT (cookie or Bearer) → API token (Bearer with sb_ prefix).
|
|
15
|
+
* If JWT fails and Bearer token starts with sb_, tries API token lookup.
|
|
16
|
+
*/
|
|
17
|
+
export declare function requireAuth(): RequestHandler;
|
|
18
|
+
/**
|
|
19
|
+
* Middleware to authenticate and require global admin.
|
|
20
|
+
* Supports JWT and API token same as requireAuth.
|
|
21
|
+
*/
|
|
22
|
+
export declare function requireAdmin(): RequestHandler;
|
|
23
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA0B,cAAc,EAAE,MAAM,SAAS,CAAC;AAI1E,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,cAAc,CAyB5C;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,cAAc,CA0B7C"}
|