UNPKG

@carlosbajo/roket-micro

Version:

framework para microservicios con google/pubsub

45 lines (40 loc) 1.54 kB
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 };