const Koa = require("koa"); const koaStatic = require("koa-static"); const path = require("path"); const mount = require("koa-mount"); /** * @type function * @param {{ host: string, port: number, middleware }} input * @return function */ module.exports = ({ host, port, middleware }) => { const assets = new Koa(); assets.use(koaStatic(path.join(__dirname, "assets"))); const app = new Koa(); 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'", ].join("; "); // Disallow scripts. ctx.set("Content-Security-Policy", csp); // Disallow