diff --git a/package-lock.json b/package-lock.json
index 95fdaaf..cdd78ac 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -33,7 +33,7 @@
         "typescript": "^4.8.3",
         "webpack": "^5.74.0",
         "webpack-cli": "^4.10.0",
-        "wrangler": "^2.0.29"
+        "wrangler": "^2.1.0"
       }
     },
     "node_modules/@ampproject/remapping": {
@@ -1187,13 +1187,13 @@
       }
     },
     "node_modules/@miniflare/cache": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/cache/-/cache-2.7.1.tgz",
-      "integrity": "sha512-QxN4yp8+cIlggbjIVP17xbSOjjJMco4coW5mXNPcTXazvqnbslwie9GDWmt4BkRvP77uwomf2CDUqEgxZC0frw==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/cache/-/cache-2.8.2.tgz",
+      "integrity": "sha512-YaFOsXKmlNLk5xDJfyDCMsRaoZLFLPqHAiEsZBZTcCl3FlZbG2GUIvcMlfkO4OKb1nCjtr9OxFgtIdW6DEuboA==",
       "dev": true,
       "dependencies": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/shared": "2.8.2",
         "http-cache-semantics": "^4.1.0",
         "undici": "5.9.1"
       },
@@ -1202,12 +1202,12 @@
       }
     },
     "node_modules/@miniflare/cli-parser": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/cli-parser/-/cli-parser-2.7.1.tgz",
-      "integrity": "sha512-kuY6sWClFBQoc22g7P7gR3fv5dXDI8ezvPvNX6tHXPLiPxiYCoz8XTRUqG5CW12zTxrI3yPjEaTQoFlHzdnQkg==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/cli-parser/-/cli-parser-2.8.2.tgz",
+      "integrity": "sha512-qa//FhLiJpQpTngq6tCJMZqc1CjhJQV4AwKWaIp85XiVbpbN/cTzZ6PUyoYLTZ6g6dL4j+136o2bb+2XSMxVHw==",
       "dev": true,
       "dependencies": {
-        "@miniflare/shared": "2.7.1",
+        "@miniflare/shared": "2.8.2",
         "kleur": "^4.1.4"
       },
       "engines": {
@@ -1215,14 +1215,15 @@
       }
     },
     "node_modules/@miniflare/core": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/core/-/core-2.7.1.tgz",
-      "integrity": "sha512-Pdq5+FPSg0L0/eUOKrEfGFowcmbcEXKCIJa8iYz1iA35koSytgTN+6zeuuGPGVXQbGGEPhNugWlOz4u70FJ1GA==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/core/-/core-2.8.2.tgz",
+      "integrity": "sha512-a9Ecyf4xALcvphQhK3qA+mtUApUrUbwcxCexXvvgVsPrQtMCOIjJ2qs7+RKrC+krCy2O8Eq/8eq2hYh4y/HOKQ==",
       "dev": true,
       "dependencies": {
         "@iarna/toml": "^2.2.5",
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/watcher": "2.7.1",
+        "@miniflare/queues": "2.8.2",
+        "@miniflare/shared": "2.8.2",
+        "@miniflare/watcher": "2.8.2",
         "busboy": "^1.6.0",
         "dotenv": "^10.0.0",
         "kleur": "^4.1.4",
@@ -1244,14 +1245,14 @@
       }
     },
     "node_modules/@miniflare/durable-objects": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.7.1.tgz",
-      "integrity": "sha512-bzTzhu9KgtBZ3itR/u/izBHBzQnxhfOt1IQcJNCM/TBwSf8wr6ztDdsTDFE0j9/oQYj4umbGynzZvYYUm/SniQ==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.8.2.tgz",
+      "integrity": "sha512-jKcnb6lfgVZKfTPom2d0yPiaVAuDJLyr4itzb3nqJNH5Ld2iKJv77iSGOEOv8Wb78YEEFU8PQZvvrAC/TmN6tQ==",
       "dev": true,
       "dependencies": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/storage-memory": "2.7.1",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/shared": "2.8.2",
+        "@miniflare/storage-memory": "2.8.2",
         "undici": "5.9.1"
       },
       "engines": {
@@ -1259,13 +1260,13 @@
       }
     },
     "node_modules/@miniflare/html-rewriter": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.7.1.tgz",
-      "integrity": "sha512-7088TlpQBXdKX1OPOL+34xKSF5IjiHyjggM7HizJG14IIw1kSiJYojqaOi5f/DxstTUJJCOIxHn3zKf6QSpukA==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.8.2.tgz",
+      "integrity": "sha512-xxrLO7XMpiaWi6HSIqvAxmD5z6RRHWENkWuWjQqaqC6E6qheN+d0ZeZshyP2SRbJUw9wfFUj5zkKTva5sovzbw==",
       "dev": true,
       "dependencies": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/shared": "2.8.2",
         "html-rewriter-wasm": "^0.4.1",
         "undici": "5.9.1"
       },
@@ -1274,14 +1275,14 @@
       }
     },
     "node_modules/@miniflare/http-server": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/http-server/-/http-server-2.7.1.tgz",
-      "integrity": "sha512-fcLrEVxtwMhj3qO5Wg5844s6WNTiixRjGEV/Top2TjP3CM6DtIc5l6zca4vozaTba39So627NDalLZQaCAcSBQ==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/http-server/-/http-server-2.8.2.tgz",
+      "integrity": "sha512-hrTRHHz+LWe7cLkP8Xg4hM3YRH7kI4ngOYozkEz1OC69SLBnxfT8xLkUkvz+fdJ3vquF+dpHyVQAa0dpvJShGA==",
       "dev": true,
       "dependencies": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/web-sockets": "2.7.1",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/shared": "2.8.2",
+        "@miniflare/web-sockets": "2.8.2",
         "kleur": "^4.1.4",
         "selfsigned": "^2.0.0",
         "undici": "5.9.1",
@@ -1293,12 +1294,12 @@
       }
     },
     "node_modules/@miniflare/kv": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/kv/-/kv-2.7.1.tgz",
