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 895d9897d..68974bb15 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -28,12 +28,16 @@ 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 if: runner.os == 'Linux' run: yarn lint-full + - name: Enforce yarn.lock has no duplicates + 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..339d2b382 --- /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 dedup-yarn-lock --fail diff --git a/package.json b/package.json index 724ecee4a..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 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 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": { @@ -214,7 +215,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..e89dfdafd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6839,10 +6839,10 @@ 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.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== serialize-error@^7.0.1: version "7.0.1" @@ -7484,7 +7484,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 +8101,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"