├── .gitignore ├── LICENSE ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src ├── index.test.ts └── index.ts ├── tsconfig.json └── wrangler.toml /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | 3 | logs 4 | _.log 5 | npm-debug.log_ 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | 13 | report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json 14 | 15 | # Runtime data 16 | 17 | pids 18 | _.pid 19 | _.seed 20 | \*.pid.lock 21 | 22 | # Directory for instrumented libs generated by jscoverage/JSCover 23 | 24 | lib-cov 25 | 26 | # Coverage directory used by tools like istanbul 27 | 28 | coverage 29 | \*.lcov 30 | 31 | # nyc test coverage 32 | 33 | .nyc_output 34 | 35 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 36 | 37 | .grunt 38 | 39 | # Bower dependency directory (https://bower.io/) 40 | 41 | bower_components 42 | 43 | # node-waf configuration 44 | 45 | .lock-wscript 46 | 47 | # Compiled binary addons (https://nodejs.org/api/addons.html) 48 | 49 | build/Release 50 | 51 | # Dependency directories 52 | 53 | node_modules/ 54 | jspm_packages/ 55 | 56 | # Snowpack dependency directory (https://snowpack.dev/) 57 | 58 | web_modules/ 59 | 60 | # TypeScript cache 61 | 62 | \*.tsbuildinfo 63 | 64 | # Optional npm cache directory 65 | 66 | .npm 67 | 68 | # Optional eslint cache 69 | 70 | .eslintcache 71 | 72 | # Optional stylelint cache 73 | 74 | .stylelintcache 75 | 76 | # Microbundle cache 77 | 78 | .rpt2_cache/ 79 | .rts2_cache_cjs/ 80 | .rts2_cache_es/ 81 | .rts2_cache_umd/ 82 | 83 | # Optional REPL history 84 | 85 | .node_repl_history 86 | 87 | # Output of 'npm pack' 88 | 89 | \*.tgz 90 | 91 | # Yarn Integrity file 92 | 93 | .yarn-integrity 94 | 95 | # dotenv environment variable files 96 | 97 | .env 98 | .env.development.local 99 | .env.test.local 100 | .env.production.local 101 | .env.local 102 | 103 | # parcel-bundler cache (https://parceljs.org/) 104 | 105 | .cache 106 | .parcel-cache 107 | 108 | # Next.js build output 109 | 110 | .next 111 | out 112 | 113 | # Nuxt.js build / generate output 114 | 115 | .nuxt 116 | dist 117 | 118 | # Gatsby files 119 | 120 | .cache/ 121 | 122 | # Comment in the public line in if your project uses Gatsby and not Next.js 123 | 124 | # https://nextjs.org/blog/next-9-1#public-directory-support 125 | 126 | # public 127 | 128 | # vuepress build output 129 | 130 | .vuepress/dist 131 | 132 | # vuepress v2.x temp and cache directory 133 | 134 | .temp 135 | .cache 136 | 137 | # Docusaurus cache and generated files 138 | 139 | .docusaurus 140 | 141 | # Serverless directories 142 | 143 | .serverless/ 144 | 145 | # FuseBox cache 146 | 147 | .fusebox/ 148 | 149 | # DynamoDB Local files 150 | 151 | .dynamodb/ 152 | 153 | # TernJS port file 154 | 155 | .tern-port 156 | 157 | # Stores VSCode versions used for testing VSCode extensions 158 | 159 | .vscode-test 160 | 161 | # yarn v2 162 | 163 | .yarn/cache 164 | .yarn/unplugged 165 | .yarn/build-state.yml 166 | .yarn/install-state.gz 167 | .pnp.\* 168 | 169 | # wrangler project 170 | 171 | .dev.vars 172 | .wrangler/ 173 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Hanchin Hsieh 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🌩️ Azure OpenAI Proxy Worker 2 | 3 | A Cloudflare worker that acts as a proxy to translate requests to the OpenAI API to Azure OpenAI. 4 | 5 | ## configuration 6 | 7 | You can configure your own values in `wrangler.toml`: 8 | 9 | ```toml 10 | [vars] 11 | resourceName = "yuchanns-openai" 12 | apiVersion = "2023-03-15-preview" 13 | deployName = "gpt35" 14 | 15 | ``` 16 | Once you have updated the configuration, deploy the changes using `wrangler publish`. 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "azure-openai-proxy", 3 | "version": "0.0.0", 4 | "devDependencies": { 5 | "@cloudflare/workers-types": "^4.20230404.0", 6 | "typescript": "^5.0.3", 7 | "vitest": "^0.29.8", 8 | "wrangler": "2.14.0" 9 | }, 10 | "private": true, 11 | "scripts": { 12 | "start": "wrangler dev", 13 | "deploy": "wrangler publish", 14 | "test": "vitest" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | devDependencies: 4 | '@cloudflare/workers-types': 5 | specifier: ^4.20230404.0 6 | version: 4.20230404.0 7 | typescript: 8 | specifier: ^5.0.3 9 | version: 5.0.3 10 | vitest: 11 | specifier: ^0.29.8 12 | version: 0.29.8 13 | wrangler: 14 | specifier: 2.14.0 15 | version: 2.14.0 16 | 17 | packages: 18 | 19 | /@cloudflare/kv-asset-handler@0.2.0: 20 | resolution: {integrity: sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==} 21 | dependencies: 22 | mime: 3.0.0 23 | dev: true 24 | 25 | /@cloudflare/workers-types@4.20230404.0: 26 | resolution: {integrity: sha512-fG3oaJX1icfsGV74nhx1+AC6opvZsGqnpx6FvrcVqQaBmCNkjKNqDRFrpasXWFiOIvysBXHKQAzsAJkBZgnM+A==} 27 | dev: true 28 | 29 | /@esbuild-plugins/node-globals-polyfill@0.1.1(esbuild@0.16.3): 30 | resolution: {integrity: sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==} 31 | peerDependencies: 32 | esbuild: '*' 33 | dependencies: 34 | esbuild: 0.16.3 35 | dev: true 36 | 37 | /@esbuild-plugins/node-modules-polyfill@0.1.4(esbuild@0.16.3): 38 | resolution: {integrity: sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==} 39 | peerDependencies: 40 | esbuild: '*' 41 | dependencies: 42 | esbuild: 0.16.3 43 | escape-string-regexp: 4.0.0 44 | rollup-plugin-node-polyfills: 0.2.1 45 | dev: true 46 | 47 | /@esbuild/android-arm64@0.16.3: 48 | resolution: {integrity: sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==} 49 | engines: {node: '>=12'} 50 | cpu: [arm64] 51 | os: [android] 52 | requiresBuild: true 53 | dev: true 54 | optional: true 55 | 56 | /@esbuild/android-arm64@0.17.15: 57 | resolution: {integrity: sha512-0kOB6Y7Br3KDVgHeg8PRcvfLkq+AccreK///B4Z6fNZGr/tNHX0z2VywCc7PTeWp+bPvjA5WMvNXltHw5QjAIA==} 58 | engines: {node: '>=12'} 59 | cpu: [arm64] 60 | os: [android] 61 | requiresBuild: true 62 | dev: true 63 | optional: true 64 | 65 | /@esbuild/android-arm@0.16.3: 66 | resolution: {integrity: sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==} 67 | engines: {node: '>=12'} 68 | cpu: [arm] 69 | os: [android] 70 | requiresBuild: true 71 | dev: true 72 | optional: true 73 | 74 | /@esbuild/android-arm@0.17.15: 75 | resolution: {integrity: sha512-sRSOVlLawAktpMvDyJIkdLI/c/kdRTOqo8t6ImVxg8yT7LQDUYV5Rp2FKeEosLr6ZCja9UjYAzyRSxGteSJPYg==} 76 | engines: {node: '>=12'} 77 | cpu: [arm] 78 | os: [android] 79 | requiresBuild: true 80 | dev: true 81 | optional: true 82 | 83 | /@esbuild/android-x64@0.16.3: 84 | resolution: {integrity: sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==} 85 | engines: {node: '>=12'} 86 | cpu: [x64] 87 | os: [android] 88 | requiresBuild: true 89 | dev: true 90 | optional: true 91 | 92 | /@esbuild/android-x64@0.17.15: 93 | resolution: {integrity: sha512-MzDqnNajQZ63YkaUWVl9uuhcWyEyh69HGpMIrf+acR4otMkfLJ4sUCxqwbCyPGicE9dVlrysI3lMcDBjGiBBcQ==} 94 | engines: {node: '>=12'} 95 | cpu: [x64] 96 | os: [android] 97 | requiresBuild: true 98 | dev: true 99 | optional: true 100 | 101 | /@esbuild/darwin-arm64@0.16.3: 102 | resolution: {integrity: sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==} 103 | engines: {node: '>=12'} 104 | cpu: [arm64] 105 | os: [darwin] 106 | requiresBuild: true 107 | dev: true 108 | optional: true 109 | 110 | /@esbuild/darwin-arm64@0.17.15: 111 | resolution: {integrity: sha512-7siLjBc88Z4+6qkMDxPT2juf2e8SJxmsbNVKFY2ifWCDT72v5YJz9arlvBw5oB4W/e61H1+HDB/jnu8nNg0rLA==} 112 | engines: {node: '>=12'} 113 | cpu: [arm64] 114 | os: [darwin] 115 | requiresBuild: true 116 | dev: true 117 | optional: true 118 | 119 | /@esbuild/darwin-x64@0.16.3: 120 | resolution: {integrity: sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==} 121 | engines: {node: '>=12'} 122 | cpu: [x64] 123 | os: [darwin] 124 | requiresBuild: true 125 | dev: true 126 | optional: true 127 | 128 | /@esbuild/darwin-x64@0.17.15: 129 | resolution: {integrity: sha512-NbImBas2rXwYI52BOKTW342Tm3LTeVlaOQ4QPZ7XuWNKiO226DisFk/RyPk3T0CKZkKMuU69yOvlapJEmax7cg==} 130 | engines: {node: '>=12'} 131 | cpu: [x64] 132 | os: [darwin] 133 | requiresBuild: true 134 | dev: true 135 | optional: true 136 | 137 | /@esbuild/freebsd-arm64@0.16.3: 138 | resolution: {integrity: sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==} 139 | engines: {node: '>=12'} 140 | cpu: [arm64] 141 | os: [freebsd] 142 | requiresBuild: true 143 | dev: true 144 | optional: true 145 | 146 | /@esbuild/freebsd-arm64@0.17.15: 147 | resolution: {integrity: sha512-Xk9xMDjBVG6CfgoqlVczHAdJnCs0/oeFOspFap5NkYAmRCT2qTn1vJWA2f419iMtsHSLm+O8B6SLV/HlY5cYKg==} 148 | engines: {node: '>=12'} 149 | cpu: [arm64] 150 | os: [freebsd] 151 | requiresBuild: true 152 | dev: true 153 | optional: true 154 | 155 | /@esbuild/freebsd-x64@0.16.3: 156 | resolution: {integrity: sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==} 157 | engines: {node: '>=12'} 158 | cpu: [x64] 159 | os: [freebsd] 160 | requiresBuild: true 161 | dev: true 162 | optional: true 163 | 164 | /@esbuild/freebsd-x64@0.17.15: 165 | resolution: {integrity: sha512-3TWAnnEOdclvb2pnfsTWtdwthPfOz7qAfcwDLcfZyGJwm1SRZIMOeB5FODVhnM93mFSPsHB9b/PmxNNbSnd0RQ==} 166 | engines: {node: '>=12'} 167 | cpu: [x64] 168 | os: [freebsd] 169 | requiresBuild: true 170 | dev: true 171 | optional: true 172 | 173 | /@esbuild/linux-arm64@0.16.3: 174 | resolution: {integrity: sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==} 175 | engines: {node: '>=12'} 176 | cpu: [arm64] 177 | os: [linux] 178 | requiresBuild: true 179 | dev: true 180 | optional: true 181 | 182 | /@esbuild/linux-arm64@0.17.15: 183 | resolution: {integrity: sha512-T0MVnYw9KT6b83/SqyznTs/3Jg2ODWrZfNccg11XjDehIved2oQfrX/wVuev9N936BpMRaTR9I1J0tdGgUgpJA==} 184 | engines: {node: '>=12'} 185 | cpu: [arm64] 186 | os: [linux] 187 | requiresBuild: true 188 | dev: true 189 | optional: true 190 | 191 | /@esbuild/linux-arm@0.16.3: 192 | resolution: {integrity: sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==} 193 | engines: {node: '>=12'} 194 | cpu: [arm] 195 | os: [linux] 196 | requiresBuild: true 197 | dev: true 198 | optional: true 199 | 200 | /@esbuild/linux-arm@0.17.15: 201 | resolution: {integrity: sha512-MLTgiXWEMAMr8nmS9Gigx43zPRmEfeBfGCwxFQEMgJ5MC53QKajaclW6XDPjwJvhbebv+RzK05TQjvH3/aM4Xw==} 202 | engines: {node: '>=12'} 203 | cpu: [arm] 204 | os: [linux] 205 | requiresBuild: true 206 | dev: true 207 | optional: true 208 | 209 | /@esbuild/linux-ia32@0.16.3: 210 | resolution: {integrity: sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==} 211 | engines: {node: '>=12'} 212 | cpu: [ia32] 213 | os: [linux] 214 | requiresBuild: true 215 | dev: true 216 | optional: true 217 | 218 | /@esbuild/linux-ia32@0.17.15: 219 | resolution: {integrity: sha512-wp02sHs015T23zsQtU4Cj57WiteiuASHlD7rXjKUyAGYzlOKDAjqK6bk5dMi2QEl/KVOcsjwL36kD+WW7vJt8Q==} 220 | engines: {node: '>=12'} 221 | cpu: [ia32] 222 | os: [linux] 223 | requiresBuild: true 224 | dev: true 225 | optional: true 226 | 227 | /@esbuild/linux-loong64@0.16.3: 228 | resolution: {integrity: sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==} 229 | engines: {node: '>=12'} 230 | cpu: [loong64] 231 | os: [linux] 232 | requiresBuild: true 233 | dev: true 234 | optional: true 235 | 236 | /@esbuild/linux-loong64@0.17.15: 237 | resolution: {integrity: sha512-k7FsUJjGGSxwnBmMh8d7IbObWu+sF/qbwc+xKZkBe/lTAF16RqxRCnNHA7QTd3oS2AfGBAnHlXL67shV5bBThQ==} 238 | engines: {node: '>=12'} 239 | cpu: [loong64] 240 | os: [linux] 241 | requiresBuild: true 242 | dev: true 243 | optional: true 244 | 245 | /@esbuild/linux-mips64el@0.16.3: 246 | resolution: {integrity: sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==} 247 | engines: {node: '>=12'} 248 | cpu: [mips64el] 249 | os: [linux] 250 | requiresBuild: true 251 | dev: true 252 | optional: true 253 | 254 | /@esbuild/linux-mips64el@0.17.15: 255 | resolution: {integrity: sha512-ZLWk6czDdog+Q9kE/Jfbilu24vEe/iW/Sj2d8EVsmiixQ1rM2RKH2n36qfxK4e8tVcaXkvuV3mU5zTZviE+NVQ==} 256 | engines: {node: '>=12'} 257 | cpu: [mips64el] 258 | os: [linux] 259 | requiresBuild: true 260 | dev: true 261 | optional: true 262 | 263 | /@esbuild/linux-ppc64@0.16.3: 264 | resolution: {integrity: sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==} 265 | engines: {node: '>=12'} 266 | cpu: [ppc64] 267 | os: [linux] 268 | requiresBuild: true 269 | dev: true 270 | optional: true 271 | 272 | /@esbuild/linux-ppc64@0.17.15: 273 | resolution: {integrity: sha512-mY6dPkIRAiFHRsGfOYZC8Q9rmr8vOBZBme0/j15zFUKM99d4ILY4WpOC7i/LqoY+RE7KaMaSfvY8CqjJtuO4xg==} 274 | engines: {node: '>=12'} 275 | cpu: [ppc64] 276 | os: [linux] 277 | requiresBuild: true 278 | dev: true 279 | optional: true 280 | 281 | /@esbuild/linux-riscv64@0.16.3: 282 | resolution: {integrity: sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==} 283 | engines: {node: '>=12'} 284 | cpu: [riscv64] 285 | os: [linux] 286 | requiresBuild: true 287 | dev: true 288 | optional: true 289 | 290 | /@esbuild/linux-riscv64@0.17.15: 291 | resolution: {integrity: sha512-EcyUtxffdDtWjjwIH8sKzpDRLcVtqANooMNASO59y+xmqqRYBBM7xVLQhqF7nksIbm2yHABptoioS9RAbVMWVA==} 292 | engines: {node: '>=12'} 293 | cpu: [riscv64] 294 | os: [linux] 295 | requiresBuild: true 296 | dev: true 297 | optional: true 298 | 299 | /@esbuild/linux-s390x@0.16.3: 300 | resolution: {integrity: sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==} 301 | engines: {node: '>=12'} 302 | cpu: [s390x] 303 | os: [linux] 304 | requiresBuild: true 305 | dev: true 306 | optional: true 307 | 308 | /@esbuild/linux-s390x@0.17.15: 309 | resolution: {integrity: sha512-BuS6Jx/ezxFuHxgsfvz7T4g4YlVrmCmg7UAwboeyNNg0OzNzKsIZXpr3Sb/ZREDXWgt48RO4UQRDBxJN3B9Rbg==} 310 | engines: {node: '>=12'} 311 | cpu: [s390x] 312 | os: [linux] 313 | requiresBuild: true 314 | dev: true 315 | optional: true 316 | 317 | /@esbuild/linux-x64@0.16.3: 318 | resolution: {integrity: sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==} 319 | engines: {node: '>=12'} 320 | cpu: [x64] 321 | os: [linux] 322 | requiresBuild: true 323 | dev: true 324 | optional: true 325 | 326 | /@esbuild/linux-x64@0.17.15: 327 | resolution: {integrity: sha512-JsdS0EgEViwuKsw5tiJQo9UdQdUJYuB+Mf6HxtJSPN35vez1hlrNb1KajvKWF5Sa35j17+rW1ECEO9iNrIXbNg==} 328 | engines: {node: '>=12'} 329 | cpu: [x64] 330 | os: [linux] 331 | requiresBuild: true 332 | dev: true 333 | optional: true 334 | 335 | /@esbuild/netbsd-x64@0.16.3: 336 | resolution: {integrity: sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==} 337 | engines: {node: '>=12'} 338 | cpu: [x64] 339 | os: [netbsd] 340 | requiresBuild: true 341 | dev: true 342 | optional: true 343 | 344 | /@esbuild/netbsd-x64@0.17.15: 345 | resolution: {integrity: sha512-R6fKjtUysYGym6uXf6qyNephVUQAGtf3n2RCsOST/neIwPqRWcnc3ogcielOd6pT+J0RDR1RGcy0ZY7d3uHVLA==} 346 | engines: {node: '>=12'} 347 | cpu: [x64] 348 | os: [netbsd] 349 | requiresBuild: true 350 | dev: true 351 | optional: true 352 | 353 | /@esbuild/openbsd-x64@0.16.3: 354 | resolution: {integrity: sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==} 355 | engines: {node: '>=12'} 356 | cpu: [x64] 357 | os: [openbsd] 358 | requiresBuild: true 359 | dev: true 360 | optional: true 361 | 362 | /@esbuild/openbsd-x64@0.17.15: 363 | resolution: {integrity: sha512-mVD4PGc26b8PI60QaPUltYKeSX0wxuy0AltC+WCTFwvKCq2+OgLP4+fFd+hZXzO2xW1HPKcytZBdjqL6FQFa7w==} 364 | engines: {node: '>=12'} 365 | cpu: [x64] 366 | os: [openbsd] 367 | requiresBuild: true 368 | dev: true 369 | optional: true 370 | 371 | /@esbuild/sunos-x64@0.16.3: 372 | resolution: {integrity: sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==} 373 | engines: {node: '>=12'} 374 | cpu: [x64] 375 | os: [sunos] 376 | requiresBuild: true 377 | dev: true 378 | optional: true 379 | 380 | /@esbuild/sunos-x64@0.17.15: 381 | resolution: {integrity: sha512-U6tYPovOkw3459t2CBwGcFYfFRjivcJJc1WC8Q3funIwX8x4fP+R6xL/QuTPNGOblbq/EUDxj9GU+dWKX0oWlQ==} 382 | engines: {node: '>=12'} 383 | cpu: [x64] 384 | os: [sunos] 385 | requiresBuild: true 386 | dev: true 387 | optional: true 388 | 389 | /@esbuild/win32-arm64@0.16.3: 390 | resolution: {integrity: sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==} 391 | engines: {node: '>=12'} 392 | cpu: [arm64] 393 | os: [win32] 394 | requiresBuild: true 395 | dev: true 396 | optional: true 397 | 398 | /@esbuild/win32-arm64@0.17.15: 399 | resolution: {integrity: sha512-W+Z5F++wgKAleDABemiyXVnzXgvRFs+GVKThSI+mGgleLWluv0D7Diz4oQpgdpNzh4i2nNDzQtWbjJiqutRp6Q==} 400 | engines: {node: '>=12'} 401 | cpu: [arm64] 402 | os: [win32] 403 | requiresBuild: true 404 | dev: true 405 | optional: true 406 | 407 | /@esbuild/win32-ia32@0.16.3: 408 | resolution: {integrity: sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==} 409 | engines: {node: '>=12'} 410 | cpu: [ia32] 411 | os: [win32] 412 | requiresBuild: true 413 | dev: true 414 | optional: true 415 | 416 | /@esbuild/win32-ia32@0.17.15: 417 | resolution: {integrity: sha512-Muz/+uGgheShKGqSVS1KsHtCyEzcdOn/W/Xbh6H91Etm+wiIfwZaBn1W58MeGtfI8WA961YMHFYTthBdQs4t+w==} 418 | engines: {node: '>=12'} 419 | cpu: [ia32] 420 | os: [win32] 421 | requiresBuild: true 422 | dev: true 423 | optional: true 424 | 425 | /@esbuild/win32-x64@0.16.3: 426 | resolution: {integrity: sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==} 427 | engines: {node: '>=12'} 428 | cpu: [x64] 429 | os: [win32] 430 | requiresBuild: true 431 | dev: true 432 | optional: true 433 | 434 | /@esbuild/win32-x64@0.17.15: 435 | resolution: {integrity: sha512-DjDa9ywLUUmjhV2Y9wUTIF+1XsmuFGvZoCmOWkli1XcNAh5t25cc7fgsCx4Zi/Uurep3TTLyDiKATgGEg61pkA==} 436 | engines: {node: '>=12'} 437 | cpu: [x64] 438 | os: [win32] 439 | requiresBuild: true 440 | dev: true 441 | optional: true 442 | 443 | /@iarna/toml@2.2.5: 444 | resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} 445 | dev: true 446 | 447 | /@miniflare/cache@2.13.0: 448 | resolution: {integrity: sha512-y3SdN3SVyPECWmLAEGkkrv0RB+LugEPs/FeXn8QtN9aE1vyj69clOAgmsDzoh1DpFfFsLKRiv05aWs4m79P8Xw==} 449 | engines: {node: '>=16.13'} 450 | dependencies: 451 | '@miniflare/core': 2.13.0 452 | '@miniflare/shared': 2.13.0 453 | http-cache-semantics: 4.1.1 454 | undici: 5.20.0 455 | dev: true 456 | 457 | /@miniflare/cli-parser@2.13.0: 458 | resolution: {integrity: sha512-Nx1PIfuMZ3mK9Dg/JojWZAjHR16h1pcdCFSqYln/ME7y5ifx+P1E5UkShWUQ1cBlibNaltjbJ2n/7stSAsIGPQ==} 459 | engines: {node: '>=16.13'} 460 | dependencies: 461 | '@miniflare/shared': 2.13.0 462 | kleur: 4.1.5 463 | dev: true 464 | 465 | /@miniflare/core@2.13.0: 466 | resolution: {integrity: sha512-YJ/C0J3k+7xn4gvlMpvePnM3xC8nOnkweW96cc0IA8kJ1JSmScOO2tZ7rrU1RyDgp6StkAtQBw4yC0wYeFycBw==} 467 | engines: {node: '>=16.13'} 468 | dependencies: 469 | '@iarna/toml': 2.2.5 470 | '@miniflare/queues': 2.13.0 471 | '@miniflare/shared': 2.13.0 472 | '@miniflare/watcher': 2.13.0 473 | busboy: 1.6.0 474 | dotenv: 10.0.0 475 | kleur: 4.1.5 476 | set-cookie-parser: 2.6.0 477 | undici: 5.20.0 478 | urlpattern-polyfill: 4.0.3 479 | dev: true 480 | 481 | /@miniflare/d1@2.13.0: 482 | resolution: {integrity: sha512-OslqjO8iTcvzyrC0spByftMboRmHJEyHyTHnlKkjWDGdQQztEOjso2Xj+3I4SZIeUYvbzDRhKLS2QXI9a8LS5A==} 483 | engines: {node: '>=16.7'} 484 | dependencies: 485 | '@miniflare/core': 2.13.0 486 | '@miniflare/shared': 2.13.0 487 | dev: true 488 | 489 | /@miniflare/durable-objects@2.13.0: 490 | resolution: {integrity: sha512-CRGVBPO9vY4Fc3aV+pdPRVVeYIt64vQqvw+BJbyW+TQtqVP2CGQeziJGnCfcONNNKyooZxGyUkHewUypyH+Qhg==} 491 | engines: {node: '>=16.13'} 492 | dependencies: 493 | '@miniflare/core': 2.13.0 494 | '@miniflare/shared': 2.13.0 495 | '@miniflare/storage-memory': 2.13.0 496 | undici: 5.20.0 497 | dev: true 498 | 499 | /@miniflare/html-rewriter@2.13.0: 500 | resolution: {integrity: sha512-XhN7Icyzvtvu+o/A0hrnSiSmla78seCaNwQ9M1TDHxt352I/ahPX4wtPXs6GbKqY0/i+V6yoG2KGFRQ/j59cQQ==} 501 | engines: {node: '>=16.13'} 502 | dependencies: 503 | '@miniflare/core': 2.13.0 504 | '@miniflare/shared': 2.13.0 505 | html-rewriter-wasm: 0.4.1 506 | undici: 5.20.0 507 | dev: true 508 | 509 | /@miniflare/http-server@2.13.0: 510 | resolution: {integrity: sha512-aMS/nUMTKP15hKnyZboeuWCiqmNrrCu+XRBY/TxDDl07iXcLpiHGf3oVv+yXxXkWlJHJVCbK7i/nXSNPllRMSw==} 511 | engines: {node: '>=16.13'} 512 | dependencies: 513 | '@miniflare/core': 2.13.0 514 | '@miniflare/shared': 2.13.0 515 | '@miniflare/web-sockets': 2.13.0 516 | kleur: 4.1.5 517 | selfsigned: 2.1.1 518 | undici: 5.20.0 519 | ws: 8.13.0 520 | youch: 2.2.2 521 | transitivePeerDependencies: 522 | - bufferutil 523 | - utf-8-validate 524 | dev: true 525 | 526 | /@miniflare/kv@2.13.0: 527 | resolution: {integrity: sha512-J0AS5x3g/YVOmHMxMAZs07nRXRvSo9jyuC0eikTBf+4AABvBIyvVYmdTjYNjCmr8O5smcfWBX5S27HelD3aAAQ==} 528 | engines: {node: '>=16.13'} 529 | dependencies: 530 | '@miniflare/shared': 2.13.0 531 | dev: true 532 | 533 | /@miniflare/queues@2.13.0: 534 | resolution: {integrity: sha512-Gf/a6M1mJL03iOvNqh3JNahcBfvEMPHnO28n0gkCoyYWGvddIr9lwCdFIa0qwNJsC1fIDRxhPg8PZ5cQLBMwRA==} 535 | engines: {node: '>=16.7'} 536 | dependencies: 537 | '@miniflare/shared': 2.13.0 538 | dev: true 539 | 540 | /@miniflare/r2@2.13.0: 541 | resolution: {integrity: sha512-/5k6GHOYMNV/oBtilV9HDXBkJUrx8oXVigG5vxbnzEGRXyVRmR+Glzu7mFT8JiE94XiEbXHk9Qvu1S5Dej3wBw==} 542 | engines: {node: '>=16.13'} 543 | dependencies: 544 | '@miniflare/shared': 2.13.0 545 | undici: 5.20.0 546 | dev: true 547 | 548 | /@miniflare/runner-vm@2.13.0: 549 | resolution: {integrity: sha512-VmKtF2cA8HmTuLXor1THWY0v+DmaobPct63iLcgWIaUdP3MIvL+9X8HDXFAviCR7bCTe6MKxckHkaOj0IE0aJQ==} 550 | engines: {node: '>=16.13'} 551 | dependencies: 552 | '@miniflare/shared': 2.13.0 553 | dev: true 554 | 555 | /@miniflare/scheduler@2.13.0: 556 | resolution: {integrity: sha512-AOaQanoR4NjVEzVGWHnrL15A7aMx+d9AKLJhSDF7KaP+4NrT2Wo2BQuXCpn5oStx3itOdlQpMfqQ139e/I8WhQ==} 557 | engines: {node: '>=16.13'} 558 | dependencies: 559 | '@miniflare/core': 2.13.0 560 | '@miniflare/shared': 2.13.0 561 | cron-schedule: 3.0.6 562 | dev: true 563 | 564 | /@miniflare/shared@2.13.0: 565 | resolution: {integrity: sha512-m8YFQzKmbjberrV9hPzNcQjNCXxjTjXUpuNrIGjAJO7g+BDztUHaZbdd26H9maBDlkeiWxA3hf0mDyCT/6MCMA==} 566 | engines: {node: '>=16.13'} 567 | dependencies: 568 | '@types/better-sqlite3': 7.6.3 569 | kleur: 4.1.5 570 | npx-import: 1.1.4 571 | picomatch: 2.3.1 572 | dev: true 573 | 574 | /@miniflare/sites@2.13.0: 575 | resolution: {integrity: sha512-/tuzIu00o6CF2tkSv01q02MgEShXBSKx85h9jwWvc+6u7prGacAOer0FA1YNRFbE+t9QIfutAkoPGMA9zYf8+Q==} 576 | engines: {node: '>=16.13'} 577 | dependencies: 578 | '@miniflare/kv': 2.13.0 579 | '@miniflare/shared': 2.13.0 580 | '@miniflare/storage-file': 2.13.0 581 | dev: true 582 | 583 | /@miniflare/storage-file@2.13.0: 584 | resolution: {integrity: sha512-LuAeAAY5046rq5U1eFLVkz+ppiFEWytWacpkQw92DvVKFFquZcXSj6WPxZF4rSs23WDk+rdcwuLekbb52aDR7A==} 585 | engines: {node: '>=16.13'} 586 | dependencies: 587 | '@miniflare/shared': 2.13.0 588 | '@miniflare/storage-memory': 2.13.0 589 | dev: true 590 | 591 | /@miniflare/storage-memory@2.13.0: 592 | resolution: {integrity: sha512-FnkYcBNXa/ym1ksNilNZycg9WYYKo6cWKplVBeSthRon3e8QY6t3n7/XRseBUo7O6mhDybVTy4wNCP1R2nBiEw==} 593 | engines: {node: '>=16.13'} 594 | dependencies: 595 | '@miniflare/shared': 2.13.0 596 | dev: true 597 | 598 | /@miniflare/watcher@2.13.0: 599 | resolution: {integrity: sha512-teAacWcpMStoBLbLae95IUaL5lPzjPlXa9lhK9CbRaio/KRMibTMRGWrYos3IVGQRZvklvLwcms/nTvgcdb6yw==} 600 | engines: {node: '>=16.13'} 601 | dependencies: 602 | '@miniflare/shared': 2.13.0 603 | dev: true 604 | 605 | /@miniflare/web-sockets@2.13.0: 606 | resolution: {integrity: sha512-+U2/HCf+BetRIgjAnNQjkuN6UeAjQmXifhQC+7CCaX834XJhrKXoR6z2xr2xkg1qj0qQs4D2jWG0KzrO5OUpug==} 607 | engines: {node: '>=16.13'} 608 | dependencies: 609 | '@miniflare/core': 2.13.0 610 | '@miniflare/shared': 2.13.0 611 | undici: 5.20.0 612 | ws: 8.13.0 613 | transitivePeerDependencies: 614 | - bufferutil 615 | - utf-8-validate 616 | dev: true 617 | 618 | /@types/better-sqlite3@7.6.3: 619 | resolution: {integrity: sha512-YS64N9SNDT/NAvou3QNdzAu3E2om/W/0dhORimtPGLef+zSK5l1vDzfsWb4xgXOgfhtOI5ZDTRxnvRPb22AIVQ==} 620 | dependencies: 621 | '@types/node': 18.15.11 622 | dev: true 623 | 624 | /@types/chai-subset@1.3.3: 625 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 626 | dependencies: 627 | '@types/chai': 4.3.4 628 | dev: true 629 | 630 | /@types/chai@4.3.4: 631 | resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} 632 | dev: true 633 | 634 | /@types/node@18.15.11: 635 | resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} 636 | dev: true 637 | 638 | /@types/stack-trace@0.0.29: 639 | resolution: {integrity: sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==} 640 | dev: true 641 | 642 | /@vitest/expect@0.29.8: 643 | resolution: {integrity: sha512-xlcVXn5I5oTq6NiZSY3ykyWixBxr5mG8HYtjvpgg6KaqHm0mvhX18xuwl5YGxIRNt/A5jidd7CWcNHrSvgaQqQ==} 644 | dependencies: 645 | '@vitest/spy': 0.29.8 646 | '@vitest/utils': 0.29.8 647 | chai: 4.3.7 648 | dev: true 649 | 650 | /@vitest/runner@0.29.8: 651 | resolution: {integrity: sha512-FzdhnRDwEr/A3Oo1jtIk/B952BBvP32n1ObMEb23oEJNO+qO5cBet6M2XWIDQmA7BDKGKvmhUf2naXyp/2JEwQ==} 652 | dependencies: 653 | '@vitest/utils': 0.29.8 654 | p-limit: 4.0.0 655 | pathe: 1.1.0 656 | dev: true 657 | 658 | /@vitest/spy@0.29.8: 659 | resolution: {integrity: sha512-VdjBe9w34vOMl5I5mYEzNX8inTxrZ+tYUVk9jxaZJmHFwmDFC/GV3KBFTA/JKswr3XHvZL+FE/yq5EVhb6pSAw==} 660 | dependencies: 661 | tinyspy: 1.1.1 662 | dev: true 663 | 664 | /@vitest/utils@0.29.8: 665 | resolution: {integrity: sha512-qGzuf3vrTbnoY+RjjVVIBYfuWMjn3UMUqyQtdGNZ6ZIIyte7B37exj6LaVkrZiUTvzSadVvO/tJm8AEgbGCBPg==} 666 | dependencies: 667 | cli-truncate: 3.1.0 668 | diff: 5.1.0 669 | loupe: 2.3.6 670 | pretty-format: 27.5.1 671 | dev: true 672 | 673 | /acorn-walk@8.2.0: 674 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 675 | engines: {node: '>=0.4.0'} 676 | dev: true 677 | 678 | /acorn@8.8.2: 679 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 680 | engines: {node: '>=0.4.0'} 681 | hasBin: true 682 | dev: true 683 | 684 | /ansi-regex@5.0.1: 685 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 686 | engines: {node: '>=8'} 687 | dev: true 688 | 689 | /ansi-regex@6.0.1: 690 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 691 | engines: {node: '>=12'} 692 | dev: true 693 | 694 | /ansi-styles@5.2.0: 695 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 696 | engines: {node: '>=10'} 697 | dev: true 698 | 699 | /ansi-styles@6.2.1: 700 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 701 | engines: {node: '>=12'} 702 | dev: true 703 | 704 | /anymatch@3.1.3: 705 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 706 | engines: {node: '>= 8'} 707 | dependencies: 708 | normalize-path: 3.0.0 709 | picomatch: 2.3.1 710 | dev: true 711 | 712 | /assertion-error@1.1.0: 713 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 714 | dev: true 715 | 716 | /binary-extensions@2.2.0: 717 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 718 | engines: {node: '>=8'} 719 | dev: true 720 | 721 | /blake3-wasm@2.1.5: 722 | resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} 723 | dev: true 724 | 725 | /braces@3.0.2: 726 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 727 | engines: {node: '>=8'} 728 | dependencies: 729 | fill-range: 7.0.1 730 | dev: true 731 | 732 | /buffer-from@1.1.2: 733 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 734 | dev: true 735 | 736 | /builtins@5.0.1: 737 | resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} 738 | dependencies: 739 | semver: 7.3.8 740 | dev: true 741 | 742 | /busboy@1.6.0: 743 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 744 | engines: {node: '>=10.16.0'} 745 | dependencies: 746 | streamsearch: 1.1.0 747 | dev: true 748 | 749 | /cac@6.7.14: 750 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 751 | engines: {node: '>=8'} 752 | dev: true 753 | 754 | /chai@4.3.7: 755 | resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} 756 | engines: {node: '>=4'} 757 | dependencies: 758 | assertion-error: 1.1.0 759 | check-error: 1.0.2 760 | deep-eql: 4.1.3 761 | get-func-name: 2.0.0 762 | loupe: 2.3.6 763 | pathval: 1.1.1 764 | type-detect: 4.0.8 765 | dev: true 766 | 767 | /check-error@1.0.2: 768 | resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} 769 | dev: true 770 | 771 | /chokidar@3.5.3: 772 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 773 | engines: {node: '>= 8.10.0'} 774 | dependencies: 775 | anymatch: 3.1.3 776 | braces: 3.0.2 777 | glob-parent: 5.1.2 778 | is-binary-path: 2.1.0 779 | is-glob: 4.0.3 780 | normalize-path: 3.0.0 781 | readdirp: 3.6.0 782 | optionalDependencies: 783 | fsevents: 2.3.2 784 | dev: true 785 | 786 | /cli-truncate@3.1.0: 787 | resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} 788 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 789 | dependencies: 790 | slice-ansi: 5.0.0 791 | string-width: 5.1.2 792 | dev: true 793 | 794 | /cookie@0.4.2: 795 | resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} 796 | engines: {node: '>= 0.6'} 797 | dev: true 798 | 799 | /cron-schedule@3.0.6: 800 | resolution: {integrity: sha512-izfGgKyzzIyLaeb1EtZ3KbglkS6AKp9cv7LxmiyoOu+fXfol1tQDC0Cof0enVZGNtudTHW+3lfuW9ZkLQss4Wg==} 801 | dev: true 802 | 803 | /cross-spawn@7.0.3: 804 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 805 | engines: {node: '>= 8'} 806 | dependencies: 807 | path-key: 3.1.1 808 | shebang-command: 2.0.0 809 | which: 2.0.2 810 | dev: true 811 | 812 | /debug@4.3.4: 813 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 814 | engines: {node: '>=6.0'} 815 | peerDependencies: 816 | supports-color: '*' 817 | peerDependenciesMeta: 818 | supports-color: 819 | optional: true 820 | dependencies: 821 | ms: 2.1.2 822 | dev: true 823 | 824 | /deep-eql@4.1.3: 825 | resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} 826 | engines: {node: '>=6'} 827 | dependencies: 828 | type-detect: 4.0.8 829 | dev: true 830 | 831 | /diff@5.1.0: 832 | resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} 833 | engines: {node: '>=0.3.1'} 834 | dev: true 835 | 836 | /dotenv@10.0.0: 837 | resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} 838 | engines: {node: '>=10'} 839 | dev: true 840 | 841 | /eastasianwidth@0.2.0: 842 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 843 | dev: true 844 | 845 | /emoji-regex@9.2.2: 846 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 847 | dev: true 848 | 849 | /esbuild@0.16.3: 850 | resolution: {integrity: sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg==} 851 | engines: {node: '>=12'} 852 | hasBin: true 853 | requiresBuild: true 854 | optionalDependencies: 855 | '@esbuild/android-arm': 0.16.3 856 | '@esbuild/android-arm64': 0.16.3 857 | '@esbuild/android-x64': 0.16.3 858 | '@esbuild/darwin-arm64': 0.16.3 859 | '@esbuild/darwin-x64': 0.16.3 860 | '@esbuild/freebsd-arm64': 0.16.3 861 | '@esbuild/freebsd-x64': 0.16.3 862 | '@esbuild/linux-arm': 0.16.3 863 | '@esbuild/linux-arm64': 0.16.3 864 | '@esbuild/linux-ia32': 0.16.3 865 | '@esbuild/linux-loong64': 0.16.3 866 | '@esbuild/linux-mips64el': 0.16.3 867 | '@esbuild/linux-ppc64': 0.16.3 868 | '@esbuild/linux-riscv64': 0.16.3 869 | '@esbuild/linux-s390x': 0.16.3 870 | '@esbuild/linux-x64': 0.16.3 871 | '@esbuild/netbsd-x64': 0.16.3 872 | '@esbuild/openbsd-x64': 0.16.3 873 | '@esbuild/sunos-x64': 0.16.3 874 | '@esbuild/win32-arm64': 0.16.3 875 | '@esbuild/win32-ia32': 0.16.3 876 | '@esbuild/win32-x64': 0.16.3 877 | dev: true 878 | 879 | /esbuild@0.17.15: 880 | resolution: {integrity: sha512-LBUV2VsUIc/iD9ME75qhT4aJj0r75abCVS0jakhFzOtR7TQsqQA5w0tZ+KTKnwl3kXE0MhskNdHDh/I5aCR1Zw==} 881 | engines: {node: '>=12'} 882 | hasBin: true 883 | requiresBuild: true 884 | optionalDependencies: 885 | '@esbuild/android-arm': 0.17.15 886 | '@esbuild/android-arm64': 0.17.15 887 | '@esbuild/android-x64': 0.17.15 888 | '@esbuild/darwin-arm64': 0.17.15 889 | '@esbuild/darwin-x64': 0.17.15 890 | '@esbuild/freebsd-arm64': 0.17.15 891 | '@esbuild/freebsd-x64': 0.17.15 892 | '@esbuild/linux-arm': 0.17.15 893 | '@esbuild/linux-arm64': 0.17.15 894 | '@esbuild/linux-ia32': 0.17.15 895 | '@esbuild/linux-loong64': 0.17.15 896 | '@esbuild/linux-mips64el': 0.17.15 897 | '@esbuild/linux-ppc64': 0.17.15 898 | '@esbuild/linux-riscv64': 0.17.15 899 | '@esbuild/linux-s390x': 0.17.15 900 | '@esbuild/linux-x64': 0.17.15 901 | '@esbuild/netbsd-x64': 0.17.15 902 | '@esbuild/openbsd-x64': 0.17.15 903 | '@esbuild/sunos-x64': 0.17.15 904 | '@esbuild/win32-arm64': 0.17.15 905 | '@esbuild/win32-ia32': 0.17.15 906 | '@esbuild/win32-x64': 0.17.15 907 | dev: true 908 | 909 | /escape-string-regexp@4.0.0: 910 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 911 | engines: {node: '>=10'} 912 | dev: true 913 | 914 | /estree-walker@0.6.1: 915 | resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} 916 | dev: true 917 | 918 | /execa@6.1.0: 919 | resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} 920 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 921 | dependencies: 922 | cross-spawn: 7.0.3 923 | get-stream: 6.0.1 924 | human-signals: 3.0.1 925 | is-stream: 3.0.0 926 | merge-stream: 2.0.0 927 | npm-run-path: 5.1.0 928 | onetime: 6.0.0 929 | signal-exit: 3.0.7 930 | strip-final-newline: 3.0.0 931 | dev: true 932 | 933 | /fill-range@7.0.1: 934 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 935 | engines: {node: '>=8'} 936 | dependencies: 937 | to-regex-range: 5.0.1 938 | dev: true 939 | 940 | /fsevents@2.3.2: 941 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 942 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 943 | os: [darwin] 944 | requiresBuild: true 945 | dev: true 946 | optional: true 947 | 948 | /function-bind@1.1.1: 949 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 950 | dev: true 951 | 952 | /get-func-name@2.0.0: 953 | resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} 954 | dev: true 955 | 956 | /get-stream@6.0.1: 957 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 958 | engines: {node: '>=10'} 959 | dev: true 960 | 961 | /glob-parent@5.1.2: 962 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 963 | engines: {node: '>= 6'} 964 | dependencies: 965 | is-glob: 4.0.3 966 | dev: true 967 | 968 | /has@1.0.3: 969 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 970 | engines: {node: '>= 0.4.0'} 971 | dependencies: 972 | function-bind: 1.1.1 973 | dev: true 974 | 975 | /html-rewriter-wasm@0.4.1: 976 | resolution: {integrity: sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q==} 977 | dev: true 978 | 979 | /http-cache-semantics@4.1.1: 980 | resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} 981 | dev: true 982 | 983 | /human-signals@3.0.1: 984 | resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} 985 | engines: {node: '>=12.20.0'} 986 | dev: true 987 | 988 | /is-binary-path@2.1.0: 989 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 990 | engines: {node: '>=8'} 991 | dependencies: 992 | binary-extensions: 2.2.0 993 | dev: true 994 | 995 | /is-core-module@2.11.0: 996 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 997 | dependencies: 998 | has: 1.0.3 999 | dev: true 1000 | 1001 | /is-extglob@2.1.1: 1002 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1003 | engines: {node: '>=0.10.0'} 1004 | dev: true 1005 | 1006 | /is-fullwidth-code-point@4.0.0: 1007 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} 1008 | engines: {node: '>=12'} 1009 | dev: true 1010 | 1011 | /is-glob@4.0.3: 1012 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1013 | engines: {node: '>=0.10.0'} 1014 | dependencies: 1015 | is-extglob: 2.1.1 1016 | dev: true 1017 | 1018 | /is-number@7.0.0: 1019 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1020 | engines: {node: '>=0.12.0'} 1021 | dev: true 1022 | 1023 | /is-stream@3.0.0: 1024 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 1025 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1026 | dev: true 1027 | 1028 | /isexe@2.0.0: 1029 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1030 | dev: true 1031 | 1032 | /jsonc-parser@3.2.0: 1033 | resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} 1034 | dev: true 1035 | 1036 | /kleur@4.1.5: 1037 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1038 | engines: {node: '>=6'} 1039 | dev: true 1040 | 1041 | /local-pkg@0.4.3: 1042 | resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} 1043 | engines: {node: '>=14'} 1044 | dev: true 1045 | 1046 | /loupe@2.3.6: 1047 | resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} 1048 | dependencies: 1049 | get-func-name: 2.0.0 1050 | dev: true 1051 | 1052 | /lru-cache@6.0.0: 1053 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1054 | engines: {node: '>=10'} 1055 | dependencies: 1056 | yallist: 4.0.0 1057 | dev: true 1058 | 1059 | /magic-string@0.25.9: 1060 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 1061 | dependencies: 1062 | sourcemap-codec: 1.4.8 1063 | dev: true 1064 | 1065 | /merge-stream@2.0.0: 1066 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1067 | dev: true 1068 | 1069 | /mime@3.0.0: 1070 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1071 | engines: {node: '>=10.0.0'} 1072 | hasBin: true 1073 | dev: true 1074 | 1075 | /mimic-fn@4.0.0: 1076 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 1077 | engines: {node: '>=12'} 1078 | dev: true 1079 | 1080 | /miniflare@2.13.0: 1081 | resolution: {integrity: sha512-ayNhVa4a6bZiOuHtrPmOt4BCYcmW1fBQ/+qGL85smq1m2OBBm3aUs6f4ISf38xH8tk+qewgmAywetyVtn6KHPw==} 1082 | engines: {node: '>=16.13'} 1083 | hasBin: true 1084 | peerDependencies: 1085 | '@miniflare/storage-redis': 2.13.0 1086 | cron-schedule: ^3.0.4 1087 | ioredis: ^4.27.9 1088 | peerDependenciesMeta: 1089 | '@miniflare/storage-redis': 1090 | optional: true 1091 | cron-schedule: 1092 | optional: true 1093 | ioredis: 1094 | optional: true 1095 | dependencies: 1096 | '@miniflare/cache': 2.13.0 1097 | '@miniflare/cli-parser': 2.13.0 1098 | '@miniflare/core': 2.13.0 1099 | '@miniflare/d1': 2.13.0 1100 | '@miniflare/durable-objects': 2.13.0 1101 | '@miniflare/html-rewriter': 2.13.0 1102 | '@miniflare/http-server': 2.13.0 1103 | '@miniflare/kv': 2.13.0 1104 | '@miniflare/queues': 2.13.0 1105 | '@miniflare/r2': 2.13.0 1106 | '@miniflare/runner-vm': 2.13.0 1107 | '@miniflare/scheduler': 2.13.0 1108 | '@miniflare/shared': 2.13.0 1109 | '@miniflare/sites': 2.13.0 1110 | '@miniflare/storage-file': 2.13.0 1111 | '@miniflare/storage-memory': 2.13.0 1112 | '@miniflare/web-sockets': 2.13.0 1113 | kleur: 4.1.5 1114 | semiver: 1.1.0 1115 | source-map-support: 0.5.21 1116 | undici: 5.20.0 1117 | transitivePeerDependencies: 1118 | - bufferutil 1119 | - utf-8-validate 1120 | dev: true 1121 | 1122 | /mlly@1.2.0: 1123 | resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} 1124 | dependencies: 1125 | acorn: 8.8.2 1126 | pathe: 1.1.0 1127 | pkg-types: 1.0.2 1128 | ufo: 1.1.1 1129 | dev: true 1130 | 1131 | /ms@2.1.2: 1132 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1133 | dev: true 1134 | 1135 | /mustache@4.2.0: 1136 | resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} 1137 | hasBin: true 1138 | dev: true 1139 | 1140 | /nanoid@3.3.6: 1141 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1142 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1143 | hasBin: true 1144 | dev: true 1145 | 1146 | /node-forge@1.3.1: 1147 | resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} 1148 | engines: {node: '>= 6.13.0'} 1149 | dev: true 1150 | 1151 | /normalize-path@3.0.0: 1152 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1153 | engines: {node: '>=0.10.0'} 1154 | dev: true 1155 | 1156 | /npm-run-path@5.1.0: 1157 | resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} 1158 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1159 | dependencies: 1160 | path-key: 4.0.0 1161 | dev: true 1162 | 1163 | /npx-import@1.1.4: 1164 | resolution: {integrity: sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==} 1165 | dependencies: 1166 | execa: 6.1.0 1167 | parse-package-name: 1.0.0 1168 | semver: 7.3.8 1169 | validate-npm-package-name: 4.0.0 1170 | dev: true 1171 | 1172 | /onetime@6.0.0: 1173 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 1174 | engines: {node: '>=12'} 1175 | dependencies: 1176 | mimic-fn: 4.0.0 1177 | dev: true 1178 | 1179 | /p-limit@4.0.0: 1180 | resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} 1181 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1182 | dependencies: 1183 | yocto-queue: 1.0.0 1184 | dev: true 1185 | 1186 | /parse-package-name@1.0.0: 1187 | resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==} 1188 | dev: true 1189 | 1190 | /path-key@3.1.1: 1191 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1192 | engines: {node: '>=8'} 1193 | dev: true 1194 | 1195 | /path-key@4.0.0: 1196 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 1197 | engines: {node: '>=12'} 1198 | dev: true 1199 | 1200 | /path-parse@1.0.7: 1201 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1202 | dev: true 1203 | 1204 | /path-to-regexp@6.2.1: 1205 | resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} 1206 | dev: true 1207 | 1208 | /pathe@1.1.0: 1209 | resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} 1210 | dev: true 1211 | 1212 | /pathval@1.1.1: 1213 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 1214 | dev: true 1215 | 1216 | /picocolors@1.0.0: 1217 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1218 | dev: true 1219 | 1220 | /picomatch@2.3.1: 1221 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1222 | engines: {node: '>=8.6'} 1223 | dev: true 1224 | 1225 | /pkg-types@1.0.2: 1226 | resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==} 1227 | dependencies: 1228 | jsonc-parser: 3.2.0 1229 | mlly: 1.2.0 1230 | pathe: 1.1.0 1231 | dev: true 1232 | 1233 | /postcss@8.4.21: 1234 | resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} 1235 | engines: {node: ^10 || ^12 || >=14} 1236 | dependencies: 1237 | nanoid: 3.3.6 1238 | picocolors: 1.0.0 1239 | source-map-js: 1.0.2 1240 | dev: true 1241 | 1242 | /pretty-format@27.5.1: 1243 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} 1244 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1245 | dependencies: 1246 | ansi-regex: 5.0.1 1247 | ansi-styles: 5.2.0 1248 | react-is: 17.0.2 1249 | dev: true 1250 | 1251 | /react-is@17.0.2: 1252 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 1253 | dev: true 1254 | 1255 | /readdirp@3.6.0: 1256 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1257 | engines: {node: '>=8.10.0'} 1258 | dependencies: 1259 | picomatch: 2.3.1 1260 | dev: true 1261 | 1262 | /resolve@1.22.2: 1263 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 1264 | hasBin: true 1265 | dependencies: 1266 | is-core-module: 2.11.0 1267 | path-parse: 1.0.7 1268 | supports-preserve-symlinks-flag: 1.0.0 1269 | dev: true 1270 | 1271 | /rollup-plugin-inject@3.0.2: 1272 | resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} 1273 | deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. 1274 | dependencies: 1275 | estree-walker: 0.6.1 1276 | magic-string: 0.25.9 1277 | rollup-pluginutils: 2.8.2 1278 | dev: true 1279 | 1280 | /rollup-plugin-node-polyfills@0.2.1: 1281 | resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} 1282 | dependencies: 1283 | rollup-plugin-inject: 3.0.2 1284 | dev: true 1285 | 1286 | /rollup-pluginutils@2.8.2: 1287 | resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} 1288 | dependencies: 1289 | estree-walker: 0.6.1 1290 | dev: true 1291 | 1292 | /rollup@3.20.2: 1293 | resolution: {integrity: sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==} 1294 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 1295 | hasBin: true 1296 | optionalDependencies: 1297 | fsevents: 2.3.2 1298 | dev: true 1299 | 1300 | /selfsigned@2.1.1: 1301 | resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} 1302 | engines: {node: '>=10'} 1303 | dependencies: 1304 | node-forge: 1.3.1 1305 | dev: true 1306 | 1307 | /semiver@1.1.0: 1308 | resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} 1309 | engines: {node: '>=6'} 1310 | dev: true 1311 | 1312 | /semver@7.3.8: 1313 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 1314 | engines: {node: '>=10'} 1315 | hasBin: true 1316 | dependencies: 1317 | lru-cache: 6.0.0 1318 | dev: true 1319 | 1320 | /set-cookie-parser@2.6.0: 1321 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 1322 | dev: true 1323 | 1324 | /shebang-command@2.0.0: 1325 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1326 | engines: {node: '>=8'} 1327 | dependencies: 1328 | shebang-regex: 3.0.0 1329 | dev: true 1330 | 1331 | /shebang-regex@3.0.0: 1332 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1333 | engines: {node: '>=8'} 1334 | dev: true 1335 | 1336 | /siginfo@2.0.0: 1337 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1338 | dev: true 1339 | 1340 | /signal-exit@3.0.7: 1341 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1342 | dev: true 1343 | 1344 | /slice-ansi@5.0.0: 1345 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} 1346 | engines: {node: '>=12'} 1347 | dependencies: 1348 | ansi-styles: 6.2.1 1349 | is-fullwidth-code-point: 4.0.0 1350 | dev: true 1351 | 1352 | /source-map-js@1.0.2: 1353 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1354 | engines: {node: '>=0.10.0'} 1355 | dev: true 1356 | 1357 | /source-map-support@0.5.21: 1358 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1359 | dependencies: 1360 | buffer-from: 1.1.2 1361 | source-map: 0.6.1 1362 | dev: true 1363 | 1364 | /source-map@0.6.1: 1365 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1366 | engines: {node: '>=0.10.0'} 1367 | dev: true 1368 | 1369 | /source-map@0.7.4: 1370 | resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} 1371 | engines: {node: '>= 8'} 1372 | dev: true 1373 | 1374 | /sourcemap-codec@1.4.8: 1375 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 1376 | deprecated: Please use @jridgewell/sourcemap-codec instead 1377 | dev: true 1378 | 1379 | /stack-trace@0.0.10: 1380 | resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} 1381 | dev: true 1382 | 1383 | /stackback@0.0.2: 1384 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1385 | dev: true 1386 | 1387 | /std-env@3.3.2: 1388 | resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} 1389 | dev: true 1390 | 1391 | /streamsearch@1.1.0: 1392 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1393 | engines: {node: '>=10.0.0'} 1394 | dev: true 1395 | 1396 | /string-width@5.1.2: 1397 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1398 | engines: {node: '>=12'} 1399 | dependencies: 1400 | eastasianwidth: 0.2.0 1401 | emoji-regex: 9.2.2 1402 | strip-ansi: 7.0.1 1403 | dev: true 1404 | 1405 | /strip-ansi@7.0.1: 1406 | resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} 1407 | engines: {node: '>=12'} 1408 | dependencies: 1409 | ansi-regex: 6.0.1 1410 | dev: true 1411 | 1412 | /strip-final-newline@3.0.0: 1413 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 1414 | engines: {node: '>=12'} 1415 | dev: true 1416 | 1417 | /strip-literal@1.0.1: 1418 | resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} 1419 | dependencies: 1420 | acorn: 8.8.2 1421 | dev: true 1422 | 1423 | /supports-preserve-symlinks-flag@1.0.0: 1424 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1425 | engines: {node: '>= 0.4'} 1426 | dev: true 1427 | 1428 | /tinybench@2.4.0: 1429 | resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} 1430 | dev: true 1431 | 1432 | /tinypool@0.4.0: 1433 | resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==} 1434 | engines: {node: '>=14.0.0'} 1435 | dev: true 1436 | 1437 | /tinyspy@1.1.1: 1438 | resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} 1439 | engines: {node: '>=14.0.0'} 1440 | dev: true 1441 | 1442 | /to-regex-range@5.0.1: 1443 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1444 | engines: {node: '>=8.0'} 1445 | dependencies: 1446 | is-number: 7.0.0 1447 | dev: true 1448 | 1449 | /type-detect@4.0.8: 1450 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 1451 | engines: {node: '>=4'} 1452 | dev: true 1453 | 1454 | /typescript@5.0.3: 1455 | resolution: {integrity: sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==} 1456 | engines: {node: '>=12.20'} 1457 | hasBin: true 1458 | dev: true 1459 | 1460 | /ufo@1.1.1: 1461 | resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==} 1462 | dev: true 1463 | 1464 | /undici@5.20.0: 1465 | resolution: {integrity: sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==} 1466 | engines: {node: '>=12.18'} 1467 | dependencies: 1468 | busboy: 1.6.0 1469 | dev: true 1470 | 1471 | /urlpattern-polyfill@4.0.3: 1472 | resolution: {integrity: sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ==} 1473 | dev: true 1474 | 1475 | /validate-npm-package-name@4.0.0: 1476 | resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} 1477 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1478 | dependencies: 1479 | builtins: 5.0.1 1480 | dev: true 1481 | 1482 | /vite-node@0.29.8(@types/node@18.15.11): 1483 | resolution: {integrity: sha512-b6OtCXfk65L6SElVM20q5G546yu10/kNrhg08afEoWlFRJXFq9/6glsvSVY+aI6YeC1tu2TtAqI2jHEQmOmsFw==} 1484 | engines: {node: '>=v14.16.0'} 1485 | hasBin: true 1486 | dependencies: 1487 | cac: 6.7.14 1488 | debug: 4.3.4 1489 | mlly: 1.2.0 1490 | pathe: 1.1.0 1491 | picocolors: 1.0.0 1492 | vite: 4.2.1(@types/node@18.15.11) 1493 | transitivePeerDependencies: 1494 | - '@types/node' 1495 | - less 1496 | - sass 1497 | - stylus 1498 | - sugarss 1499 | - supports-color 1500 | - terser 1501 | dev: true 1502 | 1503 | /vite@4.2.1(@types/node@18.15.11): 1504 | resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} 1505 | engines: {node: ^14.18.0 || >=16.0.0} 1506 | hasBin: true 1507 | peerDependencies: 1508 | '@types/node': '>= 14' 1509 | less: '*' 1510 | sass: '*' 1511 | stylus: '*' 1512 | sugarss: '*' 1513 | terser: ^5.4.0 1514 | peerDependenciesMeta: 1515 | '@types/node': 1516 | optional: true 1517 | less: 1518 | optional: true 1519 | sass: 1520 | optional: true 1521 | stylus: 1522 | optional: true 1523 | sugarss: 1524 | optional: true 1525 | terser: 1526 | optional: true 1527 | dependencies: 1528 | '@types/node': 18.15.11 1529 | esbuild: 0.17.15 1530 | postcss: 8.4.21 1531 | resolve: 1.22.2 1532 | rollup: 3.20.2 1533 | optionalDependencies: 1534 | fsevents: 2.3.2 1535 | dev: true 1536 | 1537 | /vitest@0.29.8: 1538 | resolution: {integrity: sha512-JIAVi2GK5cvA6awGpH0HvH/gEG9PZ0a/WoxdiV3PmqK+3CjQMf8c+J/Vhv4mdZ2nRyXFw66sAg6qz7VNkaHfDQ==} 1539 | engines: {node: '>=v14.16.0'} 1540 | hasBin: true 1541 | peerDependencies: 1542 | '@edge-runtime/vm': '*' 1543 | '@vitest/browser': '*' 1544 | '@vitest/ui': '*' 1545 | happy-dom: '*' 1546 | jsdom: '*' 1547 | playwright: '*' 1548 | safaridriver: '*' 1549 | webdriverio: '*' 1550 | peerDependenciesMeta: 1551 | '@edge-runtime/vm': 1552 | optional: true 1553 | '@vitest/browser': 1554 | optional: true 1555 | '@vitest/ui': 1556 | optional: true 1557 | happy-dom: 1558 | optional: true 1559 | jsdom: 1560 | optional: true 1561 | playwright: 1562 | optional: true 1563 | safaridriver: 1564 | optional: true 1565 | webdriverio: 1566 | optional: true 1567 | dependencies: 1568 | '@types/chai': 4.3.4 1569 | '@types/chai-subset': 1.3.3 1570 | '@types/node': 18.15.11 1571 | '@vitest/expect': 0.29.8 1572 | '@vitest/runner': 0.29.8 1573 | '@vitest/spy': 0.29.8 1574 | '@vitest/utils': 0.29.8 1575 | acorn: 8.8.2 1576 | acorn-walk: 8.2.0 1577 | cac: 6.7.14 1578 | chai: 4.3.7 1579 | debug: 4.3.4 1580 | local-pkg: 0.4.3 1581 | pathe: 1.1.0 1582 | picocolors: 1.0.0 1583 | source-map: 0.6.1 1584 | std-env: 3.3.2 1585 | strip-literal: 1.0.1 1586 | tinybench: 2.4.0 1587 | tinypool: 0.4.0 1588 | tinyspy: 1.1.1 1589 | vite: 4.2.1(@types/node@18.15.11) 1590 | vite-node: 0.29.8(@types/node@18.15.11) 1591 | why-is-node-running: 2.2.2 1592 | transitivePeerDependencies: 1593 | - less 1594 | - sass 1595 | - stylus 1596 | - sugarss 1597 | - supports-color 1598 | - terser 1599 | dev: true 1600 | 1601 | /which@2.0.2: 1602 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1603 | engines: {node: '>= 8'} 1604 | hasBin: true 1605 | dependencies: 1606 | isexe: 2.0.0 1607 | dev: true 1608 | 1609 | /why-is-node-running@2.2.2: 1610 | resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} 1611 | engines: {node: '>=8'} 1612 | hasBin: true 1613 | dependencies: 1614 | siginfo: 2.0.0 1615 | stackback: 0.0.2 1616 | dev: true 1617 | 1618 | /wrangler@2.14.0: 1619 | resolution: {integrity: sha512-LTmSQ0jyd8c6bRhOAZZOh21Tr/HKkx7eWebCV2QmOHyacEeWLgc3Nu6KrOVBpqFVKCPCXHvcgqiN97I/nJHvFA==} 1620 | engines: {node: '>=16.13.0'} 1621 | hasBin: true 1622 | dependencies: 1623 | '@cloudflare/kv-asset-handler': 0.2.0 1624 | '@esbuild-plugins/node-globals-polyfill': 0.1.1(esbuild@0.16.3) 1625 | '@esbuild-plugins/node-modules-polyfill': 0.1.4(esbuild@0.16.3) 1626 | '@miniflare/core': 2.13.0 1627 | '@miniflare/d1': 2.13.0 1628 | '@miniflare/durable-objects': 2.13.0 1629 | blake3-wasm: 2.1.5 1630 | chokidar: 3.5.3 1631 | esbuild: 0.16.3 1632 | miniflare: 2.13.0 1633 | nanoid: 3.3.6 1634 | path-to-regexp: 6.2.1 1635 | selfsigned: 2.1.1 1636 | source-map: 0.7.4 1637 | xxhash-wasm: 1.0.2 1638 | optionalDependencies: 1639 | fsevents: 2.3.2 1640 | transitivePeerDependencies: 1641 | - '@miniflare/storage-redis' 1642 | - bufferutil 1643 | - cron-schedule 1644 | - ioredis 1645 | - utf-8-validate 1646 | dev: true 1647 | 1648 | /ws@8.13.0: 1649 | resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} 1650 | engines: {node: '>=10.0.0'} 1651 | peerDependencies: 1652 | bufferutil: ^4.0.1 1653 | utf-8-validate: '>=5.0.2' 1654 | peerDependenciesMeta: 1655 | bufferutil: 1656 | optional: true 1657 | utf-8-validate: 1658 | optional: true 1659 | dev: true 1660 | 1661 | /xxhash-wasm@1.0.2: 1662 | resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} 1663 | dev: true 1664 | 1665 | /yallist@4.0.0: 1666 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1667 | dev: true 1668 | 1669 | /yocto-queue@1.0.0: 1670 | resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} 1671 | engines: {node: '>=12.20'} 1672 | dev: true 1673 | 1674 | /youch@2.2.2: 1675 | resolution: {integrity: sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==} 1676 | dependencies: 1677 | '@types/stack-trace': 0.0.29 1678 | cookie: 0.4.2 1679 | mustache: 4.2.0 1680 | stack-trace: 0.0.10 1681 | dev: true 1682 | -------------------------------------------------------------------------------- /src/index.test.ts: -------------------------------------------------------------------------------- 1 | import { unstable_dev } from "wrangler"; 2 | import type { UnstableDevWorker } from "wrangler"; 3 | import { describe, expect, it, beforeAll, afterAll } from "vitest"; 4 | 5 | describe("Worker", () => { 6 | let worker: UnstableDevWorker; 7 | 8 | beforeAll(async () => { 9 | worker = await unstable_dev("src/index.ts", { 10 | experimental: { disableExperimentalWarning: true }, 11 | }); 12 | }); 13 | 14 | afterAll(async () => { 15 | await worker.stop(); 16 | }); 17 | 18 | it("should return Hello World", async () => { 19 | const resp = await worker.fetch(); 20 | if (resp) { 21 | const text = await resp.text(); 22 | expect(text).toMatchInlineSnapshot(`"Hello World!"`); 23 | } 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export interface Env { 2 | resourceName: string 3 | deployName: string 4 | apiVersion: string 5 | } 6 | 7 | export default { 8 | async fetch( 9 | request: Request, 10 | env: Env, 11 | _ctx: ExecutionContext 12 | ): Promise { 13 | if (request.method == "OPTIONS") { 14 | return handleOptions(request) 15 | } 16 | 17 | const authKey = request.headers.get('Authorization')?.replace('Bearer ', '') 18 | 19 | if (!authKey) { 20 | return new Response("Not allowed", { status: 403 }) 21 | } 22 | 23 | const url = new URL(request.url) 24 | 25 | if (url.pathname == '/v1/models') { 26 | return handleModels(request) 27 | } 28 | 29 | const fetchAPI = `https://${env.resourceName}.openai.azure.com/openai/deployments/${env.deployName}/${url.pathname.replace('/v1/', '')}?api-version=${env.apiVersion}` 30 | 31 | const proxyRequest = new Request(fetchAPI, request) 32 | proxyRequest.headers.set("api-key", authKey) 33 | 34 | return fetch(proxyRequest) 35 | }, 36 | } 37 | 38 | async function handleOptions(_request: Request): Promise { 39 | return new Response(null, { 40 | headers: { 41 | 'Access-Control-Allow-Origin': '*', 42 | 'Access-Control-Allow-Methods': '*', 43 | 'Access-Control-Allow-Headers': '*' 44 | } 45 | }) 46 | } 47 | 48 | async function handleModels(_request: Request): Promise { 49 | const data = { 50 | "object": "list", 51 | "data": [{ 52 | "id": "gpt-3.5-turbo", 53 | "object": "model", 54 | "created": 1677610602, 55 | "owned_by": "openai", 56 | "permission": [{ 57 | "id": "modelperm-M56FXnG1AsIr3SXq8BYPvXJA", 58 | "object": "model_permission", 59 | "created": 1679602088, 60 | "allow_create_engine": false, 61 | "allow_sampling": true, 62 | "allow_logprobs": true, 63 | "allow_search_indices": false, 64 | "allow_view": true, 65 | "allow_fine_tuning": false, 66 | "organization": "*", 67 | "group": null, 68 | "is_blocking": false 69 | }], 70 | "root": "gpt-3.5-turbo", 71 | "parent": null 72 | }] 73 | } 74 | const json = JSON.stringify(data, null, 2) 75 | 76 | return new Response(json, { 77 | headers: { 'Content-Type': 'application/json' }, 78 | }) 79 | } 80 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es2021" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, 15 | "lib": [ 16 | "es2021" 17 | ] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, 18 | "jsx": "react" /* Specify what JSX code is generated. */, 19 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 20 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 21 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ 22 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 23 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ 24 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ 25 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 26 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 27 | 28 | /* Modules */ 29 | "module": "es2022" /* Specify what module code is generated. */, 30 | // "rootDir": "./", /* Specify the root folder within your source files. */ 31 | "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */, 32 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 33 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 34 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 35 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ 36 | "types": [ 37 | "@cloudflare/workers-types" 38 | ] /* Specify type package names to be included without being referenced in a source file. */, 39 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 40 | "resolveJsonModule": true /* Enable importing .json files */, 41 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ 42 | 43 | /* JavaScript Support */ 44 | "allowJs": true /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */, 45 | "checkJs": false /* Enable error reporting in type-checked JavaScript files. */, 46 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ 47 | 48 | /* Emit */ 49 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 50 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 51 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 52 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 53 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ 54 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 55 | // "removeComments": true, /* Disable emitting comments. */ 56 | "noEmit": true /* Disable emitting files from a compilation. */, 57 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 58 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ 59 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 60 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 61 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 62 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 63 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 64 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 65 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 66 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ 67 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ 68 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 69 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ 70 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 71 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 72 | 73 | /* Interop Constraints */ 74 | "isolatedModules": true /* Ensure that each file can be safely transpiled without relying on other imports. */, 75 | "allowSyntheticDefaultImports": true /* Allow 'import x from y' when a module doesn't have a default export. */, 76 | // "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, 77 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 78 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 79 | 80 | /* Type Checking */ 81 | "strict": true /* Enable all strict type-checking options. */, 82 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ 83 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ 84 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 85 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ 86 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 87 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ 88 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ 89 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 90 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ 91 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ 92 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 93 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 94 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 95 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 96 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 97 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ 98 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 99 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 100 | 101 | /* Completeness */ 102 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 103 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- 1 | name = "azure-openai-proxy" 2 | main = "src/index.ts" 3 | compatibility_date = "2023-04-06" 4 | 5 | [vars] 6 | resourceName = "yuchanns-openai-west-us" 7 | apiVersion = "2024-03-01-preview" 8 | deployName = "gpt35-turbo" 9 | 10 | --------------------------------------------------------------------------------