diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index 569590fa4f..64225cc134 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -48,7 +48,7 @@ jobs: run: dotnet test Backend.Tests/Backend.Tests.csproj shell: bash - name: Upload coverage artifact - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: if-no-files-found: error name: coverage @@ -85,7 +85,7 @@ jobs: - name: Checkout repository uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Download coverage artifact - uses: actions/download-artifact@87c55149d96e628cc2ef7e6fc2aab372015aec85 # v4.1.3 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: coverage - name: Upload coverage report @@ -135,7 +135,7 @@ jobs: - name: Autobuild uses: github/codeql-action/autobuild@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 - name: Upload artifacts if build failed - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 if: ${{ failure() }} with: name: tracer-logs diff --git a/.github/workflows/combine_deploy_image.yml b/.github/workflows/combine_deploy_image.yml index fbf2c1cab9..7a8fe95ad9 100644 --- a/.github/workflows/combine_deploy_image.yml +++ b/.github/workflows/combine_deploy_image.yml @@ -40,7 +40,7 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@0d103c3126aa41d772a8362f6aa67afac040f80c # v3.1.0 + uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # v3.2.0 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4.0.1 with: @@ -54,7 +54,7 @@ jobs: username: ${{ secrets.AWS_ACCESS_KEY_ID }} password: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Build combine_deploy - uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 + uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 with: context: "{{defaultContext}}:deploy" push: true diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml index e19ede4f6c..17a6d59ac7 100644 --- a/.github/workflows/frontend.yml +++ b/.github/workflows/frontend.yml @@ -68,7 +68,7 @@ jobs: env: CI: true - name: Upload coverage artifact - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: if-no-files-found: error name: coverage @@ -95,7 +95,7 @@ jobs: - name: Checkout repository uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Download coverage artifact - uses: actions/download-artifact@87c55149d96e628cc2ef7e6fc2aab372015aec85 # v4.1.3 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: coverage - name: Upload coverage report diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index eab14705cb..878b7c1e9b 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -81,7 +81,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: SARIF file path: results.sarif diff --git a/Backend.Tests/Backend.Tests.csproj b/Backend.Tests/Backend.Tests.csproj index 267e9ed42d..664e5582b5 100644 --- a/Backend.Tests/Backend.Tests.csproj +++ b/Backend.Tests/Backend.Tests.csproj @@ -13,10 +13,10 @@ - + - - + + diff --git a/Backend/BackendFramework.csproj b/Backend/BackendFramework.csproj index f0c49a8fed..7e5ac352c0 100644 --- a/Backend/BackendFramework.csproj +++ b/Backend/BackendFramework.csproj @@ -13,12 +13,12 @@ NU1701 - + - + diff --git a/Backend/Dockerfile b/Backend/Dockerfile index 5fac8b9084..e1f2bf1576 100644 --- a/Backend/Dockerfile +++ b/Backend/Dockerfile @@ -1,5 +1,5 @@ # Docker multi-stage build -FROM mcr.microsoft.com/dotnet/sdk:6.0.419-focal-amd64 AS builder +FROM mcr.microsoft.com/dotnet/sdk:6.0.420-focal-amd64 AS builder WORKDIR /app # Copy csproj and restore (fetch dependencies) as distinct layers. @@ -11,7 +11,7 @@ COPY . ./ RUN dotnet publish -c Release -o build # Build runtime image. -FROM mcr.microsoft.com/dotnet/aspnet:6.0.27-focal-amd64 +FROM mcr.microsoft.com/dotnet/aspnet:6.0.28-focal-amd64 ENV ASPNETCORE_URLS=http://+:5000 ENV COMBINE_IS_IN_CONTAINER=1 diff --git a/Dockerfile b/Dockerfile index 96bf055f4d..b58f4ee3fa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # User guide build environment -FROM python:3.10.13-slim-bookworm AS user_guide_builder +FROM python:3.10.14-slim-bookworm AS user_guide_builder ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 @@ -16,7 +16,7 @@ COPY docs/user_guide docs/user_guide RUN tox -e user-guide # Frontend build environment. -FROM node:18.19.1-bookworm-slim AS frontend_builder +FROM node:18.20.0-bookworm-slim AS frontend_builder WORKDIR /app # Install app dependencies. diff --git a/database/Dockerfile b/database/Dockerfile index 6b426ebeb2..c308f1cee1 100644 --- a/database/Dockerfile +++ b/database/Dockerfile @@ -1,4 +1,4 @@ -FROM mongo:7.0.6-jammy +FROM mongo:7.0.7-jammy WORKDIR / diff --git a/deploy/requirements.txt b/deploy/requirements.txt index 3794cf694b..291710facb 100644 --- a/deploy/requirements.txt +++ b/deploy/requirements.txt @@ -4,9 +4,9 @@ # # pip-compile requirements.in # -ansible==9.3.0 +ansible==9.4.0 # via -r requirements.in -ansible-core==2.16.4 +ansible-core==2.16.5 # via ansible cachetools==5.3.3 # via google-auth @@ -22,7 +22,7 @@ cryptography==42.0.5 # via # ansible-core # pyopenssl -google-auth==2.28.1 +google-auth==2.29.0 # via kubernetes idna==3.6 # via requests @@ -41,19 +41,19 @@ oauthlib==3.2.2 # via # kubernetes # requests-oauthlib -packaging==23.2 +packaging==24.0 # via ansible-core -pyasn1==0.5.1 +pyasn1==0.6.0 # via # pyasn1-modules # rsa -pyasn1-modules==0.3.0 +pyasn1-modules==0.4.0 # via google-auth -pycparser==2.21 +pycparser==2.22 # via cffi -pyopenssl==24.0.0 +pyopenssl==24.1.0 # via -r requirements.in -python-dateutil==2.9.0 +python-dateutil==2.9.0.post0 # via kubernetes pyyaml==6.0.1 # via @@ -64,7 +64,7 @@ requests==2.31.0 # via # kubernetes # requests-oauthlib -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via kubernetes resolvelib==1.0.1 # via ansible-core diff --git a/dev-requirements.txt b/dev-requirements.txt index 0c2ce8adaa..71d201ca88 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -12,7 +12,7 @@ babel==2.14.0 # via mkdocs-material beautifulsoup4==4.12.3 # via mkdocs-htmlproofer-plugin -black==24.2.0 +black==24.3.0 # via -r dev-requirements.in cachetools==5.3.3 # via @@ -47,7 +47,7 @@ dnspython==2.6.1 # via pymongo eradicate==2.3.0 # via flake8-eradicate -filelock==3.13.1 +filelock==3.13.3 # via # tox # virtualenv @@ -69,7 +69,7 @@ flake8-eradicate==1.5.0 # via -r dev-requirements.in ghp-import==2.1.0 # via mkdocs -google-auth==2.28.1 +google-auth==2.29.0 # via kubernetes humanfriendly==10.0 # via -r dev-requirements.in @@ -87,7 +87,7 @@ jinja2-base64-filters==0.1.4 # via -r dev-requirements.in kubernetes==29.0.0 # via -r dev-requirements.in -markdown==3.5.2 +markdown==3.6 # via # mkdocs # mkdocs-htmlproofer-plugin @@ -106,15 +106,15 @@ mkdocs==1.5.3 # mkdocs-htmlproofer-plugin # mkdocs-material # mkdocs-static-i18n -mkdocs-htmlproofer-plugin==1.1.0 +mkdocs-htmlproofer-plugin==1.2.0 # via -r dev-requirements.in -mkdocs-material==9.5.12 +mkdocs-material==9.5.16 # via -r dev-requirements.in mkdocs-material-extensions==1.3.1 # via mkdocs-material mkdocs-static-i18n==1.2.2 # via -r dev-requirements.in -mypy==1.8.0 +mypy==1.9.0 # via -r dev-requirements.in mypy-extensions==1.0.0 # via @@ -124,7 +124,7 @@ oauthlib==3.2.2 # via # kubernetes # requests-oauthlib -packaging==23.2 +packaging==24.0 # via # black # mkdocs @@ -146,31 +146,31 @@ platformdirs==4.2.0 # virtualenv pluggy==1.4.0 # via tox -pyasn1==0.5.1 +pyasn1==0.6.0 # via # pyasn1-modules # rsa -pyasn1-modules==0.3.0 +pyasn1-modules==0.4.0 # via google-auth pycodestyle==2.11.1 # via flake8 -pycparser==2.21 +pycparser==2.22 # via cffi pyflakes==3.2.0 # via flake8 pygments==2.17.2 # via mkdocs-material -pymdown-extensions==10.7 +pymdown-extensions==10.7.1 # via mkdocs-material -pymongo==4.6.2 +pymongo==4.6.3 # via -r dev-requirements.in -pyopenssl==24.0.0 +pyopenssl==24.1.0 # via -r dev-requirements.in pyproject-api==1.6.1 # via tox pyreadline3==3.4.1 # via -r dev-requirements.in -python-dateutil==2.9.0 +python-dateutil==2.9.0.post0 # via # ghp-import # kubernetes @@ -191,7 +191,7 @@ requests==2.31.0 # mkdocs-htmlproofer-plugin # mkdocs-material # requests-oauthlib -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via kubernetes rsa==4.9 # via google-auth @@ -207,15 +207,15 @@ tomli==2.0.1 # mypy # pyproject-api # tox -tox==4.13.0 +tox==4.14.2 # via -r dev-requirements.in -types-pyopenssl==24.0.0.20240228 +types-pyopenssl==24.0.0.20240311 # via -r dev-requirements.in -types-python-dateutil==2.8.19.20240106 +types-python-dateutil==2.9.0.20240316 # via -r dev-requirements.in -types-pyyaml==6.0.12.12 +types-pyyaml==6.0.12.20240311 # via -r dev-requirements.in -types-requests==2.31.0.20240218 +types-requests==2.31.0.20240311 # via -r dev-requirements.in typing-extensions==4.10.0 # via diff --git a/docs/user_guide/assets/licenses/backend_licenses.txt b/docs/user_guide/assets/licenses/backend_licenses.txt index e483b83977..bd12847dba 100644 --- a/docs/user_guide/assets/licenses/backend_licenses.txt +++ b/docs/user_guide/assets/licenses/backend_licenses.txt @@ -8,11 +8,11 @@ license Type:Apache-2.0 #################################################################################################### Package:BouncyCastle.Cryptography -Version:2.2.1 +Version:2.3.0 project URL:https://www.bouncycastle.org/csharp/ Description:BouncyCastle.NET is a popular cryptography library for .NET -licenseUrl:https://www.nuget.org/packages/BouncyCastle.Cryptography/2.2.1/License -license Type:LICENSE.md +licenseUrl:https://licenses.nuget.org/MIT +license Type:MIT #################################################################################################### Package:DnsClient @@ -58,7 +58,7 @@ license Type:LICENSE.md #################################################################################################### Package:MailKit -Version:4.3.0 +Version:4.4.0 project URL:http://www.mimekit.net/ Description:MailKit is an Open Source cross-platform .NET mail-client library that is based on MimeKit and optimized for mobile devices. @@ -97,11 +97,11 @@ license Type: #################################################################################################### Package:Microsoft.AspNetCore.Authentication.JwtBearer -Version:6.0.27 +Version:7.0.3 project URL:https://asp.net/ Description:ASP.NET Core middleware that enables an application to receive an OpenID Connect bearer token. -This package was built from the source code at https://github.com/dotnet/aspnetcore/tree/417d650029c720dbd2138bcafbb78e2e4ff31bff +This package was built from the source code at https://github.com/dotnet/aspnetcore/tree/febee99db845fd8766a13bdb391a07c3ee90b4ba licenseUrl:https://licenses.nuget.org/MIT license Type:MIT @@ -767,8 +767,8 @@ license Type:MIT #################################################################################################### Package:MimeKit -Version:4.3.0 -project URL:http://www.mimekit.net/ +Version:4.4.0 +project URL:https://www.mimekit.net/ Description:MimeKit is an Open Source library for creating and parsing MIME, S/MIME and PGP messages on desktop and mobile platforms. It also supports parsing of Unix mbox files. Unlike any other .NET MIME parser, MimeKit's parser does not need to parse string input nor does it use a TextReader. Instead, it parses raw byte streams, thus allowing it to better support undeclared 8bit text in headers as well as message bodies. It also means that MimeKit's parser is significantly faster than other .NET MIME parsers. @@ -1599,7 +1599,7 @@ license Type:MS-EULA #################################################################################################### Package:System.Formats.Asn1 -Version:7.0.0 +Version:8.0.0 project URL:https://dot.net/ Description:Provides classes that can read and write the ASN.1 BER, CER, and DER data formats. @@ -3059,7 +3059,7 @@ license Type:MS-EULA #################################################################################################### Package:System.Security.Cryptography.Pkcs -Version:7.0.3 +Version:8.0.0 project URL:https://dot.net/ Description:Provides support for PKCS and CMS algorithms. @@ -3247,7 +3247,7 @@ license Type:MIT #################################################################################################### Package:System.Text.Encoding.CodePages -Version:7.0.0 +Version:8.0.0 project URL:https://dot.net/ Description:Provides support for code-page based encodings, including Windows-1252, Shift-JIS, and GB2312. diff --git a/docs/user_guide/assets/licenses/frontend_licenses.txt b/docs/user_guide/assets/licenses/frontend_licenses.txt index 9a041da7f9..46c4f53a65 100644 --- a/docs/user_guide/assets/licenses/frontend_licenses.txt +++ b/docs/user_guide/assets/licenses/frontend_licenses.txt @@ -41808,7 +41808,7 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -follow-redirects 1.15.5 +follow-redirects 1.15.6 MIT Copyright 2014–present Olivier Lalonde , James Talmage , Ruben Verborgh diff --git a/maintenance/requirements.txt b/maintenance/requirements.txt index 0220a85259..c36462596e 100644 --- a/maintenance/requirements.txt +++ b/maintenance/requirements.txt @@ -18,7 +18,7 @@ cryptography==42.0.5 # via pyopenssl dnspython==2.6.1 # via pymongo -google-auth==2.28.1 +google-auth==2.29.0 # via kubernetes humanfriendly==10.0 # via -r requirements.in @@ -30,19 +30,19 @@ oauthlib==3.2.2 # via # kubernetes # requests-oauthlib -pyasn1==0.5.1 +pyasn1==0.6.0 # via # pyasn1-modules # rsa -pyasn1-modules==0.3.0 +pyasn1-modules==0.4.0 # via google-auth -pycparser==2.21 +pycparser==2.22 # via cffi -pymongo==4.6.2 +pymongo==4.6.3 # via -r requirements.in -pyopenssl==24.0.0 +pyopenssl==24.1.0 # via -r requirements.in -python-dateutil==2.9.0 +python-dateutil==2.9.0.post0 # via kubernetes pyyaml==6.0.1 # via kubernetes @@ -50,7 +50,7 @@ requests==2.31.0 # via # kubernetes # requests-oauthlib -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via kubernetes rsa==4.9 # via google-auth diff --git a/package-lock.json b/package-lock.json index 0e400f6efa..2f9431efd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10560,13 +10560,13 @@ "dev": true }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -10574,7 +10574,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -11298,9 +11298,9 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "engines": { "node": ">= 0.6" @@ -14209,17 +14209,17 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -14601,9 +14601,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -23006,9 +23006,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -27780,9 +27780,9 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, "dependencies": { "colorette": "^2.0.10",