UNPKG

jambda

Version:

Easy serverless rest api deploy! Jambda makes it easy to deploy database connected rest api's by providing the least amount of configuration.

101 lines (70 loc) 2.95 kB
'use strict' Object.defineProperty(exports, '__esModule', { value: true }) var _express = require('express') var _express2 = _interopRequireDefault(_express) var _bodyParser = require('body-parser') var _bodyParser2 = _interopRequireDefault(_bodyParser) var _cors = require('cors') var _cors2 = _interopRequireDefault(_cors) var _compression = require('compression') var _compression2 = _interopRequireDefault(_compression) var _winston = require('winston') var _winston2 = _interopRequireDefault(_winston) var _expressWinston = require('express-winston') var _expressWinston2 = _interopRequireDefault(_expressWinston) var _database = require('./config/database') var _database2 = _interopRequireDefault(_database) var _router = require('./router') var _router2 = _interopRequireDefault(_router) var _error = require('./lib/error') var _error2 = _interopRequireDefault(_error) var _serverlessHttp = require('serverless-http') var _serverlessHttp2 = _interopRequireDefault(_serverlessHttp) function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } /** * Creates a new Express application given a prefix and a model * * @param {string} connector The connector name (eg: redis, rethinkdb, arangodb, mysql, etc...) * @param {Schema[]} models The array of models to be added as api's * @returns {express} The Express app */ var Jambda = function Jambda(connector, models) { var app = (0, _express2.default)() app.use((0, _compression2.default)()) app.use((0, _cors2.default)()) app.use(_bodyParser2.default.json()) app.use(_bodyParser2.default.urlencoded({ extended: true })) if (process.env.NODE_ENV !== 'test') { app.use( _expressWinston2.default.logger({ transports: [ new _winston2.default.transports.Console({ json: true, colorize: true }) ], meta: true, // optional: control whether you want to log the meta data about the request (default to true) msg: 'HTTP {{req.method}} {{req.url}}', // optional: customize the default logging message. E.g. "{{res.statusCode}} {{req.method}} {{res.responseTime}}ms {{req.url}}" expressFormat: true, // Use the default Express/morgan request formatting. Enabling this will override any msg if true. Will only output colors with colorize set to true colorize: false, // Color the text and status code, using the Express/morgan color palette (text: gray, status: default green, 3XX cyan, 4XX yellow, 5XX red). ignoreRoute: function ignoreRoute(req, res) { return false } // optional: allows to skip some log messages based on request and/or response }) ) } var db = (0, _database2.default)(connector) models.forEach(function(model) { var m = new model(db) app.use('/' + m.modelName, (0, _router2.default)(m)) }) app.use(_error2.default) return process.env.NODE_ENV === 'test' ? app : (0, _serverlessHttp2.default)(app) } exports.default = Jambda