summary refs log tree commit diff
path: root/cdn
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-08-15 00:10:54 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-08-15 00:10:54 +0200
commit6cee68c1e3d5c8e08b8b65ddf6da97c378ec923c (patch)
tree27089442faa8a4613da5262d28be4c9a5ef56d63 /cdn
parent:art: clean up server bundle (diff)
downloadserver-6cee68c1e3d5c8e08b8b65ddf6da97c378ec923c.tar.xz
:sparkles: start.bat and start.sh script
Diffstat (limited to 'cdn')
-rw-r--r--cdn/package-lock.json430
-rw-r--r--cdn/package.json20
2 files changed, 137 insertions, 313 deletions
diff --git a/cdn/package-lock.json b/cdn/package-lock.json
index a539832a..6639eb62 100644
--- a/cdn/package-lock.json
+++ b/cdn/package-lock.json
@@ -10,6 +10,15 @@
 			"license": "ISC",
 			"dependencies": {
 				"@fosscord/util": "file:../util",
+				"@types/body-parser": "^1.19.0",
+				"@types/btoa": "^1.2.3",
+				"@types/dotenv": "^8.2.0",
+				"@types/express": "^4.17.12",
+				"@types/fs-extra": "^9.0.12",
+				"@types/multer": "^1.4.7",
+				"@types/node": "^14.17.0",
+				"@types/node-fetch": "^2.5.7",
+				"@types/uuid": "^8.3.0",
 				"body-parser": "^1.19.0",
 				"btoa": "^1.2.1",
 				"cheerio": "^1.0.0-rc.5",
@@ -25,18 +34,8 @@
 				"missing-native-js-functions": "^1.0.8",
 				"multer": "^1.4.2",
 				"node-fetch": "^2.6.1",
+				"typescript": "^4.1.2",
 				"uuid": "^8.3.2"
-			},
-			"devDependencies": {
-				"@types/body-parser": "^1.19.0",
-				"@types/btoa": "^1.2.3",
-				"@types/dotenv": "^8.2.0",
-				"@types/express": "^4.17.12",
-				"@types/fs-extra": "^9.0.12",
-				"@types/multer": "^1.4.7",
-				"@types/node": "^14.17.0",
-				"@types/node-fetch": "^2.5.7",
-				"@types/uuid": "^8.3.0"
 			}
 		},
 		"../util": {
@@ -44,13 +43,14 @@
 			"version": "1.3.55",
 			"hasInstallScript": true,
 			"license": "GPLV3",
-			"devDependencies": {
+			"dependencies": {
 				"@types/amqplib": "^0.8.1",
 				"@types/jsonwebtoken": "^8.5.0",
 				"@types/mongodb": "^3.6.9",
 				"@types/mongoose-autopopulate": "^0.10.1",
 				"@types/mongoose-lean-virtuals": "^0.5.1",
 				"@types/node": "^14.17.9",
+				"@types/node-fetch": "^2.5.12",
 				"ajv": "^8.5.0",
 				"amqplib": "^0.8.0",
 				"dot-prop": "^6.0.1",
@@ -60,13 +60,13 @@
 				"mongodb": "^3.6.9",
 				"mongoose": "^5.13.7",
 				"mongoose-autopopulate": "^0.12.3",
+				"node-fetch": "^2.6.1",
 				"typescript": "^4.1.3"
 			}
 		},
 		"../util/node_modules/@types/amqplib": {
 			"version": "0.8.1",
 			"integrity": "sha512-8dCjF+dHZ8Y6JOoHD1BMnxP0quAncvZq4wA/lS072NjX9vIzVRSMcmfKy2Os8ZQ8VWWp74MD09GMbVbKS6/Fxw==",
-			"dev": true,
 			"dependencies": {
 				"@types/bluebird": "*",
 				"@types/node": "*"
@@ -74,13 +74,11 @@
 		},
 		"../util/node_modules/@types/bluebird": {
 			"version": "3.5.36",
-			"integrity": "sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q==",
-			"dev": true
+			"integrity": "sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q=="
 		},
 		"../util/node_modules/@types/bson": {
 			"version": "4.0.5",
 			"integrity": "sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg==",
-			"dev": true,
 			"dependencies": {
 				"@types/node": "*"
 			}
@@ -88,7 +86,6 @@
 		"../util/node_modules/@types/jsonwebtoken": {
 			"version": "8.5.4",
 			"integrity": "sha512-4L8msWK31oXwdtC81RmRBAULd0ShnAHjBuKT9MRQpjP0piNrZdXyTRcKY9/UIfhGeKIT4PvF5amOOUbbT/9Wpg==",
-			"dev": true,
 			"dependencies": {
 				"@types/node": "*"
 			}
@@ -96,7 +93,6 @@
 		"../util/node_modules/@types/mongodb": {
 			"version": "3.6.9",
 			"integrity": "sha512-2XSGr/+IOKeFQ5tU9ATcIiIr7bpHqWyOXNGLOOhp0kg2NnfEvoKZF1SZ25j4zvJRqM2WeSUjfWSvymFJ3HBGJQ==",
-			"dev": true,
 			"dependencies": {
 				"@types/bson": "*",
 				"@types/node": "*"
@@ -105,7 +101,6 @@
 		"../util/node_modules/@types/mongoose": {
 			"version": "5.10.5",
 			"integrity": "sha512-37QMIA954T3n+HSksSNLlxZsqF8fMJu5S4dyPBod6gRxGtsXlQ9jUtL8BE8Seimv99u79eLXI3bggoCnSQ/fxQ==",
-			"dev": true,
 			"dependencies": {
 				"@types/mongodb": "*",
 				"@types/node": "*"
@@ -114,7 +109,6 @@
 		"../util/node_modules/@types/mongoose-autopopulate": {
 			"version": "0.10.2",
 			"integrity": "sha512-YSxSEhszXK9E+7VRLdpYjkXqcRXOPFtG0xZea9n7A+oaHhZ1lSVBm/WvK2Rr746NPrTm/k1tR6uezyG6kyinyg==",
-			"dev": true,
 			"dependencies": {
 				"@types/mongoose": "5.10.5"
 			}
@@ -122,20 +116,17 @@
 		"../util/node_modules/@types/mongoose-lean-virtuals": {
 			"version": "0.5.2",
 			"integrity": "sha512-TpAX2RkFXLtNjyciiYxdvYpVuCAv/g1alFTl4ErJWvSOA+DuNDNvfXSH3c8/DXC1ZBzO47TCwHaxI/PET4sqxQ==",
-			"dev": true,
 			"dependencies": {
 				"@types/mongoose": "5.10.5"
 			}
 		},
 		"../util/node_modules/@types/node": {
 			"version": "14.17.9",
-			"integrity": "sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g==",
-			"dev": true
+			"integrity": "sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g=="
 		},
 		"../util/node_modules/ajv": {
 			"version": "8.6.2",
 			"integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==",
-			"dev": true,
 			"dependencies": {
 				"fast-deep-equal": "^3.1.1",
 				"json-schema-traverse": "^1.0.0",
@@ -150,7 +141,6 @@
 		"../util/node_modules/amqplib": {
 			"version": "0.8.0",
 			"integrity": "sha512-icU+a4kkq4Y1PS4NNi+YPDMwdlbFcZ1EZTQT2nigW3fvOb6AOgUQ9+Mk4ue0Zu5cBg/XpDzB40oH10ysrk2dmA==",
-			"dev": true,
 			"dependencies": {
 				"bitsyntax": "~0.1.0",
 				"bluebird": "^3.7.2",
@@ -166,7 +156,6 @@
 		"../util/node_modules/bitsyntax": {
 			"version": "0.1.0",
 			"integrity": "sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==",
-			"dev": true,
 			"dependencies": {
 				"buffer-more-ints": "~1.0.0",
 				"debug": "~2.6.9",
@@ -178,13 +167,11 @@
 		},
 		"../util/node_modules/bitsyntax/node_modules/safe-buffer": {
 			"version": "5.1.2",
-			"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-			"dev": true
+			"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
 		},
 		"../util/node_modules/bl": {
 			"version": "2.2.1",
 			"integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==",
-			"dev": true,
 			"dependencies": {
 				"readable-stream": "^2.3.5",
 				"safe-buffer": "^5.1.1"
@@ -192,13 +179,11 @@
 		},
 		"../util/node_modules/bl/node_modules/isarray": {
 			"version": "1.0.0",
-			"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-			"dev": true
+			"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
 		},
 		"../util/node_modules/bl/node_modules/readable-stream": {
 			"version": "2.3.7",
 			"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-			"dev": true,
 			"dependencies": {
 				"core-util-is": "~1.0.0",
 				"inherits": "~2.0.3",
@@ -211,54 +196,45 @@
 		},
 		"../util/node_modules/bl/node_modules/readable-stream/node_modules/safe-buffer": {
 			"version": "5.1.2",
-			"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-			"dev": true
+			"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
 		},
 		"../util/node_modules/bl/node_modules/string_decoder": {
 			"version": "1.1.1",
 			"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-			"dev": true,
 			"dependencies": {
 				"safe-buffer": "~5.1.0"
 			}
 		},
 		"../util/node_modules/bl/node_modules/string_decoder/node_modules/safe-buffer": {
 			"version": "5.1.2",
-			"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-			"dev": true
+			"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
 		},
 		"../util/node_modules/bluebird": {
 			"version": "3.7.2",
-			"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
-			"dev": true
+			"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
 		},
 		"../util/node_modules/bson": {
 			"version": "1.1.6",
 			"integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==",
-			"dev": true,
 			"engines": {
 				"node": ">=0.6.19"
 			}
 		},
 		"../util/node_modules/buffer-equal-constant-time": {
 			"version": "1.0.1",
-			"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=",
-			"dev": true
+			"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
 		},
 		"../util/node_modules/buffer-more-ints": {
 			"version": "1.0.0",
-			"integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==",
-			"dev": true
+			"integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg=="
 		},
 		"../util/node_modules/core-util-is": {
 			"version": "1.0.2",
-			"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
-			"dev": true
+			"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
 		},
 		"../util/node_modules/debug": {
 			"version": "2.6.9",
 			"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-			"dev": true,
 			"dependencies": {
 				"ms": "2.0.0"
 			}
@@ -266,7 +242,6 @@
 		"../util/node_modules/denque": {
 			"version": "1.5.0",
 			"integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==",
-			"dev": true,
 			"engines": {
 				"node": ">=0.10"
 			}
@@ -274,7 +249,6 @@
 		"../util/node_modules/dot-prop": {
 			"version": "6.0.1",
 			"integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
-			"dev": true,
 			"dependencies": {
 				"is-obj": "^2.0.0"
 			},
@@ -288,7 +262,6 @@
 		"../util/node_modules/ecdsa-sig-formatter": {
 			"version": "1.0.11",
 			"integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
-			"dev": true,
 			"dependencies": {
 				"safe-buffer": "^5.0.1"
 			}
@@ -296,43 +269,36 @@
 		"../util/node_modules/env-paths": {
 			"version": "2.2.1",
 			"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
-			"dev": true,
 			"engines": {
 				"node": ">=6"
 			}
 		},
 		"../util/node_modules/fast-deep-equal": {
 			"version": "3.1.3",
-			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-			"dev": true
+			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
 		},
 		"../util/node_modules/inherits": {
 			"version": "2.0.4",
-			"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-			"dev": true
+			"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
 		},
 		"../util/node_modules/is-obj": {
 			"version": "2.0.0",
 			"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
-			"dev": true,
 			"engines": {
 				"node": ">=8"
 			}
 		},
 		"../util/node_modules/isarray": {
 			"version": "0.0.1",
-			"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-			"dev": true
+			"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
 		},
 		"../util/node_modules/json-schema-traverse": {
 			"version": "1.0.0",
-			"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-			"dev": true
+			"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
 		},
 		"../util/node_modules/jsonwebtoken": {
 			"version": "8.5.1",
 			"integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
-			"dev": true,
 			"dependencies": {
 				"jws": "^3.2.2",
 				"lodash.includes": "^4.3.0",
@@ -352,13 +318,11 @@
 		},
 		"../util/node_modules/jsonwebtoken/node_modules/ms": {
 			"version": "2.1.3",
-			"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-			"dev": true
+			"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
 		},
 		"../util/node_modules/jwa": {
 			"version": "1.4.1",
 			"integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
-			"dev": true,
 			"dependencies": {
 				"buffer-equal-constant-time": "1.0.1",
 				"ecdsa-sig-formatter": "1.0.11",
@@ -368,7 +332,6 @@
 		"../util/node_modules/jws": {
 			"version": "3.2.2",
 			"integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
-			"dev": true,
 			"dependencies": {
 				"jwa": "^1.4.1",
 				"safe-buffer": "^5.0.1"
@@ -376,59 +339,48 @@
 		},
 		"../util/node_modules/kareem": {
 			"version": "2.3.2",
-			"integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==",
-			"dev": true
+			"integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ=="
 		},
 		"../util/node_modules/lodash.includes": {
 			"version": "4.3.0",
-			"integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=",
-			"dev": true
+			"integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
 		},
 		"../util/node_modules/lodash.isboolean": {
 			"version": "3.0.3",
-			"integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=",
-			"dev": true
+			"integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
 		},
 		"../util/node_modules/lodash.isinteger": {
 			"version": "4.0.4",
-			"integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=",
-			"dev": true
+			"integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
 		},
 		"../util/node_modules/lodash.isnumber": {
 			"version": "3.0.3",
-			"integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=",
-			"dev": true
+			"integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
 		},
 		"../util/node_modules/lodash.isplainobject": {
 			"version": "4.0.6",
-			"integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
-			"dev": true
+			"integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
 		},
 		"../util/node_modules/lodash.isstring": {
 			"version": "4.0.1",
-			"integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
-			"dev": true
+			"integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
 		},
 		"../util/node_modules/lodash.once": {
 			"version": "4.1.1",
-			"integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=",
-			"dev": true
+			"integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
 		},
 		"../util/node_modules/memory-pager": {
 			"version": "1.5.0",
 			"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
-			"dev": true,
 			"optional": true
 		},
 		"../util/node_modules/missing-native-js-functions": {
 			"version": "1.2.10",
-			"integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g==",
-			"dev": true
+			"integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g=="
 		},
 		"../util/node_modules/mongodb": {
 			"version": "3.6.11",
 			"integrity": "sha512-4Y4lTFHDHZZdgMaHmojtNAlqkvddX2QQBEN0K//GzxhGwlI9tZ9R0vhbjr1Decw+TF7qK0ZLjQT292XgHRRQgw==",
-			"dev": true,
 			"dependencies": {
 				"bl": "^2.2.1",
 				"bson": "^1.1.4",
@@ -466,7 +418,6 @@
 		"../util/node_modules/mongoose": {
 			"version": "5.13.7",
 			"integrity": "sha512-ADIvftZ+KfoTALMZ0n8HvBlezFhcUd73hQaHQDwQ+3X+JZlqE47fUy9yhFZ2SjT+qzmuaCcIXCfhewIc38t2fQ==",
-			"dev": true,
 			"dependencies": {
 				"@types/mongodb": "^3.5.27",
 				"bson": "^1.1.4",
@@ -493,7 +444,6 @@
 		"../util/node_modules/mongoose-autopopulate": {
 			"version": "0.12.3",
 			"integrity": "sha512-yNmYsfi6OpS/GQ+48mkB0KQ199ExHmmPrt3wt3fyxPHPMtEBGts7yq3wBQR6VgKCPOQaKvCI1URbJCPOtrPeLw==",
-			"dev": true,
 			"peerDependencies": {
 				"mongoose": "4.x || 5.x"
 			}
@@ -501,20 +451,17 @@
 		"../util/node_modules/mongoose-legacy-pluralize": {
 			"version": "1.0.2",
 			"integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==",
-			"dev": true,
 			"peerDependencies": {
 				"mongoose": "*"
 			}
 		},
 		"../util/node_modules/mongoose/node_modules/ms": {
 			"version": "2.1.2",
-			"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-			"dev": true
+			"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
 		},
 		"../util/node_modules/mongoose/node_modules/optional-require": {
 			"version": "1.0.3",
 			"integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==",
-			"dev": true,
 			"engines": {
 				"node": ">=4"
 			}
@@ -522,7 +469,6 @@
 		"../util/node_modules/mpath": {
 			"version": "0.8.3",
 			"integrity": "sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA==",
-			"dev": true,
 			"engines": {
 				"node": ">=4.0.0"
 			}
@@ -530,7 +476,6 @@
 		"../util/node_modules/mquery": {
 			"version": "3.2.5",
 			"integrity": "sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==",
-			"dev": true,
 			"dependencies": {
 				"bluebird": "3.5.1",
 				"debug": "3.1.0",
@@ -544,31 +489,26 @@
 		},
 		"../util/node_modules/mquery/node_modules/bluebird": {
 			"version": "3.5.1",
-			"integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
-			"dev": true
+			"integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
 		},
 		"../util/node_modules/mquery/node_modules/debug": {
 			"version": "3.1.0",
 			"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-			"dev": true,
 			"dependencies": {
 				"ms": "2.0.0"
 			}
 		},
 		"../util/node_modules/mquery/node_modules/safe-buffer": {
 			"version": "5.1.2",
-			"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-			"dev": true
+			"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
 		},
 		"../util/node_modules/ms": {
 			"version": "2.0.0",
-			"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-			"dev": true
+			"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
 		},
 		"../util/node_modules/optional-require": {
 			"version": "1.1.7",
 			"integrity": "sha512-cIeRZocXsZnZYn+SevbtSqNlLbeoS4mLzuNn4fvXRMDRNhTGg0sxuKXl0FnZCtnew85LorNxIbZp5OeliILhMw==",
-			"dev": true,
 			"dependencies": {
 				"require-at": "^1.0.6"
 			},
@@ -578,26 +518,22 @@
 		},
 		"../util/node_modules/process-nextick-args": {
 			"version": "2.0.1",
-			"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-			"dev": true
+			"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
 		},
 		"../util/node_modules/punycode": {
 			"version": "2.1.1",
 			"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-			"dev": true,
 			"engines": {
 				"node": ">=6"
 			}
 		},
 		"../util/node_modules/querystringify": {
 			"version": "2.2.0",
-			"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
-			"dev": true
+			"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
 		},
 		"../util/node_modules/readable-stream": {
 			"version": "1.1.14",
 			"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
-			"dev": true,
 			"dependencies": {
 				"core-util-is": "~1.0.0",
 				"inherits": "~2.0.1",
@@ -607,13 +543,11 @@
 		},
 		"../util/node_modules/regexp-clone": {
 			"version": "1.0.0",
-			"integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==",
-			"dev": true
+			"integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
 		},
 		"../util/node_modules/require-at": {
 			"version": "1.0.6",
 			"integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==",
-			"dev": true,
 			"engines": {
 				"node": ">=4"
 			}
@@ -621,20 +555,17 @@
 		"../util/node_modules/require-from-string": {
 			"version": "2.0.2",
 			"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
-			"dev": true,
 			"engines": {
 				"node": ">=0.10.0"
 			}
 		},
 		"../util/node_modules/requires-port": {
 			"version": "1.0.0",
-			"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
-			"dev": true
+			"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
 		},
 		"../util/node_modules/safe-buffer": {
 			"version": "5.2.1",
 			"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-			"dev": true,
 			"funding": [
 				{
 					"type": "github",
@@ -653,7 +584,6 @@
 		"../util/node_modules/saslprep": {
 			"version": "1.0.3",
 			"integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
-			"dev": true,
 			"optional": true,
 			"dependencies": {
 				"sparse-bitfield": "^3.0.3"
@@ -665,25 +595,21 @@
 		"../util/node_modules/semver": {
 			"version": "5.7.1",
 			"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-			"dev": true,
 			"bin": {
 				"semver": "bin/semver"
 			}
 		},
 		"../util/node_modules/sift": {
 			"version": "13.5.2",
-			"integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==",
-			"dev": true
+			"integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA=="
 		},
 		"../util/node_modules/sliced": {
 			"version": "1.0.1",
-			"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=",
-			"dev": true
+			"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
 		},
 		"../util/node_modules/sparse-bitfield": {
 			"version": "3.0.3",
 			"integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
-			"dev": true,
 			"optional": true,
 			"dependencies": {
 				"memory-pager": "^1.0.2"
@@ -691,13 +617,11 @@
 		},
 		"../util/node_modules/string_decoder": {
 			"version": "0.10.31",
-			"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-			"dev": true
+			"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
 		},
 		"../util/node_modules/typescript": {
 			"version": "4.3.5",
 			"integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
-			"dev": true,
 			"bin": {
 				"tsc": "bin/tsc",
 				"tsserver": "bin/tsserver"
@@ -709,7 +633,6 @@
 		"../util/node_modules/uri-js": {
 			"version": "4.4.1",
 			"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-			"dev": true,
 			"dependencies": {
 				"punycode": "^2.1.0"
 			}
@@ -717,7 +640,6 @@
 		"../util/node_modules/url-parse": {
 			"version": "1.5.3",
 			"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
-			"dev": true,
 			"dependencies": {
 				"querystringify": "^2.1.1",
 				"requires-port": "^1.0.0"
@@ -725,8 +647,7 @@
 		},
 		"../util/node_modules/util-deprecate": {
 			"version": "1.0.2",
-			"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-			"dev": true
+			"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
 		},
 		"node_modules/@fosscord/util": {
 			"resolved": "../util",
@@ -739,7 +660,6 @@
 		"node_modules/@types/body-parser": {
 			"version": "1.19.1",
 			"integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==",
-			"dev": true,
 			"dependencies": {
 				"@types/connect": "*",
 				"@types/node": "*"
@@ -755,7 +675,6 @@
 		"node_modules/@types/btoa": {
 			"version": "1.2.3",
 			"integrity": "sha512-ANNCZICS/ofxhzUl8V1DniBJs+sFQ+Yg5am1ZwVEf/sxoKY/J2+h5Fuw3xUErlZ7eJLdgzukBjZwnsV6+/2Rmg==",
-			"dev": true,
 			"dependencies": {
 				"@types/node": "*"
 			}
@@ -767,7 +686,6 @@
 		"node_modules/@types/connect": {
 			"version": "3.4.35",
 			"integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
-			"dev": true,
 			"dependencies": {
 				"@types/node": "*"
 			}
@@ -776,7 +694,6 @@
 			"version": "8.2.0",
 			"integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==",
 			"deprecated": "This is a stub types definition. dotenv provides its own type definitions, so you do not need this installed.",
-			"dev": true,
 			"dependencies": {
 				"dotenv": "*"
 			}
@@ -784,7 +701,6 @@
 		"node_modules/@types/express": {
 			"version": "4.17.13",
 			"integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==",
-			"dev": true,
 			"dependencies": {
 				"@types/body-parser": "*",
 				"@types/express-serve-static-core": "^4.17.18",
@@ -795,7 +711,6 @@
 		"node_modules/@types/express-serve-static-core": {
 			"version": "4.17.24",
 			"integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==",
-			"dev": true,
 			"dependencies": {
 				"@types/node": "*",
 				"@types/qs": "*",
@@ -805,15 +720,13 @@
 		"node_modules/@types/fs-extra": {
 			"version": "9.0.12",
 			"integrity": "sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==",
-			"dev": true,
 			"dependencies": {
 				"@types/node": "*"
 			}
 		},
 		"node_modules/@types/mime": {
 			"version": "1.3.2",
-			"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
-			"dev": true
+			"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
 		},
 		"node_modules/@types/mocha": {
 			"version": "8.2.3",
@@ -830,7 +743,6 @@
 		"node_modules/@types/multer": {
 			"version": "1.4.7",
 			"integrity": "sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==",
-			"dev": true,
 			"dependencies": {
 				"@types/express": "*"
 			}
@@ -842,7 +754,6 @@
 		"node_modules/@types/node-fetch": {
 			"version": "2.5.12",
 			"integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==",
-			"dev": true,
 			"dependencies": {
 				"@types/node": "*",
 				"form-data": "^3.0.0"
@@ -850,18 +761,15 @@
 		},
 		"node_modules/@types/qs": {
 			"version": "6.9.7",
-			"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
-			"dev": true
+			"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
 		},
 		"node_modules/@types/range-parser": {
 			"version": "1.2.4",
-			"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
-			"dev": true
+			"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
 		},
 		"node_modules/@types/serve-static": {
 			"version": "1.13.10",
 			"integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==",
-			"dev": true,
 			"dependencies": {
 				"@types/mime": "^1",
 				"@types/node": "*"
@@ -876,8 +784,7 @@
 		},
 		"node_modules/@types/uuid": {
 			"version": "8.3.1",
-			"integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==",
-			"dev": true
+			"integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg=="
 		},
 		"node_modules/accepts": {
 			"version": "1.3.7",
@@ -913,8 +820,7 @@
 		},
 		"node_modules/asynckit": {
 			"version": "0.4.0",
-			"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
-			"dev": true
+			"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
 		},
 		"node_modules/bl": {
 			"version": "2.2.1",
@@ -1072,7 +978,6 @@
 		"node_modules/combined-stream": {
 			"version": "1.0.8",
 			"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-			"dev": true,
 			"dependencies": {
 				"delayed-stream": "~1.0.0"
 			},
@@ -1159,7 +1064,6 @@
 		"node_modules/delayed-stream": {
 			"version": "1.0.0",
 			"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
-			"dev": true,
 			"engines": {
 				"node": ">=0.4.0"
 			}
@@ -1387,7 +1291,6 @@
 		"node_modules/form-data": {
 			"version": "3.0.1",
 			"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
-			"dev": true,
 			"dependencies": {
 				"asynckit": "^0.4.0",
 				"combined-stream": "^1.0.8",
@@ -2135,6 +2038,18 @@
 			"version": "0.0.6",
 			"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
 		},
+		"node_modules/typescript": {
+			"version": "4.3.5",
+			"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
+			"integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
+			"bin": {
+				"tsc": "bin/tsc",
+				"tsserver": "bin/tsserver"
+			},
+			"engines": {
+				"node": ">=4.2.0"
+			}
+		},
 		"node_modules/universalify": {
 			"version": "2.0.0",
 			"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
@@ -2192,6 +2107,7 @@
 				"@types/mongoose-autopopulate": "^0.10.1",
 				"@types/mongoose-lean-virtuals": "^0.5.1",
 				"@types/node": "^14.17.9",
+				"@types/node-fetch": "^2.5.12",
 				"ajv": "^8.5.0",
 				"amqplib": "^0.8.0",
 				"dot-prop": "^6.0.1",
@@ -2201,13 +2117,13 @@
 				"mongodb": "^3.6.9",
 				"mongoose": "^5.13.7",
 				"mongoose-autopopulate": "^0.12.3",
+				"node-fetch": "^2.6.1",
 				"typescript": "^4.1.3"
 			},
 			"dependencies": {
 				"@types/amqplib": {
 					"version": "0.8.1",
 					"integrity": "sha512-8dCjF+dHZ8Y6JOoHD1BMnxP0quAncvZq4wA/lS072NjX9vIzVRSMcmfKy2Os8ZQ8VWWp74MD09GMbVbKS6/Fxw==",
-					"dev": true,
 					"requires": {
 						"@types/bluebird": "*",
 						"@types/node": "*"
@@ -2215,13 +2131,11 @@
 				},
 				"@types/bluebird": {
 					"version": "3.5.36",
-					"integrity": "sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q==",
-					"dev": true
+					"integrity": "sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q=="
 				},
 				"@types/bson": {
 					"version": "4.0.5",
 					"integrity": "sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg==",
-					"dev": true,
 					"requires": {
 						"@types/node": "*"
 					}
@@ -2229,7 +2143,6 @@
 				"@types/jsonwebtoken": {
 					"version": "8.5.4",
 					"integrity": "sha512-4L8msWK31oXwdtC81RmRBAULd0ShnAHjBuKT9MRQpjP0piNrZdXyTRcKY9/UIfhGeKIT4PvF5amOOUbbT/9Wpg==",
-					"dev": true,
 					"requires": {
 						"@types/node": "*"
 					}
@@ -2237,7 +2150,6 @@
 				"@types/mongodb": {
 					"version": "3.6.9",
 					"integrity": "sha512-2XSGr/+IOKeFQ5tU9ATcIiIr7bpHqWyOXNGLOOhp0kg2NnfEvoKZF1SZ25j4zvJRqM2WeSUjfWSvymFJ3HBGJQ==",
-					"dev": true,
 					"requires": {
 						"@types/bson": "*",
 						"@types/node": "*"
@@ -2246,7 +2158,6 @@
 				"@types/mongoose": {
 					"version": "5.10.5",
 					"integrity": "sha512-37QMIA954T3n+HSksSNLlxZsqF8fMJu5S4dyPBod6gRxGtsXlQ9jUtL8BE8Seimv99u79eLXI3bggoCnSQ/fxQ==",
-					"dev": true,
 					"requires": {
 						"@types/mongodb": "*",
 						"@types/node": "*"
@@ -2255,7 +2166,6 @@
 				"@types/mongoose-autopopulate": {
 					"version": "0.10.2",
 					"integrity": "sha512-YSxSEhszXK9E+7VRLdpYjkXqcRXOPFtG0xZea9n7A+oaHhZ1lSVBm/WvK2Rr746NPrTm/k1tR6uezyG6kyinyg==",
-					"dev": true,
 					"requires": {
 						"@types/mongoose": "5.10.5"
 					}
@@ -2263,20 +2173,17 @@
 				"@types/mongoose-lean-virtuals": {
 					"version": "0.5.2",
 					"integrity": "sha512-TpAX2RkFXLtNjyciiYxdvYpVuCAv/g1alFTl4ErJWvSOA+DuNDNvfXSH3c8/DXC1ZBzO47TCwHaxI/PET4sqxQ==",
-					"dev": true,
 					"requires": {
 						"@types/mongoose": "5.10.5"
 					}
 				},
 				"@types/node": {
 					"version": "14.17.9",
-					"integrity": "sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g==",
-					"dev": true
+					"integrity": "sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g=="
 				},
 				"ajv": {
 					"version": "8.6.2",
 					"integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==",
-					"dev": true,
 					"requires": {
 						"fast-deep-equal": "^3.1.1",
 						"json-schema-traverse": "^1.0.0",
@@ -2287,7 +2194,6 @@
 				"amqplib": {
 					"version": "0.8.0",
 					"integrity": "sha512-icU+a4kkq4Y1PS4NNi+YPDMwdlbFcZ1EZTQT2nigW3fvOb6AOgUQ9+Mk4ue0Zu5cBg/XpDzB40oH10ysrk2dmA==",
-					"dev": true,
 					"requires": {
 						"bitsyntax": "~0.1.0",
 						"bluebird": "^3.7.2",
@@ -2300,7 +2206,6 @@
 				"bitsyntax": {
 					"version": "0.1.0",
 					"integrity": "sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==",
-					"dev": true,
 					"requires": {
 						"buffer-more-ints": "~1.0.0",
 						"debug": "~2.6.9",
@@ -2309,15 +2214,13 @@
 					"dependencies": {
 						"safe-buffer": {
 							"version": "5.1.2",
-							"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-							"dev": true
+							"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
 						}
 					}
 				},
 				"bl": {
 					"version": "2.2.1",
 					"integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==",
-					"dev": true,
 					"requires": {
 						"readable-stream": "^2.3.5",
 						"safe-buffer": "^5.1.1"
@@ -2325,13 +2228,11 @@
 					"dependencies": {
 						"isarray": {
 							"version": "1.0.0",
-							"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-							"dev": true
+							"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
 						},
 						"readable-stream": {
 							"version": "2.3.7",
 							"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-							"dev": true,
 							"requires": {
 								"core-util-is": "~1.0.0",
 								"inherits": "~2.0.3",
@@ -2344,23 +2245,20 @@
 							"dependencies": {
 								"safe-buffer": {
 									"version": "5.1.2",
-									"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-									"dev": true
+									"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
 								}
 							}
 						},
 						"string_decoder": {
 							"version": "1.1.1",
 							"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-							"dev": true,
 							"requires": {
 								"safe-buffer": "~5.1.0"
 							},
 							"dependencies": {
 								"safe-buffer": {
 									"version": "5.1.2",
-									"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-									"dev": true
+									"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
 								}
 							}
 						}
@@ -2368,46 +2266,38 @@
 				},
 				"bluebird": {
 					"version": "3.7.2",
-					"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
-					"dev": true
+					"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
 				},
 				"bson": {
 					"version": "1.1.6",
-					"integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==",
-					"dev": true
+					"integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg=="
 				},
 				"buffer-equal-constant-time": {
 					"version": "1.0.1",
-					"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=",
-					"dev": true
+					"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
 				},
 				"buffer-more-ints": {
 					"version": "1.0.0",
-					"integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==",
-					"dev": true
+					"integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg=="
 				},
 				"core-util-is": {
 					"version": "1.0.2",
-					"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
-					"dev": true
+					"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
 				},
 				"debug": {
 					"version": "2.6.9",
 					"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-					"dev": true,
 					"requires": {
 						"ms": "2.0.0"
 					}
 				},
 				"denque": {
 					"version": "1.5.0",
-					"integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==",
-					"dev": true
+					"integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ=="
 				},
 				"dot-prop": {
 					"version": "6.0.1",
 					"integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
-					"dev": true,
 					"requires": {
 						"is-obj": "^2.0.0"
 					}
@@ -2415,45 +2305,37 @@
 				"ecdsa-sig-formatter": {
 					"version": "1.0.11",
 					"integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
-					"dev": true,
 					"requires": {
 						"safe-buffer": "^5.0.1"
 					}
 				},
 				"env-paths": {
 					"version": "2.2.1",
-					"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
-					"dev": true
+					"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="
 				},
 				"fast-deep-equal": {
 					"version": "3.1.3",
-					"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
-					"dev": true
+					"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
 				},
 				"inherits": {
 					"version": "2.0.4",
-					"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-					"dev": true
+					"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
 				},
 				"is-obj": {
 					"version": "2.0.0",
-					"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
-					"dev": true
+					"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
 				},
 				"isarray": {
 					"version": "0.0.1",
-					"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
-					"dev": true
+					"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
 				},
 				"json-schema-traverse": {
 					"version": "1.0.0",
-					"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
-					"dev": true
+					"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
 				},
 				"jsonwebtoken": {
 					"version": "8.5.1",
 					"integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
-					"dev": true,
 					"requires": {
 						"jws": "^3.2.2",
 						"lodash.includes": "^4.3.0",
@@ -2469,15 +2351,13 @@
 					"dependencies": {
 						"ms": {
 							"version": "2.1.3",
-							"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
-							"dev": true
+							"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
 						}
 					}
 				},
 				"jwa": {
 					"version": "1.4.1",
 					"integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
-					"dev": true,
 					"requires": {
 						"buffer-equal-constant-time": "1.0.1",
 						"ecdsa-sig-formatter": "1.0.11",
@@ -2487,7 +2367,6 @@
 				"jws": {
 					"version": "3.2.2",
 					"integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
-					"dev": true,
 					"requires": {
 						"jwa": "^1.4.1",
 						"safe-buffer": "^5.0.1"
@@ -2495,59 +2374,48 @@
 				},
 				"kareem": {
 					"version": "2.3.2",
-					"integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==",
-					"dev": true
+					"integrity": "sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ=="
 				},
 				"lodash.includes": {
 					"version": "4.3.0",
-					"integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=",
-					"dev": true
+					"integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
 				},
 				"lodash.isboolean": {
 					"version": "3.0.3",
-					"integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=",
-					"dev": true
+					"integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
 				},
 				"lodash.isinteger": {
 					"version": "4.0.4",
-					"integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=",
-					"dev": true
+					"integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
 				},
 				"lodash.isnumber": {
 					"version": "3.0.3",
-					"integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=",
-					"dev": true
+					"integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
 				},
 				"lodash.isplainobject": {
 					"version": "4.0.6",
-					"integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
-					"dev": true
+					"integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
 				},
 				"lodash.isstring": {
 					"version": "4.0.1",
-					"integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
-					"dev": true
+					"integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
 				},
 				"lodash.once": {
 					"version": "4.1.1",
-					"integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=",
-					"dev": true
+					"integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
 				},
 				"memory-pager": {
 					"version": "1.5.0",
 					"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
-					"dev": true,
 					"optional": true
 				},
 				"missing-native-js-functions": {
 					"version": "1.2.10",
-					"integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g==",
-					"dev": true
+					"integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g=="
 				},
 				"mongodb": {
 					"version": "3.6.11",
 					"integrity": "sha512-4Y4lTFHDHZZdgMaHmojtNAlqkvddX2QQBEN0K//GzxhGwlI9tZ9R0vhbjr1Decw+TF7qK0ZLjQT292XgHRRQgw==",
-					"dev": true,
 					"requires": {
 						"bl": "^2.2.1",
 						"bson": "^1.1.4",
@@ -2560,7 +2428,6 @@
 				"mongoose": {
 					"version": "5.13.7",
 					"integrity": "sha512-ADIvftZ+KfoTALMZ0n8HvBlezFhcUd73hQaHQDwQ+3X+JZlqE47fUy9yhFZ2SjT+qzmuaCcIXCfhewIc38t2fQ==",
-					"dev": true,
 					"requires": {
 						"@types/mongodb": "^3.5.27",
 						"bson": "^1.1.4",
@@ -2579,37 +2446,31 @@
 					"dependencies": {
 						"ms": {
 							"version": "2.1.2",
-							"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-							"dev": true
+							"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
 						},
 						"optional-require": {
 							"version": "1.0.3",
-							"integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==",
-							"dev": true
+							"integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA=="
 						}
 					}
 				},
 				"mongoose-autopopulate": {
 					"version": "0.12.3",
 					"integrity": "sha512-yNmYsfi6OpS/GQ+48mkB0KQ199ExHmmPrt3wt3fyxPHPMtEBGts7yq3wBQR6VgKCPOQaKvCI1URbJCPOtrPeLw==",
-					"dev": true,
 					"requires": {}
 				},
 				"mongoose-legacy-pluralize": {
 					"version": "1.0.2",
 					"integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==",
-					"dev": true,
 					"requires": {}
 				},
 				"mpath": {
 					"version": "0.8.3",
-					"integrity": "sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA==",
-					"dev": true
+					"integrity": "sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA=="
 				},
 				"mquery": {
 					"version": "3.2.5",
 					"integrity": "sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==",
-					"dev": true,
 					"requires": {
 						"bluebird": "3.5.1",
 						"debug": "3.1.0",
@@ -2620,56 +2481,47 @@
 					"dependencies": {
 						"bluebird": {
 							"version": "3.5.1",
-							"integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
-							"dev": true
+							"integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
 						},
 						"debug": {
 							"version": "3.1.0",
 							"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
-							"dev": true,
 							"requires": {
 								"ms": "2.0.0"
 							}
 						},
 						"safe-buffer": {
 							"version": "5.1.2",
-							"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-							"dev": true
+							"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
 						}
 					}
 				},
 				"ms": {
 					"version": "2.0.0",
-					"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-					"dev": true
+					"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
 				},
 				"optional-require": {
 					"version": "1.1.7",
 					"integrity": "sha512-cIeRZocXsZnZYn+SevbtSqNlLbeoS4mLzuNn4fvXRMDRNhTGg0sxuKXl0FnZCtnew85LorNxIbZp5OeliILhMw==",
-					"dev": true,
 					"requires": {
 						"require-at": "^1.0.6"
 					}
 				},
 				"process-nextick-args": {
 					"version": "2.0.1",
-					"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-					"dev": true
+					"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
 				},
 				"punycode": {
 					"version": "2.1.1",
-					"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-					"dev": true
+					"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
 				},
 				"querystringify": {
 					"version": "2.2.0",
-					"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
-					"dev": true
+					"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
 				},
 				"readable-stream": {
 					"version": "1.1.14",
 					"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
-					"dev": true,
 					"requires": {
 						"core-util-is": "~1.0.0",
 						"inherits": "~2.0.1",
@@ -2679,33 +2531,27 @@
 				},
 				"regexp-clone": {
 					"version": "1.0.0",
-					"integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==",
-					"dev": true
+					"integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
 				},
 				"require-at": {
 					"version": "1.0.6",
-					"integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==",
-					"dev": true
+					"integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g=="
 				},
 				"require-from-string": {
 					"version": "2.0.2",
-					"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
-					"dev": true
+					"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
 				},
 				"requires-port": {
 					"version": "1.0.0",
-					"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
-					"dev": true
+					"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
 				},
 				"safe-buffer": {
 					"version": "5.2.1",
-					"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
-					"dev": true
+					"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
 				},
 				"saslprep": {
 					"version": "1.0.3",
 					"integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
-					"dev": true,
 					"optional": true,
 					"requires": {
 						"sparse-bitfield": "^3.0.3"
@@ -2713,23 +2559,19 @@
 				},
 				"semver": {
 					"version": "5.7.1",
-					"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-					"dev": true
+					"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
 				},
 				"sift": {
 					"version": "13.5.2",
-					"integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==",
-					"dev": true
+					"integrity": "sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA=="
 				},
 				"sliced": {
 					"version": "1.0.1",
-					"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=",
-					"dev": true
+					"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
 				},
 				"sparse-bitfield": {
 					"version": "3.0.3",
 					"integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
-					"dev": true,
 					"optional": true,
 					"requires": {
 						"memory-pager": "^1.0.2"
@@ -2737,18 +2579,15 @@
 				},
 				"string_decoder": {
 					"version": "0.10.31",
-					"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
-					"dev": true
+					"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
 				},
 				"typescript": {
 					"version": "4.3.5",
-					"integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
-					"dev": true
+					"integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA=="
 				},
 				"uri-js": {
 					"version": "4.4.1",
 					"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
-					"dev": true,
 					"requires": {
 						"punycode": "^2.1.0"
 					}
@@ -2756,7 +2595,6 @@
 				"url-parse": {
 					"version": "1.5.3",
 					"integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
-					"dev": true,
 					"requires": {
 						"querystringify": "^2.1.1",
 						"requires-port": "^1.0.0"
@@ -2764,8 +2602,7 @@
 				},
 				"util-deprecate": {
 					"version": "1.0.2",
-					"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-					"dev": true
+					"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
 				}
 			}
 		},
@@ -2776,7 +2613,6 @@
 		"@types/body-parser": {
 			"version": "1.19.1",
 			"integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==",
-			"dev": true,
 			"requires": {
 				"@types/connect": "*",
 				"@types/node": "*"
@@ -2792,7 +2628,6 @@
 		"@types/btoa": {
 			"version": "1.2.3",
 			"integrity": "sha512-ANNCZICS/ofxhzUl8V1DniBJs+sFQ+Yg5am1ZwVEf/sxoKY/J2+h5Fuw3xUErlZ7eJLdgzukBjZwnsV6+/2Rmg==",
-			"dev": true,
 			"requires": {
 				"@types/node": "*"
 			}
@@ -2804,7 +2639,6 @@
 		"@types/connect": {
 			"version": "3.4.35",
 			"integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
-			"dev": true,
 			"requires": {
 				"@types/node": "*"
 			}
@@ -2812,7 +2646,6 @@
 		"@types/dotenv": {
 			"version": "8.2.0",
 			"integrity": "sha512-ylSC9GhfRH7m1EUXBXofhgx4lUWmFeQDINW5oLuS+gxWdfUeW4zJdeVTYVkexEW+e2VUvlZR2kGnGGipAWR7kw==",
-			"dev": true,
 			"requires": {
 				"dotenv": "*"
 			}
@@ -2820,7 +2653,6 @@
 		"@types/express": {
 			"version": "4.17.13",
 			"integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==",
-			"dev": true,
 			"requires": {
 				"@types/body-parser": "*",
 				"@types/express-serve-static-core": "^4.17.18",
@@ -2831,7 +2663,6 @@
 		"@types/express-serve-static-core": {
 			"version": "4.17.24",
 			"integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==",
-			"dev": true,
 			"requires": {
 				"@types/node": "*",
 				"@types/qs": "*",
@@ -2841,15 +2672,13 @@
 		"@types/fs-extra": {
 			"version": "9.0.12",
 			"integrity": "sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==",
-			"dev": true,
 			"requires": {
 				"@types/node": "*"
 			}
 		},
 		"@types/mime": {
 			"version": "1.3.2",
-			"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
-			"dev": true
+			"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
 		},
 		"@types/mocha": {
 			"version": "8.2.3",
@@ -2866,7 +2695,6 @@
 		"@types/multer": {
 			"version": "1.4.7",
 			"integrity": "sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==",
-			"dev": true,
 			"requires": {
 				"@types/express": "*"
 			}
@@ -2878,7 +2706,6 @@
 		"@types/node-fetch": {
 			"version": "2.5.12",
 			"integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==",
-			"dev": true,
 			"requires": {
 				"@types/node": "*",
 				"form-data": "^3.0.0"
@@ -2886,18 +2713,15 @@
 		},
 		"@types/qs": {
 			"version": "6.9.7",
-			"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
-			"dev": true
+			"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
 		},
 		"@types/range-parser": {
 			"version": "1.2.4",
-			"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
-			"dev": true
+			"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
 		},
 		"@types/serve-static": {
 			"version": "1.13.10",
 			"integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==",
-			"dev": true,
 			"requires": {
 				"@types/mime": "^1",
 				"@types/node": "*"
@@ -2912,8 +2736,7 @@
 		},
 		"@types/uuid": {
 			"version": "8.3.1",
-			"integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==",
-			"dev": true
+			"integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg=="
 		},
 		"accepts": {
 			"version": "1.3.7",
@@ -2940,8 +2763,7 @@
 		},
 		"asynckit": {
 			"version": "0.4.0",
-			"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
-			"dev": true
+			"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
 		},
 		"bl": {
 			"version": "2.2.1",
@@ -3065,7 +2887,6 @@
 		"combined-stream": {
 			"version": "1.0.8",
 			"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-			"dev": true,
 			"requires": {
 				"delayed-stream": "~1.0.0"
 			}
@@ -3127,8 +2948,7 @@
 		},
 		"delayed-stream": {
 			"version": "1.0.0",
-			"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
-			"dev": true
+			"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
 		},
 		"denque": {
 			"version": "1.5.0",
@@ -3299,7 +3119,6 @@
 		"form-data": {
 			"version": "3.0.1",
 			"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
-			"dev": true,
 			"requires": {
 				"asynckit": "^0.4.0",
 				"combined-stream": "^1.0.8",
@@ -3824,6 +3643,11 @@
 			"version": "0.0.6",
 			"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
 		},
+		"typescript": {
+			"version": "4.3.5",
+			"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
+			"integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA=="
+		},
 		"universalify": {
 			"version": "2.0.0",
 			"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
diff --git a/cdn/package.json b/cdn/package.json
index 7aa188a9..a27b47ea 100644
--- a/cdn/package.json
+++ b/cdn/package.json
@@ -22,6 +22,15 @@
 	"homepage": "https://github.com/discord-open-source/discord-cdn#readme",
 	"dependencies": {
 		"@fosscord/util": "file:../util",
+		"@types/body-parser": "^1.19.0",
+		"@types/btoa": "^1.2.3",
+		"@types/dotenv": "^8.2.0",
+		"@types/express": "^4.17.12",
+		"@types/fs-extra": "^9.0.12",
+		"@types/multer": "^1.4.7",
+		"@types/node": "^14.17.0",
+		"@types/node-fetch": "^2.5.7",
+		"@types/uuid": "^8.3.0",
 		"body-parser": "^1.19.0",
 		"btoa": "^1.2.1",
 		"cheerio": "^1.0.0-rc.5",
@@ -37,16 +46,7 @@
 		"missing-native-js-functions": "^1.0.8",
 		"multer": "^1.4.2",
 		"node-fetch": "^2.6.1",
-		"uuid": "^8.3.2",
 		"typescript": "^4.1.2",
-		"@types/body-parser": "^1.19.0",
-		"@types/btoa": "^1.2.3",
-		"@types/dotenv": "^8.2.0",
-		"@types/express": "^4.17.12",
-		"@types/fs-extra": "^9.0.12",
-		"@types/multer": "^1.4.7",
-		"@types/node": "^14.17.0",
-		"@types/node-fetch": "^2.5.7",
-		"@types/uuid": "^8.3.0"
+		"uuid": "^8.3.2"
 	}
 }