summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-08-07 16:46:53 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-08-07 16:46:53 +0200
commitc24e921b28f9de6d5b5f5fa4ec58acfcaf553251 (patch)
tree3f6d2dcec40119e9360d626dec09f696ebbf6197
parentnpm i @fosscord/server-util@1.3.37 (diff)
downloadserver-c24e921b28f9de6d5b5f5fa4ec58acfcaf553251.tar.xz
:bug: fix gateway endpoint
-rw-r--r--package-lock.json695
-rw-r--r--package.json2
-rw-r--r--src/Server.ts5
-rw-r--r--src/middlewares/RateLimit.ts6
4 files changed, 408 insertions, 300 deletions
diff --git a/package-lock.json b/package-lock.json
index 44edadbb..fc8bff16 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,7 +9,7 @@
 			"version": "1.0.0",
 			"license": "ISC",
 			"dependencies": {
-				"@fosscord/server-util": "^1.3.37",
+				"@fosscord/server-util": "^1.3.38",
 				"@types/jest": "^26.0.22",
 				"@types/json-schema": "^7.0.7",
 				"ajv": "^8.4.0",
@@ -71,29 +71,29 @@
 			}
 		},
 		"node_modules/@babel/compat-data": {
-			"version": "7.14.7",
-			"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz",
-			"integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz",
+			"integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==",
 			"dev": true,
 			"engines": {
 				"node": ">=6.9.0"
 			}
 		},
 		"node_modules/@babel/core": {
-			"version": "7.14.6",
-			"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz",
-			"integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz",
+			"integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==",
 			"dev": true,
 			"dependencies": {
 				"@babel/code-frame": "^7.14.5",
-				"@babel/generator": "^7.14.5",
-				"@babel/helper-compilation-targets": "^7.14.5",
-				"@babel/helper-module-transforms": "^7.14.5",
-				"@babel/helpers": "^7.14.6",
-				"@babel/parser": "^7.14.6",
+				"@babel/generator": "^7.15.0",
+				"@babel/helper-compilation-targets": "^7.15.0",
+				"@babel/helper-module-transforms": "^7.15.0",
+				"@babel/helpers": "^7.14.8",
+				"@babel/parser": "^7.15.0",
 				"@babel/template": "^7.14.5",
-				"@babel/traverse": "^7.14.5",
-				"@babel/types": "^7.14.5",
+				"@babel/traverse": "^7.15.0",
+				"@babel/types": "^7.15.0",
 				"convert-source-map": "^1.7.0",
 				"debug": "^4.1.0",
 				"gensync": "^1.0.0-beta.2",
@@ -149,12 +149,12 @@
 			}
 		},
 		"node_modules/@babel/generator": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz",
-			"integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz",
+			"integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==",
 			"dev": true,
 			"dependencies": {
-				"@babel/types": "^7.14.5",
+				"@babel/types": "^7.15.0",
 				"jsesc": "^2.5.1",
 				"source-map": "^0.5.0"
 			},
@@ -163,12 +163,12 @@
 			}
 		},
 		"node_modules/@babel/helper-compilation-targets": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz",
-			"integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz",
+			"integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==",
 			"dev": true,
 			"dependencies": {
-				"@babel/compat-data": "^7.14.5",
+				"@babel/compat-data": "^7.15.0",
 				"@babel/helper-validator-option": "^7.14.5",
 				"browserslist": "^4.16.6",
 				"semver": "^6.3.0"
@@ -228,12 +228,12 @@
 			}
 		},
 		"node_modules/@babel/helper-member-expression-to-functions": {
-			"version": "7.14.7",
-			"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz",
-			"integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz",
+			"integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==",
 			"dev": true,
 			"dependencies": {
-				"@babel/types": "^7.14.5"
+				"@babel/types": "^7.15.0"
 			},
 			"engines": {
 				"node": ">=6.9.0"
@@ -252,19 +252,19 @@
 			}
 		},
 		"node_modules/@babel/helper-module-transforms": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz",
-			"integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz",
+			"integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==",
 			"dev": true,
 			"dependencies": {
 				"@babel/helper-module-imports": "^7.14.5",
-				"@babel/helper-replace-supers": "^7.14.5",
-				"@babel/helper-simple-access": "^7.14.5",
+				"@babel/helper-replace-supers": "^7.15.0",
+				"@babel/helper-simple-access": "^7.14.8",
 				"@babel/helper-split-export-declaration": "^7.14.5",
-				"@babel/helper-validator-identifier": "^7.14.5",
+				"@babel/helper-validator-identifier": "^7.14.9",
 				"@babel/template": "^7.14.5",
-				"@babel/traverse": "^7.14.5",
-				"@babel/types": "^7.14.5"
+				"@babel/traverse": "^7.15.0",
+				"@babel/types": "^7.15.0"
 			},
 			"engines": {
 				"node": ">=6.9.0"
@@ -292,27 +292,27 @@
 			}
 		},
 		"node_modules/@babel/helper-replace-supers": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz",
-			"integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz",
+			"integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==",
 			"dev": true,
 			"dependencies": {
-				"@babel/helper-member-expression-to-functions": "^7.14.5",
+				"@babel/helper-member-expression-to-functions": "^7.15.0",
 				"@babel/helper-optimise-call-expression": "^7.14.5",
-				"@babel/traverse": "^7.14.5",
-				"@babel/types": "^7.14.5"
+				"@babel/traverse": "^7.15.0",
+				"@babel/types": "^7.15.0"
 			},
 			"engines": {
 				"node": ">=6.9.0"
 			}
 		},
 		"node_modules/@babel/helper-simple-access": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz",
-			"integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==",
+			"version": "7.14.8",
+			"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz",
+			"integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==",
 			"dev": true,
 			"dependencies": {
-				"@babel/types": "^7.14.5"
+				"@babel/types": "^7.14.8"
 			},
 			"engines": {
 				"node": ">=6.9.0"
@@ -331,9 +331,9 @@
 			}
 		},
 		"node_modules/@babel/helper-validator-identifier": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz",
