"use strict"; const Koa = require("koa"); const app = new Koa(); const helmet = require("koa-helmet"); const actions = require("./actions.js"); const config = require("./modules/config.js"); const Router = require("koa-router"); const router = new Router(); app.context.getURL = router.url.bind(router); const Posts = require("./domain/posts.js")(config.posts, basename => router.url("post", basename) ); router.get("home", "/", actions.home(config, Posts.posts)); router.get("post", "/post/:filename", actions.post(config, Posts.posts)); for (let [term, items] of Posts.taxonomies) { router.get( `taxon-${term}`, `/${term}/:value`, actions.taxonGenerator(config, term, items) ); } app.use( helmet({ hsts: { setIf: ctx => ctx.secure } }) ); app.use(router.routes()).use(router.allowedMethods()); app.use(actions.serveFiles); module.exports = app;