-      "integrity": "sha512-p3BUSgp2BK2l7GxM9wVnaXTM8/thzCzAITDbeyZLevtd8r3Vl1rE8W9Q+qrUbX454+zvHfG71O+BdtfFchgWkA==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/kv/-/kv-2.8.2.tgz",
+      "integrity": "sha512-radkyE6FtLGAoumf8S1VnPHAbgiP1DOzGnBnBVferMDkd86/3P8hre1a+C9PUTgt6e6KgLq4AKEFDwRJHc1MFw==",
       "dev": true,
       "dependencies": {
-        "@miniflare/shared": "2.7.1"
+        "@miniflare/shared": "2.8.2"
       },
       "engines": {
         "node": ">=16.13"
@@ -1316,26 +1317,13 @@
         "node": ">=16.7"
       }
     },
-    "node_modules/@miniflare/queues/node_modules/@miniflare/shared": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.8.2.tgz",
-      "integrity": "sha512-cjuLIeTAlqcb1POrK4nLa8Bt79SfzbglUr/w78xRAUUoOdB0Lsm3HnEERzD1o0lO2G/Q9F+VDAp2QyglPFV61A==",
-      "dev": true,
-      "dependencies": {
-        "kleur": "^4.1.4",
-        "picomatch": "^2.3.1"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
     "node_modules/@miniflare/r2": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/r2/-/r2-2.7.1.tgz",
-      "integrity": "sha512-UFqU2y4Qccto4PilHEn8JpTKi+lPZ61eV0G50Nnfnwa19yDKf0Wu6rYXecLTPetln10v6pCLvRvk4O93d99A6Q==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/r2/-/r2-2.8.2.tgz",
+      "integrity": "sha512-cdqq1dcgfiTlCf3wjQjrhZuRb0vJImLwYSALVEAA/4leVhwNY9ABHIn71y29Nf4bUdv2YKVSfTuV0m0CRGmOqA==",
       "dev": true,
       "dependencies": {
-        "@miniflare/shared": "2.7.1",
+        "@miniflare/shared": "2.8.2",
         "undici": "5.9.1"
       },
       "engines": {
@@ -1343,25 +1331,25 @@
       }
     },
     "node_modules/@miniflare/runner-vm": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.7.1.tgz",
-      "integrity": "sha512-kcntTSq38Jk81EQbEYs1wSrcziz/KO1JD1DyyDSw1C9pDSFmhusgObDW0VxaGgEVyh92No8l5CNlTjY7kjiMHw==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.8.2.tgz",
+      "integrity": "sha512-l9V/MedhH1Dc/xIEPEpXW57Y649lcTCYorwqnHPca3didiw75O8jI2g6MvuVlodmbimpg2WtwI7/2ac0WFZfWQ==",
       "dev": true,
       "dependencies": {
-        "@miniflare/shared": "2.7.1"
+        "@miniflare/shared": "2.8.2"
       },
       "engines": {
         "node": ">=16.13"
       }
     },
     "node_modules/@miniflare/scheduler": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/scheduler/-/scheduler-2.7.1.tgz",
-      "integrity": "sha512-00DCtvSi0/Kamo1OLtvfG+zxAS9VqrFO8Q1Wg7yEJpJBUlnUn+oOXKT//aCpZuVBJLSf7tXxzRXJYNPpu09fwg==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/scheduler/-/scheduler-2.8.2.tgz",
+      "integrity": "sha512-vhtyPky+1Phq4Arul3mpzRWJuqJex2YgkPnf9MLA977dcxptRBOzGIxwVPzaUTtko4mHwwzEyl15diT/BXkPJA==",
       "dev": true,
       "dependencies": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/shared": "2.8.2",
         "cron-schedule": "^3.0.4"
       },
       "engines": {
@@ -1369,9 +1357,9 @@
       }
     },
     "node_modules/@miniflare/shared": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.7.1.tgz",
-      "integrity": "sha512-hQsx/mt5N/zBxJ3DyAJyGMtdT07WeuU+nYiWjkIwQOkPgH/p72Xu0tdi2kO/KQogtxeT2B+eTMVXlE0JqZOyhA==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.8.2.tgz",
+      "integrity": "sha512-cjuLIeTAlqcb1POrK4nLa8Bt79SfzbglUr/w78xRAUUoOdB0Lsm3HnEERzD1o0lO2G/Q9F+VDAp2QyglPFV61A==",
       "dev": true,
       "dependencies": {
         "kleur": "^4.1.4",
@@ -1402,98 +1390,7 @@
         "node": ">=16.13"
       }
     },