-			"integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==",
+			"version": "7.14.9",
+			"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
+			"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
 			"dev": true,
 			"engines": {
 				"node": ">=6.9.0"
@@ -349,14 +349,14 @@
 			}
 		},
 		"node_modules/@babel/helpers": {
-			"version": "7.14.6",
-			"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz",
-			"integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==",
+			"version": "7.14.8",
+			"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz",
+			"integrity": "sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==",
 			"dev": true,
 			"dependencies": {
 				"@babel/template": "^7.14.5",
-				"@babel/traverse": "^7.14.5",
-				"@babel/types": "^7.14.5"
+				"@babel/traverse": "^7.14.8",
+				"@babel/types": "^7.14.8"
 			},
 			"engines": {
 				"node": ">=6.9.0"
@@ -439,9 +439,9 @@
 			}
 		},
 		"node_modules/@babel/parser": {
-			"version": "7.14.7",
-			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz",
-			"integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.0.tgz",
+			"integrity": "sha512-0v7oNOjr6YT9Z2RAOTv4T9aP+ubfx4Q/OhVtAet7PFDt0t9Oy6Jn+/rfC6b8HJ5zEqrQCiMxJfgtHpmIminmJQ==",
 			"dev": true,
 			"bin": {
 				"parser": "bin/babel-parser.js"
@@ -598,9 +598,9 @@
 			}
 		},
 		"node_modules/@babel/runtime": {
-			"version": "7.14.6",
-			"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz",
-			"integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==",
+			"version": "7.14.8",
+			"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz",
+			"integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==",
 			"dependencies": {
 				"regenerator-runtime": "^0.13.4"
 			},
@@ -623,18 +623,18 @@
 			}
 		},
 		"node_modules/@babel/traverse": {
-			"version": "7.14.7",
-			"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz",
-			"integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz",
+			"integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==",
 			"dev": true,
 			"dependencies": {
 				"@babel/code-frame": "^7.14.5",
-				"@babel/generator": "^7.14.5",
+				"@babel/generator": "^7.15.0",
 				"@babel/helper-function-name": "^7.14.5",
 				"@babel/helper-hoist-variables": "^7.14.5",
 				"@babel/helper-split-export-declaration": "^7.14.5",
-				"@babel/parser": "^7.14.7",
-				"@babel/types": "^7.14.5",
+				"@babel/parser": "^7.15.0",
+				"@babel/types": "^7.15.0",
 				"debug": "^4.1.0",
 				"globals": "^11.1.0"
 			},
@@ -643,12 +643,12 @@
 			}
 		},
 		"node_modules/@babel/types": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz",
-			"integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+			"integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
 			"dev": true,
 			"dependencies": {
-				"@babel/helper-validator-identifier": "^7.14.5",
+				"@babel/helper-validator-identifier": "^7.14.9",
 				"to-fast-properties": "^2.0.0"
 			},
 			"engines": {
@@ -678,9 +678,9 @@
 			}
 		},
 		"node_modules/@fosscord/server-util": {
-			"version": "1.3.37",
-			"resolved": "https://registry.npmjs.org/@fosscord/server-util/-/server-util-1.3.37.tgz",
-			"integrity": "sha512-hE2QIMHo/j/rCXmw+HEr5iV2RphGO7/oU1co1f6B8PlDHmyDoC0U/g1xXo9KwrWcB9lyCWb0kxlf2mOhCCQ4yA==",
+			"version": "1.3.38",
+			"resolved": "https://registry.npmjs.org/@fosscord/server-util/-/server-util-1.3.38.tgz",
+			"integrity": "sha512-TYbs9/Nwx29bWjQwimW/yChHIg/qRoRdgjvTVBKHamEfvZ9XtOnAyvodS1dTys7vJvQJgMzFeZth24NuHm+YFQ==",
 			"dependencies": {
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongoose-autopopulate": "^0.10.1",
@@ -1168,9 +1168,9 @@
 			}
 		},
 		"node_modules/@types/bson": {
-			"version": "4.0.4",
-			"resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.4.tgz",
-			"integrity": "sha512-awqorHvQS0DqxkHQ/FxcPX9E+H7Du51Qw/2F+5TBMSaE3G0hm+8D3eXJ6MAzFw75nE8V7xF0QvzUSdxIjJb/GA==",
+			"version": "4.0.5",
+			"resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.5.tgz",
+			"integrity": "sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg==",
 			"dependencies": {
 				"@types/node": "*"
 			}
@@ -1256,9 +1256,9 @@
 			}
 		},
 		"node_modules/@types/json-schema": {
-			"version": "7.0.8",
-			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz",
-			"integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg=="
+			"version": "7.0.9",
+			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
+			"integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ=="
 		},
 		"node_modules/@types/jsonwebtoken": {
 			"version": "8.5.4",
@@ -1275,12 +1275,12 @@
 			"dev": true
 		},
 		"node_modules/@types/mongodb": {
-			"version": "3.6.20",
-			"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz",
-			"integrity": "sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==",
+			"version": "4.0.7",
+			"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-4.0.7.tgz",
+			"integrity": "sha512-lPUYPpzA43baXqnd36cZ9xxorprybxXDzteVKCPAdp14ppHtFJHnXYvNpmBvtMUTb5fKXVv6sVbzo1LHkWhJlw==",
+			"deprecated": "mongodb provides its own types. @types/mongodb is no longer needed.",
 			"dependencies": {
-				"@types/bson": "*",
-				"@types/node": "*"
+				"mongodb": "*"
 			}
 		},
 		"node_modules/@types/mongoose": {
@@ -1318,14 +1318,14 @@
 			}
 		},
 		"node_modules/@types/node": {
-			"version": "14.17.5",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz",
-			"integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA=="
+			"version": "14.17.9",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.9.tgz",
+			"integrity": "sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g=="
 		},
 		"node_modules/@types/node-fetch": {
-			"version": "2.5.11",
-			"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.11.tgz",
-			"integrity": "sha512-2upCKaqVZETDRb8A2VTaRymqFBEgH8u6yr96b/u3+1uQEPDRo3mJLEiPk7vdXBHRtjwkjqzFYMJXrt0Z9QsYjQ==",
+			"version": "2.5.12",
+			"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz",
+			"integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==",
 			"dev": true,
 			"dependencies": {
 				"@types/node": "*",
@@ -1833,9 +1833,9 @@
 			}
 		},
 		"node_modules/async": {
-			"version": "3.2.0",
-			"resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
-			"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
+			"version": "3.2.1",
+			"resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz",
+			"integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==",
 			"dev": true
 		},
 		"node_modules/asynckit": {
@@ -2308,16 +2308,16 @@
 			}
 		},
 		"node_modules/browserslist": {
-			"version": "4.16.6",
-			"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
-			"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
+			"version": "4.16.7",
+			"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
+			"integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
 			"dev": true,
 			"dependencies": {
-				"caniuse-lite": "^1.0.30001219",
+				"caniuse-lite": "^1.0.30001248",
 				"colorette": "^1.2.2",
-				"electron-to-chromium": "^1.3.723",
+				"electron-to-chromium": "^1.3.793",
 				"escalade": "^3.1.1",
-				"node-releases": "^1.1.71"
+				"node-releases": "^1.1.73"
 			},
 			"bin": {
 				"browserslist": "cli.js"
@@ -2372,9 +2372,9 @@
 			"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
 		},
 		"node_modules/buffer-from": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-			"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+			"version": "1.1.2",
+			"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+			"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
 		},
 		"node_modules/buffer-xor": {
 			"version": "1.0.3",
@@ -2484,9 +2484,9 @@
 			}
 		},
 		"node_modules/caniuse-lite": {
-			"version": "1.0.30001245",
-			"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz",
-			"integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==",
+			"version": "1.0.30001249",
+			"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001249.tgz",
+			"integrity": "sha512-vcX4U8lwVXPdqzPWi6cAJ3FnQaqXbBqy/GZseKNQzRj37J7qZdGcBtxq/QLFNLLlfsoXLUdHw8Iwenri86Tagw==",
 			"dev": true,
 			"funding": {
 				"type": "opencollective",
@@ -2538,9 +2538,9 @@
 			}
 		},
 		"node_modules/chalk": {
-			"version": "4.1.1",
-			"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-			"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+			"version": "4.1.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+			"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 			"dependencies": {
 				"ansi-styles": "^4.1.0",
 				"supports-color": "^7.1.0"
@@ -3818,9 +3818,9 @@
 			"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
 		},
 		"node_modules/electron-to-chromium": {
-			"version": "1.3.779",
-			"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.779.tgz",
-			"integrity": "sha512-nreave0y/1Qhmo8XtO6C/LpawNyC6U26+q7d814/e+tIqUK073pM+4xW7WUXyqCRa5K4wdxHmNMBAi8ap9nEew==",
+			"version": "1.3.799",
+			"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.799.tgz",
+			"integrity": "sha512-V2rbYWdGvSqrg+95KjkVuSi41bGfrhrOzjl1tSi2VLnm0mRe3FsSvhiqidSiSll9WiMhrQAhpDcW/wcqK3c+Yw==",
 			"dev": true
 		},
 		"node_modules/elliptic": {
@@ -4287,9 +4287,9 @@
 			}
 		},
 		"node_modules/express-validator": {
-			"version": "6.12.0",
-			"resolved": "https://registry.npmjs.org/express-validator/-/express-validator-6.12.0.tgz",
-			"integrity": "sha512-lcQAdVeAO+pBbHD33nIsDsd+QPakLX08tJ82iEsXj6ezyWCfYjE9RY/g9SVq5z4G0NaIkH8039Oe4r0G92DRyA==",
+			"version": "6.12.1",
+			"resolved": "https://registry.npmjs.org/express-validator/-/express-validator-6.12.1.tgz",
+			"integrity": "sha512-olpTAv0ZB5IhNuDQ2rodKAuJsewgFgLIsczJMAWD6T0Yvxsa+j/Hk61jl8e26lAq+oJr6hUqPRjdlOBKhFlWeQ==",
 			"dependencies": {
 				"lodash": "^4.17.21",
 				"validator": "^13.5.2"
@@ -4752,9 +4752,9 @@
 			}
 		},
 		"node_modules/graceful-fs": {
-			"version": "4.2.6",
-			"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
-			"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
+			"version": "4.2.8",
+			"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+			"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
 			"dev": true
 		},
 		"node_modules/growly": {
@@ -5420,12 +5420,15 @@
 			"dev": true
 		},
 		"node_modules/is-stream": {
-			"version": "2.0.0",
-			"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-			"integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+			"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
 			"dev": true,
 			"engines": {
 				"node": ">=8"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/sindresorhus"
 			}
 		},
 		"node_modules/is-typedarray": {
@@ -6163,9 +6166,9 @@
 			}
 		},
 		"node_modules/jsdom": {
-			"version": "16.6.0",
-			"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz",
-			"integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==",
+			"version": "16.7.0",
+			"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+			"integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
 			"dev": true,
 			"dependencies": {
 				"abab": "^2.0.5",
@@ -6193,7 +6196,7 @@
 				"whatwg-encoding": "^1.0.5",
 				"whatwg-mimetype": "^2.3.0",
 				"whatwg-url": "^8.5.0",
-				"ws": "^7.4.5",
+				"ws": "^7.4.6",
 				"xml-name-validator": "^3.0.0"
 			},
 			"engines": {
@@ -6757,19 +6760,19 @@
 			}
 		},
 		"node_modules/mime-db": {
-			"version": "1.48.0",
-			"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
-			"integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==",
+			"version": "1.49.0",
+			"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
+			"integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==",
 			"engines": {
 				"node": ">= 0.6"
 			}
 		},
 		"node_modules/mime-types": {
-			"version": "2.1.31",
-			"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
-			"integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
+			"version": "2.1.32",
+			"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
+			"integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
 			"dependencies": {
-				"mime-db": "1.48.0"
+				"mime-db": "1.49.0"
 			},
 			"engines": {
 				"node": ">= 0.6"
@@ -6847,9 +6850,9 @@
 			}
 		},
 		"node_modules/missing-native-js-functions": {
-			"version": "1.2.7",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.7.tgz",
-			"integrity": "sha512-3JT72wOtgojsdmUaa/LIlEuPmT802Kajnr9RFxSZFCX37oL3epd3mZwSaabqFHxPOUW7nJnix+BAWKwX6O0Q5g=="
+			"version": "1.2.9",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.9.tgz",
+			"integrity": "sha512-Hv1oiFi9Wf5bsxra/UlmribNCDyLNYQULepfVJH6aF50Thh522kaMF3IuHja2mKX1oeWBkp6FvLaAfAjLuCOzw=="
 		},
 		"node_modules/mixin-deep": {
 			"version": "1.3.2",
@@ -6911,9 +6914,9 @@
 			}
 		},
 		"node_modules/mongodb": {
-			"version": "3.6.10",
-			"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.10.tgz",
-			"integrity": "sha512-fvIBQBF7KwCJnDZUnFFy4WqEFP8ibdXeFANnylW19+vOwdjOAvqIzPdsNCEMT6VKTHnYu4K64AWRih0mkFms6Q==",
+			"version": "3.6.11",
+			"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.11.tgz",
+			"integrity": "sha512-4Y4lTFHDHZZdgMaHmojtNAlqkvddX2QQBEN0K//GzxhGwlI9tZ9R0vhbjr1Decw+TF7qK0ZLjQT292XgHRRQgw==",
 			"dependencies": {
 				"bl": "^2.2.1",
 				"bson": "^1.1.4",
@@ -6949,12 +6952,11 @@
 			}
 		},
 		"node_modules/mongoose": {
-			"version": "5.13.3",
-			"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.3.tgz",
-			"integrity": "sha512-q+zX6kqHAvwxf5speMWhq6qF4vdj+x6/kfD5RSKdZKNm52yGmaUygN+zgrtQjBZPFEzG0B3vF6GP0PoAGadE+w==",
+			"version": "5.13.5",
+			"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.5.tgz",
+			"integrity": "sha512-sSUAk9GWgA8r3w3nVNrNjBaDem86aevwXO8ltDMKzCf+rjnteMMQkXHQdn1ePkt7alROEPZYCAjiRjptWRSPiQ==",
 			"dependencies": {
 				"@types/mongodb": "^3.5.27",
-				"@types/node": "14.x || 15.x",
 				"bson": "^1.1.4",
 				"kareem": "2.3.2",
 				"mongodb": "3.6.10",
@@ -6962,6 +6964,7 @@
 				"mpath": "0.8.3",
 				"mquery": "3.2.5",
 				"ms": "2.1.2",
+				"optional-require": "1.0.x",
 				"regexp-clone": "1.0.0",
 				"safe-buffer": "5.2.1",
 				"sift": "13.5.2",
@@ -6999,6 +7002,61 @@
 				"mongoose": "4.x || 5.x"
 			}
 		},
