import cors from 'cors'; import express from 'express'; import fs from 'node:fs'; import helmet from 'helmet'; import morgan from 'morgan'; import path from 'node:path'; import { env } from './config/env.js'; import { errorHandler, notFoundHandler } from './middleware/error-handler.js'; import { apiRouter } from './routes/index.js'; export const createApp = () => { const app = express(); const uploadDir = path.resolve(env.UPLOAD_DIR); fs.mkdirSync(uploadDir, { recursive: true }); app.use(helmet({ crossOriginResourcePolicy: false })); app.use(cors({ origin: env.API_CORS_ORIGIN, credentials: true })); app.use(morgan('dev')); app.use(express.json({ limit: '2mb' })); app.use(express.urlencoded({ extended: true })); app.use('/uploads', express.static(uploadDir)); app.use('/api', apiRouter); app.use(notFoundHandler); app.use(errorHandler); return app; };