├── .github └── FUNDING.yml ├── .gitignore ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── _config.yml ├── docker-compose.yml ├── media ├── gitea-issues.png └── issue.svg ├── package-lock.json ├── package.json ├── resources ├── bug.svg ├── dark │ ├── create.svg │ ├── issue.svg │ └── refresh.svg ├── feature.svg ├── icon-highres.png ├── icon.png └── light │ ├── create.svg │ ├── issue.svg │ └── refresh.svg ├── src ├── IGiteaResponse.ts ├── config.ts ├── extension.ts ├── giteaConnector.ts ├── issue.ts ├── issueProvider.ts ├── logger.ts └── template.issues.ts ├── tsconfig.json ├── tslint.json └── vsc-extension-quickstart.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: ijustdev 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | node_modules 3 | .vscode-test/ 4 | # *.vsix 5 | .gitea/ 6 | gitea/ 7 | mysql/ -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "yzhang.markdown-all-in-one", 6 | "dbaeumer.vscode-eslint", 7 | "ms-vscode.vscode-typescript-next" 8 | ] 9 | } -------------------------------------------------------------------------------- /.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 | "name": "Run Extension", 9 | "type": "extensionHost", 10 | "request": "launch", 11 | "runtimeExecutable": "${execPath}", 12 | "args": [ 13 | "--extensionDevelopmentPath=${workspaceFolder}" 14 | ], 15 | "outFiles": [ 16 | "${workspaceFolder}/out/**/*.js" 17 | ], 18 | "preLaunchTask": "npm: watch" 19 | }, 20 | { 21 | "name": "Extension Tests", 22 | "type": "extensionHost", 23 | "request": "launch", 24 | "runtimeExecutable": "${execPath}", 25 | "args": [ 26 | "--extensionDevelopmentPath=${workspaceFolder}", 27 | "--extensionTestsPath=${workspaceFolder}/out/test" 28 | ], 29 | "outFiles": [ 30 | "${workspaceFolder}/out/test/**/*.js" 31 | ], 32 | "preLaunchTask": "npm: watch" 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /.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 | "editor.detectIndentation": false, 12 | "prettier.tabWidth": 2, 13 | "prettier.singleQuote": true 14 | } 15 | -------------------------------------------------------------------------------- /.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": "$tsc-watch", 10 | "isBackground": true, 11 | "presentation": { 12 | "reveal": "never" 13 | }, 14 | "group": { 15 | "kind": "build", 16 | "isDefault": true 17 | } 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | out/test/** 4 | src/** 5 | .gitignore 6 | vsc-extension-quickstart.md 7 | **/tsconfig.json 8 | **/tslint.json 9 | **/*.map 10 | **/*.ts -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to the "gitea-vscode" 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.0.2] - 2019-04-10 8 | ### Added: 9 | - Configfile with token and repo properties 10 | - Refresh button (Await HTTP Request) 11 | - Multiple Pages 12 | ### Removed: 13 | - Interval for updating 14 | 15 | ## [0.0.3] - 2019-04-10 16 | ### Added: 17 | - Implemented [Create issue icon](./resources/dark/create.svg) 18 | - Interval for updating (Issuelist now gets updated every ten minutes) 19 | - Closed Issues View 20 | - SSL server support 21 | - License 22 | ### Refactored: 23 | - [IssueProvider](./src/issueProvider.ts) splitted up in two parts: OpenIssuesProvider and ClosedIssuesProvider 24 | - class Issue is now in [issue.ts](./src/issue.ts) 25 | - organizing imports 26 | - renaming 27 | 28 | ## [0.0.4] - 2019-04-11 29 | ### Fixed: 30 | - [Issue 1][1] - `\n` is now represented as ´
´-tag 31 | - [Issue 2][2] - Markdown is now represented as HTML 32 | 33 | ## [0.0.5] - 2019-04-12 34 | ### Added: 35 | - Child items to root items. Collapsable item now shows assignee, state, id and list all labels from the issue 36 | - Label dependent icons 37 | ### Refactored: 38 | - Created two methods that are used in both classes (the closed and the open issues provider) 39 | 40 | ## [0.0.6] - 2019-04-12 41 | ### Added: 42 | - Label dependent icons now allow the user to use the colors from the Gitea server 43 | 44 | ## [0.0.7] - 2019-06-14 45 | ### Added: 46 | - Every issue can now be opened just once at a time 47 | - Repo settings moved to workspace settings 48 | - Token setting moved to user settings 49 | ### Refactored: 50 | - Removed "filename" from `issue.ts` `labelDependentIcon()` 51 | - Cleaning files up 52 | 53 | ## [0.0.8] - 2019-07-29 54 | ### Added: 55 | - Icon for marketplace 56 | - ReadMe Icon and styling 57 | ### Removed: 58 | - InitRepo Command 59 | ### Refactored: 60 | - Changelog 61 | 62 | ## [0.0.9] - 2019-07-31 63 | ### Added: 64 | - Multiple gitea instances are now possible. The key is now stored in the workspace settings 65 | - BuyMeACoffeBadge ReadMe 66 | 67 | ## [1.0.0] - 2019-07-31 68 | ### Added: 69 | - Emojis in treeview 70 | 71 | ## [1.0.1] - 2020-08-02 72 | ### Added: 73 | - Port settings 74 | 75 | ## [1.2.0] - 2020-12-26 76 | ### Added: 77 | - feat: [#21][21]: introduce baseURL for Gitea instances. 78 | 79 | ## [1.2.1] - 2020-12-31 80 | ### Added: 81 | - fix: [#21][21] missing '/' 82 | ### Removed: 83 | - versions folder 84 | 85 | ## [Unreleased] 86 | 87 | [1]: https://github.com/IJustDev/Gitea-VSCode/issues/1 88 | [2]: https://github.com/IJustDev/Gitea-VSCode/issues/2 89 | [21]: https://github.com/IJustDev/Gitea-VSCode/issues/21 90 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | When contributing to this repository, please first discuss the change you wish to make via issue, 4 | email, or any other method with the owners of this repository before making a change. 5 | 6 | Please note we have a code of conduct, please follow it in all your interactions with the project. 7 | 8 | ## Pull Request Process 9 | 10 | 1. Ensure any install or build dependencies are removed before the end of the layer when doing a 11 | build. 12 | 2. Update the README.md with details of changes to the interface, this includes new environment 13 | variables, exposed ports, useful file locations and container parameters. 14 | 3. Increase the version numbers in any examples files and the README.md to the new version that this 15 | Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). 16 | 4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you 17 | do not have permission to do that, you may request the second reviewer to merge it for you. 18 | 19 | ## Code of Conduct 20 | 21 | ### Our Pledge 22 | 23 | In the interest of fostering an open and welcoming environment, we as 24 | contributors and maintainers pledge to making participation in our project and 25 | our community a harassment-free experience for everyone, regardless of age, body 26 | size, disability, ethnicity, gender identity and expression, level of experience, 27 | nationality, personal appearance, race, religion, or sexual identity and 28 | orientation. 29 | 30 | ### Our Standards 31 | 32 | Examples of behavior that contributes to creating a positive environment 33 | include: 34 | 35 | * Using welcoming and inclusive language 36 | * Being respectful of differing viewpoints and experiences 37 | * Gracefully accepting constructive criticism 38 | * Focusing on what is best for the community 39 | * Showing empathy towards other community members 40 | 41 | Examples of unacceptable behavior by participants include: 42 | 43 | * The use of sexualized language or imagery and unwelcome sexual attention or 44 | advances 45 | * Trolling, insulting/derogatory comments, and personal or political attacks 46 | * Public or private harassment 47 | * Publishing others' private information, such as a physical or electronic 48 | address, without explicit permission 49 | * Other conduct which could reasonably be considered inappropriate in a 50 | professional setting 51 | 52 | ### Our Responsibilities 53 | 54 | Project maintainers are responsible for clarifying the standards of acceptable 55 | behavior and are expected to take appropriate and fair corrective action in 56 | response to any instances of unacceptable behavior. 57 | 58 | Project maintainers have the right and responsibility to remove, edit, or 59 | reject comments, commits, code, wiki edits, issues, and other contributions 60 | that are not aligned to this Code of Conduct, or to ban temporarily or 61 | permanently any contributor for other behaviors that they deem inappropriate, 62 | threatening, offensive, or harmful. 63 | 64 | ### Scope 65 | 66 | This Code of Conduct applies both within project spaces and in public spaces 67 | when an individual is representing the project or its community. Examples of 68 | representing a project or community include using an official project e-mail 69 | address, posting via an official social media account, or acting as an appointed 70 | representative at an online or offline event. Representation of a project may be 71 | further defined and clarified by project maintainers. 72 | 73 | ### Enforcement 74 | 75 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 76 | reported by contacting the project team at [INSERT EMAIL ADDRESS]. All 77 | complaints will be reviewed and investigated and will result in a response that 78 | is deemed necessary and appropriate to the circumstances. The project team is 79 | obligated to maintain confidentiality with regard to the reporter of an incident. 80 | Further details of specific enforcement policies may be posted separately. 81 | 82 | Project maintainers who do not follow or enforce the Code of Conduct in good 83 | faith may face temporary or permanent repercussions as determined by other 84 | members of the project's leadership. 85 | 86 | ### Attribution 87 | 88 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 89 | available at [http://contributor-covenant.org/version/1/4][version] 90 | 91 | [homepage]: http://contributor-covenant.org 92 | [version]: http://contributor-covenant.org/version/1/4/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Panov Alexander 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | 10 | ![GitHub](https://img.shields.io/github/license/ijustdev/gitea-vscode) 11 | ![Visual Studio Marketplace Version](https://img.shields.io/visual-studio-marketplace/v/ijustdev.gitea-vscode) 12 | ![Visual Studio Marketplace Installs](https://img.shields.io/visual-studio-marketplace/i/ijustdev.gitea-vscode) 13 | [![Gitter](https://badges.gitter.im/Gitea-VSCode/community.svg)](https://gitter.im/Gitea-VSCode/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) 14 | 15 |
16 | 17 | ## Overview 18 | Gitea-VSCode is an Visual Studio Code extension that allows you to manage (currently only view) your issues. 19 | 20 | ## Support 21 | Buy Me A Coffee 22 | 23 | ## Getting Started 24 | 25 | Go to your settings, and find the `Gitea` section, and fill out the details. 26 | 27 | Please make sure not to make your authtoken public, as it can be used to act on your behalf. 28 | Keep instance key `"gitea.token"` in [user settings](https://vscode.readthedocs.io/en/latest/getstarted/settings/) other section keys keep in `.vscode/settings.json`. 29 | Otherwise do not push the .vscode folder to your repository and doublecheck this part. It contains your gitea server instance key. 30 | 31 | ### Config example 32 | 33 | - go to `https://%YOUR_GITEA_SERVER/user/settings/applications` and `Generate Token` 34 | - fill `,"gitea.token": "%YOUR_KEY%"` in VS code user settings in following locations: 35 | - Win %APPDATA%\Code\User\settings.json 36 | - Mac $HOME/Library/Application Support/Code/User/settings.json 37 | - Linux $HOME/.config/Code/User/settings.json 38 | - fill in `.vscode/settings.json` 39 | ``` 40 | , "gitea.instanceURL": "%YOUR_GITEA_SERVER%" 41 | , "gitea.owner": "%OWNER%" 42 | , "gitea.repo": "%REPO_NAME%" 43 | ``` 44 | 45 | ### The following details are needed 46 | 47 | - Authtoken 48 | - Port (either 80 or 443) in case that you use docker please enter the exposed port 49 | - BaseURL (default to "") in case you have your instance reachable on a suburl. 50 | - Domain in format: "example.com" 51 | - Repository owner (may be an organisation): "TestOrganisation" 52 | - Repository name "ExampleRepository" 53 | 54 | When you've finished you can press the refresh button in the open issues section and you'll see the issues of the first 10 pages (only open issues). 55 | 56 | ## Issue colors 57 | 58 | ![Issues with multiple colors](./media/gitea-issues.png) 59 | 60 | In order to get nice looking issue icons in multiple colors (of your choice) you just need to assign a label to your issue. The color is being fetched automatically. In most cases you need to restart visual studio code to apply the icons in the issues tab if you've changed them though. 61 | 62 | ## Contributing 63 | Please refer to each project's style and [contribution guidelines](CONTRIBUTING.md) for submitting patches and additions. In general, we follow the "fork-and-pull" Git workflow. 64 | 65 | 1. **Fork** the repo on GitHub 66 | 2. **Clone** the project to your own machine 67 | 3. **Commit** changes to your own branch 68 | 4. **Push** your work back up to your fork 69 | 5. Submit a **Pull request** so that we can review your changes 70 | 71 | NOTE: Be sure to merge the latest from "upstream" before making a pull request! 72 | 73 | ## Roadmap 74 | 75 | - Implement a `Close Issue` Button 76 | - Create Issues via Webview 77 | - `Comment` Issues 78 | - Support multiple git servers 79 | 80 | 81 | [logo]: resources/icon.png 82 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | networks: 4 | gitea: 5 | external: false 6 | 7 | services: 8 | db: 9 | image: mysql:5.7 10 | restart: always 11 | environment: 12 | - MYSQL_ROOT_PASSWORD=gitea 13 | - MYSQL_USER=gitea 14 | - MYSQL_PASSWORD=gitea 15 | - MYSQL_DATABASE=gitea 16 | networks: 17 | - gitea 18 | volumes: 19 | - ./mysql:/var/lib/mysql 20 | server: 21 | image: gitea/gitea:1.13.3 22 | container_name: gitea 23 | environment: 24 | - USER_UID=1000 25 | - USER_GID=1000 26 | - DB_TYPE=mysql 27 | - DB_HOST=db:3306 28 | - DB_NAME=gitea 29 | - DB_USER=gitea 30 | - DB_PASSWD=gitea 31 | restart: always 32 | networks: 33 | - gitea 34 | volumes: 35 | - ./gitea:/data 36 | - /etc/timezone:/etc/timezone:ro 37 | - /etc/localtime:/etc/localtime:ro 38 | ports: 39 | - "8080:3000" 40 | - "222:22" 41 | depends_on: 42 | - db 43 | -------------------------------------------------------------------------------- /media/gitea-issues.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IJustDev/Gitea-VSCode/ea43e429b43866ce2010e5cfb27c0c308fa63d31/media/gitea-issues.png -------------------------------------------------------------------------------- /media/issue.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gitea-vscode", 3 | "version": "2.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "gitea-vscode", 9 | "version": "2.1.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "axios": "^0.27.2", 13 | "markdown-it": "^13.0.1" 14 | }, 15 | "devDependencies": { 16 | "@types/markdown-it": "^12.2.3", 17 | "@types/mocha": "^9.1.1", 18 | "@types/node": "16.x", 19 | "@types/vscode": "^1.70.0", 20 | "eslint": "^8.20.0", 21 | "typescript": "^4.7.4" 22 | }, 23 | "engines": { 24 | "vscode": "^1.70.0" 25 | } 26 | }, 27 | "node_modules/@eslint/eslintrc": { 28 | "version": "1.3.0", 29 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", 30 | "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", 31 | "dev": true, 32 | "dependencies": { 33 | "ajv": "^6.12.4", 34 | "debug": "^4.3.2", 35 | "espree": "^9.3.2", 36 | "globals": "^13.15.0", 37 | "ignore": "^5.2.0", 38 | "import-fresh": "^3.2.1", 39 | "js-yaml": "^4.1.0", 40 | "minimatch": "^3.1.2", 41 | "strip-json-comments": "^3.1.1" 42 | }, 43 | "engines": { 44 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 45 | } 46 | }, 47 | "node_modules/@eslint/eslintrc/node_modules/js-yaml": { 48 | "version": "4.1.0", 49 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 50 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 51 | "dev": true, 52 | "dependencies": { 53 | "argparse": "^2.0.1" 54 | }, 55 | "bin": { 56 | "js-yaml": "bin/js-yaml.js" 57 | } 58 | }, 59 | "node_modules/@humanwhocodes/config-array": { 60 | "version": "0.10.4", 61 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", 62 | "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", 63 | "dev": true, 64 | "dependencies": { 65 | "@humanwhocodes/object-schema": "^1.2.1", 66 | "debug": "^4.1.1", 67 | "minimatch": "^3.0.4" 68 | }, 69 | "engines": { 70 | "node": ">=10.10.0" 71 | } 72 | }, 73 | "node_modules/@humanwhocodes/gitignore-to-minimatch": { 74 | "version": "1.0.2", 75 | "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", 76 | "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", 77 | "dev": true, 78 | "funding": { 79 | "type": "github", 80 | "url": "https://github.com/sponsors/nzakas" 81 | } 82 | }, 83 | "node_modules/@humanwhocodes/object-schema": { 84 | "version": "1.2.1", 85 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 86 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 87 | "dev": true 88 | }, 89 | "node_modules/@nodelib/fs.scandir": { 90 | "version": "2.1.5", 91 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 92 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 93 | "dev": true, 94 | "dependencies": { 95 | "@nodelib/fs.stat": "2.0.5", 96 | "run-parallel": "^1.1.9" 97 | }, 98 | "engines": { 99 | "node": ">= 8" 100 | } 101 | }, 102 | "node_modules/@nodelib/fs.stat": { 103 | "version": "2.0.5", 104 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 105 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 106 | "dev": true, 107 | "engines": { 108 | "node": ">= 8" 109 | } 110 | }, 111 | "node_modules/@nodelib/fs.walk": { 112 | "version": "1.2.8", 113 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 114 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 115 | "dev": true, 116 | "dependencies": { 117 | "@nodelib/fs.scandir": "2.1.5", 118 | "fastq": "^1.6.0" 119 | }, 120 | "engines": { 121 | "node": ">= 8" 122 | } 123 | }, 124 | "node_modules/@types/linkify-it": { 125 | "version": "3.0.2", 126 | "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", 127 | "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", 128 | "dev": true 129 | }, 130 | "node_modules/@types/markdown-it": { 131 | "version": "12.2.3", 132 | "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", 133 | "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", 134 | "dev": true, 135 | "dependencies": { 136 | "@types/linkify-it": "*", 137 | "@types/mdurl": "*" 138 | } 139 | }, 140 | "node_modules/@types/mdurl": { 141 | "version": "1.0.2", 142 | "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", 143 | "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", 144 | "dev": true 145 | }, 146 | "node_modules/@types/mocha": { 147 | "version": "9.1.1", 148 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", 149 | "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", 150 | "dev": true 151 | }, 152 | "node_modules/@types/node": { 153 | "version": "16.11.49", 154 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.49.tgz", 155 | "integrity": "sha512-Abq9fBviLV93OiXMu+f6r0elxCzRwc0RC5f99cU892uBITL44pTvgvEqlRlPRi8EGcO1z7Cp8A4d0s/p3J/+Nw==", 156 | "dev": true 157 | }, 158 | "node_modules/@types/vscode": { 159 | "version": "1.70.0", 160 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.70.0.tgz", 161 | "integrity": "sha512-3/9Fz0F2eBgwciazc94Ien+9u1elnjFg9YAhvAb3qDy/WeFWD9VrOPU7CIytryOVUdbxus8uzL4VZYONA0gDtA==", 162 | "dev": true 163 | }, 164 | "node_modules/acorn": { 165 | "version": "8.8.0", 166 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", 167 | "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", 168 | "dev": true, 169 | "bin": { 170 | "acorn": "bin/acorn" 171 | }, 172 | "engines": { 173 | "node": ">=0.4.0" 174 | } 175 | }, 176 | "node_modules/acorn-jsx": { 177 | "version": "5.3.2", 178 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 179 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 180 | "dev": true, 181 | "peerDependencies": { 182 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 183 | } 184 | }, 185 | "node_modules/ajv": { 186 | "version": "6.12.6", 187 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 188 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 189 | "dev": true, 190 | "dependencies": { 191 | "fast-deep-equal": "^3.1.1", 192 | "fast-json-stable-stringify": "^2.0.0", 193 | "json-schema-traverse": "^0.4.1", 194 | "uri-js": "^4.2.2" 195 | }, 196 | "funding": { 197 | "type": "github", 198 | "url": "https://github.com/sponsors/epoberezkin" 199 | } 200 | }, 201 | "node_modules/ansi-regex": { 202 | "version": "5.0.1", 203 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 204 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 205 | "dev": true, 206 | "engines": { 207 | "node": ">=8" 208 | } 209 | }, 210 | "node_modules/argparse": { 211 | "version": "2.0.1", 212 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 213 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 214 | }, 215 | "node_modules/array-union": { 216 | "version": "2.1.0", 217 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 218 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 219 | "dev": true, 220 | "engines": { 221 | "node": ">=8" 222 | } 223 | }, 224 | "node_modules/asynckit": { 225 | "version": "0.4.0", 226 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 227 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 228 | }, 229 | "node_modules/axios": { 230 | "version": "0.27.2", 231 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", 232 | "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", 233 | "dependencies": { 234 | "follow-redirects": "^1.14.9", 235 | "form-data": "^4.0.0" 236 | } 237 | }, 238 | "node_modules/balanced-match": { 239 | "version": "1.0.0", 240 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 241 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 242 | "dev": true 243 | }, 244 | "node_modules/brace-expansion": { 245 | "version": "1.1.11", 246 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 247 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 248 | "dev": true, 249 | "dependencies": { 250 | "balanced-match": "^1.0.0", 251 | "concat-map": "0.0.1" 252 | } 253 | }, 254 | "node_modules/braces": { 255 | "version": "3.0.2", 256 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 257 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 258 | "dev": true, 259 | "dependencies": { 260 | "fill-range": "^7.0.1" 261 | }, 262 | "engines": { 263 | "node": ">=8" 264 | } 265 | }, 266 | "node_modules/callsites": { 267 | "version": "3.1.0", 268 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 269 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 270 | "dev": true, 271 | "engines": { 272 | "node": ">=6" 273 | } 274 | }, 275 | "node_modules/combined-stream": { 276 | "version": "1.0.8", 277 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 278 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 279 | "dependencies": { 280 | "delayed-stream": "~1.0.0" 281 | }, 282 | "engines": { 283 | "node": ">= 0.8" 284 | } 285 | }, 286 | "node_modules/concat-map": { 287 | "version": "0.0.1", 288 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 289 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 290 | "dev": true 291 | }, 292 | "node_modules/cross-spawn": { 293 | "version": "7.0.3", 294 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 295 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 296 | "dev": true, 297 | "dependencies": { 298 | "path-key": "^3.1.0", 299 | "shebang-command": "^2.0.0", 300 | "which": "^2.0.1" 301 | }, 302 | "engines": { 303 | "node": ">= 8" 304 | } 305 | }, 306 | "node_modules/debug": { 307 | "version": "4.3.4", 308 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 309 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 310 | "dev": true, 311 | "dependencies": { 312 | "ms": "2.1.2" 313 | }, 314 | "engines": { 315 | "node": ">=6.0" 316 | }, 317 | "peerDependenciesMeta": { 318 | "supports-color": { 319 | "optional": true 320 | } 321 | } 322 | }, 323 | "node_modules/deep-is": { 324 | "version": "0.1.4", 325 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 326 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 327 | "dev": true 328 | }, 329 | "node_modules/delayed-stream": { 330 | "version": "1.0.0", 331 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 332 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 333 | "engines": { 334 | "node": ">=0.4.0" 335 | } 336 | }, 337 | "node_modules/dir-glob": { 338 | "version": "3.0.1", 339 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 340 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 341 | "dev": true, 342 | "dependencies": { 343 | "path-type": "^4.0.0" 344 | }, 345 | "engines": { 346 | "node": ">=8" 347 | } 348 | }, 349 | "node_modules/doctrine": { 350 | "version": "3.0.0", 351 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 352 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 353 | "dev": true, 354 | "dependencies": { 355 | "esutils": "^2.0.2" 356 | }, 357 | "engines": { 358 | "node": ">=6.0.0" 359 | } 360 | }, 361 | "node_modules/entities": { 362 | "version": "3.0.1", 363 | "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", 364 | "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", 365 | "engines": { 366 | "node": ">=0.12" 367 | }, 368 | "funding": { 369 | "url": "https://github.com/fb55/entities?sponsor=1" 370 | } 371 | }, 372 | "node_modules/eslint": { 373 | "version": "8.22.0", 374 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.22.0.tgz", 375 | "integrity": "sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==", 376 | "dev": true, 377 | "dependencies": { 378 | "@eslint/eslintrc": "^1.3.0", 379 | "@humanwhocodes/config-array": "^0.10.4", 380 | "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", 381 | "ajv": "^6.10.0", 382 | "chalk": "^4.0.0", 383 | "cross-spawn": "^7.0.2", 384 | "debug": "^4.3.2", 385 | "doctrine": "^3.0.0", 386 | "escape-string-regexp": "^4.0.0", 387 | "eslint-scope": "^7.1.1", 388 | "eslint-utils": "^3.0.0", 389 | "eslint-visitor-keys": "^3.3.0", 390 | "espree": "^9.3.3", 391 | "esquery": "^1.4.0", 392 | "esutils": "^2.0.2", 393 | "fast-deep-equal": "^3.1.3", 394 | "file-entry-cache": "^6.0.1", 395 | "find-up": "^5.0.0", 396 | "functional-red-black-tree": "^1.0.1", 397 | "glob-parent": "^6.0.1", 398 | "globals": "^13.15.0", 399 | "globby": "^11.1.0", 400 | "grapheme-splitter": "^1.0.4", 401 | "ignore": "^5.2.0", 402 | "import-fresh": "^3.0.0", 403 | "imurmurhash": "^0.1.4", 404 | "is-glob": "^4.0.0", 405 | "js-yaml": "^4.1.0", 406 | "json-stable-stringify-without-jsonify": "^1.0.1", 407 | "levn": "^0.4.1", 408 | "lodash.merge": "^4.6.2", 409 | "minimatch": "^3.1.2", 410 | "natural-compare": "^1.4.0", 411 | "optionator": "^0.9.1", 412 | "regexpp": "^3.2.0", 413 | "strip-ansi": "^6.0.1", 414 | "strip-json-comments": "^3.1.0", 415 | "text-table": "^0.2.0", 416 | "v8-compile-cache": "^2.0.3" 417 | }, 418 | "bin": { 419 | "eslint": "bin/eslint.js" 420 | }, 421 | "engines": { 422 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 423 | }, 424 | "funding": { 425 | "url": "https://opencollective.com/eslint" 426 | } 427 | }, 428 | "node_modules/eslint-scope": { 429 | "version": "7.1.1", 430 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 431 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 432 | "dev": true, 433 | "dependencies": { 434 | "esrecurse": "^4.3.0", 435 | "estraverse": "^5.2.0" 436 | }, 437 | "engines": { 438 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 439 | } 440 | }, 441 | "node_modules/eslint-utils": { 442 | "version": "3.0.0", 443 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 444 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 445 | "dev": true, 446 | "dependencies": { 447 | "eslint-visitor-keys": "^2.0.0" 448 | }, 449 | "engines": { 450 | "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" 451 | }, 452 | "funding": { 453 | "url": "https://github.com/sponsors/mysticatea" 454 | }, 455 | "peerDependencies": { 456 | "eslint": ">=5" 457 | } 458 | }, 459 | "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { 460 | "version": "2.1.0", 461 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 462 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 463 | "dev": true, 464 | "engines": { 465 | "node": ">=10" 466 | } 467 | }, 468 | "node_modules/eslint-visitor-keys": { 469 | "version": "3.3.0", 470 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 471 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 472 | "dev": true, 473 | "engines": { 474 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 475 | } 476 | }, 477 | "node_modules/eslint/node_modules/ansi-styles": { 478 | "version": "4.3.0", 479 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 480 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 481 | "dev": true, 482 | "dependencies": { 483 | "color-convert": "^2.0.1" 484 | }, 485 | "engines": { 486 | "node": ">=8" 487 | }, 488 | "funding": { 489 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 490 | } 491 | }, 492 | "node_modules/eslint/node_modules/chalk": { 493 | "version": "4.1.2", 494 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 495 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 496 | "dev": true, 497 | "dependencies": { 498 | "ansi-styles": "^4.1.0", 499 | "supports-color": "^7.1.0" 500 | }, 501 | "engines": { 502 | "node": ">=10" 503 | }, 504 | "funding": { 505 | "url": "https://github.com/chalk/chalk?sponsor=1" 506 | } 507 | }, 508 | "node_modules/eslint/node_modules/color-convert": { 509 | "version": "2.0.1", 510 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 511 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 512 | "dev": true, 513 | "dependencies": { 514 | "color-name": "~1.1.4" 515 | }, 516 | "engines": { 517 | "node": ">=7.0.0" 518 | } 519 | }, 520 | "node_modules/eslint/node_modules/color-name": { 521 | "version": "1.1.4", 522 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 523 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 524 | "dev": true 525 | }, 526 | "node_modules/eslint/node_modules/escape-string-regexp": { 527 | "version": "4.0.0", 528 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 529 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 530 | "dev": true, 531 | "engines": { 532 | "node": ">=10" 533 | }, 534 | "funding": { 535 | "url": "https://github.com/sponsors/sindresorhus" 536 | } 537 | }, 538 | "node_modules/eslint/node_modules/has-flag": { 539 | "version": "4.0.0", 540 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 541 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 542 | "dev": true, 543 | "engines": { 544 | "node": ">=8" 545 | } 546 | }, 547 | "node_modules/eslint/node_modules/js-yaml": { 548 | "version": "4.1.0", 549 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 550 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 551 | "dev": true, 552 | "dependencies": { 553 | "argparse": "^2.0.1" 554 | }, 555 | "bin": { 556 | "js-yaml": "bin/js-yaml.js" 557 | } 558 | }, 559 | "node_modules/eslint/node_modules/supports-color": { 560 | "version": "7.2.0", 561 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 562 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 563 | "dev": true, 564 | "dependencies": { 565 | "has-flag": "^4.0.0" 566 | }, 567 | "engines": { 568 | "node": ">=8" 569 | } 570 | }, 571 | "node_modules/espree": { 572 | "version": "9.3.3", 573 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", 574 | "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", 575 | "dev": true, 576 | "dependencies": { 577 | "acorn": "^8.8.0", 578 | "acorn-jsx": "^5.3.2", 579 | "eslint-visitor-keys": "^3.3.0" 580 | }, 581 | "engines": { 582 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 583 | }, 584 | "funding": { 585 | "url": "https://opencollective.com/eslint" 586 | } 587 | }, 588 | "node_modules/esquery": { 589 | "version": "1.4.0", 590 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 591 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 592 | "dev": true, 593 | "dependencies": { 594 | "estraverse": "^5.1.0" 595 | }, 596 | "engines": { 597 | "node": ">=0.10" 598 | } 599 | }, 600 | "node_modules/esrecurse": { 601 | "version": "4.3.0", 602 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 603 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 604 | "dev": true, 605 | "dependencies": { 606 | "estraverse": "^5.2.0" 607 | }, 608 | "engines": { 609 | "node": ">=4.0" 610 | } 611 | }, 612 | "node_modules/estraverse": { 613 | "version": "5.3.0", 614 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 615 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 616 | "dev": true, 617 | "engines": { 618 | "node": ">=4.0" 619 | } 620 | }, 621 | "node_modules/esutils": { 622 | "version": "2.0.3", 623 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 624 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 625 | "dev": true, 626 | "engines": { 627 | "node": ">=0.10.0" 628 | } 629 | }, 630 | "node_modules/fast-deep-equal": { 631 | "version": "3.1.3", 632 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 633 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 634 | "dev": true 635 | }, 636 | "node_modules/fast-glob": { 637 | "version": "3.2.11", 638 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 639 | "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 640 | "dev": true, 641 | "dependencies": { 642 | "@nodelib/fs.stat": "^2.0.2", 643 | "@nodelib/fs.walk": "^1.2.3", 644 | "glob-parent": "^5.1.2", 645 | "merge2": "^1.3.0", 646 | "micromatch": "^4.0.4" 647 | }, 648 | "engines": { 649 | "node": ">=8.6.0" 650 | } 651 | }, 652 | "node_modules/fast-glob/node_modules/glob-parent": { 653 | "version": "5.1.2", 654 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 655 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 656 | "dev": true, 657 | "dependencies": { 658 | "is-glob": "^4.0.1" 659 | }, 660 | "engines": { 661 | "node": ">= 6" 662 | } 663 | }, 664 | "node_modules/fast-json-stable-stringify": { 665 | "version": "2.1.0", 666 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 667 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 668 | "dev": true 669 | }, 670 | "node_modules/fast-levenshtein": { 671 | "version": "2.0.6", 672 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 673 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 674 | "dev": true 675 | }, 676 | "node_modules/fastq": { 677 | "version": "1.13.0", 678 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 679 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 680 | "dev": true, 681 | "dependencies": { 682 | "reusify": "^1.0.4" 683 | } 684 | }, 685 | "node_modules/file-entry-cache": { 686 | "version": "6.0.1", 687 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 688 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 689 | "dev": true, 690 | "dependencies": { 691 | "flat-cache": "^3.0.4" 692 | }, 693 | "engines": { 694 | "node": "^10.12.0 || >=12.0.0" 695 | } 696 | }, 697 | "node_modules/fill-range": { 698 | "version": "7.0.1", 699 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 700 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 701 | "dev": true, 702 | "dependencies": { 703 | "to-regex-range": "^5.0.1" 704 | }, 705 | "engines": { 706 | "node": ">=8" 707 | } 708 | }, 709 | "node_modules/find-up": { 710 | "version": "5.0.0", 711 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 712 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 713 | "dev": true, 714 | "dependencies": { 715 | "locate-path": "^6.0.0", 716 | "path-exists": "^4.0.0" 717 | }, 718 | "engines": { 719 | "node": ">=10" 720 | }, 721 | "funding": { 722 | "url": "https://github.com/sponsors/sindresorhus" 723 | } 724 | }, 725 | "node_modules/flat-cache": { 726 | "version": "3.0.4", 727 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 728 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 729 | "dev": true, 730 | "dependencies": { 731 | "flatted": "^3.1.0", 732 | "rimraf": "^3.0.2" 733 | }, 734 | "engines": { 735 | "node": "^10.12.0 || >=12.0.0" 736 | } 737 | }, 738 | "node_modules/flatted": { 739 | "version": "3.2.6", 740 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", 741 | "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", 742 | "dev": true 743 | }, 744 | "node_modules/follow-redirects": { 745 | "version": "1.15.1", 746 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", 747 | "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", 748 | "funding": [ 749 | { 750 | "type": "individual", 751 | "url": "https://github.com/sponsors/RubenVerborgh" 752 | } 753 | ], 754 | "engines": { 755 | "node": ">=4.0" 756 | }, 757 | "peerDependenciesMeta": { 758 | "debug": { 759 | "optional": true 760 | } 761 | } 762 | }, 763 | "node_modules/form-data": { 764 | "version": "4.0.0", 765 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 766 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 767 | "dependencies": { 768 | "asynckit": "^0.4.0", 769 | "combined-stream": "^1.0.8", 770 | "mime-types": "^2.1.12" 771 | }, 772 | "engines": { 773 | "node": ">= 6" 774 | } 775 | }, 776 | "node_modules/fs.realpath": { 777 | "version": "1.0.0", 778 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 779 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 780 | "dev": true 781 | }, 782 | "node_modules/functional-red-black-tree": { 783 | "version": "1.0.1", 784 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 785 | "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", 786 | "dev": true 787 | }, 788 | "node_modules/glob": { 789 | "version": "7.2.3", 790 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 791 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 792 | "dev": true, 793 | "dependencies": { 794 | "fs.realpath": "^1.0.0", 795 | "inflight": "^1.0.4", 796 | "inherits": "2", 797 | "minimatch": "^3.1.1", 798 | "once": "^1.3.0", 799 | "path-is-absolute": "^1.0.0" 800 | }, 801 | "engines": { 802 | "node": "*" 803 | }, 804 | "funding": { 805 | "url": "https://github.com/sponsors/isaacs" 806 | } 807 | }, 808 | "node_modules/glob-parent": { 809 | "version": "6.0.2", 810 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 811 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 812 | "dev": true, 813 | "dependencies": { 814 | "is-glob": "^4.0.3" 815 | }, 816 | "engines": { 817 | "node": ">=10.13.0" 818 | } 819 | }, 820 | "node_modules/globals": { 821 | "version": "13.17.0", 822 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", 823 | "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", 824 | "dev": true, 825 | "dependencies": { 826 | "type-fest": "^0.20.2" 827 | }, 828 | "engines": { 829 | "node": ">=8" 830 | }, 831 | "funding": { 832 | "url": "https://github.com/sponsors/sindresorhus" 833 | } 834 | }, 835 | "node_modules/globby": { 836 | "version": "11.1.0", 837 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 838 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 839 | "dev": true, 840 | "dependencies": { 841 | "array-union": "^2.1.0", 842 | "dir-glob": "^3.0.1", 843 | "fast-glob": "^3.2.9", 844 | "ignore": "^5.2.0", 845 | "merge2": "^1.4.1", 846 | "slash": "^3.0.0" 847 | }, 848 | "engines": { 849 | "node": ">=10" 850 | }, 851 | "funding": { 852 | "url": "https://github.com/sponsors/sindresorhus" 853 | } 854 | }, 855 | "node_modules/grapheme-splitter": { 856 | "version": "1.0.4", 857 | "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", 858 | "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", 859 | "dev": true 860 | }, 861 | "node_modules/ignore": { 862 | "version": "5.2.0", 863 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 864 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 865 | "dev": true, 866 | "engines": { 867 | "node": ">= 4" 868 | } 869 | }, 870 | "node_modules/import-fresh": { 871 | "version": "3.3.0", 872 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 873 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 874 | "dev": true, 875 | "dependencies": { 876 | "parent-module": "^1.0.0", 877 | "resolve-from": "^4.0.0" 878 | }, 879 | "engines": { 880 | "node": ">=6" 881 | }, 882 | "funding": { 883 | "url": "https://github.com/sponsors/sindresorhus" 884 | } 885 | }, 886 | "node_modules/imurmurhash": { 887 | "version": "0.1.4", 888 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 889 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 890 | "dev": true, 891 | "engines": { 892 | "node": ">=0.8.19" 893 | } 894 | }, 895 | "node_modules/inflight": { 896 | "version": "1.0.6", 897 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 898 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 899 | "dev": true, 900 | "dependencies": { 901 | "once": "^1.3.0", 902 | "wrappy": "1" 903 | } 904 | }, 905 | "node_modules/inherits": { 906 | "version": "2.0.3", 907 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 908 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 909 | "dev": true 910 | }, 911 | "node_modules/is-extglob": { 912 | "version": "2.1.1", 913 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 914 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 915 | "dev": true, 916 | "engines": { 917 | "node": ">=0.10.0" 918 | } 919 | }, 920 | "node_modules/is-glob": { 921 | "version": "4.0.3", 922 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 923 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 924 | "dev": true, 925 | "dependencies": { 926 | "is-extglob": "^2.1.1" 927 | }, 928 | "engines": { 929 | "node": ">=0.10.0" 930 | } 931 | }, 932 | "node_modules/is-number": { 933 | "version": "7.0.0", 934 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 935 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 936 | "dev": true, 937 | "engines": { 938 | "node": ">=0.12.0" 939 | } 940 | }, 941 | "node_modules/isexe": { 942 | "version": "2.0.0", 943 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 944 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 945 | "dev": true 946 | }, 947 | "node_modules/json-schema-traverse": { 948 | "version": "0.4.1", 949 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 950 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 951 | "dev": true 952 | }, 953 | "node_modules/json-stable-stringify-without-jsonify": { 954 | "version": "1.0.1", 955 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 956 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 957 | "dev": true 958 | }, 959 | "node_modules/levn": { 960 | "version": "0.4.1", 961 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 962 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 963 | "dev": true, 964 | "dependencies": { 965 | "prelude-ls": "^1.2.1", 966 | "type-check": "~0.4.0" 967 | }, 968 | "engines": { 969 | "node": ">= 0.8.0" 970 | } 971 | }, 972 | "node_modules/linkify-it": { 973 | "version": "4.0.1", 974 | "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", 975 | "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", 976 | "dependencies": { 977 | "uc.micro": "^1.0.1" 978 | } 979 | }, 980 | "node_modules/locate-path": { 981 | "version": "6.0.0", 982 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 983 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 984 | "dev": true, 985 | "dependencies": { 986 | "p-locate": "^5.0.0" 987 | }, 988 | "engines": { 989 | "node": ">=10" 990 | }, 991 | "funding": { 992 | "url": "https://github.com/sponsors/sindresorhus" 993 | } 994 | }, 995 | "node_modules/lodash.merge": { 996 | "version": "4.6.2", 997 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 998 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 999 | "dev": true 1000 | }, 1001 | "node_modules/markdown-it": { 1002 | "version": "13.0.1", 1003 | "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", 1004 | "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", 1005 | "dependencies": { 1006 | "argparse": "^2.0.1", 1007 | "entities": "~3.0.1", 1008 | "linkify-it": "^4.0.1", 1009 | "mdurl": "^1.0.1", 1010 | "uc.micro": "^1.0.5" 1011 | }, 1012 | "bin": { 1013 | "markdown-it": "bin/markdown-it.js" 1014 | } 1015 | }, 1016 | "node_modules/mdurl": { 1017 | "version": "1.0.1", 1018 | "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", 1019 | "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" 1020 | }, 1021 | "node_modules/merge2": { 1022 | "version": "1.4.1", 1023 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1024 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1025 | "dev": true, 1026 | "engines": { 1027 | "node": ">= 8" 1028 | } 1029 | }, 1030 | "node_modules/micromatch": { 1031 | "version": "4.0.5", 1032 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1033 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1034 | "dev": true, 1035 | "dependencies": { 1036 | "braces": "^3.0.2", 1037 | "picomatch": "^2.3.1" 1038 | }, 1039 | "engines": { 1040 | "node": ">=8.6" 1041 | } 1042 | }, 1043 | "node_modules/mime-db": { 1044 | "version": "1.52.0", 1045 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1046 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1047 | "engines": { 1048 | "node": ">= 0.6" 1049 | } 1050 | }, 1051 | "node_modules/mime-types": { 1052 | "version": "2.1.35", 1053 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1054 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1055 | "dependencies": { 1056 | "mime-db": "1.52.0" 1057 | }, 1058 | "engines": { 1059 | "node": ">= 0.6" 1060 | } 1061 | }, 1062 | "node_modules/minimatch": { 1063 | "version": "3.1.2", 1064 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1065 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1066 | "dev": true, 1067 | "dependencies": { 1068 | "brace-expansion": "^1.1.7" 1069 | }, 1070 | "engines": { 1071 | "node": "*" 1072 | } 1073 | }, 1074 | "node_modules/ms": { 1075 | "version": "2.1.2", 1076 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1077 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1078 | "dev": true 1079 | }, 1080 | "node_modules/natural-compare": { 1081 | "version": "1.4.0", 1082 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1083 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1084 | "dev": true 1085 | }, 1086 | "node_modules/once": { 1087 | "version": "1.4.0", 1088 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1089 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1090 | "dev": true, 1091 | "dependencies": { 1092 | "wrappy": "1" 1093 | } 1094 | }, 1095 | "node_modules/optionator": { 1096 | "version": "0.9.1", 1097 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1098 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1099 | "dev": true, 1100 | "dependencies": { 1101 | "deep-is": "^0.1.3", 1102 | "fast-levenshtein": "^2.0.6", 1103 | "levn": "^0.4.1", 1104 | "prelude-ls": "^1.2.1", 1105 | "type-check": "^0.4.0", 1106 | "word-wrap": "^1.2.3" 1107 | }, 1108 | "engines": { 1109 | "node": ">= 0.8.0" 1110 | } 1111 | }, 1112 | "node_modules/p-limit": { 1113 | "version": "3.1.0", 1114 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1115 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1116 | "dev": true, 1117 | "dependencies": { 1118 | "yocto-queue": "^0.1.0" 1119 | }, 1120 | "engines": { 1121 | "node": ">=10" 1122 | }, 1123 | "funding": { 1124 | "url": "https://github.com/sponsors/sindresorhus" 1125 | } 1126 | }, 1127 | "node_modules/p-locate": { 1128 | "version": "5.0.0", 1129 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1130 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1131 | "dev": true, 1132 | "dependencies": { 1133 | "p-limit": "^3.0.2" 1134 | }, 1135 | "engines": { 1136 | "node": ">=10" 1137 | }, 1138 | "funding": { 1139 | "url": "https://github.com/sponsors/sindresorhus" 1140 | } 1141 | }, 1142 | "node_modules/parent-module": { 1143 | "version": "1.0.1", 1144 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1145 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1146 | "dev": true, 1147 | "dependencies": { 1148 | "callsites": "^3.0.0" 1149 | }, 1150 | "engines": { 1151 | "node": ">=6" 1152 | } 1153 | }, 1154 | "node_modules/path-exists": { 1155 | "version": "4.0.0", 1156 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1157 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1158 | "dev": true, 1159 | "engines": { 1160 | "node": ">=8" 1161 | } 1162 | }, 1163 | "node_modules/path-is-absolute": { 1164 | "version": "1.0.1", 1165 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1166 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1167 | "dev": true, 1168 | "engines": { 1169 | "node": ">=0.10.0" 1170 | } 1171 | }, 1172 | "node_modules/path-key": { 1173 | "version": "3.1.1", 1174 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1175 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1176 | "dev": true, 1177 | "engines": { 1178 | "node": ">=8" 1179 | } 1180 | }, 1181 | "node_modules/path-type": { 1182 | "version": "4.0.0", 1183 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1184 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1185 | "dev": true, 1186 | "engines": { 1187 | "node": ">=8" 1188 | } 1189 | }, 1190 | "node_modules/picomatch": { 1191 | "version": "2.3.1", 1192 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1193 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1194 | "dev": true, 1195 | "engines": { 1196 | "node": ">=8.6" 1197 | }, 1198 | "funding": { 1199 | "url": "https://github.com/sponsors/jonschlinkert" 1200 | } 1201 | }, 1202 | "node_modules/prelude-ls": { 1203 | "version": "1.2.1", 1204 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1205 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1206 | "dev": true, 1207 | "engines": { 1208 | "node": ">= 0.8.0" 1209 | } 1210 | }, 1211 | "node_modules/punycode": { 1212 | "version": "2.1.1", 1213 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1214 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1215 | "dev": true, 1216 | "engines": { 1217 | "node": ">=6" 1218 | } 1219 | }, 1220 | "node_modules/queue-microtask": { 1221 | "version": "1.2.3", 1222 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1223 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1224 | "dev": true, 1225 | "funding": [ 1226 | { 1227 | "type": "github", 1228 | "url": "https://github.com/sponsors/feross" 1229 | }, 1230 | { 1231 | "type": "patreon", 1232 | "url": "https://www.patreon.com/feross" 1233 | }, 1234 | { 1235 | "type": "consulting", 1236 | "url": "https://feross.org/support" 1237 | } 1238 | ] 1239 | }, 1240 | "node_modules/regexpp": { 1241 | "version": "3.2.0", 1242 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 1243 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 1244 | "dev": true, 1245 | "engines": { 1246 | "node": ">=8" 1247 | }, 1248 | "funding": { 1249 | "url": "https://github.com/sponsors/mysticatea" 1250 | } 1251 | }, 1252 | "node_modules/resolve-from": { 1253 | "version": "4.0.0", 1254 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1255 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1256 | "dev": true, 1257 | "engines": { 1258 | "node": ">=4" 1259 | } 1260 | }, 1261 | "node_modules/reusify": { 1262 | "version": "1.0.4", 1263 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1264 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1265 | "dev": true, 1266 | "engines": { 1267 | "iojs": ">=1.0.0", 1268 | "node": ">=0.10.0" 1269 | } 1270 | }, 1271 | "node_modules/rimraf": { 1272 | "version": "3.0.2", 1273 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1274 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1275 | "dev": true, 1276 | "dependencies": { 1277 | "glob": "^7.1.3" 1278 | }, 1279 | "bin": { 1280 | "rimraf": "bin.js" 1281 | }, 1282 | "funding": { 1283 | "url": "https://github.com/sponsors/isaacs" 1284 | } 1285 | }, 1286 | "node_modules/run-parallel": { 1287 | "version": "1.2.0", 1288 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1289 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1290 | "dev": true, 1291 | "funding": [ 1292 | { 1293 | "type": "github", 1294 | "url": "https://github.com/sponsors/feross" 1295 | }, 1296 | { 1297 | "type": "patreon", 1298 | "url": "https://www.patreon.com/feross" 1299 | }, 1300 | { 1301 | "type": "consulting", 1302 | "url": "https://feross.org/support" 1303 | } 1304 | ], 1305 | "dependencies": { 1306 | "queue-microtask": "^1.2.2" 1307 | } 1308 | }, 1309 | "node_modules/shebang-command": { 1310 | "version": "2.0.0", 1311 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1312 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1313 | "dev": true, 1314 | "dependencies": { 1315 | "shebang-regex": "^3.0.0" 1316 | }, 1317 | "engines": { 1318 | "node": ">=8" 1319 | } 1320 | }, 1321 | "node_modules/shebang-regex": { 1322 | "version": "3.0.0", 1323 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1324 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1325 | "dev": true, 1326 | "engines": { 1327 | "node": ">=8" 1328 | } 1329 | }, 1330 | "node_modules/slash": { 1331 | "version": "3.0.0", 1332 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 1333 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 1334 | "dev": true, 1335 | "engines": { 1336 | "node": ">=8" 1337 | } 1338 | }, 1339 | "node_modules/strip-ansi": { 1340 | "version": "6.0.1", 1341 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1342 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1343 | "dev": true, 1344 | "dependencies": { 1345 | "ansi-regex": "^5.0.1" 1346 | }, 1347 | "engines": { 1348 | "node": ">=8" 1349 | } 1350 | }, 1351 | "node_modules/strip-json-comments": { 1352 | "version": "3.1.1", 1353 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1354 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1355 | "dev": true, 1356 | "engines": { 1357 | "node": ">=8" 1358 | }, 1359 | "funding": { 1360 | "url": "https://github.com/sponsors/sindresorhus" 1361 | } 1362 | }, 1363 | "node_modules/text-table": { 1364 | "version": "0.2.0", 1365 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1366 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 1367 | "dev": true 1368 | }, 1369 | "node_modules/to-regex-range": { 1370 | "version": "5.0.1", 1371 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1372 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1373 | "dev": true, 1374 | "dependencies": { 1375 | "is-number": "^7.0.0" 1376 | }, 1377 | "engines": { 1378 | "node": ">=8.0" 1379 | } 1380 | }, 1381 | "node_modules/type-check": { 1382 | "version": "0.4.0", 1383 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1384 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1385 | "dev": true, 1386 | "dependencies": { 1387 | "prelude-ls": "^1.2.1" 1388 | }, 1389 | "engines": { 1390 | "node": ">= 0.8.0" 1391 | } 1392 | }, 1393 | "node_modules/type-fest": { 1394 | "version": "0.20.2", 1395 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1396 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1397 | "dev": true, 1398 | "engines": { 1399 | "node": ">=10" 1400 | }, 1401 | "funding": { 1402 | "url": "https://github.com/sponsors/sindresorhus" 1403 | } 1404 | }, 1405 | "node_modules/typescript": { 1406 | "version": "4.7.4", 1407 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", 1408 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", 1409 | "dev": true, 1410 | "bin": { 1411 | "tsc": "bin/tsc", 1412 | "tsserver": "bin/tsserver" 1413 | }, 1414 | "engines": { 1415 | "node": ">=4.2.0" 1416 | } 1417 | }, 1418 | "node_modules/uc.micro": { 1419 | "version": "1.0.6", 1420 | "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", 1421 | "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" 1422 | }, 1423 | "node_modules/uri-js": { 1424 | "version": "4.4.1", 1425 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1426 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1427 | "dev": true, 1428 | "dependencies": { 1429 | "punycode": "^2.1.0" 1430 | } 1431 | }, 1432 | "node_modules/v8-compile-cache": { 1433 | "version": "2.3.0", 1434 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 1435 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 1436 | "dev": true 1437 | }, 1438 | "node_modules/which": { 1439 | "version": "2.0.2", 1440 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1441 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1442 | "dev": true, 1443 | "dependencies": { 1444 | "isexe": "^2.0.0" 1445 | }, 1446 | "bin": { 1447 | "node-which": "bin/node-which" 1448 | }, 1449 | "engines": { 1450 | "node": ">= 8" 1451 | } 1452 | }, 1453 | "node_modules/word-wrap": { 1454 | "version": "1.2.4", 1455 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", 1456 | "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", 1457 | "dev": true, 1458 | "engines": { 1459 | "node": ">=0.10.0" 1460 | } 1461 | }, 1462 | "node_modules/wrappy": { 1463 | "version": "1.0.2", 1464 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1465 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1466 | "dev": true 1467 | }, 1468 | "node_modules/yocto-queue": { 1469 | "version": "0.1.0", 1470 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1471 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1472 | "dev": true, 1473 | "engines": { 1474 | "node": ">=10" 1475 | }, 1476 | "funding": { 1477 | "url": "https://github.com/sponsors/sindresorhus" 1478 | } 1479 | } 1480 | }, 1481 | "dependencies": { 1482 | "@eslint/eslintrc": { 1483 | "version": "1.3.0", 1484 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", 1485 | "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", 1486 | "dev": true, 1487 | "requires": { 1488 | "ajv": "^6.12.4", 1489 | "debug": "^4.3.2", 1490 | "espree": "^9.3.2", 1491 | "globals": "^13.15.0", 1492 | "ignore": "^5.2.0", 1493 | "import-fresh": "^3.2.1", 1494 | "js-yaml": "^4.1.0", 1495 | "minimatch": "^3.1.2", 1496 | "strip-json-comments": "^3.1.1" 1497 | }, 1498 | "dependencies": { 1499 | "js-yaml": { 1500 | "version": "4.1.0", 1501 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1502 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1503 | "dev": true, 1504 | "requires": { 1505 | "argparse": "^2.0.1" 1506 | } 1507 | } 1508 | } 1509 | }, 1510 | "@humanwhocodes/config-array": { 1511 | "version": "0.10.4", 1512 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", 1513 | "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", 1514 | "dev": true, 1515 | "requires": { 1516 | "@humanwhocodes/object-schema": "^1.2.1", 1517 | "debug": "^4.1.1", 1518 | "minimatch": "^3.0.4" 1519 | } 1520 | }, 1521 | "@humanwhocodes/gitignore-to-minimatch": { 1522 | "version": "1.0.2", 1523 | "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", 1524 | "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", 1525 | "dev": true 1526 | }, 1527 | "@humanwhocodes/object-schema": { 1528 | "version": "1.2.1", 1529 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 1530 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 1531 | "dev": true 1532 | }, 1533 | "@nodelib/fs.scandir": { 1534 | "version": "2.1.5", 1535 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 1536 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 1537 | "dev": true, 1538 | "requires": { 1539 | "@nodelib/fs.stat": "2.0.5", 1540 | "run-parallel": "^1.1.9" 1541 | } 1542 | }, 1543 | "@nodelib/fs.stat": { 1544 | "version": "2.0.5", 1545 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 1546 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 1547 | "dev": true 1548 | }, 1549 | "@nodelib/fs.walk": { 1550 | "version": "1.2.8", 1551 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 1552 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 1553 | "dev": true, 1554 | "requires": { 1555 | "@nodelib/fs.scandir": "2.1.5", 1556 | "fastq": "^1.6.0" 1557 | } 1558 | }, 1559 | "@types/linkify-it": { 1560 | "version": "3.0.2", 1561 | "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", 1562 | "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", 1563 | "dev": true 1564 | }, 1565 | "@types/markdown-it": { 1566 | "version": "12.2.3", 1567 | "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", 1568 | "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", 1569 | "dev": true, 1570 | "requires": { 1571 | "@types/linkify-it": "*", 1572 | "@types/mdurl": "*" 1573 | } 1574 | }, 1575 | "@types/mdurl": { 1576 | "version": "1.0.2", 1577 | "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", 1578 | "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", 1579 | "dev": true 1580 | }, 1581 | "@types/mocha": { 1582 | "version": "9.1.1", 1583 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", 1584 | "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", 1585 | "dev": true 1586 | }, 1587 | "@types/node": { 1588 | "version": "16.11.49", 1589 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.49.tgz", 1590 | "integrity": "sha512-Abq9fBviLV93OiXMu+f6r0elxCzRwc0RC5f99cU892uBITL44pTvgvEqlRlPRi8EGcO1z7Cp8A4d0s/p3J/+Nw==", 1591 | "dev": true 1592 | }, 1593 | "@types/vscode": { 1594 | "version": "1.70.0", 1595 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.70.0.tgz", 1596 | "integrity": "sha512-3/9Fz0F2eBgwciazc94Ien+9u1elnjFg9YAhvAb3qDy/WeFWD9VrOPU7CIytryOVUdbxus8uzL4VZYONA0gDtA==", 1597 | "dev": true 1598 | }, 1599 | "acorn": { 1600 | "version": "8.8.0", 1601 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", 1602 | "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", 1603 | "dev": true 1604 | }, 1605 | "acorn-jsx": { 1606 | "version": "5.3.2", 1607 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1608 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1609 | "dev": true, 1610 | "requires": {} 1611 | }, 1612 | "ajv": { 1613 | "version": "6.12.6", 1614 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1615 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1616 | "dev": true, 1617 | "requires": { 1618 | "fast-deep-equal": "^3.1.1", 1619 | "fast-json-stable-stringify": "^2.0.0", 1620 | "json-schema-traverse": "^0.4.1", 1621 | "uri-js": "^4.2.2" 1622 | } 1623 | }, 1624 | "ansi-regex": { 1625 | "version": "5.0.1", 1626 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1627 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1628 | "dev": true 1629 | }, 1630 | "argparse": { 1631 | "version": "2.0.1", 1632 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1633 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 1634 | }, 1635 | "array-union": { 1636 | "version": "2.1.0", 1637 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 1638 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 1639 | "dev": true 1640 | }, 1641 | "asynckit": { 1642 | "version": "0.4.0", 1643 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 1644 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 1645 | }, 1646 | "axios": { 1647 | "version": "0.27.2", 1648 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", 1649 | "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", 1650 | "requires": { 1651 | "follow-redirects": "^1.14.9", 1652 | "form-data": "^4.0.0" 1653 | } 1654 | }, 1655 | "balanced-match": { 1656 | "version": "1.0.0", 1657 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1658 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 1659 | "dev": true 1660 | }, 1661 | "brace-expansion": { 1662 | "version": "1.1.11", 1663 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1664 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1665 | "dev": true, 1666 | "requires": { 1667 | "balanced-match": "^1.0.0", 1668 | "concat-map": "0.0.1" 1669 | } 1670 | }, 1671 | "braces": { 1672 | "version": "3.0.2", 1673 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1674 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1675 | "dev": true, 1676 | "requires": { 1677 | "fill-range": "^7.0.1" 1678 | } 1679 | }, 1680 | "callsites": { 1681 | "version": "3.1.0", 1682 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1683 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1684 | "dev": true 1685 | }, 1686 | "combined-stream": { 1687 | "version": "1.0.8", 1688 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 1689 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 1690 | "requires": { 1691 | "delayed-stream": "~1.0.0" 1692 | } 1693 | }, 1694 | "concat-map": { 1695 | "version": "0.0.1", 1696 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1697 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1698 | "dev": true 1699 | }, 1700 | "cross-spawn": { 1701 | "version": "7.0.3", 1702 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1703 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1704 | "dev": true, 1705 | "requires": { 1706 | "path-key": "^3.1.0", 1707 | "shebang-command": "^2.0.0", 1708 | "which": "^2.0.1" 1709 | } 1710 | }, 1711 | "debug": { 1712 | "version": "4.3.4", 1713 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1714 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1715 | "dev": true, 1716 | "requires": { 1717 | "ms": "2.1.2" 1718 | } 1719 | }, 1720 | "deep-is": { 1721 | "version": "0.1.4", 1722 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1723 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1724 | "dev": true 1725 | }, 1726 | "delayed-stream": { 1727 | "version": "1.0.0", 1728 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1729 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 1730 | }, 1731 | "dir-glob": { 1732 | "version": "3.0.1", 1733 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1734 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1735 | "dev": true, 1736 | "requires": { 1737 | "path-type": "^4.0.0" 1738 | } 1739 | }, 1740 | "doctrine": { 1741 | "version": "3.0.0", 1742 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1743 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1744 | "dev": true, 1745 | "requires": { 1746 | "esutils": "^2.0.2" 1747 | } 1748 | }, 1749 | "entities": { 1750 | "version": "3.0.1", 1751 | "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", 1752 | "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" 1753 | }, 1754 | "eslint": { 1755 | "version": "8.22.0", 1756 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.22.0.tgz", 1757 | "integrity": "sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==", 1758 | "dev": true, 1759 | "requires": { 1760 | "@eslint/eslintrc": "^1.3.0", 1761 | "@humanwhocodes/config-array": "^0.10.4", 1762 | "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", 1763 | "ajv": "^6.10.0", 1764 | "chalk": "^4.0.0", 1765 | "cross-spawn": "^7.0.2", 1766 | "debug": "^4.3.2", 1767 | "doctrine": "^3.0.0", 1768 | "escape-string-regexp": "^4.0.0", 1769 | "eslint-scope": "^7.1.1", 1770 | "eslint-utils": "^3.0.0", 1771 | "eslint-visitor-keys": "^3.3.0", 1772 | "espree": "^9.3.3", 1773 | "esquery": "^1.4.0", 1774 | "esutils": "^2.0.2", 1775 | "fast-deep-equal": "^3.1.3", 1776 | "file-entry-cache": "^6.0.1", 1777 | "find-up": "^5.0.0", 1778 | "functional-red-black-tree": "^1.0.1", 1779 | "glob-parent": "^6.0.1", 1780 | "globals": "^13.15.0", 1781 | "globby": "^11.1.0", 1782 | "grapheme-splitter": "^1.0.4", 1783 | "ignore": "^5.2.0", 1784 | "import-fresh": "^3.0.0", 1785 | "imurmurhash": "^0.1.4", 1786 | "is-glob": "^4.0.0", 1787 | "js-yaml": "^4.1.0", 1788 | "json-stable-stringify-without-jsonify": "^1.0.1", 1789 | "levn": "^0.4.1", 1790 | "lodash.merge": "^4.6.2", 1791 | "minimatch": "^3.1.2", 1792 | "natural-compare": "^1.4.0", 1793 | "optionator": "^0.9.1", 1794 | "regexpp": "^3.2.0", 1795 | "strip-ansi": "^6.0.1", 1796 | "strip-json-comments": "^3.1.0", 1797 | "text-table": "^0.2.0", 1798 | "v8-compile-cache": "^2.0.3" 1799 | }, 1800 | "dependencies": { 1801 | "ansi-styles": { 1802 | "version": "4.3.0", 1803 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1804 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1805 | "dev": true, 1806 | "requires": { 1807 | "color-convert": "^2.0.1" 1808 | } 1809 | }, 1810 | "chalk": { 1811 | "version": "4.1.2", 1812 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1813 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1814 | "dev": true, 1815 | "requires": { 1816 | "ansi-styles": "^4.1.0", 1817 | "supports-color": "^7.1.0" 1818 | } 1819 | }, 1820 | "color-convert": { 1821 | "version": "2.0.1", 1822 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1823 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1824 | "dev": true, 1825 | "requires": { 1826 | "color-name": "~1.1.4" 1827 | } 1828 | }, 1829 | "color-name": { 1830 | "version": "1.1.4", 1831 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1832 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1833 | "dev": true 1834 | }, 1835 | "escape-string-regexp": { 1836 | "version": "4.0.0", 1837 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1838 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1839 | "dev": true 1840 | }, 1841 | "has-flag": { 1842 | "version": "4.0.0", 1843 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1844 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1845 | "dev": true 1846 | }, 1847 | "js-yaml": { 1848 | "version": "4.1.0", 1849 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1850 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1851 | "dev": true, 1852 | "requires": { 1853 | "argparse": "^2.0.1" 1854 | } 1855 | }, 1856 | "supports-color": { 1857 | "version": "7.2.0", 1858 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1859 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1860 | "dev": true, 1861 | "requires": { 1862 | "has-flag": "^4.0.0" 1863 | } 1864 | } 1865 | } 1866 | }, 1867 | "eslint-scope": { 1868 | "version": "7.1.1", 1869 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 1870 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 1871 | "dev": true, 1872 | "requires": { 1873 | "esrecurse": "^4.3.0", 1874 | "estraverse": "^5.2.0" 1875 | } 1876 | }, 1877 | "eslint-utils": { 1878 | "version": "3.0.0", 1879 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 1880 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 1881 | "dev": true, 1882 | "requires": { 1883 | "eslint-visitor-keys": "^2.0.0" 1884 | }, 1885 | "dependencies": { 1886 | "eslint-visitor-keys": { 1887 | "version": "2.1.0", 1888 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 1889 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 1890 | "dev": true 1891 | } 1892 | } 1893 | }, 1894 | "eslint-visitor-keys": { 1895 | "version": "3.3.0", 1896 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 1897 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 1898 | "dev": true 1899 | }, 1900 | "espree": { 1901 | "version": "9.3.3", 1902 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", 1903 | "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", 1904 | "dev": true, 1905 | "requires": { 1906 | "acorn": "^8.8.0", 1907 | "acorn-jsx": "^5.3.2", 1908 | "eslint-visitor-keys": "^3.3.0" 1909 | } 1910 | }, 1911 | "esquery": { 1912 | "version": "1.4.0", 1913 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1914 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1915 | "dev": true, 1916 | "requires": { 1917 | "estraverse": "^5.1.0" 1918 | } 1919 | }, 1920 | "esrecurse": { 1921 | "version": "4.3.0", 1922 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1923 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1924 | "dev": true, 1925 | "requires": { 1926 | "estraverse": "^5.2.0" 1927 | } 1928 | }, 1929 | "estraverse": { 1930 | "version": "5.3.0", 1931 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1932 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1933 | "dev": true 1934 | }, 1935 | "esutils": { 1936 | "version": "2.0.3", 1937 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1938 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1939 | "dev": true 1940 | }, 1941 | "fast-deep-equal": { 1942 | "version": "3.1.3", 1943 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1944 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1945 | "dev": true 1946 | }, 1947 | "fast-glob": { 1948 | "version": "3.2.11", 1949 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 1950 | "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 1951 | "dev": true, 1952 | "requires": { 1953 | "@nodelib/fs.stat": "^2.0.2", 1954 | "@nodelib/fs.walk": "^1.2.3", 1955 | "glob-parent": "^5.1.2", 1956 | "merge2": "^1.3.0", 1957 | "micromatch": "^4.0.4" 1958 | }, 1959 | "dependencies": { 1960 | "glob-parent": { 1961 | "version": "5.1.2", 1962 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1963 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1964 | "dev": true, 1965 | "requires": { 1966 | "is-glob": "^4.0.1" 1967 | } 1968 | } 1969 | } 1970 | }, 1971 | "fast-json-stable-stringify": { 1972 | "version": "2.1.0", 1973 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1974 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1975 | "dev": true 1976 | }, 1977 | "fast-levenshtein": { 1978 | "version": "2.0.6", 1979 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1980 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1981 | "dev": true 1982 | }, 1983 | "fastq": { 1984 | "version": "1.13.0", 1985 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 1986 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 1987 | "dev": true, 1988 | "requires": { 1989 | "reusify": "^1.0.4" 1990 | } 1991 | }, 1992 | "file-entry-cache": { 1993 | "version": "6.0.1", 1994 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1995 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1996 | "dev": true, 1997 | "requires": { 1998 | "flat-cache": "^3.0.4" 1999 | } 2000 | }, 2001 | "fill-range": { 2002 | "version": "7.0.1", 2003 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2004 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2005 | "dev": true, 2006 | "requires": { 2007 | "to-regex-range": "^5.0.1" 2008 | } 2009 | }, 2010 | "find-up": { 2011 | "version": "5.0.0", 2012 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2013 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2014 | "dev": true, 2015 | "requires": { 2016 | "locate-path": "^6.0.0", 2017 | "path-exists": "^4.0.0" 2018 | } 2019 | }, 2020 | "flat-cache": { 2021 | "version": "3.0.4", 2022 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 2023 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 2024 | "dev": true, 2025 | "requires": { 2026 | "flatted": "^3.1.0", 2027 | "rimraf": "^3.0.2" 2028 | } 2029 | }, 2030 | "flatted": { 2031 | "version": "3.2.6", 2032 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", 2033 | "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", 2034 | "dev": true 2035 | }, 2036 | "follow-redirects": { 2037 | "version": "1.15.1", 2038 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", 2039 | "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" 2040 | }, 2041 | "form-data": { 2042 | "version": "4.0.0", 2043 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 2044 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 2045 | "requires": { 2046 | "asynckit": "^0.4.0", 2047 | "combined-stream": "^1.0.8", 2048 | "mime-types": "^2.1.12" 2049 | } 2050 | }, 2051 | "fs.realpath": { 2052 | "version": "1.0.0", 2053 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2054 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 2055 | "dev": true 2056 | }, 2057 | "functional-red-black-tree": { 2058 | "version": "1.0.1", 2059 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 2060 | "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", 2061 | "dev": true 2062 | }, 2063 | "glob": { 2064 | "version": "7.2.3", 2065 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 2066 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 2067 | "dev": true, 2068 | "requires": { 2069 | "fs.realpath": "^1.0.0", 2070 | "inflight": "^1.0.4", 2071 | "inherits": "2", 2072 | "minimatch": "^3.1.1", 2073 | "once": "^1.3.0", 2074 | "path-is-absolute": "^1.0.0" 2075 | } 2076 | }, 2077 | "glob-parent": { 2078 | "version": "6.0.2", 2079 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 2080 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 2081 | "dev": true, 2082 | "requires": { 2083 | "is-glob": "^4.0.3" 2084 | } 2085 | }, 2086 | "globals": { 2087 | "version": "13.17.0", 2088 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", 2089 | "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", 2090 | "dev": true, 2091 | "requires": { 2092 | "type-fest": "^0.20.2" 2093 | } 2094 | }, 2095 | "globby": { 2096 | "version": "11.1.0", 2097 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 2098 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 2099 | "dev": true, 2100 | "requires": { 2101 | "array-union": "^2.1.0", 2102 | "dir-glob": "^3.0.1", 2103 | "fast-glob": "^3.2.9", 2104 | "ignore": "^5.2.0", 2105 | "merge2": "^1.4.1", 2106 | "slash": "^3.0.0" 2107 | } 2108 | }, 2109 | "grapheme-splitter": { 2110 | "version": "1.0.4", 2111 | "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", 2112 | "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", 2113 | "dev": true 2114 | }, 2115 | "ignore": { 2116 | "version": "5.2.0", 2117 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 2118 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 2119 | "dev": true 2120 | }, 2121 | "import-fresh": { 2122 | "version": "3.3.0", 2123 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 2124 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 2125 | "dev": true, 2126 | "requires": { 2127 | "parent-module": "^1.0.0", 2128 | "resolve-from": "^4.0.0" 2129 | } 2130 | }, 2131 | "imurmurhash": { 2132 | "version": "0.1.4", 2133 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2134 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 2135 | "dev": true 2136 | }, 2137 | "inflight": { 2138 | "version": "1.0.6", 2139 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2140 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2141 | "dev": true, 2142 | "requires": { 2143 | "once": "^1.3.0", 2144 | "wrappy": "1" 2145 | } 2146 | }, 2147 | "inherits": { 2148 | "version": "2.0.3", 2149 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2150 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 2151 | "dev": true 2152 | }, 2153 | "is-extglob": { 2154 | "version": "2.1.1", 2155 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2156 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2157 | "dev": true 2158 | }, 2159 | "is-glob": { 2160 | "version": "4.0.3", 2161 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2162 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2163 | "dev": true, 2164 | "requires": { 2165 | "is-extglob": "^2.1.1" 2166 | } 2167 | }, 2168 | "is-number": { 2169 | "version": "7.0.0", 2170 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2171 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2172 | "dev": true 2173 | }, 2174 | "isexe": { 2175 | "version": "2.0.0", 2176 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2177 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2178 | "dev": true 2179 | }, 2180 | "json-schema-traverse": { 2181 | "version": "0.4.1", 2182 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2183 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2184 | "dev": true 2185 | }, 2186 | "json-stable-stringify-without-jsonify": { 2187 | "version": "1.0.1", 2188 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2189 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2190 | "dev": true 2191 | }, 2192 | "levn": { 2193 | "version": "0.4.1", 2194 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2195 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2196 | "dev": true, 2197 | "requires": { 2198 | "prelude-ls": "^1.2.1", 2199 | "type-check": "~0.4.0" 2200 | } 2201 | }, 2202 | "linkify-it": { 2203 | "version": "4.0.1", 2204 | "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", 2205 | "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", 2206 | "requires": { 2207 | "uc.micro": "^1.0.1" 2208 | } 2209 | }, 2210 | "locate-path": { 2211 | "version": "6.0.0", 2212 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2213 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2214 | "dev": true, 2215 | "requires": { 2216 | "p-locate": "^5.0.0" 2217 | } 2218 | }, 2219 | "lodash.merge": { 2220 | "version": "4.6.2", 2221 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2222 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2223 | "dev": true 2224 | }, 2225 | "markdown-it": { 2226 | "version": "13.0.1", 2227 | "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", 2228 | "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", 2229 | "requires": { 2230 | "argparse": "^2.0.1", 2231 | "entities": "~3.0.1", 2232 | "linkify-it": "^4.0.1", 2233 | "mdurl": "^1.0.1", 2234 | "uc.micro": "^1.0.5" 2235 | } 2236 | }, 2237 | "mdurl": { 2238 | "version": "1.0.1", 2239 | "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", 2240 | "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" 2241 | }, 2242 | "merge2": { 2243 | "version": "1.4.1", 2244 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2245 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2246 | "dev": true 2247 | }, 2248 | "micromatch": { 2249 | "version": "4.0.5", 2250 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 2251 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 2252 | "dev": true, 2253 | "requires": { 2254 | "braces": "^3.0.2", 2255 | "picomatch": "^2.3.1" 2256 | } 2257 | }, 2258 | "mime-db": { 2259 | "version": "1.52.0", 2260 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2261 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 2262 | }, 2263 | "mime-types": { 2264 | "version": "2.1.35", 2265 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2266 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2267 | "requires": { 2268 | "mime-db": "1.52.0" 2269 | } 2270 | }, 2271 | "minimatch": { 2272 | "version": "3.1.2", 2273 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2274 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2275 | "dev": true, 2276 | "requires": { 2277 | "brace-expansion": "^1.1.7" 2278 | } 2279 | }, 2280 | "ms": { 2281 | "version": "2.1.2", 2282 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2283 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2284 | "dev": true 2285 | }, 2286 | "natural-compare": { 2287 | "version": "1.4.0", 2288 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2289 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2290 | "dev": true 2291 | }, 2292 | "once": { 2293 | "version": "1.4.0", 2294 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2295 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2296 | "dev": true, 2297 | "requires": { 2298 | "wrappy": "1" 2299 | } 2300 | }, 2301 | "optionator": { 2302 | "version": "0.9.1", 2303 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 2304 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 2305 | "dev": true, 2306 | "requires": { 2307 | "deep-is": "^0.1.3", 2308 | "fast-levenshtein": "^2.0.6", 2309 | "levn": "^0.4.1", 2310 | "prelude-ls": "^1.2.1", 2311 | "type-check": "^0.4.0", 2312 | "word-wrap": "^1.2.3" 2313 | } 2314 | }, 2315 | "p-limit": { 2316 | "version": "3.1.0", 2317 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2318 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2319 | "dev": true, 2320 | "requires": { 2321 | "yocto-queue": "^0.1.0" 2322 | } 2323 | }, 2324 | "p-locate": { 2325 | "version": "5.0.0", 2326 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2327 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2328 | "dev": true, 2329 | "requires": { 2330 | "p-limit": "^3.0.2" 2331 | } 2332 | }, 2333 | "parent-module": { 2334 | "version": "1.0.1", 2335 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2336 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2337 | "dev": true, 2338 | "requires": { 2339 | "callsites": "^3.0.0" 2340 | } 2341 | }, 2342 | "path-exists": { 2343 | "version": "4.0.0", 2344 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2345 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2346 | "dev": true 2347 | }, 2348 | "path-is-absolute": { 2349 | "version": "1.0.1", 2350 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2351 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2352 | "dev": true 2353 | }, 2354 | "path-key": { 2355 | "version": "3.1.1", 2356 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2357 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2358 | "dev": true 2359 | }, 2360 | "path-type": { 2361 | "version": "4.0.0", 2362 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2363 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2364 | "dev": true 2365 | }, 2366 | "picomatch": { 2367 | "version": "2.3.1", 2368 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2369 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2370 | "dev": true 2371 | }, 2372 | "prelude-ls": { 2373 | "version": "1.2.1", 2374 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2375 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2376 | "dev": true 2377 | }, 2378 | "punycode": { 2379 | "version": "2.1.1", 2380 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2381 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2382 | "dev": true 2383 | }, 2384 | "queue-microtask": { 2385 | "version": "1.2.3", 2386 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2387 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2388 | "dev": true 2389 | }, 2390 | "regexpp": { 2391 | "version": "3.2.0", 2392 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 2393 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 2394 | "dev": true 2395 | }, 2396 | "resolve-from": { 2397 | "version": "4.0.0", 2398 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2399 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2400 | "dev": true 2401 | }, 2402 | "reusify": { 2403 | "version": "1.0.4", 2404 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2405 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2406 | "dev": true 2407 | }, 2408 | "rimraf": { 2409 | "version": "3.0.2", 2410 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2411 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2412 | "dev": true, 2413 | "requires": { 2414 | "glob": "^7.1.3" 2415 | } 2416 | }, 2417 | "run-parallel": { 2418 | "version": "1.2.0", 2419 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2420 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2421 | "dev": true, 2422 | "requires": { 2423 | "queue-microtask": "^1.2.2" 2424 | } 2425 | }, 2426 | "shebang-command": { 2427 | "version": "2.0.0", 2428 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2429 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2430 | "dev": true, 2431 | "requires": { 2432 | "shebang-regex": "^3.0.0" 2433 | } 2434 | }, 2435 | "shebang-regex": { 2436 | "version": "3.0.0", 2437 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2438 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2439 | "dev": true 2440 | }, 2441 | "slash": { 2442 | "version": "3.0.0", 2443 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2444 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2445 | "dev": true 2446 | }, 2447 | "strip-ansi": { 2448 | "version": "6.0.1", 2449 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2450 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2451 | "dev": true, 2452 | "requires": { 2453 | "ansi-regex": "^5.0.1" 2454 | } 2455 | }, 2456 | "strip-json-comments": { 2457 | "version": "3.1.1", 2458 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2459 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2460 | "dev": true 2461 | }, 2462 | "text-table": { 2463 | "version": "0.2.0", 2464 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2465 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 2466 | "dev": true 2467 | }, 2468 | "to-regex-range": { 2469 | "version": "5.0.1", 2470 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2471 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2472 | "dev": true, 2473 | "requires": { 2474 | "is-number": "^7.0.0" 2475 | } 2476 | }, 2477 | "type-check": { 2478 | "version": "0.4.0", 2479 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2480 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2481 | "dev": true, 2482 | "requires": { 2483 | "prelude-ls": "^1.2.1" 2484 | } 2485 | }, 2486 | "type-fest": { 2487 | "version": "0.20.2", 2488 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2489 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2490 | "dev": true 2491 | }, 2492 | "typescript": { 2493 | "version": "4.7.4", 2494 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", 2495 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", 2496 | "dev": true 2497 | }, 2498 | "uc.micro": { 2499 | "version": "1.0.6", 2500 | "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", 2501 | "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" 2502 | }, 2503 | "uri-js": { 2504 | "version": "4.4.1", 2505 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2506 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2507 | "dev": true, 2508 | "requires": { 2509 | "punycode": "^2.1.0" 2510 | } 2511 | }, 2512 | "v8-compile-cache": { 2513 | "version": "2.3.0", 2514 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 2515 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 2516 | "dev": true 2517 | }, 2518 | "which": { 2519 | "version": "2.0.2", 2520 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2521 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2522 | "dev": true, 2523 | "requires": { 2524 | "isexe": "^2.0.0" 2525 | } 2526 | }, 2527 | "word-wrap": { 2528 | "version": "1.2.4", 2529 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", 2530 | "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", 2531 | "dev": true 2532 | }, 2533 | "wrappy": { 2534 | "version": "1.0.2", 2535 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2536 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2537 | "dev": true 2538 | }, 2539 | "yocto-queue": { 2540 | "version": "0.1.0", 2541 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2542 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2543 | "dev": true 2544 | } 2545 | } 2546 | } 2547 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gitea-vscode", 3 | "displayName": "Gitea-VSCode", 4 | "description": "Gitea Issue Tracker for vs-code", 5 | "publisher": "IJustDev", 6 | "version": "2.1.0", 7 | "engines": { 8 | "vscode": "^1.70.0" 9 | }, 10 | "categories": [ 11 | "Other" 12 | ], 13 | "activationEvents": [ 14 | "onView:giteaIssues.opened-issues", 15 | "onCommand:giteaIssues.initRepo", 16 | "onCommand:giteaIssues.refreshIssues" 17 | ], 18 | "main": "./out/extension.js", 19 | "icon": "resources/icon.png", 20 | "contributes": { 21 | "viewsWelcome": [ 22 | { 23 | "view": "giteaIssues.opened-issues", 24 | "contents": "Refresh to get Gitea opened issues .\n[Refresh](command:giteaIssues.refreshIssues)" 25 | }, 26 | { 27 | "view": "giteaIssues.closed-issues", 28 | "contents": "Refresh to get Gitea closed issues .\n[Refresh](command:giteaIssues.refreshIssues)" 29 | } 30 | ], 31 | "viewsContainers": { 32 | "activitybar": [ 33 | { 34 | "id": "giteaIssues", 35 | "title": "Gitea-Issues", 36 | "icon": "media/issue.svg" 37 | } 38 | ] 39 | }, 40 | "views": { 41 | "giteaIssues": [ 42 | { 43 | "id": "giteaIssues.opened-issues", 44 | "name": "Open Issues" 45 | }, 46 | { 47 | "id": "giteaIssues.closed-issues", 48 | "name": "Closed Issues" 49 | } 50 | ] 51 | }, 52 | "commands": [ 53 | { 54 | "command": "giteaIssues.openIssue", 55 | "title": "Show" 56 | }, 57 | { 58 | "command": "giteaIssues.refreshIssues", 59 | "title": "Refresh", 60 | "icon": { 61 | "dark": "resources/dark/refresh.svg", 62 | "light": "resources/light/refresh.svg" 63 | } 64 | } 65 | ], 66 | "menus": { 67 | "view/title": [ 68 | { 69 | "command": "giteaIssues.refreshIssues", 70 | "group": "navigation", 71 | "when": "view == giteaIssues.opened-issues" 72 | } 73 | ] 74 | }, 75 | "configuration": { 76 | "title": "Gitea", 77 | "properties": { 78 | "gitea.token": { 79 | "scope": "resource", 80 | "type": "string", 81 | "default": "", 82 | "description": "The token for the gitea server." 83 | }, 84 | "gitea.instanceURL": { 85 | "scope": "resource", 86 | "type": "string", 87 | "default": "", 88 | "examples": [ 89 | "http://example.com:3000", 90 | "https://gitea.com" 91 | ], 92 | "description": "The remote gitea instance's url. Append base url to this string eg. http://localhost:8080 or http://localhost/gitea", 93 | "pattern": "^(https|http)://" 94 | }, 95 | "gitea.owner": { 96 | "scope": "resource", 97 | "type": "string", 98 | "default": "", 99 | "description": "The username for the repository." 100 | }, 101 | "gitea.repo": { 102 | "scope": "resource", 103 | "type": "string", 104 | "default": "", 105 | "description": "The repository name." 106 | }, 107 | "gitea.sslVerify": { 108 | "scope": "resource", 109 | "type": "boolean", 110 | "default": true, 111 | "description": "true=Stop when cannot verify SSL certificate, false=Continue any way. Like git config 'sslVerify'." 112 | }, 113 | 114 | "gitea.render": { 115 | "scope": "resource", 116 | "type": "string", 117 | "default": "markdown", 118 | "enum": [ 119 | "markdown", 120 | "html" 121 | ], 122 | "enumDescriptions": [ 123 | "Render Issue in markdown format", 124 | "Render Issue in html format" 125 | ], 126 | "description": "Choose render to show issues in editor" 127 | }, 128 | "gitea.debug": { 129 | "scope": "window", 130 | "type": "boolean", 131 | "default": false, 132 | "description": "Enable debug mode. Need to reload window to apply" 133 | } 134 | } 135 | } 136 | }, 137 | "scripts": { 138 | "vscode:prepublish": "npm run compile", 139 | "compile": "tsc -p ./", 140 | "watch": "tsc -watch -p ./", 141 | "pretest": "npm run compile && npm run lint", 142 | "lint": "eslint src --ext ts", 143 | "test": "node ./out/test/runTest.js" 144 | }, 145 | "devDependencies": { 146 | "@types/vscode": "^1.70.0", 147 | "@types/mocha": "^9.1.1", 148 | "@types/node": "16.x", 149 | "@types/markdown-it": "^12.2.3", 150 | "eslint": "^8.20.0", 151 | "typescript": "^4.7.4" 152 | }, 153 | "dependencies": { 154 | "axios": "^0.27.2", 155 | "markdown-it": "^13.0.1" 156 | }, 157 | "repository": { 158 | "type": "github", 159 | "url": "https://github.com/IJustdev/Gitea-VSCode.git" 160 | }, 161 | "license": "MIT" 162 | } 163 | -------------------------------------------------------------------------------- /resources/bug.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/dark/create.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/dark/issue.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/dark/refresh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/feature.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/icon-highres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IJustDev/Gitea-VSCode/ea43e429b43866ce2010e5cfb27c0c308fa63d31/resources/icon-highres.png -------------------------------------------------------------------------------- /resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IJustDev/Gitea-VSCode/ea43e429b43866ce2010e5cfb27c0c308fa63d31/resources/icon.png -------------------------------------------------------------------------------- /resources/light/create.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/light/issue.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /resources/light/refresh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/IGiteaResponse.ts: -------------------------------------------------------------------------------- 1 | export interface IGiteaResponse { 2 | data: any[]; 3 | } 4 | -------------------------------------------------------------------------------- /src/config.ts: -------------------------------------------------------------------------------- 1 | import { workspace, window } from 'vscode'; 2 | 3 | interface ConfigStorage { 4 | token: string; 5 | instanceURL: string; 6 | owner: string; 7 | repo: string; 8 | sslVerify: boolean; 9 | baseURL: string; 10 | render: string; 11 | debug: boolean; 12 | } 13 | 14 | export interface ConfigTypes extends ConfigStorage { 15 | readonly repoApiUrl: string; 16 | } 17 | 18 | export class Config implements ConfigTypes { 19 | private get storage() { 20 | return workspace.getConfiguration('gitea', null); 21 | } 22 | 23 | private loadConfigValue(configKey: T, type: 'string' | 'boolean' | 'number', acceptDetault = false): ConfigStorage[T] { 24 | if (!acceptDetault && !this.storage.has(configKey)) { 25 | window.showErrorMessage("Gitea-VSCode didn't find a required configuration value: " + configKey); 26 | throw new Error(`Failed to load configuration: "${configKey}"`); 27 | } 28 | 29 | const value = this.storage.has(configKey) 30 | ? (this.storage.get(configKey) as ConfigStorage[T]) 31 | : (this.storage.inspect(configKey) as { defaultValue: ConfigStorage[T]; key: string }).defaultValue; 32 | 33 | if (typeof value === type && (type !== 'string' || (value as string).length > 0)) { 34 | return value as ConfigStorage[T]; 35 | } 36 | 37 | window.showErrorMessage('Gitea-VSCode failed to load a configuration value that is needed: ' + configKey); 38 | throw new Error(`Failed to load configuration: "gitea.${configKey}"`); 39 | } 40 | 41 | public get token() { 42 | return this.loadConfigValue('token', 'string'); 43 | } 44 | 45 | public set token(value) { 46 | this.storage.update('token', value); 47 | } 48 | 49 | public set instanceUrl(value: string) { 50 | this.storage.update('instanceURL', value); 51 | } 52 | 53 | public get instanceURL(): any { 54 | return this.loadConfigValue('instanceURL', 'string'); 55 | } 56 | 57 | public get baseURL(): string { 58 | return this.loadConfigValue('baseURL', 'string'); 59 | } 60 | 61 | public set baseURL(value) { 62 | this.storage.update('baseURL', 'string'); 63 | } 64 | 65 | public get owner() { 66 | return this.loadConfigValue('owner', 'string'); 67 | } 68 | 69 | public set owner(value) { 70 | this.storage.update('owner', value); 71 | } 72 | 73 | public get repo() { 74 | return this.loadConfigValue('repo', 'string'); 75 | } 76 | 77 | public set repo(value) { 78 | this.storage.update('repo', value); 79 | } 80 | 81 | public get repoApiUrl(): string { 82 | return this.instanceURL.replace(/\/$/, "") + 83 | '/api/v1/repos/' + 84 | this.owner + 85 | '/' + this.repo + '/issues'; 86 | } 87 | 88 | public set sslVerify(value) { 89 | this.storage.update('sslVerify', value); 90 | } 91 | 92 | public get sslVerify() { 93 | return this.loadConfigValue('sslVerify', 'boolean'); 94 | } 95 | 96 | 97 | public get render() { 98 | return this.loadConfigValue('render', 'string') 99 | } 100 | 101 | public set render(value) { 102 | this.storage.update('render', value) 103 | } 104 | 105 | public set debug(value) { 106 | this.storage.update('debug', value) 107 | } 108 | 109 | public get debug(): boolean { 110 | return this.loadConfigValue('debug', 'boolean'); 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | 3 | import { showIssueHTML, showIssueMD } from './template.issues'; 4 | import { Issue } from './issue'; 5 | import { IssueProvider } from './issueProvider'; 6 | import { Config } from './config'; 7 | import MarkdownIt = require('markdown-it'); 8 | import { Logger } from './logger'; 9 | 10 | export function showIssueInWebPanel(issue: Issue) { 11 | const panel = vscode.window.createWebviewPanel( 12 | 'issue', 13 | issue.label, 14 | vscode.ViewColumn.Active, 15 | { 16 | enableScripts: true 17 | } 18 | ); 19 | 20 | const config = new Config(); 21 | 22 | if(config.render == 'html') { 23 | panel.webview.html = showIssueHTML(issue); 24 | } else { 25 | let markdownIt = new MarkdownIt() 26 | panel.webview.html = markdownIt.render(showIssueMD(issue)); 27 | } 28 | 29 | return panel; 30 | } 31 | 32 | export function activate(context: vscode.ExtensionContext) { 33 | Logger.init() 34 | Logger.log('Starting Gitea ...'); 35 | 36 | // Array of issues; This is used to determine whether a issue is already open 37 | // in a tab or not. 38 | let openIssues: Array = []; 39 | const openIssuesProvider = new IssueProvider("open"); 40 | const closedIssuesProvider = new IssueProvider("closed"); 41 | 42 | vscode.window.registerTreeDataProvider('giteaIssues.opened-issues', openIssuesProvider); 43 | vscode.window.registerTreeDataProvider('giteaIssues.closed-issues', closedIssuesProvider); 44 | 45 | vscode.commands.registerCommand('giteaIssues.openIssue', (issue: Issue) => { 46 | const issueOpenable = openIssues.find((c) => c.issueId === issue.issueId) === undefined; 47 | 48 | if (issueOpenable) { 49 | const panel = showIssueInWebPanel(issue); 50 | openIssues.push(issue); 51 | panel.onDidDispose((event) => { 52 | openIssues.splice(openIssues.indexOf(issue), 1); 53 | }); 54 | } 55 | }); 56 | 57 | vscode.commands.registerCommand('giteaIssues.refreshIssues', () => { 58 | openIssuesProvider.refresh(); 59 | closedIssuesProvider.refresh(); 60 | }); 61 | 62 | Logger.log('Gitea is ready') 63 | } 64 | 65 | export function deactivate() {} 66 | -------------------------------------------------------------------------------- /src/giteaConnector.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import * as https from 'https'; 3 | import axios from 'axios'; 4 | 5 | import { IGiteaResponse } from './IGiteaResponse'; 6 | import { Logger } from './logger'; 7 | 8 | export class GiteaConnector { 9 | private authToken: string; 10 | private ssl: boolean; 11 | 12 | public constructor(authToken: string, ssl: boolean = false) { 13 | this.authToken = authToken; 14 | this.ssl = ssl; 15 | } 16 | 17 | public async getIssues(repoUri: string, state: string, page: number = 0): Promise { 18 | return this.getEndpoint(`${repoUri}?state=${state}&page=${page}`); 19 | } 20 | 21 | private async getEndpoint(url: string): Promise { 22 | Logger.debug('getEndpoint', 'request', {'url': url}) 23 | return new Promise((resolve, reject) => { 24 | return axios.get(url, this.requestOptions).then((data) => { 25 | resolve(data); 26 | Logger.debug('getEndpoint', 'response', {'url': url, 'status': data.status, 'size': data.data.length}) 27 | }).catch((err) => { 28 | this.displayErrorMessage(err); 29 | Logger.log(err) 30 | reject(err); 31 | }); 32 | }); 33 | } 34 | 35 | private async postEndpoint(url: string): Promise { 36 | return new Promise((resolve, reject) => { 37 | return axios.post(url, this.requestOptions); 38 | }); 39 | } 40 | 41 | private get requestOptions(): object { 42 | const agent = new https.Agent({ 43 | rejectUnauthorized: this.ssl, 44 | }); 45 | return { 46 | headers: {Authorization: 'token ' + this.authToken}, 47 | httpsAgent: agent, 48 | }; 49 | } 50 | 51 | private displayErrorMessage(err: string) { 52 | vscode.window.showErrorMessage("Error occoured. " + err); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/issue.ts: -------------------------------------------------------------------------------- 1 | import { Uri, TreeItem, TreeItemCollapsibleState, Command } from 'vscode'; 2 | 3 | interface Label { 4 | color: string; 5 | id: number; 6 | name: string; 7 | url: string; 8 | } 9 | 10 | export class Issue extends TreeItem { 11 | contextValue = 'issue'; 12 | original_issue? : Issue; 13 | 14 | static createIssue(element: Issue) { 15 | let ret = new Issue( 16 | element.label, 17 | element.issueId, 18 | element.body, 19 | element.state, 20 | element.assignee, 21 | element.assignees, 22 | element.creator, 23 | element.labels, 24 | element.collapsibleState, 25 | element.title, 26 | element.html_url) 27 | ret.original_issue = element; 28 | return ret 29 | } 30 | 31 | constructor( 32 | public readonly label: string, 33 | public issueId: number, 34 | public body: string, 35 | public state: string, 36 | public assignee: string, 37 | public assignees: any[], 38 | public creator: string, 39 | public labels: Label[], 40 | public collapsibleState: TreeItemCollapsibleState, 41 | public title: string, 42 | public html_url: string, 43 | public command?: Command 44 | ) { 45 | super(label, collapsibleState); 46 | this.tooltip = this.label + ' - ' + this.assignee; 47 | } 48 | 49 | labelDependentIcon(dark: boolean = false): Uri { 50 | if (this.labels.length === 0) { 51 | return createIconWithColor('#868686'); 52 | } else { 53 | return createIconWithColor(this.labels[0].color); 54 | } 55 | } 56 | 57 | iconPath = { 58 | light: this.labelDependentIcon(), 59 | dark: this.labelDependentIcon(true), 60 | }; 61 | 62 | } 63 | 64 | export function createIconWithColor(color: string): Uri { 65 | const icon = ` 66 | 67 | 68 | 69 | 70 | `.replace(new RegExp('{{color}}', 'g'), '#' + color); 71 | 72 | return Uri.parse('data:image/svg+xml;base64,' + Buffer.from(icon).toString('base64')); 73 | } 74 | -------------------------------------------------------------------------------- /src/issueProvider.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | 3 | import { Issue } from './issue'; 4 | import { Config } from './config'; 5 | import { GiteaConnector } from './giteaConnector'; 6 | import { Logger } from './logger'; 7 | 8 | export class IssueProvider implements vscode.TreeDataProvider { 9 | private _onDidChangeTreeData: vscode.EventEmitter = new vscode.EventEmitter(); 10 | 11 | readonly onDidChangeTreeData: vscode.Event = this._onDidChangeTreeData.event; 12 | 13 | private state: string; 14 | private issueList: Issue[] = []; 15 | 16 | constructor(state: string) { 17 | this.state = state; 18 | } 19 | 20 | public getTreeItem(element: Issue): vscode.TreeItem | Thenable { 21 | return element; 22 | } 23 | 24 | public async getIssuesAsync() : Promise { 25 | this.issueList = []; 26 | const config = new Config(); 27 | const giteaConnector = new GiteaConnector(config.token, config.sslVerify); 28 | 29 | const issues = []; 30 | let page = 1; 31 | while (page < 11) { 32 | Logger.log( `Retrieve issues. State: ${this.state} - page ${page}`); 33 | const issuesOfPage = (await giteaConnector.getIssues(config.repoApiUrl, this.state, page)).data; 34 | Logger.log( `${issuesOfPage.length} issues retrieved (state: ${this.state} - page: ${page})`); 35 | issues.push(...issuesOfPage); 36 | issuesOfPage.forEach((c) => { 37 | c.label = `#${c.number} - ${c.title}`; 38 | c.issueId = c.number; 39 | c.assignee = c.assignee === null ? 'Nobody' : c.assignee.login; 40 | c.assignees = c.assignees; 41 | c.creator = c.user.login; 42 | c.id = c.id.toString(); 43 | }); 44 | page++; 45 | if (issuesOfPage.length < 10) { 46 | break; 47 | } 48 | } 49 | 50 | this.issueList = [] 51 | issues.forEach((element: Issue) => { 52 | let issue = Issue.createIssue(element) 53 | 54 | issue.command = { 55 | command: 'giteaIssues.openIssue', 56 | title: '', 57 | arguments: [element], 58 | }; 59 | issue.collapsibleState = vscode.TreeItemCollapsibleState.Collapsed; 60 | issue.contextValue = 'issue'; 61 | this.issueList.push(issue) 62 | Logger.debug('Issue processed', { 'id': issue.issueId, 'state': issue.state }) 63 | }); 64 | 65 | return this.issueList 66 | } 67 | 68 | public async refresh() { 69 | await this.getIssuesAsync(); 70 | this._onDidChangeTreeData.fire(); 71 | } 72 | 73 | public getChildren(element?: Issue): vscode.ProviderResult { 74 | return this.createChildNodes(element, this.issueList); 75 | } 76 | 77 | private createChildNodes(element: Issue | undefined, issues: Issue[]) { 78 | for (const issue of issues) { 79 | if (element === issue) { 80 | let childItems: vscode.TreeItem[] = [ 81 | new vscode.TreeItem('Assignee - ' + element.assignee, vscode.TreeItemCollapsibleState.None), 82 | new vscode.TreeItem('State - ' + element.state, vscode.TreeItemCollapsibleState.None), 83 | new vscode.TreeItem('ID - ' + element.issueId, vscode.TreeItemCollapsibleState.None), 84 | new vscode.TreeItem('From - ' + element.creator, vscode.TreeItemCollapsibleState.None), 85 | ]; 86 | return Promise.resolve(childItems); 87 | } 88 | } 89 | return issues; 90 | } 91 | } 92 | 93 | -------------------------------------------------------------------------------- /src/logger.ts: -------------------------------------------------------------------------------- 1 | import { type } from "os"; 2 | import { OutputChannel, window } from "vscode"; 3 | import { Config } from "./config"; 4 | 5 | // Inspiration : GitLens - https://github.com/gitkraken/vscode-gitlens/blob/main/src/logger.ts 6 | export class Logger { 7 | private static channel: OutputChannel | undefined 8 | private static debugEnabled: boolean = false 9 | 10 | private constructor() { } 11 | 12 | public static init() { 13 | this.channel = window.createOutputChannel('Gitea') 14 | const config = new Config() 15 | this.debugEnabled = config.debug ?? false 16 | } 17 | 18 | public static log(message: string): void { 19 | if (this.channel == null) return 20 | this.channel.appendLine(`${this.timestamp} ${message}`); 21 | } 22 | 23 | public static debug(message: string, ...params: any[]): void { 24 | if (this.channel == null) return 25 | if (!this.debugEnabled) return 26 | 27 | params = this.convertParams(params) 28 | this.channel.appendLine(`${this.timestamp}[DEBUG] ${message} - ${params.join(' - ')}`); 29 | } 30 | 31 | private static convertParams(params: any[]): any[] { 32 | return params.flatMap((param: any) => { 33 | if (typeof param === 'object') { 34 | return Object.entries(param).map((entry) => { 35 | return entry[0] + ': ' + entry[1]; 36 | }); 37 | } 38 | return param; 39 | }); 40 | } 41 | 42 | private static get timestamp(): string { 43 | return `[${new Date().toISOString().replace(/.*T/, '').slice(0, -1)}]`; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/template.issues.ts: -------------------------------------------------------------------------------- 1 | import { Issue } from './issue'; 2 | 3 | export function showIssueHTML(issue: Issue) { 4 | return ` 5 |

