diff --git a/packages/language-server/package.json b/packages/language-server/package.json index c8058509a..aafc803f1 100644 --- a/packages/language-server/package.json +++ b/packages/language-server/package.json @@ -41,7 +41,7 @@ "fs-extra": "10.1.0", "https-proxy-agent": "5.0.1", "lodash": "4.17.21", - "node-fetch": "2.6.7", + "node-fetch": "3.2.10", "proxy-from-env": "1.1.0", "semver": "7.3.7", "vscode-languageserver": "8.0.2", diff --git a/packages/language-server/src/fetch.ts b/packages/language-server/src/fetch.ts index c2732e50c..36b6a21cb 100644 --- a/packages/language-server/src/fetch.ts +++ b/packages/language-server/src/fetch.ts @@ -1,9 +1,11 @@ -import { - default as nodeFetch, - RequestInfo, - RequestInit, - Response, -} from "node-fetch"; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const importDynamic = new Function("modulePath", "return import(modulePath)"); +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const nodeFetch = async (...args: any[]) => { + const module = await importDynamic("node-fetch"); + return module.default(...args); +}; +import { RequestInfo, RequestInit, Response } from "node-fetch"; import HttpsProxyAgent from "https-proxy-agent"; import { getProxyForUrl } from "proxy-from-env"; diff --git a/test-packages/test-utils/package.json b/test-packages/test-utils/package.json index 49a168a1f..a5dc45c41 100644 --- a/test-packages/test-utils/package.json +++ b/test-packages/test-utils/package.json @@ -14,7 +14,7 @@ "typings": "./api.d.ts", "dependencies": { "https-proxy-agent": "5.0.1", - "node-fetch": "2.6.7", + "node-fetch": "3.2.10", "proxy-from-env": "1.1.0" }, "devDependencies": { diff --git a/test-packages/test-utils/src/utils/download-ui5-resources.ts b/test-packages/test-utils/src/utils/download-ui5-resources.ts index 5b76445b1..d0066a309 100644 --- a/test-packages/test-utils/src/utils/download-ui5-resources.ts +++ b/test-packages/test-utils/src/utils/download-ui5-resources.ts @@ -1,12 +1,13 @@ import { zipObject, map, noop, get } from "lodash"; import { resolve } from "path"; import { writeFile, mkdirs, pathExists } from "fs-extra"; -import { - default as nodeFetch, - RequestInfo, - RequestInit, - Response, -} from "node-fetch"; +const importDynamic = new Function("modulePath", "return import(modulePath)"); +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const nodeFetch = async (...args: any[]) => { + const module = await importDynamic("node-fetch"); + return module.default(...args); +}; +import { RequestInfo, RequestInit, Response } from "node-fetch"; import { HttpsProxyAgent } from "https-proxy-agent"; import { getProxyForUrl } from "proxy-from-env"; diff --git a/yarn.lock b/yarn.lock index 5e2ec9aa5..8f3b42bd1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3326,6 +3326,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b" + integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA== + date-format@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf" @@ -4192,6 +4197,14 @@ fecha@^4.2.0: resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.0.tgz#3ffb6395453e3f3efff850404f0a59b6747f5f41" integrity sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg== +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -4380,6 +4393,13 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -6593,6 +6613,11 @@ nise@^4.0.4: just-extend "^4.0.2" path-to-regexp "^1.7.0" +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + node-fetch-npm@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" @@ -6602,12 +6627,14 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== +node-fetch@3.2.10: + version "3.2.10" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.10.tgz#e8347f94b54ae18b57c9c049ef641cef398a85c8" + integrity sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA== dependencies: - whatwg-url "^5.0.0" + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" node-fetch@^2.3.0, node-fetch@^2.5.0: version "2.6.1" @@ -9230,10 +9257,10 @@ wcwidth@^1.0.0: dependencies: defaults "^1.0.3" -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== +web-streams-polyfill@^3.0.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== webidl-conversions@^4.0.2: version "4.0.2" @@ -9305,14 +9332,6 @@ webpack@5.36.2: watchpack "^2.0.0" webpack-sources "^2.1.1" -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - whatwg-url@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"