summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock28
-rw-r--r--Cargo.toml2
-rw-r--r--cli/util/sync/mod.rs3
-rw-r--r--runtime/fmt_errors.rs105
4 files changed, 36 insertions, 102 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 4ff45842d..f7af3936a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1343,9 +1343,9 @@ dependencies = [
[[package]]
name = "deno_core"
-version = "0.298.0"
+version = "0.299.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54fb4db0174c7130b3a8a90ed6aefb3b42a8acd6b75ea9a5a0c7c4d02993cd61"
+checksum = "428488cc6b392a199a159054da754f56a1fdc63ee03f16be2c21cbd22e936e7b"
dependencies = [
"anyhow",
"bincode",
@@ -1355,7 +1355,7 @@ dependencies = [
"cooked-waker",
"deno_core_icudata",
"deno_ops",
- "deno_unsync",
+ "deno_unsync 0.4.0",
"futures",
"libc",
"memoffset 0.9.1",
@@ -1545,7 +1545,7 @@ dependencies = [
"data-url",
"deno_ast",
"deno_semver",
- "deno_unsync",
+ "deno_unsync 0.3.10",
"encoding_rs",
"futures",
"import_map",
@@ -1825,9 +1825,9 @@ dependencies = [
[[package]]
name = "deno_ops"
-version = "0.174.0"
+version = "0.175.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdacbea7e6c459f0bcb48cdb0c7ce8ca6ece53645385fe98cf38e7242b2c5809"
+checksum = "2d2b71759647722be6ae051919b75cb66b3dccafe61b53c75ad5a6fad9d0ee4a"
dependencies = [
"proc-macro-rules",
"proc-macro2",
@@ -2006,6 +2006,16 @@ dependencies = [
]
[[package]]
+name = "deno_unsync"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03ee1607db298c8f12124b345a52d5f2f504a7504c9d535f1d8f07127b237010"
+dependencies = [
+ "parking_lot 0.12.3",
+ "tokio",
+]
+
+[[package]]
name = "deno_url"
version = "0.162.0"
dependencies = [
@@ -5962,9 +5972,9 @@ dependencies = [
[[package]]
name = "serde_v8"
-version = "0.207.0"
+version = "0.208.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a442f2e04f8367eb99982beb6733fb88df666da9379f937552d67ca060de6e80"
+checksum = "583f3c71a6f7acc1711ad718a33f6e799bacdc711d297b15bb28533f32264c58"
dependencies = [
"num-bigint",
"serde",
@@ -6889,7 +6899,7 @@ dependencies = [
"base64 0.21.7",
"bytes",
"console_static_text",
- "deno_unsync",
+ "deno_unsync 0.3.10",
"denokv_proto",
"fastwebsockets",
"flate2",
diff --git a/Cargo.toml b/Cargo.toml
index 3902a028a..ce3a36463 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -45,7 +45,7 @@ repository = "https://github.com/denoland/deno"
[workspace.dependencies]
deno_ast = { version = "=0.40.0", features = ["transpiling"] }
-deno_core = { version = "0.298.0" }
+deno_core = { version = "0.299.0" }
deno_bench_util = { version = "0.156.0", path = "./bench_util" }
deno_lockfile = "0.20.0"
diff --git a/cli/util/sync/mod.rs b/cli/util/sync/mod.rs
index f58437503..3c2ffbd7d 100644
--- a/cli/util/sync/mod.rs
+++ b/cli/util/sync/mod.rs
@@ -6,9 +6,8 @@ mod task_queue;
mod value_creator;
pub use async_flag::AsyncFlag;
+pub use deno_core::unsync::sync::AtomicFlag;
pub use sync_read_async_write_lock::SyncReadAsyncWriteLock;
pub use task_queue::TaskQueue;
pub use task_queue::TaskQueuePermit;
pub use value_creator::MultiRuntimeAsyncValueCreator;
-// todo(dsherret): this being in the unsync module is slightly confusing, but it's Sync
-pub use deno_core::unsync::AtomicFlag;
diff --git a/runtime/fmt_errors.rs b/runtime/fmt_errors.rs
index af7d76051..4687dbd47 100644
--- a/runtime/fmt_errors.rs
+++ b/runtime/fmt_errors.rs
@@ -1,8 +1,7 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
//! This mod provides DenoError to unify errors across Deno.
-use deno_core::error::format_file_name;
+use deno_core::error::format_frame;
use deno_core::error::JsError;
-use deno_core::error::JsStackFrame;
use deno_terminal::colors::cyan;
use deno_terminal::colors::italic_bold;
use deno_terminal::colors::red;
@@ -21,96 +20,22 @@ struct IndexedErrorReference<'a> {
index: usize,
}
-// Keep in sync with `/core/error.js`.
-pub fn format_location(frame: &JsStackFrame) -> String {
- let _internal = frame
- .file_name
- .as_ref()
- .map(|f| f.starts_with("ext:"))
- .unwrap_or(false);
- if frame.is_native {
- return cyan("native").to_string();
- }
- let mut result = String::new();
- let file_name = frame.file_name.clone().unwrap_or_default();
- if !file_name.is_empty() {
- result += &cyan(&format_file_name(&file_name)).to_string();
- } else {
- if frame.is_eval {
- result +=
- &(cyan(&frame.eval_origin.as_ref().unwrap()).to_string() + ", ");
- }
- result += &cyan("<anonymous>").to_string();
- }
- if let Some(line_number) = frame.line_number {
- write!(result, ":{}", yellow(&line_number.to_string())).unwrap();
- if let Some(column_number) = frame.column_number {
- write!(result, ":{}", yellow(&column_number.to_string())).unwrap();
- }
- }
- result
-}
-
-fn format_frame(frame: &JsStackFrame) -> String {
- let _internal = frame
- .file_name
- .as_ref()
- .map(|f| f.starts_with("ext:"))
- .unwrap_or(false);
- let is_method_call =
- !(frame.is_top_level.unwrap_or_default() || frame.is_constructor);
- let mut result = String::new();
- if frame.is_async {
- result += "async ";
- }
- if frame.is_promise_all {
- result += &italic_bold(&format!(
- "Promise.all (index {})",
- frame.promise_index.unwrap_or_default()
- ))
- .to_string();
- return result;
- }
- if is_method_call {
- let mut formatted_method = String::new();
- if let Some(function_name) = &frame.function_name {
- if let Some(type_name) = &frame.type_name {
- if !function_name.starts_with(type_name) {
- write!(formatted_method, "{type_name}.").unwrap();
- }
- }
- formatted_method += function_name;
- if let Some(method_name) = &frame.method_name {
- if !function_name.ends_with(method_name) {
- write!(formatted_method, " [as {method_name}]").unwrap();
- }
- }
- } else {
- if let Some(type_name) = &frame.type_name {
- write!(formatted_method, "{type_name}.").unwrap();
+struct AnsiColors;
+
+impl deno_core::error::ErrorFormat for AnsiColors {
+ fn fmt_element(
+ element: deno_core::error::ErrorElement,
+ s: &str,
+ ) -> std::borrow::Cow<'_, str> {
+ use deno_core::error::ErrorElement::*;
+ match element {
+ Anonymous | NativeFrame | FileName | EvalOrigin => {
+ cyan(s).to_string().into()
}
- if let Some(method_name) = &frame.method_name {
- formatted_method += method_name
- } else {
- formatted_method += "<anonymous>";
- }
- }
- result += &italic_bold(&formatted_method).to_string();
- } else if frame.is_constructor {
- result += "new ";
- if let Some(function_name) = &frame.function_name {
- write!(result, "{}", italic_bold(&function_name)).unwrap();
- } else {
- result += &cyan("<anonymous>").to_string();
+ LineNumber | ColumnNumber => yellow(s).to_string().into(),
+ FunctionName | PromiseAll => italic_bold(s).to_string().into(),
}
- } else if let Some(function_name) = &frame.function_name {
- result += &italic_bold(&function_name).to_string();
- } else {
- result += &format_location(frame);
- return result;
}
- write!(result, " ({})", format_location(frame)).unwrap();
- result
}
/// Take an optional source line and associated information to format it into
@@ -254,7 +179,7 @@ fn format_js_error_inner(
0,
));
for frame in &js_error.frames {
- write!(s, "\n at {}", format_frame(frame)).unwrap();
+ write!(s, "\n at {}", format_frame::<AnsiColors>(frame)).unwrap();
}
if let Some(cause) = &js_error.cause {
let is_caused_by_circular = circular