diff --git a/package-lock.json b/package-lock.json index e618943..d4c2946 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@types/aws-lambda": "^8.10.92", "@types/cookie": "^0.4.1", "@types/fs-extra": "^9.0.13", - "@types/node": "^17.0.14", + "@types/node": "^18.15.12", "aws-sdk": "^2.1354.0", "html-loader": "^3.1.0", "prettier": "^2.5.1", @@ -173,9 +173,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "version": "18.15.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.12.tgz", + "integrity": "sha512-Wha1UwsB3CYdqUm2PPzh/1gujGCNtWVUYF0mB00fJFoR4gTyWTDPjSm+zBF787Ahw8vSGgBja90MkgFwvB86Dg==", "dev": true }, "node_modules/@webassemblyjs/ast": { @@ -2761,9 +2761,9 @@ "dev": true }, "@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "version": "18.15.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.12.tgz", + "integrity": "sha512-Wha1UwsB3CYdqUm2PPzh/1gujGCNtWVUYF0mB00fJFoR4gTyWTDPjSm+zBF787Ahw8vSGgBja90MkgFwvB86Dg==", "dev": true }, "@webassemblyjs/ast": { diff --git a/package.json b/package.json index f93cbda..10b0b5b 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@types/aws-lambda": "^8.10.92", "@types/cookie": "^0.4.1", "@types/fs-extra": "^9.0.13", - "@types/node": "^17.0.14", + "@types/node": "^18.15.12", "aws-sdk": "^2.1354.0", "html-loader": "^3.1.0", "prettier": "^2.5.1", diff --git a/src/lambda-edge/shared/https.ts b/src/lambda-edge/shared/https.ts index 5da05bc..5a605a3 100644 --- a/src/lambda-edge/shared/https.ts +++ b/src/lambda-edge/shared/https.ts @@ -5,6 +5,8 @@ import { IncomingHttpHeaders } from "http"; import { request, RequestOptions } from "https"; import { Writable, pipeline } from "stream"; +const DEFAULT_REQUEST_TIMEOUT = 4000; // 4 seconds + export async function fetch( uri: string, data?: Buffer, @@ -15,7 +17,12 @@ export async function fetch( headers: IncomingHttpHeaders; data: Buffer; }>((resolve, reject) => { - const req = request(uri, options ?? {}, (res) => + const requestOptions = { + signal: AbortSignal.timeout(DEFAULT_REQUEST_TIMEOUT), + ...(options ?? {}), + }; + + const req = request(uri, requestOptions, (res) => pipeline( [ res,