From c9d5ab0fa963bd891b6f2ae312ae3ec10a397b7c Mon Sep 17 00:00:00 2001 From: JounQin Date: Thu, 13 Mar 2025 02:22:09 +0800 Subject: [PATCH 1/2] fix: add support for importing with .js extension as tsx importee (#374) Co-authored-by: David Ensinger --- .changeset/loud-avocados-bake.md | 5 +++++ .size-limit.json | 2 +- src/index.ts | 23 +++++++++++++++-------- tests/withPaths/index.ts | 4 ++++ 4 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 .changeset/loud-avocados-bake.md diff --git a/.changeset/loud-avocados-bake.md b/.changeset/loud-avocados-bake.md new file mode 100644 index 00000000..fdbe2ff2 --- /dev/null +++ b/.changeset/loud-avocados-bake.md @@ -0,0 +1,5 @@ +--- +"eslint-import-resolver-typescript": patch +--- + +fix: add support for importing with .js extension as tsx importee diff --git a/.size-limit.json b/.size-limit.json index 648747e9..bdf75734 100644 --- a/.size-limit.json +++ b/.size-limit.json @@ -1,6 +1,6 @@ [ { "path": "./lib/index.js", - "limit": "3.1kB" + "limit": "3.2kB" } ] diff --git a/src/index.ts b/src/index.ts index b774b3ce..c5a8822d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -362,18 +362,25 @@ function getMappedPaths( const isJs = JS_EXT_PATTERN.test(source) if (isJs) { const jsExt = path.extname(source) + // cjs -> cts, js -> ts, jsx -> tsx, mjs -> mts const tsExt = jsExt.replace('js', 'ts') + const basename = source.replace(JS_EXT_PATTERN, '') - const mappedPaths = getMappedPaths(basename + tsExt, file) + let resolved = getMappedPaths(basename + tsExt, file) - const resolved = - mappedPaths.length > 0 - ? mappedPaths - : getMappedPaths( - basename + '.d' + (tsExt === '.tsx' ? '.ts' : tsExt), - file, - ) + if (resolved.length === 0 && jsExt === '.js') { + // js -> tsx + const tsxExt = jsExt.replace('js', 'tsx') + resolved = getMappedPaths(basename + tsxExt, file) + } + + if (resolved.length === 0) { + resolved = getMappedPaths( + basename + '.d' + (tsExt === '.tsx' ? '.ts' : tsExt), + file, + ) + } if (resolved.length > 0) { return resolved diff --git a/tests/withPaths/index.ts b/tests/withPaths/index.ts index 594e79d4..696bf409 100644 --- a/tests/withPaths/index.ts +++ b/tests/withPaths/index.ts @@ -6,9 +6,13 @@ import './subfolder/tsxImportee' // import using tsconfig.json path mapping import 'folder/tsImportee' +import 'folder/tsImportee.js' import 'folder/tsxImportee' +import 'folder/tsxImportee.js' import 'folder/subfolder/tsImportee' +import 'folder/subfolder/tsImportee.js' import 'folder/subfolder/tsxImportee' +import 'folder/subfolder/tsxImportee.js' // import module with typings set in package.json import 'folder/module' From 7fdfd8055872559a4c31186f9bfee5a51ca3e5c8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Mar 2025 18:28:26 +0000 Subject: [PATCH 2/2] chore: release eslint-import-resolver-typescript (#375) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/loud-avocados-bake.md | 5 ----- CHANGELOG.md | 6 ++++++ package.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 .changeset/loud-avocados-bake.md diff --git a/.changeset/loud-avocados-bake.md b/.changeset/loud-avocados-bake.md deleted file mode 100644 index fdbe2ff2..00000000 --- a/.changeset/loud-avocados-bake.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"eslint-import-resolver-typescript": patch ---- - -fix: add support for importing with .js extension as tsx importee diff --git a/CHANGELOG.md b/CHANGELOG.md index f2183de8..9c060040 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 3.8.6 + +### Patch Changes + +- [#374](https://github.com/import-js/eslint-import-resolver-typescript/pull/374) [`c9d5ab0`](https://github.com/import-js/eslint-import-resolver-typescript/commit/c9d5ab0fa963bd891b6f2ae312ae3ec10a397b7c) Thanks [@JounQin](https://github.com/JounQin)! - fix: add support for importing with .js extension as tsx importee + ## 3.8.5 ### Patch Changes diff --git a/package.json b/package.json index 86e53743..8d601b85 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eslint-import-resolver-typescript", - "version": "3.8.5", + "version": "3.8.6", "type": "module", "description": "This plugin adds `TypeScript` support to `eslint-plugin-import`", "repository": "git+https://github.com/import-js/eslint-import-resolver-typescript",