diff options
Diffstat (limited to 'ext/node/lib.rs')
-rw-r--r-- | ext/node/lib.rs | 106 |
1 files changed, 45 insertions, 61 deletions
diff --git a/ext/node/lib.rs b/ext/node/lib.rs index e9ac8c060..5684bf172 100644 --- a/ext/node/lib.rs +++ b/ext/node/lib.rs @@ -95,6 +95,7 @@ fn op_node_build_os() -> String { deno_core::extension!(deno_node, deps = [ deno_io, deno_fs ], + parameters = [P: NodePermissions], ops = [ crypto::op_node_create_decipheriv, crypto::op_node_cipheriv_encrypt, @@ -119,10 +120,36 @@ deno_core::extension!(deno_node, idna::op_node_idna_punycode_decode, idna::op_node_idna_punycode_encode, op_node_build_os, + + ops::op_require_init_paths, + ops::op_require_node_module_paths<P>, + ops::op_require_proxy_path, + ops::op_require_is_deno_dir_package, + ops::op_require_resolve_deno_dir, + ops::op_require_is_request_relative, + ops::op_require_resolve_lookup_paths, + ops::op_require_try_self_parent_path<P>, + ops::op_require_try_self<P>, + ops::op_require_real_path<P>, + ops::op_require_path_is_absolute, + ops::op_require_path_dirname, + ops::op_require_stat<P>, + ops::op_require_path_resolve, + ops::op_require_path_basename, + ops::op_require_read_file<P>, + ops::op_require_as_file_path, + ops::op_require_resolve_exports<P>, + ops::op_require_read_closest_package_json<P>, + ops::op_require_read_package_scope<P>, + ops::op_require_package_imports_resolve<P>, + ops::op_require_break_on_next_statement, ], - esm_entry_point = "ext:deno_node/module_all.ts", + esm_entry_point = "ext:deno_node/02_init.js", esm = [ dir "polyfills", + "00_globals.js", + "01_require.js", + "02_init.js", "_core.ts", "_events.mjs", "_fs/_fs_access.ts", @@ -305,7 +332,6 @@ deno_core::extension!(deno_node, "internal/util/inspect.mjs", "internal/util/types.ts", "internal/validators.mjs", - "module_all.ts", "net.ts", "os.ts", "path.ts", @@ -344,35 +370,6 @@ deno_core::extension!(deno_node, "worker_threads.ts", "zlib.ts", ], -); - -deno_core::extension!(deno_node_loading, - parameters = [P: NodePermissions], - ops = [ - ops::op_require_init_paths, - ops::op_require_node_module_paths<P>, - ops::op_require_proxy_path, - ops::op_require_is_deno_dir_package, - ops::op_require_resolve_deno_dir, - ops::op_require_is_request_relative, - ops::op_require_resolve_lookup_paths, - ops::op_require_try_self_parent_path<P>, - ops::op_require_try_self<P>, - ops::op_require_real_path<P>, - ops::op_require_path_is_absolute, - ops::op_require_path_dirname, - ops::op_require_stat<P>, - ops::op_require_path_resolve, - ops::op_require_path_basename, - ops::op_require_read_file<P>, - ops::op_require_as_file_path, - ops::op_require_resolve_exports<P>, - ops::op_require_read_closest_package_json<P>, - ops::op_require_read_package_scope<P>, - ops::op_require_package_imports_resolve<P>, - ops::op_require_break_on_next_statement, - ], - esm = ["01_node.js", "02_require.js", "module_es_shim.js"], options = { maybe_npm_resolver: Option<Rc<dyn RequireNpmResolver>>, }, @@ -386,16 +383,24 @@ deno_core::extension!(deno_node_loading, pub fn initialize_runtime( js_runtime: &mut JsRuntime, uses_local_node_modules_dir: bool, + maybe_binary_command_name: Option<String>, ) -> Result<(), AnyError> { + let argv0 = if let Some(binary_command_name) = maybe_binary_command_name { + format!("\"{}\"", binary_command_name) + } else { + "undefined".to_string() + }; let source_code = &format!( - r#"(function loadBuiltinNodeModules(nodeGlobalThisName, usesLocalNodeModulesDir) {{ - Deno[Deno.internal].node.initialize(Deno[Deno.internal].nodeModuleAll, nodeGlobalThisName); - if (usesLocalNodeModulesDir) {{ - Deno[Deno.internal].require.setUsesLocalNodeModulesDir(); - }} - }})('{}', {});"#, + r#"(function loadBuiltinNodeModules(nodeGlobalThisName, usesLocalNodeModulesDir, argv0) {{ + Deno[Deno.internal].node.initialize( + nodeGlobalThisName, + usesLocalNodeModulesDir, + argv0 + ); + }})('{}', {}, {});"#, NODE_GLOBAL_THIS_NAME.as_str(), uses_local_node_modules_dir, + argv0 ); js_runtime.execute_script(&located_script_name!(), source_code)?; @@ -413,12 +418,9 @@ pub fn load_cjs_module( } 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});"#, + r#"(function loadCjsModule(moduleName, isMain, inspectBrk) {{ + Deno[Deno.internal].node.loadCjsModule(moduleName, isMain, inspectBrk); + }})('{module}', {main}, {inspect_brk});"#, main = main, module = escape_for_single_quote_string(module), inspect_brk = inspect_brk, @@ -427,21 +429,3 @@ pub fn load_cjs_module( js_runtime.execute_script(&located_script_name!(), source_code)?; Ok(()) } - -pub 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#"(function initializeBinaryCommand(binaryName) {{ - const process = Deno[Deno.internal].node.globalThis.process; - Object.defineProperty(process.argv, "0", {{ - get: () => binaryName, - }}); - }})('{binary_name}');"#, - ); - - js_runtime.execute_script(&located_script_name!(), source_code)?; - Ok(()) -} |