@carlosbajo/roket-micro
Version:
framework para microservicios con google/pubsub
45 lines (40 loc) • 1.54 kB
JavaScript
const Koa = require('koa');
const cors = require('koa-cors');
const bodyParser = require('koa-bodyparser');
const convert = require('koa-convert');
const Boom = require('boom');
const koaJwt = require('koa-jwt');
const db = require('./lib/db');
const initialize = require('./lib/load');
const jwtConfig = require('./lib/jwt');
const logger = require('./lib/loggerTransport');
const Pubsub = require('./lib/pubsub');
const errorReporting = require('./lib/logger');
const { name } = require(`${process.cwd()}/package.json`); // eslint-disable-line
const app = new Koa();
module.exports = {
start: (port, secret, googleKey) => {
if (!port || !secret) throw Boom.badImplementation('Missing required values');
app
.use(convert(cors()))
.use(bodyParser({ jsonLimit: '1mb', textLimit: '1mb' }))
.use(koaJwt({
secret,
passthrough: true,
}))
.use(jwtConfig.middleware);
app.datasources = db.connect;
const log = logger(app, googleKey || undefined);
app.use(convert(errorReporting.googleError(log)));
app.use(errorReporting.koaLogger(log));
app.logger = log;
app.name = name;
app.pubsub = new Pubsub(log);
initialize(app, cors);
app.listen(port);
console.log(`Server running on port ${port}`);
app.logger.info(`Server running on port ${port}`);
app.logger.info(`ENVIROMENT: ${process.env.NODE_ENV || 'development'}`);
},
app
};