From 1b84821b52a3ab243a1b54fc5c8ff37c1a1c3ee5 Mon Sep 17 00:00:00 2001 From: Sebastian Good <2230835+scagood@users.noreply.github.com> Date: Wed, 25 Sep 2024 22:06:33 +0200 Subject: [PATCH 1/2] test: Add failing test for 314 --- tests/fixtures/no-missing/issue-314/module/index.ts | 5 +++++ tests/fixtures/no-missing/issue-314/src/example.ts | 0 tests/fixtures/no-missing/issue-314/tsconfig.json | 13 +++++++++++++ tests/lib/rules/no-missing-import.js | 8 ++++++++ 4 files changed, 26 insertions(+) create mode 100644 tests/fixtures/no-missing/issue-314/module/index.ts create mode 100644 tests/fixtures/no-missing/issue-314/src/example.ts create mode 100644 tests/fixtures/no-missing/issue-314/tsconfig.json diff --git a/tests/fixtures/no-missing/issue-314/module/index.ts b/tests/fixtures/no-missing/issue-314/module/index.ts new file mode 100644 index 00000000..5fb59bfa --- /dev/null +++ b/tests/fixtures/no-missing/issue-314/module/index.ts @@ -0,0 +1,5 @@ +function x() { + return true; +} + +export default x; diff --git a/tests/fixtures/no-missing/issue-314/src/example.ts b/tests/fixtures/no-missing/issue-314/src/example.ts new file mode 100644 index 00000000..e69de29b diff --git a/tests/fixtures/no-missing/issue-314/tsconfig.json b/tests/fixtures/no-missing/issue-314/tsconfig.json new file mode 100644 index 00000000..e1c8876b --- /dev/null +++ b/tests/fixtures/no-missing/issue-314/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "baseUrl": "./src/", + "module": "node16", + "target": "es2022", + "moduleResolution": "node16", + "paths": { + "@module": ["./module/index.ts"] + }, + "strict": true + }, + "include": ["src", "module"] +} diff --git a/tests/lib/rules/no-missing-import.js b/tests/lib/rules/no-missing-import.js index 184930c2..f8478f9c 100644 --- a/tests/lib/rules/no-missing-import.js +++ b/tests/lib/rules/no-missing-import.js @@ -306,6 +306,14 @@ ruleTester.run("no-missing-import", rule, { filename: fixture("ts-paths/test.ts"), code: "import before from '@wild/where.js';", }, + { + // name: "tsconfig - compilerOptions.paths - direct reference", + filename: fixture("issue-314/src/example.ts"), + code: "import('@module');", + languageOptions: { + ecmaVersion: "latest", + }, + }, { // name: 'Ensure type only packages can be imported', From 8199219ae4dc2cc02607b4b67fe8ec94a90b784d Mon Sep 17 00:00:00 2001 From: Sebastian Good <2230835+scagood@users.noreply.github.com> Date: Wed, 25 Sep 2024 22:14:04 +0200 Subject: [PATCH 2/2] fix: Resolve tsconfig paths relative to the tsconfig --- lib/util/import-target.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/util/import-target.js b/lib/util/import-target.js index a407c58f..f5f90a9c 100644 --- a/lib/util/import-target.js +++ b/lib/util/import-target.js @@ -44,13 +44,15 @@ function getTSConfigAliases(context) { const paths = tsConfig?.config?.compilerOptions?.paths - if (paths == null) { + if (tsConfig?.path == null || paths == null) { return } return Object.entries(paths).map(([name, alias]) => ({ name: removeTrailWildcard(name), - alias: removeTrailWildcard(alias), + alias: removeTrailWildcard(alias).map(relative => + resolve(tsConfig.path, "..", relative) + ), })) }