+		"node_modules/mongoose/node_modules/@types/mongodb": {
+			"version": "3.6.20",
+			"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz",
+			"integrity": "sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==",
+			"dependencies": {
+				"@types/bson": "*",
+				"@types/node": "*"
+			}
+		},
+		"node_modules/mongoose/node_modules/mongodb": {
+			"version": "3.6.10",
+			"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.10.tgz",
+			"integrity": "sha512-fvIBQBF7KwCJnDZUnFFy4WqEFP8ibdXeFANnylW19+vOwdjOAvqIzPdsNCEMT6VKTHnYu4K64AWRih0mkFms6Q==",
+			"dependencies": {
+				"bl": "^2.2.1",
+				"bson": "^1.1.4",
+				"denque": "^1.4.1",
+				"optional-require": "^1.0.3",
+				"safe-buffer": "^5.1.2"
+			},
+			"engines": {
+				"node": ">=4"
+			},
+			"optionalDependencies": {
+				"saslprep": "^1.0.0"
+			},
+			"peerDependenciesMeta": {
+				"aws4": {
+					"optional": true
+				},
+				"bson-ext": {
+					"optional": true
+				},
+				"kerberos": {
+					"optional": true
+				},
+				"mongodb-client-encryption": {
+					"optional": true
+				},
+				"mongodb-extjson": {
+					"optional": true
+				},
+				"snappy": {
+					"optional": true
+				}
+			}
+		},
+		"node_modules/mongoose/node_modules/optional-require": {
+			"version": "1.0.3",
+			"resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz",
+			"integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==",
+			"engines": {
+				"node": ">=4"
+			}
+		},
 		"node_modules/morphdom": {
 			"version": "2.6.1",
 			"resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.6.1.tgz",
@@ -7597,9 +7655,12 @@
 			}
 		},
 		"node_modules/optional-require": {
-			"version": "1.0.3",
-			"resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz",
-			"integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==",
+			"version": "1.1.5",
+			"resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.5.tgz",
+			"integrity": "sha512-PtR4HkBxH0Rpethop3qeZY+8gaXjN4+Ik9AJraOU+AQFm6v9rP34xQrQqJD9hNMB76UYxN3ziGExdtkB5C1TUg==",
+			"dependencies": {
+				"require-at": "^1.0.6"
+			},
 			"engines": {
 				"node": ">=4"
 			}
@@ -8329,9 +8390,9 @@
 			}
 		},
 		"node_modules/regenerator-runtime": {
-			"version": "0.13.7",
-			"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
-			"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
+			"version": "0.13.9",
+			"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+			"integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
 		},
 		"node_modules/regex-not": {
 			"version": "1.0.2",
@@ -8392,6 +8453,14 @@
 				"node": ">=0.10.0"
 			}
 		},
