From c21f2cd839227b85fbd091a62019b459499a5d2a Mon Sep 17 00:00:00 2001 From: Kiryl Dziamura <2wontem@gmail.com> Date: Fri, 13 Jan 2023 22:18:56 +0100 Subject: [PATCH 1/3] fix(npm): use original node regex in npm resolution --- ext/node/resolution.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/node/resolution.rs b/ext/node/resolution.rs index e930215fd39b5..ff974e150bb29 100644 --- a/ext/node/resolution.rs +++ b/ext/node/resolution.rs @@ -339,7 +339,7 @@ fn resolve_package_target_string( )); } let invalid_segment_re = - Regex::new(r"(^|\|/)(..?|node_modules)(\|/|$)").expect("bad regex"); + Regex::new(r"(^|\\|/)(\.\.?|node_modules)?(\\|/|$)").expect("bad regex"); let pattern_re = Regex::new(r"\*").expect("bad regex"); if !target.starts_with("./") { if internal && !target.starts_with("../") && !target.starts_with('/') { From 7149c7fe3e020e37da7b2357b6f778488ffad240 Mon Sep 17 00:00:00 2001 From: Kiryl Dziamura <2wontem@gmail.com> Date: Fri, 13 Jan 2023 23:29:33 +0100 Subject: [PATCH 2/3] test(npm): test wildcard exports resolution --- cli/tests/testdata/npm/conditional_exports/main.js | 2 ++ cli/tests/testdata/npm/conditional_exports/main.out | 1 + .../npm/registry/@denotest/conditional-exports/1.0.0/foo.js | 3 +++ .../registry/@denotest/conditional-exports/1.0.0/package.json | 3 ++- 4 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/foo.js diff --git a/cli/tests/testdata/npm/conditional_exports/main.js b/cli/tests/testdata/npm/conditional_exports/main.js index a40e2e68932fd..eb243a52c7f43 100644 --- a/cli/tests/testdata/npm/conditional_exports/main.js +++ b/cli/tests/testdata/npm/conditional_exports/main.js @@ -1,10 +1,12 @@ import mod from "npm:@denotest/conditional-exports"; +import foo from "npm:@denotest/conditional-exports/foo.js"; import client from "npm:@denotest/conditional-exports/client"; import clientFoo from "npm:@denotest/conditional-exports/client/foo"; import clientBar from "npm:@denotest/conditional-exports/client/bar"; import supportsESM from "npm:supports-esm"; console.log(mod); +console.log(foo); console.log(client); console.log(clientFoo); console.log(clientBar); diff --git a/cli/tests/testdata/npm/conditional_exports/main.out b/cli/tests/testdata/npm/conditional_exports/main.out index a24f456e30264..b374d9f6c9a95 100644 --- a/cli/tests/testdata/npm/conditional_exports/main.out +++ b/cli/tests/testdata/npm/conditional_exports/main.out @@ -7,6 +7,7 @@ Download http://localhost:4545/npm/registry/@ljharb/has-package-exports-patterns Download http://localhost:4545/npm/registry/has-package-exports/has-package-exports-1.3.0.tgz Download http://localhost:4545/npm/registry/supports-esm/supports-esm-1.0.0.tgz { hello: "from esm" } +{ hello: "from foo" } { hello: "from esm client" } { hello: "from esm client foo" } { hello: "from esm client bar" } diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/foo.js b/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/foo.js new file mode 100644 index 0000000000000..6060c8a673821 --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/foo.js @@ -0,0 +1,3 @@ +export default { + hello: "from foo", +} diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/package.json b/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/package.json index c020158354846..5a2536aa07ea2 100644 --- a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/package.json +++ b/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/package.json @@ -15,6 +15,7 @@ "./client/*": { "types": "./types/src/client/*.d.ts", "import": "./esm/client/*.js" - } + }, + "./*": "./*" } } From 14afa232ad8ff0763243ea8aaaaeadc9b8bc8f32 Mon Sep 17 00:00:00 2001 From: Kiryl Dziamura <2wontem@gmail.com> Date: Fri, 13 Jan 2023 23:38:26 +0100 Subject: [PATCH 3/3] fix(npm): revert the optional regex group --- ext/node/resolution.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/node/resolution.rs b/ext/node/resolution.rs index ff974e150bb29..81a2521b5644f 100644 --- a/ext/node/resolution.rs +++ b/ext/node/resolution.rs @@ -339,7 +339,7 @@ fn resolve_package_target_string( )); } let invalid_segment_re = - Regex::new(r"(^|\\|/)(\.\.?|node_modules)?(\\|/|$)").expect("bad regex"); + Regex::new(r"(^|\\|/)(\.\.?|node_modules)(\\|/|$)").expect("bad regex"); let pattern_re = Regex::new(r"\*").expect("bad regex"); if !target.starts_with("./") { if internal && !target.starts_with("../") && !target.starts_with('/') {