From 12aa91050883d447354cb6727fe04de3f07d8002 Mon Sep 17 00:00:00 2001 From: Boshen <1430279+Boshen@users.noreply.github.com> Date: Thu, 31 Oct 2024 03:30:08 +0000 Subject: [PATCH] refactor(transformer): clean up `env/targets/query.rs` (#7033) --- .../oxc_transformer/src/env/targets/query.rs | 49 +++++++------------ 1 file changed, 18 insertions(+), 31 deletions(-) diff --git a/crates/oxc_transformer/src/env/targets/query.rs b/crates/oxc_transformer/src/env/targets/query.rs index f7fbec77b..b8a98cdb6 100644 --- a/crates/oxc_transformer/src/env/targets/query.rs +++ b/crates/oxc_transformer/src/env/targets/query.rs @@ -1,6 +1,4 @@ //! Module for `browserslist` queries. -//! -//! This file is copied from use std::sync::OnceLock; @@ -27,44 +25,33 @@ fn cache() -> &'static DashMap { impl Query { pub fn exec(&self) -> QueryResult { - fn query(s: &[T]) -> QueryResult - where - T: AsRef, - { - match browserslist::resolve( - s, - &browserslist::Opts { - mobile_to_desktop: true, - ignore_unknown_versions: true, - ..browserslist::Opts::default() - }, - ) { - Ok(distribs) => { - let versions = Targets::parse_versions(distribs); - - Ok(versions) - } - Err(err) => { - let msg = format!("failed to resolve query: {err}"); - Err(OxcDiagnostic::error(msg).into()) - } - } - } - if let Some(v) = cache().get(self) { return Ok(v.clone()); } - let result = match *self { + let options = browserslist::Opts { + mobile_to_desktop: true, + ignore_unknown_versions: true, + ..browserslist::Opts::default() + }; + + let result = match self { Query::Single(ref s) => { if s.is_empty() { - query(&["defaults"]) + browserslist::resolve(&["defaults"], &options) } else { - query(&[s]) + browserslist::resolve(&[s], &options) } } - Query::Multiple(ref s) => query(s), - }?; + Query::Multiple(ref s) => browserslist::resolve(s, &options), + }; + + let result = match result { + Ok(distribs) => Targets::parse_versions(distribs), + Err(err) => { + return Err(OxcDiagnostic::error(format!("failed to resolve query: {err}")).into()) + } + }; cache().insert(self.clone(), result.clone());