mirror of
https://github.com/denoland/deno.git
synced 2025-08-04 02:48:24 +00:00
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>
This commit is contained in:
parent
c4b9a91e27
commit
75209e12f1
27 changed files with 216 additions and 301 deletions
18
cli/cache/mod.rs
vendored
18
cli/cache/mod.rs
vendored
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue