From b6a3f8f722db89bc136e91da598f581c5838d38e Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Sun, 28 May 2023 19:44:41 +0100 Subject: refactor(core): remove ext: modules from the module map (#19040) Rather than disallowing `ext:` resolution, clear the module map after initializing extensions so extension modules are anonymized. This operation is explicitly called in `deno_runtime`. Re-inject `node:` specifiers into the module map after doing this. Fixes #17717. --- runtime/web_worker.rs | 2 ++ runtime/worker.rs | 12 ++++++++++++ 2 files changed, 14 insertions(+) (limited to 'runtime') diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index 01262abcf..36f9718b5 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -4,6 +4,7 @@ use crate::inspector_server::InspectorServer; use crate::ops; use crate::permissions::PermissionsContainer; use crate::tokio_util::create_and_run_current_thread; +use crate::worker::init_runtime_module_map; use crate::worker::FormatJsErrorFn; use crate::BootstrapOptions; use deno_broadcast_channel::InMemoryBroadcastChannel; @@ -495,6 +496,7 @@ impl WebWorker { inspector: options.maybe_inspector_server.is_some(), ..Default::default() }); + init_runtime_module_map(&mut js_runtime); if let Some(server) = options.maybe_inspector_server.clone() { server.register_inspector( diff --git a/runtime/worker.rs b/runtime/worker.rs index ae6bd717f..0e62decb4 100644 --- a/runtime/worker.rs +++ b/runtime/worker.rs @@ -57,6 +57,17 @@ impl ExitCode { self.0.store(code, Relaxed); } } + +/// Clear extension modules from the module map, except preserve `ext:deno_node` +/// modules as `node:` specifiers. +pub fn init_runtime_module_map(js_runtime: &mut JsRuntime) { + js_runtime.clear_module_map( + deno_node::SUPPORTED_BUILTIN_NODE_MODULES + .iter() + .map(|p| (p.ext_specifier, p.specifier)), + ); +} + /// This worker is created and used by almost all /// subcommands in Deno executable. /// @@ -319,6 +330,7 @@ impl MainWorker { is_main: true, ..Default::default() }); + init_runtime_module_map(&mut js_runtime); if let Some(server) = options.maybe_inspector_server.clone() { server.register_inspector( -- cgit v1.2.3