Introduce bugfix-safari-class-field-initializer-scope (#16569)

Co-authored-by: Nicolò Ribaudo <[email protected]>
This commit is contained in:
David Taylor
2024-07-26 11:46:26 +02:00
committed by GitHub
co-authored by Nicolò Ribaudo
parent 94b1dee35e
commit 9a4794a7ad
47 changed files with 572 additions and 10 deletions
+1
View File
@@ -734,6 +734,7 @@ if (bool(process.env.BABEL_8_BREAKING)) {
"packages/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining",
"packages/babel-plugin-bugfix-v8-static-class-fields-redefine-readonly",
"packages/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
"packages/babel-plugin-bugfix-safari-class-field-initializer-scope",
].map(src => ({
src,
format: USE_ESM ? "esm" : "cjs",
@@ -24,10 +24,12 @@
],
"transform-class-properties": [
"bugfix/transform-v8-static-class-fields-redefine-readonly",
"bugfix/transform-firefox-class-in-computed-class-key"
"bugfix/transform-firefox-class-in-computed-class-key",
"bugfix/transform-safari-class-field-initializer-scope"
],
"proposal-class-properties": [
"bugfix/transform-v8-static-class-fields-redefine-readonly",
"bugfix/transform-firefox-class-in-computed-class-key"
"bugfix/transform-firefox-class-in-computed-class-key",
"bugfix/transform-safari-class-field-initializer-scope"
]
}
@@ -111,10 +111,10 @@
"chrome": "74",
"opera": "62",
"edge": "79",
"safari": "14.1",
"safari": "16",
"node": "12",
"deno": "1",
"ios": "14.5",
"ios": "16",
"samsung": "11",
"opera_mobile": "53",
"electron": "6.0"
+15 -2
View File
@@ -35,10 +35,23 @@
"chrome": "74",
"opera": "62",
"edge": "79",
"safari": "14.1",
"safari": "16",
"node": "12",
"deno": "1",
"ios": "14.5",
"ios": "16",
"samsung": "11",
"opera_mobile": "53",
"electron": "6.0"
},
"bugfix/transform-safari-class-field-initializer-scope": {
"chrome": "74",
"opera": "62",
"edge": "79",
"firefox": "69",
"safari": "16",
"node": "12",
"deno": "1",
"ios": "16",
"samsung": "11",
"opera_mobile": "53",
"electron": "6.0"
@@ -169,6 +169,10 @@ const es2022 = {
firefox: undefined,
},
},
"bugfix/transform-safari-class-field-initializer-scope": {
features: ["instance class fields / resolving identifier in parent scope"],
replaces: "transform-class-properties",
},
"transform-class-static-block": "Class static initialization blocks",
"transform-private-property-in-object":
"Ergonomic brand checks for private fields",
@@ -178,6 +182,7 @@ const es2022 = {
"instance class fields / public instance class fields",
"instance class fields / private instance class fields basic support",
"instance class fields / computed instance class fields",
"instance class fields / resolving identifier in parent scope",
],
},
"transform-private-methods": "private class methods",
@@ -0,0 +1,3 @@
src
test
*.log
@@ -0,0 +1,19 @@
# @babel/plugin-bugfix-safari-class-field-initializer-scope
> Wrap class field initializers with IIFE to workaround https://webkit.org/b/236843
See our website [@babel/plugin-bugfix-safari-class-field-initializer-scope](https://babeljs.io/docs/babel-plugin-bugfix-safari-class-field-initializer-scope) for more information.
## Install
Using npm:
```sh
npm install --save-dev @babel/plugin-bugfix-safari-class-field-initializer-scope
```
or using yarn:
```sh
yarn add @babel/plugin-bugfix-safari-class-field-initializer-scope --dev
```
@@ -0,0 +1,60 @@
{
"name": "@babel/plugin-bugfix-safari-class-field-initializer-scope",
"version": "7.24.7",
"description": "Wrap class field initializers with IIFE to workaround https://webkit.org/b/236843",
"repository": {
"type": "git",
"url": "https://github.com/babel/babel.git",
"directory": "packages/babel-plugin-bugfix-safari-class-field-initializer-scope"
},
"homepage": "https://babel.dev/docs/en/next/babel-plugin-bugfix-safari-class-field-initializer-scope",
"license": "MIT",
"publishConfig": {
"access": "public"
},
"main": "./lib/index.js",
"exports": {
".": {
"types": "./lib/index.d.ts",
"default": "./lib/index.js"
},
"./package.json": "./package.json"
},
"keywords": [
"babel-plugin",
"bugfix"
],
"dependencies": {
"@babel/helper-plugin-utils": "workspace:^"
},
"peerDependencies": {
"@babel/core": "^7.0.0"
},
"devDependencies": {
"@babel/core": "workspace:^",
"@babel/helper-function-name": "workspace:^",
"@babel/helper-plugin-test-runner": "workspace:^",
"@babel/traverse": "workspace:^"
},
"engines": {
"node": ">=6.9.0"
},
"author": "The Babel Team (https://babel.dev/team)",
"type": "module",
"conditions": {
"USE_ESM": [
null,
{
"type": "commonjs"
}
],
"BABEL_8_BREAKING": [
{
"engines": {
"node": "^18.20.0 || ^20.10.0 || >=21.0.0"
}
},
{}
]
}
}
@@ -0,0 +1,100 @@
import { declare } from "@babel/helper-plugin-utils";
import { types as t } from "@babel/core";
import type { NodePath } from "@babel/core";
function needsWrapping(node: t.Node): boolean {
if (t.isLiteral(node) && !t.isTemplateLiteral(node)) {
return false;
}
if (
t.isCallExpression(node) ||
t.isOptionalCallExpression(node) ||
t.isNewExpression(node)
) {
return needsWrapping(node.callee) || node.arguments.some(needsWrapping);
}
if (t.isTemplateLiteral(node)) {
return node.expressions.some(needsWrapping);
}
if (t.isTaggedTemplateExpression(node)) {
return needsWrapping(node.tag) || needsWrapping(node.quasi);
}
if (t.isArrayExpression(node)) {
return node.elements.some(needsWrapping);
}
if (t.isObjectExpression(node)) {
return node.properties.some(prop => {
if (t.isObjectProperty(prop)) {
return (
needsWrapping(prop.value) ||
(prop.computed && needsWrapping(prop.key))
);
}
if (t.isObjectMethod(prop)) {
return false;
}
return false;
});
}
if (t.isMemberExpression(node) || t.isOptionalMemberExpression(node)) {
return (
needsWrapping(node.object) ||
(node.computed && needsWrapping(node.property))
);
}
if (
t.isFunctionExpression(node) ||
t.isArrowFunctionExpression(node) ||
t.isClassExpression(node)
) {
return false;
}
if (t.isThisExpression(node)) {
return false;
}
if (t.isSequenceExpression(node)) {
return node.expressions.some(needsWrapping);
}
// Is an identifier, or anything else not covered above
return true;
}
function wrapInitializer(
path: NodePath<t.ClassProperty | t.ClassPrivateProperty>,
) {
const { value } = path.node;
if (value && needsWrapping(value)) {
path.node.value = t.callExpression(
t.arrowFunctionExpression([], value),
[],
);
}
}
export default declare(api => {
api.assertVersion(REQUIRED_VERSION("^7.16.0"));
return {
name: "plugin-bugfix-safari-class-field-initializer-scope",
visitor: {
ClassProperty(path) {
wrapInitializer(path);
},
ClassPrivateProperty(path) {
wrapInitializer(path);
},
},
};
});
@@ -0,0 +1,40 @@
let someVariable = 1;
class MyClass {
// These things should not need transforming
numericLiteral = 1;
stringLiteral = 'string';
booleanLiteral = true;
nullLiteral = null;
simpleTemplateLiteral = `template literal ${"with simple interpolation"}`;
simpleTaggedTemplateLiteral = this.foo`template literal ${"with simple interpolation"}`;
emptyObjectLiteral = {};
simpleObjectLiteral = {
one: "two",
two: ["array", "of", "literals"]
};
emptyArrayLiteral = [];
simpleArrayLiteral = [1, 2, 3];
arrow = () => someVariable;
function = function() { return someVariable };
iifeArrow = (() => 1)();
iifeFunction = (function() { return someVariable })();
thisReference = this.foo;
optionalMemberExpression = this?.foo;
optionalCallExpression = this.foo?.();
sequenceExpression = (1, 2, 3);
classExpression = class {};
// These things should be wrapped in IIFEs
complexRef = someVariable;
complexInit = someVariable + 1;
complexObject = {
one: someVariable,
}
complexArray = [
someVariable
]
complexTemplateLiteral = `template literal ${someVariable}`;
dynamicThisReference = this[someVariable];
complexSequenceExpression = (someVariable, 2, 3);
}
@@ -0,0 +1,41 @@
let someVariable = 1;
class MyClass {
// These things should not need transforming
numericLiteral = 1;
stringLiteral = 'string';
booleanLiteral = true;
nullLiteral = null;
simpleTemplateLiteral = `template literal ${"with simple interpolation"}`;
simpleTaggedTemplateLiteral = this.foo`template literal ${"with simple interpolation"}`;
emptyObjectLiteral = {};
simpleObjectLiteral = {
one: "two",
two: ["array", "of", "literals"]
};
emptyArrayLiteral = [];
simpleArrayLiteral = [1, 2, 3];
arrow = () => someVariable;
function = function () {
return someVariable;
};
iifeArrow = (() => 1)();
iifeFunction = function () {
return someVariable;
}();
thisReference = this.foo;
optionalMemberExpression = this?.foo;
optionalCallExpression = this.foo?.();
sequenceExpression = (1, 2, 3);
classExpression = class {};
// These things should be wrapped in IIFEs
complexRef = (() => someVariable)();
complexInit = (() => someVariable + 1)();
complexObject = (() => ({
one: someVariable
}))();
complexArray = (() => [someVariable])();
complexTemplateLiteral = (() => `template literal ${someVariable}`)();
dynamicThisReference = (() => this[someVariable])();
complexSequenceExpression = (() => (someVariable, 2, 3))();
}
@@ -0,0 +1,3 @@
{
"plugins": ["bugfix-safari-class-field-initializer-scope"]
}
@@ -0,0 +1 @@
{ "type": "commonjs" }
@@ -0,0 +1,3 @@
import runner from "@babel/helper-plugin-test-runner";
runner(import.meta.url);
@@ -0,0 +1,17 @@
/* This file is automatically generated by scripts/generators/tsconfig.js */
{
"extends": [
"../../tsconfig.base.json",
"../../tsconfig.paths.json"
],
"include": [
"../../packages/babel-plugin-bugfix-safari-class-field-initializer-scope/src/**/*.ts",
"../../lib/globals.d.ts",
"../../scripts/repo-utils/*.d.ts"
],
"references": [
{
"path": "../../packages/babel-helper-plugin-utils"
}
]
}
+1
View File
@@ -21,6 +21,7 @@
"@babel/helper-plugin-utils": "workspace:^",
"@babel/helper-validator-option": "workspace:^",
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "workspace:^",
"@babel/plugin-bugfix-safari-class-field-initializer-scope": "workspace:^",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "workspace:^",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "workspace:^",
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "workspace:^",
@@ -61,6 +61,7 @@ import bugfixTaggedTemplateCaching from "@babel/preset-modules/lib/plugins/trans
import bugfixSafariBlockShadowing from "@babel/preset-modules/lib/plugins/transform-safari-block-shadowing/index.js";
import bugfixSafariForShadowing from "@babel/preset-modules/lib/plugins/transform-safari-for-shadowing/index.js";
import bugfixSafariIdDestructuringCollisionInFunctionExpression from "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression";
import bugfixSafariClassFieldInitializerScope from "@babel/plugin-bugfix-safari-class-field-initializer-scope";
import bugfixV8SpreadParametersInOptionalChaining from "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining";
import bugfixV8StaticClassFieldsRedefineReadonly from "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly";
@@ -72,6 +73,8 @@ const availablePlugins = {
"bugfix/transform-firefox-class-in-computed-class-key": () =>
bugfixFirefoxClassInComputedKey,
"bugfix/transform-safari-block-shadowing": () => bugfixSafariBlockShadowing,
"bugfix/transform-safari-class-field-initializer-scope": () =>
bugfixSafariClassFieldInitializerScope,
"bugfix/transform-safari-for-shadowing": () => bugfixSafariForShadowing,
"bugfix/transform-safari-id-destructuring-collision-in-function-expression":
() => bugfixSafariIdDestructuringCollisionInFunctionExpression,
@@ -0,0 +1,5 @@
import { arr } from "./dep.js";
export class A {
prop = (arr + 1) * 2;
}
@@ -0,0 +1,8 @@
{
"BABEL_8_BREAKING": false,
"validateLogs": true,
"targets": "safari 13",
"presets": [
["env", { "debug": true, "modules": false }]
]
}
@@ -0,0 +1,6 @@
import { arr } from "./dep.js";
export class A {
constructor() {
babelHelpers.defineProperty(this, "prop", (arr + 1) * 2);
}
}
@@ -0,0 +1,31 @@
@babel/preset-env: `DEBUG` option
Using targets:
{
"safari": "13"
}
Using modules transform: false
Using plugins:
transform-duplicate-named-capturing-groups-regex { safari < 17.4 }
transform-unicode-sets-regex { safari < 17 }
transform-class-static-block { safari < 16.4 }
transform-private-property-in-object { safari < 15 }
transform-class-properties { safari < 14.1 }
transform-private-methods { safari < 15 }
syntax-numeric-separator
transform-logical-assignment-operators { safari < 14 }
transform-nullish-coalescing-operator { safari < 13.1 }
transform-optional-chaining { safari < 13.1 }
syntax-json-strings
syntax-optional-catch-binding
transform-parameters { safari < 16.3 }
syntax-async-generators
syntax-object-rest-spread
transform-export-namespace-from { safari < 14.1 }
syntax-dynamic-import
syntax-top-level-await
syntax-import-meta
Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set.
@@ -0,0 +1,5 @@
import { arr } from "./dep.js";
export class A {
prop = (arr + 1) * 2;
}
@@ -0,0 +1,8 @@
{
"BABEL_8_BREAKING": true,
"validateLogs": true,
"targets": "safari 13",
"presets": [
["env", { "debug": true, "modules": false }]
]
}
@@ -0,0 +1,6 @@
import { arr } from "./dep.js";
export class A {
constructor() {
babelHelpers.defineProperty(this, "prop", (arr + 1) * 2);
}
}
@@ -0,0 +1,23 @@
@babel/preset-env: `DEBUG` option
Using targets:
{
"safari": "13"
}
Using modules transform: false
Using plugins:
transform-duplicate-named-capturing-groups-regex { safari < 17.4 }
transform-unicode-sets-regex { safari < 17 }
transform-class-static-block { safari < 16.4 }
transform-private-property-in-object { safari < 15 }
transform-class-properties { safari < 14.1 }
transform-private-methods { safari < 15 }
transform-logical-assignment-operators { safari < 14 }
transform-nullish-coalescing-operator { safari < 13.1 }
transform-optional-chaining { safari < 13.1 }
transform-export-namespace-from { safari < 14.1 }
bugfix/transform-safari-id-destructuring-collision-in-function-expression { safari < 16.3 }
Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set.
@@ -0,0 +1,5 @@
import { arr } from "./dep.js";
export class A {
prop = (arr + 1) * 2;
}
@@ -0,0 +1,8 @@
{
"BABEL_8_BREAKING": false,
"validateLogs": true,
"targets": "safari 15",
"presets": [
["env", { "debug": true, "modules": false }]
]
}
@@ -0,0 +1,4 @@
import { arr } from "./dep.js";
export class A {
prop = (() => (arr + 1) * 2)();
}
@@ -0,0 +1,31 @@
@babel/preset-env: `DEBUG` option
Using targets:
{
"safari": "15"
}
Using modules transform: false
Using plugins:
transform-duplicate-named-capturing-groups-regex { safari < 17.4 }
transform-unicode-sets-regex { safari < 17 }
bugfix/transform-firefox-class-in-computed-class-key { safari < 16 }
bugfix/transform-safari-class-field-initializer-scope { safari < 16 }
transform-class-static-block { safari < 16.4 }
syntax-private-property-in-object
syntax-class-properties
syntax-numeric-separator
syntax-nullish-coalescing-operator
syntax-optional-chaining
syntax-json-strings
syntax-optional-catch-binding
transform-parameters { safari < 16.3 }
syntax-async-generators
syntax-object-rest-spread
syntax-export-namespace-from
syntax-dynamic-import
syntax-top-level-await
syntax-import-meta
Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set.
@@ -0,0 +1,5 @@
import { arr } from "./dep.js";
export class A {
prop = (arr + 1) * 2;
}
@@ -0,0 +1,8 @@
{
"BABEL_8_BREAKING": true,
"validateLogs": true,
"targets": "safari 15",
"presets": [
["env", { "debug": true, "modules": false }]
]
}
@@ -0,0 +1,4 @@
import { arr } from "./dep.js";
export class A {
prop = (() => (arr + 1) * 2)();
}
@@ -0,0 +1,18 @@
@babel/preset-env: `DEBUG` option
Using targets:
{
"safari": "15"
}
Using modules transform: false
Using plugins:
transform-duplicate-named-capturing-groups-regex { safari < 17.4 }
transform-unicode-sets-regex { safari < 17 }
bugfix/transform-firefox-class-in-computed-class-key { safari < 16 }
bugfix/transform-safari-class-field-initializer-scope { safari < 16 }
transform-class-static-block { safari < 16.4 }
bugfix/transform-safari-id-destructuring-collision-in-function-expression { safari < 16.3 }
Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set.
@@ -0,0 +1,5 @@
import { arr } from "./dep.js";
export class A {
prop = (arr + 1) * 2;
}
@@ -0,0 +1,7 @@
{
"validateLogs": true,
"targets": "safari 17",
"presets": [
["env", { "debug": true, "modules": false }]
]
}
@@ -0,0 +1,4 @@
import { arr } from "./dep.js";
export class A {
prop = (arr + 1) * 2;
}
@@ -0,0 +1,27 @@
@babel/preset-env: `DEBUG` option
Using targets:
{
"safari": "17"
}
Using modules transform: false
Using plugins:
transform-duplicate-named-capturing-groups-regex { safari < 17.4 }
syntax-class-static-block
syntax-private-property-in-object
syntax-class-properties
syntax-numeric-separator
syntax-nullish-coalescing-operator
syntax-optional-chaining
syntax-json-strings
syntax-optional-catch-binding
syntax-async-generators
syntax-object-rest-spread
syntax-export-namespace-from
syntax-dynamic-import
syntax-top-level-await
syntax-import-meta
Using polyfills: No polyfills were added, since the `useBuiltIns` option was not set.
@@ -10,6 +10,8 @@ Using modules transform: auto
Using plugins:
transform-duplicate-named-capturing-groups-regex { safari < 17.4 }
transform-unicode-sets-regex { safari < 17 }
bugfix/transform-firefox-class-in-computed-class-key { safari < 16 }
bugfix/transform-safari-class-field-initializer-scope { safari < 16 }
transform-class-static-block { safari < 16.4 }
syntax-private-property-in-object
syntax-class-properties
@@ -10,6 +10,8 @@ Using modules transform: auto
Using plugins:
transform-duplicate-named-capturing-groups-regex { safari < 17.4 }
transform-unicode-sets-regex { safari < 17 }
bugfix/transform-firefox-class-in-computed-class-key { safari < 16 }
bugfix/transform-safari-class-field-initializer-scope { safari < 16 }
transform-class-static-block { safari < 16.4 }
syntax-private-property-in-object
syntax-class-properties
@@ -18,7 +18,8 @@ Using modules transform: auto
Using plugins:
transform-duplicate-named-capturing-groups-regex { android, chrome < 126, edge < 126, firefox < 129, ios, opera, opera_mobile, samsung }
transform-unicode-sets-regex { chrome < 112, firefox < 116, ios < 17, samsung }
bugfix/transform-firefox-class-in-computed-class-key { firefox }
bugfix/transform-firefox-class-in-computed-class-key { firefox, ios < 16 }
bugfix/transform-safari-class-field-initializer-scope { ios < 16 }
transform-class-static-block { ios < 16.4 }
syntax-private-property-in-object
syntax-class-properties
@@ -18,7 +18,8 @@ Using modules transform: auto
Using plugins:
transform-duplicate-named-capturing-groups-regex { android, chrome < 126, edge < 126, firefox < 129, ios, opera, opera_mobile, samsung }
transform-unicode-sets-regex { chrome < 112, firefox < 116, ios < 17, samsung }
bugfix/transform-firefox-class-in-computed-class-key { firefox }
bugfix/transform-firefox-class-in-computed-class-key { firefox, ios < 16 }
bugfix/transform-safari-class-field-initializer-scope { ios < 16 }
transform-class-static-block { ios < 16.4 }
syntax-private-property-in-object
syntax-class-properties
@@ -18,7 +18,8 @@ Using modules transform: auto
Using plugins:
transform-duplicate-named-capturing-groups-regex { android, chrome < 126, edge < 126, firefox < 129, ios, opera, opera_mobile, samsung }
transform-unicode-sets-regex { chrome < 112, firefox < 116, ios < 17, samsung }
bugfix/transform-firefox-class-in-computed-class-key { firefox }
bugfix/transform-firefox-class-in-computed-class-key { firefox, ios < 16 }
bugfix/transform-safari-class-field-initializer-scope { ios < 16 }
transform-class-static-block { ios < 16.4 }
transform-export-namespace-from { }
bugfix/transform-safari-id-destructuring-collision-in-function-expression { ios < 16.3 }
@@ -18,7 +18,8 @@ Using modules transform: auto
Using plugins:
transform-duplicate-named-capturing-groups-regex { android, chrome < 126, edge < 126, firefox < 129, ios, opera, opera_mobile, samsung }
transform-unicode-sets-regex { chrome < 112, firefox < 116, ios < 17, samsung }
bugfix/transform-firefox-class-in-computed-class-key { firefox }
bugfix/transform-firefox-class-in-computed-class-key { firefox, ios < 16 }
bugfix/transform-safari-class-field-initializer-scope { ios < 16 }
transform-class-static-block { ios < 16.4 }
transform-export-namespace-from { }
bugfix/transform-safari-id-destructuring-collision-in-function-expression { ios < 16.3 }
+3
View File
@@ -16,6 +16,9 @@
{
"path": "../../packages/babel-plugin-bugfix-firefox-class-in-computed-class-key"
},
{
"path": "../../packages/babel-plugin-bugfix-safari-class-field-initializer-scope"
},
{
"path": "../../packages/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression"
},
+3
View File
@@ -70,6 +70,9 @@
{
"path": "./packages/babel-plugin-bugfix-firefox-class-in-computed-class-key"
},
{
"path": "./packages/babel-plugin-bugfix-safari-class-field-initializer-scope"
},
{
"path": "./packages/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression"
},
+3
View File
@@ -125,6 +125,9 @@
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": [
"./packages/babel-plugin-bugfix-firefox-class-in-computed-class-key/src"
],
"@babel/plugin-bugfix-safari-class-field-initializer-scope": [
"./packages/babel-plugin-bugfix-safari-class-field-initializer-scope/src"
],
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": [
"./packages/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression/src"
],
+15
View File
@@ -1368,6 +1368,20 @@ __metadata:
languageName: unknown
linkType: soft
"@babel/plugin-bugfix-safari-class-field-initializer-scope@workspace:^, @babel/plugin-bugfix-safari-class-field-initializer-scope@workspace:packages/babel-plugin-bugfix-safari-class-field-initializer-scope":
version: 0.0.0-use.local
resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@workspace:packages/babel-plugin-bugfix-safari-class-field-initializer-scope"
dependencies:
"@babel/core": "workspace:^"
"@babel/helper-function-name": "workspace:^"
"@babel/helper-plugin-test-runner": "workspace:^"
"@babel/helper-plugin-utils": "workspace:^"
"@babel/traverse": "workspace:^"
peerDependencies:
"@babel/core": ^7.0.0
languageName: unknown
linkType: soft
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^8.0.0-alpha.8":
version: 8.0.0-alpha.8
resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:8.0.0-alpha.8"
@@ -4035,6 +4049,7 @@ __metadata:
"@babel/helper-plugin-utils": "workspace:^"
"@babel/helper-validator-option": "workspace:^"
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "workspace:^"
"@babel/plugin-bugfix-safari-class-field-initializer-scope": "workspace:^"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "workspace:^"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "workspace:^"
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "workspace:^"