-    "node_modules/@miniflare/shared-test-environment/node_modules/@miniflare/cache": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/@miniflare/cache/-/cache-2.8.2.tgz",
-      "integrity": "sha512-YaFOsXKmlNLk5xDJfyDCMsRaoZLFLPqHAiEsZBZTcCl3FlZbG2GUIvcMlfkO4OKb1nCjtr9OxFgtIdW6DEuboA==",
-      "dev": true,
-      "dependencies": {
-        "@miniflare/core": "2.8.2",
-        "@miniflare/shared": "2.8.2",
-        "http-cache-semantics": "^4.1.0",
-        "undici": "5.9.1"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
-    "node_modules/@miniflare/shared-test-environment/node_modules/@miniflare/core": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/@miniflare/core/-/core-2.8.2.tgz",
-      "integrity": "sha512-a9Ecyf4xALcvphQhK3qA+mtUApUrUbwcxCexXvvgVsPrQtMCOIjJ2qs7+RKrC+krCy2O8Eq/8eq2hYh4y/HOKQ==",
-      "dev": true,
-      "dependencies": {
-        "@iarna/toml": "^2.2.5",
-        "@miniflare/queues": "2.8.2",
-        "@miniflare/shared": "2.8.2",
-        "@miniflare/watcher": "2.8.2",
-        "busboy": "^1.6.0",
-        "dotenv": "^10.0.0",
-        "kleur": "^4.1.4",
-        "set-cookie-parser": "^2.4.8",
-        "undici": "5.9.1",
-        "urlpattern-polyfill": "^4.0.3"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
-    "node_modules/@miniflare/shared-test-environment/node_modules/@miniflare/durable-objects": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.8.2.tgz",
-      "integrity": "sha512-jKcnb6lfgVZKfTPom2d0yPiaVAuDJLyr4itzb3nqJNH5Ld2iKJv77iSGOEOv8Wb78YEEFU8PQZvvrAC/TmN6tQ==",
-      "dev": true,
-      "dependencies": {
-        "@miniflare/core": "2.8.2",
-        "@miniflare/shared": "2.8.2",
-        "@miniflare/storage-memory": "2.8.2",
-        "undici": "5.9.1"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
-    "node_modules/@miniflare/shared-test-environment/node_modules/@miniflare/html-rewriter": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.8.2.tgz",
-      "integrity": "sha512-xxrLO7XMpiaWi6HSIqvAxmD5z6RRHWENkWuWjQqaqC6E6qheN+d0ZeZshyP2SRbJUw9wfFUj5zkKTva5sovzbw==",
-      "dev": true,
-      "dependencies": {
-        "@miniflare/core": "2.8.2",
-        "@miniflare/shared": "2.8.2",
-        "html-rewriter-wasm": "^0.4.1",
-        "undici": "5.9.1"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
-    "node_modules/@miniflare/shared-test-environment/node_modules/@miniflare/kv": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/@miniflare/kv/-/kv-2.8.2.tgz",
-      "integrity": "sha512-radkyE6FtLGAoumf8S1VnPHAbgiP1DOzGnBnBVferMDkd86/3P8hre1a+C9PUTgt6e6KgLq4AKEFDwRJHc1MFw==",
-      "dev": true,
-      "dependencies": {
-        "@miniflare/shared": "2.8.2"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
-    "node_modules/@miniflare/shared-test-environment/node_modules/@miniflare/shared": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.8.2.tgz",
-      "integrity": "sha512-cjuLIeTAlqcb1POrK4nLa8Bt79SfzbglUr/w78xRAUUoOdB0Lsm3HnEERzD1o0lO2G/Q9F+VDAp2QyglPFV61A==",
-      "dev": true,
-      "dependencies": {
-        "kleur": "^4.1.4",
-        "picomatch": "^2.3.1"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
-    "node_modules/@miniflare/shared-test-environment/node_modules/@miniflare/sites": {
+    "node_modules/@miniflare/sites": {
       "version": "2.8.2",
       "resolved": "https://registry.npmjs.org/@miniflare/sites/-/sites-2.8.2.tgz",
       "integrity": "sha512-zdzg8gm/I4bcUIQ4Yo9WqvTQJN+yOnpPqbQ/nKKd6tebrX4k+sw9wTTGl42MjQ4NN5XfNy3xFERo21i1jLgziA==",
@@ -1507,7 +1404,7 @@
         "node": ">=16.13"
       }
     },
-    "node_modules/@miniflare/shared-test-environment/node_modules/@miniflare/storage-file": {
+    "node_modules/@miniflare/storage-file": {
       "version": "2.8.2",
       "resolved": "https://registry.npmjs.org/@miniflare/storage-file/-/storage-file-2.8.2.tgz",
       "integrity": "sha512-M5f+vDVjkghix1sCGQy+apiokTBoOU/V7pBaIsHZTnD/58S6/T2s7glD12Dwfr+u1cCjWxEJx+jaXYIBAKbmQQ==",
@@ -1520,7 +1417,7 @@
         "node": ">=16.13"
       }
     },
-    "node_modules/@miniflare/shared-test-environment/node_modules/@miniflare/storage-memory": {
+    "node_modules/@miniflare/storage-memory": {
       "version": "2.8.2",
       "resolved": "https://registry.npmjs.org/@miniflare/storage-memory/-/storage-memory-2.8.2.tgz",
       "integrity": "sha512-9OclkkWBbJwo6WJEz2QCbHsvMt+qraq/xIbuFOByytAcyjomp1gm1ZUaKZ5VkkqMXMgdQ1E+6wTq2iA1p+YRcg==",
@@ -1532,7 +1429,7 @@
         "node": ">=16.13"
       }
     },
-    "node_modules/@miniflare/shared-test-environment/node_modules/@miniflare/watcher": {
+    "node_modules/@miniflare/watcher": {
       "version": "2.8.2",
       "resolved": "https://registry.npmjs.org/@miniflare/watcher/-/watcher-2.8.2.tgz",
       "integrity": "sha512-2+awQITWkUGb9GlpzVmYwoe+qiSibni7C6gVDnkxorBRoecwUAzjFRF09QjdEn40+q7peNdE0ui1oWjZMgOaHg==",
@@ -1544,7 +1441,7 @@
         "node": ">=16.13"
       }
     },
-    "node_modules/@miniflare/shared-test-environment/node_modules/@miniflare/web-sockets": {
+    "node_modules/@miniflare/web-sockets": {
       "version": "2.8.2",
       "resolved": "https://registry.npmjs.org/@miniflare/web-sockets/-/web-sockets-2.8.2.tgz",
       "integrity": "sha512-oW9vG7zImwZZ/OKuAI4CEMtVqYVQqWe9MoO47VoxmB/WMMdaXJArx+k8xcJJJL7tcHVtbwBHsypJf69DOtrCmg==",
@@ -1559,81 +1456,6 @@
         "node": ">=16.13"
       }
     },
-    "node_modules/@miniflare/shared-test-environment/node_modules/dotenv": {
-      "version": "10.0.0",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
-      "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/@miniflare/sites": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/sites/-/sites-2.7.1.tgz",
-      "integrity": "sha512-b5pgVx5qifb9YejBfWjh5lnphc7wTX41CvBxssmCdQCxvQ+C5LgNelccNUvIBIMC+N5Ids+Fbd+Hx8MNGjp3iw==",
-      "dev": true,
-      "dependencies": {
-        "@miniflare/kv": "2.7.1",
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/storage-file": "2.7.1"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
-    "node_modules/@miniflare/storage-file": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/storage-file/-/storage-file-2.7.1.tgz",
-      "integrity": "sha512-6WiLGCeE1jIDJ3pp2ff1vFWCH1uf9BNWRkF3FpK7LyINzdDUlV56RtchPTBgk61oE8NYjlTqoYd4+KUvBul3/w==",
-      "dev": true,
-      "dependencies": {
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/storage-memory": "2.7.1"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
-    "node_modules/@miniflare/storage-memory": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/storage-memory/-/storage-memory-2.7.1.tgz",
-      "integrity": "sha512-/YD6PshGEQneLmPC/FO+TnhN2STXT4oTuPxVo81fZ+q/XKglTA8iULtcgmF025lZ8S871ZANfmBtUzlxZJmW8Q==",
-      "dev": true,
-      "dependencies": {
-        "@miniflare/shared": "2.7.1"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
-    "node_modules/@miniflare/watcher": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/watcher/-/watcher-2.7.1.tgz",
-      "integrity": "sha512-0P0jG2IoMIQtX2JHTABY13Yq3Fs2w5gs6f/LG/X0O9pBCN3SxeQXt0bp3ELkEHjNANQWLMUs6aohb7yZ6ZTfHg==",
-      "dev": true,
-      "dependencies": {
-        "@miniflare/shared": "2.7.1"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
-    "node_modules/@miniflare/web-sockets": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/web-sockets/-/web-sockets-2.7.1.tgz",
-      "integrity": "sha512-VO0BhkYDn82LTRhvK1vJA1/PA9GXMJGlkt2wYomdQFOz4Rmybau4sgVyAdKWTTYV7XexEVAVRl8BDUM97Pdxvw==",
-      "dev": true,
-      "dependencies": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
-        "undici": "5.9.1",
-        "ws": "^8.2.2"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
     "node_modules/@nodelib/fs.scandir": {
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -4844,31 +4666,6 @@
         "jest": ">=27"
       }
     },
-    "node_modules/jest-environment-miniflare/node_modules/@miniflare/runner-vm": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.8.2.tgz",
-      "integrity": "sha512-l9V/MedhH1Dc/xIEPEpXW57Y649lcTCYorwqnHPca3didiw75O8jI2g6MvuVlodmbimpg2WtwI7/2ac0WFZfWQ==",
-      "dev": true,
-      "dependencies": {
-        "@miniflare/shared": "2.8.2"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
-    "node_modules/jest-environment-miniflare/node_modules/@miniflare/shared": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.8.2.tgz",
-      "integrity": "sha512-cjuLIeTAlqcb1POrK4nLa8Bt79SfzbglUr/w78xRAUUoOdB0Lsm3HnEERzD1o0lO2G/Q9F+VDAp2QyglPFV61A==",
-      "dev": true,
-      "dependencies": {
-        "kleur": "^4.1.4",
-        "picomatch": "^2.3.1"
-      },
-      "engines": {
-        "node": ">=16.13"
-      }
-    },
     "node_modules/jest-environment-node": {
       "version": "29.0.3",
       "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.3.tgz",
@@ -5608,26 +5405,27 @@
       }
     },
     "node_modules/miniflare": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-2.7.1.tgz",
-      "integrity": "sha512-O9kjSORazNCAGVkS0bRHhKGH1LcFOJZyBD0TchB02TalnQ3W21+QWO5PAXDGz/IATO8C8iXrPnN2XKDdDav2CA==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-2.8.2.tgz",
+      "integrity": "sha512-t9/QeSSsUFuqafLVAPlmWmoG+egfJ99xtoOWw1C9Wt6nlXz9ox3y1TfAw06YUPp4xVHcQnHQcir7aL4QvRPgfw==",
       "dev": true,
       "dependencies": {
-        "@miniflare/cache": "2.7.1",
-        "@miniflare/cli-parser": "2.7.1",
-        "@miniflare/core": "2.7.1",
-        "@miniflare/durable-objects": "2.7.1",
-        "@miniflare/html-rewriter": "2.7.1",
-        "@miniflare/http-server": "2.7.1",
-        "@miniflare/kv": "2.7.1",
-        "@miniflare/r2": "2.7.1",
-        "@miniflare/runner-vm": "2.7.1",
-        "@miniflare/scheduler": "2.7.1",
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/sites": "2.7.1",
-        "@miniflare/storage-file": "2.7.1",
-        "@miniflare/storage-memory": "2.7.1",
-        "@miniflare/web-sockets": "2.7.1",
+        "@miniflare/cache": "2.8.2",
+        "@miniflare/cli-parser": "2.8.2",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/durable-objects": "2.8.2",
+        "@miniflare/html-rewriter": "2.8.2",
+        "@miniflare/http-server": "2.8.2",
+        "@miniflare/kv": "2.8.2",
+        "@miniflare/queues": "2.8.2",
+        "@miniflare/r2": "2.8.2",
+        "@miniflare/runner-vm": "2.8.2",
+        "@miniflare/scheduler": "2.8.2",
+        "@miniflare/shared": "2.8.2",
+        "@miniflare/sites": "2.8.2",
+        "@miniflare/storage-file": "2.8.2",
+        "@miniflare/storage-memory": "2.8.2",
+        "@miniflare/web-sockets": "2.8.2",
         "kleur": "^4.1.4",
         "semiver": "^1.1.0",
         "source-map-support": "^0.5.20",
@@ -5640,7 +5438,7 @@
         "node": ">=16.13"
       },
       "peerDependencies": {
-        "@miniflare/storage-redis": "2.7.1",
+        "@miniflare/storage-redis": "2.8.2",
         "cron-schedule": "^3.0.4",
         "ioredis": "^4.27.9"
       },
@@ -7287,9 +7085,9 @@
       }
     },
     "node_modules/wrangler": {
-      "version": "2.0.29",
-      "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-2.0.29.tgz",
-      "integrity": "sha512-Z9W48pRpo87qO2WLMU24TFLL5Oq2WUwzqlwVDFrnSpBT+7GRrkAceepKU8V+aOXxLqyUaEzaSVHT3KVPyXh8KQ==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-2.1.0.tgz",
+      "integrity": "sha512-ZrwVcFJfGPDePLtp/SbUHOJthRI5Erxj1F14ufw03S2M9TE8Y4mLWLhIgsvkkayckW3w0B0Bj2ZMzIJWozc8sg==",
       "dev": true,
       "dependencies": {
         "@cloudflare/kv-asset-handler": "^0.2.0",
@@ -7298,7 +7096,7 @@
         "blake3-wasm": "^2.1.5",
         "chokidar": "^3.5.3",
         "esbuild": "0.14.51",
-        "miniflare": "^2.7.1",
+        "miniflare": "^2.8.1",
         "nanoid": "^3.3.3",
         "path-to-regexp": "^6.2.0",
         "selfsigned": "^2.0.1",
@@ -8348,36 +8146,37 @@
       }
     },
     "@miniflare/cache": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/cache/-/cache-2.7.1.tgz",
-      "integrity": "sha512-QxN4yp8+cIlggbjIVP17xbSOjjJMco4coW5mXNPcTXazvqnbslwie9GDWmt4BkRvP77uwomf2CDUqEgxZC0frw==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/cache/-/cache-2.8.2.tgz",
+      "integrity": "sha512-YaFOsXKmlNLk5xDJfyDCMsRaoZLFLPqHAiEsZBZTcCl3FlZbG2GUIvcMlfkO4OKb1nCjtr9OxFgtIdW6DEuboA==",
       "dev": true,
       "requires": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/shared": "2.8.2",
         "http-cache-semantics": "^4.1.0",
         "undici": "5.9.1"
       }
     },
     "@miniflare/cli-parser": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/cli-parser/-/cli-parser-2.7.1.tgz",
-      "integrity": "sha512-kuY6sWClFBQoc22g7P7gR3fv5dXDI8ezvPvNX6tHXPLiPxiYCoz8XTRUqG5CW12zTxrI3yPjEaTQoFlHzdnQkg==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/cli-parser/-/cli-parser-2.8.2.tgz",
+      "integrity": "sha512-qa//FhLiJpQpTngq6tCJMZqc1CjhJQV4AwKWaIp85XiVbpbN/cTzZ6PUyoYLTZ6g6dL4j+136o2bb+2XSMxVHw==",
       "dev": true,
       "requires": {
-        "@miniflare/shared": "2.7.1",
+        "@miniflare/shared": "2.8.2",
         "kleur": "^4.1.4"
       }
     },
     "@miniflare/core": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/core/-/core-2.7.1.tgz",
-      "integrity": "sha512-Pdq5+FPSg0L0/eUOKrEfGFowcmbcEXKCIJa8iYz1iA35koSytgTN+6zeuuGPGVXQbGGEPhNugWlOz4u70FJ1GA==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/core/-/core-2.8.2.tgz",
+      "integrity": "sha512-a9Ecyf4xALcvphQhK3qA+mtUApUrUbwcxCexXvvgVsPrQtMCOIjJ2qs7+RKrC+krCy2O8Eq/8eq2hYh4y/HOKQ==",
       "dev": true,
       "requires": {
         "@iarna/toml": "^2.2.5",
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/watcher": "2.7.1",
+        "@miniflare/queues": "2.8.2",
+        "@miniflare/shared": "2.8.2",
+        "@miniflare/watcher": "2.8.2",
         "busboy": "^1.6.0",
         "dotenv": "^10.0.0",
         "kleur": "^4.1.4",
@@ -8395,38 +8194,38 @@
       }
     },
     "@miniflare/durable-objects": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.7.1.tgz",
-      "integrity": "sha512-bzTzhu9KgtBZ3itR/u/izBHBzQnxhfOt1IQcJNCM/TBwSf8wr6ztDdsTDFE0j9/oQYj4umbGynzZvYYUm/SniQ==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.8.2.tgz",
+      "integrity": "sha512-jKcnb6lfgVZKfTPom2d0yPiaVAuDJLyr4itzb3nqJNH5Ld2iKJv77iSGOEOv8Wb78YEEFU8PQZvvrAC/TmN6tQ==",
       "dev": true,
       "requires": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/storage-memory": "2.7.1",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/shared": "2.8.2",
+        "@miniflare/storage-memory": "2.8.2",
         "undici": "5.9.1"
       }
     },
     "@miniflare/html-rewriter": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.7.1.tgz",
-      "integrity": "sha512-7088TlpQBXdKX1OPOL+34xKSF5IjiHyjggM7HizJG14IIw1kSiJYojqaOi5f/DxstTUJJCOIxHn3zKf6QSpukA==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.8.2.tgz",
+      "integrity": "sha512-xxrLO7XMpiaWi6HSIqvAxmD5z6RRHWENkWuWjQqaqC6E6qheN+d0ZeZshyP2SRbJUw9wfFUj5zkKTva5sovzbw==",
       "dev": true,
       "requires": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/shared": "2.8.2",
         "html-rewriter-wasm": "^0.4.1",
         "undici": "5.9.1"
       }
     },
     "@miniflare/http-server": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/http-server/-/http-server-2.7.1.tgz",
