summaryrefslogtreecommitdiff
path: root/ext/node/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ext/node/lib.rs')
-rw-r--r--ext/node/lib.rs106
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(())
-}