Browse Source

Merge pull request #20549 from overleaf/revert-20165-ac-update-node-fetch

Revert "Upgrade node-fetch to 2.7.0"

GitOrigin-RevId: 928df97c6fbc81f21097aaf9c331b0c70eeac002
Antoine Clausse 1 year ago
parent
commit
2179d62d74

+ 1 - 1
libraries/fetch-utils/package.json

@@ -27,7 +27,7 @@
   "dependencies": {
     "@overleaf/o-error": "*",
     "lodash": "^4.17.21",
-    "node-fetch": "^2.7.0",
+    "node-fetch": "^2.6.11",
     "selfsigned": "^2.4.1"
   }
 }

+ 12 - 10
libraries/fetch-utils/test/unit/FetchUtilsTests.js

@@ -1,5 +1,5 @@
 const { expect } = require('chai')
-const { FetchError, AbortError } = require('node-fetch')
+const { FetchError } = require('node-fetch')
 const { Readable } = require('stream')
 const { once } = require('events')
 const { TestServer } = require('./helpers/TestServer')
@@ -15,6 +15,8 @@ const {
   CustomHttpsAgent,
 } = require('../..')
 
+const abortErrorMessage = 'The user aborted a request'
+
 const HTTP_PORT = 30001
 const HTTPS_PORT = 30002
 
@@ -105,7 +107,7 @@ describe('fetch-utils', function () {
     it('supports abort signals', async function () {
       await expect(
         fetchJson(this.url('/hang'), { signal: AbortSignal.timeout(10) })
-      ).to.be.rejectedWith(AbortError)
+      ).to.be.rejectedWith(abortErrorMessage)
       await expectRequestAborted(this.server.lastReq)
     })
 
@@ -146,7 +148,7 @@ describe('fetch-utils', function () {
         body: stream,
       })
       stream.destroy()
-      await expect(promise).to.be.rejectedWith(AbortError)
+      await expect(promise).to.be.rejectedWith(abortErrorMessage)
       await wait(80)
       expect(this.server.lastReq).to.be.undefined
     })
@@ -160,7 +162,7 @@ describe('fetch-utils', function () {
       })
       await once(this.server.events, 'request-received')
       stream.destroy()
-      await expect(promise).to.be.rejectedWith(AbortError)
+      await expect(promise).to.be.rejectedWith(abortErrorMessage)
       await expectRequestAborted(this.server.lastReq)
     })
 
@@ -174,7 +176,7 @@ describe('fetch-utils', function () {
     it('supports abort signals', async function () {
       await expect(
         fetchStream(this.url('/hang'), { signal: AbortSignal.timeout(10) })
-      ).to.be.rejectedWith(AbortError)
+      ).to.be.rejectedWith(abortErrorMessage)
       await expectRequestAborted(this.server.lastReq)
     })
 
@@ -186,7 +188,7 @@ describe('fetch-utils', function () {
           body: stream,
           signal: AbortSignal.timeout(10),
         })
-      ).to.be.rejectedWith(AbortError)
+      ).to.be.rejectedWith(abortErrorMessage)
       expect(stream.destroyed).to.be.true
     })
   })
@@ -204,7 +206,7 @@ describe('fetch-utils', function () {
         body: stream,
       })
       stream.destroy()
-      await expect(promise).to.be.rejectedWith(AbortError)
+      await expect(promise).to.be.rejectedWith(abortErrorMessage)
       expect(this.server.lastReq).to.be.undefined
     })
 
@@ -217,7 +219,7 @@ describe('fetch-utils', function () {
       })
       await once(this.server.events, 'request-received')
       stream.destroy()
-      await expect(promise).to.be.rejectedWith(AbortError)
+      await expect(promise).to.be.rejectedWith(abortErrorMessage)
       await wait(80)
       await expectRequestAborted(this.server.lastReq)
     })
@@ -237,7 +239,7 @@ describe('fetch-utils', function () {
     it('supports abort signals', async function () {
       await expect(
         fetchNothing(this.url('/hang'), { signal: AbortSignal.timeout(10) })
-      ).to.be.rejectedWith(AbortError)
+      ).to.be.rejectedWith(abortErrorMessage)
       await expectRequestAborted(this.server.lastReq)
     })
 
@@ -249,7 +251,7 @@ describe('fetch-utils', function () {
           body: stream,
           signal: AbortSignal.timeout(10),
         })
-      ).to.be.rejectedWith(AbortError)
+      ).to.be.rejectedWith(abortErrorMessage)
       expect(stream.destroyed).to.be.true
     })
   })

