Skip to content

Commit

Permalink
Add class static blocks to preset-env's shippedProposals (#13114)
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolo-ribaudo committed Apr 16, 2021
1 parent 0cfe3dc commit a56dd89
Show file tree
Hide file tree
Showing 84 changed files with 151 additions and 16 deletions.
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.15",
"@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);

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

0 comments on commit a56dd89

Please sign in to comment.