Skip to content

Commit 89018c5

Browse files
committed
feat: integrate eslint-import-context to get correct context.cwd
1 parent c45039e commit 89018c5

File tree

102 files changed

+2883
-2353
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+2883
-2353
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@ jobs:
4343
PARSER_NO_WATCH: true
4444

4545
- name: Codecov
46-
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
46+
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
4747
with:
4848
token: ${{ secrets.CODECOV_TOKEN }}

index.d.cts

Lines changed: 0 additions & 3 deletions
This file was deleted.

package.json

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"node": "^16.17.0 || >=18.6.0"
1616
},
1717
"main": "lib/index.cjs",
18-
"types": "lib/index.d.ts",
18+
"types": "lib/index.d.cts",
1919
"module": "lib/index.js",
2020
"exports": {
2121
".": {
@@ -24,14 +24,13 @@
2424
"default": "./lib/index.js"
2525
},
2626
"require": {
27-
"types": "./index.d.cts",
27+
"types": "./lib/index.d.cts",
2828
"default": "./lib/index.cjs"
2929
}
3030
},
3131
"./package.json": "./package.json"
3232
},
3333
"files": [
34-
"index.d.cts",
3534
"lib",
3635
"!**/*.tsbuildinfo"
3736
],
@@ -44,12 +43,13 @@
4443
],
4544
"scripts": {
4645
"build": "run-p -c 'build:*'",
47-
"build:r": "r -f cjs",
48-
"build:ts": "tsc -b",
46+
"build:ts": "tsc -p src",
47+
"build:tsdown": "tsdown --no-clean -d lib -f cjs src/index.ts",
48+
"clean": "premove coverage lib .eslintcache",
4949
"format": "prettier --write .",
5050
"lint": "run-p 'lint:*'",
5151
"lint:es": "eslint . --cache",
52-
"lint:tsc": "tsc -b --noEmit",
52+
"lint:tsc": "tsc --noEmit",
5353
"prepare": "simple-git-hooks && yarn-berry-deduplicate || exit 0",
5454
"release": "clean-pkg-json && changeset publish",
5555
"test": "node tests/e2e/withJsExtension/test.cjs && vitest run",
@@ -69,45 +69,47 @@
6969
}
7070
},
7171
"dependencies": {
72-
"debug": "^4.4.0",
73-
"get-tsconfig": "^4.10.0",
72+
"debug": "^4.4.1",
73+
"eslint-import-context": "^0.1.3",
74+
"get-tsconfig": "^4.10.1",
7475
"is-bun-module": "^2.0.0",
7576
"stable-hash": "^0.0.5",
7677
"tinyglobby": "^0.2.13",
77-
"unrs-resolver": "^1.6.3"
78+
"unrs-resolver": "^1.7.2"
7879
},
7980
"devDependencies": {
80-
"@1stg/common-config": "^13.0.1",
81+
"@1stg/common-config": "^14.0.0",
8182
"@changesets/changelog-github": "^0.5.1",
82-
"@changesets/cli": "^2.29.2",
83-
"@commitlint/cli": "^19.8.0",
83+
"@changesets/cli": "^2.29.4",
84+
"@commitlint/cli": "^19.8.1",
8485
"@mozilla/glean": "^5.0.4",
8586
"@pkgr/core": "^0.2.4",
86-
"@pkgr/rollup": "^6.0.3",
8787
"@total-typescript/ts-reset": "^0.6.1",
8888
"@types/debug": "^4.1.12",
89-
"@types/node": "^22.14.1",
89+
"@types/node": "^22.15.21",
9090
"@types/pnpapi": "^0.0.5",
9191
"@types/unist": "^3.0.3",
92-
"@vitest/coverage-v8": "3.1.2",
93-
"@vitest/eslint-plugin": "^1.1.43",
92+
"@vitest/coverage-v8": "3.1.4",
93+
"@vitest/eslint-plugin": "^1.2.1",
9494
"clean-pkg-json": "^1.3.0",
9595
"dummy.js": "link:dummy.js",
96-
"eslint": "^9.25.0",
96+
"eslint": "^9.27.0",
9797
"eslint-import-resolver-typescript": "workspace:*",
98-
"eslint-plugin-import-x": "^4.10.6",
98+
"eslint-plugin-import-x": "^4.13.0",
9999
"nano-staged": "^0.8.0",
100-
"npm-run-all2": "^7.0.2",
101-
"path-serializer": "^0.3.4",
100+
"npm-run-all2": "^8.0.3",
101+
"path-serializer": "^0.4.0",
102+
"premove": "^4.0.0",
102103
"prettier": "^3.5.3",
103104
"react": "^19.1.0",
104-
"simple-git-hooks": "^2.12.1",
105+
"simple-git-hooks": "^2.13.0",
105106
"size-limit": "^11.2.0",
106-
"size-limit-preset-node-lib": "^0.3.0",
107+
"size-limit-preset-node-lib": "^0.4.0",
107108
"tinyexec": "^1.0.1",
109+
"tsdown": "^0.12.3",
108110
"type-coverage": "^2.29.7",
109111
"typescript": "^5.8.3",
110-
"vitest": "^3.1.2",
112+
"vitest": "^3.1.4",
111113
"yarn-berry-deduplicate": "^6.1.3"
112114
},
113115
"resolutions": {

src/index.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { isBuiltin } from 'node:module'
22
import path from 'node:path'
33

4-
import type { ResolvedResult } from 'eslint-plugin-import-x/types'
4+
import { useRuleContext, type ResolvedResult } from 'eslint-import-context'
55
import {
66
type FileMatcher,
77
type TsConfigJsonResolved,
@@ -65,8 +65,8 @@ const isBun = !!process.versions.bun
6565
export const resolve = (
6666
source: string,
6767
file: string,
68-
options?: TypeScriptResolverOptions | null,
69-
resolver?: ResolverFactory | null,
68+
options?: TypeScriptResolverOptions,
69+
resolver?: ResolverFactory,
7070
// eslint-disable-next-line sonarjs/cognitive-complexity
7171
): ResolvedResult => {
7272
options ||= {}
@@ -81,10 +81,11 @@ export const resolve = (
8181

8282
if (!resolver) {
8383
const optionsHash = stableHash(options)
84-
const cwd = process.cwd()
84+
const context = useRuleContext()
85+
const cwd = context?.cwd || process.cwd()
8586
options = normalizeOptions(options, cwd)
8687
// take `cwd` into account -- #217
87-
const cacheKey = `${optionsHash}:${cwd}`
88+
const cacheKey = `${optionsHash}\0${cwd}`
8889
let cached = resolverCache.get(cacheKey)
8990
if (!cached && !options.project) {
9091
resolverCache.set(cacheKey, (cached = new ResolverFactory(options)))
@@ -205,12 +206,18 @@ export const resolve = (
205206
export const createTypeScriptImportResolver = (
206207
options?: TypeScriptResolverOptions | null,
207208
) => {
208-
options = normalizeOptions(options)
209-
const resolver = options.project ? null : new ResolverFactory(options)
209+
let cwd = process.cwd()
210+
options = normalizeOptions(options, cwd)
211+
let resolver = options.project ? undefined : new ResolverFactory(options)
210212
return {
211213
interfaceVersion: 3,
212214
name: IMPORT_RESOLVER_NAME,
213215
resolve(source: string, file: string) {
216+
const context = useRuleContext()
217+
if (context && cwd !== context.cwd) {
218+
cwd = context.cwd
219+
resolver = resolver?.cloneWithOptions(normalizeOptions(options, cwd))
220+
}
214221
return resolve(source, file, options, resolver)
215222
},
216223
}

src/tsconfig.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"extends": "../tsconfig.lib",
3+
"compilerOptions": {
4+
"rootDir": ".",
5+
"outDir": "../lib"
6+
},
7+
"include": ["."]
8+
}

tests/e2e/absoluteAlias/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"extends": "../../../tsconfig.base",
2+
"extends": "../../../tsconfig.lib",
33
"compilerOptions": {
44
"paths": {
55
"/*": ["./public/*"]

tests/e2e/withJsExtension/test.cjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const assert = require('node:assert')
22
const path = require('node:path')
33

4+
// eslint-disable-next-line import-x/extensions
45
const { resolve } = require('../../..')
56

67
const config = {

tests/tsconfig.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"extends": "../tsconfig.base",
2+
"extends": "../tsconfig.lib",
33
"compilerOptions": {
44
"rootDir": "."
55
},
6-
"include": [".", "../auto-imports.d.ts"]
6+
"include": ["."]
77
}

0 commit comments

Comments
 (0)