Update preset-env builtin-definitions (#10929)

* chore: build corejs3-proposals.json from core-js-compat

* fix: include finished proposals by default

* update test fixtures

* update test fixtures

* chore: rename scripts

* fix: add standarized entries for finished proposals

* refactor: remove unused finished proposals json

* revert test fixtures update

* test against corejs 3.6

* fix: move corejs builtin definitions to babel/compat-data
This commit is contained in:
Huáng Jùnliàng 2020-02-17 13:30:53 -05:00 committed by GitHub
parent 31b0506040
commit 1613418f9b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 59 additions and 9 deletions

View File

@ -0,0 +1,4 @@
// Node < 13.3 doesn't support export maps in package.json.
// Use this proxy file as a fallback.
module.exports = require("./data/corejs3-shipped-proposals.json");

View File

@ -0,0 +1,5 @@
[
"esnext.global-this",
"esnext.promise.all-settled",
"esnext.string.match-all"
]

View File

@ -12,10 +12,11 @@
"./plugins": "./data/plugins.json", "./plugins": "./data/plugins.json",
"./native-modules": "./data/native-modules.json", "./native-modules": "./data/native-modules.json",
"./corejs2-built-ins": "./data/corejs2-built-ins.json", "./corejs2-built-ins": "./data/corejs2-built-ins.json",
"./corejs3-shipped-proposals": "./data/corejs3-shipped-proposals",
"./overlapping-plugins": "./data/overlapping-plugins.json" "./overlapping-plugins": "./data/overlapping-plugins.json"
}, },
"scripts": { "scripts": {
"build-data": "./scripts/download-compat-table.sh; node ./scripts/build-data.js; node ./scripts/build-modules-support.js; node ./scripts/build-overlapping-plugins.js" "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"
}, },
"keywords": [ "keywords": [
"babel", "babel",

View File

@ -0,0 +1,34 @@
const data = require("core-js-compat/data.json");
const fs = require("fs");
const path = require("path");
const features = Object.keys(data);
const shippedProposals = features.filter(feature => {
return feature.startsWith("esnext.") && Object.keys(data[feature]).length > 0;
});
fs.writeFileSync(
path.join(__dirname, "../data/corejs3-shipped-proposals.json"),
JSON.stringify(shippedProposals, undefined, 2) + "\n"
);
const finishedProposals = shippedProposals.filter(feature => {
return features.includes(feature.replace("esnext.", "es."));
});
const builtInDefinitionsPath = path.join(
__dirname,
"../../babel-preset-env/src/polyfills/corejs3/built-in-definitions.js"
);
const builtInDefinitions = fs.readFileSync(builtInDefinitionsPath, "utf-8");
for (const feature of finishedProposals) {
const standarizedName = feature.replace("esnext.", "es.");
if (!builtInDefinitions.includes(standarizedName)) {
console.log(
`${feature} is now standarized as ${standarizedName}, please add "${standarizedName}" to "${builtInDefinitionsPath}"`
);
}
}

View File

@ -158,7 +158,7 @@ export const BuiltIns: ObjectMap<string[]> = {
compositeKey: ["esnext.composite-key"], compositeKey: ["esnext.composite-key"],
compositeSymbol: ["esnext.composite-symbol", ...SymbolDependencies], compositeSymbol: ["esnext.composite-symbol", ...SymbolDependencies],
fetch: PromiseDependencies, fetch: PromiseDependencies,
globalThis: ["esnext.global-this"], globalThis: ["es.global-this", "esnext.global-this"],
parseFloat: ["es.parse-float"], parseFloat: ["es.parse-float"],
parseInt: ["es.parse-int"], parseInt: ["es.parse-int"],
queueMicrotask: ["web.queue-microtask"], queueMicrotask: ["web.queue-microtask"],
@ -205,7 +205,7 @@ export const InstanceProperties: ObjectMap<string[]> = {
lastItem: ["esnext.array.last-item"], lastItem: ["esnext.array.last-item"],
link: ["es.string.link"], link: ["es.string.link"],
match: ["es.string.match", "es.regexp.exec"], match: ["es.string.match", "es.regexp.exec"],
matchAll: ["esnext.string.match-all"], matchAll: ["es.string.match-all", "esnext.string.match-all"],
map: ["es.array.map"], map: ["es.array.map"],
name: ["es.function.name"], name: ["es.function.name"],
padEnd: ["es.string.pad-end"], padEnd: ["es.string.pad-end"],
@ -355,6 +355,7 @@ export const StaticProperties: ObjectMap<ObjectMap<string | string[]>> = {
Promise: { Promise: {
all: PromiseDependenciesWithIterators, all: PromiseDependenciesWithIterators,
allSettled: [ allSettled: [
"es.promise.all-settled",
"esnext.promise.all-settled", "esnext.promise.all-settled",
...PromiseDependenciesWithIterators, ...PromiseDependenciesWithIterators,
], ],

View File

@ -1,3 +0,0 @@
// @flow
export default (["esnext.global-this", "esnext.string.match-all"]: string[]);

View File

@ -1,7 +1,7 @@
// @flow // @flow
import corejs3Polyfills from "core-js-compat/data"; import corejs3Polyfills from "core-js-compat/data";
import corejs3ShippedProposalsList from "./shipped-proposals"; import corejs3ShippedProposalsList from "@babel/compat-data/corejs3-shipped-proposals";
import getModulesListForTargetVersion from "core-js-compat/get-modules-list-for-target-version"; import getModulesListForTargetVersion from "core-js-compat/get-modules-list-for-target-version";
import { filterItems } from "@babel/helper-compilation-targets"; import { filterItems } from "@babel/helper-compilation-targets";
import { import {
@ -39,7 +39,7 @@ const corejs3PolyfillsWithoutProposals = Object.keys(corejs3Polyfills)
return memo; return memo;
}, {}); }, {});
const corejs3PolyfillsWithShippedProposals = corejs3ShippedProposalsList.reduce( const corejs3PolyfillsWithShippedProposals = (corejs3ShippedProposalsList: string[]).reduce(
(memo, key) => { (memo, key) => {
memo[key] = corejs3Polyfills[key]; memo[key] = corejs3Polyfills[key];
return memo; return memo;

View File

@ -24,3 +24,6 @@ const foo = new Promise((resolve) => {
queueMicrotask(() => globalThis); queueMicrotask(() => globalThis);
Observable.from(10); Observable.from(10);
Promise.allSettled([]);
S.matchAll();

View File

@ -4,7 +4,7 @@
"../../../../lib", "../../../../lib",
{ {
"useBuiltIns": "usage", "useBuiltIns": "usage",
"corejs": 3, "corejs": "3.6",
"modules": false "modules": false
} }
] ]

View File

@ -4,12 +4,15 @@ import "core-js/modules/es.symbol.iterator";
import "core-js/modules/es.symbol.match"; import "core-js/modules/es.symbol.match";
import "core-js/modules/es.array.from"; import "core-js/modules/es.array.from";
import "core-js/modules/es.array.iterator"; import "core-js/modules/es.array.iterator";
import "core-js/modules/es.global-this";
import "core-js/modules/es.map"; import "core-js/modules/es.map";
import "core-js/modules/es.object.to-string"; import "core-js/modules/es.object.to-string";
import "core-js/modules/es.promise"; import "core-js/modules/es.promise";
import "core-js/modules/es.promise.all-settled";
import "core-js/modules/es.regexp.exec"; import "core-js/modules/es.regexp.exec";
import "core-js/modules/es.string.iterator"; import "core-js/modules/es.string.iterator";
import "core-js/modules/es.string.match"; import "core-js/modules/es.string.match";
import "core-js/modules/es.string.match-all";
import "core-js/modules/web.dom-collections.iterator"; import "core-js/modules/web.dom-collections.iterator";
import "core-js/modules/web.queue-microtask"; import "core-js/modules/web.queue-microtask";
Array.from; // static method Array.from; // static method
@ -49,3 +52,5 @@ queueMicrotask(function () {
return globalThis; return globalThis;
}); });
Observable.from(10); Observable.from(10);
Promise.allSettled([]);
S.matchAll();