Skip to content

Commit

Permalink
refactor: rename v to getCSPDirective
Browse files Browse the repository at this point in the history
  • Loading branch information
UncleClapton committed Sep 16, 2021
1 parent 5630f1b commit 8beb39a
Showing 1 changed file with 20 additions and 21 deletions.
41 changes: 20 additions & 21 deletions lib/buildCSPHeaders.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ const devDirectives = {
'style-src': ["'unsafe-inline'"],
}

function getCSPDirective(value, defaultValue) {
return [value ?? defaultValue].flat()
}

module.exports = function buildCSPHeaders(options = {}) {
const {
Expand All @@ -19,27 +22,23 @@ module.exports = function buildCSPHeaders(options = {}) {
return []
}

function v(value, defaultValue) {
return [value ?? defaultValue].flat()
}

// Content Security Policy
const directives = {
'base-uri': v(contentSecurityPolicy['base-uri'], "'none'"),
'child-src': v(contentSecurityPolicy['child-src'], "'none'"),
'connect-src': v(contentSecurityPolicy['connect-src'], "'self'"),
'default-src': v(contentSecurityPolicy['default-src'], "'self'"),
'font-src': v(contentSecurityPolicy['font-src'], "'self'"),
'form-action': v(contentSecurityPolicy['form-action'], "'self'"),
'frame-ancestors': v(contentSecurityPolicy['frame-ancestors'], "'none'"),
'frame-src': v(contentSecurityPolicy['frame-src'], "'none'"),
'img-src': v(contentSecurityPolicy['img-src'], "'self'"),
'manifest-src': v(contentSecurityPolicy['manifest-src'], "'self'"),
'object-src': v(contentSecurityPolicy['object-src'], "'none'"),
'prefetch-src': v(contentSecurityPolicy['prefetch-src'], "'self'"),
'script-src': v(contentSecurityPolicy['script-src'], "'self'"),
'style-src': v(contentSecurityPolicy['style-src'], "'self'"),
'worker-src': v(contentSecurityPolicy['worker-src'], "'self'"),
'base-uri': getCSPDirective(contentSecurityPolicy['base-uri'], "'none'"),
'child-src': getCSPDirective(contentSecurityPolicy['child-src'], "'none'"),
'connect-src': getCSPDirective(contentSecurityPolicy['connect-src'], "'self'"),
'default-src': getCSPDirective(contentSecurityPolicy['default-src'], "'self'"),
'font-src': getCSPDirective(contentSecurityPolicy['font-src'], "'self'"),
'form-action': getCSPDirective(contentSecurityPolicy['form-action'], "'self'"),
'frame-ancestors': getCSPDirective(contentSecurityPolicy['frame-ancestors'], "'none'"),
'frame-src': getCSPDirective(contentSecurityPolicy['frame-src'], "'none'"),
'img-src': getCSPDirective(contentSecurityPolicy['img-src'], "'self'"),
'manifest-src': getCSPDirective(contentSecurityPolicy['manifest-src'], "'self'"),
'object-src': getCSPDirective(contentSecurityPolicy['object-src'], "'none'"),
'prefetch-src': getCSPDirective(contentSecurityPolicy['prefetch-src'], "'self'"),
'script-src': getCSPDirective(contentSecurityPolicy['script-src'], "'self'"),
'style-src': getCSPDirective(contentSecurityPolicy['style-src'], "'self'"),
'worker-src': getCSPDirective(contentSecurityPolicy['worker-src'], "'self'"),
}

const optionalDirectives = [
Expand All @@ -59,12 +58,12 @@ module.exports = function buildCSPHeaders(options = {}) {

optionalDirectives.forEach(optionalDirective => {
if (contentSecurityPolicy[optionalDirective]) {
directives[optionalDirective] = v(contentSecurityPolicy[optionalDirective])
directives[optionalDirective] = getCSPDirective(contentSecurityPolicy[optionalDirective])
}
})

if (contentSecurityPolicy['report-to'] || contentSecurityPolicy['report-uri']) {
const reportDirectiveValue = v(contentSecurityPolicy['report-to'] || contentSecurityPolicy['report-uri'])
const reportDirectiveValue = getCSPDirective(contentSecurityPolicy['report-to'] || contentSecurityPolicy['report-uri'])
directives['report-uri'] = reportDirectiveValue
directives['report-to'] = reportDirectiveValue
}
Expand Down

0 comments on commit 8beb39a

Please sign in to comment.