@typescript-eslint/eslint-plugin 8.21.1-alpha.9 → 8.22.0
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.
- package/dist/rules/no-unnecessary-template-expression.js +257 -173
- package/dist/rules/no-unnecessary-template-expression.js.map +1 -1
- package/docs/rules/consistent-type-imports.mdx +2 -2
- package/docs/rules/no-namespace.mdx +12 -4
- package/docs/rules/no-require-imports.mdx +20 -6
- package/docs/rules/no-unnecessary-template-expression.mdx +19 -0
- package/package.json +7 -7
@@ -62,200 +62,284 @@ exports.default = (0, util_1.createRule)({
|
|
62
62
|
defaultOptions: [],
|
63
63
|
create(context) {
|
64
64
|
const services = (0, util_1.getParserServices)(context);
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
return (0, util_1.isTypeFlagSet)(t, ts.TypeFlags.StringLike);
|
73
|
-
};
|
74
|
-
if (constraintType.isUnion()) {
|
75
|
-
return constraintType.types.every(isString);
|
65
|
+
const checker = services.program.getTypeChecker();
|
66
|
+
function isStringLike(type) {
|
67
|
+
return (0, util_1.isTypeFlagSet)(type, ts.TypeFlags.StringLike);
|
68
|
+
}
|
69
|
+
function isUnderlyingTypeString(type) {
|
70
|
+
if (type.isUnion()) {
|
71
|
+
return type.types.every(isStringLike);
|
76
72
|
}
|
77
|
-
if (
|
78
|
-
return
|
73
|
+
if (type.isIntersection()) {
|
74
|
+
return type.types.some(isStringLike);
|
79
75
|
}
|
80
|
-
return
|
76
|
+
return isStringLike(type);
|
81
77
|
}
|
82
|
-
|
83
|
-
|
78
|
+
/**
|
79
|
+
* Checks for whole enum types, i.e. `MyEnum`, and not their values, i.e. `MyEnum.A`
|
80
|
+
*/
|
81
|
+
function isEnumType(type) {
|
82
|
+
const symbol = type.getSymbol();
|
83
|
+
return !!(symbol?.valueDeclaration &&
|
84
|
+
ts.isEnumDeclaration(symbol.valueDeclaration));
|
84
85
|
}
|
85
|
-
|
86
|
-
|
86
|
+
const isLiteral = (0, util_1.isNodeOfType)(utils_1.TSESTree.AST_NODE_TYPES.Literal);
|
87
|
+
function isTemplateLiteral(node) {
|
88
|
+
return node.type === utils_1.AST_NODE_TYPES.TemplateLiteral;
|
87
89
|
}
|
88
|
-
function isInfinityIdentifier(
|
89
|
-
return (
|
90
|
-
expression.name === 'Infinity');
|
90
|
+
function isInfinityIdentifier(node) {
|
91
|
+
return (node.type === utils_1.AST_NODE_TYPES.Identifier && node.name === 'Infinity');
|
91
92
|
}
|
92
|
-
function isNaNIdentifier(
|
93
|
-
return
|
94
|
-
|
93
|
+
function isNaNIdentifier(node) {
|
94
|
+
return node.type === utils_1.AST_NODE_TYPES.Identifier && node.name === 'NaN';
|
95
|
+
}
|
96
|
+
function isFixableIdentifier(node) {
|
97
|
+
return ((0, util_1.isUndefinedIdentifier)(node) ||
|
98
|
+
isInfinityIdentifier(node) ||
|
99
|
+
isNaNIdentifier(node));
|
95
100
|
}
|
96
101
|
function hasCommentsBetweenQuasi(startQuasi, endQuasi) {
|
97
102
|
const startToken = (0, util_1.nullThrows)(context.sourceCode.getTokenByRangeStart(startQuasi.range[0]), util_1.NullThrowsReasons.MissingToken('`${', 'opening template literal'));
|
98
103
|
const endToken = (0, util_1.nullThrows)(context.sourceCode.getTokenByRangeStart(endQuasi.range[0]), util_1.NullThrowsReasons.MissingToken('}', 'closing template literal'));
|
99
104
|
return context.sourceCode.commentsExistBetween(startToken, endToken);
|
100
105
|
}
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
106
|
+
function isTrivialInterpolation(node) {
|
107
|
+
return (node.quasis.length === 2 &&
|
108
|
+
node.quasis[0].value.raw === '' &&
|
109
|
+
node.quasis[1].value.raw === '');
|
110
|
+
}
|
111
|
+
function getInterpolations(node) {
|
112
|
+
if (node.type === utils_1.AST_NODE_TYPES.TemplateLiteral) {
|
113
|
+
return node.expressions;
|
114
|
+
}
|
115
|
+
return node.types;
|
116
|
+
}
|
117
|
+
function getInterpolationInfos(node) {
|
118
|
+
return getInterpolations(node).map((interpolation, index) => ({
|
119
|
+
interpolation,
|
120
|
+
nextQuasi: node.quasis[index + 1],
|
121
|
+
prevQuasi: node.quasis[index],
|
122
|
+
}));
|
123
|
+
}
|
124
|
+
function getLiteral(node) {
|
125
|
+
const maybeLiteral = node.type === utils_1.AST_NODE_TYPES.TSLiteralType ? node.literal : node;
|
126
|
+
return isLiteral(maybeLiteral) ? maybeLiteral : null;
|
127
|
+
}
|
128
|
+
function getTemplateLiteral(node) {
|
129
|
+
const maybeTemplateLiteral = node.type === utils_1.AST_NODE_TYPES.TSLiteralType ? node.literal : node;
|
130
|
+
return isTemplateLiteral(maybeTemplateLiteral)
|
131
|
+
? maybeTemplateLiteral
|
132
|
+
: null;
|
133
|
+
}
|
134
|
+
function reportSingleInterpolation(node) {
|
135
|
+
const interpolations = getInterpolations(node);
|
136
|
+
context.report({
|
137
|
+
loc: (0, rangeToLoc_1.rangeToLoc)(context.sourceCode, [
|
138
|
+
interpolations[0].range[0] - 2,
|
139
|
+
interpolations[0].range[1] + 1,
|
140
|
+
]),
|
141
|
+
messageId: 'noUnnecessaryTemplateExpression',
|
142
|
+
fix(fixer) {
|
143
|
+
const wrappingCode = (0, util_1.getMovedNodeCode)({
|
144
|
+
destinationNode: node,
|
145
|
+
nodeToMove: interpolations[0],
|
146
|
+
sourceCode: context.sourceCode,
|
129
147
|
});
|
130
|
-
return;
|
148
|
+
return fixer.replaceText(node, wrappingCode);
|
149
|
+
},
|
150
|
+
});
|
151
|
+
}
|
152
|
+
function isUnncessaryValueInterpolation({ interpolation, nextQuasi, prevQuasi, }) {
|
153
|
+
if (hasCommentsBetweenQuasi(prevQuasi, nextQuasi)) {
|
154
|
+
return false;
|
155
|
+
}
|
156
|
+
if (isFixableIdentifier(interpolation)) {
|
157
|
+
return true;
|
158
|
+
}
|
159
|
+
if (isLiteral(interpolation)) {
|
160
|
+
// allow trailing whitespace literal
|
161
|
+
if (startsWithNewLine(nextQuasi.value.raw)) {
|
162
|
+
return !(typeof interpolation.value === 'string' &&
|
163
|
+
isWhitespace(interpolation.value));
|
131
164
|
}
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
return
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
//
|
187
|
-
|
188
|
-
|
189
|
-
//
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
// \${ -> \${
|
194
|
-
// \\${ -> \\\${
|
195
|
-
.replaceAll(new RegExp(`${String(evenNumOfBackslashesRegExp.source)}(\`|\\\${)`, 'g'), '\\$1');
|
196
|
-
// `...${'...$'}{...`
|
197
|
-
// ^^^^
|
198
|
-
if (nextCharacterIsOpeningCurlyBrace &&
|
199
|
-
endsWithUnescapedDollarSign(escapedValue)) {
|
200
|
-
escapedValue = escapedValue.replaceAll(/\$$/g, '\\$');
|
201
|
-
}
|
202
|
-
if (escapedValue.length !== 0) {
|
203
|
-
nextCharacterIsOpeningCurlyBrace = escapedValue.startsWith('{');
|
204
|
-
}
|
205
|
-
fixers.push(fixer => [fixer.replaceText(expression, escapedValue)]);
|
206
|
-
}
|
207
|
-
else if (isTemplateLiteral(expression)) {
|
208
|
-
// Since we iterate from the last expression to the first,
|
209
|
-
// a subsequent expression can tell the current expression
|
210
|
-
// that it starts with {.
|
165
|
+
return true;
|
166
|
+
}
|
167
|
+
if (isTemplateLiteral(interpolation)) {
|
168
|
+
// allow trailing whitespace literal
|
169
|
+
if (startsWithNewLine(nextQuasi.value.raw)) {
|
170
|
+
return !(interpolation.quasis.length === 1 &&
|
171
|
+
isWhitespace(interpolation.quasis[0].value.raw));
|
172
|
+
}
|
173
|
+
return true;
|
174
|
+
}
|
175
|
+
return false;
|
176
|
+
}
|
177
|
+
function isUnncessaryTypeInterpolation({ interpolation, nextQuasi, prevQuasi, }) {
|
178
|
+
if (hasCommentsBetweenQuasi(prevQuasi, nextQuasi)) {
|
179
|
+
return false;
|
180
|
+
}
|
181
|
+
const literal = getLiteral(interpolation);
|
182
|
+
if (literal) {
|
183
|
+
// allow trailing whitespace literal
|
184
|
+
if (startsWithNewLine(nextQuasi.value.raw)) {
|
185
|
+
return !(typeof literal.value === 'string' && isWhitespace(literal.value));
|
186
|
+
}
|
187
|
+
return true;
|
188
|
+
}
|
189
|
+
if (interpolation.type === utils_1.AST_NODE_TYPES.TSNullKeyword ||
|
190
|
+
interpolation.type === utils_1.AST_NODE_TYPES.TSUndefinedKeyword) {
|
191
|
+
return true;
|
192
|
+
}
|
193
|
+
const templateLiteral = getTemplateLiteral(interpolation);
|
194
|
+
if (templateLiteral) {
|
195
|
+
// allow trailing whitespace literal
|
196
|
+
if (startsWithNewLine(nextQuasi.value.raw)) {
|
197
|
+
return !(templateLiteral.quasis.length === 1 &&
|
198
|
+
isWhitespace(templateLiteral.quasis[0].value.raw));
|
199
|
+
}
|
200
|
+
return true;
|
201
|
+
}
|
202
|
+
return false;
|
203
|
+
}
|
204
|
+
function getReportDescriptors(infos) {
|
205
|
+
let nextCharacterIsOpeningCurlyBrace = false;
|
206
|
+
const reportDescriptors = [];
|
207
|
+
const reversedInfos = [...infos].reverse();
|
208
|
+
for (const { interpolation, nextQuasi, prevQuasi } of reversedInfos) {
|
209
|
+
const fixers = [];
|
210
|
+
if (nextQuasi.value.raw !== '') {
|
211
|
+
nextCharacterIsOpeningCurlyBrace =
|
212
|
+
nextQuasi.value.raw.startsWith('{');
|
213
|
+
}
|
214
|
+
const literal = getLiteral(interpolation);
|
215
|
+
const templateLiteral = getTemplateLiteral(interpolation);
|
216
|
+
if (literal) {
|
217
|
+
let escapedValue = (typeof literal.value === 'string'
|
218
|
+
? // The value is already a string, so we're removing quotes:
|
219
|
+
// "'va`lue'" -> "va`lue"
|
220
|
+
literal.raw.slice(1, -1)
|
221
|
+
: // The value may be one of number | bigint | boolean | RegExp | null.
|
222
|
+
// In regular expressions, we escape every backslash
|
223
|
+
String(literal.value).replaceAll('\\', '\\\\'))
|
224
|
+
// The string or RegExp may contain ` or ${.
|
225
|
+
// We want both of these to be escaped in the final template expression.
|
211
226
|
//
|
212
|
-
//
|
213
|
-
//
|
214
|
-
//
|
215
|
-
//
|
216
|
-
//
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
}
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
// Remove the beginning and trailing backtick characters.
|
229
|
-
fixers.push(fixer => [
|
230
|
-
fixer.removeRange([expression.range[0], expression.range[0] + 1]),
|
231
|
-
fixer.removeRange([expression.range[1] - 1, expression.range[1]]),
|
232
|
-
]);
|
227
|
+
// A pair of backslashes means "escaped backslash", so backslashes
|
228
|
+
// from this pair won't escape ` or ${. Therefore, to escape these
|
229
|
+
// sequences in the resulting template expression, we need to escape
|
230
|
+
// all sequences that are preceded by an even number of backslashes.
|
231
|
+
//
|
232
|
+
// This RegExp does the following transformations:
|
233
|
+
// \` -> \`
|
234
|
+
// \\` -> \\\`
|
235
|
+
// \${ -> \${
|
236
|
+
// \\${ -> \\\${
|
237
|
+
.replaceAll(new RegExp(`${String(evenNumOfBackslashesRegExp.source)}(\`|\\\${)`, 'g'), '\\$1');
|
238
|
+
// `...${'...$'}{...`
|
239
|
+
// ^^^^
|
240
|
+
if (nextCharacterIsOpeningCurlyBrace &&
|
241
|
+
endsWithUnescapedDollarSign(escapedValue)) {
|
242
|
+
escapedValue = escapedValue.replaceAll(/\$$/g, '\\$');
|
233
243
|
}
|
234
|
-
|
235
|
-
nextCharacterIsOpeningCurlyBrace =
|
244
|
+
if (escapedValue.length !== 0) {
|
245
|
+
nextCharacterIsOpeningCurlyBrace = escapedValue.startsWith('{');
|
236
246
|
}
|
237
|
-
|
238
|
-
|
247
|
+
fixers.push(fixer => [fixer.replaceText(literal, escapedValue)]);
|
248
|
+
}
|
249
|
+
else if (templateLiteral) {
|
250
|
+
// Since we iterate from the last expression to the first,
|
251
|
+
// a subsequent expression can tell the current expression
|
252
|
+
// that it starts with {.
|
253
|
+
//
|
254
|
+
// `... ${`... $`}${'{...'} ...`
|
255
|
+
// ^ ^ subsequent expression starts with {
|
256
|
+
// current expression ends with a dollar sign,
|
257
|
+
// so '$' + '{' === '${' (bad news for us).
|
258
|
+
// Let's escape the dollar sign at the end.
|
239
259
|
if (nextCharacterIsOpeningCurlyBrace &&
|
240
|
-
endsWithUnescapedDollarSign(
|
260
|
+
endsWithUnescapedDollarSign(templateLiteral.quasis[templateLiteral.quasis.length - 1].value
|
261
|
+
.raw)) {
|
241
262
|
fixers.push(fixer => [
|
242
|
-
fixer.replaceTextRange([
|
263
|
+
fixer.replaceTextRange([templateLiteral.range[1] - 2, templateLiteral.range[1] - 2], '\\'),
|
243
264
|
]);
|
244
265
|
}
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
266
|
+
if (templateLiteral.quasis.length === 1 &&
|
267
|
+
templateLiteral.quasis[0].value.raw.length !== 0) {
|
268
|
+
nextCharacterIsOpeningCurlyBrace =
|
269
|
+
templateLiteral.quasis[0].value.raw.startsWith('{');
|
270
|
+
}
|
271
|
+
// Remove the beginning and trailing backtick characters.
|
272
|
+
fixers.push(fixer => [
|
273
|
+
fixer.removeRange([
|
274
|
+
templateLiteral.range[0],
|
275
|
+
templateLiteral.range[0] + 1,
|
276
|
+
]),
|
277
|
+
fixer.removeRange([
|
278
|
+
templateLiteral.range[1] - 1,
|
279
|
+
templateLiteral.range[1],
|
280
|
+
]),
|
281
|
+
]);
|
282
|
+
}
|
283
|
+
else {
|
284
|
+
nextCharacterIsOpeningCurlyBrace = false;
|
285
|
+
}
|
286
|
+
// `... $${'{...'} ...`
|
287
|
+
// ^^^^^
|
288
|
+
if (nextCharacterIsOpeningCurlyBrace &&
|
289
|
+
endsWithUnescapedDollarSign(prevQuasi.value.raw)) {
|
290
|
+
fixers.push(fixer => [
|
291
|
+
fixer.replaceTextRange([prevQuasi.range[1] - 3, prevQuasi.range[1] - 2], '\\$'),
|
292
|
+
]);
|
293
|
+
}
|
294
|
+
const warnLocStart = prevQuasi.range[1] - 2;
|
295
|
+
const warnLocEnd = nextQuasi.range[0] + 1;
|
296
|
+
reportDescriptors.push({
|
297
|
+
loc: (0, rangeToLoc_1.rangeToLoc)(context.sourceCode, [warnLocStart, warnLocEnd]),
|
298
|
+
messageId: 'noUnnecessaryTemplateExpression',
|
299
|
+
fix(fixer) {
|
300
|
+
return [
|
301
|
+
// Remove the quasis' parts that are related to the current expression.
|
302
|
+
fixer.removeRange([warnLocStart, interpolation.range[0]]),
|
303
|
+
fixer.removeRange([interpolation.range[1], warnLocEnd]),
|
304
|
+
...fixers.flatMap(cb => cb(fixer)),
|
305
|
+
];
|
306
|
+
},
|
307
|
+
});
|
308
|
+
}
|
309
|
+
return reportDescriptors;
|
310
|
+
}
|
311
|
+
return {
|
312
|
+
TemplateLiteral(node) {
|
313
|
+
if (node.parent.type === utils_1.AST_NODE_TYPES.TaggedTemplateExpression) {
|
314
|
+
return;
|
315
|
+
}
|
316
|
+
if (isTrivialInterpolation(node) &&
|
317
|
+
!hasCommentsBetweenQuasi(node.quasis[0], node.quasis[1])) {
|
318
|
+
const { constraintType } = (0, util_1.getConstraintInfo)(checker, services.getTypeAtLocation(node.expressions[0]));
|
319
|
+
if (constraintType && isUnderlyingTypeString(constraintType)) {
|
320
|
+
reportSingleInterpolation(node);
|
321
|
+
return;
|
322
|
+
}
|
323
|
+
}
|
324
|
+
const infos = getInterpolationInfos(node).filter(isUnncessaryValueInterpolation);
|
325
|
+
for (const reportDescriptor of getReportDescriptors(infos)) {
|
326
|
+
context.report(reportDescriptor);
|
327
|
+
}
|
328
|
+
},
|
329
|
+
TSTemplateLiteralType(node) {
|
330
|
+
if (isTrivialInterpolation(node) &&
|
331
|
+
!hasCommentsBetweenQuasi(node.quasis[0], node.quasis[1])) {
|
332
|
+
const { constraintType } = (0, util_1.getConstraintInfo)(checker, services.getTypeAtLocation(node.types[0]));
|
333
|
+
if (constraintType &&
|
334
|
+
isUnderlyingTypeString(constraintType) &&
|
335
|
+
!isEnumType(constraintType)) {
|
336
|
+
reportSingleInterpolation(node);
|
337
|
+
return;
|
338
|
+
}
|
339
|
+
}
|
340
|
+
const infos = getInterpolationInfos(node).filter(isUnncessaryTypeInterpolation);
|
341
|
+
for (const reportDescriptor of getReportDescriptors(infos)) {
|
342
|
+
context.report(reportDescriptor);
|
259
343
|
}
|
260
344
|
},
|
261
345
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"no-unnecessary-template-expression.js","sourceRoot":"","sources":["../../src/rules/no-unnecessary-template-expression.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"no-unnecessary-template-expression.js","sourceRoot":"","sources":["../../src/rules/no-unnecessary-template-expression.ts"],"names":[],"mappings":"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"}
|
@@ -107,8 +107,8 @@ The rule will **_not_** report any errors in files _that contain decorators_ whe
|
|
107
107
|
|
108
108
|
> See [Blog > Changes to consistent-type-imports when used with legacy decorators and decorator metadata](/blog/changes-to-consistent-type-imports-with-decorators) for more details.
|
109
109
|
|
110
|
-
If you are using [type-aware linting](
|
111
|
-
Otherwise you can explicitly tell our tooling to analyze your code as if the compiler option was turned on by setting both [`parserOptions.emitDecoratorMetadata = true`](
|
110
|
+
If you are using [type-aware linting](/getting-started/typed-linting) then we will automatically infer your setup from your tsconfig and you should not need to configure anything.
|
111
|
+
Otherwise you can explicitly tell our tooling to analyze your code as if the compiler option was turned on by setting both [`parserOptions.emitDecoratorMetadata = true`](/packages/parser/#emitdecoratormetadata) and [`parserOptions.experimentalDecorators = true`](/packages/parser/#experimentaldecorators).
|
112
112
|
|
113
113
|
## Comparison with `importsNotUsedAsValues` / `verbatimModuleSyntax`
|
114
114
|
|
@@ -135,8 +135,15 @@ declare module 'foo' {}
|
|
135
135
|
|
136
136
|
## When Not To Use It
|
137
137
|
|
138
|
-
If your project
|
138
|
+
If your project uses TypeScript's CommonJS export syntax (`export = ...`), you may need to use namespaces in order to export types from your module.
|
139
|
+
You can learn more about this at:
|
140
|
+
|
141
|
+
- [TypeScript#52203](https://github.com/microsoft/TypeScript/pull/52203), the pull request introducing [`verbatimModuleSyntax`](https://www.typescriptlang.org/tsconfig/#verbatimModuleSyntax)
|
142
|
+
- [TypeScript#60852](https://github.com/microsoft/TypeScript/issues/60852), an issue requesting syntax to export types from a CommonJS module.
|
143
|
+
|
144
|
+
If your project uses this syntax, either because it was architected before modern modules and namespaces, or because a module option such as `verbatimModuleSyntax` requires it, it may be difficult to migrate off of namespaces.
|
139
145
|
In that case you may not be able to use this rule for parts of your project.
|
146
|
+
|
140
147
|
You might consider using [ESLint disable comments](https://eslint.org/docs/latest/use/configure/rules#using-configuration-comments-1) for those specific situations instead of completely disabling this rule.
|
141
148
|
|
142
149
|
## Further Reading
|
@@ -144,6 +151,7 @@ You might consider using [ESLint disable comments](https://eslint.org/docs/lates
|
|
144
151
|
{/* cspell:disable-next-line */}
|
145
152
|
|
146
153
|
- [FAQ: I get errors from the `@typescript-eslint/no-namespace` and/or `no-var` rules about declaring global variables](/troubleshooting/faqs/eslint#i-get-errors-from-the-typescript-eslintno-namespace-andor-no-var-rules-about-declaring-global-variables)
|
147
|
-
- [
|
148
|
-
- [
|
149
|
-
- [
|
154
|
+
- [FAQ: How should I handle reports that conflict with verbatimModuleSyntax?](/troubleshooting/faqs/typescript#how-should-i-handle-reports-that-conflict-with-verbatimmodulesyntax)
|
155
|
+
- [TypeScript handbook entry on Modules](https://www.typescriptlang.org/docs/handbook/modules.html)
|
156
|
+
- [TypeScript handbook entry on Namespaces](https://www.typescriptlang.org/docs/handbook/namespaces.html)
|
157
|
+
- [TypeScript handbook entry on Namespaces and Modules](https://www.typescriptlang.org/docs/handbook/namespaces-and-modules.html)
|
@@ -9,7 +9,9 @@ import TabItem from '@theme/TabItem';
|
|
9
9
|
>
|
10
10
|
> See **https://typescript-eslint.io/rules/no-require-imports** for documentation.
|
11
11
|
|
12
|
-
|
12
|
+
Depending on your TSConfig settings and whether you're authoring ES Modules or CommonJS, TS may allow both `import` and `require()` to be used, even within a single file.
|
13
|
+
|
14
|
+
This rule enforces that you use the newer ES Module `import` syntax over CommonJS `require()`.
|
13
15
|
|
14
16
|
## Examples
|
15
17
|
|
@@ -42,7 +44,7 @@ import * as lib3 from 'lib3';
|
|
42
44
|
|
43
45
|
These strings will be compiled into regular expressions with the `u` flag and be used to test against the imported path. A common use case is to allow importing `package.json`. This is because `package.json` commonly lives outside of the TS root directory, so statically importing it would lead to root directory conflicts, especially with `resolveJsonModule` enabled. You can also use it to allow importing any JSON if your environment doesn't support JSON modules, or use it for other cases where `import` statements cannot work.
|
44
46
|
|
45
|
-
With `{allow: ['/package\\.json$']}`:
|
47
|
+
With `{ allow: ['/package\\.json$'] }`:
|
46
48
|
|
47
49
|
<Tabs>
|
48
50
|
<TabItem value="❌ Incorrect">
|
@@ -66,9 +68,9 @@ console.log(require('../package.json').version);
|
|
66
68
|
{/* insert option description */}
|
67
69
|
|
68
70
|
When set to `true`, `import ... = require(...)` declarations won't be reported.
|
69
|
-
This is
|
71
|
+
This is beneficial if you use certain module options that require strict CommonJS interop semantics, such as [verbatimModuleSyntax](https://www.typescriptlang.org/tsconfig/#verbatimModuleSyntax).
|
70
72
|
|
71
|
-
With `{allowAsImport: true}`:
|
73
|
+
With `{ allowAsImport: true }`:
|
72
74
|
|
73
75
|
<Tabs>
|
74
76
|
<TabItem value="❌ Incorrect">
|
@@ -90,10 +92,22 @@ import foo from 'foo';
|
|
90
92
|
</TabItem>
|
91
93
|
</Tabs>
|
92
94
|
|
95
|
+
## Usage with CommonJS
|
96
|
+
|
97
|
+
While this rule is primarily intended to promote ES Module syntax, it still makes sense to enable this rule when authoring CommonJS modules.
|
98
|
+
|
99
|
+
If you prefer to use TypeScript's built-in `import ... from ...` ES Module syntax, which is transformed to `require()` calls during transpilation when outputting CommonJS, you can use the rule's default behavior.
|
100
|
+
|
101
|
+
If, instead, you prefer to use `require()` syntax, we recommend you use this rule with [`allowAsImport`](#allowAsImport) enabled.
|
102
|
+
That way, you still enforce usage of `import ... = require(...)` rather than bare `require()` calls, which are not statically analyzed by TypeScript.
|
103
|
+
We don't directly a way to _prohibit_ ES Module syntax from being used; consider instead using TypeScript's [`verbatimModuleSyntax`](https://www.typescriptlang.org/tsconfig/#verbatimModuleSyntax) option if you find yourself in a situation where you would want this.
|
104
|
+
|
93
105
|
## When Not To Use It
|
94
106
|
|
95
|
-
If your project frequently uses
|
96
|
-
|
107
|
+
If you are authoring CommonJS modules _and_ your project frequently uses dynamic `require`s, then this rule might not be applicable to you.
|
108
|
+
Otherwise the `allowAsImport` option probably suits your needs.
|
109
|
+
|
110
|
+
If only a subset of your project uses dynamic `require`s then you might consider using [ESLint disable comments](https://eslint.org/docs/latest/use/configure/rules#using-configuration-comments-1) for those specific situations instead of completely disabling this rule.
|
97
111
|
|
98
112
|
## Related To
|
99
113
|
|
@@ -28,6 +28,8 @@ The new name is a drop-in replacement with identical functionality.
|
|
28
28
|
|
29
29
|
const ab1 = `${'a'}${'b'}`;
|
30
30
|
const ab2 = `a${'b'}`;
|
31
|
+
type AB1 = `${'A'}${'B'}`;
|
32
|
+
type AB2 = `A${'B'}`;
|
31
33
|
|
32
34
|
const stringWithNumber = `${'1 + 1 = '}${2}`;
|
33
35
|
|
@@ -38,9 +40,13 @@ const stringWithBoolean = `${'true is '}${true}`;
|
|
38
40
|
|
39
41
|
const text = 'a';
|
40
42
|
const wrappedText = `${text}`;
|
43
|
+
type Text = 'A';
|
44
|
+
type WrappedText = `${Text}`;
|
41
45
|
|
42
46
|
declare const intersectionWithString: string & { _brand: 'test-brand' };
|
43
47
|
const wrappedIntersection = `${intersectionWithString}`;
|
48
|
+
type IntersectionWithString = string & { _brand: 'test-brand' };
|
49
|
+
type WrappedIntersection = `${IntersectionWithString}`;
|
44
50
|
```
|
45
51
|
|
46
52
|
</TabItem>
|
@@ -51,6 +57,15 @@ const wrappedIntersection = `${intersectionWithString}`;
|
|
51
57
|
|
52
58
|
const ab1 = `ab`;
|
53
59
|
const ab2 = `ab`;
|
60
|
+
type AB = `AB`;
|
61
|
+
|
62
|
+
// Transforming enum members into string unions using template literals is allowed.
|
63
|
+
enum ABC {
|
64
|
+
A = 'A',
|
65
|
+
B = 'B',
|
66
|
+
C = 'C',
|
67
|
+
}
|
68
|
+
type ABCUnion = `${ABC}`;
|
54
69
|
|
55
70
|
const stringWithNumber = `1 + 1 = 2`;
|
56
71
|
|
@@ -61,9 +76,13 @@ const stringWithBoolean = `true is true`;
|
|
61
76
|
|
62
77
|
const text = 'a';
|
63
78
|
const wrappedText = text;
|
79
|
+
type Text = 'A';
|
80
|
+
type WrappedText = Text;
|
64
81
|
|
65
82
|
declare const intersectionWithString: string & { _brand: 'test-brand' };
|
66
83
|
const wrappedIntersection = intersectionWithString;
|
84
|
+
type IntersectionWithString = string & { _brand: 'test-brand' };
|
85
|
+
type WrappedIntersection = IntersectionWithString;
|
67
86
|
```
|
68
87
|
|
69
88
|
</TabItem>
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@typescript-eslint/eslint-plugin",
|
3
|
-
"version": "8.
|
3
|
+
"version": "8.22.0",
|
4
4
|
"description": "TypeScript plugin for ESLint",
|
5
5
|
"files": [
|
6
6
|
"dist",
|
@@ -61,10 +61,10 @@
|
|
61
61
|
},
|
62
62
|
"dependencies": {
|
63
63
|
"@eslint-community/regexpp": "^4.10.0",
|
64
|
-
"@typescript-eslint/scope-manager": "8.
|
65
|
-
"@typescript-eslint/type-utils": "8.
|
66
|
-
"@typescript-eslint/utils": "8.
|
67
|
-
"@typescript-eslint/visitor-keys": "8.
|
64
|
+
"@typescript-eslint/scope-manager": "8.22.0",
|
65
|
+
"@typescript-eslint/type-utils": "8.22.0",
|
66
|
+
"@typescript-eslint/utils": "8.22.0",
|
67
|
+
"@typescript-eslint/visitor-keys": "8.22.0",
|
68
68
|
"graphemer": "^1.4.0",
|
69
69
|
"ignore": "^5.3.1",
|
70
70
|
"natural-compare": "^1.4.0",
|
@@ -75,8 +75,8 @@
|
|
75
75
|
"@types/marked": "^5.0.2",
|
76
76
|
"@types/mdast": "^4.0.3",
|
77
77
|
"@types/natural-compare": "*",
|
78
|
-
"@typescript-eslint/rule-schema-to-typescript-types": "8.
|
79
|
-
"@typescript-eslint/rule-tester": "8.
|
78
|
+
"@typescript-eslint/rule-schema-to-typescript-types": "8.22.0",
|
79
|
+
"@typescript-eslint/rule-tester": "8.22.0",
|
80
80
|
"ajv": "^6.12.6",
|
81
81
|
"cross-env": "^7.0.3",
|
82
82
|
"cross-fetch": "*",
|