From 7676a38ac38fedd42f65ef2e78e0c6c2a9bb1bca Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Tue, 13 Aug 2024 12:58:39 +1000 Subject: [PATCH 1/3] chore: add yarn deduplicate --- .github/workflows/pull-request.yml | 6 ++++++ package.json | 7 ++++--- yarn.lock | 17 ++++++++++++++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 895d9897d..caaf5d98f 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -35,5 +35,11 @@ jobs: if: runner.os == 'Linux' run: yarn lint-full + - name: Enforce yarn.lock has no duplicates + # no need to deduplicate yarn.lock on all platforms. Just do it once on the quicker one + if: runner.os == 'Linux' + run: yarn yarn-deduplicate yarn.lock --fail + + - name: Unit Test run: yarn test diff --git a/package.json b/package.json index 724ecee4a..df685c1f6 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "protobuf": "pbjs --target static-module --wrap commonjs --out ts/protobuf/compiled.js protos/*.proto && pbts --out ts/protobuf/compiled.d.ts ts/protobuf/compiled.js --force-long", "sass": "rimraf 'stylesheets/dist/' && webpack --config=./sass.config.js", "clean": "rimraf 'ts/**/*.js' 'ts/*.js' 'ts/*.js.map' 'ts/**/*.js.map' && rimraf tsconfig.tsbuildinfo;", - "lint-full": "yarn format-full && eslint .", + "lint-full": "yarn yarn-deduplicate yarn.lock && yarn format-full && eslint .", "format-full": "prettier --list-different --write \"*.{css,js,json,scss,ts,tsx}\" \"./**/*.{css,js,json,scss,ts,tsx}\"", "start-prod-test": "cross-env NODE_ENV=production NODE_APP_INSTANCE=$MULTI electron .", "test": "mocha", @@ -60,7 +60,7 @@ "appImage": "yarn sedtoAppImage; yarn build-release-non-linux; yarn sedtoDeb", "sedtoAppImage": "sed -i 's/\"target\": \\[\"deb\", \"rpm\", \"freebsd\"\\]/\"target\": \"AppImage\"/g' package.json", "sedtoDeb": "sed -i 's/\"target\": \"AppImage\"/\"target\": \\[\"deb\", \"rpm\", \"freebsd\"\\]/g' package.json", - "ready": "yarn build-everything && yarn lint-full && yarn test", + "ready": "yarn yarn-deduplicate yarn.lock --fail && yarn build-everything && yarn lint-full && yarn test", "postinstall": "yarn patch-package && yarn electron-builder install-app-deps", "update-git-info": "node ./build/updateLocalConfig.js", "worker:utils": "webpack --config=./utils.worker.config.js", @@ -214,7 +214,8 @@ "ts-loader": "^9.4.2", "typescript": "^5.1.6", "webpack": "^5.76.3", - "webpack-cli": "^5.1.4" + "webpack-cli": "^5.1.4", + "yarn-deduplicate": "^6.0.2" }, "engines": { "node": "18.15.0" diff --git a/yarn.lock b/yarn.lock index 27e9e96d1..e031e5e3a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6844,6 +6844,11 @@ semver@^7.1.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semve resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== +semver@^7.5.0: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + serialize-error@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" @@ -7484,7 +7489,7 @@ tslib@2.6.2: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0: version "2.6.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== @@ -8101,6 +8106,16 @@ yargs@^17.0.0, yargs@^17.0.1, yargs@^17.7.2: y18n "^5.0.5" yargs-parser "^21.1.1" +yarn-deduplicate@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/yarn-deduplicate/-/yarn-deduplicate-6.0.2.tgz#63498d2d4c3a8567e992a994ce0ab51aa5681f2e" + integrity sha512-Efx4XEj82BgbRJe5gvQbZmEO7pU5DgHgxohYZp98/+GwPqdU90RXtzvHirb7hGlde0sQqk5G3J3Woyjai8hVqA== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + commander "^10.0.1" + semver "^7.5.0" + tslib "^2.5.0" + yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" From d2827548667520a6ab3fc02e76705bbfb912c84a Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Tue, 13 Aug 2024 13:19:02 +1000 Subject: [PATCH 2/3] chore: run dedup check on pr too --- .github/workflows/build-binaries.yml | 6 +++++- .github/workflows/pull-request.yml | 8 +++----- .github/workflows/release.yml | 3 ++- actions/deduplicate_fail/action.yml | 9 +++++++++ yarn.lock | 7 +------ 5 files changed, 20 insertions(+), 13 deletions(-) create mode 100644 actions/deduplicate_fail/action.yml diff --git a/.github/workflows/build-binaries.yml b/.github/workflows/build-binaries.yml index 0d81fe895..bb10fc39d 100644 --- a/.github/workflows/build-binaries.yml +++ b/.github/workflows/build-binaries.yml @@ -32,7 +32,11 @@ jobs: - name: Checkout git repo uses: actions/checkout@v3 - - uses: ./actions/setup_and_build + - name: Setup & Build + uses: ./actions/setup_and_build + + - name: Enforce yarn.lock has no duplicates + uses: ./actions/deduplicate_fail - name: Build windows production binaries if: runner.os == 'Windows' diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index caaf5d98f..68974bb15 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -28,7 +28,8 @@ jobs: - name: Checkout git repo uses: actions/checkout@v3 - - uses: ./actions/setup_and_build + - name: Setup & Build + uses: ./actions/setup_and_build - name: Lint Files # no need to lint files on all platforms. Just do it once on the quicker one @@ -36,10 +37,7 @@ jobs: run: yarn lint-full - name: Enforce yarn.lock has no duplicates - # no need to deduplicate yarn.lock on all platforms. Just do it once on the quicker one - if: runner.os == 'Linux' - run: yarn yarn-deduplicate yarn.lock --fail - + uses: ./actions/deduplicate_fail - name: Unit Test run: yarn test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index acb114a50..905a21fe2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,7 +22,8 @@ jobs: - name: Checkout git repo uses: actions/checkout@v3 - - uses: ./actions/setup_and_build + - name: Setup & Build + uses: ./actions/setup_and_build - name: Build windows production binaries if: runner.os == 'Windows' diff --git a/actions/deduplicate_fail/action.yml b/actions/deduplicate_fail/action.yml new file mode 100644 index 000000000..7fe3567e3 --- /dev/null +++ b/actions/deduplicate_fail/action.yml @@ -0,0 +1,9 @@ +name: 'Deduplicate check' +description: 'Deduplicate check' +runs: + using: 'composite' + steps: + - name: Enforce yarn.lock has no duplicates + shell: bash + if: runner.os == 'Linux' + run: yarn yarn-deduplicate yarn.lock --fail diff --git a/yarn.lock b/yarn.lock index e031e5e3a..e89dfdafd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6839,12 +6839,7 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.1.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.5.0: +semver@^7.1.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.0, semver@^7.5.4: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== From 03df7bad5b81c37d280cea4e45b94d4656cb0a1c Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Tue, 13 Aug 2024 13:47:58 +1000 Subject: [PATCH 3/3] fix: add a dedup-yarn-lock yarn script and use it --- actions/deduplicate_fail/action.yml | 2 +- package.json | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/actions/deduplicate_fail/action.yml b/actions/deduplicate_fail/action.yml index 7fe3567e3..339d2b382 100644 --- a/actions/deduplicate_fail/action.yml +++ b/actions/deduplicate_fail/action.yml @@ -6,4 +6,4 @@ runs: - name: Enforce yarn.lock has no duplicates shell: bash if: runner.os == 'Linux' - run: yarn yarn-deduplicate yarn.lock --fail + run: yarn dedup-yarn-lock --fail diff --git a/package.json b/package.json index df685c1f6..f6571047b 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "protobuf": "pbjs --target static-module --wrap commonjs --out ts/protobuf/compiled.js protos/*.proto && pbts --out ts/protobuf/compiled.d.ts ts/protobuf/compiled.js --force-long", "sass": "rimraf 'stylesheets/dist/' && webpack --config=./sass.config.js", "clean": "rimraf 'ts/**/*.js' 'ts/*.js' 'ts/*.js.map' 'ts/**/*.js.map' && rimraf tsconfig.tsbuildinfo;", - "lint-full": "yarn yarn-deduplicate yarn.lock && yarn format-full && eslint .", + "lint-full": "yarn dedup-yarn-lock && yarn format-full && eslint .", "format-full": "prettier --list-different --write \"*.{css,js,json,scss,ts,tsx}\" \"./**/*.{css,js,json,scss,ts,tsx}\"", "start-prod-test": "cross-env NODE_ENV=production NODE_APP_INSTANCE=$MULTI electron .", "test": "mocha", @@ -60,11 +60,12 @@ "appImage": "yarn sedtoAppImage; yarn build-release-non-linux; yarn sedtoDeb", "sedtoAppImage": "sed -i 's/\"target\": \\[\"deb\", \"rpm\", \"freebsd\"\\]/\"target\": \"AppImage\"/g' package.json", "sedtoDeb": "sed -i 's/\"target\": \"AppImage\"/\"target\": \\[\"deb\", \"rpm\", \"freebsd\"\\]/g' package.json", - "ready": "yarn yarn-deduplicate yarn.lock --fail && yarn build-everything && yarn lint-full && yarn test", + "ready": "yarn dedup-yarn-lock --fail && yarn build-everything && yarn lint-full && yarn test", "postinstall": "yarn patch-package && yarn electron-builder install-app-deps", "update-git-info": "node ./build/updateLocalConfig.js", "worker:utils": "webpack --config=./utils.worker.config.js", "worker:libsession": "rimraf 'ts/webworker/workers/node/libsession/*.node' && webpack --config=./libsession.worker.config.js", + "dedup-yarn-lock": "yarn-deduplicate yarn.lock", "prepare": "husky install" }, "dependencies": {