// @flow import Koa from 'koa' import { createConfig, validateConfig } from './config' import { createContext } from './context' import log from './log' import { createRouter } from './router' import type { Config, Handlers } from './types' export const createServer = (handlers: Handlers, config: Config) => { log('create server', config) const server = new Koa() const context = createContext(config) const router = createRouter(handlers, context) server.use(router.routes()) server.use(router.allowedMethods()) return server } export const startServer = (handlers: Handlers, cfg?: Object) => { const config = createConfig(cfg) validateConfig(config) createServer(handlers, config).listen(config.port) log(`listening on port ${config.port}`) }