diff --git a/package-lock.json b/package-lock.json index caaa76bd6e..4e6a4a2671 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12087,6 +12087,25 @@ "node": ">=10" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -23605,6 +23624,7 @@ "chalk": "^4.1.2", "destr": "^1.1.1", "execa": "^5.1.1", + "follow-redirects": "^1.15.2", "fs-extra": "^10.0.0", "globby": "^11.0.4", "merge-stream": "^2.0.0", @@ -26518,6 +26538,7 @@ "chalk": "^4.1.2", "destr": "^1.1.1", "execa": "^5.1.1", + "follow-redirects": "^1.15.2", "fs-extra": "^10.0.0", "globby": "^11.0.4", "merge-stream": "^2.0.0", @@ -32537,6 +32558,11 @@ "tslib": "^2.0.3" } }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 2a580cc0da..c24a4c4d09 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -18,6 +18,7 @@ "chalk": "^4.1.2", "destr": "^1.1.1", "execa": "^5.1.1", + "follow-redirects": "^1.15.2", "fs-extra": "^10.0.0", "globby": "^11.0.4", "merge-stream": "^2.0.0", diff --git a/packages/runtime/src/templates/handlerUtils.ts b/packages/runtime/src/templates/handlerUtils.ts index b877dfbcd7..b68a8b5f30 100644 --- a/packages/runtime/src/templates/handlerUtils.ts +++ b/packages/runtime/src/templates/handlerUtils.ts @@ -1,11 +1,10 @@ import fs, { createWriteStream, existsSync } from 'fs' -import http from 'http' -import https from 'https' import { tmpdir } from 'os' import path from 'path' import { pipeline } from 'stream' import { promisify } from 'util' +import { http, https } from 'follow-redirects' import type NextNodeServer from 'next/dist/server/next-server' export type NextServerType = typeof NextNodeServer @@ -22,7 +21,7 @@ export const downloadFile = async (url: string, destination: string): Promise { - const req = httpx.get(url, { timeout: 10000 }, (response) => { + const req = httpx.get(url, { timeout: 10000, maxRedirects: 1 }, (response) => { if (response.statusCode < 200 || response.statusCode > 299) { reject(new Error(`Failed to download ${url}: ${response.statusCode} ${response.statusMessage || ''}`)) return