+ 356 - 28
package-lock.json

@@ -63,7 +63,7 @@
         "bluebird": "^3.5.3",
         "glob": "^7.1.3",
         "googleapis": "^118.0.0",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "overleaf-editor-core": "*",
         "swagger-client": "^3.8.24",
         "tmp": "0.0.33"
@@ -165,7 +165,7 @@
       "dependencies": {
         "@overleaf/o-error": "*",
         "lodash": "^4.17.21",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.11",
         "selfsigned": "^2.4.1"
       },
       "devDependencies": {
@@ -178,6 +178,44 @@
         "typescript": "^5.0.4"
       }
     },
+    "libraries/fetch-utils/node_modules/node-fetch": {
+      "version": "2.6.12",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
+      "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
+      "dependencies": {
+        "whatwg-url": "^5.0.0"
+      },
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      },
+      "peerDependencies": {
+        "encoding": "^0.1.0"
+      },
+      "peerDependenciesMeta": {
+        "encoding": {
+          "optional": true
+        }
+      }
+    },
+    "libraries/fetch-utils/node_modules/tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+    },
+    "libraries/fetch-utils/node_modules/webidl-conversions": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+    },
+    "libraries/fetch-utils/node_modules/whatwg-url": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+      "dependencies": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
+      }
+    },
     "libraries/logger": {
       "name": "@overleaf/logger",
       "version": "3.1.1",
@@ -5025,6 +5063,44 @@
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
+    "node_modules/@google-cloud/logging-bunyan/node_modules/node-fetch": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+      "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+      "dependencies": {
+        "whatwg-url": "^5.0.0"
+      },
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      },
+      "peerDependencies": {
+        "encoding": "^0.1.0"
+      },
+      "peerDependenciesMeta": {
+        "encoding": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@google-cloud/logging-bunyan/node_modules/tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+    },
+    "node_modules/@google-cloud/logging-bunyan/node_modules/webidl-conversions": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+    },
+    "node_modules/@google-cloud/logging-bunyan/node_modules/whatwg-url": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+      "dependencies": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
+      }
+    },
     "node_modules/@google-cloud/logging-bunyan/node_modules/yallist": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -5420,6 +5496,25 @@
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
+    "node_modules/@google-cloud/logging/node_modules/node-fetch": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+      "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+      "dependencies": {
+        "whatwg-url": "^5.0.0"
+      },
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      },
+      "peerDependencies": {
+        "encoding": "^0.1.0"
+      },
+      "peerDependenciesMeta": {
+        "encoding": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@google-cloud/logging/node_modules/retry-request": {
       "version": "7.0.2",
       "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz",
@@ -5448,6 +5543,11 @@
         "node": ">=14"
       }
     },
+    "node_modules/@google-cloud/logging/node_modules/tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+    },
     "node_modules/@google-cloud/logging/node_modules/uuid": {
       "version": "9.0.1",
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
@@ -5460,6 +5560,20 @@
         "uuid": "dist/bin/uuid"
       }
     },
+    "node_modules/@google-cloud/logging/node_modules/webidl-conversions": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+    },
+    "node_modules/@google-cloud/logging/node_modules/whatwg-url": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+      "dependencies": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
+      }
+    },
     "node_modules/@google-cloud/opentelemetry-cloud-trace-exporter": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/@google-cloud/opentelemetry-cloud-trace-exporter/-/opentelemetry-cloud-trace-exporter-2.1.0.tgz",
@@ -5700,6 +5814,25 @@
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
+    "node_modules/@google-cloud/profiler/node_modules/node-fetch": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+      "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+      "dependencies": {
+        "whatwg-url": "^5.0.0"
+      },
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      },
+      "peerDependencies": {
+        "encoding": "^0.1.0"
+      },
+      "peerDependenciesMeta": {
+        "encoding": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@google-cloud/profiler/node_modules/retry-request": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-6.0.0.tgz",
@@ -5741,6 +5874,11 @@
         "node": ">=14"
       }
     },
+    "node_modules/@google-cloud/profiler/node_modules/tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+    },
     "node_modules/@google-cloud/profiler/node_modules/uuid": {
       "version": "9.0.1",
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
@@ -5753,6 +5891,20 @@
         "uuid": "dist/bin/uuid"
       }
     },
