summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--api/assets/openapi.json881
-rw-r--r--api/package-lock.json19
-rw-r--r--api/package.json2
-rw-r--r--api/scripts/generate_openapi_schema.ts128
-rw-r--r--bundle/package-lock.json1389
-rw-r--r--bundle/package.json2
-rw-r--r--cdn/package-lock.json18
-rw-r--r--cdn/package.json2
-rw-r--r--gateway/package-lock.json18
-rw-r--r--gateway/package.json2
-rw-r--r--util/package-lock.json14
-rw-r--r--util/package.json2
12 files changed, 449 insertions, 2028 deletions
diff --git a/api/assets/openapi.json b/api/assets/openapi.json
index a49e4165..5244da36 100644
--- a/api/assets/openapi.json
+++ b/api/assets/openapi.json
@@ -25,46 +25,26 @@
 				"operationId": "",
 				"responses": {
 					"200": {
-						"description": "user found",
+						"description": "User found",
 						"content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserPublic" } } }
 					},
-					"401": {
-						"description": "Unauthorized",
+					"404": {
+						"description": "User not found",
 						"content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } }
-					},
-					"429": {
-						"description": "Rate limit exceeded",
-						"content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } },
-						"headers": {
-							"X-RateLimit-Bucket": {
-								"description": "A unique string denoting the rate limit being encountered (non-inclusive of major parameters in the route path)",
-								"schema": { "type": "string" }
-							},
-							"X-Rate-Limit-Limit": {
-								"description": "The number of allowed requests in the current period",
-								"schema": { "type": "integer" }
-							},
-							"X-Rate-Limit-Remaining": {
-								"description": "The number of remaining requests in the current period",
-								"schema": { "type": "integer" }
-							},
-							"X-Rate-Limit-Reset": {
-								"description": "Date when current period is over in seconds since the Unix epoch",
-								"schema": { "type": "integer" }
-							},
-							"X-Rate-Limit-Reset-After": {
-								"description": "Number of seconds when current period will reset (can have decimal)",
-								"schema": { "type": "number" }
-							},
-							"Retry-After": {
-								"description": "Same as X-Rate-Limit-Reset-After but an integer",
-								"schema": { "type": "integer" }
-							},
-							"X-RateLimit-Global": {
-								"description": "Indicates whether or not all requests from your ip are rate limited",
-								"schema": { "type": "boolean" }
-							}
-						}
+					}
+				}
+			}
+		},
+		"/users/@me": {
+			"get": {
+				"summary": "",
+				"description": "",
+				"parameters": [],
+				"operationId": "",
+				"responses": {
+					"200": {
+						"description": "Authenticated user",
+						"content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserPublic" } } }
 					}
 				}
 			}
@@ -542,6 +522,7 @@
 			"Member": {
 				"type": "object",
 				"properties": {
+					"user_id": { "type": "string" },
 					"user": { "$ref": "#/components/schemas/User" },
 					"guild_id": { "type": "string" },
 					"guild": { "$ref": "#/components/schemas/Guild" },
@@ -555,7 +536,7 @@
 					"settings": { "$ref": "#/components/schemas/UserGuildSettings" },
 					"id": { "type": "string" }
 				},
-				"required": ["deaf", "guild", "guild_id", "id", "joined_at", "mute", "pending", "roles", "settings", "user"]
+				"required": ["deaf", "guild", "guild_id", "id", "joined_at", "mute", "pending", "roles", "settings", "user", "user_id"]
 			},
 			"Role": {
 				"type": "object",
@@ -1078,545 +1059,417 @@
 					"bot": { "type": "boolean" }
 				},
 				"required": ["bio", "bot", "discriminator", "id", "public_flags", "username"]
-			}
-		},
-		"requestBodies": {
-			"BanCreateSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": { "delete_message_days": { "type": "string" }, "reason": { "type": "string" } }
-						}
-					}
+			},
+			"UserPrivate": {
+				"type": "object",
+				"properties": {
+					"locale": { "type": "string" },
+					"disabled": { "type": "boolean" },
+					"username": { "type": "string" },
+					"discriminator": { "type": "string" },
+					"id": { "type": "string" },
+					"public_flags": { "type": "string" },
+					"avatar": { "type": "string" },
+					"accent_color": { "type": "integer" },
+					"banner": { "type": "string" },
+					"bio": { "type": "string" },
+					"bot": { "type": "boolean" },
+					"flags": { "type": "string" },
+					"mfa_enabled": { "type": "boolean" },
+					"email": { "type": "string" },
+					"phone": { "type": "string" },
+					"verified": { "type": "boolean" },
+					"nsfw_allowed": { "type": "boolean" },
+					"premium": { "type": "boolean" },
+					"premium_type": { "type": "integer" }
 				},
-				"description": ""
+				"required": [
+					"bio",
+					"bot",
+					"disabled",
+					"discriminator",
+					"flags",
+					"id",
+					"locale",
+					"mfa_enabled",
+					"nsfw_allowed",
+					"premium",
+					"premium_type",
+					"public_flags",
+					"username",
+					"verified"
+				]
+			},
+			"BanCreateSchema": {
+				"type": "object",
+				"properties": { "delete_message_days": { "type": "string" }, "reason": { "type": "string" } }
 			},
 			"DmChannelCreateSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": {
-								"name": { "type": "string" },
-								"recipients": { "type": "array", "items": { "type": "string" } }
-							},
-							"required": ["recipients"]
-						}
-					}
-				},
-				"description": ""
+				"type": "object",
+				"properties": { "name": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } } },
+				"required": ["recipients"]
 			},
 			"ChannelModifySchema": {
-				"content": {
-					"application/json": {
-						"schema": {
+				"type": "object",
+				"properties": {
+					"name": { "type": "string" },
+					"type": { "type": "integer" },
+					"topic": { "type": "string" },
+					"bitrate": { "type": "integer" },
+					"user_limit": { "type": "integer" },
+					"rate_limit_per_user": { "type": "integer" },
+					"position": { "type": "integer" },
+					"permission_overwrites": {
+						"type": "array",
+						"items": {
 							"type": "object",
 							"properties": {
-								"name": { "type": "string" },
-								"type": { "type": "integer" },
-								"topic": { "type": "string" },
-								"bitrate": { "type": "integer" },
-								"user_limit": { "type": "integer" },
-								"rate_limit_per_user": { "type": "integer" },
-								"position": { "type": "integer" },
-								"permission_overwrites": {
-									"type": "array",
-									"items": {
-										"type": "object",
-										"properties": {
-											"id": { "type": "string" },
-											"type": { "type": "integer" },
-											"allow": { "type": "number" },
-											"deny": { "type": "number" }
-										},
-										"additionalProperties": false,
-										"required": ["allow", "deny", "id", "type"]
-									}
-								},
-								"parent_id": { "type": "string" },
 								"id": { "type": "string" },
-								"nsfw": { "type": "boolean" },
-								"rtc_region": { "type": "string" },
-								"default_auto_archive_duration": { "type": "integer" }
+								"type": { "type": "integer" },
+								"allow": { "type": "number" },
+								"deny": { "type": "number" }
 							},
-							"required": ["name", "type"]
+							"additionalProperties": false,
+							"required": ["allow", "deny", "id", "type"]
 						}
-					}
+					},
+					"parent_id": { "type": "string" },
+					"id": { "type": "string" },
+					"nsfw": { "type": "boolean" },
+					"rtc_region": { "type": "string" },
+					"default_auto_archive_duration": { "type": "integer" }
 				},
-				"description": ""
+				"required": ["name", "type"]
 			},
 			"ChannelGuildPositionUpdateSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "array",
-							"items": {
-								"type": "object",
-								"properties": { "id": { "type": "string" }, "position": { "type": "integer" } },
-								"additionalProperties": false,
-								"required": ["id"]
-							}
-						}
-					}
-				},
-				"description": ""
+				"type": "array",
+				"items": {
+					"type": "object",
+					"properties": { "id": { "type": "string" }, "position": { "type": "integer" } },
+					"additionalProperties": false,
+					"required": ["id"]
+				}
 			},
 			"EmojiCreateSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": {
-								"name": { "type": "string" },
-								"image": { "type": "string" },
-								"roles": { "type": "array", "items": { "type": "string" } }
-							},
-							"required": ["image", "name"]
-						}
-					}
+				"type": "object",
+				"properties": {
+					"name": { "type": "string" },
+					"image": { "type": "string" },
+					"roles": { "type": "array", "items": { "type": "string" } }
 				},
-				"description": ""
+				"required": ["image", "name"]
 			},
 			"GuildCreateSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": {
-								"name": { "type": "string" },
-								"region": { "type": "string" },
-								"icon": { "type": "string" },
-								"channels": { "type": "array", "items": { "$ref": "#/components/requestBodies/ChannelModifySchema" } },
-								"guild_template_code": { "type": "string" },
-								"system_channel_id": { "type": "string" },
-								"rules_channel_id": { "type": "string" }
-							},
-							"required": ["name"]
-						}
-					}
+				"type": "object",
+				"properties": {
+					"name": { "type": "string" },
+					"region": { "type": "string" },
+					"icon": { "type": "string" },
+					"channels": { "type": "array", "items": { "$ref": "#/components/requestBodies/ChannelModifySchema" } },
+					"guild_template_code": { "type": "string" },
+					"system_channel_id": { "type": "string" },
+					"rules_channel_id": { "type": "string" }
 				},
-				"description": ""
+				"required": ["name"]
 			},
 			"GuildUpdateSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": {
-								"banner": { "type": "string" },
-								"splash": { "type": "string" },
-								"description": { "type": "string" },
-								"features": { "type": "array", "items": { "type": "string" } },
-								"verification_level": { "type": "integer" },
-								"default_message_notifications": { "type": "integer" },
-								"system_channel_flags": { "type": "integer" },
-								"explicit_content_filter": { "type": "integer" },
-								"public_updates_channel_id": { "type": "string" },
-								"afk_timeout": { "type": "integer" },
-								"afk_channel_id": { "type": "string" },
-								"preferred_locale": { "type": "string" },
-								"name": { "type": "string" },
-								"region": { "type": "string" },
-								"icon": { "type": "string" },
-								"guild_template_code": { "type": "string" },
-								"system_channel_id": { "type": "string" },
-								"rules_channel_id": { "type": "string" }
-							},
-							"required": ["name"]
-						}
-					}
+				"type": "object",
+				"properties": {
+					"banner": { "type": "string" },
+					"splash": { "type": "string" },
+					"description": { "type": "string" },
+					"features": { "type": "array", "items": { "type": "string" } },
+					"verification_level": { "type": "integer" },
+					"default_message_notifications": { "type": "integer" },
+					"system_channel_flags": { "type": "integer" },
+					"explicit_content_filter": { "type": "integer" },
+					"public_updates_channel_id": { "type": "string" },
+					"afk_timeout": { "type": "integer" },
+					"afk_channel_id": { "type": "string" },
+					"preferred_locale": { "type": "string" },
+					"name": { "type": "string" },
+					"region": { "type": "string" },
+					"icon": { "type": "string" },
+					"guild_template_code": { "type": "string" },
+					"system_channel_id": { "type": "string" },
+					"rules_channel_id": { "type": "string" }
 				},
-				"description": ""
+				"required": ["name"]
 			},
 			"GuildTemplateCreateSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": { "name": { "type": "string" }, "avatar": { "type": "string" } },
-							"required": ["name"]
-						}
-					}
-				},
-				"description": ""
+				"type": "object",
+				"properties": { "name": { "type": "string" }, "avatar": { "type": "string" } },
+				"required": ["name"]
 			},
 			"GuildUpdateWelcomeScreenSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
