mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
refactor(transformer): remove unimplemented EnvOptions::bugfixes (#7162)
This commit is contained in:
parent
a981cafd1f
commit
0e1f12c303
4 changed files with 3 additions and 226 deletions
|
|
@ -1,201 +0,0 @@
|
||||||
{
|
|
||||||
"bugfix/transform-async-arrows-in-class": {
|
|
||||||
"chrome": "55",
|
|
||||||
"opera": "42",
|
|
||||||
"edge": "15",
|
|
||||||
"firefox": "52",
|
|
||||||
"safari": "11",
|
|
||||||
"node": "7.6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "11",
|
|
||||||
"samsung": "6",
|
|
||||||
"opera_mobile": "42",
|
|
||||||
"electron": "1.6"
|
|
||||||
},
|
|
||||||
"bugfix/transform-edge-default-parameters": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "18",
|
|
||||||
"firefox": "52",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"bugfix/transform-edge-function-name": {
|
|
||||||
"chrome": "51",
|
|
||||||
"opera": "38",
|
|
||||||
"edge": "79",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6.5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "41",
|
|
||||||
"electron": "1.2"
|
|
||||||
},
|
|
||||||
"bugfix/transform-safari-block-shadowing": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "44",
|
|
||||||
"safari": "11",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ie": "11",
|
|
||||||
"ios": "11",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"bugfix/transform-safari-for-shadowing": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "4",
|
|
||||||
"safari": "11",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ie": "11",
|
|
||||||
"ios": "11",
|
|
||||||
"samsung": "5",
|
|
||||||
"rhino": "1.7.13",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"bugfix/transform-safari-id-destructuring-collision-in-function-expression": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "14",
|
|
||||||
"firefox": "2",
|
|
||||||
"safari": "16.3",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "16.3",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"bugfix/transform-tagged-template-caching": {
|
|
||||||
"chrome": "41",
|
|
||||||
"opera": "28",
|
|
||||||
"edge": "12",
|
|
||||||
"firefox": "34",
|
|
||||||
"safari": "13",
|
|
||||||
"node": "4",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "13",
|
|
||||||
"samsung": "3.4",
|
|
||||||
"rhino": "1.7.14",
|
|
||||||
"opera_mobile": "28",
|
|
||||||
"electron": "0.21"
|
|
||||||
},
|
|
||||||
"bugfix/transform-v8-spread-parameters-in-optional-chaining": {
|
|
||||||
"chrome": "91",
|
|
||||||
"opera": "77",
|
|
||||||
"edge": "91",
|
|
||||||
"firefox": "74",
|
|
||||||
"safari": "13.1",
|
|
||||||
"node": "16.9",
|
|
||||||
"deno": "1.9",
|
|
||||||
"ios": "13.4",
|
|
||||||
"samsung": "16",
|
|
||||||
"opera_mobile": "64",
|
|
||||||
"electron": "13.0"
|
|
||||||
},
|
|
||||||
"transform-optional-chaining": {
|
|
||||||
"chrome": "80",
|
|
||||||
"opera": "67",
|
|
||||||
"edge": "80",
|
|
||||||
"firefox": "74",
|
|
||||||
"safari": "13.1",
|
|
||||||
"node": "14",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "13.4",
|
|
||||||
"samsung": "13",
|
|
||||||
"opera_mobile": "57",
|
|
||||||
"electron": "8.0"
|
|
||||||
},
|
|
||||||
"proposal-optional-chaining": {
|
|
||||||
"chrome": "80",
|
|
||||||
"opera": "67",
|
|
||||||
"edge": "80",
|
|
||||||
"firefox": "74",
|
|
||||||
"safari": "13.1",
|
|
||||||
"node": "14",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "13.4",
|
|
||||||
"samsung": "13",
|
|
||||||
"opera_mobile": "57",
|
|
||||||
"electron": "8.0"
|
|
||||||
},
|
|
||||||
"transform-parameters": {
|
|
||||||
"chrome": "49",
|
|
||||||
"opera": "36",
|
|
||||||
"edge": "15",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "36",
|
|
||||||
"electron": "0.37"
|
|
||||||
},
|
|
||||||
"transform-async-to-generator": {
|
|
||||||
"chrome": "55",
|
|
||||||
"opera": "42",
|
|
||||||
"edge": "15",
|
|
||||||
"firefox": "52",
|
|
||||||
"safari": "10.1",
|
|
||||||
"node": "7.6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10.3",
|
|
||||||
"samsung": "6",
|
|
||||||
"opera_mobile": "42",
|
|
||||||
"electron": "1.6"
|
|
||||||
},
|
|
||||||
"transform-template-literals": {
|
|
||||||
"chrome": "41",
|
|
||||||
"opera": "28",
|
|
||||||
"edge": "13",
|
|
||||||
"firefox": "34",
|
|
||||||
"safari": "9",
|
|
||||||
"node": "4",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "9",
|
|
||||||
"samsung": "3.4",
|
|
||||||
"opera_mobile": "28",
|
|
||||||
"electron": "0.21"
|
|
||||||
},
|
|
||||||
"transform-function-name": {
|
|
||||||
"chrome": "51",
|
|
||||||
"opera": "38",
|
|
||||||
"edge": "14",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6.5",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "41",
|
|
||||||
"electron": "1.2"
|
|
||||||
},
|
|
||||||
"transform-block-scoping": {
|
|
||||||
"chrome": "50",
|
|
||||||
"opera": "37",
|
|
||||||
"edge": "14",
|
|
||||||
"firefox": "53",
|
|
||||||
"safari": "10",
|
|
||||||
"node": "6",
|
|
||||||
"deno": "1",
|
|
||||||
"ios": "10",
|
|
||||||
"samsung": "5",
|
|
||||||
"opera_mobile": "37",
|
|
||||||
"electron": "1.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -30,15 +30,3 @@ pub fn features() -> &'static FxHashMap<String, EngineTargets> {
|
||||||
.collect()
|
.collect()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Reference: <https://github.com/swc-project/swc/blob/ea14fc8e5996dcd736b8deb4cc99262d07dfff44/crates/swc_ecma_preset_env/src/transform_data.rs#L220-L237>
|
|
||||||
pub fn bugfix_features() -> &'static FxHashMap<String, EngineTargets> {
|
|
||||||
static BUGFIX_FEATURES: OnceLock<FxHashMap<String, EngineTargets>> = OnceLock::new();
|
|
||||||
BUGFIX_FEATURES.get_or_init(|| {
|
|
||||||
let map = serde_json::from_str::<FxHashMap<String, EngineTargets>>(include_str!(
|
|
||||||
"./@babel/compat_data/data/plugin_bugfixes.json"
|
|
||||||
))
|
|
||||||
.unwrap();
|
|
||||||
features().clone().into_iter().chain(map).collect()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,7 @@ mod targets;
|
||||||
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
|
||||||
pub use self::{
|
pub use self::{data::features, targets::BabelTargets};
|
||||||
data::{bugfix_features, features},
|
|
||||||
targets::BabelTargets,
|
|
||||||
};
|
|
||||||
|
|
||||||
use crate::options::EngineTargets;
|
use crate::options::EngineTargets;
|
||||||
|
|
||||||
|
|
@ -20,6 +17,7 @@ pub struct BabelEnvOptions {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub targets: EngineTargets,
|
pub targets: EngineTargets,
|
||||||
|
|
||||||
|
#[deprecated = "Not Implemented"]
|
||||||
#[serde(default = "default_as_true")]
|
#[serde(default = "default_as_true")]
|
||||||
pub bugfixes: bool,
|
pub bugfixes: bool,
|
||||||
|
|
||||||
|
|
@ -62,11 +60,6 @@ pub struct BabelEnvOptions {
|
||||||
|
|
||||||
impl BabelEnvOptions {
|
impl BabelEnvOptions {
|
||||||
pub fn can_enable_plugin(&self, plugin_name: &str) -> bool {
|
pub fn can_enable_plugin(&self, plugin_name: &str) -> bool {
|
||||||
let versions = if self.bugfixes {
|
self.targets.should_enable(&features()[plugin_name])
|
||||||
bugfix_features().get(plugin_name).unwrap_or_else(|| &features()[plugin_name])
|
|
||||||
} else {
|
|
||||||
&features()[plugin_name]
|
|
||||||
};
|
|
||||||
self.targets.should_enable(versions)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -136,9 +136,6 @@ impl EnvOptions {
|
||||||
pub fn from_browserslist_query(query: &str) -> Result<Self, Error> {
|
pub fn from_browserslist_query(query: &str) -> Result<Self, Error> {
|
||||||
Self::try_from(BabelEnvOptions {
|
Self::try_from(BabelEnvOptions {
|
||||||
targets: EngineTargets::try_from_query(query)?,
|
targets: EngineTargets::try_from_query(query)?,
|
||||||
// This option will be enabled by default in Babel 8.
|
|
||||||
// <https://babel.dev/docs/babel-preset-env#bugfixes>
|
|
||||||
bugfixes: true,
|
|
||||||
..BabelEnvOptions::default()
|
..BabelEnvOptions::default()
|
||||||
})
|
})
|
||||||
.map_err(|err| Error::msg(err))
|
.map_err(|err| Error::msg(err))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue