فهرست منبع

Merge pull request #10686 from overleaf/jpa-upgrade-multer

[web] upgrade multer

GitOrigin-RevId: 4f43c783733f495eaed4df16ae9c9fc5b1186254
Jakob Ackermann 3 سال پیش
والد
کامیت
db4d5f2522
4فایلهای تغییر یافته به همراه77 افزوده شده و 327 حذف شده
  1. 61 320
      package-lock.json
  2. 12 6
      services/web/app/src/Features/Uploads/ProjectUploadController.js
  3. 3 0
      services/web/config/settings.defaults.js
  4. 1 1
      services/web/package.json

+ 61 - 320
package-lock.json

@@ -623,12 +623,6 @@
         "node": ">=4"
         "node": ">=4"
       }
       }
     },
     },
-    "libraries/overleaf-editor-core/node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-      "dev": true
-    },
     "libraries/overleaf-editor-core/node_modules/mkdirp": {
     "libraries/overleaf-editor-core/node_modules/mkdirp": {
       "version": "0.5.4",
       "version": "0.5.4",
       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
@@ -13514,11 +13508,6 @@
         "json5": "lib/cli.js"
         "json5": "lib/cli.js"
       }
       }
     },
     },
-    "node_modules/config/node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-    },
     "node_modules/configstore": {
     "node_modules/configstore": {
       "version": "5.0.1",
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
       "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
@@ -14191,11 +14180,6 @@
         "node": ">= 10"
         "node": ">= 10"
       }
       }
     },
     },
-    "node_modules/csv-parser/node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-    },
     "node_modules/csv-stringify": {
     "node_modules/csv-stringify": {
       "version": "5.6.5",
       "version": "5.6.5",
       "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz",
       "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz",
@@ -14428,12 +14412,6 @@
         "node": ">=10"
         "node": ">=10"
       }
       }
     },
     },
-    "node_modules/cypress/node_modules/minimist": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
-      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
-      "dev": true
-    },
     "node_modules/cypress/node_modules/semver": {
     "node_modules/cypress/node_modules/semver": {
       "version": "7.3.5",
       "version": "7.3.5",
       "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
       "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
@@ -19863,11 +19841,6 @@
         "node": ">=4.0.0"
         "node": ">=4.0.0"
       }
       }
     },
     },
-    "node_modules/handlebars/node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-    },
     "node_modules/handlebars/node_modules/source-map": {
     "node_modules/handlebars/node_modules/source-map": {
       "version": "0.6.1",
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -20134,14 +20107,6 @@
         "node": ">= 0.10.x"
         "node": ">= 0.10.x"
       }
       }
     },
     },
-    "node_modules/hexer/node_modules/minimist": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
     "node_modules/hexer/node_modules/process": {
     "node_modules/hexer/node_modules/process": {
       "version": "0.10.1",
       "version": "0.10.1",
       "resolved": "https://registry.npmjs.org/process/-/process-0.10.1.tgz",
       "resolved": "https://registry.npmjs.org/process/-/process-0.10.1.tgz",
@@ -22484,11 +22449,6 @@
         "node": ">=6"
         "node": ">=6"
       }
       }
     },
     },
-    "node_modules/json5/node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-    },
     "node_modules/jsonfile": {
     "node_modules/jsonfile": {
       "version": "6.1.0",
       "version": "6.1.0",
       "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
       "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -22783,12 +22743,6 @@
         "node": ">=4"
         "node": ">=4"
       }
       }
     },
     },
-    "node_modules/karma-mocha/node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-      "dev": true
-    },
     "node_modules/karma-requirejs": {
     "node_modules/karma-requirejs": {
       "version": "1.1.0",
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/karma-requirejs/-/karma-requirejs-1.1.0.tgz",
       "resolved": "https://registry.npmjs.org/karma-requirejs/-/karma-requirejs-1.1.0.tgz",
@@ -22808,24 +22762,6 @@
         "node": "^4.5.0 || >= 5.9"
         "node": "^4.5.0 || >= 5.9"
       }
       }
     },
     },
-    "node_modules/karma/node_modules/minimist": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
-      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
-      "dev": true
-    },
-    "node_modules/karma/node_modules/mkdirp": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
-      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
-      "dev": true,
-      "dependencies": {
-        "minimist": "^1.2.6"
-      },
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      }
-    },
     "node_modules/karma/node_modules/rimraf": {
     "node_modules/karma/node_modules/rimraf": {
       "version": "3.0.2",
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -24322,11 +24258,6 @@
         "minipass": "^2.6.0"
         "minipass": "^2.6.0"
       }
       }
     },
     },
