From 9853c96cc4686a6cd1ffa1e9081c012b8df72ff7 Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Wed, 27 Apr 2022 00:06:10 +0100 Subject: refactor: Remove PrettyJsError and js_error_create_fn (#14378) This commit: - removes "fmt_errors::PrettyJsError" in favor of "format_js_error" fn - removes "deno_core::JsError::create" and "deno_core::RuntimeOptions::js_error_create_fn" - adds new option to "deno_runtime::ops::worker_host::init" --- runtime/ops/worker_host.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'runtime/ops') diff --git a/runtime/ops/worker_host.rs b/runtime/ops/worker_host.rs index 6c691c5a0..23ffcd8b1 100644 --- a/runtime/ops/worker_host.rs +++ b/runtime/ops/worker_host.rs @@ -11,6 +11,7 @@ use crate::web_worker::WebWorkerHandle; use crate::web_worker::WebWorkerType; use crate::web_worker::WorkerControlEvent; use crate::web_worker::WorkerId; +use crate::worker::FormatJsErrorFn; use deno_core::error::AnyError; use deno_core::futures::future::LocalFutureObj; use deno_core::op; @@ -54,6 +55,9 @@ pub type PreloadModuleCb = dyn Fn(WebWorker) -> LocalFutureObj<'static, Result); +#[derive(Clone)] +pub struct FormatJsErrorFnHolder(Option>); + /// A holder for callback that can used to preload some modules into a WebWorker /// before actual worker code is executed. It's a struct instead of a type /// because `GothamState` used in `OpState` overrides @@ -106,6 +110,7 @@ pub type WorkersTable = HashMap; pub fn init( create_web_worker_cb: Arc, preload_module_cb: Arc, + format_js_error_fn: Option>, ) -> Extension { Extension::builder() .state(move |state| { @@ -118,6 +123,9 @@ pub fn init( let preload_module_cb_holder = PreloadModuleCbHolder(preload_module_cb.clone()); state.put::(preload_module_cb_holder); + let format_js_error_fn_holder = + FormatJsErrorFnHolder(format_js_error_fn.clone()); + state.put::(format_js_error_fn_holder); Ok(()) }) @@ -193,6 +201,8 @@ fn op_create_worker( state.put::(create_web_worker_cb.clone()); let preload_module_cb = state.take::(); state.put::(preload_module_cb.clone()); + let format_js_error_fn = state.take::(); + state.put::(format_js_error_fn.clone()); state.put::(worker_id.next().unwrap()); let module_specifier = deno_core::resolve_url(&specifier)?; @@ -238,6 +248,7 @@ fn op_create_worker( module_specifier, maybe_source_code, preload_module_cb.0, + format_js_error_fn.0, ) })?; -- cgit v1.2.3