mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 12:19:12 +00:00
refactor(ext/node): untangle dependencies between js files (#18284)
Moving some code around in `ext/node` is it's a bit better well defined and makes it possible for others to embed it. I expect to see no difference in startup perf with this change.
This commit is contained in:
parent
d78db7c091
commit
cd53ab5427
16 changed files with 385 additions and 395 deletions
106
ext/node/lib.rs
106
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(())
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue