├── .eslintrc.json ├── .gitignore ├── .gitmodules ├── .vscodeignore ├── LICENSE ├── Makefile ├── README.md ├── images ├── screenshot.png └── tinygo-logo.png ├── package-lock.json ├── package.json ├── preview ├── webview.css ├── webview.html └── webview.js ├── src ├── compiler.ts ├── extension.ts └── preview.ts └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "@typescript-eslint/parser", 4 | "parserOptions": { 5 | "ecmaVersion": 6, 6 | "sourceType": "module" 7 | }, 8 | "plugins": [ 9 | "@typescript-eslint" 10 | ], 11 | "rules": { 12 | "@typescript-eslint/naming-convention": "warn", 13 | "@typescript-eslint/semi": "warn", 14 | "curly": "warn", 15 | "eqeqeq": "warn", 16 | "no-throw-literal": "warn", 17 | "semi": "off" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | out/ 4 | *.vsix 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "preview/playground"] 2 | path = preview/playground 3 | url = git@github.com:tinygo-org/playground.git 4 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | # Ignore everything 2 | ** 3 | 4 | # Include specific files 5 | !LICENSE 6 | !out/*.js 7 | !images/tinygo-logo.png 8 | !preview/webview.* 9 | !preview/playground/LICENSE 10 | !preview/playground/simulator.* 11 | !preview/playground/parts/ 12 | !preview/playground/resources/ 13 | !preview/playground/worker/webworker.bundle.js 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019 TinyGo contributors. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are 5 | met: 6 | 7 | * Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above 10 | copyright notice, this list of conditions and the following disclaimer 11 | in the documentation and/or other materials provided with the 12 | distribution. 13 | * Neither the name of the copyright holder nor the names of its 14 | contributors may be used to endorse or promote products derived from 15 | this software without specific prior written permission. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: webworker.bundle.js 2 | webworker.bundle.js: preview/playground/worker/webworker.bundle.js 3 | 4 | # Create webworker.bundle.js by combining these files. 5 | # There's probably a better way to do this using webpack but this works. 6 | preview/playground/worker/webworker.bundle.js: preview/playground/worker/parts.js preview/playground/worker/runner.js preview/playground/worker/wiring.js preview/playground/worker/webworker.js 7 | cat $^ > $@ 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Visual Studio Code support for TinyGo 2 | 3 | This is a simple extension to add TinyGo support to Visual Studio Code. 4 | 5 | ![The extension in action](images/screenshot.png) 6 | 7 | ## Features 8 | 9 | Right now the only feature this extension supports is setting the right environment variables in the `.vscode/settings.json` of your workspace. For example, it may set the following configuration to work with the [BBC micro:bit](https://microbit.org/): 10 | 11 | ```json 12 | { 13 | "go.toolsEnvVars": { 14 | "GOOS": "linux", 15 | "GOARCH": "arm", 16 | "GOROOT": "/home/user/.cache/tinygo/goroot-go1.14-f930d5b5f36579e8cbd1c139012b3d702281417fb6bdf67303c4697195b9ef1f-syscall", 17 | "GOFLAGS": "-tags=cortexm,baremetal,linux,arm,nrf51822,nrf51,nrf,microbit,tinygo,gc.conservative,scheduler.tasks" 18 | } 19 | } 20 | ``` 21 | 22 | To use it, click on the `TinyGo` status bar element at the bottom of the screen and select a target. Alternatively, you could open the [command palette](https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette) and search for `TinyGo target`. 23 | 24 | Notes: 25 | 26 | * It is probably necessary to reload the window once you've set a new TinyGo target. You will be prompted for this if it's necessary. 27 | * If the Go extension asks you to rebuild tools because the `GOROOT` changed, don't do that. It will result in errors and not do what you expect. This is something that should be improved in a future version. 28 | 29 | ## Requirements 30 | 31 | This extension depends on the following: 32 | 33 | * The [Go extension for VS Code](https://marketplace.visualstudio.com/items?itemName=golang.go). This extension should be automatically installed as a dependency. 34 | * The TinyGo compiler, version 0.15 or later. See [installation instructions for your operating system](https://tinygo.org/getting-started/). 35 | 36 | ## Development 37 | 38 | Make sure to checkout `preview/playground` [git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules). You can do this with the following command: 39 | 40 | git submodule update --init 41 | 42 | For development, you can use the following .vscode/tasks.json file: 43 | 44 | ```json 45 | { 46 | "version": "2.0.0", 47 | "tasks": [ 48 | { 49 | "type": "npm", 50 | "script": "watch", 51 | "problemMatcher": "$tsc-watch", 52 | "isBackground": true, 53 | "presentation": { 54 | "reveal": "never" 55 | }, 56 | "group": "build", 57 | "label": "npm: watch", 58 | "detail": "tsc -watch -p ./" 59 | }, 60 | { 61 | "type": "npm", 62 | "script": "compile", 63 | "group": { 64 | "kind": "build", 65 | "isDefault": true 66 | }, 67 | "problemMatcher": [], 68 | "label": "npm: compile", 69 | "detail": "tsc -p ./", 70 | "dependsOn": ["webworker.bundle.js"], 71 | }, 72 | { 73 | "type": "shell", 74 | "command": "make", 75 | "args": ["preview/playground/worker/webworker.bundle.js"], 76 | "group": "build", 77 | "label": "webworker.bundle.js", 78 | } 79 | ] 80 | } 81 | ``` 82 | 83 | and the following .vscode/launch.json: 84 | 85 | ```json 86 | { 87 | "version": "0.2.0", 88 | "configurations": [ 89 | { 90 | "name": "Run Extension", 91 | "type": "extensionHost", 92 | "request": "launch", 93 | "args": [ 94 | "--extensionDevelopmentPath=${workspaceFolder}" 95 | ], 96 | "outFiles": [ 97 | "${workspaceFolder}/out/**/*.js" 98 | ], 99 | "preLaunchTask": "${defaultBuildTask}" 100 | } 101 | ] 102 | } 103 | ``` 104 | 105 | To create an extension as a package, run the following command: 106 | 107 | vsce package 108 | 109 | This creates a new `vscode-tinygo-.vsix` file that you can install directly in VS Code. 110 | -------------------------------------------------------------------------------- /images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tinygo-org/vscode-tinygo/8bf2dc48d63e179a41676d227a23fcdf01672d40/images/screenshot.png -------------------------------------------------------------------------------- /images/tinygo-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tinygo-org/vscode-tinygo/8bf2dc48d63e179a41676d227a23fcdf01672d40/images/tinygo-logo.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-tinygo", 3 | "version": "0.3.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "vscode-tinygo", 9 | "version": "0.3.0", 10 | "license": "BSD-3-Clause", 11 | "devDependencies": { 12 | "@types/glob": "^7.1.3", 13 | "@types/mocha": "^8.0.0", 14 | "@types/node": "^14.0.27", 15 | "@types/vscode": "^1.48.0", 16 | "@typescript-eslint/eslint-plugin": "^3.8.0", 17 | "@typescript-eslint/parser": "^3.8.0", 18 | "eslint": "^7.6.0", 19 | "glob": "^7.1.6", 20 | "mocha": "^10.3.0", 21 | "ts-loader": "^8.0.3", 22 | "typescript": "^4.0.2" 23 | }, 24 | "engines": { 25 | "vscode": "^1.48.0" 26 | } 27 | }, 28 | "node_modules/@babel/code-frame": { 29 | "version": "7.10.4", 30 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", 31 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", 32 | "dev": true, 33 | "dependencies": { 34 | "@babel/highlight": "^7.10.4" 35 | } 36 | }, 37 | "node_modules/@babel/helper-validator-identifier": { 38 | "version": "7.10.4", 39 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", 40 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", 41 | "dev": true 42 | }, 43 | "node_modules/@babel/highlight": { 44 | "version": "7.10.4", 45 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", 46 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", 47 | "dev": true, 48 | "dependencies": { 49 | "@babel/helper-validator-identifier": "^7.10.4", 50 | "chalk": "^2.0.0", 51 | "js-tokens": "^4.0.0" 52 | } 53 | }, 54 | "node_modules/@babel/highlight/node_modules/chalk": { 55 | "version": "2.4.2", 56 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 57 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 58 | "dev": true, 59 | "dependencies": { 60 | "ansi-styles": "^3.2.1", 61 | "escape-string-regexp": "^1.0.5", 62 | "supports-color": "^5.3.0" 63 | }, 64 | "engines": { 65 | "node": ">=4" 66 | } 67 | }, 68 | "node_modules/@eslint/eslintrc": { 69 | "version": "0.1.3", 70 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", 71 | "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", 72 | "dev": true, 73 | "dependencies": { 74 | "ajv": "^6.12.4", 75 | "debug": "^4.1.1", 76 | "espree": "^7.3.0", 77 | "globals": "^12.1.0", 78 | "ignore": "^4.0.6", 79 | "import-fresh": "^3.2.1", 80 | "js-yaml": "^3.13.1", 81 | "lodash": "^4.17.19", 82 | "minimatch": "^3.0.4", 83 | "strip-json-comments": "^3.1.1" 84 | }, 85 | "engines": { 86 | "node": "^10.12.0 || >=12.0.0" 87 | } 88 | }, 89 | "node_modules/@types/color-name": { 90 | "version": "1.1.1", 91 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 92 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", 93 | "dev": true 94 | }, 95 | "node_modules/@types/eslint-visitor-keys": { 96 | "version": "1.0.0", 97 | "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 98 | "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", 99 | "dev": true 100 | }, 101 | "node_modules/@types/glob": { 102 | "version": "7.1.3", 103 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", 104 | "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", 105 | "dev": true, 106 | "dependencies": { 107 | "@types/minimatch": "*", 108 | "@types/node": "*" 109 | } 110 | }, 111 | "node_modules/@types/json-schema": { 112 | "version": "7.0.15", 113 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 114 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 115 | "dev": true 116 | }, 117 | "node_modules/@types/minimatch": { 118 | "version": "3.0.3", 119 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", 120 | "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", 121 | "dev": true 122 | }, 123 | "node_modules/@types/mocha": { 124 | "version": "8.0.3", 125 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.3.tgz", 126 | "integrity": "sha512-vyxR57nv8NfcU0GZu8EUXZLTbCMupIUwy95LJ6lllN+JRPG25CwMHoB1q5xKh8YKhQnHYRAn4yW2yuHbf/5xgg==", 127 | "dev": true 128 | }, 129 | "node_modules/@types/node": { 130 | "version": "14.6.4", 131 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.4.tgz", 132 | "integrity": "sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==", 133 | "dev": true 134 | }, 135 | "node_modules/@types/vscode": { 136 | "version": "1.48.0", 137 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.48.0.tgz", 138 | "integrity": "sha512-sZJKzsJz1gSoFXcOJWw3fnKl2sseUgZmvB4AJZS+Fea+bC/jfGPVhmFL/FfQHld/TKtukVONsmoD3Pkyx9iadg==", 139 | "dev": true 140 | }, 141 | "node_modules/@typescript-eslint/eslint-plugin": { 142 | "version": "3.10.1", 143 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz", 144 | "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==", 145 | "dev": true, 146 | "dependencies": { 147 | "@typescript-eslint/experimental-utils": "3.10.1", 148 | "debug": "^4.1.1", 149 | "functional-red-black-tree": "^1.0.1", 150 | "regexpp": "^3.0.0", 151 | "semver": "^7.3.2", 152 | "tsutils": "^3.17.1" 153 | }, 154 | "engines": { 155 | "node": "^10.12.0 || >=12.0.0" 156 | }, 157 | "funding": { 158 | "type": "opencollective", 159 | "url": "https://opencollective.com/typescript-eslint" 160 | }, 161 | "peerDependencies": { 162 | "@typescript-eslint/parser": "^3.0.0", 163 | "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" 164 | }, 165 | "peerDependenciesMeta": { 166 | "typescript": { 167 | "optional": true 168 | } 169 | } 170 | }, 171 | "node_modules/@typescript-eslint/experimental-utils": { 172 | "version": "3.10.1", 173 | "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", 174 | "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", 175 | "dev": true, 176 | "dependencies": { 177 | "@types/json-schema": "^7.0.3", 178 | "@typescript-eslint/types": "3.10.1", 179 | "@typescript-eslint/typescript-estree": "3.10.1", 180 | "eslint-scope": "^5.0.0", 181 | "eslint-utils": "^2.0.0" 182 | }, 183 | "engines": { 184 | "node": "^10.12.0 || >=12.0.0" 185 | }, 186 | "funding": { 187 | "type": "opencollective", 188 | "url": "https://opencollective.com/typescript-eslint" 189 | }, 190 | "peerDependencies": { 191 | "eslint": "*" 192 | } 193 | }, 194 | "node_modules/@typescript-eslint/parser": { 195 | "version": "3.10.1", 196 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz", 197 | "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==", 198 | "dev": true, 199 | "dependencies": { 200 | "@types/eslint-visitor-keys": "^1.0.0", 201 | "@typescript-eslint/experimental-utils": "3.10.1", 202 | "@typescript-eslint/types": "3.10.1", 203 | "@typescript-eslint/typescript-estree": "3.10.1", 204 | "eslint-visitor-keys": "^1.1.0" 205 | }, 206 | "engines": { 207 | "node": "^10.12.0 || >=12.0.0" 208 | }, 209 | "funding": { 210 | "type": "opencollective", 211 | "url": "https://opencollective.com/typescript-eslint" 212 | }, 213 | "peerDependencies": { 214 | "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" 215 | }, 216 | "peerDependenciesMeta": { 217 | "typescript": { 218 | "optional": true 219 | } 220 | } 221 | }, 222 | "node_modules/@typescript-eslint/types": { 223 | "version": "3.10.1", 224 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", 225 | "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", 226 | "dev": true, 227 | "engines": { 228 | "node": "^8.10.0 || ^10.13.0 || >=11.10.1" 229 | }, 230 | "funding": { 231 | "type": "opencollective", 232 | "url": "https://opencollective.com/typescript-eslint" 233 | } 234 | }, 235 | "node_modules/@typescript-eslint/typescript-estree": { 236 | "version": "3.10.1", 237 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", 238 | "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", 239 | "dev": true, 240 | "dependencies": { 241 | "@typescript-eslint/types": "3.10.1", 242 | "@typescript-eslint/visitor-keys": "3.10.1", 243 | "debug": "^4.1.1", 244 | "glob": "^7.1.6", 245 | "is-glob": "^4.0.1", 246 | "lodash": "^4.17.15", 247 | "semver": "^7.3.2", 248 | "tsutils": "^3.17.1" 249 | }, 250 | "engines": { 251 | "node": "^10.12.0 || >=12.0.0" 252 | }, 253 | "funding": { 254 | "type": "opencollective", 255 | "url": "https://opencollective.com/typescript-eslint" 256 | }, 257 | "peerDependenciesMeta": { 258 | "typescript": { 259 | "optional": true 260 | } 261 | } 262 | }, 263 | "node_modules/@typescript-eslint/visitor-keys": { 264 | "version": "3.10.1", 265 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", 266 | "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", 267 | "dev": true, 268 | "dependencies": { 269 | "eslint-visitor-keys": "^1.1.0" 270 | }, 271 | "engines": { 272 | "node": "^8.10.0 || ^10.13.0 || >=11.10.1" 273 | }, 274 | "funding": { 275 | "type": "opencollective", 276 | "url": "https://opencollective.com/typescript-eslint" 277 | } 278 | }, 279 | "node_modules/acorn": { 280 | "version": "7.4.0", 281 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", 282 | "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", 283 | "dev": true, 284 | "bin": { 285 | "acorn": "bin/acorn" 286 | }, 287 | "engines": { 288 | "node": ">=0.4.0" 289 | } 290 | }, 291 | "node_modules/acorn-jsx": { 292 | "version": "5.2.0", 293 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", 294 | "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", 295 | "dev": true, 296 | "peerDependencies": { 297 | "acorn": "^6.0.0 || ^7.0.0" 298 | } 299 | }, 300 | "node_modules/ajv": { 301 | "version": "6.12.6", 302 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 303 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 304 | "dev": true, 305 | "dependencies": { 306 | "fast-deep-equal": "^3.1.1", 307 | "fast-json-stable-stringify": "^2.0.0", 308 | "json-schema-traverse": "^0.4.1", 309 | "uri-js": "^4.2.2" 310 | }, 311 | "funding": { 312 | "type": "github", 313 | "url": "https://github.com/sponsors/epoberezkin" 314 | } 315 | }, 316 | "node_modules/ansi-colors": { 317 | "version": "4.1.1", 318 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 319 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 320 | "dev": true, 321 | "engines": { 322 | "node": ">=6" 323 | } 324 | }, 325 | "node_modules/ansi-regex": { 326 | "version": "5.0.1", 327 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 328 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 329 | "dev": true, 330 | "engines": { 331 | "node": ">=8" 332 | } 333 | }, 334 | "node_modules/ansi-styles": { 335 | "version": "3.2.1", 336 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 337 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 338 | "dev": true, 339 | "dependencies": { 340 | "color-convert": "^1.9.0" 341 | }, 342 | "engines": { 343 | "node": ">=4" 344 | } 345 | }, 346 | "node_modules/anymatch": { 347 | "version": "3.1.3", 348 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 349 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 350 | "dev": true, 351 | "dependencies": { 352 | "normalize-path": "^3.0.0", 353 | "picomatch": "^2.0.4" 354 | }, 355 | "engines": { 356 | "node": ">= 8" 357 | } 358 | }, 359 | "node_modules/argparse": { 360 | "version": "1.0.9", 361 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 362 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 363 | "dev": true, 364 | "dependencies": { 365 | "sprintf-js": "~1.0.2" 366 | } 367 | }, 368 | "node_modules/astral-regex": { 369 | "version": "1.0.0", 370 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 371 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 372 | "dev": true, 373 | "engines": { 374 | "node": ">=4" 375 | } 376 | }, 377 | "node_modules/balanced-match": { 378 | "version": "1.0.0", 379 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 380 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 381 | "dev": true 382 | }, 383 | "node_modules/big.js": { 384 | "version": "5.2.2", 385 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 386 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", 387 | "dev": true, 388 | "engines": { 389 | "node": "*" 390 | } 391 | }, 392 | "node_modules/binary-extensions": { 393 | "version": "2.3.0", 394 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 395 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 396 | "dev": true, 397 | "engines": { 398 | "node": ">=8" 399 | }, 400 | "funding": { 401 | "url": "https://github.com/sponsors/sindresorhus" 402 | } 403 | }, 404 | "node_modules/brace-expansion": { 405 | "version": "1.1.11", 406 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 407 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 408 | "dev": true, 409 | "dependencies": { 410 | "balanced-match": "^1.0.0", 411 | "concat-map": "0.0.1" 412 | } 413 | }, 414 | "node_modules/braces": { 415 | "version": "3.0.2", 416 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 417 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 418 | "dev": true, 419 | "dependencies": { 420 | "fill-range": "^7.0.1" 421 | }, 422 | "engines": { 423 | "node": ">=8" 424 | } 425 | }, 426 | "node_modules/browser-stdout": { 427 | "version": "1.3.1", 428 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 429 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 430 | "dev": true 431 | }, 432 | "node_modules/callsites": { 433 | "version": "3.1.0", 434 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 435 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 436 | "dev": true, 437 | "engines": { 438 | "node": ">=6" 439 | } 440 | }, 441 | "node_modules/chalk": { 442 | "version": "4.1.0", 443 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 444 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 445 | "dev": true, 446 | "dependencies": { 447 | "ansi-styles": "^4.1.0", 448 | "supports-color": "^7.1.0" 449 | }, 450 | "engines": { 451 | "node": ">=10" 452 | }, 453 | "funding": { 454 | "url": "https://github.com/chalk/chalk?sponsor=1" 455 | } 456 | }, 457 | "node_modules/chalk/node_modules/ansi-styles": { 458 | "version": "4.2.1", 459 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 460 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 461 | "dev": true, 462 | "dependencies": { 463 | "@types/color-name": "^1.1.1", 464 | "color-convert": "^2.0.1" 465 | }, 466 | "engines": { 467 | "node": ">=8" 468 | }, 469 | "funding": { 470 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 471 | } 472 | }, 473 | "node_modules/chalk/node_modules/color-convert": { 474 | "version": "2.0.1", 475 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 476 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 477 | "dev": true, 478 | "dependencies": { 479 | "color-name": "~1.1.4" 480 | }, 481 | "engines": { 482 | "node": ">=7.0.0" 483 | } 484 | }, 485 | "node_modules/chalk/node_modules/color-name": { 486 | "version": "1.1.4", 487 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 488 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 489 | "dev": true 490 | }, 491 | "node_modules/chalk/node_modules/has-flag": { 492 | "version": "4.0.0", 493 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 494 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 495 | "dev": true, 496 | "engines": { 497 | "node": ">=8" 498 | } 499 | }, 500 | "node_modules/chalk/node_modules/supports-color": { 501 | "version": "7.2.0", 502 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 503 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 504 | "dev": true, 505 | "dependencies": { 506 | "has-flag": "^4.0.0" 507 | }, 508 | "engines": { 509 | "node": ">=8" 510 | } 511 | }, 512 | "node_modules/chokidar": { 513 | "version": "3.5.3", 514 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 515 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 516 | "dev": true, 517 | "funding": [ 518 | { 519 | "type": "individual", 520 | "url": "https://paulmillr.com/funding/" 521 | } 522 | ], 523 | "dependencies": { 524 | "anymatch": "~3.1.2", 525 | "braces": "~3.0.2", 526 | "glob-parent": "~5.1.2", 527 | "is-binary-path": "~2.1.0", 528 | "is-glob": "~4.0.1", 529 | "normalize-path": "~3.0.0", 530 | "readdirp": "~3.6.0" 531 | }, 532 | "engines": { 533 | "node": ">= 8.10.0" 534 | }, 535 | "optionalDependencies": { 536 | "fsevents": "~2.3.2" 537 | } 538 | }, 539 | "node_modules/color-convert": { 540 | "version": "1.9.3", 541 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 542 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 543 | "dev": true, 544 | "dependencies": { 545 | "color-name": "1.1.3" 546 | } 547 | }, 548 | "node_modules/color-name": { 549 | "version": "1.1.3", 550 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 551 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 552 | "dev": true 553 | }, 554 | "node_modules/concat-map": { 555 | "version": "0.0.1", 556 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 557 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 558 | "dev": true 559 | }, 560 | "node_modules/core-util-is": { 561 | "version": "1.0.2", 562 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 563 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 564 | "dev": true 565 | }, 566 | "node_modules/cross-spawn": { 567 | "version": "7.0.3", 568 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 569 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 570 | "dev": true, 571 | "dependencies": { 572 | "path-key": "^3.1.0", 573 | "shebang-command": "^2.0.0", 574 | "which": "^2.0.1" 575 | }, 576 | "engines": { 577 | "node": ">= 8" 578 | } 579 | }, 580 | "node_modules/debug": { 581 | "version": "4.3.4", 582 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 583 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 584 | "dev": true, 585 | "dependencies": { 586 | "ms": "2.1.2" 587 | }, 588 | "engines": { 589 | "node": ">=6.0" 590 | }, 591 | "peerDependenciesMeta": { 592 | "supports-color": { 593 | "optional": true 594 | } 595 | } 596 | }, 597 | "node_modules/deep-is": { 598 | "version": "0.1.3", 599 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 600 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 601 | "dev": true 602 | }, 603 | "node_modules/diff": { 604 | "version": "5.0.0", 605 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 606 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 607 | "dev": true, 608 | "engines": { 609 | "node": ">=0.3.1" 610 | } 611 | }, 612 | "node_modules/doctrine": { 613 | "version": "3.0.0", 614 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 615 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 616 | "dev": true, 617 | "dependencies": { 618 | "esutils": "^2.0.2" 619 | }, 620 | "engines": { 621 | "node": ">=6.0.0" 622 | } 623 | }, 624 | "node_modules/emoji-regex": { 625 | "version": "7.0.3", 626 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 627 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 628 | "dev": true 629 | }, 630 | "node_modules/emojis-list": { 631 | "version": "3.0.0", 632 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", 633 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", 634 | "dev": true, 635 | "engines": { 636 | "node": ">= 4" 637 | } 638 | }, 639 | "node_modules/enhanced-resolve": { 640 | "version": "4.5.0", 641 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", 642 | "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", 643 | "dev": true, 644 | "dependencies": { 645 | "graceful-fs": "^4.1.2", 646 | "memory-fs": "^0.5.0", 647 | "tapable": "^1.0.0" 648 | }, 649 | "engines": { 650 | "node": ">=6.9.0" 651 | } 652 | }, 653 | "node_modules/enhanced-resolve/node_modules/memory-fs": { 654 | "version": "0.5.0", 655 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", 656 | "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", 657 | "dev": true, 658 | "dependencies": { 659 | "errno": "^0.1.3", 660 | "readable-stream": "^2.0.1" 661 | }, 662 | "engines": { 663 | "node": ">=4.3.0 <5.0.0 || >=5.10" 664 | } 665 | }, 666 | "node_modules/enquirer": { 667 | "version": "2.3.6", 668 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 669 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 670 | "dev": true, 671 | "dependencies": { 672 | "ansi-colors": "^4.1.1" 673 | }, 674 | "engines": { 675 | "node": ">=8.6" 676 | } 677 | }, 678 | "node_modules/errno": { 679 | "version": "0.1.7", 680 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", 681 | "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", 682 | "dev": true, 683 | "dependencies": { 684 | "prr": "~1.0.1" 685 | }, 686 | "bin": { 687 | "errno": "cli.js" 688 | } 689 | }, 690 | "node_modules/escalade": { 691 | "version": "3.1.2", 692 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 693 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 694 | "dev": true, 695 | "engines": { 696 | "node": ">=6" 697 | } 698 | }, 699 | "node_modules/escape-string-regexp": { 700 | "version": "1.0.5", 701 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 702 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 703 | "dev": true, 704 | "engines": { 705 | "node": ">=0.8.0" 706 | } 707 | }, 708 | "node_modules/eslint": { 709 | "version": "7.8.1", 710 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.8.1.tgz", 711 | "integrity": "sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w==", 712 | "dev": true, 713 | "dependencies": { 714 | "@babel/code-frame": "^7.0.0", 715 | "@eslint/eslintrc": "^0.1.3", 716 | "ajv": "^6.10.0", 717 | "chalk": "^4.0.0", 718 | "cross-spawn": "^7.0.2", 719 | "debug": "^4.0.1", 720 | "doctrine": "^3.0.0", 721 | "enquirer": "^2.3.5", 722 | "eslint-scope": "^5.1.0", 723 | "eslint-utils": "^2.1.0", 724 | "eslint-visitor-keys": "^1.3.0", 725 | "espree": "^7.3.0", 726 | "esquery": "^1.2.0", 727 | "esutils": "^2.0.2", 728 | "file-entry-cache": "^5.0.1", 729 | "functional-red-black-tree": "^1.0.1", 730 | "glob-parent": "^5.0.0", 731 | "globals": "^12.1.0", 732 | "ignore": "^4.0.6", 733 | "import-fresh": "^3.0.0", 734 | "imurmurhash": "^0.1.4", 735 | "is-glob": "^4.0.0", 736 | "js-yaml": "^3.13.1", 737 | "json-stable-stringify-without-jsonify": "^1.0.1", 738 | "levn": "^0.4.1", 739 | "lodash": "^4.17.19", 740 | "minimatch": "^3.0.4", 741 | "natural-compare": "^1.4.0", 742 | "optionator": "^0.9.1", 743 | "progress": "^2.0.0", 744 | "regexpp": "^3.1.0", 745 | "semver": "^7.2.1", 746 | "strip-ansi": "^6.0.0", 747 | "strip-json-comments": "^3.1.0", 748 | "table": "^5.2.3", 749 | "text-table": "^0.2.0", 750 | "v8-compile-cache": "^2.0.3" 751 | }, 752 | "bin": { 753 | "eslint": "bin/eslint.js" 754 | }, 755 | "engines": { 756 | "node": "^10.12.0 || >=12.0.0" 757 | }, 758 | "funding": { 759 | "url": "https://opencollective.com/eslint" 760 | } 761 | }, 762 | "node_modules/eslint-scope": { 763 | "version": "5.1.1", 764 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 765 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 766 | "dev": true, 767 | "dependencies": { 768 | "esrecurse": "^4.3.0", 769 | "estraverse": "^4.1.1" 770 | }, 771 | "engines": { 772 | "node": ">=8.0.0" 773 | } 774 | }, 775 | "node_modules/eslint-utils": { 776 | "version": "2.1.0", 777 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 778 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 779 | "dev": true, 780 | "dependencies": { 781 | "eslint-visitor-keys": "^1.1.0" 782 | }, 783 | "engines": { 784 | "node": ">=6" 785 | }, 786 | "funding": { 787 | "url": "https://github.com/sponsors/mysticatea" 788 | } 789 | }, 790 | "node_modules/eslint-visitor-keys": { 791 | "version": "1.3.0", 792 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 793 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 794 | "dev": true, 795 | "engines": { 796 | "node": ">=4" 797 | } 798 | }, 799 | "node_modules/espree": { 800 | "version": "7.3.0", 801 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", 802 | "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", 803 | "dev": true, 804 | "dependencies": { 805 | "acorn": "^7.4.0", 806 | "acorn-jsx": "^5.2.0", 807 | "eslint-visitor-keys": "^1.3.0" 808 | }, 809 | "engines": { 810 | "node": "^10.12.0 || >=12.0.0" 811 | } 812 | }, 813 | "node_modules/esprima": { 814 | "version": "4.0.0", 815 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", 816 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", 817 | "dev": true, 818 | "bin": { 819 | "esparse": "bin/esparse.js", 820 | "esvalidate": "bin/esvalidate.js" 821 | }, 822 | "engines": { 823 | "node": ">=4" 824 | } 825 | }, 826 | "node_modules/esquery": { 827 | "version": "1.3.1", 828 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", 829 | "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", 830 | "dev": true, 831 | "dependencies": { 832 | "estraverse": "^5.1.0" 833 | }, 834 | "engines": { 835 | "node": ">=0.10" 836 | } 837 | }, 838 | "node_modules/esquery/node_modules/estraverse": { 839 | "version": "5.2.0", 840 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 841 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 842 | "dev": true, 843 | "engines": { 844 | "node": ">=4.0" 845 | } 846 | }, 847 | "node_modules/esrecurse": { 848 | "version": "4.3.0", 849 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 850 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 851 | "dev": true, 852 | "dependencies": { 853 | "estraverse": "^5.2.0" 854 | }, 855 | "engines": { 856 | "node": ">=4.0" 857 | } 858 | }, 859 | "node_modules/esrecurse/node_modules/estraverse": { 860 | "version": "5.3.0", 861 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 862 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 863 | "dev": true, 864 | "engines": { 865 | "node": ">=4.0" 866 | } 867 | }, 868 | "node_modules/estraverse": { 869 | "version": "4.3.0", 870 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 871 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 872 | "dev": true, 873 | "engines": { 874 | "node": ">=4.0" 875 | } 876 | }, 877 | "node_modules/esutils": { 878 | "version": "2.0.2", 879 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 880 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 881 | "dev": true, 882 | "engines": { 883 | "node": ">=0.10.0" 884 | } 885 | }, 886 | "node_modules/fast-deep-equal": { 887 | "version": "3.1.3", 888 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 889 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 890 | "dev": true 891 | }, 892 | "node_modules/fast-json-stable-stringify": { 893 | "version": "2.1.0", 894 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 895 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 896 | "dev": true 897 | }, 898 | "node_modules/fast-levenshtein": { 899 | "version": "2.0.6", 900 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 901 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 902 | "dev": true 903 | }, 904 | "node_modules/file-entry-cache": { 905 | "version": "5.0.1", 906 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 907 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 908 | "dev": true, 909 | "dependencies": { 910 | "flat-cache": "^2.0.1" 911 | }, 912 | "engines": { 913 | "node": ">=4" 914 | } 915 | }, 916 | "node_modules/fill-range": { 917 | "version": "7.0.1", 918 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 919 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 920 | "dev": true, 921 | "dependencies": { 922 | "to-regex-range": "^5.0.1" 923 | }, 924 | "engines": { 925 | "node": ">=8" 926 | } 927 | }, 928 | "node_modules/find-up": { 929 | "version": "5.0.0", 930 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 931 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 932 | "dev": true, 933 | "dependencies": { 934 | "locate-path": "^6.0.0", 935 | "path-exists": "^4.0.0" 936 | }, 937 | "engines": { 938 | "node": ">=10" 939 | }, 940 | "funding": { 941 | "url": "https://github.com/sponsors/sindresorhus" 942 | } 943 | }, 944 | "node_modules/flat": { 945 | "version": "5.0.2", 946 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 947 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 948 | "dev": true, 949 | "bin": { 950 | "flat": "cli.js" 951 | } 952 | }, 953 | "node_modules/flat-cache": { 954 | "version": "2.0.1", 955 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 956 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 957 | "dev": true, 958 | "dependencies": { 959 | "flatted": "^2.0.0", 960 | "rimraf": "2.6.3", 961 | "write": "1.0.3" 962 | }, 963 | "engines": { 964 | "node": ">=4" 965 | } 966 | }, 967 | "node_modules/flatted": { 968 | "version": "2.0.2", 969 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", 970 | "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", 971 | "dev": true 972 | }, 973 | "node_modules/fs.realpath": { 974 | "version": "1.0.0", 975 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 976 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 977 | "dev": true 978 | }, 979 | "node_modules/fsevents": { 980 | "version": "2.3.3", 981 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 982 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 983 | "dev": true, 984 | "hasInstallScript": true, 985 | "optional": true, 986 | "os": [ 987 | "darwin" 988 | ], 989 | "engines": { 990 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 991 | } 992 | }, 993 | "node_modules/functional-red-black-tree": { 994 | "version": "1.0.1", 995 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 996 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 997 | "dev": true 998 | }, 999 | "node_modules/get-caller-file": { 1000 | "version": "2.0.5", 1001 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1002 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1003 | "dev": true, 1004 | "engines": { 1005 | "node": "6.* || 8.* || >= 10.*" 1006 | } 1007 | }, 1008 | "node_modules/glob": { 1009 | "version": "7.1.6", 1010 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1011 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1012 | "dev": true, 1013 | "dependencies": { 1014 | "fs.realpath": "^1.0.0", 1015 | "inflight": "^1.0.4", 1016 | "inherits": "2", 1017 | "minimatch": "^3.0.4", 1018 | "once": "^1.3.0", 1019 | "path-is-absolute": "^1.0.0" 1020 | }, 1021 | "engines": { 1022 | "node": "*" 1023 | }, 1024 | "funding": { 1025 | "url": "https://github.com/sponsors/isaacs" 1026 | } 1027 | }, 1028 | "node_modules/glob-parent": { 1029 | "version": "5.1.2", 1030 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1031 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1032 | "dev": true, 1033 | "dependencies": { 1034 | "is-glob": "^4.0.1" 1035 | }, 1036 | "engines": { 1037 | "node": ">= 6" 1038 | } 1039 | }, 1040 | "node_modules/globals": { 1041 | "version": "12.4.0", 1042 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 1043 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 1044 | "dev": true, 1045 | "dependencies": { 1046 | "type-fest": "^0.8.1" 1047 | }, 1048 | "engines": { 1049 | "node": ">=8" 1050 | }, 1051 | "funding": { 1052 | "url": "https://github.com/sponsors/sindresorhus" 1053 | } 1054 | }, 1055 | "node_modules/graceful-fs": { 1056 | "version": "4.2.11", 1057 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1058 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1059 | "dev": true 1060 | }, 1061 | "node_modules/has-flag": { 1062 | "version": "3.0.0", 1063 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1064 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1065 | "dev": true, 1066 | "engines": { 1067 | "node": ">=4" 1068 | } 1069 | }, 1070 | "node_modules/he": { 1071 | "version": "1.2.0", 1072 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1073 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1074 | "dev": true, 1075 | "bin": { 1076 | "he": "bin/he" 1077 | } 1078 | }, 1079 | "node_modules/ignore": { 1080 | "version": "4.0.6", 1081 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1082 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1083 | "dev": true, 1084 | "engines": { 1085 | "node": ">= 4" 1086 | } 1087 | }, 1088 | "node_modules/import-fresh": { 1089 | "version": "3.2.1", 1090 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 1091 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 1092 | "dev": true, 1093 | "dependencies": { 1094 | "parent-module": "^1.0.0", 1095 | "resolve-from": "^4.0.0" 1096 | }, 1097 | "engines": { 1098 | "node": ">=6" 1099 | } 1100 | }, 1101 | "node_modules/imurmurhash": { 1102 | "version": "0.1.4", 1103 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1104 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1105 | "dev": true, 1106 | "engines": { 1107 | "node": ">=0.8.19" 1108 | } 1109 | }, 1110 | "node_modules/inflight": { 1111 | "version": "1.0.6", 1112 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1113 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1114 | "dev": true, 1115 | "dependencies": { 1116 | "once": "^1.3.0", 1117 | "wrappy": "1" 1118 | } 1119 | }, 1120 | "node_modules/inherits": { 1121 | "version": "2.0.4", 1122 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1123 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1124 | "dev": true 1125 | }, 1126 | "node_modules/is-binary-path": { 1127 | "version": "2.1.0", 1128 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1129 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1130 | "dev": true, 1131 | "dependencies": { 1132 | "binary-extensions": "^2.0.0" 1133 | }, 1134 | "engines": { 1135 | "node": ">=8" 1136 | } 1137 | }, 1138 | "node_modules/is-extglob": { 1139 | "version": "2.1.1", 1140 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1141 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1142 | "dev": true, 1143 | "engines": { 1144 | "node": ">=0.10.0" 1145 | } 1146 | }, 1147 | "node_modules/is-fullwidth-code-point": { 1148 | "version": "2.0.0", 1149 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1150 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1151 | "dev": true, 1152 | "engines": { 1153 | "node": ">=4" 1154 | } 1155 | }, 1156 | "node_modules/is-glob": { 1157 | "version": "4.0.1", 1158 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1159 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1160 | "dev": true, 1161 | "dependencies": { 1162 | "is-extglob": "^2.1.1" 1163 | }, 1164 | "engines": { 1165 | "node": ">=0.10.0" 1166 | } 1167 | }, 1168 | "node_modules/is-number": { 1169 | "version": "7.0.0", 1170 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1171 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1172 | "dev": true, 1173 | "engines": { 1174 | "node": ">=0.12.0" 1175 | } 1176 | }, 1177 | "node_modules/is-plain-obj": { 1178 | "version": "2.1.0", 1179 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1180 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1181 | "dev": true, 1182 | "engines": { 1183 | "node": ">=8" 1184 | } 1185 | }, 1186 | "node_modules/is-unicode-supported": { 1187 | "version": "0.1.0", 1188 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1189 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 1190 | "dev": true, 1191 | "engines": { 1192 | "node": ">=10" 1193 | }, 1194 | "funding": { 1195 | "url": "https://github.com/sponsors/sindresorhus" 1196 | } 1197 | }, 1198 | "node_modules/isexe": { 1199 | "version": "2.0.0", 1200 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1201 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1202 | "dev": true 1203 | }, 1204 | "node_modules/js-tokens": { 1205 | "version": "4.0.0", 1206 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1207 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1208 | "dev": true 1209 | }, 1210 | "node_modules/js-yaml": { 1211 | "version": "3.14.0", 1212 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", 1213 | "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", 1214 | "dev": true, 1215 | "dependencies": { 1216 | "argparse": "^1.0.7", 1217 | "esprima": "^4.0.0" 1218 | }, 1219 | "bin": { 1220 | "js-yaml": "bin/js-yaml.js" 1221 | } 1222 | }, 1223 | "node_modules/json-schema-traverse": { 1224 | "version": "0.4.1", 1225 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1226 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1227 | "dev": true 1228 | }, 1229 | "node_modules/json-stable-stringify-without-jsonify": { 1230 | "version": "1.0.1", 1231 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1232 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1233 | "dev": true 1234 | }, 1235 | "node_modules/json5": { 1236 | "version": "1.0.2", 1237 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", 1238 | "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", 1239 | "dev": true, 1240 | "dependencies": { 1241 | "minimist": "^1.2.0" 1242 | }, 1243 | "bin": { 1244 | "json5": "lib/cli.js" 1245 | } 1246 | }, 1247 | "node_modules/levn": { 1248 | "version": "0.4.1", 1249 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1250 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1251 | "dev": true, 1252 | "dependencies": { 1253 | "prelude-ls": "^1.2.1", 1254 | "type-check": "~0.4.0" 1255 | }, 1256 | "engines": { 1257 | "node": ">= 0.8.0" 1258 | } 1259 | }, 1260 | "node_modules/loader-utils": { 1261 | "version": "1.4.2", 1262 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", 1263 | "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", 1264 | "dev": true, 1265 | "dependencies": { 1266 | "big.js": "^5.2.2", 1267 | "emojis-list": "^3.0.0", 1268 | "json5": "^1.0.1" 1269 | }, 1270 | "engines": { 1271 | "node": ">=4.0.0" 1272 | } 1273 | }, 1274 | "node_modules/locate-path": { 1275 | "version": "6.0.0", 1276 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1277 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1278 | "dev": true, 1279 | "dependencies": { 1280 | "p-locate": "^5.0.0" 1281 | }, 1282 | "engines": { 1283 | "node": ">=10" 1284 | }, 1285 | "funding": { 1286 | "url": "https://github.com/sponsors/sindresorhus" 1287 | } 1288 | }, 1289 | "node_modules/lodash": { 1290 | "version": "4.17.21", 1291 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1292 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1293 | "dev": true 1294 | }, 1295 | "node_modules/log-symbols": { 1296 | "version": "4.1.0", 1297 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1298 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1299 | "dev": true, 1300 | "dependencies": { 1301 | "chalk": "^4.1.0", 1302 | "is-unicode-supported": "^0.1.0" 1303 | }, 1304 | "engines": { 1305 | "node": ">=10" 1306 | }, 1307 | "funding": { 1308 | "url": "https://github.com/sponsors/sindresorhus" 1309 | } 1310 | }, 1311 | "node_modules/minimatch": { 1312 | "version": "3.1.2", 1313 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1314 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1315 | "dev": true, 1316 | "dependencies": { 1317 | "brace-expansion": "^1.1.7" 1318 | }, 1319 | "engines": { 1320 | "node": "*" 1321 | } 1322 | }, 1323 | "node_modules/minimist": { 1324 | "version": "1.2.8", 1325 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 1326 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 1327 | "dev": true, 1328 | "funding": { 1329 | "url": "https://github.com/sponsors/ljharb" 1330 | } 1331 | }, 1332 | "node_modules/mkdirp": { 1333 | "version": "0.5.5", 1334 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1335 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1336 | "dev": true, 1337 | "dependencies": { 1338 | "minimist": "^1.2.5" 1339 | }, 1340 | "bin": { 1341 | "mkdirp": "bin/cmd.js" 1342 | } 1343 | }, 1344 | "node_modules/mocha": { 1345 | "version": "10.3.0", 1346 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", 1347 | "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", 1348 | "dev": true, 1349 | "dependencies": { 1350 | "ansi-colors": "4.1.1", 1351 | "browser-stdout": "1.3.1", 1352 | "chokidar": "3.5.3", 1353 | "debug": "4.3.4", 1354 | "diff": "5.0.0", 1355 | "escape-string-regexp": "4.0.0", 1356 | "find-up": "5.0.0", 1357 | "glob": "8.1.0", 1358 | "he": "1.2.0", 1359 | "js-yaml": "4.1.0", 1360 | "log-symbols": "4.1.0", 1361 | "minimatch": "5.0.1", 1362 | "ms": "2.1.3", 1363 | "serialize-javascript": "6.0.0", 1364 | "strip-json-comments": "3.1.1", 1365 | "supports-color": "8.1.1", 1366 | "workerpool": "6.2.1", 1367 | "yargs": "16.2.0", 1368 | "yargs-parser": "20.2.4", 1369 | "yargs-unparser": "2.0.0" 1370 | }, 1371 | "bin": { 1372 | "_mocha": "bin/_mocha", 1373 | "mocha": "bin/mocha.js" 1374 | }, 1375 | "engines": { 1376 | "node": ">= 14.0.0" 1377 | } 1378 | }, 1379 | "node_modules/mocha/node_modules/ansi-styles": { 1380 | "version": "4.3.0", 1381 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1382 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1383 | "dev": true, 1384 | "dependencies": { 1385 | "color-convert": "^2.0.1" 1386 | }, 1387 | "engines": { 1388 | "node": ">=8" 1389 | }, 1390 | "funding": { 1391 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1392 | } 1393 | }, 1394 | "node_modules/mocha/node_modules/argparse": { 1395 | "version": "2.0.1", 1396 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1397 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1398 | "dev": true 1399 | }, 1400 | "node_modules/mocha/node_modules/brace-expansion": { 1401 | "version": "2.0.1", 1402 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1403 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1404 | "dev": true, 1405 | "dependencies": { 1406 | "balanced-match": "^1.0.0" 1407 | } 1408 | }, 1409 | "node_modules/mocha/node_modules/cliui": { 1410 | "version": "7.0.4", 1411 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 1412 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 1413 | "dev": true, 1414 | "dependencies": { 1415 | "string-width": "^4.2.0", 1416 | "strip-ansi": "^6.0.0", 1417 | "wrap-ansi": "^7.0.0" 1418 | } 1419 | }, 1420 | "node_modules/mocha/node_modules/color-convert": { 1421 | "version": "2.0.1", 1422 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1423 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1424 | "dev": true, 1425 | "dependencies": { 1426 | "color-name": "~1.1.4" 1427 | }, 1428 | "engines": { 1429 | "node": ">=7.0.0" 1430 | } 1431 | }, 1432 | "node_modules/mocha/node_modules/color-name": { 1433 | "version": "1.1.4", 1434 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1435 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1436 | "dev": true 1437 | }, 1438 | "node_modules/mocha/node_modules/emoji-regex": { 1439 | "version": "8.0.0", 1440 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1441 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1442 | "dev": true 1443 | }, 1444 | "node_modules/mocha/node_modules/escape-string-regexp": { 1445 | "version": "4.0.0", 1446 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1447 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1448 | "dev": true, 1449 | "engines": { 1450 | "node": ">=10" 1451 | }, 1452 | "funding": { 1453 | "url": "https://github.com/sponsors/sindresorhus" 1454 | } 1455 | }, 1456 | "node_modules/mocha/node_modules/glob": { 1457 | "version": "8.1.0", 1458 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 1459 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 1460 | "dev": true, 1461 | "dependencies": { 1462 | "fs.realpath": "^1.0.0", 1463 | "inflight": "^1.0.4", 1464 | "inherits": "2", 1465 | "minimatch": "^5.0.1", 1466 | "once": "^1.3.0" 1467 | }, 1468 | "engines": { 1469 | "node": ">=12" 1470 | }, 1471 | "funding": { 1472 | "url": "https://github.com/sponsors/isaacs" 1473 | } 1474 | }, 1475 | "node_modules/mocha/node_modules/has-flag": { 1476 | "version": "4.0.0", 1477 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1478 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1479 | "dev": true, 1480 | "engines": { 1481 | "node": ">=8" 1482 | } 1483 | }, 1484 | "node_modules/mocha/node_modules/is-fullwidth-code-point": { 1485 | "version": "3.0.0", 1486 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1487 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1488 | "dev": true, 1489 | "engines": { 1490 | "node": ">=8" 1491 | } 1492 | }, 1493 | "node_modules/mocha/node_modules/js-yaml": { 1494 | "version": "4.1.0", 1495 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1496 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1497 | "dev": true, 1498 | "dependencies": { 1499 | "argparse": "^2.0.1" 1500 | }, 1501 | "bin": { 1502 | "js-yaml": "bin/js-yaml.js" 1503 | } 1504 | }, 1505 | "node_modules/mocha/node_modules/minimatch": { 1506 | "version": "5.0.1", 1507 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 1508 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 1509 | "dev": true, 1510 | "dependencies": { 1511 | "brace-expansion": "^2.0.1" 1512 | }, 1513 | "engines": { 1514 | "node": ">=10" 1515 | } 1516 | }, 1517 | "node_modules/mocha/node_modules/ms": { 1518 | "version": "2.1.3", 1519 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1520 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1521 | "dev": true 1522 | }, 1523 | "node_modules/mocha/node_modules/string-width": { 1524 | "version": "4.2.3", 1525 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1526 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1527 | "dev": true, 1528 | "dependencies": { 1529 | "emoji-regex": "^8.0.0", 1530 | "is-fullwidth-code-point": "^3.0.0", 1531 | "strip-ansi": "^6.0.1" 1532 | }, 1533 | "engines": { 1534 | "node": ">=8" 1535 | } 1536 | }, 1537 | "node_modules/mocha/node_modules/supports-color": { 1538 | "version": "8.1.1", 1539 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1540 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1541 | "dev": true, 1542 | "dependencies": { 1543 | "has-flag": "^4.0.0" 1544 | }, 1545 | "engines": { 1546 | "node": ">=10" 1547 | }, 1548 | "funding": { 1549 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1550 | } 1551 | }, 1552 | "node_modules/mocha/node_modules/wrap-ansi": { 1553 | "version": "7.0.0", 1554 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1555 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1556 | "dev": true, 1557 | "dependencies": { 1558 | "ansi-styles": "^4.0.0", 1559 | "string-width": "^4.1.0", 1560 | "strip-ansi": "^6.0.0" 1561 | }, 1562 | "engines": { 1563 | "node": ">=10" 1564 | }, 1565 | "funding": { 1566 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1567 | } 1568 | }, 1569 | "node_modules/mocha/node_modules/y18n": { 1570 | "version": "5.0.8", 1571 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1572 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1573 | "dev": true, 1574 | "engines": { 1575 | "node": ">=10" 1576 | } 1577 | }, 1578 | "node_modules/mocha/node_modules/yargs": { 1579 | "version": "16.2.0", 1580 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 1581 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 1582 | "dev": true, 1583 | "dependencies": { 1584 | "cliui": "^7.0.2", 1585 | "escalade": "^3.1.1", 1586 | "get-caller-file": "^2.0.5", 1587 | "require-directory": "^2.1.1", 1588 | "string-width": "^4.2.0", 1589 | "y18n": "^5.0.5", 1590 | "yargs-parser": "^20.2.2" 1591 | }, 1592 | "engines": { 1593 | "node": ">=10" 1594 | } 1595 | }, 1596 | "node_modules/mocha/node_modules/yargs-parser": { 1597 | "version": "20.2.4", 1598 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 1599 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 1600 | "dev": true, 1601 | "engines": { 1602 | "node": ">=10" 1603 | } 1604 | }, 1605 | "node_modules/ms": { 1606 | "version": "2.1.2", 1607 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1608 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1609 | "dev": true 1610 | }, 1611 | "node_modules/natural-compare": { 1612 | "version": "1.4.0", 1613 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1614 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1615 | "dev": true 1616 | }, 1617 | "node_modules/normalize-path": { 1618 | "version": "3.0.0", 1619 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1620 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1621 | "dev": true, 1622 | "engines": { 1623 | "node": ">=0.10.0" 1624 | } 1625 | }, 1626 | "node_modules/once": { 1627 | "version": "1.4.0", 1628 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1629 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1630 | "dev": true, 1631 | "dependencies": { 1632 | "wrappy": "1" 1633 | } 1634 | }, 1635 | "node_modules/optionator": { 1636 | "version": "0.9.1", 1637 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1638 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1639 | "dev": true, 1640 | "dependencies": { 1641 | "deep-is": "^0.1.3", 1642 | "fast-levenshtein": "^2.0.6", 1643 | "levn": "^0.4.1", 1644 | "prelude-ls": "^1.2.1", 1645 | "type-check": "^0.4.0", 1646 | "word-wrap": "^1.2.3" 1647 | }, 1648 | "engines": { 1649 | "node": ">= 0.8.0" 1650 | } 1651 | }, 1652 | "node_modules/p-limit": { 1653 | "version": "3.0.2", 1654 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", 1655 | "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", 1656 | "dev": true, 1657 | "dependencies": { 1658 | "p-try": "^2.0.0" 1659 | }, 1660 | "engines": { 1661 | "node": ">=10" 1662 | }, 1663 | "funding": { 1664 | "url": "https://github.com/sponsors/sindresorhus" 1665 | } 1666 | }, 1667 | "node_modules/p-locate": { 1668 | "version": "5.0.0", 1669 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1670 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1671 | "dev": true, 1672 | "dependencies": { 1673 | "p-limit": "^3.0.2" 1674 | }, 1675 | "engines": { 1676 | "node": ">=10" 1677 | }, 1678 | "funding": { 1679 | "url": "https://github.com/sponsors/sindresorhus" 1680 | } 1681 | }, 1682 | "node_modules/p-try": { 1683 | "version": "2.2.0", 1684 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1685 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1686 | "dev": true, 1687 | "engines": { 1688 | "node": ">=6" 1689 | } 1690 | }, 1691 | "node_modules/parent-module": { 1692 | "version": "1.0.1", 1693 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1694 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1695 | "dev": true, 1696 | "dependencies": { 1697 | "callsites": "^3.0.0" 1698 | }, 1699 | "engines": { 1700 | "node": ">=6" 1701 | } 1702 | }, 1703 | "node_modules/path-exists": { 1704 | "version": "4.0.0", 1705 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1706 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1707 | "dev": true, 1708 | "engines": { 1709 | "node": ">=8" 1710 | } 1711 | }, 1712 | "node_modules/path-is-absolute": { 1713 | "version": "1.0.1", 1714 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1715 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1716 | "dev": true, 1717 | "engines": { 1718 | "node": ">=0.10.0" 1719 | } 1720 | }, 1721 | "node_modules/path-key": { 1722 | "version": "3.1.1", 1723 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1724 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1725 | "dev": true, 1726 | "engines": { 1727 | "node": ">=8" 1728 | } 1729 | }, 1730 | "node_modules/picomatch": { 1731 | "version": "2.2.2", 1732 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 1733 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 1734 | "dev": true, 1735 | "engines": { 1736 | "node": ">=8.6" 1737 | }, 1738 | "funding": { 1739 | "url": "https://github.com/sponsors/jonschlinkert" 1740 | } 1741 | }, 1742 | "node_modules/prelude-ls": { 1743 | "version": "1.2.1", 1744 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1745 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1746 | "dev": true, 1747 | "engines": { 1748 | "node": ">= 0.8.0" 1749 | } 1750 | }, 1751 | "node_modules/process-nextick-args": { 1752 | "version": "2.0.1", 1753 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1754 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1755 | "dev": true 1756 | }, 1757 | "node_modules/progress": { 1758 | "version": "2.0.0", 1759 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", 1760 | "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", 1761 | "dev": true, 1762 | "engines": { 1763 | "node": ">=0.4.0" 1764 | } 1765 | }, 1766 | "node_modules/prr": { 1767 | "version": "1.0.1", 1768 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 1769 | "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", 1770 | "dev": true 1771 | }, 1772 | "node_modules/punycode": { 1773 | "version": "2.1.1", 1774 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1775 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1776 | "dev": true, 1777 | "engines": { 1778 | "node": ">=6" 1779 | } 1780 | }, 1781 | "node_modules/randombytes": { 1782 | "version": "2.1.0", 1783 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1784 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1785 | "dev": true, 1786 | "dependencies": { 1787 | "safe-buffer": "^5.1.0" 1788 | } 1789 | }, 1790 | "node_modules/readable-stream": { 1791 | "version": "2.3.8", 1792 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 1793 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 1794 | "dev": true, 1795 | "dependencies": { 1796 | "core-util-is": "~1.0.0", 1797 | "inherits": "~2.0.3", 1798 | "isarray": "~1.0.0", 1799 | "process-nextick-args": "~2.0.0", 1800 | "safe-buffer": "~5.1.1", 1801 | "string_decoder": "~1.1.1", 1802 | "util-deprecate": "~1.0.1" 1803 | } 1804 | }, 1805 | "node_modules/readable-stream/node_modules/isarray": { 1806 | "version": "1.0.0", 1807 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1808 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1809 | "dev": true 1810 | }, 1811 | "node_modules/readable-stream/node_modules/safe-buffer": { 1812 | "version": "5.1.2", 1813 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1814 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1815 | "dev": true 1816 | }, 1817 | "node_modules/readdirp": { 1818 | "version": "3.6.0", 1819 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1820 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1821 | "dev": true, 1822 | "dependencies": { 1823 | "picomatch": "^2.2.1" 1824 | }, 1825 | "engines": { 1826 | "node": ">=8.10.0" 1827 | } 1828 | }, 1829 | "node_modules/regexpp": { 1830 | "version": "3.1.0", 1831 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", 1832 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", 1833 | "dev": true, 1834 | "engines": { 1835 | "node": ">=8" 1836 | }, 1837 | "funding": { 1838 | "url": "https://github.com/sponsors/mysticatea" 1839 | } 1840 | }, 1841 | "node_modules/require-directory": { 1842 | "version": "2.1.1", 1843 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1844 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1845 | "dev": true, 1846 | "engines": { 1847 | "node": ">=0.10.0" 1848 | } 1849 | }, 1850 | "node_modules/resolve-from": { 1851 | "version": "4.0.0", 1852 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1853 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1854 | "dev": true, 1855 | "engines": { 1856 | "node": ">=4" 1857 | } 1858 | }, 1859 | "node_modules/rimraf": { 1860 | "version": "2.6.3", 1861 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1862 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1863 | "dev": true, 1864 | "dependencies": { 1865 | "glob": "^7.1.3" 1866 | }, 1867 | "bin": { 1868 | "rimraf": "bin.js" 1869 | } 1870 | }, 1871 | "node_modules/safe-buffer": { 1872 | "version": "5.2.1", 1873 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1874 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1875 | "dev": true, 1876 | "funding": [ 1877 | { 1878 | "type": "github", 1879 | "url": "https://github.com/sponsors/feross" 1880 | }, 1881 | { 1882 | "type": "patreon", 1883 | "url": "https://www.patreon.com/feross" 1884 | }, 1885 | { 1886 | "type": "consulting", 1887 | "url": "https://feross.org/support" 1888 | } 1889 | ] 1890 | }, 1891 | "node_modules/semver": { 1892 | "version": "7.6.0", 1893 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 1894 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 1895 | "dev": true, 1896 | "dependencies": { 1897 | "lru-cache": "^6.0.0" 1898 | }, 1899 | "bin": { 1900 | "semver": "bin/semver.js" 1901 | }, 1902 | "engines": { 1903 | "node": ">=10" 1904 | } 1905 | }, 1906 | "node_modules/semver/node_modules/lru-cache": { 1907 | "version": "6.0.0", 1908 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1909 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1910 | "dev": true, 1911 | "dependencies": { 1912 | "yallist": "^4.0.0" 1913 | }, 1914 | "engines": { 1915 | "node": ">=10" 1916 | } 1917 | }, 1918 | "node_modules/semver/node_modules/yallist": { 1919 | "version": "4.0.0", 1920 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1921 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1922 | "dev": true 1923 | }, 1924 | "node_modules/serialize-javascript": { 1925 | "version": "6.0.0", 1926 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 1927 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 1928 | "dev": true, 1929 | "dependencies": { 1930 | "randombytes": "^2.1.0" 1931 | } 1932 | }, 1933 | "node_modules/shebang-command": { 1934 | "version": "2.0.0", 1935 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1936 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1937 | "dev": true, 1938 | "dependencies": { 1939 | "shebang-regex": "^3.0.0" 1940 | }, 1941 | "engines": { 1942 | "node": ">=8" 1943 | } 1944 | }, 1945 | "node_modules/shebang-regex": { 1946 | "version": "3.0.0", 1947 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1948 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1949 | "dev": true, 1950 | "engines": { 1951 | "node": ">=8" 1952 | } 1953 | }, 1954 | "node_modules/slice-ansi": { 1955 | "version": "2.1.0", 1956 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 1957 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 1958 | "dev": true, 1959 | "dependencies": { 1960 | "ansi-styles": "^3.2.0", 1961 | "astral-regex": "^1.0.0", 1962 | "is-fullwidth-code-point": "^2.0.0" 1963 | }, 1964 | "engines": { 1965 | "node": ">=6" 1966 | } 1967 | }, 1968 | "node_modules/sprintf-js": { 1969 | "version": "1.0.3", 1970 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1971 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1972 | "dev": true 1973 | }, 1974 | "node_modules/string_decoder": { 1975 | "version": "1.1.1", 1976 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1977 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1978 | "dev": true, 1979 | "dependencies": { 1980 | "safe-buffer": "~5.1.0" 1981 | } 1982 | }, 1983 | "node_modules/string_decoder/node_modules/safe-buffer": { 1984 | "version": "5.1.2", 1985 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1986 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1987 | "dev": true 1988 | }, 1989 | "node_modules/string-width": { 1990 | "version": "3.1.0", 1991 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1992 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1993 | "dev": true, 1994 | "dependencies": { 1995 | "emoji-regex": "^7.0.1", 1996 | "is-fullwidth-code-point": "^2.0.0", 1997 | "strip-ansi": "^5.1.0" 1998 | }, 1999 | "engines": { 2000 | "node": ">=6" 2001 | } 2002 | }, 2003 | "node_modules/string-width/node_modules/ansi-regex": { 2004 | "version": "4.1.1", 2005 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", 2006 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", 2007 | "dev": true, 2008 | "engines": { 2009 | "node": ">=6" 2010 | } 2011 | }, 2012 | "node_modules/string-width/node_modules/strip-ansi": { 2013 | "version": "5.2.0", 2014 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2015 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2016 | "dev": true, 2017 | "dependencies": { 2018 | "ansi-regex": "^4.1.0" 2019 | }, 2020 | "engines": { 2021 | "node": ">=6" 2022 | } 2023 | }, 2024 | "node_modules/strip-ansi": { 2025 | "version": "6.0.1", 2026 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2027 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2028 | "dev": true, 2029 | "dependencies": { 2030 | "ansi-regex": "^5.0.1" 2031 | }, 2032 | "engines": { 2033 | "node": ">=8" 2034 | } 2035 | }, 2036 | "node_modules/strip-json-comments": { 2037 | "version": "3.1.1", 2038 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2039 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2040 | "dev": true, 2041 | "engines": { 2042 | "node": ">=8" 2043 | }, 2044 | "funding": { 2045 | "url": "https://github.com/sponsors/sindresorhus" 2046 | } 2047 | }, 2048 | "node_modules/supports-color": { 2049 | "version": "5.5.0", 2050 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2051 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2052 | "dev": true, 2053 | "dependencies": { 2054 | "has-flag": "^3.0.0" 2055 | }, 2056 | "engines": { 2057 | "node": ">=4" 2058 | } 2059 | }, 2060 | "node_modules/table": { 2061 | "version": "5.4.6", 2062 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 2063 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 2064 | "dev": true, 2065 | "dependencies": { 2066 | "ajv": "^6.10.2", 2067 | "lodash": "^4.17.14", 2068 | "slice-ansi": "^2.1.0", 2069 | "string-width": "^3.0.0" 2070 | }, 2071 | "engines": { 2072 | "node": ">=6.0.0" 2073 | } 2074 | }, 2075 | "node_modules/tapable": { 2076 | "version": "1.1.3", 2077 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", 2078 | "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", 2079 | "dev": true, 2080 | "engines": { 2081 | "node": ">=6" 2082 | } 2083 | }, 2084 | "node_modules/text-table": { 2085 | "version": "0.2.0", 2086 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2087 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2088 | "dev": true 2089 | }, 2090 | "node_modules/to-regex-range": { 2091 | "version": "5.0.1", 2092 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2093 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2094 | "dev": true, 2095 | "dependencies": { 2096 | "is-number": "^7.0.0" 2097 | }, 2098 | "engines": { 2099 | "node": ">=8.0" 2100 | } 2101 | }, 2102 | "node_modules/ts-loader": { 2103 | "version": "8.0.3", 2104 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.3.tgz", 2105 | "integrity": "sha512-wsqfnVdB7xQiqhqbz2ZPLGHLPZbHVV5Qn/MNFZkCFxRU1miDyxKORucDGxKtsQJ63Rfza0udiUxWF5nHY6bpdQ==", 2106 | "dev": true, 2107 | "dependencies": { 2108 | "chalk": "^2.3.0", 2109 | "enhanced-resolve": "^4.0.0", 2110 | "loader-utils": "^1.0.2", 2111 | "micromatch": "^4.0.0", 2112 | "semver": "^6.0.0" 2113 | }, 2114 | "engines": { 2115 | "node": ">=10.0.0" 2116 | }, 2117 | "peerDependencies": { 2118 | "typescript": "*" 2119 | } 2120 | }, 2121 | "node_modules/ts-loader/node_modules/chalk": { 2122 | "version": "2.4.2", 2123 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2124 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2125 | "dev": true, 2126 | "dependencies": { 2127 | "ansi-styles": "^3.2.1", 2128 | "escape-string-regexp": "^1.0.5", 2129 | "supports-color": "^5.3.0" 2130 | }, 2131 | "engines": { 2132 | "node": ">=4" 2133 | } 2134 | }, 2135 | "node_modules/ts-loader/node_modules/micromatch": { 2136 | "version": "4.0.2", 2137 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", 2138 | "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", 2139 | "dev": true, 2140 | "dependencies": { 2141 | "braces": "^3.0.1", 2142 | "picomatch": "^2.0.5" 2143 | }, 2144 | "engines": { 2145 | "node": ">=8" 2146 | } 2147 | }, 2148 | "node_modules/ts-loader/node_modules/semver": { 2149 | "version": "6.3.1", 2150 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 2151 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 2152 | "dev": true, 2153 | "bin": { 2154 | "semver": "bin/semver.js" 2155 | } 2156 | }, 2157 | "node_modules/tslib": { 2158 | "version": "1.13.0", 2159 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", 2160 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", 2161 | "dev": true 2162 | }, 2163 | "node_modules/tsutils": { 2164 | "version": "3.17.1", 2165 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", 2166 | "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", 2167 | "dev": true, 2168 | "dependencies": { 2169 | "tslib": "^1.8.1" 2170 | }, 2171 | "engines": { 2172 | "node": ">= 6" 2173 | }, 2174 | "peerDependencies": { 2175 | "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" 2176 | } 2177 | }, 2178 | "node_modules/type-check": { 2179 | "version": "0.4.0", 2180 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2181 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2182 | "dev": true, 2183 | "dependencies": { 2184 | "prelude-ls": "^1.2.1" 2185 | }, 2186 | "engines": { 2187 | "node": ">= 0.8.0" 2188 | } 2189 | }, 2190 | "node_modules/type-fest": { 2191 | "version": "0.8.1", 2192 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 2193 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 2194 | "dev": true, 2195 | "engines": { 2196 | "node": ">=8" 2197 | } 2198 | }, 2199 | "node_modules/typescript": { 2200 | "version": "4.0.2", 2201 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", 2202 | "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", 2203 | "dev": true, 2204 | "bin": { 2205 | "tsc": "bin/tsc", 2206 | "tsserver": "bin/tsserver" 2207 | }, 2208 | "engines": { 2209 | "node": ">=4.2.0" 2210 | } 2211 | }, 2212 | "node_modules/uri-js": { 2213 | "version": "4.4.0", 2214 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", 2215 | "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", 2216 | "dev": true, 2217 | "dependencies": { 2218 | "punycode": "^2.1.0" 2219 | } 2220 | }, 2221 | "node_modules/util-deprecate": { 2222 | "version": "1.0.2", 2223 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2224 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2225 | "dev": true 2226 | }, 2227 | "node_modules/v8-compile-cache": { 2228 | "version": "2.1.1", 2229 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", 2230 | "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", 2231 | "dev": true 2232 | }, 2233 | "node_modules/which": { 2234 | "version": "2.0.2", 2235 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2236 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2237 | "dev": true, 2238 | "dependencies": { 2239 | "isexe": "^2.0.0" 2240 | }, 2241 | "bin": { 2242 | "node-which": "bin/node-which" 2243 | }, 2244 | "engines": { 2245 | "node": ">= 8" 2246 | } 2247 | }, 2248 | "node_modules/word-wrap": { 2249 | "version": "1.2.5", 2250 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 2251 | "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 2252 | "dev": true, 2253 | "engines": { 2254 | "node": ">=0.10.0" 2255 | } 2256 | }, 2257 | "node_modules/workerpool": { 2258 | "version": "6.2.1", 2259 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", 2260 | "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", 2261 | "dev": true 2262 | }, 2263 | "node_modules/wrappy": { 2264 | "version": "1.0.2", 2265 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2266 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2267 | "dev": true 2268 | }, 2269 | "node_modules/write": { 2270 | "version": "1.0.3", 2271 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 2272 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 2273 | "dev": true, 2274 | "dependencies": { 2275 | "mkdirp": "^0.5.1" 2276 | }, 2277 | "engines": { 2278 | "node": ">=4" 2279 | } 2280 | }, 2281 | "node_modules/yargs-unparser": { 2282 | "version": "2.0.0", 2283 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 2284 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 2285 | "dev": true, 2286 | "dependencies": { 2287 | "camelcase": "^6.0.0", 2288 | "decamelize": "^4.0.0", 2289 | "flat": "^5.0.2", 2290 | "is-plain-obj": "^2.1.0" 2291 | }, 2292 | "engines": { 2293 | "node": ">=10" 2294 | } 2295 | }, 2296 | "node_modules/yargs-unparser/node_modules/camelcase": { 2297 | "version": "6.3.0", 2298 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 2299 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 2300 | "dev": true, 2301 | "engines": { 2302 | "node": ">=10" 2303 | }, 2304 | "funding": { 2305 | "url": "https://github.com/sponsors/sindresorhus" 2306 | } 2307 | }, 2308 | "node_modules/yargs-unparser/node_modules/decamelize": { 2309 | "version": "4.0.0", 2310 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 2311 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 2312 | "dev": true, 2313 | "engines": { 2314 | "node": ">=10" 2315 | }, 2316 | "funding": { 2317 | "url": "https://github.com/sponsors/sindresorhus" 2318 | } 2319 | } 2320 | }, 2321 | "dependencies": { 2322 | "@babel/code-frame": { 2323 | "version": "7.10.4", 2324 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", 2325 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", 2326 | "dev": true, 2327 | "requires": { 2328 | "@babel/highlight": "^7.10.4" 2329 | } 2330 | }, 2331 | "@babel/helper-validator-identifier": { 2332 | "version": "7.10.4", 2333 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", 2334 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", 2335 | "dev": true 2336 | }, 2337 | "@babel/highlight": { 2338 | "version": "7.10.4", 2339 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", 2340 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", 2341 | "dev": true, 2342 | "requires": { 2343 | "@babel/helper-validator-identifier": "^7.10.4", 2344 | "chalk": "^2.0.0", 2345 | "js-tokens": "^4.0.0" 2346 | }, 2347 | "dependencies": { 2348 | "chalk": { 2349 | "version": "2.4.2", 2350 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2351 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2352 | "dev": true, 2353 | "requires": { 2354 | "ansi-styles": "^3.2.1", 2355 | "escape-string-regexp": "^1.0.5", 2356 | "supports-color": "^5.3.0" 2357 | } 2358 | } 2359 | } 2360 | }, 2361 | "@eslint/eslintrc": { 2362 | "version": "0.1.3", 2363 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", 2364 | "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", 2365 | "dev": true, 2366 | "requires": { 2367 | "ajv": "^6.12.4", 2368 | "debug": "^4.1.1", 2369 | "espree": "^7.3.0", 2370 | "globals": "^12.1.0", 2371 | "ignore": "^4.0.6", 2372 | "import-fresh": "^3.2.1", 2373 | "js-yaml": "^3.13.1", 2374 | "lodash": "^4.17.19", 2375 | "minimatch": "^3.0.4", 2376 | "strip-json-comments": "^3.1.1" 2377 | } 2378 | }, 2379 | "@types/color-name": { 2380 | "version": "1.1.1", 2381 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 2382 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", 2383 | "dev": true 2384 | }, 2385 | "@types/eslint-visitor-keys": { 2386 | "version": "1.0.0", 2387 | "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", 2388 | "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", 2389 | "dev": true 2390 | }, 2391 | "@types/glob": { 2392 | "version": "7.1.3", 2393 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", 2394 | "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", 2395 | "dev": true, 2396 | "requires": { 2397 | "@types/minimatch": "*", 2398 | "@types/node": "*" 2399 | } 2400 | }, 2401 | "@types/json-schema": { 2402 | "version": "7.0.15", 2403 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 2404 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 2405 | "dev": true 2406 | }, 2407 | "@types/minimatch": { 2408 | "version": "3.0.3", 2409 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", 2410 | "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", 2411 | "dev": true 2412 | }, 2413 | "@types/mocha": { 2414 | "version": "8.0.3", 2415 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.0.3.tgz", 2416 | "integrity": "sha512-vyxR57nv8NfcU0GZu8EUXZLTbCMupIUwy95LJ6lllN+JRPG25CwMHoB1q5xKh8YKhQnHYRAn4yW2yuHbf/5xgg==", 2417 | "dev": true 2418 | }, 2419 | "@types/node": { 2420 | "version": "14.6.4", 2421 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.4.tgz", 2422 | "integrity": "sha512-Wk7nG1JSaMfMpoMJDKUsWYugliB2Vy55pdjLpmLixeyMi7HizW2I/9QoxsPCkXl3dO+ZOVqPumKaDUv5zJu2uQ==", 2423 | "dev": true 2424 | }, 2425 | "@types/vscode": { 2426 | "version": "1.48.0", 2427 | "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.48.0.tgz", 2428 | "integrity": "sha512-sZJKzsJz1gSoFXcOJWw3fnKl2sseUgZmvB4AJZS+Fea+bC/jfGPVhmFL/FfQHld/TKtukVONsmoD3Pkyx9iadg==", 2429 | "dev": true 2430 | }, 2431 | "@typescript-eslint/eslint-plugin": { 2432 | "version": "3.10.1", 2433 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz", 2434 | "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==", 2435 | "dev": true, 2436 | "requires": { 2437 | "@typescript-eslint/experimental-utils": "3.10.1", 2438 | "debug": "^4.1.1", 2439 | "functional-red-black-tree": "^1.0.1", 2440 | "regexpp": "^3.0.0", 2441 | "semver": "^7.3.2", 2442 | "tsutils": "^3.17.1" 2443 | } 2444 | }, 2445 | "@typescript-eslint/experimental-utils": { 2446 | "version": "3.10.1", 2447 | "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", 2448 | "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", 2449 | "dev": true, 2450 | "requires": { 2451 | "@types/json-schema": "^7.0.3", 2452 | "@typescript-eslint/types": "3.10.1", 2453 | "@typescript-eslint/typescript-estree": "3.10.1", 2454 | "eslint-scope": "^5.0.0", 2455 | "eslint-utils": "^2.0.0" 2456 | } 2457 | }, 2458 | "@typescript-eslint/parser": { 2459 | "version": "3.10.1", 2460 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz", 2461 | "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==", 2462 | "dev": true, 2463 | "requires": { 2464 | "@types/eslint-visitor-keys": "^1.0.0", 2465 | "@typescript-eslint/experimental-utils": "3.10.1", 2466 | "@typescript-eslint/types": "3.10.1", 2467 | "@typescript-eslint/typescript-estree": "3.10.1", 2468 | "eslint-visitor-keys": "^1.1.0" 2469 | } 2470 | }, 2471 | "@typescript-eslint/types": { 2472 | "version": "3.10.1", 2473 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", 2474 | "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", 2475 | "dev": true 2476 | }, 2477 | "@typescript-eslint/typescript-estree": { 2478 | "version": "3.10.1", 2479 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", 2480 | "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", 2481 | "dev": true, 2482 | "requires": { 2483 | "@typescript-eslint/types": "3.10.1", 2484 | "@typescript-eslint/visitor-keys": "3.10.1", 2485 | "debug": "^4.1.1", 2486 | "glob": "^7.1.6", 2487 | "is-glob": "^4.0.1", 2488 | "lodash": "^4.17.15", 2489 | "semver": "^7.3.2", 2490 | "tsutils": "^3.17.1" 2491 | } 2492 | }, 2493 | "@typescript-eslint/visitor-keys": { 2494 | "version": "3.10.1", 2495 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", 2496 | "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", 2497 | "dev": true, 2498 | "requires": { 2499 | "eslint-visitor-keys": "^1.1.0" 2500 | } 2501 | }, 2502 | "acorn": { 2503 | "version": "7.4.0", 2504 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", 2505 | "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", 2506 | "dev": true 2507 | }, 2508 | "acorn-jsx": { 2509 | "version": "5.2.0", 2510 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", 2511 | "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", 2512 | "dev": true, 2513 | "requires": {} 2514 | }, 2515 | "ajv": { 2516 | "version": "6.12.6", 2517 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 2518 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 2519 | "dev": true, 2520 | "requires": { 2521 | "fast-deep-equal": "^3.1.1", 2522 | "fast-json-stable-stringify": "^2.0.0", 2523 | "json-schema-traverse": "^0.4.1", 2524 | "uri-js": "^4.2.2" 2525 | } 2526 | }, 2527 | "ansi-colors": { 2528 | "version": "4.1.1", 2529 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 2530 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 2531 | "dev": true 2532 | }, 2533 | "ansi-regex": { 2534 | "version": "5.0.1", 2535 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2536 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2537 | "dev": true 2538 | }, 2539 | "ansi-styles": { 2540 | "version": "3.2.1", 2541 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2542 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2543 | "dev": true, 2544 | "requires": { 2545 | "color-convert": "^1.9.0" 2546 | } 2547 | }, 2548 | "anymatch": { 2549 | "version": "3.1.3", 2550 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 2551 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 2552 | "dev": true, 2553 | "requires": { 2554 | "normalize-path": "^3.0.0", 2555 | "picomatch": "^2.0.4" 2556 | } 2557 | }, 2558 | "argparse": { 2559 | "version": "1.0.9", 2560 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 2561 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 2562 | "dev": true, 2563 | "requires": { 2564 | "sprintf-js": "~1.0.2" 2565 | } 2566 | }, 2567 | "astral-regex": { 2568 | "version": "1.0.0", 2569 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 2570 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 2571 | "dev": true 2572 | }, 2573 | "balanced-match": { 2574 | "version": "1.0.0", 2575 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 2576 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 2577 | "dev": true 2578 | }, 2579 | "big.js": { 2580 | "version": "5.2.2", 2581 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 2582 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", 2583 | "dev": true 2584 | }, 2585 | "binary-extensions": { 2586 | "version": "2.3.0", 2587 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 2588 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 2589 | "dev": true 2590 | }, 2591 | "brace-expansion": { 2592 | "version": "1.1.11", 2593 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2594 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2595 | "dev": true, 2596 | "requires": { 2597 | "balanced-match": "^1.0.0", 2598 | "concat-map": "0.0.1" 2599 | } 2600 | }, 2601 | "braces": { 2602 | "version": "3.0.2", 2603 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 2604 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 2605 | "dev": true, 2606 | "requires": { 2607 | "fill-range": "^7.0.1" 2608 | } 2609 | }, 2610 | "browser-stdout": { 2611 | "version": "1.3.1", 2612 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 2613 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 2614 | "dev": true 2615 | }, 2616 | "callsites": { 2617 | "version": "3.1.0", 2618 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 2619 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 2620 | "dev": true 2621 | }, 2622 | "chalk": { 2623 | "version": "4.1.0", 2624 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 2625 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 2626 | "dev": true, 2627 | "requires": { 2628 | "ansi-styles": "^4.1.0", 2629 | "supports-color": "^7.1.0" 2630 | }, 2631 | "dependencies": { 2632 | "ansi-styles": { 2633 | "version": "4.2.1", 2634 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 2635 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 2636 | "dev": true, 2637 | "requires": { 2638 | "@types/color-name": "^1.1.1", 2639 | "color-convert": "^2.0.1" 2640 | } 2641 | }, 2642 | "color-convert": { 2643 | "version": "2.0.1", 2644 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2645 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2646 | "dev": true, 2647 | "requires": { 2648 | "color-name": "~1.1.4" 2649 | } 2650 | }, 2651 | "color-name": { 2652 | "version": "1.1.4", 2653 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2654 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2655 | "dev": true 2656 | }, 2657 | "has-flag": { 2658 | "version": "4.0.0", 2659 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2660 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2661 | "dev": true 2662 | }, 2663 | "supports-color": { 2664 | "version": "7.2.0", 2665 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2666 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2667 | "dev": true, 2668 | "requires": { 2669 | "has-flag": "^4.0.0" 2670 | } 2671 | } 2672 | } 2673 | }, 2674 | "chokidar": { 2675 | "version": "3.5.3", 2676 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 2677 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 2678 | "dev": true, 2679 | "requires": { 2680 | "anymatch": "~3.1.2", 2681 | "braces": "~3.0.2", 2682 | "fsevents": "~2.3.2", 2683 | "glob-parent": "~5.1.2", 2684 | "is-binary-path": "~2.1.0", 2685 | "is-glob": "~4.0.1", 2686 | "normalize-path": "~3.0.0", 2687 | "readdirp": "~3.6.0" 2688 | } 2689 | }, 2690 | "color-convert": { 2691 | "version": "1.9.3", 2692 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2693 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2694 | "dev": true, 2695 | "requires": { 2696 | "color-name": "1.1.3" 2697 | } 2698 | }, 2699 | "color-name": { 2700 | "version": "1.1.3", 2701 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2702 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 2703 | "dev": true 2704 | }, 2705 | "concat-map": { 2706 | "version": "0.0.1", 2707 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2708 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 2709 | "dev": true 2710 | }, 2711 | "core-util-is": { 2712 | "version": "1.0.2", 2713 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 2714 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 2715 | "dev": true 2716 | }, 2717 | "cross-spawn": { 2718 | "version": "7.0.3", 2719 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 2720 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 2721 | "dev": true, 2722 | "requires": { 2723 | "path-key": "^3.1.0", 2724 | "shebang-command": "^2.0.0", 2725 | "which": "^2.0.1" 2726 | } 2727 | }, 2728 | "debug": { 2729 | "version": "4.3.4", 2730 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2731 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2732 | "dev": true, 2733 | "requires": { 2734 | "ms": "2.1.2" 2735 | } 2736 | }, 2737 | "deep-is": { 2738 | "version": "0.1.3", 2739 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 2740 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 2741 | "dev": true 2742 | }, 2743 | "diff": { 2744 | "version": "5.0.0", 2745 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 2746 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 2747 | "dev": true 2748 | }, 2749 | "doctrine": { 2750 | "version": "3.0.0", 2751 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 2752 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 2753 | "dev": true, 2754 | "requires": { 2755 | "esutils": "^2.0.2" 2756 | } 2757 | }, 2758 | "emoji-regex": { 2759 | "version": "7.0.3", 2760 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 2761 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 2762 | "dev": true 2763 | }, 2764 | "emojis-list": { 2765 | "version": "3.0.0", 2766 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", 2767 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", 2768 | "dev": true 2769 | }, 2770 | "enhanced-resolve": { 2771 | "version": "4.5.0", 2772 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", 2773 | "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", 2774 | "dev": true, 2775 | "requires": { 2776 | "graceful-fs": "^4.1.2", 2777 | "memory-fs": "^0.5.0", 2778 | "tapable": "^1.0.0" 2779 | }, 2780 | "dependencies": { 2781 | "memory-fs": { 2782 | "version": "0.5.0", 2783 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", 2784 | "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", 2785 | "dev": true, 2786 | "requires": { 2787 | "errno": "^0.1.3", 2788 | "readable-stream": "^2.0.1" 2789 | } 2790 | } 2791 | } 2792 | }, 2793 | "enquirer": { 2794 | "version": "2.3.6", 2795 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 2796 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 2797 | "dev": true, 2798 | "requires": { 2799 | "ansi-colors": "^4.1.1" 2800 | } 2801 | }, 2802 | "errno": { 2803 | "version": "0.1.7", 2804 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", 2805 | "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", 2806 | "dev": true, 2807 | "requires": { 2808 | "prr": "~1.0.1" 2809 | } 2810 | }, 2811 | "escalade": { 2812 | "version": "3.1.2", 2813 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 2814 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 2815 | "dev": true 2816 | }, 2817 | "escape-string-regexp": { 2818 | "version": "1.0.5", 2819 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2820 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 2821 | "dev": true 2822 | }, 2823 | "eslint": { 2824 | "version": "7.8.1", 2825 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.8.1.tgz", 2826 | "integrity": "sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w==", 2827 | "dev": true, 2828 | "requires": { 2829 | "@babel/code-frame": "^7.0.0", 2830 | "@eslint/eslintrc": "^0.1.3", 2831 | "ajv": "^6.10.0", 2832 | "chalk": "^4.0.0", 2833 | "cross-spawn": "^7.0.2", 2834 | "debug": "^4.0.1", 2835 | "doctrine": "^3.0.0", 2836 | "enquirer": "^2.3.5", 2837 | "eslint-scope": "^5.1.0", 2838 | "eslint-utils": "^2.1.0", 2839 | "eslint-visitor-keys": "^1.3.0", 2840 | "espree": "^7.3.0", 2841 | "esquery": "^1.2.0", 2842 | "esutils": "^2.0.2", 2843 | "file-entry-cache": "^5.0.1", 2844 | "functional-red-black-tree": "^1.0.1", 2845 | "glob-parent": "^5.0.0", 2846 | "globals": "^12.1.0", 2847 | "ignore": "^4.0.6", 2848 | "import-fresh": "^3.0.0", 2849 | "imurmurhash": "^0.1.4", 2850 | "is-glob": "^4.0.0", 2851 | "js-yaml": "^3.13.1", 2852 | "json-stable-stringify-without-jsonify": "^1.0.1", 2853 | "levn": "^0.4.1", 2854 | "lodash": "^4.17.19", 2855 | "minimatch": "^3.0.4", 2856 | "natural-compare": "^1.4.0", 2857 | "optionator": "^0.9.1", 2858 | "progress": "^2.0.0", 2859 | "regexpp": "^3.1.0", 2860 | "semver": "^7.2.1", 2861 | "strip-ansi": "^6.0.0", 2862 | "strip-json-comments": "^3.1.0", 2863 | "table": "^5.2.3", 2864 | "text-table": "^0.2.0", 2865 | "v8-compile-cache": "^2.0.3" 2866 | } 2867 | }, 2868 | "eslint-scope": { 2869 | "version": "5.1.1", 2870 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 2871 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 2872 | "dev": true, 2873 | "requires": { 2874 | "esrecurse": "^4.3.0", 2875 | "estraverse": "^4.1.1" 2876 | } 2877 | }, 2878 | "eslint-utils": { 2879 | "version": "2.1.0", 2880 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", 2881 | "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", 2882 | "dev": true, 2883 | "requires": { 2884 | "eslint-visitor-keys": "^1.1.0" 2885 | } 2886 | }, 2887 | "eslint-visitor-keys": { 2888 | "version": "1.3.0", 2889 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 2890 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 2891 | "dev": true 2892 | }, 2893 | "espree": { 2894 | "version": "7.3.0", 2895 | "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", 2896 | "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", 2897 | "dev": true, 2898 | "requires": { 2899 | "acorn": "^7.4.0", 2900 | "acorn-jsx": "^5.2.0", 2901 | "eslint-visitor-keys": "^1.3.0" 2902 | } 2903 | }, 2904 | "esprima": { 2905 | "version": "4.0.0", 2906 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", 2907 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", 2908 | "dev": true 2909 | }, 2910 | "esquery": { 2911 | "version": "1.3.1", 2912 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", 2913 | "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", 2914 | "dev": true, 2915 | "requires": { 2916 | "estraverse": "^5.1.0" 2917 | }, 2918 | "dependencies": { 2919 | "estraverse": { 2920 | "version": "5.2.0", 2921 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 2922 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 2923 | "dev": true 2924 | } 2925 | } 2926 | }, 2927 | "esrecurse": { 2928 | "version": "4.3.0", 2929 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 2930 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 2931 | "dev": true, 2932 | "requires": { 2933 | "estraverse": "^5.2.0" 2934 | }, 2935 | "dependencies": { 2936 | "estraverse": { 2937 | "version": "5.3.0", 2938 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2939 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2940 | "dev": true 2941 | } 2942 | } 2943 | }, 2944 | "estraverse": { 2945 | "version": "4.3.0", 2946 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 2947 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 2948 | "dev": true 2949 | }, 2950 | "esutils": { 2951 | "version": "2.0.2", 2952 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 2953 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 2954 | "dev": true 2955 | }, 2956 | "fast-deep-equal": { 2957 | "version": "3.1.3", 2958 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2959 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2960 | "dev": true 2961 | }, 2962 | "fast-json-stable-stringify": { 2963 | "version": "2.1.0", 2964 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2965 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2966 | "dev": true 2967 | }, 2968 | "fast-levenshtein": { 2969 | "version": "2.0.6", 2970 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 2971 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 2972 | "dev": true 2973 | }, 2974 | "file-entry-cache": { 2975 | "version": "5.0.1", 2976 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 2977 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 2978 | "dev": true, 2979 | "requires": { 2980 | "flat-cache": "^2.0.1" 2981 | } 2982 | }, 2983 | "fill-range": { 2984 | "version": "7.0.1", 2985 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2986 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2987 | "dev": true, 2988 | "requires": { 2989 | "to-regex-range": "^5.0.1" 2990 | } 2991 | }, 2992 | "find-up": { 2993 | "version": "5.0.0", 2994 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2995 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2996 | "dev": true, 2997 | "requires": { 2998 | "locate-path": "^6.0.0", 2999 | "path-exists": "^4.0.0" 3000 | } 3001 | }, 3002 | "flat": { 3003 | "version": "5.0.2", 3004 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 3005 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 3006 | "dev": true 3007 | }, 3008 | "flat-cache": { 3009 | "version": "2.0.1", 3010 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 3011 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 3012 | "dev": true, 3013 | "requires": { 3014 | "flatted": "^2.0.0", 3015 | "rimraf": "2.6.3", 3016 | "write": "1.0.3" 3017 | } 3018 | }, 3019 | "flatted": { 3020 | "version": "2.0.2", 3021 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", 3022 | "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", 3023 | "dev": true 3024 | }, 3025 | "fs.realpath": { 3026 | "version": "1.0.0", 3027 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 3028 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 3029 | "dev": true 3030 | }, 3031 | "fsevents": { 3032 | "version": "2.3.3", 3033 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 3034 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 3035 | "dev": true, 3036 | "optional": true 3037 | }, 3038 | "functional-red-black-tree": { 3039 | "version": "1.0.1", 3040 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 3041 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 3042 | "dev": true 3043 | }, 3044 | "get-caller-file": { 3045 | "version": "2.0.5", 3046 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 3047 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 3048 | "dev": true 3049 | }, 3050 | "glob": { 3051 | "version": "7.1.6", 3052 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 3053 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 3054 | "dev": true, 3055 | "requires": { 3056 | "fs.realpath": "^1.0.0", 3057 | "inflight": "^1.0.4", 3058 | "inherits": "2", 3059 | "minimatch": "^3.0.4", 3060 | "once": "^1.3.0", 3061 | "path-is-absolute": "^1.0.0" 3062 | } 3063 | }, 3064 | "glob-parent": { 3065 | "version": "5.1.2", 3066 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 3067 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 3068 | "dev": true, 3069 | "requires": { 3070 | "is-glob": "^4.0.1" 3071 | } 3072 | }, 3073 | "globals": { 3074 | "version": "12.4.0", 3075 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 3076 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 3077 | "dev": true, 3078 | "requires": { 3079 | "type-fest": "^0.8.1" 3080 | } 3081 | }, 3082 | "graceful-fs": { 3083 | "version": "4.2.11", 3084 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 3085 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 3086 | "dev": true 3087 | }, 3088 | "has-flag": { 3089 | "version": "3.0.0", 3090 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 3091 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 3092 | "dev": true 3093 | }, 3094 | "he": { 3095 | "version": "1.2.0", 3096 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 3097 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 3098 | "dev": true 3099 | }, 3100 | "ignore": { 3101 | "version": "4.0.6", 3102 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 3103 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 3104 | "dev": true 3105 | }, 3106 | "import-fresh": { 3107 | "version": "3.2.1", 3108 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 3109 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 3110 | "dev": true, 3111 | "requires": { 3112 | "parent-module": "^1.0.0", 3113 | "resolve-from": "^4.0.0" 3114 | } 3115 | }, 3116 | "imurmurhash": { 3117 | "version": "0.1.4", 3118 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 3119 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 3120 | "dev": true 3121 | }, 3122 | "inflight": { 3123 | "version": "1.0.6", 3124 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 3125 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 3126 | "dev": true, 3127 | "requires": { 3128 | "once": "^1.3.0", 3129 | "wrappy": "1" 3130 | } 3131 | }, 3132 | "inherits": { 3133 | "version": "2.0.4", 3134 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3135 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 3136 | "dev": true 3137 | }, 3138 | "is-binary-path": { 3139 | "version": "2.1.0", 3140 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 3141 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 3142 | "dev": true, 3143 | "requires": { 3144 | "binary-extensions": "^2.0.0" 3145 | } 3146 | }, 3147 | "is-extglob": { 3148 | "version": "2.1.1", 3149 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 3150 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 3151 | "dev": true 3152 | }, 3153 | "is-fullwidth-code-point": { 3154 | "version": "2.0.0", 3155 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 3156 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 3157 | "dev": true 3158 | }, 3159 | "is-glob": { 3160 | "version": "4.0.1", 3161 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 3162 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 3163 | "dev": true, 3164 | "requires": { 3165 | "is-extglob": "^2.1.1" 3166 | } 3167 | }, 3168 | "is-number": { 3169 | "version": "7.0.0", 3170 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 3171 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 3172 | "dev": true 3173 | }, 3174 | "is-plain-obj": { 3175 | "version": "2.1.0", 3176 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 3177 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 3178 | "dev": true 3179 | }, 3180 | "is-unicode-supported": { 3181 | "version": "0.1.0", 3182 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 3183 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 3184 | "dev": true 3185 | }, 3186 | "isexe": { 3187 | "version": "2.0.0", 3188 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3189 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 3190 | "dev": true 3191 | }, 3192 | "js-tokens": { 3193 | "version": "4.0.0", 3194 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 3195 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 3196 | "dev": true 3197 | }, 3198 | "js-yaml": { 3199 | "version": "3.14.0", 3200 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", 3201 | "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", 3202 | "dev": true, 3203 | "requires": { 3204 | "argparse": "^1.0.7", 3205 | "esprima": "^4.0.0" 3206 | } 3207 | }, 3208 | "json-schema-traverse": { 3209 | "version": "0.4.1", 3210 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3211 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3212 | "dev": true 3213 | }, 3214 | "json-stable-stringify-without-jsonify": { 3215 | "version": "1.0.1", 3216 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 3217 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 3218 | "dev": true 3219 | }, 3220 | "json5": { 3221 | "version": "1.0.2", 3222 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", 3223 | "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", 3224 | "dev": true, 3225 | "requires": { 3226 | "minimist": "^1.2.0" 3227 | } 3228 | }, 3229 | "levn": { 3230 | "version": "0.4.1", 3231 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 3232 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 3233 | "dev": true, 3234 | "requires": { 3235 | "prelude-ls": "^1.2.1", 3236 | "type-check": "~0.4.0" 3237 | } 3238 | }, 3239 | "loader-utils": { 3240 | "version": "1.4.2", 3241 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", 3242 | "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", 3243 | "dev": true, 3244 | "requires": { 3245 | "big.js": "^5.2.2", 3246 | "emojis-list": "^3.0.0", 3247 | "json5": "^1.0.1" 3248 | } 3249 | }, 3250 | "locate-path": { 3251 | "version": "6.0.0", 3252 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 3253 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 3254 | "dev": true, 3255 | "requires": { 3256 | "p-locate": "^5.0.0" 3257 | } 3258 | }, 3259 | "lodash": { 3260 | "version": "4.17.21", 3261 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 3262 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 3263 | "dev": true 3264 | }, 3265 | "log-symbols": { 3266 | "version": "4.1.0", 3267 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 3268 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 3269 | "dev": true, 3270 | "requires": { 3271 | "chalk": "^4.1.0", 3272 | "is-unicode-supported": "^0.1.0" 3273 | } 3274 | }, 3275 | "minimatch": { 3276 | "version": "3.1.2", 3277 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3278 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3279 | "dev": true, 3280 | "requires": { 3281 | "brace-expansion": "^1.1.7" 3282 | } 3283 | }, 3284 | "minimist": { 3285 | "version": "1.2.8", 3286 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 3287 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 3288 | "dev": true 3289 | }, 3290 | "mkdirp": { 3291 | "version": "0.5.5", 3292 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 3293 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 3294 | "dev": true, 3295 | "requires": { 3296 | "minimist": "^1.2.5" 3297 | } 3298 | }, 3299 | "mocha": { 3300 | "version": "10.3.0", 3301 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", 3302 | "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", 3303 | "dev": true, 3304 | "requires": { 3305 | "ansi-colors": "4.1.1", 3306 | "browser-stdout": "1.3.1", 3307 | "chokidar": "3.5.3", 3308 | "debug": "4.3.4", 3309 | "diff": "5.0.0", 3310 | "escape-string-regexp": "4.0.0", 3311 | "find-up": "5.0.0", 3312 | "glob": "8.1.0", 3313 | "he": "1.2.0", 3314 | "js-yaml": "4.1.0", 3315 | "log-symbols": "4.1.0", 3316 | "minimatch": "5.0.1", 3317 | "ms": "2.1.3", 3318 | "serialize-javascript": "6.0.0", 3319 | "strip-json-comments": "3.1.1", 3320 | "supports-color": "8.1.1", 3321 | "workerpool": "6.2.1", 3322 | "yargs": "16.2.0", 3323 | "yargs-parser": "20.2.4", 3324 | "yargs-unparser": "2.0.0" 3325 | }, 3326 | "dependencies": { 3327 | "ansi-styles": { 3328 | "version": "4.3.0", 3329 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 3330 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 3331 | "dev": true, 3332 | "requires": { 3333 | "color-convert": "^2.0.1" 3334 | } 3335 | }, 3336 | "argparse": { 3337 | "version": "2.0.1", 3338 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 3339 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 3340 | "dev": true 3341 | }, 3342 | "brace-expansion": { 3343 | "version": "2.0.1", 3344 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 3345 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 3346 | "dev": true, 3347 | "requires": { 3348 | "balanced-match": "^1.0.0" 3349 | } 3350 | }, 3351 | "cliui": { 3352 | "version": "7.0.4", 3353 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 3354 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 3355 | "dev": true, 3356 | "requires": { 3357 | "string-width": "^4.2.0", 3358 | "strip-ansi": "^6.0.0", 3359 | "wrap-ansi": "^7.0.0" 3360 | } 3361 | }, 3362 | "color-convert": { 3363 | "version": "2.0.1", 3364 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 3365 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 3366 | "dev": true, 3367 | "requires": { 3368 | "color-name": "~1.1.4" 3369 | } 3370 | }, 3371 | "color-name": { 3372 | "version": "1.1.4", 3373 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 3374 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 3375 | "dev": true 3376 | }, 3377 | "emoji-regex": { 3378 | "version": "8.0.0", 3379 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3380 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 3381 | "dev": true 3382 | }, 3383 | "escape-string-regexp": { 3384 | "version": "4.0.0", 3385 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 3386 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 3387 | "dev": true 3388 | }, 3389 | "glob": { 3390 | "version": "8.1.0", 3391 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 3392 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 3393 | "dev": true, 3394 | "requires": { 3395 | "fs.realpath": "^1.0.0", 3396 | "inflight": "^1.0.4", 3397 | "inherits": "2", 3398 | "minimatch": "^5.0.1", 3399 | "once": "^1.3.0" 3400 | } 3401 | }, 3402 | "has-flag": { 3403 | "version": "4.0.0", 3404 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3405 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3406 | "dev": true 3407 | }, 3408 | "is-fullwidth-code-point": { 3409 | "version": "3.0.0", 3410 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3411 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3412 | "dev": true 3413 | }, 3414 | "js-yaml": { 3415 | "version": "4.1.0", 3416 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 3417 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 3418 | "dev": true, 3419 | "requires": { 3420 | "argparse": "^2.0.1" 3421 | } 3422 | }, 3423 | "minimatch": { 3424 | "version": "5.0.1", 3425 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 3426 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 3427 | "dev": true, 3428 | "requires": { 3429 | "brace-expansion": "^2.0.1" 3430 | } 3431 | }, 3432 | "ms": { 3433 | "version": "2.1.3", 3434 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 3435 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 3436 | "dev": true 3437 | }, 3438 | "string-width": { 3439 | "version": "4.2.3", 3440 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3441 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3442 | "dev": true, 3443 | "requires": { 3444 | "emoji-regex": "^8.0.0", 3445 | "is-fullwidth-code-point": "^3.0.0", 3446 | "strip-ansi": "^6.0.1" 3447 | } 3448 | }, 3449 | "supports-color": { 3450 | "version": "8.1.1", 3451 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 3452 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 3453 | "dev": true, 3454 | "requires": { 3455 | "has-flag": "^4.0.0" 3456 | } 3457 | }, 3458 | "wrap-ansi": { 3459 | "version": "7.0.0", 3460 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3461 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3462 | "dev": true, 3463 | "requires": { 3464 | "ansi-styles": "^4.0.0", 3465 | "string-width": "^4.1.0", 3466 | "strip-ansi": "^6.0.0" 3467 | } 3468 | }, 3469 | "y18n": { 3470 | "version": "5.0.8", 3471 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3472 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 3473 | "dev": true 3474 | }, 3475 | "yargs": { 3476 | "version": "16.2.0", 3477 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 3478 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 3479 | "dev": true, 3480 | "requires": { 3481 | "cliui": "^7.0.2", 3482 | "escalade": "^3.1.1", 3483 | "get-caller-file": "^2.0.5", 3484 | "require-directory": "^2.1.1", 3485 | "string-width": "^4.2.0", 3486 | "y18n": "^5.0.5", 3487 | "yargs-parser": "^20.2.2" 3488 | } 3489 | }, 3490 | "yargs-parser": { 3491 | "version": "20.2.4", 3492 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 3493 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 3494 | "dev": true 3495 | } 3496 | } 3497 | }, 3498 | "ms": { 3499 | "version": "2.1.2", 3500 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3501 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3502 | "dev": true 3503 | }, 3504 | "natural-compare": { 3505 | "version": "1.4.0", 3506 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3507 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 3508 | "dev": true 3509 | }, 3510 | "normalize-path": { 3511 | "version": "3.0.0", 3512 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3513 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3514 | "dev": true 3515 | }, 3516 | "once": { 3517 | "version": "1.4.0", 3518 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3519 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3520 | "dev": true, 3521 | "requires": { 3522 | "wrappy": "1" 3523 | } 3524 | }, 3525 | "optionator": { 3526 | "version": "0.9.1", 3527 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 3528 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 3529 | "dev": true, 3530 | "requires": { 3531 | "deep-is": "^0.1.3", 3532 | "fast-levenshtein": "^2.0.6", 3533 | "levn": "^0.4.1", 3534 | "prelude-ls": "^1.2.1", 3535 | "type-check": "^0.4.0", 3536 | "word-wrap": "^1.2.3" 3537 | } 3538 | }, 3539 | "p-limit": { 3540 | "version": "3.0.2", 3541 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", 3542 | "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", 3543 | "dev": true, 3544 | "requires": { 3545 | "p-try": "^2.0.0" 3546 | } 3547 | }, 3548 | "p-locate": { 3549 | "version": "5.0.0", 3550 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 3551 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 3552 | "dev": true, 3553 | "requires": { 3554 | "p-limit": "^3.0.2" 3555 | } 3556 | }, 3557 | "p-try": { 3558 | "version": "2.2.0", 3559 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 3560 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 3561 | "dev": true 3562 | }, 3563 | "parent-module": { 3564 | "version": "1.0.1", 3565 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 3566 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 3567 | "dev": true, 3568 | "requires": { 3569 | "callsites": "^3.0.0" 3570 | } 3571 | }, 3572 | "path-exists": { 3573 | "version": "4.0.0", 3574 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3575 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3576 | "dev": true 3577 | }, 3578 | "path-is-absolute": { 3579 | "version": "1.0.1", 3580 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3581 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 3582 | "dev": true 3583 | }, 3584 | "path-key": { 3585 | "version": "3.1.1", 3586 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3587 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3588 | "dev": true 3589 | }, 3590 | "picomatch": { 3591 | "version": "2.2.2", 3592 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 3593 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 3594 | "dev": true 3595 | }, 3596 | "prelude-ls": { 3597 | "version": "1.2.1", 3598 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 3599 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 3600 | "dev": true 3601 | }, 3602 | "process-nextick-args": { 3603 | "version": "2.0.1", 3604 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 3605 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 3606 | "dev": true 3607 | }, 3608 | "progress": { 3609 | "version": "2.0.0", 3610 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", 3611 | "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", 3612 | "dev": true 3613 | }, 3614 | "prr": { 3615 | "version": "1.0.1", 3616 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 3617 | "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", 3618 | "dev": true 3619 | }, 3620 | "punycode": { 3621 | "version": "2.1.1", 3622 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 3623 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 3624 | "dev": true 3625 | }, 3626 | "randombytes": { 3627 | "version": "2.1.0", 3628 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 3629 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 3630 | "dev": true, 3631 | "requires": { 3632 | "safe-buffer": "^5.1.0" 3633 | } 3634 | }, 3635 | "readable-stream": { 3636 | "version": "2.3.8", 3637 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 3638 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 3639 | "dev": true, 3640 | "requires": { 3641 | "core-util-is": "~1.0.0", 3642 | "inherits": "~2.0.3", 3643 | "isarray": "~1.0.0", 3644 | "process-nextick-args": "~2.0.0", 3645 | "safe-buffer": "~5.1.1", 3646 | "string_decoder": "~1.1.1", 3647 | "util-deprecate": "~1.0.1" 3648 | }, 3649 | "dependencies": { 3650 | "isarray": { 3651 | "version": "1.0.0", 3652 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 3653 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 3654 | "dev": true 3655 | }, 3656 | "safe-buffer": { 3657 | "version": "5.1.2", 3658 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3659 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3660 | "dev": true 3661 | } 3662 | } 3663 | }, 3664 | "readdirp": { 3665 | "version": "3.6.0", 3666 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 3667 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 3668 | "dev": true, 3669 | "requires": { 3670 | "picomatch": "^2.2.1" 3671 | } 3672 | }, 3673 | "regexpp": { 3674 | "version": "3.1.0", 3675 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", 3676 | "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", 3677 | "dev": true 3678 | }, 3679 | "require-directory": { 3680 | "version": "2.1.1", 3681 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3682 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 3683 | "dev": true 3684 | }, 3685 | "resolve-from": { 3686 | "version": "4.0.0", 3687 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3688 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3689 | "dev": true 3690 | }, 3691 | "rimraf": { 3692 | "version": "2.6.3", 3693 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 3694 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 3695 | "dev": true, 3696 | "requires": { 3697 | "glob": "^7.1.3" 3698 | } 3699 | }, 3700 | "safe-buffer": { 3701 | "version": "5.2.1", 3702 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3703 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3704 | "dev": true 3705 | }, 3706 | "semver": { 3707 | "version": "7.6.0", 3708 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 3709 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 3710 | "dev": true, 3711 | "requires": { 3712 | "lru-cache": "^6.0.0" 3713 | }, 3714 | "dependencies": { 3715 | "lru-cache": { 3716 | "version": "6.0.0", 3717 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 3718 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 3719 | "dev": true, 3720 | "requires": { 3721 | "yallist": "^4.0.0" 3722 | } 3723 | }, 3724 | "yallist": { 3725 | "version": "4.0.0", 3726 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3727 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3728 | "dev": true 3729 | } 3730 | } 3731 | }, 3732 | "serialize-javascript": { 3733 | "version": "6.0.0", 3734 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 3735 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 3736 | "dev": true, 3737 | "requires": { 3738 | "randombytes": "^2.1.0" 3739 | } 3740 | }, 3741 | "shebang-command": { 3742 | "version": "2.0.0", 3743 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3744 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3745 | "dev": true, 3746 | "requires": { 3747 | "shebang-regex": "^3.0.0" 3748 | } 3749 | }, 3750 | "shebang-regex": { 3751 | "version": "3.0.0", 3752 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3753 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3754 | "dev": true 3755 | }, 3756 | "slice-ansi": { 3757 | "version": "2.1.0", 3758 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 3759 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 3760 | "dev": true, 3761 | "requires": { 3762 | "ansi-styles": "^3.2.0", 3763 | "astral-regex": "^1.0.0", 3764 | "is-fullwidth-code-point": "^2.0.0" 3765 | } 3766 | }, 3767 | "sprintf-js": { 3768 | "version": "1.0.3", 3769 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3770 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 3771 | "dev": true 3772 | }, 3773 | "string_decoder": { 3774 | "version": "1.1.1", 3775 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3776 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3777 | "dev": true, 3778 | "requires": { 3779 | "safe-buffer": "~5.1.0" 3780 | }, 3781 | "dependencies": { 3782 | "safe-buffer": { 3783 | "version": "5.1.2", 3784 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3785 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 3786 | "dev": true 3787 | } 3788 | } 3789 | }, 3790 | "string-width": { 3791 | "version": "3.1.0", 3792 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 3793 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 3794 | "dev": true, 3795 | "requires": { 3796 | "emoji-regex": "^7.0.1", 3797 | "is-fullwidth-code-point": "^2.0.0", 3798 | "strip-ansi": "^5.1.0" 3799 | }, 3800 | "dependencies": { 3801 | "ansi-regex": { 3802 | "version": "4.1.1", 3803 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", 3804 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", 3805 | "dev": true 3806 | }, 3807 | "strip-ansi": { 3808 | "version": "5.2.0", 3809 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 3810 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 3811 | "dev": true, 3812 | "requires": { 3813 | "ansi-regex": "^4.1.0" 3814 | } 3815 | } 3816 | } 3817 | }, 3818 | "strip-ansi": { 3819 | "version": "6.0.1", 3820 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3821 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3822 | "dev": true, 3823 | "requires": { 3824 | "ansi-regex": "^5.0.1" 3825 | } 3826 | }, 3827 | "strip-json-comments": { 3828 | "version": "3.1.1", 3829 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3830 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3831 | "dev": true 3832 | }, 3833 | "supports-color": { 3834 | "version": "5.5.0", 3835 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3836 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3837 | "dev": true, 3838 | "requires": { 3839 | "has-flag": "^3.0.0" 3840 | } 3841 | }, 3842 | "table": { 3843 | "version": "5.4.6", 3844 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 3845 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 3846 | "dev": true, 3847 | "requires": { 3848 | "ajv": "^6.10.2", 3849 | "lodash": "^4.17.14", 3850 | "slice-ansi": "^2.1.0", 3851 | "string-width": "^3.0.0" 3852 | } 3853 | }, 3854 | "tapable": { 3855 | "version": "1.1.3", 3856 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", 3857 | "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", 3858 | "dev": true 3859 | }, 3860 | "text-table": { 3861 | "version": "0.2.0", 3862 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3863 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 3864 | "dev": true 3865 | }, 3866 | "to-regex-range": { 3867 | "version": "5.0.1", 3868 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3869 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3870 | "dev": true, 3871 | "requires": { 3872 | "is-number": "^7.0.0" 3873 | } 3874 | }, 3875 | "ts-loader": { 3876 | "version": "8.0.3", 3877 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.3.tgz", 3878 | "integrity": "sha512-wsqfnVdB7xQiqhqbz2ZPLGHLPZbHVV5Qn/MNFZkCFxRU1miDyxKORucDGxKtsQJ63Rfza0udiUxWF5nHY6bpdQ==", 3879 | "dev": true, 3880 | "requires": { 3881 | "chalk": "^2.3.0", 3882 | "enhanced-resolve": "^4.0.0", 3883 | "loader-utils": "^1.0.2", 3884 | "micromatch": "^4.0.0", 3885 | "semver": "^6.0.0" 3886 | }, 3887 | "dependencies": { 3888 | "chalk": { 3889 | "version": "2.4.2", 3890 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 3891 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 3892 | "dev": true, 3893 | "requires": { 3894 | "ansi-styles": "^3.2.1", 3895 | "escape-string-regexp": "^1.0.5", 3896 | "supports-color": "^5.3.0" 3897 | } 3898 | }, 3899 | "micromatch": { 3900 | "version": "4.0.2", 3901 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", 3902 | "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", 3903 | "dev": true, 3904 | "requires": { 3905 | "braces": "^3.0.1", 3906 | "picomatch": "^2.0.5" 3907 | } 3908 | }, 3909 | "semver": { 3910 | "version": "6.3.1", 3911 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 3912 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 3913 | "dev": true 3914 | } 3915 | } 3916 | }, 3917 | "tslib": { 3918 | "version": "1.13.0", 3919 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", 3920 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", 3921 | "dev": true 3922 | }, 3923 | "tsutils": { 3924 | "version": "3.17.1", 3925 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", 3926 | "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", 3927 | "dev": true, 3928 | "requires": { 3929 | "tslib": "^1.8.1" 3930 | } 3931 | }, 3932 | "type-check": { 3933 | "version": "0.4.0", 3934 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3935 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3936 | "dev": true, 3937 | "requires": { 3938 | "prelude-ls": "^1.2.1" 3939 | } 3940 | }, 3941 | "type-fest": { 3942 | "version": "0.8.1", 3943 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 3944 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 3945 | "dev": true 3946 | }, 3947 | "typescript": { 3948 | "version": "4.0.2", 3949 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", 3950 | "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", 3951 | "dev": true 3952 | }, 3953 | "uri-js": { 3954 | "version": "4.4.0", 3955 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", 3956 | "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", 3957 | "dev": true, 3958 | "requires": { 3959 | "punycode": "^2.1.0" 3960 | } 3961 | }, 3962 | "util-deprecate": { 3963 | "version": "1.0.2", 3964 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3965 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3966 | "dev": true 3967 | }, 3968 | "v8-compile-cache": { 3969 | "version": "2.1.1", 3970 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", 3971 | "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", 3972 | "dev": true 3973 | }, 3974 | "which": { 3975 | "version": "2.0.2", 3976 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3977 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3978 | "dev": true, 3979 | "requires": { 3980 | "isexe": "^2.0.0" 3981 | } 3982 | }, 3983 | "word-wrap": { 3984 | "version": "1.2.5", 3985 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 3986 | "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 3987 | "dev": true 3988 | }, 3989 | "workerpool": { 3990 | "version": "6.2.1", 3991 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", 3992 | "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", 3993 | "dev": true 3994 | }, 3995 | "wrappy": { 3996 | "version": "1.0.2", 3997 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3998 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3999 | "dev": true 4000 | }, 4001 | "write": { 4002 | "version": "1.0.3", 4003 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 4004 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 4005 | "dev": true, 4006 | "requires": { 4007 | "mkdirp": "^0.5.1" 4008 | } 4009 | }, 4010 | "yargs-unparser": { 4011 | "version": "2.0.0", 4012 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 4013 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 4014 | "dev": true, 4015 | "requires": { 4016 | "camelcase": "^6.0.0", 4017 | "decamelize": "^4.0.0", 4018 | "flat": "^5.0.2", 4019 | "is-plain-obj": "^2.1.0" 4020 | }, 4021 | "dependencies": { 4022 | "camelcase": { 4023 | "version": "6.3.0", 4024 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 4025 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 4026 | "dev": true 4027 | }, 4028 | "decamelize": { 4029 | "version": "4.0.0", 4030 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 4031 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 4032 | "dev": true 4033 | } 4034 | } 4035 | } 4036 | } 4037 | } 4038 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-tinygo", 3 | "displayName": "TinyGo", 4 | "version": "0.5.0", 5 | "publisher": "tinygo", 6 | "description": "TinyGo support for Visual Studio Code", 7 | "license": "BSD-3-Clause", 8 | "icon": "images/tinygo-logo.png", 9 | "categories": [ 10 | "Programming Languages" 11 | ], 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/tinygo-org/vscode-tinygo" 15 | }, 16 | "engines": { 17 | "vscode": "^1.75.0" 18 | }, 19 | "activationEvents": [ 20 | "onLanguage:go", 21 | "onWebviewPanel:vscode-tinygo.preview" 22 | ], 23 | "main": "./out/extension.js", 24 | "contributes": { 25 | "commands": [ 26 | { 27 | "command": "vscode-tinygo.selectTarget", 28 | "title": "TinyGo target" 29 | }, 30 | { 31 | "command": "vscode-tinygo.showPreviewToSide", 32 | "title": "TinyGo Preview", 33 | "icon": "$(open-preview)" 34 | } 35 | ], 36 | "menus": { 37 | "editor/title": [ 38 | { 39 | "when": "resourceLangId == go && tinygoHasPreview", 40 | "command": "vscode-tinygo.showPreviewToSide", 41 | "group": "navigation" 42 | } 43 | ] 44 | } 45 | }, 46 | "scripts": { 47 | "vscode:prepublish": "npm run compile && make webworker.bundle.js", 48 | "compile": "tsc -p ./", 49 | "watch": "tsc -watch -p ./", 50 | "pretest": "npm run compile && npm run lint", 51 | "lint": "eslint src --ext ts", 52 | "test": "vscode-test" 53 | }, 54 | "devDependencies": { 55 | "@types/glob": "^7.1.3", 56 | "@types/mocha": "^8.0.0", 57 | "@types/node": "^14.0.27", 58 | "@types/vscode": "^1.48.0", 59 | "@typescript-eslint/eslint-plugin": "^3.8.0", 60 | "@typescript-eslint/parser": "^3.8.0", 61 | "eslint": "^7.6.0", 62 | "glob": "^7.1.6", 63 | "mocha": "^10.3.0", 64 | "ts-loader": "^8.0.3", 65 | "typescript": "^4.0.2" 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /preview/webview.css: -------------------------------------------------------------------------------- 1 | html { 2 | height: 100%; 3 | } 4 | body { 5 | height: 100%; 6 | padding: 0; /* disable default padding */ 7 | display: flex; 8 | flex-direction: column; 9 | } 10 | 11 | .schematic { 12 | height: 100%; 13 | flex-grow: 1; 14 | } 15 | 16 | -------------------------------------------------------------------------------- /preview/webview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 | Terminal 30 | Properties 31 | Add 32 |
33 |
34 | 35 |
36 |
37 |
38 |
39 |
40 | Loading... 41 |
42 |
43 |
44 | 45 | 46 | -------------------------------------------------------------------------------- /preview/webview.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import { Simulator } from "./playground/simulator.js"; 4 | 5 | // Obtain a handle to the VS Code API. 6 | let vscode = acquireVsCodeApi(); 7 | 8 | let simulator = null; 9 | let state = null; 10 | 11 | document.addEventListener('DOMContentLoaded', () => { 12 | // Check whether we're actually restoring panel state instead of loading a 13 | // completely new preview panel. 14 | state = vscode.getState(); 15 | if (state) { 16 | // We've got a state from a previous run. 17 | // Restore it and signal we're ready. 18 | init(state); 19 | } 20 | }) 21 | 22 | onmessage = async function(e) { 23 | if (e.data.type === 'init') { 24 | // This is a fresh new webview, not one restored from an existing state. 25 | // It needs to be saved now so that closing and reopening VSCode will 26 | // work correctly. 27 | state = e.data.state; 28 | saveState(); 29 | init(e.data.state); 30 | } else if (e.data.type === 'compiling') { 31 | // Reinitialize the simulator (draw new parts etc). 32 | simulator.refresh(); 33 | } else if (e.data.type === 'run') { 34 | // We get a plain old array from VSCode because the buffer is serialized to 35 | // JSON. Before sending it along to the worker, convert it to a typed array. 36 | // There might be a more efficient way to do this (such as loading the 37 | // binary from within the worker), but this works. 38 | let buf = new Uint8Array(e.data.binary.data); 39 | // Start the program. 40 | simulator.run(buf); 41 | } else if (e.data.type === 'error') { 42 | simulator.showCompilerError(e.data.message); 43 | } else { 44 | console.log('unknown message:', e.data); 45 | } 46 | }; 47 | 48 | async function init(state) { 49 | // Get a blob URL for the web worker. 50 | // Apparently the only reasonable way to do this is by using a blob URL that 51 | // contains all JS files concatenated together. 52 | // https://code.visualstudio.com/api/extension-guides/webview#using-web-workers 53 | let result = await fetch('worker/webworker.bundle.js') 54 | if (!result.ok) { 55 | throw `could not load Web Worker blob URL: ${result.statusText}`; 56 | } 57 | let blob = await result.blob(); 58 | const blobUrl = URL.createObjectURL(blob); 59 | 60 | // Initialize the schematic. 61 | let root = document.querySelector('#schematic-root'); 62 | simulator = new Simulator({ 63 | root: root, 64 | schematicURL: blobUrl, 65 | saveState: saveState, 66 | }); 67 | await simulator.setState(state) 68 | vscode.postMessage({ 69 | type: 'ready', 70 | }); 71 | } 72 | 73 | function saveState() { 74 | vscode.setState(state); 75 | } 76 | -------------------------------------------------------------------------------- /src/compiler.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import * as cp from 'child_process'; 3 | import * as path from 'path'; 4 | import * as os from 'os'; 5 | import {promises as fs} from 'fs'; 6 | 7 | // Compiler wraps the tinygo command. 8 | export class Compiler { 9 | buildTags: string[]; 10 | context: vscode.ExtensionContext; 11 | importPath: string; 12 | process: cp.ChildProcess | undefined; 13 | 14 | constructor(context: vscode.ExtensionContext, importPath: string, buildTags: string[]) { 15 | this.context = context; 16 | this.importPath = importPath; 17 | this.buildTags = buildTags; 18 | } 19 | 20 | async compile() { 21 | // Compile to WebAssembly. 22 | const outputPath = path.join(os.tmpdir(), 'vscode-tinygo-build-' + (Math.random() * 1e12).toFixed() + '.wasm'); 23 | try { 24 | let promise = new Promise((resolve, reject) => { 25 | // Both -opt=1 and -no-debug improve compile time slightly. 26 | this.process = cp.execFile('tinygo', ['build', '-tags='+this.buildTags.join(','), '-opt=1', '-no-debug', '-o='+outputPath], 27 | { 28 | cwd: this.importPath, 29 | }, (error, stdout, stderr) => { 30 | if (error) { 31 | reject(stderr); 32 | } else { 33 | resolve(undefined); 34 | } 35 | }); 36 | }); 37 | await promise; 38 | 39 | // Read the resulting file. 40 | let binary = await fs.readFile(outputPath); 41 | return binary; 42 | } finally { 43 | // Make sure to remove the file when finished, even if it doesn't 44 | // exist anymore. 45 | try { 46 | fs.unlink(outputPath); 47 | } catch (e) { 48 | // ignore any error 49 | } 50 | } 51 | } 52 | 53 | // Stop the compilation process immediately. 54 | kill() { 55 | if (this.process) { 56 | this.process.kill(); 57 | this.process = undefined; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import * as cp from 'child_process'; 3 | import * as util from 'util'; 4 | import * as preview from './preview'; 5 | 6 | let statusbarItem: vscode.StatusBarItem; 7 | 8 | let workspaceState: vscode.Memento; 9 | 10 | export async function activate(context: vscode.ExtensionContext) { 11 | let targets: string[] | null; 12 | 13 | workspaceState = context.workspaceState; 14 | 15 | // Create the TinyGo status bar icon, indicating which target is currently 16 | // active. The priority 49 makes sure it's just to the right of the Go 17 | // extension. 18 | statusbarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 49); 19 | statusbarItem.command = 'vscode-tinygo.selectTarget'; 20 | updateStatusBar(); 21 | 22 | // Add 'preview' button to appropriate source files. 23 | preview.updateStatus(context); 24 | context.subscriptions.push(vscode.commands.registerCommand('vscode-tinygo.showPreviewToSide', async (uri: vscode.Uri) => { 25 | preview.createNewPane(context, uri); 26 | })); 27 | 28 | // Make sure these 'preview' panels are restored when VS Code is closed and 29 | // then opened. 30 | vscode.window.registerWebviewPanelSerializer('vscode-tinygo.preview', new preview.PreviewSerializer(context)); 31 | 32 | // Register the command, _after_ the list of targets has been read. This 33 | // makes sure the user will never see an empty list. 34 | let disposable = vscode.commands.registerCommand('vscode-tinygo.selectTarget', async () => { 35 | // Load targets (if not already loaded). 36 | if (!targets) { 37 | targets = await readTargetList(context); 38 | } 39 | if (!targets) { 40 | // Failed to load the list of targets. 41 | // An error message has already been shown by readTargetList. 42 | return; 43 | } 44 | 45 | // Pick a target from the list. 46 | const target = await vscode.window.showQuickPick(targets, { 47 | placeHolder: 'pick a target...', 48 | }); 49 | if (!target) return; 50 | 51 | // Obtain information about this target (GOOS, GOARCH, GOROOT, build tags). 52 | let goos = ''; 53 | let goarch = ''; 54 | let goroot = ''; 55 | let buildTags = ''; 56 | if (target != '-') { 57 | try { 58 | const execFile = util.promisify(cp.execFile); 59 | const {stdout, stderr} = await execFile('tinygo', ['info', target]); 60 | stdout.trimRight().split('\n').forEach(line => { 61 | let colonPos = line.indexOf(':'); 62 | if (colonPos < 0) return; 63 | let key = line.substr(0, colonPos).trim(); 64 | let value = line.substr(colonPos+1).trim(); 65 | if (key == 'cached GOROOT') { 66 | goroot = value; 67 | } else if (key == 'build tags') { 68 | buildTags = value; 69 | } else if (key == 'GOOS') { 70 | goos = value; 71 | } else if (key == 'GOARCH') { 72 | goarch = value; 73 | } 74 | }) 75 | } catch(err) { 76 | vscode.window.showErrorMessage(`Could not run 'tinygo info ${target}':\n` + err); 77 | return; 78 | } 79 | 80 | // Check whether all properties have been found. 81 | if (!buildTags) { 82 | vscode.window.showErrorMessage(`Could not find build tags for ${target}.`); 83 | return; 84 | } 85 | if (!goroot) { 86 | // The 'cached GOROOT' property was added in TinyGo 0.15. 87 | vscode.window.showErrorMessage(`Could not find GOROOT variable for ${target}, perhaps you have an older TinyGo version?`); 88 | return; 89 | } 90 | } 91 | 92 | // Update the configuration in the current workspace. 93 | // This will automatically reload gopls. 94 | const config = vscode.workspace.getConfiguration('go', null); 95 | let envVars = config.get>('toolsEnvVars', {}); 96 | envVars.GOOS = goos ? goos: undefined; 97 | envVars.GOARCH = goarch ? goarch: undefined; 98 | envVars.GOROOT = goroot ? goroot: undefined; 99 | envVars.GOFLAGS = buildTags ? "-tags="+(buildTags.split(' ').join(',')) : undefined; 100 | config.update('toolsEnvVars', envVars, vscode.ConfigurationTarget.Workspace); 101 | 102 | // Update status bar. 103 | context.workspaceState.update('tinygo-target', target); 104 | updateStatusBar(); 105 | preview.updateStatus(context); 106 | 107 | // Move the just picked target to the top of the list. 108 | moveElementToFront(targets, target); 109 | 110 | // Save the history of recently used targets. 111 | let history = context.globalState.get('history') || []; 112 | moveElementToFront(history, target); 113 | context.globalState.update('history', history); 114 | }); 115 | 116 | context.subscriptions.push(disposable); 117 | } 118 | 119 | export function deactivate() { 120 | statusbarItem.dispose(); 121 | } 122 | 123 | // updateStatusBar updates the TinyGo sign in the status bar with the currently 124 | // selected target. 125 | function updateStatusBar() { 126 | let target = workspaceState.get('tinygo-target', '-'); 127 | if (target != '-') { 128 | statusbarItem.text = 'TinyGo: ' + target; 129 | } else { 130 | statusbarItem.text = 'TinyGo'; 131 | } 132 | statusbarItem.show(); 133 | } 134 | 135 | // Read the list of targets from a `tinygo targets` command, ordered by recently 136 | // used. It will show an error message and return null when the command fails. 137 | async function readTargetList(context: vscode.ExtensionContext): Promise { 138 | const execFile = util.promisify(cp.execFile); 139 | 140 | // Read the list of targets from TinyGo. 141 | try { 142 | const {stdout, stderr} = await execFile('tinygo', ['targets']); 143 | var targets = stdout.trimRight().split('\n'); 144 | } catch(err) { 145 | vscode.window.showErrorMessage('Could not list TinyGo targets:\n' + err); 146 | return null; 147 | } 148 | 149 | // Special target to revert to Go defaults. 150 | targets.unshift('-'); 151 | 152 | // Sort targets by most recently used. 153 | let history = context.globalState.get('history') || []; 154 | for (let i=history.length-1; i >= 0; i--) { 155 | if (targets.indexOf(history[i]) < 0) 156 | continue; 157 | moveElementToFront(targets, history[i]); 158 | } 159 | 160 | return targets; 161 | } 162 | 163 | // Look for the first occurence of the value in values and move it to the front 164 | // of the array. If it doesn't exist, add it as a new value to the front of the 165 | // array. 166 | function moveElementToFront(values: string[], value: string) { 167 | let index = values.indexOf(value); 168 | if (index > -1) { 169 | // Remove the old value. 170 | values.splice(index, 1); 171 | } 172 | // Add new value to the front. 173 | values.unshift(value); 174 | } 175 | -------------------------------------------------------------------------------- /src/preview.ts: -------------------------------------------------------------------------------- 1 | import * as vscode from 'vscode'; 2 | import * as path from 'path'; 3 | import {promises as fs} from 'fs'; 4 | import {Compiler} from './compiler'; 5 | 6 | // List of targets that have an accompanying board usable for preview. 7 | let boards = [ 8 | 'arduino', 9 | 'arduino-nano33', 10 | 'circuitplay-bluefruit', 11 | 'circuitplay-express', 12 | 'gopher-badge', 13 | 'hifive1b', 14 | 'microbit', 15 | 'pinetime', 16 | 'reelboard', 17 | ]; 18 | 19 | function hasPreview(target: string): boolean { 20 | if (boards.includes(target)) { 21 | return true; 22 | } 23 | // TODO: search through tags 24 | return false; 25 | } 26 | 27 | // updateStatus updates whether the preview button should be shown. It must be 28 | // called every time the tinygo target has changed. 29 | export function updateStatus(context: vscode.ExtensionContext) { 30 | let target = context.workspaceState.get('tinygo-target', '-'); 31 | vscode.commands.executeCommand('setContext', 'tinygoHasPreview', hasPreview(target)); 32 | } 33 | 34 | // createNewPanel creates a new preview webview in a panel. 35 | export async function createNewPane(context: vscode.ExtensionContext, uri: vscode.Uri) { 36 | // Determine the full (absolute) path of the Go package of this file. 37 | if (uri.scheme !== 'file') { 38 | vscode.window.showErrorMessage('Cannot preview non-local packages.'); 39 | return; 40 | } 41 | let packageFullPath = path.dirname(uri.fsPath); 42 | 43 | const panel = vscode.window.createWebviewPanel( 44 | 'vscode-tinygo.preview', 45 | 'TinyGo Preview', 46 | vscode.ViewColumn.Beside, 47 | { 48 | enableScripts: true, 49 | localResourceRoots: [ 50 | // Only allow access to the 'preview' subdirectory. 51 | vscode.Uri.file(path.join(context.extensionPath, 'preview')), 52 | ], 53 | retainContextWhenHidden: true, // TODO: try to avoid this, somehow 54 | }, 55 | ); 56 | 57 | // Construct the initial state for the webview. 58 | let target = context.workspaceState.get('tinygo-target', '-'); 59 | panel.webview.postMessage({ 60 | type: 'init', 61 | state: { 62 | parts: { 63 | main: { 64 | location: 'parts/'+target+'.json', 65 | x: 0, 66 | y: 0, 67 | }, 68 | }, 69 | wires: [], 70 | target: target, 71 | packageFullPath: packageFullPath, 72 | } 73 | }); 74 | 75 | await createPanel(context, panel, target, packageFullPath); 76 | } 77 | 78 | // Object used to restore previews when VS Code is restarted. 79 | export class PreviewSerializer implements vscode.WebviewPanelSerializer { 80 | context: vscode.ExtensionContext; 81 | constructor(context: vscode.ExtensionContext) { 82 | this.context = context; 83 | } 84 | async deserializeWebviewPanel(panel: vscode.WebviewPanel, state: any) { 85 | if (!state) { 86 | // Should not happen, it probably indicates a bug somewhere. 87 | // It _might_ happen when closing VSCode before the webview is fully 88 | // loaded. 89 | console.warn('no saved state for the webview?', state); 90 | panel.dispose(); 91 | return; 92 | } 93 | await createPanel(this.context, panel, state.target, state.packageFullPath); 94 | } 95 | } 96 | 97 | // createPanel constructs an already created panel and maintains its lifecycle. 98 | // It can be called when creating a new panel or when restoring an existing 99 | // panel. 100 | async function createPanel(context: vscode.ExtensionContext, panel: vscode.WebviewPanel, target: string, packageFullPath: string) { 101 | // Create a new webview for the preview. 102 | let panelDisposed = false; 103 | 104 | // Load the HTML into the webview. 105 | const basePath = vscode.Uri.file(path.join(context.extensionPath, 'preview/playground/')); 106 | const baseUrl = panel.webview.asWebviewUri(basePath); 107 | let html = await fs.readFile(path.join(context.extensionPath, 'preview', 'webview.html'), 'utf8'); 108 | html = html.replace('{PLAYGROUND_PATH}', baseUrl.toString()); 109 | // Note: we require "style-src: 'unsafe-inline'" for modifying the CSS of 110 | // the SVG files. This isn't much of a security concern because the CSP 111 | // below disallows loading from an external source. 112 | // Also, the worker shouldn't be sending invalid styles anyway (if the 113 | // worker is hijacked, security is breached anyway). 114 | // More information: https://stackoverflow.com/questions/30653698/#31759553 115 | html = html.replace('{CSP}', `default-src ${panel.webview.cspSource}; script-src ${panel.webview.cspSource} blob: 'unsafe-eval'; style-src ${panel.webview.cspSource} 'unsafe-inline'; connect-src ${panel.webview.cspSource}`); 116 | panel.webview.html = html; 117 | 118 | // Wrapper postMessage that ignores messages after the panel is disposed. 119 | // Due to race conditions, it is possible that some messages arrive after 120 | // the compiler or worker have been stopped. 121 | let panelPostMessage = function(message: any) { 122 | if (!panelDisposed) { 123 | panel.webview.postMessage(message); 124 | } 125 | }; 126 | 127 | // Handle messages coming from the webview. 128 | panel.webview.onDidReceiveMessage(message => { 129 | if (message.type === 'ready') { 130 | // Start compiling the binary that will be displayed in the webview. 131 | runCompiler(); 132 | } else { 133 | console.warn('unknown message from panel:', message); 134 | } 135 | }); 136 | 137 | // Make sure we clean up resources when the panel is disposed (closed). 138 | panel.onDidDispose( 139 | () => { 140 | if (compiler) { 141 | compiler.kill(); 142 | compiler = undefined; 143 | } 144 | watcher.dispose(); 145 | panelDisposed = true; 146 | }, 147 | null, 148 | context.subscriptions, 149 | ); 150 | 151 | // Recompile every time a Go file changes. 152 | // This even includes changes made by external programs! 153 | let watcher = vscode.workspace.createFileSystemWatcher('**/*.go'); 154 | watcher.onDidChange( 155 | () => { 156 | if (compiler) { 157 | compiler.kill(); 158 | compiler = undefined; 159 | } 160 | runCompiler(); 161 | }, 162 | null, 163 | context.subscriptions, 164 | ); 165 | 166 | let compiler: Compiler | undefined; 167 | let runCompiler = async function() { 168 | // Start from a blank slate. 169 | if (compiler) { 170 | compiler.kill(); 171 | compiler = undefined; 172 | } 173 | 174 | // Compile binary. 175 | panel.webview.postMessage({ 176 | type: 'compiling', 177 | }); 178 | compiler = new Compiler(context, packageFullPath, [target.replace('-', '_')]); 179 | let binary; 180 | try { 181 | binary = await compiler.compile(); 182 | } catch (e: any) { 183 | panel.webview.postMessage({ 184 | type: 'error', 185 | message: e, 186 | }); 187 | } 188 | if (!binary) { 189 | // Compilation was killed or there was an error. 190 | return; 191 | } 192 | 193 | // Send the file to the worker for execution. 194 | panelPostMessage({ 195 | type: 'run', 196 | binary: binary, 197 | }); 198 | }; 199 | } 200 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------