diff --git a/.changeset/late-elephants-confess.md b/.changeset/late-elephants-confess.md new file mode 100644 index 00000000..fda4961e --- /dev/null +++ b/.changeset/late-elephants-confess.md @@ -0,0 +1,5 @@ +--- +"eslint-import-resolver-typescript": patch +--- + +fix: add more extension aliases for ts source/declaration files diff --git a/README.md b/README.md index 5ca2bc89..5d1a96ec 100644 --- a/README.md +++ b/README.md @@ -282,9 +282,19 @@ Default: ".d.ts", ".js", ], + ".ts": [".ts", ".d.ts", ".js"], ".jsx": [".tsx", ".d.ts", ".jsx"], + ".tsx": [ + ".tsx", + ".d.ts", + ".jsx", + // `.tsx` can also be compiled as `.js` + ".js", + ], ".cjs": [".cts", ".d.cts", ".cjs"], + ".cts": [".cts", ".d.cts", ".cjs"], ".mjs": [".mts", ".d.mts", ".mjs"], + ".mts": [".mts", ".d.mts", ".mjs"], } ``` diff --git a/src/constants.ts b/src/constants.ts index 8feae1b5..1878caaa 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -36,9 +36,19 @@ export const defaultExtensionAlias = { '.d.ts', '.js', ], + '.ts': ['.ts', '.d.ts', '.js'], '.jsx': ['.tsx', '.d.ts', '.jsx'], + '.tsx': [ + '.tsx', + '.d.ts', + '.jsx', + // `.tsx` can also be compiled as `.js` + '.js', + ], '.cjs': ['.cts', '.d.cts', '.cjs'], + '.cts': ['.cts', '.d.cts', '.cjs'], '.mjs': ['.mts', '.d.mts', '.mjs'], + '.mts': ['.mts', '.d.mts', '.mjs'], } export const defaultMainFields = [ diff --git a/src/index.ts b/src/index.ts index de6165b0..6b2b5a30 100644 --- a/src/index.ts +++ b/src/index.ts @@ -50,7 +50,7 @@ const unrsResolve = ( } } if (result.error) { - log('oxc resolve error:', result.error) + log('unrs-resolver error:', result.error) if (TSCONFIG_NOT_FOUND_REGEXP.test(result.error)) { throw new Error(result.error) } diff --git a/tests/unit/dts/foo.d.ts b/tests/unit/dts/foo.d.ts new file mode 100644 index 00000000..e69de29b diff --git a/tests/unit/unit.spec.ts b/tests/unit/unit.spec.ts index 6c3fae54..6b0c6907 100644 --- a/tests/unit/unit.spec.ts +++ b/tests/unit/unit.spec.ts @@ -7,19 +7,19 @@ import { TSCONFIG_NOT_FOUND_REGEXP, } from 'eslint-import-resolver-typescript' -describe('createTypeScriptImportResolver', async () => { - const { dirname } = import.meta - - const pnpDir = path.resolve(dirname, 'pnp') +const { dirname } = import.meta - await exec('yarn', [], { - nodeOptions: { - cwd: pnpDir, - }, - }) +describe('createTypeScriptImportResolver', async () => { + const resolver = createTypeScriptImportResolver() it('should work with pnp', async () => { - const resolver = createTypeScriptImportResolver() + const pnpDir = path.resolve(dirname, 'pnp') + + await exec('yarn', [], { + nodeOptions: { + cwd: pnpDir, + }, + }) const testfile = path.resolve(pnpDir, '__test__.js') @@ -38,6 +38,19 @@ describe('createTypeScriptImportResolver', async () => { `) }) + it('should resolve .d.ts with .ts extension', () => { + const dtsDir = path.resolve(dirname, 'dts') + + const testfile = path.resolve(dtsDir, '__test__.js') + + expect(resolver.resolve('./foo.ts', testfile)).toMatchInlineSnapshot(` + { + "found": true, + "path": "/tests/unit/dts/foo.d.ts", + } + `) + }) + it('should error on malformed tsconfig reference', () => { const project = path.resolve(dirname, 'malformed-reference')