-      "integrity": "sha512-fcLrEVxtwMhj3qO5Wg5844s6WNTiixRjGEV/Top2TjP3CM6DtIc5l6zca4vozaTba39So627NDalLZQaCAcSBQ==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/http-server/-/http-server-2.8.2.tgz",
+      "integrity": "sha512-hrTRHHz+LWe7cLkP8Xg4hM3YRH7kI4ngOYozkEz1OC69SLBnxfT8xLkUkvz+fdJ3vquF+dpHyVQAa0dpvJShGA==",
       "dev": true,
       "requires": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/web-sockets": "2.7.1",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/shared": "2.8.2",
+        "@miniflare/web-sockets": "2.8.2",
         "kleur": "^4.1.4",
         "selfsigned": "^2.0.0",
         "undici": "5.9.1",
@@ -8435,12 +8234,12 @@
       }
     },
     "@miniflare/kv": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/kv/-/kv-2.7.1.tgz",
-      "integrity": "sha512-p3BUSgp2BK2l7GxM9wVnaXTM8/thzCzAITDbeyZLevtd8r3Vl1rE8W9Q+qrUbX454+zvHfG71O+BdtfFchgWkA==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/kv/-/kv-2.8.2.tgz",
+      "integrity": "sha512-radkyE6FtLGAoumf8S1VnPHAbgiP1DOzGnBnBVferMDkd86/3P8hre1a+C9PUTgt6e6KgLq4AKEFDwRJHc1MFw==",
       "dev": true,
       "requires": {
-        "@miniflare/shared": "2.7.1"
+        "@miniflare/shared": "2.8.2"
       }
     },
     "@miniflare/queues": {
@@ -8450,54 +8249,42 @@
       "dev": true,
       "requires": {
         "@miniflare/shared": "2.8.2"
-      },
-      "dependencies": {
-        "@miniflare/shared": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.8.2.tgz",
-          "integrity": "sha512-cjuLIeTAlqcb1POrK4nLa8Bt79SfzbglUr/w78xRAUUoOdB0Lsm3HnEERzD1o0lO2G/Q9F+VDAp2QyglPFV61A==",
-          "dev": true,
-          "requires": {
-            "kleur": "^4.1.4",
-            "picomatch": "^2.3.1"
-          }
-        }
       }
     },
     "@miniflare/r2": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/r2/-/r2-2.7.1.tgz",
