diff --git a/packages/eslint-plugin/src/util/misc.ts b/packages/eslint-plugin/src/util/misc.ts index b24758fd426a..4355e8d83f60 100644 --- a/packages/eslint-plugin/src/util/misc.ts +++ b/packages/eslint-plugin/src/util/misc.ts @@ -25,7 +25,8 @@ export function isDefinitionFile(fileName: string): boolean { return true; } } - return false; + + return /\.d\.(ts|cts|mts|.*\.ts)$/.test(lowerFileName); } /** diff --git a/packages/eslint-plugin/tests/util/misc.test.ts b/packages/eslint-plugin/tests/util/misc.test.ts index 6eae810eb627..d7037e7ed094 100644 --- a/packages/eslint-plugin/tests/util/misc.test.ts +++ b/packages/eslint-plugin/tests/util/misc.test.ts @@ -1,5 +1,28 @@ import * as misc from '../../src/util/misc'; +describe('isDefinitionFile', () => { + it.each([['index.d.ts'], ['module.d.cts'], ['package.d.mts']])( + 'returns true for standard definition file: %s', + filename => { + expect(misc.isDefinitionFile(filename)).toBe(true); + }, + ); + + it.each([['styles.d.css.ts'], ['component.d.vue.ts'], ['env.d.node.ts']])( + 'returns true for arbitrary extension definition file: %s', + filename => { + expect(misc.isDefinitionFile(filename)).toBe(true); + }, + ); + + it.each([['index.ts'], ['app.tsx'], ['styles.css.ts'], ['vite.config.ts']])( + 'returns false for non definition file: %s', + filename => { + expect(misc.isDefinitionFile(filename)).toBe(false); + }, + ); +}); + describe('formatWordList', () => { it('can format with no words', () => { expect(misc.formatWordList([])).toBe('');