diff --git a/Cargo.lock b/Cargo.lock index 051e2b984a9..2119c841232 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1764,6 +1764,7 @@ dependencies = [ "indexmap 1.9.3", "indoc", "parcel-macros", + "parking_lot", "path-slash", "pathdiff", "serde", @@ -1812,6 +1813,7 @@ dependencies = [ "parcel_core", "parcel_filesystem", "parcel_napi_helpers", + "parking_lot", "rayon", "sentry", "serde", @@ -1836,6 +1838,7 @@ dependencies = [ "json_comments", "once_cell", "parcel_filesystem", + "parking_lot", "percent-encoding", "serde", "serde_json", diff --git a/crates/node-bindings/Cargo.toml b/crates/node-bindings/Cargo.toml index 547185b1813..1332b3005fa 100644 --- a/crates/node-bindings/Cargo.toml +++ b/crates/node-bindings/Cargo.toml @@ -30,6 +30,7 @@ serde_json = "1.0.116" toml = "0.8.12" anyhow = "1.0.82" mockall = "0.12.1" +parking_lot = "0.12" [target.'cfg(not(target_arch = "wasm32"))'.dependencies] sentry = { version = "0.32.2", optional = true, default-features = false, features = ["backtrace", "contexts", "panic", "reqwest", "debug-images", "anyhow"]} diff --git a/crates/node-bindings/src/init_sentry/sentry.rs b/crates/node-bindings/src/init_sentry/sentry.rs index 6896c5719d0..b0bf7818f48 100644 --- a/crates/node-bindings/src/init_sentry/sentry.rs +++ b/crates/node-bindings/src/init_sentry/sentry.rs @@ -1,6 +1,6 @@ +use parking_lot::Mutex; use std::collections::HashMap; use std::sync::Arc; -use std::sync::Mutex; use std::time::Duration; use napi::Error; @@ -26,7 +26,7 @@ fn init_sentry() -> Result<(), Status> { log::info!("Initialising Sentry in rust..."); - if SENTRY_GUARD.lock().unwrap().is_some() { + if SENTRY_GUARD.lock().is_some() { return Err(Error::from_reason( "Sentry guard already set, should only initialise Sentry once.", )); @@ -63,7 +63,7 @@ fn init_sentry() -> Result<(), Status> { let guard = init((sentry_dsn, sentry_client_options)); - SENTRY_GUARD.lock().unwrap().replace(guard); + SENTRY_GUARD.lock().replace(guard); sentry::configure_scope(|scope| { scope.set_user(Some(sentry::User { @@ -81,7 +81,7 @@ fn init_sentry() -> Result<(), Status> { #[napi] fn close_sentry() { - if let Some(guard) = SENTRY_GUARD.lock().unwrap().take() { + if let Some(guard) = SENTRY_GUARD.lock().take() { guard.close(Some(TIMEOUT)); } } diff --git a/packages/transformers/js/core/Cargo.toml b/packages/transformers/js/core/Cargo.toml index a6d64147a27..3a79af18dd4 100644 --- a/packages/transformers/js/core/Cargo.toml +++ b/packages/transformers/js/core/Cargo.toml @@ -37,3 +37,4 @@ pathdiff = "0.2.0" path-slash = "0.1.4" indexmap = "1.9.2" parcel-macros = { path = "../../../../crates/macros" } +parking_lot = "0.12" \ No newline at end of file diff --git a/packages/transformers/js/core/src/utils.rs b/packages/transformers/js/core/src/utils.rs index 6930d74bb1d..1ccd15610bb 100644 --- a/packages/transformers/js/core/src/utils.rs +++ b/packages/transformers/js/core/src/utils.rs @@ -409,11 +409,13 @@ macro_rules! id { } #[derive(Debug, Clone, Default)] -pub struct ErrorBuffer(std::sync::Arc>>); +pub struct ErrorBuffer( + std::sync::Arc>>, +); impl Emitter for ErrorBuffer { fn emit(&mut self, db: &DiagnosticBuilder) { - self.0.lock().unwrap().push((**db).clone()); + self.0.lock().push((**db).clone()); } } @@ -421,7 +423,7 @@ pub fn error_buffer_to_diagnostics( error_buffer: &ErrorBuffer, source_map: &SourceMap, ) -> Vec { - let s = error_buffer.0.lock().unwrap().clone(); + let s = error_buffer.0.lock().clone(); s.iter() .map(|diagnostic| { let message = diagnostic.message(); diff --git a/packages/utils/node-resolver-rs/Cargo.toml b/packages/utils/node-resolver-rs/Cargo.toml index 41bd302fefa..010c8ac83f4 100644 --- a/packages/utils/node-resolver-rs/Cargo.toml +++ b/packages/utils/node-resolver-rs/Cargo.toml @@ -20,6 +20,7 @@ elsa = "1.7.0" once_cell = "1.17.0" glob-match = "0.2.1" dashmap = "5.4.0" +parking_lot = "0.12" [dev-dependencies] assert_fs = "1.0" diff --git a/packages/utils/node-resolver-rs/src/cache.rs b/packages/utils/node-resolver-rs/src/cache.rs index 38c6d405471..53a9478ed38 100644 --- a/packages/utils/node-resolver-rs/src/cache.rs +++ b/packages/utils/node-resolver-rs/src/cache.rs @@ -2,11 +2,11 @@ use std::borrow::Cow; use std::ops::Deref; use std::path::Path; use std::path::PathBuf; -use std::sync::Mutex; use dashmap::DashMap; use elsa::sync::FrozenMap; use parcel_filesystem::FileSystem; +use parking_lot::Mutex; use typed_arena::Arena; use crate::package_json::PackageJson; @@ -193,7 +193,7 @@ fn read( arena: &Mutex>>, path: &Path, ) -> std::io::Result<&'static mut str> { - let arena = arena.lock().unwrap(); + let arena = arena.lock(); let data = arena.alloc(fs.read_to_string(path)?.into_boxed_str()); // The data lives as long as the arena. In public methods, we only vend temporary references. Ok(unsafe { &mut *(&mut **data as *mut str) })