From 3df8f1650039e9453056d516744e755d6be8801b Mon Sep 17 00:00:00 2001 From: Leo Kettmeir Date: Sat, 12 Oct 2024 08:20:17 -0700 Subject: refactor(ext/broadcastchannel): use concrete error type (#26105) --- runtime/errors.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'runtime/errors.rs') diff --git a/runtime/errors.rs b/runtime/errors.rs index 694402773..476aae63b 100644 --- a/runtime/errors.rs +++ b/runtime/errors.rs @@ -9,6 +9,7 @@ //! Diagnostics are compile-time type errors, whereas JsErrors are runtime //! exceptions. +use deno_broadcast_channel::BroadcastChannelError; use deno_core::error::AnyError; use deno_core::serde_json; use deno_core::url; @@ -153,12 +154,29 @@ pub fn get_nix_error_class(error: &nix::Error) -> &'static str { } } +fn get_broadcast_channel_error(error: &BroadcastChannelError) -> &'static str { + match error { + BroadcastChannelError::Resource(err) => { + deno_core::error::get_custom_error_class(err).unwrap() + } + BroadcastChannelError::MPSCSendError(_) => "Error", + BroadcastChannelError::BroadcastSendError(_) => "Error", + BroadcastChannelError::Other(err) => { + get_error_class_name(err).unwrap_or("Error") + } + } +} + pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> { deno_core::error::get_custom_error_class(e) .or_else(|| deno_webgpu::error::get_error_class_name(e)) .or_else(|| deno_web::get_error_class_name(e)) .or_else(|| deno_webstorage::get_not_supported_error_class_name(e)) .or_else(|| deno_websocket::get_network_error_class_name(e)) + .or_else(|| { + e.downcast_ref::() + .map(get_broadcast_channel_error) + }) .or_else(|| { e.downcast_ref::() .map(get_dlopen_error_class) -- cgit v1.2.3 From 938a8ebe347639c07042768e97969b75cc600e16 Mon Sep 17 00:00:00 2001 From: Leo Kettmeir Date: Sat, 12 Oct 2024 09:15:10 -0700 Subject: refactor(ext/cache): use concrete error type (#26109) --- runtime/errors.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'runtime/errors.rs') diff --git a/runtime/errors.rs b/runtime/errors.rs index 476aae63b..59928965b 100644 --- a/runtime/errors.rs +++ b/runtime/errors.rs @@ -10,6 +10,7 @@ //! exceptions. use deno_broadcast_channel::BroadcastChannelError; +use deno_cache::CacheError; use deno_core::error::AnyError; use deno_core::serde_json; use deno_core::url; @@ -154,6 +155,18 @@ pub fn get_nix_error_class(error: &nix::Error) -> &'static str { } } +pub fn get_cache_error(error: &CacheError) -> &'static str { + match error { + CacheError::Sqlite(_) => "Error", + CacheError::JoinError(_) => "Error", + CacheError::Resource(err) => { + deno_core::error::get_custom_error_class(err).unwrap_or("Error") + } + CacheError::Other(e) => get_error_class_name(e).unwrap_or("Error"), + CacheError::Io(err) => get_io_error_class(err), + } +} + fn get_broadcast_channel_error(error: &BroadcastChannelError) -> &'static str { match error { BroadcastChannelError::Resource(err) => { @@ -173,6 +186,7 @@ pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> { .or_else(|| deno_web::get_error_class_name(e)) .or_else(|| deno_webstorage::get_not_supported_error_class_name(e)) .or_else(|| deno_websocket::get_network_error_class_name(e)) + .or_else(|| e.downcast_ref::().map(get_cache_error)) .or_else(|| { e.downcast_ref::() .map(get_broadcast_channel_error) -- cgit v1.2.3 From 8b2c6fc2d22f0a62ceefa71ff739f81796142699 Mon Sep 17 00:00:00 2001 From: Leo Kettmeir Date: Sat, 12 Oct 2024 10:00:35 -0700 Subject: refactor(ext/canvas): use concrete error type (#26111) --- runtime/errors.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'runtime/errors.rs') diff --git a/runtime/errors.rs b/runtime/errors.rs index 59928965b..daec653d1 100644 --- a/runtime/errors.rs +++ b/runtime/errors.rs @@ -11,6 +11,7 @@ use deno_broadcast_channel::BroadcastChannelError; use deno_cache::CacheError; +use deno_canvas::CanvasError; use deno_core::error::AnyError; use deno_core::serde_json; use deno_core::url; @@ -155,6 +156,13 @@ pub fn get_nix_error_class(error: &nix::Error) -> &'static str { } } +fn get_canvas_error(e: &CanvasError) -> &'static str { + match e { + CanvasError::UnsupportedColorType(_) => "TypeError", + CanvasError::Image(_) => "Error", + } +} + pub fn get_cache_error(error: &CacheError) -> &'static str { match error { CacheError::Sqlite(_) => "Error", @@ -186,6 +194,8 @@ pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> { .or_else(|| deno_web::get_error_class_name(e)) .or_else(|| deno_webstorage::get_not_supported_error_class_name(e)) .or_else(|| deno_websocket::get_network_error_class_name(e)) + .or_else(|| deno_websocket::get_network_error_class_name(e)) + .or_else(|| e.downcast_ref::().map(get_canvas_error)) .or_else(|| e.downcast_ref::().map(get_cache_error)) .or_else(|| { e.downcast_ref::() -- cgit v1.2.3 From 2ac699fe6e5b69f656046c5a9657542dc1cf2e9d Mon Sep 17 00:00:00 2001 From: Leo Kettmeir Date: Sat, 12 Oct 2024 14:23:49 -0700 Subject: refactor(ext/cron): use concrete error type (#26135) --- runtime/errors.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'runtime/errors.rs') diff --git a/runtime/errors.rs b/runtime/errors.rs index daec653d1..51d6d96fa 100644 --- a/runtime/errors.rs +++ b/runtime/errors.rs @@ -16,6 +16,7 @@ use deno_core::error::AnyError; use deno_core::serde_json; use deno_core::url; use deno_core::ModuleResolutionError; +use deno_cron::CronError; use std::env; use std::error::Error; use std::io; @@ -156,6 +157,22 @@ pub fn get_nix_error_class(error: &nix::Error) -> &'static str { } } +pub fn get_cron_error_class(e: &CronError) -> &'static str { + match e { + CronError::Resource(e) => { + deno_core::error::get_custom_error_class(e).unwrap_or("Error") + } + CronError::NameExceeded(_) => "TypeError", + CronError::NameInvalid => "TypeError", + CronError::AlreadyExists => "TypeError", + CronError::TooManyCrons => "TypeError", + CronError::InvalidCron => "TypeError", + CronError::InvalidBackoff => "TypeError", + CronError::AcquireError(_) => "Error", + CronError::Other(e) => get_error_class_name(e).unwrap_or("Error"), + } +} + fn get_canvas_error(e: &CanvasError) -> &'static str { match e { CanvasError::UnsupportedColorType(_) => "TypeError", @@ -194,7 +211,7 @@ pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> { .or_else(|| deno_web::get_error_class_name(e)) .or_else(|| deno_webstorage::get_not_supported_error_class_name(e)) .or_else(|| deno_websocket::get_network_error_class_name(e)) - .or_else(|| deno_websocket::get_network_error_class_name(e)) + .or_else(|| e.downcast_ref::().map(get_cron_error_class)) .or_else(|| e.downcast_ref::().map(get_canvas_error)) .or_else(|| e.downcast_ref::().map(get_cache_error)) .or_else(|| { -- cgit v1.2.3 From 64c304a45265705832ebb4ab4e9ef19f899ac911 Mon Sep 17 00:00:00 2001 From: Leo Kettmeir Date: Sat, 12 Oct 2024 16:53:38 -0700 Subject: refactor(ext/tls): use concrete error types (#26174) --- runtime/errors.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'runtime/errors.rs') diff --git a/runtime/errors.rs b/runtime/errors.rs index 51d6d96fa..4c6aeab98 100644 --- a/runtime/errors.rs +++ b/runtime/errors.rs @@ -17,6 +17,7 @@ use deno_core::serde_json; use deno_core::url; use deno_core::ModuleResolutionError; use deno_cron::CronError; +use deno_tls::TlsError; use std::env; use std::error::Error; use std::io; @@ -157,6 +158,17 @@ pub fn get_nix_error_class(error: &nix::Error) -> &'static str { } } +fn get_tls_error_class(e: &TlsError) -> &'static str { + match e { + TlsError::Rustls(_) => "Error", + TlsError::UnableAddPemFileToCert(e) => get_io_error_class(e), + TlsError::CertInvalid + | TlsError::CertsNotFound + | TlsError::KeysNotFound + | TlsError::KeyDecode => "InvalidData", + } +} + pub fn get_cron_error_class(e: &CronError) -> &'static str { match e { CronError::Resource(e) => { @@ -211,6 +223,7 @@ pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> { .or_else(|| deno_web::get_error_class_name(e)) .or_else(|| deno_webstorage::get_not_supported_error_class_name(e)) .or_else(|| deno_websocket::get_network_error_class_name(e)) + .or_else(|| e.downcast_ref::().map(get_tls_error_class)) .or_else(|| e.downcast_ref::().map(get_cron_error_class)) .or_else(|| e.downcast_ref::().map(get_canvas_error)) .or_else(|| e.downcast_ref::().map(get_cache_error)) -- cgit v1.2.3