@@ -48,16 +48,16 @@ function attributeValuePossiblyBlank(attribute) {
48
48
return false ;
49
49
}
50
50
51
- function hasExternalLink ( node , linkAttribute , warnOnSpreadAttributes , spreadAttributeIndex ) {
52
- const linkIndex = findLastIndex ( node . attributes , ( attr ) => attr . name && attr . name . name === linkAttribute ) ;
51
+ function hasExternalLink ( node , linkAttributes , warnOnSpreadAttributes , spreadAttributeIndex ) {
52
+ const linkIndex = findLastIndex ( node . attributes , ( attr ) => attr . name && linkAttributes . includes ( attr . name . name ) ) ;
53
53
const foundExternalLink = linkIndex !== - 1 && ( ( attr ) => attr . value && attr . value . type === 'Literal' && / ^ (?: \w + : | \/ \/ ) / . test ( attr . value . value ) ) (
54
54
node . attributes [ linkIndex ] ) ;
55
55
return foundExternalLink || ( warnOnSpreadAttributes && linkIndex < spreadAttributeIndex ) ;
56
56
}
57
57
58
- function hasDynamicLink ( node , linkAttribute ) {
58
+ function hasDynamicLink ( node , linkAttributes ) {
59
59
const dynamicLinkIndex = findLastIndex ( node . attributes , ( attr ) => attr . name
60
- && attr . name . name === linkAttribute
60
+ && linkAttributes . includes ( attr . name . name )
61
61
&& attr . value
62
62
&& attr . value . type === 'JSXExpressionContainer' ) ;
63
63
if ( dynamicLinkIndex !== - 1 ) {
@@ -194,9 +194,9 @@ module.exports = {
194
194
}
195
195
}
196
196
197
- const linkAttribute = linkComponents . get ( node . name . name ) ;
198
- const hasDangerousLink = hasExternalLink ( node , linkAttribute , warnOnSpreadAttributes , spreadAttributeIndex )
199
- || ( enforceDynamicLinks === 'always' && hasDynamicLink ( node , linkAttribute ) ) ;
197
+ const linkAttributes = linkComponents . get ( node . name . name ) ;
198
+ const hasDangerousLink = hasExternalLink ( node , linkAttributes , warnOnSpreadAttributes , spreadAttributeIndex )
199
+ || ( enforceDynamicLinks === 'always' && hasDynamicLink ( node , linkAttributes ) ) ;
200
200
if ( hasDangerousLink && ! hasSecureRel ( node , allowReferrer , warnOnSpreadAttributes , spreadAttributeIndex ) ) {
201
201
const messageId = allowReferrer ? 'noTargetBlankWithoutNoopener' : 'noTargetBlankWithoutNoreferrer' ;
202
202
const relValue = allowReferrer ? 'noopener' : 'noreferrer' ;
@@ -265,11 +265,11 @@ module.exports = {
265
265
return ;
266
266
}
267
267
268
- const formAttribute = formComponents . get ( node . name . name ) ;
268
+ const formAttributes = formComponents . get ( node . name . name ) ;
269
269
270
270
if (
271
- hasExternalLink ( node , formAttribute )
272
- || ( enforceDynamicLinks === 'always' && hasDynamicLink ( node , formAttribute ) )
271
+ hasExternalLink ( node , formAttributes )
272
+ || ( enforceDynamicLinks === 'always' && hasDynamicLink ( node , formAttributes ) )
273
273
) {
274
274
const messageId = allowReferrer ? 'noTargetBlankWithoutNoopener' : 'noTargetBlankWithoutNoreferrer' ;
275
275
report ( context , messages [ messageId ] , messageId , {
0 commit comments