+				"type": "object",
+				"properties": {
+					"welcome_channels": {
+						"type": "array",
+						"items": {
 							"type": "object",
 							"properties": {
-								"welcome_channels": {
-									"type": "array",
-									"items": {
-										"type": "object",
-										"properties": {
-											"channel_id": { "type": "string" },
-											"description": { "type": "string" },
-											"emoji_id": { "type": "string" },
-											"emoji_name": { "type": "string" }
-										},
-										"additionalProperties": false,
-										"required": ["channel_id", "description", "emoji_name"]
-									}
-								},
-								"enabled": { "type": "boolean" },
-								"description": { "type": "string" }
-							}
+								"channel_id": { "type": "string" },
+								"description": { "type": "string" },
+								"emoji_id": { "type": "string" },
+								"emoji_name": { "type": "string" }
+							},
+							"additionalProperties": false,
+							"required": ["channel_id", "description", "emoji_name"]
 						}
-					}
-				},
-				"description": ""
+					},
+					"enabled": { "type": "boolean" },
+					"description": { "type": "string" }
+				}
 			},
-			"Number": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "" },
-			"Boolean": { "content": { "application/json": { "schema": { "type": "object" } } }, "description": "" },
 			"InviteCreateSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": {
-								"target_user_id": { "type": "string" },
-								"target_type": { "type": "string" },
-								"validate": { "type": "string" },
-								"max_age": { "type": "integer" },
-								"max_uses": { "type": "integer" },
-								"temporary": { "type": "boolean" },
-								"unique": { "type": "boolean" },
-								"target_user": { "type": "string" },
-								"target_user_type": { "type": "integer" }
-							}
-						}
-					}
-				},
-				"description": ""
+				"type": "object",
+				"properties": {
+					"target_user_id": { "type": "string" },
+					"target_type": { "type": "string" },
+					"validate": { "type": "string" },
+					"max_age": { "type": "integer" },
+					"max_uses": { "type": "integer" },
+					"temporary": { "type": "boolean" },
+					"unique": { "type": "boolean" },
+					"target_user": { "type": "string" },
+					"target_user_type": { "type": "integer" }
+				}
 			},
 			"MemberCreateSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": {
-								"id": { "type": "string" },
-								"nick": { "type": "string" },
-								"guild_id": { "type": "string" },
-								"joined_at": { "type": "string", "format": "date-time" }
-							},
-							"required": ["guild_id", "id", "joined_at", "nick"]
-						}
-					}
-				},
-				"description": ""
-			},
-			"MemberNickChangeSchema": {
-				"content": {
-					"application/json": {
-						"schema": { "type": "object", "properties": { "nick": { "type": "string" } }, "required": ["nick"] }
-					}
-				},
-				"description": ""
-			},
-			"MemberChangeSchema": {
-				"content": {
-					"application/json": {
-						"schema": { "type": "object", "properties": { "roles": { "type": "array", "items": { "type": "string" } } } }
-					}
-				},
-				"description": ""
-			},
-			"EmbedType": {
-				"content": {
-					"application/json": { "schema": { "enum": ["article", "gifv", "image", "link", "rich", "video"], "type": "string" } }
-				},
-				"description": ""
-			},
-			"EmbedImage": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": {
-								"url": { "type": "string" },
-								"proxy_url": { "type": "string" },
-								"height": { "type": "integer" },
-								"width": { "type": "integer" }
-							}
-						}
-					}
+				"type": "object",
+				"properties": {
+					"id": { "type": "string" },
+					"nick": { "type": "string" },
+					"guild_id": { "type": "string" },
+					"joined_at": { "type": "string", "format": "date-time" }
 				},
-				"description": ""
+				"required": ["guild_id", "id", "joined_at", "nick"]
 			},
+			"MemberNickChangeSchema": { "type": "object", "properties": { "nick": { "type": "string" } }, "required": ["nick"] },
+			"MemberChangeSchema": { "type": "object", "properties": { "roles": { "type": "array", "items": { "type": "string" } } } },
 			"MessageCreateSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": {
-								"content": { "type": "string" },
-								"nonce": { "type": "string" },
-								"tts": { "type": "boolean" },
-								"flags": { "type": "string" },
-								"embed": {
-									"additionalProperties": false,
-									"type": "object",
-									"properties": {
-										"title": { "type": "string" },
-										"type": { "$ref": "#/components/requestBodies/EmbedType" },
-										"description": { "type": "string" },
-										"url": { "type": "string" },
-										"timestamp": { "type": "string" },
-										"color": { "type": "integer" },
-										"footer": {
-											"type": "object",
-											"properties": {
-												"text": { "type": "string" },
-												"icon_url": { "type": "string" },
-												"proxy_icon_url": { "type": "string" }
-											},
-											"additionalProperties": false,
-											"required": ["text"]
-										},
-										"image": { "$ref": "#/components/requestBodies/EmbedImage" },
-										"thumbnail": { "$ref": "#/components/requestBodies/EmbedImage" },
-										"video": { "$ref": "#/components/requestBodies/EmbedImage" },
-										"provider": {
-											"type": "object",
-											"properties": { "name": { "type": "string" }, "url": { "type": "string" } },
-											"additionalProperties": false
-										},
-										"author": {
-											"type": "object",
-											"properties": {
-												"name": { "type": "string" },
-												"url": { "type": "string" },
-												"icon_url": { "type": "string" },
-												"proxy_icon_url": { "type": "string" }
-											},
-											"additionalProperties": false
-										},
-										"fields": {
-											"type": "array",
-											"items": {
-												"type": "object",
-												"properties": {
-													"name": { "type": "string" },
-													"value": { "type": "string" },
-													"inline": { "type": "boolean" }
-												},
-												"additionalProperties": false,
-												"required": ["name", "value"]
-											}
-										}
-									}
+				"type": "object",
+				"properties": {
+					"content": { "type": "string" },
+					"nonce": { "type": "string" },
+					"tts": { "type": "boolean" },
+					"flags": { "type": "string" },
+					"embed": {
+						"additionalProperties": false,
+						"type": "object",
+						"properties": {
+							"title": { "type": "string" },
+							"type": { "$ref": "#/components/requestBodies/EmbedType" },
+							"description": { "type": "string" },
+							"url": { "type": "string" },
+							"timestamp": { "type": "string" },
+							"color": { "type": "integer" },
+							"footer": {
+								"type": "object",
+								"properties": {
+									"text": { "type": "string" },
+									"icon_url": { "type": "string" },
+									"proxy_icon_url": { "type": "string" }
 								},
-								"allowed_mentions": {
-									"type": "object",
-									"properties": {
-										"parse": { "type": "array", "items": { "type": "string" } },
-										"roles": { "type": "array", "items": { "type": "string" } },
-										"users": { "type": "array", "items": { "type": "string" } },
-										"replied_user": { "type": "boolean" }
-									},
-									"additionalProperties": false
+								"additionalProperties": false,
+								"required": ["text"]
+							},
+							"image": { "$ref": "#/components/requestBodies/EmbedImage" },
+							"thumbnail": { "$ref": "#/components/requestBodies/EmbedImage" },
+							"video": { "$ref": "#/components/requestBodies/EmbedImage" },
+							"provider": {
+								"type": "object",
+								"properties": { "name": { "type": "string" }, "url": { "type": "string" } },
+								"additionalProperties": false
+							},
+							"author": {
+								"type": "object",
+								"properties": {
+									"name": { "type": "string" },
+									"url": { "type": "string" },
+									"icon_url": { "type": "string" },
+									"proxy_icon_url": { "type": "string" }
 								},
-								"message_reference": {
+								"additionalProperties": false
+							},
+							"fields": {
+								"type": "array",
+								"items": {
 									"type": "object",
 									"properties": {
-										"message_id": { "type": "string" },
-										"channel_id": { "type": "string" },
-										"guild_id": { "type": "string" },
-										"fail_if_not_exists": { "type": "boolean" }
+										"name": { "type": "string" },
+										"value": { "type": "string" },
+										"inline": { "type": "boolean" }
 									},
 									"additionalProperties": false,
-									"required": ["channel_id", "message_id"]
-								},
-								"payload_json": { "type": "string" },
-								"file": {}
+									"required": ["name", "value"]
+								}
 							}
 						}
-					}
-				},
-				"description": ""
+					},
+					"allowed_mentions": {
+						"type": "object",
+						"properties": {
+							"parse": { "type": "array", "items": { "type": "string" } },
+							"roles": { "type": "array", "items": { "type": "string" } },
+							"users": { "type": "array", "items": { "type": "string" } },
+							"replied_user": { "type": "boolean" }
+						},
+						"additionalProperties": false
+					},
+					"message_reference": {
+						"type": "object",
+						"properties": {
+							"message_id": { "type": "string" },
+							"channel_id": { "type": "string" },
+							"guild_id": { "type": "string" },
+							"fail_if_not_exists": { "type": "boolean" }
+						},
+						"additionalProperties": false,
+						"required": ["channel_id", "message_id"]
+					},
+					"payload_json": { "type": "string" },
+					"file": {}
+				}
 			},
 			"RoleModifySchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": {
-								"name": { "type": "string" },
-								"permissions": { "type": "number" },
-								"color": { "type": "integer" },
-								"hoist": { "type": "boolean" },
-								"mentionable": { "type": "boolean" },
-								"position": { "type": "integer" }
-							}
-						}
-					}
-				},
-				"description": ""
+				"type": "object",
+				"properties": {
+					"name": { "type": "string" },
+					"permissions": { "type": "number" },
+					"color": { "type": "integer" },
+					"hoist": { "type": "boolean" },
+					"mentionable": { "type": "boolean" },
+					"position": { "type": "integer" }
+				}
 			},
 			"TemplateCreateSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": { "name": { "type": "string" }, "description": { "type": "string" } },
-							"required": ["name"]
-						}
-					}
-				},
-				"description": ""
+				"type": "object",
+				"properties": { "name": { "type": "string" }, "description": { "type": "string" } },
+				"required": ["name"]
 			},
 			"TemplateModifySchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": { "name": { "type": "string" }, "description": { "type": "string" } },
