edgerender
Version:
Render at the edge
35 lines • 1.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.addCspHeader = void 0;
const utils_1 = require("./utils");
function addCspHeader(headers, csp_rules, sentry) {
if (!csp_rules.report_uri && sentry) {
const { key, server, app } = sentry;
csp_rules.report_uri = `https://${server}.ingest.sentry.io/api/${app}/security/?sentry_key=${key}`;
}
headers['content-security-policy'] = Object.entries(csp_rules)
.map(directiveAsString)
.filter(v => v)
.join(' ');
}
exports.addCspHeader = addCspHeader;
function directiveAsString([k, v]) {
const name = k.replace(/_/g, '-');
if (typeof v == 'string') {
return `${name} ${v};`;
}
else if (typeof v == 'boolean') {
if (v) {
return `${name};`;
}
}
else {
if (!Array.isArray(v)) {
throw new TypeError(`CSP ${name}: Invalid directive value type ${utils_1.smart_typeof(v)}`);
}
else if (v.length > 0) {
return `${name} ${v.join(' ')};`;
}
}
}
//# sourceMappingURL=csp.js.map