@@ -196,9 +196,9 @@ export class ProcessSSRI extends Feature<SSRIOptions> {
196196 const urls : string [ ] = [ ] ;
197197
198198 if ( headers . require !== undefined ) {
199- const requireURLs = Array . isArray ( headers . require )
200- ? headers . require
201- : [ headers . require ] ;
199+ const requireURLs = (
200+ Array . isArray ( headers . require ) ? headers . require : [ headers . require ]
201+ ) . filter ( ( url ) : url is string => typeof url === 'string' ) ;
202202
203203 for ( const urlStr of requireURLs ) {
204204 const url = this . parseURL ( urlStr ) ;
@@ -209,7 +209,9 @@ export class ProcessSSRI extends Feature<SSRIOptions> {
209209 }
210210
211211 if ( headers . resource !== undefined ) {
212- for ( const urlStr of Object . values ( headers . resource ) ) {
212+ for ( const urlStr of Object . values ( headers . resource ) . filter (
213+ ( url ) : url is string => typeof url === 'string' ,
214+ ) ) {
213215 const url = this . parseURL ( urlStr ) ;
214216 if ( this . filterURL ( url , 'resource' , options ) ) {
215217 urls . push ( this . stringifyURL ( url ) ) ;
@@ -316,20 +318,21 @@ export class ProcessSSRI extends Feature<SSRIOptions> {
316318
317319 if ( headers . require !== undefined ) {
318320 if ( Array . isArray ( headers . require ) ) {
319- headersProps . require = headers . require . map ( ( url ) =>
320- this . updateURL ( url , ssriLock ) ,
321- ) ;
321+ headersProps . require = headers . require
322+ . filter ( ( url ) : url is string => typeof url === 'string' )
323+ . map ( ( url ) => this . updateURL ( url , ssriLock ) ) ;
322324 } else {
323325 headersProps . require = this . updateURL ( headers . require , ssriLock ) ;
324326 }
325327 }
326328
327329 if ( headers . resource !== undefined ) {
328330 headersProps . resource = Object . fromEntries (
329- Object . entries ( headers . resource ) . map ( ( [ name , url ] ) => [
330- name ,
331- this . updateURL ( url , ssriLock ) ,
332- ] ) ,
331+ Object . entries ( headers . resource )
332+ . filter (
333+ ( entry ) : entry is [ string , string ] => typeof entry [ 1 ] === 'string' ,
334+ )
335+ . map ( ( [ name , url ] ) => [ name , this . updateURL ( url , ssriLock ) ] ) ,
333336 ) ;
334337 }
335338
0 commit comments