Skip to content

Commit a11855e

Browse files
Include preset modules (babel#11083)
* Prepare preset-env and compat-data for preset-modules * Add transform-edge-default-parameters from preset-modules * AUtomatically generate data from compat-table * Add compat data for other plugins * Updates after rebase * Add more bugfixes to preset-env * Update tests * Add bugfix/transform-safari-for-shadowing * Fix build script * bugfix/transform-safari-block-shadowing * Fix flow * Include changes from 7127330 * Fix check-compat-data
1 parent f6c7bf3 commit a11855e

File tree

83 files changed

+1499
-347
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+1499
-347
lines changed

.flowconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ codemods/*/src
1414
lib/file.js
1515
lib/parser.js
1616
lib/third-party-libs.js.flow
17+
lib/preset-modules.js.flow
1718
packages/babel-types/lib/index.js.flow
1819

1920
[options]

lib/preset-modules.js.flow

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
declare module "@babel/preset-modules/lib/plugins/transform-async-arrows-in-class" {
2+
declare module.exports: Function;
3+
}
4+
declare module "@babel/preset-modules/lib/plugins/transform-edge-default-parameters" {
5+
declare module.exports: Function;
6+
}
7+
declare module "@babel/preset-modules/lib/plugins/transform-edge-function-name" {
8+
declare module.exports: Function;
9+
}
10+
declare module "@babel/preset-modules/lib/plugins/transform-tagged-template-caching" {
11+
declare module.exports: Function;
12+
}
13+
declare module "@babel/preset-modules/lib/plugins/transform-safari-block-shadowing" {
14+
declare module.exports: Function;
15+
}
16+
declare module "@babel/preset-modules/lib/plugins/transform-safari-for-shadowing" {
17+
declare module.exports: Function;
18+
}
Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
11
{
2-
"transform-regenerator": []
3-
}
2+
"transform-async-to-generator": [
3+
"bugfix/transform-async-arrows-in-class"
4+
],
5+
"transform-parameters": [
6+
"bugfix/transform-edge-default-parameters"
7+
],
8+
"transform-function-name": [
9+
"bugfix/transform-edge-function-name"
10+
],
11+
"transform-block-scoping": [
12+
"bugfix/transform-safari-block-shadowing",
13+
"bugfix/transform-safari-for-shadowing"
14+
],
15+
"transform-template-literals": [
16+
"bugfix/transform-tagged-template-caching"
17+
]
18+
}
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
{
2+
"transform-async-to-generator": {
3+
"chrome": "55",
4+
"edge": "15",
5+
"firefox": "52",
6+
"safari": "10.1",
7+
"node": "7.6",
8+
"ios": "10.3",
9+
"samsung": "6",
10+
"opera": "42",
11+
"electron": "1.6"
12+
},
13+
"bugfix/transform-async-arrows-in-class": {
14+
"chrome": "55",
15+
"edge": "15",
16+
"firefox": "52",
17+
"safari": "11",
18+
"node": "7.6",
19+
"ios": "11",
20+
"samsung": "6",
21+
"opera": "42",
22+
"electron": "1.6"
23+
},
24+
"transform-parameters": {
25+
"chrome": "49",
26+
"edge": "15",
27+
"firefox": "53",
28+
"safari": "10",
29+
"node": "6",
30+
"ios": "10",
31+
"samsung": "5",
32+
"opera": "36",
33+
"electron": "1"
34+
},
35+
"bugfix/transform-edge-default-parameters": {
36+
"chrome": "49",
37+
"edge": "18",
38+
"firefox": "52",
39+
"safari": "10",
40+
"node": "6",
41+
"ios": "10",
42+
"samsung": "5",
43+
"opera": "36",
44+
"electron": "1"
45+
},
46+
"transform-function-name": {
47+
"chrome": "51",
48+
"edge": "14",
49+
"firefox": "53",
50+
"safari": "10",
51+
"node": "6.5",
52+
"ios": "10",
53+
"samsung": "5",
54+
"opera": "38",
55+
"electron": "1.2"
56+
},
57+
"bugfix/transform-edge-function-name": {
58+
"chrome": "51",
59+
"edge": "79",
60+
"firefox": "53",
61+
"safari": "10",
62+
"node": "6.5",
63+
"ios": "10",
64+
"samsung": "5",
65+
"opera": "38",
66+
"electron": "1.2"
67+
},
68+
"transform-block-scoping": {
69+
"chrome": "49",
70+
"edge": "14",
71+
"firefox": "51",
72+
"safari": "10",
73+
"node": "6",
74+
"ios": "10",
75+
"samsung": "5",
76+
"opera": "36",
77+
"electron": "1"
78+
},
79+
"bugfix/transform-safari-block-shadowing": {
80+
"chrome": "49",
81+
"edge": "12",
82+
"firefox": "44",
83+
"safari": "11",
84+
"node": "6",
85+
"ie": "11",
86+
"ios": "11",
87+
"samsung": "5",
88+
"opera": "36",
89+
"electron": "1"
90+
},
91+
"bugfix/transform-safari-for-shadowing": {
92+
"chrome": "49",
93+
"edge": "12",
94+
"firefox": "4",
95+
"safari": "11",
96+
"node": "6",
97+
"ie": "11",
98+
"ios": "11",
99+
"samsung": "5",
100+
"opera": "36",
101+
"electron": "1"
102+
},
103+
"transform-template-literals": {
104+
"chrome": "41",
105+
"edge": "13",
106+
"firefox": "34",
107+
"safari": "9",
108+
"node": "4",
109+
"ios": "9",
110+
"samsung": "3.4",
111+
"opera": "28",
112+
"electron": "0.24"
113+
},
114+
"bugfix/transform-tagged-template-caching": {
115+
"chrome": "41",
116+
"edge": "12",
117+
"firefox": "34",
118+
"safari": "13",
119+
"node": "4",
120+
"ios": "13",
121+
"samsung": "3.4",
122+
"opera": "28",
123+
"electron": "0.24"
124+
}
125+
}

packages/babel-compat-data/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@
1313
"./native-modules": "./data/native-modules.json",
1414
"./corejs2-built-ins": "./data/corejs2-built-ins.json",
1515
"./corejs3-shipped-proposals": "./data/corejs3-shipped-proposals",
16-
"./overlapping-plugins": "./data/overlapping-plugins.json"
16+
"./overlapping-plugins": "./data/overlapping-plugins.json",
17+
"./plugin-bugfixes": "./data/plugin-bugfixes.json"
1718
},
1819
"scripts": {
19-
"build-data": "./scripts/download-compat-table.sh; node ./scripts/build-data.js; node ./scripts/build-modules-support.js; node ./scripts/build-overlapping-plugins.js; node ./scripts/build-corejs3-proposals.js"
20+
"build-data": "./scripts/download-compat-table.sh; node ./scripts/build-data.js; node ./scripts/build-modules-support.js; node ./scripts/build-bugfixes-targets.js"
2021
},
2122
"keywords": [
2223
"babel",
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// Node < 13.3 doesn't support export maps in package.json.
2+
// Use this proxy file as a fallback.
3+
4+
module.exports = require("./data/plugin-bugfixes.json");
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
"use strict";
2+
3+
// NOTE: This script must be run _after_ build-data.js
4+
5+
const path = require("path");
6+
7+
const {
8+
getLowestImplementedVersion,
9+
environments,
10+
addOperaAndElectron,
11+
writeFile,
12+
} = require("./utils-build-data");
13+
14+
const data = require("./data/plugin-bugfixes");
15+
const pluginFeatures = require("./data/plugin-features");
16+
17+
const generatedTargets = {};
18+
const overlappingPlugins = {};
19+
20+
const allReplacedFeatures = {};
21+
22+
const has = Function.call.bind(Object.hasOwnProperty);
23+
24+
for (const [plugin, { replaces, features }] of Object.entries(data)) {
25+
if (!has(overlappingPlugins, replaces)) {
26+
overlappingPlugins[replaces] = [];
27+
generatedTargets[replaces] = {};
28+
allReplacedFeatures[replaces] = [];
29+
}
30+
generatedTargets[plugin] = {};
31+
32+
allReplacedFeatures[replaces].push(...features);
33+
34+
overlappingPlugins[replaces].push(plugin);
35+
36+
for (const env of environments) {
37+
const supportedWithBugfix = getLowestImplementedVersion({ features }, env);
38+
if (supportedWithBugfix) {
39+
generatedTargets[plugin][env] = supportedWithBugfix;
40+
}
41+
}
42+
}
43+
44+
for (const [replaced, features] of Object.entries(allReplacedFeatures)) {
45+
let replacedFeatures = pluginFeatures[replaced];
46+
if (!Array.isArray(replacedFeatures)) {
47+
replacedFeatures = replacedFeatures.features;
48+
}
49+
50+
for (const env of environments) {
51+
const stillNotSupported = getLowestImplementedVersion(
52+
{ features: replacedFeatures },
53+
env,
54+
name => features.some(feat => name.includes(feat))
55+
);
56+
57+
if (stillNotSupported) {
58+
generatedTargets[replaced][env] = stillNotSupported;
59+
}
60+
}
61+
}
62+
63+
for (const plugin of Object.values(generatedTargets)) {
64+
addOperaAndElectron(plugin);
65+
}
66+
67+
for (const [filename, data] of [
68+
["plugin-bugfixes", generatedTargets],
69+
["overlapping-plugins", overlappingPlugins],
70+
]) {
71+
const dataPath = path.join(__dirname, `../data/${filename}.json`);
72+
73+
if (!writeFile(data, dataPath, filename)) {
74+
process.exitCode = 1;
75+
break;
76+
}
77+
}

0 commit comments

Comments
 (0)