summaryrefslogtreecommitdiff
path: root/cli/cache/mod.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-02-15 19:44:52 +0100
committerGitHub <noreply@github.com>2023-02-15 19:44:52 +0100
commit75209e12f19ca5d4a2a7c9008fba63a487ad8e6a (patch)
treec122feabbceeef070de4d4eb23667c6153ea7eb1 /cli/cache/mod.rs
parentc4b9a91e27a32c0949688034c2449936c01a44a9 (diff)
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@<latest>/" 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 <stibium121@gmail.com> Co-authored-by: Divy Srivastava <dj.srivastava23@gmail.com>
Diffstat (limited to 'cli/cache/mod.rs')
-rw-r--r--cli/cache/mod.rs18
1 files changed, 7 insertions, 11 deletions
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 {