summary refs log tree commit diff
diff options
context:
space:
mode:
authorEmma [it/its]@Rory& <root@rory.gay>2023-12-10 22:25:22 +0100
committerEmma [it/its]@Rory& <root@rory.gay>2023-12-10 22:25:22 +0100
commit9a16f1016003be579c7efbe6a05ae98c3910cd40 (patch)
tree81430c06829cdbcc8c1828b2c1de0945c5b3df8e
parentmember projection: select avatar (diff)
downloadserver-9a16f1016003be579c7efbe6a05ae98c3910cd40.tar.xz
Add nix support
-rw-r--r--.gitignore3
-rw-r--r--.idea/.gitignore5
-rw-r--r--.idea/codeStyles/Project.xml148
-rw-r--r--.idea/codeStyles/codeStyleConfig.xml5
-rw-r--r--.idea/inspectionProfiles/Project_Default.xml11
-rw-r--r--.idea/jsLibraryMappings.xml6
-rw-r--r--.idea/jsLinters/eslint.xml6
-rw-r--r--.idea/misc.xml6
-rw-r--r--.idea/modules.xml8
-rw-r--r--.idea/prettier.xml6
-rw-r--r--.idea/server.iml14
-rw-r--r--.idea/vcs.xml6
-rw-r--r--assets/schemas.json2560
-rw-r--r--flake.lock61
-rw-r--r--flake.nix35
-rw-r--r--flake.template.nix35
-rwxr-xr-xnix-build-test.sh3
-rwxr-xr-xnix-rebuild-flake.sh4
-rw-r--r--package.json10
-rw-r--r--tsconfig.json4
20 files changed, 2804 insertions, 132 deletions
diff --git a/.gitignore b/.gitignore
index bc780d64..69fcafd4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,9 +13,10 @@ assets/cacheMisses
 .vscode/settings.json
 
 build
+result
 
 *.log
 *.log.ansi
 *.tmp
 tmp/
-dump/
\ No newline at end of file
+dump/
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..b58b603f
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 00000000..50497ca0
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,148 @@
+<component name="ProjectCodeStyleConfiguration">
+  <code_scheme name="Project" version="173">
+    <HTMLCodeStyleSettings>
+      <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
+      <option name="HTML_ENFORCE_QUOTES" value="true" />
+    </HTMLCodeStyleSettings>
+    <JSCodeStyleSettings version="0">
+      <option name="FORCE_SEMICOLON_STYLE" value="true" />
+      <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
+      <option name="FORCE_QUOTE_STYlE" value="true" />
+      <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
+      <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
+      <option name="SPACES_WITHIN_IMPORTS" value="true" />
+    </JSCodeStyleSettings>
+    <TypeScriptCodeStyleSettings version="0">
+      <option name="FORCE_SEMICOLON_STYLE" value="true" />
+      <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
+      <option name="FORCE_QUOTE_STYlE" value="true" />
+      <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
+      <option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
+      <option name="SPACES_WITHIN_IMPORTS" value="true" />
+    </TypeScriptCodeStyleSettings>
+    <VueCodeStyleSettings>
+      <option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
+      <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
+    </VueCodeStyleSettings>
+    <codeStyleSettings language="EditorConfig">
+      <option name="ALIGN_GROUP_FIELD_DECLARATIONS" value="true" />
+    </codeStyleSettings>
+    <codeStyleSettings language="HTML">
+      <option name="SOFT_MARGINS" value="80" />
+      <indentOptions>
+        <option name="INDENT_SIZE" value="2" />
+        <option name="CONTINUATION_INDENT_SIZE" value="2" />
+        <option name="TAB_SIZE" value="2" />
+      </indentOptions>
+    </codeStyleSettings>
+    <codeStyleSettings language="JSON">
+      <indentOptions>
+        <option name="INDENT_SIZE" value="4" />
+      </indentOptions>
+    </codeStyleSettings>
+    <codeStyleSettings language="JavaScript">
+      <option name="SOFT_MARGINS" value="80" />
+      <indentOptions>
+        <option name="INDENT_SIZE" value="2" />
+        <option name="CONTINUATION_INDENT_SIZE" value="2" />
+        <option name="TAB_SIZE" value="2" />
+      </indentOptions>
+      <arrangement>
+        <groups>
+          <group>
+            <type>GROUP_PROPERTY_FIELD_WITH_GETTER_SETTER</type>
+            <order>KEEP</order>
+          </group>
+          <group>
+            <type>TREAT_LAMBDA_INITIALIZED_FIELDS_AS_METHODS</type>
+            <order>KEEP</order>
+          </group>
+          <group>
+            <type>OVERRIDDEN_METHODS</type>
+            <order>BY_NAME</order>
+          </group>
+        </groups>
+        <rules>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <FIELD>true</FIELD>
+                  <STATIC>true</STATIC>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <FIELD>true</FIELD>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <CONSTRUCTOR>true</CONSTRUCTOR>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <PROPERTY>true</PROPERTY>
+                  <STATIC>true</STATIC>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <PROPERTY>true</PROPERTY>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <METHOD>true</METHOD>
+                  <STATIC>true</STATIC>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <METHOD>true</METHOD>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+        </rules>
+      </arrangement>
+    </codeStyleSettings>
+    <codeStyleSettings language="TypeScript">
+      <option name="SOFT_MARGINS" value="80" />
+      <indentOptions>
+        <option name="INDENT_SIZE" value="2" />
+        <option name="CONTINUATION_INDENT_SIZE" value="2" />
+        <option name="TAB_SIZE" value="2" />
+      </indentOptions>
+    </codeStyleSettings>
+    <codeStyleSettings language="Vue">
+      <option name="SOFT_MARGINS" value="80" />
+      <indentOptions>
+        <option name="CONTINUATION_INDENT_SIZE" value="2" />
+      </indentOptions>
+    </codeStyleSettings>
+  </code_scheme>
+</component>
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 00000000..79ee123c
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+<component name="ProjectCodeStyleConfiguration">
+  <state>
+    <option name="USE_PER_PROJECT_SETTINGS" value="true" />
+  </state>
+</component>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 00000000..22cdf9bd
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,11 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
+      <option name="processCode" value="true" />
+      <option name="processLiterals" value="true" />
+      <option name="processComments" value="true" />
+    </inspection_tool>
+  </profile>
+</component>
\ No newline at end of file
diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml
new file mode 100644
index 00000000..1ee68b18
--- /dev/null
+++ b/.idea/jsLibraryMappings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptLibraryMappings">
+    <file url="PROJECT" libraries="{@types/node}" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/jsLinters/eslint.xml b/.idea/jsLinters/eslint.xml
new file mode 100644
index 00000000..541945bb
--- /dev/null
+++ b/.idea/jsLinters/eslint.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="EslintConfiguration">
+    <option name="fix-on-save" value="true" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..28a804d8
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..fbd90b4d
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/server.iml" filepath="$PROJECT_DIR$/.idea/server.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/prettier.xml b/.idea/prettier.xml
new file mode 100644
index 00000000..b0c1c68f
--- /dev/null
+++ b/.idea/prettier.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PrettierConfiguration">
+    <option name="myConfigurationMode" value="AUTOMATIC" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/server.iml b/.idea/server.iml
new file mode 100644
index 00000000..6186bc99
--- /dev/null
+++ b/.idea/server.iml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/.tmp" />
+      <excludeFolder url="file://$MODULE_DIR$/temp" />
+      <excludeFolder url="file://$MODULE_DIR$/tmp" />
+      <excludeFolder url="file://$MODULE_DIR$/dist" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="@types/node" level="application" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..35eb1ddf
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/assets/schemas.json b/assets/schemas.json
index a0ab1697..e5e0b523 100644
--- a/assets/schemas.json
+++ b/assets/schemas.json
@@ -4386,7 +4386,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -4396,6 +4398,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -8605,7 +8623,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -8615,6 +8635,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -12824,7 +12860,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -12834,6 +12872,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -17038,7 +17092,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -17048,6 +17104,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -21288,7 +21360,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -21298,6 +21372,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -25507,7 +25597,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -25517,6 +25609,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -29717,7 +29825,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -29727,6 +29837,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -33930,7 +34056,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -33940,6 +34068,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -38152,7 +38296,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -38162,6 +38308,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -42362,7 +42524,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -42372,6 +42536,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -46572,7 +46752,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -46582,6 +46764,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -50801,7 +50999,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -50811,6 +51011,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -55014,7 +55230,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -55024,6 +55242,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -59287,7 +59521,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -59297,6 +59533,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -63519,7 +63771,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -63529,6 +63783,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -67892,7 +68162,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -67902,6 +68174,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -72123,7 +72411,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -72133,6 +72423,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -76364,7 +76670,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -76374,6 +76682,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -80587,7 +80911,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -80597,6 +80923,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -84816,7 +85158,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -84826,6 +85170,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -89035,7 +89395,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -89045,6 +89407,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -93242,7 +93620,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -93252,6 +93632,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -97567,7 +97963,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -97577,6 +97975,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -101889,7 +102303,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -101899,6 +102315,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -106099,7 +106531,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -106109,6 +106543,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -110317,7 +110767,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -110327,6 +110779,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -114528,7 +114996,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -114538,6 +115008,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -118739,7 +119225,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -118749,6 +119237,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -122985,7 +123489,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -122995,6 +123501,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -127196,7 +127718,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -127206,6 +127730,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -131406,7 +131946,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -131416,6 +131958,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -135631,7 +136189,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -135641,6 +136201,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -139845,7 +140421,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -139855,6 +140433,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -144133,7 +144727,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -144143,6 +144739,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -148343,7 +148955,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -148353,6 +148967,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -152553,7 +153183,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -152563,6 +153195,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -156760,7 +157408,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -156770,6 +157420,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -160973,7 +161639,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -160983,6 +161651,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -165196,7 +165880,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -165206,6 +165892,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -169403,7 +170105,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -169413,6 +170117,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -173659,7 +174379,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -173669,6 +174391,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -177901,7 +178639,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -177911,6 +178651,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -182108,7 +182864,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -182118,6 +182876,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -186340,7 +187114,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -186350,6 +187126,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -190661,7 +191453,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -190671,6 +191465,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -194867,7 +195677,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -194877,6 +195689,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -199112,7 +199940,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -199122,6 +199952,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -203345,7 +204191,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -203355,6 +204203,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -207630,7 +208494,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -207640,6 +208506,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -211837,7 +212719,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -211847,6 +212731,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -216052,7 +216952,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -216062,6 +216964,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -220257,7 +221175,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -220267,6 +221187,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -224468,7 +225404,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -224478,6 +225416,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -228679,7 +229633,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -228689,6 +229645,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -232890,7 +233862,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -232900,6 +233874,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -237133,7 +238123,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -237143,6 +238135,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -241348,7 +242356,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -241358,6 +242368,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -245553,7 +246579,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -245563,6 +246591,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -249764,7 +250808,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -249774,6 +250820,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -253986,7 +255048,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -253996,6 +255060,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -258222,7 +259302,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -258232,6 +259314,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -262429,7 +263527,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -262439,6 +263539,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -266639,7 +267755,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -266649,6 +267767,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -270878,7 +272012,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -270888,6 +272024,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -275085,7 +276237,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -275095,6 +276249,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -279371,7 +280541,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -279381,6 +280553,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -283585,7 +284773,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -283595,6 +284785,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -287792,7 +288998,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -287802,6 +289010,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -291999,7 +293223,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -292009,6 +293235,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -296213,7 +297455,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -296223,6 +297467,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -300424,7 +301684,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -300434,6 +301696,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -304631,7 +305909,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -304641,6 +305921,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -308913,7 +310209,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -308923,6 +310221,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -313131,7 +314445,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -313141,6 +314457,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -317350,7 +318682,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -317360,6 +318694,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -321619,7 +322969,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -321629,6 +322981,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -325847,7 +327215,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -325857,6 +327227,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -330081,7 +331467,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -330091,6 +331479,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -334309,7 +335713,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -334319,6 +335725,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -338516,7 +339938,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -338526,6 +339950,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -342751,7 +344191,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -342761,6 +344203,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -346998,7 +348456,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -347008,6 +348468,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -351199,7 +352675,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -351209,6 +352687,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -355410,7 +356904,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -355420,6 +356916,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -359617,7 +361129,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -359627,6 +361141,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -363831,7 +365361,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -363841,6 +365373,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -368249,7 +369797,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -368259,6 +369809,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -372447,7 +374013,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -372457,6 +374025,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -376739,7 +378323,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -376749,6 +378335,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -380940,7 +382542,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -380950,6 +382554,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -385141,7 +386761,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -385151,6 +386773,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -389342,7 +390980,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -389352,6 +390992,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -393637,7 +395293,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -393647,6 +395305,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -397836,7 +399510,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -397846,6 +399522,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -402035,7 +403727,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -402045,6 +403739,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -406234,7 +407944,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -406244,6 +407956,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -410435,7 +412163,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -410445,6 +412175,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -414636,7 +416382,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -414646,6 +416394,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -418837,7 +420601,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -418847,6 +420613,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -423038,7 +424820,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -423048,6 +424832,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -427239,7 +429039,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -427249,6 +429051,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -431504,7 +433322,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -431514,6 +433334,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -435705,7 +437541,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -435715,6 +437553,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -439906,7 +441760,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -439916,6 +441772,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -444107,7 +445979,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -444117,6 +445991,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -448355,7 +450245,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -448365,6 +450257,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -452792,7 +454700,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -452802,6 +454712,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -456993,7 +458919,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -457003,6 +458931,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -461194,7 +463138,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -461204,6 +463150,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -465395,7 +467357,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -465405,6 +467369,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -469596,7 +471576,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -469606,6 +471588,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -473823,7 +475821,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -473833,6 +475833,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -478024,7 +480040,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -478034,6 +480052,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -482246,7 +484280,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -482256,6 +484292,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -486461,7 +488513,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -486471,6 +488525,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -490788,7 +492858,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -490798,6 +492870,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -495007,7 +497095,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -495017,6 +497107,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -499232,7 +501338,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -499242,6 +501350,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -503443,7 +505567,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -503453,6 +505579,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -507654,7 +509796,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -507664,6 +509808,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -511852,7 +514012,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -511862,6 +514024,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -516062,7 +518240,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -516072,6 +518252,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -520287,7 +522483,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -520297,6 +522495,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -524516,7 +526730,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -524526,6 +526742,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -528724,7 +530956,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -528734,6 +530968,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -532931,7 +535181,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -532941,6 +535193,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -537138,7 +539406,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -537148,6 +539418,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
@@ -541351,7 +543637,9 @@
                     "channel": {
                         "$ref": "#/definitions/RateLimitOptions"
                     },