-      "integrity": "sha512-UFqU2y4Qccto4PilHEn8JpTKi+lPZ61eV0G50Nnfnwa19yDKf0Wu6rYXecLTPetln10v6pCLvRvk4O93d99A6Q==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/r2/-/r2-2.8.2.tgz",
+      "integrity": "sha512-cdqq1dcgfiTlCf3wjQjrhZuRb0vJImLwYSALVEAA/4leVhwNY9ABHIn71y29Nf4bUdv2YKVSfTuV0m0CRGmOqA==",
       "dev": true,
       "requires": {
-        "@miniflare/shared": "2.7.1",
+        "@miniflare/shared": "2.8.2",
         "undici": "5.9.1"
       }
     },
     "@miniflare/runner-vm": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.7.1.tgz",
-      "integrity": "sha512-kcntTSq38Jk81EQbEYs1wSrcziz/KO1JD1DyyDSw1C9pDSFmhusgObDW0VxaGgEVyh92No8l5CNlTjY7kjiMHw==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.8.2.tgz",
+      "integrity": "sha512-l9V/MedhH1Dc/xIEPEpXW57Y649lcTCYorwqnHPca3didiw75O8jI2g6MvuVlodmbimpg2WtwI7/2ac0WFZfWQ==",
       "dev": true,
       "requires": {
-        "@miniflare/shared": "2.7.1"
+        "@miniflare/shared": "2.8.2"
       }
     },
     "@miniflare/scheduler": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/scheduler/-/scheduler-2.7.1.tgz",
