From 6153291a29bef931db7dc0fcd7aed39b8a420d4c Mon Sep 17 00:00:00 2001 From: Paula Stachova Date: Thu, 29 Feb 2024 14:34:01 +0100 Subject: [PATCH] fix: upgrade to node-fetch@3.X MONGOSH-1702 --- configs/tsconfig-mongosh/tsconfig.common.json | 1 + package-lock.json | 414 ++++++++++++------ packages/build/package.json | 3 +- packages/build/src/barque.ts | 2 +- packages/build/src/download-center/config.ts | 2 +- packages/build/src/evergreen/rest-api.ts | 2 +- .../build/src/packaging/download-manpage.ts | 3 + packages/cli-repl/package.json | 2 +- .../src/update-notification-manager.ts | 12 +- packages/e2e-tests/package.json | 2 +- packages/e2e-tests/test/fixtures/curl.js | 2 +- packages/snippet-manager/package.json | 4 +- .../snippet-manager/src/snippet-manager.ts | 12 +- 13 files changed, 316 insertions(+), 145 deletions(-) diff --git a/configs/tsconfig-mongosh/tsconfig.common.json b/configs/tsconfig-mongosh/tsconfig.common.json index 40a63610c..ecca33737 100644 --- a/configs/tsconfig-mongosh/tsconfig.common.json +++ b/configs/tsconfig-mongosh/tsconfig.common.json @@ -2,6 +2,7 @@ "compilerOptions": { "esModuleInterop": true, "downlevelIteration": true, + "skipLibCheck": true, "sourceMap": true, "strict": true, diff --git a/package-lock.json b/package-lock.json index 87b0829b5..949f17e8f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5980,20 +5980,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@lerna/create/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@lerna/create/node_modules/get-stream": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", @@ -7981,21 +7967,6 @@ "node": ">=8" } }, - "node_modules/@nrwl/devkit/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, - "peer": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@nrwl/devkit/node_modules/glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", @@ -8312,20 +8283,6 @@ "node": ">=8" } }, - "node_modules/@nrwl/tao/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@nrwl/tao/node_modules/glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", @@ -10066,13 +10023,13 @@ "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==" }, "node_modules/@types/node-fetch": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz", - "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dev": true, "dependencies": { "@types/node": "*", - "form-data": "^3.0.0" + "form-data": "^4.0.0" } }, "node_modules/@types/normalize-package-data": { @@ -15817,6 +15774,28 @@ "pend": "~1.2.0" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -16122,10 +16101,10 @@ } }, "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "devOptional": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -16143,6 +16122,17 @@ "node": ">=0.4.x" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -20037,20 +20027,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lerna/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/lerna/node_modules/get-stream": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", @@ -23067,6 +23043,24 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-fetch": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", @@ -29465,6 +29459,14 @@ "defaults": "^1.0.3" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "engines": { + "node": ">= 8" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -30836,7 +30838,7 @@ "download": "^8.0.0", "es-aggregate-error": "^1.0.9", "nock": "^13.0.11", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "pkg-up": "^3.1.0", "rimraf": "^3.0.2", "semver": "^7.5.3", @@ -30853,7 +30855,6 @@ "@types/cross-spawn": "^6.0.2", "@types/download": "^8.0.1", "@types/es-aggregate-error": "^1.0.2", - "@types/node-fetch": "^2.6.4", "@types/rimraf": "^3.0.0", "@types/tar": "^4.0.4", "@types/tar-fs": "^2.0.0", @@ -30869,6 +30870,31 @@ "node": ">=14.15.1" } }, + "packages/build/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, + "packages/build/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "packages/build/node_modules/yaml": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", @@ -30933,7 +30959,7 @@ "eslint": "^7.25.0", "mongodb": "^6.3.0", "mongodb-crypt-library-dummy": "^1.0.2", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "prettier": "^2.8.8", "webpack-merge": "^5.8.0" }, @@ -30952,6 +30978,15 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "packages/cli-repl/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, "packages/cli-repl/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -30963,6 +30998,24 @@ "js-yaml": "bin/js-yaml.js" } }, + "packages/cli-repl/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "packages/connectivity-tests": { "name": "@mongosh/connectivity-tests", "version": "0.0.0-dev.0", @@ -30994,7 +31047,7 @@ "lodash": "^4.17.21", "moment": "^2.29.1", "mongodb": "^6.3.0", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "prettier": "^2.8.8", "rimraf": "^3.0.2" }, @@ -31002,6 +31055,33 @@ "node": ">=16.15.0" } }, + "packages/e2e-tests/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "packages/e2e-tests/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "packages/editor": { "name": "@mongosh/editor", "version": "0.0.0-dev.0", @@ -31392,7 +31472,7 @@ "cross-spawn": "^7.0.3", "escape-string-regexp": "^4.0.0", "joi": "^17.4.0", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "tar": "^6.1.15" }, "devDependencies": { @@ -31400,7 +31480,7 @@ "@mongodb-js/prettier-config-devtools": "^1.0.1", "@mongodb-js/tsconfig-mongosh": "^1.0.0", "@types/cross-spawn": "^6.0.2", - "@types/node-fetch": "^2.6.4", + "@types/node-fetch": "^2.6.11", "@types/tar": "^4.0.4", "depcheck": "^1.4.3", "eslint": "^7.25.0", @@ -31411,6 +31491,31 @@ "node": ">=14.15.1" } }, + "packages/snippet-manager/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, + "packages/snippet-manager/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "packages/types": { "name": "@mongosh/types", "version": "0.0.0-dev.0", @@ -36257,17 +36362,6 @@ } } }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "get-stream": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", @@ -37681,7 +37775,6 @@ "@types/cross-spawn": "^6.0.2", "@types/download": "^8.0.1", "@types/es-aggregate-error": "^1.0.2", - "@types/node-fetch": "^2.6.4", "@types/rimraf": "^3.0.0", "@types/tar": "^4.0.4", "@types/tar-fs": "^2.0.0", @@ -37695,7 +37788,7 @@ "es-aggregate-error": "^1.0.9", "eslint": "^7.25.0", "nock": "^13.0.11", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "pkg-up": "^3.1.0", "prettier": "^2.8.8", "rimraf": "^3.0.2", @@ -37707,6 +37800,21 @@ "yaml": "^2.3.1" }, "dependencies": { + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, "yaml": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", @@ -37760,7 +37868,7 @@ "mongodb-crypt-library-dummy": "^1.0.2", "mongodb-crypt-library-version": "^1.0.3", "mongodb-log-writer": "^1.4.0", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "numeral": "^2.0.6", "prettier": "^2.8.8", "pretty-repl": "^4.0.0", @@ -37777,6 +37885,12 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -37784,6 +37898,17 @@ "requires": { "argparse": "^2.0.1" } + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } } } }, @@ -37817,10 +37942,29 @@ "lodash": "^4.17.21", "moment": "^2.29.1", "mongodb": "^6.3.0", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "prettier": "^2.8.8", "rimraf": "^3.0.2", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + } } }, "@mongosh/editor": { @@ -38083,7 +38227,7 @@ "@mongosh/shell-api": "0.0.0-dev.0", "@mongosh/types": "0.0.0-dev.0", "@types/cross-spawn": "^6.0.2", - "@types/node-fetch": "^2.6.4", + "@types/node-fetch": "^2.6.11", "@types/tar": "^4.0.4", "bson": "^6.2.0", "cross-spawn": "^7.0.3", @@ -38092,9 +38236,26 @@ "eslint": "^7.25.0", "joi": "^17.4.0", "nanobus": "^4.5.0", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "prettier": "^2.8.8", "tar": "^6.1.15" + }, + "dependencies": { + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + } } }, "@mongosh/types": { @@ -38419,18 +38580,6 @@ "micromatch": "^4.0.4" } }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, - "peer": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", @@ -38674,17 +38823,6 @@ "micromatch": "^4.0.4" } }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", @@ -40099,13 +40237,13 @@ "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==" }, "@types/node-fetch": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz", - "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dev": true, "requires": { "@types/node": "*", - "form-data": "^3.0.0" + "form-data": "^4.0.0" } }, "@types/normalize-package-data": { @@ -44629,6 +44767,15 @@ "pend": "~1.2.0" } }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, "figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -44860,10 +45007,10 @@ "dev": true }, "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "devOptional": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -44875,6 +45022,14 @@ "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==" }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "requires": { + "fetch-blob": "^3.1.2" + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -47847,17 +48002,6 @@ } } }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "get-stream": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", @@ -50196,6 +50340,11 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + }, "node-fetch": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", @@ -55111,6 +55260,11 @@ "defaults": "^1.0.3" } }, + "web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==" + }, "webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", diff --git a/packages/build/package.json b/packages/build/package.json index 81b175cf9..400953f84 100644 --- a/packages/build/package.json +++ b/packages/build/package.json @@ -47,7 +47,6 @@ "@types/cross-spawn": "^6.0.2", "@types/download": "^8.0.1", "@types/es-aggregate-error": "^1.0.2", - "@types/node-fetch": "^2.6.4", "@types/rimraf": "^3.0.0", "@types/tar": "^4.0.4", "@types/tar-fs": "^2.0.0", @@ -70,7 +69,7 @@ "download": "^8.0.0", "es-aggregate-error": "^1.0.9", "nock": "^13.0.11", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "pkg-up": "^3.1.0", "rimraf": "^3.0.2", "semver": "^7.5.3", diff --git a/packages/build/src/barque.ts b/packages/build/src/barque.ts index 0359620f9..6dd1c6eca 100644 --- a/packages/build/src/barque.ts +++ b/packages/build/src/barque.ts @@ -416,7 +416,7 @@ export class Barque { */ async extractLatestCurator(dest: string): Promise { const response = await fetch(LATEST_CURATOR); - if (response.ok) { + if (response.ok && response.body) { return pipeline(response.body, zlib.createGunzip(), tar.extract(dest)); } } diff --git a/packages/build/src/download-center/config.ts b/packages/build/src/download-center/config.ts index 1a2c54a63..16fd6250a 100644 --- a/packages/build/src/download-center/config.ts +++ b/packages/build/src/download-center/config.ts @@ -290,7 +290,7 @@ async function getHashes( let is4xxError = false; try { const response = await fetch(url); - if (!response.ok) { + if (!response.ok || !response.body) { is4xxError ||= response.status >= 400 && response.status < 500; throw new Error(`unexpected response ${response.statusText} for ${url}`); } diff --git a/packages/build/src/evergreen/rest-api.ts b/packages/build/src/evergreen/rest-api.ts index b564971fb..803526218 100644 --- a/packages/build/src/evergreen/rest-api.ts +++ b/packages/build/src/evergreen/rest-api.ts @@ -95,7 +95,7 @@ export class EvergreenApi { } - ${await response.text()}` ); } - return await response.json(); + return (await response.json()) as T; } private getApiHeaders(): Record { diff --git a/packages/build/src/packaging/download-manpage.ts b/packages/build/src/packaging/download-manpage.ts index ff967d48b..0fa00b63a 100644 --- a/packages/build/src/packaging/download-manpage.ts +++ b/packages/build/src/packaging/download-manpage.ts @@ -13,6 +13,9 @@ export async function downloadManpage( ) { await fs.mkdir(destination, { recursive: true }); const response = await fetch(url); + if (!response.ok || !response.body) { + throw new Error(`Unexpected response while fetching ${url}`); + } await promisify(pipeline)(response.body, tar.x({ cwd: destination })); await promisify(pipeline)( createReadStream(join(destination, basename(name, '.gz'))), diff --git a/packages/cli-repl/package.json b/packages/cli-repl/package.json index 9c090c9eb..919d70d54 100644 --- a/packages/cli-repl/package.json +++ b/packages/cli-repl/package.json @@ -105,7 +105,7 @@ "depcheck": "^1.4.3", "eslint": "^7.25.0", "mongodb-crypt-library-dummy": "^1.0.2", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "prettier": "^2.8.8", "webpack-merge": "^5.8.0" }, diff --git a/packages/cli-repl/src/update-notification-manager.ts b/packages/cli-repl/src/update-notification-manager.ts index 43531cdfb..b9a217331 100644 --- a/packages/cli-repl/src/update-notification-manager.ts +++ b/packages/cli-repl/src/update-notification-manager.ts @@ -95,9 +95,15 @@ export class UpdateNotificationManager { : {}, }); + if (!response.body) { + throw new Error( + `Missing body from ${updateURL}: ${response.status} ${response.statusText}` + ); + } + if (response.status === 304 /* Not Modified, i.e. ETag matched */) { response.body - .on('error', () => { + .once('error', () => { /* ignore response content and errors */ }) .resume(); @@ -112,8 +118,8 @@ export class UpdateNotificationManager { ); } - const jsonContents = await response.json(); - this.latestKnownMongoshVersion = (jsonContents?.versions as any[]) + const jsonContents = (await response.json()) as { versions?: any[] }; + this.latestKnownMongoshVersion = jsonContents?.versions ?.map((v: any) => v.version as string) ?.filter((v) => !semver.prerelease(v)) ?.sort(semver.rcompare)?.[0]; diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index 7c0771633..20129a2aa 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -45,7 +45,7 @@ "lodash": "^4.17.21", "moment": "^2.29.1", "mongodb": "^6.3.0", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "prettier": "^2.8.8", "rimraf": "^3.0.2" } diff --git a/packages/e2e-tests/test/fixtures/curl.js b/packages/e2e-tests/test/fixtures/curl.js index ccb3a14c3..61d72db46 100755 --- a/packages/e2e-tests/test/fixtures/curl.js +++ b/packages/e2e-tests/test/fixtures/curl.js @@ -1,6 +1,6 @@ #!/usr/bin/env node 'use strict'; -const fetch = require('node-fetch'); +import fetch from 'node-fetch'; // fetch() an URL and ignore the response body (async function() { diff --git a/packages/snippet-manager/package.json b/packages/snippet-manager/package.json index 9d3f29405..41eb5aab0 100644 --- a/packages/snippet-manager/package.json +++ b/packages/snippet-manager/package.json @@ -42,7 +42,7 @@ "cross-spawn": "^7.0.3", "escape-string-regexp": "^4.0.0", "joi": "^17.4.0", - "node-fetch": "^2.6.1", + "node-fetch": "^3.3.2", "tar": "^6.1.15" }, "devDependencies": { @@ -50,7 +50,7 @@ "@mongodb-js/prettier-config-devtools": "^1.0.1", "@mongodb-js/tsconfig-mongosh": "^1.0.0", "@types/cross-spawn": "^6.0.2", - "@types/node-fetch": "^2.6.4", + "@types/node-fetch": "^2.6.11", "@types/tar": "^4.0.4", "depcheck": "^1.4.3", "eslint": "^7.25.0", diff --git a/packages/snippet-manager/src/snippet-manager.ts b/packages/snippet-manager/src/snippet-manager.ts index 69cae4db9..f6740a55b 100644 --- a/packages/snippet-manager/src/snippet-manager.ts +++ b/packages/snippet-manager/src/snippet-manager.ts @@ -50,6 +50,12 @@ export interface SnippetIndexFile { sourceURL: string; } +interface NpmMetaDataResponse { + dist?: { + tarball?: string; + }; +} + const indexFileSchema = joi.object({ indexFileVersion: joi.number().integer().max(1).required(), @@ -240,7 +246,9 @@ export class SnippetManager implements ShellPlugin { ); } interrupted.checkpoint(); - const npmTarballURL = (await npmMetadataResponse.json())?.dist?.tarball; + const npmTarballURL = ( + (await npmMetadataResponse.json()) as NpmMetaDataResponse + )?.dist?.tarball; if (!npmTarballURL) { this.messageBus.emit('mongosh-snippets:npm-download-failed', { npmMetadataURL, @@ -253,7 +261,7 @@ export class SnippetManager implements ShellPlugin { interrupted.checkpoint(); await this.print(`Downloading npm from ${npmTarballURL}...`); const npmTarball = await this.fetch(npmTarballURL); - if (!npmTarball.ok) { + if (!npmTarball.ok || !npmTarball.body) { this.messageBus.emit('mongosh-snippets:npm-download-failed', { npmMetadataURL, npmTarballURL,