-                    "auth": {}
+                    "auth": {
+                        "$ref": "#/definitions/AuthRateLimit"
+                    }
                 },
                 "additionalProperties": false,
                 "required": [
@@ -541361,6 +543649,22 @@
                     "webhook"
                 ]
             },
+            "AuthRateLimit": {
+                "type": "object",
+                "properties": {
+                    "login": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    },
+                    "register": {
+                        "$ref": "#/definitions/RateLimitOptions"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "login",
+                    "register"
+                ]
+            },
             "GlobalRateLimits": {
                 "type": "object",
                 "properties": {
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 00000000..db9e528f
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,61 @@
+{
+  "nodes": {
+    "flake-utils": {
+      "inputs": {
+        "systems": "systems"
+      },
+      "locked": {
+        "lastModified": 1701680307,
+        "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "flake-utils",
+        "type": "github"
+      }
+    },
+    "nixpkgs": {
+      "locked": {
+        "lastModified": 1702151865,
+        "narHash": "sha256-9VAt19t6yQa7pHZLDbil/QctAgVsA66DLnzdRGqDisg=",
+        "owner": "nixos",
+        "repo": "nixpkgs",
+        "rev": "666fc80e7b2afb570462423cb0e1cf1a3a34fedd",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nixos",
+        "ref": "nixos-unstable",
+        "repo": "nixpkgs",
+        "type": "github"
+      }
+    },
+    "root": {
+      "inputs": {
+        "flake-utils": "flake-utils",
+        "nixpkgs": "nixpkgs"
+      }
+    },
+    "systems": {
+      "locked": {
+        "lastModified": 1681028828,
+        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+        "owner": "nix-systems",
+        "repo": "default",
+        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-systems",
+        "repo": "default",
+        "type": "github"
+      }
+    }
+  },
+  "root": "root",
+  "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 00000000..f0f6389a
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,35 @@
+{
+  description = "Spacebar server, written in Typescript.";
+
+  inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+  inputs.flake-utils.url = "github:numtide/flake-utils";
+
+  outputs = { self, nixpkgs, flake-utils }:
+    flake-utils.lib.eachSystem flake-utils.lib.allSystems (system:
+	let
+		pkgs = import nixpkgs {
+			inherit system;
+		};
+	in rec {
+		packages.default = pkgs.buildNpmPackage {
+			pname = "spacebar-server-ts";
+			src = ./.;
+			name = "spacebar-server-ts";
+			meta.mainProgram = "start-bundle";
+
+			#nativeBuildInputs = with pkgs; [ python3 ];
+			npmDepsHash = "sha256-9yyOPogFi71Dcm7DKe4FJJz9d6uDtJsliDR+b32KKvA=";
+			#makeCacheWritable = true;
+			postPatch = ''
+				substituteInPlace package.json --replace 'npx patch-package' '${pkgs.nodePackages.patch-package}/bin/patch-package'
+			'';
+		};
+		devShell = pkgs.mkShell {
+			buildInputs = with pkgs; [
+				nodejs
+				nodePackages.typescript
+			];
+		};
+	}
+    );
+}
diff --git a/flake.template.nix b/flake.template.nix
new file mode 100644
index 00000000..d1d30d7b
--- /dev/null
+++ b/flake.template.nix
@@ -0,0 +1,35 @@
+{
+  description = "Spacebar server, written in Typescript.";
+
+  inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+  inputs.flake-utils.url = "github:numtide/flake-utils";
+
+  outputs = { self, nixpkgs, flake-utils }:
+    flake-utils.lib.eachSystem flake-utils.lib.allSystems (system:
+	let
+		pkgs = import nixpkgs {
+			inherit system;
+		};
+	in rec {
+		packages.default = pkgs.buildNpmPackage {
+			pname = "spacebar-server-ts";
+			src = ./.;
+			name = "spacebar-server-ts";
+			meta.mainProgram = "start-bundle";
+
+			#nativeBuildInputs = with pkgs; [ python3 ];
+			npmDepsHash = "$NPM_HASH";
+			#makeCacheWritable = true;
+			postPatch = ''
+				substituteInPlace package.json --replace 'npx patch-package' '${pkgs.nodePackages.patch-package}/bin/patch-package'
+			'';
+		};
+		devShell = pkgs.mkShell {
+			buildInputs = with pkgs; [
+				nodejs
+				nodePackages.typescript
+			];
+		};
+	}
+    );
+}
diff --git a/nix-build-test.sh b/nix-build-test.sh
new file mode 100755
index 00000000..5c691462
--- /dev/null
+++ b/nix-build-test.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+#nix build --update-input pnpm2nix --debugger --ignore-try
+nix build --debugger --ignore-try --print-out-paths --print-build-logs --http2 "$@"
diff --git a/nix-rebuild-flake.sh b/nix-rebuild-flake.sh
new file mode 100755
index 00000000..08f55840
--- /dev/null
+++ b/nix-rebuild-flake.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i "bash -x" -p bash
+DEPS_HASH=`nix run nixpkgs#prefetch-npm-deps -- package-lock.json`
+sed 's/$NPM_HASH/'${DEPS_HASH/\//\\\/}'/g' flake.template.nix > flake.nix
diff --git a/package.json b/package.json
index 3994670b..7e48f745 100644
--- a/package.json
+++ b/package.json
@@ -35,6 +35,16 @@
 	"imports": {
 		"#*": "./dist/*/index.js"
 	},
+	"files": [
+		"dist",
+		"assets"
+	],
+	"bin": {
+		"start-bundle": "dist/bundle/start.js",
+		"start-api": "dist/api/start.js",
+		"start-cdn": "dist/cdn/start.js",
+		"start-gateway": "dist/gateway/start.js"
+	},
 	"homepage": "https://spacebar.chat",
 	"devDependencies": {
 		"@types/amqplib": "^0.8.2",
diff --git a/tsconfig.json b/tsconfig.json
index 63b5e96c..1e3e9d59 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -41,9 +41,7 @@
 		} /* Specify a set of entries that re-map imports to additional lookup locations. */,
 		// "rootDirs": [],                                   /* Allow multiple folders to be treated as one when resolving modules. */
 		// "typeRoots": [],                                  /* Specify multiple folders that act like './node_modules/@types'. */
-		"types": [
-			"node"
-		] /* Specify type package names to be included without being referenced in a source file. */,
+		"types": ["node"] /* Specify type package names to be included without being referenced in a source file. */,
 		// "allowUmdGlobalAccess": true,                     /* Allow accessing UMD globals from modules. */
 		// "moduleSuffixes": [],                             /* List of file name suffixes to search when resolving a module. */
 		"resolveJsonModule": true /* Enable importing .json files. */,