1+ import { RequestHandler } from "express" ;
12import config from "./config" ;
23import uuid from "uuid" ;
34
4- const CspStrategy : any = { }
5+
6+ const CspStrategy : {
7+ computeDirectives ?: ( ) => Record < string , string [ ] >
8+ addNonceToLocals ?: RequestHandler
9+ } = { }
510
611const defaultDirectives = {
712 defaultSrc : [ '\'self\'' ] ,
@@ -37,7 +42,7 @@ const googleAnalyticsDirectives = {
3742}
3843
3944CspStrategy . computeDirectives = function ( ) {
40- const directives = { }
45+ const directives : Record < string , string [ ] > = { }
4146 mergeDirectives ( directives , config . csp . directives )
4247 mergeDirectivesIf ( config . csp . addDefaults , directives , defaultDirectives )
4348 mergeDirectivesIf ( config . useCDN , directives , cdnDirectives )
@@ -52,12 +57,14 @@ CspStrategy.computeDirectives = function () {
5257 return directives
5358}
5459
55- function mergeDirectives ( existingDirectives , newDirectives ) {
60+ function mergeDirectives ( existingDirectives : Record < string , string [ ] > , newDirectives : Record < string , string [ ] > ) {
5661 for ( const propertyName in newDirectives ) {
57- const newDirective = newDirectives [ propertyName ]
58- if ( newDirective ) {
59- const existingDirective = existingDirectives [ propertyName ] || [ ]
60- existingDirectives [ propertyName ] = existingDirective . concat ( newDirective )
62+ if ( Object . hasOwnProperty . call ( newDirectives , propertyName ) ) {
63+ const newDirective = newDirectives [ propertyName ]
64+ if ( newDirective ) {
65+ const existingDirective = existingDirectives [ propertyName ] || [ ]
66+ existingDirectives [ propertyName ] = existingDirective . concat ( newDirective )
67+ }
6168 }
6269 }
6370}
0 commit comments