From 2b1174855549f43d302910b7c37c1b2c18acf164 Mon Sep 17 00:00:00 2001 From: Justin Ridgewell Date: Fri, 19 Mar 2021 19:11:58 -0400 Subject: [PATCH] Remove `lodash` from `@babel/compat-data` (#13024) * Remove lodash from babel-compat-data * Remove flatMap poorlyfill. --- packages/babel-compat-data/package.json | 3 +-- .../scripts/utils-build-data.js | 27 ++++++++++--------- yarn.lock | 1 - 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/packages/babel-compat-data/package.json b/packages/babel-compat-data/package.json index 890f925233..727318da88 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 e8a21f4f27..05bd79dc06 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,8 +32,8 @@ exports.environments = [ "samsung", ]; -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 => @@ -63,13 +60,19 @@ exports.getLowestImplementedVersion = ( }); const envTests = tests.map(({ res }) => { - const lastNotImplemented = findLastIndex( - envsVersions[env], - // Babel assumes strict mode - ({ id }) => !(res[id] === true || res[id] === "strict") - ); + const versions = envsVersions[env]; + let i = versions.length - 1; - return envsVersions[env][lastNotImplemented + 1]; + // Find the last not-implemented version + for (; i >= 0; i--) { + const { id } = versions[i]; + // Babel assumes strict mode + if (res[id] !== true && res[id] !== "strict") { + break; + } + } + + return envsVersions[env][i + 1]; }); if (envTests.length === 0 || envTests.some(t => !t)) return null; @@ -85,7 +88,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 a23d0f621b..513f259daf 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