diff --git a/package-lock.json b/package-lock.json index 20dd62f9c0..77a4c63872 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2278,6 +2278,24 @@ "node": ">=18" } }, + "node_modules/@mswjs/interceptors": { + "version": "0.38.6", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.38.6.tgz", + "integrity": "sha512-qFlpmObPqeUs4u3oFYv/OM/xyX+pNa5TRAjqjvMhbGYlyMhzSrE5UfncL2rUcEeVfD9Gebgff73hPwqcOwJQNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", @@ -3306,6 +3324,31 @@ "@octokit/openapi-types": "^24.2.0" } }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true, + "license": "MIT" + }, "node_modules/@opentelemetry/api": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", @@ -14794,6 +14837,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "dev": true, + "license": "MIT" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -19563,6 +19613,13 @@ "node": ">=0.10.0" } }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true, + "license": "MIT" + }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -22546,6 +22603,13 @@ "bare-events": "^2.2.0" } }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "dev": true, + "license": "MIT" + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -26668,7 +26732,6 @@ "get-package-name": "^2.2.0", "get-port": "^7.0.0", "is-path-inside": "^4.0.0", - "node-fetch": "^3.1.1", "node-stream-zip": "^1.15.0", "p-retry": "^6.0.0", "p-wait-for": "^5.0.0", @@ -26686,7 +26749,7 @@ "@vitest/coverage-v8": "^0.34.0", "archiver": "^7.0.0", "chalk": "^5.4.0", - "nock": "^13.2.4", + "nock": "^14.0.0", "tar": "^6.1.11", "typescript": "^5.0.0", "vitest": "^0.34.0" @@ -26702,6 +26765,21 @@ "dev": true, "license": "MIT" }, + "packages/edge-bundler/node_modules/nock": { + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.4.tgz", + "integrity": "sha512-86fh+gIKH8H02+y0/HKAOZZXn6OwgzXvl6JYwfjvKkoKxUWz54wIIDU/+w24xzMvk/R8pNVXOrvTubyl+Ml6cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mswjs/interceptors": "^0.38.5", + "json-stringify-safe": "^5.0.1", + "propagate": "^2.0.0" + }, + "engines": { + "node": ">=18.20.0 <20 || >=20.12.1" + } + }, "packages/framework-info": { "name": "@netlify/framework-info", "version": "10.0.4", diff --git a/packages/edge-bundler/node/downloader.ts b/packages/edge-bundler/node/downloader.ts index f9859ad75a..e891022e20 100644 --- a/packages/edge-bundler/node/downloader.ts +++ b/packages/edge-bundler/node/downloader.ts @@ -1,8 +1,8 @@ import { createWriteStream, promises as fs } from 'fs' +import { Readable } from 'node:stream' import path from 'path' import { promisify } from 'util' -import fetch from 'node-fetch' import StreamZip from 'node-stream-zip' import pRetry from 'p-retry' import semver from 'semver' @@ -56,7 +56,7 @@ const downloadVersion = async (versionRange: string) => { throw new Error(`Download failed with status code ${res.status}`) } - return res.body + return Readable.from(res.body) } const extractBinaryFromZip = async (zipPath: string, binaryPath: string, binaryName: string) => { diff --git a/packages/edge-bundler/node/server/server.test.ts b/packages/edge-bundler/node/server/server.test.ts index 53d892b86a..f6554fedd6 100644 --- a/packages/edge-bundler/node/server/server.test.ts +++ b/packages/edge-bundler/node/server/server.test.ts @@ -4,7 +4,6 @@ import { join } from 'path' import process from 'process' import getPort from 'get-port' -import fetch from 'node-fetch' import tmp from 'tmp-promise' import { v4 as uuidv4 } from 'uuid' import { test, expect } from 'vitest' diff --git a/packages/edge-bundler/node/server/util.ts b/packages/edge-bundler/node/server/util.ts index e3c416c634..0e07ac013f 100644 --- a/packages/edge-bundler/node/server/util.ts +++ b/packages/edge-bundler/node/server/util.ts @@ -1,7 +1,6 @@ import { platform } from 'os' import { ExecaChildProcess } from 'execa' -import fetch from 'node-fetch' import waitFor from 'p-wait-for' import { satisfies } from 'semver' diff --git a/packages/edge-bundler/node/types.ts b/packages/edge-bundler/node/types.ts index 9a354abe81..5809d3424a 100644 --- a/packages/edge-bundler/node/types.ts +++ b/packages/edge-bundler/node/types.ts @@ -1,8 +1,6 @@ import { promises as fs } from 'fs' import { join } from 'path' -import fetch from 'node-fetch' - import type { DenoBridge } from './bridge.js' import type { Logger } from './logger.js' diff --git a/packages/edge-bundler/package.json b/packages/edge-bundler/package.json index 9004ad94b2..2dce84af0c 100644 --- a/packages/edge-bundler/package.json +++ b/packages/edge-bundler/package.json @@ -48,7 +48,7 @@ "@vitest/coverage-v8": "^0.34.0", "archiver": "^7.0.0", "chalk": "^5.4.0", - "nock": "^13.2.4", + "nock": "^14.0.0", "tar": "^6.1.11", "typescript": "^5.0.0", "vitest": "^0.34.0" @@ -69,7 +69,6 @@ "get-package-name": "^2.2.0", "get-port": "^7.0.0", "is-path-inside": "^4.0.0", - "node-fetch": "^3.1.1", "node-stream-zip": "^1.15.0", "p-retry": "^6.0.0", "p-wait-for": "^5.0.0",