fix(npm): use original node regex in npm resolution (#17404)

Fixes regex for matching conditional exports in a package.
Updated to the same regex Node.js uses.
This commit is contained in:
Kiryl Dziamura 2023-01-14 00:57:24 +01:00 committed by GitHub
parent b23b4e231c
commit 934ed8e7d1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 9 additions and 2 deletions

View file

@ -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);

View file

@ -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" }

View file

@ -0,0 +1,3 @@
export default {
hello: "from foo",
}

View file

@ -15,6 +15,7 @@
"./client/*": {
"types": "./types/src/client/*.d.ts",
"import": "./esm/client/*.js"
}
},
"./*": "./*"
}
}

View file

@ -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('/') {