-							"required": ["name"]
-						}
-					}
-				},
-				"description": ""
+				"type": "object",
+				"properties": { "name": { "type": "string" }, "description": { "type": "string" } },
+				"required": ["name"]
 			},
 			"UserModifySchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": {
-								"username": { "type": "string" },
-								"avatar": { "type": "string" },
-								"bio": { "type": "string" },
-								"accent_color": { "type": "integer" },
-								"banner": { "type": "string" },
-								"password": { "type": "string" },
-								"new_password": { "type": "string" },
-								"code": { "type": "string" }
-							}
-						}
-					}
-				},
-				"description": ""
+				"type": "object",
+				"properties": {
+					"username": { "type": "string" },
+					"avatar": { "type": "string" },
+					"bio": { "type": "string" },
+					"accent_color": { "type": "integer" },
+					"banner": { "type": "string" },
+					"password": { "type": "string" },
+					"new_password": { "type": "string" },
+					"code": { "type": "string" }
+				}
 			},
 			"UserSettingsSchema": {
-				"content": {
-					"application/json": {
-						"schema": {
+				"type": "object",
+				"properties": {
+					"afk_timeout": { "type": "integer" },
+					"allow_accessibility_detection": { "type": "boolean" },
+					"animate_emoji": { "type": "boolean" },
+					"animate_stickers": { "type": "integer" },
+					"contact_sync_enabled": { "type": "boolean" },
+					"convert_emoticons": { "type": "boolean" },
+					"custom_status": {
+						"type": "object",
+						"properties": {
+							"emoji_id": { "type": "string" },
+							"emoji_name": { "type": "string" },
+							"expires_at": { "type": "integer" },
+							"text": { "type": "string" }
+						},
+						"additionalProperties": false
+					},
+					"default_guilds_restricted": { "type": "boolean" },
+					"detect_platform_accounts": { "type": "boolean" },
+					"developer_mode": { "type": "boolean" },
+					"disable_games_tab": { "type": "boolean" },
+					"enable_tts_command": { "type": "boolean" },
+					"explicit_content_filter": { "type": "integer" },
+					"friend_source_flags": {
+						"type": "object",
+						"properties": { "all": { "type": "boolean" } },
+						"additionalProperties": false,
+						"required": ["all"]
+					},
+					"gateway_connected": { "type": "boolean" },
+					"gif_auto_play": { "type": "boolean" },
+					"guild_folders": {
+						"type": "array",
+						"items": {
 							"type": "object",
 							"properties": {
-								"afk_timeout": { "type": "integer" },
-								"allow_accessibility_detection": { "type": "boolean" },
-								"animate_emoji": { "type": "boolean" },
-								"animate_stickers": { "type": "integer" },
-								"contact_sync_enabled": { "type": "boolean" },
-								"convert_emoticons": { "type": "boolean" },
-								"custom_status": {
-									"type": "object",
-									"properties": {
-										"emoji_id": { "type": "string" },
-										"emoji_name": { "type": "string" },
-										"expires_at": { "type": "integer" },
-										"text": { "type": "string" }
-									},
-									"additionalProperties": false
-								},
-								"default_guilds_restricted": { "type": "boolean" },
-								"detect_platform_accounts": { "type": "boolean" },
-								"developer_mode": { "type": "boolean" },
-								"disable_games_tab": { "type": "boolean" },
-								"enable_tts_command": { "type": "boolean" },
-								"explicit_content_filter": { "type": "integer" },
-								"friend_source_flags": {
-									"type": "object",
-									"properties": { "all": { "type": "boolean" } },
-									"additionalProperties": false,
-									"required": ["all"]
-								},
-								"gateway_connected": { "type": "boolean" },
-								"gif_auto_play": { "type": "boolean" },
-								"guild_folders": {
-									"type": "array",
-									"items": {
-										"type": "object",
-										"properties": {
-											"color": { "type": "integer" },
-											"guild_ids": { "type": "array", "items": { "type": "string" } },
-											"id": { "type": "integer" },
-											"name": { "type": "string" }
-										},
-										"additionalProperties": false,
-										"required": ["color", "guild_ids", "id", "name"]
-									}
-								},
-								"guild_positions": { "type": "array", "items": { "type": "string" } },
-								"inline_attachment_media": { "type": "boolean" },
-								"inline_embed_media": { "type": "boolean" },
-								"locale": { "type": "string" },
-								"message_display_compact": { "type": "boolean" },
-								"native_phone_integration_enabled": { "type": "boolean" },
-								"render_embeds": { "type": "boolean" },
-								"render_reactions": { "type": "boolean" },
-								"restricted_guilds": { "type": "array", "items": { "type": "string" } },
-								"show_current_game": { "type": "boolean" },
-								"status": { "enum": ["dnd", "idle", "offline", "online"], "type": "string" },
-								"stream_notifications_enabled": { "type": "boolean" },
-								"theme": { "enum": ["dark", "white"], "type": "string" },
-								"timezone_offset": { "type": "integer" }
+								"color": { "type": "integer" },
+								"guild_ids": { "type": "array", "items": { "type": "string" } },
+								"id": { "type": "integer" },
+								"name": { "type": "string" }
 							},
-							"required": [
-								"afk_timeout",
-								"allow_accessibility_detection",
-								"animate_emoji",
-								"animate_stickers",
-								"contact_sync_enabled",
-								"convert_emoticons",
-								"custom_status",
-								"default_guilds_restricted",
-								"detect_platform_accounts",
-								"developer_mode",
-								"disable_games_tab",
-								"enable_tts_command",
-								"explicit_content_filter",
-								"friend_source_flags",
-								"gateway_connected",
-								"gif_auto_play",
-								"guild_folders",
-								"guild_positions",
-								"inline_attachment_media",
-								"inline_embed_media",
-								"locale",
-								"message_display_compact",
-								"native_phone_integration_enabled",
-								"render_embeds",
-								"render_reactions",
-								"restricted_guilds",
-								"show_current_game",
-								"status",
-								"stream_notifications_enabled",
-								"theme",
-								"timezone_offset"
-							]
+							"additionalProperties": false,
+							"required": ["color", "guild_ids", "id", "name"]
 						}
-					}
+					},
+					"guild_positions": { "type": "array", "items": { "type": "string" } },
+					"inline_attachment_media": { "type": "boolean" },
+					"inline_embed_media": { "type": "boolean" },
+					"locale": { "type": "string" },
+					"message_display_compact": { "type": "boolean" },
+					"native_phone_integration_enabled": { "type": "boolean" },
+					"render_embeds": { "type": "boolean" },
+					"render_reactions": { "type": "boolean" },
+					"restricted_guilds": { "type": "array", "items": { "type": "string" } },
+					"show_current_game": { "type": "boolean" },
+					"status": { "enum": ["dnd", "idle", "offline", "online"], "type": "string" },
+					"stream_notifications_enabled": { "type": "boolean" },
+					"theme": { "enum": ["dark", "white"], "type": "string" },
+					"timezone_offset": { "type": "integer" }
 				},
-				"description": ""
+				"required": [
+					"afk_timeout",
+					"allow_accessibility_detection",
+					"animate_emoji",
+					"animate_stickers",
+					"contact_sync_enabled",
+					"convert_emoticons",
+					"custom_status",
+					"default_guilds_restricted",
+					"detect_platform_accounts",
+					"developer_mode",
+					"disable_games_tab",
+					"enable_tts_command",
+					"explicit_content_filter",
+					"friend_source_flags",
+					"gateway_connected",
+					"gif_auto_play",
+					"guild_folders",
+					"guild_positions",
+					"inline_attachment_media",
+					"inline_embed_media",
+					"locale",
+					"message_display_compact",
+					"native_phone_integration_enabled",
+					"render_embeds",
+					"render_reactions",
+					"restricted_guilds",
+					"show_current_game",
+					"status",
+					"stream_notifications_enabled",
+					"theme",
+					"timezone_offset"
+				]
 			},
 			"WidgetModifySchema": {
-				"content": {
-					"application/json": {
-						"schema": {
-							"type": "object",
-							"properties": { "enabled": { "type": "boolean" }, "channel_id": { "type": "string" } },
-							"required": ["channel_id", "enabled"]
-						}
-					}
-				},
-				"description": ""
+				"type": "object",
+				"properties": { "enabled": { "type": "boolean" }, "channel_id": { "type": "string" } },
+				"required": ["channel_id", "enabled"]
 			}
 		},
+		"requestBodies": {},
 		"securitySchemes": {},
 		"links": {},
 		"callbacks": {}
diff --git a/api/package-lock.json b/api/package-lock.json
index 1242dc06..da41d26d 100644
--- a/api/package-lock.json
+++ b/api/package-lock.json
@@ -7,6 +7,7 @@
 		"": {
 			"name": "@fosscord/api",
 			"version": "1.0.0",
+			"hasInstallScript": true,
 			"license": "ISC",
 			"dependencies": {
 				"@fosscord/util": "file:../util",
@@ -29,7 +30,7 @@
 				"i18next-node-fs-backend": "^2.1.3",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.11",
+				"missing-native-js-functions": "^1.2.15",
 				"mongoose": "^5.12.3",
 				"mongoose-autopopulate": "^0.12.3",
 				"mongoose-long": "^0.3.2",
@@ -78,7 +79,7 @@
 				"env-paths": "^2.2.1",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.13",
+				"missing-native-js-functions": "^1.2.14",
 				"node-fetch": "^2.6.1",
 				"patch-package": "^6.4.7",
 				"pg": "^8.7.1",
@@ -7421,9 +7422,9 @@
 			}
 		},
 		"node_modules/missing-native-js-functions": {
-			"version": "1.2.11",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.11.tgz",
-			"integrity": "sha512-U97IscNBL4Wg9adYjEBT46Hb0Ld5dPT8vbdwFX+TNzGrFQCc4WqoGAZouaLNFwUqxzzHZ9DVg59unwnQyeIIQg=="
+			"version": "1.2.15",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.15.tgz",
+			"integrity": "sha512-NNsxPSHnG22xellXsdGkzmF/SSzYNRgZcWQt2OKG+I3Wv8p37kTax13trTMthVkEOhvNv8M2l4A4JwK1p42ZHg=="
 		},
 		"node_modules/mixin-deep": {
 			"version": "1.3.2",
@@ -12976,7 +12977,7 @@
 				"jest": "^27.0.6",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.13",
+				"missing-native-js-functions": "^1.2.14",
 				"node-fetch": "^2.6.1",
 				"patch-package": "^6.4.7",
 				"pg": "^8.7.1",
@@ -18555,9 +18556,9 @@
 			}
 		},
 		"missing-native-js-functions": {
-			"version": "1.2.11",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.11.tgz",
-			"integrity": "sha512-U97IscNBL4Wg9adYjEBT46Hb0Ld5dPT8vbdwFX+TNzGrFQCc4WqoGAZouaLNFwUqxzzHZ9DVg59unwnQyeIIQg=="
+			"version": "1.2.15",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.15.tgz",
+			"integrity": "sha512-NNsxPSHnG22xellXsdGkzmF/SSzYNRgZcWQt2OKG+I3Wv8p37kTax13trTMthVkEOhvNv8M2l4A4JwK1p42ZHg=="
 		},
 		"mixin-deep": {
 			"version": "1.3.2",
diff --git a/api/package.json b/api/package.json
index bff625b2..497065cb 100644
--- a/api/package.json
+++ b/api/package.json
@@ -78,7 +78,7 @@
 		"i18next-node-fs-backend": "^2.1.3",
 		"jsonwebtoken": "^8.5.1",
 		"lambert-server": "^1.2.10",
-		"missing-native-js-functions": "^1.2.11",
+		"missing-native-js-functions": "^1.2.15",
 		"mongoose": "^5.12.3",
 		"mongoose-autopopulate": "^0.12.3",
 		"mongoose-long": "^0.3.2",
diff --git a/api/scripts/generate_openapi_schema.ts b/api/scripts/generate_openapi_schema.ts
index c45a43eb..329aeaf4 100644
--- a/api/scripts/generate_openapi_schema.ts
+++ b/api/scripts/generate_openapi_schema.ts
@@ -19,41 +19,14 @@ const compilerOptions: TJS.CompilerOptions = {
 const openapiPath = path.join(__dirname, "..", "assets", "openapi.json");
 var specification = JSON.parse(fs.readFileSync(openapiPath, { encoding: "utf8" }));
 
-async function generateSchemas() {
+async function utilSchemas() {
 	const program = TJS.getProgramFromFiles([path.join(__dirname, "..", "..", "util", "src", "index.ts")], compilerOptions);
 	const generator = TJS.buildGenerator(program, settings);
 
-	const schemas = [
-		"Application",
-		"Attachment",
-		"Message",
-		"AuditLog",
-		"Ban",
-		"Channel",
-		"Emoji",
-		"Guild",
-		"Invite",
-		"ReadState",
-		"Recipient",
-		"Relationship",
-		"Role",
-		"Sticker",
-		"Team",
-		"TeamMember",
-		"Template",
-		"VoiceState",
-		"Webhook",
-		"User",
-		"UserPublic"
-	];
+	const schemas = ["UserPublic", "UserPrivate", "PublicConnectedAccount"];
 
 	// @ts-ignore
-	const definitions = combineSchemas({ schemas, generator, program });
-
-	for (const key in definitions) {
-		specification.components.schemas[key] = definitions[key];
-		delete definitions[key].additionalProperties;
-	}
+	combineSchemas({ schemas, generator, program });
 }
 
 function combineSchemas(opts: { program: TJS.Program; generator: TJS.JsonSchemaGenerator; schemas: string[] }) {
@@ -63,13 +36,19 @@ function combineSchemas(opts: { program: TJS.Program; generator: TJS.JsonSchemaG
 		const part = TJS.generateSchema(opts.program, name, settings, [], opts.generator as TJS.JsonSchemaGenerator);
 		if (!part) continue;
 
-		definitions = { ...definitions, ...part.definitions, [name]: { ...part, definitions: undefined, $schema: undefined } };
+		definitions = { ...definitions, [name]: { ...part, definitions: undefined, $schema: undefined } };
+	}
+
+	for (const key in definitions) {
+		specification.components.schemas[key] = definitions[key];
+		delete definitions[key].additionalProperties;
+		delete definitions[key].$schema;
 	}
 
 	return definitions;
 }
 
-function generateBodies() {
+function apiSchemas() {
 	const program = TJS.getProgramFromFiles([path.join(__dirname, "..", "src", "schema", "index.ts")], compilerOptions);
 	const generator = TJS.buildGenerator(program, settings);
 
@@ -94,97 +73,26 @@ function generateBodies() {
 		"TemplateModifySchema",
 		"UserModifySchema",
 		"UserSettingsSchema",
-		"WidgetModifySchema"
+		"WidgetModifySchema",
+		""
 	];
 
 	// @ts-ignore
-	const definitions = combineSchemas({ schemas, generator, program });
-
-	for (const key in definitions) {
-		specification.components.requestBodies[key] = {
-			content: {
-				"application/json": { schema: definitions[key] }
-			},
-			description: ""
-		};
-
-		delete definitions[key].additionalProperties;
-		delete definitions[key].$schema;
-	}
+	combineSchemas({ schemas, generator, program });
 }
 
 function addDefaultResponses() {
-	Object.values(specification.paths).forEach((path: any) =>
-		Object.values(path).forEach((request: any) => {
-			if (!request.responses?.["401"]) {
-				request.responses["401"] = {
-					description: "Unauthorized",
-					content: { "application/json": { schema: { $ref: "#/components/schemas/Error" } } }
-				};
-			}
-			if (!request.responses?.["429"]) {
-				request.responses["429"] = {
-					description: "Rate limit exceeded",
-					content: { "application/json": { schema: { $ref: "#/components/schemas/Error" } } },
-					headers: {
-						"X-RateLimit-Bucket": {
-							description:
-								"A unique string denoting the rate limit being encountered (non-inclusive of major parameters in the route path)",
-							schema: { type: "string" }
-						},
-						"X-Rate-Limit-Limit": {
-							description: "The number of allowed requests in the current period",
-							schema: {
-								type: "integer"
-							}
-						},
-						"X-Rate-Limit-Remaining": {
-							description: "The number of remaining requests in the current period",
-							schema: {
-								type: "integer"
-							}
-						},
-						"X-Rate-Limit-Reset": {
-							description: "Date when current period is over in seconds since the Unix epoch",
-							schema: {
-								type: "integer"
-							}
-						},
-						"X-Rate-Limit-Reset-After": {
-							description: "Number of seconds when current period will reset (can have decimal)",
-							schema: {
-								type: "number"
-							}
-						},
-						"Retry-After": {
-							description: "Same as X-Rate-Limit-Reset-After but an integer",
-							schema: {
-								type: "integer"
-							}
-						},
-						"X-RateLimit-Global": {
-							description: "Indicates whether or not all requests from your ip are rate limited",
-							schema: {
-								type: "boolean"
-							}
-						}
-					}
-				};
-			}
-		})
-	);
+	Object.values(specification.paths).forEach((path: any) => Object.values(path).forEach((request: any) => {}));
 }
 
 function main() {
 	addDefaultResponses();
-	generateSchemas();
-	specification = JSON.parse(JSON.stringify(specification).replaceAll("#/definitions", "#/components/schemas"));
-
-	generateBodies();
+	utilSchemas();
+	apiSchemas();
 
 	fs.writeFileSync(
 		openapiPath,
-		JSON.stringify(specification, null, 4).replaceAll("#/definitions", "#/components/requestBodies").replaceAll("bigint", "number")
+		JSON.stringify(specification, null, 4).replaceAll("#/definitions", "#/components/schemas").replaceAll("bigint", "number")
 	);
 }
 
diff --git a/bundle/package-lock.json b/bundle/package-lock.json
index 59fd96ee..944570ed 100644
--- a/bundle/package-lock.json
+++ b/bundle/package-lock.json
@@ -16,8 +16,7 @@
 				"@fosscord/util": "file:../util",
 				"async-exit-hook": "^2.0.1",
 				"express": "^4.17.1",
-				"missing-native-js-functions": "^1.2.13",
-				"mongodb-memory-server": "^7.3.6",
+				"missing-native-js-functions": "^1.2.15",
 				"node-os-utils": "^1.3.5"
 			},
 			"devDependencies": {
@@ -43,6 +42,7 @@
 		"../api": {
 			"name": "@fosscord/api",
 			"version": "1.0.0",
+			"hasInstallScript": true,
 			"license": "ISC",
 			"dependencies": {
 				"@fosscord/util": "file:../util",
@@ -65,12 +65,13 @@
 				"i18next-node-fs-backend": "^2.1.3",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.11",
+				"missing-native-js-functions": "^1.2.15",
 				"mongoose": "^5.12.3",
 				"mongoose-autopopulate": "^0.12.3",
 				"mongoose-long": "^0.3.2",
 				"multer": "^1.4.2",
 				"node-fetch": "^2.6.1",
+				"patch-package": "^6.4.7",
 				"supertest": "^6.1.6",
 				"typeorm": "^0.2.37"
 			},
@@ -96,7 +97,8 @@
 				"saslprep": "^1.0.3",
 				"ts-node": "^9.1.1",
 				"ts-node-dev": "^1.1.6",
-				"typescript": "^4.1.2"
+				"typescript": "^4.4.2",
+				"typescript-json-schema": "^0.50.1"
 			}
 		},
 		"../cdn": {
@@ -118,7 +120,7 @@
 				"jest": "^27.0.6",
 				"lambert-db": "^1.2.3",
 				"lambert-server": "^1.2.8",
-				"missing-native-js-functions": "^1.2.10",
+				"missing-native-js-functions": "^1.2.15",
 				"multer": "^1.4.2",
 				"node-fetch": "^2.6.1",
 				"supertest": "^6.1.6",
@@ -153,7 +155,7 @@
 				"dotenv": "^8.2.0",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.8",
-				"missing-native-js-functions": "^1.2.10",
+				"missing-native-js-functions": "^1.2.15",
 				"mongoose-autopopulate": "^0.12.3",
 				"node-fetch": "^2.6.1",
 				"uuid": "^8.3.2",
@@ -186,14 +188,14 @@
 				"env-paths": "^2.2.1",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.11",
+				"missing-native-js-functions": "^1.2.15",
 				"node-fetch": "^2.6.1",
 				"patch-package": "^6.4.7",
 				"pg": "^8.7.1",
 				"reflect-metadata": "^0.1.13",
 				"sqlite3": "^5.0.2",
 				"typeorm": "^0.2.37",
-				"typescript": "^4.3.5",
+				"typescript": "^4.4.2",
 				"typescript-json-schema": "^0.50.1"
 			},
 			"devDependencies": {
@@ -430,11 +432,6 @@
 				"@types/node": "*"
 			}
 		},
-		"node_modules/@types/tmp": {
-			"version": "0.2.1",
-			"resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.1.tgz",
-			"integrity": "sha512-7cTXwKP/HLOPVgjg+YhBdQ7bMiobGMuoBmrGmqwIWJv8elC6t1DfVc/mn4fD9UE1IjhwmhaQ5pGVXkmXbH0rhg=="
-		},
 		"node_modules/@types/uuid": {
 			"version": "8.3.1",
 			"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz",
@@ -486,38 +483,6 @@
 				"node": ">= 0.6"
 			}
 		},
-		"node_modules/agent-base": {
-			"version": "6.0.2",
-			"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-			"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-			"dependencies": {
-				"debug": "4"
-			},
-			"engines": {
-				"node": ">= 6.0.0"
-			}
-		},
-		"node_modules/agent-base/node_modules/debug": {
-			"version": "4.3.2",
-			"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-			"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-			"dependencies": {
-				"ms": "2.1.2"
-			},
-			"engines": {
-				"node": ">=6.0"
-			},
-			"peerDependenciesMeta": {
-				"supports-color": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/agent-base/node_modules/ms": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-			"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-		},
 		"node_modules/array-flatten": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
@@ -531,53 +496,12 @@
 				"node": ">=0.12.0"
 			}
 		},
-		"node_modules/async-mutex": {
-			"version": "0.3.1",
-			"resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.3.1.tgz",
-			"integrity": "sha512-vRfQwcqBnJTLzVQo72Sf7KIUbcSUP5hNchx6udI1U6LuPQpfePgdjJzlCe76yFZ8pxlLjn9lwcl/Ya0TSOv0Tw==",
-			"dependencies": {
-				"tslib": "^2.1.0"
-			}
-		},
 		"node_modules/asynckit": {
 			"version": "0.4.0",
 			"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
 			"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
 			"dev": true
 		},
-		"node_modules/balanced-match": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-			"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-		},
-		"node_modules/base64-js": {
-			"version": "1.5.1",
-			"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-			"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
-			"funding": [
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/feross"
-				},
-				{
-					"type": "patreon",
-					"url": "https://www.patreon.com/feross"
-				},
-				{
-					"type": "consulting",
-					"url": "https://feross.org/support"
-				}
-			]
-		},
-		"node_modules/bl": {
-			"version": "2.2.1",
-			"resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz",
-			"integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==",
-			"dependencies": {
-				"readable-stream": "^2.3.5",
-				"safe-buffer": "^5.1.1"
-			}
-		},
 		"node_modules/body-parser": {
 			"version": "1.19.0",
 			"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
@@ -598,54 +522,6 @@
 				"node": ">= 0.8"
 			}
 		},
