Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add class static blocks to preset-env's shippedProposals #13114

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/babel-compat-data/data/plugins.json
@@ -1,4 +1,7 @@
{
"proposal-class-static-block": {
"chrome": "91"
},
"proposal-class-properties": {
"chrome": "74",
"opera": "62",
Expand Down Expand Up @@ -28,6 +31,7 @@
},
"proposal-logical-assignment-operators": {
"chrome": "85",
"opera": "71",
"edge": "85",
"firefox": "79",
"safari": "14",
Expand Down
1 change: 1 addition & 0 deletions packages/babel-compat-data/scripts/data/plugin-features.js
Expand Up @@ -135,6 +135,7 @@ const es2021 = {
};

const shippedProposal = {
"proposal-class-static-block": "Class static initialization blocks",
"proposal-class-properties": {
features: [
"static class fields",
Expand Down
@@ -1,7 +1,7 @@
#!/bin/bash
set -e

COMPAT_TABLE_COMMIT=ab73608bddb6895f6f3296c03dba057b47ba8aea
COMPAT_TABLE_COMMIT=ca2d70e305bc3295ade6b06a1c33a929db1ccacf
GIT_HEAD=build/compat-table/.git/HEAD

if [ -d "build/compat-table" ]; then
Expand Down
4 changes: 3 additions & 1 deletion packages/babel-preset-env/data/shipped-proposals.js
Expand Up @@ -4,13 +4,15 @@

const proposalPlugins = new Set([
"proposal-class-properties",
"proposal-private-methods"
"proposal-private-methods",
"proposal-class-static-block",
]);

// use intermediary object to enforce alphabetical key order
const pluginSyntaxObject = {
"proposal-async-generator-functions": "syntax-async-generators",
"proposal-class-properties": "syntax-class-properties",
"proposal-class-static-block": "syntax-class-static-block",
"proposal-json-strings": "syntax-json-strings",
"proposal-nullish-coalescing-operator": "syntax-nullish-coalescing-operator",
"proposal-numeric-separator": "syntax-numeric-separator",
Expand Down
2 changes: 2 additions & 0 deletions packages/babel-preset-env/package.json
Expand Up @@ -23,6 +23,7 @@
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "workspace:^7.13.12",
"@babel/plugin-proposal-async-generator-functions": "workspace:^7.13.8",
"@babel/plugin-proposal-class-properties": "workspace:^7.13.0",
"@babel/plugin-proposal-class-static-block": "workspace:^7.13.11",
"@babel/plugin-proposal-dynamic-import": "workspace:^7.13.8",
"@babel/plugin-proposal-export-namespace-from": "workspace:^7.12.13",
"@babel/plugin-proposal-json-strings": "workspace:^7.13.8",
Expand All @@ -36,6 +37,7 @@
"@babel/plugin-proposal-unicode-property-regex": "workspace:^7.12.13",
"@babel/plugin-syntax-async-generators": "^7.8.4",
"@babel/plugin-syntax-class-properties": "workspace:^7.12.13",
"@babel/plugin-syntax-class-static-block": "workspace:^7.12.13",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-export-namespace-from": "^7.8.3",
"@babel/plugin-syntax-json-strings": "^7.8.3",
Expand Down
8 changes: 8 additions & 0 deletions packages/babel-preset-env/src/available-plugins.js
Expand Up @@ -3,6 +3,7 @@

import syntaxAsyncGenerators from "@babel/plugin-syntax-async-generators";
import syntaxClassProperties from "@babel/plugin-syntax-class-properties";
import syntaxClassStaticBlock from "@babel/plugin-syntax-class-static-block";
import syntaxDynamicImport from "@babel/plugin-syntax-dynamic-import";
import syntaxExportNamespaceFrom from "@babel/plugin-syntax-export-namespace-from";
import syntaxJsonStrings from "@babel/plugin-syntax-json-strings";
Expand All @@ -15,6 +16,7 @@ import syntaxOptionalChaining from "@babel/plugin-syntax-optional-chaining";
import syntaxTopLevelAwait from "@babel/plugin-syntax-top-level-await";
import proposalAsyncGeneratorFunctions from "@babel/plugin-proposal-async-generator-functions";
import proposalClassProperties from "@babel/plugin-proposal-class-properties";
import proposalClassStaticBlock from "@babel/plugin-proposal-class-static-block";
import proposalDynamicImport from "@babel/plugin-proposal-dynamic-import";
import proposalExportNamespaceFrom from "@babel/plugin-proposal-export-namespace-from";
import proposalJsonStrings from "@babel/plugin-proposal-json-strings";
Expand Down Expand Up @@ -78,6 +80,7 @@ export default {
bugfixV8SpreadParametersInOptionalChaining,
"proposal-async-generator-functions": () => proposalAsyncGeneratorFunctions,
"proposal-class-properties": () => proposalClassProperties,
"proposal-class-static-block": () => proposalClassStaticBlock,
"proposal-dynamic-import": () => proposalDynamicImport,
"proposal-export-namespace-from": () => proposalExportNamespaceFrom,
"proposal-json-strings": () => proposalJsonStrings,
Expand All @@ -93,6 +96,7 @@ export default {
"proposal-unicode-property-regex": () => proposalUnicodePropertyRegex,
"syntax-async-generators": () => syntaxAsyncGenerators,
"syntax-class-properties": () => syntaxClassProperties,
"syntax-class-static-block": () => syntaxClassStaticBlock,
"syntax-dynamic-import": () => syntaxDynamicImport,
"syntax-export-namespace-from": () => syntaxExportNamespaceFrom,
"syntax-json-strings": () => syntaxJsonStrings,
Expand Down Expand Up @@ -138,3 +142,7 @@ export default {
"transform-unicode-escapes": () => transformUnicodeEscapes,
"transform-unicode-regex": () => transformUnicodeRegex,
};

export const minVersions = {
"proposal-class-static-block": "7.12.0",
};
16 changes: 16 additions & 0 deletions packages/babel-preset-env/src/filter-items.js
@@ -1,5 +1,11 @@
// @flow

import { lt } from "semver";
import { minVersions } from "./available-plugins";

// $FlowIgnore
const has = Function.call.bind(Object.hasOwnProperty);
nicolo-ribaudo marked this conversation as resolved.
Show resolved Hide resolved

export function removeUnnecessaryItems(
items: Set<string>,
overlapping: { [name: string]: string[] },
Expand All @@ -8,3 +14,13 @@ export function removeUnnecessaryItems(
overlapping[item]?.forEach(name => items.delete(name));
});
}
export function removeUnsupportedItems(
items: Set<string>,
babelVersion: string,
) {
items.forEach(item => {
if (has(minVersions, item) && lt(babelVersion, minVersions[item])) {
items.delete(item);
}
});
}
3 changes: 2 additions & 1 deletion packages/babel-preset-env/src/index.js
Expand Up @@ -3,7 +3,7 @@
import { SemVer, lt } from "semver";
import { logPlugin } from "./debug";
import getOptionSpecificExcludesFor from "./get-option-specific-excludes";
import { removeUnnecessaryItems } from "./filter-items";
import { removeUnnecessaryItems, removeUnsupportedItems } from "./filter-items";
import moduleTransformations from "./module-transformations";
import normalizeOptions from "./normalize-options";
import { proposalPlugins, pluginSyntaxMap } from "../data/shipped-proposals";
Expand Down Expand Up @@ -374,6 +374,7 @@ option \`forceAllTransforms: true\` instead.
pluginSyntaxMap,
);
removeUnnecessaryItems(pluginNames, overlappingPlugins);
removeUnsupportedItems(pluginNames, api.version);

const polyfillPlugins = getPolyfillPlugins({
useBuiltIns,
Expand Down
Expand Up @@ -17,7 +17,7 @@ Using modules transform: auto

Using plugins:
proposal-numeric-separator { android, chrome < 75, edge < 79, firefox < 70, ios < 13, opera < 62, safari < 13, samsung < 11 }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera, safari < 14, samsung }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera < 71, safari < 14, samsung }
proposal-nullish-coalescing-operator { android, chrome < 80, edge < 80, firefox < 72, ios < 13.4, node < 14, opera < 67, safari < 13.1, samsung < 13 }
proposal-optional-chaining { android, chrome, edge, firefox < 74, ios < 13.4, node, opera, safari < 13.1, samsung }
proposal-json-strings { android, chrome < 66, edge < 79, firefox < 62, ios < 12, opera < 53, safari < 12, samsung < 9 }
Expand Down
Expand Up @@ -17,7 +17,7 @@ Using modules transform: auto

Using plugins:
proposal-numeric-separator { android, chrome < 75, edge < 79, firefox < 70, ios < 13, opera < 62, safari < 13, samsung < 11 }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera, safari < 14, samsung }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera < 71, safari < 14, samsung }
proposal-nullish-coalescing-operator { android, chrome < 80, edge < 80, firefox < 72, ios < 13.4, node < 14, opera < 67, safari < 13.1, samsung < 13 }
proposal-optional-chaining { android, chrome < 80, edge < 80, firefox < 74, ios < 13.4, node < 14, opera < 67, safari < 13.1, samsung < 13 }
proposal-json-strings { android, chrome < 66, edge < 79, firefox < 62, ios < 12, opera < 53, safari < 12, samsung < 9 }
Expand Down
Expand Up @@ -17,7 +17,7 @@ Using modules transform: false

Using plugins:
proposal-numeric-separator { android, chrome < 75, edge < 79, firefox < 70, ios < 13, opera < 62, safari < 13, samsung < 11 }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera, safari < 14, samsung }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera < 71, safari < 14, samsung }
proposal-nullish-coalescing-operator { android, chrome < 80, edge < 80, firefox < 72, ios < 13.4, node < 14, opera < 67, safari < 13.1, samsung < 13 }
proposal-optional-chaining { android, chrome, edge, firefox < 74, ios < 13.4, node, opera, safari < 13.1, samsung }
proposal-json-strings { android, chrome < 66, edge < 79, firefox < 62, ios < 12, opera < 53, safari < 12, samsung < 9 }
Expand Down
Expand Up @@ -17,7 +17,7 @@ Using modules transform: false

Using plugins:
proposal-numeric-separator { android, chrome < 75, edge < 79, firefox < 70, ios < 13, opera < 62, safari < 13, samsung < 11 }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera, safari < 14, samsung }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera < 71, safari < 14, samsung }
proposal-nullish-coalescing-operator { android, chrome < 80, edge < 80, firefox < 72, ios < 13.4, node < 14, opera < 67, safari < 13.1, samsung < 13 }
proposal-optional-chaining { android, chrome, edge, firefox < 74, ios < 13.4, node, opera, safari < 13.1, samsung }
proposal-json-strings { android, chrome < 66, edge < 79, firefox < 62, ios < 12, opera < 53, safari < 12, samsung < 9 }
Expand Down
Expand Up @@ -17,7 +17,7 @@ Using modules transform: false

Using plugins:
proposal-numeric-separator { android, chrome < 75, edge < 79, firefox < 70, ios < 13, opera < 62, safari < 13, samsung < 11 }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera, safari < 14, samsung }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera < 71, safari < 14, samsung }
proposal-nullish-coalescing-operator { android, chrome < 80, edge < 80, firefox < 72, ios < 13.4, node < 14, opera < 67, safari < 13.1, samsung < 13 }
proposal-optional-chaining { android, chrome, edge, firefox < 74, ios < 13.4, node, opera, safari < 13.1, samsung }
proposal-json-strings { android, chrome < 66, edge < 79, firefox < 62, ios < 12, opera < 53, safari < 12, samsung < 9 }
Expand Down
Expand Up @@ -17,7 +17,7 @@ Using modules transform: false

Using plugins:
proposal-numeric-separator { android, chrome < 75, edge < 79, firefox < 70, ios < 13, opera < 62, safari < 13, samsung < 11 }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera, safari < 14, samsung }
proposal-logical-assignment-operators { android, chrome < 85, edge < 85, firefox < 79, ios < 14, node < 15, opera < 71, safari < 14, samsung }
proposal-nullish-coalescing-operator { android, chrome < 80, edge < 80, firefox < 72, ios < 13.4, node < 14, opera < 67, safari < 13.1, samsung < 13 }
proposal-optional-chaining { android, chrome, edge, firefox < 74, ios < 13.4, node, opera, safari < 13.1, samsung }
proposal-json-strings { android, chrome < 66, edge < 79, firefox < 62, ios < 12, opera < 53, safari < 12, samsung < 9 }
Expand Down
Expand Up @@ -16,7 +16,7 @@ Using modules transform: auto

Using plugins:
proposal-numeric-separator { ios < 13 }
proposal-logical-assignment-operators { chrome < 85, firefox < 79, ios < 14, opera, safari < 14, samsung }
proposal-logical-assignment-operators { chrome < 85, firefox < 79, ios < 14, safari < 14, samsung }
proposal-nullish-coalescing-operator { ios < 13.4, samsung < 13 }
proposal-optional-chaining { android, chrome, edge, ios < 13.4, opera, samsung }
syntax-json-strings
Expand Down
Expand Up @@ -17,7 +17,7 @@ Using modules transform: auto

Using plugins:
proposal-numeric-separator { ie, ios < 13 }
proposal-logical-assignment-operators { chrome < 85, firefox < 79, ie, ios < 14, opera, safari < 14, samsung }
proposal-logical-assignment-operators { chrome < 85, firefox < 79, ie, ios < 14, safari < 14, samsung }
proposal-nullish-coalescing-operator { ie, ios < 13.4, samsung < 13 }
proposal-optional-chaining { android, chrome, edge, ie, ios < 13.4, opera, samsung }
proposal-json-strings { ie }
Expand Down
Expand Up @@ -16,7 +16,7 @@ Using modules transform: auto

Using plugins:
syntax-numeric-separator
proposal-logical-assignment-operators { ios < 14, opera, safari < 14, samsung }
proposal-logical-assignment-operators { ios < 14, safari < 14, samsung }
proposal-nullish-coalescing-operator { samsung < 13 }
proposal-optional-chaining { android, chrome, edge, opera, samsung }
syntax-json-strings
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { chrome < 91 }
proposal-class-properties { chrome < 84 }
proposal-private-methods { chrome < 84 }
proposal-numeric-separator { chrome < 75 }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { ie }
proposal-class-properties { ie }
proposal-private-methods { ie }
proposal-numeric-separator { ie }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { chrome < 91 }
proposal-class-properties { chrome < 84 }
proposal-private-methods { chrome < 84 }
proposal-numeric-separator { chrome < 75 }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { ie }
proposal-class-properties { ie }
proposal-private-methods { ie }
proposal-numeric-separator { ie }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { ie }
proposal-class-properties { ie }
proposal-private-methods { ie }
proposal-numeric-separator { ie }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { chrome < 91 }
proposal-class-properties { chrome < 84 }
proposal-private-methods { chrome < 84 }
proposal-numeric-separator { chrome < 75 }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { chrome < 91 }
proposal-class-properties { chrome < 84 }
proposal-private-methods { chrome < 84 }
proposal-numeric-separator { chrome < 75 }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { ie }
proposal-class-properties { ie }
proposal-private-methods { ie }
proposal-numeric-separator { ie }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { ie }
proposal-class-properties { ie }
proposal-private-methods { ie }
proposal-numeric-separator { ie }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { chrome < 91 }
proposal-class-properties { chrome < 84 }
proposal-private-methods { chrome < 84 }
proposal-numeric-separator { chrome < 75 }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { chrome < 91 }
proposal-class-properties { chrome < 84 }
proposal-private-methods { chrome < 84 }
proposal-numeric-separator { chrome < 75 }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { chrome < 91 }
proposal-class-properties { chrome < 84 }
proposal-private-methods { chrome < 84 }
proposal-numeric-separator { chrome < 75 }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { ie }
proposal-class-properties { ie }
proposal-private-methods { ie }
proposal-numeric-separator { ie }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { chrome < 91 }
proposal-class-properties { chrome < 84 }
proposal-private-methods { chrome < 84 }
proposal-numeric-separator { chrome < 75 }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { samsung }
proposal-class-properties { samsung }
proposal-private-methods { samsung }
proposal-numeric-separator { samsung < 11 }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { ie }
proposal-class-properties { ie }
proposal-private-methods { ie }
proposal-numeric-separator { ie }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { chrome < 91 }
proposal-class-properties { chrome < 84 }
proposal-private-methods { chrome < 84 }
proposal-numeric-separator { chrome < 75 }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { ie }
proposal-class-properties { ie }
proposal-private-methods { ie }
proposal-numeric-separator { ie }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { chrome < 91 }
proposal-class-properties { chrome < 84 }
proposal-private-methods { chrome < 84 }
proposal-numeric-separator { chrome < 75 }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { ie }
proposal-class-properties { ie }
proposal-private-methods { ie }
proposal-numeric-separator { ie }
Expand Down
Expand Up @@ -8,6 +8,7 @@ Using targets:
Using modules transform: auto

Using plugins:
proposal-class-static-block { ie }
proposal-class-properties { ie }
proposal-private-methods { ie }
proposal-numeric-separator { ie }
Expand Down