├── .gitignore ├── .editorconfig ├── wrangler.toml ├── biome.json ├── package.json ├── src └── index.ts ├── tsconfig.json ├── .github └── workflows │ └── deploy.yaml ├── LICENSE ├── lefthook.yaml ├── README.md └── pnpm-lock.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | worker 4 | package-lock.json 5 | yarn.lock 6 | .cargo-ok 7 | 8 | # Output of 'npm pack' 9 | *.tgz 10 | 11 | # wrangler files 12 | .wrangler 13 | .dev.vars 14 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = true 12 | insert_final_newline = true 13 | -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- 1 | name = "cf-worker-hono-template" 2 | main="src/index.ts" 3 | 4 | compatibility_date = "2024-05-19" 5 | workers_dev = true 6 | upload_source_maps = true 7 | 8 | [dev] 9 | port = 8787 10 | 11 | [env.dev] 12 | vars = { ENVIRONMENT = "dev" } 13 | 14 | [env.production] 15 | vars = { ENVIRONMENT = "prod" } 16 | -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", 3 | "files": { 4 | "ignore": ["node_modules"] 5 | }, 6 | "formatter": { 7 | "indentStyle": "space" 8 | }, 9 | "linter": { 10 | "rules": { 11 | "style": { 12 | "all": false 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cf-worker-hono-template", 3 | "version": "0.1.0", 4 | "main": "src/index.ts", 5 | "scripts": { 6 | "dev": "wrangler dev src/index.ts", 7 | "deploy": "wrangler deploy src/index.ts", 8 | "postinstall": "lefthook install" 9 | }, 10 | "license": "MIT", 11 | "dependencies": { 12 | "hono": "4.4.7" 13 | }, 14 | "devDependencies": { 15 | "@biomejs/biome": "1.8.2", 16 | "@cloudflare/workers-types": "4.20240620.0", 17 | "lefthook": "1.6.18", 18 | "typescript": "5.5.2", 19 | "wrangler": "3.61.0" 20 | }, 21 | "packageManager": "pnpm@9.3.0" 22 | } 23 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { Hono } from "hono"; 2 | import { logger } from "hono/logger"; 3 | import { secureHeaders } from "hono/secure-headers"; 4 | import { timing } from "hono/timing"; 5 | 6 | type Env = { 7 | ENVIRONMENT: "dev" | "prod"; 8 | }; 9 | 10 | interface HonoContext { 11 | Bindings: Env; 12 | /** 13 | * injected context by `c.set()` 14 | * see https://hono.dev/api/context#set-get 15 | */ 16 | Variables: { 17 | message: string; 18 | }; 19 | } 20 | 21 | const app = new Hono(); 22 | app.use(timing()); 23 | app.use(logger()); 24 | app.use(secureHeaders()); 25 | 26 | app.get("/", (c) => { 27 | return c.text("Hello!"); 28 | }); 29 | 30 | export default app; 31 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | // Base Options recommended for all projects 4 | "esModuleInterop": true, 5 | "skipLibCheck": true, 6 | "target": "ESNext", 7 | "allowJs": true, 8 | "resolveJsonModule": true, 9 | "moduleDetection": "force", 10 | "isolatedModules": true, 11 | "verbatimModuleSyntax": true, 12 | // Enable strict type checking so you can catch bugs early 13 | "strict": true, 14 | "noUncheckedIndexedAccess": true, 15 | "noImplicitOverride": true, 16 | // We are not transpiling, so preserve our source code and do not emit files 17 | "module": "ESNext", 18 | "moduleResolution": "Bundler", 19 | "noEmit": true, 20 | "lib": ["ESNext", "DOM"], 21 | 22 | // hono jsx 23 | "jsx": "react-jsx", 24 | "jsxImportSource": "hono/jsx" 25 | }, 26 | // Include the necessary files for your project 27 | "include": ["**/*.ts", "**/*.tsx"], 28 | "exclude": ["node_modules"], 29 | "types": ["@cloudflare/workers-types/2023/07-01"] 30 | } 31 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yaml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | deploy: 10 | runs-on: ubuntu-latest 11 | name: Deploy 12 | steps: 13 | - uses: actions/checkout@v4 14 | - uses: pnpm/action-setup@v3 15 | with: 16 | version: 8 17 | - uses: actions/setup-node@v4 18 | with: 19 | node-version: 'lts/Iron' 20 | cache: 'pnpm' 21 | - name: Install dependencies 22 | run: pnpm install 23 | - name: Set wrangler version 24 | id: wrangler 25 | run: echo "version=$(jq -r .devDependencies.wrangler package.json)" >> "$GITHUB_OUTPUT" 26 | - name: Deploy 27 | uses: cloudflare/wrangler-action@v3 28 | with: 29 | wranglerVersion: ${{ steps.wrangler.outputs.version }} 30 | apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} 31 | accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} 32 | command: deploy --minify src/index.ts 33 | env: 34 | SOME_ENV: ${{ secrets.SOME_ENV }} 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 zoubingwu 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 | -------------------------------------------------------------------------------- /lefthook.yaml: -------------------------------------------------------------------------------- 1 | # EXAMPLE USAGE: 2 | # 3 | # Refer for explanation to following link: 4 | # https://github.com/evilmartians/lefthook/blob/master/docs/configuration.md 5 | # 6 | # pre-push: 7 | # commands: 8 | # packages-audit: 9 | # tags: frontend security 10 | # run: yarn audit 11 | # gems-audit: 12 | # tags: backend security 13 | # run: bundle audit 14 | # 15 | # pre-commit: 16 | # parallel: true 17 | # commands: 18 | # eslint: 19 | # glob: "*.{js,ts,jsx,tsx}" 20 | # run: yarn eslint {staged_files} 21 | # rubocop: 22 | # tags: backend style 23 | # glob: "*.rb" 24 | # exclude: '(^|/)(application|routes)\.rb$' 25 | # run: bundle exec rubocop --force-exclusion {all_files} 26 | # govet: 27 | # tags: backend style 28 | # files: git ls-files -m 29 | # glob: "*.go" 30 | # run: go vet {files} 31 | # scripts: 32 | # "hello.js": 33 | # runner: node 34 | # "any.go": 35 | # runner: go run 36 | pre-commit: 37 | commands: 38 | check: 39 | glob: "*.{js,ts,cjs,mjs,d.cts,d.mts,jsx,tsx,json,jsonc}" 40 | run: npx biome check --no-errors-on-unmatched --files-ignore-unknown=true --write {staged_files} 41 | stage_fixed: true 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # an opinionated template for Cloudflare Worker 2 | 3 | - [Hono](https://hono.dev/) as web framework 4 | - [Biome](https://biomejs.dev/) for lint/prettier 5 | - [lefthook](https://github.com/evilmartians/lefthook) as git hooks manager 6 | - [pnpm](https://pnpm.io/) as package manager 7 | 8 | ## Usage 9 | 10 | - Use this repo as a template and create your own one. 11 | - Go to **Repo** - **Settings** - **Secrets and variables** - **Actions**, create two secrets, `CLOUDFLARE_API_TOKEN` and `CLOUDFLARE_ACCOUNT_ID`, then it will deploy you code to your Cloudflare Worker on every push via GitHub Action. 12 | - For local dev, run `pnpm run dev`, if you want to deploy manually, run `pnpm run deploy`, you might neeed to login first via `npx wrangler login`. 13 | - If you need to add more environment variables and secrets, put them in `.dev.vars` file, and don't forget to include them in your repo's setting or upload them via `npx wrangler secret`, then update your type `Env` in the `src/index.ts` file accordingly. 14 | - It will use biome to run code check before every commit, it is much faster and with better DX than eslint and prettier, if you want to configure this behavior by yourself, check out `lefthook.yaml` and `biome.json`. 15 | 16 | ## Package manager 17 | 18 | For package manager, `pnpm` is recommended, You can simplify the management of different versions of package managers by enabling corepack. `corepack` is bundled with Node.js since v14.19. So you already have corepack if you have Node.js. 19 | 20 | You can enable corepack by running: `corepack enable`, and it will makes sure you're using the correct package manager specified in the package.json like below: 21 | 22 | ```json 23 | { 24 | // npm 25 | "packageManager": "npm@10.8.1", 26 | // pnpm 27 | "packageManager": "pnpm@9.1.4", 28 | // yarn 29 | "packageManager": "yarn@3.1.1" 30 | } 31 | ``` 32 | 33 | Feel free to change it to whatever you like. 34 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | hono: 12 | specifier: 4.4.7 13 | version: 4.4.7 14 | devDependencies: 15 | '@biomejs/biome': 16 | specifier: 1.8.2 17 | version: 1.8.2 18 | '@cloudflare/workers-types': 19 | specifier: 4.20240620.0 20 | version: 4.20240620.0 21 | lefthook: 22 | specifier: 1.6.18 23 | version: 1.6.18 24 | typescript: 25 | specifier: 5.5.2 26 | version: 5.5.2 27 | wrangler: 28 | specifier: 3.61.0 29 | version: 3.61.0(@cloudflare/workers-types@4.20240620.0) 30 | 31 | packages: 32 | 33 | '@biomejs/biome@1.8.2': 34 | resolution: {integrity: sha512-XafCzLgs0xbH0bCjYKxQ63ig2V86fZQMq1jiy5pyLToWk9aHxA8GAUxyBtklPHtPYZPGEPOYglQHj4jyfUp+Iw==} 35 | engines: {node: '>=14.21.3'} 36 | hasBin: true 37 | 38 | '@biomejs/cli-darwin-arm64@1.8.2': 39 | resolution: {integrity: sha512-l9msLsTcSIAPqMsPIhodQmb50sEfaXPLQ0YW4cdj6INmd8iaOh/V9NceQb2366vACTJgcWDQ2RzlvURek1T68g==} 40 | engines: {node: '>=14.21.3'} 41 | cpu: [arm64] 42 | os: [darwin] 43 | 44 | '@biomejs/cli-darwin-x64@1.8.2': 45 | resolution: {integrity: sha512-Fc4y/FuIxRSiB3TJ+y27vFDE/HJt4QgBuymktsIKEcBZvnKfsRjxvzVDunccRn4xbKgepnp+fn6BoS+ZIg/I3Q==} 46 | engines: {node: '>=14.21.3'} 47 | cpu: [x64] 48 | os: [darwin] 49 | 50 | '@biomejs/cli-linux-arm64-musl@1.8.2': 51 | resolution: {integrity: sha512-WpT41QJJvkZa1eZq0WmD513zkC6AYaMI39HJKmKeiUeX2NZirG+bxv1YRDhqkns1NbBqo3+qrJqBkPmOW+xAVA==} 52 | engines: {node: '>=14.21.3'} 53 | cpu: [arm64] 54 | os: [linux] 55 | 56 | '@biomejs/cli-linux-arm64@1.8.2': 57 | resolution: {integrity: sha512-Q99qwP0qibkZxm2kfnt37OxeIlliDYf5ogi3zX9ij2DULzc+KtPA9Uj0wCljcJofOBsBYaHc7597Q+Bf/251ww==} 58 | engines: {node: '>=14.21.3'} 59 | cpu: [arm64] 60 | os: [linux] 61 | 62 | '@biomejs/cli-linux-x64-musl@1.8.2': 63 | resolution: {integrity: sha512-rk1Wj4d3LIlAlIAS1m2jlyfOjkNbuY1lfwKvWIAeZC51yDMzwhRD7cReE5PE+jqLDtq60PX38hDPeKd7nA1S6A==} 64 | engines: {node: '>=14.21.3'} 65 | cpu: [x64] 66 | os: [linux] 67 | 68 | '@biomejs/cli-linux-x64@1.8.2': 69 | resolution: {integrity: sha512-bjhhUVFchFid2gOjrvBe4fg8BShcpyFQTHuB/QQnfGxs1ddrGP30yq3fHfc6S6MoCcz9Tjd3Zzq1EfWfyy5iHA==} 70 | engines: {node: '>=14.21.3'} 71 | cpu: [x64] 72 | os: [linux] 73 | 74 | '@biomejs/cli-win32-arm64@1.8.2': 75 | resolution: {integrity: sha512-EUbqmCmNWT5xhnxHrCAEBzJB1AnLqxTYoRjlxiCMzGvsy5jQzhCanJ8CT9kNsApW3pfPWBWkoTa7qrwWmwnEGA==} 76 | engines: {node: '>=14.21.3'} 77 | cpu: [arm64] 78 | os: [win32] 79 | 80 | '@biomejs/cli-win32-x64@1.8.2': 81 | resolution: {integrity: sha512-n9H5oRUCk1uNezMgyJh9+hZdtfD8PXLLeq8DUzTycIhl0I1BulIoZ/uxWgRVDFDwAR1JHu1AykISCRFNGnc4iA==} 82 | engines: {node: '>=14.21.3'} 83 | cpu: [x64] 84 | os: [win32] 85 | 86 | '@cloudflare/kv-asset-handler@0.3.3': 87 | resolution: {integrity: sha512-wpE+WiWW2kUNwNE0xyl4CtTAs+STjGtouHGiZPGRaisGB7eXXdbvfZdOrQJQVKgTxZiNAgVgmc7fj0sUmd8zyA==} 88 | engines: {node: '>=16.13'} 89 | 90 | '@cloudflare/workerd-darwin-64@1.20240610.1': 91 | resolution: {integrity: sha512-YanZ1iXgMGaUWlleB5cswSE6qbzyjQ8O7ENWZcPAcZZ6BfuL7q3CWi0t9iM1cv2qx92rRztsRTyjcfq099++XQ==} 92 | engines: {node: '>=16'} 93 | cpu: [x64] 94 | os: [darwin] 95 | 96 | '@cloudflare/workerd-darwin-arm64@1.20240610.1': 97 | resolution: {integrity: sha512-bRe/y/LKjIgp3L2EHjc+CvoCzfHhf4aFTtOBkv2zW+VToNJ4KlXridndf7LvR9urfsFRRo9r4TXCssuKaU+ypQ==} 98 | engines: {node: '>=16'} 99 | cpu: [arm64] 100 | os: [darwin] 101 | 102 | '@cloudflare/workerd-linux-64@1.20240610.1': 103 | resolution: {integrity: sha512-2zDcadR7+Gs9SjcMXmwsMji2Xs+yASGNA2cEHDuFc4NMUup+eL1mkzxc/QzvFjyBck98e92rBjMZt2dVscpGKg==} 104 | engines: {node: '>=16'} 105 | cpu: [x64] 106 | os: [linux] 107 | 108 | '@cloudflare/workerd-linux-arm64@1.20240610.1': 109 | resolution: {integrity: sha512-7y41rPi5xmIYJN8CY+t3RHnjLL0xx/WYmaTd/j552k1qSr02eTE2o/TGyWZmGUC+lWnwdPQJla0mXbvdqgRdQg==} 110 | engines: {node: '>=16'} 111 | cpu: [arm64] 112 | os: [linux] 113 | 114 | '@cloudflare/workerd-windows-64@1.20240610.1': 115 | resolution: {integrity: sha512-B0LyT3DB6rXHWNptnntYHPaoJIy0rXnGfeDBM3nEVV8JIsQrx8MEFn2F2jYioH1FkUVavsaqKO/zUosY3tZXVA==} 116 | engines: {node: '>=16'} 117 | cpu: [x64] 118 | os: [win32] 119 | 120 | '@cloudflare/workers-types@4.20240620.0': 121 | resolution: {integrity: sha512-CQD8YS6evRob7LChvIX3gE3zYo0KVgaLDOu1SwNP1BVIS2Sa0b+FC8S1e1hhrNN8/E4chYlVN+FDAgA4KRDUEQ==} 122 | 123 | '@cspotcode/source-map-support@0.8.1': 124 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 125 | engines: {node: '>=12'} 126 | 127 | '@esbuild-plugins/node-globals-polyfill@0.2.3': 128 | resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} 129 | peerDependencies: 130 | esbuild: '*' 131 | 132 | '@esbuild-plugins/node-modules-polyfill@0.2.2': 133 | resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==} 134 | peerDependencies: 135 | esbuild: '*' 136 | 137 | '@esbuild/android-arm64@0.17.19': 138 | resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} 139 | engines: {node: '>=12'} 140 | cpu: [arm64] 141 | os: [android] 142 | 143 | '@esbuild/android-arm@0.17.19': 144 | resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} 145 | engines: {node: '>=12'} 146 | cpu: [arm] 147 | os: [android] 148 | 149 | '@esbuild/android-x64@0.17.19': 150 | resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} 151 | engines: {node: '>=12'} 152 | cpu: [x64] 153 | os: [android] 154 | 155 | '@esbuild/darwin-arm64@0.17.19': 156 | resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} 157 | engines: {node: '>=12'} 158 | cpu: [arm64] 159 | os: [darwin] 160 | 161 | '@esbuild/darwin-x64@0.17.19': 162 | resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} 163 | engines: {node: '>=12'} 164 | cpu: [x64] 165 | os: [darwin] 166 | 167 | '@esbuild/freebsd-arm64@0.17.19': 168 | resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} 169 | engines: {node: '>=12'} 170 | cpu: [arm64] 171 | os: [freebsd] 172 | 173 | '@esbuild/freebsd-x64@0.17.19': 174 | resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} 175 | engines: {node: '>=12'} 176 | cpu: [x64] 177 | os: [freebsd] 178 | 179 | '@esbuild/linux-arm64@0.17.19': 180 | resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} 181 | engines: {node: '>=12'} 182 | cpu: [arm64] 183 | os: [linux] 184 | 185 | '@esbuild/linux-arm@0.17.19': 186 | resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} 187 | engines: {node: '>=12'} 188 | cpu: [arm] 189 | os: [linux] 190 | 191 | '@esbuild/linux-ia32@0.17.19': 192 | resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} 193 | engines: {node: '>=12'} 194 | cpu: [ia32] 195 | os: [linux] 196 | 197 | '@esbuild/linux-loong64@0.17.19': 198 | resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} 199 | engines: {node: '>=12'} 200 | cpu: [loong64] 201 | os: [linux] 202 | 203 | '@esbuild/linux-mips64el@0.17.19': 204 | resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} 205 | engines: {node: '>=12'} 206 | cpu: [mips64el] 207 | os: [linux] 208 | 209 | '@esbuild/linux-ppc64@0.17.19': 210 | resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} 211 | engines: {node: '>=12'} 212 | cpu: [ppc64] 213 | os: [linux] 214 | 215 | '@esbuild/linux-riscv64@0.17.19': 216 | resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} 217 | engines: {node: '>=12'} 218 | cpu: [riscv64] 219 | os: [linux] 220 | 221 | '@esbuild/linux-s390x@0.17.19': 222 | resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} 223 | engines: {node: '>=12'} 224 | cpu: [s390x] 225 | os: [linux] 226 | 227 | '@esbuild/linux-x64@0.17.19': 228 | resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} 229 | engines: {node: '>=12'} 230 | cpu: [x64] 231 | os: [linux] 232 | 233 | '@esbuild/netbsd-x64@0.17.19': 234 | resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} 235 | engines: {node: '>=12'} 236 | cpu: [x64] 237 | os: [netbsd] 238 | 239 | '@esbuild/openbsd-x64@0.17.19': 240 | resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} 241 | engines: {node: '>=12'} 242 | cpu: [x64] 243 | os: [openbsd] 244 | 245 | '@esbuild/sunos-x64@0.17.19': 246 | resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} 247 | engines: {node: '>=12'} 248 | cpu: [x64] 249 | os: [sunos] 250 | 251 | '@esbuild/win32-arm64@0.17.19': 252 | resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} 253 | engines: {node: '>=12'} 254 | cpu: [arm64] 255 | os: [win32] 256 | 257 | '@esbuild/win32-ia32@0.17.19': 258 | resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} 259 | engines: {node: '>=12'} 260 | cpu: [ia32] 261 | os: [win32] 262 | 263 | '@esbuild/win32-x64@0.17.19': 264 | resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} 265 | engines: {node: '>=12'} 266 | cpu: [x64] 267 | os: [win32] 268 | 269 | '@fastify/busboy@2.1.1': 270 | resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 271 | engines: {node: '>=14'} 272 | 273 | '@jridgewell/resolve-uri@3.1.2': 274 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 275 | engines: {node: '>=6.0.0'} 276 | 277 | '@jridgewell/sourcemap-codec@1.4.15': 278 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 279 | 280 | '@jridgewell/trace-mapping@0.3.9': 281 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 282 | 283 | '@types/node-forge@1.3.11': 284 | resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} 285 | 286 | '@types/node@20.14.8': 287 | resolution: {integrity: sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==} 288 | 289 | acorn-walk@8.3.3: 290 | resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} 291 | engines: {node: '>=0.4.0'} 292 | 293 | acorn@8.12.0: 294 | resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==} 295 | engines: {node: '>=0.4.0'} 296 | hasBin: true 297 | 298 | anymatch@3.1.3: 299 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 300 | engines: {node: '>= 8'} 301 | 302 | as-table@1.0.55: 303 | resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} 304 | 305 | binary-extensions@2.3.0: 306 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 307 | engines: {node: '>=8'} 308 | 309 | blake3-wasm@2.1.5: 310 | resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} 311 | 312 | braces@3.0.3: 313 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 314 | engines: {node: '>=8'} 315 | 316 | capnp-ts@0.7.0: 317 | resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} 318 | 319 | chokidar@3.6.0: 320 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 321 | engines: {node: '>= 8.10.0'} 322 | 323 | consola@3.2.3: 324 | resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} 325 | engines: {node: ^14.18.0 || >=16.10.0} 326 | 327 | cookie@0.5.0: 328 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 329 | engines: {node: '>= 0.6'} 330 | 331 | data-uri-to-buffer@2.0.2: 332 | resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} 333 | 334 | debug@4.3.5: 335 | resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} 336 | engines: {node: '>=6.0'} 337 | peerDependencies: 338 | supports-color: '*' 339 | peerDependenciesMeta: 340 | supports-color: 341 | optional: true 342 | 343 | defu@6.1.4: 344 | resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 345 | 346 | esbuild@0.17.19: 347 | resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} 348 | engines: {node: '>=12'} 349 | hasBin: true 350 | 351 | escape-string-regexp@4.0.0: 352 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 353 | engines: {node: '>=10'} 354 | 355 | estree-walker@0.6.1: 356 | resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} 357 | 358 | exit-hook@2.2.1: 359 | resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} 360 | engines: {node: '>=6'} 361 | 362 | fill-range@7.1.1: 363 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 364 | engines: {node: '>=8'} 365 | 366 | fsevents@2.3.3: 367 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 368 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 369 | os: [darwin] 370 | 371 | function-bind@1.1.2: 372 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 373 | 374 | get-source@2.0.12: 375 | resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} 376 | 377 | glob-parent@5.1.2: 378 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 379 | engines: {node: '>= 6'} 380 | 381 | glob-to-regexp@0.4.1: 382 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 383 | 384 | hasown@2.0.2: 385 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 386 | engines: {node: '>= 0.4'} 387 | 388 | hono@4.4.7: 389 | resolution: {integrity: sha512-WoQWFQyVFEVRtIzP5sHPv7nvIw+RYL/HRnvnOCDxj6A+BtrwuC9S0vryZbV4IyFcNgOJ87r/phDiC1x2eEo4Gg==} 390 | engines: {node: '>=16.0.0'} 391 | 392 | is-binary-path@2.1.0: 393 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 394 | engines: {node: '>=8'} 395 | 396 | is-core-module@2.14.0: 397 | resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==} 398 | engines: {node: '>= 0.4'} 399 | 400 | is-extglob@2.1.1: 401 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 402 | engines: {node: '>=0.10.0'} 403 | 404 | is-glob@4.0.3: 405 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 406 | engines: {node: '>=0.10.0'} 407 | 408 | is-number@7.0.0: 409 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 410 | engines: {node: '>=0.12.0'} 411 | 412 | lefthook-darwin-arm64@1.6.18: 413 | resolution: {integrity: sha512-AkpsTeO7aLZIIy6CKQ7Chx8RltE8a9uItbwQWoeaCkIdzpV8TFjq7/Pw4F5CkoJ2315sHtB8k+VFkgipQMBw1w==} 414 | cpu: [arm64] 415 | os: [darwin] 416 | 417 | lefthook-darwin-x64@1.6.18: 418 | resolution: {integrity: sha512-qwKa+PaNIYjZ2PVrRRLq+HjNjQsjEItXN21byvSD89r7EYCULsIC8aW4H6aniOP2A6X1DIZ+djpg+3hNJ/94NA==} 419 | cpu: [x64] 420 | os: [darwin] 421 | 422 | lefthook-freebsd-arm64@1.6.18: 423 | resolution: {integrity: sha512-UIOzQ+okwB7Ah9p8sNqomOiU6cPfmJnyW3HDPutRsdoHRD8udIap9d+ja4Kg4m/PkoYtkcLO78omANqAgA5wxQ==} 424 | cpu: [arm64] 425 | os: [freebsd] 426 | 427 | lefthook-freebsd-x64@1.6.18: 428 | resolution: {integrity: sha512-UQANUgyNpaAh0+2/PjPFiJ7yd6aF15yyJxKZCXyna5cQF7VU8pSHu5tiDDquNpjToXOg+6TmiIAJKyfrrwTF3w==} 429 | cpu: [x64] 430 | os: [freebsd] 431 | 432 | lefthook-linux-arm64@1.6.18: 433 | resolution: {integrity: sha512-4erletIa2HKUgY17/1ROvndAj6xn/9wkqO2GhBT3C0vFwIv6ycy5wpFzXOwKRZpFYv7UacN7iXhAZSK+vSOZZg==} 434 | cpu: [arm64] 435 | os: [linux] 436 | 437 | lefthook-linux-x64@1.6.18: 438 | resolution: {integrity: sha512-l5SRqYMYygw9RjZncEg8uh29wShYN8kiYr53sp74DkntrlCttqWhLILBUlIr3fxH5s0ZyrmqUEjtMBryMk7b/g==} 439 | cpu: [x64] 440 | os: [linux] 441 | 442 | lefthook-windows-arm64@1.6.18: 443 | resolution: {integrity: sha512-jeNBRoya3+mOEsKyT4wXf29Kng1nkJD7Uv/dqGBszoGMktGVNUFdIjWoxx6HSfhUssucs5pKRZpXSMgK/KCP+Q==} 444 | cpu: [arm64] 445 | os: [win32] 446 | 447 | lefthook-windows-x64@1.6.18: 448 | resolution: {integrity: sha512-iEG8PbFOwMqlpAgCiqzANTxutERjwlwMx6WF6HDGEYwFJSCJsvi06TehDxaPIFbhmLLYYlbVrfSBlttWGoN0dg==} 449 | cpu: [x64] 450 | os: [win32] 451 | 452 | lefthook@1.6.18: 453 | resolution: {integrity: sha512-Ftr/NkU1P1EsEyphsCqCX7lesGZA+QDXyUx4dS1RlSKB72xKtGW9VPjbGLK2kSQkONG5M+XYfbJkGA/r9NLTYQ==} 454 | hasBin: true 455 | 456 | magic-string@0.25.9: 457 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 458 | 459 | mime@3.0.0: 460 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 461 | engines: {node: '>=10.0.0'} 462 | hasBin: true 463 | 464 | miniflare@3.20240610.1: 465 | resolution: {integrity: sha512-ZkfSpBmX3nJW00yYhvF2kGvjb6f77TOimRR6+2GQvsArbwo6e0iYqLGM9aB/cnJzgFjLMvOv1qj4756iynSxJQ==} 466 | engines: {node: '>=16.13'} 467 | hasBin: true 468 | 469 | ms@2.1.2: 470 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 471 | 472 | mustache@4.2.0: 473 | resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} 474 | hasBin: true 475 | 476 | nanoid@3.3.7: 477 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 478 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 479 | hasBin: true 480 | 481 | node-fetch-native@1.6.4: 482 | resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} 483 | 484 | node-forge@1.3.1: 485 | resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} 486 | engines: {node: '>= 6.13.0'} 487 | 488 | normalize-path@3.0.0: 489 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 490 | engines: {node: '>=0.10.0'} 491 | 492 | path-parse@1.0.7: 493 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 494 | 495 | path-to-regexp@6.2.2: 496 | resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} 497 | 498 | pathe@1.1.2: 499 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 500 | 501 | picomatch@2.3.1: 502 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 503 | engines: {node: '>=8.6'} 504 | 505 | printable-characters@1.0.42: 506 | resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} 507 | 508 | readdirp@3.6.0: 509 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 510 | engines: {node: '>=8.10.0'} 511 | 512 | resolve.exports@2.0.2: 513 | resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} 514 | engines: {node: '>=10'} 515 | 516 | resolve@1.22.8: 517 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 518 | hasBin: true 519 | 520 | rollup-plugin-inject@3.0.2: 521 | resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} 522 | deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. 523 | 524 | rollup-plugin-node-polyfills@0.2.1: 525 | resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} 526 | 527 | rollup-pluginutils@2.8.2: 528 | resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} 529 | 530 | selfsigned@2.4.1: 531 | resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} 532 | engines: {node: '>=10'} 533 | 534 | source-map@0.6.1: 535 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 536 | engines: {node: '>=0.10.0'} 537 | 538 | sourcemap-codec@1.4.8: 539 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 540 | deprecated: Please use @jridgewell/sourcemap-codec instead 541 | 542 | stacktracey@2.1.8: 543 | resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} 544 | 545 | stoppable@1.1.0: 546 | resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} 547 | engines: {node: '>=4', npm: '>=6'} 548 | 549 | supports-preserve-symlinks-flag@1.0.0: 550 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 551 | engines: {node: '>= 0.4'} 552 | 553 | to-regex-range@5.0.1: 554 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 555 | engines: {node: '>=8.0'} 556 | 557 | tslib@2.6.3: 558 | resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} 559 | 560 | typescript@5.5.2: 561 | resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==} 562 | engines: {node: '>=14.17'} 563 | hasBin: true 564 | 565 | ufo@1.5.3: 566 | resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} 567 | 568 | undici-types@5.26.5: 569 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 570 | 571 | undici@5.28.4: 572 | resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} 573 | engines: {node: '>=14.0'} 574 | 575 | unenv-nightly@1.10.0-1717606461.a117952: 576 | resolution: {integrity: sha512-u3TfBX02WzbHTpaEfWEKwDijDSFAHcgXkayUZ+MVDrjhLFvgAJzFGTSTmwlEhwWi2exyRQey23ah9wELMM6etg==} 577 | 578 | workerd@1.20240610.1: 579 | resolution: {integrity: sha512-Rtut5GrsODQMh6YU43b9WZ980Wd05Ov1/ds88pT/SoetmXFBvkBzdRfiHiATv+azmGX8KveE0i/Eqzk/yI01ug==} 580 | engines: {node: '>=16'} 581 | hasBin: true 582 | 583 | wrangler@3.61.0: 584 | resolution: {integrity: sha512-feVAp0986x9xL3Dc1zin0ZVXKaqzp7eZur7iPLnpEwjG1Xy4dkVEZ5a1LET94Iyejt1P+EX5lgGcz63H7EfzUw==} 585 | engines: {node: '>=16.17.0'} 586 | hasBin: true 587 | peerDependencies: 588 | '@cloudflare/workers-types': ^4.20240605.0 589 | peerDependenciesMeta: 590 | '@cloudflare/workers-types': 591 | optional: true 592 | 593 | ws@8.17.1: 594 | resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} 595 | engines: {node: '>=10.0.0'} 596 | peerDependencies: 597 | bufferutil: ^4.0.1 598 | utf-8-validate: '>=5.0.2' 599 | peerDependenciesMeta: 600 | bufferutil: 601 | optional: true 602 | utf-8-validate: 603 | optional: true 604 | 605 | xxhash-wasm@1.0.2: 606 | resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} 607 | 608 | youch@3.3.3: 609 | resolution: {integrity: sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==} 610 | 611 | zod@3.23.8: 612 | resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} 613 | 614 | snapshots: 615 | 616 | '@biomejs/biome@1.8.2': 617 | optionalDependencies: 618 | '@biomejs/cli-darwin-arm64': 1.8.2 619 | '@biomejs/cli-darwin-x64': 1.8.2 620 | '@biomejs/cli-linux-arm64': 1.8.2 621 | '@biomejs/cli-linux-arm64-musl': 1.8.2 622 | '@biomejs/cli-linux-x64': 1.8.2 623 | '@biomejs/cli-linux-x64-musl': 1.8.2 624 | '@biomejs/cli-win32-arm64': 1.8.2 625 | '@biomejs/cli-win32-x64': 1.8.2 626 | 627 | '@biomejs/cli-darwin-arm64@1.8.2': 628 | optional: true 629 | 630 | '@biomejs/cli-darwin-x64@1.8.2': 631 | optional: true 632 | 633 | '@biomejs/cli-linux-arm64-musl@1.8.2': 634 | optional: true 635 | 636 | '@biomejs/cli-linux-arm64@1.8.2': 637 | optional: true 638 | 639 | '@biomejs/cli-linux-x64-musl@1.8.2': 640 | optional: true 641 | 642 | '@biomejs/cli-linux-x64@1.8.2': 643 | optional: true 644 | 645 | '@biomejs/cli-win32-arm64@1.8.2': 646 | optional: true 647 | 648 | '@biomejs/cli-win32-x64@1.8.2': 649 | optional: true 650 | 651 | '@cloudflare/kv-asset-handler@0.3.3': 652 | dependencies: 653 | mime: 3.0.0 654 | 655 | '@cloudflare/workerd-darwin-64@1.20240610.1': 656 | optional: true 657 | 658 | '@cloudflare/workerd-darwin-arm64@1.20240610.1': 659 | optional: true 660 | 661 | '@cloudflare/workerd-linux-64@1.20240610.1': 662 | optional: true 663 | 664 | '@cloudflare/workerd-linux-arm64@1.20240610.1': 665 | optional: true 666 | 667 | '@cloudflare/workerd-windows-64@1.20240610.1': 668 | optional: true 669 | 670 | '@cloudflare/workers-types@4.20240620.0': {} 671 | 672 | '@cspotcode/source-map-support@0.8.1': 673 | dependencies: 674 | '@jridgewell/trace-mapping': 0.3.9 675 | 676 | '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.17.19)': 677 | dependencies: 678 | esbuild: 0.17.19 679 | 680 | '@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.17.19)': 681 | dependencies: 682 | esbuild: 0.17.19 683 | escape-string-regexp: 4.0.0 684 | rollup-plugin-node-polyfills: 0.2.1 685 | 686 | '@esbuild/android-arm64@0.17.19': 687 | optional: true 688 | 689 | '@esbuild/android-arm@0.17.19': 690 | optional: true 691 | 692 | '@esbuild/android-x64@0.17.19': 693 | optional: true 694 | 695 | '@esbuild/darwin-arm64@0.17.19': 696 | optional: true 697 | 698 | '@esbuild/darwin-x64@0.17.19': 699 | optional: true 700 | 701 | '@esbuild/freebsd-arm64@0.17.19': 702 | optional: true 703 | 704 | '@esbuild/freebsd-x64@0.17.19': 705 | optional: true 706 | 707 | '@esbuild/linux-arm64@0.17.19': 708 | optional: true 709 | 710 | '@esbuild/linux-arm@0.17.19': 711 | optional: true 712 | 713 | '@esbuild/linux-ia32@0.17.19': 714 | optional: true 715 | 716 | '@esbuild/linux-loong64@0.17.19': 717 | optional: true 718 | 719 | '@esbuild/linux-mips64el@0.17.19': 720 | optional: true 721 | 722 | '@esbuild/linux-ppc64@0.17.19': 723 | optional: true 724 | 725 | '@esbuild/linux-riscv64@0.17.19': 726 | optional: true 727 | 728 | '@esbuild/linux-s390x@0.17.19': 729 | optional: true 730 | 731 | '@esbuild/linux-x64@0.17.19': 732 | optional: true 733 | 734 | '@esbuild/netbsd-x64@0.17.19': 735 | optional: true 736 | 737 | '@esbuild/openbsd-x64@0.17.19': 738 | optional: true 739 | 740 | '@esbuild/sunos-x64@0.17.19': 741 | optional: true 742 | 743 | '@esbuild/win32-arm64@0.17.19': 744 | optional: true 745 | 746 | '@esbuild/win32-ia32@0.17.19': 747 | optional: true 748 | 749 | '@esbuild/win32-x64@0.17.19': 750 | optional: true 751 | 752 | '@fastify/busboy@2.1.1': {} 753 | 754 | '@jridgewell/resolve-uri@3.1.2': {} 755 | 756 | '@jridgewell/sourcemap-codec@1.4.15': {} 757 | 758 | '@jridgewell/trace-mapping@0.3.9': 759 | dependencies: 760 | '@jridgewell/resolve-uri': 3.1.2 761 | '@jridgewell/sourcemap-codec': 1.4.15 762 | 763 | '@types/node-forge@1.3.11': 764 | dependencies: 765 | '@types/node': 20.14.8 766 | 767 | '@types/node@20.14.8': 768 | dependencies: 769 | undici-types: 5.26.5 770 | 771 | acorn-walk@8.3.3: 772 | dependencies: 773 | acorn: 8.12.0 774 | 775 | acorn@8.12.0: {} 776 | 777 | anymatch@3.1.3: 778 | dependencies: 779 | normalize-path: 3.0.0 780 | picomatch: 2.3.1 781 | 782 | as-table@1.0.55: 783 | dependencies: 784 | printable-characters: 1.0.42 785 | 786 | binary-extensions@2.3.0: {} 787 | 788 | blake3-wasm@2.1.5: {} 789 | 790 | braces@3.0.3: 791 | dependencies: 792 | fill-range: 7.1.1 793 | 794 | capnp-ts@0.7.0: 795 | dependencies: 796 | debug: 4.3.5 797 | tslib: 2.6.3 798 | transitivePeerDependencies: 799 | - supports-color 800 | 801 | chokidar@3.6.0: 802 | dependencies: 803 | anymatch: 3.1.3 804 | braces: 3.0.3 805 | glob-parent: 5.1.2 806 | is-binary-path: 2.1.0 807 | is-glob: 4.0.3 808 | normalize-path: 3.0.0 809 | readdirp: 3.6.0 810 | optionalDependencies: 811 | fsevents: 2.3.3 812 | 813 | consola@3.2.3: {} 814 | 815 | cookie@0.5.0: {} 816 | 817 | data-uri-to-buffer@2.0.2: {} 818 | 819 | debug@4.3.5: 820 | dependencies: 821 | ms: 2.1.2 822 | 823 | defu@6.1.4: {} 824 | 825 | esbuild@0.17.19: 826 | optionalDependencies: 827 | '@esbuild/android-arm': 0.17.19 828 | '@esbuild/android-arm64': 0.17.19 829 | '@esbuild/android-x64': 0.17.19 830 | '@esbuild/darwin-arm64': 0.17.19 831 | '@esbuild/darwin-x64': 0.17.19 832 | '@esbuild/freebsd-arm64': 0.17.19 833 | '@esbuild/freebsd-x64': 0.17.19 834 | '@esbuild/linux-arm': 0.17.19 835 | '@esbuild/linux-arm64': 0.17.19 836 | '@esbuild/linux-ia32': 0.17.19 837 | '@esbuild/linux-loong64': 0.17.19 838 | '@esbuild/linux-mips64el': 0.17.19 839 | '@esbuild/linux-ppc64': 0.17.19 840 | '@esbuild/linux-riscv64': 0.17.19 841 | '@esbuild/linux-s390x': 0.17.19 842 | '@esbuild/linux-x64': 0.17.19 843 | '@esbuild/netbsd-x64': 0.17.19 844 | '@esbuild/openbsd-x64': 0.17.19 845 | '@esbuild/sunos-x64': 0.17.19 846 | '@esbuild/win32-arm64': 0.17.19 847 | '@esbuild/win32-ia32': 0.17.19 848 | '@esbuild/win32-x64': 0.17.19 849 | 850 | escape-string-regexp@4.0.0: {} 851 | 852 | estree-walker@0.6.1: {} 853 | 854 | exit-hook@2.2.1: {} 855 | 856 | fill-range@7.1.1: 857 | dependencies: 858 | to-regex-range: 5.0.1 859 | 860 | fsevents@2.3.3: 861 | optional: true 862 | 863 | function-bind@1.1.2: {} 864 | 865 | get-source@2.0.12: 866 | dependencies: 867 | data-uri-to-buffer: 2.0.2 868 | source-map: 0.6.1 869 | 870 | glob-parent@5.1.2: 871 | dependencies: 872 | is-glob: 4.0.3 873 | 874 | glob-to-regexp@0.4.1: {} 875 | 876 | hasown@2.0.2: 877 | dependencies: 878 | function-bind: 1.1.2 879 | 880 | hono@4.4.7: {} 881 | 882 | is-binary-path@2.1.0: 883 | dependencies: 884 | binary-extensions: 2.3.0 885 | 886 | is-core-module@2.14.0: 887 | dependencies: 888 | hasown: 2.0.2 889 | 890 | is-extglob@2.1.1: {} 891 | 892 | is-glob@4.0.3: 893 | dependencies: 894 | is-extglob: 2.1.1 895 | 896 | is-number@7.0.0: {} 897 | 898 | lefthook-darwin-arm64@1.6.18: 899 | optional: true 900 | 901 | lefthook-darwin-x64@1.6.18: 902 | optional: true 903 | 904 | lefthook-freebsd-arm64@1.6.18: 905 | optional: true 906 | 907 | lefthook-freebsd-x64@1.6.18: 908 | optional: true 909 | 910 | lefthook-linux-arm64@1.6.18: 911 | optional: true 912 | 913 | lefthook-linux-x64@1.6.18: 914 | optional: true 915 | 916 | lefthook-windows-arm64@1.6.18: 917 | optional: true 918 | 919 | lefthook-windows-x64@1.6.18: 920 | optional: true 921 | 922 | lefthook@1.6.18: 923 | optionalDependencies: 924 | lefthook-darwin-arm64: 1.6.18 925 | lefthook-darwin-x64: 1.6.18 926 | lefthook-freebsd-arm64: 1.6.18 927 | lefthook-freebsd-x64: 1.6.18 928 | lefthook-linux-arm64: 1.6.18 929 | lefthook-linux-x64: 1.6.18 930 | lefthook-windows-arm64: 1.6.18 931 | lefthook-windows-x64: 1.6.18 932 | 933 | magic-string@0.25.9: 934 | dependencies: 935 | sourcemap-codec: 1.4.8 936 | 937 | mime@3.0.0: {} 938 | 939 | miniflare@3.20240610.1: 940 | dependencies: 941 | '@cspotcode/source-map-support': 0.8.1 942 | acorn: 8.12.0 943 | acorn-walk: 8.3.3 944 | capnp-ts: 0.7.0 945 | exit-hook: 2.2.1 946 | glob-to-regexp: 0.4.1 947 | stoppable: 1.1.0 948 | undici: 5.28.4 949 | workerd: 1.20240610.1 950 | ws: 8.17.1 951 | youch: 3.3.3 952 | zod: 3.23.8 953 | transitivePeerDependencies: 954 | - bufferutil 955 | - supports-color 956 | - utf-8-validate 957 | 958 | ms@2.1.2: {} 959 | 960 | mustache@4.2.0: {} 961 | 962 | nanoid@3.3.7: {} 963 | 964 | node-fetch-native@1.6.4: {} 965 | 966 | node-forge@1.3.1: {} 967 | 968 | normalize-path@3.0.0: {} 969 | 970 | path-parse@1.0.7: {} 971 | 972 | path-to-regexp@6.2.2: {} 973 | 974 | pathe@1.1.2: {} 975 | 976 | picomatch@2.3.1: {} 977 | 978 | printable-characters@1.0.42: {} 979 | 980 | readdirp@3.6.0: 981 | dependencies: 982 | picomatch: 2.3.1 983 | 984 | resolve.exports@2.0.2: {} 985 | 986 | resolve@1.22.8: 987 | dependencies: 988 | is-core-module: 2.14.0 989 | path-parse: 1.0.7 990 | supports-preserve-symlinks-flag: 1.0.0 991 | 992 | rollup-plugin-inject@3.0.2: 993 | dependencies: 994 | estree-walker: 0.6.1 995 | magic-string: 0.25.9 996 | rollup-pluginutils: 2.8.2 997 | 998 | rollup-plugin-node-polyfills@0.2.1: 999 | dependencies: 1000 | rollup-plugin-inject: 3.0.2 1001 | 1002 | rollup-pluginutils@2.8.2: 1003 | dependencies: 1004 | estree-walker: 0.6.1 1005 | 1006 | selfsigned@2.4.1: 1007 | dependencies: 1008 | '@types/node-forge': 1.3.11 1009 | node-forge: 1.3.1 1010 | 1011 | source-map@0.6.1: {} 1012 | 1013 | sourcemap-codec@1.4.8: {} 1014 | 1015 | stacktracey@2.1.8: 1016 | dependencies: 1017 | as-table: 1.0.55 1018 | get-source: 2.0.12 1019 | 1020 | stoppable@1.1.0: {} 1021 | 1022 | supports-preserve-symlinks-flag@1.0.0: {} 1023 | 1024 | to-regex-range@5.0.1: 1025 | dependencies: 1026 | is-number: 7.0.0 1027 | 1028 | tslib@2.6.3: {} 1029 | 1030 | typescript@5.5.2: {} 1031 | 1032 | ufo@1.5.3: {} 1033 | 1034 | undici-types@5.26.5: {} 1035 | 1036 | undici@5.28.4: 1037 | dependencies: 1038 | '@fastify/busboy': 2.1.1 1039 | 1040 | unenv-nightly@1.10.0-1717606461.a117952: 1041 | dependencies: 1042 | consola: 3.2.3 1043 | defu: 6.1.4 1044 | mime: 3.0.0 1045 | node-fetch-native: 1.6.4 1046 | pathe: 1.1.2 1047 | ufo: 1.5.3 1048 | 1049 | workerd@1.20240610.1: 1050 | optionalDependencies: 1051 | '@cloudflare/workerd-darwin-64': 1.20240610.1 1052 | '@cloudflare/workerd-darwin-arm64': 1.20240610.1 1053 | '@cloudflare/workerd-linux-64': 1.20240610.1 1054 | '@cloudflare/workerd-linux-arm64': 1.20240610.1 1055 | '@cloudflare/workerd-windows-64': 1.20240610.1 1056 | 1057 | wrangler@3.61.0(@cloudflare/workers-types@4.20240620.0): 1058 | dependencies: 1059 | '@cloudflare/kv-asset-handler': 0.3.3 1060 | '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) 1061 | '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) 1062 | blake3-wasm: 2.1.5 1063 | chokidar: 3.6.0 1064 | esbuild: 0.17.19 1065 | miniflare: 3.20240610.1 1066 | nanoid: 3.3.7 1067 | path-to-regexp: 6.2.2 1068 | resolve: 1.22.8 1069 | resolve.exports: 2.0.2 1070 | selfsigned: 2.4.1 1071 | source-map: 0.6.1 1072 | unenv: unenv-nightly@1.10.0-1717606461.a117952 1073 | xxhash-wasm: 1.0.2 1074 | optionalDependencies: 1075 | '@cloudflare/workers-types': 4.20240620.0 1076 | fsevents: 2.3.3 1077 | transitivePeerDependencies: 1078 | - bufferutil 1079 | - supports-color 1080 | - utf-8-validate 1081 | 1082 | ws@8.17.1: {} 1083 | 1084 | xxhash-wasm@1.0.2: {} 1085 | 1086 | youch@3.3.3: 1087 | dependencies: 1088 | cookie: 0.5.0 1089 | mustache: 4.2.0 1090 | stacktracey: 2.1.8 1091 | 1092 | zod@3.23.8: {} 1093 | --------------------------------------------------------------------------------