+		"node_modules/require-at": {
+			"version": "1.0.6",
+			"resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz",
+			"integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==",
+			"engines": {
+				"node": ">=4"
+			}
+		},
 		"node_modules/require-directory": {
 			"version": "2.1.1",
 			"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -9790,9 +9859,9 @@
 			"dev": true
 		},
 		"node_modules/tar": {
-			"version": "6.1.0",
-			"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
-			"integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
+			"version": "6.1.6",
+			"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.6.tgz",
+			"integrity": "sha512-oaWyu5dQbHaYcyZCTfyPpC+VmI62/OM2RTUYavTk1MDr1cwW5Boi3baeYQKiZbY2uSQJGr+iMOzb/JFxLrft+g==",
 			"dependencies": {
 				"chownr": "^2.0.0",
 				"fs-minipass": "^2.0.0",
@@ -10926,26 +10995,26 @@
 			}
 		},
 		"@babel/compat-data": {
-			"version": "7.14.7",
-			"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz",
-			"integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz",
+			"integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==",
 			"dev": true
 		},
 		"@babel/core": {
-			"version": "7.14.6",
-			"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz",
-			"integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz",
+			"integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==",
 			"dev": true,
 			"requires": {
 				"@babel/code-frame": "^7.14.5",
-				"@babel/generator": "^7.14.5",
-				"@babel/helper-compilation-targets": "^7.14.5",
-				"@babel/helper-module-transforms": "^7.14.5",
-				"@babel/helpers": "^7.14.6",
-				"@babel/parser": "^7.14.6",
+				"@babel/generator": "^7.15.0",
+				"@babel/helper-compilation-targets": "^7.15.0",
+				"@babel/helper-module-transforms": "^7.15.0",
+				"@babel/helpers": "^7.14.8",
+				"@babel/parser": "^7.15.0",
 				"@babel/template": "^7.14.5",
-				"@babel/traverse": "^7.14.5",
-				"@babel/types": "^7.14.5",
+				"@babel/traverse": "^7.15.0",
+				"@babel/types": "^7.15.0",
 				"convert-source-map": "^1.7.0",
 				"debug": "^4.1.0",
 				"gensync": "^1.0.0-beta.2",
@@ -10987,23 +11056,23 @@
 			}
 		},
 		"@babel/generator": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz",
-			"integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz",
+			"integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==",
 			"dev": true,
 			"requires": {
-				"@babel/types": "^7.14.5",
+				"@babel/types": "^7.15.0",
 				"jsesc": "^2.5.1",
 				"source-map": "^0.5.0"
 			}
 		},
 		"@babel/helper-compilation-targets": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz",
-			"integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz",
+			"integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==",
 			"dev": true,
 			"requires": {
-				"@babel/compat-data": "^7.14.5",
+				"@babel/compat-data": "^7.15.0",
 				"@babel/helper-validator-option": "^7.14.5",
 				"browserslist": "^4.16.6",
 				"semver": "^6.3.0"
@@ -11047,12 +11116,12 @@
 			}
 		},
 		"@babel/helper-member-expression-to-functions": {
-			"version": "7.14.7",
-			"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz",
-			"integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz",
+			"integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==",
 			"dev": true,
 			"requires": {
-				"@babel/types": "^7.14.5"
+				"@babel/types": "^7.15.0"
 			}
 		},
 		"@babel/helper-module-imports": {
@@ -11065,19 +11134,19 @@
 			}
 		},
 		"@babel/helper-module-transforms": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz",
-			"integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz",
+			"integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==",
 			"dev": true,
 			"requires": {
 				"@babel/helper-module-imports": "^7.14.5",
-				"@babel/helper-replace-supers": "^7.14.5",
-				"@babel/helper-simple-access": "^7.14.5",
+				"@babel/helper-replace-supers": "^7.15.0",
+				"@babel/helper-simple-access": "^7.14.8",
 				"@babel/helper-split-export-declaration": "^7.14.5",
-				"@babel/helper-validator-identifier": "^7.14.5",
+				"@babel/helper-validator-identifier": "^7.14.9",
 				"@babel/template": "^7.14.5",
-				"@babel/traverse": "^7.14.5",
-				"@babel/types": "^7.14.5"
+				"@babel/traverse": "^7.15.0",
+				"@babel/types": "^7.15.0"
 			}
 		},
 		"@babel/helper-optimise-call-expression": {
@@ -11096,24 +11165,24 @@
 			"dev": true
 		},
 		"@babel/helper-replace-supers": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz",
-			"integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz",
+			"integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==",
 			"dev": true,
 			"requires": {
-				"@babel/helper-member-expression-to-functions": "^7.14.5",
+				"@babel/helper-member-expression-to-functions": "^7.15.0",
 				"@babel/helper-optimise-call-expression": "^7.14.5",
-				"@babel/traverse": "^7.14.5",
-				"@babel/types": "^7.14.5"
+				"@babel/traverse": "^7.15.0",
+				"@babel/types": "^7.15.0"
 			}
 		},
 		"@babel/helper-simple-access": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz",
-			"integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==",
+			"version": "7.14.8",
+			"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz",
+			"integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==",
 			"dev": true,
 			"requires": {
-				"@babel/types": "^7.14.5"
+				"@babel/types": "^7.14.8"
 			}
 		},
 		"@babel/helper-split-export-declaration": {
@@ -11126,9 +11195,9 @@
 			}
 		},
 		"@babel/helper-validator-identifier": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz",
-			"integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==",
+			"version": "7.14.9",
+			"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz",
+			"integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==",
 			"dev": true
 		},
 		"@babel/helper-validator-option": {
@@ -11138,14 +11207,14 @@
 			"dev": true
 		},
 		"@babel/helpers": {
-			"version": "7.14.6",
-			"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz",
-			"integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==",
+			"version": "7.14.8",
+			"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz",
+			"integrity": "sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==",
 			"dev": true,
 			"requires": {
 				"@babel/template": "^7.14.5",
-				"@babel/traverse": "^7.14.5",
-				"@babel/types": "^7.14.5"
+				"@babel/traverse": "^7.14.8",
+				"@babel/types": "^7.14.8"
 			}
 		},
 		"@babel/highlight": {
@@ -11212,9 +11281,9 @@
 			}
 		},
 		"@babel/parser": {
-			"version": "7.14.7",
-			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz",
-			"integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.0.tgz",
+			"integrity": "sha512-0v7oNOjr6YT9Z2RAOTv4T9aP+ubfx4Q/OhVtAet7PFDt0t9Oy6Jn+/rfC6b8HJ5zEqrQCiMxJfgtHpmIminmJQ==",
 			"dev": true
 		},
 		"@babel/plugin-syntax-async-generators": {
@@ -11326,9 +11395,9 @@
 			}
 		},
 		"@babel/runtime": {
-			"version": "7.14.6",
-			"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz",
-			"integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==",
+			"version": "7.14.8",
+			"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz",
+			"integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==",
 			"requires": {
 				"regenerator-runtime": "^0.13.4"
 			}
@@ -11345,29 +11414,29 @@
 			}
 		},
 		"@babel/traverse": {
-			"version": "7.14.7",
-			"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz",
-			"integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz",
+			"integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==",
 			"dev": true,
 			"requires": {
 				"@babel/code-frame": "^7.14.5",
-				"@babel/generator": "^7.14.5",
+				"@babel/generator": "^7.15.0",
 				"@babel/helper-function-name": "^7.14.5",
 				"@babel/helper-hoist-variables": "^7.14.5",
 				"@babel/helper-split-export-declaration": "^7.14.5",
-				"@babel/parser": "^7.14.7",
-				"@babel/types": "^7.14.5",
+				"@babel/parser": "^7.15.0",
+				"@babel/types": "^7.15.0",
 				"debug": "^4.1.0",
 				"globals": "^11.1.0"
 			}
 		},
 		"@babel/types": {
-			"version": "7.14.5",
-			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz",
-			"integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==",
+			"version": "7.15.0",
+			"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+			"integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
 			"dev": true,
 			"requires": {
-				"@babel/helper-validator-identifier": "^7.14.5",
+				"@babel/helper-validator-identifier": "^7.14.9",
 				"to-fast-properties": "^2.0.0"
 			}
 		},