+    "node_modules/@google-cloud/profiler/node_modules/webidl-conversions": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+    },
+    "node_modules/@google-cloud/profiler/node_modules/whatwg-url": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+      "dependencies": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
+      }
+    },
     "node_modules/@google-cloud/profiler/node_modules/yallist": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -18340,11 +18492,11 @@
       "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
     },
     "node_modules/cross-fetch": {
-      "version": "3.1.8",
-      "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz",
-      "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+      "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
       "dependencies": {
-        "node-fetch": "^2.6.12"
+        "node-fetch": "2.6.7"
       }
     },
     "node_modules/cross-spawn": {
@@ -24019,6 +24171,25 @@
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
+    "node_modules/google-gax/node_modules/node-fetch": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+      "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+      "dependencies": {
+        "whatwg-url": "^5.0.0"
+      },
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      },
+      "peerDependencies": {
+        "encoding": "^0.1.0"
+      },
+      "peerDependenciesMeta": {
+        "encoding": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/google-gax/node_modules/object-hash": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
@@ -24112,6 +24283,11 @@
         "node": ">= 6"
       }
     },
+    "node_modules/google-gax/node_modules/tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+    },
     "node_modules/google-gax/node_modules/uuid": {
       "version": "9.0.1",
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
@@ -24124,6 +24300,20 @@
         "uuid": "dist/bin/uuid"
       }
     },
+    "node_modules/google-gax/node_modules/webidl-conversions": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+    },
+    "node_modules/google-gax/node_modules/whatwg-url": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+      "dependencies": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
+      }
+    },
     "node_modules/google-p12-pem": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.3.tgz",
@@ -30156,9 +30346,9 @@
       }
     },
     "node_modules/node-fetch": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
-      "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+      "version": "2.6.7",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+      "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
       "dependencies": {
         "whatwg-url": "^5.0.0"
       },
@@ -41860,7 +42050,7 @@
         "chai-as-promised": "^7.1.1",
         "mocha": "^10.2.0",
         "mock-fs": "^5.1.2",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "sandboxed-module": "^2.0.4",
         "sinon": "~9.0.1",
         "sinon-chai": "^3.7.0",
@@ -42187,7 +42377,7 @@
         "express": "^4.19.2",
         "glob": "^7.1.6",
         "lodash.once": "^4.1.1",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "range-parser": "^1.2.1",
         "tiny-async-pool": "^1.1.0"
       },
@@ -42427,7 +42617,7 @@
         "chai": "^4.3.6",
         "chai-as-promised": "^7.1.1",
         "mocha": "^10.2.0",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "sinon": "^9.0.2",
         "swagger-client": "^3.10.0",
         "typescript": "^5.0.4",
@@ -43789,7 +43979,7 @@
         "minimatch": "^7.4.2",
         "minimist": "^1.2.8",
         "mongodb-legacy": "^6.0.1",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "p-limit": "^2.3.0"
       },
       "devDependencies": {
@@ -44107,7 +44297,7 @@
         "mongoose": "^7.8.0",
         "multer": "overleaf/multer#e1df247fbf8e7590520d20ae3601eaef9f3d2e9e",
         "nocache": "^2.1.0",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "nodemailer": "^6.7.0",
         "nodemailer-ses-transport": "^1.5.1",
         "on-headers": "^1.0.2",
@@ -44286,6 +44476,7 @@
         "mocha": "^10.2.0",
         "mocha-each": "^2.0.1",
         "mock-fs": "^5.1.2",
+        "node-fetch": "^2.6.7",
         "nvd3": "^1.8.6",
         "overleaf-editor-core": "*",
         "pdfjs-dist213": "npm:pdfjs-dist@2.13.216",
@@ -48890,6 +49081,14 @@
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
           "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
         },
+        "node-fetch": {
+          "version": "2.7.0",
+          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+          "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+          "requires": {
+            "whatwg-url": "^5.0.0"
+          }
+        },
         "retry-request": {
           "version": "7.0.2",
           "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz",
@@ -48912,10 +49111,29 @@
             "uuid": "^9.0.0"
           }
         },
+        "tr46": {
+          "version": "0.0.3",
+          "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+          "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+        },
         "uuid": {
           "version": "9.0.1",
           "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
           "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
+        },
+        "webidl-conversions": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+          "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+        },
+        "whatwg-url": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+          "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+          "requires": {
+            "tr46": "~0.0.3",
+            "webidl-conversions": "^3.0.0"
+          }
         }
       }
     },