-		"node_modules/brace-expansion": {
-			"version": "1.1.11",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-			"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-			"dependencies": {
-				"balanced-match": "^1.0.0",
-				"concat-map": "0.0.1"
-			}
-		},
-		"node_modules/bson": {
-			"version": "1.1.6",
-			"resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz",
-			"integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==",
-			"engines": {
-				"node": ">=0.6.19"
-			}
-		},
-		"node_modules/buffer": {
-			"version": "5.7.1",
-			"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-			"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-			"funding": [
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/feross"
-				},
-				{
-					"type": "patreon",
-					"url": "https://www.patreon.com/feross"
-				},
-				{
-					"type": "consulting",
-					"url": "https://feross.org/support"
-				}
-			],
-			"dependencies": {
-				"base64-js": "^1.3.1",
-				"ieee754": "^1.1.13"
-			}
-		},
-		"node_modules/buffer-crc32": {
-			"version": "0.2.13",
-			"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
-			"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
-			"engines": {
-				"node": "*"
-			}
-		},
 		"node_modules/bytes": {
 			"version": "3.1.0",
 			"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@@ -654,17 +530,6 @@
 				"node": ">= 0.8"
 			}
 		},
-		"node_modules/camelcase": {
-			"version": "6.2.0",
-			"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
-			"integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==",
-			"engines": {
-				"node": ">=10"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
 		"node_modules/combined-stream": {
 			"version": "1.0.8",
 			"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -677,16 +542,6 @@
 				"node": ">= 0.8"
 			}
 		},
-		"node_modules/commondir": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-			"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
-		},
-		"node_modules/concat-map": {
-			"version": "0.0.1",
-			"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-			"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-		},
 		"node_modules/content-disposition": {
 			"version": "0.5.3",
 			"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
@@ -719,11 +574,6 @@
 			"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
 			"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
 		},
