From 80cde783081fd4badd326964b4f53cc20a2f1e12 Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger <53019676+kirkwaiblinger@users.noreply.github.com> Date: Sun, 31 Aug 2025 18:47:42 -0600 Subject: [PATCH] add workaround --- .../src/getTSConfigRootDirFromStack.ts | 5 +++++ .../tests/getTsconfigRootDirFromStack.test.ts | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/packages/typescript-eslint/src/getTSConfigRootDirFromStack.ts b/packages/typescript-eslint/src/getTSConfigRootDirFromStack.ts index 1d4c558eabe4..7e3da09e4ec5 100644 --- a/packages/typescript-eslint/src/getTSConfigRootDirFromStack.ts +++ b/packages/typescript-eslint/src/getTSConfigRootDirFromStack.ts @@ -41,6 +41,11 @@ export function getTSConfigRootDirFromStack(): string | undefined { const parsedPath = path.parse(stackFrameFilePath); if (/^eslint\.config\.(c|m)?(j|t)s$/.test(parsedPath.base)) { + if (process.platform === 'win32') { + // workaround for https://github.com/typescript-eslint/typescript-eslint/issues/11530 + // (caused by https://github.com/unjs/jiti/issues/397) + return parsedPath.dir.replaceAll('/', path.sep); + } return parsedPath.dir; } } diff --git a/packages/typescript-eslint/tests/getTsconfigRootDirFromStack.test.ts b/packages/typescript-eslint/tests/getTsconfigRootDirFromStack.test.ts index 8f37d5833df5..92139b45896a 100644 --- a/packages/typescript-eslint/tests/getTsconfigRootDirFromStack.test.ts +++ b/packages/typescript-eslint/tests/getTsconfigRootDirFromStack.test.ts @@ -48,4 +48,26 @@ describe(getTSConfigRootDirFromStack, () => { expect(Error.prepareStackTrace).toBe(dummyFunction); Error.prepareStackTrace = prepareStackTrace; }); + + it.runIf(isWindows)( + 'works when jiti gives non-normalized stack traces on windows', + () => { + vi.spyOn(Error, 'captureStackTrace').mockImplementationOnce( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (target: any, _constructorOpt) => { + target.stack = [ + { + getFileName() { + return 'F:/a/b/eslint.config.ts'; + }, + }, + ]; + }, + ); + + const inferredTsconfigRootDir = getTSConfigRootDirFromStack(); + + expect(inferredTsconfigRootDir).toBe('F:\\a\\b'); + }, + ); });