@@ -49009,6 +49227,33 @@
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
           "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
         },
+        "node-fetch": {
+          "version": "2.7.0",
+          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+          "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+          "requires": {
+            "whatwg-url": "^5.0.0"
+          }
+        },
+        "tr46": {
+          "version": "0.0.3",
+          "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+          "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+        },
+        "webidl-conversions": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+          "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+        },
+        "whatwg-url": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+          "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+          "requires": {
+            "tr46": "~0.0.3",
+            "webidl-conversions": "^3.0.0"
+          }
+        },
         "yallist": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -49378,6 +49623,14 @@
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
           "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
         },
+        "node-fetch": {
+          "version": "2.7.0",
+          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+          "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+          "requires": {
+            "whatwg-url": "^5.0.0"
+          }
+        },
         "retry-request": {
           "version": "6.0.0",
           "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-6.0.0.tgz",
@@ -49407,11 +49660,30 @@
             "uuid": "^9.0.0"
           }
         },
+        "tr46": {
+          "version": "0.0.3",
+          "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+          "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+        },
         "uuid": {
           "version": "9.0.1",
           "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
           "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
         },
+        "webidl-conversions": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+          "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+        },
+        "whatwg-url": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+          "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+          "requires": {
+            "tr46": "~0.0.3",
+            "webidl-conversions": "^3.0.0"
+          }
+        },
         "yallist": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -51484,7 +51756,7 @@
         "lodash": "^4.17.21",
         "mocha": "^10.2.0",
         "mock-fs": "^5.1.2",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "p-limit": "^3.1.0",
         "request": "^2.88.2",
         "sandboxed-module": "^2.0.4",
@@ -51783,9 +52055,38 @@
         "express": "^4.19.2",
         "lodash": "^4.17.21",
         "mocha": "^10.2.0",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.11",
         "selfsigned": "^2.4.1",
         "typescript": "^5.0.4"
+      },
+      "dependencies": {
+        "node-fetch": {
+          "version": "2.6.12",
+          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
+          "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
+          "requires": {
+            "whatwg-url": "^5.0.0"
+          }
+        },
+        "tr46": {
+          "version": "0.0.3",
+          "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+          "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+        },
+        "webidl-conversions": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+          "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+        },
+        "whatwg-url": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+          "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+          "requires": {
+            "tr46": "~0.0.3",
+            "webidl-conversions": "^3.0.0"
+          }
+        }
       }
     },
     "@overleaf/filestore": {
@@ -51809,7 +52110,7 @@
         "lodash.once": "^4.1.1",
         "mocha": "^10.2.0",
         "mongodb": "^6.1.0",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "range-parser": "^1.2.1",
         "sandboxed-module": "2.0.4",
         "sinon": "9.0.2",
@@ -52376,7 +52677,7 @@
         "minimist": "^1.2.8",
         "mocha": "^10.2.0",
         "mongodb-legacy": "^6.0.1",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "p-limit": "^2.3.0",
         "sandboxed-module": "^2.0.4",
         "sinon": "9.0.1",
@@ -52758,7 +53059,7 @@
         "mongoose": "^7.8.0",
         "multer": "overleaf/multer#e1df247fbf8e7590520d20ae3601eaef9f3d2e9e",
         "nocache": "^2.1.0",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "nodemailer": "^6.7.0",
         "nodemailer-ses-transport": "^1.5.1",
         "nvd3": "^1.8.6",
@@ -61488,11 +61789,11 @@
       }
     },
     "cross-fetch": {
-      "version": "3.1.8",
-      "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz",
-      "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+      "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
       "requires": {
-        "node-fetch": "^2.6.12"
+        "node-fetch": "2.6.7"
       }
     },
     "cross-spawn": {
@@ -65773,6 +66074,14 @@
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
           "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
         },
+        "node-fetch": {
+          "version": "2.7.0",
+          "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+          "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+          "requires": {
+            "whatwg-url": "^5.0.0"
+          }
+        },
         "object-hash": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
@@ -65846,10 +66155,29 @@
             }
           }
         },
