diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-02-23 09:48:29 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-23 09:48:29 -0500 |
commit | 998aeff3d428ab28351f03129023850abb0b5bbe (patch) | |
tree | 0adb8127c920d3ddbf33f7fbf6679eeb79ba165d /cli/proc_state.rs | |
parent | 6de815859b65a8fb03b6b00f6d26c93d3b6cf820 (diff) |
feat(npm): support npm specifiers in remote modules without `--unstable` (#17889)
Closes #17455
Diffstat (limited to 'cli/proc_state.rs')
-rw-r--r-- | cli/proc_state.rs | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/cli/proc_state.rs b/cli/proc_state.rs index 2070b14c6..3f360fd9c 100644 --- a/cli/proc_state.rs +++ b/cli/proc_state.rs @@ -497,39 +497,27 @@ impl ProcState { let graph_data = self.graph_data.read(); let graph = &graph_data.graph; let maybe_resolved = match graph.get(&referrer) { - Some(Module::Esm(module)) => module - .dependencies - .get(specifier) - .map(|d| (&module.specifier, &d.maybe_code)), + Some(Module::Esm(module)) => { + module.dependencies.get(specifier).map(|d| &d.maybe_code) + } _ => None, }; match maybe_resolved { - Some((found_referrer, Resolution::Ok(resolved))) => { + Some(Resolution::Ok(resolved)) => { let specifier = &resolved.specifier; return match graph.get(specifier) { - Some(Module::Npm(module)) => { - if !self.options.unstable() - && matches!(found_referrer.scheme(), "http" | "https") - { - return Err(custom_error( - "NotSupported", - format!("importing npm specifiers in remote modules requires the --unstable flag (referrer: {found_referrer})"), - )); - } - - self - .handle_node_resolve_result(node::node_resolve_npm_reference( - &module.nv_reference, - NodeResolutionMode::Execution, - &self.npm_resolver, - permissions, - )) - .with_context(|| { - format!("Could not resolve '{}'.", module.nv_reference) - }) - } + Some(Module::Npm(module)) => self + .handle_node_resolve_result(node::node_resolve_npm_reference( + &module.nv_reference, + NodeResolutionMode::Execution, + &self.npm_resolver, + permissions, + )) + .with_context(|| { + format!("Could not resolve '{}'.", module.nv_reference) + }), Some(Module::Node(module)) => { node::resolve_builtin_node_module(&module.module_name) } @@ -539,13 +527,13 @@ impl ProcState { None => Ok(specifier.clone()), }; } - Some((_, Resolution::Err(err))) => { + Some(Resolution::Err(err)) => { return Err(custom_error( "TypeError", format!("{}\n", err.to_string_with_range()), )) } - Some((_, Resolution::None)) | None => {} + Some(Resolution::None) | None => {} } } |