-		"node_modules/core-util-is": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-			"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
-		},
 		"node_modules/debug": {
 			"version": "2.6.9",
 			"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -741,14 +591,6 @@
 				"node": ">=0.4.0"
 			}
 		},
-		"node_modules/denque": {
-			"version": "1.5.0",
-			"resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
-			"integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==",
-			"engines": {
-				"node": ">=0.10"
-			}
-		},
 		"node_modules/depd": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -775,14 +617,6 @@
 				"node": ">= 0.8"
 			}
 		},
-		"node_modules/end-of-stream": {
-			"version": "1.4.4",
-			"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-			"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-			"dependencies": {
-				"once": "^1.4.0"
-			}
-		},
 		"node_modules/escape-html": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -836,14 +670,6 @@
 				"node": ">= 0.10.0"
 			}
 		},
-		"node_modules/fd-slicer": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
-			"integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
-			"dependencies": {
-				"pend": "~1.2.0"
-			}
-		},
 		"node_modules/finalhandler": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
@@ -861,34 +687,6 @@
 				"node": ">= 0.8"
 			}
 		},
-		"node_modules/find-cache-dir": {
-			"version": "3.3.1",
-			"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
-			"integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
-			"dependencies": {
-				"commondir": "^1.0.1",
-				"make-dir": "^3.0.2",
-				"pkg-dir": "^4.1.0"
-			},
-			"engines": {
-				"node": ">=8"
-			},
-			"funding": {
-				"url": "https://github.com/avajs/find-cache-dir?sponsor=1"
-			}
-		},
-		"node_modules/find-up": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-			"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-			"dependencies": {
-				"locate-path": "^5.0.0",
-				"path-exists": "^4.0.0"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
 		"node_modules/form-data": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
@@ -919,52 +717,12 @@
 				"node": ">= 0.6"
 			}
 		},
-		"node_modules/fs-constants": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
-			"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
-		},
-		"node_modules/fs.realpath": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-			"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
-		},
 		"node_modules/function-bind": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
 			"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
 			"dev": true
 		},
-		"node_modules/get-port": {
-			"version": "5.1.1",
-			"resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
-			"integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==",
-			"engines": {
-				"node": ">=8"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/glob": {
-			"version": "7.1.7",
-			"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
-			"integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
-			"dependencies": {
-				"fs.realpath": "^1.0.0",
-				"inflight": "^1.0.4",
-				"inherits": "2",
-				"minimatch": "^3.0.4",
-				"once": "^1.3.0",
-				"path-is-absolute": "^1.0.0"
-			},
-			"engines": {
-				"node": "*"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/isaacs"
-			}
-		},
 		"node_modules/has": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -992,39 +750,6 @@
 				"node": ">= 0.6"
 			}
 		},
-		"node_modules/https-proxy-agent": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-			"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-			"dependencies": {
-				"agent-base": "6",
-				"debug": "4"
-			},
-			"engines": {
-				"node": ">= 6"
-			}
-		},
-		"node_modules/https-proxy-agent/node_modules/debug": {
-			"version": "4.3.2",
-			"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-			"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-			"dependencies": {
-				"ms": "2.1.2"
-			},
-			"engines": {
-				"node": ">=6.0"
-			},
-			"peerDependenciesMeta": {
-				"supports-color": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/https-proxy-agent/node_modules/ms": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-			"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-		},
 		"node_modules/i18next": {
 			"version": "20.4.0",
 			"resolved": "https://registry.npmjs.org/i18next/-/i18next-20.4.0.tgz",
@@ -1045,34 +770,6 @@
 				"node": ">=0.10.0"
 			}
 		},
-		"node_modules/ieee754": {
-			"version": "1.2.1",
-			"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
-			"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
-			"funding": [
-				{
-					"type": "github",
-					"url": "https://github.com/sponsors/feross"
-				},
-				{
-					"type": "patreon",
-					"url": "https://www.patreon.com/feross"
-				},
-				{
-					"type": "consulting",
-					"url": "https://feross.org/support"
-				}
-			]
-		},
-		"node_modules/inflight": {
-			"version": "1.0.6",
-			"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-			"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-			"dependencies": {
-				"once": "^1.3.0",
-				"wrappy": "1"
-			}
-		},
 		"node_modules/inherits": {
 			"version": "2.0.3",
 			"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
@@ -1098,66 +795,6 @@
 				"url": "https://github.com/sponsors/ljharb"
 			}
 		},
-		"node_modules/isarray": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-			"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
-		},
-		"node_modules/locate-path": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-			"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-			"dependencies": {
-				"p-locate": "^4.1.0"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/lru-cache": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-			"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-			"dependencies": {
-				"yallist": "^4.0.0"
-			},
-			"engines": {
-				"node": ">=10"
-			}
-		},
-		"node_modules/make-dir": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-			"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-			"dependencies": {
-				"semver": "^6.0.0"
-			},
-			"engines": {
-				"node": ">=8"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/make-dir/node_modules/semver": {
-			"version": "6.3.0",
-			"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-			"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-			"bin": {
-				"semver": "bin/semver.js"
-			}
-		},
-		"node_modules/md5-file": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz",
-			"integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==",
-			"bin": {
-				"md5-file": "cli.js"
-			},
-			"engines": {
-				"node": ">=10.13.0"
-			}
-		},
 		"node_modules/media-typer": {
 			"version": "0.3.0",
 			"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -1166,12 +803,6 @@
 				"node": ">= 0.6"
 			}
 		},
-		"node_modules/memory-pager": {
-			"version": "1.5.0",
-			"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
-			"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
-			"optional": true
-		},
 		"node_modules/merge-descriptors": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -1215,131 +846,10 @@
 				"node": ">= 0.6"
 			}
 		},
-		"node_modules/minimatch": {
-			"version": "3.0.4",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-			"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-			"dependencies": {
-				"brace-expansion": "^1.1.7"
-			},
-			"engines": {
-				"node": "*"
-			}
-		},
 		"node_modules/missing-native-js-functions": {
-			"version": "1.2.13",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.13.tgz",
-			"integrity": "sha512-1RAArfUkrGkj5N3xJVW251F2PvfP2ozAcxsLLDR6uiiAixTP5Abh8zzGMadepbqgiHC0FGlTSAUNbh9abN4Osg=="
-		},
-		"node_modules/mkdirp": {
-			"version": "1.0.4",
-			"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-			"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
-			"bin": {
-				"mkdirp": "bin/cmd.js"
-			},
-			"engines": {
-				"node": ">=10"
-			}
-		},
-		"node_modules/mongodb": {
-			"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",
-				"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/mongodb-memory-server": {
-			"version": "7.3.6",
-			"resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-7.3.6.tgz",
-			"integrity": "sha512-JfuY7uJD9TZxq6C4YVuCjiP2v0V/NYb19Wki6rFovdJvkgxGp5/KXKaazu47leECYAtJc2ajW1c009M3hRM+6A==",
-			"hasInstallScript": true,
-			"dependencies": {
-				"mongodb-memory-server-core": "7.3.6",
-				"tslib": "^2.3.0"
-			},
-			"engines": {
-				"node": ">=12.22.0"
-			}
-		},
-		"node_modules/mongodb-memory-server-core": {
-			"version": "7.3.6",
-			"resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-7.3.6.tgz",
-			"integrity": "sha512-dxprJ5Xqb0y/9nqv709BGf8Cz4dnInhG3sTuYvMJijK4cAHYxk0xkKrvZX2X9PrYiCQqKix59hHMBGyBetN3hg==",
-			"dependencies": {
-				"@types/tmp": "^0.2.0",
-				"async-mutex": "^0.3.0",
-				"camelcase": "^6.1.0",
-				"debug": "^4.2.0",
-				"find-cache-dir": "^3.3.1",
-				"get-port": "^5.1.1",
-				"https-proxy-agent": "^5.0.0",
-				"md5-file": "^5.0.0",
-				"mkdirp": "^1.0.4",
-				"mongodb": "^3.6.9",
-				"new-find-package-json": "^1.1.0",
-				"semver": "^7.3.5",
-				"tar-stream": "^2.1.4",
-				"tmp": "^0.2.1",
-				"tslib": "^2.3.0",
-				"uuid": "^8.3.1",
-				"yauzl": "^2.10.0"
-			},
-			"engines": {
-				"node": ">=12.22.0"
-			}
-		},
-		"node_modules/mongodb-memory-server-core/node_modules/debug": {
-			"version": "4.3.2",
-			"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-			"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-			"dependencies": {
-				"ms": "2.1.2"
-			},
-			"engines": {
-				"node": ">=6.0"
-			},
-			"peerDependenciesMeta": {
-				"supports-color": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/mongodb-memory-server-core/node_modules/ms": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-			"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+			"version": "1.2.15",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.15.tgz",
+			"integrity": "sha512-NNsxPSHnG22xellXsdGkzmF/SSzYNRgZcWQt2OKG+I3Wv8p37kTax13trTMthVkEOhvNv8M2l4A4JwK1p42ZHg=="
 		},
 		"node_modules/ms": {
 			"version": "2.0.0",
@@ -1354,39 +864,6 @@
 				"node": ">= 0.6"
 			}
 		},
-		"node_modules/new-find-package-json": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-1.1.0.tgz",
-			"integrity": "sha512-KOH3BNZcTKPzEkaJgG2iSUaurxKmefqRKmCOYH+8xqJytNIgjqU4J88BHfK+gy/UlEzlhccLyuJDJAcCgexSwA==",
-			"dependencies": {
-				"debug": "^4.3.2",
-				"tslib": "^2.3.0"
-			},
-			"engines": {
-				"node": ">=12.22.0"
-			}
-		},
-		"node_modules/new-find-package-json/node_modules/debug": {
-			"version": "4.3.2",
-			"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-			"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-			"dependencies": {
-				"ms": "2.1.2"
-			},
-			"engines": {
-				"node": ">=6.0"
-			},
-			"peerDependenciesMeta": {
-				"supports-color": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/new-find-package-json/node_modules/ms": {
-			"version": "2.1.2",
-			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-			"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-		},
 		"node_modules/node-os-utils": {
 			"version": "1.3.5",
 			"resolved": "https://registry.npmjs.org/node-os-utils/-/node-os-utils-1.3.5.tgz",
@@ -1403,58 +880,6 @@
 				"node": ">= 0.8"
 			}
 		},
-		"node_modules/once": {
-			"version": "1.4.0",
-			"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-			"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-			"dependencies": {
-				"wrappy": "1"
-			}
-		},
-		"node_modules/optional-require": {
-			"version": "1.1.6",
-			"resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.6.tgz",
-			"integrity": "sha512-ZO2GGh1A84LV90OAIsMDmIJ5k/f7crSjP4aJSuLudp7C7wfVOAoyWWHV8Jf3ZMHyNHwpLD/DGhzaxbbN/duF+g==",
-			"dependencies": {
-				"require-at": "^1.0.6"
-			},
-			"engines": {
-				"node": ">=4"
-			}
-		},
-		"node_modules/p-limit": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-			"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-			"dependencies": {
-				"p-try": "^2.0.0"
-			},
-			"engines": {
-				"node": ">=6"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/sindresorhus"
-			}
-		},
-		"node_modules/p-locate": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-			"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-			"dependencies": {
-				"p-limit": "^2.2.0"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/p-try": {
-			"version": "2.2.0",
-			"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-			"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-			"engines": {
-				"node": ">=6"
-			}
-		},
 		"node_modules/parseurl": {
 			"version": "1.3.3",
 			"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -1463,22 +888,6 @@
 				"node": ">= 0.8"
 			}
 		},
