From 5a287d27776a86e7c812143f3a958bf5c94d9e7b Mon Sep 17 00:00:00 2001 From: hiroki osame Date: Thu, 23 Jun 2022 14:52:31 -0400 Subject: [PATCH] fix(ts): dependency to not resolve using tsconfig paths (#30) --- package.json | 2 +- pnpm-lock.yaml | 8 ++--- src/loaders.ts | 5 +-- .../dependency-resolve-current-directory.ts | 1 + .../dependency-should-not-resolve-baseUrl.ts | 1 + .../dependency-should-not-resolve-paths.ts | 1 + .../resolve-current-directory/lib/file.js | 1 + .../resolve-current-directory/lib/index.js | 1 + .../resolve-current-directory/package.json | 4 +++ .../should-not-resolve-baseUrl/index.js | 3 ++ .../node_modules/resolve-target/index.js | 1 + .../node_modules/resolve-target/package.json | 3 ++ .../should-not-resolve-baseUrl/package.json | 3 ++ .../should-not-resolve-paths/index.js | 3 ++ .../node_modules/p/nested-resolve-target.js | 1 + .../node_modules/p/package.json | 3 ++ .../should-not-resolve-paths/package.json | 3 ++ .../package-module/tsconfig/src/index.ts | 1 + .../tsconfig/src/resolve-target.ts | 2 +- .../src/utils/nested-resolve-target.ts | 2 +- tests/specs/typescript/tsconfig.ts | 33 ++++++++++++++++--- 21 files changed, 68 insertions(+), 14 deletions(-) create mode 100644 tests/fixtures/package-module/tsconfig/dependency-resolve-current-directory.ts create mode 100644 tests/fixtures/package-module/tsconfig/dependency-should-not-resolve-baseUrl.ts create mode 100644 tests/fixtures/package-module/tsconfig/dependency-should-not-resolve-paths.ts create mode 100644 tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/lib/file.js create mode 100644 tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/lib/index.js create mode 100644 tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/package.json create mode 100644 tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/index.js create mode 100644 tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/node_modules/resolve-target/index.js create mode 100644 tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/node_modules/resolve-target/package.json create mode 100644 tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/package.json create mode 100644 tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/index.js create mode 100644 tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/node_modules/p/nested-resolve-target.js create mode 100644 tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/node_modules/p/package.json create mode 100644 tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/package.json create mode 100644 tests/fixtures/package-module/tsconfig/src/index.ts diff --git a/package.json b/package.json index a2518fe..62228e8 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ }, "dependencies": { "@esbuild-kit/core-utils": "^2.0.0", - "get-tsconfig": "^4.0.0" + "get-tsconfig": "^4.0.5" }, "devDependencies": { "@pvtnbr/eslint-config": "^0.22.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aeaf9cf..6a843e7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,7 +8,7 @@ specifiers: eslint: ^8.15.0 execa: ^6.1.0 get-node: ^13.0.1 - get-tsconfig: ^4.0.0 + get-tsconfig: ^4.0.5 manten: ^0.1.0 pkgroll: ^1.3.0 semver: ^7.3.7 @@ -18,7 +18,7 @@ specifiers: dependencies: '@esbuild-kit/core-utils': 2.0.0 - get-tsconfig: 4.0.0 + get-tsconfig: 4.0.5 devDependencies: '@pvtnbr/eslint-config': 0.22.0_4hx5bygx4rxgd7xwyndf6ymwce @@ -2003,8 +2003,8 @@ packages: get-intrinsic: 1.1.1 dev: true - /get-tsconfig/4.0.0: - resolution: {integrity: sha512-WvnskjM5QJbSjuZrJkG3CeIE/ywYjL9/UMYu5dpOa3iD6GjefbQq7J/nrZY4yo6QSYuYwmj7G7Xd9qzCjMMKUw==} + /get-tsconfig/4.0.5: + resolution: {integrity: sha512-UiOHySG2zoM0krlrfJOMQoY5UR1Z57/HjMUJdi7lJHCLKiES9zZsDXtU0BPo2GUI5EqJmNRnqU3FdMjDmf2XaA==} dev: false /glob-parent/5.1.2: diff --git a/src/loaders.ts b/src/loaders.ts index c3f0be3..edaf3e5 100644 --- a/src/loaders.ts +++ b/src/loaders.ts @@ -68,13 +68,13 @@ async function tryDirectory( context: Context, defaultResolve: resolve, ) { - const appendIndex = specifier.endsWith('/') ? 'index' : `${path.sep}index`; + const appendIndex = specifier.endsWith('/') ? 'index' : '/index'; try { return await tryExtensions(specifier + appendIndex, context, defaultResolve); } catch (error: any) { const { message } = error; - error.message = error.message.replace(`${appendIndex}'`, "'"); + error.message = error.message.replace(`${appendIndex.replace('/', path.sep)}'`, "'"); error.stack = error.stack.replace(message, error.message); throw error; } @@ -108,6 +108,7 @@ export const resolve: resolve = async function ( if ( tsconfigPathsMatcher && !isPath // bare specifier + && !context.parentURL?.includes('/node_modules/') ) { const possiblePaths = tsconfigPathsMatcher(specifier); for (const possiblePath of possiblePaths) { diff --git a/tests/fixtures/package-module/tsconfig/dependency-resolve-current-directory.ts b/tests/fixtures/package-module/tsconfig/dependency-resolve-current-directory.ts new file mode 100644 index 0000000..5295f76 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/dependency-resolve-current-directory.ts @@ -0,0 +1 @@ +import 'resolve-current-directory'; diff --git a/tests/fixtures/package-module/tsconfig/dependency-should-not-resolve-baseUrl.ts b/tests/fixtures/package-module/tsconfig/dependency-should-not-resolve-baseUrl.ts new file mode 100644 index 0000000..84f5a67 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/dependency-should-not-resolve-baseUrl.ts @@ -0,0 +1 @@ +import 'should-not-resolve-baseUrl'; diff --git a/tests/fixtures/package-module/tsconfig/dependency-should-not-resolve-paths.ts b/tests/fixtures/package-module/tsconfig/dependency-should-not-resolve-paths.ts new file mode 100644 index 0000000..c8fd4ce --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/dependency-should-not-resolve-paths.ts @@ -0,0 +1 @@ +import 'should-not-resolve-paths'; diff --git a/tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/lib/file.js b/tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/lib/file.js new file mode 100644 index 0000000..8f7bcd3 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/lib/file.js @@ -0,0 +1 @@ +import '.'; diff --git a/tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/lib/index.js b/tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/lib/index.js new file mode 100644 index 0000000..7f2bfb1 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/lib/index.js @@ -0,0 +1 @@ +console.log('resolved'); diff --git a/tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/package.json b/tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/package.json new file mode 100644 index 0000000..f308bc1 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/node_modules/resolve-current-directory/package.json @@ -0,0 +1,4 @@ +{ + "type": "module", + "main": "lib/file.js" +} diff --git a/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/index.js b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/index.js new file mode 100644 index 0000000..4d49952 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/index.js @@ -0,0 +1,3 @@ +import value from 'resolve-target'; + +console.log(value); diff --git a/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/node_modules/resolve-target/index.js b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/node_modules/resolve-target/index.js new file mode 100644 index 0000000..0c47d66 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/node_modules/resolve-target/index.js @@ -0,0 +1 @@ +export default 'resolved'; diff --git a/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/node_modules/resolve-target/package.json b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/node_modules/resolve-target/package.json new file mode 100644 index 0000000..bedb411 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/node_modules/resolve-target/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/package.json b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/package.json new file mode 100644 index 0000000..bedb411 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-baseUrl/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/index.js b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/index.js new file mode 100644 index 0000000..1b9fc00 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/index.js @@ -0,0 +1,3 @@ +import value from 'p/nested-resolve-target'; + +console.log(value); diff --git a/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/node_modules/p/nested-resolve-target.js b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/node_modules/p/nested-resolve-target.js new file mode 100644 index 0000000..0c47d66 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/node_modules/p/nested-resolve-target.js @@ -0,0 +1 @@ +export default 'resolved'; diff --git a/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/node_modules/p/package.json b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/node_modules/p/package.json new file mode 100644 index 0000000..bedb411 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/node_modules/p/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/package.json b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/package.json new file mode 100644 index 0000000..bedb411 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/node_modules/should-not-resolve-paths/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/tests/fixtures/package-module/tsconfig/src/index.ts b/tests/fixtures/package-module/tsconfig/src/index.ts new file mode 100644 index 0000000..f9729c6 --- /dev/null +++ b/tests/fixtures/package-module/tsconfig/src/index.ts @@ -0,0 +1 @@ +console.log('Should not run'); diff --git a/tests/fixtures/package-module/tsconfig/src/resolve-target.ts b/tests/fixtures/package-module/tsconfig/src/resolve-target.ts index 0c47d66..3e88556 100644 --- a/tests/fixtures/package-module/tsconfig/src/resolve-target.ts +++ b/tests/fixtures/package-module/tsconfig/src/resolve-target.ts @@ -1 +1 @@ -export default 'resolved'; +export default 'resolve-target'; diff --git a/tests/fixtures/package-module/tsconfig/src/utils/nested-resolve-target.ts b/tests/fixtures/package-module/tsconfig/src/utils/nested-resolve-target.ts index 0c47d66..65a22c6 100644 --- a/tests/fixtures/package-module/tsconfig/src/utils/nested-resolve-target.ts +++ b/tests/fixtures/package-module/tsconfig/src/utils/nested-resolve-target.ts @@ -1 +1 @@ -export default 'resolved'; +export default 'nested-resolve-target'; diff --git a/tests/specs/typescript/tsconfig.ts b/tests/specs/typescript/tsconfig.ts index 581edce..4155798 100644 --- a/tests/specs/typescript/tsconfig.ts +++ b/tests/specs/typescript/tsconfig.ts @@ -10,33 +10,56 @@ export default testSuite(async ({ describe }, node: NodeApis) => { expect(nodeProcess.stdout).toBe('div null hello world\nnull null goodbye world'); }); - describe('paths', ({ test }) => { + describe('paths', ({ test, describe }) => { test('resolves baseUrl', async () => { const nodeProcess = await node.load('./src/base-url.ts', { cwd: './tsconfig', }); - expect(nodeProcess.stdout).toBe('resolved'); + expect(nodeProcess.stdout).toBe('resolve-target'); }); test('resolves paths exact match', async () => { const nodeProcess = await node.load('./src/paths-exact-match.ts', { cwd: './tsconfig', }); - expect(nodeProcess.stdout).toBe('resolved'); + expect(nodeProcess.stdout).toBe('resolve-target'); }); test('resolves paths prefix', async () => { const nodeProcess = await node.load('./src/paths-prefix-match.ts', { cwd: './tsconfig', }); - expect(nodeProcess.stdout).toBe('resolved'); + expect(nodeProcess.stdout).toBe('nested-resolve-target'); }); test('resolves paths suffix', async () => { const nodeProcess = await node.load('./src/paths-suffix-match.ts', { cwd: './tsconfig', }); - expect(nodeProcess.stdout).toBe('resolved'); + expect(nodeProcess.stdout).toBe('nested-resolve-target'); + }); + + describe('dependency', ({ test }) => { + test('resolve current directory', async () => { + const nodeProcess = await node.load('./dependency-resolve-current-directory', { + cwd: './tsconfig', + }); + expect(nodeProcess.stdout).toBe('resolved'); + }); + + test('should not resolve baseUrl', async () => { + const nodeProcess = await node.load('./dependency-should-not-resolve-baseUrl', { + cwd: './tsconfig', + }); + expect(nodeProcess.stdout).toBe('resolved'); + }); + + test('should not resolve paths', async () => { + const nodeProcess = await node.load('./dependency-should-not-resolve-paths', { + cwd: './tsconfig', + }); + expect(nodeProcess.stdout).toBe('resolved'); + }); }); }); });