From a876bc4efa1a969418d5897302b1b60df31ecb0e Mon Sep 17 00:00:00 2001 From: Remus Mate Date: Sat, 7 Jan 2023 16:37:45 +1100 Subject: [PATCH 1/2] test: add failing test for resolveModuleExportNames --- .gitignore | 1 + test/exports.test.ts | 14 ++++++++++++++ test/fixture/package/exports.mjs | 1 + .../node_modules/react-router-dom/package.json | 12 ++++++++++++ .../node_modules/react-router-dom/server.js | 13 +++++++++++++ .../node_modules/react-router-dom/server.mjs | 7 +++++++ test/fixture/package/package.json | 5 +++++ 7 files changed, 53 insertions(+) create mode 100644 test/fixture/package/exports.mjs create mode 100644 test/fixture/package/node_modules/react-router-dom/package.json create mode 100644 test/fixture/package/node_modules/react-router-dom/server.js create mode 100644 test/fixture/package/node_modules/react-router-dom/server.mjs create mode 100644 test/fixture/package/package.json diff --git a/.gitignore b/.gitignore index d4d7e3f..3a351d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules +!test/fixture/package/node_modules dist *.log diff --git a/test/exports.test.ts b/test/exports.test.ts index 6bee5c9..2b67432 100644 --- a/test/exports.test.ts +++ b/test/exports.test.ts @@ -280,6 +280,20 @@ describe("resolveModuleExportNames", () => { `); }); + it("star exports with package", async () => { + expect( + await resolveModuleExportNames( + new URL("fixture/package/exports.mjs", import.meta.url).toString() + ) + ).toMatchInlineSnapshot(` + [ + "StaticRouter", + "unstable_StaticRouterProvider", + "unstable_createStaticRouter", + ] + `); + }); + it("multiple inline", () => { const code = ` export { foo } from 'foo1';export { bar } from 'foo2';export * as foobar from 'foo2'; diff --git a/test/fixture/package/exports.mjs b/test/fixture/package/exports.mjs new file mode 100644 index 0000000..1f1edfb --- /dev/null +++ b/test/fixture/package/exports.mjs @@ -0,0 +1 @@ +export * from "react-router-dom/server"; diff --git a/test/fixture/package/node_modules/react-router-dom/package.json b/test/fixture/package/node_modules/react-router-dom/package.json new file mode 100644 index 0000000..9db4895 --- /dev/null +++ b/test/fixture/package/node_modules/react-router-dom/package.json @@ -0,0 +1,12 @@ +{ + "name": "react-router-dom", + "version": "6.4.3", + "sideEffects": false, + "main": "./dist/main.js", + "module": "./dist/index.js", + "files": [ + "dist/", + "server.js", + "server.mjs" + ] +} diff --git a/test/fixture/package/node_modules/react-router-dom/server.js b/test/fixture/package/node_modules/react-router-dom/server.js new file mode 100644 index 0000000..3bb6709 --- /dev/null +++ b/test/fixture/package/node_modules/react-router-dom/server.js @@ -0,0 +1,13 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); + +function StaticRouter() {} + +function unstable_StaticRouterProvider() {} + +function unstable_createStaticRouter() {} + +exports.StaticRouter = StaticRouter; +exports.unstable_StaticRouterProvider = unstable_StaticRouterProvider; +exports.unstable_createStaticRouter = unstable_createStaticRouter; diff --git a/test/fixture/package/node_modules/react-router-dom/server.mjs b/test/fixture/package/node_modules/react-router-dom/server.mjs new file mode 100644 index 0000000..ea91abe --- /dev/null +++ b/test/fixture/package/node_modules/react-router-dom/server.mjs @@ -0,0 +1,7 @@ +function StaticRouter() {} + +function unstable_StaticRouterProvider() {} + +function unstable_createStaticRouter() {} + +export { StaticRouter, unstable_StaticRouterProvider, unstable_createStaticRouter }; diff --git a/test/fixture/package/package.json b/test/fixture/package/package.json new file mode 100644 index 0000000..e68c717 --- /dev/null +++ b/test/fixture/package/package.json @@ -0,0 +1,5 @@ +{ + "name": "package", + "private": true, + "dependencies": {} +} From 3e269dbde5a3f0fa99daa5f7c6eb3236c1ad958b Mon Sep 17 00:00:00 2001 From: Remus Mate Date: Sat, 7 Jan 2023 16:50:14 +1100 Subject: [PATCH 2/2] fix(resolve): stop searching when module is resolved --- src/resolve.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/resolve.ts b/src/resolve.ts index 60a5670..5ea065d 100644 --- a/src/resolve.ts +++ b/src/resolve.ts @@ -104,6 +104,9 @@ function _resolve(id: string, options: ResolveOptions = {}): string { break; } } + if (resolved) { + break; + } } // Throw error if not found