-      "integrity": "sha512-00DCtvSi0/Kamo1OLtvfG+zxAS9VqrFO8Q1Wg7yEJpJBUlnUn+oOXKT//aCpZuVBJLSf7tXxzRXJYNPpu09fwg==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/scheduler/-/scheduler-2.8.2.tgz",
+      "integrity": "sha512-vhtyPky+1Phq4Arul3mpzRWJuqJex2YgkPnf9MLA977dcxptRBOzGIxwVPzaUTtko4mHwwzEyl15diT/BXkPJA==",
       "dev": true,
       "requires": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/shared": "2.8.2",
         "cron-schedule": "^3.0.4"
       }
     },
     "@miniflare/shared": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.7.1.tgz",
-      "integrity": "sha512-hQsx/mt5N/zBxJ3DyAJyGMtdT07WeuU+nYiWjkIwQOkPgH/p72Xu0tdi2kO/KQogtxeT2B+eTMVXlE0JqZOyhA==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.8.2.tgz",
+      "integrity": "sha512-cjuLIeTAlqcb1POrK4nLa8Bt79SfzbglUr/w78xRAUUoOdB0Lsm3HnEERzD1o0lO2G/Q9F+VDAp2QyglPFV61A==",
       "dev": true,
       "requires": {
         "kleur": "^4.1.4",
@@ -8520,187 +8307,55 @@
         "@miniflare/sites": "2.8.2",
         "@miniflare/storage-memory": "2.8.2",
         "@miniflare/web-sockets": "2.8.2"
-      },
-      "dependencies": {
-        "@miniflare/cache": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/cache/-/cache-2.8.2.tgz",
-          "integrity": "sha512-YaFOsXKmlNLk5xDJfyDCMsRaoZLFLPqHAiEsZBZTcCl3FlZbG2GUIvcMlfkO4OKb1nCjtr9OxFgtIdW6DEuboA==",
-          "dev": true,
-          "requires": {
-            "@miniflare/core": "2.8.2",
-            "@miniflare/shared": "2.8.2",
-            "http-cache-semantics": "^4.1.0",
-            "undici": "5.9.1"
-          }
-        },
-        "@miniflare/core": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/core/-/core-2.8.2.tgz",
-          "integrity": "sha512-a9Ecyf4xALcvphQhK3qA+mtUApUrUbwcxCexXvvgVsPrQtMCOIjJ2qs7+RKrC+krCy2O8Eq/8eq2hYh4y/HOKQ==",
-          "dev": true,
-          "requires": {
-            "@iarna/toml": "^2.2.5",
-            "@miniflare/queues": "2.8.2",
-            "@miniflare/shared": "2.8.2",
-            "@miniflare/watcher": "2.8.2",
-            "busboy": "^1.6.0",
-            "dotenv": "^10.0.0",
-            "kleur": "^4.1.4",
-            "set-cookie-parser": "^2.4.8",
-            "undici": "5.9.1",
-            "urlpattern-polyfill": "^4.0.3"
-          }
-        },
-        "@miniflare/durable-objects": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/durable-objects/-/durable-objects-2.8.2.tgz",
-          "integrity": "sha512-jKcnb6lfgVZKfTPom2d0yPiaVAuDJLyr4itzb3nqJNH5Ld2iKJv77iSGOEOv8Wb78YEEFU8PQZvvrAC/TmN6tQ==",
-          "dev": true,
-          "requires": {
-            "@miniflare/core": "2.8.2",
-            "@miniflare/shared": "2.8.2",
-            "@miniflare/storage-memory": "2.8.2",
-            "undici": "5.9.1"
-          }
-        },
-        "@miniflare/html-rewriter": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/html-rewriter/-/html-rewriter-2.8.2.tgz",
-          "integrity": "sha512-xxrLO7XMpiaWi6HSIqvAxmD5z6RRHWENkWuWjQqaqC6E6qheN+d0ZeZshyP2SRbJUw9wfFUj5zkKTva5sovzbw==",
-          "dev": true,
-          "requires": {
-            "@miniflare/core": "2.8.2",
-            "@miniflare/shared": "2.8.2",
-            "html-rewriter-wasm": "^0.4.1",
-            "undici": "5.9.1"
-          }
-        },
-        "@miniflare/kv": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/kv/-/kv-2.8.2.tgz",
-          "integrity": "sha512-radkyE6FtLGAoumf8S1VnPHAbgiP1DOzGnBnBVferMDkd86/3P8hre1a+C9PUTgt6e6KgLq4AKEFDwRJHc1MFw==",
-          "dev": true,
-          "requires": {
-            "@miniflare/shared": "2.8.2"
-          }
-        },
-        "@miniflare/shared": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.8.2.tgz",
-          "integrity": "sha512-cjuLIeTAlqcb1POrK4nLa8Bt79SfzbglUr/w78xRAUUoOdB0Lsm3HnEERzD1o0lO2G/Q9F+VDAp2QyglPFV61A==",
-          "dev": true,
-          "requires": {
-            "kleur": "^4.1.4",
-            "picomatch": "^2.3.1"
-          }
-        },
-        "@miniflare/sites": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/sites/-/sites-2.8.2.tgz",
-          "integrity": "sha512-zdzg8gm/I4bcUIQ4Yo9WqvTQJN+yOnpPqbQ/nKKd6tebrX4k+sw9wTTGl42MjQ4NN5XfNy3xFERo21i1jLgziA==",
-          "dev": true,
-          "requires": {
-            "@miniflare/kv": "2.8.2",
-            "@miniflare/shared": "2.8.2",
-            "@miniflare/storage-file": "2.8.2"
-          }
-        },
-        "@miniflare/storage-file": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/storage-file/-/storage-file-2.8.2.tgz",
-          "integrity": "sha512-M5f+vDVjkghix1sCGQy+apiokTBoOU/V7pBaIsHZTnD/58S6/T2s7glD12Dwfr+u1cCjWxEJx+jaXYIBAKbmQQ==",
-          "dev": true,
-          "requires": {
-            "@miniflare/shared": "2.8.2",
-            "@miniflare/storage-memory": "2.8.2"
-          }
-        },
-        "@miniflare/storage-memory": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/storage-memory/-/storage-memory-2.8.2.tgz",
-          "integrity": "sha512-9OclkkWBbJwo6WJEz2QCbHsvMt+qraq/xIbuFOByytAcyjomp1gm1ZUaKZ5VkkqMXMgdQ1E+6wTq2iA1p+YRcg==",
-          "dev": true,
-          "requires": {
-            "@miniflare/shared": "2.8.2"
-          }
-        },
-        "@miniflare/watcher": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/watcher/-/watcher-2.8.2.tgz",
-          "integrity": "sha512-2+awQITWkUGb9GlpzVmYwoe+qiSibni7C6gVDnkxorBRoecwUAzjFRF09QjdEn40+q7peNdE0ui1oWjZMgOaHg==",
-          "dev": true,
-          "requires": {
-            "@miniflare/shared": "2.8.2"
-          }
-        },
-        "@miniflare/web-sockets": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/web-sockets/-/web-sockets-2.8.2.tgz",
-          "integrity": "sha512-oW9vG7zImwZZ/OKuAI4CEMtVqYVQqWe9MoO47VoxmB/WMMdaXJArx+k8xcJJJL7tcHVtbwBHsypJf69DOtrCmg==",
-          "dev": true,
-          "requires": {
-            "@miniflare/core": "2.8.2",
-            "@miniflare/shared": "2.8.2",
-            "undici": "5.9.1",
-            "ws": "^8.2.2"
-          }
-        },
-        "dotenv": {
-          "version": "10.0.0",
-          "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
-          "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
-          "dev": true
-        }
       }
     },
     "@miniflare/sites": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/sites/-/sites-2.7.1.tgz",
