├── .eslintrc.json ├── .github ├── CODEOWNERS └── workflows │ └── deploy.yaml ├── .gitignore ├── .nvmrc ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── copy-assets.sh ├── package.json ├── src ├── errors.ts ├── extension.ts └── global.d.ts ├── tree-sitter-small.png ├── tsconfig.json └── yarn.lock /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "@typescript-eslint/parser", 4 | "extends": [ 5 | "eslint:recommended", 6 | "plugin:@typescript-eslint/recommended", 7 | "prettier" 8 | ], 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module" 12 | }, 13 | "plugins": ["@typescript-eslint"], 14 | "rules": { 15 | "@typescript-eslint/consistent-type-assertions": [ 16 | "error", 17 | { 18 | "assertionStyle": "as" 19 | } 20 | ], 21 | "@typescript-eslint/naming-convention": "warn", 22 | "@typescript-eslint/no-explicit-any": "off", 23 | "@typescript-eslint/no-inferrable-types": "off", 24 | "@typescript-eslint/no-non-null-assertion": "off", 25 | "@typescript-eslint/no-unused-vars": [ 26 | "warn", 27 | { 28 | "argsIgnorePattern": "^_", 29 | "varsIgnorePattern": "^_", 30 | "ignoreRestSiblings": true 31 | } 32 | ], 33 | "curly": "warn", 34 | "eqeqeq": [ 35 | "warn", 36 | "always", 37 | { 38 | "null": "never" 39 | } 40 | ], 41 | "no-constant-condition": ["error", { "checkLoops": false }], 42 | "no-throw-literal": "warn", 43 | "semi": "off" 44 | }, 45 | "ignorePatterns": ["**/vendor/**/*.ts", "**/vendor/**/*.js"] 46 | } 47 | 48 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @cursorless-dev/code-owners -------------------------------------------------------------------------------- /.github/workflows/deploy.yaml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | publish-extension: 8 | name: Publish to marketplace 9 | runs-on: ubuntu-latest 10 | environment: production 11 | steps: 12 | - name: Checkout repository 13 | uses: actions/checkout@v4 14 | 15 | - name: Set up Node.js 16 | uses: actions/setup-node@v4 17 | with: 18 | node-version-file: .nvmrc 19 | cache: yarn 20 | 21 | - name: Install dependencies 22 | run: yarn install 23 | 24 | - name: Publish to Open VSX Registry 25 | id: publishToOpenVSX 26 | uses: HaaLeo/publish-vscode-extension@v1 27 | with: 28 | pat: ${{ secrets.OPEN_VSX_TOKEN }} 29 | 30 | - name: Publish to Visual Studio Marketplace 31 | uses: HaaLeo/publish-vscode-extension@v1 32 | with: 33 | pat: ${{ secrets.VS_MARKETPLACE_TOKEN }} 34 | registryUrl: https://marketplace.visualstudio.com 35 | extensionFile: ${{ steps.publishToOpenVSX.outputs.vsixPath }} 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.make-work/ 2 | /.metals/ 3 | /.vscode-test/ 4 | /node_modules/ 5 | /out/ 6 | /parsers/ 7 | /vendor/ 8 | *.vsix 9 | *.bin 10 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v21.1.0 2 | -------------------------------------------------------------------------------- /.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: compile" 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: compile" 33 | }, 34 | { 35 | "name": "Debug tests", 36 | "type": "node", 37 | "request": "launch", 38 | "cwd": "${workspaceFolder}", 39 | "runtimeExecutable": "npm", 40 | "runtimeArgs": [ 41 | "run-script", "debug" 42 | ], 43 | "port": 9229 44 | } 45 | ] 46 | } 47 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "out": false // set this to true to hide the "out" folder with the compiled JS files 5 | }, 6 | "search.exclude": { 7 | "out": true // set this to false to include "out" folder in search results 8 | }, 9 | // Turn off tsc task auto detection since we have the necessary tasks as npm scripts 10 | "typescript.tsc.autoDetect": "off", 11 | "cSpell.words": [ 12 | "wasm" 13 | ] 14 | } -------------------------------------------------------------------------------- /.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 11 | examples/** 12 | .github/** 13 | copy-assets.sh 14 | .nvmrc 15 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to the "vscode-parse-tree" extension will be documented in this file. 4 | 5 | ## 0.33.0 (22 Apr 2025) 6 | 7 | ### Enhancements 8 | 9 | - Stop building wasm and instead use dependency `@cursorless/tree-sitter-wasms` [#103](https://github.com/cursorless-dev/vscode-parse-tree/pull/103) ([AndreasArvidsson](https://github.com/AndreasArvidsson)) 10 | 11 | ## 0.32.0 (25 Oct 2024) 12 | 13 | ### Enhancements 14 | 15 | - add: dart language compatibility [#89](https://github.com/cursorless-dev/vscode-parse-tree/pull/89) ([@sonnyvesali](https://github.com/sonnyvesali)) 16 | 17 | ## 0.31.0 (14 Jun 2024) 18 | 19 | ### Enhancements 20 | 21 | - Upgrade tree-sitter [#84](https://github.com/cursorless-dev/vscode-parse-tree/pull/84) ([@pokey](https://github.com/pokey)) 22 | 23 | ## 0.30.0 (19 Mar 2024) 24 | 25 | ### Enhancements 26 | 27 | - Add Gleam support [#81](https://github.com/cursorless-dev/vscode-parse-tree/pull/81) ([@Vynlar](https://github.com/Vynlar)) 28 | 29 | ## 0.29.0 (1 Dec 2023) 30 | 31 | ### Enhancements 32 | 33 | - Switch to tree-sitter-xml 34 | 35 | ## 0.28.0 (16 Oct 2023) 36 | 37 | ### Enhancements 38 | 39 | - Add terraform support [#72](https://github.com/cursorless-dev/vscode-parse-tree/pull/72) ([@danlamanna](https://github.com/danlamanna)) 40 | 41 | ## 0.27.0 (16 Oct 2023) 42 | 43 | ### Enhancements 44 | 45 | - Add nix support [#66](https://github.com/cursorless-dev/vscode-parse-tree/pull/66) ([@fidgetingbits](https://github.com/fidgetingbits)) 46 | - Add lua support [#67](https://github.com/cursorless-dev/vscode-parse-tree/pull/67) ([@fidgetingbits](https://github.com/fidgetingbits)) 47 | - Add swift support [#70](https://github.com/cursorless-dev/vscode-parse-tree/pull/70) ([@swsnider](https://github.com/swsnider)) 48 | 49 | ## 0.26.0 (29 Mar 2023) 50 | 51 | ### Enhancements 52 | 53 | - Add tree-sitter-julia support 54 | 55 | ## 0.25.0 (1 Mar 2023) 56 | 57 | ### Enhancements 58 | 59 | - Include tree-sitter-perl to add Perl support [#61](https://github.com/cursorless-dev/vscode-parse-tree/pull/61) ([@Leeft](https://github.com/Leeft)) 60 | 61 | ## 0.24.0 (29 Nov 2022) 62 | 63 | ### Enhancements 64 | 65 | - Add Elixir support [#57](https://github.com/cursorless-dev/vscode-parse-tree/pull/57) ([@shawa](https://github.com/shawa)) 66 | 67 | ## 0.23.0 (21 Sep 2022) 68 | 69 | ### Enhancements 70 | 71 | - Api for registering custom languages [#43](https://github.com/cursorless-dev/vscode-parse-tree/pull/43) ([@RedCMD](https://github.com/RedCMD)) 72 | 73 | ## 0.22.0 (18 Sep 2022) 74 | 75 | ### Enhancements 76 | 77 | - Add Starlark support [#44](https://github.com/cursorless-dev/vscode-parse-tree/pull/44) ([@auscompgeek](https://github.com/auscompgeek)) 78 | 79 | ## 0.21.0 (25 Jul 2022) 80 | 81 | ### Enhancements 82 | 83 | - Add support for Talon [#41](https://github.com/cursorless-dev/vscode-parse-tree/pull/41) ([@phillco](https://github.com/phillco)) 84 | 85 | ## 0.20.0 (23 Jul 2022) 86 | 87 | ### Enhancements 88 | 89 | - Add support for Kotlin [#40](https://github.com/cursorless-dev/vscode-parse-tree/pull/40) ([@phillco](https://github.com/phillco)) 90 | 91 | ## 0.19.0 (21 Jul 2022) 92 | 93 | ### Enhancements 94 | 95 | - Add support for elm [#38](https://github.com/cursorless-dev/vscode-parse-tree/pull/38) ([@Gauteab](https://github.com/Gauteab)) 96 | 97 | ## 0.18.0 (8 Jun 2022) 98 | 99 | ### Enhancements 100 | 101 | - Add tree-sitter-query [#27](https://github.com/cursorless-dev/vscode-parse-tree/pull/27) ([@Will-Sommers](https://github.com/Will-Sommers)) 102 | 103 | ## 0.17.0 (17 Mar 2022) 104 | 105 | ### Enhancements 106 | 107 | - Add support for CSS and SCSS [#25](https://github.com/pokey/vscode-parse-tree/pull/25) ([@Will-Sommers](https://github.com/Will-Sommers)) 108 | 109 | ## 0.16.0 (27 Feb 2022) 110 | 111 | ### Enhancements 112 | 113 | - Add LaTeX support [#24](https://github.com/pokey/vscode-parse-tree/pull/24) ([@du-da](https://github.com/du-da)) 114 | 115 | ## 0.15.0 (18 Feb 2022) 116 | 117 | ### Enhancements 118 | 119 | - Bundle web-tree-sitter and added Haskell support [#20](https://github.com/pokey/vscode-parse-tree/pull/20) ([@wenkokke](https://github.com/wenkokke)) 120 | 121 | ## 0.14.0 (16 Jan 2021) 122 | 123 | ### Enhancements 124 | 125 | - Add support for php [#19](https://github.com/pokey/vscode-parse-tree/pull/19) ([@nathanheffley](https://github.com/nathanheffley)) 126 | 127 | ## 0.13.0 (22 Dec 2021) 128 | 129 | ### Enhancements 130 | 131 | - Add support for sparql [#17](https://github.com/pokey/vscode-parse-tree/pull/17) ([@lance-sp](https://github.com/lance-sp)) 132 | - Add support for scala [#16](https://github.com/pokey/vscode-parse-tree/pull/16) ([@SCdF](https://github.com/SCdF)) 133 | 134 | ## 0.12.0 (9 Dec 2021) 135 | 136 | ### Enhancements 137 | 138 | - Add support for clojure [#13](https://github.com/pokey/vscode-parse-tree/pull/13) ([@pokey](https://github.com/pokey)) 139 | 140 | ## 0.11.0 (8 Dec 2021) 141 | 142 | ### Enhancements 143 | 144 | - Upgrade typescript parser [#12](https://github.com/pokey/vscode-parse-tree/pull/12) ([@pokey](https://github.com/pokey)) 145 | 146 | ## 0.10.0 (30 Nov 2021) 147 | 148 | ### Enhancements 149 | 150 | - Add agda support [#10](https://github.com/pokey/vscode-parse-tree/pull/10) ([@wenkokke](https://github.com/wenkokke)) 151 | 152 | ## 0.9.0 (16 Aug 2021) 153 | 154 | ### Enhancements 155 | 156 | - Add `loadLanguage` function and improve loading robustness [#8](https://github.com/pokey/vscode-parse-tree/pull/8) 157 | 158 | ## 0.8.0 (8 Aug 2021) 159 | 160 | ### Enhancements 161 | 162 | - Add preliminary xml support using html parser 163 | - Improve error messages 164 | 165 | ## 0.7.0 (8 Aug 2021) 166 | 167 | ### Enhancements 168 | 169 | - Add C and HTML support 170 | 171 | ## 0.6.0 (28 July 2021) 172 | 173 | ### Enhancements 174 | 175 | - Add Java support 176 | 177 | ## 0.5.0 (22 July 2021) 178 | 179 | ### Enhancements 180 | 181 | - Add C# support [#2](https://github.com/pokey/vscode-parse-tree/pull/2) ([@sterlind](https://github.com/sterlind)) 182 | 183 | ## 0.4.0 184 | 185 | Add support for untrusted workspaces 186 | 187 | ## 0.3.0 188 | 189 | Switch to wasm to support Windows and Remote SSH 190 | 191 | ## 0.2.0 192 | 193 | - Add JSON parser 194 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 George Fraser 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Parse tree 2 | 3 | Exposes an api function that can be used to get a parse tree node for a given file location. 4 | 5 | ## Usage 6 | 7 | Can be used as follows: 8 | 9 | ```ts 10 | const parseTreeExtension = vscode.extensions.getExtension("pokey.parse-tree"); 11 | 12 | if (parseTreeExtension == null) { 13 | throw new Error("Depends on pokey.parse-tree extension"); 14 | } 15 | 16 | const { getNodeAtLocation } = await parseTreeExtension.activate(); 17 | ``` 18 | 19 | Don't forget to add an `extensionDependencies`-entry to `package.json` as 20 | described in 21 | https://code.visualstudio.com/api/references/vscode-api#extensions. 22 | 23 | ### Parsing a custom language 24 | 25 | If you'd like to add support for a new language, see the [Adding a new language](#adding-a-new-language) section below. Alternatively, your extension can register a custom language with this extension. Although this is not the preferred way to add a new language, it can be convenient when you have a parser that you don't believe belongs in the main extension. 26 | 27 | Parsing your own language is as simple as registering your `languageId` with an absolute path to your `.wasm` file: 28 | 29 | ```ts 30 | const { registerLanguage } = await parseTreeExtension.activate(); 31 | 32 | registerLanguage(languageId, wasmPath); 33 | ``` 34 | 35 | ## Contributing 36 | 37 | ### Setup 38 | 39 | 1. `yarn` 40 | 41 | ### Adding a new language 42 | 43 | It's straightforward to add any [language with a tree-sitter grammar](https://tree-sitter.github.io/tree-sitter/). 44 | 45 | 1. Add a dependency on the npm package for that language in [tree-sitter-wasms](https://github.com/cursorless-dev/tree-sitter-wasms) 46 | 2. Add a language to the dictionary at the top of `./src/extension.ts` 47 | 3. Add a reference to `onLanguage:yourlang` to the [activationEvents section of package.json](package.json). `yourlang` must be a [VSCode language identifier](https://code.visualstudio.com/docs/languages/identifiers). 48 | 4. Run `yarn compile`, then hit `F5` in VSCode, with this project open, to test your changes. 49 | 5. Submit a PR! 50 | 51 | ### Developing on WSL2 52 | 53 | When working with WSL, the host vscode instance connects to a vscode server on the WSL vm. This happens automatically when you run "code" in WSL, as long as you have the "Remote - WSL" extension installed on the host. From there you need to: 54 | 55 | - Install the `pokey.command-server` extension on the host vscode 56 | - Clone the extension in the WSL side. 57 | - If you're adding language support to `vscode-parse-tree`, you need to clone that as well, build it, and link it into the `vscode-server` extension folder: `ln -s ~/your/code/vscode-parse-tree ~/.vscode-server/extensions/parse-tree` for instance. 58 | - If you get errors about needing to install the `Remote-WSL` extension, you might need to manually delete the extension from the host side and try again. 59 | 60 | ## Change Log 61 | 62 | See [CHANGELOG.md](CHANGELOG.md). 63 | 64 | # Credits 65 | 66 | Forked from https://github.com/georgewfraser/vscode-tree-sitter. 67 | -------------------------------------------------------------------------------- /copy-assets.sh: -------------------------------------------------------------------------------- 1 | cp -r node_modules/@cursorless/tree-sitter-wasms/out parsers 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "parse-tree", 3 | "displayName": "Parse tree", 4 | "description": "Access document syntax using tree-sitter", 5 | "version": "0.37.2", 6 | "publisher": "pokey", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/pokey/vscode-parse-tree" 10 | }, 11 | "license": "MIT", 12 | "extensionKind": [ 13 | "ui", 14 | "workspace" 15 | ], 16 | "engines": { 17 | "vscode": "^1.58.0" 18 | }, 19 | "categories": [ 20 | "Programming Languages", 21 | "Themes", 22 | "Other" 23 | ], 24 | "activationEvents": [ 25 | "onLanguage:agda", 26 | "onLanguage:c", 27 | "onLanguage:clojure", 28 | "onLanguage:cpp", 29 | "onLanguage:csharp", 30 | "onLanguage:css", 31 | "onLanguage:dart", 32 | "onLanguage:elixir", 33 | "onLanguage:elm", 34 | "onLanguage:gleam", 35 | "onLanguage:go", 36 | "onLanguage:haskell", 37 | "onLanguage:html", 38 | "onLanguage:java", 39 | "onLanguage:javascript", 40 | "onLanguage:javascriptreact", 41 | "onLanguage:json", 42 | "onLanguage:jsonc", 43 | "onLanguage:jsonl", 44 | "onLanguage:julia", 45 | "onLanguage:kotlin", 46 | "onLanguage:latex", 47 | "onLanguage:lua", 48 | "onLanguage:markdown", 49 | "onLanguage:nix", 50 | "onLanguage:perl", 51 | "onLanguage:php", 52 | "onLanguage:python", 53 | "onLanguage:r", 54 | "onLanguage:ruby", 55 | "onLanguage:rust", 56 | "onLanguage:scala", 57 | "onLanguage:scm", 58 | "onLanguage:scss", 59 | "onLanguage:shellscript", 60 | "onLanguage:sparql", 61 | "onLanguage:starlark", 62 | "onLanguage:swift", 63 | "onLanguage:talon", 64 | "onLanguage:terraform", 65 | "onLanguage:typescript", 66 | "onLanguage:typescriptreact", 67 | "onLanguage:xml", 68 | "onLanguage:yaml" 69 | ], 70 | "main": "./out/extension.js", 71 | "capabilities": { 72 | "untrustedWorkspaces": { 73 | "supported": true 74 | } 75 | }, 76 | "contributes": {}, 77 | "scripts": { 78 | "vscode:prepublish": "npm run compile", 79 | "compile": "tsc -p ./ && npm run copy-assets", 80 | "copy-assets": "sh copy-assets.sh", 81 | "watch": "tsc -watch -p ./", 82 | "test": "npm run compile && node ./out/test", 83 | "benchmark": "npm run compile && node ./out/benchmark", 84 | "debug": "npm run compile && node --nolazy --inspect-brk=9229 ./out/test", 85 | "lint": "eslint src --ext ts", 86 | "build": "vsce package -o build.vsix", 87 | "publish": "vsce publish patch" 88 | }, 89 | "devDependencies": { 90 | "@cursorless/tree-sitter-wasms": "0.3.0", 91 | "@types/mocha": "^2.2.42", 92 | "@types/node": "^8.10.25", 93 | "@types/vscode": "~1.58.0", 94 | "@typescript-eslint/eslint-plugin": "^6.11.0", 95 | "@typescript-eslint/parser": "^6.11.0", 96 | "@vscode/test-electron": "^2.1.3", 97 | "eslint-config-prettier": "^9.0.0", 98 | "eslint": "^8.53.0", 99 | "typescript": "^4.5.5" 100 | }, 101 | "dependencies": { 102 | "semver": "7.7.2", 103 | "web-tree-sitter": "^0.25.3" 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /src/errors.ts: -------------------------------------------------------------------------------- 1 | export class UnsupportedLanguageError extends Error { 2 | constructor(language: string) { 3 | super( 4 | `Language '${language}' not supported by parse tree extension. See https://github.com/pokey/vscode-parse-tree#adding-a-new-language` 5 | ); 6 | this.name = "UnsupportedLanguageError"; 7 | } 8 | } 9 | 10 | export class LanguageStillLoadingError extends Error { 11 | constructor(language: string) { 12 | super(`Language '${language}' is still loading; please wait and try again`); 13 | this.name = "LanguageStillLoadingError"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from "vscode"; 2 | import * as treeSitter from "web-tree-sitter"; 3 | import * as path from "path"; 4 | import * as fs from "fs"; 5 | import * as semver from "semver"; 6 | import { LanguageStillLoadingError, UnsupportedLanguageError } from "./errors"; 7 | 8 | interface Language { 9 | module: string; 10 | parser?: treeSitter.Parser; 11 | } 12 | 13 | // Be sure to declare the language in package.json and include a minimalist grammar. 14 | const languages: { 15 | [id: string]: Language; 16 | } = { 17 | agda: { module: "tree-sitter-agda" }, 18 | c: { module: "tree-sitter-c" }, 19 | clojure: { module: "tree-sitter-clojure" }, 20 | cpp: { module: "tree-sitter-cpp" }, 21 | csharp: { module: "tree-sitter-c_sharp" }, 22 | css: { module: "tree-sitter-css" }, 23 | dart: { module: "tree-sitter-dart" }, 24 | elm: { module: "tree-sitter-elm" }, 25 | elixir: { module: "tree-sitter-elixir" }, 26 | gleam: { module: "tree-sitter-gleam" }, 27 | go: { module: "tree-sitter-go" }, 28 | haskell: { module: "tree-sitter-haskell" }, 29 | html: { module: "tree-sitter-html" }, 30 | java: { module: "tree-sitter-java" }, 31 | javascript: { module: "tree-sitter-javascript" }, 32 | javascriptreact: { module: "tree-sitter-javascript" }, 33 | json: { module: "tree-sitter-json" }, 34 | jsonc: { module: "tree-sitter-json" }, 35 | jsonl: { module: "tree-sitter-json" }, 36 | julia: { module: "tree-sitter-julia" }, 37 | kotlin: { module: "tree-sitter-kotlin" }, 38 | latex: { module: "tree-sitter-latex" }, 39 | lua: { module: "tree-sitter-lua" }, 40 | markdown: { module: "tree-sitter-markdown" }, 41 | nix: { module: "tree-sitter-nix" }, 42 | perl: { module: "tree-sitter-perl" }, 43 | php: { module: "tree-sitter-php" }, 44 | python: { module: "tree-sitter-python" }, 45 | r: { module: "tree-sitter-r" }, 46 | ruby: { module: "tree-sitter-ruby" }, 47 | rust: { module: "tree-sitter-rust" }, 48 | scala: { module: "tree-sitter-scala" }, 49 | scm: { module: "tree-sitter-query" }, 50 | scss: { module: "tree-sitter-scss" }, 51 | shellscript: { module: "tree-sitter-bash" }, 52 | sparql: { module: "tree-sitter-sparql" }, 53 | starlark: { module: "tree-sitter-python" }, 54 | swift: { module: "tree-sitter-swift" }, 55 | talon: { module: "tree-sitter-talon" }, 56 | terraform: { module: "tree-sitter-hcl" }, 57 | typescript: { module: "tree-sitter-typescript" }, 58 | typescriptreact: { module: "tree-sitter-tsx" }, 59 | xml: { module: "tree-sitter-xml" }, 60 | yaml: { module: "tree-sitter-yaml" }, 61 | }; 62 | 63 | // For some reason this crashes if we put it inside activate 64 | const initParser = treeSitter.Parser.init(); // TODO this isn't a field, suppress package member coloring like Go 65 | 66 | // Called when the extension is first activated by user opening a file with the appropriate language 67 | export async function activate(context: vscode.ExtensionContext) { 68 | console.debug("Activating tree-sitter..."); 69 | // Parse of all visible documents 70 | const trees: { [uri: string]: treeSitter.Tree } = {}; 71 | 72 | /** 73 | * FIXME: On newer vscode versions the latex Tree sitter parser throws memory errors 74 | * https://github.com/cursorless-dev/cursorless/issues/2879 75 | */ 76 | const disableLatex = semver.gte(vscode.version, "1.98.0"); 77 | 78 | const validateGetLatex = (languageId: string) => { 79 | if (languageId === "latex" && disableLatex) { 80 | throw new Error( 81 | "Latex is disabled on vscode versions >= 1.98.0. See https://github.com/cursorless-dev/cursorless/issues/2879" 82 | ); 83 | } 84 | }; 85 | 86 | /** 87 | * Load the parser model for a given language 88 | * @param languageId The vscode language id of the language to load 89 | * @returns a promise resolving to boolean an indicating whether the language could be loaded 90 | */ 91 | async function loadLanguage(languageId: string) { 92 | const language = languages[languageId]; 93 | if (language == null) { 94 | return false; 95 | } 96 | if (language.parser != null) { 97 | return true; 98 | } 99 | 100 | if (languageId === "latex" && disableLatex) { 101 | return false; 102 | } 103 | 104 | let absolute; 105 | if (path.isAbsolute(language.module)) { 106 | absolute = language.module; 107 | } else { 108 | absolute = path.join( 109 | context.extensionPath, 110 | "parsers", 111 | language.module + ".wasm" 112 | ); 113 | } 114 | 115 | if (!fs.existsSync(absolute)) { 116 | throw Error(`Parser for ${languageId} not found at ${absolute}`); 117 | } 118 | 119 | const wasm = path.relative(process.cwd(), absolute); 120 | await initParser; 121 | const lang = await treeSitter.Language.load(wasm); 122 | const parser = new treeSitter.Parser(); 123 | parser.setLanguage(lang); 124 | language.parser = parser; 125 | 126 | return true; 127 | } 128 | 129 | async function open(document: vscode.TextDocument) { 130 | const uriString = document.uri.toString(); 131 | if (uriString in trees) { 132 | return; 133 | } 134 | 135 | if (!(await loadLanguage(document.languageId))) { 136 | return; 137 | } 138 | 139 | const language = languages[document.languageId]; 140 | const t = language.parser?.parse(document.getText()); 141 | if (t == null) { 142 | throw Error(`Failed to parse ${document.uri}`); 143 | } 144 | trees[uriString] = t; 145 | } 146 | 147 | function openIfLanguageLoaded(document: vscode.TextDocument) { 148 | const uriString = document.uri.toString(); 149 | if (uriString in trees) { 150 | return null; 151 | } 152 | 153 | const language = languages[document.languageId]; 154 | if (language?.parser == null) { 155 | return null; 156 | } 157 | 158 | const t = language.parser.parse(document.getText()); 159 | if (t == null) { 160 | throw Error(`Failed to parse ${document.uri}`); 161 | } 162 | trees[uriString] = t; 163 | return t; 164 | } 165 | 166 | // NOTE: if you make this an async function, it seems to cause edit anomalies 167 | function edit(edit: vscode.TextDocumentChangeEvent) { 168 | const language = languages[edit.document.languageId]; 169 | if (language == null || language.parser == null) { 170 | return; 171 | } 172 | updateTree(language.parser, edit); 173 | } 174 | 175 | function updateTree( 176 | parser: treeSitter.Parser, 177 | edit: vscode.TextDocumentChangeEvent 178 | ) { 179 | if (edit.contentChanges.length === 0) { 180 | return; 181 | } 182 | const old = trees[edit.document.uri.toString()]; 183 | for (const e of edit.contentChanges) { 184 | const startIndex = e.rangeOffset; 185 | const oldEndIndex = e.rangeOffset + e.rangeLength; 186 | const newEndIndex = e.rangeOffset + e.text.length; 187 | const startPos = edit.document.positionAt(startIndex); 188 | const oldEndPos = edit.document.positionAt(oldEndIndex); 189 | const newEndPos = edit.document.positionAt(newEndIndex); 190 | const startPosition = asPoint(startPos); 191 | const oldEndPosition = asPoint(oldEndPos); 192 | const newEndPosition = asPoint(newEndPos); 193 | const delta = { 194 | startIndex, 195 | oldEndIndex, 196 | newEndIndex, 197 | startPosition, 198 | oldEndPosition, 199 | newEndPosition, 200 | }; 201 | old.edit(delta); 202 | } 203 | const t = parser.parse(edit.document.getText(), old); 204 | if (t == null) { 205 | throw Error(`Failed to parse ${edit.document.uri}`); 206 | } 207 | trees[edit.document.uri.toString()] = t; 208 | } 209 | 210 | function asPoint(pos: vscode.Position): treeSitter.Point { 211 | return { row: pos.line, column: pos.character }; 212 | } 213 | 214 | function close(document: vscode.TextDocument) { 215 | delete trees[document.uri.toString()]; 216 | } 217 | 218 | async function colorAllOpen() { 219 | for (const editor of vscode.window.visibleTextEditors) { 220 | await open(editor.document); 221 | } 222 | } 223 | 224 | function openIfVisible(document: vscode.TextDocument) { 225 | if ( 226 | vscode.window.visibleTextEditors.some( 227 | (editor) => editor.document.uri.toString() === document.uri.toString() 228 | ) 229 | ) { 230 | return open(document); 231 | } 232 | } 233 | 234 | context.subscriptions.push( 235 | vscode.window.onDidChangeVisibleTextEditors(colorAllOpen) 236 | ); 237 | context.subscriptions.push(vscode.workspace.onDidChangeTextDocument(edit)); 238 | context.subscriptions.push(vscode.workspace.onDidCloseTextDocument(close)); 239 | context.subscriptions.push( 240 | vscode.workspace.onDidOpenTextDocument(openIfVisible) 241 | ); 242 | // Don't wait for the initial color, it takes too long to inspect the themes and causes VSCode extension host to hang 243 | colorAllOpen(); 244 | 245 | function getTreeForUri(uri: vscode.Uri) { 246 | const ret = trees[uri.toString()]; 247 | 248 | if (typeof ret === "undefined") { 249 | const document = vscode.workspace.textDocuments.find( 250 | (textDocument) => textDocument.uri.toString() === uri.toString() 251 | ); 252 | 253 | if (document == null) { 254 | throw new Error(`Document ${uri} is not open`); 255 | } 256 | 257 | const ret = openIfLanguageLoaded(document); 258 | 259 | if (ret != null) { 260 | return ret; 261 | } 262 | 263 | const languageId = document.languageId; 264 | 265 | if (languageId in languages) { 266 | validateGetLatex(document.languageId); 267 | throw new LanguageStillLoadingError(languageId); 268 | } else { 269 | throw new UnsupportedLanguageError(languageId); 270 | } 271 | } 272 | 273 | return ret; 274 | } 275 | 276 | return { 277 | loadLanguage, 278 | 279 | /** 280 | * @deprecated 281 | */ 282 | getLanguage(languageId: string): treeSitter.Language | undefined { 283 | console.warn( 284 | "vscode-parse-tree: getLanguage is deprecated, use createQuery(languageId, source) instead." 285 | ); 286 | validateGetLatex(languageId); 287 | return languages[languageId]?.parser?.language ?? undefined; 288 | }, 289 | 290 | createQuery( 291 | languageId: string, 292 | source: string 293 | ): treeSitter.Query | undefined { 294 | const language = languages[languageId]?.parser?.language; 295 | if (language == null) { 296 | validateGetLatex(languageId); 297 | return undefined; 298 | } 299 | return new treeSitter.Query(language, source); 300 | }, 301 | 302 | /** 303 | * Register a parser wasm file for a language not supported by this 304 | * extension. Note that {@link wasmPath} must be an absolute path, and 305 | * {@link languageId} must not already have a registered parser. 306 | * @param languageId The VSCode language id that you'd like to register a 307 | * parser for 308 | * @param wasmPath The absolute path to the wasm file for your parser 309 | */ 310 | registerLanguage(languageId: string, wasmPath: string) { 311 | if (languages[languageId] != null) { 312 | throw new Error(`Language id '${languageId}' is already registered`); 313 | } 314 | 315 | languages[languageId] = { module: wasmPath }; 316 | colorAllOpen(); 317 | }, 318 | 319 | getTree(document: vscode.TextDocument) { 320 | return getTreeForUri(document.uri); 321 | }, 322 | 323 | getTreeForUri, 324 | 325 | getNodeAtLocation(location: vscode.Location) { 326 | return getTreeForUri(location.uri).rootNode.descendantForPosition({ 327 | row: location.range.start.line, 328 | column: location.range.start.character, 329 | }); 330 | }, 331 | }; 332 | } 333 | 334 | // this method is called when your extension is deactivated 335 | export function deactivate() { 336 | // Empty 337 | } 338 | -------------------------------------------------------------------------------- /src/global.d.ts: -------------------------------------------------------------------------------- 1 | interface EmscriptenModule {} 2 | -------------------------------------------------------------------------------- /tree-sitter-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cursorless-dev/vscode-parse-tree/8f7289b0cf3b2a01f987192794b3c6a3793b9b92/tree-sitter-small.png -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": [ 7 | "es2020" 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 | ".make-work", 19 | ".vscode-test", 20 | "examples", 21 | "node_modules", 22 | "vendor" 23 | ] 24 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@aashutoshrathi/word-wrap@^1.2.3": 6 | version "1.2.6" 7 | resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" 8 | integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== 9 | 10 | "@cursorless/tree-sitter-wasms@0.3.0": 11 | version "0.3.0" 12 | resolved "https://registry.yarnpkg.com/@cursorless/tree-sitter-wasms/-/tree-sitter-wasms-0.3.0.tgz#2b337faadca78e9251e76eeb46d18828d5a2e44e" 13 | integrity sha512-CfR0xdzNzP5aG+N+/0DmX5CBjPjWLRdY8WXp54SyfAp8B4UNOVrKjLfWnKXDzo83gv+zJeNdQDSxUE3FY0eUYQ== 14 | 15 | "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": 16 | version "4.4.0" 17 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" 18 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== 19 | dependencies: 20 | eslint-visitor-keys "^3.3.0" 21 | 22 | "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": 23 | version "4.10.0" 24 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" 25 | integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== 26 | 27 | "@eslint/eslintrc@^2.1.3": 28 | version "2.1.3" 29 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" 30 | integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== 31 | dependencies: 32 | ajv "^6.12.4" 33 | debug "^4.3.2" 34 | espree "^9.6.0" 35 | globals "^13.19.0" 36 | ignore "^5.2.0" 37 | import-fresh "^3.2.1" 38 | js-yaml "^4.1.0" 39 | minimatch "^3.1.2" 40 | strip-json-comments "^3.1.1" 41 | 42 | "@eslint/js@8.53.0": 43 | version "8.53.0" 44 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" 45 | integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== 46 | 47 | "@humanwhocodes/config-array@^0.11.13": 48 | version "0.11.13" 49 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" 50 | integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== 51 | dependencies: 52 | "@humanwhocodes/object-schema" "^2.0.1" 53 | debug "^4.1.1" 54 | minimatch "^3.0.5" 55 | 56 | "@humanwhocodes/module-importer@^1.0.1": 57 | version "1.0.1" 58 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 59 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 60 | 61 | "@humanwhocodes/object-schema@^2.0.1": 62 | version "2.0.1" 63 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" 64 | integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== 65 | 66 | "@nodelib/fs.scandir@2.1.5": 67 | version "2.1.5" 68 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 69 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 70 | dependencies: 71 | "@nodelib/fs.stat" "2.0.5" 72 | run-parallel "^1.1.9" 73 | 74 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 75 | version "2.0.5" 76 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 77 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 78 | 79 | "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": 80 | version "1.2.8" 81 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 82 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 83 | dependencies: 84 | "@nodelib/fs.scandir" "2.1.5" 85 | fastq "^1.6.0" 86 | 87 | "@tootallnate/once@1": 88 | version "1.1.2" 89 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 90 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 91 | 92 | "@types/json-schema@^7.0.12": 93 | version "7.0.15" 94 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" 95 | integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== 96 | 97 | "@types/mocha@^2.2.42": 98 | version "2.2.48" 99 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.48.tgz#3523b126a0b049482e1c3c11877460f76622ffab" 100 | integrity sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw== 101 | 102 | "@types/node@^8.10.25": 103 | version "8.10.66" 104 | resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" 105 | integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== 106 | 107 | "@types/semver@^7.5.0": 108 | version "7.5.5" 109 | resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.5.tgz#deed5ab7019756c9c90ea86139106b0346223f35" 110 | integrity sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg== 111 | 112 | "@types/vscode@~1.58.0": 113 | version "1.58.1" 114 | resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.58.1.tgz#7deae08792adc73fa57383244a0c79d3530df4f7" 115 | integrity sha512-sa76rDXiSif09he8KoaWWUQxsuBr2+uND0xn1GUbEODkuEjp2p7Rqd3t5qlvklfmAedLFdL7MdnsPa57uzwcOw== 116 | 117 | "@typescript-eslint/eslint-plugin@^6.11.0": 118 | version "6.11.0" 119 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.11.0.tgz#52aae65174ff526576351f9ccd41cea01001463f" 120 | integrity sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w== 121 | dependencies: 122 | "@eslint-community/regexpp" "^4.5.1" 123 | "@typescript-eslint/scope-manager" "6.11.0" 124 | "@typescript-eslint/type-utils" "6.11.0" 125 | "@typescript-eslint/utils" "6.11.0" 126 | "@typescript-eslint/visitor-keys" "6.11.0" 127 | debug "^4.3.4" 128 | graphemer "^1.4.0" 129 | ignore "^5.2.4" 130 | natural-compare "^1.4.0" 131 | semver "^7.5.4" 132 | ts-api-utils "^1.0.1" 133 | 134 | "@typescript-eslint/parser@^6.11.0": 135 | version "6.11.0" 136 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.11.0.tgz#9640d9595d905f3be4f278bf515130e6129b202e" 137 | integrity sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ== 138 | dependencies: 139 | "@typescript-eslint/scope-manager" "6.11.0" 140 | "@typescript-eslint/types" "6.11.0" 141 | "@typescript-eslint/typescript-estree" "6.11.0" 142 | "@typescript-eslint/visitor-keys" "6.11.0" 143 | debug "^4.3.4" 144 | 145 | "@typescript-eslint/scope-manager@6.11.0": 146 | version "6.11.0" 147 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.11.0.tgz#621f603537c89f4d105733d949aa4d55eee5cea8" 148 | integrity sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A== 149 | dependencies: 150 | "@typescript-eslint/types" "6.11.0" 151 | "@typescript-eslint/visitor-keys" "6.11.0" 152 | 153 | "@typescript-eslint/type-utils@6.11.0": 154 | version "6.11.0" 155 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.11.0.tgz#d0b8b1ab6c26b974dbf91de1ebc5b11fea24e0d1" 156 | integrity sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA== 157 | dependencies: 158 | "@typescript-eslint/typescript-estree" "6.11.0" 159 | "@typescript-eslint/utils" "6.11.0" 160 | debug "^4.3.4" 161 | ts-api-utils "^1.0.1" 162 | 163 | "@typescript-eslint/types@6.11.0": 164 | version "6.11.0" 165 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.11.0.tgz#8ad3aa000cbf4bdc4dcceed96e9b577f15e0bf53" 166 | integrity sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA== 167 | 168 | "@typescript-eslint/typescript-estree@6.11.0": 169 | version "6.11.0" 170 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.11.0.tgz#7b52c12a623bf7f8ec7f8a79901b9f98eb5c7990" 171 | integrity sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ== 172 | dependencies: 173 | "@typescript-eslint/types" "6.11.0" 174 | "@typescript-eslint/visitor-keys" "6.11.0" 175 | debug "^4.3.4" 176 | globby "^11.1.0" 177 | is-glob "^4.0.3" 178 | semver "^7.5.4" 179 | ts-api-utils "^1.0.1" 180 | 181 | "@typescript-eslint/utils@6.11.0": 182 | version "6.11.0" 183 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.11.0.tgz#11374f59ef4cea50857b1303477c08aafa2ca604" 184 | integrity sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g== 185 | dependencies: 186 | "@eslint-community/eslint-utils" "^4.4.0" 187 | "@types/json-schema" "^7.0.12" 188 | "@types/semver" "^7.5.0" 189 | "@typescript-eslint/scope-manager" "6.11.0" 190 | "@typescript-eslint/types" "6.11.0" 191 | "@typescript-eslint/typescript-estree" "6.11.0" 192 | semver "^7.5.4" 193 | 194 | "@typescript-eslint/visitor-keys@6.11.0": 195 | version "6.11.0" 196 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.11.0.tgz#d991538788923f92ec40d44389e7075b359f3458" 197 | integrity sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ== 198 | dependencies: 199 | "@typescript-eslint/types" "6.11.0" 200 | eslint-visitor-keys "^3.4.1" 201 | 202 | "@ungap/structured-clone@^1.2.0": 203 | version "1.2.0" 204 | resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" 205 | integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== 206 | 207 | "@vscode/test-electron@^2.1.3": 208 | version "2.1.5" 209 | resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.1.5.tgz#ac98f8f445ea4590753f5fa0c7f6e4298f08c3b7" 210 | integrity sha512-O/ioqFpV+RvKbRykX2ItYPnbcZ4Hk5V0rY4uhQjQTLhGL9WZUvS7exzuYQCCI+ilSqJpctvxq2llTfGXf9UnnA== 211 | dependencies: 212 | http-proxy-agent "^4.0.1" 213 | https-proxy-agent "^5.0.0" 214 | rimraf "^3.0.2" 215 | unzipper "^0.10.11" 216 | 217 | acorn-jsx@^5.3.2: 218 | version "5.3.2" 219 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 220 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 221 | 222 | acorn@^8.9.0: 223 | version "8.11.2" 224 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" 225 | integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== 226 | 227 | agent-base@6: 228 | version "6.0.2" 229 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 230 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 231 | dependencies: 232 | debug "4" 233 | 234 | ajv@^6.12.4: 235 | version "6.12.6" 236 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 237 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 238 | dependencies: 239 | fast-deep-equal "^3.1.1" 240 | fast-json-stable-stringify "^2.0.0" 241 | json-schema-traverse "^0.4.1" 242 | uri-js "^4.2.2" 243 | 244 | ansi-regex@^5.0.1: 245 | version "5.0.1" 246 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 247 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 248 | 249 | ansi-styles@^4.1.0: 250 | version "4.3.0" 251 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 252 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 253 | dependencies: 254 | color-convert "^2.0.1" 255 | 256 | argparse@^2.0.1: 257 | version "2.0.1" 258 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 259 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 260 | 261 | array-union@^2.1.0: 262 | version "2.1.0" 263 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 264 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 265 | 266 | balanced-match@^1.0.0: 267 | version "1.0.2" 268 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 269 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 270 | 271 | big-integer@^1.6.17: 272 | version "1.6.51" 273 | resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" 274 | integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== 275 | 276 | binary@~0.3.0: 277 | version "0.3.0" 278 | resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" 279 | integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== 280 | dependencies: 281 | buffers "~0.1.1" 282 | chainsaw "~0.1.0" 283 | 284 | bluebird@~3.4.1: 285 | version "3.4.7" 286 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" 287 | integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== 288 | 289 | brace-expansion@^1.1.7: 290 | version "1.1.11" 291 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 292 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 293 | dependencies: 294 | balanced-match "^1.0.0" 295 | concat-map "0.0.1" 296 | 297 | braces@^3.0.2: 298 | version "3.0.3" 299 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 300 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 301 | dependencies: 302 | fill-range "^7.1.1" 303 | 304 | buffer-indexof-polyfill@~1.0.0: 305 | version "1.0.2" 306 | resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" 307 | integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== 308 | 309 | buffers@~0.1.1: 310 | version "0.1.1" 311 | resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" 312 | integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== 313 | 314 | callsites@^3.0.0: 315 | version "3.1.0" 316 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 317 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 318 | 319 | chainsaw@~0.1.0: 320 | version "0.1.0" 321 | resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" 322 | integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== 323 | dependencies: 324 | traverse ">=0.3.0 <0.4" 325 | 326 | chalk@^4.0.0: 327 | version "4.1.2" 328 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 329 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 330 | dependencies: 331 | ansi-styles "^4.1.0" 332 | supports-color "^7.1.0" 333 | 334 | color-convert@^2.0.1: 335 | version "2.0.1" 336 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 337 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 338 | dependencies: 339 | color-name "~1.1.4" 340 | 341 | color-name@~1.1.4: 342 | version "1.1.4" 343 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 344 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 345 | 346 | concat-map@0.0.1: 347 | version "0.0.1" 348 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 349 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 350 | 351 | core-util-is@~1.0.0: 352 | version "1.0.3" 353 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 354 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 355 | 356 | cross-spawn@^7.0.2: 357 | version "7.0.3" 358 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 359 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 360 | dependencies: 361 | path-key "^3.1.0" 362 | shebang-command "^2.0.0" 363 | which "^2.0.1" 364 | 365 | debug@4, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: 366 | version "4.3.4" 367 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 368 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 369 | dependencies: 370 | ms "2.1.2" 371 | 372 | deep-is@^0.1.3: 373 | version "0.1.4" 374 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 375 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 376 | 377 | dir-glob@^3.0.1: 378 | version "3.0.1" 379 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 380 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 381 | dependencies: 382 | path-type "^4.0.0" 383 | 384 | doctrine@^3.0.0: 385 | version "3.0.0" 386 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 387 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 388 | dependencies: 389 | esutils "^2.0.2" 390 | 391 | duplexer2@~0.1.4: 392 | version "0.1.4" 393 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" 394 | integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== 395 | dependencies: 396 | readable-stream "^2.0.2" 397 | 398 | escape-string-regexp@^4.0.0: 399 | version "4.0.0" 400 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 401 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 402 | 403 | eslint-config-prettier@^9.0.0: 404 | version "9.0.0" 405 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz#eb25485946dd0c66cd216a46232dc05451518d1f" 406 | integrity sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw== 407 | 408 | eslint-scope@^7.2.2: 409 | version "7.2.2" 410 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" 411 | integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== 412 | dependencies: 413 | esrecurse "^4.3.0" 414 | estraverse "^5.2.0" 415 | 416 | eslint-visitor-keys@^3.3.0: 417 | version "3.3.0" 418 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" 419 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== 420 | 421 | eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: 422 | version "3.4.3" 423 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" 424 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== 425 | 426 | eslint@^8.53.0: 427 | version "8.53.0" 428 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" 429 | integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== 430 | dependencies: 431 | "@eslint-community/eslint-utils" "^4.2.0" 432 | "@eslint-community/regexpp" "^4.6.1" 433 | "@eslint/eslintrc" "^2.1.3" 434 | "@eslint/js" "8.53.0" 435 | "@humanwhocodes/config-array" "^0.11.13" 436 | "@humanwhocodes/module-importer" "^1.0.1" 437 | "@nodelib/fs.walk" "^1.2.8" 438 | "@ungap/structured-clone" "^1.2.0" 439 | ajv "^6.12.4" 440 | chalk "^4.0.0" 441 | cross-spawn "^7.0.2" 442 | debug "^4.3.2" 443 | doctrine "^3.0.0" 444 | escape-string-regexp "^4.0.0" 445 | eslint-scope "^7.2.2" 446 | eslint-visitor-keys "^3.4.3" 447 | espree "^9.6.1" 448 | esquery "^1.4.2" 449 | esutils "^2.0.2" 450 | fast-deep-equal "^3.1.3" 451 | file-entry-cache "^6.0.1" 452 | find-up "^5.0.0" 453 | glob-parent "^6.0.2" 454 | globals "^13.19.0" 455 | graphemer "^1.4.0" 456 | ignore "^5.2.0" 457 | imurmurhash "^0.1.4" 458 | is-glob "^4.0.0" 459 | is-path-inside "^3.0.3" 460 | js-yaml "^4.1.0" 461 | json-stable-stringify-without-jsonify "^1.0.1" 462 | levn "^0.4.1" 463 | lodash.merge "^4.6.2" 464 | minimatch "^3.1.2" 465 | natural-compare "^1.4.0" 466 | optionator "^0.9.3" 467 | strip-ansi "^6.0.1" 468 | text-table "^0.2.0" 469 | 470 | espree@^9.6.0, espree@^9.6.1: 471 | version "9.6.1" 472 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" 473 | integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== 474 | dependencies: 475 | acorn "^8.9.0" 476 | acorn-jsx "^5.3.2" 477 | eslint-visitor-keys "^3.4.1" 478 | 479 | esquery@^1.4.2: 480 | version "1.5.0" 481 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" 482 | integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== 483 | dependencies: 484 | estraverse "^5.1.0" 485 | 486 | esrecurse@^4.3.0: 487 | version "4.3.0" 488 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 489 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 490 | dependencies: 491 | estraverse "^5.2.0" 492 | 493 | estraverse@^5.1.0, estraverse@^5.2.0: 494 | version "5.3.0" 495 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 496 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 497 | 498 | esutils@^2.0.2: 499 | version "2.0.3" 500 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 501 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 502 | 503 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 504 | version "3.1.3" 505 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 506 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 507 | 508 | fast-glob@^3.2.9: 509 | version "3.2.11" 510 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 511 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 512 | dependencies: 513 | "@nodelib/fs.stat" "^2.0.2" 514 | "@nodelib/fs.walk" "^1.2.3" 515 | glob-parent "^5.1.2" 516 | merge2 "^1.3.0" 517 | micromatch "^4.0.4" 518 | 519 | fast-json-stable-stringify@^2.0.0: 520 | version "2.1.0" 521 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 522 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 523 | 524 | fast-levenshtein@^2.0.6: 525 | version "2.0.6" 526 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 527 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 528 | 529 | fastq@^1.6.0: 530 | version "1.13.0" 531 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 532 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 533 | dependencies: 534 | reusify "^1.0.4" 535 | 536 | file-entry-cache@^6.0.1: 537 | version "6.0.1" 538 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 539 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 540 | dependencies: 541 | flat-cache "^3.0.4" 542 | 543 | fill-range@^7.1.1: 544 | version "7.1.1" 545 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 546 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 547 | dependencies: 548 | to-regex-range "^5.0.1" 549 | 550 | find-up@^5.0.0: 551 | version "5.0.0" 552 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 553 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 554 | dependencies: 555 | locate-path "^6.0.0" 556 | path-exists "^4.0.0" 557 | 558 | flat-cache@^3.0.4: 559 | version "3.0.4" 560 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 561 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 562 | dependencies: 563 | flatted "^3.1.0" 564 | rimraf "^3.0.2" 565 | 566 | flatted@^3.1.0: 567 | version "3.2.6" 568 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" 569 | integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== 570 | 571 | fs.realpath@^1.0.0: 572 | version "1.0.0" 573 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 574 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 575 | 576 | fstream@^1.0.12: 577 | version "1.0.12" 578 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" 579 | integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== 580 | dependencies: 581 | graceful-fs "^4.1.2" 582 | inherits "~2.0.0" 583 | mkdirp ">=0.5 0" 584 | rimraf "2" 585 | 586 | glob-parent@^5.1.2: 587 | version "5.1.2" 588 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 589 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 590 | dependencies: 591 | is-glob "^4.0.1" 592 | 593 | glob-parent@^6.0.2: 594 | version "6.0.2" 595 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 596 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 597 | dependencies: 598 | is-glob "^4.0.3" 599 | 600 | glob@^7.1.3: 601 | version "7.2.3" 602 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 603 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 604 | dependencies: 605 | fs.realpath "^1.0.0" 606 | inflight "^1.0.4" 607 | inherits "2" 608 | minimatch "^3.1.1" 609 | once "^1.3.0" 610 | path-is-absolute "^1.0.0" 611 | 612 | globals@^13.19.0: 613 | version "13.23.0" 614 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" 615 | integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== 616 | dependencies: 617 | type-fest "^0.20.2" 618 | 619 | globby@^11.1.0: 620 | version "11.1.0" 621 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 622 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 623 | dependencies: 624 | array-union "^2.1.0" 625 | dir-glob "^3.0.1" 626 | fast-glob "^3.2.9" 627 | ignore "^5.2.0" 628 | merge2 "^1.4.1" 629 | slash "^3.0.0" 630 | 631 | graceful-fs@^4.1.2, graceful-fs@^4.2.2: 632 | version "4.2.10" 633 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 634 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 635 | 636 | graphemer@^1.4.0: 637 | version "1.4.0" 638 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" 639 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== 640 | 641 | has-flag@^4.0.0: 642 | version "4.0.0" 643 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 644 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 645 | 646 | http-proxy-agent@^4.0.1: 647 | version "4.0.1" 648 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 649 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 650 | dependencies: 651 | "@tootallnate/once" "1" 652 | agent-base "6" 653 | debug "4" 654 | 655 | https-proxy-agent@^5.0.0: 656 | version "5.0.1" 657 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 658 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 659 | dependencies: 660 | agent-base "6" 661 | debug "4" 662 | 663 | ignore@^5.2.0: 664 | version "5.2.0" 665 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 666 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 667 | 668 | ignore@^5.2.4: 669 | version "5.2.4" 670 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" 671 | integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== 672 | 673 | import-fresh@^3.2.1: 674 | version "3.3.0" 675 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 676 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 677 | dependencies: 678 | parent-module "^1.0.0" 679 | resolve-from "^4.0.0" 680 | 681 | imurmurhash@^0.1.4: 682 | version "0.1.4" 683 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 684 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 685 | 686 | inflight@^1.0.4: 687 | version "1.0.6" 688 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 689 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 690 | dependencies: 691 | once "^1.3.0" 692 | wrappy "1" 693 | 694 | inherits@2, inherits@~2.0.0, inherits@~2.0.3: 695 | version "2.0.4" 696 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 697 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 698 | 699 | is-extglob@^2.1.1: 700 | version "2.1.1" 701 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 702 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 703 | 704 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 705 | version "4.0.3" 706 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 707 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 708 | dependencies: 709 | is-extglob "^2.1.1" 710 | 711 | is-number@^7.0.0: 712 | version "7.0.0" 713 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 714 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 715 | 716 | is-path-inside@^3.0.3: 717 | version "3.0.3" 718 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 719 | integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== 720 | 721 | isarray@~1.0.0: 722 | version "1.0.0" 723 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 724 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 725 | 726 | isexe@^2.0.0: 727 | version "2.0.0" 728 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 729 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 730 | 731 | js-yaml@^4.1.0: 732 | version "4.1.0" 733 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 734 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 735 | dependencies: 736 | argparse "^2.0.1" 737 | 738 | json-schema-traverse@^0.4.1: 739 | version "0.4.1" 740 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 741 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 742 | 743 | json-stable-stringify-without-jsonify@^1.0.1: 744 | version "1.0.1" 745 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 746 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 747 | 748 | levn@^0.4.1: 749 | version "0.4.1" 750 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 751 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 752 | dependencies: 753 | prelude-ls "^1.2.1" 754 | type-check "~0.4.0" 755 | 756 | listenercount@~1.0.1: 757 | version "1.0.1" 758 | resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" 759 | integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== 760 | 761 | locate-path@^6.0.0: 762 | version "6.0.0" 763 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 764 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 765 | dependencies: 766 | p-locate "^5.0.0" 767 | 768 | lodash.merge@^4.6.2: 769 | version "4.6.2" 770 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 771 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 772 | 773 | lru-cache@^6.0.0: 774 | version "6.0.0" 775 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 776 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 777 | dependencies: 778 | yallist "^4.0.0" 779 | 780 | merge2@^1.3.0, merge2@^1.4.1: 781 | version "1.4.1" 782 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 783 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 784 | 785 | micromatch@^4.0.4: 786 | version "4.0.5" 787 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 788 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 789 | dependencies: 790 | braces "^3.0.2" 791 | picomatch "^2.3.1" 792 | 793 | minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: 794 | version "3.1.2" 795 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 796 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 797 | dependencies: 798 | brace-expansion "^1.1.7" 799 | 800 | minimist@^1.2.6: 801 | version "1.2.6" 802 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 803 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 804 | 805 | "mkdirp@>=0.5 0": 806 | version "0.5.6" 807 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 808 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 809 | dependencies: 810 | minimist "^1.2.6" 811 | 812 | ms@2.1.2: 813 | version "2.1.2" 814 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 815 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 816 | 817 | natural-compare@^1.4.0: 818 | version "1.4.0" 819 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 820 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 821 | 822 | once@^1.3.0: 823 | version "1.4.0" 824 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 825 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 826 | dependencies: 827 | wrappy "1" 828 | 829 | optionator@^0.9.3: 830 | version "0.9.3" 831 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" 832 | integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== 833 | dependencies: 834 | "@aashutoshrathi/word-wrap" "^1.2.3" 835 | deep-is "^0.1.3" 836 | fast-levenshtein "^2.0.6" 837 | levn "^0.4.1" 838 | prelude-ls "^1.2.1" 839 | type-check "^0.4.0" 840 | 841 | p-limit@^3.0.2: 842 | version "3.1.0" 843 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 844 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 845 | dependencies: 846 | yocto-queue "^0.1.0" 847 | 848 | p-locate@^5.0.0: 849 | version "5.0.0" 850 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 851 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 852 | dependencies: 853 | p-limit "^3.0.2" 854 | 855 | parent-module@^1.0.0: 856 | version "1.0.1" 857 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 858 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 859 | dependencies: 860 | callsites "^3.0.0" 861 | 862 | path-exists@^4.0.0: 863 | version "4.0.0" 864 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 865 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 866 | 867 | path-is-absolute@^1.0.0: 868 | version "1.0.1" 869 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 870 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 871 | 872 | path-key@^3.1.0: 873 | version "3.1.1" 874 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 875 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 876 | 877 | path-type@^4.0.0: 878 | version "4.0.0" 879 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 880 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 881 | 882 | picomatch@^2.3.1: 883 | version "2.3.1" 884 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 885 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 886 | 887 | prelude-ls@^1.2.1: 888 | version "1.2.1" 889 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 890 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 891 | 892 | process-nextick-args@~2.0.0: 893 | version "2.0.1" 894 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 895 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 896 | 897 | punycode@^2.1.0: 898 | version "2.1.1" 899 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 900 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 901 | 902 | queue-microtask@^1.2.2: 903 | version "1.2.3" 904 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 905 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 906 | 907 | readable-stream@^2.0.2, readable-stream@~2.3.6: 908 | version "2.3.7" 909 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 910 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 911 | dependencies: 912 | core-util-is "~1.0.0" 913 | inherits "~2.0.3" 914 | isarray "~1.0.0" 915 | process-nextick-args "~2.0.0" 916 | safe-buffer "~5.1.1" 917 | string_decoder "~1.1.1" 918 | util-deprecate "~1.0.1" 919 | 920 | resolve-from@^4.0.0: 921 | version "4.0.0" 922 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 923 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 924 | 925 | reusify@^1.0.4: 926 | version "1.0.4" 927 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 928 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 929 | 930 | rimraf@2: 931 | version "2.7.1" 932 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 933 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 934 | dependencies: 935 | glob "^7.1.3" 936 | 937 | rimraf@^3.0.2: 938 | version "3.0.2" 939 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 940 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 941 | dependencies: 942 | glob "^7.1.3" 943 | 944 | run-parallel@^1.1.9: 945 | version "1.2.0" 946 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 947 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 948 | dependencies: 949 | queue-microtask "^1.2.2" 950 | 951 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 952 | version "5.1.2" 953 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 954 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 955 | 956 | semver@7.7.2: 957 | version "7.7.2" 958 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" 959 | integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== 960 | 961 | semver@^7.5.4: 962 | version "7.5.4" 963 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" 964 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== 965 | dependencies: 966 | lru-cache "^6.0.0" 967 | 968 | setimmediate@~1.0.4: 969 | version "1.0.5" 970 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 971 | integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== 972 | 973 | shebang-command@^2.0.0: 974 | version "2.0.0" 975 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 976 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 977 | dependencies: 978 | shebang-regex "^3.0.0" 979 | 980 | shebang-regex@^3.0.0: 981 | version "3.0.0" 982 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 983 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 984 | 985 | slash@^3.0.0: 986 | version "3.0.0" 987 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 988 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 989 | 990 | string_decoder@~1.1.1: 991 | version "1.1.1" 992 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 993 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 994 | dependencies: 995 | safe-buffer "~5.1.0" 996 | 997 | strip-ansi@^6.0.1: 998 | version "6.0.1" 999 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1000 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1001 | dependencies: 1002 | ansi-regex "^5.0.1" 1003 | 1004 | strip-json-comments@^3.1.1: 1005 | version "3.1.1" 1006 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1007 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1008 | 1009 | supports-color@^7.1.0: 1010 | version "7.2.0" 1011 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1012 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1013 | dependencies: 1014 | has-flag "^4.0.0" 1015 | 1016 | text-table@^0.2.0: 1017 | version "0.2.0" 1018 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1019 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 1020 | 1021 | to-regex-range@^5.0.1: 1022 | version "5.0.1" 1023 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1024 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1025 | dependencies: 1026 | is-number "^7.0.0" 1027 | 1028 | "traverse@>=0.3.0 <0.4": 1029 | version "0.3.9" 1030 | resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" 1031 | integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== 1032 | 1033 | ts-api-utils@^1.0.1: 1034 | version "1.0.3" 1035 | resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" 1036 | integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== 1037 | 1038 | type-check@^0.4.0, type-check@~0.4.0: 1039 | version "0.4.0" 1040 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1041 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1042 | dependencies: 1043 | prelude-ls "^1.2.1" 1044 | 1045 | type-fest@^0.20.2: 1046 | version "0.20.2" 1047 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1048 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1049 | 1050 | typescript@^4.5.5: 1051 | version "4.7.4" 1052 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" 1053 | integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== 1054 | 1055 | unzipper@^0.10.11: 1056 | version "0.10.11" 1057 | resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" 1058 | integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== 1059 | dependencies: 1060 | big-integer "^1.6.17" 1061 | binary "~0.3.0" 1062 | bluebird "~3.4.1" 1063 | buffer-indexof-polyfill "~1.0.0" 1064 | duplexer2 "~0.1.4" 1065 | fstream "^1.0.12" 1066 | graceful-fs "^4.2.2" 1067 | listenercount "~1.0.1" 1068 | readable-stream "~2.3.6" 1069 | setimmediate "~1.0.4" 1070 | 1071 | uri-js@^4.2.2: 1072 | version "4.4.1" 1073 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1074 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1075 | dependencies: 1076 | punycode "^2.1.0" 1077 | 1078 | util-deprecate@~1.0.1: 1079 | version "1.0.2" 1080 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1081 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1082 | 1083 | web-tree-sitter@^0.25.3: 1084 | version "0.25.3" 1085 | resolved "https://registry.yarnpkg.com/web-tree-sitter/-/web-tree-sitter-0.25.3.tgz#dec6784149f2bd3bb55e1675a7c334b015c860dd" 1086 | integrity sha512-e0hdXG+nJ18Zd/QJFhSx0DNTSMz7miwUjKyJ/lglTnZo6ke08++BQzXkaeaqnGJFi9qq+nPJg2L8hYAjduToHQ== 1087 | 1088 | which@^2.0.1: 1089 | version "2.0.2" 1090 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1091 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1092 | dependencies: 1093 | isexe "^2.0.0" 1094 | 1095 | wrappy@1: 1096 | version "1.0.2" 1097 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1098 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1099 | 1100 | yallist@^4.0.0: 1101 | version "4.0.0" 1102 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1103 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1104 | 1105 | yocto-queue@^0.1.0: 1106 | version "0.1.0" 1107 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1108 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1109 | --------------------------------------------------------------------------------