From c0636f49b5e379f1bcf4cd0f585fcfa1ece3f3c4 Mon Sep 17 00:00:00 2001 From: JounQin Date: Mon, 17 Mar 2025 16:56:37 +0800 Subject: [PATCH 1/3] fix: `bun` is unavailable to be detected via `process.versions.bun` with `bun eslint` close #386 --- src/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index 49cc9ab..0707327 100644 --- a/src/index.ts +++ b/src/index.ts @@ -63,8 +63,7 @@ export const resolve = ( // don't worry about core node/bun modules if ( module.isBuiltin(source) || - (process.versions.bun && - isBunModule(source, process.versions.bun as Version)) + isBunModule(source, process.versions.bun as Version) ) { log('matched core:', source) From ca17abbe6d4787527349e53e59a862eb54a44eae Mon Sep 17 00:00:00 2001 From: JounQin Date: Mon, 17 Mar 2025 17:01:17 +0800 Subject: [PATCH 2/3] Create cuddly-kiwis-drum.md --- .changeset/cuddly-kiwis-drum.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/cuddly-kiwis-drum.md diff --git a/.changeset/cuddly-kiwis-drum.md b/.changeset/cuddly-kiwis-drum.md new file mode 100644 index 0000000..79f6958 --- /dev/null +++ b/.changeset/cuddly-kiwis-drum.md @@ -0,0 +1,5 @@ +--- +"eslint-import-resolver-typescript": patch +--- + +fix: `bun` is unavailable to be detected via `process.versions.bun` w/ `bun eslint` From a66d0b0889034c852767c9b09a471effd63fe416 Mon Sep 17 00:00:00 2001 From: JounQin Date: Mon, 17 Mar 2025 17:12:50 +0800 Subject: [PATCH 3/3] feat: add a new `bun?: boolean` option --- .changeset/cuddly-kiwis-drum.md | 5 ----- .changeset/lemon-trains-hang.md | 9 +++++++++ .size-limit.json | 2 +- src/index.ts | 35 +++++++++++++++++++-------------- src/types.ts | 4 ++++ 5 files changed, 34 insertions(+), 21 deletions(-) delete mode 100644 .changeset/cuddly-kiwis-drum.md create mode 100644 .changeset/lemon-trains-hang.md diff --git a/.changeset/cuddly-kiwis-drum.md b/.changeset/cuddly-kiwis-drum.md deleted file mode 100644 index 79f6958..0000000 --- a/.changeset/cuddly-kiwis-drum.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"eslint-import-resolver-typescript": patch ---- - -fix: `bun` is unavailable to be detected via `process.versions.bun` w/ `bun eslint` diff --git a/.changeset/lemon-trains-hang.md b/.changeset/lemon-trains-hang.md new file mode 100644 index 0000000..7a616ee --- /dev/null +++ b/.changeset/lemon-trains-hang.md @@ -0,0 +1,9 @@ +--- +"eslint-import-resolver-typescript": minor +--- + +feat: add a new `bun?: boolean` option for `bun` users - close #386 + +`process.versions.bun` is unavailable even with `bun eslint` due to its own design, +but checking `bun` modules for non-bun users is incorrect behavior and just wasting time, +so a new option is added for such case, you can still run with `bun --bun eslint` without this option enabled diff --git a/.size-limit.json b/.size-limit.json index f8a0842..c601a11 100644 --- a/.size-limit.json +++ b/.size-limit.json @@ -1,6 +1,6 @@ [ { "path": "./lib/index.js", - "limit": "1.5kB" + "limit": "1.6kB" } ] diff --git a/src/index.ts b/src/index.ts index 0707327..2574de8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,7 +8,7 @@ import { createFilesMatcher, parseTsconfig, } from 'get-tsconfig' -import { type Version, isBunModule } from 'is-bun-module' +import { type Version, isBunModule, isSupportedNodeModule } from 'is-bun-module' import { ResolverFactory } from 'rspack-resolver' import { stableHash } from 'stable-hash' @@ -60,32 +60,37 @@ export const resolve = ( resolver?: ResolverFactory | null, // eslint-disable-next-line sonarjs/cognitive-complexity ): ResolvedResult => { - // don't worry about core node/bun modules - if ( - module.isBuiltin(source) || - isBunModule(source, process.versions.bun as Version) - ) { - log('matched core:', source) + options ||= {} - return { - found: true, - path: null, + let bunVersion = process.versions.bun as Version | undefined + + // don't worry about bun core modules + if (bunVersion || options.bun) { + bunVersion ??= 'latest' + if ( + isBunModule(source, bunVersion) || + isSupportedNodeModule(source, bunVersion) + ) { + log('matched bun core:', source) + return { found: true, path: null } } + } else if (module.isBuiltin(source)) { + // don't worry about node core modules + log('matched node core:', source) + return { found: true, path: null } } if (process.versions.pnp && source === 'pnpapi') { return { found: true, - path: module.findPnpApi(file).resolveToUnqualified(source, file, { - considerBuiltins: false, - }), + path: module + .findPnpApi(file) + .resolveToUnqualified(source, file, { considerBuiltins: false }), } } source = removeQuerystring(source) - options ||= {} - if (!resolver) { const optionsHash = stableHash(options) const cwd = process.cwd() diff --git a/src/types.ts b/src/types.ts index 1043060..8f255a2 100644 --- a/src/types.ts +++ b/src/types.ts @@ -6,5 +6,9 @@ export interface TypeScriptResolverOptions extends NapiResolveOptions { * @default true - whether to always try to resolve `@types` packages */ alwaysTryTypes?: boolean + /** + * Whether `bun` core modules should be accounted + */ + bun?: boolean noWarnOnMultipleProjects?: boolean }