From fc2e00152b162280e78b06028d51274e33275629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Tue, 24 Jan 2023 15:05:54 +0100 Subject: feat: support node built-in module imports (#17264) Co-authored-by: David Sherret --- cli/cache/mod.rs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'cli/cache') 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 { - 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 { -- cgit v1.2.3