-      "integrity": "sha512-b5pgVx5qifb9YejBfWjh5lnphc7wTX41CvBxssmCdQCxvQ+C5LgNelccNUvIBIMC+N5Ids+Fbd+Hx8MNGjp3iw==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/sites/-/sites-2.8.2.tgz",
+      "integrity": "sha512-zdzg8gm/I4bcUIQ4Yo9WqvTQJN+yOnpPqbQ/nKKd6tebrX4k+sw9wTTGl42MjQ4NN5XfNy3xFERo21i1jLgziA==",
       "dev": true,
       "requires": {
-        "@miniflare/kv": "2.7.1",
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/storage-file": "2.7.1"
+        "@miniflare/kv": "2.8.2",
+        "@miniflare/shared": "2.8.2",
+        "@miniflare/storage-file": "2.8.2"
       }
     },
     "@miniflare/storage-file": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/storage-file/-/storage-file-2.7.1.tgz",
-      "integrity": "sha512-6WiLGCeE1jIDJ3pp2ff1vFWCH1uf9BNWRkF3FpK7LyINzdDUlV56RtchPTBgk61oE8NYjlTqoYd4+KUvBul3/w==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/storage-file/-/storage-file-2.8.2.tgz",
+      "integrity": "sha512-M5f+vDVjkghix1sCGQy+apiokTBoOU/V7pBaIsHZTnD/58S6/T2s7glD12Dwfr+u1cCjWxEJx+jaXYIBAKbmQQ==",
       "dev": true,
       "requires": {
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/storage-memory": "2.7.1"
+        "@miniflare/shared": "2.8.2",
+        "@miniflare/storage-memory": "2.8.2"
       }
     },
     "@miniflare/storage-memory": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/storage-memory/-/storage-memory-2.7.1.tgz",
-      "integrity": "sha512-/YD6PshGEQneLmPC/FO+TnhN2STXT4oTuPxVo81fZ+q/XKglTA8iULtcgmF025lZ8S871ZANfmBtUzlxZJmW8Q==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/storage-memory/-/storage-memory-2.8.2.tgz",
+      "integrity": "sha512-9OclkkWBbJwo6WJEz2QCbHsvMt+qraq/xIbuFOByytAcyjomp1gm1ZUaKZ5VkkqMXMgdQ1E+6wTq2iA1p+YRcg==",
       "dev": true,
       "requires": {
-        "@miniflare/shared": "2.7.1"
+        "@miniflare/shared": "2.8.2"
       }
     },
     "@miniflare/watcher": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/watcher/-/watcher-2.7.1.tgz",
-      "integrity": "sha512-0P0jG2IoMIQtX2JHTABY13Yq3Fs2w5gs6f/LG/X0O9pBCN3SxeQXt0bp3ELkEHjNANQWLMUs6aohb7yZ6ZTfHg==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/watcher/-/watcher-2.8.2.tgz",
+      "integrity": "sha512-2+awQITWkUGb9GlpzVmYwoe+qiSibni7C6gVDnkxorBRoecwUAzjFRF09QjdEn40+q7peNdE0ui1oWjZMgOaHg==",
       "dev": true,
       "requires": {
-        "@miniflare/shared": "2.7.1"
+        "@miniflare/shared": "2.8.2"
       }
     },
     "@miniflare/web-sockets": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/@miniflare/web-sockets/-/web-sockets-2.7.1.tgz",
