@@ -81,11 +81,11 @@ function attributeValuePossiblyRel(value) {
8181function getStringFromValue ( value ) {
8282 if ( value ) {
8383 if ( value . type === 'Literal' ) {
84- return [ value . value ] ;
84+ return value . value ;
8585 }
8686 if ( value . type === 'JSXExpressionContainer' ) {
8787 if ( value . expression . type === 'TemplateLiteral' ) {
88- return [ value . expression . quasis [ 0 ] . value . cooked ] ;
88+ return value . expression . quasis [ 0 ] . value . cooked ;
8989 }
9090 const expr = value . expression ;
9191 if ( expr . type === 'ConditionalExpression' ) {
@@ -96,10 +96,10 @@ function getStringFromValue(value) {
9696 return [ expr . consequent . value , expr . alternate . value ] ;
9797 }
9898 }
99- return [ value . expression && value . expression . value ] ;
99+ return value . expression && value . expression . value ;
100100 }
101101 }
102- return [ null ] ;
102+ return null ;
103103}
104104
105105function hasSecureRel ( node , allowReferrer , warnOnSpreadAttributes , spreadAttributeIndex ) {
@@ -110,14 +110,23 @@ function hasSecureRel(node, allowReferrer, warnOnSpreadAttributes, spreadAttribu
110110
111111 const relAttribute = node . attributes [ relIndex ] ;
112112 const value = getStringFromValue ( relAttribute . value ) ;
113- for ( let index = 0 ; index < value . length ; index ++ ) {
114- const tags = value [ index ] && typeof value [ index ] === 'string' && value [ index ] . toLowerCase ( ) . split ( ' ' ) ;
115- const noreferrer = tags && tags . indexOf ( 'noreferrer' ) >= 0 ;
116- if ( noreferrer ) {
117- return true ;
113+ if ( Array . isArray ( value ) ) {
114+ for ( let index = 0 ; index < value . length ; index ++ ) {
115+ const tags = value [ index ] && typeof value [ index ] === 'string' && value [ index ] . toLowerCase ( ) . split ( ' ' ) ;
116+ const noreferrer = tags && tags . indexOf ( 'noreferrer' ) >= 0 ;
117+ const noopener = tags && tags . indexOf ( 'noopener' ) >= 0 ;
118+ if ( ! noreferrer ) {
119+ return allowReferrer && noopener ;
120+ }
118121 }
119- return allowReferrer && tags && tags . indexOf ( 'noopener' ) >= 0 ;
122+ return true ;
123+ }
124+ const tags = value && typeof value === 'string' && value . toLowerCase ( ) . split ( ' ' ) ;
125+ const noreferrer = tags && tags . indexOf ( 'noreferrer' ) >= 0 ;
126+ if ( noreferrer ) {
127+ return true ;
120128 }
129+ return allowReferrer && tags && tags . indexOf ( 'noopener' ) >= 0 ;
121130}
122131
123132const messages = {
0 commit comments