+        "tr46": {
+          "version": "0.0.3",
+          "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+          "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+        },
         "uuid": {
           "version": "9.0.1",
           "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
           "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
+        },
+        "webidl-conversions": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+          "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+        },
+        "whatwg-url": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+          "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+          "requires": {
+            "tr46": "~0.0.3",
+            "webidl-conversions": "^3.0.0"
+          }
         }
       }
     },
@@ -70565,7 +70893,7 @@
         "bluebird": "^3.5.3",
         "glob": "^7.1.3",
         "googleapis": "^118.0.0",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "overleaf-editor-core": "*",
         "swagger-client": "^3.8.24",
         "tmp": "0.0.33"
@@ -71124,9 +71452,9 @@
       "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="
     },
     "node-fetch": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
-      "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+      "version": "2.6.7",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+      "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
       "requires": {
         "whatwg-url": "^5.0.0"
       },
@@ -71784,7 +72112,7 @@
         "lodash": "^4.17.19",
         "mocha": "^10.2.0",
         "mongodb": "^6.2.0",
-        "node-fetch": "^2.7.0",
+        "node-fetch": "^2.6.7",
         "overleaf-editor-core": "*",
         "pg": "^8.7.1",
         "sinon": "^9.0.2",

+ 11 - 11
patches/node-fetch+2.7.0.patch → patches/node-fetch+2.6.7.patch

@@ -1,5 +1,5 @@
 diff --git a/node_modules/node-fetch/lib/index.js b/node_modules/node-fetch/lib/index.js
-index 567ff5d..8eb45f7 100644
+index e5b04f1..8c80924 100644
 --- a/node_modules/node-fetch/lib/index.js
 +++ b/node_modules/node-fetch/lib/index.js
 @@ -545,8 +545,8 @@ function clone(instance) {
@@ -30,47 +30,47 @@ index 567ff5d..8eb45f7 100644
  	}
  }
  
