From d297e1d26f6a12eb314f657e57f9970c7286cc7a Mon Sep 17 00:00:00 2001 From: JounQin Date: Thu, 27 Mar 2025 03:48:20 +0800 Subject: [PATCH 1/3] fix: absolute aliasing should not be skipped close #401 --- package.json | 4 +- src/index.ts | 8 +- src/normalize-options.ts | 3 +- tests/absoluteAlias/.eslintrc.cjs | 1 + tests/absoluteAlias/public/images/foo.ts | 1 + tests/absoluteAlias/test.ts | 3 + tests/absoluteAlias/tsconfig.json | 7 ++ tests/base.eslintrc.cjs | 3 + yarn.lock | 133 ++++++++++++----------- 9 files changed, 92 insertions(+), 71 deletions(-) create mode 100644 tests/absoluteAlias/.eslintrc.cjs create mode 100644 tests/absoluteAlias/public/images/foo.ts create mode 100644 tests/absoluteAlias/test.ts create mode 100644 tests/absoluteAlias/tsconfig.json diff --git a/package.json b/package.json index bd2d150..23daea3 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "prepare": "simple-git-hooks && yarn-berry-deduplicate || exit 0", "release": "clean-pkg-json && changeset publish", "test": "run-p 'test:*'", + "test:absoluteAlias": "yarn eslint --ext ts,tsx tests/absoluteAlias", "test:dotInclude": "yarn eslint --ext ts,tsx tests/dotInclude --ignore-pattern \"!.dot\"", "test:dotPaths": "yarn eslint --ext ts,tsx tests/dotPaths --ignore-pattern \"!.dot\"", "test:dotProject": "yarn eslint --ext ts,tsx tests/dotProject --ignore-pattern \"!.dot\"", @@ -82,7 +83,7 @@ "is-bun-module": "^2.0.0", "stable-hash": "^0.0.5", "tinyglobby": "^0.2.12", - "unrs-resolver": "^1.3.1" + "unrs-resolver": "^1.3.2" }, "devDependencies": { "@1stg/common-config": "^11.1.0", @@ -102,6 +103,7 @@ "eslint": "^9.23.0", "eslint-import-resolver-typescript": "link:.", "eslint-plugin-import-x": "^4.9.3", + "globals": "^16.0.0", "lint-staged": "^15.5.0", "npm-run-all2": "^7.0.2", "path-serializer": "^0.3.4", diff --git a/src/index.ts b/src/index.ts index 7c47cd0..888cefe 100644 --- a/src/index.ts +++ b/src/index.ts @@ -33,7 +33,7 @@ const tsconfigCache = new Map() const matcherCache = new Map() -const oxcResolve = ( +const unrsResolve = ( source: string, file: string, resolver: ResolverFactory, @@ -72,6 +72,8 @@ export const resolve = ( source = removeQuerystring(source) + console.log('source:', source) + if (!resolver) { const optionsHash = stableHash(options) const cwd = process.cwd() @@ -157,7 +159,7 @@ export const resolve = ( } } - const resolved = oxcResolve(source, file, resolver) + const resolved = unrsResolve(source, file, resolver) const foundPath = resolved.path @@ -170,7 +172,7 @@ export const resolve = ( !path.isAbsolute(source) && !source.startsWith('.') ) { - const definitelyTyped = oxcResolve( + const definitelyTyped = unrsResolve( '@types/' + mangleScopedPackage(source), file, resolver, diff --git a/src/normalize-options.ts b/src/normalize-options.ts index 7511ce2..ba675eb 100644 --- a/src/normalize-options.ts +++ b/src/normalize-options.ts @@ -39,8 +39,9 @@ export function normalizeOptions( configFile = tryFile(configFile) ensured = true } else if (project) { + project = Array.isArray(project) ? project : [project] log('original projects:', ...project) - project = (Array.isArray(project) ? project : [project]).map(toGlobPath) + project = project.map(toGlobPath) if (project.some(p => isDynamicPattern(p))) { project = globSync(project, { absolute: true, diff --git a/tests/absoluteAlias/.eslintrc.cjs b/tests/absoluteAlias/.eslintrc.cjs new file mode 100644 index 0000000..3d3a72f --- /dev/null +++ b/tests/absoluteAlias/.eslintrc.cjs @@ -0,0 +1 @@ +module.exports = require('../base.eslintrc.cjs')(__dirname) diff --git a/tests/absoluteAlias/public/images/foo.ts b/tests/absoluteAlias/public/images/foo.ts new file mode 100644 index 0000000..e13bf6d --- /dev/null +++ b/tests/absoluteAlias/public/images/foo.ts @@ -0,0 +1 @@ +export default 'image.webp' diff --git a/tests/absoluteAlias/test.ts b/tests/absoluteAlias/test.ts new file mode 100644 index 0000000..6358e50 --- /dev/null +++ b/tests/absoluteAlias/test.ts @@ -0,0 +1,3 @@ +import image from '/images/foo.js' + +console.log(image) diff --git a/tests/absoluteAlias/tsconfig.json b/tests/absoluteAlias/tsconfig.json new file mode 100644 index 0000000..130457a --- /dev/null +++ b/tests/absoluteAlias/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "paths": { + "/*": ["./public/*"] + } + } +} diff --git a/tests/base.eslintrc.cjs b/tests/base.eslintrc.cjs index f0c7501..f58b61f 100644 --- a/tests/base.eslintrc.cjs +++ b/tests/base.eslintrc.cjs @@ -38,6 +38,9 @@ const base = project => ({ overrides: [ { files: '**/.*.cjs', + env: { + node: true, + }, rules: { '@typescript-eslint/no-require-imports': 'off', }, diff --git a/yarn.lock b/yarn.lock index 94f62de..51519d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4125,109 +4125,109 @@ __metadata: languageName: node linkType: hard -"@unrs/resolver-binding-darwin-arm64@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.3.1" +"@unrs/resolver-binding-darwin-arm64@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.3.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@unrs/resolver-binding-darwin-x64@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-darwin-x64@npm:1.3.1" +"@unrs/resolver-binding-darwin-x64@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.3.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@unrs/resolver-binding-freebsd-x64@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.3.1" +"@unrs/resolver-binding-freebsd-x64@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.3.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.3.1" +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.3.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.3.1" +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.3.2" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm64-gnu@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.3.1" +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.3.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-arm64-musl@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.3.1" +"@unrs/resolver-binding-linux-arm64-musl@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.3.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.3.1" +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.3.2" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-s390x-gnu@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.3.1" +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.3.2" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-x64-gnu@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.3.1" +"@unrs/resolver-binding-linux-x64-gnu@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.3.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@unrs/resolver-binding-linux-x64-musl@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.3.1" +"@unrs/resolver-binding-linux-x64-musl@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.3.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@unrs/resolver-binding-wasm32-wasi@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.3.1" +"@unrs/resolver-binding-wasm32-wasi@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.3.2" dependencies: "@napi-rs/wasm-runtime": "npm:^0.2.7" conditions: cpu=wasm32 languageName: node linkType: hard -"@unrs/resolver-binding-win32-arm64-msvc@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.3.1" +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.3.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@unrs/resolver-binding-win32-ia32-msvc@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.3.1" +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.3.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@unrs/resolver-binding-win32-x64-msvc@npm:1.3.1": - version: 1.3.1 - resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.3.1" +"@unrs/resolver-binding-win32-x64-msvc@npm:1.3.2": + version: 1.3.2 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.3.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -6649,6 +6649,7 @@ __metadata: eslint-import-resolver-typescript: "link:." eslint-plugin-import-x: "npm:^4.9.3" get-tsconfig: "npm:^4.10.0" + globals: "npm:^16.0.0" is-bun-module: "npm:^2.0.0" lint-staged: "npm:^15.5.0" npm-run-all2: "npm:^7.0.2" @@ -6663,7 +6664,7 @@ __metadata: tinyglobby: "npm:^0.2.12" type-coverage: "npm:^2.29.7" typescript: "npm:~5.8.2" - unrs-resolver: "npm:^1.3.1" + unrs-resolver: "npm:^1.3.2" vitest: "npm:^3.0.9" yarn-berry-deduplicate: "npm:^6.1.1" peerDependencies: @@ -14434,25 +14435,25 @@ __metadata: languageName: node linkType: hard -"unrs-resolver@npm:^1.3.1": - version: 1.3.1 - resolution: "unrs-resolver@npm:1.3.1" - dependencies: - "@unrs/resolver-binding-darwin-arm64": "npm:1.3.1" - "@unrs/resolver-binding-darwin-x64": "npm:1.3.1" - "@unrs/resolver-binding-freebsd-x64": "npm:1.3.1" - "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.3.1" - "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.3.1" - "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.3.1" - "@unrs/resolver-binding-linux-arm64-musl": "npm:1.3.1" - "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.3.1" - "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.3.1" - "@unrs/resolver-binding-linux-x64-gnu": "npm:1.3.1" - "@unrs/resolver-binding-linux-x64-musl": "npm:1.3.1" - "@unrs/resolver-binding-wasm32-wasi": "npm:1.3.1" - "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.3.1" - "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.3.1" - "@unrs/resolver-binding-win32-x64-msvc": "npm:1.3.1" +"unrs-resolver@npm:^1.3.1, unrs-resolver@npm:^1.3.2": + version: 1.3.2 + resolution: "unrs-resolver@npm:1.3.2" + dependencies: + "@unrs/resolver-binding-darwin-arm64": "npm:1.3.2" + "@unrs/resolver-binding-darwin-x64": "npm:1.3.2" + "@unrs/resolver-binding-freebsd-x64": "npm:1.3.2" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.3.2" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.3.2" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.3.2" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.3.2" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.3.2" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.3.2" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.3.2" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.3.2" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.3.2" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.3.2" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.3.2" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.3.2" dependenciesMeta: "@unrs/resolver-binding-darwin-arm64": optional: true @@ -14484,7 +14485,7 @@ __metadata: optional: true "@unrs/resolver-binding-win32-x64-msvc": optional: true - checksum: 10/0614246309fd0ac9ad89b36753e006ee3ec36decda97e9cbd88b28b90637a2799e2b12f83cae16d5d0b06a2f8134ffd6760622952f3b2a682cc2a28c7f9dbaaa + checksum: 10/13dbee27cc3288437a798338c54de4cb3b249e46ee97d3d4ac1976276e040b0e3c43594ce818a7e66f69241bf042ad47a3c2ad548358613125111c55b4ba5469 languageName: node linkType: hard From 146082c441963231d82ee1a27c6e638a6ba582d4 Mon Sep 17 00:00:00 2001 From: JounQin Date: Thu, 27 Mar 2025 03:50:31 +0800 Subject: [PATCH 2/3] Create quiet-moons-sell.md --- .changeset/quiet-moons-sell.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/quiet-moons-sell.md diff --git a/.changeset/quiet-moons-sell.md b/.changeset/quiet-moons-sell.md new file mode 100644 index 0000000..f3a652d --- /dev/null +++ b/.changeset/quiet-moons-sell.md @@ -0,0 +1,5 @@ +--- +"eslint-import-resolver-typescript": patch +--- + +fix: absolute path aliasing should not be skipped From 5a280bf1e214bfd3ba7839106ee9865408f548d5 Mon Sep 17 00:00:00 2001 From: JounQin Date: Thu, 27 Mar 2025 03:51:43 +0800 Subject: [PATCH 3/3] chore: ops, unintended dep --- package.json | 1 - src/index.ts | 2 -- yarn.lock | 1 - 3 files changed, 4 deletions(-) diff --git a/package.json b/package.json index 23daea3..7b6f45b 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,6 @@ "eslint": "^9.23.0", "eslint-import-resolver-typescript": "link:.", "eslint-plugin-import-x": "^4.9.3", - "globals": "^16.0.0", "lint-staged": "^15.5.0", "npm-run-all2": "^7.0.2", "path-serializer": "^0.3.4", diff --git a/src/index.ts b/src/index.ts index 888cefe..56ff51f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -72,8 +72,6 @@ export const resolve = ( source = removeQuerystring(source) - console.log('source:', source) - if (!resolver) { const optionsHash = stableHash(options) const cwd = process.cwd() diff --git a/yarn.lock b/yarn.lock index 51519d8..07a0abf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6649,7 +6649,6 @@ __metadata: eslint-import-resolver-typescript: "link:." eslint-plugin-import-x: "npm:^4.9.3" get-tsconfig: "npm:^4.10.0" - globals: "npm:^16.0.0" is-bun-module: "npm:^2.0.0" lint-staged: "npm:^15.5.0" npm-run-all2: "npm:^7.0.2"