-		"node_modules/path-exists": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-			"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/path-is-absolute": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-			"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-			"engines": {
-				"node": ">=0.10.0"
-			}
-		},
 		"node_modules/path-parse": {
 			"version": "1.0.7",
 			"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
@@ -1490,27 +899,6 @@
 			"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
 			"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
 		},
-		"node_modules/pend": {
-			"version": "1.2.0",
-			"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
-			"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
-		},
-		"node_modules/pkg-dir": {
-			"version": "4.2.0",
-			"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-			"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-			"dependencies": {
-				"find-up": "^4.0.0"
-			},
-			"engines": {
-				"node": ">=8"
-			}
-		},
-		"node_modules/process-nextick-args": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-			"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
-		},
 		"node_modules/proxy-addr": {
 			"version": "2.0.7",
 			"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -1553,34 +941,12 @@
 				"node": ">= 0.8"
 			}
 		},
-		"node_modules/readable-stream": {
-			"version": "2.3.7",
-			"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-			"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-			"dependencies": {
-				"core-util-is": "~1.0.0",
-				"inherits": "~2.0.3",
-				"isarray": "~1.0.0",
-				"process-nextick-args": "~2.0.0",
-				"safe-buffer": "~5.1.1",
-				"string_decoder": "~1.1.1",
-				"util-deprecate": "~1.0.1"
-			}
-		},
 		"node_modules/regenerator-runtime": {
 			"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==",
 			"dev": true
 		},
-		"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/resolve": {
 			"version": "1.20.0",
 			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
@@ -1594,20 +960,6 @@
 				"url": "https://github.com/sponsors/ljharb"
 			}
 		},
-		"node_modules/rimraf": {
-			"version": "3.0.2",
-			"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-			"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-			"dependencies": {
-				"glob": "^7.1.3"
-			},
-			"bin": {
-				"rimraf": "bin.js"
-			},
-			"funding": {
-				"url": "https://github.com/sponsors/isaacs"
-			}
-		},
 		"node_modules/safe-buffer": {
 			"version": "5.1.2",
 			"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -1618,32 +970,6 @@
 			"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
 			"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
 		},
-		"node_modules/saslprep": {
-			"version": "1.0.3",
-			"resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
-			"integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
-			"optional": true,
-			"dependencies": {
-				"sparse-bitfield": "^3.0.3"
-			},
-			"engines": {
-				"node": ">=6"
-			}
-		},
-		"node_modules/semver": {
-			"version": "7.3.5",
-			"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-			"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-			"dependencies": {
-				"lru-cache": "^6.0.0"
-			},
-			"bin": {
-				"semver": "bin/semver.js"
-			},
-			"engines": {
-				"node": ">=10"
-			}
-		},
 		"node_modules/send": {
 			"version": "0.17.1",
 			"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
@@ -1691,15 +1017,6 @@
 			"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
 			"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
 		},
-		"node_modules/sparse-bitfield": {
-			"version": "3.0.3",
-			"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
-			"integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
-			"optional": true,
-			"dependencies": {
-				"memory-pager": "^1.0.2"
-			}
-		},
 		"node_modules/statuses": {
 			"version": "1.5.0",
 			"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
@@ -1708,68 +1025,6 @@
 				"node": ">= 0.6"
 			}
 		},
-		"node_modules/string_decoder": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-			"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-			"dependencies": {
-				"safe-buffer": "~5.1.0"
-			}
-		},
-		"node_modules/tar-stream": {
-			"version": "2.2.0",
-			"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
-			"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
-			"dependencies": {
-				"bl": "^4.0.3",
-				"end-of-stream": "^1.4.1",
-				"fs-constants": "^1.0.0",
-				"inherits": "^2.0.3",
-				"readable-stream": "^3.1.1"
-			},
-			"engines": {
-				"node": ">=6"
-			}
-		},
-		"node_modules/tar-stream/node_modules/bl": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
-			"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
-			"dependencies": {
-				"buffer": "^5.5.0",
-				"inherits": "^2.0.4",
-				"readable-stream": "^3.4.0"
-			}
-		},
-		"node_modules/tar-stream/node_modules/inherits": {
-			"version": "2.0.4",
-			"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-			"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-		},
-		"node_modules/tar-stream/node_modules/readable-stream": {
-			"version": "3.6.0",
-			"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-			"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-			"dependencies": {
-				"inherits": "^2.0.3",
-				"string_decoder": "^1.1.1",
-				"util-deprecate": "^1.0.1"
-			},
-			"engines": {
-				"node": ">= 6"
-			}
-		},
-		"node_modules/tmp": {
-			"version": "0.2.1",
-			"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
-			"integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
-			"dependencies": {
-				"rimraf": "^3.0.0"
-			},
-			"engines": {
-				"node": ">=8.17.0"
-			}
-		},
 		"node_modules/toidentifier": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
@@ -1778,11 +1033,6 @@
 				"node": ">=0.6"
 			}
 		},
-		"node_modules/tslib": {
-			"version": "2.3.1",
-			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
-			"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
-		},
 		"node_modules/type-is": {
 			"version": "1.6.18",
 			"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@@ -1816,11 +1066,6 @@
 				"node": ">= 0.8"
 			}
 		},
-		"node_modules/util-deprecate": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-			"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
-		},
 		"node_modules/utils-merge": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -1829,14 +1074,6 @@
 				"node": ">= 0.4.0"
 			}
 		},
-		"node_modules/uuid": {
-			"version": "8.3.2",
-			"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-			"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-			"bin": {
-				"uuid": "dist/bin/uuid"
-			}
-		},
 		"node_modules/vary": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -1844,25 +1081,6 @@
 			"engines": {
 				"node": ">= 0.8"
 			}
-		},
-		"node_modules/wrappy": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-			"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-		},
-		"node_modules/yallist": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-			"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
-		},
-		"node_modules/yauzl": {
-			"version": "2.10.0",
-			"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
-			"integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
-			"dependencies": {
-				"buffer-crc32": "~0.2.3",
-				"fd-slicer": "~1.1.0"
-			}
 		}
 	},
 	"dependencies": {
@@ -1916,18 +1134,20 @@
 				"jest": "^26.6.3",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.11",
+				"missing-native-js-functions": "^1.2.15",
 				"mongoose": "^5.12.3",
 				"mongoose-autopopulate": "^0.12.3",
 				"mongoose-long": "^0.3.2",
 				"multer": "^1.4.2",
 				"node-fetch": "^2.6.1",
+				"patch-package": "^6.4.7",
 				"saslprep": "^1.0.3",
 				"supertest": "^6.1.6",
 				"ts-node": "^9.1.1",
 				"ts-node-dev": "^1.1.6",
 				"typeorm": "^0.2.37",
-				"typescript": "^4.1.2"
+				"typescript": "^4.4.2",
+				"typescript-json-schema": "^0.50.1"
 			}
 		},
 		"@fosscord/cdn": {
@@ -1961,7 +1181,7 @@
 				"jest": "^27.0.6",
 				"lambert-db": "^1.2.3",
 				"lambert-server": "^1.2.8",
-				"missing-native-js-functions": "^1.2.10",
+				"missing-native-js-functions": "^1.2.15",
 				"multer": "^1.4.2",
 				"node-fetch": "^2.6.1",
 				"supertest": "^6.1.6",
@@ -1987,7 +1207,7 @@
 				"dotenv": "^8.2.0",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.8",
-				"missing-native-js-functions": "^1.2.10",
+				"missing-native-js-functions": "^1.2.15",
 				"mongoose-autopopulate": "^0.12.3",
 				"node-fetch": "^2.6.1",
 				"ts-node-dev": "^1.1.6",
@@ -2012,14 +1232,14 @@
 				"jest": "^27.0.6",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.11",
+				"missing-native-js-functions": "^1.2.15",
 				"node-fetch": "^2.6.1",
 				"patch-package": "^6.4.7",
 				"pg": "^8.7.1",
 				"reflect-metadata": "^0.1.13",
 				"sqlite3": "^5.0.2",
 				"typeorm": "^0.2.37",
-				"typescript": "^4.3.5",
+				"typescript": "^4.4.2",
 				"typescript-json-schema": "^0.50.1"
 			}
 		},
@@ -2220,11 +1440,6 @@
 				"@types/node": "*"
 			}
 		},
-		"@types/tmp": {
-			"version": "0.2.1",
-			"resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.1.tgz",
-			"integrity": "sha512-7cTXwKP/HLOPVgjg+YhBdQ7bMiobGMuoBmrGmqwIWJv8elC6t1DfVc/mn4fD9UE1IjhwmhaQ5pGVXkmXbH0rhg=="
-		},
 		"@types/uuid": {
 			"version": "8.3.1",
 			"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz",
@@ -2267,29 +1482,6 @@
 				"negotiator": "0.6.2"
 			}
 		},
-		"agent-base": {
-			"version": "6.0.2",
-			"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-			"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-			"requires": {
-				"debug": "4"
-			},
-			"dependencies": {
-				"debug": {
-					"version": "4.3.2",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-					"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-					"requires": {
-						"ms": "2.1.2"
-					}
-				},
-				"ms": {
-					"version": "2.1.2",
-					"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-					"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-				}
-			}
-		},
 		"array-flatten": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
@@ -2300,39 +1492,12 @@
 			"resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
 			"integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw=="
 		},
-		"async-mutex": {
-			"version": "0.3.1",
-			"resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.3.1.tgz",
-			"integrity": "sha512-vRfQwcqBnJTLzVQo72Sf7KIUbcSUP5hNchx6udI1U6LuPQpfePgdjJzlCe76yFZ8pxlLjn9lwcl/Ya0TSOv0Tw==",
-			"requires": {
-				"tslib": "^2.1.0"
-			}
-		},
 		"asynckit": {
 			"version": "0.4.0",
 			"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
 			"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
 			"dev": true
 		},
-		"balanced-match": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-			"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-		},
-		"base64-js": {
-			"version": "1.5.1",
-			"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
-			"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
-		},
-		"bl": {
-			"version": "2.2.1",
-			"resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz",
-			"integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==",
-			"requires": {
-				"readable-stream": "^2.3.5",
-				"safe-buffer": "^5.1.1"
-			}
-		},
 		"body-parser": {
 			"version": "1.19.0",
 			"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
@@ -2350,44 +1515,11 @@
 				"type-is": "~1.6.17"
 			}
 		},
-		"brace-expansion": {
-			"version": "1.1.11",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
-			"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-			"requires": {
-				"balanced-match": "^1.0.0",
-				"concat-map": "0.0.1"
-			}
-		},
-		"bson": {
-			"version": "1.1.6",
-			"resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz",
-			"integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg=="
-		},
-		"buffer": {
-			"version": "5.7.1",
-			"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
-			"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
-			"requires": {
-				"base64-js": "^1.3.1",
-				"ieee754": "^1.1.13"
-			}
-		},
-		"buffer-crc32": {
-			"version": "0.2.13",
-			"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
-			"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
-		},
 		"bytes": {
 			"version": "3.1.0",
 			"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
 			"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
 		},
-		"camelcase": {
-			"version": "6.2.0",
-			"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz",
-			"integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg=="
-		},
 		"combined-stream": {
 			"version": "1.0.8",
 			"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -2397,16 +1529,6 @@
 				"delayed-stream": "~1.0.0"
 			}
 		},
-		"commondir": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
-			"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
-		},
-		"concat-map": {
-			"version": "0.0.1",
-			"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-			"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-		},
 		"content-disposition": {
 			"version": "0.5.3",
 			"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
@@ -2430,11 +1552,6 @@
 			"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
 			"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
 		},
