From 479c66f95d68533aba317ac450a11820a219d9a5 Mon Sep 17 00:00:00 2001 From: Marin Atanasov Date: Mon, 20 Feb 2023 11:32:36 +0200 Subject: [PATCH 1/4] Lodash: Refactor away from _.merge() --- .eslintrc.js | 1 + package-lock.json | 2 +- packages/babel-plugin-makepot/index.js | 16 +++++++++++++--- packages/babel-plugin-makepot/package.json | 3 ++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 70926c8a9c541..f86c08ac4705a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -106,6 +106,7 @@ const restrictedImports = [ 'mapKeys', 'maxBy', 'memoize', + 'merge', 'negate', 'noop', 'nth', diff --git a/package-lock.json b/package-lock.json index 4dce5bc1ffe16..2a35bb229663e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17227,7 +17227,7 @@ "dev": true, "requires": { "gettext-parser": "^1.3.1", - "lodash": "^4.17.21" + "is-plain-object": "^5.0.0" } }, "@wordpress/babel-preset-default": { diff --git a/packages/babel-plugin-makepot/index.js b/packages/babel-plugin-makepot/index.js index a1ea1a79cccc1..846a29a7955b3 100644 --- a/packages/babel-plugin-makepot/index.js +++ b/packages/babel-plugin-makepot/index.js @@ -32,8 +32,9 @@ * External dependencies */ +const deepmerge = require( 'deepmerge' ); +const { isPlainObject } = require( 'is-plain-object' ); const { po } = require( 'gettext-parser' ); -const { merge, isEmpty } = require( 'lodash' ); const { relative, sep } = require( 'path' ); const { writeFileSync } = require( 'fs' ); @@ -312,7 +313,10 @@ module.exports = () => { }, exit( path, state ) { const { filename } = this.file.opts; - if ( isEmpty( strings[ filename ] ) ) { + if ( + ! strings[ filename ] || + ! Object.values( strings[ filename ] ).length + ) { delete strings[ filename ]; return; } @@ -362,7 +366,13 @@ module.exports = () => { }, {} ); // Merge translations from individual files into headers - const data = merge( {}, baseData, { translations } ); + const data = deepmerge( + baseData, + { translations }, + { + isMergeableObject: isPlainObject, + } + ); // Ideally we could wait until Babel has finished parsing // all files or at least asynchronously write, but the diff --git a/packages/babel-plugin-makepot/package.json b/packages/babel-plugin-makepot/package.json index f172ca8f270a9..8938b24467faa 100644 --- a/packages/babel-plugin-makepot/package.json +++ b/packages/babel-plugin-makepot/package.json @@ -28,8 +28,9 @@ ], "main": "index.js", "dependencies": { + "deepmerge": "^4.3.0", "gettext-parser": "^1.3.1", - "lodash": "^4.17.21" + "is-plain-object": "^5.0.0" }, "peerDependencies": { "@babel/core": "^7.12.9" From 84a052794e1094720f623718717806735d10658e Mon Sep 17 00:00:00 2001 From: Marin Atanasov Date: Mon, 20 Feb 2023 11:56:02 +0200 Subject: [PATCH 2/4] Add CHANGELOG entry --- packages/babel-plugin-makepot/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/babel-plugin-makepot/CHANGELOG.md b/packages/babel-plugin-makepot/CHANGELOG.md index 4e059b869e585..5f6f0278e9c10 100644 --- a/packages/babel-plugin-makepot/CHANGELOG.md +++ b/packages/babel-plugin-makepot/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Internal + +- Lodash: Refactor away from `_.merge()` ([#48239](https://github.com/WordPress/gutenberg/pull/48239)). + ## 5.11.0 (2023-02-15) ## 5.10.0 (2023-02-01) From 4d6be7b83f7cf087a3cad2ca99c0371b3e8ddfe9 Mon Sep 17 00:00:00 2001 From: Marin Atanasov Date: Mon, 20 Feb 2023 12:42:13 +0200 Subject: [PATCH 3/4] Update package-lock.json --- package-lock.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/package-lock.json b/package-lock.json index 2a35bb229663e..0cdc23a73239f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17226,8 +17226,17 @@ "version": "file:packages/babel-plugin-makepot", "dev": true, "requires": { + "deepmerge": "^4.3.0", "gettext-parser": "^1.3.1", "is-plain-object": "^5.0.0" + }, + "dependencies": { + "deepmerge": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "dev": true + } } }, "@wordpress/babel-preset-default": { From 291f545e96247dc8d568cb7cedc6e7a78692e5d1 Mon Sep 17 00:00:00 2001 From: Marin Atanasov Date: Tue, 21 Feb 2023 14:40:57 +0200 Subject: [PATCH 4/4] Expand CHANGELOG message --- packages/babel-plugin-makepot/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/babel-plugin-makepot/CHANGELOG.md b/packages/babel-plugin-makepot/CHANGELOG.md index 5f6f0278e9c10..581a001cfd0bb 100644 --- a/packages/babel-plugin-makepot/CHANGELOG.md +++ b/packages/babel-plugin-makepot/CHANGELOG.md @@ -4,7 +4,7 @@ ### Internal -- Lodash: Refactor away from `_.merge()` ([#48239](https://github.com/WordPress/gutenberg/pull/48239)). +- Lodash: Refactor away from `_.merge()` and remove Lodash dependency ([#48239](https://github.com/WordPress/gutenberg/pull/48239)). ## 5.11.0 (2023-02-15)