diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/module_loader.rs | 12 | ||||
-rw-r--r-- | cli/node/mod.rs | 21 |
2 files changed, 17 insertions, 16 deletions
diff --git a/cli/module_loader.rs b/cli/module_loader.rs index 112f29170..b61b4304e 100644 --- a/cli/module_loader.rs +++ b/cli/module_loader.rs @@ -77,13 +77,11 @@ impl CliModuleLoader { specifier: &ModuleSpecifier, maybe_referrer: Option<ModuleSpecifier>, ) -> Result<ModuleCodeSource, AnyError> { - if specifier.as_str() == "node:module" { - return Ok(ModuleCodeSource { - code: deno_runtime::deno_node::MODULE_ES_SHIM.to_string(), - found_url: specifier.to_owned(), - media_type: MediaType::JavaScript, - }); - } + // TODO(bartlomieju): uncomment, when all `node:` module have been + // snapshotted + // if specifier.scheme() == "node" { + // unreachable!("Node built-in modules should be handled internally."); + // } let graph = self.ps.graph(); match graph.get(specifier) { Some(deno_graph::Module { diff --git a/cli/node/mod.rs b/cli/node/mod.rs index 9ab593304..dffcb7437 100644 --- a/cli/node/mod.rs +++ b/cli/node/mod.rs @@ -26,6 +26,7 @@ use deno_runtime::deno_node::package_resolve; use deno_runtime::deno_node::path_to_declaration_path; use deno_runtime::deno_node::NodeModuleKind; use deno_runtime::deno_node::NodeModulePolyfill; +use deno_runtime::deno_node::NodeModulePolyfillSpecifier; use deno_runtime::deno_node::NodePermissions; use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::PackageJson; @@ -133,16 +134,18 @@ fn is_builtin_node_module(specifier: &str) -> bool { } pub fn resolve_builtin_node_module(specifier: &str) -> Result<Url, AnyError> { - // NOTE(bartlomieju): `module` is special, because we don't want to use - // `deno_std/node/module.ts`, but instead use a special shim that we - // provide in `ext/node`. - if specifier == "module" { - return Ok(Url::parse("node:module").unwrap()); - } - if let Some(module) = find_builtin_node_module(specifier) { - let module_url = NODE_COMPAT_URL.join(module.specifier).unwrap(); - return Ok(module_url); + match module.specifier { + // We will load the source code from the `std/node` polyfill. + NodeModulePolyfillSpecifier::StdNode(specifier) => { + let module_url = NODE_COMPAT_URL.join(specifier).unwrap(); + return Ok(module_url); + } + // The module has already been snapshotted and is present in the binary. + NodeModulePolyfillSpecifier::Embedded(specifier) => { + return Ok(ModuleSpecifier::parse(specifier).unwrap()); + } + } } Err(generic_error(format!( |