-    "node_modules/mailchimp-api-v3/node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-    },
     "node_modules/mailchimp-api-v3/node_modules/minipass": {
     "node_modules/mailchimp-api-v3/node_modules/minipass": {
       "version": "2.9.0",
       "version": "2.9.0",
       "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
       "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
@@ -24344,17 +24275,6 @@
         "minipass": "^2.9.0"
         "minipass": "^2.9.0"
       }
       }
     },
     },
-    "node_modules/mailchimp-api-v3/node_modules/mkdirp": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-      "dependencies": {
-        "minimist": "^1.2.5"
-      },
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      }
-    },
     "node_modules/mailchimp-api-v3/node_modules/safe-buffer": {
     "node_modules/mailchimp-api-v3/node_modules/safe-buffer": {
       "version": "5.2.1",
       "version": "5.2.1",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -24562,12 +24482,6 @@
       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
       "dev": true
       "dev": true
     },
     },
-    "node_modules/markdown-toc/node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-      "dev": true
-    },
     "node_modules/markdown-toc/node_modules/readable-stream": {
     "node_modules/markdown-toc/node_modules/readable-stream": {
       "version": "2.3.7",
       "version": "2.3.7",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
@@ -24887,9 +24801,12 @@
       }
       }
     },
     },
     "node_modules/minimist": {
     "node_modules/minimist": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
+      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
     },
     },
     "node_modules/minipass": {
     "node_modules/minipass": {
       "version": "3.1.6",
       "version": "3.1.6",
@@ -24971,12 +24888,11 @@
       }
       }
     },
     },
     "node_modules/mkdirp": {
     "node_modules/mkdirp": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
-      "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
       "dependencies": {
       "dependencies": {
-        "minimist": "0.0.8"
+        "minimist": "^1.2.6"
       },
       },
       "bin": {
       "bin": {
         "mkdirp": "bin/cmd.js"
         "mkdirp": "bin/cmd.js"
@@ -25553,22 +25469,6 @@
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
       "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
     },
     },
-    "node_modules/multer/node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-    },
-    "node_modules/multer/node_modules/mkdirp": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-      "dependencies": {
-        "minimist": "^1.2.5"
-      },
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      }
-    },
     "node_modules/multer/node_modules/readable-stream": {
     "node_modules/multer/node_modules/readable-stream": {
       "version": "2.3.7",
       "version": "2.3.7",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
@@ -27537,11 +27437,6 @@
         "graceful-fs": "^4.1.6"
         "graceful-fs": "^4.1.6"
       }
       }
     },
     },
-    "node_modules/patch-package/node_modules/minimist": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
-      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
-    },
     "node_modules/patch-package/node_modules/open": {
     "node_modules/patch-package/node_modules/open": {
       "version": "7.4.2",
       "version": "7.4.2",
       "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
       "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
@@ -28056,24 +27951,6 @@
         "ms": "^2.1.1"
         "ms": "^2.1.1"
       }
       }
     },
     },
-    "node_modules/portfinder/node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-      "devOptional": true
-    },
-    "node_modules/portfinder/node_modules/mkdirp": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-      "devOptional": true,
-      "dependencies": {
-        "minimist": "^1.2.5"
-      },
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      }
-    },
     "node_modules/posix-character-classes": {
     "node_modules/posix-character-classes": {
       "version": "0.1.1",
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
       "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
@@ -33489,12 +33366,6 @@
         "node": ">=4.0.0"
         "node": ">=4.0.0"
       }
       }
     },
     },
-    "node_modules/to-string-loader/node_modules/minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-      "dev": true
-    },
     "node_modules/to-through": {
     "node_modules/to-through": {
       "version": "2.0.0",
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
       "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz",
@@ -33682,12 +33553,6 @@
         "json5": "lib/cli.js"
         "json5": "lib/cli.js"
       }
       }
     },
     },
-    "node_modules/tsconfig-paths/node_modules/minimist": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
-      "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
-      "dev": true
-    },
     "node_modules/tsconfig-paths/node_modules/strip-bom": {
     "node_modules/tsconfig-paths/node_modules/strip-bom": {
       "version": "3.0.0",
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
       "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
@@ -35736,14 +35601,6 @@
         "sinon-chai": "^3.7.0"
         "sinon-chai": "^3.7.0"
       }
       }
     },
     },