-      "integrity": "sha512-VO0BhkYDn82LTRhvK1vJA1/PA9GXMJGlkt2wYomdQFOz4Rmybau4sgVyAdKWTTYV7XexEVAVRl8BDUM97Pdxvw==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/@miniflare/web-sockets/-/web-sockets-2.8.2.tgz",
+      "integrity": "sha512-oW9vG7zImwZZ/OKuAI4CEMtVqYVQqWe9MoO47VoxmB/WMMdaXJArx+k8xcJJJL7tcHVtbwBHsypJf69DOtrCmg==",
       "dev": true,
       "requires": {
-        "@miniflare/core": "2.7.1",
-        "@miniflare/shared": "2.7.1",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/shared": "2.8.2",
         "undici": "5.9.1",
         "ws": "^8.2.2"
       }
@@ -11054,27 +10709,6 @@
         "@miniflare/shared-test-environment": "2.8.2",
         "jest-mock": ">=27",
         "jest-util": ">=27"
-      },
-      "dependencies": {
-        "@miniflare/runner-vm": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/runner-vm/-/runner-vm-2.8.2.tgz",
-          "integrity": "sha512-l9V/MedhH1Dc/xIEPEpXW57Y649lcTCYorwqnHPca3didiw75O8jI2g6MvuVlodmbimpg2WtwI7/2ac0WFZfWQ==",
-          "dev": true,
-          "requires": {
-            "@miniflare/shared": "2.8.2"
-          }
-        },
-        "@miniflare/shared": {
-          "version": "2.8.2",
-          "resolved": "https://registry.npmjs.org/@miniflare/shared/-/shared-2.8.2.tgz",
-          "integrity": "sha512-cjuLIeTAlqcb1POrK4nLa8Bt79SfzbglUr/w78xRAUUoOdB0Lsm3HnEERzD1o0lO2G/Q9F+VDAp2QyglPFV61A==",
-          "dev": true,
-          "requires": {
-            "kleur": "^4.1.4",
-            "picomatch": "^2.3.1"
-          }
-        }
       }
     },
     "jest-environment-node": {
@@ -11658,26 +11292,27 @@
       "dev": true
     },
     "miniflare": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-2.7.1.tgz",
-      "integrity": "sha512-O9kjSORazNCAGVkS0bRHhKGH1LcFOJZyBD0TchB02TalnQ3W21+QWO5PAXDGz/IATO8C8iXrPnN2XKDdDav2CA==",
+      "version": "2.8.2",
+      "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-2.8.2.tgz",
+      "integrity": "sha512-t9/QeSSsUFuqafLVAPlmWmoG+egfJ99xtoOWw1C9Wt6nlXz9ox3y1TfAw06YUPp4xVHcQnHQcir7aL4QvRPgfw==",
       "dev": true,
       "requires": {
-        "@miniflare/cache": "2.7.1",
-        "@miniflare/cli-parser": "2.7.1",
-        "@miniflare/core": "2.7.1",
-        "@miniflare/durable-objects": "2.7.1",
-        "@miniflare/html-rewriter": "2.7.1",
-        "@miniflare/http-server": "2.7.1",
-        "@miniflare/kv": "2.7.1",
-        "@miniflare/r2": "2.7.1",
-        "@miniflare/runner-vm": "2.7.1",
-        "@miniflare/scheduler": "2.7.1",
-        "@miniflare/shared": "2.7.1",
-        "@miniflare/sites": "2.7.1",
-        "@miniflare/storage-file": "2.7.1",
-        "@miniflare/storage-memory": "2.7.1",
-        "@miniflare/web-sockets": "2.7.1",
+        "@miniflare/cache": "2.8.2",
+        "@miniflare/cli-parser": "2.8.2",
+        "@miniflare/core": "2.8.2",
+        "@miniflare/durable-objects": "2.8.2",
+        "@miniflare/html-rewriter": "2.8.2",
+        "@miniflare/http-server": "2.8.2",
+        "@miniflare/kv": "2.8.2",
+        "@miniflare/queues": "2.8.2",
+        "@miniflare/r2": "2.8.2",
+        "@miniflare/runner-vm": "2.8.2",
+        "@miniflare/scheduler": "2.8.2",
+        "@miniflare/shared": "2.8.2",
+        "@miniflare/sites": "2.8.2",
+        "@miniflare/storage-file": "2.8.2",
+        "@miniflare/storage-memory": "2.8.2",
+        "@miniflare/web-sockets": "2.8.2",
         "kleur": "^4.1.4",
         "semiver": "^1.1.0",
         "source-map-support": "^0.5.20",
@@ -12827,9 +12462,9 @@
       "dev": true
     },
     "wrangler": {
-      "version": "2.0.29",
-      "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-2.0.29.tgz",
-      "integrity": "sha512-Z9W48pRpo87qO2WLMU24TFLL5Oq2WUwzqlwVDFrnSpBT+7GRrkAceepKU8V+aOXxLqyUaEzaSVHT3KVPyXh8KQ==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-2.1.0.tgz",
+      "integrity": "sha512-ZrwVcFJfGPDePLtp/SbUHOJthRI5Erxj1F14ufw03S2M9TE8Y4mLWLhIgsvkkayckW3w0B0Bj2ZMzIJWozc8sg==",
       "dev": true,
       "requires": {
         "@cloudflare/kv-asset-handler": "^0.2.0",
@@ -12839,7 +12474,7 @@
         "chokidar": "^3.5.3",
         "esbuild": "0.14.51",
         "fsevents": "~2.3.2",
-        "miniflare": "^2.7.1",
+        "miniflare": "^2.8.1",
         "nanoid": "^3.3.3",
         "path-to-regexp": "^6.2.0",
         "selfsigned": "^2.0.1",
diff --git a/package.json b/package.json
index fb94a89..0c9d810 100644
--- a/package.json
+++ b/package.json
@@ -35,7 +35,7 @@
     "typescript": "^4.8.3",
     "webpack": "^5.74.0",
     "webpack-cli": "^4.10.0",
-    "wrangler": "^2.0.29"
+    "wrangler": "^2.1.0"
   },
   "dependencies": {
     "itty-router": "^2.6.1",