@typescript-eslint/eslint-plugin 7.3.2-alpha.7 → 7.3.2-alpha.9

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.
@@ -11,11 +11,8 @@ exports.default = (0, util_1.createRule)({
11
11
  },
12
12
  messages: {
13
13
  typeOverValue: 'All imports in the declaration are only used as types. Use `import type`.',
14
- someImportsAreOnlyTypes: 'Imports {{typeImports}} are only used as types.',
15
- aImportIsOnlyTypes: 'Import {{typeImports}} is only used as types.',
16
- someImportsInDecoMeta: 'Type imports {{typeImports}} are used by decorator metadata.',
17
- aImportInDecoMeta: 'Type import {{typeImports}} is used by decorator metadata.',
18
- valueOverType: 'Use an `import` instead of an `import type`.',
14
+ someImportsAreOnlyTypes: 'Imports {{typeImports}} are only used as type.',
15
+ avoidImportType: 'Use an `import` instead of an `import type`.',
19
16
  noImportTypeAnnotations: '`import()` type annotations are forbidden.',
20
17
  },
21
18
  schema: [
@@ -41,252 +38,273 @@ exports.default = (0, util_1.createRule)({
41
38
  },
42
39
  defaultOptions: [
43
40
  {
41
+ prefer: 'type-imports',
44
42
  disallowTypeAnnotations: true,
45
43
  fixStyle: 'separate-type-imports',
46
- prefer: 'type-imports',
47
44
  },
48
45
  ],
49
46
  create(context, [option]) {
50
47
  const prefer = option.prefer ?? 'type-imports';
51
48
  const disallowTypeAnnotations = option.disallowTypeAnnotations !== false;
49
+ const selectors = {};
50
+ if (disallowTypeAnnotations) {
51
+ selectors.TSImportType = (node) => {
52
+ context.report({
53
+ node,
54
+ messageId: 'noImportTypeAnnotations',
55
+ });
56
+ };
57
+ }
58
+ if (prefer === 'no-type-imports') {
59
+ return {
60
+ ...selectors,
61
+ 'ImportDeclaration[importKind = "type"]'(node) {
62
+ context.report({
63
+ node,
64
+ messageId: 'avoidImportType',
65
+ fix(fixer) {
66
+ return fixRemoveTypeSpecifierFromImportDeclaration(fixer, node);
67
+ },
68
+ });
69
+ },
70
+ 'ImportSpecifier[importKind = "type"]'(node) {
71
+ context.report({
72
+ node,
73
+ messageId: 'avoidImportType',
74
+ fix(fixer) {
75
+ return fixRemoveTypeSpecifierFromImportSpecifier(fixer, node);
76
+ },
77
+ });
78
+ },
79
+ };
80
+ }
81
+ // prefer type imports
52
82
  const fixStyle = option.fixStyle ?? 'separate-type-imports';
83
+ let hasDecoratorMetadata = false;
53
84
  const sourceImportsMap = {};
85
+ const emitDecoratorMetadata = (0, util_1.getParserServices)(context, true).emitDecoratorMetadata ?? false;
86
+ const experimentalDecorators = (0, util_1.getParserServices)(context, true).experimentalDecorators ?? false;
87
+ if (experimentalDecorators && emitDecoratorMetadata) {
88
+ selectors.Decorator = () => {
89
+ hasDecoratorMetadata = true;
90
+ };
91
+ }
54
92
  return {
55
- ...(prefer === 'type-imports'
56
- ? {
57
- // prefer type imports
58
- ImportDeclaration(node) {
59
- const source = node.source.value;
60
- // sourceImports is the object containing all the specifics for a particular import source, type or value
61
- sourceImportsMap[source] ??= {
62
- source,
63
- reportValueImports: [], // if there is a mismatch where type importKind but value specifiers
64
- typeOnlyNamedImport: null, // if only type imports
65
- valueOnlyNamedImport: null, // if only value imports with named specifiers
66
- valueImport: null, // if only value imports
67
- };
68
- const sourceImports = sourceImportsMap[source];
69
- if (node.importKind === 'type') {
70
- if (!sourceImports.typeOnlyNamedImport &&
71
- node.specifiers.every(specifier => specifier.type === utils_1.AST_NODE_TYPES.ImportSpecifier)) {
72
- // definitely import type { TypeX }
73
- sourceImports.typeOnlyNamedImport = node;
74
- }
75
- }
76
- else {
77
- if (!sourceImports.valueOnlyNamedImport &&
78
- node.specifiers.length &&
79
- node.specifiers.every(specifier => specifier.type === utils_1.AST_NODE_TYPES.ImportSpecifier)) {
80
- sourceImports.valueOnlyNamedImport = node;
81
- sourceImports.valueImport = node;
82
- }
83
- else if (!sourceImports.valueImport &&
84
- node.specifiers.some(specifier => specifier.type === utils_1.AST_NODE_TYPES.ImportDefaultSpecifier)) {
85
- sourceImports.valueImport = node;
86
- }
87
- }
88
- const typeSpecifiers = [];
89
- const inlineTypeSpecifiers = [];
90
- const valueSpecifiers = [];
91
- const unusedSpecifiers = [];
92
- for (const specifier of node.specifiers) {
93
- if (specifier.type === utils_1.AST_NODE_TYPES.ImportSpecifier &&
94
- specifier.importKind === 'type') {
95
- inlineTypeSpecifiers.push(specifier);
96
- continue;
97
- }
98
- const [variable] = context.sourceCode.getDeclaredVariables(specifier);
99
- if (variable.references.length === 0) {
100
- unusedSpecifiers.push(specifier);
93
+ ...selectors,
94
+ ImportDeclaration(node) {
95
+ const source = node.source.value;
96
+ // sourceImports is the object containing all the specifics for a particular import source, type or value
97
+ sourceImportsMap[source] ??= {
98
+ source,
99
+ reportValueImports: [], // if there is a mismatch where type importKind but value specifiers
100
+ typeOnlyNamedImport: null, // if only type imports
101
+ valueOnlyNamedImport: null, // if only value imports with named specifiers
102
+ valueImport: null, // if only value imports
103
+ };
104
+ const sourceImports = sourceImportsMap[source];
105
+ if (node.importKind === 'type') {
106
+ if (!sourceImports.typeOnlyNamedImport &&
107
+ node.specifiers.every(specifier => specifier.type === utils_1.AST_NODE_TYPES.ImportSpecifier)) {
108
+ // definitely import type { TypeX }
109
+ sourceImports.typeOnlyNamedImport = node;
110
+ }
111
+ }
112
+ else {
113
+ if (!sourceImports.valueOnlyNamedImport &&
114
+ node.specifiers.length &&
115
+ node.specifiers.every(specifier => specifier.type === utils_1.AST_NODE_TYPES.ImportSpecifier)) {
116
+ sourceImports.valueOnlyNamedImport = node;
117
+ sourceImports.valueImport = node;
118
+ }
119
+ else if (!sourceImports.valueImport &&
120
+ node.specifiers.some(specifier => specifier.type === utils_1.AST_NODE_TYPES.ImportDefaultSpecifier)) {
121
+ sourceImports.valueImport = node;
122
+ }
123
+ }
124
+ const typeSpecifiers = [];
125
+ const inlineTypeSpecifiers = [];
126
+ const valueSpecifiers = [];
127
+ const unusedSpecifiers = [];
128
+ for (const specifier of node.specifiers) {
129
+ if (specifier.type === utils_1.AST_NODE_TYPES.ImportSpecifier &&
130
+ specifier.importKind === 'type') {
131
+ inlineTypeSpecifiers.push(specifier);
132
+ continue;
133
+ }
134
+ const [variable] = context.sourceCode.getDeclaredVariables(specifier);
135
+ if (variable.references.length === 0) {
136
+ unusedSpecifiers.push(specifier);
137
+ }
138
+ else {
139
+ const onlyHasTypeReferences = variable.references.every(ref => {
140
+ /**
141
+ * keep origin import kind when export
142
+ * export { Type }
143
+ * export default Type;
144
+ * export = Type;
145
+ */
146
+ if (ref.identifier.parent.type === utils_1.AST_NODE_TYPES.ExportSpecifier ||
147
+ ref.identifier.parent.type ===
148
+ utils_1.AST_NODE_TYPES.ExportDefaultDeclaration ||
149
+ ref.identifier.parent.type === utils_1.AST_NODE_TYPES.TSExportAssignment) {
150
+ if (ref.isValueReference && ref.isTypeReference) {
151
+ return node.importKind === 'type';
152
+ }
101
153
  }
102
- else {
103
- const onlyHasTypeReferences = variable.references.every(ref => {
104
- /**
105
- * keep origin import kind when export
106
- * export { Type }
107
- * export default Type;
108
- * export = Type;
109
- */
110
- if (ref.identifier.parent.type ===
111
- utils_1.AST_NODE_TYPES.ExportSpecifier ||
112
- ref.identifier.parent.type ===
113
- utils_1.AST_NODE_TYPES.ExportDefaultDeclaration ||
114
- ref.identifier.parent.type ===
115
- utils_1.AST_NODE_TYPES.TSExportAssignment) {
116
- if (ref.isValueReference && ref.isTypeReference) {
117
- return node.importKind === 'type';
118
- }
119
- }
120
- if (ref.isValueReference) {
121
- let parent = ref.identifier.parent;
122
- let child = ref.identifier;
123
- while (parent) {
124
- switch (parent.type) {
125
- // CASE 1:
126
- // `type T = typeof foo` will create a value reference because "foo" must be a value type
127
- // however this value reference is safe to use with type-only imports
128
- case utils_1.AST_NODE_TYPES.TSTypeQuery:
129
- return true;
130
- case utils_1.AST_NODE_TYPES.TSQualifiedName:
131
- // TSTypeQuery must have a TSESTree.EntityName as its child, so we can filter here and break early
132
- if (parent.left !== child) {
133
- return false;
134
- }
135
- child = parent;
136
- parent = parent.parent;
137
- continue;
138
- // END CASE 1
139
- //////////////
140
- // CASE 2:
141
- // `type T = { [foo]: string }` will create a value reference because "foo" must be a value type
142
- // however this value reference is safe to use with type-only imports.
143
- // Also this is represented as a non-type AST - hence it uses MemberExpression
144
- case utils_1.AST_NODE_TYPES.TSPropertySignature:
145
- return parent.key === child;
146
- case utils_1.AST_NODE_TYPES.MemberExpression:
147
- if (parent.object !== child) {
148
- return false;
149
- }
150
- child = parent;
151
- parent = parent.parent;
152
- continue;
153
- // END CASE 2
154
- default:
155
- return false;
154
+ if (ref.isValueReference) {
155
+ let parent = ref.identifier.parent;
156
+ let child = ref.identifier;
157
+ while (parent) {
158
+ switch (parent.type) {
159
+ // CASE 1:
160
+ // `type T = typeof foo` will create a value reference because "foo" must be a value type
161
+ // however this value reference is safe to use with type-only imports
162
+ case utils_1.AST_NODE_TYPES.TSTypeQuery:
163
+ return true;
164
+ case utils_1.AST_NODE_TYPES.TSQualifiedName:
165
+ // TSTypeQuery must have a TSESTree.EntityName as its child, so we can filter here and break early
166
+ if (parent.left !== child) {
167
+ return false;
168
+ }
169
+ child = parent;
170
+ parent = parent.parent;
171
+ continue;
172
+ // END CASE 1
173
+ //////////////
174
+ // CASE 2:
175
+ // `type T = { [foo]: string }` will create a value reference because "foo" must be a value type
176
+ // however this value reference is safe to use with type-only imports.
177
+ // Also this is represented as a non-type AST - hence it uses MemberExpression
178
+ case utils_1.AST_NODE_TYPES.TSPropertySignature:
179
+ return parent.key === child;
180
+ case utils_1.AST_NODE_TYPES.MemberExpression:
181
+ if (parent.object !== child) {
182
+ return false;
156
183
  }
157
- }
184
+ child = parent;
185
+ parent = parent.parent;
186
+ continue;
187
+ // END CASE 2
188
+ default:
189
+ return false;
158
190
  }
159
- return ref.isTypeReference;
160
- });
161
- if (onlyHasTypeReferences) {
162
- typeSpecifiers.push(specifier);
163
- }
164
- else {
165
- valueSpecifiers.push(specifier);
166
191
  }
167
192
  }
193
+ return ref.isTypeReference;
194
+ });
195
+ if (onlyHasTypeReferences) {
196
+ typeSpecifiers.push(specifier);
168
197
  }
169
- if ((node.importKind === 'value' && typeSpecifiers.length) ||
170
- (node.importKind === 'type' && valueSpecifiers.length)) {
171
- sourceImports.reportValueImports.push({
172
- node,
173
- typeSpecifiers,
174
- valueSpecifiers,
175
- unusedSpecifiers,
176
- inlineTypeSpecifiers,
177
- });
198
+ else {
199
+ valueSpecifiers.push(specifier);
178
200
  }
179
- },
180
- 'Program:exit'() {
181
- for (const sourceImports of Object.values(sourceImportsMap)) {
182
- if (sourceImports.reportValueImports.length === 0) {
183
- // nothing to fix. value specifiers and type specifiers are correctly written
184
- continue;
201
+ }
202
+ }
203
+ if (node.importKind === 'value' && typeSpecifiers.length) {
204
+ sourceImports.reportValueImports.push({
205
+ node,
206
+ typeSpecifiers,
207
+ valueSpecifiers,
208
+ unusedSpecifiers,
209
+ inlineTypeSpecifiers,
210
+ });
211
+ }
212
+ },
213
+ 'Program:exit'() {
214
+ if (hasDecoratorMetadata) {
215
+ // Experimental decorator metadata is bowl of poop that cannot be
216
+ // supported based on pure syntactic analysis.
217
+ //
218
+ // So we can do one of two things:
219
+ // 1) add type-information to the rule in a breaking change and
220
+ // prevent users from using it so that we can fully support this
221
+ // case.
222
+ // 2) make the rule ignore all imports that are used in a file that
223
+ // might have decorator metadata.
224
+ //
225
+ // (1) is has huge impact and prevents the rule from being used by 99%
226
+ // of users Frankly - it's a straight-up bad option. So instead we
227
+ // choose with option (2) and just avoid reporting on any imports in a
228
+ // file with both emitDecoratorMetadata AND decorators
229
+ //
230
+ // For more context see the discussion in this issue and its linked
231
+ // issues:
232
+ // https://github.com/typescript-eslint/typescript-eslint/issues/5468
233
+ //
234
+ //
235
+ // NOTE - in TS 5.0 `experimentalDecorators` became the legacy option,
236
+ // replaced with un-flagged, stable decorators and thus the type-aware
237
+ // emitDecoratorMetadata implementation also became legacy. in TS 5.2
238
+ // support for the new, stable decorator metadata proposal was added -
239
+ // however this proposal does not include type information
240
+ //
241
+ //
242
+ // PHEW. So TL;DR what does all this mean?
243
+ // - if you use experimentalDecorators:true,
244
+ // emitDecoratorMetadata:true, and have a decorator in the file -
245
+ // the rule will do nothing in the file out of an abundance of
246
+ // caution.
247
+ // - else the rule will work as normal.
248
+ return;
249
+ }
250
+ for (const sourceImports of Object.values(sourceImportsMap)) {
251
+ if (sourceImports.reportValueImports.length === 0) {
252
+ // nothing to fix. value specifiers and type specifiers are correctly written
253
+ continue;
254
+ }
255
+ for (const report of sourceImports.reportValueImports) {
256
+ if (report.valueSpecifiers.length === 0 &&
257
+ report.unusedSpecifiers.length === 0 &&
258
+ report.node.importKind !== 'type') {
259
+ /**
260
+ * checks if import has type assertions
261
+ * ```
262
+ * import * as type from 'mod' assert { type: 'json' };
263
+ * ```
264
+ * https://github.com/typescript-eslint/typescript-eslint/issues/7527
265
+ */
266
+ if (report.node.attributes.length === 0) {
267
+ context.report({
268
+ node: report.node,
269
+ messageId: 'typeOverValue',
270
+ *fix(fixer) {
271
+ yield* fixToTypeImportDeclaration(fixer, report, sourceImports);
272
+ },
273
+ });
185
274
  }
186
- for (const report of sourceImports.reportValueImports) {
187
- if (report.valueSpecifiers.length === 0 &&
188
- report.unusedSpecifiers.length === 0 &&
189
- report.node.importKind !== 'type') {
190
- /**
191
- * checks if import has type assertions
192
- * ```
193
- * import * as type from 'mod' assert { type: 'json' };
194
- * ```
195
- * https://github.com/typescript-eslint/typescript-eslint/issues/7527
196
- */
197
- if (report.node.attributes.length === 0) {
198
- context.report({
199
- node: report.node,
200
- messageId: 'typeOverValue',
201
- *fix(fixer) {
202
- yield* fixToTypeImportDeclaration(fixer, report, sourceImports);
203
- },
204
- });
205
- }
206
- }
207
- else {
208
- const isTypeImport = report.node.importKind === 'type';
209
- // we have a mixed type/value import or just value imports, so we need to split them out into multiple imports if separate-type-imports is configured
210
- const importNames = (isTypeImport
211
- ? report.valueSpecifiers // import type { A } from 'roo'; // WHERE A is used in value position
212
- : report.typeSpecifiers) // import { A, B } from 'roo'; // WHERE A is used in type position and B is in value position
213
- .map(specifier => `"${specifier.local.name}"`);
214
- const message = (() => {
215
- const typeImports = (0, util_1.formatWordList)(importNames);
216
- if (importNames.length === 1) {
217
- if (isTypeImport) {
218
- return {
219
- messageId: 'aImportInDecoMeta',
220
- data: { typeImports },
221
- };
222
- }
223
- return {
224
- messageId: 'aImportIsOnlyTypes',
225
- data: { typeImports },
226
- };
227
- }
228
- if (isTypeImport) {
229
- return {
230
- messageId: 'someImportsInDecoMeta',
231
- data: { typeImports }, // typeImports are all the value specifiers that are in the type position
232
- };
233
- }
234
- return {
235
- messageId: 'someImportsAreOnlyTypes',
236
- data: { typeImports }, // typeImports are all the type specifiers in the value position
237
- };
238
- })();
239
- context.report({
240
- node: report.node,
241
- ...message,
242
- *fix(fixer) {
243
- if (isTypeImport) {
244
- // take all the valueSpecifiers and put them on a new line
245
- yield* fixToValueImportDeclaration(fixer, report, sourceImports);
246
- }
247
- else {
248
- // take all the typeSpecifiers and put them on a new line
249
- yield* fixToTypeImportDeclaration(fixer, report, sourceImports);
250
- }
275
+ }
276
+ else {
277
+ // we have a mixed type/value import or just value imports, so we need to split them out into multiple imports if separate-type-imports is configured
278
+ const importNames = report.typeSpecifiers.map(specifier => `"${specifier.local.name}"`);
279
+ const message = (() => {
280
+ const typeImports = (0, util_1.formatWordList)(importNames);
281
+ if (importNames.length === 1) {
282
+ return {
283
+ messageId: 'someImportsAreOnlyTypes',
284
+ data: {
285
+ typeImports,
251
286
  },
252
- });
287
+ };
253
288
  }
254
- }
289
+ return {
290
+ messageId: 'someImportsAreOnlyTypes',
291
+ data: {
292
+ typeImports,
293
+ },
294
+ };
295
+ })();
296
+ context.report({
297
+ node: report.node,
298
+ ...message,
299
+ *fix(fixer) {
300
+ // take all the typeSpecifiers and put them on a new line
301
+ yield* fixToTypeImportDeclaration(fixer, report, sourceImports);
302
+ },
303
+ });
255
304
  }
256
- },
257
- }
258
- : {
259
- // prefer no type imports
260
- 'ImportDeclaration[importKind = "type"]'(node) {
261
- context.report({
262
- node,
263
- messageId: 'valueOverType',
264
- fix(fixer) {
265
- return fixRemoveTypeSpecifierFromImportDeclaration(fixer, node);
266
- },
267
- });
268
- },
269
- 'ImportSpecifier[importKind = "type"]'(node) {
270
- context.report({
271
- node,
272
- messageId: 'valueOverType',
273
- fix(fixer) {
274
- return fixRemoveTypeSpecifierFromImportSpecifier(fixer, node);
275
- },
276
- });
277
- },
278
- }),
279
- ...(disallowTypeAnnotations
280
- ? {
281
- // disallow `import()` type
282
- TSImportType(node) {
283
- context.report({
284
- node,
285
- messageId: 'noImportTypeAnnotations',
286
- });
287
- },
305
+ }
288
306
  }
289
- : {}),
307
+ },
290
308
  };
291
309
  function classifySpecifier(node) {
292
310
  const defaultSpecifier = node.specifiers[0].type === utils_1.AST_NODE_TYPES.ImportDefaultSpecifier
@@ -568,54 +586,6 @@ exports.default = (0, util_1.createRule)({
568
586
  }
569
587
  }
570
588
  }
571
- function* fixToValueImportDeclaration(fixer, report, sourceImports) {
572
- const { node } = report;
573
- const { defaultSpecifier, namespaceSpecifier, namedSpecifiers } = classifySpecifier(node);
574
- if (namespaceSpecifier) {
575
- // import type * as types from 'foo'
576
- yield* fixRemoveTypeSpecifierFromImportDeclaration(fixer, node);
577
- return;
578
- }
579
- else if (defaultSpecifier) {
580
- if (report.valueSpecifiers.includes(defaultSpecifier) &&
581
- namedSpecifiers.length === 0) {
582
- // import type Type from 'foo'
583
- yield* fixRemoveTypeSpecifierFromImportDeclaration(fixer, node);
584
- return;
585
- }
586
- }
587
- else {
588
- if (namedSpecifiers.every(specifier => report.valueSpecifiers.includes(specifier))) {
589
- // import type {Type1, Type2} from 'foo'
590
- yield* fixRemoveTypeSpecifierFromImportDeclaration(fixer, node);
591
- return;
592
- }
593
- }
594
- // we have some valueSpecifiers intermixed in types that need to be put on their own line
595
- // import type { Type1, A } from 'foo'
596
- // import type { A } from 'foo'
597
- const valueNamedSpecifiers = namedSpecifiers.filter(specifier => report.valueSpecifiers.includes(specifier));
598
- const fixesNamedSpecifiers = getFixesNamedSpecifiers(fixer, node, valueNamedSpecifiers, namedSpecifiers);
599
- const afterFixes = [];
600
- if (valueNamedSpecifiers.length) {
601
- if (sourceImports.valueOnlyNamedImport) {
602
- const insertTypeNamedSpecifiers = fixInsertNamedSpecifiersInNamedSpecifierList(fixer, sourceImports.valueOnlyNamedImport, fixesNamedSpecifiers.typeNamedSpecifiersText);
603
- if (sourceImports.valueOnlyNamedImport.range[1] <= node.range[0]) {
604
- yield insertTypeNamedSpecifiers;
605
- }
606
- else {
607
- afterFixes.push(insertTypeNamedSpecifiers);
608
- }
609
- }
610
- else {
611
- // some are types.
612
- // Add new value import and later remove those value specifiers from import type
613
- yield fixer.insertTextBefore(node, `import {${fixesNamedSpecifiers.typeNamedSpecifiersText}} from ${context.sourceCode.getText(node.source)};\n`);
614
- }
615
- }
616
- yield* fixesNamedSpecifiers.removeTypeNamedSpecifiers;
617
- yield* afterFixes;
618
- }
619
589
  function* fixRemoveTypeSpecifierFromImportDeclaration(fixer, node) {
620
590
  // import type Foo from 'foo'
621
591
  // ^^^^ remove
@@ -1 +1 @@
1
- {"version":3,"file":"consistent-type-imports.js","sourceRoot":"","sources":["../../src/rules/consistent-type-imports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consistent-type-imports.js","sourceRoot":"","sources":["../../src/rules/consistent-type-imports.ts"],"names":[],"mappings":"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"}
@@ -93,11 +93,34 @@ type T = import('Foo').Foo;
93
93
  const x: import('Bar') = 1;
94
94
  ```
95
95
 
96
- ## Usage with `emitDecoratorMetadata`
96
+ ## Caveat: `@decorators` + `experimentalDecorators: true` + `emitDecoratorMetadata: true`
97
97
 
98
- The `emitDecoratorMetadata` compiler option changes the code the TypeScript emits. In short - it causes TypeScript to create references to value imports when they are used in a type-only location. If you are using `emitDecoratorMetadata` then our tooling will require additional information in order for the rule to work correctly.
98
+ :::note
99
+ If you are using `experimentalDecorators: false` (eg [TypeScript v5.0's stable decorators](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-0.html#decorators)) then the rule will always report errors as expected.
100
+ This caveat **only** applies to `experimentalDecorators: true`
101
+ :::
99
102
 
100
- If you are using [type-aware linting](/getting-started/typed-linting), then you just need to ensure that the `tsconfig.json` you've configured for `parserOptions.project` has `emitDecoratorMetadata` turned on. Otherwise you can explicitly tell our tooling to analyze your code as if the compiler option was turned on [by setting `parserOptions.emitDecoratorMetadata` to `true`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/README.md#parseroptionsemitdecoratormetadata).
103
+ The rule will **_not_** report any errors in files _that contain decorators_ when **both** `experimentalDecorators` and `emitDecoratorMetadata` are turned on.
104
+
105
+ > 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.
106
+
107
+ If you are using [type-aware linting](https://typescript-eslint.io/linting/typed-linting) then we will automatically infer your setup from your tsconfig and you should not need to configure anything.
108
+ 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`](https://typescript-eslint.io/packages/parser/#emitdecoratormetadata) and [`parserOptions.experimentalDecorators = true`](https://typescript-eslint.io/packages/parser/#experimentaldecorators).
109
+
110
+ ## Comparison with `importsNotUsedAsValues` / `verbatimModuleSyntax`
111
+
112
+ [`verbatimModuleSyntax`](https://www.typescriptlang.org/tsconfig#verbatimModuleSyntax) was introduced in TypeScript v5.0 (as a replacement for `importsNotUsedAsValues`).
113
+ This rule and `verbatimModuleSyntax` _mostly_ behave in the same way.
114
+ There are a few behavior differences:
115
+ | Situation | `consistent-type-imports` (ESLint) | `verbatimModuleSyntax` (TypeScript) |
116
+ | -------------------------------------------------------------- | --------------------------------------------------------- | ----------------------------------------------------------- |
117
+ | Unused imports | Ignored (consider using [`@typescript-eslint/no-unused-vars`](/rules/no-unused-vars)) | Type error |
118
+ | Usage with `emitDecoratorMetadata` & `experimentalDecorations` | Ignores files that contain decorators | Reports on files that contain decorators |
119
+ | Failures detected | Does not fail `tsc` build; can be auto-fixed with `--fix` | Fails `tsc` build; cannot be auto-fixed on the command-line |
120
+ | `import { type T } from 'T';` | TypeScript will emit nothing (it "elides" the import) | TypeScript emits `import {} from 'T'` |
121
+
122
+ Because there are some differences, using both this rule and `verbatimModuleSyntax` at the same time can lead to conflicting errors.
123
+ As such we recommend that you only ever use one _or_ the other -- never both.
101
124
 
102
125
  ## When Not To Use It
103
126
 
@@ -34,7 +34,7 @@ If your project has many intentionally redundant `default` cases, you may want t
34
34
 
35
35
  ### `requireDefaultForNonUnion`
36
36
 
37
- Defaults to false. It set to true, this rule will also report when a `switch` statement switches over a non-union type (like a `number` or `string`, for example) and that `switch` statement does not have a `default` case. Thus, by setting this option to true, the rule becomes stricter.
37
+ Defaults to false. If set to true, this rule will also report when a `switch` statement switches over a non-union type (like a `number` or `string`, for example) and that `switch` statement does not have a `default` case. Thus, by setting this option to true, the rule becomes stricter.
38
38
 
39
39
  This is generally desirable so that `number` and `string` switches will be subject to the same exhaustive checks that your other switches are.
40
40
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typescript-eslint/eslint-plugin",
3
- "version": "7.3.2-alpha.7",
3
+ "version": "7.3.2-alpha.9",
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.5.1",
64
- "@typescript-eslint/scope-manager": "7.3.2-alpha.7",
65
- "@typescript-eslint/type-utils": "7.3.2-alpha.7",
66
- "@typescript-eslint/utils": "7.3.2-alpha.7",
67
- "@typescript-eslint/visitor-keys": "7.3.2-alpha.7",
64
+ "@typescript-eslint/scope-manager": "7.3.2-alpha.9",
65
+ "@typescript-eslint/type-utils": "7.3.2-alpha.9",
66
+ "@typescript-eslint/utils": "7.3.2-alpha.9",
67
+ "@typescript-eslint/visitor-keys": "7.3.2-alpha.9",
68
68
  "debug": "^4.3.4",
69
69
  "graphemer": "^1.4.0",
70
70
  "ignore": "^5.2.4",
@@ -77,7 +77,7 @@
77
77
  "@types/marked": "*",
78
78
  "@types/natural-compare": "*",
79
79
  "@typescript-eslint/rule-schema-to-typescript-types": "7.3.1",
80
- "@typescript-eslint/rule-tester": "7.3.2-alpha.7",
80
+ "@typescript-eslint/rule-tester": "7.3.2-alpha.9",
81
81
  "ajv": "^6.12.6",
82
82
  "chalk": "^5.3.0",
83
83
  "cross-env": "^7.0.3",