-    "services/analytics/node_modules/minimist": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
     "services/analytics/node_modules/p-limit": {
     "services/analytics/node_modules/p-limit": {
       "version": "2.3.0",
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -38664,7 +38521,7 @@
         "moment": "^2.29.4",
         "moment": "^2.29.4",
         "mongodb": "~3.6.0",
         "mongodb": "~3.6.0",
         "mongoose": "^5.13.11",
         "mongoose": "^5.13.11",
-        "multer": "https://github.com/overleaf/multer/archive/7a2928d7ea2da02dd92888ea1c9ba5704e07aeeb.tar.gz",
+        "multer": "https://github.com/overleaf/multer/archive/e1df247fbf8e7590520d20ae3601eaef9f3d2e9e.tar.gz",
         "nocache": "^2.1.0",
         "nocache": "^2.1.0",
         "nock": "^13.1.3",
         "nock": "^13.1.3",
         "node-fetch": "^2.6.7",
         "node-fetch": "^2.6.7",
@@ -38989,6 +38846,17 @@
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
     },
     },
+    "services/web/node_modules/busboy": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+      "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+      "dependencies": {
+        "streamsearch": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=10.16.0"
+      }
+    },
     "services/web/node_modules/bytes": {
     "services/web/node_modules/bytes": {
       "version": "3.1.0",
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@@ -39886,14 +39754,6 @@
         "url": "https://opencollective.com/webpack"
         "url": "https://opencollective.com/webpack"
       }
       }
     },
     },
-    "services/web/node_modules/minimist": {
-      "version": "1.2.7",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
     "services/web/node_modules/mongodb": {
     "services/web/node_modules/mongodb": {
       "version": "3.6.12",
       "version": "3.6.12",
       "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.12.tgz",
       "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.12.tgz",
@@ -39938,22 +39798,21 @@
       "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
       "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
     },
     },
     "services/web/node_modules/multer": {
     "services/web/node_modules/multer": {
-      "version": "1.4.1",
-      "resolved": "https://github.com/overleaf/multer/archive/7a2928d7ea2da02dd92888ea1c9ba5704e07aeeb.tar.gz",
-      "integrity": "sha512-XxZHtHZ6jX5ZzNfMzpKR9hx9pM0xIA1Jb8kYdejb6kIL4SuG9UgwzcXGheuqgVzeAyW33yzR3vlAgYL9dFMvwQ==",
+      "version": "1.4.5-lts.1",
+      "resolved": "https://github.com/overleaf/multer/archive/e1df247fbf8e7590520d20ae3601eaef9f3d2e9e.tar.gz",
+      "integrity": "sha512-1LZb0lk00hIg9orKsGtpCUGKmjdMY5jUq2EbkLe2VliP++8J9SukOJvFldjbXcGu8LJXQ8MHJlEekjHnaoT9Ug==",
       "license": "MIT",
       "license": "MIT",
       "dependencies": {
       "dependencies": {
         "append-field": "^1.0.0",
         "append-field": "^1.0.0",
-        "busboy": "^0.2.11",
+        "busboy": "^1.0.0",
         "concat-stream": "^1.5.2",
         "concat-stream": "^1.5.2",
-        "mkdirp": "^0.5.1",
+        "mkdirp": "^0.5.4",
         "object-assign": "^4.1.1",
         "object-assign": "^4.1.1",
-        "on-finished": "^2.3.0",
         "type-is": "^1.6.4",
         "type-is": "^1.6.4",
         "xtend": "^4.0.0"
         "xtend": "^4.0.0"
       },
       },
       "engines": {
       "engines": {
-        "node": ">= 0.10.0"
+        "node": ">= 6.0.0"
       }
       }
     },
     },
     "services/web/node_modules/nanoid": {
     "services/web/node_modules/nanoid": {
@@ -40806,6 +40665,14 @@
         "node": "*"
         "node": "*"
       }
       }
     },
     },
