@typescript-eslint/eslint-plugin 8.0.0-alpha.46 → 8.0.0-alpha.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,6 +26,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
const utils_1 = require("@typescript-eslint/utils");
|
27
27
|
const ts = __importStar(require("typescript"));
|
28
28
|
const util_1 = require("../util");
|
29
|
+
const evenNumOfBackslashesRegExp = /(?<!(?:[^\\]|^)(?:\\\\)*\\)/;
|
30
|
+
// '\\$' <- false
|
31
|
+
// '\\\\$' <- true
|
32
|
+
// '\\\\\\$' <- false
|
33
|
+
function endsWithUnescapedDollarSign(str) {
|
34
|
+
return new RegExp(String(evenNumOfBackslashesRegExp.source) + '\\$$').test(str);
|
35
|
+
}
|
29
36
|
exports.default = (0, util_1.createRule)({
|
30
37
|
name: 'no-unnecessary-template-expression',
|
31
38
|
meta: {
|
@@ -102,21 +109,100 @@ exports.default = (0, util_1.createRule)({
|
|
102
109
|
});
|
103
110
|
return;
|
104
111
|
}
|
105
|
-
const fixableExpressions = node.expressions
|
112
|
+
const fixableExpressions = node.expressions
|
113
|
+
.filter(expression => isLiteral(expression) ||
|
106
114
|
isTemplateLiteral(expression) ||
|
107
115
|
(0, util_1.isUndefinedIdentifier)(expression) ||
|
108
116
|
isInfinityIdentifier(expression) ||
|
109
|
-
isNaNIdentifier(expression))
|
110
|
-
|
117
|
+
isNaNIdentifier(expression))
|
118
|
+
.reverse();
|
119
|
+
let nextCharacterIsOpeningCurlyBrace = false;
|
120
|
+
for (const expression of fixableExpressions) {
|
121
|
+
const fixers = [];
|
122
|
+
const index = node.expressions.indexOf(expression);
|
123
|
+
const prevQuasi = node.quasis[index];
|
124
|
+
const nextQuasi = node.quasis[index + 1];
|
125
|
+
if (nextQuasi.value.raw.length !== 0) {
|
126
|
+
nextCharacterIsOpeningCurlyBrace =
|
127
|
+
nextQuasi.value.raw.startsWith('{');
|
128
|
+
}
|
129
|
+
if (isLiteral(expression)) {
|
130
|
+
let escapedValue = (typeof expression.value === 'string'
|
131
|
+
? // The value is already a string, so we're removing quotes:
|
132
|
+
// "'va`lue'" -> "va`lue"
|
133
|
+
expression.raw.slice(1, -1)
|
134
|
+
: // The value may be one of number | bigint | boolean | RegExp | null.
|
135
|
+
// In regular expressions, we escape every backslash
|
136
|
+
String(expression.value).replace(/\\/g, '\\\\'))
|
137
|
+
// The string or RegExp may contain ` or ${.
|
138
|
+
// We want both of these to be escaped in the final template expression.
|
139
|
+
//
|
140
|
+
// A pair of backslashes means "escaped backslash", so backslashes
|
141
|
+
// from this pair won't escape ` or ${. Therefore, to escape these
|
142
|
+
// sequences in the resulting template expression, we need to escape
|
143
|
+
// all sequences that are preceded by an even number of backslashes.
|
144
|
+
//
|
145
|
+
// This RegExp does the following transformations:
|
146
|
+
// \` -> \`
|
147
|
+
// \\` -> \\\`
|
148
|
+
// \${ -> \${
|
149
|
+
// \\${ -> \\\${
|
150
|
+
.replace(new RegExp(String(evenNumOfBackslashesRegExp.source) + '(`|\\${)', 'g'), '\\$1');
|
151
|
+
// `...${'...$'}{...`
|
152
|
+
// ^^^^
|
153
|
+
if (nextCharacterIsOpeningCurlyBrace &&
|
154
|
+
endsWithUnescapedDollarSign(escapedValue)) {
|
155
|
+
escapedValue = escapedValue.replaceAll(/\$$/g, '\\$');
|
156
|
+
}
|
157
|
+
if (escapedValue.length !== 0) {
|
158
|
+
nextCharacterIsOpeningCurlyBrace = escapedValue.startsWith('{');
|
159
|
+
}
|
160
|
+
fixers.push(fixer => [fixer.replaceText(expression, escapedValue)]);
|
161
|
+
}
|
162
|
+
else if (isTemplateLiteral(expression)) {
|
163
|
+
// Since we iterate from the last expression to the first,
|
164
|
+
// a subsequent expression can tell the current expression
|
165
|
+
// that it starts with {.
|
166
|
+
//
|
167
|
+
// `... ${`... $`}${'{...'} ...`
|
168
|
+
// ^ ^ subsequent expression starts with {
|
169
|
+
// current expression ends with a dollar sign,
|
170
|
+
// so '$' + '{' === '${' (bad news for us).
|
171
|
+
// Let's escape the dollar sign at the end.
|
172
|
+
if (nextCharacterIsOpeningCurlyBrace &&
|
173
|
+
endsWithUnescapedDollarSign(expression.quasis[expression.quasis.length - 1].value.raw)) {
|
174
|
+
fixers.push(fixer => [
|
175
|
+
fixer.replaceTextRange([expression.range[1] - 2, expression.range[1] - 2], '\\'),
|
176
|
+
]);
|
177
|
+
}
|
178
|
+
if (expression.quasis.length === 1 &&
|
179
|
+
expression.quasis[0].value.raw.length !== 0) {
|
180
|
+
nextCharacterIsOpeningCurlyBrace =
|
181
|
+
expression.quasis[0].value.raw.startsWith('{');
|
182
|
+
}
|
183
|
+
// Remove the beginning and trailing backtick characters.
|
184
|
+
fixers.push(fixer => [
|
185
|
+
fixer.removeRange([expression.range[0], expression.range[0] + 1]),
|
186
|
+
fixer.removeRange([expression.range[1] - 1, expression.range[1]]),
|
187
|
+
]);
|
188
|
+
}
|
189
|
+
else {
|
190
|
+
nextCharacterIsOpeningCurlyBrace = false;
|
191
|
+
}
|
192
|
+
// `... $${'{...'} ...`
|
193
|
+
// ^^^^^
|
194
|
+
if (nextCharacterIsOpeningCurlyBrace &&
|
195
|
+
endsWithUnescapedDollarSign(prevQuasi.value.raw)) {
|
196
|
+
fixers.push(fixer => [
|
197
|
+
fixer.replaceTextRange([prevQuasi.range[1] - 3, prevQuasi.range[1] - 2], '\\$'),
|
198
|
+
]);
|
199
|
+
}
|
111
200
|
context.report({
|
112
201
|
node: expression,
|
113
202
|
messageId: 'noUnnecessaryTemplateExpression',
|
114
203
|
fix(fixer) {
|
115
|
-
|
116
|
-
|
117
|
-
const nextQuasi = node.quasis[index + 1];
|
118
|
-
// Remove the quasis' parts that are related to the current expression.
|
119
|
-
const fixes = [
|
204
|
+
return [
|
205
|
+
// Remove the quasis' parts that are related to the current expression.
|
120
206
|
fixer.removeRange([
|
121
207
|
prevQuasi.range[1] - 2,
|
122
208
|
expression.range[0],
|
@@ -125,27 +211,11 @@ exports.default = (0, util_1.createRule)({
|
|
125
211
|
expression.range[1],
|
126
212
|
nextQuasi.range[0] + 1,
|
127
213
|
]),
|
214
|
+
...fixers.flatMap(cb => cb(fixer)),
|
128
215
|
];
|
129
|
-
const stringValue = (0, util_1.getStaticStringValue)(expression);
|
130
|
-
if (stringValue != null) {
|
131
|
-
const escapedValue = stringValue.replace(/([`$\\])/g, '\\$1');
|
132
|
-
fixes.push(fixer.replaceText(expression, escapedValue));
|
133
|
-
}
|
134
|
-
else if (isTemplateLiteral(expression)) {
|
135
|
-
// Note that some template literals get handled in the previous branch too.
|
136
|
-
// Remove the beginning and trailing backtick characters.
|
137
|
-
fixes.push(fixer.removeRange([
|
138
|
-
expression.range[0],
|
139
|
-
expression.range[0] + 1,
|
140
|
-
]), fixer.removeRange([
|
141
|
-
expression.range[1] - 1,
|
142
|
-
expression.range[1],
|
143
|
-
]));
|
144
|
-
}
|
145
|
-
return fixes;
|
146
216
|
},
|
147
217
|
});
|
148
|
-
}
|
218
|
+
}
|
149
219
|
},
|
150
220
|
};
|
151
221
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"no-unnecessary-template-expression.js","sourceRoot":"","sources":["../../src/rules/no-unnecessary-template-expression.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,oDAA0D;AAC1D,+CAAiC;AAEjC,
|
1
|
+
{"version":3,"file":"no-unnecessary-template-expression.js","sourceRoot":"","sources":["../../src/rules/no-unnecessary-template-expression.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@typescript-eslint/eslint-plugin",
|
3
|
-
"version": "8.0.0-alpha.
|
3
|
+
"version": "8.0.0-alpha.48",
|
4
4
|
"description": "TypeScript plugin for ESLint",
|
5
5
|
"files": [
|
6
6
|
"dist",
|
@@ -60,10 +60,10 @@
|
|
60
60
|
},
|
61
61
|
"dependencies": {
|
62
62
|
"@eslint-community/regexpp": "^4.10.0",
|
63
|
-
"@typescript-eslint/scope-manager": "8.0.0-alpha.
|
64
|
-
"@typescript-eslint/type-utils": "8.0.0-alpha.
|
65
|
-
"@typescript-eslint/utils": "8.0.0-alpha.
|
66
|
-
"@typescript-eslint/visitor-keys": "8.0.0-alpha.
|
63
|
+
"@typescript-eslint/scope-manager": "8.0.0-alpha.48",
|
64
|
+
"@typescript-eslint/type-utils": "8.0.0-alpha.48",
|
65
|
+
"@typescript-eslint/utils": "8.0.0-alpha.48",
|
66
|
+
"@typescript-eslint/visitor-keys": "8.0.0-alpha.48",
|
67
67
|
"graphemer": "^1.4.0",
|
68
68
|
"ignore": "^5.3.1",
|
69
69
|
"natural-compare": "^1.4.0",
|
@@ -74,8 +74,8 @@
|
|
74
74
|
"@types/marked": "^5.0.2",
|
75
75
|
"@types/mdast": "^4.0.3",
|
76
76
|
"@types/natural-compare": "*",
|
77
|
-
"@typescript-eslint/rule-schema-to-typescript-types": "8.0.0-alpha.
|
78
|
-
"@typescript-eslint/rule-tester": "8.0.0-alpha.
|
77
|
+
"@typescript-eslint/rule-schema-to-typescript-types": "8.0.0-alpha.48",
|
78
|
+
"@typescript-eslint/rule-tester": "8.0.0-alpha.48",
|
79
79
|
"ajv": "^6.12.6",
|
80
80
|
"cross-env": "^7.0.3",
|
81
81
|
"cross-fetch": "*",
|