├── opencatd ├── .env.bak ├── deno.jsonc ├── tsconfig.json ├── wrangler.toml.bak ├── package.json ├── import_map.json ├── test │ └── index.test.ts ├── src │ ├── server-worker.ts │ ├── server-deno.ts │ ├── core │ │ ├── index.ts │ │ └── controller.ts │ ├── type.ts │ ├── worker │ │ └── db.ts │ └── deno │ │ └── db.ts └── deno.lock ├── pnpm-workspace.yaml ├── gpt_tokens ├── wrangler.toml.bak ├── tsconfig.json ├── package.json └── src │ ├── index.ts │ └── index.test.ts ├── .github └── dependabot.yml ├── LICENSE ├── .gitignore ├── README.md └── pnpm-lock.yaml /opencatd/.env.bak: -------------------------------------------------------------------------------- 1 | OPENAI_DOMAIN="https://api.openai.com" -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'gpt_tokens' 3 | - 'opencatd' 4 | 5 | -------------------------------------------------------------------------------- /gpt_tokens/wrangler.toml.bak: -------------------------------------------------------------------------------- 1 | name = "gpt_tokens_worker" 2 | main = "src/index.ts" 3 | compatibility_date = "2023-04-21" 4 | -------------------------------------------------------------------------------- /opencatd/deno.jsonc: -------------------------------------------------------------------------------- 1 | { 2 | "tasks": { 3 | "dev": "deno run -A --unstable --watch src/server-deno.ts" 4 | }, 5 | "importMap": "import_map.json" 6 | } 7 | -------------------------------------------------------------------------------- /opencatd/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "module": "ESNext", 5 | "moduleResolution": "bundler", 6 | "esModuleInterop": true, 7 | "strict": true, 8 | "noEmit": true, 9 | "lib": ["esnext"], 10 | "types": ["@cloudflare/workers-types"], 11 | "forceConsistentCasingInFileNames": true, 12 | "allowImportingTsExtensions": true 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /opencatd/wrangler.toml.bak: -------------------------------------------------------------------------------- 1 | name = "opencatd_worker" 2 | main = "src/server-worker.ts" 3 | compatibility_date = "2023-03-30" 4 | 5 | [[routes]] 6 | pattern = "xxxxx" 7 | custom_domain = true 8 | 9 | [[kv_namespaces]] 10 | binding = "OPENCAT_DB" 11 | id = "xxxxx" 12 | 13 | [[services]] 14 | binding = "gpt_tokens" 15 | service = "gpt_tokens_worker" 16 | 17 | [vars] 18 | OPENAI_DOMAIN = "https://api.openai.com" 19 | -------------------------------------------------------------------------------- /gpt_tokens/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "module": "ESNext", 5 | "moduleResolution": "bundler", 6 | "esModuleInterop": true, 7 | "strict": true, 8 | "noEmit": true, 9 | "lib": [ 10 | "esnext" 11 | ], 12 | "types": [ 13 | "@cloudflare/workers-types" 14 | ], 15 | "forceConsistentCasingInFileNames": true, 16 | "allowImportingTsExtensions": true 17 | } 18 | } -------------------------------------------------------------------------------- /gpt_tokens/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gpt_tokens", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "gpt3-tokenizer": "^1.1.5" 6 | }, 7 | "devDependencies": { 8 | "@cloudflare/workers-types": "^4.20230404.0", 9 | "typescript": "^5.0.4", 10 | "vitest": "^0.30.1", 11 | "wrangler": "2.16.0" 12 | }, 13 | "private": true, 14 | "scripts": { 15 | "start": "wrangler dev", 16 | "deploy": "wrangler publish", 17 | "test": "vitest" 18 | } 19 | } -------------------------------------------------------------------------------- /gpt_tokens/src/index.ts: -------------------------------------------------------------------------------- 1 | import GPT3Tokenizer from "gpt3-tokenizer"; 2 | 3 | export interface Env {} 4 | 5 | export default { 6 | async fetch( 7 | request: Request, 8 | env: Env, 9 | ctx: ExecutionContext 10 | ): Promise { 11 | const text = await request.text(); 12 | const encode = (text: string) => 13 | new GPT3Tokenizer({ 14 | type: "gpt3", 15 | }).encode(text).bpe; 16 | return new Response(String(encode(text).length)); 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "yarn" # See documentation for possible values 9 | directory: "/" # Location of package manifests 10 | schedule: 11 | interval: "weekly" 12 | -------------------------------------------------------------------------------- /opencatd/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "opencatd_worker", 3 | "version": "1.1.0", 4 | "private": true, 5 | "main": "src/server-worker.ts", 6 | "scripts": { 7 | "start": "wrangler dev", 8 | "deploy": "wrangler publish", 9 | "test": "vitest" 10 | }, 11 | "dependencies": { 12 | "eventsource-parser": "^1.0.0", 13 | "gpt3-tokenizer": "^1.1.5", 14 | "hono": "^3.1.0" 15 | }, 16 | "devDependencies": { 17 | "@cloudflare/workers-types": "^4.20230321.0", 18 | "typescript": "^5.0.3", 19 | "vitest": "^0.29.8", 20 | "wrangler": "2.16.0" 21 | } 22 | } -------------------------------------------------------------------------------- /opencatd/import_map.json: -------------------------------------------------------------------------------- 1 | { 2 | "imports": { 3 | "hono": "https://deno.land/x/hono@v3.1.5/mod.ts", 4 | "hono/": "https://deno.land/x/hono@v3.1.5/", 5 | "deno/server": "https://deno.land/std@0.182.0/http/server.ts", 6 | "hono/utils/http-status": "https://deno.land/x/hono@v3.1.5/utils/http-status.ts", 7 | "dotenv/load": "https://deno.land/std@0.182.0/dotenv/load.ts", 8 | "hono/adapter": "https://deno.land/x/hono@v3.1.5/adapter.ts", 9 | "hono/middleware": "https://deno.land/x/hono@v3.1.5/middleware.ts", 10 | "eventsource-parser": "npm:eventsource-parser@1.0.0" 11 | } 12 | } -------------------------------------------------------------------------------- /gpt_tokens/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 | -------------------------------------------------------------------------------- /opencatd/test/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 | -------------------------------------------------------------------------------- /opencatd/src/server-worker.ts: -------------------------------------------------------------------------------- 1 | import app from "./core/index"; 2 | import { WorkerKV } from "./worker/db"; 3 | import { Hono } from "hono"; 4 | import { Bindings } from "./type"; 5 | import { logger } from "hono/logger"; 6 | 7 | const server_app = new Hono<{ Bindings: Bindings }>(); 8 | 9 | server_app.use("*", logger()); 10 | 11 | server_app.use((ctx, next) => { 12 | if (!ctx.env.kv) { 13 | ctx.env.kv = new WorkerKV(ctx.env.OPENCAT_DB); 14 | } 15 | 16 | if (!ctx.env.countLen) { 17 | ctx.env.countLen = async (text: string) => { 18 | const resp = await ctx.env.gpt_tokens.fetch("http://.../", { 19 | method: "POST", 20 | body: text, 21 | }); 22 | return Number(await resp.text()); 23 | }; 24 | } 25 | 26 | return next(); 27 | }); 28 | 29 | server_app.route("/", app); 30 | 31 | export default server_app; 32 | -------------------------------------------------------------------------------- /opencatd/src/server-deno.ts: -------------------------------------------------------------------------------- 1 | import "dotenv/load"; 2 | import { serve } from "deno/server"; 3 | import { Hono } from "hono"; 4 | import { env } from "hono/adapter"; 5 | import app from "./core/index.ts"; 6 | import { DenoKV } from "./deno/db.ts"; 7 | import { Bindings } from "./type.ts"; 8 | import { logger } from "hono/middleware"; 9 | import GPT3Tokenizer from "npm:gpt3-tokenizer@1.1.5"; 10 | 11 | const tokenizer = new GPT3Tokenizer.default({ 12 | type: "gpt3", 13 | }); 14 | 15 | globalThis.countLen = (text: string) => tokenizer.encode(text).bpe.length; 16 | 17 | globalThis.kv = new DenoKV(await Deno.openKv()); 18 | 19 | const server_app = new Hono<{ Bindings: Bindings }, any>(); 20 | 21 | server_app.use("*", logger()); 22 | 23 | server_app.use((ctx, next) => { 24 | ctx.env = env(ctx); 25 | 26 | if (!ctx.env.kv) { 27 | ctx.env.kv = globalThis.kv; 28 | } 29 | 30 | if (!ctx.env.countLen) { 31 | ctx.env.countLen = globalThis.countLen; 32 | } 33 | 34 | return next(); 35 | }); 36 | 37 | server_app.route("/", app); 38 | 39 | serve(server_app.fetch); 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 BenMix 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 | -------------------------------------------------------------------------------- /opencatd/src/core/index.ts: -------------------------------------------------------------------------------- 1 | import { Hono } from "hono"; 2 | import controller from "./controller.ts"; 3 | import { Bindings } from "../type.ts"; 4 | 5 | const app = new Hono<{ Bindings: Bindings }>(); 6 | const middleware = { 7 | root: new Hono<{ Bindings: Bindings }>(), 8 | openai: new Hono<{ Bindings: Bindings }>(), 9 | }; 10 | const users = new Hono<{ Bindings: Bindings }>(); 11 | const keys = new Hono<{ Bindings: Bindings }>(); 12 | const root = new Hono<{ Bindings: Bindings }>(); 13 | const openai = new Hono<{ Bindings: Bindings }>(); 14 | const usages = new Hono<{Bindings: Bindings}>(); 15 | 16 | usages.get('/', controller.usages.getAll); 17 | 18 | users.get("/", controller.users.getAll); 19 | users.post("/", controller.users.add); 20 | users.delete("/:id", controller.users.delete); 21 | users.post("/:id/reset", controller.users.reset); 22 | 23 | keys.get("/", controller.keys.getAll); 24 | keys.post("/", controller.keys.add); 25 | keys.delete("/:id", controller.keys.delete); 26 | 27 | root.get("/", controller.root.whoami); 28 | 29 | openai.all("/*", controller.openai.proxy); 30 | 31 | middleware.root.use("*", controller.auth.root); 32 | middleware.openai.use("*", controller.auth.openai); 33 | 34 | app.post("/1/users/init", controller.users.init); 35 | 36 | app.route("/1", middleware.root); 37 | app.route("/1/users", users); 38 | app.route("/1/keys", keys); 39 | app.route("/1/me", root); 40 | app.route("/1/usages", usages); 41 | 42 | app.route("/v1", middleware.openai); 43 | app.route("/v1", openai); 44 | 45 | export default app; 46 | -------------------------------------------------------------------------------- /opencatd/src/type.ts: -------------------------------------------------------------------------------- 1 | export type DBConfig = { 2 | user_id_count: number; 3 | key_id_count: number; 4 | }; 5 | 6 | export type User = { 7 | id: number; 8 | name: string; 9 | token: string; 10 | }; 11 | 12 | export type UsagesResp = { 13 | userId: number; 14 | totalUint: number; 15 | cost: string; 16 | }; 17 | 18 | export type Usages = { 19 | user_id: number; 20 | usages_version: UsagesVersion[]; 21 | }; 22 | 23 | export type UsagesVersion = { 24 | version: string; 25 | prompt: { tokens: number; cost: number }; 26 | completion: { tokens: number; cost: number }; 27 | }; 28 | 29 | export type Key = { 30 | id: number; 31 | name: string; 32 | key: string; 33 | }; 34 | 35 | export type Bindings = { 36 | OPENCAT_DB: KVNamespace; 37 | OPENAI_DOMAIN: string; 38 | kv: KV; 39 | countLen: (text: string) => Promise; 40 | gpt_tokens: ServiceWorkerGlobalScope; 41 | }; 42 | 43 | export interface KV { 44 | get(key: T): Promise<{ value: U | null }>; 45 | list(prefix: T): Promise<{ key: T; value: U | undefined }[]>; 46 | put(key: T, value: U): Promise; 47 | atomicOpt(opts: AtomicOpt[]): Promise; 48 | delete(key: T): Promise; 49 | } 50 | 51 | declare global { 52 | var kv: KV; 53 | var countLen: 54 | | ((text: string) => Promise) 55 | | ((text: string) => number); 56 | } 57 | 58 | export type AtomicOpt = { action: AtomicOperation; args: any[] }; 59 | 60 | export type AtomicOperation = "check" | "delete" | "put"; 61 | 62 | export type RemoveUnion = T extends U ? never : T; 63 | -------------------------------------------------------------------------------- /opencatd/src/worker/db.ts: -------------------------------------------------------------------------------- 1 | import { AtomicOpt, KV } from "../type.ts"; 2 | 3 | export class WorkerKV implements KV { 4 | constructor(private db: KVNamespace) {} 5 | 6 | async get(key: string[]) { 7 | const { metadata } = await this.db.getWithMetadata(key.join("::")); 8 | return { value: metadata }; 9 | } 10 | 11 | async list(prefix: string[]) { 12 | const result = []; 13 | let cursor = undefined; 14 | 15 | while (true) { 16 | const lists: KVNamespaceListResult = await this.db.list({ 17 | prefix: prefix.join("::"), 18 | cursor, 19 | }); 20 | 21 | const keyValue = lists.keys.map((item) => ({ 22 | key: item.name.split("::"), 23 | value: item.metadata, 24 | })); 25 | 26 | result.push(...keyValue); 27 | 28 | if ("cursor" in lists) { 29 | cursor = lists.cursor; 30 | } 31 | 32 | if (lists.list_complete) { 33 | break; 34 | } 35 | } 36 | 37 | return result; 38 | } 39 | 40 | async put(key: (string | number)[], value: Value) { 41 | return this.db.put(key.join("::"), JSON.stringify(value), { 42 | metadata: value, 43 | }); 44 | } 45 | 46 | async delete(key: (string | number)[]) { 47 | return await this.db.delete(key.join("::")); 48 | } 49 | 50 | async atomicOpt(opts: AtomicOpt[]) { 51 | /** this is not a transaction, just simple operation. its atomicity is not guaranteed */ 52 | await Promise.all( 53 | opts.map(({ action, args }) => { 54 | if (action === "check") { 55 | return; 56 | } 57 | //@ts-ignore 58 | return this[action](...args); 59 | }) 60 | ); 61 | 62 | return true; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /opencatd/src/deno/db.ts: -------------------------------------------------------------------------------- 1 | import { AtomicOpt, KV } from "../type.ts"; 2 | 3 | export class DenoKV implements KV { 4 | constructor(private db: Deno.Kv) {} 5 | 6 | private atomic() { 7 | const atomicExec: Deno.AtomicOperation = this.db.atomic(); 8 | return { 9 | atomicExec: atomicExec, 10 | check(...args: Deno.AtomicCheck[]) { 11 | this.atomicExec = this.atomicExec.check(...args); 12 | return this; 13 | }, 14 | put(key: (string | number)[], value: U) { 15 | this.atomicExec = this.atomicExec.set(key, value); 16 | return this; 17 | }, 18 | delete(key: (string | number)[]) { 19 | this.atomicExec = this.atomicExec.delete(key); 20 | return this; 21 | }, 22 | commit() { 23 | return this.atomicExec.commit(); 24 | }, 25 | }; 26 | } 27 | 28 | async get(key: (string | number)[]) { 29 | return await this.db.get(key); 30 | } 31 | 32 | async list(prefix: (string | number)[]) { 33 | const result = await collect(this.db.list({ prefix: prefix })); 34 | 35 | return result.map((item) => ({ 36 | key: item.key as (string | number)[], 37 | value: item.value, 38 | })); 39 | } 40 | 41 | async put(key: (string | number)[], value: Value) { 42 | await this.db.set(key, value); 43 | return; 44 | } 45 | 46 | async atomicOpt(opts: AtomicOpt[]) { 47 | let atomicExec = this.atomic(); 48 | 49 | opts.map(({ action, args }) => { 50 | // deno-lint-ignore ban-ts-comment 51 | //@ts-ignore 52 | atomicExec = atomicExec[action](...args); 53 | }); 54 | 55 | const ok = await atomicExec.commit(); 56 | 57 | return !!ok; 58 | } 59 | 60 | async delete(key: (string | number)[]): Promise { 61 | return await this.db.delete(key); 62 | } 63 | } 64 | 65 | async function collect(it: AsyncIterable): Promise { 66 | const result: T[] = []; 67 | for await (const item of it) { 68 | result.push(item); 69 | } 70 | return result; 71 | } 72 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | .dev.vars 75 | 76 | # parcel-bundler cache (https://parceljs.org/) 77 | .cache 78 | 79 | # Next.js build output 80 | .next 81 | 82 | # Nuxt.js build / generate output 83 | .nuxt 84 | dist 85 | 86 | # Gatsby files 87 | .cache/ 88 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 89 | # https://nextjs.org/blog/next-9-1#public-directory-support 90 | # public 91 | 92 | # vuepress build output 93 | .vuepress/dist 94 | 95 | # Serverless directories 96 | .serverless/ 97 | 98 | # FuseBox cache 99 | .fusebox/ 100 | 101 | # DynamoDB Local files 102 | .dynamodb/ 103 | 104 | # TernJS port file 105 | .tern-port 106 | 107 | # wrangler toml file 108 | wrangler.toml 109 | 110 | # vscode settings file 111 | .vscode/settings.json 112 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Deploy OpenCat for Team on the Edges

2 |

3 | 4 | License: MIT 5 | 6 |

