├── .eslintrc.json ├── .github ├── labels.yml └── workflows │ ├── pause-community-contributions.yml │ └── sync-labels.yml ├── .gitignore ├── .prettierrc ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── .yarnrc ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── README.md ├── media ├── configure.png ├── configured.png ├── favicon.png ├── found.png ├── install.png ├── pick.png ├── start.png ├── submit.png ├── submitted.png ├── wizard-zap.svg └── wizard.svg ├── package.json ├── src ├── commands │ ├── configure.ts │ ├── install.ts │ ├── startTrack.ts │ ├── submit.ts │ ├── upgrade.ts │ ├── version.ts │ └── workspace.ts ├── execute.ts ├── extension.ts └── test │ ├── runTest.ts │ └── suite │ ├── extension.test.ts │ └── index.ts ├── tsconfig.json ├── vsc-extension-quickstart.md └── yarn.lock /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "@typescript-eslint/parser", 4 | "parserOptions": { 5 | "ecmaVersion": 6, 6 | "sourceType": "module" 7 | }, 8 | "plugins": ["@typescript-eslint"], 9 | "rules": { 10 | "@typescript-eslint/naming-convention": "warn", 11 | "@typescript-eslint/semi": "warn", 12 | "curly": "warn", 13 | "eqeqeq": "warn", 14 | "no-throw-literal": "warn", 15 | "semi": "off" 16 | }, 17 | "ignorePatterns": ["out", "dist", "**/*.d.ts"] 18 | } 19 | -------------------------------------------------------------------------------- /.github/labels.yml: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------- # 2 | # This is an auto-generated file - Do not manually edit this file # 3 | # --------------------------------------------------------------- # 4 | 5 | # This file is automatically generated by concatenating two files: 6 | # 7 | # 1. The Exercism-wide labels: defined in https://github.com/exercism/org-wide-files/blob/main/global-files/.github/labels.yml 8 | # 2. The repository-specific labels: defined in the `.appends/.github/labels.yml` file within this repository. 9 | # 10 | # If any of these two files change, a pull request is automatically created containing a re-generated version of this file. 11 | # Consequently, to change repository-specific labels you should update the `.appends/.github/labels.yml` file and _not_ this file. 12 | # 13 | # When the pull request has been merged, the GitHub labels will be automatically updated by the "Sync labels" workflow. 14 | # This typically takes 5-10 minutes. 15 | 16 | # --------------------------------------------------------------------- # 17 | # These are the Exercism-wide labels which are shared across all repos. # 18 | # --------------------------------------------------------------------- # 19 | 20 | # The following Exercism-wide labels are used to show "tasks" on the website, which will point users to things they can contribute to. 21 | 22 | # The `x:action/` labels describe what sort of work the contributor will be engaged in when working on the issue 23 | - name: "x:action/create" 24 | description: "Work on something from scratch" 25 | color: "ffffff" 26 | 27 | - name: "x:action/fix" 28 | description: "Fix an issue" 29 | color: "ffffff" 30 | 31 | - name: "x:action/improve" 32 | description: "Improve existing functionality/content" 33 | color: "ffffff" 34 | 35 | - name: "x:action/proofread" 36 | description: "Proofread text" 37 | color: "ffffff" 38 | 39 | - name: "x:action/sync" 40 | description: "Sync content with its latest version" 41 | color: "ffffff" 42 | 43 | # The `x:knowledge/` labels describe how much Exercism knowledge is required by the contributor 44 | - name: "x:knowledge/none" 45 | description: "No existing Exercism knowledge required" 46 | color: "ffffff" 47 | 48 | - name: "x:knowledge/elementary" 49 | description: "Little Exercism knowledge required" 50 | color: "ffffff" 51 | 52 | - name: "x:knowledge/intermediate" 53 | description: "Quite a bit of Exercism knowledge required" 54 | color: "ffffff" 55 | 56 | - name: "x:knowledge/advanced" 57 | description: "Comprehensive Exercism knowledge required" 58 | color: "ffffff" 59 | 60 | # The `x:module/` labels indicate what part of Exercism the contributor will be working on 61 | - name: "x:module/analyzer" 62 | description: "Work on Analyzers" 63 | color: "ffffff" 64 | 65 | - name: "x:module/concept" 66 | description: "Work on Concepts" 67 | color: "ffffff" 68 | 69 | - name: "x:module/concept-exercise" 70 | description: "Work on Concept Exercises" 71 | color: "ffffff" 72 | 73 | - name: "x:module/generator" 74 | description: "Work on Exercise generators" 75 | color: "ffffff" 76 | 77 | - name: "x:module/practice-exercise" 78 | description: "Work on Practice Exercises" 79 | color: "ffffff" 80 | 81 | - name: "x:module/representer" 82 | description: "Work on Representers" 83 | color: "ffffff" 84 | 85 | - name: "x:module/test-runner" 86 | description: "Work on Test Runners" 87 | color: "ffffff" 88 | 89 | # The `x:rep/` labels describe the amount of reputation to award 90 | # 91 | # For more information on reputation and how these labels should be used, 92 | # check out https://exercism.org/docs/using/product/reputation 93 | - name: "x:rep/tiny" 94 | description: "Tiny amount of reputation" 95 | color: "ffffff" 96 | 97 | - name: "x:rep/small" 98 | description: "Small amount of reputation" 99 | color: "ffffff" 100 | 101 | - name: "x:rep/medium" 102 | description: "Medium amount of reputation" 103 | color: "ffffff" 104 | 105 | - name: "x:rep/large" 106 | description: "Large amount of reputation" 107 | color: "ffffff" 108 | 109 | - name: "x:rep/massive" 110 | description: "Massive amount of reputation" 111 | color: "ffffff" 112 | 113 | # The `x:size/` labels describe the expected amount of work for a contributor 114 | - name: "x:size/tiny" 115 | description: "Tiny amount of work" 116 | color: "ffffff" 117 | 118 | - name: "x:size/small" 119 | description: "Small amount of work" 120 | color: "ffffff" 121 | 122 | - name: "x:size/medium" 123 | description: "Medium amount of work" 124 | color: "ffffff" 125 | 126 | - name: "x:size/large" 127 | description: "Large amount of work" 128 | color: "ffffff" 129 | 130 | - name: "x:size/massive" 131 | description: "Massive amount of work" 132 | color: "ffffff" 133 | 134 | # The `x:status/` label indicates if there is already someone working on the issue 135 | - name: "x:status/claimed" 136 | description: "Someone is working on this issue" 137 | color: "ffffff" 138 | 139 | # The `x:type/` labels describe what type of work the contributor will be engaged in 140 | - name: "x:type/ci" 141 | description: "Work on Continuous Integration (e.g. GitHub Actions workflows)" 142 | color: "ffffff" 143 | 144 | - name: "x:type/coding" 145 | description: "Write code that is not student-facing content (e.g. test-runners, generators, but not exercises)" 146 | color: "ffffff" 147 | 148 | - name: "x:type/content" 149 | description: "Work on content (e.g. exercises, concepts)" 150 | color: "ffffff" 151 | 152 | - name: "x:type/docker" 153 | description: "Work on Dockerfiles" 154 | color: "ffffff" 155 | 156 | - name: "x:type/docs" 157 | description: "Work on Documentation" 158 | color: "ffffff" 159 | 160 | # This Exercism-wide label is added to all automatically created pull requests that help migrate/prepare a track for Exercism v3 161 | - name: "v3-migration 🤖" 162 | description: "Preparing for Exercism v3" 163 | color: "e99695" 164 | 165 | # This Exercism-wide label can be used to bulk-close issues in preparation for pausing community contributions 166 | - name: "paused" 167 | description: "Work paused until further notice" 168 | color: "e4e669" 169 | -------------------------------------------------------------------------------- /.github/workflows/pause-community-contributions.yml: -------------------------------------------------------------------------------- 1 | name: Pause Community Contributions 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | pull_request_target: 8 | types: 9 | - opened 10 | 11 | permissions: 12 | issues: write 13 | pull-requests: write 14 | 15 | jobs: 16 | pause: 17 | if: github.repository_owner == 'exercism' # Stops this job from running on forks 18 | uses: exercism/github-actions/.github/workflows/community-contributions.yml@main 19 | with: 20 | forum_category: support 21 | secrets: 22 | github_membership_token: ${{ secrets.COMMUNITY_CONTRIBUTIONS_WORKFLOW_TOKEN }} 23 | -------------------------------------------------------------------------------- /.github/workflows/sync-labels.yml: -------------------------------------------------------------------------------- 1 | name: Tools 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | paths: 8 | - .github/labels.yml 9 | - .github/workflows/sync-labels.yml 10 | workflow_dispatch: 11 | schedule: 12 | - cron: 0 0 1 * * # First day of each month 13 | 14 | permissions: 15 | issues: write 16 | 17 | jobs: 18 | sync-labels: 19 | uses: exercism/github-actions/.github/workflows/labels.yml@main 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | dist 3 | node_modules 4 | .vscode-test/ 5 | *.vsix 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "always", 3 | "endOfLine": "lf", 4 | "singleQuote": true, 5 | "useTabs": true 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": ["dbaeumer.vscode-eslint"] 5 | } 6 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Run Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "args": ["--extensionDevelopmentPath=${workspaceFolder}"], 13 | "outFiles": ["${workspaceFolder}/out/**/*.js"], 14 | "preLaunchTask": "${defaultBuildTask}" 15 | }, 16 | { 17 | "name": "Extension Tests", 18 | "type": "extensionHost", 19 | "request": "launch", 20 | "args": [ 21 | "--extensionDevelopmentPath=${workspaceFolder}", 22 | "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" 23 | ], 24 | "outFiles": ["${workspaceFolder}/out/test/**/*.js"], 25 | "preLaunchTask": "${defaultBuildTask}" 26 | } 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "out": false // set this to true to hide the "out" folder with the compiled JS files 5 | }, 6 | "search.exclude": { 7 | "out": true // set this to false to include "out" folder in search results 8 | }, 9 | // Turn off tsc task auto detection since we have the necessary tasks as npm scripts 10 | "typescript.tsc.autoDetect": "off", 11 | "cSpell.words": ["exercism", "walkthrough"] 12 | } 13 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // See https://go.microsoft.com/fwlink/?LinkId=733558 2 | // for the documentation about the tasks.json format 3 | { 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "type": "npm", 8 | "script": "watch", 9 | "problemMatcher": { 10 | "base": "$tsc-watch", 11 | "background": { 12 | "activeOnStart": true, 13 | "beginsPattern": { 14 | "regexp": "\\[watch\\] build started" 15 | }, 16 | "endsPattern": { 17 | "regexp": "\\[watch\\] build finished" 18 | } 19 | } 20 | }, 21 | "isBackground": true, 22 | "presentation": { 23 | "reveal": "never" 24 | }, 25 | "group": { 26 | "kind": "build", 27 | "isDefault": true 28 | } 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | src/** 4 | .gitignore 5 | .yarnrc 6 | vsc-extension-quickstart.md 7 | **/tsconfig.json 8 | **/.eslintrc.json 9 | **/*.map 10 | **/*.ts 11 | 12 | node_modules 13 | src/ -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | --ignore-engines true -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to the "exercism" extension will be documented in this file. 4 | 5 | Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. 6 | 7 | ## 0.2.2 8 | 9 | - Fix references to unused settings 10 | - Fix pick exercise on unjoined track 11 | 12 | ## 0.2.1 13 | 14 | - Fix various typos in commands 15 | - Fix the `submit` command for workspace folders named `exercism` instead of `Exercism` 16 | - Fix the `submit` command not showing up for workspace folders named `exercism` 17 | - Add a warning message explaining what is wrong if the workspace path is unsupported. 18 | 19 | ## 0.2.0 20 | 21 | - Add context in the `README.md` file including screenshots 22 | - Change the file structure 23 | - Change the build command during development 24 | 25 | ## 0.1.0 26 | 27 | - Initial release 28 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | ## Introduction 4 | 5 | Exercism is a platform centered around empathetic conversation. 6 | We have a low tolerance for communication that makes anyone feel unwelcome, unsupported, insulted or discriminated against. 7 | 8 | ## Seen or experienced something uncomfortable? 9 | 10 | If you see or experience abuse, harassment, discrimination, or feel unsafe or upset, please email [abuse@exercism.org](mailto:abuse@exercism.org?subject=%5BCoC%5D) and include \[CoC\] in the subject line. 11 | We will follow up with you as a priority. 12 | 13 | ## Enforcement 14 | 15 | We actively monitor for Code of Conduct (CoC) violations and take any reports of violations extremely seriously. 16 | We have banned contributors, mentors and users due to violations. 17 | 18 | After we receive a report of a CoC violation, we view that person's conversation history on Exercism and related communication channels and attempt to understand whether someone has deliberately broken the CoC, or accidentally crossed a line. 19 | We generally reach out to the person who has been reported to discuss any concerns we have and warn them that repeated violations will result in a ban. 20 | Sometimes we decide that no violation has occurred and that no action is required and sometimes we will also ban people on a first offense. 21 | We strive to be fair, but will err on the side of protecting the culture of our community. 22 | 23 | Exercism's leadership reserve the right to take whatever action they feel appropriate with regards to CoC violations. 24 | 25 | ## The simple version 26 | 27 | - Be empathetic 28 | - Be welcoming 29 | - Be kind 30 | - Be honest 31 | - Be supportive 32 | - Be polite 33 | 34 | ## The details 35 | 36 | Exercism should be a safe place for everybody regardless of 37 | 38 | - Gender, gender identity or gender expression 39 | - Sexual orientation 40 | - Disability 41 | - Physical appearance (including but not limited to body size) 42 | - Race 43 | - Age 44 | - Religion 45 | - Anything else you can think of 46 | 47 | As someone who is part of this community, you agree that: 48 | 49 | - We are collectively and individually committed to safety and inclusivity 50 | - We have zero tolerance for abuse, harassment, or discrimination 51 | - We respect people’s boundaries and identities 52 | - We refrain from using language that can be considered offensive or oppressive (systemically or otherwise), eg. sexist, racist, homophobic, transphobic, ableist, classist, etc. 53 | - this includes (but is not limited to) various slurs. 54 | - We avoid using offensive topics as a form of humor 55 | 56 | We actively work towards: 57 | 58 | - Being a safe community 59 | - Cultivating a network of support & encouragement for each other 60 | - Encouraging responsible and varied forms of expression 61 | 62 | We condemn: 63 | 64 | - Stalking, doxxing, or publishing private information 65 | - Violence, threats of violence or violent language 66 | - Anything that compromises people’s safety 67 | - Conduct or speech which might be considered sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory or offensive in nature 68 | - The use of unwelcome, suggestive, derogatory or inappropriate nicknames or terms 69 | - Disrespect towards others (jokes, innuendo, dismissive attitudes) and towards differences of opinion 70 | - Intimidation or harassment (online or in-person). 71 | Please read the [Citizen Code of Conduct](https://github.com/stumpsyn/policies/blob/master/citizen_code_of_conduct.md) for how we interpret harassment 72 | - Inappropriate attention or contact 73 | - Not understanding the differences between constructive criticism and disparagement 74 | 75 | These things are NOT OK. 76 | 77 | Be aware of how your actions affect others. 78 | If it makes someone uncomfortable, stop. 79 | 80 | If you say something that is found offensive, and you are called out on it, try to: 81 | 82 | - Listen without interruption 83 | - Believe what the person is saying & do not attempt to disqualify what they have to say 84 | - Ask for tips / help with avoiding making the offense in the future 85 | - Apologize and ask forgiveness 86 | 87 | ## History 88 | 89 | This policy was initially adopted from the Front-end London Slack community and has been modified since. 90 | A version history can be seen on [GitHub](https://github.com/exercism/website-copy/edit/main/pages/code_of_conduct.md). 91 | 92 | _This policy is a "living" document, and subject to refinement and expansion in the future. 93 | This policy applies to the Exercism website, the Exercism GitHub organization, any other Exercism-related communication channels (e.g. Discord, Forum, Twitter, email) and any other Exercism entity or event._ 94 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # exercism-cli 2 | 3 | Integrate the Exercism CLI with VS Code 4 | 5 | ## Features 6 | 7 | - Install the CLI 8 | - Configure the CLI 9 | - Pick / start a track 10 | - Upgrade the CLI 11 | 12 | ## Requirements 13 | 14 | Your system must be supported by the CLI. 15 | 16 | - If the Exercism CLI is already installed, it's version must be >= 3, < 4. 17 | - If you change the workspace location, make sure that it still has `Exercism` in its name. 18 | 19 | ## How to use ? 20 | 21 | After installing the extension, the wizard should open automatically. If it does 22 | not, open the **Command Palette** (`View > Command Palette`) and write: `Get Started`. Pick **Exercism setup** from the list. 23 | 24 | ### Installing the CLI 25 | 26 | On the walkthrough page, follow each step, starting with installing the CLI. 27 | 28 | > You also want to press this button even if you have already installed the CLI. 29 | 30 | ![Walkthrough steps](./media/start.png) 31 | 32 | #### Not yet installed 33 | 34 | In case the CLI is not found, it will attempt to open the instructions to walk you through the installation process. 35 | 36 | ![Open CLI walkthrough configuration dialog](./media/install.png) 37 | 38 | #### Already installed 39 | 40 | In case the CLI is found on your computer, it will tell you it was found and which version is found. If the version is incompatible it will suggest you update the CLI using this extension. 41 | 42 | ![Open CLI walkthrough configuration dialog](./media/found.png) 43 | 44 | ### Configuring the CLI 45 | 46 | When the CLI has been found, it can be configured. 47 | 48 | > You also want to press this button even if you have already configured the CLI. 49 | 50 | #### Not yet configured 51 | 52 | In case the CLI is not yet configured, follow the instructions. Open the settings page and copy your CLI token. Then, click the button again, and enter the CLI token. This is necessary to allow the CLI to communicate with Exercism using your credentials in a secure way. 53 | 54 | ![Open CLI settings page or Enter CLI token dialog](./media/configure.png) 55 | 56 | #### Already configured 57 | 58 | In case the CLI is already configured, you can change its settings or leave it as is. 59 | 60 | > If you **change** the workspace, **make sure** the directory structure still includes a folder `Exercism`, or this extension will not work properly. 61 | 62 | ![Change CLI settings dialog](./media/configured.png) 63 | 64 | ### Get started 65 | 66 | Finally, pick a track (new, or one you've already started). You can pick any track that's available on Exercism, and this list updates automatically. 67 | 68 | ![Pick a track dialog](./media/pick.png) 69 | 70 | ### Submitting your solution 71 | 72 | If you've opened a solution file, in your Exercism workspace, you can use the **Command Palette** to attempt to automatically submit your solution. Do this by typing **submit** after opening the **Command Palette** (`View > Command Palette`), 73 | and pick the **Submit your solution** option. 74 | 75 | ![Submit your solution](./media/submit.png) 76 | 77 | It will attempt to automatically submit the correct files to Exercism. 78 | 79 | ![Submitted your solution](./media/submitted.png) 80 | 81 | See your solution online to start mentoring, see automated analysis, publish it, or continue. 82 | 83 | ## Extension Settings 84 | 85 | This extension doesn't (yet) add any settings. 86 | 87 | ## Known Issues 88 | 89 | None at the moment. 90 | 91 | ## Release Notes 92 | 93 | See [CHANGELOG.md](./CHANGELOG.md) 94 | -------------------------------------------------------------------------------- /media/configure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/vscode-exercism-cli/c047f8443e040a2a981c6ac822e2d9dfa07c7424/media/configure.png -------------------------------------------------------------------------------- /media/configured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/vscode-exercism-cli/c047f8443e040a2a981c6ac822e2d9dfa07c7424/media/configured.png -------------------------------------------------------------------------------- /media/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/vscode-exercism-cli/c047f8443e040a2a981c6ac822e2d9dfa07c7424/media/favicon.png -------------------------------------------------------------------------------- /media/found.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/vscode-exercism-cli/c047f8443e040a2a981c6ac822e2d9dfa07c7424/media/found.png -------------------------------------------------------------------------------- /media/install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/vscode-exercism-cli/c047f8443e040a2a981c6ac822e2d9dfa07c7424/media/install.png -------------------------------------------------------------------------------- /media/pick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/vscode-exercism-cli/c047f8443e040a2a981c6ac822e2d9dfa07c7424/media/pick.png -------------------------------------------------------------------------------- /media/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/vscode-exercism-cli/c047f8443e040a2a981c6ac822e2d9dfa07c7424/media/start.png -------------------------------------------------------------------------------- /media/submit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/vscode-exercism-cli/c047f8443e040a2a981c6ac822e2d9dfa07c7424/media/submit.png -------------------------------------------------------------------------------- /media/submitted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/vscode-exercism-cli/c047f8443e040a2a981c6ac822e2d9dfa07c7424/media/submitted.png -------------------------------------------------------------------------------- /media/wizard-zap.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /media/wizard.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "exercism-cli", 3 | "publisher": "exercism", 4 | "displayName": "Exercism CLI integration", 5 | "description": "Integrate the Exercism CLI with VS Code", 6 | "icon": "media/favicon.png", 7 | "version": "0.2.2", 8 | "preview": true, 9 | "author": { 10 | "email": "derk-jan+git@karrenbeld.info", 11 | "name": "Derk-Jan Karrenbeld", 12 | "url": "https://derk-jan.com" 13 | }, 14 | "bugs": { 15 | "url": "https://github.com/exercism/vscode-exercism-cli/issues" 16 | }, 17 | "repository": { 18 | "type": "git", 19 | "url": "https://github.com/exercism/vscode-exercism-cli.git" 20 | }, 21 | "engines": { 22 | "vscode": "^1.71.0" 23 | }, 24 | "categories": [ 25 | "Other" 26 | ], 27 | "keywords": [ 28 | "exercism", 29 | "cli" 30 | ], 31 | "license": "MIT", 32 | "activationEvents": [ 33 | "onCommand:exercism.install", 34 | "onCommand:exercism.version", 35 | "onCommand:exercism.upgrade", 36 | "onCommand:exercism.configure", 37 | "onCommand:exercism.workspace", 38 | "onCommand:exercism.startTrack", 39 | "onCommand:exercism.submitSolution" 40 | ], 41 | "main": "./out/main.js", 42 | "contributes": { 43 | "commands": [ 44 | { 45 | "command": "exercism.install", 46 | "title": "Exercism CLI: Install" 47 | }, 48 | { 49 | "command": "exercism.upgrade", 50 | "title": "Exercism CLI: Upgrade the Exercism CLI" 51 | }, 52 | { 53 | "command": "exercism.version", 54 | "title": "Exercism CLI: Check the installed Exercism CLI" 55 | }, 56 | { 57 | "command": "exercism.configure", 58 | "title": "Exercism CLI: Configure the Exercism CLI" 59 | }, 60 | { 61 | "command": "exercism.startTrack", 62 | "title": "Exercism CLI: Pick a track and download hello-world" 63 | }, 64 | { 65 | "command": "exercism.workspace", 66 | "title": "Exercism CLI: Open your Exercism workspace" 67 | }, 68 | { 69 | "command": "exercism.submitSolution", 70 | "title": "Exercism CLI: Submit your solution", 71 | "enablement": "resourcePath =~ /[Ee]xercism\\.*\\.*/" 72 | } 73 | ], 74 | "walkthroughs": [ 75 | { 76 | "id": "setup", 77 | "title": "Exercism setup", 78 | "description": "Setup the Exercism CLI to integrate it with VS Code", 79 | "steps": [ 80 | { 81 | "id": "install", 82 | "title": "Install the CLI", 83 | "description": "If you press install, this extension checks if the CLI is already present. If not, you'll be redirected to the latest instructions.\n[Install CLI](command:exercism.install)", 84 | "media": { 85 | "image": "media/wizard.svg", 86 | "altText": "" 87 | }, 88 | "completionEvents": [ 89 | "onCommand:exercism.install" 90 | ] 91 | }, 92 | { 93 | "id": "configure", 94 | "title": "Configure the Extension", 95 | "description": "After installing the CLI, it must be configured for your Exercism user account.\n[Configure CLI](command:exercism.configure)", 96 | "media": { 97 | "image": "media/wizard.svg", 98 | "altText": "" 99 | }, 100 | "completionEvents": [ 101 | "onCommand:exercism.configure" 102 | ] 103 | }, 104 | { 105 | "id": "track", 106 | "title": "Pick a track", 107 | "description": "Pick a track to start with and download hello-world.\n[Pick a track](command:exercism.startTrack)", 108 | "media": { 109 | "image": "media/wizard.svg", 110 | "altText": "" 111 | }, 112 | "completionEvents": [ 113 | "onCommand:exercism.startTrack" 114 | ] 115 | } 116 | ] 117 | } 118 | ], 119 | "configuration": { 120 | "title": "Exercism CLI Settings", 121 | "properties": {} 122 | } 123 | }, 124 | "scripts": { 125 | "compile": "yarn esbuild", 126 | "watch": "yarn esbuild-watch", 127 | "pretest": "yarn run compile && yarn run lint", 128 | "lint": "eslint src --ext ts", 129 | "test": "node ./out/test/runTest.js", 130 | "vscode:prepublish": "yarn esbuild-base --minify", 131 | "esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=out/main.js --external:vscode --format=cjs --platform=node", 132 | "esbuild": "yarn esbuild-base --sourcemap", 133 | "esbuild-watch": "yarn esbuild-base --sourcemap --watch", 134 | "test-compile": "tsc -p ./" 135 | }, 136 | "devDependencies": { 137 | "@types/glob": "^7.2.0", 138 | "@types/mocha": "^9.1.1", 139 | "@types/node": "16.11.58", 140 | "@types/semver": "^7.3.12", 141 | "@types/vscode": "^1.71.0", 142 | "@typescript-eslint/eslint-plugin": "^5.36.2", 143 | "@typescript-eslint/parser": "^5.36.2", 144 | "@vscode/test-electron": "^2.1.5", 145 | "esbuild": "^0.15.7", 146 | "eslint": "^8.23.0", 147 | "glob": "^8.0.3", 148 | "mocha": "^10.0.0", 149 | "prettier": "^2.7.1", 150 | "typescript": "^4.8.3" 151 | }, 152 | "dependencies": { 153 | "got": "^11.8.5", 154 | "semver": "^7.3.7" 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /src/commands/configure.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | 3 | import { exec, execSafe } from '../execute'; 4 | 5 | export const CONFIGURED = Object.freeze(Object.create(null)); 6 | 7 | export async function configureCommand(): Promise< 8 | boolean | undefined | typeof CONFIGURED 9 | > { 10 | const output = await execSafe('exercism configure'); 11 | const required = output.match(/Error: There is no token configured./); 12 | 13 | if (!required) { 14 | const result = await vscode.window.showInformationMessage( 15 | 'Your CLI is already configured. Do you want to re-configure it?', 16 | 'No, leave as is', 17 | 'Yes, change token', 18 | 'Yes, change workspace' 19 | ); 20 | 21 | if (!result || result === 'No, leave as is') { 22 | return CONFIGURED; 23 | } 24 | 25 | if (result === 'Yes, change workspace') { 26 | const workspace = await vscode.window.showInputBox({ 27 | title: 'New workspace path', 28 | }); 29 | 30 | if (!workspace) { 31 | return CONFIGURED; 32 | } 33 | 34 | const output = await exec(`exercism configure --workspace=${workspace}`); 35 | if (output !== '') { 36 | vscode.window.showWarningMessage( 37 | `Unexpected message returned: ${output}` 38 | ); 39 | } 40 | 41 | return vscode.commands 42 | .executeCommand('exercism.workspace') 43 | .then(() => CONFIGURED); 44 | } 45 | } 46 | 47 | const result = await vscode.window.showInformationMessage( 48 | 'Open your settings page on exercism.io and copy the CLI token, then re-run this command.', 49 | 'Open settings page', 50 | 'Enter CLI token' 51 | ); 52 | 53 | if (!result) { 54 | return; 55 | } 56 | 57 | if (result === 'Open settings page') { 58 | return vscode.env.openExternal( 59 | vscode.Uri.parse('https://exercism.org/settings/api_cli') 60 | ); 61 | } 62 | 63 | if (result === 'Enter CLI token') { 64 | const token = await vscode.window.showInputBox({ 65 | title: 'Exercism CLI token', 66 | validateInput: (value) => 67 | /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test( 68 | value 69 | ) 70 | ? '' 71 | : 'That is not a valid token', 72 | }); 73 | 74 | if (!token) { 75 | return; 76 | } 77 | 78 | const output = await exec(`exercism configure --token=${token}`); 79 | if (output !== '') { 80 | vscode.window.showWarningMessage( 81 | `Unexpected message returned: ${output}` 82 | ); 83 | } 84 | } 85 | 86 | return CONFIGURED; 87 | } 88 | -------------------------------------------------------------------------------- /src/commands/install.ts: -------------------------------------------------------------------------------- 1 | import * as semver from 'semver'; 2 | import * as vscode from 'vscode'; 3 | 4 | import { exec, execSafe } from '../execute'; 5 | 6 | export const INSTALLED = Object.freeze(Object.create(null)); 7 | 8 | export async function installCommand(): Promise< 9 | boolean | undefined | typeof INSTALLED 10 | > { 11 | const output = await execSafe('exercism version'); 12 | const match = output.match(/exercism version ((?:[0-9]+\.)+[0-9]+)/); 13 | 14 | if (!match) { 15 | vscode.env.openExternal( 16 | vscode.Uri.parse('https://exercism.org/cli-walkthrough') 17 | ); 18 | return; 19 | } 20 | 21 | const version = match[1]; 22 | 23 | const parsed = semver.parse(version); 24 | if (!parsed || parsed.major < 3) { 25 | const result = await vscode.window.showWarningMessage( 26 | ` 27 | Found the Exercism CLI (version: ${version}}), but this extension 28 | expects version >= 3, < 4. 29 | `.trim(), 30 | 'Attempt to upgrade', 31 | 'Ignore' 32 | ); 33 | 34 | if (result === 'Attempt to upgrade') { 35 | await exec('exercism upgrade'); 36 | // version = await exec("exercism version"); 37 | // match = version.match(/exercism version ((?:[0-9]+\.)+[0-9]+)/); 38 | } 39 | return INSTALLED; 40 | } 41 | 42 | if (parsed.major > 3) { 43 | vscode.window.showWarningMessage( 44 | ` 45 | Found the Exercism CLI (version: ${version}), but this extension 46 | expects version >= 3, < 4. The extension has not (yet) been tested 47 | against your installed version. If you run into issues, please report 48 | them at https://github.com/exercism/exercism. 49 | `.trim() 50 | ); 51 | } else { 52 | vscode.window.showInformationMessage( 53 | `Found the Exercism CLI (version: ${version}).` 54 | ); 55 | } 56 | 57 | return INSTALLED; 58 | } 59 | -------------------------------------------------------------------------------- /src/commands/startTrack.ts: -------------------------------------------------------------------------------- 1 | import got from 'got'; 2 | import * as vscode from 'vscode'; 3 | 4 | import { exec } from '../execute'; 5 | 6 | class TrackQuickPickItem implements vscode.QuickPickItem { 7 | constructor( 8 | public label: string, 9 | public description?: string | undefined, 10 | public detail?: string | undefined 11 | ) {} 12 | } 13 | 14 | type TracksResponse = { 15 | tracks: { slug: string; title: string; tags: string[] }[]; 16 | }; 17 | 18 | export async function startTrackCommand(track: string | null | undefined) { 19 | if (!track) { 20 | const result = await vscode.window.withProgress( 21 | { 22 | location: vscode.ProgressLocation.Notification, 23 | cancellable: true, 24 | title: 'Loading tracks', 25 | }, 26 | async (_progress, token) => { 27 | const json = await got('https://exercism.org/api/v2/tracks', { 28 | headers: { accept: 'application/json' }, 29 | }).json(); 30 | 31 | if (token.isCancellationRequested) { 32 | throw new Error('Cancelled'); 33 | } 34 | 35 | return json as TracksResponse; 36 | } 37 | ); 38 | 39 | const picked = await vscode.window.showQuickPick( 40 | result.tracks.map( 41 | ({ slug, title, tags }) => new TrackQuickPickItem(title, slug) 42 | ), 43 | { 44 | title: 'Pick an Exercism track', 45 | } 46 | ); 47 | 48 | track = picked?.description; 49 | } 50 | 51 | if (!track) { 52 | return; 53 | } 54 | 55 | try { 56 | const result = await vscode.window.withProgress( 57 | { 58 | location: vscode.ProgressLocation.Notification, 59 | cancellable: true, 60 | title: `Downloading exercise hello-world for ${track}`, 61 | }, 62 | 63 | async (_progress, token) => { 64 | const output = await exec( 65 | `exercism download --exercise hello-world --track ${track}` 66 | ); 67 | 68 | if (token.isCancellationRequested) { 69 | throw new Error('Cancelled'); 70 | } 71 | 72 | return output; 73 | } 74 | ); 75 | 76 | const folderPath = result.trim(); 77 | const folderPathParsed = folderPath.split(`\\`).join(`/`); 78 | const folderUri = vscode.Uri.file(folderPathParsed); 79 | 80 | return vscode.commands.executeCommand('vscode.openFolder', folderUri, { 81 | noRecentEntry: false, 82 | }); 83 | } catch (error) { 84 | if (error instanceof Error) { 85 | if (error.message.includes('You have not joined this track')) { 86 | const result = await vscode.window.showInformationMessage( 87 | 'You have not yet joined this track. Join the track on exercism.org first, then re-run this command.', 88 | 'Join track' 89 | ); 90 | 91 | if (!result) { 92 | return; 93 | } 94 | 95 | if (result === 'Join track') { 96 | return vscode.env.openExternal( 97 | vscode.Uri.parse(`https://exercism.org/tracks/${track}`) 98 | ); 99 | } 100 | 101 | return; 102 | } 103 | } 104 | 105 | throw error; 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /src/commands/submit.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | 3 | import { existsSync } from 'fs'; 4 | import { readFile } from 'fs/promises'; 5 | import { exec } from '../execute'; 6 | 7 | export async function submitCommand() { 8 | if (!vscode.window.activeTextEditor) { 9 | return vscode.window.showInformationMessage( 10 | 'Open any file in your solution and try again' 11 | ); 12 | } 13 | 14 | const parts = vscode.window.activeTextEditor?.document.uri.path.split('/'); 15 | const index = [parts.indexOf('Exercism'), parts.indexOf('exercism')]; 16 | 17 | if (index.every((i) => i === -1)) { 18 | const activePath = vscode.window.activeTextEditor?.document.uri.path; 19 | return vscode.window.showWarningMessage( 20 | `The active document path is ${activePath}. This command only 21 | works if the path contains a folder called Exercism. At this moment it is 22 | not yet possible to use this features with a workspace location without that 23 | folder present.` 24 | ); 25 | } 26 | 27 | const exercisePath = vscode.Uri.parse( 28 | parts.slice(0, index.find((i) => i !== -1)! + 3).join('/') 29 | ); 30 | const configPath = vscode.Uri.parse( 31 | [exercisePath.path, '.exercism', 'config.json'].join('/') 32 | ); 33 | 34 | if (!existsSync(configPath.fsPath)) { 35 | return vscode.window.showWarningMessage( 36 | `Cannot submit this solution automatically, because .exercism/config.json 37 | could not be found at ${configPath.fsPath}. This may happen if you are 38 | trying to submit someone else their solution.` 39 | ); 40 | } 41 | 42 | return vscode.window 43 | .withProgress( 44 | { 45 | location: vscode.ProgressLocation.Notification, 46 | cancellable: false, 47 | title: 'Submitting...', 48 | }, 49 | () => 50 | readFile(configPath.fsPath) 51 | .then((buffer) => buffer.toString()) 52 | .then((string) => JSON.parse(string)) 53 | .then((result) => 54 | exec( 55 | `exercism submit ${result.files.solution 56 | .map( 57 | (file: string) => 58 | vscode.Uri.parse([exercisePath.path, file].join('/')).fsPath 59 | ) 60 | .join(' ')}` 61 | ) 62 | ) 63 | .catch((error) => { 64 | vscode.window.showErrorMessage(error.message, { modal: false }); 65 | return null; 66 | }) 67 | ) 68 | .then(async (url) => { 69 | if (!url) { 70 | return; 71 | } 72 | 73 | const output = await vscode.window.showInformationMessage( 74 | 'Successfully submitted your solution.', 75 | 'See it online' 76 | ); 77 | if (!output) { 78 | return; 79 | } 80 | 81 | vscode.env.openExternal(vscode.Uri.parse(url.trim())); 82 | }); 83 | } 84 | -------------------------------------------------------------------------------- /src/commands/upgrade.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | 3 | import { exec } from '../execute'; 4 | 5 | export async function upgradeCommand() { 6 | const output = await exec('exercism upgrade'); 7 | const match = output.match(/Your CLI version is up to date./); 8 | 9 | if (!match) { 10 | return vscode.window.showInformationMessage( 11 | `The following message was returned by the CLI: ${output}` 12 | ); 13 | } 14 | 15 | return vscode.window.showInformationMessage(output); 16 | } 17 | -------------------------------------------------------------------------------- /src/commands/version.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | 3 | import { execSafe } from '../execute'; 4 | 5 | export async function versionCommand() { 6 | const output = await execSafe('exercism version'); 7 | const match = output.match(/exercism version ((?:[0-9]+\.)+[0-9]+)/); 8 | 9 | if (!match) { 10 | const result = await vscode.window.showErrorMessage( 11 | 'Could not determine the installed CLI version. Perhaps it is not installed?', 12 | 'Show installation instructions' 13 | ); 14 | if (!result) { 15 | return; 16 | } 17 | 18 | await vscode.env.openExternal( 19 | vscode.Uri.parse('https://exercism.org/cli-walkthrough') 20 | ); 21 | return; 22 | } 23 | 24 | const version = match[1]; 25 | vscode.window.showInformationMessage( 26 | `Found the Exercism CLI (version: ${version})` 27 | ); 28 | 29 | vscode.workspace.getConfiguration('exercism').update('found', true); 30 | } 31 | -------------------------------------------------------------------------------- /src/commands/workspace.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | 3 | import { exec } from '../execute'; 4 | 5 | export async function workspaceCommand() { 6 | const output = await exec('exercism workspace').catch(() => ''); 7 | 8 | if (!output) { 9 | const command = await vscode.window.showErrorMessage( 10 | 'The Exercism CLI does not seem to be configured.', 11 | 'Install CLI', 12 | 'Configure CLI', 13 | 'Close' 14 | ); 15 | 16 | switch (command) { 17 | case 'Install CLI': { 18 | return vscode.commands.executeCommand('exercism.install'); 19 | } 20 | 21 | case 'Configure CLI': { 22 | return vscode.commands.executeCommand('exercism.configure'); 23 | } 24 | } 25 | 26 | return; 27 | } 28 | 29 | const folderPath = output.trim(); 30 | const folderPathParsed = folderPath.split(`\\`).join(`/`); 31 | const folderUri = vscode.Uri.file(folderPathParsed); 32 | 33 | return vscode.commands.executeCommand('vscode.openFolder', folderUri, { 34 | noRecentEntry: false, 35 | }); 36 | } 37 | -------------------------------------------------------------------------------- /src/execute.ts: -------------------------------------------------------------------------------- 1 | import { exec as childProcessExec } from 'child_process'; 2 | 3 | export function exec( 4 | cmd: string, 5 | logError = console.error, 6 | logVerbose = console.debug 7 | ) { 8 | logVerbose(`[exec] ${cmd}`); 9 | 10 | return new Promise((resolve, reject) => { 11 | childProcessExec(cmd, (err, out) => { 12 | if (err) { 13 | logError(`[exec] error while running ${cmd}`); 14 | logError(err); 15 | 16 | return reject(err); 17 | } 18 | logVerbose(`[exec] out for ${cmd}`, out); 19 | 20 | return resolve(out); 21 | }); 22 | }); 23 | } 24 | 25 | export function execSafe(cmd: string) { 26 | return exec(cmd, console.debug).catch((error) => error.message); 27 | } 28 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | // The module 'vscode' contains the VS Code extensibility API 2 | // Import the module and reference it with the alias vscode in your code below 3 | import * as vscode from 'vscode'; 4 | 5 | import { configureCommand } from './commands/configure'; 6 | import { installCommand } from './commands/install'; 7 | import { startTrackCommand } from './commands/startTrack'; 8 | import { submitCommand } from './commands/submit'; 9 | import { upgradeCommand } from './commands/upgrade'; 10 | import { versionCommand } from './commands/version'; 11 | import { workspaceCommand } from './commands/workspace'; 12 | 13 | // this method is called when your extension is activated 14 | // your extension is activated the very first time the command is executed 15 | export function activate(context: vscode.ExtensionContext) { 16 | context.subscriptions.push( 17 | vscode.commands.registerCommand('exercism.install', installCommand) 18 | ); 19 | 20 | context.subscriptions.push( 21 | vscode.commands.registerCommand('exercism.version', versionCommand) 22 | ); 23 | 24 | context.subscriptions.push( 25 | vscode.commands.registerCommand('exercism.upgrade', upgradeCommand) 26 | ); 27 | 28 | context.subscriptions.push( 29 | vscode.commands.registerCommand('exercism.configure', configureCommand) 30 | ); 31 | 32 | context.subscriptions.push( 33 | vscode.commands.registerCommand('exercism.workspace', workspaceCommand) 34 | ); 35 | 36 | context.subscriptions.push( 37 | vscode.commands.registerCommand('exercism.startTrack', startTrackCommand) 38 | ); 39 | 40 | context.subscriptions.push( 41 | vscode.commands.registerCommand('exercism.submitSolution', submitCommand) 42 | ); 43 | } 44 | 45 | // this method is called when your extension is deactivated 46 | export function deactivate() {} 47 | -------------------------------------------------------------------------------- /src/test/runTest.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | 3 | import { runTests } from '@vscode/test-electron'; 4 | 5 | async function main() { 6 | try { 7 | // The folder containing the Extension Manifest package.json 8 | // Passed to `--extensionDevelopmentPath` 9 | const extensionDevelopmentPath = path.resolve(__dirname, '../../'); 10 | 11 | // The path to test runner 12 | // Passed to --extensionTestsPath 13 | const extensionTestsPath = path.resolve(__dirname, './suite/index'); 14 | 15 | // Download VS Code, unzip it and run the integration test 16 | await runTests({ extensionDevelopmentPath, extensionTestsPath }); 17 | } catch (err) { 18 | console.error('Failed to run tests'); 19 | process.exit(1); 20 | } 21 | } 22 | 23 | main(); 24 | -------------------------------------------------------------------------------- /src/test/suite/extension.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | 3 | // You can import and use all API from the 'vscode' module 4 | // as well as import your extension to test it 5 | import * as vscode from 'vscode'; 6 | // import * as myExtension from '../../extension'; 7 | 8 | suite('Extension Test Suite', () => { 9 | vscode.window.showInformationMessage('Start all tests.'); 10 | 11 | test('Sample test', () => { 12 | assert.strictEqual(-1, [1, 2, 3].indexOf(5)); 13 | assert.strictEqual(-1, [1, 2, 3].indexOf(0)); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /src/test/suite/index.ts: -------------------------------------------------------------------------------- 1 | import * as path from 'path'; 2 | import * as Mocha from 'mocha'; 3 | import * as glob from 'glob'; 4 | 5 | export function run(): Promise { 6 | // Create the mocha test 7 | const mocha = new Mocha({ 8 | ui: 'tdd', 9 | color: true, 10 | }); 11 | 12 | const testsRoot = path.resolve(__dirname, '..'); 13 | 14 | return new Promise((c, e) => { 15 | glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { 16 | if (err) { 17 | return e(err); 18 | } 19 | 20 | // Add files to the test suite 21 | files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f))); 22 | 23 | try { 24 | // Run the mocha test 25 | mocha.run((failures) => { 26 | if (failures > 0) { 27 | e(new Error(`${failures} tests failed.`)); 28 | } else { 29 | c(); 30 | } 31 | }); 32 | } catch (err) { 33 | console.error(err); 34 | e(err); 35 | } 36 | }); 37 | }); 38 | } 39 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "ES2020", 5 | "outDir": "out", 6 | "lib": ["ES2020"], 7 | "sourceMap": true, 8 | "rootDir": "src", 9 | "strict": true /* enable all strict type-checking options */, 10 | "skipLibCheck": true 11 | /* Additional Checks */ 12 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 13 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 14 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /vsc-extension-quickstart.md: -------------------------------------------------------------------------------- 1 | # Welcome to your VS Code Extension 2 | 3 | ## What's in the folder 4 | 5 | - This folder contains all of the files necessary for your extension. 6 | - `package.json` - this is the manifest file in which you declare your extension and command. 7 | - The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. 8 | - `src/extension.ts` - this is the main file where you will provide the implementation of your command. 9 | - The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. 10 | - We pass the function containing the implementation of the command as the second parameter to `registerCommand`. 11 | 12 | ## Get up and running straight away 13 | 14 | - Press `F5` to open a new window with your extension loaded. 15 | - Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`. 16 | - Set breakpoints in your code inside `src/extension.ts` to debug your extension. 17 | - Find output from your extension in the debug console. 18 | 19 | ## Make changes 20 | 21 | - You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`. 22 | - You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. 23 | 24 | ## Explore the API 25 | 26 | - You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`. 27 | 28 | ## Run tests 29 | 30 | - Open the debug viewlet (`Ctrl+Shift+D` or `Cmd+Shift+D` on Mac) and from the launch configuration dropdown pick `Extension Tests`. 31 | - Press `F5` to run the tests in a new window with your extension loaded. 32 | - See the output of the test result in the debug console. 33 | - Make changes to `src/test/suite/extension.test.ts` or create new test files inside the `test/suite` folder. 34 | - The provided test runner will only consider files matching the name pattern `**.test.ts`. 35 | - You can create folders inside the `test` folder to structure your tests any way you want. 36 | 37 | ## Go further 38 | 39 | - [Follow UX guidelines](https://code.visualstudio.com/api/ux-guidelines/overview) to create extensions that seamlessly integrate with VS Code's native interface and patterns. 40 | - Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension). 41 | - [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace. 42 | - Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration). 43 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@esbuild/linux-loong64@0.15.7": 6 | version "0.15.7" 7 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.7.tgz#1ec4af4a16c554cbd402cc557ccdd874e3f7be53" 8 | integrity sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw== 9 | 10 | "@eslint/eslintrc@^1.3.1": 11 | version "1.3.1" 12 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.1.tgz#de0807bfeffc37b964a7d0400e0c348ce5a2543d" 13 | integrity sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ== 14 | dependencies: 15 | ajv "^6.12.4" 16 | debug "^4.3.2" 17 | espree "^9.4.0" 18 | globals "^13.15.0" 19 | ignore "^5.2.0" 20 | import-fresh "^3.2.1" 21 | js-yaml "^4.1.0" 22 | minimatch "^3.1.2" 23 | strip-json-comments "^3.1.1" 24 | 25 | "@humanwhocodes/config-array@^0.10.4": 26 | version "0.10.4" 27 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" 28 | integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== 29 | dependencies: 30 | "@humanwhocodes/object-schema" "^1.2.1" 31 | debug "^4.1.1" 32 | minimatch "^3.0.4" 33 | 34 | "@humanwhocodes/gitignore-to-minimatch@^1.0.2": 35 | version "1.0.2" 36 | resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" 37 | integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== 38 | 39 | "@humanwhocodes/module-importer@^1.0.1": 40 | version "1.0.1" 41 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 42 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 43 | 44 | "@humanwhocodes/object-schema@^1.2.1": 45 | version "1.2.1" 46 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 47 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 48 | 49 | "@nodelib/fs.scandir@2.1.5": 50 | version "2.1.5" 51 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 52 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 53 | dependencies: 54 | "@nodelib/fs.stat" "2.0.5" 55 | run-parallel "^1.1.9" 56 | 57 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 58 | version "2.0.5" 59 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 60 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 61 | 62 | "@nodelib/fs.walk@^1.2.3": 63 | version "1.2.8" 64 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 65 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 66 | dependencies: 67 | "@nodelib/fs.scandir" "2.1.5" 68 | fastq "^1.6.0" 69 | 70 | "@sindresorhus/is@^4.0.0": 71 | version "4.6.0" 72 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" 73 | integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== 74 | 75 | "@szmarczak/http-timer@^4.0.5": 76 | version "4.0.6" 77 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" 78 | integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== 79 | dependencies: 80 | defer-to-connect "^2.0.0" 81 | 82 | "@tootallnate/once@1": 83 | version "1.1.2" 84 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 85 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 86 | 87 | "@types/cacheable-request@^6.0.1": 88 | version "6.0.2" 89 | resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" 90 | integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== 91 | dependencies: 92 | "@types/http-cache-semantics" "*" 93 | "@types/keyv" "*" 94 | "@types/node" "*" 95 | "@types/responselike" "*" 96 | 97 | "@types/glob@^7.2.0": 98 | version "7.2.0" 99 | resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" 100 | integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== 101 | dependencies: 102 | "@types/minimatch" "*" 103 | "@types/node" "*" 104 | 105 | "@types/http-cache-semantics@*": 106 | version "4.0.1" 107 | resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" 108 | integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== 109 | 110 | "@types/json-schema@^7.0.9": 111 | version "7.0.11" 112 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" 113 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== 114 | 115 | "@types/keyv@*": 116 | version "3.1.4" 117 | resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" 118 | integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== 119 | dependencies: 120 | "@types/node" "*" 121 | 122 | "@types/minimatch@*": 123 | version "5.1.2" 124 | resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" 125 | integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== 126 | 127 | "@types/mocha@^9.1.1": 128 | version "9.1.1" 129 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" 130 | integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== 131 | 132 | "@types/node@*": 133 | version "18.7.16" 134 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.16.tgz#0eb3cce1e37c79619943d2fd903919fc30850601" 135 | integrity sha512-EQHhixfu+mkqHMZl1R2Ovuvn47PUw18azMJOTwSZr9/fhzHNGXAJ0ma0dayRVchprpCj0Kc1K1xKoWaATWF1qg== 136 | 137 | "@types/node@16.11.58": 138 | version "16.11.58" 139 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.58.tgz#0a3698dee3492617a8d5fe7998d18d7520b63026" 140 | integrity sha512-uMVxJ111wpHzkx/vshZFb6Qni3BOMnlWLq7q9jrwej7Yw/KvjsEbpxCCxw+hLKxexFMc8YmpG8J9tnEe/rKsIg== 141 | 142 | "@types/responselike@*", "@types/responselike@^1.0.0": 143 | version "1.0.0" 144 | resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" 145 | integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== 146 | dependencies: 147 | "@types/node" "*" 148 | 149 | "@types/semver@^7.3.12": 150 | version "7.3.12" 151 | resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.12.tgz#920447fdd78d76b19de0438b7f60df3c4a80bf1c" 152 | integrity sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A== 153 | 154 | "@types/vscode@^1.71.0": 155 | version "1.71.0" 156 | resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.71.0.tgz#a8d9bb7aca49b0455060e6eb978711b510bdd2e2" 157 | integrity sha512-nB50bBC9H/x2CpwW9FzRRRDrTZ7G0/POttJojvN/LiVfzTGfLyQIje1L1QRMdFXK9G41k5UJN/1B9S4of7CSzA== 158 | 159 | "@typescript-eslint/eslint-plugin@^5.36.2": 160 | version "5.36.2" 161 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.2.tgz#6df092a20e0f9ec748b27f293a12cb39d0c1fe4d" 162 | integrity sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw== 163 | dependencies: 164 | "@typescript-eslint/scope-manager" "5.36.2" 165 | "@typescript-eslint/type-utils" "5.36.2" 166 | "@typescript-eslint/utils" "5.36.2" 167 | debug "^4.3.4" 168 | functional-red-black-tree "^1.0.1" 169 | ignore "^5.2.0" 170 | regexpp "^3.2.0" 171 | semver "^7.3.7" 172 | tsutils "^3.21.0" 173 | 174 | "@typescript-eslint/parser@^5.36.2": 175 | version "5.36.2" 176 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.36.2.tgz#3ddf323d3ac85a25295a55fcb9c7a49ab4680ddd" 177 | integrity sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA== 178 | dependencies: 179 | "@typescript-eslint/scope-manager" "5.36.2" 180 | "@typescript-eslint/types" "5.36.2" 181 | "@typescript-eslint/typescript-estree" "5.36.2" 182 | debug "^4.3.4" 183 | 184 | "@typescript-eslint/scope-manager@5.36.2": 185 | version "5.36.2" 186 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.2.tgz#a75eb588a3879ae659514780831370642505d1cd" 187 | integrity sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw== 188 | dependencies: 189 | "@typescript-eslint/types" "5.36.2" 190 | "@typescript-eslint/visitor-keys" "5.36.2" 191 | 192 | "@typescript-eslint/type-utils@5.36.2": 193 | version "5.36.2" 194 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.36.2.tgz#752373f4babf05e993adf2cd543a763632826391" 195 | integrity sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw== 196 | dependencies: 197 | "@typescript-eslint/typescript-estree" "5.36.2" 198 | "@typescript-eslint/utils" "5.36.2" 199 | debug "^4.3.4" 200 | tsutils "^3.21.0" 201 | 202 | "@typescript-eslint/types@5.36.2": 203 | version "5.36.2" 204 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.36.2.tgz#a5066e500ebcfcee36694186ccc57b955c05faf9" 205 | integrity sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ== 206 | 207 | "@typescript-eslint/typescript-estree@5.36.2": 208 | version "5.36.2" 209 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.2.tgz#0c93418b36c53ba0bc34c61fe9405c4d1d8fe560" 210 | integrity sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w== 211 | dependencies: 212 | "@typescript-eslint/types" "5.36.2" 213 | "@typescript-eslint/visitor-keys" "5.36.2" 214 | debug "^4.3.4" 215 | globby "^11.1.0" 216 | is-glob "^4.0.3" 217 | semver "^7.3.7" 218 | tsutils "^3.21.0" 219 | 220 | "@typescript-eslint/utils@5.36.2": 221 | version "5.36.2" 222 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.36.2.tgz#b01a76f0ab244404c7aefc340c5015d5ce6da74c" 223 | integrity sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg== 224 | dependencies: 225 | "@types/json-schema" "^7.0.9" 226 | "@typescript-eslint/scope-manager" "5.36.2" 227 | "@typescript-eslint/types" "5.36.2" 228 | "@typescript-eslint/typescript-estree" "5.36.2" 229 | eslint-scope "^5.1.1" 230 | eslint-utils "^3.0.0" 231 | 232 | "@typescript-eslint/visitor-keys@5.36.2": 233 | version "5.36.2" 234 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.2.tgz#2f8f78da0a3bad3320d2ac24965791ac39dace5a" 235 | integrity sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A== 236 | dependencies: 237 | "@typescript-eslint/types" "5.36.2" 238 | eslint-visitor-keys "^3.3.0" 239 | 240 | "@ungap/promise-all-settled@1.1.2": 241 | version "1.1.2" 242 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" 243 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 244 | 245 | "@vscode/test-electron@^2.1.5": 246 | version "2.1.5" 247 | resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.1.5.tgz#ac98f8f445ea4590753f5fa0c7f6e4298f08c3b7" 248 | integrity sha512-O/ioqFpV+RvKbRykX2ItYPnbcZ4Hk5V0rY4uhQjQTLhGL9WZUvS7exzuYQCCI+ilSqJpctvxq2llTfGXf9UnnA== 249 | dependencies: 250 | http-proxy-agent "^4.0.1" 251 | https-proxy-agent "^5.0.0" 252 | rimraf "^3.0.2" 253 | unzipper "^0.10.11" 254 | 255 | acorn-jsx@^5.3.2: 256 | version "5.3.2" 257 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 258 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 259 | 260 | acorn@^8.8.0: 261 | version "8.8.0" 262 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" 263 | integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== 264 | 265 | agent-base@6: 266 | version "6.0.2" 267 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 268 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 269 | dependencies: 270 | debug "4" 271 | 272 | ajv@^6.10.0, ajv@^6.12.4: 273 | version "6.12.6" 274 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 275 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 276 | dependencies: 277 | fast-deep-equal "^3.1.1" 278 | fast-json-stable-stringify "^2.0.0" 279 | json-schema-traverse "^0.4.1" 280 | uri-js "^4.2.2" 281 | 282 | ansi-colors@4.1.1: 283 | version "4.1.1" 284 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 285 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 286 | 287 | ansi-regex@^5.0.1: 288 | version "5.0.1" 289 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 290 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 291 | 292 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 293 | version "4.3.0" 294 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 295 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 296 | dependencies: 297 | color-convert "^2.0.1" 298 | 299 | anymatch@~3.1.2: 300 | version "3.1.2" 301 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 302 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 303 | dependencies: 304 | normalize-path "^3.0.0" 305 | picomatch "^2.0.4" 306 | 307 | argparse@^2.0.1: 308 | version "2.0.1" 309 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 310 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 311 | 312 | array-union@^2.1.0: 313 | version "2.1.0" 314 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 315 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 316 | 317 | balanced-match@^1.0.0: 318 | version "1.0.2" 319 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 320 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 321 | 322 | big-integer@^1.6.17: 323 | version "1.6.51" 324 | resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" 325 | integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== 326 | 327 | binary-extensions@^2.0.0: 328 | version "2.2.0" 329 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 330 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 331 | 332 | binary@~0.3.0: 333 | version "0.3.0" 334 | resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" 335 | integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== 336 | dependencies: 337 | buffers "~0.1.1" 338 | chainsaw "~0.1.0" 339 | 340 | bluebird@~3.4.1: 341 | version "3.4.7" 342 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" 343 | integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== 344 | 345 | brace-expansion@^1.1.7: 346 | version "1.1.11" 347 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 348 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 349 | dependencies: 350 | balanced-match "^1.0.0" 351 | concat-map "0.0.1" 352 | 353 | brace-expansion@^2.0.1: 354 | version "2.0.1" 355 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 356 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 357 | dependencies: 358 | balanced-match "^1.0.0" 359 | 360 | braces@^3.0.2, braces@~3.0.2: 361 | version "3.0.2" 362 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 363 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 364 | dependencies: 365 | fill-range "^7.0.1" 366 | 367 | browser-stdout@1.3.1: 368 | version "1.3.1" 369 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 370 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 371 | 372 | buffer-indexof-polyfill@~1.0.0: 373 | version "1.0.2" 374 | resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" 375 | integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== 376 | 377 | buffers@~0.1.1: 378 | version "0.1.1" 379 | resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" 380 | integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== 381 | 382 | cacheable-lookup@^5.0.3: 383 | version "5.0.4" 384 | resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" 385 | integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== 386 | 387 | cacheable-request@^7.0.2: 388 | version "7.0.2" 389 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" 390 | integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== 391 | dependencies: 392 | clone-response "^1.0.2" 393 | get-stream "^5.1.0" 394 | http-cache-semantics "^4.0.0" 395 | keyv "^4.0.0" 396 | lowercase-keys "^2.0.0" 397 | normalize-url "^6.0.1" 398 | responselike "^2.0.0" 399 | 400 | callsites@^3.0.0: 401 | version "3.1.0" 402 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 403 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 404 | 405 | camelcase@^6.0.0: 406 | version "6.3.0" 407 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 408 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 409 | 410 | chainsaw@~0.1.0: 411 | version "0.1.0" 412 | resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" 413 | integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== 414 | dependencies: 415 | traverse ">=0.3.0 <0.4" 416 | 417 | chalk@^4.0.0, chalk@^4.1.0: 418 | version "4.1.2" 419 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 420 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 421 | dependencies: 422 | ansi-styles "^4.1.0" 423 | supports-color "^7.1.0" 424 | 425 | chokidar@3.5.3: 426 | version "3.5.3" 427 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 428 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 429 | dependencies: 430 | anymatch "~3.1.2" 431 | braces "~3.0.2" 432 | glob-parent "~5.1.2" 433 | is-binary-path "~2.1.0" 434 | is-glob "~4.0.1" 435 | normalize-path "~3.0.0" 436 | readdirp "~3.6.0" 437 | optionalDependencies: 438 | fsevents "~2.3.2" 439 | 440 | cliui@^7.0.2: 441 | version "7.0.4" 442 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 443 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 444 | dependencies: 445 | string-width "^4.2.0" 446 | strip-ansi "^6.0.0" 447 | wrap-ansi "^7.0.0" 448 | 449 | clone-response@^1.0.2: 450 | version "1.0.3" 451 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" 452 | integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== 453 | dependencies: 454 | mimic-response "^1.0.0" 455 | 456 | color-convert@^2.0.1: 457 | version "2.0.1" 458 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 459 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 460 | dependencies: 461 | color-name "~1.1.4" 462 | 463 | color-name@~1.1.4: 464 | version "1.1.4" 465 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 466 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 467 | 468 | concat-map@0.0.1: 469 | version "0.0.1" 470 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 471 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 472 | 473 | core-util-is@~1.0.0: 474 | version "1.0.3" 475 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 476 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 477 | 478 | cross-spawn@^7.0.2: 479 | version "7.0.3" 480 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 481 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 482 | dependencies: 483 | path-key "^3.1.0" 484 | shebang-command "^2.0.0" 485 | which "^2.0.1" 486 | 487 | debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: 488 | version "4.3.4" 489 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 490 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 491 | dependencies: 492 | ms "2.1.2" 493 | 494 | decamelize@^4.0.0: 495 | version "4.0.0" 496 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 497 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 498 | 499 | decompress-response@^6.0.0: 500 | version "6.0.0" 501 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 502 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 503 | dependencies: 504 | mimic-response "^3.1.0" 505 | 506 | deep-is@^0.1.3: 507 | version "0.1.4" 508 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 509 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 510 | 511 | defer-to-connect@^2.0.0: 512 | version "2.0.1" 513 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" 514 | integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== 515 | 516 | diff@5.0.0: 517 | version "5.0.0" 518 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 519 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 520 | 521 | dir-glob@^3.0.1: 522 | version "3.0.1" 523 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 524 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 525 | dependencies: 526 | path-type "^4.0.0" 527 | 528 | doctrine@^3.0.0: 529 | version "3.0.0" 530 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 531 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 532 | dependencies: 533 | esutils "^2.0.2" 534 | 535 | duplexer2@~0.1.4: 536 | version "0.1.4" 537 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" 538 | integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== 539 | dependencies: 540 | readable-stream "^2.0.2" 541 | 542 | emoji-regex@^8.0.0: 543 | version "8.0.0" 544 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 545 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 546 | 547 | end-of-stream@^1.1.0: 548 | version "1.4.4" 549 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 550 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 551 | dependencies: 552 | once "^1.4.0" 553 | 554 | esbuild-android-64@0.15.7: 555 | version "0.15.7" 556 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.7.tgz#a521604d8c4c6befc7affedc897df8ccde189bea" 557 | integrity sha512-p7rCvdsldhxQr3YHxptf1Jcd86dlhvc3EQmQJaZzzuAxefO9PvcI0GLOa5nCWem1AJ8iMRu9w0r5TG8pHmbi9w== 558 | 559 | esbuild-android-arm64@0.15.7: 560 | version "0.15.7" 561 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.7.tgz#307b81f1088bf1e81dfe5f3d1d63a2d2a2e3e68e" 562 | integrity sha512-L775l9ynJT7rVqRM5vo+9w5g2ysbOCfsdLV4CWanTZ1k/9Jb3IYlQ06VCI1edhcosTYJRECQFJa3eAvkx72eyQ== 563 | 564 | esbuild-darwin-64@0.15.7: 565 | version "0.15.7" 566 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.7.tgz#270117b0c4ec6bcbc5cf3a297a7d11954f007e11" 567 | integrity sha512-KGPt3r1c9ww009t2xLB6Vk0YyNOXh7hbjZ3EecHoVDxgtbUlYstMPDaReimKe6eOEfyY4hBEEeTvKwPsiH5WZg== 568 | 569 | esbuild-darwin-arm64@0.15.7: 570 | version "0.15.7" 571 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.7.tgz#97851eacd11dacb7719713602e3319e16202fc77" 572 | integrity sha512-kBIHvtVqbSGajN88lYMnR3aIleH3ABZLLFLxwL2stiuIGAjGlQW741NxVTpUHQXUmPzxi6POqc9npkXa8AcSZQ== 573 | 574 | esbuild-freebsd-64@0.15.7: 575 | version "0.15.7" 576 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.7.tgz#1de15ffaf5ae916aa925800aa6d02579960dd8c4" 577 | integrity sha512-hESZB91qDLV5MEwNxzMxPfbjAhOmtfsr9Wnuci7pY6TtEh4UDuevmGmkUIjX/b+e/k4tcNBMf7SRQ2mdNuK/HQ== 578 | 579 | esbuild-freebsd-arm64@0.15.7: 580 | version "0.15.7" 581 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.7.tgz#0f160dbf5c9a31a1d8dd87acbbcb1a04b7031594" 582 | integrity sha512-dLFR0ChH5t+b3J8w0fVKGvtwSLWCv7GYT2Y2jFGulF1L5HftQLzVGN+6pi1SivuiVSmTh28FwUhi9PwQicXI6Q== 583 | 584 | esbuild-linux-32@0.15.7: 585 | version "0.15.7" 586 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.7.tgz#422eb853370a5e40bdce8b39525380de11ccadec" 587 | integrity sha512-v3gT/LsONGUZcjbt2swrMjwxo32NJzk+7sAgtxhGx1+ZmOFaTRXBAi1PPfgpeo/J//Un2jIKm/I+qqeo4caJvg== 588 | 589 | esbuild-linux-64@0.15.7: 590 | version "0.15.7" 591 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.7.tgz#f89c468453bb3194b14f19dc32e0b99612e81d2b" 592 | integrity sha512-LxXEfLAKwOVmm1yecpMmWERBshl+Kv5YJ/1KnyAr6HRHFW8cxOEsEfisD3sVl/RvHyW//lhYUVSuy9jGEfIRAQ== 593 | 594 | esbuild-linux-arm64@0.15.7: 595 | version "0.15.7" 596 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.7.tgz#68a79d6eb5e032efb9168a0f340ccfd33d6350a1" 597 | integrity sha512-P3cfhudpzWDkglutWgXcT2S7Ft7o2e3YDMrP1n0z2dlbUZghUkKCyaWw0zhp4KxEEzt/E7lmrtRu/pGWnwb9vw== 598 | 599 | esbuild-linux-arm@0.15.7: 600 | version "0.15.7" 601 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.7.tgz#2b7c784d0b3339878013dfa82bf5eaf82c7ce7d3" 602 | integrity sha512-JKgAHtMR5f75wJTeuNQbyznZZa+pjiUHV7sRZp42UNdyXC6TiUYMW/8z8yIBAr2Fpad8hM1royZKQisqPABPvQ== 603 | 604 | esbuild-linux-mips64le@0.15.7: 605 | version "0.15.7" 606 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.7.tgz#bb8330a50b14aa84673816cb63cc6c8b9beb62cc" 607 | integrity sha512-T7XKuxl0VpeFLCJXub6U+iybiqh0kM/bWOTb4qcPyDDwNVhLUiPcGdG2/0S7F93czUZOKP57YiLV8YQewgLHKw== 608 | 609 | esbuild-linux-ppc64le@0.15.7: 610 | version "0.15.7" 611 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.7.tgz#52544e7fa992811eb996674090d0bc41f067a14b" 612 | integrity sha512-6mGuC19WpFN7NYbecMIJjeQgvDb5aMuvyk0PDYBJrqAEMkTwg3Z98kEKuCm6THHRnrgsdr7bp4SruSAxEM4eJw== 613 | 614 | esbuild-linux-riscv64@0.15.7: 615 | version "0.15.7" 616 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.7.tgz#a43ae60697992b957e454cbb622f7ee5297e8159" 617 | integrity sha512-uUJsezbswAYo/X7OU/P+PuL/EI9WzxsEQXDekfwpQ23uGiooxqoLFAPmXPcRAt941vjlY9jtITEEikWMBr+F/g== 618 | 619 | esbuild-linux-s390x@0.15.7: 620 | version "0.15.7" 621 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.7.tgz#8c76a125dd10a84c166294d77416caaf5e1c7b64" 622 | integrity sha512-+tO+xOyTNMc34rXlSxK7aCwJgvQyffqEM5MMdNDEeMU3ss0S6wKvbBOQfgd5jRPblfwJ6b+bKiz0g5nABpY0QQ== 623 | 624 | esbuild-netbsd-64@0.15.7: 625 | version "0.15.7" 626 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.7.tgz#19b2e75449d7d9c32b5d8a222bac2f1e0c3b08fd" 627 | integrity sha512-yVc4Wz+Pu3cP5hzm5kIygNPrjar/v5WCSoRmIjCPWfBVJkZNb5brEGKUlf+0Y759D48BCWa0WHrWXaNy0DULTQ== 628 | 629 | esbuild-openbsd-64@0.15.7: 630 | version "0.15.7" 631 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.7.tgz#1357b2bf72fd037d9150e751420a1fe4c8618ad7" 632 | integrity sha512-GsimbwC4FSR4lN3wf8XmTQ+r8/0YSQo21rWDL0XFFhLHKlzEA4SsT1Tl8bPYu00IU6UWSJ+b3fG/8SB69rcuEQ== 633 | 634 | esbuild-sunos-64@0.15.7: 635 | version "0.15.7" 636 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.7.tgz#87ab2c604592a9c3c763e72969da0d72bcde91d2" 637 | integrity sha512-8CDI1aL/ts0mDGbWzjEOGKXnU7p3rDzggHSBtVryQzkSOsjCHRVe0iFYUuhczlxU1R3LN/E7HgUO4NXzGGP/Ag== 638 | 639 | esbuild-windows-32@0.15.7: 640 | version "0.15.7" 641 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.7.tgz#c81e688c0457665a8d463a669e5bf60870323e99" 642 | integrity sha512-cOnKXUEPS8EGCzRSFa1x6NQjGhGsFlVgjhqGEbLTPsA7x4RRYiy2RKoArNUU4iR2vHmzqS5Gr84MEumO/wxYKA== 643 | 644 | esbuild-windows-64@0.15.7: 645 | version "0.15.7" 646 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.7.tgz#2421d1ae34b0561a9d6767346b381961266c4eff" 647 | integrity sha512-7MI08Ec2sTIDv+zH6StNBKO+2hGUYIT42GmFyW6MBBWWtJhTcQLinKS6ldIN1d52MXIbiJ6nXyCJ+LpL4jBm3Q== 648 | 649 | esbuild-windows-arm64@0.15.7: 650 | version "0.15.7" 651 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.7.tgz#7d5e9e060a7b454cb2f57f84a3f3c23c8f30b7d2" 652 | integrity sha512-R06nmqBlWjKHddhRJYlqDd3Fabx9LFdKcjoOy08YLimwmsswlFBJV4rXzZCxz/b7ZJXvrZgj8DDv1ewE9+StMw== 653 | 654 | esbuild@^0.15.7: 655 | version "0.15.7" 656 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.7.tgz#8a1f1aff58671a3199dd24df95314122fc1ddee8" 657 | integrity sha512-7V8tzllIbAQV1M4QoE52ImKu8hT/NLGlGXkiDsbEU5PS6K8Mn09ZnYoS+dcmHxOS9CRsV4IRAMdT3I67IyUNXw== 658 | optionalDependencies: 659 | "@esbuild/linux-loong64" "0.15.7" 660 | esbuild-android-64 "0.15.7" 661 | esbuild-android-arm64 "0.15.7" 662 | esbuild-darwin-64 "0.15.7" 663 | esbuild-darwin-arm64 "0.15.7" 664 | esbuild-freebsd-64 "0.15.7" 665 | esbuild-freebsd-arm64 "0.15.7" 666 | esbuild-linux-32 "0.15.7" 667 | esbuild-linux-64 "0.15.7" 668 | esbuild-linux-arm "0.15.7" 669 | esbuild-linux-arm64 "0.15.7" 670 | esbuild-linux-mips64le "0.15.7" 671 | esbuild-linux-ppc64le "0.15.7" 672 | esbuild-linux-riscv64 "0.15.7" 673 | esbuild-linux-s390x "0.15.7" 674 | esbuild-netbsd-64 "0.15.7" 675 | esbuild-openbsd-64 "0.15.7" 676 | esbuild-sunos-64 "0.15.7" 677 | esbuild-windows-32 "0.15.7" 678 | esbuild-windows-64 "0.15.7" 679 | esbuild-windows-arm64 "0.15.7" 680 | 681 | escalade@^3.1.1: 682 | version "3.1.1" 683 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 684 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 685 | 686 | escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: 687 | version "4.0.0" 688 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 689 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 690 | 691 | eslint-scope@^5.1.1: 692 | version "5.1.1" 693 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 694 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 695 | dependencies: 696 | esrecurse "^4.3.0" 697 | estraverse "^4.1.1" 698 | 699 | eslint-scope@^7.1.1: 700 | version "7.1.1" 701 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" 702 | integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== 703 | dependencies: 704 | esrecurse "^4.3.0" 705 | estraverse "^5.2.0" 706 | 707 | eslint-utils@^3.0.0: 708 | version "3.0.0" 709 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 710 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 711 | dependencies: 712 | eslint-visitor-keys "^2.0.0" 713 | 714 | eslint-visitor-keys@^2.0.0: 715 | version "2.1.0" 716 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 717 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 718 | 719 | eslint-visitor-keys@^3.3.0: 720 | version "3.3.0" 721 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" 722 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== 723 | 724 | eslint@^8.23.0: 725 | version "8.23.0" 726 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.0.tgz#a184918d288820179c6041bb3ddcc99ce6eea040" 727 | integrity sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA== 728 | dependencies: 729 | "@eslint/eslintrc" "^1.3.1" 730 | "@humanwhocodes/config-array" "^0.10.4" 731 | "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" 732 | "@humanwhocodes/module-importer" "^1.0.1" 733 | ajv "^6.10.0" 734 | chalk "^4.0.0" 735 | cross-spawn "^7.0.2" 736 | debug "^4.3.2" 737 | doctrine "^3.0.0" 738 | escape-string-regexp "^4.0.0" 739 | eslint-scope "^7.1.1" 740 | eslint-utils "^3.0.0" 741 | eslint-visitor-keys "^3.3.0" 742 | espree "^9.4.0" 743 | esquery "^1.4.0" 744 | esutils "^2.0.2" 745 | fast-deep-equal "^3.1.3" 746 | file-entry-cache "^6.0.1" 747 | find-up "^5.0.0" 748 | functional-red-black-tree "^1.0.1" 749 | glob-parent "^6.0.1" 750 | globals "^13.15.0" 751 | globby "^11.1.0" 752 | grapheme-splitter "^1.0.4" 753 | ignore "^5.2.0" 754 | import-fresh "^3.0.0" 755 | imurmurhash "^0.1.4" 756 | is-glob "^4.0.0" 757 | js-yaml "^4.1.0" 758 | json-stable-stringify-without-jsonify "^1.0.1" 759 | levn "^0.4.1" 760 | lodash.merge "^4.6.2" 761 | minimatch "^3.1.2" 762 | natural-compare "^1.4.0" 763 | optionator "^0.9.1" 764 | regexpp "^3.2.0" 765 | strip-ansi "^6.0.1" 766 | strip-json-comments "^3.1.0" 767 | text-table "^0.2.0" 768 | 769 | espree@^9.4.0: 770 | version "9.4.0" 771 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" 772 | integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== 773 | dependencies: 774 | acorn "^8.8.0" 775 | acorn-jsx "^5.3.2" 776 | eslint-visitor-keys "^3.3.0" 777 | 778 | esquery@^1.4.0: 779 | version "1.4.0" 780 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 781 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 782 | dependencies: 783 | estraverse "^5.1.0" 784 | 785 | esrecurse@^4.3.0: 786 | version "4.3.0" 787 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 788 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 789 | dependencies: 790 | estraverse "^5.2.0" 791 | 792 | estraverse@^4.1.1: 793 | version "4.3.0" 794 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 795 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 796 | 797 | estraverse@^5.1.0, estraverse@^5.2.0: 798 | version "5.3.0" 799 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 800 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 801 | 802 | esutils@^2.0.2: 803 | version "2.0.3" 804 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 805 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 806 | 807 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 808 | version "3.1.3" 809 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 810 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 811 | 812 | fast-glob@^3.2.9: 813 | version "3.2.12" 814 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" 815 | integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== 816 | dependencies: 817 | "@nodelib/fs.stat" "^2.0.2" 818 | "@nodelib/fs.walk" "^1.2.3" 819 | glob-parent "^5.1.2" 820 | merge2 "^1.3.0" 821 | micromatch "^4.0.4" 822 | 823 | fast-json-stable-stringify@^2.0.0: 824 | version "2.1.0" 825 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 826 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 827 | 828 | fast-levenshtein@^2.0.6: 829 | version "2.0.6" 830 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 831 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 832 | 833 | fastq@^1.6.0: 834 | version "1.13.0" 835 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 836 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 837 | dependencies: 838 | reusify "^1.0.4" 839 | 840 | file-entry-cache@^6.0.1: 841 | version "6.0.1" 842 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 843 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 844 | dependencies: 845 | flat-cache "^3.0.4" 846 | 847 | fill-range@^7.0.1: 848 | version "7.0.1" 849 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 850 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 851 | dependencies: 852 | to-regex-range "^5.0.1" 853 | 854 | find-up@5.0.0, find-up@^5.0.0: 855 | version "5.0.0" 856 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 857 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 858 | dependencies: 859 | locate-path "^6.0.0" 860 | path-exists "^4.0.0" 861 | 862 | flat-cache@^3.0.4: 863 | version "3.0.4" 864 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 865 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 866 | dependencies: 867 | flatted "^3.1.0" 868 | rimraf "^3.0.2" 869 | 870 | flat@^5.0.2: 871 | version "5.0.2" 872 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 873 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 874 | 875 | flatted@^3.1.0: 876 | version "3.2.7" 877 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" 878 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== 879 | 880 | fs.realpath@^1.0.0: 881 | version "1.0.0" 882 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 883 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 884 | 885 | fsevents@~2.3.2: 886 | version "2.3.2" 887 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 888 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 889 | 890 | fstream@^1.0.12: 891 | version "1.0.12" 892 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" 893 | integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== 894 | dependencies: 895 | graceful-fs "^4.1.2" 896 | inherits "~2.0.0" 897 | mkdirp ">=0.5 0" 898 | rimraf "2" 899 | 900 | functional-red-black-tree@^1.0.1: 901 | version "1.0.1" 902 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 903 | integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== 904 | 905 | get-caller-file@^2.0.5: 906 | version "2.0.5" 907 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 908 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 909 | 910 | get-stream@^5.1.0: 911 | version "5.2.0" 912 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 913 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 914 | dependencies: 915 | pump "^3.0.0" 916 | 917 | glob-parent@^5.1.2, glob-parent@~5.1.2: 918 | version "5.1.2" 919 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 920 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 921 | dependencies: 922 | is-glob "^4.0.1" 923 | 924 | glob-parent@^6.0.1: 925 | version "6.0.2" 926 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 927 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 928 | dependencies: 929 | is-glob "^4.0.3" 930 | 931 | glob@7.2.0: 932 | version "7.2.0" 933 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 934 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 935 | dependencies: 936 | fs.realpath "^1.0.0" 937 | inflight "^1.0.4" 938 | inherits "2" 939 | minimatch "^3.0.4" 940 | once "^1.3.0" 941 | path-is-absolute "^1.0.0" 942 | 943 | glob@^7.1.3: 944 | version "7.2.3" 945 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 946 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 947 | dependencies: 948 | fs.realpath "^1.0.0" 949 | inflight "^1.0.4" 950 | inherits "2" 951 | minimatch "^3.1.1" 952 | once "^1.3.0" 953 | path-is-absolute "^1.0.0" 954 | 955 | glob@^8.0.3: 956 | version "8.0.3" 957 | resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" 958 | integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== 959 | dependencies: 960 | fs.realpath "^1.0.0" 961 | inflight "^1.0.4" 962 | inherits "2" 963 | minimatch "^5.0.1" 964 | once "^1.3.0" 965 | 966 | globals@^13.15.0: 967 | version "13.17.0" 968 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" 969 | integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== 970 | dependencies: 971 | type-fest "^0.20.2" 972 | 973 | globby@^11.1.0: 974 | version "11.1.0" 975 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 976 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 977 | dependencies: 978 | array-union "^2.1.0" 979 | dir-glob "^3.0.1" 980 | fast-glob "^3.2.9" 981 | ignore "^5.2.0" 982 | merge2 "^1.4.1" 983 | slash "^3.0.0" 984 | 985 | got@^11.8.5: 986 | version "11.8.5" 987 | resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" 988 | integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ== 989 | dependencies: 990 | "@sindresorhus/is" "^4.0.0" 991 | "@szmarczak/http-timer" "^4.0.5" 992 | "@types/cacheable-request" "^6.0.1" 993 | "@types/responselike" "^1.0.0" 994 | cacheable-lookup "^5.0.3" 995 | cacheable-request "^7.0.2" 996 | decompress-response "^6.0.0" 997 | http2-wrapper "^1.0.0-beta.5.2" 998 | lowercase-keys "^2.0.0" 999 | p-cancelable "^2.0.0" 1000 | responselike "^2.0.0" 1001 | 1002 | graceful-fs@^4.1.2, graceful-fs@^4.2.2: 1003 | version "4.2.10" 1004 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 1005 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 1006 | 1007 | grapheme-splitter@^1.0.4: 1008 | version "1.0.4" 1009 | resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" 1010 | integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== 1011 | 1012 | has-flag@^4.0.0: 1013 | version "4.0.0" 1014 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1015 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1016 | 1017 | he@1.2.0: 1018 | version "1.2.0" 1019 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 1020 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 1021 | 1022 | http-cache-semantics@^4.0.0: 1023 | version "4.1.0" 1024 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 1025 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 1026 | 1027 | http-proxy-agent@^4.0.1: 1028 | version "4.0.1" 1029 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 1030 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 1031 | dependencies: 1032 | "@tootallnate/once" "1" 1033 | agent-base "6" 1034 | debug "4" 1035 | 1036 | http2-wrapper@^1.0.0-beta.5.2: 1037 | version "1.0.3" 1038 | resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" 1039 | integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== 1040 | dependencies: 1041 | quick-lru "^5.1.1" 1042 | resolve-alpn "^1.0.0" 1043 | 1044 | https-proxy-agent@^5.0.0: 1045 | version "5.0.1" 1046 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 1047 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 1048 | dependencies: 1049 | agent-base "6" 1050 | debug "4" 1051 | 1052 | ignore@^5.2.0: 1053 | version "5.2.0" 1054 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 1055 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 1056 | 1057 | import-fresh@^3.0.0, import-fresh@^3.2.1: 1058 | version "3.3.0" 1059 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1060 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1061 | dependencies: 1062 | parent-module "^1.0.0" 1063 | resolve-from "^4.0.0" 1064 | 1065 | imurmurhash@^0.1.4: 1066 | version "0.1.4" 1067 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1068 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1069 | 1070 | inflight@^1.0.4: 1071 | version "1.0.6" 1072 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1073 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1074 | dependencies: 1075 | once "^1.3.0" 1076 | wrappy "1" 1077 | 1078 | inherits@2, inherits@~2.0.0, inherits@~2.0.3: 1079 | version "2.0.4" 1080 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1081 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1082 | 1083 | is-binary-path@~2.1.0: 1084 | version "2.1.0" 1085 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1086 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1087 | dependencies: 1088 | binary-extensions "^2.0.0" 1089 | 1090 | is-extglob@^2.1.1: 1091 | version "2.1.1" 1092 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1093 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1094 | 1095 | is-fullwidth-code-point@^3.0.0: 1096 | version "3.0.0" 1097 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1098 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1099 | 1100 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 1101 | version "4.0.3" 1102 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1103 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1104 | dependencies: 1105 | is-extglob "^2.1.1" 1106 | 1107 | is-number@^7.0.0: 1108 | version "7.0.0" 1109 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1110 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1111 | 1112 | is-plain-obj@^2.1.0: 1113 | version "2.1.0" 1114 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 1115 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 1116 | 1117 | is-unicode-supported@^0.1.0: 1118 | version "0.1.0" 1119 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 1120 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 1121 | 1122 | isarray@~1.0.0: 1123 | version "1.0.0" 1124 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1125 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 1126 | 1127 | isexe@^2.0.0: 1128 | version "2.0.0" 1129 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1130 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1131 | 1132 | js-yaml@4.1.0, js-yaml@^4.1.0: 1133 | version "4.1.0" 1134 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1135 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1136 | dependencies: 1137 | argparse "^2.0.1" 1138 | 1139 | json-buffer@3.0.1: 1140 | version "3.0.1" 1141 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 1142 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 1143 | 1144 | json-schema-traverse@^0.4.1: 1145 | version "0.4.1" 1146 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1147 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1148 | 1149 | json-stable-stringify-without-jsonify@^1.0.1: 1150 | version "1.0.1" 1151 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1152 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 1153 | 1154 | keyv@^4.0.0: 1155 | version "4.5.0" 1156 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.0.tgz#dbce9ade79610b6e641a9a65f2f6499ba06b9bc6" 1157 | integrity sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA== 1158 | dependencies: 1159 | json-buffer "3.0.1" 1160 | 1161 | levn@^0.4.1: 1162 | version "0.4.1" 1163 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1164 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1165 | dependencies: 1166 | prelude-ls "^1.2.1" 1167 | type-check "~0.4.0" 1168 | 1169 | listenercount@~1.0.1: 1170 | version "1.0.1" 1171 | resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" 1172 | integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== 1173 | 1174 | locate-path@^6.0.0: 1175 | version "6.0.0" 1176 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1177 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1178 | dependencies: 1179 | p-locate "^5.0.0" 1180 | 1181 | lodash.merge@^4.6.2: 1182 | version "4.6.2" 1183 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1184 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1185 | 1186 | log-symbols@4.1.0: 1187 | version "4.1.0" 1188 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 1189 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1190 | dependencies: 1191 | chalk "^4.1.0" 1192 | is-unicode-supported "^0.1.0" 1193 | 1194 | lowercase-keys@^2.0.0: 1195 | version "2.0.0" 1196 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 1197 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 1198 | 1199 | lru-cache@^6.0.0: 1200 | version "6.0.0" 1201 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1202 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1203 | dependencies: 1204 | yallist "^4.0.0" 1205 | 1206 | merge2@^1.3.0, merge2@^1.4.1: 1207 | version "1.4.1" 1208 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1209 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1210 | 1211 | micromatch@^4.0.4: 1212 | version "4.0.5" 1213 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 1214 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1215 | dependencies: 1216 | braces "^3.0.2" 1217 | picomatch "^2.3.1" 1218 | 1219 | mimic-response@^1.0.0: 1220 | version "1.0.1" 1221 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 1222 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 1223 | 1224 | mimic-response@^3.1.0: 1225 | version "3.1.0" 1226 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 1227 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 1228 | 1229 | minimatch@5.0.1: 1230 | version "5.0.1" 1231 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" 1232 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== 1233 | dependencies: 1234 | brace-expansion "^2.0.1" 1235 | 1236 | minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: 1237 | version "3.1.2" 1238 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1239 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1240 | dependencies: 1241 | brace-expansion "^1.1.7" 1242 | 1243 | minimatch@^5.0.1: 1244 | version "5.1.0" 1245 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" 1246 | integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== 1247 | dependencies: 1248 | brace-expansion "^2.0.1" 1249 | 1250 | minimist@^1.2.6: 1251 | version "1.2.6" 1252 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 1253 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 1254 | 1255 | "mkdirp@>=0.5 0": 1256 | version "0.5.6" 1257 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 1258 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 1259 | dependencies: 1260 | minimist "^1.2.6" 1261 | 1262 | mocha@^10.0.0: 1263 | version "10.0.0" 1264 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" 1265 | integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA== 1266 | dependencies: 1267 | "@ungap/promise-all-settled" "1.1.2" 1268 | ansi-colors "4.1.1" 1269 | browser-stdout "1.3.1" 1270 | chokidar "3.5.3" 1271 | debug "4.3.4" 1272 | diff "5.0.0" 1273 | escape-string-regexp "4.0.0" 1274 | find-up "5.0.0" 1275 | glob "7.2.0" 1276 | he "1.2.0" 1277 | js-yaml "4.1.0" 1278 | log-symbols "4.1.0" 1279 | minimatch "5.0.1" 1280 | ms "2.1.3" 1281 | nanoid "3.3.3" 1282 | serialize-javascript "6.0.0" 1283 | strip-json-comments "3.1.1" 1284 | supports-color "8.1.1" 1285 | workerpool "6.2.1" 1286 | yargs "16.2.0" 1287 | yargs-parser "20.2.4" 1288 | yargs-unparser "2.0.0" 1289 | 1290 | ms@2.1.2: 1291 | version "2.1.2" 1292 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1293 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1294 | 1295 | ms@2.1.3: 1296 | version "2.1.3" 1297 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1298 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1299 | 1300 | nanoid@3.3.3: 1301 | version "3.3.3" 1302 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" 1303 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== 1304 | 1305 | natural-compare@^1.4.0: 1306 | version "1.4.0" 1307 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1308 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1309 | 1310 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1311 | version "3.0.0" 1312 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1313 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1314 | 1315 | normalize-url@^6.0.1: 1316 | version "6.1.0" 1317 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" 1318 | integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== 1319 | 1320 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1321 | version "1.4.0" 1322 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1323 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1324 | dependencies: 1325 | wrappy "1" 1326 | 1327 | optionator@^0.9.1: 1328 | version "0.9.1" 1329 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1330 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1331 | dependencies: 1332 | deep-is "^0.1.3" 1333 | fast-levenshtein "^2.0.6" 1334 | levn "^0.4.1" 1335 | prelude-ls "^1.2.1" 1336 | type-check "^0.4.0" 1337 | word-wrap "^1.2.3" 1338 | 1339 | p-cancelable@^2.0.0: 1340 | version "2.1.1" 1341 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" 1342 | integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== 1343 | 1344 | p-limit@^3.0.2: 1345 | version "3.1.0" 1346 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1347 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1348 | dependencies: 1349 | yocto-queue "^0.1.0" 1350 | 1351 | p-locate@^5.0.0: 1352 | version "5.0.0" 1353 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1354 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1355 | dependencies: 1356 | p-limit "^3.0.2" 1357 | 1358 | parent-module@^1.0.0: 1359 | version "1.0.1" 1360 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1361 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1362 | dependencies: 1363 | callsites "^3.0.0" 1364 | 1365 | path-exists@^4.0.0: 1366 | version "4.0.0" 1367 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1368 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1369 | 1370 | path-is-absolute@^1.0.0: 1371 | version "1.0.1" 1372 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1373 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1374 | 1375 | path-key@^3.1.0: 1376 | version "3.1.1" 1377 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1378 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1379 | 1380 | path-type@^4.0.0: 1381 | version "4.0.0" 1382 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1383 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1384 | 1385 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 1386 | version "2.3.1" 1387 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1388 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1389 | 1390 | prelude-ls@^1.2.1: 1391 | version "1.2.1" 1392 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1393 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1394 | 1395 | prettier@^2.7.1: 1396 | version "2.7.1" 1397 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" 1398 | integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== 1399 | 1400 | process-nextick-args@~2.0.0: 1401 | version "2.0.1" 1402 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1403 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1404 | 1405 | pump@^3.0.0: 1406 | version "3.0.0" 1407 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1408 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1409 | dependencies: 1410 | end-of-stream "^1.1.0" 1411 | once "^1.3.1" 1412 | 1413 | punycode@^2.1.0: 1414 | version "2.1.1" 1415 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1416 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1417 | 1418 | queue-microtask@^1.2.2: 1419 | version "1.2.3" 1420 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1421 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1422 | 1423 | quick-lru@^5.1.1: 1424 | version "5.1.1" 1425 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" 1426 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 1427 | 1428 | randombytes@^2.1.0: 1429 | version "2.1.0" 1430 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1431 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1432 | dependencies: 1433 | safe-buffer "^5.1.0" 1434 | 1435 | readable-stream@^2.0.2, readable-stream@~2.3.6: 1436 | version "2.3.7" 1437 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1438 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1439 | dependencies: 1440 | core-util-is "~1.0.0" 1441 | inherits "~2.0.3" 1442 | isarray "~1.0.0" 1443 | process-nextick-args "~2.0.0" 1444 | safe-buffer "~5.1.1" 1445 | string_decoder "~1.1.1" 1446 | util-deprecate "~1.0.1" 1447 | 1448 | readdirp@~3.6.0: 1449 | version "3.6.0" 1450 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1451 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1452 | dependencies: 1453 | picomatch "^2.2.1" 1454 | 1455 | regexpp@^3.2.0: 1456 | version "3.2.0" 1457 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1458 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1459 | 1460 | require-directory@^2.1.1: 1461 | version "2.1.1" 1462 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1463 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1464 | 1465 | resolve-alpn@^1.0.0: 1466 | version "1.2.1" 1467 | resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" 1468 | integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== 1469 | 1470 | resolve-from@^4.0.0: 1471 | version "4.0.0" 1472 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1473 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1474 | 1475 | responselike@^2.0.0: 1476 | version "2.0.1" 1477 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" 1478 | integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== 1479 | dependencies: 1480 | lowercase-keys "^2.0.0" 1481 | 1482 | reusify@^1.0.4: 1483 | version "1.0.4" 1484 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1485 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1486 | 1487 | rimraf@2: 1488 | version "2.7.1" 1489 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 1490 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 1491 | dependencies: 1492 | glob "^7.1.3" 1493 | 1494 | rimraf@^3.0.2: 1495 | version "3.0.2" 1496 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1497 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1498 | dependencies: 1499 | glob "^7.1.3" 1500 | 1501 | run-parallel@^1.1.9: 1502 | version "1.2.0" 1503 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1504 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1505 | dependencies: 1506 | queue-microtask "^1.2.2" 1507 | 1508 | safe-buffer@^5.1.0: 1509 | version "5.2.1" 1510 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1511 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1512 | 1513 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1514 | version "5.1.2" 1515 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1516 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1517 | 1518 | semver@^7.3.7: 1519 | version "7.3.7" 1520 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" 1521 | integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== 1522 | dependencies: 1523 | lru-cache "^6.0.0" 1524 | 1525 | serialize-javascript@6.0.0: 1526 | version "6.0.0" 1527 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 1528 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 1529 | dependencies: 1530 | randombytes "^2.1.0" 1531 | 1532 | setimmediate@~1.0.4: 1533 | version "1.0.5" 1534 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 1535 | integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== 1536 | 1537 | shebang-command@^2.0.0: 1538 | version "2.0.0" 1539 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1540 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1541 | dependencies: 1542 | shebang-regex "^3.0.0" 1543 | 1544 | shebang-regex@^3.0.0: 1545 | version "3.0.0" 1546 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1547 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1548 | 1549 | slash@^3.0.0: 1550 | version "3.0.0" 1551 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1552 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1553 | 1554 | string-width@^4.1.0, string-width@^4.2.0: 1555 | version "4.2.3" 1556 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1557 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1558 | dependencies: 1559 | emoji-regex "^8.0.0" 1560 | is-fullwidth-code-point "^3.0.0" 1561 | strip-ansi "^6.0.1" 1562 | 1563 | string_decoder@~1.1.1: 1564 | version "1.1.1" 1565 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1566 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1567 | dependencies: 1568 | safe-buffer "~5.1.0" 1569 | 1570 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1571 | version "6.0.1" 1572 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1573 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1574 | dependencies: 1575 | ansi-regex "^5.0.1" 1576 | 1577 | strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1578 | version "3.1.1" 1579 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1580 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1581 | 1582 | supports-color@8.1.1: 1583 | version "8.1.1" 1584 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1585 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1586 | dependencies: 1587 | has-flag "^4.0.0" 1588 | 1589 | supports-color@^7.1.0: 1590 | version "7.2.0" 1591 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1592 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1593 | dependencies: 1594 | has-flag "^4.0.0" 1595 | 1596 | text-table@^0.2.0: 1597 | version "0.2.0" 1598 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1599 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 1600 | 1601 | to-regex-range@^5.0.1: 1602 | version "5.0.1" 1603 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1604 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1605 | dependencies: 1606 | is-number "^7.0.0" 1607 | 1608 | "traverse@>=0.3.0 <0.4": 1609 | version "0.3.9" 1610 | resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" 1611 | integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== 1612 | 1613 | tslib@^1.8.1: 1614 | version "1.14.1" 1615 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1616 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1617 | 1618 | tsutils@^3.21.0: 1619 | version "3.21.0" 1620 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 1621 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 1622 | dependencies: 1623 | tslib "^1.8.1" 1624 | 1625 | type-check@^0.4.0, type-check@~0.4.0: 1626 | version "0.4.0" 1627 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1628 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1629 | dependencies: 1630 | prelude-ls "^1.2.1" 1631 | 1632 | type-fest@^0.20.2: 1633 | version "0.20.2" 1634 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1635 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1636 | 1637 | typescript@^4.8.3: 1638 | version "4.8.3" 1639 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" 1640 | integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== 1641 | 1642 | unzipper@^0.10.11: 1643 | version "0.10.11" 1644 | resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" 1645 | integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== 1646 | dependencies: 1647 | big-integer "^1.6.17" 1648 | binary "~0.3.0" 1649 | bluebird "~3.4.1" 1650 | buffer-indexof-polyfill "~1.0.0" 1651 | duplexer2 "~0.1.4" 1652 | fstream "^1.0.12" 1653 | graceful-fs "^4.2.2" 1654 | listenercount "~1.0.1" 1655 | readable-stream "~2.3.6" 1656 | setimmediate "~1.0.4" 1657 | 1658 | uri-js@^4.2.2: 1659 | version "4.4.1" 1660 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1661 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1662 | dependencies: 1663 | punycode "^2.1.0" 1664 | 1665 | util-deprecate@~1.0.1: 1666 | version "1.0.2" 1667 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1668 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1669 | 1670 | which@^2.0.1: 1671 | version "2.0.2" 1672 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1673 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1674 | dependencies: 1675 | isexe "^2.0.0" 1676 | 1677 | word-wrap@^1.2.3: 1678 | version "1.2.3" 1679 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1680 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1681 | 1682 | workerpool@6.2.1: 1683 | version "6.2.1" 1684 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" 1685 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== 1686 | 1687 | wrap-ansi@^7.0.0: 1688 | version "7.0.0" 1689 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1690 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1691 | dependencies: 1692 | ansi-styles "^4.0.0" 1693 | string-width "^4.1.0" 1694 | strip-ansi "^6.0.0" 1695 | 1696 | wrappy@1: 1697 | version "1.0.2" 1698 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1699 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1700 | 1701 | y18n@^5.0.5: 1702 | version "5.0.8" 1703 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1704 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1705 | 1706 | yallist@^4.0.0: 1707 | version "4.0.0" 1708 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1709 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1710 | 1711 | yargs-parser@20.2.4: 1712 | version "20.2.4" 1713 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 1714 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1715 | 1716 | yargs-parser@^20.2.2: 1717 | version "20.2.9" 1718 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1719 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1720 | 1721 | yargs-unparser@2.0.0: 1722 | version "2.0.0" 1723 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1724 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1725 | dependencies: 1726 | camelcase "^6.0.0" 1727 | decamelize "^4.0.0" 1728 | flat "^5.0.2" 1729 | is-plain-obj "^2.1.0" 1730 | 1731 | yargs@16.2.0: 1732 | version "16.2.0" 1733 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1734 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1735 | dependencies: 1736 | cliui "^7.0.2" 1737 | escalade "^3.1.1" 1738 | get-caller-file "^2.0.5" 1739 | require-directory "^2.1.1" 1740 | string-width "^4.2.0" 1741 | y18n "^5.0.5" 1742 | yargs-parser "^20.2.2" 1743 | 1744 | yocto-queue@^0.1.0: 1745 | version "0.1.0" 1746 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1747 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1748 | --------------------------------------------------------------------------------