@@ -11388,9 +11457,9 @@
 			}
 		},
 		"@fosscord/server-util": {
-			"version": "1.3.37",
-			"resolved": "https://registry.npmjs.org/@fosscord/server-util/-/server-util-1.3.37.tgz",
-			"integrity": "sha512-hE2QIMHo/j/rCXmw+HEr5iV2RphGO7/oU1co1f6B8PlDHmyDoC0U/g1xXo9KwrWcB9lyCWb0kxlf2mOhCCQ4yA==",
+			"version": "1.3.38",
+			"resolved": "https://registry.npmjs.org/@fosscord/server-util/-/server-util-1.3.38.tgz",
+			"integrity": "sha512-TYbs9/Nwx29bWjQwimW/yChHIg/qRoRdgjvTVBKHamEfvZ9XtOnAyvodS1dTys7vJvQJgMzFeZth24NuHm+YFQ==",
 			"requires": {
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongoose-autopopulate": "^0.10.1",
@@ -11808,9 +11877,9 @@
 			}
 		},
 		"@types/bson": {
-			"version": "4.0.4",
-			"resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.4.tgz",
-			"integrity": "sha512-awqorHvQS0DqxkHQ/FxcPX9E+H7Du51Qw/2F+5TBMSaE3G0hm+8D3eXJ6MAzFw75nE8V7xF0QvzUSdxIjJb/GA==",
+			"version": "4.0.5",
+			"resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.5.tgz",
+			"integrity": "sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg==",
 			"requires": {
 				"@types/node": "*"
 			}
@@ -11896,9 +11965,9 @@
 			}
 		},
 		"@types/json-schema": {
-			"version": "7.0.8",
-			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz",
-			"integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg=="
+			"version": "7.0.9",
+			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz",
+			"integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ=="
 		},
 		"@types/jsonwebtoken": {
 			"version": "8.5.4",
@@ -11915,12 +11984,11 @@
 			"dev": true
 		},
 		"@types/mongodb": {
-			"version": "3.6.20",
-			"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz",
-			"integrity": "sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==",
+			"version": "4.0.7",
+			"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-4.0.7.tgz",
+			"integrity": "sha512-lPUYPpzA43baXqnd36cZ9xxorprybxXDzteVKCPAdp14ppHtFJHnXYvNpmBvtMUTb5fKXVv6sVbzo1LHkWhJlw==",
 			"requires": {
-				"@types/bson": "*",
-				"@types/node": "*"
+				"mongodb": "*"
 			}
 		},
 		"@types/mongoose": {
@@ -11958,14 +12026,14 @@
 			}
 		},
 		"@types/node": {
-			"version": "14.17.5",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.5.tgz",
-			"integrity": "sha512-bjqH2cX/O33jXT/UmReo2pM7DIJREPMnarixbQ57DOOzzFaI6D2+IcwaJQaJpv0M1E9TIhPCYVxrkcityLjlqA=="
+			"version": "14.17.9",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.9.tgz",
+			"integrity": "sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g=="
 		},
 		"@types/node-fetch": {
-			"version": "2.5.11",
-			"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.11.tgz",
-			"integrity": "sha512-2upCKaqVZETDRb8A2VTaRymqFBEgH8u6yr96b/u3+1uQEPDRo3mJLEiPk7vdXBHRtjwkjqzFYMJXrt0Z9QsYjQ==",
+			"version": "2.5.12",
+			"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz",
+			"integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==",
 			"dev": true,
 			"requires": {
 				"@types/node": "*",
@@ -12387,9 +12455,9 @@
 			"dev": true
 		},
 		"async": {
-			"version": "3.2.0",
-			"resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
-			"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
+			"version": "3.2.1",
+			"resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz",
+			"integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==",
 			"dev": true
 		},
 		"asynckit": {
@@ -12790,16 +12858,16 @@
 			}
 		},
 		"browserslist": {
-			"version": "4.16.6",
-			"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz",
-			"integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==",
+			"version": "4.16.7",
+			"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
+			"integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
 			"dev": true,
 			"requires": {
-				"caniuse-lite": "^1.0.30001219",
+				"caniuse-lite": "^1.0.30001248",
 				"colorette": "^1.2.2",
-				"electron-to-chromium": "^1.3.723",
+				"electron-to-chromium": "^1.3.793",
 				"escalade": "^3.1.1",
-				"node-releases": "^1.1.71"
+				"node-releases": "^1.1.73"
 			}
 		},
 		"bser": {
@@ -12838,9 +12906,9 @@
 			"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
 		},
 		"buffer-from": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
