├── .eslintrc ├── .github ├── dependabot.yml └── workflows │ ├── check-dist.yml │ ├── lint.yml │ └── test.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── LICENSE ├── README.md ├── action.yml ├── dist ├── index.js └── package.json ├── examples ├── README.md ├── args.yml ├── config.yml └── install.yml ├── package.json ├── pnpm-lock.yaml ├── src ├── cli.ts ├── config.ts ├── input.ts ├── main.ts ├── run.ts └── version.ts └── tsconfig.json /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "plugins": [ 4 | "eslint-plugin-tsdoc" 5 | ], 6 | "parserOptions": { 7 | "project": ["tsconfig.json"] 8 | }, 9 | "extends": ["@scaleway/react/typescript"], 10 | "rules": { 11 | "tsdoc/syntax": "warn", 12 | "@typescript-eslint/naming-convention": [ 13 | "error", 14 | { 15 | "selector": "enumMember", 16 | "format": ["PascalCase"] 17 | } 18 | ], 19 | "import/prefer-default-export": "off", 20 | "import/no-default-export": "error", 21 | //"no-await-in-loop": "off", 22 | "@typescript-eslint/no-namespace": "off" 23 | }, 24 | "overrides": [ 25 | { 26 | "files": [ 27 | "./packages/clients/src/scw/**/*.ts", 28 | "./packages/clients/src/internal/**/*.ts" 29 | ], 30 | "rules": { 31 | "@typescript-eslint/consistent-type-definitions": "off" 32 | } 33 | } 34 | ] 35 | } -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: npm 4 | directory: / 5 | schedule: 6 | interval: monthly 7 | 8 | - package-ecosystem: github-actions 9 | directory: / 10 | schedule: 11 | interval: monthly 12 | -------------------------------------------------------------------------------- /.github/workflows/check-dist.yml: -------------------------------------------------------------------------------- 1 | name: Check dist 2 | permissions: 3 | contents: read 4 | 5 | on: 6 | push: 7 | branches: 8 | - master 9 | pull_request: 10 | merge_group: 11 | 12 | jobs: 13 | check-dist: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - uses: actions/checkout@v5 18 | - uses: pnpm/action-setup@v4.2.0 19 | - name: Set Node.js 20 | uses: actions/setup-node@v6.0.0 21 | with: 22 | cache: 'pnpm' 23 | node-version: 20.x 24 | - name: Install dependencies 25 | run: pnpm install 26 | - name: Rebuild the dist/ directory 27 | run: | 28 | pnpm build 29 | pnpm package 30 | - name: Compare the expected and actual dist/ directories 31 | run: | 32 | if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then 33 | echo "Detected uncommitted changes after build. See status below:" 34 | git diff 35 | exit 1 36 | fi 37 | id: diff 38 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint project 2 | permissions: 3 | contents: read 4 | 5 | on: 6 | push: 7 | branches: 8 | - master 9 | pull_request: 10 | merge_group: 11 | 12 | jobs: 13 | lint: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v5 17 | - uses: pnpm/action-setup@v4.2.0 18 | - name: Set Node.js 19 | uses: actions/setup-node@v6.0.0 20 | with: 21 | cache: 'pnpm' 22 | node-version: 20.x 23 | - run: pnpm install 24 | - run: pnpm build 25 | - run: pnpm lint 26 | - run: pnpm prettier 27 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test action 2 | permissions: 3 | contents: read 4 | 5 | on: 6 | push: 7 | branches: 8 | - master 9 | pull_request: 10 | merge_group: 11 | 12 | jobs: 13 | lint: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v5 17 | - uses: pnpm/action-setup@v4.2.0 18 | - name: Set Node.js 19 | uses: actions/setup-node@v6.0.0 20 | with: 21 | cache: 'pnpm' 22 | node-version: 20.x 23 | - run: pnpm install 24 | - run: pnpm build 25 | - run: pnpm lint 26 | test_action: 27 | runs-on: ubuntu-latest 28 | steps: 29 | - name: Checkout 30 | uses: actions/checkout@v5 31 | - name: Install CLI 32 | uses: ./ 33 | with: 34 | version: latest 35 | env: 36 | RUNNER_DEBUG: 1 37 | - name: Find CLI 38 | run: ls -lR $RUNNER_TOOL_CACHE/scw 39 | - name: Use CLI 40 | run: scw info 41 | test_action_usage: 42 | runs-on: ubuntu-latest 43 | steps: 44 | - name: Checkout 45 | uses: actions/checkout@v5 46 | - name: Use CLI 47 | id: cli 48 | uses: ./ 49 | with: 50 | args: instance server-type list 51 | version: v2.29.0 52 | access-key: ${{ secrets.SCW_ACCESS_KEY }} 53 | secret-key: ${{ secrets.SCW_SECRET_KEY }} 54 | default-project-id: ${{ secrets.SCW_DEFAULT_PROJECT_ID }} 55 | default-organization-id: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }} 56 | - name: Check output 57 | run: | 58 | [ "$( echo '${{ steps.cli.outputs.json }}' | jq -r 'type')" = "array" ] 59 | - name: Use CLI manually 60 | id: cli_manual 61 | run: echo "json=$(scw -o json instance server-type list)" >> $GITHUB_OUTPUT 62 | env: 63 | SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY }} 64 | SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} 65 | SCW_DEFAULT_PROJECT_ID: ${{ secrets.SCW_DEFAULT_PROJECT_ID }} 66 | SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }} 67 | - name: Check output 68 | run: | 69 | [ "$( echo '${{ steps.cli_manual.outputs.json }}' | jq -r 'type')" = "array" ] 70 | test_action_export_config: 71 | runs-on: ubuntu-latest 72 | steps: 73 | - name: Checkout 74 | uses: actions/checkout@v5 75 | - name: Install CLI and export config 76 | uses: ./ 77 | with: 78 | export-config: true 79 | version: v2.29.0 80 | access-key: ${{ secrets.SCW_ACCESS_KEY }} 81 | secret-key: ${{ secrets.SCW_SECRET_KEY }} 82 | default-project-id: ${{ secrets.SCW_DEFAULT_PROJECT_ID }} 83 | default-organization-id: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }} 84 | - name: Use CLI with exported config 85 | uses: ./ 86 | id: cli 87 | with: 88 | args: instance server-type list 89 | - name: Check output 90 | run: | 91 | [ "$( echo '${{ steps.cli.outputs.json }}' | jq -r 'type')" = "array" ] 92 | - name: Use CLI manually with exported config 93 | id: cli_manual 94 | run: echo "json=$(scw -o json instance server-type list)" >> $GITHUB_OUTPUT 95 | - name: Check output 96 | run: | 97 | [ "$( echo '${{ steps.cli_manual.outputs.json }}' | jq -r 'type')" = "array" ] 98 | - name: Export again 99 | uses: ./ 100 | with: 101 | export-config: true 102 | version: v2.29.0 103 | access-key: ${{ secrets.SCW_ACCESS_KEY }} 104 | secret-key: ${{ secrets.SCW_SECRET_KEY }} 105 | default-project-id: ${{ secrets.SCW_DEFAULT_PROJECT_ID }} 106 | default-organization-id: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }} 107 | test_action_save_config: 108 | runs-on: ubuntu-latest 109 | steps: 110 | - name: Checkout 111 | uses: actions/checkout@v5 112 | - name: Install CLI and save config 113 | uses: ./ 114 | with: 115 | save-config: true 116 | version: v2.29.0 117 | access-key: ${{ secrets.SCW_ACCESS_KEY }} 118 | secret-key: ${{ secrets.SCW_SECRET_KEY }} 119 | default-project-id: ${{ secrets.SCW_DEFAULT_PROJECT_ID }} 120 | default-organization-id: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }} 121 | - name: Use CLI manually with saved config 122 | id: cli_manual 123 | run: echo "json=$(scw -o json instance server-type list)" >> $GITHUB_OUTPUT 124 | - name: Check output 125 | run: | 126 | [ "$( echo '${{ steps.cli_manual.outputs.json }}' | jq -r 'type')" = "array" ] 127 | - name: Check CLI config 128 | uses: ./ 129 | with: 130 | version: v2.29.0 131 | args: config info 132 | env: 133 | RUNNER_DEBUG: true 134 | - name: Use CLI with saved config 135 | uses: ./ 136 | id: cli 137 | with: 138 | version: v2.29.0 139 | args: instance server-type list 140 | - name: Check output 141 | run: | 142 | [ "$( echo '${{ steps.cli.outputs.json }}' | jq -r 'type')" = "array" ] 143 | - name: Save again 144 | uses: ./ 145 | with: 146 | save-config: true 147 | version: v2.29.0 148 | access-key: ${{ secrets.SCW_ACCESS_KEY }} 149 | secret-key: ${{ secrets.SCW_SECRET_KEY }} 150 | default-project-id: ${{ secrets.SCW_DEFAULT_PROJECT_ID }} 151 | default-organization-id: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }} 152 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea 3 | lib 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | 4 | package.json -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "all", 4 | "semi": false, 5 | "arrowParens": "avoid" 6 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2023 Scaleway 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GitHub action for Scaleway CLI 2 | 3 | This action install [scaleway-cli](https://github.com/scaleway/scaleway-cli) and allows you to run commands as well as install and export your config. 4 | 5 | ## Usage 6 | 7 | ### Config 8 | 9 | - `save_config`: save your config to scaleway's config file, useful to use it with other tools like terraform or SDKs 10 | - `export_config`: export your config to the environment to use the same action in the next steps 11 | 12 | Checkout CLI's [config documentation](https://github.com/scaleway/scaleway-cli/blob/master/docs/commands/config.md) 13 | 14 | ```yml 15 | - name: Use CLI 16 | uses: scaleway/action-scw@v0 17 | with: 18 | save-config: true 19 | export-config: true 20 | version: v2.24.0 21 | access-key: ${{ secrets.SCW_ACCESS_KEY }} 22 | secret-key: ${{ secrets.SCW_SECRET_KEY }} 23 | default-project-id: ${{ secrets.SCW_DEFAULT_PROJECT_ID }} 24 | default-organization-id: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }} 25 | ``` 26 | 27 | ### Commands 28 | 29 | - `args`: when arguments are given, a command will be executed and the json output will be in the `json` output 30 | 31 | ```yml 32 | - name: Use CLI 33 | uses: scaleway/action-scw@v0 34 | id: cli 35 | with: 36 | args: instance server get ${{ env.SERVER_ID }} 37 | - run: echo ${{ steps.cli.outputs.json }} 38 | ``` 39 | 40 | ### Others 41 | 42 | - `repo-token`: default to the workflow token (i.e. `GITHUB_TOKEN`), needed to check the latest version of the tool available 43 | - `version`: default to latest, must be exact version. Fetched from exported config if available 44 | - `access-key` 45 | - `secret-key` 46 | - `default-project-id` 47 | - `default-organization-id` 48 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: "Scaleway CLI" 2 | description: "Install and use Scaleway CLI" 3 | branding: 4 | icon: terminal 5 | color: purple 6 | inputs: 7 | repo-token: 8 | description: 'The GitHub token, used to check for latest CLI version' 9 | required: false 10 | default: ${{ github.token }} 11 | version: 12 | description: 'CLI version, will default to latest or exported version' 13 | required: false 14 | args: 15 | description: 'Arguments of a CLI command, if set, a cli command will be executed' 16 | required: false 17 | save-config: 18 | description: | 19 | Save scaleway profile to a config file in user home to use it in manual commands 20 | Will leave the config in CLI config folder after the step 21 | required: false 22 | default: 'false' 23 | export-config: 24 | description: | 25 | Export scaleway profile to environment variables that will be available in next steps 26 | required: false 27 | default: 'false' 28 | access-key: 29 | description: 'Scaleway access key' 30 | required: false 31 | secret-key: 32 | description: 'Scaleway secret key' 33 | required: false 34 | default-project-id: 35 | description: 'Scaleway default project ID' 36 | required: false 37 | default-organization-id: 38 | description: 'Scaleway default organization ID' 39 | required: false 40 | outputs: 41 | json: 42 | description: JSON output of CLI command if args has been specified 43 | runs: 44 | using: node20 45 | main: dist/index.js 46 | -------------------------------------------------------------------------------- /dist/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module" 3 | } 4 | -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- 1 | # action-scw examples 2 | 3 | ## [Simple](install.yml) 4 | 5 | Install CLI using action-scw and use the cli manually in next steps. 6 | 7 | ## [Args](args.yml) 8 | 9 | Install CLI using action-scw and use the same action to execute cli commands and set json output 10 | 11 | ## [Config](config.yml) 12 | 13 | Install CLI using action-scw and create your scaleway config file 14 | -------------------------------------------------------------------------------- /examples/args.yml: -------------------------------------------------------------------------------- 1 | name: Use CLI 2 | 3 | on: 4 | push: 5 | pull_request: 6 | merge_group: 7 | 8 | jobs: 9 | example_job: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Install CLI 13 | id: cli 14 | uses: scaleway/action-scw@v0 15 | with: 16 | version: v2.29.0 17 | args: instance server start ${{ env.SERVER_ID }} 18 | access_key: ${{ secrets.SCW_ACCESS_KEY }} 19 | secret_key: ${{ secrets.SCW_SECRET_KEY }} 20 | default_project_id: ${{ secrets.SCW_DEFAULT_PROJECT_ID }} 21 | default_organization_id: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }} 22 | - run: echo '${{ steps.cli.outputs.json }}' 23 | -------------------------------------------------------------------------------- /examples/config.yml: -------------------------------------------------------------------------------- 1 | name: Install cli and create config 2 | 3 | on: 4 | push: 5 | pull_request: 6 | merge_group: 7 | 8 | jobs: 9 | example_job: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Install CLI and create config file 13 | uses: scaleway/action-scw@v0 14 | with: 15 | version: v2.29.0 16 | access_key: ${{ secrets.SCW_ACCESS_KEY }} 17 | secret_key: ${{ secrets.SCW_SECRET_KEY }} 18 | default_project_id: ${{ secrets.SCW_DEFAULT_PROJECT_ID }} 19 | default_organization_id: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }} 20 | save_config: true 21 | 22 | - run: scw instance server list 23 | 24 | - uses: scaleway/action-scw@v0 25 | with: 26 | version: v2.29.0 27 | args: instance server list 28 | -------------------------------------------------------------------------------- /examples/install.yml: -------------------------------------------------------------------------------- 1 | name: Install and use CLI 2 | 3 | on: 4 | push: 5 | pull_request: 6 | merge_group: 7 | 8 | jobs: 9 | example_job: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Install CLI 13 | uses: scaleway/action-scw@v0 14 | with: 15 | version: v2.29.0 16 | - run: scw instance server start --wait ${{ env.SERVER_ID }} 17 | env: 18 | SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY }} 19 | SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} 20 | SCW_DEFAULT_PROJECT_ID: ${{ secrets.SCW_DEFAULT_PROJECT_ID }} 21 | SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_DEFAULT_ORGANIZATION_ID }} 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "action-scw", 3 | "version": "0.0.2", 4 | "description": "", 5 | "main": "lib/main.js", 6 | "type": "module", 7 | "engines": { 8 | "node": ">=20.0", 9 | "pnpm": ">=8.15.6" 10 | }, 11 | "packageManager": "pnpm@8.15.6", 12 | "scripts": { 13 | "build": "tsc", 14 | "test": "echo \"Error: no test specified\" && exit 1", 15 | "lint": "eslint src/**/*.ts", 16 | "prettier": "prettier -c src/**/*.ts", 17 | "prettier-fix": "prettier -w src/**/*.ts", 18 | "package": "ncc build -o dist", 19 | "all": "pnpm install && pnpm build && pnpm package" 20 | }, 21 | "repository": { 22 | "type": "git", 23 | "url": "git+https://github.com/scaleway/action-scw.git" 24 | }, 25 | "keywords": [ 26 | "Actions", 27 | "GitHub", 28 | "Actions", 29 | "Typescript", 30 | "Scaleway" 31 | ], 32 | "author": "Scaleway", 33 | "devDependencies": { 34 | "@scaleway/eslint-config-react": "^3.18.4", 35 | "@types/node": "^24.9.2", 36 | "@types/shell-quote": "^1.7.5", 37 | "@typescript-eslint/parser": "^7.18.0", 38 | "@vercel/ncc": "^0.38.1", 39 | "eslint": "^8.57.1", 40 | "eslint-plugin-deprecation": "^3.0.0", 41 | "eslint-plugin-tsdoc": "^0.4.0", 42 | "prettier": "^3.6.2", 43 | "typescript": "^5.9.3" 44 | }, 45 | "dependencies": { 46 | "@actions/core": "^1.10.1", 47 | "@actions/github": "^6.0.1", 48 | "@actions/http-client": "^2.2.1", 49 | "@actions/io": "^1.1.3", 50 | "@actions/tool-cache": "^2.0.1", 51 | "shell-quote": "^1.8.1" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@actions/core': 9 | specifier: ^1.10.1 10 | version: 1.10.1 11 | '@actions/github': 12 | specifier: ^6.0.1 13 | version: 6.0.1 14 | '@actions/http-client': 15 | specifier: ^2.2.1 16 | version: 2.2.1 17 | '@actions/io': 18 | specifier: ^1.1.3 19 | version: 1.1.3 20 | '@actions/tool-cache': 21 | specifier: ^2.0.1 22 | version: 2.0.1 23 | shell-quote: 24 | specifier: ^1.8.1 25 | version: 1.8.1 26 | 27 | devDependencies: 28 | '@scaleway/eslint-config-react': 29 | specifier: ^3.18.4 30 | version: 3.18.4(eslint@8.57.1)(typescript@5.9.3) 31 | '@types/node': 32 | specifier: ^24.9.2 33 | version: 24.9.2 34 | '@types/shell-quote': 35 | specifier: ^1.7.5 36 | version: 1.7.5 37 | '@typescript-eslint/parser': 38 | specifier: ^7.18.0 39 | version: 7.18.0(eslint@8.57.1)(typescript@5.9.3) 40 | '@vercel/ncc': 41 | specifier: ^0.38.1 42 | version: 0.38.1 43 | eslint: 44 | specifier: ^8.57.1 45 | version: 8.57.1 46 | eslint-plugin-deprecation: 47 | specifier: ^3.0.0 48 | version: 3.0.0(eslint@8.57.1)(typescript@5.9.3) 49 | eslint-plugin-tsdoc: 50 | specifier: ^0.4.0 51 | version: 0.4.0 52 | prettier: 53 | specifier: ^3.6.2 54 | version: 3.6.2 55 | typescript: 56 | specifier: ^5.9.3 57 | version: 5.9.3 58 | 59 | packages: 60 | 61 | /@aashutoshrathi/word-wrap@1.2.6: 62 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 63 | engines: {node: '>=0.10.0'} 64 | dev: true 65 | 66 | /@actions/core@1.10.1: 67 | resolution: {integrity: sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==} 68 | dependencies: 69 | '@actions/http-client': 2.2.1 70 | uuid: 8.3.2 71 | dev: false 72 | 73 | /@actions/exec@1.1.1: 74 | resolution: {integrity: sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==} 75 | dependencies: 76 | '@actions/io': 1.1.3 77 | dev: false 78 | 79 | /@actions/github@6.0.1: 80 | resolution: {integrity: sha512-xbZVcaqD4XnQAe35qSQqskb3SqIAfRyLBrHMd/8TuL7hJSz2QtbDwnNM8zWx4zO5l2fnGtseNE3MbEvD7BxVMw==} 81 | dependencies: 82 | '@actions/http-client': 2.2.1 83 | '@octokit/core': 5.2.1 84 | '@octokit/plugin-paginate-rest': 9.2.2(@octokit/core@5.2.1) 85 | '@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.2.1) 86 | '@octokit/request': 8.4.1 87 | '@octokit/request-error': 5.1.1 88 | undici: 5.29.0 89 | dev: false 90 | 91 | /@actions/http-client@2.2.1: 92 | resolution: {integrity: sha512-KhC/cZsq7f8I4LfZSJKgCvEwfkE8o1538VoBeoGzokVLLnbFDEAdFD3UhoMklxo2un9NJVBdANOresx7vTHlHw==} 93 | dependencies: 94 | tunnel: 0.0.6 95 | undici: 5.29.0 96 | dev: false 97 | 98 | /@actions/io@1.1.3: 99 | resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} 100 | dev: false 101 | 102 | /@actions/tool-cache@2.0.1: 103 | resolution: {integrity: sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA==} 104 | dependencies: 105 | '@actions/core': 1.10.1 106 | '@actions/exec': 1.1.1 107 | '@actions/http-client': 2.2.1 108 | '@actions/io': 1.1.3 109 | semver: 6.3.1 110 | uuid: 3.4.0 111 | dev: false 112 | 113 | /@babel/runtime@7.24.4: 114 | resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} 115 | engines: {node: '>=6.9.0'} 116 | dependencies: 117 | regenerator-runtime: 0.14.1 118 | dev: true 119 | 120 | /@emotion/eslint-plugin@11.11.0(eslint@8.57.1): 121 | resolution: {integrity: sha512-jCOYqU/0Sqm+g+6D7QuIlG99q8YAF0T7BP98zQF/MPZKfbcm46z5mizXn0YlhZ9AYZfNtZ1DeODXdncYxZzR4Q==} 122 | engines: {node: '>=6'} 123 | peerDependencies: 124 | eslint: 6 || 7 || 8 125 | dependencies: 126 | eslint: 8.57.1 127 | dev: true 128 | 129 | /@eslint-community/eslint-utils@4.4.0(eslint@8.57.1): 130 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 131 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 132 | peerDependencies: 133 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 134 | dependencies: 135 | eslint: 8.57.1 136 | eslint-visitor-keys: 3.4.3 137 | dev: true 138 | 139 | /@eslint-community/regexpp@4.10.0: 140 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 141 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 142 | dev: true 143 | 144 | /@eslint/eslintrc@2.1.4: 145 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 146 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 147 | dependencies: 148 | ajv: 6.12.6 149 | debug: 4.3.4 150 | espree: 9.6.1 151 | globals: 13.20.0 152 | ignore: 5.3.1 153 | import-fresh: 3.3.0 154 | js-yaml: 4.1.0 155 | minimatch: 3.1.2 156 | strip-json-comments: 3.1.1 157 | transitivePeerDependencies: 158 | - supports-color 159 | dev: true 160 | 161 | /@eslint/js@8.57.1: 162 | resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} 163 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 164 | dev: true 165 | 166 | /@fastify/busboy@2.1.1: 167 | resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 168 | engines: {node: '>=14'} 169 | dev: false 170 | 171 | /@humanwhocodes/config-array@0.13.0: 172 | resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} 173 | engines: {node: '>=10.10.0'} 174 | deprecated: Use @eslint/config-array instead 175 | dependencies: 176 | '@humanwhocodes/object-schema': 2.0.3 177 | debug: 4.3.4 178 | minimatch: 3.1.2 179 | transitivePeerDependencies: 180 | - supports-color 181 | dev: true 182 | 183 | /@humanwhocodes/module-importer@1.0.1: 184 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 185 | engines: {node: '>=12.22'} 186 | dev: true 187 | 188 | /@humanwhocodes/object-schema@2.0.3: 189 | resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} 190 | deprecated: Use @eslint/object-schema instead 191 | dev: true 192 | 193 | /@microsoft/tsdoc-config@0.17.1: 194 | resolution: {integrity: sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==} 195 | dependencies: 196 | '@microsoft/tsdoc': 0.15.1 197 | ajv: 8.12.0 198 | jju: 1.4.0 199 | resolve: 1.22.10 200 | dev: true 201 | 202 | /@microsoft/tsdoc@0.15.1: 203 | resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} 204 | dev: true 205 | 206 | /@nodelib/fs.scandir@2.1.5: 207 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 208 | engines: {node: '>= 8'} 209 | dependencies: 210 | '@nodelib/fs.stat': 2.0.5 211 | run-parallel: 1.2.0 212 | dev: true 213 | 214 | /@nodelib/fs.stat@2.0.5: 215 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 216 | engines: {node: '>= 8'} 217 | dev: true 218 | 219 | /@nodelib/fs.walk@1.2.8: 220 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 221 | engines: {node: '>= 8'} 222 | dependencies: 223 | '@nodelib/fs.scandir': 2.1.5 224 | fastq: 1.15.0 225 | dev: true 226 | 227 | /@octokit/auth-token@4.0.0: 228 | resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} 229 | engines: {node: '>= 18'} 230 | dev: false 231 | 232 | /@octokit/core@5.2.1: 233 | resolution: {integrity: sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==} 234 | engines: {node: '>= 18'} 235 | dependencies: 236 | '@octokit/auth-token': 4.0.0 237 | '@octokit/graphql': 7.1.1 238 | '@octokit/request': 8.4.1 239 | '@octokit/request-error': 5.1.1 240 | '@octokit/types': 13.10.0 241 | before-after-hook: 2.2.3 242 | universal-user-agent: 6.0.1 243 | dev: false 244 | 245 | /@octokit/endpoint@9.0.6: 246 | resolution: {integrity: sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==} 247 | engines: {node: '>= 18'} 248 | dependencies: 249 | '@octokit/types': 13.10.0 250 | universal-user-agent: 6.0.1 251 | dev: false 252 | 253 | /@octokit/graphql@7.1.1: 254 | resolution: {integrity: sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==} 255 | engines: {node: '>= 18'} 256 | dependencies: 257 | '@octokit/request': 8.4.1 258 | '@octokit/types': 13.10.0 259 | universal-user-agent: 6.0.1 260 | dev: false 261 | 262 | /@octokit/openapi-types@20.0.0: 263 | resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} 264 | dev: false 265 | 266 | /@octokit/openapi-types@24.2.0: 267 | resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} 268 | dev: false 269 | 270 | /@octokit/plugin-paginate-rest@9.2.2(@octokit/core@5.2.1): 271 | resolution: {integrity: sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==} 272 | engines: {node: '>= 18'} 273 | peerDependencies: 274 | '@octokit/core': '5' 275 | dependencies: 276 | '@octokit/core': 5.2.1 277 | '@octokit/types': 12.6.0 278 | dev: false 279 | 280 | /@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.2.1): 281 | resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==} 282 | engines: {node: '>= 18'} 283 | peerDependencies: 284 | '@octokit/core': '5' 285 | dependencies: 286 | '@octokit/core': 5.2.1 287 | '@octokit/types': 12.6.0 288 | dev: false 289 | 290 | /@octokit/request-error@5.1.1: 291 | resolution: {integrity: sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==} 292 | engines: {node: '>= 18'} 293 | dependencies: 294 | '@octokit/types': 13.10.0 295 | deprecation: 2.3.1 296 | once: 1.4.0 297 | dev: false 298 | 299 | /@octokit/request@8.4.1: 300 | resolution: {integrity: sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==} 301 | engines: {node: '>= 18'} 302 | dependencies: 303 | '@octokit/endpoint': 9.0.6 304 | '@octokit/request-error': 5.1.1 305 | '@octokit/types': 13.10.0 306 | universal-user-agent: 6.0.1 307 | dev: false 308 | 309 | /@octokit/types@12.6.0: 310 | resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} 311 | dependencies: 312 | '@octokit/openapi-types': 20.0.0 313 | dev: false 314 | 315 | /@octokit/types@13.10.0: 316 | resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} 317 | dependencies: 318 | '@octokit/openapi-types': 24.2.0 319 | dev: false 320 | 321 | /@scaleway/eslint-config-react@3.18.4(eslint@8.57.1)(typescript@5.9.3): 322 | resolution: {integrity: sha512-St9OFqTXHls8PCsCRHBnwSSr/ANv7Bs9O9pTo0jPxI+dQBxD8fqAgdjWeuY9uc2SEHtdBzf6D4WSopvQPtu46A==} 323 | peerDependencies: 324 | eslint: '>= 8.5' 325 | dependencies: 326 | '@emotion/eslint-plugin': 11.11.0(eslint@8.57.1) 327 | '@typescript-eslint/eslint-plugin': 7.11.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.9.3) 328 | '@typescript-eslint/parser': 7.11.0(eslint@8.57.1)(typescript@5.9.3) 329 | eslint: 8.57.1 330 | eslint-config-airbnb: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.2)(eslint@8.57.1) 331 | eslint-config-airbnb-typescript: 18.0.0(@typescript-eslint/eslint-plugin@7.11.0)(@typescript-eslint/parser@7.11.0)(eslint-plugin-import@2.29.1)(eslint@8.57.1) 332 | eslint-config-prettier: 9.1.0(eslint@8.57.1) 333 | eslint-plugin-deprecation: 2.0.0(eslint@8.57.1)(typescript@5.9.3) 334 | eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) 335 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0)(eslint@8.57.1) 336 | eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.1) 337 | eslint-plugin-react: 7.34.2(eslint@8.57.1) 338 | eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) 339 | transitivePeerDependencies: 340 | - eslint-import-resolver-typescript 341 | - eslint-import-resolver-webpack 342 | - supports-color 343 | - typescript 344 | dev: true 345 | 346 | /@types/json-schema@7.0.15: 347 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 348 | dev: true 349 | 350 | /@types/json5@0.0.29: 351 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 352 | dev: true 353 | 354 | /@types/node@24.9.2: 355 | resolution: {integrity: sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==} 356 | dependencies: 357 | undici-types: 7.16.0 358 | dev: true 359 | 360 | /@types/semver@7.5.8: 361 | resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} 362 | dev: true 363 | 364 | /@types/shell-quote@1.7.5: 365 | resolution: {integrity: sha512-+UE8GAGRPbJVQDdxi16dgadcBfQ+KG2vgZhV1+3A1XmHbmwcdwhCUwIdy+d3pAGrbvgRoVSjeI9vOWyq376Yzw==} 366 | dev: true 367 | 368 | /@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.9.3): 369 | resolution: {integrity: sha512-P+qEahbgeHW4JQ/87FuItjBj8O3MYv5gELDzr8QaQ7fsll1gSMTYb6j87MYyxwf3DtD7uGFB9ShwgmCJB5KmaQ==} 370 | engines: {node: ^18.18.0 || >=20.0.0} 371 | peerDependencies: 372 | '@typescript-eslint/parser': ^7.0.0 373 | eslint: ^8.56.0 374 | typescript: '*' 375 | peerDependenciesMeta: 376 | typescript: 377 | optional: true 378 | dependencies: 379 | '@eslint-community/regexpp': 4.10.0 380 | '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3) 381 | '@typescript-eslint/scope-manager': 7.11.0 382 | '@typescript-eslint/type-utils': 7.11.0(eslint@8.57.1)(typescript@5.9.3) 383 | '@typescript-eslint/utils': 7.11.0(eslint@8.57.1)(typescript@5.9.3) 384 | '@typescript-eslint/visitor-keys': 7.11.0 385 | eslint: 8.57.1 386 | graphemer: 1.4.0 387 | ignore: 5.3.1 388 | natural-compare: 1.4.0 389 | ts-api-utils: 1.3.0(typescript@5.9.3) 390 | typescript: 5.9.3 391 | transitivePeerDependencies: 392 | - supports-color 393 | dev: true 394 | 395 | /@typescript-eslint/parser@7.11.0(eslint@8.57.1)(typescript@5.9.3): 396 | resolution: {integrity: sha512-yimw99teuaXVWsBcPO1Ais02kwJ1jmNA1KxE7ng0aT7ndr1pT1wqj0OJnsYVGKKlc4QJai86l/025L6z8CljOg==} 397 | engines: {node: ^18.18.0 || >=20.0.0} 398 | peerDependencies: 399 | eslint: ^8.56.0 400 | typescript: '*' 401 | peerDependenciesMeta: 402 | typescript: 403 | optional: true 404 | dependencies: 405 | '@typescript-eslint/scope-manager': 7.11.0 406 | '@typescript-eslint/types': 7.11.0 407 | '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.9.3) 408 | '@typescript-eslint/visitor-keys': 7.11.0 409 | debug: 4.3.4 410 | eslint: 8.57.1 411 | typescript: 5.9.3 412 | transitivePeerDependencies: 413 | - supports-color 414 | dev: true 415 | 416 | /@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3): 417 | resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} 418 | engines: {node: ^18.18.0 || >=20.0.0} 419 | peerDependencies: 420 | eslint: ^8.56.0 421 | typescript: '*' 422 | peerDependenciesMeta: 423 | typescript: 424 | optional: true 425 | dependencies: 426 | '@typescript-eslint/scope-manager': 7.18.0 427 | '@typescript-eslint/types': 7.18.0 428 | '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) 429 | '@typescript-eslint/visitor-keys': 7.18.0 430 | debug: 4.3.4 431 | eslint: 8.57.1 432 | typescript: 5.9.3 433 | transitivePeerDependencies: 434 | - supports-color 435 | dev: true 436 | 437 | /@typescript-eslint/scope-manager@6.21.0: 438 | resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} 439 | engines: {node: ^16.0.0 || >=18.0.0} 440 | dependencies: 441 | '@typescript-eslint/types': 6.21.0 442 | '@typescript-eslint/visitor-keys': 6.21.0 443 | dev: true 444 | 445 | /@typescript-eslint/scope-manager@7.11.0: 446 | resolution: {integrity: sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==} 447 | engines: {node: ^18.18.0 || >=20.0.0} 448 | dependencies: 449 | '@typescript-eslint/types': 7.11.0 450 | '@typescript-eslint/visitor-keys': 7.11.0 451 | dev: true 452 | 453 | /@typescript-eslint/scope-manager@7.18.0: 454 | resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} 455 | engines: {node: ^18.18.0 || >=20.0.0} 456 | dependencies: 457 | '@typescript-eslint/types': 7.18.0 458 | '@typescript-eslint/visitor-keys': 7.18.0 459 | dev: true 460 | 461 | /@typescript-eslint/scope-manager@7.4.0: 462 | resolution: {integrity: sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==} 463 | engines: {node: ^18.18.0 || >=20.0.0} 464 | dependencies: 465 | '@typescript-eslint/types': 7.4.0 466 | '@typescript-eslint/visitor-keys': 7.4.0 467 | dev: true 468 | 469 | /@typescript-eslint/type-utils@7.11.0(eslint@8.57.1)(typescript@5.9.3): 470 | resolution: {integrity: sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==} 471 | engines: {node: ^18.18.0 || >=20.0.0} 472 | peerDependencies: 473 | eslint: ^8.56.0 474 | typescript: '*' 475 | peerDependenciesMeta: 476 | typescript: 477 | optional: true 478 | dependencies: 479 | '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.9.3) 480 | '@typescript-eslint/utils': 7.11.0(eslint@8.57.1)(typescript@5.9.3) 481 | debug: 4.3.4 482 | eslint: 8.57.1 483 | ts-api-utils: 1.3.0(typescript@5.9.3) 484 | typescript: 5.9.3 485 | transitivePeerDependencies: 486 | - supports-color 487 | dev: true 488 | 489 | /@typescript-eslint/types@6.21.0: 490 | resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} 491 | engines: {node: ^16.0.0 || >=18.0.0} 492 | dev: true 493 | 494 | /@typescript-eslint/types@7.11.0: 495 | resolution: {integrity: sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==} 496 | engines: {node: ^18.18.0 || >=20.0.0} 497 | dev: true 498 | 499 | /@typescript-eslint/types@7.18.0: 500 | resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} 501 | engines: {node: ^18.18.0 || >=20.0.0} 502 | dev: true 503 | 504 | /@typescript-eslint/types@7.4.0: 505 | resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==} 506 | engines: {node: ^18.18.0 || >=20.0.0} 507 | dev: true 508 | 509 | /@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.3): 510 | resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} 511 | engines: {node: ^16.0.0 || >=18.0.0} 512 | peerDependencies: 513 | typescript: '*' 514 | peerDependenciesMeta: 515 | typescript: 516 | optional: true 517 | dependencies: 518 | '@typescript-eslint/types': 6.21.0 519 | '@typescript-eslint/visitor-keys': 6.21.0 520 | debug: 4.3.4 521 | globby: 11.1.0 522 | is-glob: 4.0.3 523 | minimatch: 9.0.3 524 | semver: 7.6.0 525 | ts-api-utils: 1.3.0(typescript@5.9.3) 526 | typescript: 5.9.3 527 | transitivePeerDependencies: 528 | - supports-color 529 | dev: true 530 | 531 | /@typescript-eslint/typescript-estree@7.11.0(typescript@5.9.3): 532 | resolution: {integrity: sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==} 533 | engines: {node: ^18.18.0 || >=20.0.0} 534 | peerDependencies: 535 | typescript: '*' 536 | peerDependenciesMeta: 537 | typescript: 538 | optional: true 539 | dependencies: 540 | '@typescript-eslint/types': 7.11.0 541 | '@typescript-eslint/visitor-keys': 7.11.0 542 | debug: 4.3.4 543 | globby: 11.1.0 544 | is-glob: 4.0.3 545 | minimatch: 9.0.4 546 | semver: 7.6.0 547 | ts-api-utils: 1.3.0(typescript@5.9.3) 548 | typescript: 5.9.3 549 | transitivePeerDependencies: 550 | - supports-color 551 | dev: true 552 | 553 | /@typescript-eslint/typescript-estree@7.18.0(typescript@5.9.3): 554 | resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} 555 | engines: {node: ^18.18.0 || >=20.0.0} 556 | peerDependencies: 557 | typescript: '*' 558 | peerDependenciesMeta: 559 | typescript: 560 | optional: true 561 | dependencies: 562 | '@typescript-eslint/types': 7.18.0 563 | '@typescript-eslint/visitor-keys': 7.18.0 564 | debug: 4.3.4 565 | globby: 11.1.0 566 | is-glob: 4.0.3 567 | minimatch: 9.0.4 568 | semver: 7.6.0 569 | ts-api-utils: 1.3.0(typescript@5.9.3) 570 | typescript: 5.9.3 571 | transitivePeerDependencies: 572 | - supports-color 573 | dev: true 574 | 575 | /@typescript-eslint/typescript-estree@7.4.0(typescript@5.9.3): 576 | resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==} 577 | engines: {node: ^18.18.0 || >=20.0.0} 578 | peerDependencies: 579 | typescript: '*' 580 | peerDependenciesMeta: 581 | typescript: 582 | optional: true 583 | dependencies: 584 | '@typescript-eslint/types': 7.4.0 585 | '@typescript-eslint/visitor-keys': 7.4.0 586 | debug: 4.3.4 587 | globby: 11.1.0 588 | is-glob: 4.0.3 589 | minimatch: 9.0.3 590 | semver: 7.6.0 591 | ts-api-utils: 1.3.0(typescript@5.9.3) 592 | typescript: 5.9.3 593 | transitivePeerDependencies: 594 | - supports-color 595 | dev: true 596 | 597 | /@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3): 598 | resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} 599 | engines: {node: ^16.0.0 || >=18.0.0} 600 | peerDependencies: 601 | eslint: ^7.0.0 || ^8.0.0 602 | dependencies: 603 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) 604 | '@types/json-schema': 7.0.15 605 | '@types/semver': 7.5.8 606 | '@typescript-eslint/scope-manager': 6.21.0 607 | '@typescript-eslint/types': 6.21.0 608 | '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3) 609 | eslint: 8.57.1 610 | semver: 7.6.0 611 | transitivePeerDependencies: 612 | - supports-color 613 | - typescript 614 | dev: true 615 | 616 | /@typescript-eslint/utils@7.11.0(eslint@8.57.1)(typescript@5.9.3): 617 | resolution: {integrity: sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==} 618 | engines: {node: ^18.18.0 || >=20.0.0} 619 | peerDependencies: 620 | eslint: ^8.56.0 621 | dependencies: 622 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) 623 | '@typescript-eslint/scope-manager': 7.11.0 624 | '@typescript-eslint/types': 7.11.0 625 | '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.9.3) 626 | eslint: 8.57.1 627 | transitivePeerDependencies: 628 | - supports-color 629 | - typescript 630 | dev: true 631 | 632 | /@typescript-eslint/utils@7.4.0(eslint@8.57.1)(typescript@5.9.3): 633 | resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==} 634 | engines: {node: ^18.18.0 || >=20.0.0} 635 | peerDependencies: 636 | eslint: ^8.56.0 637 | dependencies: 638 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) 639 | '@types/json-schema': 7.0.15 640 | '@types/semver': 7.5.8 641 | '@typescript-eslint/scope-manager': 7.4.0 642 | '@typescript-eslint/types': 7.4.0 643 | '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.9.3) 644 | eslint: 8.57.1 645 | semver: 7.6.0 646 | transitivePeerDependencies: 647 | - supports-color 648 | - typescript 649 | dev: true 650 | 651 | /@typescript-eslint/visitor-keys@6.21.0: 652 | resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} 653 | engines: {node: ^16.0.0 || >=18.0.0} 654 | dependencies: 655 | '@typescript-eslint/types': 6.21.0 656 | eslint-visitor-keys: 3.4.3 657 | dev: true 658 | 659 | /@typescript-eslint/visitor-keys@7.11.0: 660 | resolution: {integrity: sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==} 661 | engines: {node: ^18.18.0 || >=20.0.0} 662 | dependencies: 663 | '@typescript-eslint/types': 7.11.0 664 | eslint-visitor-keys: 3.4.3 665 | dev: true 666 | 667 | /@typescript-eslint/visitor-keys@7.18.0: 668 | resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} 669 | engines: {node: ^18.18.0 || >=20.0.0} 670 | dependencies: 671 | '@typescript-eslint/types': 7.18.0 672 | eslint-visitor-keys: 3.4.3 673 | dev: true 674 | 675 | /@typescript-eslint/visitor-keys@7.4.0: 676 | resolution: {integrity: sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==} 677 | engines: {node: ^18.18.0 || >=20.0.0} 678 | dependencies: 679 | '@typescript-eslint/types': 7.4.0 680 | eslint-visitor-keys: 3.4.3 681 | dev: true 682 | 683 | /@ungap/structured-clone@1.2.0: 684 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 685 | dev: true 686 | 687 | /@vercel/ncc@0.38.1: 688 | resolution: {integrity: sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==} 689 | hasBin: true 690 | dev: true 691 | 692 | /acorn-jsx@5.3.2(acorn@8.11.3): 693 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 694 | peerDependencies: 695 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 696 | dependencies: 697 | acorn: 8.11.3 698 | dev: true 699 | 700 | /acorn@8.11.3: 701 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 702 | engines: {node: '>=0.4.0'} 703 | hasBin: true 704 | dev: true 705 | 706 | /ajv@6.12.6: 707 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 708 | dependencies: 709 | fast-deep-equal: 3.1.3 710 | fast-json-stable-stringify: 2.1.0 711 | json-schema-traverse: 0.4.1 712 | uri-js: 4.4.1 713 | dev: true 714 | 715 | /ajv@8.12.0: 716 | resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} 717 | dependencies: 718 | fast-deep-equal: 3.1.3 719 | json-schema-traverse: 1.0.0 720 | require-from-string: 2.0.2 721 | uri-js: 4.4.1 722 | dev: true 723 | 724 | /ansi-regex@5.0.1: 725 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 726 | engines: {node: '>=8'} 727 | dev: true 728 | 729 | /ansi-styles@4.3.0: 730 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 731 | engines: {node: '>=8'} 732 | dependencies: 733 | color-convert: 2.0.1 734 | dev: true 735 | 736 | /argparse@2.0.1: 737 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 738 | dev: true 739 | 740 | /aria-query@5.3.0: 741 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 742 | dependencies: 743 | dequal: 2.0.3 744 | dev: true 745 | 746 | /array-buffer-byte-length@1.0.1: 747 | resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} 748 | engines: {node: '>= 0.4'} 749 | dependencies: 750 | call-bind: 1.0.7 751 | is-array-buffer: 3.0.4 752 | dev: true 753 | 754 | /array-includes@3.1.8: 755 | resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} 756 | engines: {node: '>= 0.4'} 757 | dependencies: 758 | call-bind: 1.0.7 759 | define-properties: 1.2.1 760 | es-abstract: 1.23.3 761 | es-object-atoms: 1.0.0 762 | get-intrinsic: 1.2.4 763 | is-string: 1.0.7 764 | dev: true 765 | 766 | /array-union@2.1.0: 767 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 768 | engines: {node: '>=8'} 769 | dev: true 770 | 771 | /array.prototype.findlast@1.2.5: 772 | resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} 773 | engines: {node: '>= 0.4'} 774 | dependencies: 775 | call-bind: 1.0.7 776 | define-properties: 1.2.1 777 | es-abstract: 1.23.3 778 | es-errors: 1.3.0 779 | es-object-atoms: 1.0.0 780 | es-shim-unscopables: 1.0.2 781 | dev: true 782 | 783 | /array.prototype.findlastindex@1.2.5: 784 | resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} 785 | engines: {node: '>= 0.4'} 786 | dependencies: 787 | call-bind: 1.0.7 788 | define-properties: 1.2.1 789 | es-abstract: 1.23.3 790 | es-errors: 1.3.0 791 | es-object-atoms: 1.0.0 792 | es-shim-unscopables: 1.0.2 793 | dev: true 794 | 795 | /array.prototype.flat@1.3.2: 796 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 797 | engines: {node: '>= 0.4'} 798 | dependencies: 799 | call-bind: 1.0.7 800 | define-properties: 1.2.1 801 | es-abstract: 1.23.3 802 | es-shim-unscopables: 1.0.2 803 | dev: true 804 | 805 | /array.prototype.flatmap@1.3.2: 806 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 807 | engines: {node: '>= 0.4'} 808 | dependencies: 809 | call-bind: 1.0.7 810 | define-properties: 1.2.1 811 | es-abstract: 1.23.3 812 | es-shim-unscopables: 1.0.2 813 | dev: true 814 | 815 | /array.prototype.toreversed@1.1.2: 816 | resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} 817 | dependencies: 818 | call-bind: 1.0.7 819 | define-properties: 1.2.1 820 | es-abstract: 1.23.3 821 | es-shim-unscopables: 1.0.2 822 | dev: true 823 | 824 | /array.prototype.tosorted@1.1.3: 825 | resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} 826 | dependencies: 827 | call-bind: 1.0.7 828 | define-properties: 1.2.1 829 | es-abstract: 1.23.3 830 | es-errors: 1.3.0 831 | es-shim-unscopables: 1.0.2 832 | dev: true 833 | 834 | /arraybuffer.prototype.slice@1.0.3: 835 | resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} 836 | engines: {node: '>= 0.4'} 837 | dependencies: 838 | array-buffer-byte-length: 1.0.1 839 | call-bind: 1.0.7 840 | define-properties: 1.2.1 841 | es-abstract: 1.23.3 842 | es-errors: 1.3.0 843 | get-intrinsic: 1.2.4 844 | is-array-buffer: 3.0.4 845 | is-shared-array-buffer: 1.0.3 846 | dev: true 847 | 848 | /ast-types-flow@0.0.8: 849 | resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} 850 | dev: true 851 | 852 | /available-typed-arrays@1.0.7: 853 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 854 | engines: {node: '>= 0.4'} 855 | dependencies: 856 | possible-typed-array-names: 1.0.0 857 | dev: true 858 | 859 | /axe-core@4.7.0: 860 | resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} 861 | engines: {node: '>=4'} 862 | dev: true 863 | 864 | /axobject-query@3.2.1: 865 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 866 | dependencies: 867 | dequal: 2.0.3 868 | dev: true 869 | 870 | /balanced-match@1.0.2: 871 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 872 | dev: true 873 | 874 | /before-after-hook@2.2.3: 875 | resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} 876 | dev: false 877 | 878 | /brace-expansion@1.1.11: 879 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 880 | dependencies: 881 | balanced-match: 1.0.2 882 | concat-map: 0.0.1 883 | dev: true 884 | 885 | /brace-expansion@2.0.1: 886 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 887 | dependencies: 888 | balanced-match: 1.0.2 889 | dev: true 890 | 891 | /braces@3.0.3: 892 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 893 | engines: {node: '>=8'} 894 | dependencies: 895 | fill-range: 7.1.1 896 | dev: true 897 | 898 | /call-bind@1.0.7: 899 | resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} 900 | engines: {node: '>= 0.4'} 901 | dependencies: 902 | es-define-property: 1.0.0 903 | es-errors: 1.3.0 904 | function-bind: 1.1.2 905 | get-intrinsic: 1.2.4 906 | set-function-length: 1.2.2 907 | dev: true 908 | 909 | /callsites@3.1.0: 910 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 911 | engines: {node: '>=6'} 912 | dev: true 913 | 914 | /chalk@4.1.2: 915 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 916 | engines: {node: '>=10'} 917 | dependencies: 918 | ansi-styles: 4.3.0 919 | supports-color: 7.2.0 920 | dev: true 921 | 922 | /color-convert@2.0.1: 923 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 924 | engines: {node: '>=7.0.0'} 925 | dependencies: 926 | color-name: 1.1.4 927 | dev: true 928 | 929 | /color-name@1.1.4: 930 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 931 | dev: true 932 | 933 | /concat-map@0.0.1: 934 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 935 | dev: true 936 | 937 | /confusing-browser-globals@1.0.11: 938 | resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} 939 | dev: true 940 | 941 | /cross-spawn@7.0.3: 942 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 943 | engines: {node: '>= 8'} 944 | dependencies: 945 | path-key: 3.1.1 946 | shebang-command: 2.0.0 947 | which: 2.0.2 948 | dev: true 949 | 950 | /damerau-levenshtein@1.0.8: 951 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 952 | dev: true 953 | 954 | /data-view-buffer@1.0.1: 955 | resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} 956 | engines: {node: '>= 0.4'} 957 | dependencies: 958 | call-bind: 1.0.7 959 | es-errors: 1.3.0 960 | is-data-view: 1.0.1 961 | dev: true 962 | 963 | /data-view-byte-length@1.0.1: 964 | resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} 965 | engines: {node: '>= 0.4'} 966 | dependencies: 967 | call-bind: 1.0.7 968 | es-errors: 1.3.0 969 | is-data-view: 1.0.1 970 | dev: true 971 | 972 | /data-view-byte-offset@1.0.0: 973 | resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} 974 | engines: {node: '>= 0.4'} 975 | dependencies: 976 | call-bind: 1.0.7 977 | es-errors: 1.3.0 978 | is-data-view: 1.0.1 979 | dev: true 980 | 981 | /debug@3.2.7: 982 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 983 | peerDependencies: 984 | supports-color: '*' 985 | peerDependenciesMeta: 986 | supports-color: 987 | optional: true 988 | dependencies: 989 | ms: 2.1.2 990 | dev: true 991 | 992 | /debug@4.3.4: 993 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 994 | engines: {node: '>=6.0'} 995 | peerDependencies: 996 | supports-color: '*' 997 | peerDependenciesMeta: 998 | supports-color: 999 | optional: true 1000 | dependencies: 1001 | ms: 2.1.2 1002 | dev: true 1003 | 1004 | /deep-is@0.1.4: 1005 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1006 | dev: true 1007 | 1008 | /define-data-property@1.1.4: 1009 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 1010 | engines: {node: '>= 0.4'} 1011 | dependencies: 1012 | es-define-property: 1.0.0 1013 | es-errors: 1.3.0 1014 | gopd: 1.0.1 1015 | dev: true 1016 | 1017 | /define-properties@1.2.1: 1018 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 1019 | engines: {node: '>= 0.4'} 1020 | dependencies: 1021 | define-data-property: 1.1.4 1022 | has-property-descriptors: 1.0.2 1023 | object-keys: 1.1.1 1024 | dev: true 1025 | 1026 | /deprecation@2.3.1: 1027 | resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} 1028 | dev: false 1029 | 1030 | /dequal@2.0.3: 1031 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1032 | engines: {node: '>=6'} 1033 | dev: true 1034 | 1035 | /dir-glob@3.0.1: 1036 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1037 | engines: {node: '>=8'} 1038 | dependencies: 1039 | path-type: 4.0.0 1040 | dev: true 1041 | 1042 | /doctrine@2.1.0: 1043 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1044 | engines: {node: '>=0.10.0'} 1045 | dependencies: 1046 | esutils: 2.0.3 1047 | dev: true 1048 | 1049 | /doctrine@3.0.0: 1050 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1051 | engines: {node: '>=6.0.0'} 1052 | dependencies: 1053 | esutils: 2.0.3 1054 | dev: true 1055 | 1056 | /emoji-regex@9.2.2: 1057 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1058 | dev: true 1059 | 1060 | /es-abstract@1.23.3: 1061 | resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} 1062 | engines: {node: '>= 0.4'} 1063 | dependencies: 1064 | array-buffer-byte-length: 1.0.1 1065 | arraybuffer.prototype.slice: 1.0.3 1066 | available-typed-arrays: 1.0.7 1067 | call-bind: 1.0.7 1068 | data-view-buffer: 1.0.1 1069 | data-view-byte-length: 1.0.1 1070 | data-view-byte-offset: 1.0.0 1071 | es-define-property: 1.0.0 1072 | es-errors: 1.3.0 1073 | es-object-atoms: 1.0.0 1074 | es-set-tostringtag: 2.0.3 1075 | es-to-primitive: 1.2.1 1076 | function.prototype.name: 1.1.6 1077 | get-intrinsic: 1.2.4 1078 | get-symbol-description: 1.0.2 1079 | globalthis: 1.0.3 1080 | gopd: 1.0.1 1081 | has-property-descriptors: 1.0.2 1082 | has-proto: 1.0.3 1083 | has-symbols: 1.0.3 1084 | hasown: 2.0.2 1085 | internal-slot: 1.0.7 1086 | is-array-buffer: 3.0.4 1087 | is-callable: 1.2.7 1088 | is-data-view: 1.0.1 1089 | is-negative-zero: 2.0.3 1090 | is-regex: 1.1.4 1091 | is-shared-array-buffer: 1.0.3 1092 | is-string: 1.0.7 1093 | is-typed-array: 1.1.13 1094 | is-weakref: 1.0.2 1095 | object-inspect: 1.13.1 1096 | object-keys: 1.1.1 1097 | object.assign: 4.1.5 1098 | regexp.prototype.flags: 1.5.2 1099 | safe-array-concat: 1.1.2 1100 | safe-regex-test: 1.0.3 1101 | string.prototype.trim: 1.2.9 1102 | string.prototype.trimend: 1.0.8 1103 | string.prototype.trimstart: 1.0.8 1104 | typed-array-buffer: 1.0.2 1105 | typed-array-byte-length: 1.0.1 1106 | typed-array-byte-offset: 1.0.2 1107 | typed-array-length: 1.0.6 1108 | unbox-primitive: 1.0.2 1109 | which-typed-array: 1.1.15 1110 | dev: true 1111 | 1112 | /es-define-property@1.0.0: 1113 | resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} 1114 | engines: {node: '>= 0.4'} 1115 | dependencies: 1116 | get-intrinsic: 1.2.4 1117 | dev: true 1118 | 1119 | /es-errors@1.3.0: 1120 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 1121 | engines: {node: '>= 0.4'} 1122 | dev: true 1123 | 1124 | /es-iterator-helpers@1.0.18: 1125 | resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} 1126 | engines: {node: '>= 0.4'} 1127 | dependencies: 1128 | call-bind: 1.0.7 1129 | define-properties: 1.2.1 1130 | es-abstract: 1.23.3 1131 | es-errors: 1.3.0 1132 | es-set-tostringtag: 2.0.3 1133 | function-bind: 1.1.2 1134 | get-intrinsic: 1.2.4 1135 | globalthis: 1.0.3 1136 | has-property-descriptors: 1.0.2 1137 | has-proto: 1.0.3 1138 | has-symbols: 1.0.3 1139 | internal-slot: 1.0.7 1140 | iterator.prototype: 1.1.2 1141 | safe-array-concat: 1.1.2 1142 | dev: true 1143 | 1144 | /es-iterator-helpers@1.0.19: 1145 | resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} 1146 | engines: {node: '>= 0.4'} 1147 | dependencies: 1148 | call-bind: 1.0.7 1149 | define-properties: 1.2.1 1150 | es-abstract: 1.23.3 1151 | es-errors: 1.3.0 1152 | es-set-tostringtag: 2.0.3 1153 | function-bind: 1.1.2 1154 | get-intrinsic: 1.2.4 1155 | globalthis: 1.0.3 1156 | has-property-descriptors: 1.0.2 1157 | has-proto: 1.0.3 1158 | has-symbols: 1.0.3 1159 | internal-slot: 1.0.7 1160 | iterator.prototype: 1.1.2 1161 | safe-array-concat: 1.1.2 1162 | dev: true 1163 | 1164 | /es-object-atoms@1.0.0: 1165 | resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} 1166 | engines: {node: '>= 0.4'} 1167 | dependencies: 1168 | es-errors: 1.3.0 1169 | dev: true 1170 | 1171 | /es-set-tostringtag@2.0.3: 1172 | resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} 1173 | engines: {node: '>= 0.4'} 1174 | dependencies: 1175 | get-intrinsic: 1.2.4 1176 | has-tostringtag: 1.0.2 1177 | hasown: 2.0.2 1178 | dev: true 1179 | 1180 | /es-shim-unscopables@1.0.2: 1181 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 1182 | dependencies: 1183 | hasown: 2.0.2 1184 | dev: true 1185 | 1186 | /es-to-primitive@1.2.1: 1187 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1188 | engines: {node: '>= 0.4'} 1189 | dependencies: 1190 | is-callable: 1.2.7 1191 | is-date-object: 1.0.5 1192 | is-symbol: 1.0.4 1193 | dev: true 1194 | 1195 | /escape-string-regexp@1.0.5: 1196 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1197 | engines: {node: '>=0.8.0'} 1198 | dev: true 1199 | 1200 | /escape-string-regexp@4.0.0: 1201 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1202 | engines: {node: '>=10'} 1203 | dev: true 1204 | 1205 | /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.1): 1206 | resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} 1207 | engines: {node: ^10.12.0 || >=12.0.0} 1208 | peerDependencies: 1209 | eslint: ^7.32.0 || ^8.2.0 1210 | eslint-plugin-import: ^2.25.2 1211 | dependencies: 1212 | confusing-browser-globals: 1.0.11 1213 | eslint: 8.57.1 1214 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0)(eslint@8.57.1) 1215 | object.assign: 4.1.5 1216 | object.entries: 1.1.8 1217 | semver: 6.3.1 1218 | dev: true 1219 | 1220 | /eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.11.0)(@typescript-eslint/parser@7.11.0)(eslint-plugin-import@2.29.1)(eslint@8.57.1): 1221 | resolution: {integrity: sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==} 1222 | peerDependencies: 1223 | '@typescript-eslint/eslint-plugin': ^7.0.0 1224 | '@typescript-eslint/parser': ^7.0.0 1225 | eslint: ^8.56.0 1226 | dependencies: 1227 | '@typescript-eslint/eslint-plugin': 7.11.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.9.3) 1228 | '@typescript-eslint/parser': 7.11.0(eslint@8.57.1)(typescript@5.9.3) 1229 | eslint: 8.57.1 1230 | eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.1) 1231 | transitivePeerDependencies: 1232 | - eslint-plugin-import 1233 | dev: true 1234 | 1235 | /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.2)(eslint@8.57.1): 1236 | resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} 1237 | engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} 1238 | peerDependencies: 1239 | eslint: ^7.32.0 || ^8.2.0 1240 | eslint-plugin-import: ^2.25.3 1241 | eslint-plugin-jsx-a11y: ^6.5.1 1242 | eslint-plugin-react: ^7.28.0 1243 | eslint-plugin-react-hooks: ^4.3.0 1244 | dependencies: 1245 | eslint: 8.57.1 1246 | eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.1) 1247 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0)(eslint@8.57.1) 1248 | eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.1) 1249 | eslint-plugin-react: 7.34.2(eslint@8.57.1) 1250 | eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) 1251 | object.assign: 4.1.5 1252 | object.entries: 1.1.8 1253 | dev: true 1254 | 1255 | /eslint-config-prettier@9.1.0(eslint@8.57.1): 1256 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 1257 | hasBin: true 1258 | peerDependencies: 1259 | eslint: '>=7.0.0' 1260 | dependencies: 1261 | eslint: 8.57.1 1262 | dev: true 1263 | 1264 | /eslint-import-resolver-node@0.3.9: 1265 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1266 | dependencies: 1267 | debug: 3.2.7 1268 | is-core-module: 2.16.1 1269 | resolve: 1.22.10 1270 | transitivePeerDependencies: 1271 | - supports-color 1272 | dev: true 1273 | 1274 | /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): 1275 | resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} 1276 | engines: {node: '>=4'} 1277 | peerDependencies: 1278 | '@typescript-eslint/parser': '*' 1279 | eslint: '*' 1280 | eslint-import-resolver-node: '*' 1281 | eslint-import-resolver-typescript: '*' 1282 | eslint-import-resolver-webpack: '*' 1283 | peerDependenciesMeta: 1284 | '@typescript-eslint/parser': 1285 | optional: true 1286 | eslint: 1287 | optional: true 1288 | eslint-import-resolver-node: 1289 | optional: true 1290 | eslint-import-resolver-typescript: 1291 | optional: true 1292 | eslint-import-resolver-webpack: 1293 | optional: true 1294 | dependencies: 1295 | '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3) 1296 | debug: 3.2.7 1297 | eslint: 8.57.1 1298 | eslint-import-resolver-node: 0.3.9 1299 | transitivePeerDependencies: 1300 | - supports-color 1301 | dev: true 1302 | 1303 | /eslint-plugin-deprecation@2.0.0(eslint@8.57.1)(typescript@5.9.3): 1304 | resolution: {integrity: sha512-OAm9Ohzbj11/ZFyICyR5N6LbOIvQMp7ZU2zI7Ej0jIc8kiGUERXPNMfw2QqqHD1ZHtjMub3yPZILovYEYucgoQ==} 1305 | peerDependencies: 1306 | eslint: ^7.0.0 || ^8.0.0 1307 | typescript: ^4.2.4 || ^5.0.0 1308 | dependencies: 1309 | '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3) 1310 | eslint: 8.57.1 1311 | tslib: 2.5.0 1312 | tsutils: 3.21.0(typescript@5.9.3) 1313 | typescript: 5.9.3 1314 | transitivePeerDependencies: 1315 | - supports-color 1316 | dev: true 1317 | 1318 | /eslint-plugin-deprecation@3.0.0(eslint@8.57.1)(typescript@5.9.3): 1319 | resolution: {integrity: sha512-JuVLdNg/uf0Adjg2tpTyYoYaMbwQNn/c78P1HcccokvhtRphgnRjZDKmhlxbxYptppex03zO76f97DD/yQHv7A==} 1320 | peerDependencies: 1321 | eslint: ^8.0.0 1322 | typescript: ^4.2.4 || ^5.0.0 1323 | dependencies: 1324 | '@typescript-eslint/utils': 7.4.0(eslint@8.57.1)(typescript@5.9.3) 1325 | eslint: 8.57.1 1326 | ts-api-utils: 1.3.0(typescript@5.9.3) 1327 | tslib: 2.5.0 1328 | typescript: 5.9.3 1329 | transitivePeerDependencies: 1330 | - supports-color 1331 | dev: true 1332 | 1333 | /eslint-plugin-eslint-comments@3.2.0(eslint@8.57.1): 1334 | resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} 1335 | engines: {node: '>=6.5.0'} 1336 | peerDependencies: 1337 | eslint: '>=4.19.1' 1338 | dependencies: 1339 | escape-string-regexp: 1.0.5 1340 | eslint: 8.57.1 1341 | ignore: 5.2.4 1342 | dev: true 1343 | 1344 | /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0)(eslint@8.57.1): 1345 | resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} 1346 | engines: {node: '>=4'} 1347 | peerDependencies: 1348 | '@typescript-eslint/parser': '*' 1349 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1350 | peerDependenciesMeta: 1351 | '@typescript-eslint/parser': 1352 | optional: true 1353 | dependencies: 1354 | '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3) 1355 | array-includes: 3.1.8 1356 | array.prototype.findlastindex: 1.2.5 1357 | array.prototype.flat: 1.3.2 1358 | array.prototype.flatmap: 1.3.2 1359 | debug: 3.2.7 1360 | doctrine: 2.1.0 1361 | eslint: 8.57.1 1362 | eslint-import-resolver-node: 0.3.9 1363 | eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) 1364 | hasown: 2.0.2 1365 | is-core-module: 2.13.1 1366 | is-glob: 4.0.3 1367 | minimatch: 3.1.2 1368 | object.fromentries: 2.0.8 1369 | object.groupby: 1.0.3 1370 | object.values: 1.2.0 1371 | semver: 6.3.1 1372 | tsconfig-paths: 3.15.0 1373 | transitivePeerDependencies: 1374 | - eslint-import-resolver-typescript 1375 | - eslint-import-resolver-webpack 1376 | - supports-color 1377 | dev: true 1378 | 1379 | /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.1): 1380 | resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} 1381 | engines: {node: '>=4.0'} 1382 | peerDependencies: 1383 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1384 | dependencies: 1385 | '@babel/runtime': 7.24.4 1386 | aria-query: 5.3.0 1387 | array-includes: 3.1.8 1388 | array.prototype.flatmap: 1.3.2 1389 | ast-types-flow: 0.0.8 1390 | axe-core: 4.7.0 1391 | axobject-query: 3.2.1 1392 | damerau-levenshtein: 1.0.8 1393 | emoji-regex: 9.2.2 1394 | es-iterator-helpers: 1.0.18 1395 | eslint: 8.57.1 1396 | hasown: 2.0.2 1397 | jsx-ast-utils: 3.3.5 1398 | language-tags: 1.0.9 1399 | minimatch: 3.1.2 1400 | object.entries: 1.1.8 1401 | object.fromentries: 2.0.8 1402 | dev: true 1403 | 1404 | /eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): 1405 | resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} 1406 | engines: {node: '>=10'} 1407 | peerDependencies: 1408 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1409 | dependencies: 1410 | eslint: 8.57.1 1411 | dev: true 1412 | 1413 | /eslint-plugin-react@7.34.2(eslint@8.57.1): 1414 | resolution: {integrity: sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw==} 1415 | engines: {node: '>=4'} 1416 | peerDependencies: 1417 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1418 | dependencies: 1419 | array-includes: 3.1.8 1420 | array.prototype.findlast: 1.2.5 1421 | array.prototype.flatmap: 1.3.2 1422 | array.prototype.toreversed: 1.1.2 1423 | array.prototype.tosorted: 1.1.3 1424 | doctrine: 2.1.0 1425 | es-iterator-helpers: 1.0.19 1426 | eslint: 8.57.1 1427 | estraverse: 5.3.0 1428 | jsx-ast-utils: 3.3.5 1429 | minimatch: 3.1.2 1430 | object.entries: 1.1.8 1431 | object.fromentries: 2.0.8 1432 | object.hasown: 1.1.4 1433 | object.values: 1.2.0 1434 | prop-types: 15.8.1 1435 | resolve: 2.0.0-next.5 1436 | semver: 6.3.1 1437 | string.prototype.matchall: 4.0.11 1438 | dev: true 1439 | 1440 | /eslint-plugin-tsdoc@0.4.0: 1441 | resolution: {integrity: sha512-MT/8b4aKLdDClnS8mP3R/JNjg29i0Oyqd/0ym6NnQf+gfKbJJ4ZcSh2Bs1H0YiUMTBwww5JwXGTWot/RwyJ7aQ==} 1442 | dependencies: 1443 | '@microsoft/tsdoc': 0.15.1 1444 | '@microsoft/tsdoc-config': 0.17.1 1445 | dev: true 1446 | 1447 | /eslint-scope@7.2.2: 1448 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1449 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1450 | dependencies: 1451 | esrecurse: 4.3.0 1452 | estraverse: 5.3.0 1453 | dev: true 1454 | 1455 | /eslint-visitor-keys@3.4.3: 1456 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1457 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1458 | dev: true 1459 | 1460 | /eslint@8.57.1: 1461 | resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} 1462 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1463 | hasBin: true 1464 | dependencies: 1465 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) 1466 | '@eslint-community/regexpp': 4.10.0 1467 | '@eslint/eslintrc': 2.1.4 1468 | '@eslint/js': 8.57.1 1469 | '@humanwhocodes/config-array': 0.13.0 1470 | '@humanwhocodes/module-importer': 1.0.1 1471 | '@nodelib/fs.walk': 1.2.8 1472 | '@ungap/structured-clone': 1.2.0 1473 | ajv: 6.12.6 1474 | chalk: 4.1.2 1475 | cross-spawn: 7.0.3 1476 | debug: 4.3.4 1477 | doctrine: 3.0.0 1478 | escape-string-regexp: 4.0.0 1479 | eslint-scope: 7.2.2 1480 | eslint-visitor-keys: 3.4.3 1481 | espree: 9.6.1 1482 | esquery: 1.5.0 1483 | esutils: 2.0.3 1484 | fast-deep-equal: 3.1.3 1485 | file-entry-cache: 6.0.1 1486 | find-up: 5.0.0 1487 | glob-parent: 6.0.2 1488 | globals: 13.20.0 1489 | graphemer: 1.4.0 1490 | ignore: 5.3.1 1491 | imurmurhash: 0.1.4 1492 | is-glob: 4.0.3 1493 | is-path-inside: 3.0.3 1494 | js-yaml: 4.1.0 1495 | json-stable-stringify-without-jsonify: 1.0.1 1496 | levn: 0.4.1 1497 | lodash.merge: 4.6.2 1498 | minimatch: 3.1.2 1499 | natural-compare: 1.4.0 1500 | optionator: 0.9.3 1501 | strip-ansi: 6.0.1 1502 | text-table: 0.2.0 1503 | transitivePeerDependencies: 1504 | - supports-color 1505 | dev: true 1506 | 1507 | /espree@9.6.1: 1508 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1509 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1510 | dependencies: 1511 | acorn: 8.11.3 1512 | acorn-jsx: 5.3.2(acorn@8.11.3) 1513 | eslint-visitor-keys: 3.4.3 1514 | dev: true 1515 | 1516 | /esquery@1.5.0: 1517 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1518 | engines: {node: '>=0.10'} 1519 | dependencies: 1520 | estraverse: 5.3.0 1521 | dev: true 1522 | 1523 | /esrecurse@4.3.0: 1524 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1525 | engines: {node: '>=4.0'} 1526 | dependencies: 1527 | estraverse: 5.3.0 1528 | dev: true 1529 | 1530 | /estraverse@5.3.0: 1531 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1532 | engines: {node: '>=4.0'} 1533 | dev: true 1534 | 1535 | /esutils@2.0.3: 1536 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1537 | engines: {node: '>=0.10.0'} 1538 | dev: true 1539 | 1540 | /fast-deep-equal@3.1.3: 1541 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1542 | dev: true 1543 | 1544 | /fast-glob@3.2.12: 1545 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1546 | engines: {node: '>=8.6.0'} 1547 | dependencies: 1548 | '@nodelib/fs.stat': 2.0.5 1549 | '@nodelib/fs.walk': 1.2.8 1550 | glob-parent: 5.1.2 1551 | merge2: 1.4.1 1552 | micromatch: 4.0.5 1553 | dev: true 1554 | 1555 | /fast-json-stable-stringify@2.1.0: 1556 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1557 | dev: true 1558 | 1559 | /fast-levenshtein@2.0.6: 1560 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1561 | dev: true 1562 | 1563 | /fastq@1.15.0: 1564 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1565 | dependencies: 1566 | reusify: 1.0.4 1567 | dev: true 1568 | 1569 | /file-entry-cache@6.0.1: 1570 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1571 | engines: {node: ^10.12.0 || >=12.0.0} 1572 | dependencies: 1573 | flat-cache: 3.0.4 1574 | dev: true 1575 | 1576 | /fill-range@7.1.1: 1577 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1578 | engines: {node: '>=8'} 1579 | dependencies: 1580 | to-regex-range: 5.0.1 1581 | dev: true 1582 | 1583 | /find-up@5.0.0: 1584 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1585 | engines: {node: '>=10'} 1586 | dependencies: 1587 | locate-path: 6.0.0 1588 | path-exists: 4.0.0 1589 | dev: true 1590 | 1591 | /flat-cache@3.0.4: 1592 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1593 | engines: {node: ^10.12.0 || >=12.0.0} 1594 | dependencies: 1595 | flatted: 3.2.7 1596 | rimraf: 3.0.2 1597 | dev: true 1598 | 1599 | /flatted@3.2.7: 1600 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1601 | dev: true 1602 | 1603 | /for-each@0.3.3: 1604 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1605 | dependencies: 1606 | is-callable: 1.2.7 1607 | dev: true 1608 | 1609 | /fs.realpath@1.0.0: 1610 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1611 | dev: true 1612 | 1613 | /function-bind@1.1.2: 1614 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1615 | dev: true 1616 | 1617 | /function.prototype.name@1.1.6: 1618 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 1619 | engines: {node: '>= 0.4'} 1620 | dependencies: 1621 | call-bind: 1.0.7 1622 | define-properties: 1.2.1 1623 | es-abstract: 1.23.3 1624 | functions-have-names: 1.2.3 1625 | dev: true 1626 | 1627 | /functions-have-names@1.2.3: 1628 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1629 | dev: true 1630 | 1631 | /get-intrinsic@1.2.4: 1632 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} 1633 | engines: {node: '>= 0.4'} 1634 | dependencies: 1635 | es-errors: 1.3.0 1636 | function-bind: 1.1.2 1637 | has-proto: 1.0.3 1638 | has-symbols: 1.0.3 1639 | hasown: 2.0.2 1640 | dev: true 1641 | 1642 | /get-symbol-description@1.0.2: 1643 | resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} 1644 | engines: {node: '>= 0.4'} 1645 | dependencies: 1646 | call-bind: 1.0.7 1647 | es-errors: 1.3.0 1648 | get-intrinsic: 1.2.4 1649 | dev: true 1650 | 1651 | /glob-parent@5.1.2: 1652 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1653 | engines: {node: '>= 6'} 1654 | dependencies: 1655 | is-glob: 4.0.3 1656 | dev: true 1657 | 1658 | /glob-parent@6.0.2: 1659 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1660 | engines: {node: '>=10.13.0'} 1661 | dependencies: 1662 | is-glob: 4.0.3 1663 | dev: true 1664 | 1665 | /glob@7.2.3: 1666 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1667 | deprecated: Glob versions prior to v9 are no longer supported 1668 | dependencies: 1669 | fs.realpath: 1.0.0 1670 | inflight: 1.0.6 1671 | inherits: 2.0.4 1672 | minimatch: 3.1.2 1673 | once: 1.4.0 1674 | path-is-absolute: 1.0.1 1675 | dev: true 1676 | 1677 | /globals@13.20.0: 1678 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1679 | engines: {node: '>=8'} 1680 | dependencies: 1681 | type-fest: 0.20.2 1682 | dev: true 1683 | 1684 | /globalthis@1.0.3: 1685 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1686 | engines: {node: '>= 0.4'} 1687 | dependencies: 1688 | define-properties: 1.2.1 1689 | dev: true 1690 | 1691 | /globby@11.1.0: 1692 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1693 | engines: {node: '>=10'} 1694 | dependencies: 1695 | array-union: 2.1.0 1696 | dir-glob: 3.0.1 1697 | fast-glob: 3.2.12 1698 | ignore: 5.3.1 1699 | merge2: 1.4.1 1700 | slash: 3.0.0 1701 | dev: true 1702 | 1703 | /gopd@1.0.1: 1704 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1705 | dependencies: 1706 | get-intrinsic: 1.2.4 1707 | dev: true 1708 | 1709 | /graphemer@1.4.0: 1710 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1711 | dev: true 1712 | 1713 | /has-bigints@1.0.2: 1714 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1715 | dev: true 1716 | 1717 | /has-flag@4.0.0: 1718 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1719 | engines: {node: '>=8'} 1720 | dev: true 1721 | 1722 | /has-property-descriptors@1.0.2: 1723 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 1724 | dependencies: 1725 | es-define-property: 1.0.0 1726 | dev: true 1727 | 1728 | /has-proto@1.0.3: 1729 | resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} 1730 | engines: {node: '>= 0.4'} 1731 | dev: true 1732 | 1733 | /has-symbols@1.0.3: 1734 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1735 | engines: {node: '>= 0.4'} 1736 | dev: true 1737 | 1738 | /has-tostringtag@1.0.2: 1739 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 1740 | engines: {node: '>= 0.4'} 1741 | dependencies: 1742 | has-symbols: 1.0.3 1743 | dev: true 1744 | 1745 | /hasown@2.0.2: 1746 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1747 | engines: {node: '>= 0.4'} 1748 | dependencies: 1749 | function-bind: 1.1.2 1750 | dev: true 1751 | 1752 | /ignore@5.2.4: 1753 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1754 | engines: {node: '>= 4'} 1755 | dev: true 1756 | 1757 | /ignore@5.3.1: 1758 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 1759 | engines: {node: '>= 4'} 1760 | dev: true 1761 | 1762 | /import-fresh@3.3.0: 1763 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1764 | engines: {node: '>=6'} 1765 | dependencies: 1766 | parent-module: 1.0.1 1767 | resolve-from: 4.0.0 1768 | dev: true 1769 | 1770 | /imurmurhash@0.1.4: 1771 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1772 | engines: {node: '>=0.8.19'} 1773 | dev: true 1774 | 1775 | /inflight@1.0.6: 1776 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1777 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 1778 | dependencies: 1779 | once: 1.4.0 1780 | wrappy: 1.0.2 1781 | dev: true 1782 | 1783 | /inherits@2.0.4: 1784 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1785 | dev: true 1786 | 1787 | /internal-slot@1.0.7: 1788 | resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} 1789 | engines: {node: '>= 0.4'} 1790 | dependencies: 1791 | es-errors: 1.3.0 1792 | hasown: 2.0.2 1793 | side-channel: 1.0.6 1794 | dev: true 1795 | 1796 | /is-array-buffer@3.0.4: 1797 | resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} 1798 | engines: {node: '>= 0.4'} 1799 | dependencies: 1800 | call-bind: 1.0.7 1801 | get-intrinsic: 1.2.4 1802 | dev: true 1803 | 1804 | /is-async-function@2.0.0: 1805 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} 1806 | engines: {node: '>= 0.4'} 1807 | dependencies: 1808 | has-tostringtag: 1.0.2 1809 | dev: true 1810 | 1811 | /is-bigint@1.0.4: 1812 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1813 | dependencies: 1814 | has-bigints: 1.0.2 1815 | dev: true 1816 | 1817 | /is-boolean-object@1.1.2: 1818 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1819 | engines: {node: '>= 0.4'} 1820 | dependencies: 1821 | call-bind: 1.0.7 1822 | has-tostringtag: 1.0.2 1823 | dev: true 1824 | 1825 | /is-callable@1.2.7: 1826 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1827 | engines: {node: '>= 0.4'} 1828 | dev: true 1829 | 1830 | /is-core-module@2.13.1: 1831 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 1832 | dependencies: 1833 | hasown: 2.0.2 1834 | dev: true 1835 | 1836 | /is-core-module@2.16.1: 1837 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1838 | engines: {node: '>= 0.4'} 1839 | dependencies: 1840 | hasown: 2.0.2 1841 | dev: true 1842 | 1843 | /is-data-view@1.0.1: 1844 | resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} 1845 | engines: {node: '>= 0.4'} 1846 | dependencies: 1847 | is-typed-array: 1.1.13 1848 | dev: true 1849 | 1850 | /is-date-object@1.0.5: 1851 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1852 | engines: {node: '>= 0.4'} 1853 | dependencies: 1854 | has-tostringtag: 1.0.2 1855 | dev: true 1856 | 1857 | /is-extglob@2.1.1: 1858 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1859 | engines: {node: '>=0.10.0'} 1860 | dev: true 1861 | 1862 | /is-finalizationregistry@1.0.2: 1863 | resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} 1864 | dependencies: 1865 | call-bind: 1.0.7 1866 | dev: true 1867 | 1868 | /is-generator-function@1.0.10: 1869 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 1870 | engines: {node: '>= 0.4'} 1871 | dependencies: 1872 | has-tostringtag: 1.0.2 1873 | dev: true 1874 | 1875 | /is-glob@4.0.3: 1876 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1877 | engines: {node: '>=0.10.0'} 1878 | dependencies: 1879 | is-extglob: 2.1.1 1880 | dev: true 1881 | 1882 | /is-map@2.0.2: 1883 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 1884 | dev: true 1885 | 1886 | /is-negative-zero@2.0.3: 1887 | resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} 1888 | engines: {node: '>= 0.4'} 1889 | dev: true 1890 | 1891 | /is-number-object@1.0.7: 1892 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1893 | engines: {node: '>= 0.4'} 1894 | dependencies: 1895 | has-tostringtag: 1.0.2 1896 | dev: true 1897 | 1898 | /is-number@7.0.0: 1899 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1900 | engines: {node: '>=0.12.0'} 1901 | dev: true 1902 | 1903 | /is-path-inside@3.0.3: 1904 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1905 | engines: {node: '>=8'} 1906 | dev: true 1907 | 1908 | /is-regex@1.1.4: 1909 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1910 | engines: {node: '>= 0.4'} 1911 | dependencies: 1912 | call-bind: 1.0.7 1913 | has-tostringtag: 1.0.2 1914 | dev: true 1915 | 1916 | /is-set@2.0.2: 1917 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 1918 | dev: true 1919 | 1920 | /is-shared-array-buffer@1.0.3: 1921 | resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} 1922 | engines: {node: '>= 0.4'} 1923 | dependencies: 1924 | call-bind: 1.0.7 1925 | dev: true 1926 | 1927 | /is-string@1.0.7: 1928 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1929 | engines: {node: '>= 0.4'} 1930 | dependencies: 1931 | has-tostringtag: 1.0.2 1932 | dev: true 1933 | 1934 | /is-symbol@1.0.4: 1935 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1936 | engines: {node: '>= 0.4'} 1937 | dependencies: 1938 | has-symbols: 1.0.3 1939 | dev: true 1940 | 1941 | /is-typed-array@1.1.13: 1942 | resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} 1943 | engines: {node: '>= 0.4'} 1944 | dependencies: 1945 | which-typed-array: 1.1.15 1946 | dev: true 1947 | 1948 | /is-weakmap@2.0.1: 1949 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 1950 | dev: true 1951 | 1952 | /is-weakref@1.0.2: 1953 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1954 | dependencies: 1955 | call-bind: 1.0.7 1956 | dev: true 1957 | 1958 | /is-weakset@2.0.2: 1959 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 1960 | dependencies: 1961 | call-bind: 1.0.7 1962 | get-intrinsic: 1.2.4 1963 | dev: true 1964 | 1965 | /isarray@2.0.5: 1966 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1967 | dev: true 1968 | 1969 | /isexe@2.0.0: 1970 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1971 | dev: true 1972 | 1973 | /iterator.prototype@1.1.2: 1974 | resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} 1975 | dependencies: 1976 | define-properties: 1.2.1 1977 | get-intrinsic: 1.2.4 1978 | has-symbols: 1.0.3 1979 | reflect.getprototypeof: 1.0.6 1980 | set-function-name: 2.0.2 1981 | dev: true 1982 | 1983 | /jju@1.4.0: 1984 | resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} 1985 | dev: true 1986 | 1987 | /js-tokens@4.0.0: 1988 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1989 | dev: true 1990 | 1991 | /js-yaml@4.1.0: 1992 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1993 | hasBin: true 1994 | dependencies: 1995 | argparse: 2.0.1 1996 | dev: true 1997 | 1998 | /json-schema-traverse@0.4.1: 1999 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2000 | dev: true 2001 | 2002 | /json-schema-traverse@1.0.0: 2003 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 2004 | dev: true 2005 | 2006 | /json-stable-stringify-without-jsonify@1.0.1: 2007 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2008 | dev: true 2009 | 2010 | /json5@1.0.2: 2011 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 2012 | hasBin: true 2013 | dependencies: 2014 | minimist: 1.2.8 2015 | dev: true 2016 | 2017 | /jsx-ast-utils@3.3.5: 2018 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} 2019 | engines: {node: '>=4.0'} 2020 | dependencies: 2021 | array-includes: 3.1.8 2022 | array.prototype.flat: 1.3.2 2023 | object.assign: 4.1.5 2024 | object.values: 1.2.0 2025 | dev: true 2026 | 2027 | /language-subtag-registry@0.3.22: 2028 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 2029 | dev: true 2030 | 2031 | /language-tags@1.0.9: 2032 | resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} 2033 | engines: {node: '>=0.10'} 2034 | dependencies: 2035 | language-subtag-registry: 0.3.22 2036 | dev: true 2037 | 2038 | /levn@0.4.1: 2039 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2040 | engines: {node: '>= 0.8.0'} 2041 | dependencies: 2042 | prelude-ls: 1.2.1 2043 | type-check: 0.4.0 2044 | dev: true 2045 | 2046 | /locate-path@6.0.0: 2047 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2048 | engines: {node: '>=10'} 2049 | dependencies: 2050 | p-locate: 5.0.0 2051 | dev: true 2052 | 2053 | /lodash.merge@4.6.2: 2054 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2055 | dev: true 2056 | 2057 | /loose-envify@1.4.0: 2058 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2059 | hasBin: true 2060 | dependencies: 2061 | js-tokens: 4.0.0 2062 | dev: true 2063 | 2064 | /lru-cache@6.0.0: 2065 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2066 | engines: {node: '>=10'} 2067 | dependencies: 2068 | yallist: 4.0.0 2069 | dev: true 2070 | 2071 | /merge2@1.4.1: 2072 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2073 | engines: {node: '>= 8'} 2074 | dev: true 2075 | 2076 | /micromatch@4.0.5: 2077 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2078 | engines: {node: '>=8.6'} 2079 | dependencies: 2080 | braces: 3.0.3 2081 | picomatch: 2.3.1 2082 | dev: true 2083 | 2084 | /minimatch@3.1.2: 2085 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2086 | dependencies: 2087 | brace-expansion: 1.1.11 2088 | dev: true 2089 | 2090 | /minimatch@9.0.3: 2091 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 2092 | engines: {node: '>=16 || 14 >=14.17'} 2093 | dependencies: 2094 | brace-expansion: 2.0.1 2095 | dev: true 2096 | 2097 | /minimatch@9.0.4: 2098 | resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} 2099 | engines: {node: '>=16 || 14 >=14.17'} 2100 | dependencies: 2101 | brace-expansion: 2.0.1 2102 | dev: true 2103 | 2104 | /minimist@1.2.8: 2105 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2106 | dev: true 2107 | 2108 | /ms@2.1.2: 2109 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2110 | dev: true 2111 | 2112 | /natural-compare@1.4.0: 2113 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2114 | dev: true 2115 | 2116 | /object-assign@4.1.1: 2117 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2118 | engines: {node: '>=0.10.0'} 2119 | dev: true 2120 | 2121 | /object-inspect@1.13.1: 2122 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} 2123 | dev: true 2124 | 2125 | /object-keys@1.1.1: 2126 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2127 | engines: {node: '>= 0.4'} 2128 | dev: true 2129 | 2130 | /object.assign@4.1.5: 2131 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 2132 | engines: {node: '>= 0.4'} 2133 | dependencies: 2134 | call-bind: 1.0.7 2135 | define-properties: 1.2.1 2136 | has-symbols: 1.0.3 2137 | object-keys: 1.1.1 2138 | dev: true 2139 | 2140 | /object.entries@1.1.8: 2141 | resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} 2142 | engines: {node: '>= 0.4'} 2143 | dependencies: 2144 | call-bind: 1.0.7 2145 | define-properties: 1.2.1 2146 | es-object-atoms: 1.0.0 2147 | dev: true 2148 | 2149 | /object.fromentries@2.0.8: 2150 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} 2151 | engines: {node: '>= 0.4'} 2152 | dependencies: 2153 | call-bind: 1.0.7 2154 | define-properties: 1.2.1 2155 | es-abstract: 1.23.3 2156 | es-object-atoms: 1.0.0 2157 | dev: true 2158 | 2159 | /object.groupby@1.0.3: 2160 | resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} 2161 | engines: {node: '>= 0.4'} 2162 | dependencies: 2163 | call-bind: 1.0.7 2164 | define-properties: 1.2.1 2165 | es-abstract: 1.23.3 2166 | dev: true 2167 | 2168 | /object.hasown@1.1.4: 2169 | resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} 2170 | engines: {node: '>= 0.4'} 2171 | dependencies: 2172 | define-properties: 1.2.1 2173 | es-abstract: 1.23.3 2174 | es-object-atoms: 1.0.0 2175 | dev: true 2176 | 2177 | /object.values@1.2.0: 2178 | resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} 2179 | engines: {node: '>= 0.4'} 2180 | dependencies: 2181 | call-bind: 1.0.7 2182 | define-properties: 1.2.1 2183 | es-object-atoms: 1.0.0 2184 | dev: true 2185 | 2186 | /once@1.4.0: 2187 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2188 | dependencies: 2189 | wrappy: 1.0.2 2190 | 2191 | /optionator@0.9.3: 2192 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 2193 | engines: {node: '>= 0.8.0'} 2194 | dependencies: 2195 | '@aashutoshrathi/word-wrap': 1.2.6 2196 | deep-is: 0.1.4 2197 | fast-levenshtein: 2.0.6 2198 | levn: 0.4.1 2199 | prelude-ls: 1.2.1 2200 | type-check: 0.4.0 2201 | dev: true 2202 | 2203 | /p-limit@3.1.0: 2204 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2205 | engines: {node: '>=10'} 2206 | dependencies: 2207 | yocto-queue: 0.1.0 2208 | dev: true 2209 | 2210 | /p-locate@5.0.0: 2211 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2212 | engines: {node: '>=10'} 2213 | dependencies: 2214 | p-limit: 3.1.0 2215 | dev: true 2216 | 2217 | /parent-module@1.0.1: 2218 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2219 | engines: {node: '>=6'} 2220 | dependencies: 2221 | callsites: 3.1.0 2222 | dev: true 2223 | 2224 | /path-exists@4.0.0: 2225 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2226 | engines: {node: '>=8'} 2227 | dev: true 2228 | 2229 | /path-is-absolute@1.0.1: 2230 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2231 | engines: {node: '>=0.10.0'} 2232 | dev: true 2233 | 2234 | /path-key@3.1.1: 2235 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2236 | engines: {node: '>=8'} 2237 | dev: true 2238 | 2239 | /path-parse@1.0.7: 2240 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2241 | dev: true 2242 | 2243 | /path-type@4.0.0: 2244 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2245 | engines: {node: '>=8'} 2246 | dev: true 2247 | 2248 | /picomatch@2.3.1: 2249 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2250 | engines: {node: '>=8.6'} 2251 | dev: true 2252 | 2253 | /possible-typed-array-names@1.0.0: 2254 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} 2255 | engines: {node: '>= 0.4'} 2256 | dev: true 2257 | 2258 | /prelude-ls@1.2.1: 2259 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2260 | engines: {node: '>= 0.8.0'} 2261 | dev: true 2262 | 2263 | /prettier@3.6.2: 2264 | resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} 2265 | engines: {node: '>=14'} 2266 | hasBin: true 2267 | dev: true 2268 | 2269 | /prop-types@15.8.1: 2270 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 2271 | dependencies: 2272 | loose-envify: 1.4.0 2273 | object-assign: 4.1.1 2274 | react-is: 16.13.1 2275 | dev: true 2276 | 2277 | /punycode@2.3.1: 2278 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2279 | engines: {node: '>=6'} 2280 | dev: true 2281 | 2282 | /queue-microtask@1.2.3: 2283 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2284 | dev: true 2285 | 2286 | /react-is@16.13.1: 2287 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2288 | dev: true 2289 | 2290 | /reflect.getprototypeof@1.0.6: 2291 | resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} 2292 | engines: {node: '>= 0.4'} 2293 | dependencies: 2294 | call-bind: 1.0.7 2295 | define-properties: 1.2.1 2296 | es-abstract: 1.23.3 2297 | es-errors: 1.3.0 2298 | get-intrinsic: 1.2.4 2299 | globalthis: 1.0.3 2300 | which-builtin-type: 1.1.3 2301 | dev: true 2302 | 2303 | /regenerator-runtime@0.14.1: 2304 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 2305 | dev: true 2306 | 2307 | /regexp.prototype.flags@1.5.2: 2308 | resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} 2309 | engines: {node: '>= 0.4'} 2310 | dependencies: 2311 | call-bind: 1.0.7 2312 | define-properties: 1.2.1 2313 | es-errors: 1.3.0 2314 | set-function-name: 2.0.2 2315 | dev: true 2316 | 2317 | /require-from-string@2.0.2: 2318 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 2319 | engines: {node: '>=0.10.0'} 2320 | dev: true 2321 | 2322 | /resolve-from@4.0.0: 2323 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2324 | engines: {node: '>=4'} 2325 | dev: true 2326 | 2327 | /resolve@1.22.10: 2328 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 2329 | engines: {node: '>= 0.4'} 2330 | hasBin: true 2331 | dependencies: 2332 | is-core-module: 2.16.1 2333 | path-parse: 1.0.7 2334 | supports-preserve-symlinks-flag: 1.0.0 2335 | dev: true 2336 | 2337 | /resolve@2.0.0-next.5: 2338 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 2339 | hasBin: true 2340 | dependencies: 2341 | is-core-module: 2.16.1 2342 | path-parse: 1.0.7 2343 | supports-preserve-symlinks-flag: 1.0.0 2344 | dev: true 2345 | 2346 | /reusify@1.0.4: 2347 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2348 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2349 | dev: true 2350 | 2351 | /rimraf@3.0.2: 2352 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2353 | deprecated: Rimraf versions prior to v4 are no longer supported 2354 | hasBin: true 2355 | dependencies: 2356 | glob: 7.2.3 2357 | dev: true 2358 | 2359 | /run-parallel@1.2.0: 2360 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2361 | dependencies: 2362 | queue-microtask: 1.2.3 2363 | dev: true 2364 | 2365 | /safe-array-concat@1.1.2: 2366 | resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} 2367 | engines: {node: '>=0.4'} 2368 | dependencies: 2369 | call-bind: 1.0.7 2370 | get-intrinsic: 1.2.4 2371 | has-symbols: 1.0.3 2372 | isarray: 2.0.5 2373 | dev: true 2374 | 2375 | /safe-regex-test@1.0.3: 2376 | resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} 2377 | engines: {node: '>= 0.4'} 2378 | dependencies: 2379 | call-bind: 1.0.7 2380 | es-errors: 1.3.0 2381 | is-regex: 1.1.4 2382 | dev: true 2383 | 2384 | /semver@6.3.1: 2385 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2386 | hasBin: true 2387 | 2388 | /semver@7.6.0: 2389 | resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} 2390 | engines: {node: '>=10'} 2391 | hasBin: true 2392 | dependencies: 2393 | lru-cache: 6.0.0 2394 | dev: true 2395 | 2396 | /set-function-length@1.2.2: 2397 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 2398 | engines: {node: '>= 0.4'} 2399 | dependencies: 2400 | define-data-property: 1.1.4 2401 | es-errors: 1.3.0 2402 | function-bind: 1.1.2 2403 | get-intrinsic: 1.2.4 2404 | gopd: 1.0.1 2405 | has-property-descriptors: 1.0.2 2406 | dev: true 2407 | 2408 | /set-function-name@2.0.2: 2409 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 2410 | engines: {node: '>= 0.4'} 2411 | dependencies: 2412 | define-data-property: 1.1.4 2413 | es-errors: 1.3.0 2414 | functions-have-names: 1.2.3 2415 | has-property-descriptors: 1.0.2 2416 | dev: true 2417 | 2418 | /shebang-command@2.0.0: 2419 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2420 | engines: {node: '>=8'} 2421 | dependencies: 2422 | shebang-regex: 3.0.0 2423 | dev: true 2424 | 2425 | /shebang-regex@3.0.0: 2426 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2427 | engines: {node: '>=8'} 2428 | dev: true 2429 | 2430 | /shell-quote@1.8.1: 2431 | resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} 2432 | dev: false 2433 | 2434 | /side-channel@1.0.6: 2435 | resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} 2436 | engines: {node: '>= 0.4'} 2437 | dependencies: 2438 | call-bind: 1.0.7 2439 | es-errors: 1.3.0 2440 | get-intrinsic: 1.2.4 2441 | object-inspect: 1.13.1 2442 | dev: true 2443 | 2444 | /slash@3.0.0: 2445 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2446 | engines: {node: '>=8'} 2447 | dev: true 2448 | 2449 | /string.prototype.matchall@4.0.11: 2450 | resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} 2451 | engines: {node: '>= 0.4'} 2452 | dependencies: 2453 | call-bind: 1.0.7 2454 | define-properties: 1.2.1 2455 | es-abstract: 1.23.3 2456 | es-errors: 1.3.0 2457 | es-object-atoms: 1.0.0 2458 | get-intrinsic: 1.2.4 2459 | gopd: 1.0.1 2460 | has-symbols: 1.0.3 2461 | internal-slot: 1.0.7 2462 | regexp.prototype.flags: 1.5.2 2463 | set-function-name: 2.0.2 2464 | side-channel: 1.0.6 2465 | dev: true 2466 | 2467 | /string.prototype.trim@1.2.9: 2468 | resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} 2469 | engines: {node: '>= 0.4'} 2470 | dependencies: 2471 | call-bind: 1.0.7 2472 | define-properties: 1.2.1 2473 | es-abstract: 1.23.3 2474 | es-object-atoms: 1.0.0 2475 | dev: true 2476 | 2477 | /string.prototype.trimend@1.0.8: 2478 | resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} 2479 | dependencies: 2480 | call-bind: 1.0.7 2481 | define-properties: 1.2.1 2482 | es-object-atoms: 1.0.0 2483 | dev: true 2484 | 2485 | /string.prototype.trimstart@1.0.8: 2486 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} 2487 | engines: {node: '>= 0.4'} 2488 | dependencies: 2489 | call-bind: 1.0.7 2490 | define-properties: 1.2.1 2491 | es-object-atoms: 1.0.0 2492 | dev: true 2493 | 2494 | /strip-ansi@6.0.1: 2495 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2496 | engines: {node: '>=8'} 2497 | dependencies: 2498 | ansi-regex: 5.0.1 2499 | dev: true 2500 | 2501 | /strip-bom@3.0.0: 2502 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2503 | engines: {node: '>=4'} 2504 | dev: true 2505 | 2506 | /strip-json-comments@3.1.1: 2507 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2508 | engines: {node: '>=8'} 2509 | dev: true 2510 | 2511 | /supports-color@7.2.0: 2512 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2513 | engines: {node: '>=8'} 2514 | dependencies: 2515 | has-flag: 4.0.0 2516 | dev: true 2517 | 2518 | /supports-preserve-symlinks-flag@1.0.0: 2519 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2520 | engines: {node: '>= 0.4'} 2521 | dev: true 2522 | 2523 | /text-table@0.2.0: 2524 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2525 | dev: true 2526 | 2527 | /to-regex-range@5.0.1: 2528 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2529 | engines: {node: '>=8.0'} 2530 | dependencies: 2531 | is-number: 7.0.0 2532 | dev: true 2533 | 2534 | /ts-api-utils@1.3.0(typescript@5.9.3): 2535 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 2536 | engines: {node: '>=16'} 2537 | peerDependencies: 2538 | typescript: '>=4.2.0' 2539 | dependencies: 2540 | typescript: 5.9.3 2541 | dev: true 2542 | 2543 | /tsconfig-paths@3.15.0: 2544 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 2545 | dependencies: 2546 | '@types/json5': 0.0.29 2547 | json5: 1.0.2 2548 | minimist: 1.2.8 2549 | strip-bom: 3.0.0 2550 | dev: true 2551 | 2552 | /tslib@1.14.1: 2553 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2554 | dev: true 2555 | 2556 | /tslib@2.5.0: 2557 | resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} 2558 | dev: true 2559 | 2560 | /tsutils@3.21.0(typescript@5.9.3): 2561 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2562 | engines: {node: '>= 6'} 2563 | peerDependencies: 2564 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 2565 | dependencies: 2566 | tslib: 1.14.1 2567 | typescript: 5.9.3 2568 | dev: true 2569 | 2570 | /tunnel@0.0.6: 2571 | resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} 2572 | engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} 2573 | dev: false 2574 | 2575 | /type-check@0.4.0: 2576 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2577 | engines: {node: '>= 0.8.0'} 2578 | dependencies: 2579 | prelude-ls: 1.2.1 2580 | dev: true 2581 | 2582 | /type-fest@0.20.2: 2583 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2584 | engines: {node: '>=10'} 2585 | dev: true 2586 | 2587 | /typed-array-buffer@1.0.2: 2588 | resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} 2589 | engines: {node: '>= 0.4'} 2590 | dependencies: 2591 | call-bind: 1.0.7 2592 | es-errors: 1.3.0 2593 | is-typed-array: 1.1.13 2594 | dev: true 2595 | 2596 | /typed-array-byte-length@1.0.1: 2597 | resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} 2598 | engines: {node: '>= 0.4'} 2599 | dependencies: 2600 | call-bind: 1.0.7 2601 | for-each: 0.3.3 2602 | gopd: 1.0.1 2603 | has-proto: 1.0.3 2604 | is-typed-array: 1.1.13 2605 | dev: true 2606 | 2607 | /typed-array-byte-offset@1.0.2: 2608 | resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} 2609 | engines: {node: '>= 0.4'} 2610 | dependencies: 2611 | available-typed-arrays: 1.0.7 2612 | call-bind: 1.0.7 2613 | for-each: 0.3.3 2614 | gopd: 1.0.1 2615 | has-proto: 1.0.3 2616 | is-typed-array: 1.1.13 2617 | dev: true 2618 | 2619 | /typed-array-length@1.0.6: 2620 | resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} 2621 | engines: {node: '>= 0.4'} 2622 | dependencies: 2623 | call-bind: 1.0.7 2624 | for-each: 0.3.3 2625 | gopd: 1.0.1 2626 | has-proto: 1.0.3 2627 | is-typed-array: 1.1.13 2628 | possible-typed-array-names: 1.0.0 2629 | dev: true 2630 | 2631 | /typescript@5.9.3: 2632 | resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 2633 | engines: {node: '>=14.17'} 2634 | hasBin: true 2635 | dev: true 2636 | 2637 | /unbox-primitive@1.0.2: 2638 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2639 | dependencies: 2640 | call-bind: 1.0.7 2641 | has-bigints: 1.0.2 2642 | has-symbols: 1.0.3 2643 | which-boxed-primitive: 1.0.2 2644 | dev: true 2645 | 2646 | /undici-types@7.16.0: 2647 | resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} 2648 | dev: true 2649 | 2650 | /undici@5.29.0: 2651 | resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} 2652 | engines: {node: '>=14.0'} 2653 | dependencies: 2654 | '@fastify/busboy': 2.1.1 2655 | dev: false 2656 | 2657 | /universal-user-agent@6.0.1: 2658 | resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} 2659 | dev: false 2660 | 2661 | /uri-js@4.4.1: 2662 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2663 | dependencies: 2664 | punycode: 2.3.1 2665 | dev: true 2666 | 2667 | /uuid@3.4.0: 2668 | resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} 2669 | deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. 2670 | hasBin: true 2671 | dev: false 2672 | 2673 | /uuid@8.3.2: 2674 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 2675 | hasBin: true 2676 | dev: false 2677 | 2678 | /which-boxed-primitive@1.0.2: 2679 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2680 | dependencies: 2681 | is-bigint: 1.0.4 2682 | is-boolean-object: 1.1.2 2683 | is-number-object: 1.0.7 2684 | is-string: 1.0.7 2685 | is-symbol: 1.0.4 2686 | dev: true 2687 | 2688 | /which-builtin-type@1.1.3: 2689 | resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} 2690 | engines: {node: '>= 0.4'} 2691 | dependencies: 2692 | function.prototype.name: 1.1.6 2693 | has-tostringtag: 1.0.2 2694 | is-async-function: 2.0.0 2695 | is-date-object: 1.0.5 2696 | is-finalizationregistry: 1.0.2 2697 | is-generator-function: 1.0.10 2698 | is-regex: 1.1.4 2699 | is-weakref: 1.0.2 2700 | isarray: 2.0.5 2701 | which-boxed-primitive: 1.0.2 2702 | which-collection: 1.0.1 2703 | which-typed-array: 1.1.15 2704 | dev: true 2705 | 2706 | /which-collection@1.0.1: 2707 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 2708 | dependencies: 2709 | is-map: 2.0.2 2710 | is-set: 2.0.2 2711 | is-weakmap: 2.0.1 2712 | is-weakset: 2.0.2 2713 | dev: true 2714 | 2715 | /which-typed-array@1.1.15: 2716 | resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} 2717 | engines: {node: '>= 0.4'} 2718 | dependencies: 2719 | available-typed-arrays: 1.0.7 2720 | call-bind: 1.0.7 2721 | for-each: 0.3.3 2722 | gopd: 1.0.1 2723 | has-tostringtag: 1.0.2 2724 | dev: true 2725 | 2726 | /which@2.0.2: 2727 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2728 | engines: {node: '>= 8'} 2729 | hasBin: true 2730 | dependencies: 2731 | isexe: 2.0.0 2732 | dev: true 2733 | 2734 | /wrappy@1.0.2: 2735 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2736 | 2737 | /yallist@4.0.0: 2738 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2739 | dev: true 2740 | 2741 | /yocto-queue@0.1.0: 2742 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2743 | engines: {node: '>=10'} 2744 | dev: true 2745 | -------------------------------------------------------------------------------- /src/cli.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@actions/core' 2 | import * as io from '@actions/io' 3 | import * as tc from '@actions/tool-cache' 4 | import { promises as fs } from 'fs' 5 | import os from 'os' 6 | import type { Args } from './input.js' 7 | import { VERSION_LATEST, getLatest } from './version.js' 8 | 9 | const TOOL_NAME = 'scw' 10 | const PLATFORM_MAP = { 11 | darwin: 'darwin', 12 | freebsd: 'freebsd', 13 | win32: 'windows', 14 | } 15 | const ARCH_MAP = { 16 | arm64: 'arm64', 17 | i386: '386', 18 | } 19 | 20 | const downloadURL = (targetVersion: string): string => { 21 | let version = targetVersion 22 | let platform = 'linux' 23 | let arch = 'amd64' 24 | 25 | if (os.platform() in PLATFORM_MAP) { 26 | platform = PLATFORM_MAP[os.platform() as keyof typeof PLATFORM_MAP] 27 | } 28 | 29 | if (os.machine() in ARCH_MAP) { 30 | if (platform === 'windows') { 31 | arch = `${ARCH_MAP[os.machine() as keyof typeof ARCH_MAP]}.exe` 32 | } else { 33 | arch = ARCH_MAP[os.machine() as keyof typeof ARCH_MAP] 34 | } 35 | } 36 | 37 | if (version.startsWith('v')) { 38 | version = version.slice(1) 39 | } 40 | 41 | return `https://github.com/scaleway/scaleway-cli/releases/download/v${version}/scaleway-cli_${version}_${platform}_${arch}` 42 | } 43 | 44 | const isInPath = (toolPath: string): boolean => { 45 | const envPath = process.env.PATH 46 | if (!envPath) { 47 | return false 48 | } 49 | 50 | return envPath.split(':').includes(toolPath) 51 | } 52 | 53 | const addToPath = (toolPath: string) => { 54 | const envPath = process.env.PATH 55 | if (envPath === undefined) { 56 | process.env.PATH = toolPath 57 | } else { 58 | process.env.PATH = `${envPath}:${toolPath}` 59 | } 60 | } 61 | 62 | const setPermissions = async (filePath: string) => { 63 | core.debug(`chmod ${filePath}`) 64 | 65 | await fs.chmod(filePath, 0o755) // rwx r-x r-x 66 | 67 | if (core.isDebug()) { 68 | const stats = await fs.stat(filePath) 69 | core.debug(`mode ${stats.mode}`) 70 | } 71 | } 72 | 73 | export const install = async (requestedVersion: string, repoToken: string) => { 74 | let version = requestedVersion 75 | 76 | if (requestedVersion === VERSION_LATEST) { 77 | version = await getLatest(repoToken) 78 | } 79 | 80 | let toolPath = tc.find('scw', version) 81 | if (!toolPath) { 82 | core.info(`Didn't found CLI in cache, downloading ${version}`) 83 | const tmpCliPath = await tc.downloadTool(downloadURL(version)) 84 | await setPermissions(tmpCliPath) 85 | toolPath = await tc.cacheFile(tmpCliPath, 'scw', TOOL_NAME, version) 86 | } else { 87 | core.info(`Found CLI ${version} in cache`) 88 | } 89 | 90 | const binaries = await io.findInPath('scw') 91 | if (binaries.length === 0 && !isInPath(toolPath)) { 92 | core.info('Adding CLI to path') 93 | addToPath(toolPath) 94 | core.addPath(toolPath) 95 | } 96 | 97 | return toolPath 98 | } 99 | 100 | export const fillEnv = (args: Args) => { 101 | if (args.accessKey) { 102 | process.env.SCW_ACCESS_KEY = args.accessKey 103 | } 104 | if (args.secretKey) { 105 | process.env.SCW_SECRET_KEY = args.secretKey 106 | } 107 | if (args.defaultOrganizationID) { 108 | process.env.SCW_DEFAULT_ORGANIZATION_ID = args.defaultOrganizationID 109 | } 110 | if (args.defaultProjectID) { 111 | process.env.SCW_DEFAULT_PROJECT_ID = args.defaultProjectID 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /src/config.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@actions/core' 2 | import type { Args } from './input.js' 3 | import { run } from './run.js' 4 | 5 | export const exportConfig = (args: Args) => { 6 | core.exportVariable('SCW_ACCESS_KEY', args.accessKey) 7 | core.setSecret(args.secretKey) 8 | core.exportVariable('SCW_SECRET_KEY', args.secretKey) 9 | core.exportVariable('SCW_DEFAULT_ORGANIZATION_ID', args.defaultOrganizationID) 10 | core.exportVariable('SCW_DEFAULT_PROJECT_ID', args.defaultProjectID) 11 | core.exportVariable('SCW_CLI_VERSION', args.version) 12 | } 13 | 14 | export const importConfig = (): Args => ({ 15 | repoToken: '', 16 | defaultOrganizationID: process.env.SCW_DEFAULT_ORGANIZATION_ID ?? '', 17 | defaultProjectID: process.env.SCW_DEFAULT_PROJECT_ID ?? '', 18 | secretKey: process.env.SCW_SECRET_KEY ?? '', 19 | version: process.env.SCW_CLI_VERSION ?? '', 20 | accessKey: process.env.SCW_ACCESS_KEY ?? '', 21 | args: '', 22 | exportConfig: false, 23 | saveConfig: false, 24 | }) 25 | 26 | export const saveConfig = async (args: Args, cliPath?: string) => { 27 | await run( 28 | [ 29 | 'init', 30 | `secret-key=${args.secretKey}`, 31 | `access-key=${args.accessKey}`, 32 | `organization-id=${args.defaultOrganizationID}`, 33 | `project-id=${args.defaultProjectID}`, 34 | `send-telemetry=false`, 35 | `install-autocomplete=false`, 36 | ], 37 | cliPath, 38 | ) 39 | } 40 | -------------------------------------------------------------------------------- /src/input.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@actions/core' 2 | import * as tc from '@actions/tool-cache' 3 | import { VERSION_LATEST } from './version.js' 4 | 5 | export type Args = { 6 | repoToken: string 7 | version: string 8 | accessKey: string 9 | secretKey: string 10 | defaultOrganizationID: string 11 | defaultProjectID: string 12 | args: string 13 | saveConfig: boolean 14 | exportConfig: boolean 15 | } 16 | 17 | const versionIsValid = (version: string): boolean => { 18 | if (version === VERSION_LATEST) { 19 | return true 20 | } 21 | if (!tc.isExplicitVersion(version)) { 22 | core.error('') 23 | 24 | return false 25 | } 26 | 27 | return true 28 | } 29 | 30 | export const validateArgs = (args: Args) => !versionIsValid(args.version) 31 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@actions/core' 2 | import path from 'path' 3 | import { fillEnv, install } from './cli.js' 4 | import { exportConfig, importConfig, saveConfig } from './config.js' 5 | import { type Args, validateArgs } from './input.js' 6 | import { CLIError, run } from './run.js' 7 | import { VERSION_LATEST } from './version.js' 8 | 9 | const getArgs = (defaultArgs: Args): Args => ({ 10 | repoToken: core.getInput('repo-token') || defaultArgs.repoToken, 11 | version: core.getInput('version') || defaultArgs.version || VERSION_LATEST, 12 | accessKey: core.getInput('access-key') || defaultArgs.accessKey, 13 | secretKey: core.getInput('secret-key') || defaultArgs.secretKey, 14 | defaultOrganizationID: 15 | core.getInput('default-organization-id') || 16 | defaultArgs.defaultOrganizationID, 17 | defaultProjectID: 18 | core.getInput('default-project-id') || defaultArgs.defaultProjectID, 19 | args: core.getInput('args') || defaultArgs.args, 20 | saveConfig: core.getBooleanInput('save-config') || defaultArgs.saveConfig, 21 | exportConfig: 22 | core.getBooleanInput('export-config') || defaultArgs.exportConfig, 23 | }) 24 | 25 | export const main = async () => { 26 | const configArgs = importConfig() 27 | const args = getArgs(configArgs) 28 | 29 | if (validateArgs(args)) { 30 | return 31 | } 32 | 33 | const cliPath = await install(args.version, args.repoToken) 34 | 35 | if (args.args) { 36 | fillEnv(args) 37 | try { 38 | const res = await run(args.args, path.join(cliPath, 'scw')) 39 | if (res !== '') { 40 | core.setOutput('json', res) 41 | } 42 | } catch (e) { 43 | if (e instanceof CLIError) { 44 | core.error(e.message) 45 | process.exit(1) 46 | } else { 47 | throw e 48 | } 49 | } 50 | } 51 | 52 | if (args.exportConfig) { 53 | exportConfig(args) 54 | } 55 | 56 | if (args.saveConfig) { 57 | await saveConfig(args) 58 | } 59 | } 60 | 61 | // eslint-disable-next-line @typescript-eslint/no-floating-promises 62 | main() 63 | -------------------------------------------------------------------------------- /src/run.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@actions/core' 2 | import { spawn } from 'child_process' 3 | import { parse } from 'shell-quote' 4 | 5 | type SpawnResult = { 6 | code: number | null 7 | stdout: string | null 8 | stderr: string | null 9 | } 10 | 11 | export class CLIError extends Error { 12 | constructor(message: string) { 13 | super(message) 14 | this.name = 'CLIError' 15 | } 16 | } 17 | 18 | const spawnPromise = async ( 19 | command: string, 20 | args: string[], 21 | ): Promise => 22 | new Promise((resolve, reject) => { 23 | const process = spawn(command, args) 24 | process.stdout.setEncoding('utf-8') 25 | process.stderr.setEncoding('utf-8') 26 | process.stdin.end() 27 | 28 | process.on('exit', code => { 29 | resolve({ 30 | code, 31 | stdout: process.stdout.read() as string | null, 32 | stderr: process.stderr.read() as string | null, 33 | }) 34 | }) 35 | process.on('error', err => { 36 | reject(err) 37 | }) 38 | }) 39 | 40 | const parseCmdArgs = (args: string) => 41 | parse(args).map(arg => { 42 | if (typeof arg !== 'string') { 43 | throw new Error('Invalid command arguments') 44 | } 45 | 46 | return arg 47 | }) 48 | 49 | export const run = async (args: string | string[], cliPath = 'scw') => { 50 | let cmdArgs = ['-o=json'] 51 | if (core.isDebug()) { 52 | cmdArgs.push('--debug') 53 | } 54 | 55 | if (typeof args === 'string') { 56 | cmdArgs = cmdArgs.concat(parseCmdArgs(args)) 57 | } else { 58 | cmdArgs = cmdArgs.concat(args) 59 | } 60 | 61 | const res = await spawnPromise(cliPath, cmdArgs) 62 | if (res.code !== 0) { 63 | core.info(res.stderr || '') 64 | throw new CLIError(`failed to run command, code: ${res.code || 'null'}`) 65 | } 66 | core.info(res.stdout || '') 67 | 68 | return res.stdout || '' 69 | } 70 | -------------------------------------------------------------------------------- /src/version.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient } from '@actions/http-client' 2 | 3 | export const VERSION_LATEST = 'latest' 4 | const USER_AGENT = 'scaleway/action-scw' 5 | 6 | // https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#get-the-latest-release 7 | type LatestPayload = { 8 | tag_name: unknown 9 | } 10 | 11 | const latestUrl = 12 | 'https://api.github.com/repos/scaleway/scaleway-cli/releases/latest' 13 | export const getLatest = async (repoToken: string) => { 14 | const headers: Record = { 15 | Accept: 'application/vnd.github+json', 16 | } 17 | if (repoToken.trim() !== '') { 18 | headers.Authorization = `Bearer ${repoToken}` 19 | } 20 | 21 | const httpClient = new HttpClient(USER_AGENT) 22 | const resp = await httpClient.getJson(latestUrl, headers) 23 | 24 | if (resp.statusCode !== 200) { 25 | throw new Error( 26 | `Failed to fetch latest version (status: ${resp.statusCode})`, 27 | ) 28 | } 29 | 30 | const body = resp.result 31 | 32 | if (body === null) { 33 | throw new Error('Missing body when fetching latest version') 34 | } else if (body.tag_name === undefined) { 35 | throw new Error(`Missing tag_name in response when fetching latest version`) 36 | } else if (typeof body.tag_name !== 'string') { 37 | throw new Error(`Invalid tag_name in response when fetching latest version`) 38 | } else { 39 | return body.tag_name 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "module": "es2020", 5 | "moduleResolution": "node", 6 | "outDir": "./lib", 7 | "rootDir": "./src", 8 | "allowJs": false, 9 | "skipLibCheck": true, 10 | "strict": true, 11 | "noImplicitAny": true, 12 | "strictNullChecks": true, 13 | "esModuleInterop": true 14 | }, 15 | "exclude": ["node_modules"] 16 | } 17 | --------------------------------------------------------------------------------