+    "services/web/node_modules/streamsearch": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+      "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
     "services/web/node_modules/string_decoder": {
     "services/web/node_modules/string_decoder": {
       "version": "1.1.1",
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -46047,11 +45914,6 @@
         "yargs": "^17.0.0"
         "yargs": "^17.0.0"
       },
       },
       "dependencies": {
       "dependencies": {
-        "minimist": {
-          "version": "1.2.7",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-          "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
-        },
         "p-limit": {
         "p-limit": {
           "version": "2.3.0",
           "version": "2.3.0",
           "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
           "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -48779,7 +48641,7 @@
         "moment": "^2.29.4",
         "moment": "^2.29.4",
         "mongodb": "~3.6.0",
         "mongodb": "~3.6.0",
         "mongoose": "^5.13.11",
         "mongoose": "^5.13.11",
-        "multer": "https://github.com/overleaf/multer/archive/7a2928d7ea2da02dd92888ea1c9ba5704e07aeeb.tar.gz",
+        "multer": "https://github.com/overleaf/multer/archive/e1df247fbf8e7590520d20ae3601eaef9f3d2e9e.tar.gz",
         "nocache": "^2.1.0",
         "nocache": "^2.1.0",
         "nock": "^13.1.1",
         "nock": "^13.1.1",
         "node-fetch": "^2.6.7",
         "node-fetch": "^2.6.7",
@@ -48993,6 +48855,14 @@
             }
             }
           }
           }
         },
         },
+        "busboy": {
+          "version": "1.6.0",
+          "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+          "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+          "requires": {
+            "streamsearch": "^1.1.0"
+          }
+        },
         "bytes": {
         "bytes": {
           "version": "3.1.0",
           "version": "3.1.0",
           "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
           "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@@ -49642,11 +49512,6 @@
             }
             }
           }
           }
         },
         },
-        "minimist": {
-          "version": "1.2.7",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-          "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
-        },
         "mongodb": {
         "mongodb": {
           "version": "3.6.12",
           "version": "3.6.12",
           "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.12.tgz",
           "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.12.tgz",
@@ -49666,15 +49531,14 @@
           "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
           "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
         },
         },
         "multer": {
         "multer": {
-          "version": "https://github.com/overleaf/multer/archive/7a2928d7ea2da02dd92888ea1c9ba5704e07aeeb.tar.gz",
-          "integrity": "sha512-XxZHtHZ6jX5ZzNfMzpKR9hx9pM0xIA1Jb8kYdejb6kIL4SuG9UgwzcXGheuqgVzeAyW33yzR3vlAgYL9dFMvwQ==",
+          "version": "https://github.com/overleaf/multer/archive/e1df247fbf8e7590520d20ae3601eaef9f3d2e9e.tar.gz",
+          "integrity": "sha512-1LZb0lk00hIg9orKsGtpCUGKmjdMY5jUq2EbkLe2VliP++8J9SukOJvFldjbXcGu8LJXQ8MHJlEekjHnaoT9Ug==",
           "requires": {
           "requires": {
             "append-field": "^1.0.0",
             "append-field": "^1.0.0",
-            "busboy": "^0.2.11",
+            "busboy": "^1.0.0",
             "concat-stream": "^1.5.2",
             "concat-stream": "^1.5.2",
-            "mkdirp": "^0.5.1",
+            "mkdirp": "^0.5.4",
             "object-assign": "^4.1.1",
             "object-assign": "^4.1.1",
-            "on-finished": "^2.3.0",
             "type-is": "^1.6.4",
             "type-is": "^1.6.4",
             "xtend": "^4.0.0"
             "xtend": "^4.0.0"
           }
           }
@@ -50259,6 +50123,11 @@
           "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
           "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
           "dev": true
           "dev": true
         },
         },
+        "streamsearch": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+          "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="
+        },
         "string_decoder": {
         "string_decoder": {
           "version": "1.1.1",
           "version": "1.1.1",
           "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
           "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -54856,11 +54725,6 @@
           "requires": {
           "requires": {
             "minimist": "^1.2.0"
             "minimist": "^1.2.0"
           }
           }
-        },
-        "minimist": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
         }
         }
       }
       }
     },
     },
@@ -55415,13 +55279,6 @@
       "integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==",
       "integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==",
       "requires": {
       "requires": {
         "minimist": "^1.2.0"
         "minimist": "^1.2.0"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-        }
       }
       }
     },
     },
     "csv-stringify": {
     "csv-stringify": {
@@ -55598,12 +55455,6 @@
             "yallist": "^4.0.0"
             "yallist": "^4.0.0"
           }
           }
         },
         },