{{label}}

6 | 7 | 8 | 11 | 14 | 15 | 16 | 19 | 22 | 23 | 24 | 27 | 30 | 31 |
9 | Title 10 | 12 | {{label}} 13 |
17 | State 18 | 20 | {{state}} 21 |
25 | Assignee 26 | 28 | {{assignee}} 29 |
32 |

33 | {{description}} 34 |

35 | 36 | ` 37 | .replace('{{label}}', issue.label) 38 | .replace('{{state}}', issue.state) 39 | .replace('{{assignee}}', issue.assignee) 40 | .replace('{{description}}', issue.body) 41 | .replace('{{label}}', issue.label); 42 | } 43 | 44 | 45 | export function showIssueMD(issue: Issue) { 46 | let md_labels = issue.labels.map(label => { 47 | return '![' + label.name + '](https://img.shields.io/badge/' + label.name + '-' + label.color + '.svg)' 48 | }).join(', ') 49 | 50 | let assignees = issue.assignees === null ? "Nobody" : issue.assignees.map(assignee => { return assignee.login }).join(', '); 51 | 52 | let md = `# {{title}} (#{{id}}) 53 | 54 | {{description}} 55 | 56 | --- 57 | 58 | * State: {{state}} 59 | * Assignee: {{assignee}} 60 | * Labels: {{labels}} 61 | * [See in browser]({{html_url}}) 62 | ` 63 | .replace('{{title}}', issue.title) 64 | .replace('{{id}}', issue.issueId.toString()) 65 | .replace('{{description}}', issue.body) 66 | .replace('{{state}}', issue.state) 67 | .replace('{{assignee}}', assignees) 68 | .replace('{{labels}}', md_labels) 69 | .replace('{{html_url}}', issue.html_url) 70 | 71 | return md 72 | } 73 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": [ 7 | "es6" 8 | ], 9 | "sourceMap": true, 10 | "rootDir": "src", 11 | "strict": true /* enable all strict type-checking options */ 12 | /* Additional Checks */ 13 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 14 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 15 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 16 | }, 17 | "exclude": [ 18 | "node_modules", 19 | ".vscode-test" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "no-string-throw": true, 4 | "no-unused-expression": true, 5 | "no-duplicate-variable": true, 6 | "curly": true, 7 | "class-name": true, 8 | "semicolon": [ 9 | true, 10 | "always" 11 | ], 12 | "triple-equals": true 13 | }, 14 | "defaultSeverity": "warning" 15 | } 16 | -------------------------------------------------------------------------------- /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/vscode/vscode.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 `test/extension.test.ts` or create new test files inside the `test` folder. 34 | * By convention, the 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 | --------------------------------------------------------------------------------