UNPKG

koan

Version:

A Koa.js Application Boilerplate

93 lines (77 loc) 1.77 kB
'use strict'; /** * Dependencies */ var koa = require('koa'); var compose = require('koa-compose'); var csrf = require('koa-csrf'); var stack = require('./middleware').stack; var dispatch = require('./dispatcher').routes; var adjust = require('./config').adjust; var render = require('./renderer').render; var loadModels = require('./modeler').load; var path = require('path'); /** * Application */ module.exports = function (config) { config = config || {}; config.middleware = config.middleware || {}; config.options = config.options || {}; config.options.cookies = config.options.cookies || {}; config.views = config.views || {}; /** * Original Koa.js application */ var app = koa(); /** * Application options */ app.options = config.options; /** * Application name */ app.name = config.options.name || app.name; /** * Environment */ app.env = config.options.env || app.env; /** * Session support */ if (typeof config.options.cookies.keys !== 'undefined') app.keys = config.options.cookies.keys; /** * Config verification and adjustment */ config = adjust(config); /** * Middleware stack */ var middleware = stack(config); /** * Routes */ middleware = middleware.concat(dispatch(config.routes)); /** * Compose */ app.use(compose(middleware)); /** * CSRF token support */ if ((typeof config.options.csrf !== 'undefined') &&(config.options.csrf) &&(config.middleware['koa-session']) &&(app.keys)) csrf(app, (config.options.csrf === true)?{}:config.options.csrf); /** * View renderer */ app.render = render(config.views); /** * Loading models */ app.models = loadModels(config.models); return app; };