├── .all-contributorsrc ├── .devcontainer └── devcontainer.json ├── .editorconfig ├── .gitattributes ├── .github ├── dependabot.yaml └── workflows │ ├── release.yaml │ ├── update-license-year.yaml │ └── workflow.yaml ├── .gitignore ├── .vscode └── settings.json ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── action.yaml ├── biome.json ├── package.json ├── src ├── GraphvizInstaller.ts ├── __tests__ │ └── GraphvizInstaller.spec.ts └── main.ts ├── tsconfig.json └── yarn.lock /.all-contributorsrc: -------------------------------------------------------------------------------- 1 | { 2 | "files": [ 3 | "README.md" 4 | ], 5 | "imageSize": 100, 6 | "commit": false, 7 | "contributors": [ 8 | { 9 | "login": "kamiazya", 10 | "name": "Yuki Yamazaki", 11 | "avatar_url": "https://avatars0.githubusercontent.com/u/35218186?v=4", 12 | "profile": "http://blog.kamiazya.tech/", 13 | "contributions": [ 14 | "code", 15 | "test", 16 | "doc", 17 | "example" 18 | ] 19 | }, 20 | { 21 | "login": "mhtb32", 22 | "name": "Mohammad Hussein Tavakoli Bina ", 23 | "avatar_url": "https://avatars3.githubusercontent.com/u/24754239?v=4", 24 | "profile": "https://github.com/mhtb32", 25 | "contributions": [ 26 | "ideas" 27 | ] 28 | }, 29 | { 30 | "login": "sammcj", 31 | "name": "Sam", 32 | "avatar_url": "https://avatars.githubusercontent.com/u/862951?v=4", 33 | "profile": "https://smcleod.net", 34 | "contributions": [ 35 | "maintenance" 36 | ] 37 | }, 38 | { 39 | "login": "mohawk2", 40 | "name": "mohawk2", 41 | "avatar_url": "https://avatars.githubusercontent.com/u/7308181?v=4", 42 | "profile": "https://github.com/mohawk2", 43 | "contributions": [ 44 | "bug", 45 | "ideas" 46 | ] 47 | }, 48 | { 49 | "login": "leadelngalame1611", 50 | "name": "leadelngalame1611", 51 | "avatar_url": "https://avatars.githubusercontent.com/u/39901966?v=4", 52 | "profile": "https://github.com/leadelngalame1611", 53 | "contributions": [ 54 | "bug", 55 | "ideas" 56 | ] 57 | }, 58 | { 59 | "login": "stunney", 60 | "name": "S. Tunney", 61 | "avatar_url": "https://avatars.githubusercontent.com/u/609012?v=4", 62 | "profile": "https://github.com/stunney", 63 | "contributions": [ 64 | "ideas" 65 | ] 66 | }, 67 | { 68 | "login": "khaeru", 69 | "name": "Paul Natsuo Kishimoto", 70 | "avatar_url": "https://avatars.githubusercontent.com/u/1634164?v=4", 71 | "profile": "https://paul.kishimoto.name", 72 | "contributions": [ 73 | "bug", 74 | "research" 75 | ] 76 | }, 77 | { 78 | "login": "jbms", 79 | "name": "Jeremy Maitin-Shepard", 80 | "avatar_url": "https://avatars.githubusercontent.com/u/4211946?v=4", 81 | "profile": "https://github.com/jbms", 82 | "contributions": [ 83 | "bug", 84 | "ideas" 85 | ] 86 | }, 87 | { 88 | "login": "mvrueden", 89 | "name": "mvrueden", 90 | "avatar_url": "https://avatars.githubusercontent.com/u/4202259?v=4", 91 | "profile": "https://github.com/mvrueden", 92 | "contributions": [ 93 | "bug", 94 | "code" 95 | ] 96 | }, 97 | { 98 | "login": "dhimmel", 99 | "name": "Daniel Himmelstein", 100 | "avatar_url": "https://avatars.githubusercontent.com/u/1117703?v=4", 101 | "profile": "https://dhimmel.com", 102 | "contributions": [ 103 | "question" 104 | ] 105 | }, 106 | { 107 | "login": "deining", 108 | "name": "Andreas Deininger", 109 | "avatar_url": "https://avatars.githubusercontent.com/u/18169566?v=4", 110 | "profile": "https://github.com/deining", 111 | "contributions": [ 112 | "doc", 113 | "maintenance" 114 | ] 115 | }, 116 | { 117 | "login": "joshstrohminger", 118 | "name": "Joshua Strohminger", 119 | "avatar_url": "https://avatars.githubusercontent.com/u/17883887?v=4", 120 | "profile": "http://devmonstr.com", 121 | "contributions": [ 122 | "code", 123 | "maintenance" 124 | ] 125 | }, 126 | { 127 | "login": "2bndy5", 128 | "name": "Brendan", 129 | "avatar_url": "https://avatars.githubusercontent.com/u/14963867?v=4", 130 | "profile": "https://github.com/2bndy5", 131 | "contributions": [ 132 | "maintenance" 133 | ] 134 | }, 135 | { 136 | "login": "glatterf42", 137 | "name": "Fridolin Glatter", 138 | "avatar_url": "https://avatars.githubusercontent.com/u/83776373?v=4", 139 | "profile": "https://github.com/glatterf42", 140 | "contributions": [ 141 | "maintenance" 142 | ] 143 | }, 144 | { 145 | "login": "Maetveis", 146 | "name": "Mészáros Gergely", 147 | "avatar_url": "https://avatars.githubusercontent.com/u/8176760?v=4", 148 | "profile": "https://github.com/Maetveis", 149 | "contributions": [ 150 | "bug", 151 | "test" 152 | ] 153 | }, 154 | { 155 | "login": "XF-FW", 156 | "name": "Xavier Francisco", 157 | "avatar_url": "https://avatars.githubusercontent.com/u/98830734?v=4", 158 | "profile": "https://github.com/XF-FW", 159 | "contributions": [ 160 | "ideas" 161 | ] 162 | }, 163 | { 164 | "login": "stinodego", 165 | "name": "Stijn de Gooijer", 166 | "avatar_url": "https://avatars.githubusercontent.com/u/3502351?v=4", 167 | "profile": "https://github.com/stinodego", 168 | "contributions": [ 169 | "bug" 170 | ] 171 | }, 172 | { 173 | "login": "jakebeal", 174 | "name": "Jacob Beal", 175 | "avatar_url": "https://avatars.githubusercontent.com/u/10675899?v=4", 176 | "profile": "http://jakebeal.com", 177 | "contributions": [ 178 | "bug" 179 | ] 180 | }, 181 | { 182 | "login": "mrbuslov", 183 | "name": "Dmitry Buslov", 184 | "avatar_url": "https://avatars.githubusercontent.com/u/68155915?v=4", 185 | "profile": "https://github.com/mrbuslov", 186 | "contributions": [ 187 | "bug" 188 | ] 189 | }, 190 | { 191 | "login": "vkottler", 192 | "name": "Vaughn Kottler", 193 | "avatar_url": "https://avatars.githubusercontent.com/u/15205052?v=4", 194 | "profile": "https://vkottler.github.io/", 195 | "contributions": [ 196 | "bug" 197 | ] 198 | }, 199 | { 200 | "login": "gpaulfleetwood", 201 | "name": "gpaulfleetwood", 202 | "avatar_url": "https://avatars.githubusercontent.com/u/56100336?v=4", 203 | "profile": "https://github.com/gpaulfleetwood", 204 | "contributions": [ 205 | "bug" 206 | ] 207 | } 208 | ], 209 | "contributorsPerLine": 7, 210 | "projectName": "setup-graphviz", 211 | "projectOwner": "ts-graphviz", 212 | "repoType": "github", 213 | "repoHost": "https://github.com", 214 | "skipCi": true, 215 | "commitConvention": "angular", 216 | "commitType": "docs" 217 | } 218 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the 2 | // README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node 3 | { 4 | "name": "Node.js & TypeScript", 5 | // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile 6 | "image": "mcr.microsoft.com/devcontainers/typescript-node:0-20", 7 | "features": { 8 | "ghcr.io/dhoeric/features/act:1": {} 9 | }, 10 | "postCreateCommand": "yarn install" 11 | // "remoteUser": "root" 12 | } 13 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.github/dependabot.yaml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: npm 4 | directory: "/" 5 | schedule: 6 | interval: weekly 7 | open-pull-requests-limit: 10 8 | - package-ecosystem: github-actions 9 | directory: "/" 10 | schedule: 11 | interval: weekly 12 | -------------------------------------------------------------------------------- /.github/workflows/release.yaml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | tags: 4 | - "v*" 5 | 6 | name: Release 7 | jobs: 8 | release: 9 | name: Release GitHub Actions 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: technote-space/release-github-actions@052f205daf62dff0c3ece009f07b38f3ec83e01a # v8.0.3 13 | -------------------------------------------------------------------------------- /.github/workflows/update-license-year.yaml: -------------------------------------------------------------------------------- 1 | name: Update copyright year(s) in license file 2 | 3 | on: 4 | schedule: 5 | - cron: '0 3 1 1 *' # 03:00 AM on January 1 6 | workflow_dispatch: 7 | jobs: 8 | update-license-year: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 12 | with: 13 | fetch-depth: 0 14 | - uses: FantasticFiasco/action-update-license-year@9135da8f9ccc675217e02357c744b6b541d45cb0 # v3.0.2 15 | with: 16 | token: ${{ secrets.GITHUB_TOKEN }} 17 | -------------------------------------------------------------------------------- /.github/workflows/workflow.yaml: -------------------------------------------------------------------------------- 1 | name: Main workflow 2 | on: [push] 3 | jobs: 4 | check: 5 | name: Checks 6 | runs-on: ubuntu-latest 7 | steps: 8 | - name: Checkout 9 | uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 10 | - name: Set Node.js 20.x 11 | uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 12 | with: 13 | node-version: 20.x 14 | cache: yarn 15 | - name: Install Dependencies 16 | run: yarn install --frozen-lockfile 17 | - name: Lint 18 | run: yarn lint 19 | - name: TypeCheck 20 | run: yarn typecheck 21 | 22 | unit-test: 23 | name: Unit Tests 24 | runs-on: ubuntu-latest 25 | needs: check 26 | steps: 27 | - name: Checkout 28 | uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 29 | - name: Set Node.js 20.x 30 | uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 31 | with: 32 | node-version: 20.x 33 | cache: yarn 34 | - name: Install Dependencies 35 | run: yarn install --frozen-lockfile 36 | - name: Test 37 | run: yarn test 38 | - name: Build 39 | run: yarn build 40 | 41 | build: 42 | name: Build 43 | runs-on: ubuntu-latest 44 | needs: check 45 | steps: 46 | - name: Checkout 47 | uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 48 | - name: Set Node.js 20.x 49 | uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 50 | with: 51 | node-version: 20.x 52 | cache: yarn 53 | - name: Install Dependencies 54 | run: yarn install --frozen-lockfile 55 | - name: Build 56 | run: yarn build 57 | - name: Upload Artifact 58 | uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 59 | with: 60 | name: lib 61 | path: lib 62 | 63 | integration-test: 64 | name: Integration Tests 65 | runs-on: ${{ matrix.os }} 66 | needs: 67 | - build 68 | - unit-test 69 | strategy: 70 | fail-fast: false 71 | matrix: 72 | os: [ubuntu-latest, windows-latest, macos-latest] 73 | steps: 74 | - name: Checkout 75 | uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 76 | - name: Set Node.js 20.x 77 | uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 78 | with: 79 | node-version: 20.x 80 | cache: yarn 81 | - name: Install Dependencies 82 | run: yarn install --frozen-lockfile 83 | - name: Download Artifact 84 | uses: actions/download-artifact@9c19ed7fe5d278cd354c7dfd5d3b88589c7e2395 # v4.1.6 85 | - name: Run Integration Tests 86 | uses: ./ 87 | - name: Graphviz test 88 | run: dot -V 89 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See CONTRIBUTING.md 2 | 3 | # COMMENT OUT START 4 | node_modules/ 5 | lib 6 | # COMMENT OUT END 7 | 8 | # Created by https://www.gitignore.io/api/node 9 | # Edit at https://www.gitignore.io/?templates=node 10 | 11 | ### Node ### 12 | # Logs 13 | logs 14 | *.log 15 | npm-debug.log* 16 | yarn-debug.log* 17 | yarn-error.log* 18 | lerna-debug.log* 19 | 20 | # Diagnostic reports (https://nodejs.org/api/report.html) 21 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 22 | 23 | # Runtime data 24 | pids 25 | *.pid 26 | *.seed 27 | *.pid.lock 28 | 29 | # Directory for instrumented libs generated by jscoverage/JSCover 30 | lib-cov 31 | 32 | # Coverage directory used by tools like istanbul 33 | coverage 34 | *.lcov 35 | 36 | # nyc test coverage 37 | .nyc_output 38 | 39 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 40 | .grunt 41 | 42 | # Bower dependency directory (https://bower.io/) 43 | bower_components 44 | 45 | # node-waf configuration 46 | .lock-wscript 47 | 48 | # Compiled binary addons (https://nodejs.org/api/addons.html) 49 | build/Release 50 | 51 | # Dependency directories 52 | # node_modules/ 53 | jspm_packages/ 54 | 55 | # TypeScript v1 declaration files 56 | typings/ 57 | 58 | # TypeScript cache 59 | *.tsbuildinfo 60 | 61 | # Optional npm cache directory 62 | .npm 63 | 64 | # Optional eslint cache 65 | .eslintcache 66 | 67 | # Optional REPL history 68 | .node_repl_history 69 | 70 | # Output of 'npm pack' 71 | *.tgz 72 | 73 | # Yarn Integrity file 74 | .yarn-integrity 75 | 76 | # dotenv environment variables file 77 | .env 78 | .env.test 79 | 80 | # parcel-bundler cache (https://parceljs.org/) 81 | .cache 82 | 83 | # next.js build output 84 | .next 85 | 86 | # nuxt.js build output 87 | .nuxt 88 | 89 | # react / gatsby 90 | public/ 91 | 92 | # vuepress build output 93 | .vuepress/dist 94 | 95 | # Serverless directories 96 | .serverless/ 97 | 98 | # FuseBox cache 99 | .fusebox/ 100 | 101 | # DynamoDB Local files 102 | .dynamodb/ 103 | 104 | # End of https://www.gitignore.io/api/node 105 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": false, 3 | "editor.formatOnPaste": false, 4 | "editor.formatOnType": false, 5 | "editor.codeActionsOnSave": { 6 | "source.fixAll.tslint": "explicit" 7 | }, 8 | "typescript.tsdk": "node_modules/typescript/lib" 9 | } 10 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guide 2 | 3 | ## Code in Master 4 | 5 | Install the dependencies 6 | 7 | ```bash 8 | yarn install 9 | ``` 10 | 11 | Build the typescript 12 | 13 | ```bash 14 | yarn build 15 | ``` 16 | 17 | Run the tests :heavy_check_mark: 18 | 19 | ```bash 20 | yarn test 21 | 22 | PASS src/__test__/installer.spec.ts 23 | class Installer 24 | Supported platforms 25 | Work on "darwin" 26 | ✓ brewInstall method called on "darwin" platform (3ms) 27 | Work on "linux" 28 | ✓ getAptInstall method called on "linux" platform (1ms) 29 | Work on "win32" 30 | ✓ chocoInstall method called on "win32" platform 31 | ... 32 | ``` 33 | 34 | ## Publish to a distribution branch 35 | 36 | Actions are run from GitHub repos. We will create a releases branch and only checkin production modules (core in this case). 37 | 38 | Comment out node_modules in .gitignore and create a releases/v1 branch 39 | 40 | ```plain 41 | # comment out in distribution branches 42 | # node_modules/ 43 | # lib 44 | ``` 45 | 46 | ```bash 47 | git checkout -b releases/v1 48 | git commit -a -m "prod dependencies" 49 | ``` 50 | 51 | ```bash 52 | npm prune --production 53 | git add node_modules 54 | git commit -a -m "prod dependencies" 55 | git push origin releases/v1 56 | ``` 57 | 58 | Your action is now published! :rocket: 59 | 60 | See the [versioning documentation](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md) 61 | 62 | ## Validate 63 | 64 | You can now validate the action by referencing the releases/v1 branch 65 | 66 | ```yaml 67 | uses: ts-graphviz/setup-graphviz@releases/v1 68 | with: 69 | milliseconds: 1000 70 | ``` 71 | 72 | See the [actions tab](https://github.com/actions/javascript-action/actions) for runs of this action! :rocket: 73 | 74 | ## Usage 75 | 76 | After testing you can [create a v1 tag](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md) to reference the stable and tested action 77 | 78 | ```yaml 79 | uses: ts-graphviz/setup-graphviz@v1 80 | ``` 81 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2019-2025 Yuki Yamazaki 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # `ts-graphviz/setup-graphviz` action 2 | 3 | [![All Contributors](https://img.shields.io/badge/all_contributors-21-orange.svg?style=flat-square)](#contributors-) 4 | 5 | 6 | GitHub Action to set up Graphviz cross-platform(Linux, macOS, Windows). 7 | 8 | ## Example usage 9 | 10 | With `ts-graphviz/setup-graphviz`, you can set up a GitHub Action environment 11 | that allows you to use `Graphviz` on all operating systems. 12 | 13 | ```yml 14 | name: Graphviz CI 15 | on: [push] 16 | jobs: 17 | test: 18 | name: Test on node ${{ matrix.node-version }} and ${{ matrix.os }} 19 | runs-on: ${{ matrix.os }} 20 | strategy: 21 | matrix: 22 | os: [ubuntu-latest, windows-latest, macos-latest] 23 | steps: 24 | - uses: actions/checkout@v4 25 | - name: Setup Graphviz 26 | uses: ts-graphviz/setup-graphviz@v2 27 | ... 28 | # In the steps below this you can use Graphviz dot command. 29 | ``` 30 | 31 | If you want a fixed version of Graphviz, 32 | you can specify a specific version for each operating system (not macOS). 33 | 34 | ```yaml 35 | - name: Setup Graphviz 36 | uses: ts-graphviz/setup-graphviz@v2 37 | with: 38 | # graphviz version on Ubuntu. 39 | ubuntu-graphviz-version: '2.42.2-3build2' 40 | # libgraphviz-dev version on Ubuntu. 41 | ubuntu-libgraphvizdev-version: '2.42.2-3build2' 42 | # Skip to run apt update command on Ubuntu. 43 | ubuntu-skip-apt-update: 'true' # default false 44 | # graphviz version on Windows. 45 | windows-graphviz-version: '2.49.3' 46 | # Skip to run brew update command on macOS. 47 | macos-skip-brew-update: 'true' # default false 48 | ``` 49 | 50 | ## See Also 51 | 52 | Graphviz-dot Test and Integration 53 | 54 | - [ts-graphviz](https://github.com/ts-graphviz/ts-graphviz) 55 | - Graphviz library for TypeScript. 56 | - [@ts-graphviz/react](https://github.com/ts-graphviz/react) 57 | - Graphviz-dot Renderer for React. 58 | - [jest-graphviz](https://github.com/ts-graphviz/jest-graphviz) 59 | - Jest matchers that supports graphviz integration. 60 | 61 | ## Contributing 62 | 63 | For more info on how to contribute to setup-graphviz, see the [CONTRIBUTING](./CONTRIBUTING.md). 64 | 65 | ## Contributors 66 | 67 | Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 |
Yuki Yamazaki
Yuki Yamazaki