-			"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+			"version": "1.1.2",
+			"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+			"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
 		},
 		"buffer-xor": {
 			"version": "1.0.3",
@@ -12937,9 +13005,9 @@
 			"dev": true
 		},
 		"caniuse-lite": {
-			"version": "1.0.30001245",
-			"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz",
-			"integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==",
+			"version": "1.0.30001249",
+			"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001249.tgz",
+			"integrity": "sha512-vcX4U8lwVXPdqzPWi6cAJ3FnQaqXbBqy/GZseKNQzRj37J7qZdGcBtxq/QLFNLLlfsoXLUdHw8Iwenri86Tagw==",
 			"dev": true
 		},
 		"canvas": {
@@ -12977,9 +13045,9 @@
 			}
 		},
 		"chalk": {
-			"version": "4.1.1",
-			"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-			"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+			"version": "4.1.2",
+			"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+			"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 			"requires": {
 				"ansi-styles": "^4.1.0",
 				"supports-color": "^7.1.0"
@@ -14050,9 +14118,9 @@
 			"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
 		},
 		"electron-to-chromium": {
-			"version": "1.3.779",
-			"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.779.tgz",
-			"integrity": "sha512-nreave0y/1Qhmo8XtO6C/LpawNyC6U26+q7d814/e+tIqUK073pM+4xW7WUXyqCRa5K4wdxHmNMBAi8ap9nEew==",
+			"version": "1.3.799",
+			"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.799.tgz",
+			"integrity": "sha512-V2rbYWdGvSqrg+95KjkVuSi41bGfrhrOzjl1tSi2VLnm0mRe3FsSvhiqidSiSll9WiMhrQAhpDcW/wcqK3c+Yw==",
 			"dev": true
 		},
 		"elliptic": {
@@ -14447,9 +14515,9 @@
 			"requires": {}
 		},
 		"express-validator": {
-			"version": "6.12.0",
-			"resolved": "https://registry.npmjs.org/express-validator/-/express-validator-6.12.0.tgz",
-			"integrity": "sha512-lcQAdVeAO+pBbHD33nIsDsd+QPakLX08tJ82iEsXj6ezyWCfYjE9RY/g9SVq5z4G0NaIkH8039Oe4r0G92DRyA==",
+			"version": "6.12.1",
+			"resolved": "https://registry.npmjs.org/express-validator/-/express-validator-6.12.1.tgz",
+			"integrity": "sha512-olpTAv0ZB5IhNuDQ2rodKAuJsewgFgLIsczJMAWD6T0Yvxsa+j/Hk61jl8e26lAq+oJr6hUqPRjdlOBKhFlWeQ==",
 			"requires": {
 				"lodash": "^4.17.21",
 				"validator": "^13.5.2"
@@ -14800,9 +14868,9 @@
 			}
 		},
 		"graceful-fs": {
-			"version": "4.2.6",
-			"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
-			"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
+			"version": "4.2.8",
+			"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
+			"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
 			"dev": true
 		},
 		"growly": {
@@ -15324,9 +15392,9 @@
 			"dev": true
 		},
 		"is-stream": {
-			"version": "2.0.0",
-			"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-			"integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+			"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
 			"dev": true
 		},
 		"is-typedarray": {
@@ -15910,9 +15978,9 @@
 			}
 		},
 		"jsdom": {
-			"version": "16.6.0",
-			"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz",
-			"integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==",
+			"version": "16.7.0",
+			"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+			"integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
 			"dev": true,
 			"requires": {
 				"abab": "^2.0.5",
@@ -15940,7 +16008,7 @@
 				"whatwg-encoding": "^1.0.5",
 				"whatwg-mimetype": "^2.3.0",
 				"whatwg-url": "^8.5.0",
-				"ws": "^7.4.5",
+				"ws": "^7.4.6",
 				"xml-name-validator": "^3.0.0"
 			},
 			"dependencies": {
@@ -16406,16 +16474,16 @@
 			"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
 		},
 		"mime-db": {
-			"version": "1.48.0",
-			"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
-			"integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ=="
+			"version": "1.49.0",
+			"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
+			"integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA=="
 		},
 		"mime-types": {
-			"version": "2.1.31",
-			"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
-			"integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
+			"version": "2.1.32",
+			"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
+			"integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
 			"requires": {
-				"mime-db": "1.48.0"
+				"mime-db": "1.49.0"
 			}
 		},
 		"mimic-fn": {
@@ -16472,9 +16540,9 @@
 			}
 		},
 		"missing-native-js-functions": {
-			"version": "1.2.7",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.7.tgz",
-			"integrity": "sha512-3JT72wOtgojsdmUaa/LIlEuPmT802Kajnr9RFxSZFCX37oL3epd3mZwSaabqFHxPOUW7nJnix+BAWKwX6O0Q5g=="
+			"version": "1.2.9",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.9.tgz",
+			"integrity": "sha512-Hv1oiFi9Wf5bsxra/UlmribNCDyLNYQULepfVJH6aF50Thh522kaMF3IuHja2mKX1oeWBkp6FvLaAfAjLuCOzw=="
 		},
 		"mixin-deep": {
 			"version": "1.3.2",
@@ -16524,9 +16592,9 @@
 			}
 		},
 		"mongodb": {
-			"version": "3.6.10",
-			"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.10.tgz",
-			"integrity": "sha512-fvIBQBF7KwCJnDZUnFFy4WqEFP8ibdXeFANnylW19+vOwdjOAvqIzPdsNCEMT6VKTHnYu4K64AWRih0mkFms6Q==",
+			"version": "3.6.11",
+			"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.11.tgz",
+			"integrity": "sha512-4Y4lTFHDHZZdgMaHmojtNAlqkvddX2QQBEN0K//GzxhGwlI9tZ9R0vhbjr1Decw+TF7qK0ZLjQT292XgHRRQgw==",
 			"requires": {
 				"bl": "^2.2.1",
 				"bson": "^1.1.4",
@@ -16537,12 +16605,11 @@
 			}
 		},
 		"mongoose": {
-			"version": "5.13.3",
-			"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.3.tgz",
-			"integrity": "sha512-q+zX6kqHAvwxf5speMWhq6qF4vdj+x6/kfD5RSKdZKNm52yGmaUygN+zgrtQjBZPFEzG0B3vF6GP0PoAGadE+w==",
+			"version": "5.13.5",
+			"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.5.tgz",
+			"integrity": "sha512-sSUAk9GWgA8r3w3nVNrNjBaDem86aevwXO8ltDMKzCf+rjnteMMQkXHQdn1ePkt7alROEPZYCAjiRjptWRSPiQ==",
 			"requires": {
 				"@types/mongodb": "^3.5.27",
-				"@types/node": "14.x || 15.x",
 				"bson": "^1.1.4",
 				"kareem": "2.3.2",
 				"mongodb": "3.6.10",
@@ -16550,10 +16617,40 @@
 				"mpath": "0.8.3",
 				"mquery": "3.2.5",
 				"ms": "2.1.2",
+				"optional-require": "1.0.x",
 				"regexp-clone": "1.0.0",
 				"safe-buffer": "5.2.1",
 				"sift": "13.5.2",
 				"sliced": "1.0.1"
+			},
+			"dependencies": {
+				"@types/mongodb": {
+					"version": "3.6.20",
+					"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz",
+					"integrity": "sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==",
+					"requires": {
+						"@types/bson": "*",
+						"@types/node": "*"
+					}
+				},
+				"mongodb": {
+					"version": "3.6.10",
+					"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.10.tgz",
+					"integrity": "sha512-fvIBQBF7KwCJnDZUnFFy4WqEFP8ibdXeFANnylW19+vOwdjOAvqIzPdsNCEMT6VKTHnYu4K64AWRih0mkFms6Q==",
+					"requires": {
+						"bl": "^2.2.1",
+						"bson": "^1.1.4",
+						"denque": "^1.4.1",
+						"optional-require": "^1.0.3",
+						"safe-buffer": "^5.1.2",
+						"saslprep": "^1.0.0"
+					}
+				},
+				"optional-require": {
+					"version": "1.0.3",
+					"resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz",
+					"integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA=="
+				}
 			}
 		},
 		"mongoose-autopopulate": {
@@ -17065,9 +17162,12 @@
 			}
 		},
 		"optional-require": {
-			"version": "1.0.3",
-			"resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz",
-			"integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA=="
+			"version": "1.1.5",
+			"resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.5.tgz",
+			"integrity": "sha512-PtR4HkBxH0Rpethop3qeZY+8gaXjN4+Ik9AJraOU+AQFm6v9rP34xQrQqJD9hNMB76UYxN3ziGExdtkB5C1TUg==",
+			"requires": {
+				"require-at": "^1.0.6"
+			}
 		},
 		"optionator": {
 			"version": "0.8.3",
@@ -17658,9 +17758,9 @@
 			}
 		},
 		"regenerator-runtime": {
-			"version": "0.13.7",
-			"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
-			"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
+			"version": "0.13.9",
+			"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+			"integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
 		},
 		"regex-not": {
 			"version": "1.0.2",
@@ -17711,6 +17811,11 @@
 				}
 			}
 		},