-        "minimist": {
-          "version": "1.2.6",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
-          "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
-          "dev": true
-        },
         "semver": {
         "semver": {
           "version": "7.3.5",
           "version": "7.3.5",
           "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
           "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
@@ -59875,11 +59726,6 @@
         "wordwrap": "^1.0.0"
         "wordwrap": "^1.0.0"
       },
       },
       "dependencies": {
       "dependencies": {
-        "minimist": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-        },
         "source-map": {
         "source-map": {
           "version": "0.6.1",
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -60131,11 +59977,6 @@
         "xtend": "^4.0.0"
         "xtend": "^4.0.0"
       },
       },
       "dependencies": {
       "dependencies": {
-        "minimist": {
-          "version": "1.2.7",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
-          "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
-        },
         "process": {
         "process": {
           "version": "0.10.1",
           "version": "0.10.1",
           "resolved": "https://registry.npmjs.org/process/-/process-0.10.1.tgz",
           "resolved": "https://registry.npmjs.org/process/-/process-0.10.1.tgz",
@@ -61900,13 +61741,6 @@
       "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
       "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
       "requires": {
       "requires": {
         "minimist": "^1.2.5"
         "minimist": "^1.2.5"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-        }
       }
       }
     },
     },
     "jsonfile": {
     "jsonfile": {
@@ -62085,21 +61919,6 @@
           "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
           "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
           "dev": true
           "dev": true
         },
         },
-        "minimist": {
-          "version": "1.2.6",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
-          "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
-          "dev": true
-        },
-        "mkdirp": {
-          "version": "0.5.6",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
-          "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.6"
-          }
-        },
         "rimraf": {
         "rimraf": {
           "version": "3.0.2",
           "version": "3.0.2",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
           "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -62180,14 +61999,6 @@
       "dev": true,
       "dev": true,
       "requires": {
       "requires": {
         "minimist": "^1.2.3"
         "minimist": "^1.2.3"
-      },
-      "dependencies": {
-        "minimist": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-          "dev": true
-        }
       }
       }
     },
     },
     "karma-mocha-reporter": {
     "karma-mocha-reporter": {
@@ -63438,11 +63249,6 @@
             "minipass": "^2.6.0"
             "minipass": "^2.6.0"
           }
           }
         },
         },
-        "minimist": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-        },
         "minipass": {
         "minipass": {
           "version": "2.9.0",
           "version": "2.9.0",
           "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
           "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
@@ -63460,14 +63266,6 @@
             "minipass": "^2.9.0"
             "minipass": "^2.9.0"
           }
           }
         },
         },
-        "mkdirp": {
-          "version": "0.5.5",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-          "requires": {
-            "minimist": "^1.2.5"
-          }
-        },
         "safe-buffer": {
         "safe-buffer": {
           "version": "5.2.1",
           "version": "5.2.1",
           "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
           "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -63618,12 +63416,6 @@
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "dev": true
           "dev": true
         },
         },
-        "minimist": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-          "dev": true
-        },
         "readable-stream": {
         "readable-stream": {
           "version": "2.3.7",
           "version": "2.3.7",
           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
@@ -63892,9 +63684,9 @@
       }
       }
     },
     },
     "minimist": {
     "minimist": {
-      "version": "0.0.8",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
-      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
+      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
     },
     },
     "minipass": {
     "minipass": {
       "version": "3.1.6",
       "version": "3.1.6",
@@ -63982,11 +63774,11 @@
       }
       }
     },
     },
     "mkdirp": {
     "mkdirp": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
-      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
       "requires": {
       "requires": {
-        "minimist": "0.0.8"
+        "minimist": "^1.2.6"
       }
       }
     },
     },
     "mkdirp-classic": {
     "mkdirp-classic": {
@@ -64416,19 +64208,6 @@
           "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
           "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
         },
         },
-        "minimist": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-        },
-        "mkdirp": {
-          "version": "0.5.5",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-          "requires": {
-            "minimist": "^1.2.5"
-          }
-        },
         "readable-stream": {
         "readable-stream": {
           "version": "2.3.7",
           "version": "2.3.7",
           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
@@ -65880,12 +65659,6 @@
             "chalk": "^2.0.1"
             "chalk": "^2.0.1"
           }
           }
         },
         },