7 | 8 | 9 | 10 | 11 | **This is an open source implementation of [OpenCat for Team](https://opencat.app/) backend for edge platforms.** 12 | 13 | 14 | **Supported platforms:** 15 | 16 | - **[Cloudflare Workers](#deploy-to-cloudflare-workers-with-wrangler)** 17 | - **[Deno](#run-locally-with-deno)** 18 | - **[Deno Deploy](#deploy-to-deno-deploy-with-deployctl) *(requires kv beta access)*** 19 | 20 | *This project uses Cloudflare KV or Deno KV as backend database.* 21 | 22 | ## Deploy to Cloudflare Workers With Wrangler 23 | >Before you begin, you need to have a [Cloudflare](https://www.cloudflare.com/) account and be able to use [Cloudflare Workers](https://www.cloudflare.com/zh-cn/products/workers/). Have a joy! 24 | 25 | **1. Git clone the repo and enter repo** 26 | ```sh 27 | cd ./opencatd_worker 28 | ``` 29 | **2. Install dependencies** 30 | ```sh 31 | pnpm install 32 | ``` 33 | **3. Enable Tokens Count Service** 34 | ```sh 35 | cd ./gpt_tokens && cp wrangler.toml.bak wrangler.toml && pnpm run deploy 36 | ``` 37 | **4. Go into "./opencatd", Copy `wrangler.toml.bak` to `wrangler.toml`** 38 | ```sh 39 | cd ../opencatd && cp wrangler.toml.bak wrangler.toml 40 | ``` 41 | **5. Create Cloudflare KV Namespace** 42 | ```sh 43 | npx wrangler kv:namespace create OPENCAT_DB 44 | ``` 45 | **6. Then, copy the created Cloudflare KV config into wrangler.toml, replace 'xxxx...' into your created Cloudflare KV ID.** 46 | ```toml 47 | [[kv_namespaces]] 48 | binding = "OPENCAT_DB" 49 | id = "xxxxx" 50 | ``` 51 | 52 | **7. Custom domain, edit the route configuration in wrangler.toml, rename "xxxxxx..." into your custom domain** 53 | ```toml 54 | [[routes]] 55 | pattern = "xxxxx" 56 | custom_domain = true 57 | ``` 58 | 59 | **8. Use wrangler deploy** 60 | ```sh 61 | pnpm run deploy 62 | ``` 63 | 64 | ## Run locally with Deno 65 | >You need to have Deno >= 1.32 installed. 66 | 67 | **1. Install Deno** 68 | > MacOS user can use under command line to install deno. [Read the official document to learn more](https://deno.land/manual@v1.32.3/getting_started/installation#download-and-install) 69 | ```sh 70 | brew install deno 71 | ``` 72 | **2. Copy .env.bak to .env** 73 | ```sh 74 | cp .env.bak .env 75 | ``` 76 | **3. Run with Deno** 77 | > Just do it, Deno includes a kv database on the local environment, deno kv database likes a localStorage, you can simple use it. [learning more, you can see the comments](https://github.com/C-Dao/opencatd_worker/pull/2#issuecomment-1493372743). 78 | ```sh 79 | cd ./opencatd && deno run -A --unstable src/server-deno.ts 80 | ``` 81 | 82 | ## Deploy to Deno Deploy with Deployctl 83 | > You need to sign up [Deno deploy](https://deno.com/deploy)
84 | > You need to have Deno >= 1.32 installed.
85 | > [Learning how to use Deployctl](https://deno.com/deploy/docs/deployctl) 86 | 87 | **1. Install Deno** 88 | > MacOS user can use under command line to install deno. [Read the official document to learn more](https://deno.land/manual@v1.32.3/getting_started/installation#download-and-install) 89 | ```sh 90 | brew install deno 91 | ``` 92 | 93 | **2. Install deployctl** 94 | ```sh 95 | deno install --allow-read --allow-write --allow-env --allow-net --allow-run --no-check -r -f https://deno.land/x/deploy/deployctl.ts 96 | ``` 97 | **3. Deploy** 98 | 99 | ```sh 100 | cd ./opencatd && deployctl deploy --project=opencat_worker src/server-deno.ts 101 | ``` 102 | 103 | ## License 104 | This project is [MIT](./LICENSE) licensed. 105 | -------------------------------------------------------------------------------- /opencatd/src/core/controller.ts: -------------------------------------------------------------------------------- 1 | import { Handler, MiddlewareHandler } from "hono"; 2 | import { createParser } from "eventsource-parser"; 3 | import { 4 | Bindings, 5 | DBConfig, 6 | Key, 7 | Usages, 8 | UsagesResp, 9 | UsagesVersion, 10 | User, 11 | } from "../type.ts"; 12 | import { StatusCode } from "hono/utils/http-status"; 13 | 14 | const versions_billing = { 15 | "gpt-4": { prompt: 0.03 / 1000, completion: 0.06 / 1000 }, 16 | "gpt-4-0314": { prompt: 0.03 / 1000, completion: 0.06 / 1000 }, 17 | "gpt-4-32k": { prompt: 0.06 / 1000, completion: 0.12 / 1000 }, 18 | "gpt-4-32k-0314": { prompt: 0.03 / 1000, completion: 0.12 / 1000 }, 19 | "gpt-3.5-turbo": { prompt: 0.002 / 1000, completion: 0.002 / 1000 }, 20 | "gpt-3.5-turbo-0301": { prompt: 0.002 / 1000, completion: 0.002 / 1000 }, 21 | }; 22 | 23 | const calcTokens = (usages: UsagesVersion[] = []) => { 24 | return usages.reduce((prev, cur) => { 25 | return prev + cur.prompt.tokens + cur.completion.tokens; 26 | }, 0); 27 | }; 28 | 29 | const calcCost = (usages: UsagesVersion[] = []) => { 30 | return usages.reduce((prev, cur) => { 31 | return prev + cur.prompt.cost + cur.completion.cost; 32 | }, 0); 33 | }; 34 | 35 | export const usages: Record> = { 36 | async getAll(ctx) { 37 | let usages = await ctx.env.kv.list(["usages", "id"]); 38 | const resp: UsagesResp[] = usages.map((item) => { 39 | return { 40 | userId: item.value!.user_id, 41 | totalUint: calcTokens(item.value?.usages_version), 42 | cost: calcCost(item.value?.usages_version).toFixed(7), 43 | }; 44 | }); 45 | return ctx.json(resp); 46 | }, 47 | }; 48 | 49 | export const users: Record> = { 50 | async init(ctx) { 51 | const { value: user } = await ctx.env.kv.get(["user", "id", 0]); 52 | if (user) { 53 | return ctx.json( 54 | { 55 | error: "super user already exists, please input token", 56 | }, 57 | 403, 58 | ); 59 | } else { 60 | const user: User = { 61 | id: 0, 62 | name: "root", 63 | token: crypto.randomUUID(), 64 | }; 65 | 66 | const dbConfig: DBConfig = { 67 | user_id_count: 0, 68 | key_id_count: 0, 69 | }; 70 | 71 | const ok = await ctx.env.kv.atomicOpt([ 72 | { action: "check", args: [] }, 73 | { action: "put", args: [["user", "id", 0], user] }, 74 | { action: "put", args: [["db", "config"], dbConfig] }, 75 | ]); 76 | 77 | if (!ok) { 78 | return ctx.json({ error: "commit conflict" }, 409); 79 | } 80 | 81 | return ctx.json(user); 82 | } 83 | }, 84 | 85 | async getAll(ctx) { 86 | let users = await ctx.env.kv.list(["user", "id"]); 87 | return ctx.json(users.map((user) => user.value)); 88 | }, 89 | 90 | async add(ctx) { 91 | const { name } = await ctx.req.json(); 92 | const dbConfigEntry = await ctx.env.kv.get(["db", "config"]); 93 | 94 | if (!dbConfigEntry.value) { 95 | return ctx.json({ error: "db config not initialized" }, 403); 96 | } 97 | 98 | const user: User = { 99 | id: dbConfigEntry.value.user_id_count + 1, 100 | name, 101 | token: crypto.randomUUID(), 102 | }; 103 | 104 | const dbConfig = { 105 | ...dbConfigEntry.value, 106 | user_id_count: dbConfigEntry.value.user_id_count + 1, 107 | }; 108 | 109 | const ok = await ctx.env.kv.atomicOpt([ 110 | { action: "check", args: [dbConfigEntry] }, 111 | { action: "put", args: [["user", "id", user.id], user] }, 112 | { action: "put", args: [["db", "config"], dbConfig] }, 113 | ]); 114 | 115 | if (!ok) { 116 | return ctx.json({ error: "commit conflict" }, 409); 117 | } 118 | 119 | return ctx.json(user); 120 | }, 121 | 122 | async delete(ctx) { 123 | const id = ctx.req.param("id"); 124 | 125 | if (id == undefined || isNaN(Number(id))) { 126 | return ctx.json({ error: "id is not a number" }, 403); 127 | } 128 | 129 | await ctx.env.kv.delete(["user", "id", Number(id)]); 130 | 131 | return ctx.json({ message: "ok" }); 132 | }, 133 | 134 | async reset(ctx) { 135 | const id = ctx.req.param("id"); 136 | const userEntry = await ctx.env.kv.get(["user", "id", Number(id)]); 137 | 138 | if (!userEntry.value) { 139 | return ctx.json({ error: "user not found" }, 404); 140 | } 141 | 142 | const user = { ...userEntry.value, token: crypto.randomUUID() }; 143 | 144 | const ok = await ctx.env.kv.atomicOpt([ 145 | { action: "check", args: [userEntry] }, 146 | { action: "put", args: [["user", "id", Number(id)], user] }, 147 | ]); 148 | 149 | if (!ok) { 150 | return ctx.json({ error: "commit conflict" }, 409); 151 | } 152 | 153 | return ctx.json(user); 154 | }, 155 | }; 156 | 157 | export const keys: Record> = { 158 | async getAll(ctx) { 159 | const keys = await ctx.env.kv.list(["key", "id"]); 160 | const fillZeroKeys = keys.map((item) => { 161 | const key = item.value as Key; 162 | const len = key.key.length; 163 | key.key = `${ 164 | key.key 165 | .split("") 166 | .fill("0", 7, len - 4) 167 | .join("") 168 | }`; 169 | return key; 170 | }); 171 | return ctx.json(fillZeroKeys); 172 | }, 173 | 174 | async add(ctx) { 175 | const { name, key } = await ctx.req.json(); 176 | let dbConfigEntry = await ctx.env.kv.get(["db", "config"]); 177 | 178 | if (!dbConfigEntry.value) { 179 | return ctx.json({ error: "db metadata not initialized" }, 403); 180 | } 181 | 182 | const item: Key = { 183 | id: dbConfigEntry.value.key_id_count + 1, 184 | key, 185 | name, 186 | }; 187 | 188 | const dbConfig = { 189 | ...dbConfigEntry.value, 190 | key_id_count: dbConfigEntry.value.key_id_count + 1, 191 | }; 192 | 193 | const ok = await ctx.env.kv.atomicOpt([ 194 | { action: "check", args: [dbConfigEntry] }, 195 | { action: "put", args: [["key", "id", item.id], item] }, 196 | { action: "put", args: [["db", "config"], dbConfig] }, 197 | ]); 198 | 199 | if (!ok) { 200 | return ctx.json({ error: "commit conflict" }, 409); 201 | } 202 | return ctx.json(item); 203 | }, 204 | 205 | async delete(ctx) { 206 | const id = ctx.req.param("id"); 207 | 208 | if (id == undefined || isNaN(Number(id))) { 209 | return ctx.json({ error: "id is not a number" }, 403); 210 | } 211 | 212 | await ctx.env.kv.delete(["key", "id", Number(id)]); 213 | 214 | return ctx.json({ message: "ok" }); 215 | }, 216 | }; 217 | 218 | export const root: Record> = { 219 | async whoami(ctx) { 220 | let { value: user } = await ctx.env.kv.get(["user", "id", 0]); 221 | if (user) { 222 | return ctx.json(user); 223 | } else { 224 | return ctx.json( 225 | { error: "not found root user, please init service" }, 226 | 404, 227 | ); 228 | } 229 | }, 230 | }; 231 | 232 | export const openai: Record> = { 233 | async proxy(ctx) { 234 | const keyEntries = await ctx.env.kv.list(["key", "id"]); 235 | const randomIndex = Math.floor(Math.random() * keyEntries.length); 236 | const token = ctx.req.header("Authorization")?.slice(7); 237 | const openaiToken = keyEntries[randomIndex].value?.key; 238 | const user = (await ctx.env.kv.list(["user", "id"])).find( 239 | (it) => it.value?.token === token, 240 | ); 241 | 242 | if (!user?.value) { 243 | return ctx.json({ error: "not found user, user is no exsit" }, 404); 244 | } 245 | 246 | let { value: usages } = await ctx.env.kv.get([ 247 | "usages", 248 | "id", 249 | user.value.id, 250 | ]); 251 | 252 | if (!usages) { 253 | usages = { 254 | user_id: user.value.id, 255 | usages_version: [], 256 | }; 257 | } 258 | 259 | const reqHeaders = new Headers(ctx.req.headers); 260 | const reqQuerys = new URLSearchParams(ctx.req.query()).toString(); 261 | 262 | reqHeaders.set("Authorization", "Bearer " + openaiToken); 263 | 264 | let counts = { 265 | version: "", 266 | prompt: { tokens: 0, cost: 0 }, 267 | completion: { tokens: 0, cost: 0 }, 268 | }; 269 | 270 | let allReqContent = ""; 271 | 272 | const reqTransform = new TransformStream({ 273 | async transform(chunk, controller) { 274 | allReqContent += new TextDecoder().decode(chunk); 275 | controller.enqueue(chunk); 276 | }, 277 | async flush() { 278 | const json: any = JSON.parse(allReqContent); 279 | const messages = json.messages.map((msg: any) => msg.content); 280 | counts.version = json.model; 281 | counts.prompt.tokens = await ctx.env.countLen(messages.join("")); 282 | counts.prompt.cost = 283 | versions_billing[counts.version as keyof typeof versions_billing] 284 | .prompt * counts.prompt.tokens; 285 | }, 286 | }); 287 | 288 | const request = new Request( 289 | `${ctx.env.OPENAI_DOMAIN}${ctx.req.path}?${reqQuerys}`, 290 | { 291 | method: ctx.req.method, 292 | headers: reqHeaders, 293 | body: ctx.req.path === "/v1/chat/completions" 294 | ? ctx.req.body?.pipeThrough(reqTransform) || null 295 | : ctx.req.body, 296 | }, 297 | ); 298 | 299 | const response = await fetch(request); 300 | 301 | for (const header of response.headers.entries()) { 302 | ctx.header(...header); 303 | } 304 | 305 | let allContent = ""; 306 | const decoder = new TextDecoder(); 307 | const parser = createParser((event: any) => { 308 | if (event.type === "event") { 309 | const data = event.data; 310 | // https://beta.openai.com/docs/api-reference/completions/create#completions/create-stream 311 | if (data === "[DONE]") { 312 | return; 313 | } 314 | try { 315 | const json = JSON.parse(data); 316 | // concat all chunks 317 | allContent += json.choices.map((it: any) => it.delta.content).join( 318 | "", 319 | ); 320 | } catch (e) { 321 | console.error(e); 322 | } 323 | } 324 | }); 325 | 326 | const respTransform = new TransformStream({ 327 | async transform(chunk, controller) { 328 | parser.feed(decoder.decode(chunk, { stream: true })); 329 | controller.enqueue(chunk); 330 | }, 331 | async flush() { 332 | counts.completion.tokens += await ctx.env.countLen(allContent); 333 | counts.completion.cost = 334 | versions_billing[counts.version as keyof typeof versions_billing] 335 | .completion * counts.completion.tokens; 336 | 337 | const index = usages!.usages_version.findIndex( 338 | (item) => item.version === counts.version, 339 | ); 340 | 341 | if (~index) { 342 | usages!.usages_version[index].prompt.tokens += counts.prompt.tokens; 343 | usages!.usages_version[index].completion.tokens += 344 | counts.completion.tokens; 345 | usages!.usages_version[index].completion.cost += 346 | counts.completion.cost; 347 | usages!.usages_version[index].prompt.cost += counts.prompt.cost; 348 | } else { 349 | usages!.usages_version.push(counts); 350 | } 351 | 352 | await ctx.env.kv.atomicOpt([ 353 | { action: "put", args: [["usages", "id", usages!.user_id], usages] }, 354 | ]); 355 | }, 356 | }); 357 | 358 | return ctx.body( 359 | ctx.req.path === "/v1/chat/completions" 360 | ? response.body?.pipeThrough(respTransform) || null 361 | : response.body, 362 | (response.status as StatusCode) || 200, 363 | ); 364 | }, 365 | }; 366 | 367 | export const auth: Record> = { 368 | async root(ctx, next) { 369 | const auth = ctx.req.header("Authorization"); 370 | 371 | if (!auth || !auth.startsWith("Bearer")) { 372 | return ctx.json({ error: "Unauthorized" }, 401); 373 | } 374 | 375 | const token = auth.slice(7); 376 | 377 | const { value: user } = await ctx.env.kv.get(["user", "id", 0]); 378 | 379 | if (!user) { 380 | return ctx.json({ error: "Unauthorized" }, 401); 381 | } 382 | 383 | const existed = token === user.token; 384 | if (existed) { 385 | return next(); 386 | } else { 387 | return ctx.json({ error: "Unauthorized" }, 401); 388 | } 389 | }, 390 | 391 | async openai(ctx, next) { 392 | if (ctx.req.method === "OPTIONS") { 393 | ctx.res.headers.append("access-control-allow-origin", "*"); 394 | ctx.res.headers.append("access-control-allow-credentials", "true"); 395 | ctx.res.headers.append("access-control-allow-headers", "*"); 396 | 397 | return new Response(null, { 398 | headers: ctx.res.headers, 399 | status: 204, 400 | }); 401 | } 402 | 403 | const auth = ctx.req.header("Authorization"); 404 | 405 | if (!auth || !auth.startsWith("Bearer")) { 406 | return ctx.json({ error: "Unauthorized" }, 401); 407 | } 408 | 409 | const token = auth.slice(7); 410 | 411 | const users = await ctx.env.kv.list(["user", "id"]); 412 | 413 | const existed = users.find((user) => user.value?.token === token); 414 | if (existed) { 415 | return next(); 416 | } else { 417 | return ctx.json({ error: "Unauthorized" }, 401); 418 | } 419 | }, 420 | }; 421 | 422 | export default { 423 | openai, 424 | users, 425 | keys, 426 | root, 427 | auth, 428 | usages, 429 | }; 430 | -------------------------------------------------------------------------------- /opencatd/deno.lock: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2", 3 | "remote": { 4 | "https://deno.land/std@0.182.0/async/abortable.ts": "fd682fa46f3b7b16b4606a5ab52a7ce309434b76f820d3221bdfb862719a15d7", 5 | "https://deno.land/std@0.182.0/async/deadline.ts": "c5facb0b404eede83e38bd2717ea8ab34faa2ffb20ef87fd261fcba32ba307aa", 6 | "https://deno.land/std@0.182.0/async/debounce.ts": "adab11d04ca38d699444ac8a9d9856b4155e8dda2afd07ce78276c01ea5a4332", 7 | "https://deno.land/std@0.182.0/async/deferred.ts": "42790112f36a75a57db4a96d33974a936deb7b04d25c6084a9fa8a49f135def8", 8 | "https://deno.land/std@0.182.0/async/delay.ts": "73aa04cec034c84fc748c7be49bb15cac3dd43a57174bfdb7a4aec22c248f0dd", 9 | "https://deno.land/std@0.182.0/async/mod.ts": "f04344fa21738e5ad6bea37a6bfffd57c617c2d372bb9f9dcfd118a1b622e576", 10 | "https://deno.land/std@0.182.0/async/mux_async_iterator.ts": "70c7f2ee4e9466161350473ad61cac0b9f115cff4c552eaa7ef9d50c4cbb4cc9", 11 | "https://deno.land/std@0.182.0/async/pool.ts": "fd082bd4aaf26445909889435a5c74334c017847842ec035739b4ae637ae8260", 12 | "https://deno.land/std@0.182.0/async/retry.ts": "dd19d93033d8eaddbfcb7654c0366e9d3b0a21448bdb06eba4a7d8a8cf936a92", 13 | "https://deno.land/std@0.182.0/async/tee.ts": "47e42d35f622650b02234d43803d0383a89eb4387e1b83b5a40106d18ae36757", 14 | "https://deno.land/std@0.182.0/collections/filter_values.ts": "5b9feaf17b9a6e5ffccdd36cf6f38fa4ffa94cff2602d381c2ad0c2a97929652", 15 | "https://deno.land/std@0.182.0/collections/without_all.ts": "a89f5da0b5830defed4f59666e188df411d8fece35a5f6ca69be6ca71a95c185", 16 | "https://deno.land/std@0.182.0/dotenv/load.ts": "0636983549b98f29ab75c9a22a42d9723f0a389ece5498fe971e7bb2556a12e2", 17 | "https://deno.land/std@0.182.0/dotenv/mod.ts": "8dcbc8a40b896a0bf094582aaeadbfc76d3528872faf2efc0302beb1d2f6afd0", 18 | "https://deno.land/std@0.182.0/http/server.ts": "cbb17b594651215ba95c01a395700684e569c165a567e4e04bba327f41197433", 19 | "https://deno.land/x/hono@v3.1.5/adapter.ts": "2689b0b19530315b97ef67c4873dd46587a60572892022b429a1d63d7385911e", 20 | "https://deno.land/x/hono@v3.1.5/adapter/deno/serve-static.ts": "d1c21498ced39849fa0bb23b372bf5d30677916fdbc875902735700ca1e789e3", 21 | "https://deno.land/x/hono@v3.1.5/client/client.ts": "c279ae0fd26bc10989bb9ad9025eb22db6317530c09ffdb3e59c0a932534f3ce", 22 | "https://deno.land/x/hono@v3.1.5/client/index.ts": "7ad089b121f2613a0eaedd3d8aa8307a48bf3bf48f6c38281d6e73ee35f0d7ea", 23 | "https://deno.land/x/hono@v3.1.5/client/types.ts": "ccf9ae6ae9aa0be5f3254143a3e7a7ac7b0c1c69c65ef2f72e76b01de101c741", 24 | "https://deno.land/x/hono@v3.1.5/client/utils.ts": "d7ff6b55f5b00715dacecaefd39e598f2a5e4cb863a64b0bee1020a725640cd7", 25 | "https://deno.land/x/hono@v3.1.5/compose.ts": "9bc97f737857da061b2294eb9812b7e0ca773acc2e913c11bf93d5732c0469f0", 26 | "https://deno.land/x/hono@v3.1.5/context.ts": "b8d8331238af89feb509a5ece6111bb72ef60509bd3936c2f5d49322c44f3d31", 27 | "https://deno.land/x/hono@v3.1.5/hono.ts": "a85789f0332dcaeaed1a2b81fbc766ca4bcfc3fb3109f9d8de6fec61c750b61d", 28 | "https://deno.land/x/hono@v3.1.5/http-exception.ts": "e74a5e8504ecf795e9babdc2bab9d4052e1806a7396efc89f8e1ed83e813e3be", 29 | "https://deno.land/x/hono@v3.1.5/middleware.ts": "d2c886e2f63b91b17f05a11f598ca101912c8fbfd66a25aef345b934ccfcd603", 30 | "https://deno.land/x/hono@v3.1.5/middleware/basic-auth/index.ts": "53808e721b13096baafdcc98f035bedc13385c17edecbd9e2e53118b4d9305a9", 31 | "https://deno.land/x/hono@v3.1.5/middleware/bearer-auth/index.ts": "11d4ead9b57f5bcb2b6b4bf27076871f15da0e1e8828b2b79d90c15423357b47", 32 | "https://deno.land/x/hono@v3.1.5/middleware/cache/index.ts": "275a90999b316f224a39b5c7b5e0a8009de3cb06e09f7a62feaa4fad60a90b4d", 33 | "https://deno.land/x/hono@v3.1.5/middleware/compress/index.ts": "0b8ddbd70688361d5ef4e9418afa28affe2500a7f41a231a87873dad26ef5548", 34 | "https://deno.land/x/hono@v3.1.5/middleware/cors/index.ts": "10a743dcc793204835a5299070e2afaabb7e81cb742262faa9f1181f5e5d65ac", 35 | "https://deno.land/x/hono@v3.1.5/middleware/etag/index.ts": "019794a57657725ac7db7df50a8605cc33c5b8b97356c21c11182455d4bbedba", 36 | "https://deno.land/x/hono@v3.1.5/middleware/html/index.ts": "a5028d8170dcc030d003749e743213e6532ff65798b741b81220207abc9af82d", 37 | "https://deno.land/x/hono@v3.1.5/middleware/jsx/index.ts": "1925e4bf01ef1252b9bda6b0c4f79520b138ee319c41df3218cb3bf10c0ed248", 38 | "https://deno.land/x/hono@v3.1.5/middleware/jwt/index.ts": "6a8fa9ca42e49756dd1b8db6f0abe5b6684681ece8fc7f65a4892f7a82000236", 39 | "https://deno.land/x/hono@v3.1.5/middleware/logger/index.ts": "281b0fe431183a5d7b8d576645370efbd2737aeefaac7dc989d1c90dc03c52c0", 40 | "https://deno.land/x/hono@v3.1.5/middleware/powered-by/index.ts": "7ec561885ac0410786f78aeb9789ed7869edb2d43c615cbc3d14f21baee87359", 41 | "https://deno.land/x/hono@v3.1.5/middleware/pretty-json/index.ts": "f4a4b2fa2ecb73e23da6f0ef716fe7d6a7f05c69f64dc7f89fc68cbcb204a87f", 42 | "https://deno.land/x/hono@v3.1.5/mod.ts": "2a77e5929d012023a40ee6914c2309e9a23f69a5784b5d0a377cd6fbc55c8266", 43 | "https://deno.land/x/hono@v3.1.5/request.ts": "93b7dae721b5e77141d082d8091c8cd833690afc6b9fa72417cb00cecaac7b50", 44 | "https://deno.land/x/hono@v3.1.5/router.ts": "21448bc2e6019574c10fae11237da4367037fa107e68bf3d049cd2fd0efd2adb", 45 | "https://deno.land/x/hono@v3.1.5/router/reg-exp-router/index.ts": "52755829213941756159b7a963097bafde5cc4fc22b13b1c7c9184dc0512d1db", 46 | "https://deno.land/x/hono@v3.1.5/router/reg-exp-router/node.ts": "8006b5bccb83d9fc98e0562a5545f6dd0be639ce445b089a6171c9c617aa8693", 47 | "https://deno.land/x/hono@v3.1.5/router/reg-exp-router/router.ts": "35a405c855cf6d10c350a651169c2c728fd19aaf3d3a0c416e5a06752914e6bd", 48 | "https://deno.land/x/hono@v3.1.5/router/reg-exp-router/trie.ts": "567493b301c44174f0895aedb8d055bbecf88f8a25626fa8ca61333bbd0c882c", 49 | "https://deno.land/x/hono@v3.1.5/router/smart-router/index.ts": "74f9b4fe15ea535900f2b9b048581915f12fe94e531dd2b0032f5610e61c3bef", 50 | "https://deno.land/x/hono@v3.1.5/router/smart-router/router.ts": "1d54f5c87875d856ed5fc2d22a100e1ff31debe3e9d8e9b1cc18d8e5706239f2", 51 | "https://deno.land/x/hono@v3.1.5/router/trie-router/index.ts": "3eb75e7f71ba81801631b30de6b1f5cefb2c7239c03797e2b2cbab5085911b41", 52 | "https://deno.land/x/hono@v3.1.5/router/trie-router/node.ts": "ca5b6a1ce6b6dc01003809bfa9cb93a323b37b27feee14c64655015deff7d2a9", 53 | "https://deno.land/x/hono@v3.1.5/router/trie-router/router.ts": "0a969528a0c1680b552b20f0ca90e484e968ac279be9d5fd952b61a804d680e7", 54 | "https://deno.land/x/hono@v3.1.5/types.ts": "9e6d337bbdbb9ee1293af11b3f1944c94954e2072bb6574cf1eeda9aa911592a", 55 | "https://deno.land/x/hono@v3.1.5/utils/body.ts": "b6b5ed679122968a74845df4c5454c677f09adc4f3466d822f3b1397884e540e", 56 | "https://deno.land/x/hono@v3.1.5/utils/buffer.ts": "d28ab08d2571e890ec2ad7ce4c0318a503094f8403eac3d5eb18a8e5c23b29b2", 57 | "https://deno.land/x/hono@v3.1.5/utils/cookie.ts": "545872bd7af3b455c24fd386ecbccfd161e7d4a0038d6b09b1bb22723602f90a", 58 | "https://deno.land/x/hono@v3.1.5/utils/crypto.ts": "bda0e141bbe46d3a4a20f8fbcb6380d473b617123d9fdfa93e4499410b537acc", 59 | "https://deno.land/x/hono@v3.1.5/utils/encode.ts": "427bb714b2eea3671c4254842cfd52bc6b4d5f8304fc05c94b5e7cd1cb475b5b", 60 | "https://deno.land/x/hono@v3.1.5/utils/filepath.ts": "5f708bb6a2f0b8e83a3333868ac86abdfba15e52b46acb5e13018fa2138f0826", 61 | "https://deno.land/x/hono@v3.1.5/utils/html.ts": "636c4a04eaea1c52c14a37cd28d83cba66b293d1e31420a4475e951268901ae4", 62 | "https://deno.land/x/hono@v3.1.5/utils/http-status.ts": "2d6003e352c1fe918db663fa4bd2b20bf0b9d4e1699ba5e163f317f00b29d938", 63 | "https://deno.land/x/hono@v3.1.5/utils/jwt/index.ts": "5e4b82a42eb3603351dfce726cd781ca41cb57437395409d227131aec348d2d5", 64 | "https://deno.land/x/hono@v3.1.5/utils/jwt/jwt.ts": "e822e0c183cdc77709ccfba7b527f624f695c149425a00602d314165a87ee1bf", 65 | "https://deno.land/x/hono@v3.1.5/utils/jwt/types.ts": "16d7fa878a875eddd0049f0aa0192075058f19d51816a5d484d9b80e4d27abea", 66 | "https://deno.land/x/hono@v3.1.5/utils/mime.ts": "e17bdbac85b97c3d223c48874c2abe867e0720461e9f7e0c340141c080b9c6d6", 67 | "https://deno.land/x/hono@v3.1.5/utils/types.ts": "64fe2bf6526c682024bc5d0cd59d01a32f12bb9b80dca58d1cfc4e70231ef696", 68 | "https://deno.land/x/hono@v3.1.5/utils/url.ts": "e219e5d62acfe82f51cc6196b0a721cf09e04fa00a58bb0e682956ede68b4a79", 69 | "https://deno.land/x/hono@v3.1.5/validator/index.ts": "6c986e8b91dcf857ecc8164a506ae8eea8665792a4ff7215471df669c632ae7c", 70 | "https://deno.land/x/hono@v3.1.5/validator/validator.ts": "e52183ddf8cefc3cfe2788802fe6ce766df8ac904df485107b01cbcca167dbad", 71 | "https://esm.sh/eventsource-parser@1.0.0": "86de195d2412587d077157225494a0786447b480bbfa00c7448776877887f139", 72 | "https://esm.sh/v119/eventsource-parser@1.0.0/deno/eventsource-parser.mjs": "715c2d87fcebd65a53f1fb8bac205fd8f79f1b59f61ad52d0b1a94e04ca0df98", 73 | "https://esm.sh/v119/eventsource-parser@1.0.0/dist/index.d.ts": "14547528fb5596b49e9fd75632baa8871fc2bb56151513723e9dfa6d15ebd0c3" 74 | }, 75 | "npm": { 76 | "specifiers": { 77 | "@cloudflare/workers-types@^4.20230321.0": "@cloudflare/workers-types@4.20230404.0", 78 | "eventsource-parser@1.0.0": "eventsource-parser@1.0.0", 79 | "eventsource-parser@^1.0.0": "eventsource-parser@1.0.0", 80 | "gpt-token-utils": "gpt-token-utils@1.2.0", 81 | "gpt-token-utils@^1.2.0": "gpt-token-utils@1.2.0", 82 | "gpt3-tokenizer@1.1.5": "gpt3-tokenizer@1.1.5", 83 | "gpt3-tokenizer@^1.1.5": "gpt3-tokenizer@1.1.5", 84 | "hono@^3.1.0": "hono@3.1.5", 85 | "typescript@^5.0.3": "typescript@5.0.4", 86 | "vitest@^0.29.8": "vitest@0.29.8_@types+node@18.15.11", 87 | "wrangler@2.16.0": "wrangler@2.16.0_esbuild@0.16.3", 88 | "wrangler@^2.13.0": "wrangler@2.16.0_esbuild@0.16.3" 89 | }, 90 | "packages": { 91 | "@cloudflare/kv-asset-handler@0.2.0": { 92 | "integrity": "sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==", 93 | "dependencies": { 94 | "mime": "mime@3.0.0" 95 | } 96 | }, 97 | "@cloudflare/workers-types@4.20230404.0": { 98 | "integrity": "sha512-fG3oaJX1icfsGV74nhx1+AC6opvZsGqnpx6FvrcVqQaBmCNkjKNqDRFrpasXWFiOIvysBXHKQAzsAJkBZgnM+A==", 99 | "dependencies": {} 100 | }, 101 | "@esbuild-plugins/node-globals-polyfill@0.1.1_esbuild@0.16.3": { 102 | "integrity": "sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==", 103 | "dependencies": { 104 | "esbuild": "esbuild@0.16.3" 105 | } 106 | }, 107 | "@esbuild-plugins/node-modules-polyfill@0.1.4_esbuild@0.16.3": { 108 | "integrity": "sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==", 109 | "dependencies": { 110 | "esbuild": "esbuild@0.16.3", 111 | "escape-string-regexp": "escape-string-regexp@4.0.0", 112 | "rollup-plugin-node-polyfills": "rollup-plugin-node-polyfills@0.2.1" 113 | } 114 | }, 115 | "@esbuild/android-arm64@0.16.3": { 116 | "integrity": "sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==", 117 | "dependencies": {} 118 | }, 119 | "@esbuild/android-arm64@0.17.17": { 120 | "integrity": "sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==", 121 | "dependencies": {} 122 | }, 123 | "@esbuild/android-arm@0.16.3": { 124 | "integrity": "sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==", 125 | "dependencies": {} 126 | }, 127 | "@esbuild/android-arm@0.17.17": { 128 | "integrity": "sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==", 129 | "dependencies": {} 130 | }, 131 | "@esbuild/android-x64@0.16.3": { 132 | "integrity": "sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==", 133 | "dependencies": {} 134 | }, 135 | "@esbuild/android-x64@0.17.17": { 136 | "integrity": "sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==", 137 | "dependencies": {} 138 | }, 139 | "@esbuild/darwin-arm64@0.16.3": { 140 | "integrity": "sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==", 141 | "dependencies": {} 142 | }, 143 | "@esbuild/darwin-arm64@0.17.17": { 144 | "integrity": "sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==", 145 | "dependencies": {} 146 | }, 147 | "@esbuild/darwin-x64@0.16.3": { 148 | "integrity": "sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==", 149 | "dependencies": {} 150 | }, 151 | "@esbuild/darwin-x64@0.17.17": { 152 | "integrity": "sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==", 153 | "dependencies": {} 154 | }, 155 | "@esbuild/freebsd-arm64@0.16.3": { 156 | "integrity": "sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==", 157 | "dependencies": {} 158 | }, 159 | "@esbuild/freebsd-arm64@0.17.17": { 160 | "integrity": "sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==", 161 | "dependencies": {} 162 | }, 163 | "@esbuild/freebsd-x64@0.16.3": { 164 | "integrity": "sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==", 165 | "dependencies": {} 166 | }, 167 | "@esbuild/freebsd-x64@0.17.17": { 168 | "integrity": "sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==", 169 | "dependencies": {} 170 | }, 171 | "@esbuild/linux-arm64@0.16.3": { 172 | "integrity": "sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==", 173 | "dependencies": {} 174 | }, 175 | "@esbuild/linux-arm64@0.17.17": { 176 | "integrity": "sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==", 177 | "dependencies": {} 178 | }, 179 | "@esbuild/linux-arm@0.16.3": { 180 | "integrity": "sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==", 181 | "dependencies": {} 182 | }, 183 | "@esbuild/linux-arm@0.17.17": { 184 | "integrity": "sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==", 185 | "dependencies": {} 186 | }, 187 | "@esbuild/linux-ia32@0.16.3": { 188 | "integrity": "sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==", 189 | "dependencies": {} 190 | }, 191 | "@esbuild/linux-ia32@0.17.17": { 192 | "integrity": "sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==", 193 | "dependencies": {} 194 | }, 195 | "@esbuild/linux-loong64@0.16.3": { 196 | "integrity": "sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==", 197 | "dependencies": {} 198 | }, 199 | "@esbuild/linux-loong64@0.17.17": { 200 | "integrity": "sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==", 201 | "dependencies": {} 202 | }, 203 | "@esbuild/linux-mips64el@0.16.3": { 204 | "integrity": "sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==", 205 | "dependencies": {} 206 | }, 207 | "@esbuild/linux-mips64el@0.17.17": { 208 | "integrity": "sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==", 209 | "dependencies": {} 210 | }, 211 | "@esbuild/linux-ppc64@0.16.3": { 212 | "integrity": "sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==", 213 | "dependencies": {} 214 | }, 215 | "@esbuild/linux-ppc64@0.17.17": { 216 | "integrity": "sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==", 217 | "dependencies": {} 218 | }, 219 | "@esbuild/linux-riscv64@0.16.3": { 220 | "integrity": "sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==", 221 | "dependencies": {} 222 | }, 223 | "@esbuild/linux-riscv64@0.17.17": { 224 | "integrity": "sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==", 225 | "dependencies": {} 226 | }, 227 | "@esbuild/linux-s390x@0.16.3": { 228 | "integrity": "sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==", 229 | "dependencies": {} 230 | }, 231 | "@esbuild/linux-s390x@0.17.17": { 232 | "integrity": "sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==", 233 | "dependencies": {} 234 | }, 235 | "@esbuild/linux-x64@0.16.3": { 236 | "integrity": "sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==", 237 | "dependencies": {} 238 | }, 239 | "@esbuild/linux-x64@0.17.17": { 240 | "integrity": "sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==", 241 | "dependencies": {} 242 | }, 243 | "@esbuild/netbsd-x64@0.16.3": { 244 | "integrity": "sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==", 245 | "dependencies": {} 246 | }, 247 | "@esbuild/netbsd-x64@0.17.17": { 248 | "integrity": "sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==", 249 | "dependencies": {} 250 | }, 251 | "@esbuild/openbsd-x64@0.16.3": { 252 | "integrity": "sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==", 253 | "dependencies": {} 254 | }, 255 | "@esbuild/openbsd-x64@0.17.17": { 256 | "integrity": "sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==", 257 | "dependencies": {} 258 | }, 259 | "@esbuild/sunos-x64@0.16.3": { 260 | "integrity": "sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==", 261 | "dependencies": {} 262 | }, 263 | "@esbuild/sunos-x64@0.17.17": { 264 | "integrity": "sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==", 265 | "dependencies": {} 266 | }, 267 | "@esbuild/win32-arm64@0.16.3": { 268 | "integrity": "sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==", 269 | "dependencies": {} 270 | }, 271 | "@esbuild/win32-arm64@0.17.17": { 272 | "integrity": "sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==", 273 | "dependencies": {} 274 | }, 275 | "@esbuild/win32-ia32@0.16.3": { 276 | "integrity": "sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==", 277 | "dependencies": {} 278 | }, 279 | "@esbuild/win32-ia32@0.17.17": { 280 | "integrity": "sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==", 281 | "dependencies": {} 282 | }, 283 | "@esbuild/win32-x64@0.16.3": { 284 | "integrity": "sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==", 285 | "dependencies": {} 286 | }, 287 | "@esbuild/win32-x64@0.17.17": { 288 | "integrity": "sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==", 289 | "dependencies": {} 290 | }, 291 | "@iarna/toml@2.2.5": { 292 | "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", 293 | "dependencies": {} 294 | }, 295 | "@miniflare/cache@2.13.0": { 296 | "integrity": "sha512-y3SdN3SVyPECWmLAEGkkrv0RB+LugEPs/FeXn8QtN9aE1vyj69clOAgmsDzoh1DpFfFsLKRiv05aWs4m79P8Xw==", 297 | "dependencies": { 298 | "@miniflare/core": "@miniflare/core@2.13.0", 299 | "@miniflare/shared": "@miniflare/shared@2.13.0", 300 | "http-cache-semantics": "http-cache-semantics@4.1.1", 301 | "undici": "undici@5.20.0" 302 | } 303 | }, 304 | "@miniflare/cli-parser@2.13.0": { 305 | "integrity": "sha512-Nx1PIfuMZ3mK9Dg/JojWZAjHR16h1pcdCFSqYln/ME7y5ifx+P1E5UkShWUQ1cBlibNaltjbJ2n/7stSAsIGPQ==", 306 | "dependencies": { 307 | "@miniflare/shared": "@miniflare/shared@2.13.0", 308 | "kleur": "kleur@4.1.5" 309 | } 310 | }, 311 | "@miniflare/core@2.13.0": { 312 | "integrity": "sha512-YJ/C0J3k+7xn4gvlMpvePnM3xC8nOnkweW96cc0IA8kJ1JSmScOO2tZ7rrU1RyDgp6StkAtQBw4yC0wYeFycBw==", 313 | "dependencies": { 314 | "@iarna/toml": "@iarna/toml@2.2.5", 315 | "@miniflare/queues": "@miniflare/queues@2.13.0", 316 | "@miniflare/shared": "@miniflare/shared@2.13.0", 317 | "@miniflare/watcher": "@miniflare/watcher@2.13.0", 318 | "busboy": "busboy@1.6.0", 319 | "dotenv": "dotenv@10.0.0", 320 | "kleur": "kleur@4.1.5", 321 | "set-cookie-parser": "set-cookie-parser@2.6.0", 322 | "undici": "undici@5.20.0", 323 | "urlpattern-polyfill": "urlpattern-polyfill@4.0.3" 324 | } 325 | }, 326 | "@miniflare/d1@2.13.0": { 327 | "integrity": "sha512-OslqjO8iTcvzyrC0spByftMboRmHJEyHyTHnlKkjWDGdQQztEOjso2Xj+3I4SZIeUYvbzDRhKLS2QXI9a8LS5A==", 328 | "dependencies": { 329 | "@miniflare/core": "@miniflare/core@2.13.0", 330 | "@miniflare/shared": "@miniflare/shared@2.13.0" 331 | } 332 | }, 333 | "@miniflare/durable-objects@2.13.0": { 334 | "integrity": "sha512-CRGVBPO9vY4Fc3aV+pdPRVVeYIt64vQqvw+BJbyW+TQtqVP2CGQeziJGnCfcONNNKyooZxGyUkHewUypyH+Qhg==", 335 | "dependencies": { 336 | "@miniflare/core": "@miniflare/core@2.13.0", 337 | "@miniflare/shared": "@miniflare/shared@2.13.0", 338 | "@miniflare/storage-memory": "@miniflare/storage-memory@2.13.0", 339 | "undici": "undici@5.20.0" 340 | } 341 | }, 342 | "@miniflare/html-rewriter@2.13.0": { 343 | "integrity": "sha512-XhN7Icyzvtvu+o/A0hrnSiSmla78seCaNwQ9M1TDHxt352I/ahPX4wtPXs6GbKqY0/i+V6yoG2KGFRQ/j59cQQ==", 344 | "dependencies": { 345 | "@miniflare/core": "@miniflare/core@2.13.0", 346 | "@miniflare/shared": "@miniflare/shared@2.13.0", 347 | "html-rewriter-wasm": "html-rewriter-wasm@0.4.1", 348 | "undici": "undici@5.20.0" 349 | } 350 | }, 351 | "@miniflare/http-server@2.13.0": { 352 | "integrity": "sha512-aMS/nUMTKP15hKnyZboeuWCiqmNrrCu+XRBY/TxDDl07iXcLpiHGf3oVv+yXxXkWlJHJVCbK7i/nXSNPllRMSw==", 353 | "dependencies": { 354 | "@miniflare/core": "@miniflare/core@2.13.0", 355 | "@miniflare/shared": "@miniflare/shared@2.13.0", 356 | "@miniflare/web-sockets": "@miniflare/web-sockets@2.13.0", 357 | "kleur": "kleur@4.1.5", 358 | "selfsigned": "selfsigned@2.1.1", 359 | "undici": "undici@5.20.0", 360 | "ws": "ws@8.13.0", 361 | "youch": "youch@2.2.2" 362 | } 363 | }, 364 | "@miniflare/kv@2.13.0": { 365 | "integrity": "sha512-J0AS5x3g/YVOmHMxMAZs07nRXRvSo9jyuC0eikTBf+4AABvBIyvVYmdTjYNjCmr8O5smcfWBX5S27HelD3aAAQ==", 366 | "dependencies": { 367 | "@miniflare/shared": "@miniflare/shared@2.13.0" 368 | } 369 | }, 370 | "@miniflare/queues@2.13.0": { 371 | "integrity": "sha512-Gf/a6M1mJL03iOvNqh3JNahcBfvEMPHnO28n0gkCoyYWGvddIr9lwCdFIa0qwNJsC1fIDRxhPg8PZ5cQLBMwRA==", 372 | "dependencies": { 373 | "@miniflare/shared": "@miniflare/shared@2.13.0" 374 | } 375 | }, 376 | "@miniflare/r2@2.13.0": { 377 | "integrity": "sha512-/5k6GHOYMNV/oBtilV9HDXBkJUrx8oXVigG5vxbnzEGRXyVRmR+Glzu7mFT8JiE94XiEbXHk9Qvu1S5Dej3wBw==", 378 | "dependencies": { 379 | "@miniflare/shared": "@miniflare/shared@2.13.0", 380 | "undici": "undici@5.20.0" 381 | } 382 | }, 383 | "@miniflare/runner-vm@2.13.0": { 384 | "integrity": "sha512-VmKtF2cA8HmTuLXor1THWY0v+DmaobPct63iLcgWIaUdP3MIvL+9X8HDXFAviCR7bCTe6MKxckHkaOj0IE0aJQ==", 385 | "dependencies": { 386 | "@miniflare/shared": "@miniflare/shared@2.13.0" 387 | } 388 | }, 389 | "@miniflare/scheduler@2.13.0": { 390 | "integrity": "sha512-AOaQanoR4NjVEzVGWHnrL15A7aMx+d9AKLJhSDF7KaP+4NrT2Wo2BQuXCpn5oStx3itOdlQpMfqQ139e/I8WhQ==", 391 | "dependencies": { 392 | "@miniflare/core": "@miniflare/core@2.13.0", 393 | "@miniflare/shared": "@miniflare/shared@2.13.0", 394 | "cron-schedule": "cron-schedule@3.0.6" 395 | } 396 | }, 397 | "@miniflare/shared@2.13.0": { 398 | "integrity": "sha512-m8YFQzKmbjberrV9hPzNcQjNCXxjTjXUpuNrIGjAJO7g+BDztUHaZbdd26H9maBDlkeiWxA3hf0mDyCT/6MCMA==", 399 | "dependencies": { 400 | "@types/better-sqlite3": "@types/better-sqlite3@7.6.4", 401 | "kleur": "kleur@4.1.5", 402 | "npx-import": "npx-import@1.1.4", 403 | "picomatch": "picomatch@2.3.1" 404 | } 405 | }, 406 | "@miniflare/sites@2.13.0": { 407 | "integrity": "sha512-/tuzIu00o6CF2tkSv01q02MgEShXBSKx85h9jwWvc+6u7prGacAOer0FA1YNRFbE+t9QIfutAkoPGMA9zYf8+Q==", 408 | "dependencies": { 409 | "@miniflare/kv": "@miniflare/kv@2.13.0", 410 | "@miniflare/shared": "@miniflare/shared@2.13.0", 411 | "@miniflare/storage-file": "@miniflare/storage-file@2.13.0" 412 | } 413 | }, 414 | "@miniflare/storage-file@2.13.0": { 415 | "integrity": "sha512-LuAeAAY5046rq5U1eFLVkz+ppiFEWytWacpkQw92DvVKFFquZcXSj6WPxZF4rSs23WDk+rdcwuLekbb52aDR7A==", 416 | "dependencies": { 417 | "@miniflare/shared": "@miniflare/shared@2.13.0", 418 | "@miniflare/storage-memory": "@miniflare/storage-memory@2.13.0" 419 | } 420 | }, 421 | "@miniflare/storage-memory@2.13.0": { 422 | "integrity": "sha512-FnkYcBNXa/ym1ksNilNZycg9WYYKo6cWKplVBeSthRon3e8QY6t3n7/XRseBUo7O6mhDybVTy4wNCP1R2nBiEw==", 423 | "dependencies": { 424 | "@miniflare/shared": "@miniflare/shared@2.13.0" 425 | } 426 | }, 427 | "@miniflare/watcher@2.13.0": { 428 | "integrity": "sha512-teAacWcpMStoBLbLae95IUaL5lPzjPlXa9lhK9CbRaio/KRMibTMRGWrYos3IVGQRZvklvLwcms/nTvgcdb6yw==", 429 | "dependencies": { 430 | "@miniflare/shared": "@miniflare/shared@2.13.0" 431 | } 432 | }, 433 | "@miniflare/web-sockets@2.13.0": { 434 | "integrity": "sha512-+U2/HCf+BetRIgjAnNQjkuN6UeAjQmXifhQC+7CCaX834XJhrKXoR6z2xr2xkg1qj0qQs4D2jWG0KzrO5OUpug==", 435 | "dependencies": { 436 | "@miniflare/core": "@miniflare/core@2.13.0", 437 | "@miniflare/shared": "@miniflare/shared@2.13.0", 438 | "undici": "undici@5.20.0", 439 | "ws": "ws@8.13.0" 440 | } 441 | }, 442 | "@types/better-sqlite3@7.6.4": { 443 | "integrity": "sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg==", 444 | "dependencies": { 445 | "@types/node": "@types/node@18.15.11" 446 | } 447 | }, 448 | "@types/chai-subset@1.3.3": { 449 | "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", 450 | "dependencies": { 451 | "@types/chai": "@types/chai@4.3.4" 452 | } 453 | }, 454 | "@types/chai@4.3.4": { 455 | "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", 456 | "dependencies": {} 457 | }, 458 | "@types/node@18.15.11": { 459 | "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", 460 | "dependencies": {} 461 | }, 462 | "@types/stack-trace@0.0.29": { 463 | "integrity": "sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==", 464 | "dependencies": {} 465 | }, 466 | "@vitest/expect@0.29.8": { 467 | "integrity": "sha512-xlcVXn5I5oTq6NiZSY3ykyWixBxr5mG8HYtjvpgg6KaqHm0mvhX18xuwl5YGxIRNt/A5jidd7CWcNHrSvgaQqQ==", 468 | "dependencies": { 469 | "@vitest/spy": "@vitest/spy@0.29.8", 470 | "@vitest/utils": "@vitest/utils@0.29.8", 471 | "chai": "chai@4.3.7" 472 | } 473 | }, 474 | "@vitest/runner@0.29.8": { 475 | "integrity": "sha512-FzdhnRDwEr/A3Oo1jtIk/B952BBvP32n1ObMEb23oEJNO+qO5cBet6M2XWIDQmA7BDKGKvmhUf2naXyp/2JEwQ==", 476 | "dependencies": { 477 | "@vitest/utils": "@vitest/utils@0.29.8", 478 | "p-limit": "p-limit@4.0.0", 479 | "pathe": "pathe@1.1.0" 480 | } 481 | }, 482 | "@vitest/spy@0.29.8": { 483 | "integrity": "sha512-VdjBe9w34vOMl5I5mYEzNX8inTxrZ+tYUVk9jxaZJmHFwmDFC/GV3KBFTA/JKswr3XHvZL+FE/yq5EVhb6pSAw==", 484 | "dependencies": { 485 | "tinyspy": "tinyspy@1.1.1" 486 | } 487 | }, 488 | "@vitest/utils@0.29.8": { 489 | "integrity": "sha512-qGzuf3vrTbnoY+RjjVVIBYfuWMjn3UMUqyQtdGNZ6ZIIyte7B37exj6LaVkrZiUTvzSadVvO/tJm8AEgbGCBPg==", 490 | "dependencies": { 491 | "cli-truncate": "cli-truncate@3.1.0", 492 | "diff": "diff@5.1.0", 493 | "loupe": "loupe@2.3.6", 494 | "pretty-format": "pretty-format@27.5.1" 495 | } 496 | }, 497 | "acorn-walk@8.2.0": { 498 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 499 | "dependencies": {} 500 | }, 501 | "acorn@8.8.2": { 502 | "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", 503 | "dependencies": {} 504 | }, 505 | "ansi-regex@5.0.1": { 506 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 507 | "dependencies": {} 508 | }, 509 | "ansi-regex@6.0.1": { 510 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 511 | "dependencies": {} 512 | }, 513 | "ansi-styles@5.2.0": { 514 | "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", 515 | "dependencies": {} 516 | }, 517 | "ansi-styles@6.2.1": { 518 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 519 | "dependencies": {} 520 | }, 521 | "anymatch@3.1.3": { 522 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 523 | "dependencies": { 524 | "normalize-path": "normalize-path@3.0.0", 525 | "picomatch": "picomatch@2.3.1" 526 | } 527 | }, 528 | "array-keyed-map@2.1.3": { 529 | "integrity": "sha512-JIUwuFakO+jHjxyp4YgSiKXSZeC0U+R1jR94bXWBcVlFRBycqXlb+kH9JHxBGcxnVuSqx5bnn0Qz9xtSeKOjiA==", 530 | "dependencies": {} 531 | }, 532 | "assertion-error@1.1.0": { 533 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 534 | "dependencies": {} 535 | }, 536 | "binary-extensions@2.2.0": { 537 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 538 | "dependencies": {} 539 | }, 540 | "blake3-wasm@2.1.5": { 541 | "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==", 542 | "dependencies": {} 543 | }, 544 | "braces@3.0.2": { 545 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 546 | "dependencies": { 547 | "fill-range": "fill-range@7.0.1" 548 | } 549 | }, 550 | "buffer-from@1.1.2": { 551 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 552 | "dependencies": {} 553 | }, 554 | "builtins@5.0.1": { 555 | "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", 556 | "dependencies": { 557 | "semver": "semver@7.5.0" 558 | } 559 | }, 560 | "busboy@1.6.0": { 561 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 562 | "dependencies": { 563 | "streamsearch": "streamsearch@1.1.0" 564 | } 565 | }, 566 | "cac@6.7.14": { 567 | "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", 568 | "dependencies": {} 569 | }, 570 | "chai@4.3.7": { 571 | "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", 572 | "dependencies": { 573 | "assertion-error": "assertion-error@1.1.0", 574 | "check-error": "check-error@1.0.2", 575 | "deep-eql": "deep-eql@4.1.3", 576 | "get-func-name": "get-func-name@2.0.0", 577 | "loupe": "loupe@2.3.6", 578 | "pathval": "pathval@1.1.1", 579 | "type-detect": "type-detect@4.0.8" 580 | } 581 | }, 582 | "check-error@1.0.2": { 583 | "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", 584 | "dependencies": {} 585 | }, 586 | "chokidar@3.5.3": { 587 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 588 | "dependencies": { 589 | "anymatch": "anymatch@3.1.3", 590 | "braces": "braces@3.0.2", 591 | "fsevents": "fsevents@2.3.2", 592 | "glob-parent": "glob-parent@5.1.2", 593 | "is-binary-path": "is-binary-path@2.1.0", 594 | "is-glob": "is-glob@4.0.3", 595 | "normalize-path": "normalize-path@3.0.0", 596 | "readdirp": "readdirp@3.6.0" 597 | } 598 | }, 599 | "cli-truncate@3.1.0": { 600 | "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", 601 | "dependencies": { 602 | "slice-ansi": "slice-ansi@5.0.0", 603 | "string-width": "string-width@5.1.2" 604 | } 605 | }, 606 | "cookie@0.4.2": { 607 | "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", 608 | "dependencies": {} 609 | }, 610 | "cron-schedule@3.0.6": { 611 | "integrity": "sha512-izfGgKyzzIyLaeb1EtZ3KbglkS6AKp9cv7LxmiyoOu+fXfol1tQDC0Cof0enVZGNtudTHW+3lfuW9ZkLQss4Wg==", 612 | "dependencies": {} 613 | }, 614 | "cross-spawn@7.0.3": { 615 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 616 | "dependencies": { 617 | "path-key": "path-key@3.1.1", 618 | "shebang-command": "shebang-command@2.0.0", 619 | "which": "which@2.0.2" 620 | } 621 | }, 622 | "debug@4.3.4": { 623 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 624 | "dependencies": { 625 | "ms": "ms@2.1.2" 626 | } 627 | }, 628 | "deep-eql@4.1.3": { 629 | "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", 630 | "dependencies": { 631 | "type-detect": "type-detect@4.0.8" 632 | } 633 | }, 634 | "diff@5.1.0": { 635 | "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", 636 | "dependencies": {} 637 | }, 638 | "dotenv@10.0.0": { 639 | "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", 640 | "dependencies": {} 641 | }, 642 | "eastasianwidth@0.2.0": { 643 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 644 | "dependencies": {} 645 | }, 646 | "emoji-regex@9.2.2": { 647 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 648 | "dependencies": {} 649 | }, 650 | "esbuild@0.16.3": { 651 | "integrity": "sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg==", 652 | "dependencies": { 653 | "@esbuild/android-arm": "@esbuild/android-arm@0.16.3", 654 | "@esbuild/android-arm64": "@esbuild/android-arm64@0.16.3", 655 | "@esbuild/android-x64": "@esbuild/android-x64@0.16.3", 656 | "@esbuild/darwin-arm64": "@esbuild/darwin-arm64@0.16.3", 657 | "@esbuild/darwin-x64": "@esbuild/darwin-x64@0.16.3", 658 | "@esbuild/freebsd-arm64": "@esbuild/freebsd-arm64@0.16.3", 659 | "@esbuild/freebsd-x64": "@esbuild/freebsd-x64@0.16.3", 660 | "@esbuild/linux-arm": "@esbuild/linux-arm@0.16.3", 661 | "@esbuild/linux-arm64": "@esbuild/linux-arm64@0.16.3", 662 | "@esbuild/linux-ia32": "@esbuild/linux-ia32@0.16.3", 663 | "@esbuild/linux-loong64": "@esbuild/linux-loong64@0.16.3", 664 | "@esbuild/linux-mips64el": "@esbuild/linux-mips64el@0.16.3", 665 | "@esbuild/linux-ppc64": "@esbuild/linux-ppc64@0.16.3", 666 | "@esbuild/linux-riscv64": "@esbuild/linux-riscv64@0.16.3", 667 | "@esbuild/linux-s390x": "@esbuild/linux-s390x@0.16.3", 668 | "@esbuild/linux-x64": "@esbuild/linux-x64@0.16.3", 669 | "@esbuild/netbsd-x64": "@esbuild/netbsd-x64@0.16.3", 670 | "@esbuild/openbsd-x64": "@esbuild/openbsd-x64@0.16.3", 671 | "@esbuild/sunos-x64": "@esbuild/sunos-x64@0.16.3", 672 | "@esbuild/win32-arm64": "@esbuild/win32-arm64@0.16.3", 673 | "@esbuild/win32-ia32": "@esbuild/win32-ia32@0.16.3", 674 | "@esbuild/win32-x64": "@esbuild/win32-x64@0.16.3" 675 | } 676 | }, 677 | "esbuild@0.17.17": { 678 | "integrity": "sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==", 679 | "dependencies": { 680 | "@esbuild/android-arm": "@esbuild/android-arm@0.17.17", 681 | "@esbuild/android-arm64": "@esbuild/android-arm64@0.17.17", 682 | "@esbuild/android-x64": "@esbuild/android-x64@0.17.17", 683 | "@esbuild/darwin-arm64": "@esbuild/darwin-arm64@0.17.17", 684 | "@esbuild/darwin-x64": "@esbuild/darwin-x64@0.17.17", 685 | "@esbuild/freebsd-arm64": "@esbuild/freebsd-arm64@0.17.17", 686 | "@esbuild/freebsd-x64": "@esbuild/freebsd-x64@0.17.17", 687 | "@esbuild/linux-arm": "@esbuild/linux-arm@0.17.17", 688 | "@esbuild/linux-arm64": "@esbuild/linux-arm64@0.17.17", 689 | "@esbuild/linux-ia32": "@esbuild/linux-ia32@0.17.17", 690 | "@esbuild/linux-loong64": "@esbuild/linux-loong64@0.17.17", 691 | "@esbuild/linux-mips64el": "@esbuild/linux-mips64el@0.17.17", 692 | "@esbuild/linux-ppc64": "@esbuild/linux-ppc64@0.17.17", 693 | "@esbuild/linux-riscv64": "@esbuild/linux-riscv64@0.17.17", 694 | "@esbuild/linux-s390x": "@esbuild/linux-s390x@0.17.17", 695 | "@esbuild/linux-x64": "@esbuild/linux-x64@0.17.17", 696 | "@esbuild/netbsd-x64": "@esbuild/netbsd-x64@0.17.17", 697 | "@esbuild/openbsd-x64": "@esbuild/openbsd-x64@0.17.17", 698 | "@esbuild/sunos-x64": "@esbuild/sunos-x64@0.17.17", 699 | "@esbuild/win32-arm64": "@esbuild/win32-arm64@0.17.17", 700 | "@esbuild/win32-ia32": "@esbuild/win32-ia32@0.17.17", 701 | "@esbuild/win32-x64": "@esbuild/win32-x64@0.17.17" 702 | } 703 | }, 704 | "escape-string-regexp@4.0.0": { 705 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 706 | "dependencies": {} 707 | }, 708 | "estree-walker@0.6.1": { 709 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 710 | "dependencies": {} 711 | }, 712 | "eventsource-parser@1.0.0": { 713 | "integrity": "sha512-9jgfSCa3dmEme2ES3mPByGXfgZ87VbP97tng1G2nWwWx6bV2nYxm2AWCrbQjXToSe+yYlqaZNtxffR9IeQr95g==", 714 | "dependencies": {} 715 | }, 716 | "execa@6.1.0": { 717 | "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", 718 | "dependencies": { 719 | "cross-spawn": "cross-spawn@7.0.3", 720 | "get-stream": "get-stream@6.0.1", 721 | "human-signals": "human-signals@3.0.1", 722 | "is-stream": "is-stream@3.0.0", 723 | "merge-stream": "merge-stream@2.0.0", 724 | "npm-run-path": "npm-run-path@5.1.0", 725 | "onetime": "onetime@6.0.0", 726 | "signal-exit": "signal-exit@3.0.7", 727 | "strip-final-newline": "strip-final-newline@3.0.0" 728 | } 729 | }, 730 | "fill-range@7.0.1": { 731 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 732 | "dependencies": { 733 | "to-regex-range": "to-regex-range@5.0.1" 734 | } 735 | }, 736 | "fsevents@2.3.2": { 737 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 738 | "dependencies": {} 739 | }, 740 | "function-bind@1.1.1": { 741 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 742 | "dependencies": {} 743 | }, 744 | "get-func-name@2.0.0": { 745 | "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", 746 | "dependencies": {} 747 | }, 748 | "get-stream@6.0.1": { 749 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 750 | "dependencies": {} 751 | }, 752 | "glob-parent@5.1.2": { 753 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 754 | "dependencies": { 755 | "is-glob": "is-glob@4.0.3" 756 | } 757 | }, 758 | "gpt-token-utils@1.2.0": { 759 | "integrity": "sha512-s8twaU38UE2Vp65JhQEjz8qvWhWY8KZYvmvYHapxlPT03Ok35Clq+gm9eE27wQILdFisseMVRSiC5lJR9GBklA==", 760 | "dependencies": {} 761 | }, 762 | "gpt3-tokenizer@1.1.5": { 763 | "integrity": "sha512-O9iCL8MqGR0Oe9wTh0YftzIbysypNQmS5a5JG3cB3M4LMYjlAVvNnf8LUzVY9MrI7tj+YLY356uHtO2lLX2HpA==", 764 | "dependencies": { 765 | "array-keyed-map": "array-keyed-map@2.1.3" 766 | } 767 | }, 768 | "has@1.0.3": { 769 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 770 | "dependencies": { 771 | "function-bind": "function-bind@1.1.1" 772 | } 773 | }, 774 | "hono@3.1.5": { 775 | "integrity": "sha512-ypFLhNYoXXtep4I9zJt3VpB5/Ze3p9BLU4dpnAp7fxHOmSg8lu/Wwjs5sTJnb2GwVdfjbt9KFB9alA4Zt/P0jw==", 776 | "dependencies": {} 777 | }, 778 | "html-rewriter-wasm@0.4.1": { 779 | "integrity": "sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q==", 780 | "dependencies": {} 781 | }, 782 | "http-cache-semantics@4.1.1": { 783 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", 784 | "dependencies": {} 785 | }, 786 | "human-signals@3.0.1": { 787 | "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", 788 | "dependencies": {} 789 | }, 790 | "is-binary-path@2.1.0": { 791 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 792 | "dependencies": { 793 | "binary-extensions": "binary-extensions@2.2.0" 794 | } 795 | }, 796 | "is-core-module@2.12.0": { 797 | "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", 798 | "dependencies": { 799 | "has": "has@1.0.3" 800 | } 801 | }, 802 | "is-extglob@2.1.1": { 803 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 804 | "dependencies": {} 805 | }, 806 | "is-fullwidth-code-point@4.0.0": { 807 | "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", 808 | "dependencies": {} 809 | }, 810 | "is-glob@4.0.3": { 811 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 812 | "dependencies": { 813 | "is-extglob": "is-extglob@2.1.1" 814 | } 815 | }, 816 | "is-number@7.0.0": { 817 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 818 | "dependencies": {} 819 | }, 820 | "is-stream@3.0.0": { 821 | "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", 822 | "dependencies": {} 823 | }, 824 | "isexe@2.0.0": { 825 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 826 | "dependencies": {} 827 | }, 828 | "jsonc-parser@3.2.0": { 829 | "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", 830 | "dependencies": {} 831 | }, 832 | "kleur@4.1.5": { 833 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 834 | "dependencies": {} 835 | }, 836 | "local-pkg@0.4.3": { 837 | "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", 838 | "dependencies": {} 839 | }, 840 | "loupe@2.3.6": { 841 | "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", 842 | "dependencies": { 843 | "get-func-name": "get-func-name@2.0.0" 844 | } 845 | }, 846 | "lru-cache@6.0.0": { 847 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 848 | "dependencies": { 849 | "yallist": "yallist@4.0.0" 850 | } 851 | }, 852 | "magic-string@0.25.9": { 853 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 854 | "dependencies": { 855 | "sourcemap-codec": "sourcemap-codec@1.4.8" 856 | } 857 | }, 858 | "merge-stream@2.0.0": { 859 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 860 | "dependencies": {} 861 | }, 862 | "mime@3.0.0": { 863 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 864 | "dependencies": {} 865 | }, 866 | "mimic-fn@4.0.0": { 867 | "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", 868 | "dependencies": {} 869 | }, 870 | "miniflare@2.13.0": { 871 | "integrity": "sha512-ayNhVa4a6bZiOuHtrPmOt4BCYcmW1fBQ/+qGL85smq1m2OBBm3aUs6f4ISf38xH8tk+qewgmAywetyVtn6KHPw==", 872 | "dependencies": { 873 | "@miniflare/cache": "@miniflare/cache@2.13.0", 874 | "@miniflare/cli-parser": "@miniflare/cli-parser@2.13.0", 875 | "@miniflare/core": "@miniflare/core@2.13.0", 876 | "@miniflare/d1": "@miniflare/d1@2.13.0", 877 | "@miniflare/durable-objects": "@miniflare/durable-objects@2.13.0", 878 | "@miniflare/html-rewriter": "@miniflare/html-rewriter@2.13.0", 879 | "@miniflare/http-server": "@miniflare/http-server@2.13.0", 880 | "@miniflare/kv": "@miniflare/kv@2.13.0", 881 | "@miniflare/queues": "@miniflare/queues@2.13.0", 882 | "@miniflare/r2": "@miniflare/r2@2.13.0", 883 | "@miniflare/runner-vm": "@miniflare/runner-vm@2.13.0", 884 | "@miniflare/scheduler": "@miniflare/scheduler@2.13.0", 885 | "@miniflare/shared": "@miniflare/shared@2.13.0", 886 | "@miniflare/sites": "@miniflare/sites@2.13.0", 887 | "@miniflare/storage-file": "@miniflare/storage-file@2.13.0", 888 | "@miniflare/storage-memory": "@miniflare/storage-memory@2.13.0", 889 | "@miniflare/web-sockets": "@miniflare/web-sockets@2.13.0", 890 | "kleur": "kleur@4.1.5", 891 | "semiver": "semiver@1.1.0", 892 | "source-map-support": "source-map-support@0.5.21", 893 | "undici": "undici@5.20.0" 894 | } 895 | }, 896 | "mlly@1.2.0": { 897 | "integrity": "sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==", 898 | "dependencies": { 899 | "acorn": "acorn@8.8.2", 900 | "pathe": "pathe@1.1.0", 901 | "pkg-types": "pkg-types@1.0.2", 902 | "ufo": "ufo@1.1.1" 903 | } 904 | }, 905 | "ms@2.1.2": { 906 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 907 | "dependencies": {} 908 | }, 909 | "mustache@4.2.0": { 910 | "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", 911 | "dependencies": {} 912 | }, 913 | "nanoid@3.3.6": { 914 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 915 | "dependencies": {} 916 | }, 917 | "node-forge@1.3.1": { 918 | "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", 919 | "dependencies": {} 920 | }, 921 | "normalize-path@3.0.0": { 922 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 923 | "dependencies": {} 924 | }, 925 | "npm-run-path@5.1.0": { 926 | "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", 927 | "dependencies": { 928 | "path-key": "path-key@4.0.0" 929 | } 930 | }, 931 | "npx-import@1.1.4": { 932 | "integrity": "sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==", 933 | "dependencies": { 934 | "execa": "execa@6.1.0", 935 | "parse-package-name": "parse-package-name@1.0.0", 936 | "semver": "semver@7.5.0", 937 | "validate-npm-package-name": "validate-npm-package-name@4.0.0" 938 | } 939 | }, 940 | "onetime@6.0.0": { 941 | "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", 942 | "dependencies": { 943 | "mimic-fn": "mimic-fn@4.0.0" 944 | } 945 | }, 946 | "p-limit@4.0.0": { 947 | "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", 948 | "dependencies": { 949 | "yocto-queue": "yocto-queue@1.0.0" 950 | } 951 | }, 952 | "parse-package-name@1.0.0": { 953 | "integrity": "sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==", 954 | "dependencies": {} 955 | }, 956 | "path-key@3.1.1": { 957 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 958 | "dependencies": {} 959 | }, 960 | "path-key@4.0.0": { 961 | "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", 962 | "dependencies": {} 963 | }, 964 | "path-parse@1.0.7": { 965 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 966 | "dependencies": {} 967 | }, 968 | "path-to-regexp@6.2.1": { 969 | "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", 970 | "dependencies": {} 971 | }, 972 | "pathe@1.1.0": { 973 | "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", 974 | "dependencies": {} 975 | }, 976 | "pathval@1.1.1": { 977 | "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", 978 | "dependencies": {} 979 | }, 980 | "picocolors@1.0.0": { 981 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 982 | "dependencies": {} 983 | }, 984 | "picomatch@2.3.1": { 985 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 986 | "dependencies": {} 987 | }, 988 | "pkg-types@1.0.2": { 989 | "integrity": "sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==", 990 | "dependencies": { 991 | "jsonc-parser": "jsonc-parser@3.2.0", 992 | "mlly": "mlly@1.2.0", 993 | "pathe": "pathe@1.1.0" 994 | } 995 | }, 996 | "postcss@8.4.22": { 997 | "integrity": "sha512-XseknLAfRHzVWjCEtdviapiBtfLdgyzExD50Rg2ePaucEesyh8Wv4VPdW0nbyDa1ydbrAxV19jvMT4+LFmcNUA==", 998 | "dependencies": { 999 | "nanoid": "nanoid@3.3.6", 1000 | "picocolors": "picocolors@1.0.0", 1001 | "source-map-js": "source-map-js@1.0.2" 1002 | } 1003 | }, 1004 | "pretty-format@27.5.1": { 1005 | "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", 1006 | "dependencies": { 1007 | "ansi-regex": "ansi-regex@5.0.1", 1008 | "ansi-styles": "ansi-styles@5.2.0", 1009 | "react-is": "react-is@17.0.2" 1010 | } 1011 | }, 1012 | "react-is@17.0.2": { 1013 | "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", 1014 | "dependencies": {} 1015 | }, 1016 | "readdirp@3.6.0": { 1017 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1018 | "dependencies": { 1019 | "picomatch": "picomatch@2.3.1" 1020 | } 1021 | }, 1022 | "resolve@1.22.3": { 1023 | "integrity": "sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==", 1024 | "dependencies": { 1025 | "is-core-module": "is-core-module@2.12.0", 1026 | "path-parse": "path-parse@1.0.7", 1027 | "supports-preserve-symlinks-flag": "supports-preserve-symlinks-flag@1.0.0" 1028 | } 1029 | }, 1030 | "rollup-plugin-inject@3.0.2": { 1031 | "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==", 1032 | "dependencies": { 1033 | "estree-walker": "estree-walker@0.6.1", 1034 | "magic-string": "magic-string@0.25.9", 1035 | "rollup-pluginutils": "rollup-pluginutils@2.8.2" 1036 | } 1037 | }, 1038 | "rollup-plugin-node-polyfills@0.2.1": { 1039 | "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==", 1040 | "dependencies": { 1041 | "rollup-plugin-inject": "rollup-plugin-inject@3.0.2" 1042 | } 1043 | }, 1044 | "rollup-pluginutils@2.8.2": { 1045 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 1046 | "dependencies": { 1047 | "estree-walker": "estree-walker@0.6.1" 1048 | } 1049 | }, 1050 | "rollup@3.20.6": { 1051 | "integrity": "sha512-2yEB3nQXp/tBQDN0hJScJQheXdvU2wFhh6ld7K/aiZ1vYcak6N/BKjY1QrU6BvO2JWYS8bEs14FRaxXosxy2zw==", 1052 | "dependencies": { 1053 | "fsevents": "fsevents@2.3.2" 1054 | } 1055 | }, 1056 | "selfsigned@2.1.1": { 1057 | "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", 1058 | "dependencies": { 1059 | "node-forge": "node-forge@1.3.1" 1060 | } 1061 | }, 1062 | "semiver@1.1.0": { 1063 | "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==", 1064 | "dependencies": {} 1065 | }, 1066 | "semver@7.5.0": { 1067 | "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", 1068 | "dependencies": { 1069 | "lru-cache": "lru-cache@6.0.0" 1070 | } 1071 | }, 1072 | "set-cookie-parser@2.6.0": { 1073 | "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", 1074 | "dependencies": {} 1075 | }, 1076 | "shebang-command@2.0.0": { 1077 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1078 | "dependencies": { 1079 | "shebang-regex": "shebang-regex@3.0.0" 1080 | } 1081 | }, 1082 | "shebang-regex@3.0.0": { 1083 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1084 | "dependencies": {} 1085 | }, 1086 | "siginfo@2.0.0": { 1087 | "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", 1088 | "dependencies": {} 1089 | }, 1090 | "signal-exit@3.0.7": { 1091 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 1092 | "dependencies": {} 1093 | }, 1094 | "slice-ansi@5.0.0": { 1095 | "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", 1096 | "dependencies": { 1097 | "ansi-styles": "ansi-styles@6.2.1", 1098 | "is-fullwidth-code-point": "is-fullwidth-code-point@4.0.0" 1099 | } 1100 | }, 1101 | "source-map-js@1.0.2": { 1102 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1103 | "dependencies": {} 1104 | }, 1105 | "source-map-support@0.5.21": { 1106 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 1107 | "dependencies": { 1108 | "buffer-from": "buffer-from@1.1.2", 1109 | "source-map": "source-map@0.6.1" 1110 | } 1111 | }, 1112 | "source-map@0.6.1": { 1113 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1114 | "dependencies": {} 1115 | }, 1116 | "source-map@0.7.4": { 1117 | "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", 1118 | "dependencies": {} 1119 | }, 1120 | "sourcemap-codec@1.4.8": { 1121 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 1122 | "dependencies": {} 1123 | }, 1124 | "stack-trace@0.0.10": { 1125 | "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", 1126 | "dependencies": {} 1127 | }, 1128 | "stackback@0.0.2": { 1129 | "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", 1130 | "dependencies": {} 1131 | }, 1132 | "std-env@3.3.2": { 1133 | "integrity": "sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==", 1134 | "dependencies": {} 1135 | }, 1136 | "streamsearch@1.1.0": { 1137 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 1138 | "dependencies": {} 1139 | }, 1140 | "string-width@5.1.2": { 1141 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 1142 | "dependencies": { 1143 | "eastasianwidth": "eastasianwidth@0.2.0", 1144 | "emoji-regex": "emoji-regex@9.2.2", 1145 | "strip-ansi": "strip-ansi@7.0.1" 1146 | } 1147 | }, 1148 | "strip-ansi@7.0.1": { 1149 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 1150 | "dependencies": { 1151 | "ansi-regex": "ansi-regex@6.0.1" 1152 | } 1153 | }, 1154 | "strip-final-newline@3.0.0": { 1155 | "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", 1156 | "dependencies": {} 1157 | }, 1158 | "strip-literal@1.0.1": { 1159 | "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", 1160 | "dependencies": { 1161 | "acorn": "acorn@8.8.2" 1162 | } 1163 | }, 1164 | "supports-preserve-symlinks-flag@1.0.0": { 1165 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1166 | "dependencies": {} 1167 | }, 1168 | "tinybench@2.4.0": { 1169 | "integrity": "sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==", 1170 | "dependencies": {} 1171 | }, 1172 | "tinypool@0.4.0": { 1173 | "integrity": "sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==", 1174 | "dependencies": {} 1175 | }, 1176 | "tinyspy@1.1.1": { 1177 | "integrity": "sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==", 1178 | "dependencies": {} 1179 | }, 1180 | "to-regex-range@5.0.1": { 1181 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1182 | "dependencies": { 1183 | "is-number": "is-number@7.0.0" 1184 | } 1185 | }, 1186 | "type-detect@4.0.8": { 1187 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 1188 | "dependencies": {} 1189 | }, 1190 | "typescript@5.0.4": { 1191 | "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", 1192 | "dependencies": {} 1193 | }, 1194 | "ufo@1.1.1": { 1195 | "integrity": "sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==", 1196 | "dependencies": {} 1197 | }, 1198 | "undici@5.20.0": { 1199 | "integrity": "sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==", 1200 | "dependencies": { 1201 | "busboy": "busboy@1.6.0" 1202 | } 1203 | }, 1204 | "urlpattern-polyfill@4.0.3": { 1205 | "integrity": "sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ==", 1206 | "dependencies": {} 1207 | }, 1208 | "validate-npm-package-name@4.0.0": { 1209 | "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", 1210 | "dependencies": { 1211 | "builtins": "builtins@5.0.1" 1212 | } 1213 | }, 1214 | "vite-node@0.29.8_@types+node@18.15.11": { 1215 | "integrity": "sha512-b6OtCXfk65L6SElVM20q5G546yu10/kNrhg08afEoWlFRJXFq9/6glsvSVY+aI6YeC1tu2TtAqI2jHEQmOmsFw==", 1216 | "dependencies": { 1217 | "cac": "cac@6.7.14", 1218 | "debug": "debug@4.3.4", 1219 | "mlly": "mlly@1.2.0", 1220 | "pathe": "pathe@1.1.0", 1221 | "picocolors": "picocolors@1.0.0", 1222 | "vite": "vite@4.2.2_@types+node@18.15.11" 1223 | } 1224 | }, 1225 | "vite@4.2.2_@types+node@18.15.11": { 1226 | "integrity": "sha512-PcNtT5HeDxb3QaSqFYkEum8f5sCVe0R3WK20qxgIvNBZPXU/Obxs/+ubBMeE7nLWeCo2LDzv+8hRYSlcaSehig==", 1227 | "dependencies": { 1228 | "@types/node": "@types/node@18.15.11", 1229 | "esbuild": "esbuild@0.17.17", 1230 | "fsevents": "fsevents@2.3.2", 1231 | "less": "@types/node@18.15.11", 1232 | "postcss": "postcss@8.4.22", 1233 | "resolve": "resolve@1.22.3", 1234 | "rollup": "rollup@3.20.6", 1235 | "sass": "@types/node@18.15.11", 1236 | "stylus": "@types/node@18.15.11", 1237 | "sugarss": "@types/node@18.15.11", 1238 | "terser": "@types/node@18.15.11" 1239 | } 1240 | }, 1241 | "vitest@0.29.8_@types+node@18.15.11": { 1242 | "integrity": "sha512-JIAVi2GK5cvA6awGpH0HvH/gEG9PZ0a/WoxdiV3PmqK+3CjQMf8c+J/Vhv4mdZ2nRyXFw66sAg6qz7VNkaHfDQ==", 1243 | "dependencies": { 1244 | "@types/chai": "@types/chai@4.3.4", 1245 | "@types/chai-subset": "@types/chai-subset@1.3.3", 1246 | "@types/node": "@types/node@18.15.11", 1247 | "@vitest/expect": "@vitest/expect@0.29.8", 1248 | "@vitest/runner": "@vitest/runner@0.29.8", 1249 | "@vitest/spy": "@vitest/spy@0.29.8", 1250 | "@vitest/utils": "@vitest/utils@0.29.8", 1251 | "acorn": "acorn@8.8.2", 1252 | "acorn-walk": "acorn-walk@8.2.0", 1253 | "cac": "cac@6.7.14", 1254 | "chai": "chai@4.3.7", 1255 | "debug": "debug@4.3.4", 1256 | "local-pkg": "local-pkg@0.4.3", 1257 | "pathe": "pathe@1.1.0", 1258 | "picocolors": "picocolors@1.0.0", 1259 | "source-map": "source-map@0.6.1", 1260 | "std-env": "std-env@3.3.2", 1261 | "strip-literal": "strip-literal@1.0.1", 1262 | "tinybench": "tinybench@2.4.0", 1263 | "tinypool": "tinypool@0.4.0", 1264 | "tinyspy": "tinyspy@1.1.1", 1265 | "vite": "vite@4.2.2_@types+node@18.15.11", 1266 | "vite-node": "vite-node@0.29.8_@types+node@18.15.11", 1267 | "why-is-node-running": "why-is-node-running@2.2.2" 1268 | } 1269 | }, 1270 | "which@2.0.2": { 1271 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1272 | "dependencies": { 1273 | "isexe": "isexe@2.0.0" 1274 | } 1275 | }, 1276 | "why-is-node-running@2.2.2": { 1277 | "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", 1278 | "dependencies": { 1279 | "siginfo": "siginfo@2.0.0", 1280 | "stackback": "stackback@0.0.2" 1281 | } 1282 | }, 1283 | "wrangler@2.16.0_esbuild@0.16.3": { 1284 | "integrity": "sha512-jhkOmEAF7jH58VvnGx7Uqjs2u2T17e/5r9W3OsqESyBjc/8ALUYuwqQ2gr8JsXFny/cE0ysJas0fdY9wggWMCw==", 1285 | "dependencies": { 1286 | "@cloudflare/kv-asset-handler": "@cloudflare/kv-asset-handler@0.2.0", 1287 | "@esbuild-plugins/node-globals-polyfill": "@esbuild-plugins/node-globals-polyfill@0.1.1_esbuild@0.16.3", 1288 | "@esbuild-plugins/node-modules-polyfill": "@esbuild-plugins/node-modules-polyfill@0.1.4_esbuild@0.16.3", 1289 | "@miniflare/core": "@miniflare/core@2.13.0", 1290 | "@miniflare/d1": "@miniflare/d1@2.13.0", 1291 | "@miniflare/durable-objects": "@miniflare/durable-objects@2.13.0", 1292 | "blake3-wasm": "blake3-wasm@2.1.5", 1293 | "chokidar": "chokidar@3.5.3", 1294 | "esbuild": "esbuild@0.16.3", 1295 | "fsevents": "fsevents@2.3.2", 1296 | "miniflare": "miniflare@2.13.0", 1297 | "nanoid": "nanoid@3.3.6", 1298 | "path-to-regexp": "path-to-regexp@6.2.1", 1299 | "selfsigned": "selfsigned@2.1.1", 1300 | "source-map": "source-map@0.7.4", 1301 | "xxhash-wasm": "xxhash-wasm@1.0.2" 1302 | } 1303 | }, 1304 | "ws@8.13.0": { 1305 | "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", 1306 | "dependencies": {} 1307 | }, 1308 | "xxhash-wasm@1.0.2": { 1309 | "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==", 1310 | "dependencies": {} 1311 | }, 1312 | "yallist@4.0.0": { 1313 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1314 | "dependencies": {} 1315 | }, 1316 | "yocto-queue@1.0.0": { 1317 | "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", 1318 | "dependencies": {} 1319 | }, 1320 | "youch@2.2.2": { 1321 | "integrity": "sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==", 1322 | "dependencies": { 1323 | "@types/stack-trace": "@types/stack-trace@0.0.29", 1324 | "cookie": "cookie@0.4.2", 1325 | "mustache": "mustache@4.2.0", 1326 | "stack-trace": "stack-trace@0.0.10" 1327 | } 1328 | } 1329 | } 1330 | } 1331 | } 1332 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | importers: 4 | 5 | gpt_tokens: 6 | dependencies: 7 | gpt3-tokenizer: 8 | specifier: ^1.1.5 9 | version: 1.1.5 10 | devDependencies: 11 | '@cloudflare/workers-types': 12 | specifier: ^4.20230404.0 13 | version: 4.20230404.0 14 | typescript: 15 | specifier: ^5.0.4 16 | version: 5.0.4 17 | vitest: 18 | specifier: ^0.30.1 19 | version: 0.30.1 20 | wrangler: 21 | specifier: 2.16.0 22 | version: 2.16.0 23 | 24 | opencatd: 25 | dependencies: 26 | eventsource-parser: 27 | specifier: ^1.0.0 28 | version: 1.0.0 29 | gpt3-tokenizer: 30 | specifier: ^1.1.5 31 | version: 1.1.5 32 | hono: 33 | specifier: ^3.1.0 34 | version: 3.1.0 35 | devDependencies: 36 | '@cloudflare/workers-types': 37 | specifier: ^4.20230321.0 38 | version: 4.20230404.0 39 | typescript: 40 | specifier: ^5.0.3 41 | version: 5.0.4 42 | vitest: 43 | specifier: ^0.29.8 44 | version: 0.29.8 45 | wrangler: 46 | specifier: 2.16.0 47 | version: 2.16.0 48 | 49 | packages: 50 | 51 | /@cloudflare/kv-asset-handler@0.2.0: 52 | resolution: {integrity: sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==} 53 | dependencies: 54 | mime: 3.0.0 55 | dev: true 56 | 57 | /@cloudflare/workers-types@4.20230404.0: 58 | resolution: {integrity: sha512-fG3oaJX1icfsGV74nhx1+AC6opvZsGqnpx6FvrcVqQaBmCNkjKNqDRFrpasXWFiOIvysBXHKQAzsAJkBZgnM+A==} 59 | dev: true 60 | 61 | /@esbuild-plugins/node-globals-polyfill@0.1.1(esbuild@0.16.3): 62 | resolution: {integrity: sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==} 63 | peerDependencies: 64 | esbuild: '*' 65 | dependencies: 66 | esbuild: 0.16.3 67 | dev: true 68 | 69 | /@esbuild-plugins/node-modules-polyfill@0.1.4(esbuild@0.16.3): 70 | resolution: {integrity: sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==} 71 | peerDependencies: 72 | esbuild: '*' 73 | dependencies: 74 | esbuild: 0.16.3 75 | escape-string-regexp: 4.0.0 76 | rollup-plugin-node-polyfills: 0.2.1 77 | dev: true 78 | 79 | /@esbuild/android-arm64@0.16.3: 80 | resolution: {integrity: sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==} 81 | engines: {node: '>=12'} 82 | cpu: [arm64] 83 | os: [android] 84 | requiresBuild: true 85 | dev: true 86 | optional: true 87 | 88 | /@esbuild/android-arm64@0.17.17: 89 | resolution: {integrity: sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==} 90 | engines: {node: '>=12'} 91 | cpu: [arm64] 92 | os: [android] 93 | requiresBuild: true 94 | dev: true 95 | optional: true 96 | 97 | /@esbuild/android-arm@0.16.3: 98 | resolution: {integrity: sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==} 99 | engines: {node: '>=12'} 100 | cpu: [arm] 101 | os: [android] 102 | requiresBuild: true 103 | dev: true 104 | optional: true 105 | 106 | /@esbuild/android-arm@0.17.17: 107 | resolution: {integrity: sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==} 108 | engines: {node: '>=12'} 109 | cpu: [arm] 110 | os: [android] 111 | requiresBuild: true 112 | dev: true 113 | optional: true 114 | 115 | /@esbuild/android-x64@0.16.3: 116 | resolution: {integrity: sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==} 117 | engines: {node: '>=12'} 118 | cpu: [x64] 119 | os: [android] 120 | requiresBuild: true 121 | dev: true 122 | optional: true 123 | 124 | /@esbuild/android-x64@0.17.17: 125 | resolution: {integrity: sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==} 126 | engines: {node: '>=12'} 127 | cpu: [x64] 128 | os: [android] 129 | requiresBuild: true 130 | dev: true 131 | optional: true 132 | 133 | /@esbuild/darwin-arm64@0.16.3: 134 | resolution: {integrity: sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==} 135 | engines: {node: '>=12'} 136 | cpu: [arm64] 137 | os: [darwin] 138 | requiresBuild: true 139 | dev: true 140 | optional: true 141 | 142 | /@esbuild/darwin-arm64@0.17.17: 143 | resolution: {integrity: sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==} 144 | engines: {node: '>=12'} 145 | cpu: [arm64] 146 | os: [darwin] 147 | requiresBuild: true 148 | dev: true 149 | optional: true 150 | 151 | /@esbuild/darwin-x64@0.16.3: 152 | resolution: {integrity: sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==} 153 | engines: {node: '>=12'} 154 | cpu: [x64] 155 | os: [darwin] 156 | requiresBuild: true 157 | dev: true 158 | optional: true 159 | 160 | /@esbuild/darwin-x64@0.17.17: 161 | resolution: {integrity: sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==} 162 | engines: {node: '>=12'} 163 | cpu: [x64] 164 | os: [darwin] 165 | requiresBuild: true 166 | dev: true 167 | optional: true 168 | 169 | /@esbuild/freebsd-arm64@0.16.3: 170 | resolution: {integrity: sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==} 171 | engines: {node: '>=12'} 172 | cpu: [arm64] 173 | os: [freebsd] 174 | requiresBuild: true 175 | dev: true 176 | optional: true 177 | 178 | /@esbuild/freebsd-arm64@0.17.17: 179 | resolution: {integrity: sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==} 180 | engines: {node: '>=12'} 181 | cpu: [arm64] 182 | os: [freebsd] 183 | requiresBuild: true 184 | dev: true 185 | optional: true 186 | 187 | /@esbuild/freebsd-x64@0.16.3: 188 | resolution: {integrity: sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==} 189 | engines: {node: '>=12'} 190 | cpu: [x64] 191 | os: [freebsd] 192 | requiresBuild: true 193 | dev: true 194 | optional: true 195 | 196 | /@esbuild/freebsd-x64@0.17.17: 197 | resolution: {integrity: sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==} 198 | engines: {node: '>=12'} 199 | cpu: [x64] 200 | os: [freebsd] 201 | requiresBuild: true 202 | dev: true 203 | optional: true 204 | 205 | /@esbuild/linux-arm64@0.16.3: 206 | resolution: {integrity: sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==} 207 | engines: {node: '>=12'} 208 | cpu: [arm64] 209 | os: [linux] 210 | requiresBuild: true 211 | dev: true 212 | optional: true 213 | 214 | /@esbuild/linux-arm64@0.17.17: 215 | resolution: {integrity: sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==} 216 | engines: {node: '>=12'} 217 | cpu: [arm64] 218 | os: [linux] 219 | requiresBuild: true 220 | dev: true 221 | optional: true 222 | 223 | /@esbuild/linux-arm@0.16.3: 224 | resolution: {integrity: sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==} 225 | engines: {node: '>=12'} 226 | cpu: [arm] 227 | os: [linux] 228 | requiresBuild: true 229 | dev: true 230 | optional: true 231 | 232 | /@esbuild/linux-arm@0.17.17: 233 | resolution: {integrity: sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==} 234 | engines: {node: '>=12'} 235 | cpu: [arm] 236 | os: [linux] 237 | requiresBuild: true 238 | dev: true 239 | optional: true 240 | 241 | /@esbuild/linux-ia32@0.16.3: 242 | resolution: {integrity: sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==} 243 | engines: {node: '>=12'} 244 | cpu: [ia32] 245 | os: [linux] 246 | requiresBuild: true 247 | dev: true 248 | optional: true 249 | 250 | /@esbuild/linux-ia32@0.17.17: 251 | resolution: {integrity: sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==} 252 | engines: {node: '>=12'} 253 | cpu: [ia32] 254 | os: [linux] 255 | requiresBuild: true 256 | dev: true 257 | optional: true 258 | 259 | /@esbuild/linux-loong64@0.16.3: 260 | resolution: {integrity: sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==} 261 | engines: {node: '>=12'} 262 | cpu: [loong64] 263 | os: [linux] 264 | requiresBuild: true 265 | dev: true 266 | optional: true 267 | 268 | /@esbuild/linux-loong64@0.17.17: 269 | resolution: {integrity: sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==} 270 | engines: {node: '>=12'} 271 | cpu: [loong64] 272 | os: [linux] 273 | requiresBuild: true 274 | dev: true 275 | optional: true 276 | 277 | /@esbuild/linux-mips64el@0.16.3: 278 | resolution: {integrity: sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==} 279 | engines: {node: '>=12'} 280 | cpu: [mips64el] 281 | os: [linux] 282 | requiresBuild: true 283 | dev: true 284 | optional: true 285 | 286 | /@esbuild/linux-mips64el@0.17.17: 287 | resolution: {integrity: sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==} 288 | engines: {node: '>=12'} 289 | cpu: [mips64el] 290 | os: [linux] 291 | requiresBuild: true 292 | dev: true 293 | optional: true 294 | 295 | /@esbuild/linux-ppc64@0.16.3: 296 | resolution: {integrity: sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==} 297 | engines: {node: '>=12'} 298 | cpu: [ppc64] 299 | os: [linux] 300 | requiresBuild: true 301 | dev: true 302 | optional: true 303 | 304 | /@esbuild/linux-ppc64@0.17.17: 305 | resolution: {integrity: sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==} 306 | engines: {node: '>=12'} 307 | cpu: [ppc64] 308 | os: [linux] 309 | requiresBuild: true 310 | dev: true 311 | optional: true 312 | 313 | /@esbuild/linux-riscv64@0.16.3: 314 | resolution: {integrity: sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==} 315 | engines: {node: '>=12'} 316 | cpu: [riscv64] 317 | os: [linux] 318 | requiresBuild: true 319 | dev: true 320 | optional: true 321 | 322 | /@esbuild/linux-riscv64@0.17.17: 323 | resolution: {integrity: sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==} 324 | engines: {node: '>=12'} 325 | cpu: [riscv64] 326 | os: [linux] 327 | requiresBuild: true 328 | dev: true 329 | optional: true 330 | 331 | /@esbuild/linux-s390x@0.16.3: 332 | resolution: {integrity: sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==} 333 | engines: {node: '>=12'} 334 | cpu: [s390x] 335 | os: [linux] 336 | requiresBuild: true 337 | dev: true 338 | optional: true 339 | 340 | /@esbuild/linux-s390x@0.17.17: 341 | resolution: {integrity: sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==} 342 | engines: {node: '>=12'} 343 | cpu: [s390x] 344 | os: [linux] 345 | requiresBuild: true 346 | dev: true 347 | optional: true 348 | 349 | /@esbuild/linux-x64@0.16.3: 350 | resolution: {integrity: sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==} 351 | engines: {node: '>=12'} 352 | cpu: [x64] 353 | os: [linux] 354 | requiresBuild: true 355 | dev: true 356 | optional: true 357 | 358 | /@esbuild/linux-x64@0.17.17: 359 | resolution: {integrity: sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==} 360 | engines: {node: '>=12'} 361 | cpu: [x64] 362 | os: [linux] 363 | requiresBuild: true 364 | dev: true 365 | optional: true 366 | 367 | /@esbuild/netbsd-x64@0.16.3: 368 | resolution: {integrity: sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==} 369 | engines: {node: '>=12'} 370 | cpu: [x64] 371 | os: [netbsd] 372 | requiresBuild: true 373 | dev: true 374 | optional: true 375 | 376 | /@esbuild/netbsd-x64@0.17.17: 377 | resolution: {integrity: sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==} 378 | engines: {node: '>=12'} 379 | cpu: [x64] 380 | os: [netbsd] 381 | requiresBuild: true 382 | dev: true 383 | optional: true 384 | 385 | /@esbuild/openbsd-x64@0.16.3: 386 | resolution: {integrity: sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==} 387 | engines: {node: '>=12'} 388 | cpu: [x64] 389 | os: [openbsd] 390 | requiresBuild: true 391 | dev: true 392 | optional: true 393 | 394 | /@esbuild/openbsd-x64@0.17.17: 395 | resolution: {integrity: sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==} 396 | engines: {node: '>=12'} 397 | cpu: [x64] 398 | os: [openbsd] 399 | requiresBuild: true 400 | dev: true 401 | optional: true 402 | 403 | /@esbuild/sunos-x64@0.16.3: 404 | resolution: {integrity: sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==} 405 | engines: {node: '>=12'} 406 | cpu: [x64] 407 | os: [sunos] 408 | requiresBuild: true 409 | dev: true 410 | optional: true 411 | 412 | /@esbuild/sunos-x64@0.17.17: 413 | resolution: {integrity: sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==} 414 | engines: {node: '>=12'} 415 | cpu: [x64] 416 | os: [sunos] 417 | requiresBuild: true 418 | dev: true 419 | optional: true 420 | 421 | /@esbuild/win32-arm64@0.16.3: 422 | resolution: {integrity: sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==} 423 | engines: {node: '>=12'} 424 | cpu: [arm64] 425 | os: [win32] 426 | requiresBuild: true 427 | dev: true 428 | optional: true 429 | 430 | /@esbuild/win32-arm64@0.17.17: 431 | resolution: {integrity: sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==} 432 | engines: {node: '>=12'} 433 | cpu: [arm64] 434 | os: [win32] 435 | requiresBuild: true 436 | dev: true 437 | optional: true 438 | 439 | /@esbuild/win32-ia32@0.16.3: 440 | resolution: {integrity: sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==} 441 | engines: {node: '>=12'} 442 | cpu: [ia32] 443 | os: [win32] 444 | requiresBuild: true 445 | dev: true 446 | optional: true 447 | 448 | /@esbuild/win32-ia32@0.17.17: 449 | resolution: {integrity: sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==} 450 | engines: {node: '>=12'} 451 | cpu: [ia32] 452 | os: [win32] 453 | requiresBuild: true 454 | dev: true 455 | optional: true 456 | 457 | /@esbuild/win32-x64@0.16.3: 458 | resolution: {integrity: sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==} 459 | engines: {node: '>=12'} 460 | cpu: [x64] 461 | os: [win32] 462 | requiresBuild: true 463 | dev: true 464 | optional: true 465 | 466 | /@esbuild/win32-x64@0.17.17: 467 | resolution: {integrity: sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==} 468 | engines: {node: '>=12'} 469 | cpu: [x64] 470 | os: [win32] 471 | requiresBuild: true 472 | dev: true 473 | optional: true 474 | 475 | /@iarna/toml@2.2.5: 476 | resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} 477 | dev: true 478 | 479 | /@jridgewell/sourcemap-codec@1.4.15: 480 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 481 | dev: true 482 | 483 | /@miniflare/cache@2.13.0: 484 | resolution: {integrity: sha512-y3SdN3SVyPECWmLAEGkkrv0RB+LugEPs/FeXn8QtN9aE1vyj69clOAgmsDzoh1DpFfFsLKRiv05aWs4m79P8Xw==} 485 | engines: {node: '>=16.13'} 486 | dependencies: 487 | '@miniflare/core': 2.13.0 488 | '@miniflare/shared': 2.13.0 489 | http-cache-semantics: 4.1.1 490 | undici: 5.20.0 491 | dev: true 492 | 493 | /@miniflare/cli-parser@2.13.0: 494 | resolution: {integrity: sha512-Nx1PIfuMZ3mK9Dg/JojWZAjHR16h1pcdCFSqYln/ME7y5ifx+P1E5UkShWUQ1cBlibNaltjbJ2n/7stSAsIGPQ==} 495 | engines: {node: '>=16.13'} 496 | dependencies: 497 | '@miniflare/shared': 2.13.0 498 | kleur: 4.1.5 499 | dev: true 500 | 501 | /@miniflare/core@2.13.0: 502 | resolution: {integrity: sha512-YJ/C0J3k+7xn4gvlMpvePnM3xC8nOnkweW96cc0IA8kJ1JSmScOO2tZ7rrU1RyDgp6StkAtQBw4yC0wYeFycBw==} 503 | engines: {node: '>=16.13'} 504 | dependencies: 505 | '@iarna/toml': 2.2.5 506 | '@miniflare/queues': 2.13.0 507 | '@miniflare/shared': 2.13.0 508 | '@miniflare/watcher': 2.13.0 509 | busboy: 1.6.0 510 | dotenv: 10.0.0 511 | kleur: 4.1.5 512 | set-cookie-parser: 2.6.0 513 | undici: 5.20.0 514 | urlpattern-polyfill: 4.0.3 515 | dev: true 516 | 517 | /@miniflare/d1@2.13.0: 518 | resolution: {integrity: sha512-OslqjO8iTcvzyrC0spByftMboRmHJEyHyTHnlKkjWDGdQQztEOjso2Xj+3I4SZIeUYvbzDRhKLS2QXI9a8LS5A==} 519 | engines: {node: '>=16.7'} 520 | dependencies: 521 | '@miniflare/core': 2.13.0 522 | '@miniflare/shared': 2.13.0 523 | dev: true 524 | 525 | /@miniflare/durable-objects@2.13.0: 526 | resolution: {integrity: sha512-CRGVBPO9vY4Fc3aV+pdPRVVeYIt64vQqvw+BJbyW+TQtqVP2CGQeziJGnCfcONNNKyooZxGyUkHewUypyH+Qhg==} 527 | engines: {node: '>=16.13'} 528 | dependencies: 529 | '@miniflare/core': 2.13.0 530 | '@miniflare/shared': 2.13.0 531 | '@miniflare/storage-memory': 2.13.0 532 | undici: 5.20.0 533 | dev: true 534 | 535 | /@miniflare/html-rewriter@2.13.0: 536 | resolution: {integrity: sha512-XhN7Icyzvtvu+o/A0hrnSiSmla78seCaNwQ9M1TDHxt352I/ahPX4wtPXs6GbKqY0/i+V6yoG2KGFRQ/j59cQQ==} 537 | engines: {node: '>=16.13'} 538 | dependencies: 539 | '@miniflare/core': 2.13.0 540 | '@miniflare/shared': 2.13.0 541 | html-rewriter-wasm: 0.4.1 542 | undici: 5.20.0 543 | dev: true 544 | 545 | /@miniflare/http-server@2.13.0: 546 | resolution: {integrity: sha512-aMS/nUMTKP15hKnyZboeuWCiqmNrrCu+XRBY/TxDDl07iXcLpiHGf3oVv+yXxXkWlJHJVCbK7i/nXSNPllRMSw==} 547 | engines: {node: '>=16.13'} 548 | dependencies: 549 | '@miniflare/core': 2.13.0 550 | '@miniflare/shared': 2.13.0 551 | '@miniflare/web-sockets': 2.13.0 552 | kleur: 4.1.5 553 | selfsigned: 2.1.1 554 | undici: 5.20.0 555 | ws: 8.13.0 556 | youch: 2.2.2 557 | transitivePeerDependencies: 558 | - bufferutil 559 | - utf-8-validate 560 | dev: true 561 | 562 | /@miniflare/kv@2.13.0: 563 | resolution: {integrity: sha512-J0AS5x3g/YVOmHMxMAZs07nRXRvSo9jyuC0eikTBf+4AABvBIyvVYmdTjYNjCmr8O5smcfWBX5S27HelD3aAAQ==} 564 | engines: {node: '>=16.13'} 565 | dependencies: 566 | '@miniflare/shared': 2.13.0 567 | dev: true 568 | 569 | /@miniflare/queues@2.13.0: 570 | resolution: {integrity: sha512-Gf/a6M1mJL03iOvNqh3JNahcBfvEMPHnO28n0gkCoyYWGvddIr9lwCdFIa0qwNJsC1fIDRxhPg8PZ5cQLBMwRA==} 571 | engines: {node: '>=16.7'} 572 | dependencies: 573 | '@miniflare/shared': 2.13.0 574 | dev: true 575 | 576 | /@miniflare/r2@2.13.0: 577 | resolution: {integrity: sha512-/5k6GHOYMNV/oBtilV9HDXBkJUrx8oXVigG5vxbnzEGRXyVRmR+Glzu7mFT8JiE94XiEbXHk9Qvu1S5Dej3wBw==} 578 | engines: {node: '>=16.13'} 579 | dependencies: 580 | '@miniflare/shared': 2.13.0 581 | undici: 5.20.0 582 | dev: true 583 | 584 | /@miniflare/runner-vm@2.13.0: 585 | resolution: {integrity: sha512-VmKtF2cA8HmTuLXor1THWY0v+DmaobPct63iLcgWIaUdP3MIvL+9X8HDXFAviCR7bCTe6MKxckHkaOj0IE0aJQ==} 586 | engines: {node: '>=16.13'} 587 | dependencies: 588 | '@miniflare/shared': 2.13.0 589 | dev: true 590 | 591 | /@miniflare/scheduler@2.13.0: 592 | resolution: {integrity: sha512-AOaQanoR4NjVEzVGWHnrL15A7aMx+d9AKLJhSDF7KaP+4NrT2Wo2BQuXCpn5oStx3itOdlQpMfqQ139e/I8WhQ==} 593 | engines: {node: '>=16.13'} 594 | dependencies: 595 | '@miniflare/core': 2.13.0 596 | '@miniflare/shared': 2.13.0 597 | cron-schedule: 3.0.6 598 | dev: true 599 | 600 | /@miniflare/shared@2.13.0: 601 | resolution: {integrity: sha512-m8YFQzKmbjberrV9hPzNcQjNCXxjTjXUpuNrIGjAJO7g+BDztUHaZbdd26H9maBDlkeiWxA3hf0mDyCT/6MCMA==} 602 | engines: {node: '>=16.13'} 603 | dependencies: 604 | '@types/better-sqlite3': 7.6.4 605 | kleur: 4.1.5 606 | npx-import: 1.1.4 607 | picomatch: 2.3.1 608 | dev: true 609 | 610 | /@miniflare/sites@2.13.0: 611 | resolution: {integrity: sha512-/tuzIu00o6CF2tkSv01q02MgEShXBSKx85h9jwWvc+6u7prGacAOer0FA1YNRFbE+t9QIfutAkoPGMA9zYf8+Q==} 612 | engines: {node: '>=16.13'} 613 | dependencies: 614 | '@miniflare/kv': 2.13.0 615 | '@miniflare/shared': 2.13.0 616 | '@miniflare/storage-file': 2.13.0 617 | dev: true 618 | 619 | /@miniflare/storage-file@2.13.0: 620 | resolution: {integrity: sha512-LuAeAAY5046rq5U1eFLVkz+ppiFEWytWacpkQw92DvVKFFquZcXSj6WPxZF4rSs23WDk+rdcwuLekbb52aDR7A==} 621 | engines: {node: '>=16.13'} 622 | dependencies: 623 | '@miniflare/shared': 2.13.0 624 | '@miniflare/storage-memory': 2.13.0 625 | dev: true 626 | 627 | /@miniflare/storage-memory@2.13.0: 628 | resolution: {integrity: sha512-FnkYcBNXa/ym1ksNilNZycg9WYYKo6cWKplVBeSthRon3e8QY6t3n7/XRseBUo7O6mhDybVTy4wNCP1R2nBiEw==} 629 | engines: {node: '>=16.13'} 630 | dependencies: 631 | '@miniflare/shared': 2.13.0 632 | dev: true 633 | 634 | /@miniflare/watcher@2.13.0: 635 | resolution: {integrity: sha512-teAacWcpMStoBLbLae95IUaL5lPzjPlXa9lhK9CbRaio/KRMibTMRGWrYos3IVGQRZvklvLwcms/nTvgcdb6yw==} 636 | engines: {node: '>=16.13'} 637 | dependencies: 638 | '@miniflare/shared': 2.13.0 639 | dev: true 640 | 641 | /@miniflare/web-sockets@2.13.0: 642 | resolution: {integrity: sha512-+U2/HCf+BetRIgjAnNQjkuN6UeAjQmXifhQC+7CCaX834XJhrKXoR6z2xr2xkg1qj0qQs4D2jWG0KzrO5OUpug==} 643 | engines: {node: '>=16.13'} 644 | dependencies: 645 | '@miniflare/core': 2.13.0 646 | '@miniflare/shared': 2.13.0 647 | undici: 5.20.0 648 | ws: 8.13.0 649 | transitivePeerDependencies: 650 | - bufferutil 651 | - utf-8-validate 652 | dev: true 653 | 654 | /@types/better-sqlite3@7.6.4: 655 | resolution: {integrity: sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg==} 656 | dependencies: 657 | '@types/node': 18.15.13 658 | dev: true 659 | 660 | /@types/chai-subset@1.3.3: 661 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 662 | dependencies: 663 | '@types/chai': 4.3.4 664 | dev: true 665 | 666 | /@types/chai@4.3.4: 667 | resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} 668 | dev: true 669 | 670 | /@types/node@18.15.13: 671 | resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} 672 | dev: true 673 | 674 | /@types/stack-trace@0.0.29: 675 | resolution: {integrity: sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==} 676 | dev: true 677 | 678 | /@vitest/expect@0.29.8: 679 | resolution: {integrity: sha512-xlcVXn5I5oTq6NiZSY3ykyWixBxr5mG8HYtjvpgg6KaqHm0mvhX18xuwl5YGxIRNt/A5jidd7CWcNHrSvgaQqQ==} 680 | dependencies: 681 | '@vitest/spy': 0.29.8 682 | '@vitest/utils': 0.29.8 683 | chai: 4.3.7 684 | dev: true 685 | 686 | /@vitest/expect@0.30.1: 687 | resolution: {integrity: sha512-c3kbEtN8XXJSeN81iDGq29bUzSjQhjES2WR3aColsS4lPGbivwLtas4DNUe0jD9gg/FYGIteqOenfU95EFituw==} 688 | dependencies: 689 | '@vitest/spy': 0.30.1 690 | '@vitest/utils': 0.30.1 691 | chai: 4.3.7 692 | dev: true 693 | 694 | /@vitest/runner@0.29.8: 695 | resolution: {integrity: sha512-FzdhnRDwEr/A3Oo1jtIk/B952BBvP32n1ObMEb23oEJNO+qO5cBet6M2XWIDQmA7BDKGKvmhUf2naXyp/2JEwQ==} 696 | dependencies: 697 | '@vitest/utils': 0.29.8 698 | p-limit: 4.0.0 699 | pathe: 1.1.0 700 | dev: true 701 | 702 | /@vitest/runner@0.30.1: 703 | resolution: {integrity: sha512-W62kT/8i0TF1UBCNMRtRMOBWJKRnNyv9RrjIgdUryEe0wNpGZvvwPDLuzYdxvgSckzjp54DSpv1xUbv4BQ0qVA==} 704 | dependencies: 705 | '@vitest/utils': 0.30.1 706 | concordance: 5.0.4 707 | p-limit: 4.0.0 708 | pathe: 1.1.0 709 | dev: true 710 | 711 | /@vitest/snapshot@0.30.1: 712 | resolution: {integrity: sha512-fJZqKrE99zo27uoZA/azgWyWbFvM1rw2APS05yB0JaLwUIg9aUtvvnBf4q7JWhEcAHmSwbrxKFgyBUga6tq9Tw==} 713 | dependencies: 714 | magic-string: 0.30.0 715 | pathe: 1.1.0 716 | pretty-format: 27.5.1 717 | dev: true 718 | 719 | /@vitest/spy@0.29.8: 720 | resolution: {integrity: sha512-VdjBe9w34vOMl5I5mYEzNX8inTxrZ+tYUVk9jxaZJmHFwmDFC/GV3KBFTA/JKswr3XHvZL+FE/yq5EVhb6pSAw==} 721 | dependencies: 722 | tinyspy: 1.1.1 723 | dev: true 724 | 725 | /@vitest/spy@0.30.1: 726 | resolution: {integrity: sha512-YfJeIf37GvTZe04ZKxzJfnNNuNSmTEGnla2OdL60C8od16f3zOfv9q9K0nNii0NfjDJRt/CVN/POuY5/zTS+BA==} 727 | dependencies: 728 | tinyspy: 2.1.0 729 | dev: true 730 | 731 | /@vitest/utils@0.29.8: 732 | resolution: {integrity: sha512-qGzuf3vrTbnoY+RjjVVIBYfuWMjn3UMUqyQtdGNZ6ZIIyte7B37exj6LaVkrZiUTvzSadVvO/tJm8AEgbGCBPg==} 733 | dependencies: 734 | cli-truncate: 3.1.0 735 | diff: 5.1.0 736 | loupe: 2.3.6 737 | pretty-format: 27.5.1 738 | dev: true 739 | 740 | /@vitest/utils@0.30.1: 741 | resolution: {integrity: sha512-/c8Xv2zUVc+rnNt84QF0Y0zkfxnaGhp87K2dYJMLtLOIckPzuxLVzAtFCicGFdB4NeBHNzTRr1tNn7rCtQcWFA==} 742 | dependencies: 743 | concordance: 5.0.4 744 | loupe: 2.3.6 745 | pretty-format: 27.5.1 746 | dev: true 747 | 748 | /acorn-walk@8.2.0: 749 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 750 | engines: {node: '>=0.4.0'} 751 | dev: true 752 | 753 | /acorn@8.8.2: 754 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 755 | engines: {node: '>=0.4.0'} 756 | hasBin: true 757 | dev: true 758 | 759 | /ansi-regex@5.0.1: 760 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 761 | engines: {node: '>=8'} 762 | dev: true 763 | 764 | /ansi-regex@6.0.1: 765 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 766 | engines: {node: '>=12'} 767 | dev: true 768 | 769 | /ansi-styles@5.2.0: 770 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 771 | engines: {node: '>=10'} 772 | dev: true 773 | 774 | /ansi-styles@6.2.1: 775 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 776 | engines: {node: '>=12'} 777 | dev: true 778 | 779 | /anymatch@3.1.3: 780 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 781 | engines: {node: '>= 8'} 782 | dependencies: 783 | normalize-path: 3.0.0 784 | picomatch: 2.3.1 785 | dev: true 786 | 787 | /array-keyed-map@2.1.3: 788 | resolution: {integrity: sha512-JIUwuFakO+jHjxyp4YgSiKXSZeC0U+R1jR94bXWBcVlFRBycqXlb+kH9JHxBGcxnVuSqx5bnn0Qz9xtSeKOjiA==} 789 | dev: false 790 | 791 | /assertion-error@1.1.0: 792 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 793 | dev: true 794 | 795 | /binary-extensions@2.2.0: 796 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 797 | engines: {node: '>=8'} 798 | dev: true 799 | 800 | /blake3-wasm@2.1.5: 801 | resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} 802 | dev: true 803 | 804 | /blueimp-md5@2.19.0: 805 | resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} 806 | dev: true 807 | 808 | /braces@3.0.2: 809 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 810 | engines: {node: '>=8'} 811 | dependencies: 812 | fill-range: 7.0.1 813 | dev: true 814 | 815 | /buffer-from@1.1.2: 816 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 817 | dev: true 818 | 819 | /builtins@5.0.1: 820 | resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} 821 | dependencies: 822 | semver: 7.5.0 823 | dev: true 824 | 825 | /busboy@1.6.0: 826 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 827 | engines: {node: '>=10.16.0'} 828 | dependencies: 829 | streamsearch: 1.1.0 830 | dev: true 831 | 832 | /cac@6.7.14: 833 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 834 | engines: {node: '>=8'} 835 | dev: true 836 | 837 | /chai@4.3.7: 838 | resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} 839 | engines: {node: '>=4'} 840 | dependencies: 841 | assertion-error: 1.1.0 842 | check-error: 1.0.2 843 | deep-eql: 4.1.3 844 | get-func-name: 2.0.0 845 | loupe: 2.3.6 846 | pathval: 1.1.1 847 | type-detect: 4.0.8 848 | dev: true 849 | 850 | /check-error@1.0.2: 851 | resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} 852 | dev: true 853 | 854 | /chokidar@3.5.3: 855 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 856 | engines: {node: '>= 8.10.0'} 857 | dependencies: 858 | anymatch: 3.1.3 859 | braces: 3.0.2 860 | glob-parent: 5.1.2 861 | is-binary-path: 2.1.0 862 | is-glob: 4.0.3 863 | normalize-path: 3.0.0 864 | readdirp: 3.6.0 865 | optionalDependencies: 866 | fsevents: 2.3.2 867 | dev: true 868 | 869 | /cli-truncate@3.1.0: 870 | resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} 871 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 872 | dependencies: 873 | slice-ansi: 5.0.0 874 | string-width: 5.1.2 875 | dev: true 876 | 877 | /concordance@5.0.4: 878 | resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} 879 | engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} 880 | dependencies: 881 | date-time: 3.1.0 882 | esutils: 2.0.3 883 | fast-diff: 1.2.0 884 | js-string-escape: 1.0.1 885 | lodash: 4.17.21 886 | md5-hex: 3.0.1 887 | semver: 7.5.0 888 | well-known-symbols: 2.0.0 889 | dev: true 890 | 891 | /cookie@0.4.2: 892 | resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} 893 | engines: {node: '>= 0.6'} 894 | dev: true 895 | 896 | /cron-schedule@3.0.6: 897 | resolution: {integrity: sha512-izfGgKyzzIyLaeb1EtZ3KbglkS6AKp9cv7LxmiyoOu+fXfol1tQDC0Cof0enVZGNtudTHW+3lfuW9ZkLQss4Wg==} 898 | dev: true 899 | 900 | /cross-spawn@7.0.3: 901 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 902 | engines: {node: '>= 8'} 903 | dependencies: 904 | path-key: 3.1.1 905 | shebang-command: 2.0.0 906 | which: 2.0.2 907 | dev: true 908 | 909 | /date-time@3.1.0: 910 | resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} 911 | engines: {node: '>=6'} 912 | dependencies: 913 | time-zone: 1.0.0 914 | dev: true 915 | 916 | /debug@4.3.4: 917 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 918 | engines: {node: '>=6.0'} 919 | peerDependencies: 920 | supports-color: '*' 921 | peerDependenciesMeta: 922 | supports-color: 923 | optional: true 924 | dependencies: 925 | ms: 2.1.2 926 | dev: true 927 | 928 | /deep-eql@4.1.3: 929 | resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} 930 | engines: {node: '>=6'} 931 | dependencies: 932 | type-detect: 4.0.8 933 | dev: true 934 | 935 | /diff@5.1.0: 936 | resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} 937 | engines: {node: '>=0.3.1'} 938 | dev: true 939 | 940 | /dotenv@10.0.0: 941 | resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} 942 | engines: {node: '>=10'} 943 | dev: true 944 | 945 | /eastasianwidth@0.2.0: 946 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 947 | dev: true 948 | 949 | /emoji-regex@9.2.2: 950 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 951 | dev: true 952 | 953 | /esbuild@0.16.3: 954 | resolution: {integrity: sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg==} 955 | engines: {node: '>=12'} 956 | hasBin: true 957 | requiresBuild: true 958 | optionalDependencies: 959 | '@esbuild/android-arm': 0.16.3 960 | '@esbuild/android-arm64': 0.16.3 961 | '@esbuild/android-x64': 0.16.3 962 | '@esbuild/darwin-arm64': 0.16.3 963 | '@esbuild/darwin-x64': 0.16.3 964 | '@esbuild/freebsd-arm64': 0.16.3 965 | '@esbuild/freebsd-x64': 0.16.3 966 | '@esbuild/linux-arm': 0.16.3 967 | '@esbuild/linux-arm64': 0.16.3 968 | '@esbuild/linux-ia32': 0.16.3 969 | '@esbuild/linux-loong64': 0.16.3 970 | '@esbuild/linux-mips64el': 0.16.3 971 | '@esbuild/linux-ppc64': 0.16.3 972 | '@esbuild/linux-riscv64': 0.16.3 973 | '@esbuild/linux-s390x': 0.16.3 974 | '@esbuild/linux-x64': 0.16.3 975 | '@esbuild/netbsd-x64': 0.16.3 976 | '@esbuild/openbsd-x64': 0.16.3 977 | '@esbuild/sunos-x64': 0.16.3 978 | '@esbuild/win32-arm64': 0.16.3 979 | '@esbuild/win32-ia32': 0.16.3 980 | '@esbuild/win32-x64': 0.16.3 981 | dev: true 982 | 983 | /esbuild@0.17.17: 984 | resolution: {integrity: sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==} 985 | engines: {node: '>=12'} 986 | hasBin: true 987 | requiresBuild: true 988 | optionalDependencies: 989 | '@esbuild/android-arm': 0.17.17 990 | '@esbuild/android-arm64': 0.17.17 991 | '@esbuild/android-x64': 0.17.17 992 | '@esbuild/darwin-arm64': 0.17.17 993 | '@esbuild/darwin-x64': 0.17.17 994 | '@esbuild/freebsd-arm64': 0.17.17 995 | '@esbuild/freebsd-x64': 0.17.17 996 | '@esbuild/linux-arm': 0.17.17 997 | '@esbuild/linux-arm64': 0.17.17 998 | '@esbuild/linux-ia32': 0.17.17 999 | '@esbuild/linux-loong64': 0.17.17 1000 | '@esbuild/linux-mips64el': 0.17.17 1001 | '@esbuild/linux-ppc64': 0.17.17 1002 | '@esbuild/linux-riscv64': 0.17.17 1003 | '@esbuild/linux-s390x': 0.17.17 1004 | '@esbuild/linux-x64': 0.17.17 1005 | '@esbuild/netbsd-x64': 0.17.17 1006 | '@esbuild/openbsd-x64': 0.17.17 1007 | '@esbuild/sunos-x64': 0.17.17 1008 | '@esbuild/win32-arm64': 0.17.17 1009 | '@esbuild/win32-ia32': 0.17.17 1010 | '@esbuild/win32-x64': 0.17.17 1011 | dev: true 1012 | 1013 | /escape-string-regexp@4.0.0: 1014 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1015 | engines: {node: '>=10'} 1016 | dev: true 1017 | 1018 | /estree-walker@0.6.1: 1019 | resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} 1020 | dev: true 1021 | 1022 | /esutils@2.0.3: 1023 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1024 | engines: {node: '>=0.10.0'} 1025 | dev: true 1026 | 1027 | /eventsource-parser@1.0.0: 1028 | resolution: {integrity: sha512-9jgfSCa3dmEme2ES3mPByGXfgZ87VbP97tng1G2nWwWx6bV2nYxm2AWCrbQjXToSe+yYlqaZNtxffR9IeQr95g==} 1029 | engines: {node: '>=14.18'} 1030 | dev: false 1031 | 1032 | /execa@6.1.0: 1033 | resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} 1034 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1035 | dependencies: 1036 | cross-spawn: 7.0.3 1037 | get-stream: 6.0.1 1038 | human-signals: 3.0.1 1039 | is-stream: 3.0.0 1040 | merge-stream: 2.0.0 1041 | npm-run-path: 5.1.0 1042 | onetime: 6.0.0 1043 | signal-exit: 3.0.7 1044 | strip-final-newline: 3.0.0 1045 | dev: true 1046 | 1047 | /fast-diff@1.2.0: 1048 | resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} 1049 | dev: true 1050 | 1051 | /fill-range@7.0.1: 1052 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1053 | engines: {node: '>=8'} 1054 | dependencies: 1055 | to-regex-range: 5.0.1 1056 | dev: true 1057 | 1058 | /fsevents@2.3.2: 1059 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1060 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1061 | os: [darwin] 1062 | requiresBuild: true 1063 | dev: true 1064 | optional: true 1065 | 1066 | /get-func-name@2.0.0: 1067 | resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} 1068 | dev: true 1069 | 1070 | /get-stream@6.0.1: 1071 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1072 | engines: {node: '>=10'} 1073 | dev: true 1074 | 1075 | /glob-parent@5.1.2: 1076 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1077 | engines: {node: '>= 6'} 1078 | dependencies: 1079 | is-glob: 4.0.3 1080 | dev: true 1081 | 1082 | /gpt3-tokenizer@1.1.5: 1083 | resolution: {integrity: sha512-O9iCL8MqGR0Oe9wTh0YftzIbysypNQmS5a5JG3cB3M4LMYjlAVvNnf8LUzVY9MrI7tj+YLY356uHtO2lLX2HpA==} 1084 | engines: {node: '>=12'} 1085 | dependencies: 1086 | array-keyed-map: 2.1.3 1087 | dev: false 1088 | 1089 | /hono@3.1.0: 1090 | resolution: {integrity: sha512-5hVyzp3mrAjxRwy6Uj7su0pIISGTKVX2tE4YiYO81V3w1KoYZEmz3g6X6P9nRLQmaABDWXmnL9GqEzBhTAPeog==} 1091 | engines: {node: '>=16.0.0'} 1092 | dev: false 1093 | 1094 | /html-rewriter-wasm@0.4.1: 1095 | resolution: {integrity: sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q==} 1096 | dev: true 1097 | 1098 | /http-cache-semantics@4.1.1: 1099 | resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} 1100 | dev: true 1101 | 1102 | /human-signals@3.0.1: 1103 | resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} 1104 | engines: {node: '>=12.20.0'} 1105 | dev: true 1106 | 1107 | /is-binary-path@2.1.0: 1108 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1109 | engines: {node: '>=8'} 1110 | dependencies: 1111 | binary-extensions: 2.2.0 1112 | dev: true 1113 | 1114 | /is-extglob@2.1.1: 1115 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1116 | engines: {node: '>=0.10.0'} 1117 | dev: true 1118 | 1119 | /is-fullwidth-code-point@4.0.0: 1120 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} 1121 | engines: {node: '>=12'} 1122 | dev: true 1123 | 1124 | /is-glob@4.0.3: 1125 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1126 | engines: {node: '>=0.10.0'} 1127 | dependencies: 1128 | is-extglob: 2.1.1 1129 | dev: true 1130 | 1131 | /is-number@7.0.0: 1132 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1133 | engines: {node: '>=0.12.0'} 1134 | dev: true 1135 | 1136 | /is-stream@3.0.0: 1137 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 1138 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1139 | dev: true 1140 | 1141 | /isexe@2.0.0: 1142 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1143 | dev: true 1144 | 1145 | /js-string-escape@1.0.1: 1146 | resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} 1147 | engines: {node: '>= 0.8'} 1148 | dev: true 1149 | 1150 | /jsonc-parser@3.2.0: 1151 | resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} 1152 | dev: true 1153 | 1154 | /kleur@4.1.5: 1155 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1156 | engines: {node: '>=6'} 1157 | dev: true 1158 | 1159 | /local-pkg@0.4.3: 1160 | resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} 1161 | engines: {node: '>=14'} 1162 | dev: true 1163 | 1164 | /lodash@4.17.21: 1165 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1166 | dev: true 1167 | 1168 | /loupe@2.3.6: 1169 | resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} 1170 | dependencies: 1171 | get-func-name: 2.0.0 1172 | dev: true 1173 | 1174 | /lru-cache@6.0.0: 1175 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1176 | engines: {node: '>=10'} 1177 | dependencies: 1178 | yallist: 4.0.0 1179 | dev: true 1180 | 1181 | /magic-string@0.25.9: 1182 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 1183 | dependencies: 1184 | sourcemap-codec: 1.4.8 1185 | dev: true 1186 | 1187 | /magic-string@0.30.0: 1188 | resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} 1189 | engines: {node: '>=12'} 1190 | dependencies: 1191 | '@jridgewell/sourcemap-codec': 1.4.15 1192 | dev: true 1193 | 1194 | /md5-hex@3.0.1: 1195 | resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} 1196 | engines: {node: '>=8'} 1197 | dependencies: 1198 | blueimp-md5: 2.19.0 1199 | dev: true 1200 | 1201 | /merge-stream@2.0.0: 1202 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1203 | dev: true 1204 | 1205 | /mime@3.0.0: 1206 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1207 | engines: {node: '>=10.0.0'} 1208 | hasBin: true 1209 | dev: true 1210 | 1211 | /mimic-fn@4.0.0: 1212 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 1213 | engines: {node: '>=12'} 1214 | dev: true 1215 | 1216 | /miniflare@2.13.0: 1217 | resolution: {integrity: sha512-ayNhVa4a6bZiOuHtrPmOt4BCYcmW1fBQ/+qGL85smq1m2OBBm3aUs6f4ISf38xH8tk+qewgmAywetyVtn6KHPw==} 1218 | engines: {node: '>=16.13'} 1219 | hasBin: true 1220 | peerDependencies: 1221 | '@miniflare/storage-redis': 2.13.0 1222 | cron-schedule: ^3.0.4 1223 | ioredis: ^4.27.9 1224 | peerDependenciesMeta: 1225 | '@miniflare/storage-redis': 1226 | optional: true 1227 | cron-schedule: 1228 | optional: true 1229 | ioredis: 1230 | optional: true 1231 | dependencies: 1232 | '@miniflare/cache': 2.13.0 1233 | '@miniflare/cli-parser': 2.13.0 1234 | '@miniflare/core': 2.13.0 1235 | '@miniflare/d1': 2.13.0 1236 | '@miniflare/durable-objects': 2.13.0 1237 | '@miniflare/html-rewriter': 2.13.0 1238 | '@miniflare/http-server': 2.13.0 1239 | '@miniflare/kv': 2.13.0 1240 | '@miniflare/queues': 2.13.0 1241 | '@miniflare/r2': 2.13.0 1242 | '@miniflare/runner-vm': 2.13.0 1243 | '@miniflare/scheduler': 2.13.0 1244 | '@miniflare/shared': 2.13.0 1245 | '@miniflare/sites': 2.13.0 1246 | '@miniflare/storage-file': 2.13.0 1247 | '@miniflare/storage-memory': 2.13.0 1248 | '@miniflare/web-sockets': 2.13.0 1249 | kleur: 4.1.5 1250 | semiver: 1.1.0 1251 | source-map-support: 0.5.21 1252 | undici: 5.20.0 1253 | transitivePeerDependencies: 1254 | - bufferutil 1255 | - utf-8-validate 1256 | dev: true 1257 | 1258 | /mlly@1.2.0: 1259 | resolution: {integrity: sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==} 1260 | dependencies: 1261 | acorn: 8.8.2 1262 | pathe: 1.1.0 1263 | pkg-types: 1.0.2 1264 | ufo: 1.1.1 1265 | dev: true 1266 | 1267 | /ms@2.1.2: 1268 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1269 | dev: true 1270 | 1271 | /mustache@4.2.0: 1272 | resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} 1273 | hasBin: true 1274 | dev: true 1275 | 1276 | /nanoid@3.3.6: 1277 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1278 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1279 | hasBin: true 1280 | dev: true 1281 | 1282 | /node-forge@1.3.1: 1283 | resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} 1284 | engines: {node: '>= 6.13.0'} 1285 | dev: true 1286 | 1287 | /normalize-path@3.0.0: 1288 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1289 | engines: {node: '>=0.10.0'} 1290 | dev: true 1291 | 1292 | /npm-run-path@5.1.0: 1293 | resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} 1294 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1295 | dependencies: 1296 | path-key: 4.0.0 1297 | dev: true 1298 | 1299 | /npx-import@1.1.4: 1300 | resolution: {integrity: sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==} 1301 | dependencies: 1302 | execa: 6.1.0 1303 | parse-package-name: 1.0.0 1304 | semver: 7.5.0 1305 | validate-npm-package-name: 4.0.0 1306 | dev: true 1307 | 1308 | /onetime@6.0.0: 1309 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 1310 | engines: {node: '>=12'} 1311 | dependencies: 1312 | mimic-fn: 4.0.0 1313 | dev: true 1314 | 1315 | /p-limit@4.0.0: 1316 | resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} 1317 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1318 | dependencies: 1319 | yocto-queue: 1.0.0 1320 | dev: true 1321 | 1322 | /parse-package-name@1.0.0: 1323 | resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==} 1324 | dev: true 1325 | 1326 | /path-key@3.1.1: 1327 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1328 | engines: {node: '>=8'} 1329 | dev: true 1330 | 1331 | /path-key@4.0.0: 1332 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 1333 | engines: {node: '>=12'} 1334 | dev: true 1335 | 1336 | /path-to-regexp@6.2.1: 1337 | resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} 1338 | dev: true 1339 | 1340 | /pathe@1.1.0: 1341 | resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} 1342 | dev: true 1343 | 1344 | /pathval@1.1.1: 1345 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 1346 | dev: true 1347 | 1348 | /picocolors@1.0.0: 1349 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1350 | dev: true 1351 | 1352 | /picomatch@2.3.1: 1353 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1354 | engines: {node: '>=8.6'} 1355 | dev: true 1356 | 1357 | /pkg-types@1.0.2: 1358 | resolution: {integrity: sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==} 1359 | dependencies: 1360 | jsonc-parser: 3.2.0 1361 | mlly: 1.2.0 1362 | pathe: 1.1.0 1363 | dev: true 1364 | 1365 | /postcss@8.4.23: 1366 | resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} 1367 | engines: {node: ^10 || ^12 || >=14} 1368 | dependencies: 1369 | nanoid: 3.3.6 1370 | picocolors: 1.0.0 1371 | source-map-js: 1.0.2 1372 | dev: true 1373 | 1374 | /pretty-format@27.5.1: 1375 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} 1376 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1377 | dependencies: 1378 | ansi-regex: 5.0.1 1379 | ansi-styles: 5.2.0 1380 | react-is: 17.0.2 1381 | dev: true 1382 | 1383 | /react-is@17.0.2: 1384 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 1385 | dev: true 1386 | 1387 | /readdirp@3.6.0: 1388 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1389 | engines: {node: '>=8.10.0'} 1390 | dependencies: 1391 | picomatch: 2.3.1 1392 | dev: true 1393 | 1394 | /rollup-plugin-inject@3.0.2: 1395 | resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} 1396 | deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. 1397 | dependencies: 1398 | estree-walker: 0.6.1 1399 | magic-string: 0.25.9 1400 | rollup-pluginutils: 2.8.2 1401 | dev: true 1402 | 1403 | /rollup-plugin-node-polyfills@0.2.1: 1404 | resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} 1405 | dependencies: 1406 | rollup-plugin-inject: 3.0.2 1407 | dev: true 1408 | 1409 | /rollup-pluginutils@2.8.2: 1410 | resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} 1411 | dependencies: 1412 | estree-walker: 0.6.1 1413 | dev: true 1414 | 1415 | /rollup@3.20.7: 1416 | resolution: {integrity: sha512-P7E2zezKSLhWnTz46XxjSmInrbOCiul1yf+kJccMxT56vxjHwCbDfoLbiqFgu+WQoo9ij2PkraYaBstgB2prBA==} 1417 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 1418 | hasBin: true 1419 | optionalDependencies: 1420 | fsevents: 2.3.2 1421 | dev: true 1422 | 1423 | /selfsigned@2.1.1: 1424 | resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==} 1425 | engines: {node: '>=10'} 1426 | dependencies: 1427 | node-forge: 1.3.1 1428 | dev: true 1429 | 1430 | /semiver@1.1.0: 1431 | resolution: {integrity: sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==} 1432 | engines: {node: '>=6'} 1433 | dev: true 1434 | 1435 | /semver@7.5.0: 1436 | resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} 1437 | engines: {node: '>=10'} 1438 | hasBin: true 1439 | dependencies: 1440 | lru-cache: 6.0.0 1441 | dev: true 1442 | 1443 | /set-cookie-parser@2.6.0: 1444 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 1445 | dev: true 1446 | 1447 | /shebang-command@2.0.0: 1448 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1449 | engines: {node: '>=8'} 1450 | dependencies: 1451 | shebang-regex: 3.0.0 1452 | dev: true 1453 | 1454 | /shebang-regex@3.0.0: 1455 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1456 | engines: {node: '>=8'} 1457 | dev: true 1458 | 1459 | /siginfo@2.0.0: 1460 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1461 | dev: true 1462 | 1463 | /signal-exit@3.0.7: 1464 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1465 | dev: true 1466 | 1467 | /slice-ansi@5.0.0: 1468 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} 1469 | engines: {node: '>=12'} 1470 | dependencies: 1471 | ansi-styles: 6.2.1 1472 | is-fullwidth-code-point: 4.0.0 1473 | dev: true 1474 | 1475 | /source-map-js@1.0.2: 1476 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1477 | engines: {node: '>=0.10.0'} 1478 | dev: true 1479 | 1480 | /source-map-support@0.5.21: 1481 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1482 | dependencies: 1483 | buffer-from: 1.1.2 1484 | source-map: 0.6.1 1485 | dev: true 1486 | 1487 | /source-map@0.6.1: 1488 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1489 | engines: {node: '>=0.10.0'} 1490 | dev: true 1491 | 1492 | /source-map@0.7.4: 1493 | resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} 1494 | engines: {node: '>= 8'} 1495 | dev: true 1496 | 1497 | /sourcemap-codec@1.4.8: 1498 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 1499 | deprecated: Please use @jridgewell/sourcemap-codec instead 1500 | dev: true 1501 | 1502 | /stack-trace@0.0.10: 1503 | resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} 1504 | dev: true 1505 | 1506 | /stackback@0.0.2: 1507 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1508 | dev: true 1509 | 1510 | /std-env@3.3.2: 1511 | resolution: {integrity: sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==} 1512 | dev: true 1513 | 1514 | /streamsearch@1.1.0: 1515 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1516 | engines: {node: '>=10.0.0'} 1517 | dev: true 1518 | 1519 | /string-width@5.1.2: 1520 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1521 | engines: {node: '>=12'} 1522 | dependencies: 1523 | eastasianwidth: 0.2.0 1524 | emoji-regex: 9.2.2 1525 | strip-ansi: 7.0.1 1526 | dev: true 1527 | 1528 | /strip-ansi@7.0.1: 1529 | resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} 1530 | engines: {node: '>=12'} 1531 | dependencies: 1532 | ansi-regex: 6.0.1 1533 | dev: true 1534 | 1535 | /strip-final-newline@3.0.0: 1536 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 1537 | engines: {node: '>=12'} 1538 | dev: true 1539 | 1540 | /strip-literal@1.0.1: 1541 | resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} 1542 | dependencies: 1543 | acorn: 8.8.2 1544 | dev: true 1545 | 1546 | /time-zone@1.0.0: 1547 | resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} 1548 | engines: {node: '>=4'} 1549 | dev: true 1550 | 1551 | /tinybench@2.4.0: 1552 | resolution: {integrity: sha512-iyziEiyFxX4kyxSp+MtY1oCH/lvjH3PxFN8PGCDeqcZWAJ/i+9y+nL85w99PxVzrIvew/GSkSbDYtiGVa85Afg==} 1553 | dev: true 1554 | 1555 | /tinypool@0.4.0: 1556 | resolution: {integrity: sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==} 1557 | engines: {node: '>=14.0.0'} 1558 | dev: true 1559 | 1560 | /tinyspy@1.1.1: 1561 | resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} 1562 | engines: {node: '>=14.0.0'} 1563 | dev: true 1564 | 1565 | /tinyspy@2.1.0: 1566 | resolution: {integrity: sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==} 1567 | engines: {node: '>=14.0.0'} 1568 | dev: true 1569 | 1570 | /to-regex-range@5.0.1: 1571 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1572 | engines: {node: '>=8.0'} 1573 | dependencies: 1574 | is-number: 7.0.0 1575 | dev: true 1576 | 1577 | /type-detect@4.0.8: 1578 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 1579 | engines: {node: '>=4'} 1580 | dev: true 1581 | 1582 | /typescript@5.0.4: 1583 | resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} 1584 | engines: {node: '>=12.20'} 1585 | hasBin: true 1586 | dev: true 1587 | 1588 | /ufo@1.1.1: 1589 | resolution: {integrity: sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==} 1590 | dev: true 1591 | 1592 | /undici@5.20.0: 1593 | resolution: {integrity: sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==} 1594 | engines: {node: '>=12.18'} 1595 | dependencies: 1596 | busboy: 1.6.0 1597 | dev: true 1598 | 1599 | /urlpattern-polyfill@4.0.3: 1600 | resolution: {integrity: sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ==} 1601 | dev: true 1602 | 1603 | /validate-npm-package-name@4.0.0: 1604 | resolution: {integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==} 1605 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1606 | dependencies: 1607 | builtins: 5.0.1 1608 | dev: true 1609 | 1610 | /vite-node@0.29.8(@types/node@18.15.13): 1611 | resolution: {integrity: sha512-b6OtCXfk65L6SElVM20q5G546yu10/kNrhg08afEoWlFRJXFq9/6glsvSVY+aI6YeC1tu2TtAqI2jHEQmOmsFw==} 1612 | engines: {node: '>=v14.16.0'} 1613 | hasBin: true 1614 | dependencies: 1615 | cac: 6.7.14 1616 | debug: 4.3.4 1617 | mlly: 1.2.0 1618 | pathe: 1.1.0 1619 | picocolors: 1.0.0 1620 | vite: 4.3.1(@types/node@18.15.13) 1621 | transitivePeerDependencies: 1622 | - '@types/node' 1623 | - less 1624 | - sass 1625 | - stylus 1626 | - sugarss 1627 | - supports-color 1628 | - terser 1629 | dev: true 1630 | 1631 | /vite-node@0.30.1(@types/node@18.15.13): 1632 | resolution: {integrity: sha512-vTikpU/J7e6LU/8iM3dzBo8ZhEiKZEKRznEMm+mJh95XhWaPrJQraT/QsT2NWmuEf+zgAoMe64PKT7hfZ1Njmg==} 1633 | engines: {node: '>=v14.18.0'} 1634 | hasBin: true 1635 | dependencies: 1636 | cac: 6.7.14 1637 | debug: 4.3.4 1638 | mlly: 1.2.0 1639 | pathe: 1.1.0 1640 | picocolors: 1.0.0 1641 | vite: 4.3.1(@types/node@18.15.13) 1642 | transitivePeerDependencies: 1643 | - '@types/node' 1644 | - less 1645 | - sass 1646 | - stylus 1647 | - sugarss 1648 | - supports-color 1649 | - terser 1650 | dev: true 1651 | 1652 | /vite@4.3.1(@types/node@18.15.13): 1653 | resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} 1654 | engines: {node: ^14.18.0 || >=16.0.0} 1655 | hasBin: true 1656 | peerDependencies: 1657 | '@types/node': '>= 14' 1658 | less: '*' 1659 | sass: '*' 1660 | stylus: '*' 1661 | sugarss: '*' 1662 | terser: ^5.4.0 1663 | peerDependenciesMeta: 1664 | '@types/node': 1665 | optional: true 1666 | less: 1667 | optional: true 1668 | sass: 1669 | optional: true 1670 | stylus: 1671 | optional: true 1672 | sugarss: 1673 | optional: true 1674 | terser: 1675 | optional: true 1676 | dependencies: 1677 | '@types/node': 18.15.13 1678 | esbuild: 0.17.17 1679 | postcss: 8.4.23 1680 | rollup: 3.20.7 1681 | optionalDependencies: 1682 | fsevents: 2.3.2 1683 | dev: true 1684 | 1685 | /vitest@0.29.8: 1686 | resolution: {integrity: sha512-JIAVi2GK5cvA6awGpH0HvH/gEG9PZ0a/WoxdiV3PmqK+3CjQMf8c+J/Vhv4mdZ2nRyXFw66sAg6qz7VNkaHfDQ==} 1687 | engines: {node: '>=v14.16.0'} 1688 | hasBin: true 1689 | peerDependencies: 1690 | '@edge-runtime/vm': '*' 1691 | '@vitest/browser': '*' 1692 | '@vitest/ui': '*' 1693 | happy-dom: '*' 1694 | jsdom: '*' 1695 | playwright: '*' 1696 | safaridriver: '*' 1697 | webdriverio: '*' 1698 | peerDependenciesMeta: 1699 | '@edge-runtime/vm': 1700 | optional: true 1701 | '@vitest/browser': 1702 | optional: true 1703 | '@vitest/ui': 1704 | optional: true 1705 | happy-dom: 1706 | optional: true 1707 | jsdom: 1708 | optional: true 1709 | playwright: 1710 | optional: true 1711 | safaridriver: 1712 | optional: true 1713 | webdriverio: 1714 | optional: true 1715 | dependencies: 1716 | '@types/chai': 4.3.4 1717 | '@types/chai-subset': 1.3.3 1718 | '@types/node': 18.15.13 1719 | '@vitest/expect': 0.29.8 1720 | '@vitest/runner': 0.29.8 1721 | '@vitest/spy': 0.29.8 1722 | '@vitest/utils': 0.29.8 1723 | acorn: 8.8.2 1724 | acorn-walk: 8.2.0 1725 | cac: 6.7.14 1726 | chai: 4.3.7 1727 | debug: 4.3.4 1728 | local-pkg: 0.4.3 1729 | pathe: 1.1.0 1730 | picocolors: 1.0.0 1731 | source-map: 0.6.1 1732 | std-env: 3.3.2 1733 | strip-literal: 1.0.1 1734 | tinybench: 2.4.0 1735 | tinypool: 0.4.0 1736 | tinyspy: 1.1.1 1737 | vite: 4.3.1(@types/node@18.15.13) 1738 | vite-node: 0.29.8(@types/node@18.15.13) 1739 | why-is-node-running: 2.2.2 1740 | transitivePeerDependencies: 1741 | - less 1742 | - sass 1743 | - stylus 1744 | - sugarss 1745 | - supports-color 1746 | - terser 1747 | dev: true 1748 | 1749 | /vitest@0.30.1: 1750 | resolution: {integrity: sha512-y35WTrSTlTxfMLttgQk4rHcaDkbHQwDP++SNwPb+7H8yb13Q3cu2EixrtHzF27iZ8v0XCciSsLg00RkPAzB/aA==} 1751 | engines: {node: '>=v14.18.0'} 1752 | hasBin: true 1753 | peerDependencies: 1754 | '@edge-runtime/vm': '*' 1755 | '@vitest/browser': '*' 1756 | '@vitest/ui': '*' 1757 | happy-dom: '*' 1758 | jsdom: '*' 1759 | playwright: '*' 1760 | safaridriver: '*' 1761 | webdriverio: '*' 1762 | peerDependenciesMeta: 1763 | '@edge-runtime/vm': 1764 | optional: true 1765 | '@vitest/browser': 1766 | optional: true 1767 | '@vitest/ui': 1768 | optional: true 1769 | happy-dom: 1770 | optional: true 1771 | jsdom: 1772 | optional: true 1773 | playwright: 1774 | optional: true 1775 | safaridriver: 1776 | optional: true 1777 | webdriverio: 1778 | optional: true 1779 | dependencies: 1780 | '@types/chai': 4.3.4 1781 | '@types/chai-subset': 1.3.3 1782 | '@types/node': 18.15.13 1783 | '@vitest/expect': 0.30.1 1784 | '@vitest/runner': 0.30.1 1785 | '@vitest/snapshot': 0.30.1 1786 | '@vitest/spy': 0.30.1 1787 | '@vitest/utils': 0.30.1 1788 | acorn: 8.8.2 1789 | acorn-walk: 8.2.0 1790 | cac: 6.7.14 1791 | chai: 4.3.7 1792 | concordance: 5.0.4 1793 | debug: 4.3.4 1794 | local-pkg: 0.4.3 1795 | magic-string: 0.30.0 1796 | pathe: 1.1.0 1797 | picocolors: 1.0.0 1798 | source-map: 0.6.1 1799 | std-env: 3.3.2 1800 | strip-literal: 1.0.1 1801 | tinybench: 2.4.0 1802 | tinypool: 0.4.0 1803 | vite: 4.3.1(@types/node@18.15.13) 1804 | vite-node: 0.30.1(@types/node@18.15.13) 1805 | why-is-node-running: 2.2.2 1806 | transitivePeerDependencies: 1807 | - less 1808 | - sass 1809 | - stylus 1810 | - sugarss 1811 | - supports-color 1812 | - terser 1813 | dev: true 1814 | 1815 | /well-known-symbols@2.0.0: 1816 | resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} 1817 | engines: {node: '>=6'} 1818 | dev: true 1819 | 1820 | /which@2.0.2: 1821 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1822 | engines: {node: '>= 8'} 1823 | hasBin: true 1824 | dependencies: 1825 | isexe: 2.0.0 1826 | dev: true 1827 | 1828 | /why-is-node-running@2.2.2: 1829 | resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} 1830 | engines: {node: '>=8'} 1831 | hasBin: true 1832 | dependencies: 1833 | siginfo: 2.0.0 1834 | stackback: 0.0.2 1835 | dev: true 1836 | 1837 | /wrangler@2.16.0: 1838 | resolution: {integrity: sha512-jhkOmEAF7jH58VvnGx7Uqjs2u2T17e/5r9W3OsqESyBjc/8ALUYuwqQ2gr8JsXFny/cE0ysJas0fdY9wggWMCw==} 1839 | engines: {node: '>=16.13.0'} 1840 | hasBin: true 1841 | dependencies: 1842 | '@cloudflare/kv-asset-handler': 0.2.0 1843 | '@esbuild-plugins/node-globals-polyfill': 0.1.1(esbuild@0.16.3) 1844 | '@esbuild-plugins/node-modules-polyfill': 0.1.4(esbuild@0.16.3) 1845 | '@miniflare/core': 2.13.0 1846 | '@miniflare/d1': 2.13.0 1847 | '@miniflare/durable-objects': 2.13.0 1848 | blake3-wasm: 2.1.5 1849 | chokidar: 3.5.3 1850 | esbuild: 0.16.3 1851 | miniflare: 2.13.0 1852 | nanoid: 3.3.6 1853 | path-to-regexp: 6.2.1 1854 | selfsigned: 2.1.1 1855 | source-map: 0.7.4 1856 | xxhash-wasm: 1.0.2 1857 | optionalDependencies: 1858 | fsevents: 2.3.2 1859 | transitivePeerDependencies: 1860 | - '@miniflare/storage-redis' 1861 | - bufferutil 1862 | - cron-schedule 1863 | - ioredis 1864 | - utf-8-validate 1865 | dev: true 1866 | 1867 | /ws@8.13.0: 1868 | resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} 1869 | engines: {node: '>=10.0.0'} 1870 | peerDependencies: 1871 | bufferutil: ^4.0.1 1872 | utf-8-validate: '>=5.0.2' 1873 | peerDependenciesMeta: 1874 | bufferutil: 1875 | optional: true 1876 | utf-8-validate: 1877 | optional: true 1878 | dev: true 1879 | 1880 | /xxhash-wasm@1.0.2: 1881 | resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} 1882 | dev: true 1883 | 1884 | /yallist@4.0.0: 1885 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1886 | dev: true 1887 | 1888 | /yocto-queue@1.0.0: 1889 | resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} 1890 | engines: {node: '>=12.20'} 1891 | dev: true 1892 | 1893 | /youch@2.2.2: 1894 | resolution: {integrity: sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==} 1895 | dependencies: 1896 | '@types/stack-trace': 0.0.29 1897 | cookie: 0.4.2 1898 | mustache: 4.2.0 1899 | stack-trace: 0.0.10 1900 | dev: true 1901 | --------------------------------------------------------------------------------