From 078b35f4de061b9b246ed63889f247f79740ed15 Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 6 Jul 2020 15:50:47 +0100 Subject: [PATCH 01/13] Replace lodash 'defaults' usage with ES6 Spread initializer --- packages/babel-cli/src/babel/dir.js | 14 ++----- packages/babel-cli/src/babel/file.js | 42 +++++++------------ .../src/index.js | 6 +-- 3 files changed, 22 insertions(+), 40 deletions(-) diff --git a/packages/babel-cli/src/babel/dir.js b/packages/babel-cli/src/babel/dir.js index 7356574504b7..d27e89ea5958 100644 --- a/packages/babel-cli/src/babel/dir.js +++ b/packages/babel-cli/src/babel/dir.js @@ -1,6 +1,5 @@ // @flow -import defaults from "lodash/defaults"; import debounce from "lodash/debounce"; import { sync as makeDirSync } from "make-dir"; import slash from "slash"; @@ -48,15 +47,10 @@ export default async function ({ const dest = getDest(relative, base); try { - const res = await util.compile( - src, - defaults( - { - sourceFileName: slash(path.relative(dest + "/..", src)), - }, - babelOptions, - ), - ); + const res = await util.compile(src, { + sourceFileName: slash(path.relative(dest + "/..", src)), + ...babelOptions, + }); if (!res) return FILE_TYPE.IGNORED; diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js index 89e780acd908..2b86839321d9 100644 --- a/packages/babel-cli/src/babel/file.js +++ b/packages/babel-cli/src/babel/file.js @@ -1,7 +1,6 @@ // @flow import convertSourceMap from "convert-source-map"; -import defaults from "lodash/defaults"; import sourceMap from "source-map"; import slash from "slash"; import { sync as makeDirSync } from "make-dir"; @@ -127,16 +126,10 @@ export default async function ({ async function stdin(): Promise { const code = await readStdin(); - const res = await util.transform( - cliOptions.filename, - code, - defaults( - { - sourceFileName: "stdin", - }, - babelOptions, - ), - ); + const res = await util.transform(cliOptions.filename, code, { + sourceFileName: "stdin", + ...babelOptions, + }); output([res]); } @@ -177,22 +170,17 @@ export default async function ({ sourceFilename = slash(sourceFilename); try { - return await util.compile( - filename, - defaults( - { - sourceFileName: sourceFilename, - // Since we're compiling everything to be merged together, - // "inline" applies to the final output file, but not to the individual - // files being concatenated. - sourceMaps: - babelOptions.sourceMaps === "inline" - ? true - : babelOptions.sourceMaps, - }, - babelOptions, - ), - ); + return await util.compile(filename, { + sourceFileName: sourceFilename, + // Since we're compiling everything to be merged together, + // "inline" applies to the final output file, but not to the individual + // files being concatenated. + sourceMaps: + babelOptions.sourceMaps === "inline" + ? true + : babelOptions.sourceMaps, + ...babelOptions, + }); } catch (err) { if (!cliOptions.watch) { throw err; diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js index 1ff7233d1975..f1fa4a046819 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js @@ -4,7 +4,6 @@ import { buildExternalHelpers } from "@babel/core"; import getFixtures from "@babel/helper-fixtures"; import sourceMap from "source-map"; import { codeFrameColumns } from "@babel/code-frame"; -import defaults from "lodash/defaults"; import escapeRegExp from "lodash/escapeRegExp"; import * as helpers from "./helpers"; import extend from "lodash/extend"; @@ -376,9 +375,10 @@ export default function ( run(task); } - defaults(task.options, { + task.options = { + ...task.options, sourceMap: !!(task.sourceMappings || task.sourceMap), - }); + }; extend(task.options, taskOpts); From e72d39b8cfc5888589823f65fb0a8c8df432ce97 Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 6 Jul 2020 16:16:27 +0100 Subject: [PATCH 02/13] Partially revert 078b35f4: undo change in babel-helper-transform-fixture-test-runner --- .../babel-helper-transform-fixture-test-runner/src/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js index f1fa4a046819..1ff7233d1975 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js @@ -4,6 +4,7 @@ import { buildExternalHelpers } from "@babel/core"; import getFixtures from "@babel/helper-fixtures"; import sourceMap from "source-map"; import { codeFrameColumns } from "@babel/code-frame"; +import defaults from "lodash/defaults"; import escapeRegExp from "lodash/escapeRegExp"; import * as helpers from "./helpers"; import extend from "lodash/extend"; @@ -375,10 +376,9 @@ export default function ( run(task); } - task.options = { - ...task.options, + defaults(task.options, { sourceMap: !!(task.sourceMappings || task.sourceMap), - }; + }); extend(task.options, taskOpts); From 7f52c9ed712ebfa33fb364de82697650fcecf6c5 Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 6 Jul 2020 16:34:30 +0100 Subject: [PATCH 03/13] Partially revert 078b35f4: undo change in babel-cli.babel.file --- packages/babel-cli/src/babel/file.js | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js index 2b86839321d9..40a23001066e 100644 --- a/packages/babel-cli/src/babel/file.js +++ b/packages/babel-cli/src/babel/file.js @@ -2,6 +2,7 @@ import convertSourceMap from "convert-source-map"; import sourceMap from "source-map"; +import defaults from "lodash/defaults"; import slash from "slash"; import { sync as makeDirSync } from "make-dir"; import path from "path"; @@ -170,17 +171,22 @@ export default async function ({ sourceFilename = slash(sourceFilename); try { - return await util.compile(filename, { - sourceFileName: sourceFilename, - // Since we're compiling everything to be merged together, - // "inline" applies to the final output file, but not to the individual - // files being concatenated. - sourceMaps: - babelOptions.sourceMaps === "inline" - ? true - : babelOptions.sourceMaps, - ...babelOptions, - }); + return await util.compile( + filename, + defaults( + { + sourceFileName: sourceFilename, + // Since we're compiling everything to be merged together, + // "inline" applies to the final output file, but not to the individual + // files being concatenated. + sourceMaps: + babelOptions.sourceMaps === "inline" + ? true + : babelOptions.sourceMaps, + }, + babelOptions, + ), + ); } catch (err) { if (!cliOptions.watch) { throw err; From 8e2bed2786ad14946fc9dc14a613bdd182b70e85 Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 6 Jul 2020 16:44:18 +0100 Subject: [PATCH 04/13] Reverse ES6 spread argument ordering --- packages/babel-cli/src/babel/dir.js | 2 +- packages/babel-cli/src/babel/file.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/babel-cli/src/babel/dir.js b/packages/babel-cli/src/babel/dir.js index d27e89ea5958..bbdcf4ac3286 100644 --- a/packages/babel-cli/src/babel/dir.js +++ b/packages/babel-cli/src/babel/dir.js @@ -48,8 +48,8 @@ export default async function ({ try { const res = await util.compile(src, { - sourceFileName: slash(path.relative(dest + "/..", src)), ...babelOptions, + sourceFileName: slash(path.relative(dest + "/..", src)), }); if (!res) return FILE_TYPE.IGNORED; diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js index 40a23001066e..33b84303cd17 100644 --- a/packages/babel-cli/src/babel/file.js +++ b/packages/babel-cli/src/babel/file.js @@ -128,8 +128,8 @@ export default async function ({ const code = await readStdin(); const res = await util.transform(cliOptions.filename, code, { - sourceFileName: "stdin", ...babelOptions, + sourceFileName: "stdin", }); output([res]); From 2bac83bb6e2478335f442b301d16473163378d91 Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 6 Jul 2020 16:46:52 +0100 Subject: [PATCH 05/13] Nit: restore original import orderingg in babel-cli file.js --- packages/babel-cli/src/babel/file.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js index 33b84303cd17..30ab95e3ebe7 100644 --- a/packages/babel-cli/src/babel/file.js +++ b/packages/babel-cli/src/babel/file.js @@ -1,8 +1,8 @@ // @flow import convertSourceMap from "convert-source-map"; -import sourceMap from "source-map"; import defaults from "lodash/defaults"; +import sourceMap from "source-map"; import slash from "slash"; import { sync as makeDirSync } from "make-dir"; import path from "path"; From 6456ffcf6004a9f2acb1a803617977b0bb5590f3 Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 6 Jul 2020 18:55:34 +0100 Subject: [PATCH 06/13] Revert "Partially revert 078b35f4: undo change in babel-cli.babel.file" This reverts commit 7f52c9ed712ebfa33fb364de82697650fcecf6c5. --- packages/babel-cli/src/babel/file.js | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js index 30ab95e3ebe7..d138def00228 100644 --- a/packages/babel-cli/src/babel/file.js +++ b/packages/babel-cli/src/babel/file.js @@ -1,7 +1,6 @@ // @flow import convertSourceMap from "convert-source-map"; -import defaults from "lodash/defaults"; import sourceMap from "source-map"; import slash from "slash"; import { sync as makeDirSync } from "make-dir"; @@ -171,22 +170,17 @@ export default async function ({ sourceFilename = slash(sourceFilename); try { - return await util.compile( - filename, - defaults( - { - sourceFileName: sourceFilename, - // Since we're compiling everything to be merged together, - // "inline" applies to the final output file, but not to the individual - // files being concatenated. - sourceMaps: - babelOptions.sourceMaps === "inline" - ? true - : babelOptions.sourceMaps, - }, - babelOptions, - ), - ); + return await util.compile(filename, { + sourceFileName: sourceFilename, + // Since we're compiling everything to be merged together, + // "inline" applies to the final output file, but not to the individual + // files being concatenated. + sourceMaps: + babelOptions.sourceMaps === "inline" + ? true + : babelOptions.sourceMaps, + ...babelOptions, + }); } catch (err) { if (!cliOptions.watch) { throw err; From ec1e7fa9131b8e2edb4fcc3f1eb3b3a5c5325caa Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 6 Jul 2020 18:55:48 +0100 Subject: [PATCH 07/13] Revert "Partially revert 078b35f4: undo change in babel-helper-transform-fixture-test-runner" This reverts commit e72d39b8cfc5888589823f65fb0a8c8df432ce97. --- .../babel-helper-transform-fixture-test-runner/src/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js index 1ff7233d1975..f1fa4a046819 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js @@ -4,7 +4,6 @@ import { buildExternalHelpers } from "@babel/core"; import getFixtures from "@babel/helper-fixtures"; import sourceMap from "source-map"; import { codeFrameColumns } from "@babel/code-frame"; -import defaults from "lodash/defaults"; import escapeRegExp from "lodash/escapeRegExp"; import * as helpers from "./helpers"; import extend from "lodash/extend"; @@ -376,9 +375,10 @@ export default function ( run(task); } - defaults(task.options, { + task.options = { + ...task.options, sourceMap: !!(task.sourceMappings || task.sourceMap), - }); + }; extend(task.options, taskOpts); From 3d4b08983b72f83aceca85a028780c8783b3c5ef Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 6 Jul 2020 18:59:04 +0100 Subject: [PATCH 08/13] Reverse ES6 spread argument ordering (on partial-revert changesets) --- packages/babel-cli/src/babel/file.js | 2 +- .../babel-helper-transform-fixture-test-runner/src/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js index d138def00228..a6927157d524 100644 --- a/packages/babel-cli/src/babel/file.js +++ b/packages/babel-cli/src/babel/file.js @@ -171,6 +171,7 @@ export default async function ({ try { return await util.compile(filename, { + ...babelOptions, sourceFileName: sourceFilename, // Since we're compiling everything to be merged together, // "inline" applies to the final output file, but not to the individual @@ -179,7 +180,6 @@ export default async function ({ babelOptions.sourceMaps === "inline" ? true : babelOptions.sourceMaps, - ...babelOptions, }); } catch (err) { if (!cliOptions.watch) { diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js index f1fa4a046819..7353cd880309 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js @@ -376,8 +376,8 @@ export default function ( } task.options = { - ...task.options, sourceMap: !!(task.sourceMappings || task.sourceMap), + ...task.options, }; extend(task.options, taskOpts); From 1b346c2a13f01e855ea4858fd17b96f27887481d Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 6 Jul 2020 19:01:08 +0100 Subject: [PATCH 09/13] Removing remaining usage of lodash.defaults from getAllBindings function --- packages/babel-traverse/src/scope/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/babel-traverse/src/scope/index.js b/packages/babel-traverse/src/scope/index.js index 4a7a7f83efa1..cc2783967e6f 100644 --- a/packages/babel-traverse/src/scope/index.js +++ b/packages/babel-traverse/src/scope/index.js @@ -1,7 +1,6 @@ import Renamer from "./lib/renamer"; import type NodePath from "../path"; import traverse from "../index"; -import defaults from "lodash/defaults"; import Binding from "./binding"; import globals from "globals"; import * as t from "@babel/types"; @@ -952,11 +951,11 @@ export default class Scope { */ getAllBindings(): Object { - const ids = Object.create(null); + let ids = Object.create(null); let scope = this; do { - defaults(ids, scope.bindings); + ids = { ...scope.bindings, ...ids }; scope = scope.parent; } while (scope); From bc8c63d170c72a8690cfe48d7e69c166b60112bf Mon Sep 17 00:00:00 2001 From: James Addison Date: Fri, 10 Jul 2020 10:16:28 +0100 Subject: [PATCH 10/13] Apply safer & more compatible sourceMap default logic in babel-helper-transform-fixture-test-runner --- .../src/index.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js index 7353cd880309..510d04d540eb 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js @@ -375,10 +375,11 @@ export default function ( run(task); } - task.options = { - sourceMap: !!(task.sourceMappings || task.sourceMap), - ...task.options, - }; + if ("sourceMap" in task.options === false) { + task.options.sourceMap = !!( + task.sourceMappings || task.sourceMap + ); + } extend(task.options, taskOpts); From 398bca8238696864c58cc0155e1cf49ccd7d9557 Mon Sep 17 00:00:00 2001 From: James Addison Date: Fri, 10 Jul 2020 13:59:40 +0100 Subject: [PATCH 11/13] Update packages/babel-traverse/src/scope/index.js Co-authored-by: Corey Farrell --- packages/babel-traverse/src/scope/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/babel-traverse/src/scope/index.js b/packages/babel-traverse/src/scope/index.js index cc2783967e6f..e943b8648a47 100644 --- a/packages/babel-traverse/src/scope/index.js +++ b/packages/babel-traverse/src/scope/index.js @@ -955,7 +955,11 @@ export default class Scope { let scope = this; do { - ids = { ...scope.bindings, ...ids }; + for (const key of Object.keys(scope.bindings)) { + if (key in ids === false) { + ids[key] = scope.bindings[key]; + } + } scope = scope.parent; } while (scope); From 52919e6983bbd3f50cc643112a36bf43a6e1427f Mon Sep 17 00:00:00 2001 From: James Addison Date: Fri, 10 Jul 2020 13:59:54 +0100 Subject: [PATCH 12/13] Update packages/babel-traverse/src/scope/index.js Co-authored-by: Corey Farrell --- packages/babel-traverse/src/scope/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/babel-traverse/src/scope/index.js b/packages/babel-traverse/src/scope/index.js index e943b8648a47..2f4810b75bd0 100644 --- a/packages/babel-traverse/src/scope/index.js +++ b/packages/babel-traverse/src/scope/index.js @@ -951,7 +951,7 @@ export default class Scope { */ getAllBindings(): Object { - let ids = Object.create(null); + const ids = Object.create(null); let scope = this; do { From 201e82fbda76bd26e612b6b72fafc4acd5a091e2 Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 12 Oct 2020 16:46:32 +0100 Subject: [PATCH 13/13] Update test expectations via fixtures: re-order sourceFileName property --- .../stdout.txt | 2 +- .../babel/env - SHOW_CONFIG_FOR with multiple files/stdout.txt | 2 +- .../fixtures/babel/env - SHOW_CONFIG_FOR-windows/stdout.txt | 2 +- .../test/fixtures/babel/env - SHOW_CONFIG_FOR/stdout.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/stdout.txt b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/stdout.txt index 303ac82e7f34..b9a7167fab33 100644 --- a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/stdout.txt +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files-windows/stdout.txt @@ -15,7 +15,6 @@ config /.babelrc programmatic options from @babel/cli { - "sourceFileName": "src/foo.js", "presets": [ "//packages//babel-preset-react" ], @@ -24,6 +23,7 @@ programmatic options from @babel/cli "//packages//babel-plugin-transform-strict-mode", "//packages//babel-plugin-transform-modules-commonjs" ], + "sourceFileName": "src/foo.js", "caller": { "name": "@babel/cli" }, diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/stdout.txt b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/stdout.txt index 0f982f0e98c4..1a70215b9c34 100644 --- a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/stdout.txt +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with multiple files/stdout.txt @@ -15,7 +15,6 @@ config /.babelrc programmatic options from @babel/cli { - "sourceFileName": "src/foo.js", "presets": [ "/packages/babel-preset-react" ], @@ -24,6 +23,7 @@ programmatic options from @babel/cli "/packages/babel-plugin-transform-strict-mode", "/packages/babel-plugin-transform-modules-commonjs" ], + "sourceFileName": "src/foo.js", "caller": { "name": "@babel/cli" }, diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/stdout.txt b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/stdout.txt index 5d5860f58f82..3a3d6a02c7c3 100644 --- a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/stdout.txt +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR-windows/stdout.txt @@ -15,7 +15,6 @@ config /.babelrc programmatic options from @babel/cli { - "sourceFileName": "../src/foo.js", "presets": [ "//packages//babel-preset-react" ], @@ -24,6 +23,7 @@ programmatic options from @babel/cli "//packages//babel-plugin-transform-strict-mode", "//packages//babel-plugin-transform-modules-commonjs" ], + "sourceFileName": "../src/foo.js", "caller": { "name": "@babel/cli" }, diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/stdout.txt b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/stdout.txt index b648f9d8bb48..fed8218c93ee 100644 --- a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/stdout.txt +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/stdout.txt @@ -110,7 +110,6 @@ config /.babelrc programmatic options from @babel/cli { - "sourceFileName": "./src/index.js", "presets": [ "/packages/babel-preset-react" ], @@ -120,6 +119,7 @@ programmatic options from @babel/cli "/packages/babel-plugin-transform-modules-commonjs" ], "configFile": "./my-config.js", + "sourceFileName": "./src/index.js", "caller": { "name": "@babel/cli" },