import express from 'express'; import pino from 'pino'; import pinoHttp from 'pino-http'; import { requestContext } from './middleware/request-context.js'; import { errorHandler, notFoundHandler } from './middleware/error-handler.js'; import { healthRouter } from './routes/health.js'; import { createAuthRouter } from './routes/auth.js'; import { createProxyRouter } from './routes/proxy.js'; import { assertSafeRuntimeConfig } from './lib/runtime-safety.js'; const logger = pino({ level: process.env.LOG_LEVEL || 'info' }); export function createApp(options = {}) { assertSafeRuntimeConfig(); const app = express(); app.use(requestContext); app.use( pinoHttp({ logger, customProps: (req) => ({ requestId: req.requestId }), }) ); app.use(healthRouter); app.use('/auth', createAuthRouter({ fetchImpl: options.fetchImpl, authService: options.authService })); app.use(createProxyRouter(options)); app.use(notFoundHandler); app.use(errorHandler); return app; }