From 75209e12f19ca5d4a2a7c9008fba63a487ad8e6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 15 Feb 2023 19:44:52 +0100 Subject: feat: wire up ext/node to the Node compatibility layer (#17785) This PR changes Node.js/npm compatibility layer to use polyfills for built-in Node.js embedded in the snapshot (that are coming from "ext/node" extension). As a result loading `std/node`, either from "https://deno.land/std@/" or from "DENO_NODE_COMPAT_URL" env variable were removed. All code that is imported via "npm:" specifiers now uses code embedded in the snapshot. Several fixes were applied to various modules in "ext/node" to make tests pass. --------- Co-authored-by: Yoshiya Hinosawa Co-authored-by: Divy Srivastava --- cli/cache/mod.rs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'cli/cache/mod.rs') diff --git a/cli/cache/mod.rs b/cli/cache/mod.rs index e1c417c9f..ca03ca940 100644 --- a/cli/cache/mod.rs +++ b/cli/cache/mod.rs @@ -114,18 +114,14 @@ impl Loader for FetchCacher { 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(), - }, - )))); - } - + // Built-in Node modules are embedded in the Deno binary (in V8 snapshot) + // so we don't want them to be loaded by the "deno graph". match crate::node::resolve_builtin_node_module(module_name) { - Ok(specifier) => specifier, + Ok(specifier) => { + return Box::pin(futures::future::ready(Ok(Some( + deno_graph::source::LoadResponse::External { specifier }, + )))) + } Err(err) => return Box::pin(futures::future::ready(Err(err))), } } else { -- cgit v1.2.3