├── .githooks └── pre-commit ├── .github └── workflows │ ├── deploy.yml │ └── test.yml ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── alfred │ └── memory-note.alfredworkflow └── img │ ├── alfred-workflow-variables.png │ ├── copy-column-link.png │ ├── github-env.png │ ├── github-project-board.png │ ├── ios-widget.jpeg │ ├── kv-namspace-binding.png │ ├── mac-alfred.png │ └── overview.png ├── helper └── index.html ├── package.json ├── src ├── index.tsx ├── note │ ├── Note.ts │ ├── StorageAdapter.ts │ └── adapters │ │ ├── GitHubProject.ts │ │ ├── Notion.ts │ │ └── cloudflare.ts └── widget │ ├── render.tsx │ └── widget.tsx ├── tsconfig.json ├── wrangler.toml └── yarn.lock /.githooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | npx --no-install lint-staged 3 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | on: 3 | push: 4 | branches: 5 | - master 6 | repository_dispatch: 7 | permissions: 8 | contents: read 9 | jobs: 10 | deploy: 11 | runs-on: ubuntu-latest 12 | timeout-minutes: 60 13 | steps: 14 | - uses: actions/checkout@v3 15 | - name: setup Node 16 | uses: actions/setup-node@v3 17 | with: 18 | node-version: 18 19 | - name: Install 20 | run: yarn install 21 | - name: Publish 22 | uses: cloudflare/wrangler-action@1.3.0 23 | with: 24 | apiToken: ${{ secrets.CF_API_TOKEN }} 25 | env: 26 | CF_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }} 27 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | on: [ push,pull_request ] 3 | permissions: 4 | contents: read 5 | jobs: 6 | test: 7 | runs-on: ubuntu-latest 8 | timeout-minutes: 60 9 | steps: 10 | - uses: actions/checkout@v3 11 | - name: setup Node 12 | uses: actions/setup-node@v3 13 | with: 14 | node-version: 18 15 | - name: Install 16 | run: yarn install 17 | - name: Test 18 | run: yarn test 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .wrangler 2 | .dev.vars 3 | .env 4 | dist 5 | node_modules 6 | transpiled 7 | /.idea/ 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021 azu 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Memory Note 2 | 3 | Fast memory note for your brain. 4 | 5 | Memory Note is an app like reminder.app, but it does not have frontend. 6 | You can create and customize frontend and backend. 7 | 8 | In other words, Memory Note is programmable todo-app middleware. 9 | 10 | ## Features 11 | 12 | - Fast - Work on CDN Edges 13 | - Memory Notes works on [Cloudflare Workers](https://workers.cloudflare.com/) 14 | - Customizable Backend - Create own backend 15 | - You can use Cloudflare Worker KV or GitHub Projects as backend 16 | - Also, you can create own backend by implementing 3 APIs 17 | - Flexible Frontend - Memory Notes interface is just REST API. You can create any frontend 18 | - iOS shortcut.app, iOS Widgets, Alfred Workflow 19 | 20 | ![Overview](docs/img/overview.png) 21 | 22 | ### Screenshots 23 | 24 | ![GitHub Project Board](docs/img/github-project-board.png) 25 | 26 | > use GitHub Project Board as backend 27 | 28 | ![iOS Widget](docs/img/ios-widget.jpeg) 29 | 30 | > iOS Widgets using [Web Widget](https://apps.apple.com/jp/app/web-widget-webpage-screenshot/id1561605396) and Siri 31 | > integrations 32 | 33 | ![mac Alfred](docs/img/mac-alfred.png) 34 | 35 | > Alfred workflow integration 36 | 37 | ## Usage 38 | 39 | Requirements: [Cloudflare](https://www.cloudflare.com/) account 40 | 41 | 1. 42 | Click [![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/azu/memory-note) 43 | 2. Deploy memory-note 44 | 3. Set *Environment Variables* to your Memory Note workers 45 | 46 | - You need to choose a backend from `cloudflare` or `github` for your Memory Note 47 | 48 | ### Environment Variables 49 | 50 | - `MEMORY_NOTE_TOKEN`: It is random value. This is used for authorization. 51 | - You need to access your memory note using `?token=`. 52 | - You can use random password generator like 53 | - `BACKEND_SERVICE`: backend service 54 | - `github` or `cloudflare` is supported 55 | - Default: `cloudflare` 56 | - Other vars is defined in each Backend Service 57 | 58 | :memo: all values should be encrypted. 59 | 60 | ### Backend Service 61 | 62 | Currently, Memory Note supports following backend: 63 | 64 | - `cloudflare`: Cloudflare Workers KV 65 | - `github`: GitHub Project Board 66 | - `notion`: Notion 67 | 68 | You can choose a backend. 69 | 70 | :memo: If you want to add new backend, please submit Pull Request! 71 | 72 | [StorageAdapter.ts](./src/note/StorageAdapter.ts) is an interface for backend. 73 | 74 | #### `cloudflare` backend 75 | 76 | You need to create KV Binding. 77 | 78 | 1. Visit `https://dash.cloudflare.com/{your account id}/workers/kv/namespaces` 79 | 2. Add new Namespace like `MY_MEMORY_NOTE` 80 | 3. Visit `https://dash.cloudflare.com/{your account id}/workers/view/memory-note/settings` 81 | 4. Add new KV Namespace Bindings 82 | - `Variable name`: `MEMORY_NOTE` 83 | - `KV namespace`: created KV Namespace(`MY_MEMORY_NOTE`) 84 | 85 | ![kv-namspace-binding](docs/img/kv-namspace-binding.png) 86 | 87 | 5. Add new Environment Variables 88 | 89 | - `MEMORY_NOTE_TOKEN` 90 | - `Variable name`: `MEMORY_NOTE_TOKEN` 91 | - `Value`: your defined random password 92 | - `BACKEND_SERVICE` 93 | - `Variable name`: `BACKEND_SERVICE` 94 | - `Value`: `cloudflare` 95 | 96 | #### `github` backend 97 | 98 | You need to create GitHub Projects Board and Get your GitHub API Token 99 | 100 | **1. Create Project and Get Column Id** 101 | 102 | 1. Create a GitHub Repository 103 | 2. Create a GitHub Project on the repository 104 | - 105 | 3. Create a column like "Memory Note" 106 | 4. Copy Column link 107 | 5. Get Column id from the copied link 108 | 109 | ![copy-column-link](docs/img/copy-column-link.png) 110 | 111 | This **Column id** is `:listId` value of API endpoint. 112 | 113 | For example, if column link is `https://github.com/yourname/yourrepo/projects/1#column-1111111`, `1111111` 114 | is `column_id`. You need to copy it. 115 | You can use the column id as `:listId`. 116 | 117 | ```bash 118 | $ curl https://example-memory-note.worker.dev/notes/1111111?token=random-password 119 | ``` 120 | 121 | **2. Get GitHub API Token** 122 | 123 | 1. Visit 124 | 2. Create new API Token 125 | - permissions: `repo` 126 | 3. Copy it 127 | 128 | **3. Add Environments Variables to Cloudflare Workers** 129 | 130 | Add some Environment Variables. 131 | 132 | Visit `https://dash.cloudflare.com/{your account id}/workers/view/memory-note/settings` 133 | 134 | - `MEMORY_NOTE_TOKEN` 135 | - `Variable name`: `MEMORY_NOTE_TOKEN` 136 | - `Value`: your defined random password 137 | - `BACKEND_SERVICE`: 138 | - `Variable name`: `BACKEND_SERVICE` 139 | - `Value`: `github` 140 | - `GITHUB_OWNER`: 141 | - `Variable name`: `GITHUB_OWNER` 142 | - `Value`: your GitHub account name 143 | - `GITHUB_REPO`: 144 | - `Variable name`: `GITHUB_REPO` 145 | - `Value`: your GitHub repository name 146 | - `GITHUB_PROJECT_ID` 147 | - `Variable name`: `GITHUB_PROJECT_ID` 148 | - `Value`: your GitHub Project id 149 | - `GITHUB_TOKEN` 150 | - `Variable name`: `GITHUB_TOKEN` 151 | - `Value`: your GitHub API token 152 | 153 | For example, if you have used `https://github.com/your/my-note/projects/1` repo, you need to set `GITHUB_OWNER=your` 154 | and `GITHUB_REPO=my-note`, and `GITHUB_PROJECT_ID=1`. 155 | 156 | ![github-env](docs/img/github-env.png) 157 | 158 | ### Notion backend 159 | 160 | You need to create Notion Database and Get your Notion API Token 161 | 162 | - `NOTION_TOKEN`=`""` 163 | - `NOTION_MESSAGE_PROPERTY_NAME`=`""` 164 | 165 | You need to pass Notion Database ID as `:listId` value of API endpoint. 166 | 167 | - `GET /notes/<NOTION_DATABASE_ID>` 168 | - `POST /notes/<NOTION_DATABASE_ID>/new` 169 | 170 | ```` 171 | https://www.notion.so/myworkspace/a8aec43384f447ed84390e8e42c2e089?v=... 172 | | --------- Database ID --------| 173 | ```` 174 | 175 | 176 | Optional: 177 | 178 | - `NOTION_FILTER_OPTIONS`=`'{"name":"<PROPERTY_NAME>","type": "type": "<PROPERTY_TYPE>", "value":"<PROPERTY_VALUE>"}'` 179 | 180 | `NOTION_FILTER_OPTIONS` is a JSON string of `NotionFilterOption[]`. 181 | It will filter notes by `PROPERTY_NAME` and `PROPERTY_VALUE`. 182 | 183 | ```ts 184 | export type NotionFilterOption = 185 | | { 186 | name: string; 187 | type: "checkbox"; 188 | value: string; 189 | } 190 | | { 191 | name: string; 192 | type: "relation"; 193 | value: string; 194 | } 195 | | { 196 | name: string; 197 | type: "select"; 198 | value: string; 199 | op?: "equals" | "does_not_equal"; 200 | } 201 | | { 202 | name: string; 203 | type: "status"; 204 | value: string; 205 | op?: "equals" | "does_not_equal"; 206 | }; 207 | ``` 208 | 209 | Examples: 210 | 211 | ``` 212 | # filter category and checkbox 213 | NOTION_FILTER_OPTIONS='[{"name":"category","type":"select","value":"test"},{"name":"done","type":"checkbox","value":false}]' 214 | ``` 215 | 216 | ``` 217 | # filter relation and checkbox 218 | NOTION_FILTER_OPTIONS='[{"name":"ref","type":"relation","value":"xxxx-id--id"},{"name":"done","type":"checkbox","value":false}]' 219 | ``` 220 | 221 | ## API 222 | 223 | Memory-Note provides following API. 224 | 225 | ### `GET /notes/:listId` 226 | 227 | Return an array of notes. 228 | 229 | Parameters: 230 | 231 | - `:listId`: note key. This use-case is defined by adapter. 232 | - on `github`: your project column id 233 | - on `cloudflare`: any string 234 | 235 | Query: 236 | 237 | - `?limit`: result item count 238 | - `&token`: Your Memory Note token 239 | 240 | Example: 241 | 242 | ``` 243 | # curl https://{your worker}/notes/{your GitHub Project Column Id}?token={your Memory Note Token} 244 | $ curl https://example-memory-note.worker.dev/notes/11111?token=random-password 245 | ``` 246 | 247 | ### `GET /notes/:listId/txt` 248 | 249 | txt version of `/notes/:listId`. 250 | The response is like following: 251 | 252 | ``` 253 | note 254 | note 255 | note 256 | ``` 257 | 258 | ### `GET /notes/:listId/widget` 259 | 260 | Return simple html page for widgets. 261 | 262 | You can show your notes on Widgets app 263 | like [Web Widget](https://apps.apple.com/jp/app/web-widget-webpage-screenshot/id1561605396). 264 | 265 | ### `POST /notes/:listId/new` 266 | 267 | Post a note that following json data. 268 | 269 | ```typescript 270 | type NoteBody = { 271 | message: string; 272 | }; 273 | ``` 274 | 275 | Example of post data. 276 | 277 | ```json 278 | { 279 | "message": "test" 280 | } 281 | ``` 282 | 283 | Parameters: 284 | 285 | - `:listId`: note key. This use-case is defined by adapter. 286 | 287 | Query: 288 | 289 | - `?token`: Your Memory Note token 290 | 291 | ### `PUT /notes/:listId/:noteId` 292 | 293 | Edit a note with the `:noteId` 294 | 295 | ```typescript 296 | type NoteBody = { 297 | message: string; 298 | }; 299 | ``` 300 | 301 | Example of post data. 302 | 303 | ```json 304 | { 305 | "message": "test" 306 | } 307 | ``` 308 | 309 | Parameters: 310 | 311 | - `:listId`: note key. This use-case is defined by adapter. 312 | - `:noteId`: note id. you can get the id from GET api 313 | 314 | Query: 315 | 316 | - `?token`: Your Memory Note token 317 | 318 | ### `DELETE /notes/:listId/:noteId` 319 | 320 | Delete the note. 321 | 322 | Parameters: 323 | 324 | - `:listId`: note key. This use-case is defined by adapter. 325 | - `:noteId`: note id. you can get the id from GET api 326 | 327 | Query: 328 | 329 | - `?token`: Your Memory Note token 330 | 331 | ### `POST /notes/:listId/move/:noteId` 332 | 333 | Move the note to another list. 334 | 335 | - `:listId`: note key. This use-case is defined by adapter. 336 | - `:noteId`: note id. you can get the id from GET api 337 | 338 | Body: 339 | 340 | - `to`: to list id 341 | 342 | ```shell 343 | { 344 | "to": "another list id" 345 | } 346 | ``` 347 | 348 | ## Clients 349 | 350 | You can use client app for Memory Note. 351 | 352 | ### Alfred 353 | 354 | Alfred workflow can show notes in large types, add a new note, remove a note. 355 | 356 | - Download [memory-note.workflow](docs/alfred/memory-note.alfredworkflow) 357 | - Set [Workflow Variables](https://www.alfredapp.com/help/workflows/advanced/variables/) 358 | 359 | ![alfred-workflow-variables](docs/img/alfred-workflow-variables.png) 360 | 361 | [Workflow Variables](https://www.alfredapp.com/help/workflows/advanced/variables/) 362 | 363 | - `API_ENDPOINT`: your cloudflare worker url 364 | - Example, `https://my-memory-note.you.workers.dev` 365 | - `API_TOKEN`: your memory note token 366 | - `LIST_ID`: your main `:listId` 367 | 368 | ### iOS shortcuts.app: 369 | 370 | iOS shortcut can create a new note using voice(siri), read out notes. 371 | 372 | - Add note using voice to memory note: <https://www.icloud.com/shortcuts/c1095e066e1b40f9986aa1a5b0e36be8> 373 | - Read memory note: <https://www.icloud.com/shortcuts/d05d9b072cf94fffb4215b4e9d4ea6b6> 374 | 375 | :memo: You input `worker url` and `:listId` and `memory note token` after installing the workflow 376 | 377 | ### Others 378 | 379 | - [ ] Please submit a Pull Request 380 | 381 | ## Contributing 382 | 383 | 1. Fork it! 384 | 2. Create your feature branch: `git checkout -b my-new-feature` 385 | 3. Commit your changes: `git commit -am 'Add some feature'` 386 | 4. Push to the branch: `git push origin my-new-feature` 387 | 5. Submit a pull request :D 388 | 389 | ## License 390 | 391 | MIT 392 | -------------------------------------------------------------------------------- /docs/alfred/memory-note.alfredworkflow: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/memory-note/c07fdc0fe03a4f3e93ae9d40cb56f6d40a5e934b/docs/alfred/memory-note.alfredworkflow -------------------------------------------------------------------------------- /docs/img/alfred-workflow-variables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/memory-note/c07fdc0fe03a4f3e93ae9d40cb56f6d40a5e934b/docs/img/alfred-workflow-variables.png -------------------------------------------------------------------------------- /docs/img/copy-column-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/memory-note/c07fdc0fe03a4f3e93ae9d40cb56f6d40a5e934b/docs/img/copy-column-link.png -------------------------------------------------------------------------------- /docs/img/github-env.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/memory-note/c07fdc0fe03a4f3e93ae9d40cb56f6d40a5e934b/docs/img/github-env.png -------------------------------------------------------------------------------- /docs/img/github-project-board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/memory-note/c07fdc0fe03a4f3e93ae9d40cb56f6d40a5e934b/docs/img/github-project-board.png -------------------------------------------------------------------------------- /docs/img/ios-widget.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/memory-note/c07fdc0fe03a4f3e93ae9d40cb56f6d40a5e934b/docs/img/ios-widget.jpeg -------------------------------------------------------------------------------- /docs/img/kv-namspace-binding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/memory-note/c07fdc0fe03a4f3e93ae9d40cb56f6d40a5e934b/docs/img/kv-namspace-binding.png -------------------------------------------------------------------------------- /docs/img/mac-alfred.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/memory-note/c07fdc0fe03a4f3e93ae9d40cb56f6d40a5e934b/docs/img/mac-alfred.png -------------------------------------------------------------------------------- /docs/img/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/memory-note/c07fdc0fe03a4f3e93ae9d40cb56f6d40a5e934b/docs/img/overview.png -------------------------------------------------------------------------------- /helper/index.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html> 2 | <html lang='en'> 3 | <head> 4 | <meta charset='UTF-8'> 5 | <title>Post 6 | 7 | 8 | 9 | 10 |
11 | 24 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "memory-note", 3 | "version": "1.0.0", 4 | "description": "Fast memory-note on cloudflare worker", 5 | "main": "./src/index.tsx", 6 | "repository": "azu/memory-note", 7 | "keywords": [ 8 | "note", 9 | "todo", 10 | "reminder", 11 | "cloudflare-workers", 12 | "API" 13 | ], 14 | "scripts": { 15 | "dev": "wrangler dev ./src/index.tsx", 16 | "type-check": "tsc", 17 | "format": "prettier --write \"**/*.{js,jsx,ts,tsx,css}\"", 18 | "test": "npm run type-check", 19 | "prepare": "git config --local core.hooksPath .githooks", 20 | "deploy": "wrangler deploy ./src/index.tsx" 21 | }, 22 | "author": "author", 23 | "license": "MIT", 24 | "devDependencies": { 25 | "@cloudflare/workers-types": "^2.2.2", 26 | "@types/react": "^18.2.11", 27 | "lint-staged": "^11.1.2", 28 | "prettier": "^2.3.2", 29 | "ts-jest": "^29.1.0", 30 | "typescript": "^5.1.6", 31 | "wrangler": "^3.0.1" 32 | }, 33 | "dependencies": { 34 | "@cfworker/uuid": "^1.8.3", 35 | "@notionhq/client": "^2.2.5", 36 | "@octokit/core": "^3.5.1", 37 | "hono": "^3.2.3" 38 | }, 39 | "prettier": { 40 | "singleQuote": false, 41 | "printWidth": 120, 42 | "tabWidth": 4, 43 | "trailingComma": "none" 44 | }, 45 | "lint-staged": { 46 | "*.{js,jsx,ts,tsx,css}": [ 47 | "prettier --write" 48 | ] 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import { Context, Hono } from "hono"; 2 | import { cors } from "hono/cors"; 3 | import { createMemoryNote, NoteArguments } from "./note/Note"; 4 | import { createGitHubProjectStorage } from "./note/adapters/GitHubProject"; 5 | import { createCloudflareStorage } from "./note/adapters/cloudflare"; 6 | import { HTML } from "./widget/render"; 7 | import { createNotionStorage } from "./note/adapters/Notion"; 8 | 9 | declare var MEMORY_NOTE_TOKEN: string; 10 | declare var BACKEND_SERVICE: "github" | "cloudflare" | "notion"; 11 | declare var GITHUB_OWNER: string; 12 | declare var GITHUB_REPO: string; 13 | declare var GITHUB_PROJECT_ID: string; 14 | if ( 15 | typeof BACKEND_SERVICE === "string" && 16 | BACKEND_SERVICE !== "github" && 17 | BACKEND_SERVICE !== "cloudflare" && 18 | BACKEND_SERVICE !== "notion" 19 | ) { 20 | throw new Error("BACKEND_SERVICE should github or cloudflare or notion"); 21 | } 22 | const app = new Hono(); 23 | app.use("*", async (c, next) => { 24 | const token = c.req.query("token"); 25 | if (!c.env?.MEMORY_NOTE_TOKEN) { 26 | return c.json( 27 | { 28 | message: "token is not defined" 29 | }, 30 | 400 31 | ); 32 | } 33 | if (token !== c.env.MEMORY_NOTE_TOKEN) { 34 | return c.json( 35 | { 36 | message: "invalid token" 37 | }, 38 | 400 39 | ); 40 | } 41 | await next(); 42 | }); 43 | app.use("*", cors()); 44 | 45 | const newMemoryNote = (c: Context) => { 46 | const backendService = c.env.BACKEND_SERVICE || "cloudflare"; 47 | if (backendService === "notion") { 48 | if (!c.env.NOTION_TOKEN) { 49 | throw new Error("NOTION_TOKEN is not defined"); 50 | } 51 | return createMemoryNote({ 52 | storage: createNotionStorage({ 53 | NOTION_API_TOKEN: c.env.NOTION_TOKEN, 54 | NOTION_MESSAGE_PROPERTY_NAME: c.env.NOTION_MESSAGE_PROPERTY_NAME, 55 | NOTION_FILTER_OPTIONS: c.env.NOTION_FILTER_OPTIONS 56 | }) 57 | }); 58 | } else if (backendService === "cloudflare") { 59 | return createMemoryNote({ 60 | storage: createCloudflareStorage({ 61 | kvStorage: c.env.MEMORY_NOTE 62 | }) 63 | }); 64 | } else if (backendService === "github") { 65 | return createMemoryNote({ 66 | storage: createGitHubProjectStorage({ 67 | owner: GITHUB_OWNER, 68 | repo: GITHUB_REPO, 69 | projectId: Number(GITHUB_PROJECT_ID) 70 | }) 71 | }); 72 | } 73 | throw new Error("invalid backend service"); 74 | }; 75 | 76 | app.get("/notes/:listId", async (c) => { 77 | const key = c.req.param("listId"); 78 | const limitValue = Number(c.req.query("limit")) || 10; 79 | if (limitValue < 0 || limitValue > 50) { 80 | return c.text("invalid limit: 0 ~ 50", 400); 81 | } 82 | const notes = await newMemoryNote(c).readNotes(key, limitValue); 83 | return c.json(notes, 200); 84 | }); 85 | app.get("/notes/:listId/txt", async (c) => { 86 | const key = c.req.param("listId"); 87 | const limitValue = Number(c.req.query("limit")) || 10; 88 | if (limitValue < 0 || limitValue > 50) { 89 | return c.text("invalid limit: 0 ~ 50", 400); 90 | } 91 | const notes = await newMemoryNote(c).readNotes(key, limitValue); 92 | return c.text(notes.map((note) => note.message).join("\n"), 200); 93 | }); 94 | app.get("/notes/:listId/widget", async (c) => { 95 | const key = c.req.param("listId"); 96 | const limitValue = Number(c.req.query("limit")) || 10; 97 | if (limitValue < 0 || limitValue > 50) { 98 | return c.text("invalid limit: 0 ~ 50", 400); 99 | } 100 | const notes = await newMemoryNote(c).readNotes(key, limitValue); 101 | return c.html(); 102 | }); 103 | app.post("/notes/:listId/new", async (c) => { 104 | const key = c.req.param("listId"); 105 | const note = await c.req.json(); 106 | if (!note) { 107 | return c.text("invalid note", 400); 108 | } 109 | await newMemoryNote(c).pushNote(key, note); 110 | return c.json({ ok: true }, 200); 111 | }); 112 | app.post("/notes/:listId/move/:noteId", async (c) => { 113 | const key = c.req.param("listId"); 114 | const noteId = c.req.param("noteId"); 115 | 116 | const body = await c.req.json<{ to: string }>(); 117 | if (!body) { 118 | return c.text("invalid body", 400); 119 | } 120 | if (!body.to) { 121 | return c.text("invalid body: missing to", 400); 122 | } 123 | await newMemoryNote(c).moveNote({ 124 | fromKey: key, 125 | toKey: body.to, 126 | nodeId: noteId 127 | }); 128 | return c.json({ ok: true }, 200); 129 | }); 130 | app.put("/notes/:listId/:noteId", async (c) => { 131 | const key = c.req.param("listId"); 132 | const noteId = c.req.param("noteId"); 133 | const note = await c.req.json(); 134 | if (!note) { 135 | return c.text("invalid note", 400); 136 | } 137 | await newMemoryNote(c).editNote(key, noteId, note); 138 | return c.json({ ok: true }, 200); 139 | }); 140 | app.delete("/notes/:listId/:noteId", async (c) => { 141 | const key = c.req.param("listId"); 142 | const noteId = c.req.param("noteId"); 143 | if (!noteId) { 144 | return c.text("invalid node.id", 400); 145 | } 146 | await newMemoryNote(c).deleteNote(key, noteId); 147 | return c.json({ ok: true }, 200); 148 | }); 149 | app.onError((err, c) => { 150 | console.error(err); 151 | return c.text("Server Error", 500); 152 | }); 153 | 154 | export default app; 155 | -------------------------------------------------------------------------------- /src/note/Note.ts: -------------------------------------------------------------------------------- 1 | import { Note, StorageAdapter } from "./StorageAdapter"; 2 | 3 | /** 4 | * Note stack Architecture 5 | * 6 | * # Add a new Note 7 | * 8 | * New Note 9 | * ↓ Input = Push 10 | * ------------ 11 | * | Note | 12 | * | Note | 13 | * | Note | 14 | * ------------- stack size limit 15 | * | Note is flood | 16 | * ↓ Output = Popup 17 | * 18 | * # Edit a Note 19 | * 20 | * 1. pop Note B 21 | * 2. push new Note B2 which has edited data 22 | * 23 | * ↓ Input = Push 24 | * ------------ 25 | * | Note A | 26 | * | Note B | → Output = Pop 27 | * | Note C | 28 | * ------------- 29 | * 30 | * → 31 | * 32 | * ------------ 33 | * | Note B2 | 34 | * | Note A | 35 | * | Note C | 36 | * ------------- stack size limit 37 | */ 38 | export type NoteArguments = { 39 | message: string; 40 | }; 41 | export const createMemoryNote = (options: { storage: StorageAdapter }) => { 42 | const { storage } = options; 43 | const pushNote = async (key: string, note: NoteArguments, timestamp: number = Date.now()) => { 44 | return storage.appendNote(key, { 45 | ...note, 46 | timestamp 47 | }); 48 | }; 49 | 50 | const deleteNote = async (listId: string, noteId: string): Promise => { 51 | const deletedNote = await storage.deleteNote(listId, noteId); 52 | return true; 53 | }; 54 | 55 | const editNote = async (listId: string, nodeId: string, note: NoteArguments): Promise => { 56 | const deletedNote = await storage.deleteNote(listId, nodeId); 57 | await pushNote(listId, { 58 | ...deletedNote, 59 | ...note 60 | }); 61 | return true; 62 | }; 63 | 64 | const readNotes = async (listId: string, range: number): Promise => { 65 | const currentNotes = await storage.getNotes(listId); 66 | return currentNotes.slice(0, range); 67 | }; 68 | 69 | const moveNote = async ({ 70 | fromKey, 71 | toKey, 72 | nodeId 73 | }: { 74 | fromKey: string; 75 | toKey: string; 76 | nodeId: string; 77 | }): Promise => { 78 | const deletedNote = await storage.deleteNote(fromKey, nodeId); 79 | await pushNote(toKey, deletedNote); 80 | return true; 81 | }; 82 | return { 83 | pushNote, 84 | editNote, 85 | deleteNote, 86 | moveNote, 87 | readNotes 88 | }; 89 | }; 90 | -------------------------------------------------------------------------------- /src/note/StorageAdapter.ts: -------------------------------------------------------------------------------- 1 | export type Note = { 2 | id: string; 3 | message: string; 4 | timestamp: number; 5 | }; 6 | export type AppendNote = { 7 | /** 8 | * Allow to generate the id in storage internal 9 | */ 10 | id?: string; 11 | message: string; 12 | timestamp: number; 13 | }; 14 | 15 | /** 16 | * Storage Adapter should implement these methods 17 | */ 18 | export type StorageAdapter = { 19 | /** 20 | * Return an array of Note 21 | * @param listId 22 | */ 23 | getNotes(listId: string): Promise; 24 | /** 25 | * Add the note to the list 26 | * Return the added note 27 | * @param listId 28 | * @param note 29 | */ 30 | appendNote(listId: string, note: AppendNote): Promise; 31 | /** 32 | * Remove the note from the list 33 | * Return the deleted note 34 | * @param listId 35 | * @param id 36 | */ 37 | deleteNote(listId: string, id: Note["id"]): Promise; 38 | }; 39 | -------------------------------------------------------------------------------- /src/note/adapters/GitHubProject.ts: -------------------------------------------------------------------------------- 1 | import { AppendNote, Note, StorageAdapter } from "../StorageAdapter"; 2 | import { Octokit } from "@octokit/core"; 3 | 4 | // $ wrangler secret put GITHUB_TOKEN 5 | // 6 | declare var GITHUB_TOKEN: string; 7 | 8 | type ProjectResponse = { 9 | repository: { 10 | project: { 11 | columns: { 12 | nodes: { 13 | resourcePath: string; // "/azu/test/projects/1/columns/11111" 14 | cards: { 15 | nodes: { 16 | databaseId: string; 17 | note: string; 18 | updatedAt: string; 19 | content: null | { 20 | id: string; 21 | number: number; 22 | title: string; 23 | }; 24 | }[]; 25 | }; 26 | }[]; 27 | }; 28 | }; 29 | }; 30 | }; 31 | const findInboxColumn = ( 32 | response: ProjectResponse, 33 | columnId: number 34 | ): ProjectResponse["repository"]["project"]["columns"]["nodes"][number] | undefined => { 35 | return response.repository.project.columns.nodes.find((node) => { 36 | return node.resourcePath.endsWith(`/${columnId}`); 37 | }); 38 | }; 39 | // noteKey is column_id 40 | // example. 1123413 from https://github.com/owner/repo/projects/1#column-1123413 41 | export const createGitHubProjectStorage = ({ 42 | owner, 43 | repo, 44 | projectId, 45 | deleteMode = "ARCHIVE" 46 | }: { 47 | owner: string; 48 | repo: string; 49 | projectId: number; 50 | deleteMode?: "DELETE" | "ARCHIVE"; 51 | }): StorageAdapter => { 52 | const octokit = new Octokit({ auth: GITHUB_TOKEN }); 53 | return { 54 | async getNotes(columnId: string): Promise { 55 | const response: ProjectResponse = await octokit.graphql( 56 | `query ($owner: String!, $repo: String!, $projectId: Int!) { 57 | repository(owner: $owner, name: $repo) { 58 | project(number: $projectId) { 59 | columns(first: 10) { 60 | nodes { 61 | resourcePath 62 | cards (archivedStates: NOT_ARCHIVED) { 63 | nodes { 64 | databaseId 65 | note 66 | updatedAt 67 | content { 68 | ... on Issue { 69 | id 70 | number 71 | title 72 | } 73 | ... on PullRequest { 74 | id 75 | number 76 | title 77 | } 78 | } 79 | } 80 | } 81 | } 82 | } 83 | } 84 | } 85 | } 86 | `, 87 | { 88 | owner: owner, 89 | repo: repo, 90 | projectId: projectId 91 | } 92 | ); 93 | const column = findInboxColumn(response, Number(columnId)); 94 | if (!column) { 95 | return []; 96 | } 97 | return column.cards.nodes.map((node) => { 98 | return { 99 | id: node.databaseId, 100 | message: node.note || node.content?.title || "", 101 | timestamp: new Date(node.updatedAt).getTime() 102 | }; 103 | }); 104 | }, 105 | async appendNote(columnId: string, note: AppendNote): Promise { 106 | // https://docs.github.com/ja/rest/reference/projects#create-a-project-card 107 | const { data } = await octokit.request("POST /projects/columns/{column_id}/cards", { 108 | note: note.message, 109 | column_id: Number(columnId), 110 | mediaType: { 111 | previews: ["inertia"] 112 | } 113 | }); 114 | const response: { id: number; note: string | null; created_at: string } = data; 115 | return { 116 | id: String(response.id), 117 | message: note.message ?? "", 118 | timestamp: new Date(response.created_at).getTime() 119 | }; 120 | }, 121 | async deleteNote(columnId: string, id: Note["id"]): Promise { 122 | const { data } = await octokit.request("GET /projects/columns/cards/{card_id}", { 123 | card_id: Number(id), // card_id should be number 124 | mediaType: { 125 | previews: ["inertia"] 126 | } 127 | }); 128 | const card: { id: number; note: string | null; updated_at: string } = data; 129 | if (deleteMode === "ARCHIVE") { 130 | // https://docs.github.com/ja/rest/reference/projects#update-an-existing-project-card 131 | await octokit.request("PATCH /projects/columns/cards/{card_id}", { 132 | card_id: Number(id), 133 | archived: true, 134 | mediaType: { 135 | previews: ["inertia"] 136 | } 137 | }); 138 | } else { 139 | // https://docs.github.com/ja/rest/reference/projects#delete-a-project-card 140 | await octokit.request("DELETE /projects/columns/cards/{card_id}", { 141 | card_id: Number(id), // card_id should be number 142 | mediaType: { 143 | previews: ["inertia"] 144 | } 145 | }); 146 | } 147 | return { 148 | id: String(card.id), 149 | message: card.note ?? "", 150 | timestamp: new Date(card.updated_at).getTime() 151 | }; 152 | } 153 | }; 154 | }; 155 | -------------------------------------------------------------------------------- /src/note/adapters/Notion.ts: -------------------------------------------------------------------------------- 1 | import { AppendNote, Note, StorageAdapter } from "../StorageAdapter"; 2 | import { Client } from "@notionhq/client"; 3 | import { PageObjectResponse } from "@notionhq/client/build/src/api-endpoints"; 4 | 5 | // :listId is notion database id 6 | export type createNotionDatabaseSimple = { 7 | NOTION_API_TOKEN: string; 8 | // title property name 9 | NOTION_MESSAGE_PROPERTY_NAME: string; // should be title 10 | }; 11 | export type NotionFilterOption = 12 | | { 13 | name: string; 14 | type: "checkbox"; 15 | value: string; 16 | } 17 | | { 18 | name: string; 19 | type: "relation"; 20 | value: string; 21 | } 22 | | { 23 | name: string; 24 | type: "select"; 25 | value: string; 26 | op?: "equals" | "does_not_equal"; 27 | } 28 | | { 29 | name: string; 30 | type: "status"; 31 | value: string; 32 | op?: "equals" | "does_not_equal"; 33 | }; 34 | export type createNotionDatabaseExtended = createNotionDatabaseSimple & { 35 | // json value as a string 36 | // NotionFilterOption[] (and) 37 | // example: '[{"name":"category","type":"select","value":"test"},{"name":"category","type":"checkbox","value":false}]' 38 | NOTION_FILTER_OPTIONS: string; 39 | }; 40 | const parseNotionFilterOption = (optionStr: string) => { 41 | try { 42 | return JSON.parse(optionStr) as NotionFilterOption[]; 43 | } catch (e) { 44 | throw new Error("invalid NOTION_FILTER_OPTIONS:" + optionStr); 45 | } 46 | }; 47 | export type createNotionDatabaseOptions = createNotionDatabaseSimple | createNotionDatabaseExtended; 48 | type PropertyTypes = ExtractRecordValue; 49 | type ExtractRecordValue = R extends Record ? V : never; 50 | export const prop = (o: F, type: T) => { 51 | if (o.type !== type) { 52 | throw new Error("invalid type:" + JSON.stringify(o)); 53 | } 54 | return o as T extends F["type"] ? Extract : never; 55 | }; 56 | 57 | export const createNotionStorage = (options: createNotionDatabaseOptions): StorageAdapter => { 58 | const { NOTION_API_TOKEN, NOTION_MESSAGE_PROPERTY_NAME } = options; 59 | const notionClient = new Client({ 60 | auth: NOTION_API_TOKEN 61 | }); 62 | const notionMessagePropertyName = NOTION_MESSAGE_PROPERTY_NAME; 63 | if (!notionMessagePropertyName) 64 | throw new Error("invalid NOTION_MESSAGE_PROPERTY_NAME:" + notionMessagePropertyName); 65 | 66 | const notionCheckboxOption = (() => { 67 | if (!("NOTION_CHECKBOX_PROPERTY_NAME" in options)) return undefined; 68 | return { 69 | name: options.NOTION_CHECKBOX_PROPERTY_NAME 70 | }; 71 | })(); 72 | return { 73 | async getNotes(databaseId: string): Promise { 74 | const notionFilterOptions = 75 | "NOTION_FILTER_OPTIONS" in options ? parseNotionFilterOption(options.NOTION_FILTER_OPTIONS) : undefined; 76 | const convertToFilter = (option: NotionFilterOption) => { 77 | if (!option) throw new Error("invalid option"); 78 | if (option?.value === undefined) throw new Error("invalid option value"); 79 | if (option?.name === undefined) throw new Error("invalid option name"); 80 | if (option.type === "select") { 81 | if (!option.op || option.op === "equals") { 82 | return { 83 | property: option.name, 84 | select: { 85 | equals: option.value 86 | } 87 | }; 88 | } else if (option.op === "does_not_equal") { 89 | return { 90 | property: option.name, 91 | select: { 92 | does_not_equal: option.value 93 | } 94 | }; 95 | } 96 | } else if (option.type === "status") { 97 | if (!option.op || option.op === "equals") { 98 | return { 99 | property: option.name, 100 | status: { 101 | equals: option.value 102 | } 103 | }; 104 | } else if (option.op === "does_not_equal") { 105 | return { 106 | property: option.name, 107 | status: { 108 | does_not_equal: option.value 109 | } 110 | }; 111 | } 112 | } else if (option.type === "relation") { 113 | return { 114 | property: option.name, 115 | relation: { 116 | contains: option.value 117 | } 118 | }; 119 | } else if (option.type === "checkbox") { 120 | return { 121 | property: option.name, 122 | checkbox: { 123 | equals: Boolean(option.value) 124 | } 125 | }; 126 | } 127 | throw new Error("not supported filter option:" + option?.type); 128 | }; 129 | const filter = (() => { 130 | if (!notionFilterOptions) return undefined; 131 | if (notionFilterOptions.length === 0) return undefined; 132 | if (notionFilterOptions.length === 1) return convertToFilter(notionFilterOptions[0]); 133 | return { 134 | and: notionFilterOptions.map(convertToFilter) 135 | }; 136 | })(); 137 | const { results } = await notionClient.databases.query({ 138 | database_id: databaseId, 139 | filter: filter ? filter : undefined 140 | }); 141 | return results.map((page) => { 142 | const ret = page as PageObjectResponse; 143 | return { 144 | id: ret.id, 145 | message: prop(ret.properties[notionMessagePropertyName], "title").title[0].plain_text, 146 | timestamp: new Date(ret.created_time).getTime() 147 | }; 148 | }); 149 | }, 150 | async appendNote(databaseId: string, note: AppendNote): Promise { 151 | const notionFilterOptions = 152 | "NOTION_FILTER_OPTIONS" in options ? parseNotionFilterOption(options.NOTION_FILTER_OPTIONS) : undefined; 153 | const convertProperty = (option: NotionFilterOption) => { 154 | if (option.type === "select") { 155 | if (option?.op === "does_not_equal") { 156 | return []; // use default value 157 | } 158 | return [ 159 | option?.name, 160 | { 161 | select: { 162 | name: option?.value 163 | } 164 | } 165 | ] as const; 166 | } else if (option.type === "status") { 167 | if (option?.op === "does_not_equal") { 168 | return []; // use default value 169 | } 170 | return [ 171 | option?.name, 172 | { 173 | status: { 174 | name: option?.value 175 | } 176 | } 177 | ] as const; 178 | } else if (option?.type === "relation") { 179 | return [ 180 | option?.name, 181 | { 182 | relation: [ 183 | { 184 | id: option?.value 185 | } 186 | ] 187 | } 188 | ] as const; 189 | } else if (option?.type === "checkbox") { 190 | return [ 191 | option?.name, 192 | { 193 | checkbox: Boolean(option?.value) 194 | } 195 | ] as const; 196 | } 197 | throw new Error("non supported filter option: " + (option as { type: "__invalid__" })?.type); 198 | }; 199 | const filterProperties = notionFilterOptions 200 | ? Object.fromEntries( 201 | notionFilterOptions.map((option) => { 202 | return convertProperty(option); 203 | }) 204 | ) 205 | : []; 206 | const properties = { 207 | [notionMessagePropertyName]: { 208 | title: [ 209 | { 210 | text: { 211 | content: note.message 212 | } 213 | } 214 | ] 215 | }, 216 | ...(filterProperties ? filterProperties : {}) 217 | }; 218 | console.log("create to database_id", databaseId); 219 | console.log("create properties", JSON.stringify(properties, null, 4)); 220 | const result = (await notionClient.pages.create({ 221 | parent: { 222 | database_id: databaseId 223 | }, 224 | properties: properties 225 | })) as PageObjectResponse; 226 | console.log("create result", JSON.stringify(result, null, 4)); 227 | return { 228 | id: result.id, 229 | message: note.message, 230 | timestamp: new Date(result.created_time).getTime() 231 | }; 232 | }, 233 | async deleteNote(listId: string, nodeId: Note["id"]): Promise { 234 | await notionClient.pages.update({ 235 | page_id: nodeId, 236 | archived: true 237 | }); 238 | return { 239 | id: nodeId, 240 | message: "", 241 | timestamp: Date.now() 242 | }; 243 | } 244 | }; 245 | }; 246 | -------------------------------------------------------------------------------- /src/note/adapters/cloudflare.ts: -------------------------------------------------------------------------------- 1 | import { AppendNote, Note, StorageAdapter } from "../StorageAdapter"; 2 | import { uuid } from "@cfworker/uuid"; 3 | 4 | export const createCloudflareStorage = ({ kvStorage }: { kvStorage: KVNamespace }): StorageAdapter => { 5 | return { 6 | async getNotes(listId: string): Promise { 7 | return JSON.parse((await kvStorage.get(listId)) ?? "[]"); 8 | }, 9 | async appendNote(listId: string, note: AppendNote): Promise { 10 | const currentNotes = await this.getNotes(listId); 11 | const newNote: Note = { 12 | id: uuid(), 13 | ...note 14 | }; 15 | const nextNotes = [newNote].concat(currentNotes); 16 | await kvStorage.put(listId, JSON.stringify(nextNotes)); 17 | return newNote; 18 | }, 19 | async deleteNote(listId: string, nodeId: Note["id"]): Promise { 20 | const currentNotes = await this.getNotes(listId); 21 | const index = currentNotes.findIndex((note) => note.id === nodeId); 22 | if (index === -1) { 23 | throw new Error("not found note:" + nodeId); 24 | } 25 | const [poppedNote] = currentNotes.splice(index, 1); 26 | await kvStorage.put(listId, JSON.stringify(currentNotes)); 27 | return poppedNote; 28 | } 29 | }; 30 | }; 31 | -------------------------------------------------------------------------------- /src/widget/render.tsx: -------------------------------------------------------------------------------- 1 | import { Widget } from "./widget"; 2 | import { html, raw } from "hono/html"; 3 | import { Note } from "../note/StorageAdapter"; 4 | 5 | export const HTML = ({ notes }: { notes: Note[] }) => { 6 | return ( 7 | 8 | 9 | 10 | 11 | Memory Note 12 | 43 | 44 | 45 | 46 | 70 | 71 | 72 | ); 73 | }; 74 | -------------------------------------------------------------------------------- /src/widget/widget.tsx: -------------------------------------------------------------------------------- 1 | import { jsx } from "hono/jsx"; 2 | import { Note } from "../note/StorageAdapter"; 3 | import type React from "react"; 4 | 5 | const List = ({ children, ...props }: React.JSX.IntrinsicElements["ul"]) => { 6 | return ( 7 | // @ts-expect-error: why class? 8 |
    9 | {children} 10 |
11 | ); 12 | }; 13 | const ListItem = ({ note }: { note: Note }) => { 14 | return ( 15 | // @ts-expect-error: why class? 16 |
  • 17 | {note.message} 18 |
  • 19 | ); 20 | }; 21 | export type WidgetProps = { 22 | notes: Note[]; 23 | }; 24 | export const Widget = ({ notes }: WidgetProps) => { 25 | return ( 26 |
    27 | {/*// @ts-expect-error: why class?*/} 28 |
    {notes.length}
    29 | 30 | {notes.map((note) => { 31 | return ; 32 | })} 33 | 34 |
    35 | ); 36 | }; 37 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "outDir": "dist", 7 | "esModuleInterop": true, 8 | "skipLibCheck": true, 9 | "strict": true, 10 | "lib": [ 11 | "esnext" 12 | ], 13 | "types": [ 14 | "@cloudflare/workers-types", 15 | "node" 16 | ], 17 | "jsx": "react-jsx", 18 | "jsxImportSource": "hono/jsx" 19 | }, 20 | } 21 | -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- 1 | name = "memory-note" 2 | kv_namespaces = [ 3 | { binding = "MEMORY_NOTE", id = "5d96a29ca512466680e9e32601669ddd", preview_id = "89e03c9ccb1c48a68baf22d75f3d06fb" } 4 | ] 5 | compatibility_date = "2023-01-01" 6 | compatibility_flags = [ "nodejs_compat" ] 7 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.14.5" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" 8 | integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== 9 | dependencies: 10 | "@babel/highlight" "^7.14.5" 11 | 12 | "@babel/helper-validator-identifier@^7.14.5": 13 | version "7.15.7" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" 15 | integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== 16 | 17 | "@babel/highlight@^7.14.5": 18 | version "7.14.5" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 20 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.14.5" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@cfworker/uuid@^1.8.3": 27 | version "1.9.1" 28 | resolved "https://registry.yarnpkg.com/@cfworker/uuid/-/uuid-1.9.1.tgz#a52a17246e57398cb6aed6aba1c0849000774022" 29 | integrity sha512-ufORuZ6JSelrG7b7/cQ8JEm7MM+FWgPb5D9wvF6diA8+9WlK+K5SElF3eqRC7BiGrwQAZQ9feWMVLdOXv1d6fg== 30 | 31 | "@cloudflare/kv-asset-handler@^0.2.0": 32 | version "0.2.0" 33 | resolved "https://registry.yarnpkg.com/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.2.0.tgz#c9959bbd7a1c40bd7c674adae98aa8c8d0e5ca68" 34 | integrity sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A== 35 | dependencies: 36 | mime "^3.0.0" 37 | 38 | "@cloudflare/workerd-darwin-64@1.20230518.0": 39 | version "1.20230518.0" 40 | resolved "https://registry.yarnpkg.com/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20230518.0.tgz#d2c951670e11fa9263311dbb64d87c859cb88264" 41 | integrity sha512-reApIf2/do6GjLlajU6LbRYh8gm/XcaRtzGbF8jo5IzyDSsdStmfNuvq7qssZXG92219Yp1kuTgR9+D1GGZGbg== 42 | 43 | "@cloudflare/workerd-darwin-arm64@1.20230518.0": 44 | version "1.20230518.0" 45 | resolved "https://registry.yarnpkg.com/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20230518.0.tgz#ca8422ada85583426fef2bd882da188e23d1ca3b" 46 | integrity sha512-1l+xdbmPddqb2YIHd1YJ3YG/Fl1nhayzcxfL30xfNS89zJn9Xn3JomM0XMD4mk0d5GruBP3q8BQZ1Uo4rRLF3A== 47 | 48 | "@cloudflare/workerd-linux-64@1.20230518.0": 49 | version "1.20230518.0" 50 | resolved "https://registry.yarnpkg.com/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20230518.0.tgz#cc4039db047683866f5cd70b2d24d62548f36b31" 51 | integrity sha512-/pfR+YBpMOPr2cAlwjtInil0hRZjD8KX9LqK9JkfkEiaBH8CYhnJQcOdNHZI+3OjcY09JnQtEVC5xC4nbW7Bvw== 52 | 53 | "@cloudflare/workerd-linux-arm64@1.20230518.0": 54 | version "1.20230518.0" 55 | resolved "https://registry.yarnpkg.com/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20230518.0.tgz#c0e5983492390c719ce6fbbb0241de8fa4a43d8c" 56 | integrity sha512-q3HQvn3J4uEkE0cfDAGG8zqzSZrD47cavB/Tzv4mNutqwg6B4wL3ifjtGeB55tnP2K2KL0GVmX4tObcvpUF4BA== 57 | 58 | "@cloudflare/workerd-windows-64@1.20230518.0": 59 | version "1.20230518.0" 60 | resolved "https://registry.yarnpkg.com/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20230518.0.tgz#d0dcf6b51a1b6593e1c70b04e001bebcf2b703c1" 61 | integrity sha512-vNEHKS5gKKduNOBYtQjcBopAmFT1iScuPWMZa2nJboSjOB9I/5oiVsUpSyk5Y2ARyrohXNz0y8D7p87YzTASWw== 62 | 63 | "@cloudflare/workers-types@^2.2.2": 64 | version "2.2.2" 65 | resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-2.2.2.tgz#1bced16bba801d7af987da835467545bb5cc7ac6" 66 | integrity sha512-kaMn2rueJ0PL1TYVGknTCh0X0x0d9G+FNXAFep7/4uqecEZoQb/63o6rOmMuiqI09zLuHV6xhKRXinokV/MY9A== 67 | 68 | "@esbuild-plugins/node-globals-polyfill@^0.1.1": 69 | version "0.1.1" 70 | resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz#a313ab3efbb2c17c8ce376aa216c627c9b40f9d7" 71 | integrity sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg== 72 | 73 | "@esbuild-plugins/node-modules-polyfill@^0.1.4": 74 | version "0.1.4" 75 | resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz#eb2f55da11967b2986c913f1a7957d1c868849c0" 76 | integrity sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg== 77 | dependencies: 78 | escape-string-regexp "^4.0.0" 79 | rollup-plugin-node-polyfills "^0.2.1" 80 | 81 | "@esbuild/android-arm64@0.16.3": 82 | version "0.16.3" 83 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.3.tgz#6af6d16be6d534d776a51fc215bfd81a68906d2c" 84 | integrity sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg== 85 | 86 | "@esbuild/android-arm@0.16.3": 87 | version "0.16.3" 88 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.3.tgz#2a091222f3b1928e3246fb3c5202eaca88baab67" 89 | integrity sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA== 90 | 91 | "@esbuild/android-x64@0.16.3": 92 | version "0.16.3" 93 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.3.tgz#a6d749c58b022d371dc40d50ac1bb4aebd1eb953" 94 | integrity sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ== 95 | 96 | "@esbuild/darwin-arm64@0.16.3": 97 | version "0.16.3" 98 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.3.tgz#92d1826ed2f21dcac5830b70d7215c6afbb744e2" 99 | integrity sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw== 100 | 101 | "@esbuild/darwin-x64@0.16.3": 102 | version "0.16.3" 103 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.3.tgz#7fc3570c2b16e9ff4fc178593a0a4adb1ae8ea57" 104 | integrity sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ== 105 | 106 | "@esbuild/freebsd-arm64@0.16.3": 107 | version "0.16.3" 108 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.3.tgz#16735ce16f8c9a4e7289e9e259aa01a8d9874307" 109 | integrity sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw== 110 | 111 | "@esbuild/freebsd-x64@0.16.3": 112 | version "0.16.3" 113 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.3.tgz#f4edd1464cb072799ed6b8ab5178478e71c13459" 114 | integrity sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug== 115 | 116 | "@esbuild/linux-arm64@0.16.3": 117 | version "0.16.3" 118 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.3.tgz#4b7ae6fe3618d9a40d6ca39c6edc991ac1447203" 119 | integrity sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ== 120 | 121 | "@esbuild/linux-arm@0.16.3": 122 | version "0.16.3" 123 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.3.tgz#4b3e9f849822e16a76a70844c4db68075b259a58" 124 | integrity sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ== 125 | 126 | "@esbuild/linux-ia32@0.16.3": 127 | version "0.16.3" 128 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.3.tgz#2ff3936b91bfff62f9ecf7f6411ef399b29ed22d" 129 | integrity sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA== 130 | 131 | "@esbuild/linux-loong64@0.16.3": 132 | version "0.16.3" 133 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.3.tgz#ff8aa59f49d9ccbc1ff952ba1f5cd01a534562df" 134 | integrity sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw== 135 | 136 | "@esbuild/linux-mips64el@0.16.3": 137 | version "0.16.3" 138 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.3.tgz#5dd5e118071c3912df69beedbfd11fb117f0fe5e" 139 | integrity sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw== 140 | 141 | "@esbuild/linux-ppc64@0.16.3": 142 | version "0.16.3" 143 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.3.tgz#36c62e24eae7fa3f0d921506da8fc1e6098a1364" 144 | integrity sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q== 145 | 146 | "@esbuild/linux-riscv64@0.16.3": 147 | version "0.16.3" 148 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.3.tgz#f0fec8e7affb5bcc817fefc61a21cbb95539e393" 149 | integrity sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ== 150 | 151 | "@esbuild/linux-s390x@0.16.3": 152 | version "0.16.3" 153 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.3.tgz#22e10edd6e91f53c2e1f60e46abd453d7794409b" 154 | integrity sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ== 155 | 156 | "@esbuild/linux-x64@0.16.3": 157 | version "0.16.3" 158 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.3.tgz#38388b73fd9eebe45b073d7d8099b9c2e54f7139" 159 | integrity sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w== 160 | 161 | "@esbuild/netbsd-x64@0.16.3": 162 | version "0.16.3" 163 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.3.tgz#e0270569567f1530b8dbe6d11d5b4930b9cc71ae" 164 | integrity sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA== 165 | 166 | "@esbuild/openbsd-x64@0.16.3": 167 | version "0.16.3" 168 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.3.tgz#3b16642d443848bca605f33ee3978a1890911e6d" 169 | integrity sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg== 170 | 171 | "@esbuild/sunos-x64@0.16.3": 172 | version "0.16.3" 173 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.3.tgz#a838f247867380f0ae25ce1936dc5ab6f57b7734" 174 | integrity sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw== 175 | 176 | "@esbuild/win32-arm64@0.16.3": 177 | version "0.16.3" 178 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.3.tgz#bedd9bef5fb41f89ce2599f1761973cf6d6a67b6" 179 | integrity sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg== 180 | 181 | "@esbuild/win32-ia32@0.16.3": 182 | version "0.16.3" 183 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.3.tgz#49800aa812d8cc35ceef61e8d3b01224684cc0b1" 184 | integrity sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ== 185 | 186 | "@esbuild/win32-x64@0.16.3": 187 | version "0.16.3" 188 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.3.tgz#94047dae921949cfb308117d993c4b941291ae10" 189 | integrity sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow== 190 | 191 | "@jest/schemas@^29.4.3": 192 | version "29.4.3" 193 | resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" 194 | integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== 195 | dependencies: 196 | "@sinclair/typebox" "^0.25.16" 197 | 198 | "@jest/types@^29.5.0": 199 | version "29.5.0" 200 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" 201 | integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== 202 | dependencies: 203 | "@jest/schemas" "^29.4.3" 204 | "@types/istanbul-lib-coverage" "^2.0.0" 205 | "@types/istanbul-reports" "^3.0.0" 206 | "@types/node" "*" 207 | "@types/yargs" "^17.0.8" 208 | chalk "^4.0.0" 209 | 210 | "@notionhq/client@^2.2.5": 211 | version "2.2.5" 212 | resolved "https://registry.yarnpkg.com/@notionhq/client/-/client-2.2.5.tgz#8c5152016ea769f2d885327fef45d0ef834f89b2" 213 | integrity sha512-NobSaeSK0DMuxAIy2pg53Iv850tGFxXYEYacFBQgO634L1uwQv7WQCAdeFQpD3kJiEycQfSYv6RGC5VENEXjiQ== 214 | dependencies: 215 | "@types/node-fetch" "^2.5.10" 216 | node-fetch "^2.6.1" 217 | 218 | "@octokit/auth-token@^2.4.4": 219 | version "2.5.0" 220 | resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" 221 | integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== 222 | dependencies: 223 | "@octokit/types" "^6.0.3" 224 | 225 | "@octokit/core@^3.5.1": 226 | version "3.5.1" 227 | resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" 228 | integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw== 229 | dependencies: 230 | "@octokit/auth-token" "^2.4.4" 231 | "@octokit/graphql" "^4.5.8" 232 | "@octokit/request" "^5.6.0" 233 | "@octokit/request-error" "^2.0.5" 234 | "@octokit/types" "^6.0.3" 235 | before-after-hook "^2.2.0" 236 | universal-user-agent "^6.0.0" 237 | 238 | "@octokit/endpoint@^6.0.1": 239 | version "6.0.12" 240 | resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" 241 | integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== 242 | dependencies: 243 | "@octokit/types" "^6.0.3" 244 | is-plain-object "^5.0.0" 245 | universal-user-agent "^6.0.0" 246 | 247 | "@octokit/graphql@^4.5.8": 248 | version "4.8.0" 249 | resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" 250 | integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== 251 | dependencies: 252 | "@octokit/request" "^5.6.0" 253 | "@octokit/types" "^6.0.3" 254 | universal-user-agent "^6.0.0" 255 | 256 | "@octokit/openapi-types@^10.5.0": 257 | version "10.6.0" 258 | resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-10.6.0.tgz#13278af3cbe7bb141dc4ae02c24eaff209efadfb" 259 | integrity sha512-/iQtZq+zuQJrwawFyjixh333xPu4/KJKk0bFM/Omm4kFlTGw0dWXfq6xCOe5DqONW0faW29Cc9r6p2mvl72aTQ== 260 | 261 | "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": 262 | version "2.1.0" 263 | resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" 264 | integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== 265 | dependencies: 266 | "@octokit/types" "^6.0.3" 267 | deprecation "^2.0.0" 268 | once "^1.4.0" 269 | 270 | "@octokit/request@^5.6.0": 271 | version "5.6.1" 272 | resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.1.tgz#f97aff075c37ab1d427c49082fefeef0dba2d8ce" 273 | integrity sha512-Ls2cfs1OfXaOKzkcxnqw5MR6drMA/zWX/LIS/p8Yjdz7QKTPQLMsB3R+OvoxE6XnXeXEE2X7xe4G4l4X0gRiKQ== 274 | dependencies: 275 | "@octokit/endpoint" "^6.0.1" 276 | "@octokit/request-error" "^2.1.0" 277 | "@octokit/types" "^6.16.1" 278 | is-plain-object "^5.0.0" 279 | node-fetch "^2.6.1" 280 | universal-user-agent "^6.0.0" 281 | 282 | "@octokit/types@^6.0.3", "@octokit/types@^6.16.1": 283 | version "6.31.0" 284 | resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.31.0.tgz#b444852100090d1c5d0015614860c6131dc217e8" 285 | integrity sha512-xobpvYmMYoFSxZB6jL1TPTMMZkxZIBlY145ZKibBJDKCczP1FrLLougtuVOZywGVZdcYs8oq2Bxb3aMjqIFeiw== 286 | dependencies: 287 | "@octokit/openapi-types" "^10.5.0" 288 | 289 | "@sinclair/typebox@^0.25.16": 290 | version "0.25.24" 291 | resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" 292 | integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== 293 | 294 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": 295 | version "2.0.3" 296 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" 297 | integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== 298 | 299 | "@types/istanbul-lib-report@*": 300 | version "3.0.0" 301 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" 302 | integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== 303 | dependencies: 304 | "@types/istanbul-lib-coverage" "*" 305 | 306 | "@types/istanbul-reports@^3.0.0": 307 | version "3.0.1" 308 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" 309 | integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== 310 | dependencies: 311 | "@types/istanbul-lib-report" "*" 312 | 313 | "@types/node-fetch@^2.5.10": 314 | version "2.6.4" 315 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660" 316 | integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg== 317 | dependencies: 318 | "@types/node" "*" 319 | form-data "^3.0.0" 320 | 321 | "@types/node@*": 322 | version "16.10.1" 323 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.1.tgz#f3647623199ca920960006b3dccf633ea905f243" 324 | integrity sha512-4/Z9DMPKFexZj/Gn3LylFgamNKHm4K3QDi0gz9B26Uk0c8izYf97B5fxfpspMNkWlFupblKM/nV8+NA9Ffvr+w== 325 | 326 | "@types/parse-json@^4.0.0": 327 | version "4.0.0" 328 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 329 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 330 | 331 | "@types/prop-types@*": 332 | version "15.7.5" 333 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" 334 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== 335 | 336 | "@types/react@^18.2.11": 337 | version "18.2.11" 338 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.11.tgz#168f7dbb421ed214fcf8c5fe8e587765a3e02fd1" 339 | integrity sha512-+hsJr9hmwyDecSMQAmX7drgbDpyE+EgSF6t7+5QEBAn1tQK7kl1vWZ4iRf6SjQ8lk7dyEULxUmZOIpN0W5baZA== 340 | dependencies: 341 | "@types/prop-types" "*" 342 | "@types/scheduler" "*" 343 | csstype "^3.0.2" 344 | 345 | "@types/scheduler@*": 346 | version "0.16.3" 347 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" 348 | integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== 349 | 350 | "@types/yargs-parser@*": 351 | version "20.2.1" 352 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" 353 | integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== 354 | 355 | "@types/yargs@^17.0.8": 356 | version "17.0.24" 357 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" 358 | integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== 359 | dependencies: 360 | "@types/yargs-parser" "*" 361 | 362 | acorn-walk@^8.2.0: 363 | version "8.2.0" 364 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 365 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 366 | 367 | acorn@^8.8.0: 368 | version "8.8.2" 369 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" 370 | integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== 371 | 372 | aggregate-error@^3.0.0: 373 | version "3.1.0" 374 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" 375 | integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== 376 | dependencies: 377 | clean-stack "^2.0.0" 378 | indent-string "^4.0.0" 379 | 380 | ansi-colors@^4.1.1: 381 | version "4.1.1" 382 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 383 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 384 | 385 | ansi-escapes@^4.3.0: 386 | version "4.3.2" 387 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 388 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 389 | dependencies: 390 | type-fest "^0.21.3" 391 | 392 | ansi-regex@^5.0.1: 393 | version "5.0.1" 394 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 395 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 396 | 397 | ansi-styles@^3.2.1: 398 | version "3.2.1" 399 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 400 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 401 | dependencies: 402 | color-convert "^1.9.0" 403 | 404 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 405 | version "4.3.0" 406 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 407 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 408 | dependencies: 409 | color-convert "^2.0.1" 410 | 411 | anymatch@~3.1.2: 412 | version "3.1.3" 413 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 414 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 415 | dependencies: 416 | normalize-path "^3.0.0" 417 | picomatch "^2.0.4" 418 | 419 | as-table@^1.0.36: 420 | version "1.0.55" 421 | resolved "https://registry.yarnpkg.com/as-table/-/as-table-1.0.55.tgz#dc984da3937745de902cea1d45843c01bdbbec4f" 422 | integrity sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ== 423 | dependencies: 424 | printable-characters "^1.0.42" 425 | 426 | astral-regex@^2.0.0: 427 | version "2.0.0" 428 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 429 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 430 | 431 | asynckit@^0.4.0: 432 | version "0.4.0" 433 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 434 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 435 | 436 | base64-js@^1.3.1: 437 | version "1.5.1" 438 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 439 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 440 | 441 | before-after-hook@^2.2.0: 442 | version "2.2.2" 443 | resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" 444 | integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== 445 | 446 | better-sqlite3@^8.1.0: 447 | version "8.4.0" 448 | resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.4.0.tgz#aa27bbc6bb42bb438fc55c88b146fcfe5978fa76" 449 | integrity sha512-NmsNW1CQvqMszu/CFAJ3pLct6NEFlNfuGM6vw72KHkjOD1UDnL96XNN1BMQc1hiHo8vE2GbOWQYIpZ+YM5wrZw== 450 | dependencies: 451 | bindings "^1.5.0" 452 | prebuild-install "^7.1.0" 453 | 454 | binary-extensions@^2.0.0: 455 | version "2.2.0" 456 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 457 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 458 | 459 | bindings@^1.5.0: 460 | version "1.5.0" 461 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" 462 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 463 | dependencies: 464 | file-uri-to-path "1.0.0" 465 | 466 | bl@^4.0.3: 467 | version "4.1.0" 468 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 469 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 470 | dependencies: 471 | buffer "^5.5.0" 472 | inherits "^2.0.4" 473 | readable-stream "^3.4.0" 474 | 475 | blake3-wasm@^2.1.5: 476 | version "2.1.5" 477 | resolved "https://registry.yarnpkg.com/blake3-wasm/-/blake3-wasm-2.1.5.tgz#b22dbb84bc9419ed0159caa76af4b1b132e6ba52" 478 | integrity sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g== 479 | 480 | braces@^3.0.1, braces@~3.0.2: 481 | version "3.0.2" 482 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 483 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 484 | dependencies: 485 | fill-range "^7.0.1" 486 | 487 | bs-logger@0.x: 488 | version "0.2.6" 489 | resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" 490 | integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== 491 | dependencies: 492 | fast-json-stable-stringify "2.x" 493 | 494 | buffer-from@^1.0.0: 495 | version "1.1.2" 496 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 497 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 498 | 499 | buffer@^5.5.0: 500 | version "5.7.1" 501 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 502 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 503 | dependencies: 504 | base64-js "^1.3.1" 505 | ieee754 "^1.1.13" 506 | 507 | busboy@^1.6.0: 508 | version "1.6.0" 509 | resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" 510 | integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== 511 | dependencies: 512 | streamsearch "^1.1.0" 513 | 514 | callsites@^3.0.0: 515 | version "3.1.0" 516 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 517 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 518 | 519 | capnp-ts@^0.7.0: 520 | version "0.7.0" 521 | resolved "https://registry.yarnpkg.com/capnp-ts/-/capnp-ts-0.7.0.tgz#16fd8e76b667d002af8fcf4bf92bf15d1a7b54a9" 522 | integrity sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g== 523 | dependencies: 524 | debug "^4.3.1" 525 | tslib "^2.2.0" 526 | 527 | chalk@^2.0.0: 528 | version "2.4.2" 529 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 530 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 531 | dependencies: 532 | ansi-styles "^3.2.1" 533 | escape-string-regexp "^1.0.5" 534 | supports-color "^5.3.0" 535 | 536 | chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: 537 | version "4.1.2" 538 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 539 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 540 | dependencies: 541 | ansi-styles "^4.1.0" 542 | supports-color "^7.1.0" 543 | 544 | chokidar@^3.5.3: 545 | version "3.5.3" 546 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 547 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 548 | dependencies: 549 | anymatch "~3.1.2" 550 | braces "~3.0.2" 551 | glob-parent "~5.1.2" 552 | is-binary-path "~2.1.0" 553 | is-glob "~4.0.1" 554 | normalize-path "~3.0.0" 555 | readdirp "~3.6.0" 556 | optionalDependencies: 557 | fsevents "~2.3.2" 558 | 559 | chownr@^1.1.1: 560 | version "1.1.4" 561 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 562 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 563 | 564 | ci-info@^3.2.0: 565 | version "3.8.0" 566 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" 567 | integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== 568 | 569 | clean-stack@^2.0.0: 570 | version "2.2.0" 571 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 572 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 573 | 574 | cli-cursor@^3.1.0: 575 | version "3.1.0" 576 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 577 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 578 | dependencies: 579 | restore-cursor "^3.1.0" 580 | 581 | cli-truncate@^2.1.0: 582 | version "2.1.0" 583 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" 584 | integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== 585 | dependencies: 586 | slice-ansi "^3.0.0" 587 | string-width "^4.2.0" 588 | 589 | color-convert@^1.9.0: 590 | version "1.9.3" 591 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 592 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 593 | dependencies: 594 | color-name "1.1.3" 595 | 596 | color-convert@^2.0.1: 597 | version "2.0.1" 598 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 599 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 600 | dependencies: 601 | color-name "~1.1.4" 602 | 603 | color-name@1.1.3: 604 | version "1.1.3" 605 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 606 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 607 | 608 | color-name@~1.1.4: 609 | version "1.1.4" 610 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 611 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 612 | 613 | colorette@^1.4.0: 614 | version "1.4.0" 615 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" 616 | integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== 617 | 618 | combined-stream@^1.0.8: 619 | version "1.0.8" 620 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 621 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 622 | dependencies: 623 | delayed-stream "~1.0.0" 624 | 625 | commander@^7.2.0: 626 | version "7.2.0" 627 | resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" 628 | integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== 629 | 630 | cookie@^0.5.0: 631 | version "0.5.0" 632 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 633 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 634 | 635 | cosmiconfig@^7.0.0: 636 | version "7.0.1" 637 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" 638 | integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== 639 | dependencies: 640 | "@types/parse-json" "^4.0.0" 641 | import-fresh "^3.2.1" 642 | parse-json "^5.0.0" 643 | path-type "^4.0.0" 644 | yaml "^1.10.0" 645 | 646 | cross-spawn@^7.0.3: 647 | version "7.0.3" 648 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 649 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 650 | dependencies: 651 | path-key "^3.1.0" 652 | shebang-command "^2.0.0" 653 | which "^2.0.1" 654 | 655 | csstype@^3.0.2: 656 | version "3.1.2" 657 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" 658 | integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== 659 | 660 | data-uri-to-buffer@^2.0.0: 661 | version "2.0.2" 662 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz#d296973d5a4897a5dbe31716d118211921f04770" 663 | integrity sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA== 664 | 665 | debug@^4.3.1: 666 | version "4.3.2" 667 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 668 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 669 | dependencies: 670 | ms "2.1.2" 671 | 672 | decompress-response@^6.0.0: 673 | version "6.0.0" 674 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 675 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 676 | dependencies: 677 | mimic-response "^3.1.0" 678 | 679 | deep-extend@^0.6.0: 680 | version "0.6.0" 681 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 682 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 683 | 684 | delayed-stream@~1.0.0: 685 | version "1.0.0" 686 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 687 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 688 | 689 | deprecation@^2.0.0: 690 | version "2.3.1" 691 | resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" 692 | integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== 693 | 694 | detect-libc@^2.0.0: 695 | version "2.0.1" 696 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" 697 | integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== 698 | 699 | emoji-regex@^8.0.0: 700 | version "8.0.0" 701 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 702 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 703 | 704 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 705 | version "1.4.4" 706 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 707 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 708 | dependencies: 709 | once "^1.4.0" 710 | 711 | enquirer@^2.3.6: 712 | version "2.3.6" 713 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 714 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 715 | dependencies: 716 | ansi-colors "^4.1.1" 717 | 718 | error-ex@^1.3.1: 719 | version "1.3.2" 720 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 721 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 722 | dependencies: 723 | is-arrayish "^0.2.1" 724 | 725 | esbuild@0.16.3: 726 | version "0.16.3" 727 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.3.tgz#5868632fa23f7a8547f2a4ea359c44e946515c94" 728 | integrity sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg== 729 | optionalDependencies: 730 | "@esbuild/android-arm" "0.16.3" 731 | "@esbuild/android-arm64" "0.16.3" 732 | "@esbuild/android-x64" "0.16.3" 733 | "@esbuild/darwin-arm64" "0.16.3" 734 | "@esbuild/darwin-x64" "0.16.3" 735 | "@esbuild/freebsd-arm64" "0.16.3" 736 | "@esbuild/freebsd-x64" "0.16.3" 737 | "@esbuild/linux-arm" "0.16.3" 738 | "@esbuild/linux-arm64" "0.16.3" 739 | "@esbuild/linux-ia32" "0.16.3" 740 | "@esbuild/linux-loong64" "0.16.3" 741 | "@esbuild/linux-mips64el" "0.16.3" 742 | "@esbuild/linux-ppc64" "0.16.3" 743 | "@esbuild/linux-riscv64" "0.16.3" 744 | "@esbuild/linux-s390x" "0.16.3" 745 | "@esbuild/linux-x64" "0.16.3" 746 | "@esbuild/netbsd-x64" "0.16.3" 747 | "@esbuild/openbsd-x64" "0.16.3" 748 | "@esbuild/sunos-x64" "0.16.3" 749 | "@esbuild/win32-arm64" "0.16.3" 750 | "@esbuild/win32-ia32" "0.16.3" 751 | "@esbuild/win32-x64" "0.16.3" 752 | 753 | escape-string-regexp@^1.0.5: 754 | version "1.0.5" 755 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 756 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 757 | 758 | escape-string-regexp@^4.0.0: 759 | version "4.0.0" 760 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 761 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 762 | 763 | estree-walker@^0.6.1: 764 | version "0.6.1" 765 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" 766 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== 767 | 768 | execa@^5.0.0: 769 | version "5.1.1" 770 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 771 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 772 | dependencies: 773 | cross-spawn "^7.0.3" 774 | get-stream "^6.0.0" 775 | human-signals "^2.1.0" 776 | is-stream "^2.0.0" 777 | merge-stream "^2.0.0" 778 | npm-run-path "^4.0.1" 779 | onetime "^5.1.2" 780 | signal-exit "^3.0.3" 781 | strip-final-newline "^2.0.0" 782 | 783 | exit-hook@^2.2.1: 784 | version "2.2.1" 785 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-2.2.1.tgz#007b2d92c6428eda2b76e7016a34351586934593" 786 | integrity sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw== 787 | 788 | expand-template@^2.0.3: 789 | version "2.0.3" 790 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 791 | integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 792 | 793 | fast-json-stable-stringify@2.x: 794 | version "2.1.0" 795 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 796 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 797 | 798 | file-uri-to-path@1.0.0: 799 | version "1.0.0" 800 | resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 801 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 802 | 803 | fill-range@^7.0.1: 804 | version "7.0.1" 805 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 806 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 807 | dependencies: 808 | to-regex-range "^5.0.1" 809 | 810 | form-data@^3.0.0: 811 | version "3.0.1" 812 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 813 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 814 | dependencies: 815 | asynckit "^0.4.0" 816 | combined-stream "^1.0.8" 817 | mime-types "^2.1.12" 818 | 819 | fs-constants@^1.0.0: 820 | version "1.0.0" 821 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 822 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 823 | 824 | fsevents@~2.3.2: 825 | version "2.3.2" 826 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 827 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 828 | 829 | get-own-enumerable-property-symbols@^3.0.0: 830 | version "3.0.2" 831 | resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" 832 | integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== 833 | 834 | get-source@^2.0.12: 835 | version "2.0.12" 836 | resolved "https://registry.yarnpkg.com/get-source/-/get-source-2.0.12.tgz#0b47d57ea1e53ce0d3a69f4f3d277eb8047da944" 837 | integrity sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w== 838 | dependencies: 839 | data-uri-to-buffer "^2.0.0" 840 | source-map "^0.6.1" 841 | 842 | get-stream@^6.0.0: 843 | version "6.0.1" 844 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 845 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 846 | 847 | github-from-package@0.0.0: 848 | version "0.0.0" 849 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 850 | integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== 851 | 852 | glob-parent@~5.1.2: 853 | version "5.1.2" 854 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 855 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 856 | dependencies: 857 | is-glob "^4.0.1" 858 | 859 | glob-to-regexp@^0.4.1: 860 | version "0.4.1" 861 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 862 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 863 | 864 | graceful-fs@^4.2.9: 865 | version "4.2.11" 866 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" 867 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 868 | 869 | has-flag@^3.0.0: 870 | version "3.0.0" 871 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 872 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 873 | 874 | has-flag@^4.0.0: 875 | version "4.0.0" 876 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 877 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 878 | 879 | hono@^3.2.3: 880 | version "3.2.3" 881 | resolved "https://registry.yarnpkg.com/hono/-/hono-3.2.3.tgz#419b328c26aa868d517e3ace00b01e5f6084e094" 882 | integrity sha512-Qm8Kbu+cUPVk2mbe5w224Z7HEyJQs6j0VAxUqEtqYDw6gGaHUcYOqJJ/G++AMlxhVkS5YzV1voiR5PZwhYkXuQ== 883 | 884 | http-cache-semantics@^4.1.0: 885 | version "4.1.1" 886 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" 887 | integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== 888 | 889 | human-signals@^2.1.0: 890 | version "2.1.0" 891 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 892 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 893 | 894 | ieee754@^1.1.13: 895 | version "1.2.1" 896 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 897 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 898 | 899 | import-fresh@^3.2.1: 900 | version "3.3.0" 901 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 902 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 903 | dependencies: 904 | parent-module "^1.0.0" 905 | resolve-from "^4.0.0" 906 | 907 | indent-string@^4.0.0: 908 | version "4.0.0" 909 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 910 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 911 | 912 | inherits@^2.0.3, inherits@^2.0.4: 913 | version "2.0.4" 914 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 915 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 916 | 917 | ini@~1.3.0: 918 | version "1.3.8" 919 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 920 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 921 | 922 | is-arrayish@^0.2.1: 923 | version "0.2.1" 924 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 925 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 926 | 927 | is-binary-path@~2.1.0: 928 | version "2.1.0" 929 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 930 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 931 | dependencies: 932 | binary-extensions "^2.0.0" 933 | 934 | is-extglob@^2.1.1: 935 | version "2.1.1" 936 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 937 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 938 | 939 | is-fullwidth-code-point@^3.0.0: 940 | version "3.0.0" 941 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 942 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 943 | 944 | is-glob@^4.0.1, is-glob@~4.0.1: 945 | version "4.0.3" 946 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 947 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 948 | dependencies: 949 | is-extglob "^2.1.1" 950 | 951 | is-number@^7.0.0: 952 | version "7.0.0" 953 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 954 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 955 | 956 | is-obj@^1.0.1: 957 | version "1.0.1" 958 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 959 | integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 960 | 961 | is-plain-object@^5.0.0: 962 | version "5.0.0" 963 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" 964 | integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== 965 | 966 | is-regexp@^1.0.0: 967 | version "1.0.0" 968 | resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" 969 | integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= 970 | 971 | is-stream@^2.0.0: 972 | version "2.0.1" 973 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 974 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 975 | 976 | is-unicode-supported@^0.1.0: 977 | version "0.1.0" 978 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 979 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 980 | 981 | isexe@^2.0.0: 982 | version "2.0.0" 983 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 984 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 985 | 986 | jest-util@^29.0.0: 987 | version "29.5.0" 988 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" 989 | integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== 990 | dependencies: 991 | "@jest/types" "^29.5.0" 992 | "@types/node" "*" 993 | chalk "^4.0.0" 994 | ci-info "^3.2.0" 995 | graceful-fs "^4.2.9" 996 | picomatch "^2.2.3" 997 | 998 | js-tokens@^4.0.0: 999 | version "4.0.0" 1000 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1001 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1002 | 1003 | json-parse-even-better-errors@^2.3.0: 1004 | version "2.3.1" 1005 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1006 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1007 | 1008 | json5@^2.2.3: 1009 | version "2.2.3" 1010 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 1011 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 1012 | 1013 | kleur@^4.1.5: 1014 | version "4.1.5" 1015 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" 1016 | integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== 1017 | 1018 | lines-and-columns@^1.1.6: 1019 | version "1.1.6" 1020 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 1021 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 1022 | 1023 | lint-staged@^11.1.2: 1024 | version "11.1.2" 1025 | resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.1.2.tgz#4dd78782ae43ee6ebf2969cad9af67a46b33cd90" 1026 | integrity sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w== 1027 | dependencies: 1028 | chalk "^4.1.1" 1029 | cli-truncate "^2.1.0" 1030 | commander "^7.2.0" 1031 | cosmiconfig "^7.0.0" 1032 | debug "^4.3.1" 1033 | enquirer "^2.3.6" 1034 | execa "^5.0.0" 1035 | listr2 "^3.8.2" 1036 | log-symbols "^4.1.0" 1037 | micromatch "^4.0.4" 1038 | normalize-path "^3.0.0" 1039 | please-upgrade-node "^3.2.0" 1040 | string-argv "0.3.1" 1041 | stringify-object "^3.3.0" 1042 | 1043 | listr2@^3.8.2: 1044 | version "3.12.2" 1045 | resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.12.2.tgz#2d55cc627111603ad4768a9e87c9c7bb9b49997e" 1046 | integrity sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A== 1047 | dependencies: 1048 | cli-truncate "^2.1.0" 1049 | colorette "^1.4.0" 1050 | log-update "^4.0.0" 1051 | p-map "^4.0.0" 1052 | rxjs "^6.6.7" 1053 | through "^2.3.8" 1054 | wrap-ansi "^7.0.0" 1055 | 1056 | lodash.memoize@4.x: 1057 | version "4.1.2" 1058 | resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" 1059 | integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== 1060 | 1061 | log-symbols@^4.1.0: 1062 | version "4.1.0" 1063 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 1064 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1065 | dependencies: 1066 | chalk "^4.1.0" 1067 | is-unicode-supported "^0.1.0" 1068 | 1069 | log-update@^4.0.0: 1070 | version "4.0.0" 1071 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" 1072 | integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== 1073 | dependencies: 1074 | ansi-escapes "^4.3.0" 1075 | cli-cursor "^3.1.0" 1076 | slice-ansi "^4.0.0" 1077 | wrap-ansi "^6.2.0" 1078 | 1079 | lru-cache@^6.0.0: 1080 | version "6.0.0" 1081 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1082 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1083 | dependencies: 1084 | yallist "^4.0.0" 1085 | 1086 | magic-string@^0.25.3: 1087 | version "0.25.9" 1088 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" 1089 | integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== 1090 | dependencies: 1091 | sourcemap-codec "^1.4.8" 1092 | 1093 | make-error@1.x: 1094 | version "1.3.6" 1095 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 1096 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 1097 | 1098 | merge-stream@^2.0.0: 1099 | version "2.0.0" 1100 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1101 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1102 | 1103 | micromatch@^4.0.4: 1104 | version "4.0.4" 1105 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 1106 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 1107 | dependencies: 1108 | braces "^3.0.1" 1109 | picomatch "^2.2.3" 1110 | 1111 | mime-db@1.52.0: 1112 | version "1.52.0" 1113 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1114 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1115 | 1116 | mime-types@^2.1.12: 1117 | version "2.1.35" 1118 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1119 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1120 | dependencies: 1121 | mime-db "1.52.0" 1122 | 1123 | mime@^3.0.0: 1124 | version "3.0.0" 1125 | resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" 1126 | integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== 1127 | 1128 | mimic-fn@^2.1.0: 1129 | version "2.1.0" 1130 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1131 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1132 | 1133 | mimic-response@^3.1.0: 1134 | version "3.1.0" 1135 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 1136 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 1137 | 1138 | miniflare@^3.0.0: 1139 | version "3.0.1" 1140 | resolved "https://registry.yarnpkg.com/miniflare/-/miniflare-3.0.1.tgz#75ad9d859485de5fac065e2ddf296f83dcbf9789" 1141 | integrity sha512-aLOB8d26lOTn493GOv1LmpGHVLSxmeT4MixPG/k3Ze10j0wDKnMj8wsFgbZ6Q4cr1N4faf8O3IbNRJuQ+rLoJA== 1142 | dependencies: 1143 | acorn "^8.8.0" 1144 | acorn-walk "^8.2.0" 1145 | better-sqlite3 "^8.1.0" 1146 | capnp-ts "^0.7.0" 1147 | exit-hook "^2.2.1" 1148 | glob-to-regexp "^0.4.1" 1149 | http-cache-semantics "^4.1.0" 1150 | kleur "^4.1.5" 1151 | source-map-support "0.5.21" 1152 | stoppable "^1.1.0" 1153 | undici "^5.13.0" 1154 | workerd "^1.20230512.0" 1155 | ws "^8.11.0" 1156 | youch "^3.2.2" 1157 | zod "^3.20.6" 1158 | 1159 | minimist@^1.2.0, minimist@^1.2.3: 1160 | version "1.2.8" 1161 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 1162 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 1163 | 1164 | mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: 1165 | version "0.5.3" 1166 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 1167 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 1168 | 1169 | ms@2.1.2: 1170 | version "2.1.2" 1171 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1172 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1173 | 1174 | mustache@^4.2.0: 1175 | version "4.2.0" 1176 | resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" 1177 | integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== 1178 | 1179 | nanoid@^3.3.3: 1180 | version "3.3.6" 1181 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" 1182 | integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== 1183 | 1184 | napi-build-utils@^1.0.1: 1185 | version "1.0.2" 1186 | resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" 1187 | integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== 1188 | 1189 | node-abi@^3.3.0: 1190 | version "3.40.0" 1191 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.40.0.tgz#51d8ed44534f70ff1357dfbc3a89717b1ceac1b4" 1192 | integrity sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA== 1193 | dependencies: 1194 | semver "^7.3.5" 1195 | 1196 | node-fetch@^2.6.1: 1197 | version "2.6.5" 1198 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" 1199 | integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== 1200 | dependencies: 1201 | whatwg-url "^5.0.0" 1202 | 1203 | node-forge@^1: 1204 | version "1.3.1" 1205 | resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" 1206 | integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== 1207 | 1208 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1209 | version "3.0.0" 1210 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1211 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1212 | 1213 | npm-run-path@^4.0.1: 1214 | version "4.0.1" 1215 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 1216 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 1217 | dependencies: 1218 | path-key "^3.0.0" 1219 | 1220 | once@^1.3.1, once@^1.4.0: 1221 | version "1.4.0" 1222 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1223 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1224 | dependencies: 1225 | wrappy "1" 1226 | 1227 | onetime@^5.1.0, onetime@^5.1.2: 1228 | version "5.1.2" 1229 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1230 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1231 | dependencies: 1232 | mimic-fn "^2.1.0" 1233 | 1234 | p-map@^4.0.0: 1235 | version "4.0.0" 1236 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" 1237 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 1238 | dependencies: 1239 | aggregate-error "^3.0.0" 1240 | 1241 | parent-module@^1.0.0: 1242 | version "1.0.1" 1243 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1244 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1245 | dependencies: 1246 | callsites "^3.0.0" 1247 | 1248 | parse-json@^5.0.0: 1249 | version "5.2.0" 1250 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 1251 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 1252 | dependencies: 1253 | "@babel/code-frame" "^7.0.0" 1254 | error-ex "^1.3.1" 1255 | json-parse-even-better-errors "^2.3.0" 1256 | lines-and-columns "^1.1.6" 1257 | 1258 | path-key@^3.0.0, path-key@^3.1.0: 1259 | version "3.1.1" 1260 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1261 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1262 | 1263 | path-to-regexp@^6.2.0: 1264 | version "6.2.1" 1265 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" 1266 | integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== 1267 | 1268 | path-type@^4.0.0: 1269 | version "4.0.0" 1270 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1271 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1272 | 1273 | picomatch@^2.0.4, picomatch@^2.2.1: 1274 | version "2.3.1" 1275 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1276 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1277 | 1278 | picomatch@^2.2.3: 1279 | version "2.3.0" 1280 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 1281 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 1282 | 1283 | please-upgrade-node@^3.2.0: 1284 | version "3.2.0" 1285 | resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" 1286 | integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== 1287 | dependencies: 1288 | semver-compare "^1.0.0" 1289 | 1290 | prebuild-install@^7.1.0: 1291 | version "7.1.1" 1292 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" 1293 | integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== 1294 | dependencies: 1295 | detect-libc "^2.0.0" 1296 | expand-template "^2.0.3" 1297 | github-from-package "0.0.0" 1298 | minimist "^1.2.3" 1299 | mkdirp-classic "^0.5.3" 1300 | napi-build-utils "^1.0.1" 1301 | node-abi "^3.3.0" 1302 | pump "^3.0.0" 1303 | rc "^1.2.7" 1304 | simple-get "^4.0.0" 1305 | tar-fs "^2.0.0" 1306 | tunnel-agent "^0.6.0" 1307 | 1308 | prettier@^2.3.2: 1309 | version "2.4.1" 1310 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" 1311 | integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== 1312 | 1313 | printable-characters@^1.0.42: 1314 | version "1.0.42" 1315 | resolved "https://registry.yarnpkg.com/printable-characters/-/printable-characters-1.0.42.tgz#3f18e977a9bd8eb37fcc4ff5659d7be90868b3d8" 1316 | integrity sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ== 1317 | 1318 | pump@^3.0.0: 1319 | version "3.0.0" 1320 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1321 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1322 | dependencies: 1323 | end-of-stream "^1.1.0" 1324 | once "^1.3.1" 1325 | 1326 | rc@^1.2.7: 1327 | version "1.2.8" 1328 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1329 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1330 | dependencies: 1331 | deep-extend "^0.6.0" 1332 | ini "~1.3.0" 1333 | minimist "^1.2.0" 1334 | strip-json-comments "~2.0.1" 1335 | 1336 | readable-stream@^3.1.1, readable-stream@^3.4.0: 1337 | version "3.6.2" 1338 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" 1339 | integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 1340 | dependencies: 1341 | inherits "^2.0.3" 1342 | string_decoder "^1.1.1" 1343 | util-deprecate "^1.0.1" 1344 | 1345 | readdirp@~3.6.0: 1346 | version "3.6.0" 1347 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1348 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1349 | dependencies: 1350 | picomatch "^2.2.1" 1351 | 1352 | resolve-from@^4.0.0: 1353 | version "4.0.0" 1354 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1355 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1356 | 1357 | restore-cursor@^3.1.0: 1358 | version "3.1.0" 1359 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 1360 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 1361 | dependencies: 1362 | onetime "^5.1.0" 1363 | signal-exit "^3.0.2" 1364 | 1365 | rollup-plugin-inject@^3.0.0: 1366 | version "3.0.2" 1367 | resolved "https://registry.yarnpkg.com/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz#e4233855bfba6c0c12a312fd6649dff9a13ee9f4" 1368 | integrity sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w== 1369 | dependencies: 1370 | estree-walker "^0.6.1" 1371 | magic-string "^0.25.3" 1372 | rollup-pluginutils "^2.8.1" 1373 | 1374 | rollup-plugin-node-polyfills@^0.2.1: 1375 | version "0.2.1" 1376 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz#53092a2744837164d5b8a28812ba5f3ff61109fd" 1377 | integrity sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA== 1378 | dependencies: 1379 | rollup-plugin-inject "^3.0.0" 1380 | 1381 | rollup-pluginutils@^2.8.1: 1382 | version "2.8.2" 1383 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" 1384 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== 1385 | dependencies: 1386 | estree-walker "^0.6.1" 1387 | 1388 | rxjs@^6.6.7: 1389 | version "6.6.7" 1390 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" 1391 | integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== 1392 | dependencies: 1393 | tslib "^1.9.0" 1394 | 1395 | safe-buffer@^5.0.1, safe-buffer@~5.2.0: 1396 | version "5.2.1" 1397 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1398 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1399 | 1400 | selfsigned@^2.0.1: 1401 | version "2.1.1" 1402 | resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" 1403 | integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== 1404 | dependencies: 1405 | node-forge "^1" 1406 | 1407 | semver-compare@^1.0.0: 1408 | version "1.0.0" 1409 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 1410 | integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 1411 | 1412 | semver@7.x: 1413 | version "7.3.5" 1414 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 1415 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 1416 | dependencies: 1417 | lru-cache "^6.0.0" 1418 | 1419 | semver@^7.3.5: 1420 | version "7.5.1" 1421 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" 1422 | integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== 1423 | dependencies: 1424 | lru-cache "^6.0.0" 1425 | 1426 | shebang-command@^2.0.0: 1427 | version "2.0.0" 1428 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1429 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1430 | dependencies: 1431 | shebang-regex "^3.0.0" 1432 | 1433 | shebang-regex@^3.0.0: 1434 | version "3.0.0" 1435 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1436 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1437 | 1438 | signal-exit@^3.0.2, signal-exit@^3.0.3: 1439 | version "3.0.4" 1440 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7" 1441 | integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q== 1442 | 1443 | simple-concat@^1.0.0: 1444 | version "1.0.1" 1445 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" 1446 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 1447 | 1448 | simple-get@^4.0.0: 1449 | version "4.0.1" 1450 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" 1451 | integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== 1452 | dependencies: 1453 | decompress-response "^6.0.0" 1454 | once "^1.3.1" 1455 | simple-concat "^1.0.0" 1456 | 1457 | slice-ansi@^3.0.0: 1458 | version "3.0.0" 1459 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" 1460 | integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== 1461 | dependencies: 1462 | ansi-styles "^4.0.0" 1463 | astral-regex "^2.0.0" 1464 | is-fullwidth-code-point "^3.0.0" 1465 | 1466 | slice-ansi@^4.0.0: 1467 | version "4.0.0" 1468 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1469 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1470 | dependencies: 1471 | ansi-styles "^4.0.0" 1472 | astral-regex "^2.0.0" 1473 | is-fullwidth-code-point "^3.0.0" 1474 | 1475 | source-map-support@0.5.21: 1476 | version "0.5.21" 1477 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 1478 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 1479 | dependencies: 1480 | buffer-from "^1.0.0" 1481 | source-map "^0.6.0" 1482 | 1483 | source-map@^0.6.0, source-map@^0.6.1: 1484 | version "0.6.1" 1485 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1486 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1487 | 1488 | source-map@^0.7.4: 1489 | version "0.7.4" 1490 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" 1491 | integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== 1492 | 1493 | sourcemap-codec@^1.4.8: 1494 | version "1.4.8" 1495 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 1496 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 1497 | 1498 | stacktracey@^2.1.8: 1499 | version "2.1.8" 1500 | resolved "https://registry.yarnpkg.com/stacktracey/-/stacktracey-2.1.8.tgz#bf9916020738ce3700d1323b32bd2c91ea71199d" 1501 | integrity sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw== 1502 | dependencies: 1503 | as-table "^1.0.36" 1504 | get-source "^2.0.12" 1505 | 1506 | stoppable@^1.1.0: 1507 | version "1.1.0" 1508 | resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" 1509 | integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== 1510 | 1511 | streamsearch@^1.1.0: 1512 | version "1.1.0" 1513 | resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" 1514 | integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== 1515 | 1516 | string-argv@0.3.1: 1517 | version "0.3.1" 1518 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" 1519 | integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== 1520 | 1521 | string-width@^4.1.0, string-width@^4.2.0: 1522 | version "4.2.3" 1523 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1524 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1525 | dependencies: 1526 | emoji-regex "^8.0.0" 1527 | is-fullwidth-code-point "^3.0.0" 1528 | strip-ansi "^6.0.1" 1529 | 1530 | string_decoder@^1.1.1: 1531 | version "1.3.0" 1532 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1533 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1534 | dependencies: 1535 | safe-buffer "~5.2.0" 1536 | 1537 | stringify-object@^3.3.0: 1538 | version "3.3.0" 1539 | resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" 1540 | integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== 1541 | dependencies: 1542 | get-own-enumerable-property-symbols "^3.0.0" 1543 | is-obj "^1.0.1" 1544 | is-regexp "^1.0.0" 1545 | 1546 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1547 | version "6.0.1" 1548 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1549 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1550 | dependencies: 1551 | ansi-regex "^5.0.1" 1552 | 1553 | strip-final-newline@^2.0.0: 1554 | version "2.0.0" 1555 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 1556 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 1557 | 1558 | strip-json-comments@~2.0.1: 1559 | version "2.0.1" 1560 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1561 | integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== 1562 | 1563 | supports-color@^5.3.0: 1564 | version "5.5.0" 1565 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1566 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1567 | dependencies: 1568 | has-flag "^3.0.0" 1569 | 1570 | supports-color@^7.1.0: 1571 | version "7.2.0" 1572 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1573 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1574 | dependencies: 1575 | has-flag "^4.0.0" 1576 | 1577 | tar-fs@^2.0.0: 1578 | version "2.1.1" 1579 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" 1580 | integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== 1581 | dependencies: 1582 | chownr "^1.1.1" 1583 | mkdirp-classic "^0.5.2" 1584 | pump "^3.0.0" 1585 | tar-stream "^2.1.4" 1586 | 1587 | tar-stream@^2.1.4: 1588 | version "2.2.0" 1589 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 1590 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 1591 | dependencies: 1592 | bl "^4.0.3" 1593 | end-of-stream "^1.4.1" 1594 | fs-constants "^1.0.0" 1595 | inherits "^2.0.3" 1596 | readable-stream "^3.1.1" 1597 | 1598 | through@^2.3.8: 1599 | version "2.3.8" 1600 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1601 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1602 | 1603 | to-regex-range@^5.0.1: 1604 | version "5.0.1" 1605 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1606 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1607 | dependencies: 1608 | is-number "^7.0.0" 1609 | 1610 | tr46@~0.0.3: 1611 | version "0.0.3" 1612 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1613 | integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= 1614 | 1615 | ts-jest@^29.1.0: 1616 | version "29.1.0" 1617 | resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.0.tgz#4a9db4104a49b76d2b368ea775b6c9535c603891" 1618 | integrity sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA== 1619 | dependencies: 1620 | bs-logger "0.x" 1621 | fast-json-stable-stringify "2.x" 1622 | jest-util "^29.0.0" 1623 | json5 "^2.2.3" 1624 | lodash.memoize "4.x" 1625 | make-error "1.x" 1626 | semver "7.x" 1627 | yargs-parser "^21.0.1" 1628 | 1629 | tslib@^1.9.0: 1630 | version "1.14.1" 1631 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1632 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1633 | 1634 | tslib@^2.2.0: 1635 | version "2.5.2" 1636 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338" 1637 | integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== 1638 | 1639 | tunnel-agent@^0.6.0: 1640 | version "0.6.0" 1641 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1642 | integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== 1643 | dependencies: 1644 | safe-buffer "^5.0.1" 1645 | 1646 | type-fest@^0.21.3: 1647 | version "0.21.3" 1648 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 1649 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 1650 | 1651 | typescript@^5.1.6: 1652 | version "5.1.6" 1653 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" 1654 | integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== 1655 | 1656 | undici@^5.13.0: 1657 | version "5.22.1" 1658 | resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.1.tgz#877d512effef2ac8be65e695f3586922e1a57d7b" 1659 | integrity sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw== 1660 | dependencies: 1661 | busboy "^1.6.0" 1662 | 1663 | universal-user-agent@^6.0.0: 1664 | version "6.0.0" 1665 | resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" 1666 | integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== 1667 | 1668 | util-deprecate@^1.0.1: 1669 | version "1.0.2" 1670 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1671 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1672 | 1673 | webidl-conversions@^3.0.0: 1674 | version "3.0.1" 1675 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1676 | integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= 1677 | 1678 | whatwg-url@^5.0.0: 1679 | version "5.0.0" 1680 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1681 | integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= 1682 | dependencies: 1683 | tr46 "~0.0.3" 1684 | webidl-conversions "^3.0.0" 1685 | 1686 | which@^2.0.1: 1687 | version "2.0.2" 1688 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1689 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1690 | dependencies: 1691 | isexe "^2.0.0" 1692 | 1693 | workerd@^1.20230512.0: 1694 | version "1.20230518.0" 1695 | resolved "https://registry.yarnpkg.com/workerd/-/workerd-1.20230518.0.tgz#4eac4c4b25d859f6f3c8bd826ed57aec12ab08dd" 1696 | integrity sha512-VNmK0zoNZXrwEEx77O/oQDVUzzyDjf5kKKK8bty+FmKCd5EQJCpqi8NlRKWLGMyyYrKm86MFz0kAsreTEs7HHA== 1697 | optionalDependencies: 1698 | "@cloudflare/workerd-darwin-64" "1.20230518.0" 1699 | "@cloudflare/workerd-darwin-arm64" "1.20230518.0" 1700 | "@cloudflare/workerd-linux-64" "1.20230518.0" 1701 | "@cloudflare/workerd-linux-arm64" "1.20230518.0" 1702 | "@cloudflare/workerd-windows-64" "1.20230518.0" 1703 | 1704 | wrangler@^3.0.1: 1705 | version "3.0.1" 1706 | resolved "https://registry.yarnpkg.com/wrangler/-/wrangler-3.0.1.tgz#0e6ca590b532cb7389aac1aaf7244ccb8a56c9c9" 1707 | integrity sha512-YamXlRjkMO/V3Fvq7IC9H9GDWIbNGc4IV3l1Z5q45XYTWxUYbkwXyiTAfpmqhyl5wx+XEPKe3k/ubqmW+r63yQ== 1708 | dependencies: 1709 | "@cloudflare/kv-asset-handler" "^0.2.0" 1710 | "@esbuild-plugins/node-globals-polyfill" "^0.1.1" 1711 | "@esbuild-plugins/node-modules-polyfill" "^0.1.4" 1712 | blake3-wasm "^2.1.5" 1713 | chokidar "^3.5.3" 1714 | esbuild "0.16.3" 1715 | miniflare "^3.0.0" 1716 | nanoid "^3.3.3" 1717 | path-to-regexp "^6.2.0" 1718 | selfsigned "^2.0.1" 1719 | source-map "^0.7.4" 1720 | xxhash-wasm "^1.0.1" 1721 | optionalDependencies: 1722 | fsevents "~2.3.2" 1723 | 1724 | wrap-ansi@^6.2.0: 1725 | version "6.2.0" 1726 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" 1727 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 1728 | dependencies: 1729 | ansi-styles "^4.0.0" 1730 | string-width "^4.1.0" 1731 | strip-ansi "^6.0.0" 1732 | 1733 | wrap-ansi@^7.0.0: 1734 | version "7.0.0" 1735 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1736 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1737 | dependencies: 1738 | ansi-styles "^4.0.0" 1739 | string-width "^4.1.0" 1740 | strip-ansi "^6.0.0" 1741 | 1742 | wrappy@1: 1743 | version "1.0.2" 1744 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1745 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1746 | 1747 | ws@^8.11.0: 1748 | version "8.13.0" 1749 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" 1750 | integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== 1751 | 1752 | xxhash-wasm@^1.0.1: 1753 | version "1.0.2" 1754 | resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz#ecc0f813219b727af4d5f3958ca6becee2f2f1ff" 1755 | integrity sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A== 1756 | 1757 | yallist@^4.0.0: 1758 | version "4.0.0" 1759 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1760 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1761 | 1762 | yaml@^1.10.0: 1763 | version "1.10.2" 1764 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 1765 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 1766 | 1767 | yargs-parser@^21.0.1: 1768 | version "21.1.1" 1769 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 1770 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 1771 | 1772 | youch@^3.2.2: 1773 | version "3.2.3" 1774 | resolved "https://registry.yarnpkg.com/youch/-/youch-3.2.3.tgz#63c94ea504950a1a5bf1d5969439addba6c726e2" 1775 | integrity sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw== 1776 | dependencies: 1777 | cookie "^0.5.0" 1778 | mustache "^4.2.0" 1779 | stacktracey "^2.1.8" 1780 | 1781 | zod@^3.20.6: 1782 | version "3.21.4" 1783 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" 1784 | integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== 1785 | --------------------------------------------------------------------------------