diff options
Diffstat (limited to 'cli/cache/mod.rs')
-rw-r--r-- | cli/cache/mod.rs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/cli/cache/mod.rs b/cli/cache/mod.rs index 4d255b014..c8fcaa223 100644 --- a/cli/cache/mod.rs +++ b/cli/cache/mod.rs @@ -65,7 +65,7 @@ impl FetchCacher { impl Loader for FetchCacher { fn get_cache_info(&self, specifier: &ModuleSpecifier) -> Option<CacheInfo> { - if specifier.scheme() == "npm" { + if matches!(specifier.scheme(), "npm" | "node") { return None; } @@ -101,7 +101,26 @@ impl Loader for FetchCacher { )); } - let specifier = specifier.clone(); + let specifier = + if let Some(module_name) = specifier.as_str().strip_prefix("node:") { + if module_name == "module" { + // the source code for "node:module" is built-in rather than + // being from deno_std like the other modules + return Box::pin(futures::future::ready(Ok(Some( + deno_graph::source::LoadResponse::External { + specifier: specifier.clone(), + }, + )))); + } + + match crate::node::resolve_builtin_node_module(module_name) { + Ok(specifier) => specifier, + Err(err) => return Box::pin(futures::future::ready(Err(err))), + } + } else { + specifier.clone() + }; + let permissions = if is_dynamic { self.dynamic_permissions.clone() } else { |