diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/state.rs | 8 | ||||
-rw-r--r-- | cli/worker.rs | 24 |
2 files changed, 23 insertions, 9 deletions
diff --git a/cli/state.rs b/cli/state.rs index e1480c027..eb912161d 100644 --- a/cli/state.rs +++ b/cli/state.rs @@ -118,9 +118,9 @@ impl Loader for ThreadSafeState { &self, specifier: &str, referrer: &str, - is_root: bool, + is_main: bool, ) -> Result<ModuleSpecifier, ErrBox> { - if !is_root { + if !is_main { if let Some(import_map) = &self.import_map { let result = import_map.resolve(specifier, referrer)?; if result.is_some() { @@ -138,12 +138,14 @@ impl Loader for ThreadSafeState { module_specifier: &ModuleSpecifier, ) -> Box<deno::SourceCodeInfoFuture> { self.metrics.resolve_count.fetch_add(1, Ordering::SeqCst); + let module_url_specified = module_specifier.to_string(); Box::new(self.fetch_compiled_module(module_specifier).map( |compiled_module| deno::SourceCodeInfo { // Real module name, might be different from initial specifier // due to redirections. code: compiled_module.code, - module_name: compiled_module.name, + module_url_specified, + module_url_found: compiled_module.name, }, )) } diff --git a/cli/worker.rs b/cli/worker.rs index f707f4a58..db948cc3c 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -5,6 +5,7 @@ use crate::tokio_util; use deno; use deno::ErrBox; use deno::ModuleSpecifier; +use deno::RecursiveLoad; use deno::StartupData; use futures::Async; use futures::Future; @@ -28,10 +29,24 @@ impl Worker { let isolate = Arc::new(Mutex::new(deno::Isolate::new(startup_data, false))); { let mut i = isolate.lock().unwrap(); + let state_ = state.clone(); i.set_dispatch(move |op_id, control_buf, zero_copy_buf| { state_.dispatch(op_id, control_buf, zero_copy_buf) }); + + let state_ = state.clone(); + i.set_dyn_import(move |id, specifier, referrer| { + let load_stream = RecursiveLoad::dynamic_import( + id, + specifier, + referrer, + state_.clone(), + state_.modules.clone(), + ); + Box::new(load_stream) + }); + let state_ = state.clone(); i.set_js_error_create(move |v8_exception| { JSError::from_v8_exception(v8_exception, &state_.ts_compiler) @@ -66,12 +81,9 @@ impl Worker { let loader = self.state.clone(); let isolate = self.isolate.clone(); let modules = self.state.modules.clone(); - let recursive_load = deno::RecursiveLoad::new( - &module_specifier.to_string(), - loader, - isolate, - modules, - ); + let recursive_load = + RecursiveLoad::main(&module_specifier.to_string(), loader, modules) + .get_future(isolate); recursive_load.and_then(move |id| -> Result<(), ErrBox> { worker.state.progress.done(); if is_prefetch { |