diff options
Diffstat (limited to 'cli/worker.rs')
-rw-r--r-- | cli/worker.rs | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/cli/worker.rs b/cli/worker.rs index 68f0a2210..3068ab1f7 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -15,6 +15,7 @@ use deno_core::error::AnyError; use deno_core::futures::future::poll_fn; use deno_core::futures::future::FutureExt; use deno_core::url::Url; +use deno_core::JsErrorCreateFn; use deno_core::JsRuntime; use deno_core::ModuleId; use deno_core::ModuleLoader; @@ -48,7 +49,21 @@ impl MainWorker { let module_loader = CliModuleLoader::new(program_state.maybe_import_map.clone()); - Self::from_options(program_state, main_module, permissions, module_loader) + let global_state_ = program_state.clone(); + + let js_error_create_fn = Box::new(move |core_js_error| { + let source_mapped_error = + apply_source_map(&core_js_error, global_state_.clone()); + PrettyJsError::create(source_mapped_error) + }); + + Self::from_options( + program_state, + main_module, + permissions, + module_loader, + Some(js_error_create_fn), + ) } pub fn from_options( @@ -56,19 +71,16 @@ impl MainWorker { main_module: ModuleSpecifier, permissions: Permissions, module_loader: Rc<dyn ModuleLoader>, + js_error_create_fn: Option<Box<JsErrorCreateFn>>, ) -> Self { - let global_state_ = program_state.clone(); - - let js_error_create_fn = Box::new(move |core_js_error| { - let source_mapped_error = - apply_source_map(&core_js_error, global_state_.clone()); - PrettyJsError::create(source_mapped_error) - }); + // TODO(bartlomieju): this is hacky way to not apply source + // maps in JS + let apply_source_maps = js_error_create_fn.is_some(); let mut js_runtime = JsRuntime::new(RuntimeOptions { module_loader: Some(module_loader), startup_snapshot: Some(js::deno_isolate_init()), - js_error_create_fn: Some(js_error_create_fn), + js_error_create_fn, get_error_class_fn: Some(&crate::errors::get_error_class_name), ..Default::default() }); @@ -105,7 +117,7 @@ impl MainWorker { op_state.put::<Permissions>(permissions); } - ops::runtime::init(js_runtime, main_module); + ops::runtime::init(js_runtime, main_module, apply_source_maps); ops::fetch::init(js_runtime, program_state.flags.ca_file.as_deref()); ops::timers::init(js_runtime); ops::worker_host::init(js_runtime, None); |