From 888a062197b75f1fc0303c5f61dfef16d05a17ff Mon Sep 17 00:00:00 2001 From: Philippe Serhal Date: Mon, 9 Dec 2024 12:47:20 -0500 Subject: [PATCH 1/8] chore: drop node 14, try execa@8 --- .github/workflows/workflow.yml | 29 ------------- package-lock.json | 50 +++++++++++++++++------ package.json | 2 +- packages/redirect-parser/package.json | 2 +- packages/redirect-parser/vitest.config.ts | 11 ----- packages/testing/package.json | 2 +- 6 files changed, 41 insertions(+), 55 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index bc94a7a980..067c0e956d 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -55,7 +55,6 @@ jobs: deno-version: ['v1.37.0', 'v1.44.4'] include: - os: ubuntu-latest - node-version: '14.16.0' deno-version: 'v1.44.4' fail-fast: false steps: @@ -85,9 +84,6 @@ jobs: node-version: ${{ matrix.node-version }} cache: 'npm' if: ${{ !steps.release-check.outputs.IS_RELEASE }} - - name: Install npm@7 - run: npm install -g npm@7 - if: ${{ matrix.node-version == '14.16.0' && !steps.release-check.outputs.IS_RELEASE }} - name: Setup Deno uses: denoland/setup-deno@v1 with: @@ -126,28 +122,6 @@ jobs: install-command: ['npm ci'] machine: ['0', '1', '2', '3', '4'] include: - # We test on the oldest supported Node.js version, but only with a - # single combination (Ubuntu) - - os: ubuntu-latest - node-version: '14.16.0' - install-command: npm ci - machine: '0' - - os: ubuntu-latest - node-version: '14.16.0' - install-command: npm ci - machine: '1' - - os: ubuntu-latest - node-version: '14.16.0' - install-command: npm ci - machine: '2' - - os: ubuntu-latest - node-version: '14.16.0' - install-command: npm ci - machine: '3' - - os: ubuntu-latest - node-version: '14.16.0' - install-command: npm ci - machine: '4' # The buildbot pins Netlify Build's dependencies, like `npm ci`. # But other consumers do not, like `npm install`. # So we test both. @@ -200,9 +174,6 @@ jobs: node-version: ${{ matrix.node-version }} cache: 'npm' if: ${{ !steps.release-check.outputs.IS_RELEASE }} - - name: Install npm@7 - run: npm install -g npm@7 - if: ${{ matrix.node-version == '14.16.0' && !steps.release-check.outputs.IS_RELEASE }} - name: Set up Go uses: actions/setup-go@v5 with: diff --git a/package-lock.json b/package-lock.json index 179f159be8..9858116ce8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "prettier": "^2.8.4" }, "engines": { - "node": "^14.16.0 || >=16.0.0" + "node": ">=16.0.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -27407,7 +27407,7 @@ "vitest": "^0.34.0" }, "engines": { - "node": "^14.16.0 || >=16.0.0" + "node": ">=16.0.0" } }, "packages/run-utils": { @@ -27511,7 +27511,7 @@ "ava": "^4.0.0", "c8": "^7.12.0", "cpy": "^9.0.0", - "execa": "^6.0.0", + "execa": "8", "fast-safe-stringify": "^2.0.7", "figures": "^5.0.0", "get-bin-path": "^11.0.0", @@ -27529,33 +27529,47 @@ } }, "packages/testing/node_modules/execa": { - "version": "6.1.0", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", - "signal-exit": "^3.0.7", + "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=16.17" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "packages/testing/node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "packages/testing/node_modules/human-signals": { - "version": "3.0.1", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, - "license": "Apache-2.0", "engines": { - "node": ">=12.20.0" + "node": ">=16.17.0" } }, "packages/testing/node_modules/is-stream": { @@ -27597,6 +27611,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/testing/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "packages/testing/node_modules/strip-final-newline": { "version": "3.0.0", "dev": true, diff --git a/package.json b/package.json index d8a8edb26a..98a314aae1 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "prettier": "^2.8.4" }, "engines": { - "node": "^14.16.0 || >=16.0.0" + "node": ">=16.0.0" }, "lint-staged": { "!(packages/*/tests/**/fixtures/**/*)*.+(j|t)s": "eslint --ignore-path .gitignore --cache --fix", diff --git a/packages/redirect-parser/package.json b/packages/redirect-parser/package.json index b8d056c7a9..7ca1b44d77 100644 --- a/packages/redirect-parser/package.json +++ b/packages/redirect-parser/package.json @@ -21,7 +21,7 @@ "netlify" ], "engines": { - "node": "^14.16.0 || >=16.0.0" + "node": ">=16.0.0" }, "author": "Netlify", "license": "MIT", diff --git a/packages/redirect-parser/vitest.config.ts b/packages/redirect-parser/vitest.config.ts index fbcf434e58..f053f30907 100644 --- a/packages/redirect-parser/vitest.config.ts +++ b/packages/redirect-parser/vitest.config.ts @@ -1,18 +1,7 @@ -import type { BenchmarkUserOptions } from 'vitest' import { defineConfig } from 'vitest/config' -const benchmarkOptions: BenchmarkUserOptions = {} -// Tinybench dropped support for Node 14 recently so we need to skip benchmark tests for it -// https://github.com/tinylibs/tinybench/pull/40 and -// https://github.com/tinylibs/tinybench/pull/43 -// This is just a quick workaround to not run the bench tests in node 14 while we still support it -if (process.version.startsWith('v14')) { - benchmarkOptions.exclude = ['tests/**/*.bench.ts'] -} - export default defineConfig({ test: { - benchmark: benchmarkOptions, restoreMocks: true, environment: 'node', }, diff --git a/packages/testing/package.json b/packages/testing/package.json index ee9008fb1e..fa7c4c0055 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -23,7 +23,7 @@ "ava": "^4.0.0", "c8": "^7.12.0", "cpy": "^9.0.0", - "execa": "^6.0.0", + "execa": "8", "fast-safe-stringify": "^2.0.7", "figures": "^5.0.0", "get-bin-path": "^11.0.0", From 61f51983f98c17c34105090b5dce5590fd7c3ad4 Mon Sep 17 00:00:00 2001 From: jake champion Date: Mon, 9 Dec 2024 12:52:02 +0000 Subject: [PATCH 2/8] chore: log out the unhandled rejections --- packages/build/tests/plugins_list/tests.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/build/tests/plugins_list/tests.js b/packages/build/tests/plugins_list/tests.js index 79aa63411e..360695dcae 100644 --- a/packages/build/tests/plugins_list/tests.js +++ b/packages/build/tests/plugins_list/tests.js @@ -7,7 +7,10 @@ import test from 'ava' import cpy from 'cpy' const FIXTURES_DIR = fileURLToPath(new URL('fixtures', import.meta.url)) - +process.addListener('unhandledRejection', (reason, promise) => { + const stack = new Error().stack + console.log('hey', { reason, promise, stack }) +}) const runWithApiMock = async function ( t, fixtureName, From b7ccc102771f3a91c228c27f585335cf33186c1f Mon Sep 17 00:00:00 2001 From: Philippe Serhal Date: Mon, 9 Dec 2024 14:19:28 -0500 Subject: [PATCH 3/8] chore: log reported os platform --- packages/build/tests/plugins_list/tests.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/build/tests/plugins_list/tests.js b/packages/build/tests/plugins_list/tests.js index 360695dcae..f1020634ef 100644 --- a/packages/build/tests/plugins_list/tests.js +++ b/packages/build/tests/plugins_list/tests.js @@ -1,4 +1,5 @@ import { promises as fs } from 'fs' +import { platform } from 'process' import { fileURLToPath } from 'url' import { pluginsList } from '@netlify/plugins-list' @@ -7,6 +8,9 @@ import test from 'ava' import cpy from 'cpy' const FIXTURES_DIR = fileURLToPath(new URL('fixtures', import.meta.url)) + +console.log('platform', platform) + process.addListener('unhandledRejection', (reason, promise) => { const stack = new Error().stack console.log('hey', { reason, promise, stack }) From bb7fb0bc2e157244974c8ee1110297895f4defd8 Mon Sep 17 00:00:00 2001 From: Philippe Serhal Date: Mon, 9 Dec 2024 14:19:58 -0500 Subject: [PATCH 4/8] chore: bump execa to 9 --- package-lock.json | 163 +++++++++++++++++++++++++------- packages/testing/package.json | 2 +- packages/testing/src/fixture.ts | 2 +- 3 files changed, 130 insertions(+), 37 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9858116ce8..28af414e9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8516,6 +8516,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "dev": true, @@ -8531,6 +8537,18 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@sindresorhus/slugify": { "version": "2.2.1", "license": "MIT", @@ -26282,6 +26300,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zip-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", @@ -27511,7 +27541,7 @@ "ava": "^4.0.0", "c8": "^7.12.0", "cpy": "^9.0.0", - "execa": "8", + "execa": "^9.5.2", "fast-safe-stringify": "^2.0.7", "figures": "^5.0.0", "get-bin-path": "^11.0.0", @@ -27529,83 +27559,133 @@ } }, "packages/testing/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", "dev": true, "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": ">=16.17" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "packages/testing/node_modules/execa/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "packages/testing/node_modules/execa/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "packages/testing/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", "dev": true, "engines": { - "node": ">=16.17.0" + "node": ">=18.18.0" } }, "packages/testing/node_modules/is-stream": { - "version": "3.0.0", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, - "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/testing/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "packages/testing/node_modules/npm-run-path": { - "version": "5.1.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, - "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/testing/node_modules/onetime": { - "version": "6.0.0", + "packages/testing/node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/testing/node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", "dev": true, - "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "parse-ms": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -27624,11 +27704,24 @@ } }, "packages/testing/node_modules/strip-final-newline": { - "version": "3.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/testing/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" diff --git a/packages/testing/package.json b/packages/testing/package.json index fa7c4c0055..6bc9e83a25 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -23,7 +23,7 @@ "ava": "^4.0.0", "c8": "^7.12.0", "cpy": "^9.0.0", - "execa": "8", + "execa": "^9.5.2", "fast-safe-stringify": "^2.0.7", "figures": "^5.0.0", "get-bin-path": "^11.0.0", diff --git a/packages/testing/src/fixture.ts b/packages/testing/src/fixture.ts index e498ff3620..3aa01239a9 100644 --- a/packages/testing/src/fixture.ts +++ b/packages/testing/src/fixture.ts @@ -246,7 +246,7 @@ export class Fixture { flags: Partial = {}, ): Promise<{ output: string - exitCode: number + exitCode: number | undefined }> { const { env: environment, ...remainingFlags } = flags try { From 125faa5cde443f712a9467d9abc6e3389816f0f3 Mon Sep 17 00:00:00 2001 From: Philippe Serhal Date: Mon, 9 Dec 2024 14:36:14 -0500 Subject: [PATCH 5/8] chore: try execa verbose mode --- packages/testing/src/fixture.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/testing/src/fixture.ts b/packages/testing/src/fixture.ts index 3aa01239a9..67cb43429a 100644 --- a/packages/testing/src/fixture.ts +++ b/packages/testing/src/fixture.ts @@ -256,6 +256,7 @@ export class Fixture { reject: false, env: environment || {}, cwd, + verbose: 'full', }) return { output: output || '', exitCode } } finally { From e2b0e49013f4567bcf7de1b8f2d3655b8437d925 Mon Sep 17 00:00:00 2001 From: Philippe Serhal Date: Mon, 9 Dec 2024 14:54:28 -0500 Subject: [PATCH 6/8] chore: just run one test file --- packages/build/tests/plugins_events/tests.js | 46 ++++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/build/tests/plugins_events/tests.js b/packages/build/tests/plugins_events/tests.js index b82a7f7a8e..b14f7d19a4 100644 --- a/packages/build/tests/plugins_events/tests.js +++ b/packages/build/tests/plugins_events/tests.js @@ -2,107 +2,107 @@ import { Fixture, normalizeOutput } from '@netlify/testing' import test from 'ava' import sinon from 'sinon' -test('plugin.onSuccess is triggered on success', async (t) => { +test.only('plugin.onSuccess is triggered on success', async (t) => { const output = await new Fixture('./fixtures/success_ok').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onSuccess is not triggered on failure', async (t) => { +test.only('plugin.onSuccess is not triggered on failure', async (t) => { const output = await new Fixture('./fixtures/success_not_ok').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onSuccess is not triggered on failPlugin()', async (t) => { +test.only('plugin.onSuccess is not triggered on failPlugin()', async (t) => { const output = await new Fixture('./fixtures/success_fail_plugin').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onSuccess is not triggered on cancelBuild()', async (t) => { +test.only('plugin.onSuccess is not triggered on cancelBuild()', async (t) => { const output = await new Fixture('./fixtures/success_cancel_build').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onSuccess can fail but does not stop builds', async (t) => { +test.only('plugin.onSuccess can fail but does not stop builds', async (t) => { const output = await new Fixture('./fixtures/success_fail').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onError is not triggered on success', async (t) => { +test.only('plugin.onError is not triggered on success', async (t) => { const output = await new Fixture('./fixtures/error_ok').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onError is triggered on failure', async (t) => { +test.only('plugin.onError is triggered on failure', async (t) => { const output = await new Fixture('./fixtures/error_not_ok').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onError is not triggered on failPlugin()', async (t) => { +test.only('plugin.onError is not triggered on failPlugin()', async (t) => { const output = await new Fixture('./fixtures/error_fail_plugin').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onError is triggered on cancelBuild()', async (t) => { +test.only('plugin.onError is triggered on cancelBuild()', async (t) => { const output = await new Fixture('./fixtures/error_cancel_build').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onError can fail', async (t) => { +test.only('plugin.onError can fail', async (t) => { const output = await new Fixture('./fixtures/error_fail').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onError gets an error argument', async (t) => { +test.only('plugin.onError gets an error argument', async (t) => { const output = await new Fixture('./fixtures/error_argument').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onError can be used in several plugins', async (t) => { +test.only('plugin.onError can be used in several plugins', async (t) => { const output = await new Fixture('./fixtures/error_several').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onEnd is triggered on success', async (t) => { +test.only('plugin.onEnd is triggered on success', async (t) => { const output = await new Fixture('./fixtures/end_ok').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onEnd is triggered on failure', async (t) => { +test.only('plugin.onEnd is triggered on failure', async (t) => { const output = await new Fixture('./fixtures/end_not_ok').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onEnd is not triggered on failPlugin()', async (t) => { +test.only('plugin.onEnd is not triggered on failPlugin()', async (t) => { const output = await new Fixture('./fixtures/end_fail_plugin').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onEnd is triggered on cancelBuild()', async (t) => { +test.only('plugin.onEnd is triggered on cancelBuild()', async (t) => { const output = await new Fixture('./fixtures/end_cancel_build').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onEnd can fail but it does not stop builds', async (t) => { +test.only('plugin.onEnd can fail but it does not stop builds', async (t) => { const output = await new Fixture('./fixtures/end_fail').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onEnd and plugin.onError can be used together', async (t) => { +test.only('plugin.onEnd and plugin.onError can be used together', async (t) => { const output = await new Fixture('./fixtures/end_error').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('plugin.onEnd can be used in several plugins', async (t) => { +test.only('plugin.onEnd can be used in several plugins', async (t) => { const output = await new Fixture('./fixtures/end_several').runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('Does not run `*Dev` events on the build timeline', async (t) => { +test.only('Does not run `*Dev` events on the build timeline', async (t) => { const output = await new Fixture('./fixtures/dev_and_build').withFlags({ debug: false }).runWithBuild() t.snapshot(normalizeOutput(output)) }) -test('Runs the `*Dev` events and not the `*Build` events on the dev timeline', async (t) => { +test.only('Runs the `*Dev` events and not the `*Build` events on the dev timeline', async (t) => { const devCommand = sinon.stub().resolves() const output = await new Fixture('./fixtures/dev_and_build') @@ -113,7 +113,7 @@ test('Runs the `*Dev` events and not the `*Build` events on the dev timeline', a t.is(devCommand.callCount, 1) }) -test('Keeps output to a minimum in the `startDev` entrypoint when `quiet: true`', async (t) => { +test.only('Keeps output to a minimum in the `startDev` entrypoint when `quiet: true`', async (t) => { const devCommand = sinon.stub().resolves() const output = await new Fixture('./fixtures/dev_and_build') @@ -124,7 +124,7 @@ test('Keeps output to a minimum in the `startDev` entrypoint when `quiet: true`' t.is(devCommand.callCount, 1) }) -test('Shows error information in the `startDev` entrypoint even when `quiet: true`', async (t) => { +test.only('Shows error information in the `startDev` entrypoint even when `quiet: true`', async (t) => { const devCommand = sinon.stub().resolves() const output = await new Fixture('./fixtures/dev_with_error') From e93b1a3e26897dcfcd1e9f2a95d5628a2cde8955 Mon Sep 17 00:00:00 2001 From: Philippe Serhal Date: Mon, 9 Dec 2024 17:12:10 -0500 Subject: [PATCH 7/8] chore: upgrade execa in almost all other packages --- package-lock.json | 1071 +++++++++++++---- packages/build-info/package.json | 4 +- packages/build/package.json | 2 +- packages/build/src/plugins/spawn.ts | 9 +- .../build/src/plugins_core/build_command.js | 2 +- .../types/options/netlify_plugin_run_util.ts | 8 +- packages/config/package.json | 2 +- packages/git-utils/package.json | 2 +- packages/run-utils/package.json | 2 +- packages/run-utils/src/main.ts | 12 +- packages/zip-it-and-ship-it/package.json | 2 +- tools/package.json | 2 +- 12 files changed, 844 insertions(+), 274 deletions(-) diff --git a/package-lock.json b/package-lock.json index 28af414e9b..db9b2a8670 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8519,8 +8519,7 @@ "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "dev": true + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==" }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -8541,7 +8540,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, "engines": { "node": ">=18" }, @@ -26304,7 +26302,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", - "dev": true, "engines": { "node": ">=18" }, @@ -26392,7 +26389,7 @@ "ansi-escapes": "^6.0.0", "chalk": "^5.0.0", "clean-stack": "^4.0.0", - "execa": "^6.0.0", + "execa": "^9.5.2", "fdir": "^6.0.1", "figures": "^5.0.0", "filter-obj": "^5.0.0", @@ -26503,7 +26500,7 @@ "@types/semver": "^7.3.13", "@vitest/coverage-c8": "^0.33.0", "@vitest/ui": "^0.34.0", - "execa": "^6.0.0", + "execa": "^9.5.2", "memfs": "^3.4.7", "node-fetch": "^3.3.1", "typescript": "^5.0.0", @@ -26516,161 +26513,333 @@ } }, "packages/build-info/node_modules/execa": { - "version": "6.1.0", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", "dev": true, - "license": "MIT", "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "packages/build-info/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/build-info/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "packages/build-info/node_modules/human-signals": { - "version": "3.0.1", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", "dev": true, - "license": "Apache-2.0", "engines": { - "node": ">=12.20.0" + "node": ">=18.18.0" } }, "packages/build-info/node_modules/is-stream": { - "version": "3.0.0", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, - "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/build-info/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "packages/build-info/node_modules/npm-run-path": { - "version": "5.1.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, - "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/build-info/node_modules/onetime": { - "version": "6.0.0", + "packages/build-info/node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/build-info/node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", "dev": true, - "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "parse-ms": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/build-info/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "packages/build-info/node_modules/strip-final-newline": { - "version": "3.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/build-info/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "packages/build/node_modules/execa": { - "version": "6.1.0", - "license": "MIT", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "packages/build/node_modules/human-signals": { - "version": "3.0.1", - "license": "Apache-2.0", + "packages/build/node_modules/execa/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, "engines": { - "node": ">=12.20.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/build/node_modules/is-stream": { - "version": "3.0.0", - "license": "MIT", + "packages/build/node_modules/execa/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/build/node_modules/npm-run-path": { - "version": "5.1.0", - "license": "MIT", + "packages/build/node_modules/execa/node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", "dependencies": { - "path-key": "^4.0.0" + "parse-ms": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/build/node_modules/human-signals": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", + "engines": { + "node": ">=18.18.0" + } + }, + "packages/build/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/build/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/build/node_modules/onetime": { + "packages/build/node_modules/npm-run-path": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dependencies": { - "mimic-fn": "^4.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/build/node_modules/strip-final-newline": { - "version": "3.0.0", - "license": "MIT", + "packages/build/node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/cache-utils": { - "name": "@netlify/cache-utils", + "packages/build/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/build/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/build/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/cache-utils": { + "name": "@netlify/cache-utils", "version": "5.1.6", "license": "MIT", "dependencies": { @@ -26703,7 +26872,7 @@ "cron-parser": "^4.1.0", "deepmerge": "^4.2.2", "dot-prop": "^7.0.0", - "execa": "^6.0.0", + "execa": "^9.5.2", "fast-safe-stringify": "^2.0.7", "figures": "^5.0.0", "filter-obj": "^5.0.0", @@ -26740,74 +26909,157 @@ } }, "packages/config/node_modules/execa": { - "version": "6.1.0", - "license": "MIT", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "packages/config/node_modules/execa/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/config/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "packages/config/node_modules/human-signals": { - "version": "3.0.1", - "license": "Apache-2.0", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", "engines": { - "node": ">=12.20.0" + "node": ">=18.18.0" } }, "packages/config/node_modules/is-stream": { - "version": "3.0.0", - "license": "MIT", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/config/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "packages/config/node_modules/npm-run-path": { - "version": "5.1.0", - "license": "MIT", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dependencies": { - "path-key": "^4.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/config/node_modules/onetime": { - "version": "6.0.0", - "license": "MIT", + "packages/config/node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/config/node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", "dependencies": { - "mimic-fn": "^4.0.0" + "parse-ms": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/config/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "packages/config/node_modules/strip-final-newline": { - "version": "3.0.0", - "license": "MIT", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "engines": { - "node": ">=12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/config/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -27208,7 +27460,7 @@ "version": "5.1.1", "license": "MIT", "dependencies": { - "execa": "^6.0.0", + "execa": "^9.5.2", "map-obj": "^5.0.0", "micromatch": "^4.0.2", "moize": "^6.1.3", @@ -27224,83 +27476,166 @@ } }, "packages/git-utils/node_modules/execa": { - "version": "6.1.0", - "license": "MIT", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "packages/git-utils/node_modules/human-signals": { - "version": "3.0.1", - "license": "Apache-2.0", - "engines": { - "node": ">=12.20.0" - } - }, - "packages/git-utils/node_modules/is-stream": { - "version": "3.0.0", - "license": "MIT", + "packages/git-utils/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/git-utils/node_modules/npm-run-path": { - "version": "5.1.0", - "license": "MIT", + "packages/git-utils/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dependencies": { - "path-key": "^4.0.0" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/git-utils/node_modules/onetime": { - "version": "6.0.0", - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, + "packages/git-utils/node_modules/human-signals": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", "engines": { - "node": ">=12" + "node": ">=18.18.0" + } + }, + "packages/git-utils/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/git-utils/node_modules/strip-final-newline": { - "version": "3.0.0", - "license": "MIT", + "packages/git-utils/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/headers-parser": { - "name": "netlify-headers-parser", - "version": "7.1.4", - "license": "MIT", + "packages/git-utils/node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/git-utils/node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/git-utils/node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/git-utils/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/git-utils/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/git-utils/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/headers-parser": { + "name": "netlify-headers-parser", + "version": "7.1.4", + "license": "MIT", "dependencies": { "@iarna/toml": "^2.2.5", "escape-string-regexp": "^5.0.0", @@ -27445,7 +27780,7 @@ "version": "5.1.1", "license": "MIT", "dependencies": { - "execa": "^6.0.0" + "execa": "^9.5.2" }, "devDependencies": { "@types/node": "^14.18.53", @@ -27458,74 +27793,157 @@ } }, "packages/run-utils/node_modules/execa": { - "version": "6.1.0", - "license": "MIT", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "packages/run-utils/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/run-utils/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "packages/run-utils/node_modules/human-signals": { - "version": "3.0.1", - "license": "Apache-2.0", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", "engines": { - "node": ">=12.20.0" + "node": ">=18.18.0" } }, "packages/run-utils/node_modules/is-stream": { - "version": "3.0.0", - "license": "MIT", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/run-utils/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "packages/run-utils/node_modules/npm-run-path": { - "version": "5.1.0", - "license": "MIT", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dependencies": { - "path-key": "^4.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/run-utils/node_modules/onetime": { - "version": "6.0.0", - "license": "MIT", + "packages/run-utils/node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/run-utils/node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", "dependencies": { - "mimic-fn": "^4.0.0" + "parse-ms": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/run-utils/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "packages/run-utils/node_modules/strip-final-newline": { - "version": "3.0.0", - "license": "MIT", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "engines": { - "node": ">=12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/run-utils/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -27742,7 +28160,7 @@ "cp-file": "^10.0.0", "es-module-lexer": "^1.0.0", "esbuild": "0.19.11", - "execa": "^6.0.0", + "execa": "^9.5.2", "fast-glob": "^3.3.2", "filter-obj": "^5.0.0", "find-up": "^6.0.0", @@ -28215,33 +28633,54 @@ } }, "packages/zip-it-and-ship-it/node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "packages/zip-it-and-ship-it/node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/zip-it-and-ship-it/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -28296,19 +28735,30 @@ "license": "ISC" }, "packages/zip-it-and-ship-it/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", "engines": { - "node": ">=12.20.0" + "node": ">=18.18.0" } }, "packages/zip-it-and-ship-it/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/zip-it-and-ship-it/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -28404,28 +28854,15 @@ } }, "packages/zip-it-and-ship-it/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/zip-it-and-ship-it/node_modules/onetime": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dependencies": { - "mimic-fn": "^4.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -28445,6 +28882,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/zip-it-and-ship-it/node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "packages/zip-it-and-ship-it/node_modules/pidtree": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", @@ -28458,6 +28906,20 @@ "node": ">=0.10" } }, + "packages/zip-it-and-ship-it/node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "packages/zip-it-and-ship-it/node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -28474,12 +28936,23 @@ "node": ">=8" } }, + "packages/zip-it-and-ship-it/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "packages/zip-it-and-ship-it/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -28509,91 +28982,191 @@ "node": ">=14.17" } }, + "packages/zip-it-and-ship-it/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "tools": { "version": "1.0.0", "license": "MIT", "devDependencies": { "@types/node": "^14.18.53", - "execa": "^6.1.0", + "execa": "^9.5.2", "globby": "^13.1.2", "typescript": "^5.0.0" } }, "tools/node_modules/execa": { - "version": "6.1.0", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", + "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==", "dev": true, - "license": "MIT", "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.0", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "tools/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "tools/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "tools/node_modules/human-signals": { - "version": "3.0.1", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", + "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", "dev": true, - "license": "Apache-2.0", "engines": { - "node": ">=12.20.0" + "node": ">=18.18.0" } }, "tools/node_modules/is-stream": { - "version": "3.0.0", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, - "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "tools/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "tools/node_modules/npm-run-path": { - "version": "5.1.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, - "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "tools/node_modules/onetime": { - "version": "6.0.0", + "tools/node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "tools/node_modules/pretty-ms": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", "dev": true, - "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "parse-ms": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "tools/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "tools/node_modules/strip-final-newline": { - "version": "3.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "tools/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" diff --git a/packages/build-info/package.json b/packages/build-info/package.json index 943fd21bf7..a5fafbc56e 100644 --- a/packages/build-info/package.json +++ b/packages/build-info/package.json @@ -45,8 +45,8 @@ }, "author": "Netlify Inc.", "dependencies": { - "@iarna/toml": "^2.2.5", "@bugsnag/js": "^7.20.0", + "@iarna/toml": "^2.2.5", "dot-prop": "^7.2.0", "find-up": "^6.3.0", "minimatch": "^9.0.0", @@ -62,7 +62,7 @@ "@types/semver": "^7.3.13", "@vitest/coverage-c8": "^0.33.0", "@vitest/ui": "^0.34.0", - "execa": "^6.0.0", + "execa": "^9.5.2", "memfs": "^3.4.7", "node-fetch": "^3.3.1", "typescript": "^5.0.0", diff --git a/packages/build/package.json b/packages/build/package.json index 92c5c87979..baa2d42649 100644 --- a/packages/build/package.json +++ b/packages/build/package.json @@ -83,7 +83,7 @@ "ansi-escapes": "^6.0.0", "chalk": "^5.0.0", "clean-stack": "^4.0.0", - "execa": "^6.0.0", + "execa": "^9.5.2", "fdir": "^6.0.1", "figures": "^5.0.0", "filter-obj": "^5.0.0", diff --git a/packages/build/src/plugins/spawn.ts b/packages/build/src/plugins/spawn.ts index 75073ad482..33c1c04982 100644 --- a/packages/build/src/plugins/spawn.ts +++ b/packages/build/src/plugins/spawn.ts @@ -3,7 +3,7 @@ import { fileURLToPath, pathToFileURL } from 'url' import { promisify } from 'util' import { trace } from '@opentelemetry/api' -import { ExecaChildProcess, execaNode } from 'execa' +import { type Subprocess, execaNode } from 'execa' import { gte } from 'semver' import { FeatureFlags } from '../core/feature_flags.js' @@ -26,7 +26,7 @@ import { PluginsOptions } from './node_version.js' import { getSpawnInfo } from './options.js' import { captureStandardError } from './system_log.js' -export type ChildProcess = ExecaChildProcess +export type ChildProcess = Subprocess const CHILD_MAIN_FILE = fileURLToPath(new URL('child/main.js', import.meta.url)) const pSetTimeout = promisify(setTimeout) @@ -133,7 +133,6 @@ const startPlugin = async function ({ localDir: pluginDir, nodePath, nodeOptions, - execPath: nodePath, env: { ...childEnv, OTEL_SERVICE_NAME: pluginPackageJson?.name, @@ -175,7 +174,7 @@ export const stopPlugins = async function ({ }: { logs: BufferedLogs verbose: boolean - childProcesses: { childProcess: ExecaChildProcess }[] + childProcesses: { childProcess: Subprocess }[] pluginOptions: PluginsOptions[] netlifyConfig: NetlifyConfig }) { @@ -193,7 +192,7 @@ const stopPlugin = async function ({ netlifyConfig, verbose, }: { - childProcess: ExecaChildProcess + childProcess: Subprocess pluginOptions: PluginsOptions netlifyConfig: NetlifyConfig verbose: boolean diff --git a/packages/build/src/plugins_core/build_command.js b/packages/build/src/plugins_core/build_command.js index f38477910b..65d359708c 100644 --- a/packages/build/src/plugins_core/build_command.js +++ b/packages/build/src/plugins_core/build_command.js @@ -34,7 +34,7 @@ const coreStep = async function ({ shell: SHELL, cwd: buildDir, preferLocal: true, - execPath: nodePath, + nodePath, env: childEnv, extendEnv: false, stdio, diff --git a/packages/build/src/types/options/netlify_plugin_run_util.ts b/packages/build/src/types/options/netlify_plugin_run_util.ts index c4a5650a07..ae57611d22 100644 --- a/packages/build/src/types/options/netlify_plugin_run_util.ts +++ b/packages/build/src/types/options/netlify_plugin_run_util.ts @@ -1,4 +1,4 @@ -import type { Options as ExecaOptions, ExecaChildProcess } from 'execa' +import type { Options as ExecaOptions, ResultPromise } from 'execa' type NetlifyPluginRunUtilOptions = Omit & { /** @@ -7,13 +7,11 @@ type NetlifyPluginRunUtilOptions = Omit & { preferLocal?: ExecaOptions['preferLocal'] } -type NetlifyPluginRunUtilResult = ExecaChildProcess - /** * Run commands and processes * @see https://github.com/netlify/build/blob/master/packages/run-utils/README.md */ export interface NetlifyPluginRunUtil { - (file: string, args?: readonly string[], options?: NetlifyPluginRunUtilOptions): Promise - command(command: string, options?: NetlifyPluginRunUtilOptions): Promise + (file: string, args?: readonly string[], options?: NetlifyPluginRunUtilOptions): ResultPromise + command(command: string, options?: NetlifyPluginRunUtilOptions): ResultPromise } diff --git a/packages/config/package.json b/packages/config/package.json index 571897ba0c..68f1fdbc4e 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -63,7 +63,7 @@ "cron-parser": "^4.1.0", "deepmerge": "^4.2.2", "dot-prop": "^7.0.0", - "execa": "^6.0.0", + "execa": "^9.5.2", "fast-safe-stringify": "^2.0.7", "figures": "^5.0.0", "filter-obj": "^5.0.0", diff --git a/packages/git-utils/package.json b/packages/git-utils/package.json index 435ca48ae0..fc14338120 100644 --- a/packages/git-utils/package.json +++ b/packages/git-utils/package.json @@ -50,7 +50,7 @@ }, "license": "MIT", "dependencies": { - "execa": "^6.0.0", + "execa": "^9.5.2", "map-obj": "^5.0.0", "micromatch": "^4.0.2", "moize": "^6.1.3", diff --git a/packages/run-utils/package.json b/packages/run-utils/package.json index bf3f00f60f..f72ebba7e8 100644 --- a/packages/run-utils/package.json +++ b/packages/run-utils/package.json @@ -50,7 +50,7 @@ }, "license": "MIT", "dependencies": { - "execa": "^6.0.0" + "execa": "^9.5.2" }, "devDependencies": { "@types/node": "^14.18.53", diff --git a/packages/run-utils/src/main.ts b/packages/run-utils/src/main.ts index 098da28bbb..72cd216bd5 100644 --- a/packages/run-utils/src/main.ts +++ b/packages/run-utils/src/main.ts @@ -1,12 +1,12 @@ import process from 'process' -import { execa, ExecaChildProcess, execaCommand, Options } from 'execa' +import { execa, type Subprocess, execaCommand, type Options } from 'execa' /** Allow running local binaries by default */ -const DEFAULT_OPTIONS: Partial> = { preferLocal: true } +const DEFAULT_OPTIONS: Partial = { preferLocal: true } /** Run a command, with arguments being an array */ -export const run = (file: string, args?: string[] | object, options?: Record) => { +export const run = (file: string, args?: string[] | object, options?: Options) => { const [argsA, optionsA] = parseArgs(args, options) const optionsB = { ...DEFAULT_OPTIONS, ...optionsA } const childProcess = execa(file, argsA, optionsB) @@ -15,7 +15,7 @@ export const run = (file: string, args?: string[] | object, options?: Record) => { +export const runCommand = (command: string, options: Options): Subprocess => { const optionsA = { ...DEFAULT_OPTIONS, ...options } const childProcess = execaCommand(command, optionsA) redirectOutput(childProcess, optionsA) @@ -23,7 +23,7 @@ export const runCommand = (command: string, options: Options) => { } /** Both `args` and `options` are optional */ -const parseArgs = function (args, options) { +const parseArgs = function (args, options?: Options) { if (Array.isArray(args)) { return [args, options] } @@ -38,7 +38,7 @@ const parseArgs = function (args, options) { /** * Redirect output by default, unless specified otherwise * */ -const redirectOutput = (childProcess: ExecaChildProcess, options: Options) => { +const redirectOutput = (childProcess: Subprocess, options: Options) => { if (options.stdio !== undefined || options.stdout !== undefined || options.stderr !== undefined) { return } diff --git a/packages/zip-it-and-ship-it/package.json b/packages/zip-it-and-ship-it/package.json index 8e2ef3d2de..fbb073f868 100644 --- a/packages/zip-it-and-ship-it/package.json +++ b/packages/zip-it-and-ship-it/package.json @@ -51,7 +51,7 @@ "cp-file": "^10.0.0", "es-module-lexer": "^1.0.0", "esbuild": "0.19.11", - "execa": "^6.0.0", + "execa": "^9.5.2", "fast-glob": "^3.3.2", "filter-obj": "^5.0.0", "find-up": "^6.0.0", diff --git a/tools/package.json b/tools/package.json index 8bcf16cdeb..873c9e2e06 100644 --- a/tools/package.json +++ b/tools/package.json @@ -8,7 +8,7 @@ "license": "MIT", "devDependencies": { "@types/node": "^14.18.53", - "execa": "^6.1.0", + "execa": "^9.5.2", "globby": "^13.1.2", "typescript": "^5.0.0" } From 5e6550f311b9c1131737f95a4b878c47e3ec60cd Mon Sep 17 00:00:00 2001 From: Philippe Serhal Date: Mon, 9 Dec 2024 17:22:42 -0500 Subject: [PATCH 8/8] chore: enable verbose mode for all execa calls --- ava.base.js | 2 +- packages/build-info/tests/bin.test.ts | 2 +- packages/build/src/core/user_node_version.js | 2 +- packages/build/src/install/main.js | 2 +- packages/build/src/install/missing.js | 2 +- packages/build/src/plugins_core/build_command.js | 1 + packages/build/tests/plugins/fixtures/local_bin/plugin.js | 2 +- .../node_modules/netlify-plugin-contextual-env/index.js | 2 +- packages/config/src/env/git.js | 2 +- packages/config/src/options/branch.js | 5 ++++- packages/edge-bundler/test/util.ts | 2 +- packages/run-utils/src/main.ts | 2 +- packages/testing/src/fixture.ts | 2 +- packages/testing/src/fs.ts | 4 ++-- packages/zip-it-and-ship-it/tests/helpers/main.ts | 4 ++-- packages/zip-it-and-ship-it/tests/main.test.ts | 3 ++- tools/tests-duration.js | 2 +- 17 files changed, 23 insertions(+), 18 deletions(-) diff --git a/ava.base.js b/ava.base.js index b2cac32a6f..5bf45e7db1 100644 --- a/ava.base.js +++ b/ava.base.js @@ -7,7 +7,7 @@ import * as execa from 'execa' const { execaCommand } = execa if (process.argv.includes('-w')) { - execaCommand('tsc -w', { cleanup: true }) + execaCommand('tsc -w', { cleanup: true, verbose: 'full' }) } // `tests-metadata.json` is created by running `npx lerna run test:measure --scope @netlify/build` diff --git a/packages/build-info/tests/bin.test.ts b/packages/build-info/tests/bin.test.ts index 40a3b4bbbe..c7b2f90ebb 100644 --- a/packages/build-info/tests/bin.test.ts +++ b/packages/build-info/tests/bin.test.ts @@ -15,7 +15,7 @@ const runBinary = (...args: string[]) => { return execaNode(binary, args) } const binary = fileURLToPath(new URL('../src/node/bin.ts', import.meta.url)) - return execa('node', ['--loader=ts-node/esm', '--no-warnings', binary, ...args]) + return execa('node', ['--loader=ts-node/esm', '--no-warnings', binary, ...args], { verbose: 'full' }) } test('CLI --help flag', async () => { diff --git a/packages/build/src/core/user_node_version.js b/packages/build/src/core/user_node_version.js index d95b0ce3d0..3472ffc975 100644 --- a/packages/build/src/core/user_node_version.js +++ b/packages/build/src/core/user_node_version.js @@ -28,7 +28,7 @@ export const getUserNodeVersion = async function (nodePath) { } // Fallback to actually running `node --version` with the given nodePath - const { stdout } = await execa(nodePath, ['--version'], { reject: false }) + const { stdout } = await execa(nodePath, ['--version'], { reject: false, verbose: 'full' }) const version = semver.clean(stdout) if (version === null) { diff --git a/packages/build/src/install/main.js b/packages/build/src/install/main.js index 24ee4d3c5c..13617aca9e 100644 --- a/packages/build/src/install/main.js +++ b/packages/build/src/install/main.js @@ -21,7 +21,7 @@ export const addExactDependencies = function ({ packageRoot, isLocal, packages } const runCommand = async function ({ packageRoot, packages = [], isLocal, type }) { try { const [command, ...args] = await getCommand({ packageRoot, type, isLocal }) - await execa(command, [...args, ...packages], { cwd: packageRoot, all: true }) + await execa(command, [...args, ...packages], { cwd: packageRoot, all: true, verbose: 'full' }) } catch (error) { const message = getErrorMessage(error.all) const errorA = new Error(`Error while installing dependencies in ${packageRoot}\n${message}`) diff --git a/packages/build/src/install/missing.js b/packages/build/src/install/missing.js index 45c60b810b..5ebf265672 100644 --- a/packages/build/src/install/missing.js +++ b/packages/build/src/install/missing.js @@ -87,7 +87,7 @@ const getIntegrationPackage = async function ({ const integrationDir = testOpts.cwd ? resolve(testOpts.cwd, path) : resolve(buildDir, path) try { - const res = await execa('npm', ['run', 'build'], { cwd: integrationDir, env: pluginsEnv }) + const res = await execa('npm', ['run', 'build'], { cwd: integrationDir, env: pluginsEnv, verbose: 'full' }) // This is horrible and hacky, but `npm run build` will // return status code 0 even if it fails diff --git a/packages/build/src/plugins_core/build_command.js b/packages/build/src/plugins_core/build_command.js index 65d359708c..fad3caa330 100644 --- a/packages/build/src/plugins_core/build_command.js +++ b/packages/build/src/plugins_core/build_command.js @@ -38,6 +38,7 @@ const coreStep = async function ({ env: childEnv, extendEnv: false, stdio, + verbose: 'full', }) try { diff --git a/packages/build/tests/plugins/fixtures/local_bin/plugin.js b/packages/build/tests/plugins/fixtures/local_bin/plugin.js index 4eeb35c2ba..bac38bf216 100644 --- a/packages/build/tests/plugins/fixtures/local_bin/plugin.js +++ b/packages/build/tests/plugins/fixtures/local_bin/plugin.js @@ -1,5 +1,5 @@ import { execa } from 'execa' export const onPreBuild = async function () { - await execa('atob', ['dGVzdA=='], { stdio: 'inherit' }) + await execa('atob', ['dGVzdA=='], { stdio: 'inherit', verbose: 'full' }) } diff --git a/packages/build/tests/plugins_list/fixtures/plugins_cache_bin/.netlify/plugins/node_modules/netlify-plugin-contextual-env/index.js b/packages/build/tests/plugins_list/fixtures/plugins_cache_bin/.netlify/plugins/node_modules/netlify-plugin-contextual-env/index.js index faf9fbe773..00c3591aca 100644 --- a/packages/build/tests/plugins_list/fixtures/plugins_cache_bin/.netlify/plugins/node_modules/netlify-plugin-contextual-env/index.js +++ b/packages/build/tests/plugins_list/fixtures/plugins_cache_bin/.netlify/plugins/node_modules/netlify-plugin-contextual-env/index.js @@ -1,5 +1,5 @@ import { execa } from 'execa' export const onPreBuild = async function () { - await execa('netlify-config', ['--version'], { stdio:'inherit' }) + await execa('netlify-config', ['--version'], { stdio: 'inherit', verbose: 'full' }) } diff --git a/packages/config/src/env/git.js b/packages/config/src/env/git.js index 20beef53ed..99ac05d2f3 100644 --- a/packages/config/src/env/git.js +++ b/packages/config/src/env/git.js @@ -17,7 +17,7 @@ export const getGitEnv = async function (buildDir, branch) { const git = async function (args, cwd) { try { - const { stdout } = await execa('git', args, { cwd }) + const { stdout } = await execa('git', args, { cwd, verbose: 'full' }) return stdout } catch { // continue regardless error diff --git a/packages/config/src/options/branch.js b/packages/config/src/options/branch.js index cec6cac0af..b11d896f7d 100644 --- a/packages/config/src/options/branch.js +++ b/packages/config/src/options/branch.js @@ -26,7 +26,10 @@ export const getBranch = async function ({ branch, repositoryRoot }) { const getGitBranch = async function (repositoryRoot, gitRef) { try { - const { stdout } = await execaCommand(`git rev-parse --abbrev-ref ${gitRef}`, { cwd: repositoryRoot }) + const { stdout } = await execaCommand(`git rev-parse --abbrev-ref ${gitRef}`, { + cwd: repositoryRoot, + verbose: 'full', + }) return stdout } catch { // continue regardless error diff --git a/packages/edge-bundler/test/util.ts b/packages/edge-bundler/test/util.ts index 2b8d204772..7f068b5e6c 100644 --- a/packages/edge-bundler/test/util.ts +++ b/packages/edge-bundler/test/util.ts @@ -40,7 +40,7 @@ const inspectFunction = (path: string) => ` responses[functionName] = await res.text(); } - + console.log(JSON.stringify(responses)); ` diff --git a/packages/run-utils/src/main.ts b/packages/run-utils/src/main.ts index 72cd216bd5..91688251d9 100644 --- a/packages/run-utils/src/main.ts +++ b/packages/run-utils/src/main.ts @@ -3,7 +3,7 @@ import process from 'process' import { execa, type Subprocess, execaCommand, type Options } from 'execa' /** Allow running local binaries by default */ -const DEFAULT_OPTIONS: Partial = { preferLocal: true } +const DEFAULT_OPTIONS: Partial = { preferLocal: true, verbose: 'full' } /** Run a command, with arguments being an array */ export const run = (file: string, args?: string[] | object, options?: Options) => { diff --git a/packages/testing/src/fixture.ts b/packages/testing/src/fixture.ts index 67cb43429a..ed08d9d02f 100644 --- a/packages/testing/src/fixture.ts +++ b/packages/testing/src/fixture.ts @@ -150,7 +150,7 @@ export class Fixture { await cpy('./**', this.copyRootDir, { cwd: this.repositoryRoot }) if (copyRoot.branch !== undefined) { - await execaCommand(`git checkout -b ${copyRoot.branch}`, { cwd: this.copyRootDir }) + await execaCommand(`git checkout -b ${copyRoot.branch}`, { cwd: this.copyRootDir, verbose: 'full' }) } this.repositoryRoot = this.copyRootDir diff --git a/packages/testing/src/fs.ts b/packages/testing/src/fs.ts index 93d06f1838..6b9beec54d 100644 --- a/packages/testing/src/fs.ts +++ b/packages/testing/src/fs.ts @@ -7,8 +7,8 @@ export const unzipFile = async function (path: string, dest: string): Promise { await mkdir(dest, { recursive: true }) if (platform === 'win32') { - await execa('tar', ['-xf', path, '-C', dest]) + await execa('tar', ['-xf', path, '-C', dest]), { verbose: 'full' } } else { - await execa('unzip', ['-o', path, '-d', dest]) + await execa('unzip', ['-o', path, '-d', dest], { verbose: 'full' }) } } diff --git a/packages/zip-it-and-ship-it/tests/main.test.ts b/packages/zip-it-and-ship-it/tests/main.test.ts index 6c9199b3d2..4fbbf5c482 100644 --- a/packages/zip-it-and-ship-it/tests/main.test.ts +++ b/packages/zip-it-and-ship-it/tests/main.test.ts @@ -656,6 +656,7 @@ describe('zip-it-and-ship-it', () => { await execa('npm', ['install', '--no-package-lock', '--no-audit', '--prefer-offline', '--progress=false'], { cwd: basePath, + verbose: 'full', }) }, 30_000) @@ -1194,7 +1195,7 @@ describe('zip-it-and-ship-it', () => { const fixturePath = join(FIXTURES_DIR, 'esbuild-log-limit') try { - await execa('node', [BINARY_PATH, fixturePath, tmpDir, `--config.*.nodeBundler=esbuild`]) + await execa('node', [BINARY_PATH, fixturePath, tmpDir, `--config.*.nodeBundler=esbuild`], { verbose: 'full' }) expect.fail('Bundling should have thrown') } catch (error) { diff --git a/tools/tests-duration.js b/tools/tests-duration.js index 27443ae468..f462821c37 100755 --- a/tools/tests-duration.js +++ b/tools/tests-duration.js @@ -14,7 +14,7 @@ const measureDurations = async () => { const durations = new Map() for (const testFile of testFiles) { const startTime = performance.now() - const { stdout } = await execa('ava', [testFile], { preferLocal: true, reject: false }) + const { stdout } = await execa('ava', [testFile], { preferLocal: true, reject: false, verbose: 'full' }) console.log(stdout) const endTime = performance.now()