From b94482dba619ca3a017a7a8ec0876100d87c7445 Mon Sep 17 00:00:00 2001 From: Hiroki Osame Date: Fri, 28 Jun 2024 21:37:10 +0900 Subject: [PATCH] fix(cjs): implicit resolution to correctly try extensions --- src/cjs/api/resolve-implicit-extensions.ts | 6 ++++-- tests/specs/api.ts | 10 +++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/cjs/api/resolve-implicit-extensions.ts b/src/cjs/api/resolve-implicit-extensions.ts index 400731cd..474026a2 100644 --- a/src/cjs/api/resolve-implicit-extensions.ts +++ b/src/cjs/api/resolve-implicit-extensions.ts @@ -13,9 +13,11 @@ const tryExtensions = ( ...args: Parameters ) => { for (const extension of implicitlyResolvableExtensions) { + const newArgs = args.slice() as Parameters; + newArgs[0] += extension; + try { - args[0] += extension; - return resolve(...args); + return resolve(...newArgs); } catch {} } }; diff --git a/tests/specs/api.ts b/tests/specs/api.ts index bce7f7bb..5354bd2a 100644 --- a/tests/specs/api.ts +++ b/tests/specs/api.ts @@ -286,8 +286,16 @@ export default testSuite(({ describe }, node: NodeApis) => { const { message, async } = api.require('./file', __filename); console.log(message); async.then(m => console.log(m.default)); + + api.require('./tsx?query=1', __filename); + api.require('./jsx', __filename); + api.require('./dir?query=3', __filename); `, ...tsFiles, + + 'tsx.tsx': 'console.log(\'tsx\');', + 'jsx.jsx': 'console.log(\'jsx\');', + 'dir/index.jsx': 'console.log(\'dir\');', }); const { stdout } = await execaNode(fixture.getPath('require.cjs'), [], { @@ -295,7 +303,7 @@ export default testSuite(({ describe }, node: NodeApis) => { nodeOptions: [], }); - expect(stdout).toBe('foo bar json file.ts\nasync'); + expect(stdout).toBe('foo bar json file.ts\ntsx\njsx\ndir\nasync'); }); }); });