-@@ -1638,7 +1638,7 @@ function fetch(url, opts) {
+@@ -1594,7 +1594,7 @@ function fetch(url, opts) {
  			res.once('end', function () {
  				if (signal) signal.removeEventListener('abort', abortAndFinalize);
  			});
 -			let body = res.pipe(new PassThrough$1());
-+			let body = Stream.pipeline(res, new PassThrough(), error => { if (error) reject(error); });
++			let body = new PassThrough$1(); setTimeout(() => Stream.pipeline(res, body, (err) => { if (err) req.abort() }), 0); // Note: let the call-site attach event handler to "body" before we start streaming. 
  
  			const response_options = {
  				url: request.url,
-@@ -1679,7 +1679,7 @@ function fetch(url, opts) {
+@@ -1635,7 +1635,7 @@ function fetch(url, opts) {
  
  			// for gzip
  			if (codings == 'gzip' || codings == 'x-gzip') {
 -				body = body.pipe(zlib.createGunzip(zlibOptions));
-+				body = Stream.pipeline(body, zlib.createGunzip(zlibOptions), error => { if (error) reject(error); });
++				const bodyGzip = zlib.createGunzip(zlibOptions); Stream.pipeline(body, bodyGzip, () => {}); body = bodyGzip;
  				response = new Response(body, response_options);
  				resolve(response);
  				return;
-@@ -1689,13 +1689,13 @@ function fetch(url, opts) {
+@@ -1645,13 +1645,13 @@ function fetch(url, opts) {
  			if (codings == 'deflate' || codings == 'x-deflate') {
  				// handle the infamous raw deflate response from old servers
  				// a hack for old IIS and Apache servers
 -				const raw = res.pipe(new PassThrough$1());
-+				const raw = Stream.pipeline(res, new PassThrough(), error => { if (error) reject(error); });
++				const raw = new PassThrough$1(); setTimeout(() => Stream.pipeline(res, raw, () => {}), 0); // Note: delay piping into "raw" until we start piping into "body". 
  				raw.once('data', function (chunk) {
  					// see http://stackoverflow.com/questions/37519828
  					if ((chunk[0] & 0x0F) === 0x08) {
 -						body = body.pipe(zlib.createInflate());
-+						body = Stream.pipeline(body, zlib.createInflate(), error => { if (error) reject(error); });
++						const bodyDeflate = zlib.createInflate(); Stream.pipeline(body, bodyDeflate, () => {}); body = bodyDeflate;
  					} else {
 -						body = body.pipe(zlib.createInflateRaw());
-+						body = Stream.pipeline(body, zlib.createInflateRaw(), error => { if (error) reject(error); });
++						const bodyDeflate = zlib.createInflateRaw(); Stream.pipeline(body, bodyDeflate, () => {}); body = bodyDeflate;
  					}
  					response = new Response(body, response_options);
  					resolve(response);
-@@ -1712,7 +1712,7 @@ function fetch(url, opts) {
+@@ -1661,7 +1661,7 @@ function fetch(url, opts) {
  
  			// for br
  			if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
 -				body = body.pipe(zlib.createBrotliDecompress());
-+				body = Stream.pipeline(body, zlib.createBrotliDecompress(), error => { if (error) reject(error); });
++				const bodyBrotli = zlib.createBrotliDecompress(); Stream.pipeline(body, bodyBrotli, () => {}); body = bodyBrotli;
  				response = new Response(body, response_options);
  				resolve(response);
  				return;

+ 1 - 1
services/clsi/package.json

@@ -42,7 +42,7 @@
     "chai-as-promised": "^7.1.1",
     "mocha": "^10.2.0",
     "mock-fs": "^5.1.2",
-    "node-fetch": "^2.7.0",
+    "node-fetch": "^2.6.7",
     "sandboxed-module": "^2.0.4",
     "sinon": "~9.0.1",
     "sinon-chai": "^3.7.0",

+ 1 - 1
services/filestore/package.json

@@ -30,7 +30,7 @@
     "express": "^4.19.2",
     "glob": "^7.1.6",
     "lodash.once": "^4.1.1",
-    "node-fetch": "^2.7.0",
+    "node-fetch": "^2.6.7",
     "range-parser": "^1.2.1",
     "tiny-async-pool": "^1.1.0"
   },

+ 1 - 1
services/history-v1/package.json

@@ -43,7 +43,7 @@
     "chai": "^4.3.6",
     "chai-as-promised": "^7.1.1",
     "mocha": "^10.2.0",
-    "node-fetch": "^2.7.0",
+    "node-fetch": "^2.6.7",
     "sinon": "^9.0.2",
     "swagger-client": "^3.10.0",
     "typescript": "^5.0.4",

+ 2 - 1
services/web/package.json

@@ -141,7 +141,7 @@
     "mongoose": "^7.8.0",
     "multer": "overleaf/multer#e1df247fbf8e7590520d20ae3601eaef9f3d2e9e",
     "nocache": "^2.1.0",
-    "node-fetch": "^2.7.0",
+    "node-fetch": "^2.6.7",
     "nodemailer": "^6.7.0",
     "nodemailer-ses-transport": "^1.5.1",
     "on-headers": "^1.0.2",
@@ -320,6 +320,7 @@
     "mocha": "^10.2.0",
     "mocha-each": "^2.0.1",
     "mock-fs": "^5.1.2",
+    "node-fetch": "^2.6.7",
     "nvd3": "^1.8.6",
     "overleaf-editor-core": "*",
     "pdfjs-dist213": "npm:pdfjs-dist@2.13.216",

+ 8 - 8
services/web/scripts/translations/package-lock.json

@@ -6,8 +6,8 @@
     "": {
       "dependencies": {
         "@brainly/onesky-utils": "https://github.com/overleaf/nodejs-onesky-utils/archive/main.tar.gz",
-        "node-fetch": "^2.7.0",
-        "sanitize-html": "^2.12.1",
+        "node-fetch": "^2.6.7",
+        "sanitize-html": "^2.7.0",
         "yargs": "^17.7.2"
       }
     },
@@ -524,9 +524,9 @@
       }
     },
     "node_modules/node-fetch": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
-      "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+      "version": "2.6.7",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+      "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
       "dependencies": {
         "whatwg-url": "^5.0.0"
       },
@@ -1291,9 +1291,9 @@
       "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
     },
     "node-fetch": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
-      "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+      "version": "2.6.7",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+      "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
       "requires": {
         "whatwg-url": "^5.0.0"
       }

+ 1 - 1
services/web/scripts/translations/package.json

@@ -1,7 +1,7 @@
 {
   "dependencies": {
     "@brainly/onesky-utils": "https://github.com/overleaf/nodejs-onesky-utils/archive/main.tar.gz",
-    "node-fetch": "^2.7.0",
+    "node-fetch": "^2.6.7",
     "sanitize-html": "^2.12.1",
     "yargs": "^17.7.2"
   }