@@ -65,6 +65,19 @@ function hasDynamicLink(node, linkAttribute) {
65
65
}
66
66
}
67
67
68
+ function attributeValuePossiblyRel ( value ) {
69
+ if (
70
+ typeof value === 'string'
71
+ && (
72
+ ( value && value . toLowerCase ( ) === 'noreferrer' )
73
+ || ( value && value . toLowerCase ( ) === 'noopener noreferrer' )
74
+ || ( value && value . toLowerCase ( ) === 'noreferrer noopener' )
75
+ )
76
+ ) {
77
+ return true ;
78
+ }
79
+ }
80
+
68
81
function getStringFromValue ( value ) {
69
82
if ( value ) {
70
83
if ( value . type === 'Literal' ) {
@@ -76,24 +89,10 @@ function getStringFromValue(value) {
76
89
}
77
90
const expr = value . expression ;
78
91
if ( expr . type === 'ConditionalExpression' ) {
79
- if (
80
- typeof expr . consequent . value === 'string'
81
- && (
82
- ( expr . consequent . value && expr . consequent . value . toLowerCase ( ) === 'noreferrer' )
83
- || ( expr . consequent . value && expr . consequent . value . toLowerCase ( ) === 'noopener noreferrer' )
84
- || ( expr . consequent . value && expr . consequent . value . toLowerCase ( ) === 'noreferrer noopener' )
85
- )
86
- ) {
92
+ if ( attributeValuePossiblyRel ( expr . consequent . value ) ) {
87
93
return expr . consequent . value ;
88
94
}
89
- if (
90
- typeof expr . alternate . value === 'string'
91
- && (
92
- ( expr . alternate . value && expr . alternate . value . toLowerCase ( ) === 'noreferrer' )
93
- || ( expr . alternate . value && expr . alternate . value . toLowerCase ( ) === 'noopener noreferrer' )
94
- || ( expr . consequent . value && expr . consequent . value . toLowerCase ( ) === 'noreferrer noopener' )
95
- )
96
- ) {
95
+ if ( attributeValuePossiblyRel ( expr . alternate . value ) ) {
97
96
return expr . alternate . value ;
98
97
}
99
98
}
0 commit comments