diff --git a/ext/node_resolver/resolution.rs b/ext/node_resolver/resolution.rs index f4b2e8056f8fdc..772bc5d34c4bb9 100644 --- a/ext/node_resolver/resolution.rs +++ b/ext/node_resolver/resolution.rs @@ -597,7 +597,7 @@ impl NodeResolver { for key in imports.keys() { let pattern_index = key.find('*'); if let Some(pattern_index) = pattern_index { - let key_sub = &key[0..=pattern_index]; + let key_sub = &key[0..pattern_index]; if name.starts_with(key_sub) { let pattern_trailer = &key[pattern_index + 1..]; if name.len() > key.len() @@ -607,8 +607,7 @@ impl NodeResolver { { best_match = key; best_match_subpath = Some( - name[pattern_index..=(name.len() - pattern_trailer.len())] - .to_string(), + &name[pattern_index..(name.len() - pattern_trailer.len())], ); } } @@ -620,7 +619,7 @@ impl NodeResolver { let maybe_resolved = self.resolve_package_target( package_json_path.as_ref().unwrap(), target, - &best_match_subpath.unwrap(), + best_match_subpath.unwrap(), best_match, maybe_referrer, referrer_kind, diff --git a/tests/specs/node/imports_wildcard/__test__.jsonc b/tests/specs/node/imports_wildcard/__test__.jsonc new file mode 100644 index 00000000000000..a71e27063108fc --- /dev/null +++ b/tests/specs/node/imports_wildcard/__test__.jsonc @@ -0,0 +1,7 @@ +{ + "envs": { + "DENO_FUTURE": "1" + }, + "args": "run main.mjs", + "output": "main.out" +} diff --git a/tests/specs/node/imports_wildcard/main.mjs b/tests/specs/node/imports_wildcard/main.mjs new file mode 100644 index 00000000000000..e351344cdaa02f --- /dev/null +++ b/tests/specs/node/imports_wildcard/main.mjs @@ -0,0 +1,4 @@ +import { add, subtract } from "package"; + +console.log(add(1, 2)); +console.log(subtract(4, 2)); diff --git a/tests/specs/node/imports_wildcard/main.out b/tests/specs/node/imports_wildcard/main.out new file mode 100644 index 00000000000000..f1e5eeed2d935f --- /dev/null +++ b/tests/specs/node/imports_wildcard/main.out @@ -0,0 +1,2 @@ +3 +2 diff --git a/tests/specs/node/imports_wildcard/node_modules/package/index.js b/tests/specs/node/imports_wildcard/node_modules/package/index.js new file mode 100644 index 00000000000000..9be0146074806a --- /dev/null +++ b/tests/specs/node/imports_wildcard/node_modules/package/index.js @@ -0,0 +1,2 @@ +module.exports.add = require("#add"); +module.exports.subtract = require("#native/subtract"); diff --git a/tests/specs/node/imports_wildcard/node_modules/package/inner/add/index.js b/tests/specs/node/imports_wildcard/node_modules/package/inner/add/index.js new file mode 100644 index 00000000000000..b21ffddbc33ae0 --- /dev/null +++ b/tests/specs/node/imports_wildcard/node_modules/package/inner/add/index.js @@ -0,0 +1,3 @@ +module.exports = function(a, b) { + return a + b; +}; diff --git a/tests/specs/node/imports_wildcard/node_modules/package/native/subtract.js b/tests/specs/node/imports_wildcard/node_modules/package/native/subtract.js new file mode 100644 index 00000000000000..8afc41eb10ed46 --- /dev/null +++ b/tests/specs/node/imports_wildcard/node_modules/package/native/subtract.js @@ -0,0 +1,3 @@ +module.exports = function(a, b) { + return a - b; +}; diff --git a/tests/specs/node/imports_wildcard/node_modules/package/package.json b/tests/specs/node/imports_wildcard/node_modules/package/package.json new file mode 100644 index 00000000000000..c1b2bedf82ca30 --- /dev/null +++ b/tests/specs/node/imports_wildcard/node_modules/package/package.json @@ -0,0 +1,11 @@ +{ + "name": "package", + "imports": { + "#*": { + "default": "./inner/*/index.js" + }, + "#native/*": { + "default": "./native/*.js" + } + } +} \ No newline at end of file diff --git a/tests/specs/node/imports_wildcard/package.json b/tests/specs/node/imports_wildcard/package.json new file mode 100644 index 00000000000000..2c63c0851048d8 --- /dev/null +++ b/tests/specs/node/imports_wildcard/package.json @@ -0,0 +1,2 @@ +{ +}