-        "minimist": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-          "dev": true
-        },
         "mkdirp": {
         "mkdirp": {
           "version": "0.5.4",
           "version": "0.5.4",
           "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
           "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
@@ -66450,11 +66223,6 @@
             "graceful-fs": "^4.1.6"
             "graceful-fs": "^4.1.6"
           }
           }
         },
         },
-        "minimist": {
-          "version": "1.2.6",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
-          "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
-        },
         "open": {
         "open": {
           "version": "7.4.2",
           "version": "7.4.2",
           "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
           "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz",
@@ -66844,21 +66612,6 @@
           "requires": {
           "requires": {
             "ms": "^2.1.1"
             "ms": "^2.1.1"
           }
           }
-        },
-        "minimist": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-          "devOptional": true
-        },
-        "mkdirp": {
-          "version": "0.5.5",
-          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-          "devOptional": true,
-          "requires": {
-            "minimist": "^1.2.5"
-          }
         }
         }
       }
       }
     },
     },
@@ -71227,12 +70980,6 @@
             "emojis-list": "^3.0.0",
             "emojis-list": "^3.0.0",
             "json5": "^1.0.1"
             "json5": "^1.0.1"
           }
           }
-        },
-        "minimist": {
-          "version": "1.2.5",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
-          "dev": true
         }
         }
       }
       }
     },
     },
@@ -71402,12 +71149,6 @@
             "minimist": "^1.2.0"
             "minimist": "^1.2.0"
           }
           }
         },
         },
-        "minimist": {
-          "version": "1.2.6",
-          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
-          "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
-          "dev": true
-        },
         "strip-bom": {
         "strip-bom": {
           "version": "3.0.0",
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
           "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",

+ 12 - 6
services/web/app/src/Features/Uploads/ProjectUploadController.js

@@ -22,13 +22,19 @@ const SessionManager = require('../Authentication/SessionManager')
 const Settings = require('@overleaf/settings')
 const Settings = require('@overleaf/settings')
 const { InvalidZipFileError } = require('./ArchiveErrors')
 const { InvalidZipFileError } = require('./ArchiveErrors')
 const multer = require('multer')
 const multer = require('multer')
+const _ = require('lodash')
 
 
-const upload = multer({
-  dest: Settings.path.uploadFolder,
-  limits: {
-    fileSize: Settings.maxUploadSize,
-  },
-})
+const upload = multer(
+  _.defaultsDeep(
+    {
+      dest: Settings.path.uploadFolder,
+      limits: {
+        fileSize: Settings.maxUploadSize,
+      },
+    },
+    Settings.multerOptions
+  )
+)
 
 
 module.exports = ProjectUploadController = {
 module.exports = ProjectUploadController = {
   uploadProject(req, res, next) {
   uploadProject(req, res, next) {

+ 3 - 0
services/web/config/settings.defaults.js

@@ -274,6 +274,9 @@ module.exports = {
   maxEntitiesPerProject: 2000,
   maxEntitiesPerProject: 2000,
 
 
   maxUploadSize: 50 * 1024 * 1024, // 50 MB
   maxUploadSize: 50 * 1024 * 1024, // 50 MB
+  multerOptions: {
+    preservePath: process.env.MULTER_PRESERVE_PATH,
+  },
 
 
   // start failing the health check if active handles exceeds this limit
   // start failing the health check if active handles exceeds this limit
   maxActiveHandles: process.env.MAX_ACTIVE_HANDLES
   maxActiveHandles: process.env.MAX_ACTIVE_HANDLES

+ 1 - 1
services/web/package.json

@@ -180,7 +180,7 @@
     "moment": "^2.29.4",
     "moment": "^2.29.4",
     "mongodb": "~3.6.0",
     "mongodb": "~3.6.0",
     "mongoose": "^5.13.11",
     "mongoose": "^5.13.11",
-    "multer": "https://github.com/overleaf/multer/archive/7a2928d7ea2da02dd92888ea1c9ba5704e07aeeb.tar.gz",
+    "multer": "https://github.com/overleaf/multer/archive/e1df247fbf8e7590520d20ae3601eaef9f3d2e9e.tar.gz",
     "nocache": "^2.1.0",
     "nocache": "^2.1.0",
     "nock": "^13.1.3",
     "nock": "^13.1.3",
     "node-fetch": "^2.6.7",
     "node-fetch": "^2.6.7",