const Koa = require("koa"); const koaStatic = require("koa-static"); const path = require("path"); const mount = require("koa-mount"); /** * @param {{ host: string, port: number, middleware: [] }} input */ module.exports = ({ host, port, middleware }) => { const assets = new Koa(); assets.use(koaStatic(path.join(__dirname, "assets"))); const app = new Koa(); module.exports = app; app.on("error", (err) => { // Output full error objects err.message = err.stack; console.error(err); err.expose = true; return null; }); app.use(mount("/assets", assets)); // headers app.use(async (ctx, next) => { await next(); const csp = [ "default-src 'none'", "img-src 'self'", "form-action 'self'", "media-src 'self'", "style-src 'self' 'unsafe-inline'", ].join("; "); // Disallow scripts. ctx.set("Content-Security-Policy", csp); // Disallow