Files

57 lines
1.7 KiB
JavaScript
Raw Permalink Normal View History

2026-06-30 11:40:07 +05:30
import express from 'express';
import helmet from 'helmet';
import cors from 'cors';
import compression from 'compression';
import cookieParser from 'cookie-parser';
import morgan from 'morgan';
import swaggerUi from 'swagger-ui-express';
import swaggerSpec from './src/shared/config/swagger.config.js';
import { errorMiddleware } from './src/shared/middleware/error.middleware.js';
import registerRoutes from './src/features/index.js';
2026-07-16 10:48:22 +05:30
import { buildContext } from './src/shared/middleware/context.middleware.js';
2026-06-30 11:40:07 +05:30
const app = express();
// Middlewares
2026-07-25 16:01:13 +05:30
app.use(helmet({
crossOriginResourcePolicy: { policy: 'cross-origin' },
}));
2026-07-16 10:48:22 +05:30
app.use(cors({
origin: true,
credentials: true,
2026-07-16 10:48:22 +05:30
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'],
allowedHeaders: ['Content-Type', 'Authorization', 'Accept', 'X-Requested-With', 'x-tenant-id', 'x-impersonated-tenant-id', 'X-Tenant-Id', 'X-Impersonated-Tenant-Id', 'x-api-key', 'X-Api-Key', '*']
2026-07-16 10:48:22 +05:30
}));
app.options('*', cors());
2026-06-30 11:40:07 +05:30
app.use(compression());
app.use(cookieParser());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
2026-07-16 10:48:22 +05:30
app.use(buildContext);
2026-06-30 11:40:07 +05:30
if (process.env.NODE_ENV !== 'test') {
app.use(morgan('dev'));
}
// Swagger setup
app.use('/api/docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
// Base Health Check
app.get('/health', (req, res) => {
res.status(200).json({ status: 'OK', timestamp: new Date() });
});
// Centralized Feature Router Loader
2026-07-25 16:01:13 +05:30
app.use('/uploads', express.static('uploads', {
setHeaders: (res) => {
res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin');
res.setHeader('Access-Control-Allow-Origin', '*');
}
}));
2026-06-30 11:40:07 +05:30
registerRoutes(app);
// Global Error Handler
app.use(errorMiddleware);
export default app;