💻 ⚠️ 📖 💡
Mohammad Hussein Tavakoli Bina
Mohammad Hussein Tavakoli Bina

🤔
Sam
Sam

🚧
mohawk2
mohawk2

🐛 🤔
leadelngalame1611
leadelngalame1611

🐛 🤔
S. Tunney
S. Tunney

🤔
Paul Natsuo Kishimoto
Paul Natsuo Kishimoto

🐛 🔬
Jeremy Maitin-Shepard
Jeremy Maitin-Shepard

🐛 🤔
mvrueden
mvrueden

🐛 💻
Daniel Himmelstein
Daniel Himmelstein

💬
Andreas Deininger
Andreas Deininger

📖 🚧
Joshua Strohminger
Joshua Strohminger

💻 🚧
Brendan
Brendan

🚧
Fridolin Glatter
Fridolin Glatter

🚧
Mészáros Gergely
Mészáros Gergely

🐛 ⚠️
Xavier Francisco
Xavier Francisco

🤔
Stijn de Gooijer
Stijn de Gooijer

🐛
Jacob Beal
Jacob Beal

🐛
Dmitry Buslov
Dmitry Buslov

🐛
Vaughn Kottler
Vaughn Kottler

🐛
gpaulfleetwood
gpaulfleetwood

🐛
103 | 104 | 105 | 106 | 107 | 108 | 109 | This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! 110 | 111 | ## License 112 | 113 | This software is released under the MIT License, see [LICENSE](./LICENSE). 114 | -------------------------------------------------------------------------------- /action.yaml: -------------------------------------------------------------------------------- 1 | name: Setup Graphviz 2 | description: Setup a graphviz environment and add it to the PATH. 3 | author: kamiazya 4 | branding: 5 | icon: arrow-down-circle 6 | color: gray-dark 7 | inputs: 8 | ubuntu-skip-apt-update: 9 | description: |- 10 | Skip to run apt update command on Ubuntu. 11 | required: false 12 | default: 'false' 13 | ubuntu-graphviz-version: 14 | description: |- 15 | graphviz version on Ubuntu. 16 | required: false 17 | ubuntu-libgraphvizdev-version: 18 | description: |- 19 | libgraphviz-dev version on Ubuntu. 20 | required: false 21 | macos-skip-brew-update: 22 | description: |- 23 | Skip to run brew update command on macOS. 24 | required: false 25 | default: 'false' 26 | windows-graphviz-version: 27 | description: |- 28 | graphviz version on Windows. 29 | required: false 30 | 31 | runs: 32 | using: node20 33 | main: lib/main.js 34 | -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.4.1/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": true, 10 | "include": ["src/**/*"] 11 | }, 12 | "organizeImports": { 13 | "enabled": true 14 | }, 15 | "formatter": { 16 | "enabled": true, 17 | "indentStyle": "space", 18 | "indentWidth": 2 19 | }, 20 | "linter": { 21 | "enabled": true, 22 | "rules": { 23 | "recommended": true, 24 | "suspicious": { 25 | "noExplicitAny": "off" 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "setup-graphviz", 3 | "version": "2.0.2", 4 | "author": "kamiazya ", 5 | "description": "Setup a graphviz environment.", 6 | "private": true, 7 | "license": "MIT", 8 | "keywords": [ 9 | "actions", 10 | "graphviz", 11 | "setup" 12 | ], 13 | "scripts": { 14 | "lint": "biome check src", 15 | "format": "biome check --apply src", 16 | "typecheck": "tsc --noEmit", 17 | "build": "tsc", 18 | "test": "vitest" 19 | }, 20 | "dependencies": { 21 | "@actions/core": "^1.2.6", 22 | "@actions/tool-cache": "^2.0.1" 23 | }, 24 | "devDependencies": { 25 | "@biomejs/biome": "^1.7.1", 26 | "@types/node": "^20.12.7", 27 | "typescript": "^5.4.5", 28 | "vitest": "^1.5.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/GraphvizInstaller.ts: -------------------------------------------------------------------------------- 1 | import { getBooleanInput, getInput } from "@actions/core"; 2 | import { exec } from "@actions/exec"; 3 | 4 | export class GraphvizInstaller { 5 | public async get() { 6 | await this.install(); 7 | } 8 | private async install() { 9 | switch (process.platform) { 10 | case "darwin": 11 | await this.brewInstall(); 12 | break; 13 | case "linux": 14 | await this.getAptInstall(); 15 | break; 16 | case "win32": 17 | await this.chocoInstall(); 18 | break; 19 | default: 20 | throw new Error(`platform '${process.platform}' is not yet supported`); 21 | } 22 | } 23 | 24 | private async brewInstall() { 25 | const skipBrewUpdate = getBooleanInput("macos-skip-brew-update"); 26 | if (skipBrewUpdate === false) { 27 | await exec("brew", ["update"]); 28 | } 29 | await exec("brew", ["install", "graphviz"]); 30 | } 31 | 32 | private async getAptInstall() { 33 | const skipAptUpdate = getBooleanInput("ubuntu-skip-apt-update"); 34 | const graphvizVersion = getInput("ubuntu-graphviz-version"); 35 | const libgraphvizdevVersion = getInput("ubuntu-libgraphvizdev-version"); 36 | if (skipAptUpdate === false) { 37 | await exec("sudo", ["apt-get", "update"]); 38 | } 39 | await exec("sudo", [ 40 | "apt-get", 41 | "install", 42 | "-y", 43 | graphvizVersion ? `graphviz=${graphvizVersion}` : "graphviz", 44 | // https://github.com/pygraphviz/pygraphviz/issues/163#issuecomment-570770201 45 | libgraphvizdevVersion 46 | ? `libgraphviz-dev=${libgraphvizdevVersion}` 47 | : "libgraphviz-dev", 48 | "pkg-config", 49 | ]); 50 | } 51 | 52 | private async chocoInstall() { 53 | const graphvizVersion = getInput("windows-graphviz-version"); 54 | await exec("choco", [ 55 | "install", 56 | "graphviz", 57 | ...(graphvizVersion ? [`--version=${graphvizVersion}`] : []), 58 | ]); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/__tests__/GraphvizInstaller.spec.ts: -------------------------------------------------------------------------------- 1 | import { 2 | type MockInstance, 3 | afterAll, 4 | beforeAll, 5 | beforeEach, 6 | describe, 7 | expect, 8 | it, 9 | test, 10 | vi, 11 | } from "vitest"; 12 | vi.mock("@actions/core"); 13 | vi.mock("@actions/exec"); 14 | 15 | import { getBooleanInput, getInput } from "@actions/core"; 16 | import * as exec from "@actions/exec"; 17 | import { GraphvizInstaller } from "../GraphvizInstaller"; 18 | 19 | describe("class GraphvizInstaller", () => { 20 | let installer: GraphvizInstaller; 21 | const originalPlatform = process.platform; 22 | 23 | const setPlatform = (platform: NodeJS.Platform) => { 24 | Object.defineProperty(process, "platform", { value: platform }); 25 | }; 26 | 27 | const mockNamedInputs = ( 28 | mock: MockInstance, 29 | name: string, 30 | value: string | boolean, 31 | ) => { 32 | mock.mockImplementation((input: string) => { 33 | if (input === name) return value; 34 | return typeof value === "string" ? "" : false; 35 | }); 36 | }; 37 | 38 | beforeEach(() => { 39 | installer = new GraphvizInstaller(); 40 | vi.clearAllMocks(); 41 | }); 42 | 43 | describe("Supported platforms", () => { 44 | describe('Work on "darwin"', () => { 45 | beforeAll(() => { 46 | setPlatform("darwin"); 47 | }); 48 | 49 | it('brewInstall method called on "darwin" platform', async () => { 50 | const brewInstall = vi.fn(); 51 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 52 | (installer as any).brewInstall = brewInstall; 53 | 54 | await installer.get(); 55 | 56 | expect(brewInstall.mock.calls.length).toBe(1); 57 | }); 58 | 59 | describe("inputs works", () => { 60 | test("default", async () => { 61 | mockNamedInputs( 62 | getBooleanInput as unknown as MockInstance, 63 | "macos-skip-brew-update", 64 | false, 65 | ); 66 | const execSpy = vi.spyOn(exec, "exec"); 67 | 68 | await installer.get(); 69 | 70 | expect(execSpy).toBeCalledTimes(2); 71 | expect(execSpy.mock.calls[0]).toMatchInlineSnapshot(` 72 | [ 73 | "brew", 74 | [ 75 | "update", 76 | ], 77 | ] 78 | `); 79 | expect(execSpy.mock.calls[1]).toMatchInlineSnapshot(` 80 | [ 81 | "brew", 82 | [ 83 | "install", 84 | "graphviz", 85 | ], 86 | ] 87 | `); 88 | }); 89 | test("skip brew update", async () => { 90 | mockNamedInputs( 91 | getBooleanInput as unknown as MockInstance, 92 | "macos-skip-brew-update", 93 | true, 94 | ); 95 | const execSpy = vi.spyOn(exec, "exec"); 96 | 97 | await installer.get(); 98 | 99 | expect(execSpy).toBeCalledTimes(1); 100 | expect(execSpy.mock.calls[0]).toMatchInlineSnapshot(` 101 | [ 102 | "brew", 103 | [ 104 | "install", 105 | "graphviz", 106 | ], 107 | ] 108 | `); 109 | }); 110 | }); 111 | }); 112 | 113 | describe('Work on "linux"', () => { 114 | beforeAll(() => { 115 | setPlatform("linux"); 116 | }); 117 | 118 | it('getAptInstall method called on "linux" platform', async () => { 119 | const getAptInstall = vi.fn(); 120 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 121 | (installer as any).getAptInstall = getAptInstall; 122 | 123 | await installer.get(); 124 | 125 | expect(getAptInstall.mock.calls.length).toBe(1); 126 | }); 127 | 128 | describe("inputs works", () => { 129 | test("skip apt update", async () => { 130 | mockNamedInputs( 131 | getBooleanInput as unknown as MockInstance, 132 | "ubuntu-skip-apt-update", 133 | true, 134 | ); 135 | const execSpy = vi.spyOn(exec, "exec"); 136 | 137 | await installer.get(); 138 | 139 | expect(execSpy.mock.calls).toMatchInlineSnapshot(` 140 | [ 141 | [ 142 | "sudo", 143 | [ 144 | "apt-get", 145 | "install", 146 | "-y", 147 | "graphviz", 148 | "libgraphviz-dev", 149 | "pkg-config", 150 | ], 151 | ], 152 | ] 153 | `); 154 | }); 155 | 156 | test("graphviz version not set", async () => { 157 | (getInput as unknown as MockInstance).mockReturnValue(""); 158 | (getBooleanInput as unknown as MockInstance).mockReturnValue(false); 159 | const execSpy = vi.spyOn(exec, "exec"); 160 | 161 | await installer.get(); 162 | 163 | expect(execSpy.mock.calls).toMatchInlineSnapshot(` 164 | [ 165 | [ 166 | "sudo", 167 | [ 168 | "apt-get", 169 | "update", 170 | ], 171 | ], 172 | [ 173 | "sudo", 174 | [ 175 | "apt-get", 176 | "install", 177 | "-y", 178 | "graphviz", 179 | "libgraphviz-dev", 180 | "pkg-config", 181 | ], 182 | ], 183 | ] 184 | `); 185 | }); 186 | 187 | test('input graphviz version set to "1.1.1" and libgraphviz_dev version set to "2.2.2"', async () => { 188 | (getInput as unknown as MockInstance).mockImplementation((input) => { 189 | switch (input) { 190 | case "ubuntu-graphviz-version": 191 | return "1.1.1"; 192 | case "ubuntu-libgraphvizdev-version": 193 | return "2.2.2"; 194 | default: 195 | return ""; 196 | } 197 | }); 198 | (getBooleanInput as unknown as MockInstance).mockReturnValue(false); 199 | const execSpy = vi.spyOn(exec, "exec"); 200 | 201 | await installer.get(); 202 | 203 | expect(execSpy.mock.calls).toMatchInlineSnapshot(` 204 | [ 205 | [ 206 | "sudo", 207 | [ 208 | "apt-get", 209 | "update", 210 | ], 211 | ], 212 | [ 213 | "sudo", 214 | [ 215 | "apt-get", 216 | "install", 217 | "-y", 218 | "graphviz=1.1.1", 219 | "libgraphviz-dev=2.2.2", 220 | "pkg-config", 221 | ], 222 | ], 223 | ] 224 | `); 225 | }); 226 | 227 | test('input graphviz version set to "3.3.3" and libgraphviz_dev version not set', async () => { 228 | (getInput as unknown as MockInstance).mockImplementation((input) => { 229 | switch (input) { 230 | case "ubuntu-graphviz-version": 231 | return "3.3.3"; 232 | default: 233 | return ""; 234 | } 235 | }); 236 | (getBooleanInput as unknown as MockInstance).mockReturnValue(false); 237 | const execSpy = vi.spyOn(exec, "exec"); 238 | 239 | await installer.get(); 240 | 241 | expect(execSpy.mock.calls).toMatchInlineSnapshot(` 242 | [ 243 | [ 244 | "sudo", 245 | [ 246 | "apt-get", 247 | "update", 248 | ], 249 | ], 250 | [ 251 | "sudo", 252 | [ 253 | "apt-get", 254 | "install", 255 | "-y", 256 | "graphviz=3.3.3", 257 | "libgraphviz-dev", 258 | "pkg-config", 259 | ], 260 | ], 261 | ] 262 | `); 263 | }); 264 | 265 | test("input graphviz not set and libgraphviz_dev set to 4.4.4", async () => { 266 | (getInput as unknown as MockInstance).mockImplementation((input) => { 267 | switch (input) { 268 | case "ubuntu-libgraphvizdev-version": 269 | return "4.4.4"; 270 | default: 271 | return ""; 272 | } 273 | }); 274 | (getBooleanInput as unknown as MockInstance).mockReturnValue(false); 275 | const execSpy = vi.spyOn(exec, "exec"); 276 | 277 | await installer.get(); 278 | 279 | expect(execSpy.mock.calls).toMatchInlineSnapshot(` 280 | [ 281 | [ 282 | "sudo", 283 | [ 284 | "apt-get", 285 | "update", 286 | ], 287 | ], 288 | [ 289 | "sudo", 290 | [ 291 | "apt-get", 292 | "install", 293 | "-y", 294 | "graphviz", 295 | "libgraphviz-dev=4.4.4", 296 | "pkg-config", 297 | ], 298 | ], 299 | ] 300 | `); 301 | }); 302 | }); 303 | }); 304 | 305 | describe('Work on "win32"', () => { 306 | beforeAll(() => { 307 | setPlatform("win32"); 308 | }); 309 | 310 | it('chocoInstall method called on "win32" platform', async () => { 311 | const chocoInstall = vi.fn(); 312 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 313 | (installer as any).chocoInstall = chocoInstall; 314 | 315 | await installer.get(); 316 | 317 | expect(chocoInstall.mock.calls.length).toBe(1); 318 | }); 319 | 320 | describe("inputs works", () => { 321 | test("graphviz version not set", async () => { 322 | (getInput as unknown as MockInstance).mockReturnValue(""); 323 | const execSpy = vi.spyOn(exec, "exec"); 324 | 325 | await installer.get(); 326 | 327 | expect(execSpy.mock.calls).toMatchInlineSnapshot(` 328 | [ 329 | [ 330 | "choco", 331 | [ 332 | "install", 333 | "graphviz", 334 | ], 335 | ], 336 | ] 337 | `); 338 | }); 339 | 340 | test('graphviz version seted to "1.1.1"', async () => { 341 | mockNamedInputs( 342 | getInput as unknown as MockInstance, 343 | "windows-graphviz-version", 344 | "1.1.1", 345 | ); 346 | const execSpy = vi.spyOn(exec, "exec"); 347 | 348 | await installer.get(); 349 | 350 | expect(execSpy.mock.calls).toMatchInlineSnapshot(` 351 | [ 352 | [ 353 | "choco", 354 | [ 355 | "install", 356 | "graphviz", 357 | "--version=1.1.1", 358 | ], 359 | ], 360 | ] 361 | `); 362 | }); 363 | }); 364 | }); 365 | }); 366 | 367 | describe("Unsupported platforms", () => { 368 | const unsupportedPlatforms: NodeJS.Platform[] = [ 369 | "aix", 370 | "android", 371 | "freebsd", 372 | "openbsd", 373 | "sunos", 374 | "cygwin", 375 | "netbsd", 376 | ]; 377 | test.each(unsupportedPlatforms)( 378 | '"%s" is not supported', 379 | async (platform: NodeJS.Platform) => { 380 | setPlatform(platform); 381 | await expect(installer.get()).rejects.toThrow( 382 | `platform '${platform}' is not yet supported`, 383 | ); 384 | }, 385 | ); 386 | }); 387 | 388 | afterAll(() => { 389 | Object.defineProperty(process, "platform", { 390 | value: originalPlatform, 391 | }); 392 | }); 393 | }); 394 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { setFailed } from "@actions/core"; 2 | import { GraphvizInstaller } from "./GraphvizInstaller"; 3 | 4 | async function run() { 5 | try { 6 | const installer = new GraphvizInstaller(); 7 | await installer.get(); 8 | } catch (error) { 9 | setFailed((error as Error).message); 10 | } 11 | } 12 | 13 | run(); 14 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2017", 4 | "module": "CommonJS", 5 | "strict": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "moduleResolution": "Node", 9 | "rootDir": "src", 10 | "outDir": "lib" 11 | }, 12 | "include": ["src"], 13 | "exclude": [ 14 | "node_modules", 15 | "**/*.test.ts", 16 | "**/*.spec.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@actions/core@^1.2.6": 6 | version "1.10.1" 7 | resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.10.1.tgz#61108e7ac40acae95ee36da074fa5850ca4ced8a" 8 | integrity sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g== 9 | dependencies: 10 | "@actions/http-client" "^2.0.1" 11 | uuid "^8.3.2" 12 | 13 | "@actions/exec@^1.0.0": 14 | version "1.1.1" 15 | resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611" 16 | integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w== 17 | dependencies: 18 | "@actions/io" "^1.0.1" 19 | 20 | "@actions/http-client@^2.0.1": 21 | version "2.2.1" 22 | resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.2.1.tgz#ed3fe7a5a6d317ac1d39886b0bb999ded229bb38" 23 | integrity sha512-KhC/cZsq7f8I4LfZSJKgCvEwfkE8o1538VoBeoGzokVLLnbFDEAdFD3UhoMklxo2un9NJVBdANOresx7vTHlHw== 24 | dependencies: 25 | tunnel "^0.0.6" 26 | undici "^5.25.4" 27 | 28 | "@actions/io@^1.0.1", "@actions/io@^1.1.1": 29 | version "1.1.3" 30 | resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71" 31 | integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q== 32 | 33 | "@actions/tool-cache@^2.0.1": 34 | version "2.0.1" 35 | resolved "https://registry.yarnpkg.com/@actions/tool-cache/-/tool-cache-2.0.1.tgz#8a649b9c07838d9d750c9864814e66a7660ab720" 36 | integrity sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA== 37 | dependencies: 38 | "@actions/core" "^1.2.6" 39 | "@actions/exec" "^1.0.0" 40 | "@actions/http-client" "^2.0.1" 41 | "@actions/io" "^1.1.1" 42 | semver "^6.1.0" 43 | uuid "^3.3.2" 44 | 45 | "@biomejs/biome@^1.7.1": 46 | version "1.7.1" 47 | resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.7.1.tgz#db64c9640ff5a60396c40dc94ce58010f8bacd4e" 48 | integrity sha512-wb2UNoFXcgaMdKXKT5ytsYntaogl2FSTjDt20CZynF3v7OXQUcIpTrr+be3XoOGpoZRj3Ytq9TSpmplUREXmeA== 49 | optionalDependencies: 50 | "@biomejs/cli-darwin-arm64" "1.7.1" 51 | "@biomejs/cli-darwin-x64" "1.7.1" 52 | "@biomejs/cli-linux-arm64" "1.7.1" 53 | "@biomejs/cli-linux-arm64-musl" "1.7.1" 54 | "@biomejs/cli-linux-x64" "1.7.1" 55 | "@biomejs/cli-linux-x64-musl" "1.7.1" 56 | "@biomejs/cli-win32-arm64" "1.7.1" 57 | "@biomejs/cli-win32-x64" "1.7.1" 58 | 59 | "@biomejs/cli-darwin-arm64@1.7.1": 60 | version "1.7.1" 61 | resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.7.1.tgz#5d31b472a537054f8032456f928cb76785877e3c" 62 | integrity sha512-qfLrIIB58dkgiY/1tgG6fSCBK22PZaSIf6blweZBsG6iMij05mEuJt50ne+zPnNFNUmt8t43NC/qOXT3iFHQBA== 63 | 64 | "@biomejs/cli-darwin-x64@1.7.1": 65 | version "1.7.1" 66 | resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.7.1.tgz#868dd2a9285c7ec73c425eab5a0923d58477409f" 67 | integrity sha512-OGeyNsEcp5VnKbF9/TBjPCTHNEOm7oHegEve07U3KZmzqfpw2Oe3i9DVW8t6vvj1TYbrwWYCld25H34kBDY7Vg== 68 | 69 | "@biomejs/cli-linux-arm64-musl@1.7.1": 70 | version "1.7.1" 71 | resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.7.1.tgz#22b5c6130d0e5da3e315da8e3975b49491102bea" 72 | integrity sha512-giH0/CzLOJ+wbxLxd5Shnr5xQf5fGnTRWLDe3lzjaF7IplVydNCEeZJtncB01SvyA6DAFJsvQ4LNxzAOQfEVCg== 73 | 74 | "@biomejs/cli-linux-arm64@1.7.1": 75 | version "1.7.1" 76 | resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.7.1.tgz#495530cf404c707d8938ce10d0324ee3f7a0298a" 77 | integrity sha512-MQDf5wErj1iBvlcxCyOa0XqZYN8WJrupVgbNnqhntO3yVATg8GxduVUn1fDSaolznkDRsj7Pz3Xu1esBFwvfmg== 78 | 79 | "@biomejs/cli-linux-x64-musl@1.7.1": 80 | version "1.7.1" 81 | resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.7.1.tgz#db3cd5d239deba606d72403b547344c41f87dd2b" 82 | integrity sha512-ySNDtPhsLxU125IFHHAxfpoHBpkM56s4mEXeO70GZtgZay/o1h8IUPWCWf5Z7gKgc4jwgYN1U1U9xabI3hZVAg== 83 | 84 | "@biomejs/cli-linux-x64@1.7.1": 85 | version "1.7.1" 86 | resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.7.1.tgz#6ac6e680778a5b9125f2aa9685d7d14de2fa7319" 87 | integrity sha512-3wmCsGcC3KZ4pfTknXHfyMMlXPMhgfXVAcG5GlrR+Tq2JGiAw0EUydaLpsSBEbcG7IxH6OiUZEJZ95kAycCHBA== 88 | 89 | "@biomejs/cli-win32-arm64@1.7.1": 90 | version "1.7.1" 91 | resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.7.1.tgz#124890636bddb112a25af64a561feaca81a3664b" 92 | integrity sha512-8hIDakEqZn0i6+388noYKdZ0ZrovTwnvMU/Qp/oJou0G7EPVdXupOe0oxiQSdRN0W7f6CS/yjPCYuVGzDG6r0g== 93 | 94 | "@biomejs/cli-win32-x64@1.7.1": 95 | version "1.7.1" 96 | resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.7.1.tgz#34e9daa9f30372acb39f5e1bdf47cbfff22419ba" 97 | integrity sha512-3W9k3uH6Ea6VOpAS9xkkAlS0LTfnGQjmIUCegZ8SDtK2NgJ1gO+qdEkGJb0ltahusFTN1QxJ107dM7ASA9IUEg== 98 | 99 | "@esbuild/aix-ppc64@0.20.2": 100 | version "0.20.2" 101 | resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" 102 | integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== 103 | 104 | "@esbuild/android-arm64@0.20.2": 105 | version "0.20.2" 106 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" 107 | integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== 108 | 109 | "@esbuild/android-arm@0.20.2": 110 | version "0.20.2" 111 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" 112 | integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== 113 | 114 | "@esbuild/android-x64@0.20.2": 115 | version "0.20.2" 116 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" 117 | integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== 118 | 119 | "@esbuild/darwin-arm64@0.20.2": 120 | version "0.20.2" 121 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" 122 | integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== 123 | 124 | "@esbuild/darwin-x64@0.20.2": 125 | version "0.20.2" 126 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" 127 | integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== 128 | 129 | "@esbuild/freebsd-arm64@0.20.2": 130 | version "0.20.2" 131 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" 132 | integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== 133 | 134 | "@esbuild/freebsd-x64@0.20.2": 135 | version "0.20.2" 136 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" 137 | integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== 138 | 139 | "@esbuild/linux-arm64@0.20.2": 140 | version "0.20.2" 141 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" 142 | integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== 143 | 144 | "@esbuild/linux-arm@0.20.2": 145 | version "0.20.2" 146 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" 147 | integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== 148 | 149 | "@esbuild/linux-ia32@0.20.2": 150 | version "0.20.2" 151 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" 152 | integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== 153 | 154 | "@esbuild/linux-loong64@0.20.2": 155 | version "0.20.2" 156 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" 157 | integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== 158 | 159 | "@esbuild/linux-mips64el@0.20.2": 160 | version "0.20.2" 161 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" 162 | integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== 163 | 164 | "@esbuild/linux-ppc64@0.20.2": 165 | version "0.20.2" 166 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" 167 | integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== 168 | 169 | "@esbuild/linux-riscv64@0.20.2": 170 | version "0.20.2" 171 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" 172 | integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== 173 | 174 | "@esbuild/linux-s390x@0.20.2": 175 | version "0.20.2" 176 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" 177 | integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== 178 | 179 | "@esbuild/linux-x64@0.20.2": 180 | version "0.20.2" 181 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" 182 | integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== 183 | 184 | "@esbuild/netbsd-x64@0.20.2": 185 | version "0.20.2" 186 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" 187 | integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== 188 | 189 | "@esbuild/openbsd-x64@0.20.2": 190 | version "0.20.2" 191 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" 192 | integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== 193 | 194 | "@esbuild/sunos-x64@0.20.2": 195 | version "0.20.2" 196 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" 197 | integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== 198 | 199 | "@esbuild/win32-arm64@0.20.2": 200 | version "0.20.2" 201 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" 202 | integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== 203 | 204 | "@esbuild/win32-ia32@0.20.2": 205 | version "0.20.2" 206 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" 207 | integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== 208 | 209 | "@esbuild/win32-x64@0.20.2": 210 | version "0.20.2" 211 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" 212 | integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== 213 | 214 | "@fastify/busboy@^2.0.0": 215 | version "2.1.1" 216 | resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" 217 | integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== 218 | 219 | "@jest/schemas@^29.6.3": 220 | version "29.6.3" 221 | resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" 222 | integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== 223 | dependencies: 224 | "@sinclair/typebox" "^0.27.8" 225 | 226 | "@jridgewell/sourcemap-codec@^1.4.15": 227 | version "1.4.15" 228 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 229 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 230 | 231 | "@rollup/rollup-android-arm-eabi@4.16.4": 232 | version "4.16.4" 233 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.16.4.tgz#5e8930291f1e5ead7fb1171d53ba5c87718de062" 234 | integrity sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q== 235 | 236 | "@rollup/rollup-android-arm64@4.16.4": 237 | version "4.16.4" 238 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.16.4.tgz#ffb84f1359c04ec8a022a97110e18a5600f5f638" 239 | integrity sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w== 240 | 241 | "@rollup/rollup-darwin-arm64@4.16.4": 242 | version "4.16.4" 243 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.16.4.tgz#b2fcee8d4806a0b1b9185ac038cc428ddedce9f4" 244 | integrity sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw== 245 | 246 | "@rollup/rollup-darwin-x64@4.16.4": 247 | version "4.16.4" 248 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.16.4.tgz#fcb25ccbaa3dd33a6490e9d1c64bab2e0e16b932" 249 | integrity sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ== 250 | 251 | "@rollup/rollup-linux-arm-gnueabihf@4.16.4": 252 | version "4.16.4" 253 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.16.4.tgz#40d46bdfe667e5eca31bf40047460e326d2e26bb" 254 | integrity sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw== 255 | 256 | "@rollup/rollup-linux-arm-musleabihf@4.16.4": 257 | version "4.16.4" 258 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.16.4.tgz#7741df2448c11c56588b50835dbfe91b1a10b375" 259 | integrity sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg== 260 | 261 | "@rollup/rollup-linux-arm64-gnu@4.16.4": 262 | version "4.16.4" 263 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.16.4.tgz#0a23b02d2933e4c4872ad18d879890b6a4a295df" 264 | integrity sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w== 265 | 266 | "@rollup/rollup-linux-arm64-musl@4.16.4": 267 | version "4.16.4" 268 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.16.4.tgz#e37ef259358aa886cc07d782220a4fb83c1e6970" 269 | integrity sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg== 270 | 271 | "@rollup/rollup-linux-powerpc64le-gnu@4.16.4": 272 | version "4.16.4" 273 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.16.4.tgz#8c69218b6de05ee2ba211664a2d2ac1e54e43f94" 274 | integrity sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w== 275 | 276 | "@rollup/rollup-linux-riscv64-gnu@4.16.4": 277 | version "4.16.4" 278 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.16.4.tgz#d32727dab8f538d9a4a7c03bcf58c436aecd0139" 279 | integrity sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng== 280 | 281 | "@rollup/rollup-linux-s390x-gnu@4.16.4": 282 | version "4.16.4" 283 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.16.4.tgz#d46097246a187d99fc9451fe8393b7155b47c5ec" 284 | integrity sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ== 285 | 286 | "@rollup/rollup-linux-x64-gnu@4.16.4": 287 | version "4.16.4" 288 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.16.4.tgz#6356c5a03a4afb1c3057490fc51b4764e109dbc7" 289 | integrity sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA== 290 | 291 | "@rollup/rollup-linux-x64-musl@4.16.4": 292 | version "4.16.4" 293 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.16.4.tgz#03a5831a9c0d05877b94653b5ddd3020d3c6fb06" 294 | integrity sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA== 295 | 296 | "@rollup/rollup-win32-arm64-msvc@4.16.4": 297 | version "4.16.4" 298 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.16.4.tgz#6cc0db57750376b9303bdb6f5482af8974fcae35" 299 | integrity sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA== 300 | 301 | "@rollup/rollup-win32-ia32-msvc@4.16.4": 302 | version "4.16.4" 303 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.16.4.tgz#aea0b7e492bd9ed46971cb80bc34f1eb14e07789" 304 | integrity sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w== 305 | 306 | "@rollup/rollup-win32-x64-msvc@4.16.4": 307 | version "4.16.4" 308 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.16.4.tgz#c09ad9a132ccb5a67c4f211d909323ab1294f95f" 309 | integrity sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A== 310 | 311 | "@sinclair/typebox@^0.27.8": 312 | version "0.27.8" 313 | resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" 314 | integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== 315 | 316 | "@types/estree@1.0.5", "@types/estree@^1.0.0": 317 | version "1.0.5" 318 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" 319 | integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== 320 | 321 | "@types/node@^20.12.7": 322 | version "20.12.7" 323 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384" 324 | integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg== 325 | dependencies: 326 | undici-types "~5.26.4" 327 | 328 | "@vitest/expect@1.5.1": 329 | version "1.5.1" 330 | resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.5.1.tgz#a9ad180570a934bd4d63c59175e50ab2c359fff9" 331 | integrity sha512-w3Bn+VUMqku+oWmxvPhTE86uMTbfmBl35aGaIPlwVW7Q89ZREC/icfo2HBsEZ3AAW6YR9lObfZKPEzstw9tJOQ== 332 | dependencies: 333 | "@vitest/spy" "1.5.1" 334 | "@vitest/utils" "1.5.1" 335 | chai "^4.3.10" 336 | 337 | "@vitest/runner@1.5.1": 338 | version "1.5.1" 339 | resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-1.5.1.tgz#dbb26a7ce1a3b8c3d186b2c06dd556ed093ddaef" 340 | integrity sha512-mt372zsz0vFR7L1xF/ert4t+teD66oSuXoTyaZbl0eJgilvyzCKP1tJ21gVa8cDklkBOM3DLnkE1ljj/BskyEw== 341 | dependencies: 342 | "@vitest/utils" "1.5.1" 343 | p-limit "^5.0.0" 344 | pathe "^1.1.1" 345 | 346 | "@vitest/snapshot@1.5.1": 347 | version "1.5.1" 348 | resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-1.5.1.tgz#56f459f9327567378ee111384fadcda91d8e6be3" 349 | integrity sha512-h/1SGaZYXmjn6hULRBOlqam2z4oTlEe6WwARRzLErAPBqljAs6eX7tfdyN0K+MpipIwSZ5sZsubDWkCPAiVXZQ== 350 | dependencies: 351 | magic-string "^0.30.5" 352 | pathe "^1.1.1" 353 | pretty-format "^29.7.0" 354 | 355 | "@vitest/spy@1.5.1": 356 | version "1.5.1" 357 | resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.5.1.tgz#a0f96a3441afe6e0c5e7c8068d60b2086b0384d3" 358 | integrity sha512-vsqczk6uPJjmPLy6AEtqfbFqgLYcGBe9BTY+XL8L6y8vrGOhyE23CJN9P/hPimKXnScbqiZ/r/UtUSOQ2jIDGg== 359 | dependencies: 360 | tinyspy "^2.2.0" 361 | 362 | "@vitest/utils@1.5.1": 363 | version "1.5.1" 364 | resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.5.1.tgz#b373a1f5274b2b8b52ce8d6023db5e006f92d770" 365 | integrity sha512-92pE17bBXUxA0Y7goPcvnATMCuq4NQLOmqsG0e2BtzRi7KLwZB5jpiELi/8ybY8IQNWemKjSD5rMoO7xTdv8ug== 366 | dependencies: 367 | diff-sequences "^29.6.3" 368 | estree-walker "^3.0.3" 369 | loupe "^2.3.7" 370 | pretty-format "^29.7.0" 371 | 372 | acorn-walk@^8.3.2: 373 | version "8.3.2" 374 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" 375 | integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== 376 | 377 | acorn@^8.11.3: 378 | version "8.11.3" 379 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" 380 | integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== 381 | 382 | ansi-styles@^5.0.0: 383 | version "5.2.0" 384 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" 385 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== 386 | 387 | assertion-error@^1.1.0: 388 | version "1.1.0" 389 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 390 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 391 | 392 | cac@^6.7.14: 393 | version "6.7.14" 394 | resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" 395 | integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== 396 | 397 | chai@^4.3.10: 398 | version "4.4.1" 399 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" 400 | integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== 401 | dependencies: 402 | assertion-error "^1.1.0" 403 | check-error "^1.0.3" 404 | deep-eql "^4.1.3" 405 | get-func-name "^2.0.2" 406 | loupe "^2.3.6" 407 | pathval "^1.1.1" 408 | type-detect "^4.0.8" 409 | 410 | check-error@^1.0.3: 411 | version "1.0.3" 412 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" 413 | integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== 414 | dependencies: 415 | get-func-name "^2.0.2" 416 | 417 | confbox@^0.1.7: 418 | version "0.1.7" 419 | resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.7.tgz#ccfc0a2bcae36a84838e83a3b7f770fb17d6c579" 420 | integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA== 421 | 422 | cross-spawn@^7.0.3: 423 | version "7.0.3" 424 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 425 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 426 | dependencies: 427 | path-key "^3.1.0" 428 | shebang-command "^2.0.0" 429 | which "^2.0.1" 430 | 431 | debug@^4.3.4: 432 | version "4.3.4" 433 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 434 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 435 | dependencies: 436 | ms "2.1.2" 437 | 438 | deep-eql@^4.1.3: 439 | version "4.1.3" 440 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" 441 | integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== 442 | dependencies: 443 | type-detect "^4.0.0" 444 | 445 | diff-sequences@^29.6.3: 446 | version "29.6.3" 447 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" 448 | integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== 449 | 450 | esbuild@^0.20.1: 451 | version "0.20.2" 452 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" 453 | integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== 454 | optionalDependencies: 455 | "@esbuild/aix-ppc64" "0.20.2" 456 | "@esbuild/android-arm" "0.20.2" 457 | "@esbuild/android-arm64" "0.20.2" 458 | "@esbuild/android-x64" "0.20.2" 459 | "@esbuild/darwin-arm64" "0.20.2" 460 | "@esbuild/darwin-x64" "0.20.2" 461 | "@esbuild/freebsd-arm64" "0.20.2" 462 | "@esbuild/freebsd-x64" "0.20.2" 463 | "@esbuild/linux-arm" "0.20.2" 464 | "@esbuild/linux-arm64" "0.20.2" 465 | "@esbuild/linux-ia32" "0.20.2" 466 | "@esbuild/linux-loong64" "0.20.2" 467 | "@esbuild/linux-mips64el" "0.20.2" 468 | "@esbuild/linux-ppc64" "0.20.2" 469 | "@esbuild/linux-riscv64" "0.20.2" 470 | "@esbuild/linux-s390x" "0.20.2" 471 | "@esbuild/linux-x64" "0.20.2" 472 | "@esbuild/netbsd-x64" "0.20.2" 473 | "@esbuild/openbsd-x64" "0.20.2" 474 | "@esbuild/sunos-x64" "0.20.2" 475 | "@esbuild/win32-arm64" "0.20.2" 476 | "@esbuild/win32-ia32" "0.20.2" 477 | "@esbuild/win32-x64" "0.20.2" 478 | 479 | estree-walker@^3.0.3: 480 | version "3.0.3" 481 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" 482 | integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== 483 | dependencies: 484 | "@types/estree" "^1.0.0" 485 | 486 | execa@^8.0.1: 487 | version "8.0.1" 488 | resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" 489 | integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== 490 | dependencies: 491 | cross-spawn "^7.0.3" 492 | get-stream "^8.0.1" 493 | human-signals "^5.0.0" 494 | is-stream "^3.0.0" 495 | merge-stream "^2.0.0" 496 | npm-run-path "^5.1.0" 497 | onetime "^6.0.0" 498 | signal-exit "^4.1.0" 499 | strip-final-newline "^3.0.0" 500 | 501 | fsevents@~2.3.2, fsevents@~2.3.3: 502 | version "2.3.3" 503 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 504 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 505 | 506 | get-func-name@^2.0.1, get-func-name@^2.0.2: 507 | version "2.0.2" 508 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" 509 | integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== 510 | 511 | get-stream@^8.0.1: 512 | version "8.0.1" 513 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" 514 | integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== 515 | 516 | human-signals@^5.0.0: 517 | version "5.0.0" 518 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" 519 | integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== 520 | 521 | is-stream@^3.0.0: 522 | version "3.0.0" 523 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" 524 | integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== 525 | 526 | isexe@^2.0.0: 527 | version "2.0.0" 528 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 529 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 530 | 531 | js-tokens@^9.0.0: 532 | version "9.0.0" 533 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-9.0.0.tgz#0f893996d6f3ed46df7f0a3b12a03f5fd84223c1" 534 | integrity sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ== 535 | 536 | local-pkg@^0.5.0: 537 | version "0.5.0" 538 | resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c" 539 | integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== 540 | dependencies: 541 | mlly "^1.4.2" 542 | pkg-types "^1.0.3" 543 | 544 | loupe@^2.3.6, loupe@^2.3.7: 545 | version "2.3.7" 546 | resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" 547 | integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== 548 | dependencies: 549 | get-func-name "^2.0.1" 550 | 551 | magic-string@^0.30.5: 552 | version "0.30.10" 553 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" 554 | integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== 555 | dependencies: 556 | "@jridgewell/sourcemap-codec" "^1.4.15" 557 | 558 | merge-stream@^2.0.0: 559 | version "2.0.0" 560 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 561 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 562 | 563 | mimic-fn@^4.0.0: 564 | version "4.0.0" 565 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" 566 | integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== 567 | 568 | mlly@^1.4.2, mlly@^1.6.1: 569 | version "1.6.1" 570 | resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.6.1.tgz#0983067dc3366d6314fc5e12712884e6978d028f" 571 | integrity sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA== 572 | dependencies: 573 | acorn "^8.11.3" 574 | pathe "^1.1.2" 575 | pkg-types "^1.0.3" 576 | ufo "^1.3.2" 577 | 578 | ms@2.1.2: 579 | version "2.1.2" 580 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 581 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 582 | 583 | nanoid@^3.3.7: 584 | version "3.3.7" 585 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" 586 | integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== 587 | 588 | npm-run-path@^5.1.0: 589 | version "5.3.0" 590 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" 591 | integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== 592 | dependencies: 593 | path-key "^4.0.0" 594 | 595 | onetime@^6.0.0: 596 | version "6.0.0" 597 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" 598 | integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== 599 | dependencies: 600 | mimic-fn "^4.0.0" 601 | 602 | p-limit@^5.0.0: 603 | version "5.0.0" 604 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-5.0.0.tgz#6946d5b7140b649b7a33a027d89b4c625b3a5985" 605 | integrity sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ== 606 | dependencies: 607 | yocto-queue "^1.0.0" 608 | 609 | path-key@^3.1.0: 610 | version "3.1.1" 611 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 612 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 613 | 614 | path-key@^4.0.0: 615 | version "4.0.0" 616 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" 617 | integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== 618 | 619 | pathe@^1.1.1, pathe@^1.1.2: 620 | version "1.1.2" 621 | resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" 622 | integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== 623 | 624 | pathval@^1.1.1: 625 | version "1.1.1" 626 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" 627 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 628 | 629 | picocolors@^1.0.0: 630 | version "1.0.0" 631 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 632 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 633 | 634 | pkg-types@^1.0.3: 635 | version "1.1.0" 636 | resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.0.tgz#3ec1bf33379030fd0a34c227b6c650e8ea7ca271" 637 | integrity sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA== 638 | dependencies: 639 | confbox "^0.1.7" 640 | mlly "^1.6.1" 641 | pathe "^1.1.2" 642 | 643 | postcss@^8.4.38: 644 | version "8.4.38" 645 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" 646 | integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== 647 | dependencies: 648 | nanoid "^3.3.7" 649 | picocolors "^1.0.0" 650 | source-map-js "^1.2.0" 651 | 652 | pretty-format@^29.7.0: 653 | version "29.7.0" 654 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" 655 | integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== 656 | dependencies: 657 | "@jest/schemas" "^29.6.3" 658 | ansi-styles "^5.0.0" 659 | react-is "^18.0.0" 660 | 661 | react-is@^18.0.0: 662 | version "18.2.0" 663 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" 664 | integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== 665 | 666 | rollup@^4.13.0: 667 | version "4.16.4" 668 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.16.4.tgz#fe328eb41293f20c9593a095ec23bdc4b5d93317" 669 | integrity sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA== 670 | dependencies: 671 | "@types/estree" "1.0.5" 672 | optionalDependencies: 673 | "@rollup/rollup-android-arm-eabi" "4.16.4" 674 | "@rollup/rollup-android-arm64" "4.16.4" 675 | "@rollup/rollup-darwin-arm64" "4.16.4" 676 | "@rollup/rollup-darwin-x64" "4.16.4" 677 | "@rollup/rollup-linux-arm-gnueabihf" "4.16.4" 678 | "@rollup/rollup-linux-arm-musleabihf" "4.16.4" 679 | "@rollup/rollup-linux-arm64-gnu" "4.16.4" 680 | "@rollup/rollup-linux-arm64-musl" "4.16.4" 681 | "@rollup/rollup-linux-powerpc64le-gnu" "4.16.4" 682 | "@rollup/rollup-linux-riscv64-gnu" "4.16.4" 683 | "@rollup/rollup-linux-s390x-gnu" "4.16.4" 684 | "@rollup/rollup-linux-x64-gnu" "4.16.4" 685 | "@rollup/rollup-linux-x64-musl" "4.16.4" 686 | "@rollup/rollup-win32-arm64-msvc" "4.16.4" 687 | "@rollup/rollup-win32-ia32-msvc" "4.16.4" 688 | "@rollup/rollup-win32-x64-msvc" "4.16.4" 689 | fsevents "~2.3.2" 690 | 691 | semver@^6.1.0: 692 | version "6.3.1" 693 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" 694 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 695 | 696 | shebang-command@^2.0.0: 697 | version "2.0.0" 698 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 699 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 700 | dependencies: 701 | shebang-regex "^3.0.0" 702 | 703 | shebang-regex@^3.0.0: 704 | version "3.0.0" 705 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 706 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 707 | 708 | siginfo@^2.0.0: 709 | version "2.0.0" 710 | resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" 711 | integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== 712 | 713 | signal-exit@^4.1.0: 714 | version "4.1.0" 715 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" 716 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 717 | 718 | source-map-js@^1.2.0: 719 | version "1.2.0" 720 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" 721 | integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== 722 | 723 | stackback@0.0.2: 724 | version "0.0.2" 725 | resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" 726 | integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== 727 | 728 | std-env@^3.5.0: 729 | version "3.7.0" 730 | resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" 731 | integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== 732 | 733 | strip-final-newline@^3.0.0: 734 | version "3.0.0" 735 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" 736 | integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== 737 | 738 | strip-literal@^2.0.0: 739 | version "2.1.0" 740 | resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-2.1.0.tgz#6d82ade5e2e74f5c7e8739b6c84692bd65f0bd2a" 741 | integrity sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw== 742 | dependencies: 743 | js-tokens "^9.0.0" 744 | 745 | tinybench@^2.5.1: 746 | version "2.8.0" 747 | resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.8.0.tgz#30e19ae3a27508ee18273ffed9ac7018949acd7b" 748 | integrity sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw== 749 | 750 | tinypool@^0.8.3: 751 | version "0.8.4" 752 | resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.8.4.tgz#e217fe1270d941b39e98c625dcecebb1408c9aa8" 753 | integrity sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ== 754 | 755 | tinyspy@^2.2.0: 756 | version "2.2.1" 757 | resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1" 758 | integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A== 759 | 760 | tunnel@^0.0.6: 761 | version "0.0.6" 762 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" 763 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== 764 | 765 | type-detect@^4.0.0, type-detect@^4.0.8: 766 | version "4.0.8" 767 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 768 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 769 | 770 | typescript@^5.4.5: 771 | version "5.4.5" 772 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" 773 | integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== 774 | 775 | ufo@^1.3.2: 776 | version "1.5.3" 777 | resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344" 778 | integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw== 779 | 780 | undici-types@~5.26.4: 781 | version "5.26.5" 782 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" 783 | integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== 784 | 785 | undici@^5.25.4: 786 | version "5.28.4" 787 | resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" 788 | integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== 789 | dependencies: 790 | "@fastify/busboy" "^2.0.0" 791 | 792 | uuid@^3.3.2: 793 | version "3.4.0" 794 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 795 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 796 | 797 | uuid@^8.3.2: 798 | version "8.3.2" 799 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 800 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 801 | 802 | vite-node@1.5.1: 803 | version "1.5.1" 804 | resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-1.5.1.tgz#5e1a0c6265aa2b553694e6b3dd9421aa3d4dc00c" 805 | integrity sha512-HNpfV7BrAsjkYVNWIcPleJwvJmydJqqJRrRbpoQ/U7QDwJKyEzNa4g5aYg8MjXJyKsk29IUCcMLFRcsEvqUIsA== 806 | dependencies: 807 | cac "^6.7.14" 808 | debug "^4.3.4" 809 | pathe "^1.1.1" 810 | picocolors "^1.0.0" 811 | vite "^5.0.0" 812 | 813 | vite@^5.0.0: 814 | version "5.2.10" 815 | resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.10.tgz#2ac927c91e99d51b376a5c73c0e4b059705f5bd7" 816 | integrity sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw== 817 | dependencies: 818 | esbuild "^0.20.1" 819 | postcss "^8.4.38" 820 | rollup "^4.13.0" 821 | optionalDependencies: 822 | fsevents "~2.3.3" 823 | 824 | vitest@^1.5.0: 825 | version "1.5.1" 826 | resolved "https://registry.yarnpkg.com/vitest/-/vitest-1.5.1.tgz#e661504adab8e587bf6834c6b6790cd1cc72d816" 827 | integrity sha512-3GvBMpoRnUNbZRX1L3mJCv3Ou3NAobb4dM48y8k9ZGwDofePpclTOyO+lqJFKSQpubH1V8tEcAEw/Y3mJKGJQQ== 828 | dependencies: 829 | "@vitest/expect" "1.5.1" 830 | "@vitest/runner" "1.5.1" 831 | "@vitest/snapshot" "1.5.1" 832 | "@vitest/spy" "1.5.1" 833 | "@vitest/utils" "1.5.1" 834 | acorn-walk "^8.3.2" 835 | chai "^4.3.10" 836 | debug "^4.3.4" 837 | execa "^8.0.1" 838 | local-pkg "^0.5.0" 839 | magic-string "^0.30.5" 840 | pathe "^1.1.1" 841 | picocolors "^1.0.0" 842 | std-env "^3.5.0" 843 | strip-literal "^2.0.0" 844 | tinybench "^2.5.1" 845 | tinypool "^0.8.3" 846 | vite "^5.0.0" 847 | vite-node "1.5.1" 848 | why-is-node-running "^2.2.2" 849 | 850 | which@^2.0.1: 851 | version "2.0.2" 852 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 853 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 854 | dependencies: 855 | isexe "^2.0.0" 856 | 857 | why-is-node-running@^2.2.2: 858 | version "2.2.2" 859 | resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e" 860 | integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA== 861 | dependencies: 862 | siginfo "^2.0.0" 863 | stackback "0.0.2" 864 | 865 | yocto-queue@^1.0.0: 866 | version "1.0.0" 867 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" 868 | integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== 869 | --------------------------------------------------------------------------------