diff options
Diffstat (limited to 'cli/node/mod.rs')
-rw-r--r-- | cli/node/mod.rs | 90 |
1 files changed, 4 insertions, 86 deletions
diff --git a/cli/node/mod.rs b/cli/node/mod.rs index dffcb7437..c5d3de968 100644 --- a/cli/node/mod.rs +++ b/cli/node/mod.rs @@ -13,11 +13,11 @@ use deno_core::anyhow::bail; use deno_core::anyhow::Context; use deno_core::error::generic_error; use deno_core::error::AnyError; -use deno_core::located_script_name; use deno_core::serde_json::Value; use deno_core::url::Url; -use deno_core::JsRuntime; +use deno_runtime::deno_node; use deno_runtime::deno_node::errors; +use deno_runtime::deno_node::find_builtin_node_module; use deno_runtime::deno_node::get_closest_package_json; use deno_runtime::deno_node::legacy_main_resolve; use deno_runtime::deno_node::package_exports_resolve; @@ -25,7 +25,6 @@ use deno_runtime::deno_node::package_imports_resolve; 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; @@ -33,8 +32,6 @@ use deno_runtime::deno_node::PackageJson; use deno_runtime::deno_node::PathClean; use deno_runtime::deno_node::RequireNpmResolver; use deno_runtime::deno_node::DEFAULT_CONDITIONS; -use deno_runtime::deno_node::NODE_GLOBAL_THIS_NAME; -use deno_runtime::deno_node::SUPPORTED_BUILTIN_NODE_MODULES; use deno_runtime::permissions::PermissionsContainer; use once_cell::sync::Lazy; use regex::Regex; @@ -123,16 +120,6 @@ static NODE_COMPAT_URL: Lazy<Url> = Lazy::new(|| { pub static MODULE_ALL_URL: Lazy<Url> = Lazy::new(|| NODE_COMPAT_URL.join("node/module_all.ts").unwrap()); -fn find_builtin_node_module(specifier: &str) -> Option<&NodeModulePolyfill> { - SUPPORTED_BUILTIN_NODE_MODULES - .iter() - .find(|m| m.name == specifier) -} - -fn is_builtin_node_module(specifier: &str) -> bool { - find_builtin_node_module(specifier).is_some() -} - pub fn resolve_builtin_node_module(specifier: &str) -> Result<Url, AnyError> { if let Some(module) = find_builtin_node_module(specifier) { match module.specifier { @@ -203,49 +190,6 @@ static RESERVED_WORDS: Lazy<HashSet<&str>> = Lazy::new(|| { ]) }); -pub async fn initialize_runtime( - js_runtime: &mut JsRuntime, - uses_local_node_modules_dir: bool, -) -> Result<(), AnyError> { - let source_code = &format!( - r#"(async function loadBuiltinNodeModules(moduleAllUrl, nodeGlobalThisName, usesLocalNodeModulesDir) {{ - const moduleAll = await import(moduleAllUrl); - Deno[Deno.internal].node.initialize(moduleAll.default, nodeGlobalThisName); - if (usesLocalNodeModulesDir) {{ - Deno[Deno.internal].require.setUsesLocalNodeModulesDir(); - }} - }})('{}', '{}', {});"#, - MODULE_ALL_URL.as_str(), - NODE_GLOBAL_THIS_NAME.as_str(), - uses_local_node_modules_dir, - ); - - let value = - js_runtime.execute_script(&located_script_name!(), source_code)?; - js_runtime.resolve_value(value).await?; - Ok(()) -} - -pub async fn initialize_binary_command( - js_runtime: &mut JsRuntime, - binary_name: &str, -) -> Result<(), AnyError> { - // overwrite what's done in deno_std in order to set the binary arg name - let source_code = &format!( - r#"(async function initializeBinaryCommand(binaryName) {{ - const process = Deno[Deno.internal].node.globalThis.process; - Object.defineProperty(process.argv, "0", {{ - get: () => binaryName, - }}); - }})('{binary_name}');"#, - ); - - let value = - js_runtime.execute_script(&located_script_name!(), source_code)?; - js_runtime.resolve_value(value).await?; - Ok(()) -} - /// This function is an implementation of `defaultResolve` in /// `lib/internal/modules/esm/resolve.js` from Node. pub fn node_resolve( @@ -258,7 +202,7 @@ pub fn node_resolve( // Note: if we are here, then the referrer is an esm module // TODO(bartlomieju): skipped "policy" part as we don't plan to support it - if is_builtin_node_module(specifier) { + if deno_node::is_builtin_node_module(specifier) { return Ok(Some(NodeResolution::BuiltIn(specifier.to_string()))); } @@ -273,7 +217,7 @@ pub fn node_resolve( let split_specifier = url.as_str().split(':'); let specifier = split_specifier.skip(1).collect::<String>(); - if is_builtin_node_module(&specifier) { + if deno_node::is_builtin_node_module(&specifier) { return Ok(Some(NodeResolution::BuiltIn(specifier))); } } @@ -451,32 +395,6 @@ fn resolve_bin_entry_value<'a>( } } -pub fn load_cjs_module_from_ext_node( - js_runtime: &mut JsRuntime, - module: &str, - main: bool, - inspect_brk: bool, -) -> Result<(), AnyError> { - fn escape_for_single_quote_string(text: &str) -> String { - text.replace('\\', r"\\").replace('\'', r"\'") - } - - let source_code = &format!( - r#"(function loadCjsModule(module, inspectBrk) {{ - if (inspectBrk) {{ - Deno[Deno.internal].require.setInspectBrk(); - }} - Deno[Deno.internal].require.Module._load(module, null, {main}); - }})('{module}', {inspect_brk});"#, - main = main, - module = escape_for_single_quote_string(module), - inspect_brk = inspect_brk, - ); - - js_runtime.execute_script(&located_script_name!(), source_code)?; - Ok(()) -} - fn package_config_resolve( package_subpath: &str, package_dir: &Path, |