Skip to content

Commit f16150b

Browse files
fix: always sort projects by affinity before iterating (#459)
Co-authored-by: JounQin <[email protected]>
1 parent f9ad3b0 commit f16150b

File tree

3 files changed

+19
-14
lines changed

3 files changed

+19
-14
lines changed

.changeset/ready-mirrors-sneeze.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"eslint-import-resolver-typescript": patch
3+
---
4+
5+
fix: always sort projects by affinity before iterating

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# eslint-import-resolver-typescript
22

33
[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/import-js/eslint-import-resolver-typescript/ci.yml?branch=master)](https://github.com/import-js/eslint-import-resolver-typescript/actions/workflows/ci.yml?query=branch%3Amaster)
4+
[![Codecov](https://img.shields.io/codecov/c/github/import-js/eslint-import-resolver-typescript.svg)](https://codecov.io/gh/import-js/eslint-import-resolver-typescript)
45
[![type-coverage](https://img.shields.io/badge/dynamic/json.svg?label=type-coverage&prefix=%E2%89%A5&suffix=%&query=$.typeCoverage.atLeast&uri=https%3A%2F%2Fraw.githubusercontent.com%2Fimport-js%2Feslint-import-resolver-typescript%2Fmaster%2Fpackage.json)](https://github.com/plantain-00/type-coverage)
56
[![npm](https://img.shields.io/npm/v/eslint-import-resolver-typescript.svg)](https://www.npmjs.com/package/eslint-import-resolver-typescript)
67
[![GitHub Release](https://img.shields.io/github/release/import-js/eslint-import-resolver-typescript)](https://github.com/import-js/eslint-import-resolver-typescript/releases)

src/index.ts

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@ export const resolve = (
9595

9696
// eslint-disable-next-line sonarjs/label-position, sonarjs/no-labels
9797
createResolver: if (!resolver) {
98-
// must be a array with 2+ items here already ensured by `normalizeOptions`
99-
const project = options.project as string[]
100-
for (const tsconfigPath of project) {
98+
// must be an array with 2+ items here already ensured by `normalizeOptions`
99+
const projects = sortProjectsByAffinity(options.project as string[], file)
100+
for (const tsconfigPath of projects) {
101101
const resolverCached = resolverCache.get(tsconfigPath)
102102
if (resolverCached) {
103103
resolver = resolverCached
@@ -135,24 +135,23 @@ export const resolve = (
135135
},
136136
}
137137
resolver = new ResolverFactory(options)
138-
resolverCache.set(tsconfigPath, resolver)
139-
break createResolver
138+
const resolved = resolve(source, file, options, resolver)
139+
if (resolved.found) {
140+
resolverCache.set(tsconfigPath, resolver)
141+
return resolved
142+
}
140143
}
141144

142145
log(
143146
'no tsconfig matched',
144147
file,
145148
'with',
146-
...project,
147-
', trying from the the nearest one',
149+
...projects,
150+
', trying from the the nearest one instead',
148151
)
149-
for (const p of sortProjectsByAffinity(project, file)) {
150-
const resolved = resolve(
151-
source,
152-
file,
153-
{ ...options, project: p },
154-
resolver,
155-
)
152+
153+
for (const project of projects) {
154+
const resolved = resolve(source, file, { ...options, project }, resolver)
156155
if (resolved.found) {
157156
return resolved
158157
}

0 commit comments

Comments
 (0)