import 'dotenv/config'; import * as Sentry from '@sentry/node'; import { consumeHandoffPayload, storeHandoffPayload } from '@api/utils/redis/oauth-handoff'; import { isPublicCorsPath, sessionCors } from '@api/middlewares/cors'; import { randomBytes } from 'crypto'; import { API_SERVER_URL } from '@api/constants'; import { Hono } from '@api/utils/hono'; import { accountRouter } from '@api/routes/account'; import { agentRouter } from '@api/routes/agent'; import { auth } from '@cio/db/auth'; import { communityRouter } from '@api/routes/community'; import { courseRouter } from '@api/routes/course'; import { dashAnalyticsRouter } from '@api/routes/dash'; import { domainRouter } from '@api/routes/domain/domain'; import { internalRouter } from '@api/routes/internal'; import { inviteRouter } from '@api/routes/invite'; import { jobsRouter } from '@api/routes/jobs'; import { licenseRouter } from '@api/routes/license'; import { logger } from 'hono/logger'; // ROUTES import { hlsRouter } from '@api/routes/hls'; import { mailRouter } from '@api/routes/mail'; import { mediaRouter } from '@api/routes/media'; import { transcriptsRouter } from '@api/routes/transcripts'; import { mountQueueDashboard } from '@api/routes/admin/queues'; import { onboardingRouter } from '@api/routes/onboarding'; import { organizationRouter } from '@api/routes/organization'; import { organizationSsoRouter } from '@api/routes/organization/sso'; import { organizationTokenAuthRouter } from '@api/routes/organization/token-auth'; import { prettyJSON } from 'hono/pretty-json'; import { programRouter } from '@api/routes/program'; import { publicCourseRouter } from '@api/routes/org-site'; import { publicWidgetsRouter } from '@api/routes/widgets'; import rateLimiter from '@api/middlewares/rate-limiter'; import { secureHeaders } from 'hono/secure-headers'; import { signupGuard } from '@api/middlewares/signup-guard'; import { ssoDiscoveryRouter } from '@api/routes/sso/discovery'; import { unsplashRouter } from '@api/routes/unsplash/unsplash'; import { v1Router } from '@api/routes/v1'; // Create Hono app with chaining for RPC support export const app = new Hono() // Middleware .use('*', logger()) .use('*', prettyJSON()) // `Cross-Origin-Resource-Policy: same-origin` (Hono's default) blocks the // dashboard from embedding api-served media (e.g. HLS segments via // `