text: /*
   * @Author: 24min
   * @Date: 2020-05-04 13:10:33
   * @LastEditors: 24min
   * @LastEditTime: 2020-05-27 21:05:56
   * @Description: file content
   */ 
  const Koa = require('koa')
  const app = new Koa()
  const views = require('koa-views')
  const json = require('koa-json')
  const onerror = require('koa-onerror')
  const bodyparser = require('koa-bodyparser')
  const logger = require('koa-logger')
  const token = require('./validateToken')
  const index = require('./routes/index')
  const users = require('./routes/usersRoutes')
  const commodity = require('./routes/commodityRoutes')
  // error handler
  onerror(app)
  
  // middlewares
  app.use(bodyparser({
    enableTypes:['json', 'form', 'text']
  }))
  app.use(json())
  app.use(logger())
  app.use(require('koa-static')(__dirname + '/public'))
  
  app.use(views(__dirname + '/views', {
    extension: 'pug'
  }))
  
  // logger
  app.use(async (ctx, next) => {
    const start = new Date()
    await next()
    const ms = new Date() - start
    console.log(`${ctx.method} ${ctx.url} - ${ms}ms`)
  })
  
  app.use(token())
  // routes
  app.use(index.routes(), index.allowedMethods())
  app.use(users.routes(), users.allowedMethods())
  app.use(commodity.routes(), commodity.allowedMethods())
  // error-handling
  app.on('error', (err, ctx) => {
    console.error('server error', err, ctx)
  });
  
  module.exports = app
  