-		"core-util-is": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-			"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
-		},
 		"debug": {
 			"version": "2.6.9",
 			"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -2449,11 +1566,6 @@
 			"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
 			"dev": true
 		},
-		"denque": {
-			"version": "1.5.0",
-			"resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
-			"integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ=="
-		},
 		"depd": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -2474,14 +1586,6 @@
 			"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
 			"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
 		},
-		"end-of-stream": {
-			"version": "1.4.4",
-			"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-			"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-			"requires": {
-				"once": "^1.4.0"
-			}
-		},
 		"escape-html": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -2529,14 +1633,6 @@
 				"vary": "~1.1.2"
 			}
 		},
-		"fd-slicer": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
-			"integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
-			"requires": {
-				"pend": "~1.2.0"
-			}
-		},
 		"finalhandler": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
@@ -2551,25 +1647,6 @@
 				"unpipe": "~1.0.0"
 			}
 		},
-		"find-cache-dir": {
-			"version": "3.3.1",
-			"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz",
-			"integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==",
-			"requires": {
-				"commondir": "^1.0.1",
-				"make-dir": "^3.0.2",
-				"pkg-dir": "^4.1.0"
-			}
-		},
-		"find-up": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
-			"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-			"requires": {
-				"locate-path": "^5.0.0",
-				"path-exists": "^4.0.0"
-			}
-		},
 		"form-data": {
 			"version": "3.0.1",
 			"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
@@ -2591,40 +1668,12 @@
 			"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
 			"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
 		},
-		"fs-constants": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
-			"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
-		},
-		"fs.realpath": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-			"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
-		},
 		"function-bind": {
 			"version": "1.1.1",
 			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
 			"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
 			"dev": true
 		},
-		"get-port": {
-			"version": "5.1.1",
-			"resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz",
-			"integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ=="
-		},
-		"glob": {
-			"version": "7.1.7",
-			"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
-			"integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
-			"requires": {
-				"fs.realpath": "^1.0.0",
-				"inflight": "^1.0.4",
-				"inherits": "2",
-				"minimatch": "^3.0.4",
-				"once": "^1.3.0",
-				"path-is-absolute": "^1.0.0"
-			}
-		},
 		"has": {
 			"version": "1.0.3",
 			"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -2646,30 +1695,6 @@
 				"toidentifier": "1.0.0"
 			}
 		},
-		"https-proxy-agent": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
-			"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
-			"requires": {
-				"agent-base": "6",
-				"debug": "4"
-			},
-			"dependencies": {
-				"debug": {
-					"version": "4.3.2",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-					"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-					"requires": {
-						"ms": "2.1.2"
-					}
-				},
-				"ms": {
-					"version": "2.1.2",
-					"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-					"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-				}
-			}
-		},
 		"i18next": {
 			"version": "20.4.0",
 			"resolved": "https://registry.npmjs.org/i18next/-/i18next-20.4.0.tgz",
@@ -2687,20 +1712,6 @@
 				"safer-buffer": ">= 2.1.2 < 3"
 			}
 		},
-		"ieee754": {
-			"version": "1.2.1",
-			"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
-			"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
-		},
-		"inflight": {
-			"version": "1.0.6",
-			"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-			"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-			"requires": {
-				"once": "^1.3.0",
-				"wrappy": "1"
-			}
-		},
 		"inherits": {
 			"version": "2.0.3",
 			"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
@@ -2720,58 +1731,11 @@
 				"has": "^1.0.3"
 			}
 		},
-		"isarray": {
-			"version": "1.0.0",
-			"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-			"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
-		},
-		"locate-path": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
-			"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-			"requires": {
-				"p-locate": "^4.1.0"
-			}
-		},
-		"lru-cache": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
-			"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-			"requires": {
-				"yallist": "^4.0.0"
-			}
-		},
-		"make-dir": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
-			"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
-			"requires": {
-				"semver": "^6.0.0"
-			},
-			"dependencies": {
-				"semver": {
-					"version": "6.3.0",
-					"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-					"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-				}
-			}
-		},
-		"md5-file": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz",
-			"integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw=="
-		},
 		"media-typer": {
 			"version": "0.3.0",
 			"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
 			"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
 		},
-		"memory-pager": {
-			"version": "1.5.0",
-			"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
-			"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
-			"optional": true
-		},
 		"merge-descriptors": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -2800,84 +1764,10 @@
 				"mime-db": "1.49.0"
 			}
 		},
-		"minimatch": {
-			"version": "3.0.4",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-			"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-			"requires": {
-				"brace-expansion": "^1.1.7"
-			}
-		},
 		"missing-native-js-functions": {
-			"version": "1.2.13",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.13.tgz",
-			"integrity": "sha512-1RAArfUkrGkj5N3xJVW251F2PvfP2ozAcxsLLDR6uiiAixTP5Abh8zzGMadepbqgiHC0FGlTSAUNbh9abN4Osg=="
-		},
-		"mkdirp": {
-			"version": "1.0.4",
-			"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
-			"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
-		},
-		"mongodb": {
-			"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",
-				"denque": "^1.4.1",
-				"optional-require": "^1.0.3",
-				"safe-buffer": "^5.1.2",
-				"saslprep": "^1.0.0"
-			}
-		},
-		"mongodb-memory-server": {
-			"version": "7.3.6",
-			"resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-7.3.6.tgz",
-			"integrity": "sha512-JfuY7uJD9TZxq6C4YVuCjiP2v0V/NYb19Wki6rFovdJvkgxGp5/KXKaazu47leECYAtJc2ajW1c009M3hRM+6A==",
-			"requires": {
-				"mongodb-memory-server-core": "7.3.6",
-				"tslib": "^2.3.0"
-			}
-		},
-		"mongodb-memory-server-core": {
-			"version": "7.3.6",
-			"resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-7.3.6.tgz",
-			"integrity": "sha512-dxprJ5Xqb0y/9nqv709BGf8Cz4dnInhG3sTuYvMJijK4cAHYxk0xkKrvZX2X9PrYiCQqKix59hHMBGyBetN3hg==",
-			"requires": {
-				"@types/tmp": "^0.2.0",
-				"async-mutex": "^0.3.0",
-				"camelcase": "^6.1.0",
-				"debug": "^4.2.0",
-				"find-cache-dir": "^3.3.1",
-				"get-port": "^5.1.1",
-				"https-proxy-agent": "^5.0.0",
-				"md5-file": "^5.0.0",
-				"mkdirp": "^1.0.4",
-				"mongodb": "^3.6.9",
-				"new-find-package-json": "^1.1.0",
-				"semver": "^7.3.5",
-				"tar-stream": "^2.1.4",
-				"tmp": "^0.2.1",
-				"tslib": "^2.3.0",
-				"uuid": "^8.3.1",
-				"yauzl": "^2.10.0"
-			},
-			"dependencies": {
-				"debug": {
-					"version": "4.3.2",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-					"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-					"requires": {
-						"ms": "2.1.2"
-					}
-				},
-				"ms": {
-					"version": "2.1.2",
-					"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-					"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-				}
-			}
+			"version": "1.2.15",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.15.tgz",
+			"integrity": "sha512-NNsxPSHnG22xellXsdGkzmF/SSzYNRgZcWQt2OKG+I3Wv8p37kTax13trTMthVkEOhvNv8M2l4A4JwK1p42ZHg=="
 		},
 		"ms": {
 			"version": "2.0.0",
@@ -2889,30 +1779,6 @@
 			"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
 			"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
 		},
-		"new-find-package-json": {
-			"version": "1.1.0",
-			"resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-1.1.0.tgz",
-			"integrity": "sha512-KOH3BNZcTKPzEkaJgG2iSUaurxKmefqRKmCOYH+8xqJytNIgjqU4J88BHfK+gy/UlEzlhccLyuJDJAcCgexSwA==",
-			"requires": {
-				"debug": "^4.3.2",
-				"tslib": "^2.3.0"
-			},
-			"dependencies": {
-				"debug": {
-					"version": "4.3.2",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
-					"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
-					"requires": {
-						"ms": "2.1.2"
-					}
-				},
-				"ms": {
-					"version": "2.1.2",
-					"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-					"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-				}
-			}
-		},
 		"node-os-utils": {
 			"version": "1.3.5",
 			"resolved": "https://registry.npmjs.org/node-os-utils/-/node-os-utils-1.3.5.tgz",
@@ -2926,58 +1792,11 @@
 				"ee-first": "1.1.1"
 			}
 		},
-		"once": {
-			"version": "1.4.0",
-			"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-			"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-			"requires": {
-				"wrappy": "1"
-			}
-		},
-		"optional-require": {
-			"version": "1.1.6",
-			"resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.6.tgz",
-			"integrity": "sha512-ZO2GGh1A84LV90OAIsMDmIJ5k/f7crSjP4aJSuLudp7C7wfVOAoyWWHV8Jf3ZMHyNHwpLD/DGhzaxbbN/duF+g==",
-			"requires": {
-				"require-at": "^1.0.6"
-			}
-		},
-		"p-limit": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
-			"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-			"requires": {
-				"p-try": "^2.0.0"
-			}
-		},
-		"p-locate": {
-			"version": "4.1.0",
-			"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
-			"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-			"requires": {
-				"p-limit": "^2.2.0"
-			}
-		},
-		"p-try": {
-			"version": "2.2.0",
-			"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-			"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
-		},
 		"parseurl": {
 			"version": "1.3.3",
 			"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
 			"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
 		},
-		"path-exists": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-			"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
-		},
-		"path-is-absolute": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-			"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
-		},
 		"path-parse": {
 			"version": "1.0.7",
 			"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
@@ -2989,24 +1808,6 @@
 			"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
 			"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
 		},
-		"pend": {
-			"version": "1.2.0",
-			"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
-			"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
-		},
-		"pkg-dir": {
-			"version": "4.2.0",
-			"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
-			"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
-			"requires": {
-				"find-up": "^4.0.0"
-			}
-		},
-		"process-nextick-args": {
-			"version": "2.0.1",
-			"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-			"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
-		},
 		"proxy-addr": {
 			"version": "2.0.7",
 			"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -3037,31 +1838,12 @@
 				"unpipe": "1.0.0"
 			}
 		},
-		"readable-stream": {
-			"version": "2.3.7",
-			"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-			"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-			"requires": {
-				"core-util-is": "~1.0.0",
-				"inherits": "~2.0.3",
-				"isarray": "~1.0.0",
-				"process-nextick-args": "~2.0.0",
-				"safe-buffer": "~5.1.1",
-				"string_decoder": "~1.1.1",
-				"util-deprecate": "~1.0.1"
-			}
-		},
 		"regenerator-runtime": {
 			"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==",
 			"dev": true
 		},
-		"require-at": {
-			"version": "1.0.6",
-			"resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz",
-			"integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g=="
-		},
 		"resolve": {
 			"version": "1.20.0",
 			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
@@ -3072,14 +1854,6 @@
 				"path-parse": "^1.0.6"
 			}
 		},
-		"rimraf": {
-			"version": "3.0.2",
-			"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
-			"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-			"requires": {
-				"glob": "^7.1.3"
-			}
-		},
 		"safe-buffer": {
 			"version": "5.1.2",
 			"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -3090,23 +1864,6 @@
 			"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
 			"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
 		},
-		"saslprep": {
-			"version": "1.0.3",
-			"resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
-			"integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
-			"optional": true,
-			"requires": {
-				"sparse-bitfield": "^3.0.3"
-			}
-		},
-		"semver": {
-			"version": "7.3.5",
-			"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-			"integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-			"requires": {
-				"lru-cache": "^6.0.0"
-			}
-		},
 		"send": {
 			"version": "0.17.1",
 			"resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
@@ -3150,85 +1907,16 @@
 			"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
 			"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
 		},