+		"require-at": {
+			"version": "1.0.6",
+			"resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz",
+			"integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g=="
+		},
 		"require-directory": {
 			"version": "2.1.1",
 			"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -18849,9 +18954,9 @@
 			"dev": true
 		},
 		"tar": {
-			"version": "6.1.0",
-			"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
-			"integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
+			"version": "6.1.6",
+			"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.6.tgz",
+			"integrity": "sha512-oaWyu5dQbHaYcyZCTfyPpC+VmI62/OM2RTUYavTk1MDr1cwW5Boi3baeYQKiZbY2uSQJGr+iMOzb/JFxLrft+g==",
 			"requires": {
 				"chownr": "^2.0.0",
 				"fs-minipass": "^2.0.0",
diff --git a/package.json b/package.json
index 15aa8b04..eb2ac2e9 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,7 @@
 	},
 	"homepage": "https://github.com/fosscord/fosscord-api#readme",
 	"dependencies": {
-		"@fosscord/server-util": "^1.3.37",
+		"@fosscord/server-util": "^1.3.38",
 		"@types/jest": "^26.0.22",
 		"@types/json-schema": "^7.0.7",
 		"ajv": "^8.4.0",
diff --git a/src/Server.ts b/src/Server.ts
index aa66b5b6..49bb2398 100644
--- a/src/Server.ts
+++ b/src/Server.ts
@@ -165,7 +165,10 @@ export class FosscordServer extends Server {
 						/CDN_HOST: ".+"/,
 						`CDN_HOST: "${(Config.get().cdn.endpoint || "http://localhost:3003").replace(/https?:/, "")}"`
 					)
-					.replace(/GATEWAY_ENDPOINT: ".+"/, `GATEWAY_ENDPOINT: "${Config.get().gateway.endpoint || "ws://localhost:3002"}"`)
+					.replace(
+						/GATEWAY_ENDPOINT: ".+"/,
+						`GATEWAY_ENDPOINT: "${Config.get().gateway.endpoint || process.env.GATEWAY || "ws://localhost:3002"}"`
+					)
 			);
 		});
 		return super.start();
diff --git a/src/middlewares/RateLimit.ts b/src/middlewares/RateLimit.ts
index 89e002df..088c3161 100644
--- a/src/middlewares/RateLimit.ts
+++ b/src/middlewares/RateLimit.ts
@@ -1,5 +1,5 @@
 import { db, MongooseCache, Bucket } from "@fosscord/server-util";
-import { NextFunction, Request, Response } from "express";
+import { IRouterHandler, NextFunction, Request, Response } from "express";
 import { getIpAdress } from "../util/ipAddress";
 import { API_PREFIX_TRAILING_SLASH } from "./Authentication";
 
@@ -43,10 +43,10 @@ export default function RateLimit(opts: {
 	error?: boolean;
 	success?: boolean;
 	onylIp?: boolean;
-}) {
+}): any {
 	Cache.init(); // will only initalize it once
 
-	return async (req: Request, res: Response, next: NextFunction) => {
+	return async (req: Request, res: Response, next: NextFunction): Promise<any> => {
 		const bucket_id = opts.bucket || req.originalUrl.replace(API_PREFIX_TRAILING_SLASH, "");
 		var user_id = getIpAdress(req);
 		if (!opts.onylIp && req.user_id) user_id = req.user_id;