From aee673ac4716ea548292554d7834570add2cad37 Mon Sep 17 00:00:00 2001 From: Justin Ridgewell Date: Thu, 18 Mar 2021 23:51:57 -0400 Subject: [PATCH 1/2] Remove lodash from babel-compat-data --- packages/babel-compat-data/package.json | 3 +- .../scripts/utils-build-data.js | 28 +++++++++++++------ yarn.lock | 1 - 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/packages/babel-compat-data/package.json b/packages/babel-compat-data/package.json index 890f92523384..727318da889a 100644 --- a/packages/babel-compat-data/package.json +++ b/packages/babel-compat-data/package.json @@ -31,7 +31,6 @@ "devDependencies": { "@mdn/browser-compat-data": "^3.1.1", "core-js-compat": "^3.9.0", - "electron-to-chromium": "1.3.672", - "lodash": "^4.17.19" + "electron-to-chromium": "1.3.672" } } diff --git a/packages/babel-compat-data/scripts/utils-build-data.js b/packages/babel-compat-data/scripts/utils-build-data.js index e8a21f4f27fd..a6cf380e6b82 100644 --- a/packages/babel-compat-data/scripts/utils-build-data.js +++ b/packages/babel-compat-data/scripts/utils-build-data.js @@ -1,9 +1,6 @@ "use strict"; const fs = require("fs"); -const flatMap = require("lodash/flatMap"); -const mapValues = require("lodash/mapValues"); -const findLastIndex = require("lodash/findLastIndex"); const { addElectronSupportFromChromium } = require("./chromium-to-electron"); const envs = require("../build/compat-table/environments"); @@ -35,6 +32,13 @@ exports.environments = [ "samsung", ]; +function flatMap(array, cb) { + if (array.flatMap) return array.flatMap(cb); + return array.reduce((flattened, value) => { + return flattened.concat(value); + }, []); +} + const compatibilityTests = flatMap(compatSources, data => flatMap(data.tests, test => { if (!test.subtests) return test; @@ -63,13 +67,19 @@ exports.getLowestImplementedVersion = ( }); const envTests = tests.map(({ res }) => { - const lastNotImplemented = findLastIndex( - envsVersions[env], + const versions = envsVersions[env]; + let i = versions.length - 1; + + // Find the last not-implemented version + for (; i >= 0; i--) { + const { id } = versions[i]; // Babel assumes strict mode - ({ id }) => !(res[id] === true || res[id] === "strict") - ); + if (res[id] !== true && res[id] !== "strict") { + break; + } + } - return envsVersions[env][lastNotImplemented + 1]; + return envsVersions[env][i + 1]; }); if (envTests.length === 0 || envTests.some(t => !t)) return null; @@ -85,7 +95,7 @@ exports.getLowestImplementedVersion = ( }; exports.generateData = (environments, features) => { - return mapValues(features, options => { + return Object.values(features).map(options => { if (!options.features) { options = { features: [options], diff --git a/yarn.lock b/yarn.lock index 3760fee11bb2..8d83f07ca3c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -146,7 +146,6 @@ __metadata: "@mdn/browser-compat-data": ^3.1.1 core-js-compat: ^3.9.0 electron-to-chromium: 1.3.672 - lodash: ^4.17.19 languageName: unknown linkType: soft From 02fbf1b7b1c4b2c4c4ac6fb229bc40ffad5d6253 Mon Sep 17 00:00:00 2001 From: Justin Ridgewell Date: Fri, 19 Mar 2021 18:21:53 -0400 Subject: [PATCH 2/2] Remove flatMap poorlyfill. --- .../babel-compat-data/scripts/utils-build-data.js | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/packages/babel-compat-data/scripts/utils-build-data.js b/packages/babel-compat-data/scripts/utils-build-data.js index a6cf380e6b82..05bd79dc062a 100644 --- a/packages/babel-compat-data/scripts/utils-build-data.js +++ b/packages/babel-compat-data/scripts/utils-build-data.js @@ -32,15 +32,8 @@ exports.environments = [ "samsung", ]; -function flatMap(array, cb) { - if (array.flatMap) return array.flatMap(cb); - return array.reduce((flattened, value) => { - return flattened.concat(value); - }, []); -} - -const compatibilityTests = flatMap(compatSources, data => - flatMap(data.tests, test => { +const compatibilityTests = compatSources.flatMap(data => + data.tests.flatMap(test => { if (!test.subtests) return test; return test.subtests.map(subtest =>