From d4efd92ab765e61997bfee78220d98810e4bc1ad Mon Sep 17 00:00:00 2001 From: Kara Brightwell Date: Wed, 1 May 2024 11:18:03 +0100 Subject: [PATCH 1/2] fix: make FetchResponse type compatible with a native Response object --- packages/fetch-error-handler/lib/create-handler.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/fetch-error-handler/lib/create-handler.js b/packages/fetch-error-handler/lib/create-handler.js index d29e9fb6..7432a9a5 100644 --- a/packages/fetch-error-handler/lib/create-handler.js +++ b/packages/fetch-error-handler/lib/create-handler.js @@ -12,7 +12,7 @@ const { Writable } = require('node:stream'); */ /** - * @typedef {object} FetchResponseBody + * @typedef {object} NodeFetchResponseBody * @property {(stream: Writable) => void} [pipe] * A function to pipe a response body stream. */ @@ -25,7 +25,7 @@ const { Writable } = require('node:stream'); * The response HTTP status code. * @property {string} url * The URL of the response. - * @property {FetchResponseBody} body + * @property {NodeFetchResponseBody | ReadableStream | null} body * A representation of the response body. */ @@ -205,6 +205,8 @@ function createFetchErrorHandler(options = {}) { // body so we don't introduce a memory leak. if ( isFetchResponse(response) && + response.body && + 'pipe' in response.body && typeof response.body.pipe === 'function' ) { response.body.pipe(new BlackHoleStream()); From 303fc6e2a300bebc3d4e58abaafa1e1190888e95 Mon Sep 17 00:00:00 2001 From: Rowan Manning <138944+rowanmanning@users.noreply.github.com> Date: Wed, 1 May 2024 11:35:06 +0100 Subject: [PATCH 2/2] fix: install @types/node This is why we've missed a few type errors. --- jsconfig.json | 1 + package-lock.json | 15 ++++++++++++--- package.json | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/jsconfig.json b/jsconfig.json index 37ab41ec..c307895b 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -2,6 +2,7 @@ "compilerOptions": { "alwaysStrict": true, "checkJs": true, + "maxNodeModuleJsDepth": 0, "module": "commonjs", "noEmit": true, "noImplicitOverride": true, diff --git a/package-lock.json b/package-lock.json index cf939bba..839f0f5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ "@commitlint/config-conventional": "^19.1.0", "@financial-times/eslint-config-next": "^7.1.0", "@types/jest": "^29.5.12", + "@types/node": "^20.12.7", "eslint": "^8.57.0", "eslint-plugin-jsdoc": "^48.2.1", "eslint-plugin-prettier": "^5.1.3", @@ -4873,9 +4874,12 @@ } }, "node_modules/@types/node": { - "version": "20.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", - "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==" + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -12303,6 +12307,11 @@ "node": ">=18.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/unicorn-magic": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", diff --git a/package.json b/package.json index 3466bae8..2b9dc21b 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "@commitlint/config-conventional": "^19.1.0", "@financial-times/eslint-config-next": "^7.1.0", "@types/jest": "^29.5.12", + "@types/node": "^20.12.7", "eslint": "^8.57.0", "eslint-plugin-jsdoc": "^48.2.1", "eslint-plugin-prettier": "^5.1.3",