diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-05-10 23:55:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-10 23:55:48 +0200 |
commit | e72485fb1776d2ffebd90ff716374edfba42d603 (patch) | |
tree | a5176ee6ee23c0fcbdab1290cff02e68003c0f01 | |
parent | ec67e96a124398a2eb12ed8721076ad0147be113 (diff) |
fix(node): conditional exports edge case (#19082)
Fixes https://github.com/denoland/deno/issues/18743
5 files changed, 8 insertions, 1 deletions
diff --git a/cli/tests/testdata/npm/conditional_exports/main.js b/cli/tests/testdata/npm/conditional_exports/main.js index eb243a52c..52b78bc22 100644 --- a/cli/tests/testdata/npm/conditional_exports/main.js +++ b/cli/tests/testdata/npm/conditional_exports/main.js @@ -3,6 +3,7 @@ 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 clientM from "npm:@denotest/conditional-exports/client/m"; import supportsESM from "npm:supports-esm"; console.log(mod); @@ -10,4 +11,5 @@ console.log(foo); console.log(client); console.log(clientFoo); console.log(clientBar); +console.log(clientM); console.log(supportsESM); diff --git a/cli/tests/testdata/npm/conditional_exports/main.out b/cli/tests/testdata/npm/conditional_exports/main.out index b374d9f6c..9f65c1f9a 100644 --- a/cli/tests/testdata/npm/conditional_exports/main.out +++ b/cli/tests/testdata/npm/conditional_exports/main.out @@ -11,4 +11,5 @@ Download http://localhost:4545/npm/registry/supports-esm/supports-esm-1.0.0.tgz { hello: "from esm client" } { hello: "from esm client foo" } { hello: "from esm client bar" } +{ hello: "from esm client m" } true diff --git a/cli/tests/testdata/npm/conditional_exports/main_node_modules.out b/cli/tests/testdata/npm/conditional_exports/main_node_modules.out index 525f31d5c..94ce95581 100644 --- a/cli/tests/testdata/npm/conditional_exports/main_node_modules.out +++ b/cli/tests/testdata/npm/conditional_exports/main_node_modules.out @@ -15,4 +15,5 @@ Initialize supports-esm@1.0.0 { hello: "from esm client" } { hello: "from esm client foo" } { hello: "from esm client bar" } +{ hello: "from esm client m" } true diff --git a/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/m.js b/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/m.js new file mode 100644 index 000000000..40e769031 --- /dev/null +++ b/cli/tests/testdata/npm/registry/@denotest/conditional-exports/1.0.0/esm/client/m.js @@ -0,0 +1,3 @@ +export default { + hello: "from esm client m", +}
\ No newline at end of file diff --git a/ext/node/resolution.rs b/ext/node/resolution.rs index 16720f22c..966491505 100644 --- a/ext/node/resolution.rs +++ b/ext/node/resolution.rs @@ -922,7 +922,7 @@ impl NodeResolver { // emitTrailingSlashPatternDeprecation(); } let pattern_trailer = &key[pattern_index + 1..]; - if package_subpath.len() > key.len() + if package_subpath.len() >= key.len() && package_subpath.ends_with(&pattern_trailer) && pattern_key_compare(best_match, key) == 1 && key.rfind('*') == Some(pattern_index) |