From 668eb0c8f66d880bca8423e824d17cbeae59cbc6 Mon Sep 17 00:00:00 2001 From: Sergey Petushkov Date: Thu, 26 Aug 2021 18:23:21 +0200 Subject: [PATCH 1/3] fix: Dedupe all leafygreen components across compass plugins Setting them as peerDeps excludes them from the plugin webpack build so that they all can require the same version from the same location installed by compass in runtime --- package-lock.json | 59 ++++++++++++++++++- packages/compass-aggregations/package.json | 2 + packages/compass-collection/package.json | 3 + packages/compass-components/package.json | 1 + packages/compass-connect/package.json | 5 ++ packages/compass-explain-plan/package.json | 1 + packages/compass-shell/package.json | 2 + packages/compass-sidebar/package.json | 1 + packages/compass/package.json | 15 +++++ packages/databases-collections/package.json | 10 ++++ packages/hadron-react-components/package.json | 2 + scripts/move-leafygreen.js | 55 +++++++++++++++++ 12 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 scripts/move-leafygreen.js diff --git a/package-lock.json b/package-lock.json index 12ca9726ef5..5fd1605ac5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48541,6 +48541,21 @@ "hasInstallScript": true, "license": "SSPL", "dependencies": { + "@leafygreen-ui/badge": "^4.0.4", + "@leafygreen-ui/banner": "^3.0.8", + "@leafygreen-ui/button": "^12.0.3", + "@leafygreen-ui/checkbox": "^6.0.5", + "@leafygreen-ui/confirmation-modal": "^2.2.1", + "@leafygreen-ui/icon": "^11.4.0", + "@leafygreen-ui/icon-button": "^9.1.5", + "@leafygreen-ui/leafygreen-provider": "^2.1.2", + "@leafygreen-ui/portal": "^3.1.3", + "@leafygreen-ui/select": "^3.0.4", + "@leafygreen-ui/tabs": "^5.1.3", + "@leafygreen-ui/text-input": "^6.0.3", + "@leafygreen-ui/toggle": "^7.0.4", + "@leafygreen-ui/tooltip": "^6.2.2", + "@leafygreen-ui/typography": "^8.0.2", "@mongodb-js/compass-aggregations": "^8.11.0", "@mongodb-js/compass-app-stores": "^5.10.0", "@mongodb-js/compass-auto-updates": "^3.10.0", @@ -48837,6 +48852,8 @@ "webpack-node-externals": "^3.0.0" }, "peerDependencies": { + "@leafygreen-ui/badge": "^4.0.4", + "@leafygreen-ui/banner": "^3.0.8", "@mongodb-js/compass-components": "*", "@mongodb-js/compass-crud": "*", "@mongodb-js/compass-export-to-language": "*", @@ -54431,6 +54448,9 @@ "xvfb-maybe": "^0.2.1" }, "peerDependencies": { + "@leafygreen-ui/badge": "^4.0.4", + "@leafygreen-ui/button": "^12.0.3", + "@leafygreen-ui/icon": "^11.4.0", "bson": "*", "hadron-ipc": "*", "hadron-react-bson": "*", @@ -54761,6 +54781,7 @@ "typescript": "^4.3.5" }, "peerDependencies": { + "@leafygreen-ui/confirmation-modal": "^2.2.1", "react": "^16.14.0" } }, @@ -55287,6 +55308,11 @@ "xvfb-maybe": "^0.2.1" }, "peerDependencies": { + "@leafygreen-ui/button": "^12.0.3", + "@leafygreen-ui/icon": "^11.4.0", + "@leafygreen-ui/leafygreen-provider": "^2.1.2", + "@leafygreen-ui/toggle": "^7.0.4", + "@leafygreen-ui/typography": "^8.0.2", "@mongodb-js/compass-components": "*", "hadron-ipc": "*", "hadron-react-buttons": "*", @@ -56396,6 +56422,7 @@ "xvfb-maybe": "^0.2.1" }, "peerDependencies": { + "@leafygreen-ui/banner": "^3.0.8", "@mongodb-js/compass-crud": "*", "@mongodb-js/compass-field-store": "*", "@mongodb-js/compass-indexes": "*", @@ -76762,6 +76789,8 @@ "node": ">=12.9.0" }, "peerDependencies": { + "@leafygreen-ui/icon": "^11.4.0", + "@leafygreen-ui/icon-button": "^9.1.5", "hadron-ipc": "*", "hadron-react-components": "*", "prop-types": "^15.7.2", @@ -78826,6 +78855,7 @@ "xvfb-maybe": "^0.2.1" }, "peerDependencies": { + "@leafygreen-ui/icon": "^11.4.0", "@mongodb-js/compass-connect": "*", "debug": "*", "prop-types": "^15.7.2", @@ -91235,7 +91265,6 @@ "rimraf": "^3.0.2", "sinon": "^9.2.3", "sinon-chai": "^3.5.0", - "ts-node": "^10.1.0", "typescript": "^4.3.5" }, "engines": { @@ -92524,6 +92553,16 @@ "xvfb-maybe": "^0.2.1" }, "peerDependencies": { + "@leafygreen-ui/badge": "^4.0.4", + "@leafygreen-ui/banner": "^3.0.8", + "@leafygreen-ui/button": "^12.0.3", + "@leafygreen-ui/checkbox": "^6.0.5", + "@leafygreen-ui/icon": "^11.4.0", + "@leafygreen-ui/portal": "^3.1.3", + "@leafygreen-ui/select": "^3.0.4", + "@leafygreen-ui/text-input": "^6.0.3", + "@leafygreen-ui/tooltip": "^6.2.2", + "@leafygreen-ui/typography": "^8.0.2", "@mongodb-js/compass-components": "*", "debug": "*", "hadron-ipc": "*", @@ -96091,6 +96130,8 @@ "webpack-node-externals": "^3.0.0" }, "peerDependencies": { + "@leafygreen-ui/leafygreen-provider": "^2.1.2", + "@leafygreen-ui/tabs": "^5.1.3", "prop-types": "^15.7.2", "react": "^16.14.0", "react-dom": "^16.14.0" @@ -164737,6 +164778,21 @@ "mongodb-compass": { "version": "file:packages/compass", "requires": { + "@leafygreen-ui/badge": "^4.0.4", + "@leafygreen-ui/banner": "^3.0.8", + "@leafygreen-ui/button": "^12.0.3", + "@leafygreen-ui/checkbox": "^6.0.5", + "@leafygreen-ui/confirmation-modal": "^2.2.1", + "@leafygreen-ui/icon": "^11.4.0", + "@leafygreen-ui/icon-button": "^9.1.5", + "@leafygreen-ui/leafygreen-provider": "^2.1.2", + "@leafygreen-ui/portal": "^3.1.3", + "@leafygreen-ui/select": "^3.0.4", + "@leafygreen-ui/tabs": "^5.1.3", + "@leafygreen-ui/text-input": "^6.0.3", + "@leafygreen-ui/toggle": "^7.0.4", + "@leafygreen-ui/tooltip": "^6.2.2", + "@leafygreen-ui/typography": "^8.0.2", "@mongodb-js/compass-aggregations": "^8.11.0", "@mongodb-js/compass-app-stores": "^5.10.0", "@mongodb-js/compass-auto-updates": "^3.10.0", @@ -165735,7 +165791,6 @@ "rimraf": "^3.0.2", "sinon": "^9.2.3", "sinon-chai": "^3.5.0", - "ts-node": "^10.1.0", "typescript": "^4.3.5" }, "dependencies": { diff --git a/packages/compass-aggregations/package.json b/packages/compass-aggregations/package.json index 7cc5699427c..950ac016758 100644 --- a/packages/compass-aggregations/package.json +++ b/packages/compass-aggregations/package.json @@ -28,6 +28,8 @@ }, "license": "SSPL", "peerDependencies": { + "@leafygreen-ui/badge": "^4.0.4", + "@leafygreen-ui/banner": "^3.0.8", "@mongodb-js/compass-components": "*", "@mongodb-js/compass-crud": "*", "@mongodb-js/compass-export-to-language": "*", diff --git a/packages/compass-collection/package.json b/packages/compass-collection/package.json index 52b6d51db41..3dfda299831 100644 --- a/packages/compass-collection/package.json +++ b/packages/compass-collection/package.json @@ -31,6 +31,9 @@ }, "license": "SSPL", "peerDependencies": { + "@leafygreen-ui/badge": "^4.0.4", + "@leafygreen-ui/button": "^12.0.3", + "@leafygreen-ui/icon": "^11.4.0", "bson": "*", "hadron-ipc": "*", "hadron-react-bson": "*", diff --git a/packages/compass-components/package.json b/packages/compass-components/package.json index 091e7482e2f..7c64e438425 100644 --- a/packages/compass-components/package.json +++ b/packages/compass-components/package.json @@ -36,6 +36,7 @@ "@leafygreen-ui/confirmation-modal": "^2.2.1" }, "peerDependencies": { + "@leafygreen-ui/confirmation-modal": "^2.2.1", "react": "^16.14.0" }, "devDependencies": { diff --git a/packages/compass-connect/package.json b/packages/compass-connect/package.json index 323295fe61a..6117b4c9bd5 100644 --- a/packages/compass-connect/package.json +++ b/packages/compass-connect/package.json @@ -34,6 +34,11 @@ }, "license": "SSPL", "peerDependencies": { + "@leafygreen-ui/button": "^12.0.3", + "@leafygreen-ui/icon": "^11.4.0", + "@leafygreen-ui/leafygreen-provider": "^2.1.2", + "@leafygreen-ui/toggle": "^7.0.4", + "@leafygreen-ui/typography": "^8.0.2", "@mongodb-js/compass-components": "*", "hadron-ipc": "*", "hadron-react-buttons": "*", diff --git a/packages/compass-explain-plan/package.json b/packages/compass-explain-plan/package.json index a8180b1a22a..e6c103bc35f 100644 --- a/packages/compass-explain-plan/package.json +++ b/packages/compass-explain-plan/package.json @@ -26,6 +26,7 @@ }, "license": "SSPL", "peerDependencies": { + "@leafygreen-ui/banner": "^3.0.8", "@mongodb-js/compass-crud": "*", "@mongodb-js/compass-field-store": "*", "@mongodb-js/compass-indexes": "*", diff --git a/packages/compass-shell/package.json b/packages/compass-shell/package.json index 2728e4bf21e..30aa05c5944 100644 --- a/packages/compass-shell/package.json +++ b/packages/compass-shell/package.json @@ -51,6 +51,8 @@ "hadron-react-buttons": "^5.4.0" }, "peerDependencies": { + "@leafygreen-ui/icon": "^11.4.0", + "@leafygreen-ui/icon-button": "^9.1.5", "hadron-ipc": "*", "hadron-react-components": "*", "prop-types": "^15.7.2", diff --git a/packages/compass-sidebar/package.json b/packages/compass-sidebar/package.json index 3a32ac0b5c1..307919d88a1 100644 --- a/packages/compass-sidebar/package.json +++ b/packages/compass-sidebar/package.json @@ -26,6 +26,7 @@ }, "license": "SSPL", "peerDependencies": { + "@leafygreen-ui/icon": "^11.4.0", "@mongodb-js/compass-connect": "*", "debug": "*", "prop-types": "^15.7.2", diff --git a/packages/compass/package.json b/packages/compass/package.json index 840a3c7841b..fb45db360ef 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -255,6 +255,21 @@ "email": "compass@mongodb.com" }, "dependencies": { + "@leafygreen-ui/badge": "^4.0.4", + "@leafygreen-ui/banner": "^3.0.8", + "@leafygreen-ui/button": "^12.0.3", + "@leafygreen-ui/checkbox": "^6.0.5", + "@leafygreen-ui/confirmation-modal": "^2.2.1", + "@leafygreen-ui/icon": "^11.4.0", + "@leafygreen-ui/icon-button": "^9.1.5", + "@leafygreen-ui/leafygreen-provider": "^2.1.2", + "@leafygreen-ui/portal": "^3.1.3", + "@leafygreen-ui/select": "^3.0.4", + "@leafygreen-ui/tabs": "^5.1.3", + "@leafygreen-ui/text-input": "^6.0.3", + "@leafygreen-ui/toggle": "^7.0.4", + "@leafygreen-ui/tooltip": "^6.2.2", + "@leafygreen-ui/typography": "^8.0.2", "@mongodb-js/compass-aggregations": "^8.11.0", "@mongodb-js/compass-app-stores": "^5.10.0", "@mongodb-js/compass-auto-updates": "^3.10.0", diff --git a/packages/databases-collections/package.json b/packages/databases-collections/package.json index e549cab5361..f66487a8c06 100644 --- a/packages/databases-collections/package.json +++ b/packages/databases-collections/package.json @@ -27,6 +27,16 @@ }, "license": "SSPL", "peerDependencies": { + "@leafygreen-ui/badge": "^4.0.4", + "@leafygreen-ui/banner": "^3.0.8", + "@leafygreen-ui/button": "^12.0.3", + "@leafygreen-ui/checkbox": "^6.0.5", + "@leafygreen-ui/icon": "^11.4.0", + "@leafygreen-ui/portal": "^3.1.3", + "@leafygreen-ui/select": "^3.0.4", + "@leafygreen-ui/text-input": "^6.0.3", + "@leafygreen-ui/tooltip": "^6.2.2", + "@leafygreen-ui/typography": "^8.0.2", "@mongodb-js/compass-components": "*", "debug": "*", "hadron-ipc": "*", diff --git a/packages/hadron-react-components/package.json b/packages/hadron-react-components/package.json index 7130ab428e3..da82d01aa01 100644 --- a/packages/hadron-react-components/package.json +++ b/packages/hadron-react-components/package.json @@ -32,6 +32,8 @@ "bootstrap": "npm run compile" }, "peerDependencies": { + "@leafygreen-ui/leafygreen-provider": "^2.1.2", + "@leafygreen-ui/tabs": "^5.1.3", "prop-types": "^15.7.2", "react": "^16.14.0", "react-dom": "^16.14.0" diff --git a/scripts/move-leafygreen.js b/scripts/move-leafygreen.js new file mode 100644 index 00000000000..e7d40b6af51 --- /dev/null +++ b/scripts/move-leafygreen.js @@ -0,0 +1,55 @@ +const path = require('path'); +const { forEachPackage } = require('./monorepo/for-each-package'); +const { updatePackageJson } = require('./monorepo/update-package-json'); + +function sortDepsByName( + pkgJson, + types = ['dependencies', 'devDependencies', 'peerDependencies'] +) { + for (const depType of types) { + if (pkgJson[depType]) { + pkgJson[depType] = Object.fromEntries( + Object.entries(pkgJson[depType]).sort(([a], [b]) => a.localeCompare(b)) + ); + } + } + return pkgJson; +} + +async function main() { + let allDeps = new Map(); + + await forEachPackage(async ({ packageJson, location }) => { + const leafygreenDeps = new Map( + Object.entries(packageJson.dependencies || {}).filter(([key]) => + key.startsWith('@leafygreen-ui/') + ) + ); + + if (leafygreenDeps.size > 0) { + allDeps = new Map([...allDeps, ...leafygreenDeps]); + await updatePackageJson(location, (pkgJson) => { + pkgJson.peerDependencies = { + ...pkgJson.peerDependencies, + ...Object.fromEntries(leafygreenDeps) + }; + sortDepsByName(pkgJson); + return pkgJson; + }); + } + }); + + await updatePackageJson( + path.resolve(__dirname, '..', 'packages', 'compass'), + (pkgJson) => { + pkgJson.dependencies = { + ...pkgJson.dependencies, + ...Object.fromEntries(allDeps) + }; + sortDepsByName(pkgJson); + return pkgJson; + } + ); +} + +main(); From 61d3cbb608a1fc810fb9843941ac0b2f973a4a58 Mon Sep 17 00:00:00 2001 From: Sergey Petushkov Date: Fri, 27 Aug 2021 09:27:01 +0200 Subject: [PATCH 2/3] fix(mongodb-compass): Include all the leafygreen peer dependencies in depcheckrc --- packages/compass/.depcheckrc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/compass/.depcheckrc b/packages/compass/.depcheckrc index 38f9428af85..0ae82bd258b 100644 --- a/packages/compass/.depcheckrc +++ b/packages/compass/.depcheckrc @@ -1,4 +1,19 @@ ignores: [ + "@leafygreen-ui/badge", + "@leafygreen-ui/banner", + "@leafygreen-ui/button", + "@leafygreen-ui/checkbox", + "@leafygreen-ui/confirmation-modal", + "@leafygreen-ui/icon", + "@leafygreen-ui/icon-button", + "@leafygreen-ui/leafygreen-provider", + "@leafygreen-ui/portal", + "@leafygreen-ui/select", + "@leafygreen-ui/tabs", + "@leafygreen-ui/text-input", + "@leafygreen-ui/toggle", + "@leafygreen-ui/tooltip", + "@leafygreen-ui/typography", "@mongodb-js/compass-aggregations", "@mongodb-js/compass-app-stores", "@mongodb-js/compass-auto-updates", From d39fdaf62722285b3e31fb805bac47e9b35d3483 Mon Sep 17 00:00:00 2001 From: Sergey Petushkov Date: Fri, 27 Aug 2021 09:32:41 +0200 Subject: [PATCH 3/3] fix: No need to commit this one-shot script --- scripts/move-leafygreen.js | 55 -------------------------------------- 1 file changed, 55 deletions(-) delete mode 100644 scripts/move-leafygreen.js diff --git a/scripts/move-leafygreen.js b/scripts/move-leafygreen.js deleted file mode 100644 index e7d40b6af51..00000000000 --- a/scripts/move-leafygreen.js +++ /dev/null @@ -1,55 +0,0 @@ -const path = require('path'); -const { forEachPackage } = require('./monorepo/for-each-package'); -const { updatePackageJson } = require('./monorepo/update-package-json'); - -function sortDepsByName( - pkgJson, - types = ['dependencies', 'devDependencies', 'peerDependencies'] -) { - for (const depType of types) { - if (pkgJson[depType]) { - pkgJson[depType] = Object.fromEntries( - Object.entries(pkgJson[depType]).sort(([a], [b]) => a.localeCompare(b)) - ); - } - } - return pkgJson; -} - -async function main() { - let allDeps = new Map(); - - await forEachPackage(async ({ packageJson, location }) => { - const leafygreenDeps = new Map( - Object.entries(packageJson.dependencies || {}).filter(([key]) => - key.startsWith('@leafygreen-ui/') - ) - ); - - if (leafygreenDeps.size > 0) { - allDeps = new Map([...allDeps, ...leafygreenDeps]); - await updatePackageJson(location, (pkgJson) => { - pkgJson.peerDependencies = { - ...pkgJson.peerDependencies, - ...Object.fromEntries(leafygreenDeps) - }; - sortDepsByName(pkgJson); - return pkgJson; - }); - } - }); - - await updatePackageJson( - path.resolve(__dirname, '..', 'packages', 'compass'), - (pkgJson) => { - pkgJson.dependencies = { - ...pkgJson.dependencies, - ...Object.fromEntries(allDeps) - }; - sortDepsByName(pkgJson); - return pkgJson; - } - ); -} - -main();