-		"sparse-bitfield": {
-			"version": "3.0.3",
-			"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
-			"integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
-			"optional": true,
-			"requires": {
-				"memory-pager": "^1.0.2"
-			}
-		},
 		"statuses": {
 			"version": "1.5.0",
 			"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
 			"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
 		},
-		"string_decoder": {
-			"version": "1.1.1",
-			"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-			"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-			"requires": {
-				"safe-buffer": "~5.1.0"
-			}
-		},
-		"tar-stream": {
-			"version": "2.2.0",
-			"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
-			"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
-			"requires": {
-				"bl": "^4.0.3",
-				"end-of-stream": "^1.4.1",
-				"fs-constants": "^1.0.0",
-				"inherits": "^2.0.3",
-				"readable-stream": "^3.1.1"
-			},
-			"dependencies": {
-				"bl": {
-					"version": "4.1.0",
-					"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
-					"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
-					"requires": {
-						"buffer": "^5.5.0",
-						"inherits": "^2.0.4",
-						"readable-stream": "^3.4.0"
-					}
-				},
-				"inherits": {
-					"version": "2.0.4",
-					"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-					"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-				},
-				"readable-stream": {
-					"version": "3.6.0",
-					"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
-					"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
-					"requires": {
-						"inherits": "^2.0.3",
-						"string_decoder": "^1.1.1",
-						"util-deprecate": "^1.0.1"
-					}
-				}
-			}
-		},
-		"tmp": {
-			"version": "0.2.1",
-			"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
-			"integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
-			"requires": {
-				"rimraf": "^3.0.0"
-			}
-		},
 		"toidentifier": {
 			"version": "1.0.0",
 			"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
 			"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
 		},
-		"tslib": {
-			"version": "2.3.1",
-			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
-			"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
-		},
 		"type-is": {
 			"version": "1.6.18",
 			"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@@ -3249,44 +1937,15 @@
 			"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
 			"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
 		},
-		"util-deprecate": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-			"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
-		},
 		"utils-merge": {
 			"version": "1.0.1",
 			"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
 			"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
 		},
-		"uuid": {
-			"version": "8.3.2",
-			"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-			"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
-		},
 		"vary": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
 			"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
-		},
-		"wrappy": {
-			"version": "1.0.2",
-			"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-			"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-		},
-		"yallist": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-			"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
-		},
-		"yauzl": {
-			"version": "2.10.0",
-			"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
-			"integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
-			"requires": {
-				"buffer-crc32": "~0.2.3",
-				"fd-slicer": "~1.1.0"
-			}
 		}
 	}
 }
diff --git a/bundle/package.json b/bundle/package.json
index 29608663..a326a131 100644
--- a/bundle/package.json
+++ b/bundle/package.json
@@ -51,7 +51,7 @@
 		"@fosscord/util": "file:../util",
 		"async-exit-hook": "^2.0.1",
 		"express": "^4.17.1",
-		"missing-native-js-functions": "^1.2.13",
+		"missing-native-js-functions": "^1.2.15",
 		"node-os-utils": "^1.3.5"
 	}
 }
diff --git a/cdn/package-lock.json b/cdn/package-lock.json
index a94f1409..ec638f86 100644
--- a/cdn/package-lock.json
+++ b/cdn/package-lock.json
@@ -23,7 +23,7 @@
 				"jest": "^27.0.6",
 				"lambert-db": "^1.2.3",
 				"lambert-server": "^1.2.8",
-				"missing-native-js-functions": "^1.2.10",
+				"missing-native-js-functions": "^1.2.15",
 				"multer": "^1.4.2",
 				"node-fetch": "^2.6.1",
 				"supertest": "^6.1.6",
@@ -60,7 +60,7 @@
 				"env-paths": "^2.2.1",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.11",
+				"missing-native-js-functions": "^1.2.15",
 				"node-fetch": "^2.6.1",
 				"patch-package": "^6.4.7",
 				"pg": "^8.7.1",
@@ -3977,9 +3977,9 @@
 			"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
 		},
 		"node_modules/missing-native-js-functions": {
-			"version": "1.2.10",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.10.tgz",
-			"integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g=="
+			"version": "1.2.15",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.15.tgz",
+			"integrity": "sha512-NNsxPSHnG22xellXsdGkzmF/SSzYNRgZcWQt2OKG+I3Wv8p37kTax13trTMthVkEOhvNv8M2l4A4JwK1p42ZHg=="
 		},
 		"node_modules/mkdirp": {
 			"version": "0.5.5",
@@ -5980,7 +5980,7 @@
 				"jest": "^27.0.6",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.11",
+				"missing-native-js-functions": "^1.2.15",
 				"node-fetch": "^2.6.1",
 				"patch-package": "^6.4.7",
 				"pg": "^8.7.1",
@@ -8561,9 +8561,9 @@
 			"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
 		},
 		"missing-native-js-functions": {
-			"version": "1.2.10",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.10.tgz",
-			"integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g=="
+			"version": "1.2.15",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.15.tgz",
+			"integrity": "sha512-NNsxPSHnG22xellXsdGkzmF/SSzYNRgZcWQt2OKG+I3Wv8p37kTax13trTMthVkEOhvNv8M2l4A4JwK1p42ZHg=="
 		},
 		"mkdirp": {
 			"version": "0.5.5",
diff --git a/cdn/package.json b/cdn/package.json
index 1eb6b1a8..c2bdbd79 100644
--- a/cdn/package.json
+++ b/cdn/package.json
@@ -51,7 +51,7 @@
 		"jest": "^27.0.6",
 		"lambert-db": "^1.2.3",
 		"lambert-server": "^1.2.8",
-		"missing-native-js-functions": "^1.2.10",
+		"missing-native-js-functions": "^1.2.15",
 		"multer": "^1.4.2",
 		"node-fetch": "^2.6.1",
 		"supertest": "^6.1.6",
diff --git a/gateway/package-lock.json b/gateway/package-lock.json
index 40606ecd..fc5d3bf2 100644
--- a/gateway/package-lock.json
+++ b/gateway/package-lock.json
@@ -15,7 +15,7 @@
 				"dotenv": "^8.2.0",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.8",
-				"missing-native-js-functions": "^1.2.10",
+				"missing-native-js-functions": "^1.2.15",
 				"mongoose-autopopulate": "^0.12.3",
 				"node-fetch": "^2.6.1",
 				"uuid": "^8.3.2",
@@ -48,7 +48,7 @@
 				"env-paths": "^2.2.1",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.11",
+				"missing-native-js-functions": "^1.2.14",
 				"node-fetch": "^2.6.1",
 				"patch-package": "^6.4.7",
 				"pg": "^8.7.1",
@@ -1144,9 +1144,9 @@
 			"dev": true
 		},
 		"node_modules/missing-native-js-functions": {
-			"version": "1.2.10",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.10.tgz",
-			"integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g=="
+			"version": "1.2.15",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.15.tgz",
+			"integrity": "sha512-NNsxPSHnG22xellXsdGkzmF/SSzYNRgZcWQt2OKG+I3Wv8p37kTax13trTMthVkEOhvNv8M2l4A4JwK1p42ZHg=="
 		},
 		"node_modules/mkdirp": {
 			"version": "1.0.4",
@@ -1942,7 +1942,7 @@
 				"jest": "^27.0.6",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.11",
+				"missing-native-js-functions": "^1.2.14",
 				"node-fetch": "^2.6.1",
 				"patch-package": "^6.4.7",
 				"pg": "^8.7.1",
@@ -2858,9 +2858,9 @@
 			"dev": true
 		},
 		"missing-native-js-functions": {
-			"version": "1.2.10",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.10.tgz",
-			"integrity": "sha512-sq+oAw/C3OtUyKopLNOf/+U85YNx7db6fy5nVfGVKlGdcV8tX24GjOSkcZeCAnAIjMEnlQBWTr17JXa3OJj22g=="
+			"version": "1.2.15",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.15.tgz",
+			"integrity": "sha512-NNsxPSHnG22xellXsdGkzmF/SSzYNRgZcWQt2OKG+I3Wv8p37kTax13trTMthVkEOhvNv8M2l4A4JwK1p42ZHg=="
 		},
 		"mkdirp": {
 			"version": "1.0.4",
diff --git a/gateway/package.json b/gateway/package.json
index e55ebe30..310e867e 100644
--- a/gateway/package.json
+++ b/gateway/package.json
@@ -32,7 +32,7 @@
 		"dotenv": "^8.2.0",
 		"jsonwebtoken": "^8.5.1",
 		"lambert-server": "^1.2.8",
-		"missing-native-js-functions": "^1.2.10",
+		"missing-native-js-functions": "^1.2.15",
 		"mongoose-autopopulate": "^0.12.3",
 		"node-fetch": "^2.6.1",
 		"uuid": "^8.3.2",
diff --git a/util/package-lock.json b/util/package-lock.json
index 571fffbe..1f4c1875 100644
--- a/util/package-lock.json
+++ b/util/package-lock.json
@@ -17,7 +17,7 @@
 				"env-paths": "^2.2.1",
 				"jsonwebtoken": "^8.5.1",
 				"lambert-server": "^1.2.10",
-				"missing-native-js-functions": "^1.2.13",
+				"missing-native-js-functions": "^1.2.15",
 				"node-fetch": "^2.6.1",
 				"patch-package": "^6.4.7",
 				"pg": "^8.7.1",
@@ -6338,9 +6338,9 @@
 			}
 		},
 		"node_modules/missing-native-js-functions": {
-			"version": "1.2.13",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.13.tgz",
-			"integrity": "sha512-1RAArfUkrGkj5N3xJVW251F2PvfP2ozAcxsLLDR6uiiAixTP5Abh8zzGMadepbqgiHC0FGlTSAUNbh9abN4Osg=="
+			"version": "1.2.15",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.15.tgz",
+			"integrity": "sha512-NNsxPSHnG22xellXsdGkzmF/SSzYNRgZcWQt2OKG+I3Wv8p37kTax13trTMthVkEOhvNv8M2l4A4JwK1p42ZHg=="
 		},
 		"node_modules/mkdirp": {
 			"version": "1.0.4",
@@ -13735,9 +13735,9 @@
 			}
 		},
 		"missing-native-js-functions": {
-			"version": "1.2.13",
-			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.13.tgz",
-			"integrity": "sha512-1RAArfUkrGkj5N3xJVW251F2PvfP2ozAcxsLLDR6uiiAixTP5Abh8zzGMadepbqgiHC0FGlTSAUNbh9abN4Osg=="
+			"version": "1.2.15",
+			"resolved": "https://registry.npmjs.org/missing-native-js-functions/-/missing-native-js-functions-1.2.15.tgz",
+			"integrity": "sha512-NNsxPSHnG22xellXsdGkzmF/SSzYNRgZcWQt2OKG+I3Wv8p37kTax13trTMthVkEOhvNv8M2l4A4JwK1p42ZHg=="
 		},
 		"mkdirp": {
 			"version": "1.0.4",
diff --git a/util/package.json b/util/package.json
index 38cd8d35..6490d754 100644
--- a/util/package.json
+++ b/util/package.json
@@ -44,7 +44,7 @@
 		"env-paths": "^2.2.1",
 		"jsonwebtoken": "^8.5.1",
 		"lambert-server": "^1.2.10",
-		"missing-native-js-functions": "^1.2.13",
+		"missing-native-js-functions": "^1.2.15",
 		"node-fetch": "^2.6.1",
 		"patch-package": "^6.4.7",
 		"pg": "^8.7.1",