From dd3870377c3579c12a87d5da5cbc9e375c259921 Mon Sep 17 00:00:00 2001 From: tom Date: Thu, 14 Dec 2023 12:49:52 +0400 Subject: [PATCH 1/3] bump Node.js to v20 Fixes #1318 --- .devcontainer/devcontainer.json | 2 +- .github/workflows/checks.yml | 26 +- .github/workflows/publish-image.yml | 2 +- .github/workflows/upload-source-maps.yml | 6 +- .nvmrc | 2 +- Dockerfile | 6 +- docs/CONTRIBUTING.md | 2 +- package.json | 12 +- yarn.lock | 370 ++++++++++++----------- 9 files changed, 221 insertions(+), 207 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index d1cb0ba9dc..cc48cec34c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,6 @@ { "name": "blockscout dev", - "image": "mcr.microsoft.com/devcontainers/typescript-node:18", + "image": "mcr.microsoft.com/devcontainers/typescript-node:20", "forwardPorts": [ 3000 ], "customizations": { "vscode": { diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 3a061040a8..5d1d86795a 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -25,12 +25,12 @@ jobs: if: ${{ !contains(github.event.pull_request.labels.*.name, 'WIP') && !(github.event.action == 'unlabeled' && github.event.label.name != 'WIP') }} steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20.10.0 cache: 'yarn' - name: Cache node_modules @@ -57,12 +57,12 @@ jobs: needs: [ code_quality ] steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20.10.0 cache: 'yarn' - name: Cache node_modules @@ -94,12 +94,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20.10.0 cache: 'yarn' - name: Cache node_modules @@ -122,7 +122,7 @@ jobs: needs: [ code_quality, envs_validation ] runs-on: ubuntu-latest container: - image: mcr.microsoft.com/playwright:v1.35.1-focal + image: mcr.microsoft.com/playwright:v1.40.1-focal strategy: fail-fast: false @@ -134,14 +134,14 @@ jobs: run: apt-get update && apt-get install git-lfs - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: lfs: 'true' - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20.10.0 cache: 'yarn' - name: Cache node_modules diff --git a/.github/workflows/publish-image.yml b/.github/workflows/publish-image.yml index b1fdabff64..0e32ff5c81 100644 --- a/.github/workflows/publish-image.yml +++ b/.github/workflows/publish-image.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out the repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 diff --git a/.github/workflows/upload-source-maps.yml b/.github/workflows/upload-source-maps.yml index 0c284672a1..8c4af40fa8 100644 --- a/.github/workflows/upload-source-maps.yml +++ b/.github/workflows/upload-source-maps.yml @@ -16,12 +16,12 @@ jobs: if: ${{ github.ref_type == 'tag' }} steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20.10.0 cache: 'yarn' - name: Cache node_modules diff --git a/.nvmrc b/.nvmrc index 3c032078a4..d5a159609d 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18 +20.10.0 diff --git a/Dockerfile b/Dockerfile index e411829719..c163c05e1b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # ***************************** # *** STAGE 1: Dependencies *** # ***************************** -FROM node:18-alpine AS deps +FROM node:20.10.0-alpine AS deps # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. RUN apk add --no-cache libc6-compat @@ -30,7 +30,7 @@ RUN yarn --frozen-lockfile # ***************************** # ****** STAGE 2: Build ******* # ***************************** -FROM node:18-alpine AS builder +FROM node:20.10.0-alpine AS builder RUN apk add --no-cache --upgrade libc6-compat bash # pass commit sha and git tag to the app image @@ -77,7 +77,7 @@ RUN cd ./deploy/tools/envs-validator && yarn build # ******* STAGE 3: Run ******** # ***************************** # Production image, copy all the files and run next -FROM node:18-alpine AS runner +FROM node:20.10.0-alpine AS runner RUN apk add --no-cache --upgrade bash curl jq unzip ### APP diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 4495faa100..cbdc120c40 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -14,7 +14,7 @@ Thanks for showing interest to contribute to Blockscout. The following steps wil cd ``` -3. Make sure you're running Node.js 18+ and NPM 8+; if not, upgrade it accordingly, for example using [nvm](https://github.com/nvm-sh/nvm). +3. Make sure you're running Node.js 20+ and NPM 10+; if not, upgrade it accordingly, for example using [nvm](https://github.com/nvm-sh/nvm). ```sh node -v npm -v diff --git a/package.json b/package.json index 7d96b46026..7133253d07 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "private": false, "homepage": "https://github.com/blockscout/frontend#readme", "engines": { - "node": "18", - "npm": "8" + "node": "20.10.0", + "npm": "10.2.3" }, "scripts": { "dev": "./tools/scripts/dev.sh", @@ -23,7 +23,7 @@ "format-svg": "svgo -r ./icons", "test:pw": "./tools/scripts/pw.sh", "test:pw:local": "export NODE_PATH=$(pwd)/node_modules && yarn test:pw", - "test:pw:docker": "docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.35.1-focal ./tools/scripts/pw.docker.sh", + "test:pw:docker": "docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.40.1-focal ./tools/scripts/pw.docker.sh", "test:pw:ci": "yarn test:pw --project=$PW_PROJECT", "test:jest": "jest", "test:jest:watch": "jest --watch", @@ -96,8 +96,8 @@ "xss": "^1.0.14" }, "devDependencies": { - "@playwright/experimental-ct-react": "1.35.1", - "@playwright/test": "^1.35.1", + "@playwright/experimental-ct-react": "1.40.1", + "@playwright/test": "1.40.1", "@svgr/webpack": "^6.5.1", "@tanstack/eslint-plugin-query": "^5.0.5", "@testing-library/react": "^14.0.0", @@ -109,7 +109,7 @@ "@types/jest": "^29.2.0", "@types/js-cookie": "^3.0.2", "@types/mixpanel-browser": "^2.38.1", - "@types/node": "18.11.18", + "@types/node": "20.10.4", "@types/phoenix": "^1.5.4", "@types/qrcode": "^1.5.0", "@types/react": "18.0.9", diff --git a/yarn.lock b/yarn.lock index d6fc51bce7..74e9593286 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2260,115 +2260,115 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== -"@esbuild/android-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" - integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== - -"@esbuild/android-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" - integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== - -"@esbuild/android-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" - integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== - -"@esbuild/darwin-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" - integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== - -"@esbuild/darwin-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" - integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== - -"@esbuild/freebsd-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" - integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== - -"@esbuild/freebsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" - integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== - -"@esbuild/linux-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" - integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== - -"@esbuild/linux-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" - integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== - -"@esbuild/linux-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" - integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== - -"@esbuild/linux-loong64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" - integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== - -"@esbuild/linux-mips64el@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" - integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== - -"@esbuild/linux-ppc64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" - integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== - -"@esbuild/linux-riscv64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" - integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== - -"@esbuild/linux-s390x@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" - integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== - -"@esbuild/linux-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" - integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== - -"@esbuild/netbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" - integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== - -"@esbuild/openbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" - integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== - -"@esbuild/sunos-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" - integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== - -"@esbuild/win32-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" - integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== - -"@esbuild/win32-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" - integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== - -"@esbuild/win32-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" @@ -4161,31 +4161,29 @@ tiny-glob "^0.2.9" tslib "^2.4.0" -"@playwright/experimental-ct-core@1.35.1": - version "1.35.1" - resolved "https://registry.yarnpkg.com/@playwright/experimental-ct-core/-/experimental-ct-core-1.35.1.tgz#21cf2b7c60006099f9de38fce7dbd4ff1d7a566c" - integrity sha512-NSoUf6JDLeZFy0HiENwA1GkIwZHvg5KrygnZknwWs7O8yksYLsmiuMb09sf2zsZmfYgVen401SNgf3KfekbweA== +"@playwright/experimental-ct-core@1.40.1": + version "1.40.1" + resolved "https://registry.yarnpkg.com/@playwright/experimental-ct-core/-/experimental-ct-core-1.40.1.tgz#4e3fb7d07872d3a6ee7c8a4fde21ed9bffc6de62" + integrity sha512-FjYQP74I2xVAO6W52+Yn2t48FDs+IhOHcWAwZHqAX+lHVHidz4f/b0FY3Qnq8+ZIt5TgqucEzGXbw/TdqJYDtA== dependencies: - "@playwright/test" "1.35.1" - vite "^4.3.9" + playwright "1.40.1" + playwright-core "1.40.1" + vite "^4.4.10" -"@playwright/experimental-ct-react@1.35.1": - version "1.35.1" - resolved "https://registry.yarnpkg.com/@playwright/experimental-ct-react/-/experimental-ct-react-1.35.1.tgz#4dd050987c9b7663ceb045fe8b61b9c024d77146" - integrity sha512-QXbjAJRr0eJkEsPyC5Q+nQyeVpVE/vrKUbo8yy5uZwHSy7KRsvyGkGPnOV5JMoeyEfK66Sx43I363tgzNByySw== +"@playwright/experimental-ct-react@1.40.1": + version "1.40.1" + resolved "https://registry.yarnpkg.com/@playwright/experimental-ct-react/-/experimental-ct-react-1.40.1.tgz#28830ec5c0ec89c59119fc9c735c00230f87b2f6" + integrity sha512-a2ubB04+pSswpWOgIwgBcSvvdvVNv4Cz8wud5ZLV5+4fcRqRACxFlGJPiVHw1zanhDSD+rH6H9+zaNm/o1iJHw== dependencies: - "@playwright/experimental-ct-core" "1.35.1" + "@playwright/experimental-ct-core" "1.40.1" "@vitejs/plugin-react" "^4.0.0" -"@playwright/test@1.35.1", "@playwright/test@^1.35.1": - version "1.35.1" - resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.35.1.tgz#a596b61e15b980716696f149cc7a2002f003580c" - integrity sha512-b5YoFe6J9exsMYg0pQAobNDR85T1nLumUYgUTtKm4d21iX2L7WqKq9dW8NGJ+2vX0etZd+Y7UeuqsxDXm9+5ZA== +"@playwright/test@1.40.1": + version "1.40.1" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.40.1.tgz#9e66322d97b1d74b9f8718bacab15080f24cde65" + integrity sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw== dependencies: - "@types/node" "*" - playwright-core "1.35.1" - optionalDependencies: - fsevents "2.3.2" + playwright "1.40.1" "@polka/url@^1.0.0-next.20": version "1.0.0-next.23" @@ -5922,10 +5920,12 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.4.tgz#54be907698f40de8a45770b48486aa3cbd3adff7" integrity sha512-WdlVphvfR/GJCLEMbNA8lJ0lhFNBj4SW3O+O5/cEGw9oYrv0al9zTwuQsq+myDUXgNx2jgBynoVgZ2MMJ6pbow== -"@types/node@18.11.18": - version "18.11.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.18.tgz#8dfb97f0da23c2293e554c5a50d61ef134d7697f" - integrity sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA== +"@types/node@20.10.4": + version "20.10.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.4.tgz#b246fd84d55d5b1b71bf51f964bd514409347198" + integrity sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg== + dependencies: + undici-types "~5.26.4" "@types/node@>=12.12.47", "@types/node@>=13.7.0": version "20.9.0" @@ -8726,33 +8726,33 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -esbuild@^0.17.5: - version "0.17.19" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" - integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== +esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== optionalDependencies: - "@esbuild/android-arm" "0.17.19" - "@esbuild/android-arm64" "0.17.19" - "@esbuild/android-x64" "0.17.19" - "@esbuild/darwin-arm64" "0.17.19" - "@esbuild/darwin-x64" "0.17.19" - "@esbuild/freebsd-arm64" "0.17.19" - "@esbuild/freebsd-x64" "0.17.19" - "@esbuild/linux-arm" "0.17.19" - "@esbuild/linux-arm64" "0.17.19" - "@esbuild/linux-ia32" "0.17.19" - "@esbuild/linux-loong64" "0.17.19" - "@esbuild/linux-mips64el" "0.17.19" - "@esbuild/linux-ppc64" "0.17.19" - "@esbuild/linux-riscv64" "0.17.19" - "@esbuild/linux-s390x" "0.17.19" - "@esbuild/linux-x64" "0.17.19" - "@esbuild/netbsd-x64" "0.17.19" - "@esbuild/openbsd-x64" "0.17.19" - "@esbuild/sunos-x64" "0.17.19" - "@esbuild/win32-arm64" "0.17.19" - "@esbuild/win32-ia32" "0.17.19" - "@esbuild/win32-x64" "0.17.19" + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" escalade@^3.1.1: version "3.1.1" @@ -11492,6 +11492,11 @@ nanoid@^3.3.6: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" @@ -12157,10 +12162,19 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -playwright-core@1.35.1: - version "1.35.1" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.35.1.tgz#52c1e6ffaa6a8c29de1a5bdf8cce0ce290ffb81d" - integrity sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg== +playwright-core@1.40.1: + version "1.40.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.40.1.tgz#442d15e86866a87d90d07af528e0afabe4c75c05" + integrity sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ== + +playwright@1.40.1: + version "1.40.1" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.40.1.tgz#a11bf8dca15be5a194851dbbf3df235b9f53d7ae" + integrity sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw== + dependencies: + playwright-core "1.40.1" + optionalDependencies: + fsevents "2.3.2" pngjs@^5.0.0: version "5.0.0" @@ -12236,12 +12250,12 @@ postcss@^8.4.19: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.23: - version "8.4.24" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df" - integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg== +postcss@^8.4.27: + version "8.4.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9" + integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw== dependencies: - nanoid "^3.3.6" + nanoid "^3.3.7" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -13136,10 +13150,10 @@ robust-predicates@^3.0.0: resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.1.tgz#ecde075044f7f30118682bd9fb3f123109577f9a" integrity sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g== -rollup@^3.21.0: - version "3.25.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.25.1.tgz#9fff79d22ff1a904b2b595a2fb9bc3793cb987d8" - integrity sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ== +rollup@^3.27.1: + version "3.29.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== optionalDependencies: fsevents "~2.3.2" @@ -14381,14 +14395,14 @@ vite-tsconfig-paths@^3.5.2: recrawl-sync "^2.0.3" tsconfig-paths "^4.0.0" -vite@^4.3.9: - version "4.3.9" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.9.tgz#db896200c0b1aa13b37cdc35c9e99ee2fdd5f96d" - integrity sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg== +vite@^4.4.10: + version "4.5.1" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.1.tgz#3370986e1ed5dbabbf35a6c2e1fb1e18555b968a" + integrity sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA== dependencies: - esbuild "^0.17.5" - postcss "^8.4.23" - rollup "^3.21.0" + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" optionalDependencies: fsevents "~2.3.2" From 4da468fb1bec2f5688d1de31ba1ad8358d1c0457 Mon Sep 17 00:00:00 2001 From: tom Date: Mon, 29 Jan 2024 17:14:22 +0400 Subject: [PATCH 2/3] bump pw version --- .github/workflows/checks.yml | 18 +++--- .github/workflows/upload-source-maps.yml | 4 +- .nvmrc | 2 +- Dockerfile | 6 +- package.json | 12 ++-- yarn.lock | 78 ++++++++++++------------ 6 files changed, 60 insertions(+), 60 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index b4ee1d5be9..8c77d07285 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -30,11 +30,11 @@ jobs: - name: Setup node uses: actions/setup-node@v4 with: - node-version: 20.10.0 + node-version: 20.11.0 cache: 'yarn' - name: Cache node_modules - uses: actions/cache@v3 + uses: actions/cache@v4 id: cache-node-modules with: path: | @@ -62,11 +62,11 @@ jobs: - name: Setup node uses: actions/setup-node@v4 with: - node-version: 20.10.0 + node-version: 20.11.0 cache: 'yarn' - name: Cache node_modules - uses: actions/cache@v3 + uses: actions/cache@v4 id: cache-node-modules with: path: | @@ -99,11 +99,11 @@ jobs: - name: Setup node uses: actions/setup-node@v4 with: - node-version: 20.10.0 + node-version: 20.11.0 cache: 'yarn' - name: Cache node_modules - uses: actions/cache@v3 + uses: actions/cache@v4 id: cache-node-modules with: path: | @@ -122,7 +122,7 @@ jobs: needs: [ code_quality, envs_validation ] runs-on: ubuntu-latest container: - image: mcr.microsoft.com/playwright:v1.40.1-focal + image: mcr.microsoft.com/playwright:v1.41.1-focal strategy: fail-fast: false @@ -141,11 +141,11 @@ jobs: - name: Setup node uses: actions/setup-node@v4 with: - node-version: 20.10.0 + node-version: 20.11.0 cache: 'yarn' - name: Cache node_modules - uses: actions/cache@v3 + uses: actions/cache@v4 id: cache-node-modules with: path: | diff --git a/.github/workflows/upload-source-maps.yml b/.github/workflows/upload-source-maps.yml index 8c4af40fa8..55b18067fe 100644 --- a/.github/workflows/upload-source-maps.yml +++ b/.github/workflows/upload-source-maps.yml @@ -21,11 +21,11 @@ jobs: - name: Setup node uses: actions/setup-node@v4 with: - node-version: 20.10.0 + node-version: 20.11.0 cache: 'yarn' - name: Cache node_modules - uses: actions/cache@v3 + uses: actions/cache@v4 id: cache-node-modules with: path: | diff --git a/.nvmrc b/.nvmrc index d5a159609d..8b0beab16a 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20.10.0 +20.11.0 diff --git a/Dockerfile b/Dockerfile index 7b46d9efa6..f38d68ebaa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # ***************************** # *** STAGE 1: Dependencies *** # ***************************** -FROM node:20.10.0-alpine AS deps +FROM node:20.11.0-alpine AS deps # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. RUN apk add --no-cache libc6-compat @@ -30,7 +30,7 @@ RUN yarn --frozen-lockfile # ***************************** # ****** STAGE 2: Build ******* # ***************************** -FROM node:20.10.0-alpine AS builder +FROM node:20.11.0-alpine AS builder RUN apk add --no-cache --upgrade libc6-compat bash # pass commit sha and git tag to the app image @@ -78,7 +78,7 @@ RUN cd ./deploy/tools/envs-validator && yarn build # ******* STAGE 3: Run ******** # ***************************** # Production image, copy all the files and run next -FROM node:20.10.0-alpine AS runner +FROM node:20.11.0-alpine AS runner RUN apk add --no-cache --upgrade bash curl jq unzip ### APP diff --git a/package.json b/package.json index 08645c972d..7eb0abc236 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "private": false, "homepage": "https://github.com/blockscout/frontend#readme", "engines": { - "node": "20.10.0", - "npm": "10.2.3" + "node": "20.11.0", + "npm": "10.2.4" }, "scripts": { "dev": "./tools/scripts/dev.sh", @@ -24,7 +24,7 @@ "svg:build-sprite": "icons build -i ./icons -o ./public/icons --optimize", "test:pw": "./tools/scripts/pw.sh", "test:pw:local": "export NODE_PATH=$(pwd)/node_modules && yarn test:pw", - "test:pw:docker": "docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.40.1-focal ./tools/scripts/pw.docker.sh", + "test:pw:docker": "docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.41.1-focal ./tools/scripts/pw.docker.sh", "test:pw:ci": "yarn test:pw --project=$PW_PROJECT", "test:jest": "jest", "test:jest:watch": "jest --watch", @@ -99,8 +99,8 @@ "xss": "^1.0.14" }, "devDependencies": { - "@playwright/experimental-ct-react": "1.40.1", - "@playwright/test": "1.40.1", + "@playwright/experimental-ct-react": "1.41.1", + "@playwright/test": "1.41.1", "@svgr/webpack": "^6.5.1", "@tanstack/eslint-plugin-query": "^5.0.5", "@testing-library/react": "^14.0.0", @@ -112,7 +112,7 @@ "@types/jest": "^29.2.0", "@types/js-cookie": "^3.0.2", "@types/mixpanel-browser": "^2.38.1", - "@types/node": "20.10.4", + "@types/node": "20.11.0", "@types/phoenix": "^1.5.4", "@types/qrcode": "^1.5.0", "@types/react": "18.0.9", diff --git a/yarn.lock b/yarn.lock index ca8ba83510..31478c7bc8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4699,29 +4699,29 @@ tiny-glob "^0.2.9" tslib "^2.4.0" -"@playwright/experimental-ct-core@1.40.1": - version "1.40.1" - resolved "https://registry.yarnpkg.com/@playwright/experimental-ct-core/-/experimental-ct-core-1.40.1.tgz#4e3fb7d07872d3a6ee7c8a4fde21ed9bffc6de62" - integrity sha512-FjYQP74I2xVAO6W52+Yn2t48FDs+IhOHcWAwZHqAX+lHVHidz4f/b0FY3Qnq8+ZIt5TgqucEzGXbw/TdqJYDtA== +"@playwright/experimental-ct-core@1.41.1": + version "1.41.1" + resolved "https://registry.yarnpkg.com/@playwright/experimental-ct-core/-/experimental-ct-core-1.41.1.tgz#9bad5adb0a048c687a596bd832a258c8ced24ec8" + integrity sha512-d7PxESV29x6W9RYs0mhkXmxr+6FfTbg2Tm/WJZlhgbIP+OLv79uJ8hl8ERsiBBFtH88sR+WmxHBMiZRpfpa6Fw== dependencies: - playwright "1.40.1" - playwright-core "1.40.1" - vite "^4.4.10" + playwright "1.41.1" + playwright-core "1.41.1" + vite "^4.4.12" -"@playwright/experimental-ct-react@1.40.1": - version "1.40.1" - resolved "https://registry.yarnpkg.com/@playwright/experimental-ct-react/-/experimental-ct-react-1.40.1.tgz#28830ec5c0ec89c59119fc9c735c00230f87b2f6" - integrity sha512-a2ubB04+pSswpWOgIwgBcSvvdvVNv4Cz8wud5ZLV5+4fcRqRACxFlGJPiVHw1zanhDSD+rH6H9+zaNm/o1iJHw== +"@playwright/experimental-ct-react@1.41.1": + version "1.41.1" + resolved "https://registry.yarnpkg.com/@playwright/experimental-ct-react/-/experimental-ct-react-1.41.1.tgz#4711881caf1ab47acbc3f7c121b87e17f165a46c" + integrity sha512-Ht04RKD/4J69EPHOR4iAWtsOkkqswxonkcEEhniTNflGn30SoPyNww72LJECDrls+7AJayflJf4qe/cK1Ao/ug== dependencies: - "@playwright/experimental-ct-core" "1.40.1" + "@playwright/experimental-ct-core" "1.41.1" "@vitejs/plugin-react" "^4.0.0" -"@playwright/test@1.40.1": - version "1.40.1" - resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.40.1.tgz#9e66322d97b1d74b9f8718bacab15080f24cde65" - integrity sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw== +"@playwright/test@1.41.1": + version "1.41.1" + resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.41.1.tgz#6954139ed4a67999f1b17460aa3d184f4b334f18" + integrity sha512-9g8EWTjiQ9yFBXc6HjCWe41msLpxEX0KhmfmPl9RPLJdfzL4F0lg2BdJ91O9azFdl11y1pmpwdjBiSxvqc+btw== dependencies: - playwright "1.40.1" + playwright "1.41.1" "@polka/url@^1.0.0-next.20": version "1.0.0-next.23" @@ -6472,10 +6472,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.4.tgz#54be907698f40de8a45770b48486aa3cbd3adff7" integrity sha512-WdlVphvfR/GJCLEMbNA8lJ0lhFNBj4SW3O+O5/cEGw9oYrv0al9zTwuQsq+myDUXgNx2jgBynoVgZ2MMJ6pbow== -"@types/node@20.10.4": - version "20.10.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.4.tgz#b246fd84d55d5b1b71bf51f964bd514409347198" - integrity sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg== +"@types/node@20.11.0": + version "20.11.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.0.tgz#8e0b99e70c0c1ade1a86c4a282f7b7ef87c9552f" + integrity sha512-o9bjXmDNcF7GbM4CNQpmi+TutCgap/K3w1JyKgxAjqx41zp9qlIAVFi0IhCNsJcXolEqLWhbFbEeL0PvYm4pcQ== dependencies: undici-types "~5.26.4" @@ -12692,16 +12692,16 @@ nan@^2.14.0, nan@^2.14.1, nan@^2.17.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -nanoid@^3.3.4: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - nanoid@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" @@ -13426,17 +13426,17 @@ pkg-types@^1.0.3: mlly "^1.2.0" pathe "^1.1.0" -playwright-core@1.40.1: - version "1.40.1" - resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.40.1.tgz#442d15e86866a87d90d07af528e0afabe4c75c05" - integrity sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ== +playwright-core@1.41.1: + version "1.41.1" + resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.41.1.tgz#9c152670010d9d6f970f34b68e3e935d3c487431" + integrity sha512-/KPO5DzXSMlxSX77wy+HihKGOunh3hqndhqeo/nMxfigiKzogn8kfL0ZBDu0L1RKgan5XHCPmn6zXd2NUJgjhg== -playwright@1.40.1: - version "1.40.1" - resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.40.1.tgz#a11bf8dca15be5a194851dbbf3df235b9f53d7ae" - integrity sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw== +playwright@1.41.1: + version "1.41.1" + resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.41.1.tgz#83325f34165840d019355c2a78a50f21ed9b9c85" + integrity sha512-gdZAWG97oUnbBdRL3GuBvX3nDDmUOuqzV/D24dytqlKt+eI5KbwusluZRGljx1YoJKZ2NRPaeWiFTeGZO7SosQ== dependencies: - playwright-core "1.40.1" + playwright-core "1.41.1" optionalDependencies: fsevents "2.3.2" @@ -15813,10 +15813,10 @@ vite-tsconfig-paths@^3.5.2: recrawl-sync "^2.0.3" tsconfig-paths "^4.0.0" -vite@^4.4.10: - version "4.5.1" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.1.tgz#3370986e1ed5dbabbf35a6c2e1fb1e18555b968a" - integrity sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA== +vite@^4.4.12: + version "4.5.2" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.2.tgz#d6ea8610e099851dad8c7371599969e0f8b97e82" + integrity sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w== dependencies: esbuild "^0.18.10" postcss "^8.4.27" From f370e75abc2fbd7a486e87c6d940283e2d839c87 Mon Sep 17 00:00:00 2001 From: tom Date: Mon, 29 Jan 2024 17:53:41 +0400 Subject: [PATCH 3/3] update screenshot --- .github/workflows/checks.yml | 2 +- ...sx_mobile_base-view-mobile-dark-mode-1.png | Bin 22070 -> 22097 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 8c77d07285..028cab6e11 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -164,7 +164,7 @@ jobs: - name: Upload test results if: always() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: playwright-report-${{ matrix.project }} path: playwright-report diff --git a/ui/pages/__screenshots__/CsvExport.pw.tsx_mobile_base-view-mobile-dark-mode-1.png b/ui/pages/__screenshots__/CsvExport.pw.tsx_mobile_base-view-mobile-dark-mode-1.png index f3a9396fb82f0c60af2ed5a21fc8f93e81c238ec..d5640e74c9049c47b59d6e08e78b9f59c3fc6e9c 100644 GIT binary patch delta 19472 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®5$Ja@qrqc8XHfy zK(5uROfbb3Ymu6BTR;|f8k5^~9EK>LF0fd?cO9e>j2WPDL zQw{N4);jzxXUjL3jE#)ok$0Ky8oz>@ozE{7BK^h6*uculQWH`WG;G48URe!`-w5jK z1Gx>Cn4_Zj%EwT2!-fKLm&CR

b1H)fo`G1>d*1cXf9&XjT6X@>Nw;?OKip(-7SC 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 delta 19382 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