|
|
|
const Koa = require('koa');
|
|
|
|
const server = new Koa();
|
|
|
|
const multer = require('@koa/multer')();
|
|
|
|
const bodyParser = require('koa-bodyparser')();
|
|
|
|
const compress = require('koa-compress')();
|
|
|
|
const cors = require('@koa/cors')(/* Add your cors option */);
|
|
|
|
const helmet = require('koa-helmet')(/* Add your security option */);
|
|
|
|
const logger = require('koa-logger')();
|
|
|
|
|
|
|
|
const { isDevelopment } = require('./config');
|
|
|
|
const applyApiMiddleware = require('./api');
|
|
|
|
const applyMiddleware = require('./middleware');
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Add here only development middlewares
|
|
|
|
*/
|
|
|
|
if (isDevelopment) {
|
|
|
|
// server.use(logger);
|
|
|
|
// Logger
|
|
|
|
server.use(async (ctx, next) => {
|
|
|
|
const start = new Date();
|
|
|
|
await next();
|
|
|
|
const ms = new Date() - start;
|
|
|
|
console.log(`${ctx.method} ${ctx.url} - ${ctx.status} - ${ms}ms`);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Pass to our server instance middlewares
|
|
|
|
*/
|
|
|
|
server
|
|
|
|
.use(logger)
|
|
|
|
.use(multer.any())
|
|
|
|
.use(bodyParser)
|
|
|
|
.use(helmet)
|
|
|
|
.use(compress)
|
|
|
|
.use(cors);
|
|
|
|
|
|
|
|
applyMiddleware(server);
|
|
|
|
/**
|
|
|
|
* Apply to our server the api router
|
|
|
|
*/
|
|
|
|
applyApiMiddleware(server);
|
|
|
|
|
|
|
|
module.exports = server;
|