├── .eslintrc.json ├── .github └── workflows │ └── stale.yml ├── .gitignore ├── .prettierrc.yaml ├── .vscodeignore ├── LICENSE.txt ├── README.md ├── images └── logo.png ├── package-lock.json ├── package.json ├── screenshot.png └── src ├── extension.js ├── messages.js └── statusbar.js /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "node": true, 4 | "commonjs": true, 5 | "es6": true 6 | }, 7 | "parserOptions": { 8 | "ecmaVersion": 2018, 9 | "ecmaFeatures": { 10 | "jsx": true, 11 | "experimentalObjectRestSpread": true 12 | } 13 | }, 14 | "extends": ["eslint:recommended", "prettier"], 15 | "rules": { 16 | "semi": ["error", "always"], 17 | "no-var": "error", 18 | "no-console": 0, 19 | "no-constant-condition": ["error", { "checkLoops": false }], 20 | "no-mixed-spaces-and-tabs": ["error", "smart-tabs"], 21 | "no-unused-vars": ["off"] 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: 'Close stale issues and PRs' 2 | on: 3 | schedule: 4 | - cron: '0 0 * * *' 5 | 6 | jobs: 7 | stale: 8 | runs-on: ubuntu-latest 9 | if: github.repository == 'be5invis/vscode-custom-css' 10 | steps: 11 | - uses: actions/stale@v3 12 | with: 13 | stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 15 days.' 14 | days-before-stale: 60 15 | days-before-close: 15 16 | exempt-milestones: 'backlog,research' 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | test 3 | .vscode 4 | .vsixmanifest 5 | .staging-custom-css 6 | -------------------------------------------------------------------------------- /.prettierrc.yaml: -------------------------------------------------------------------------------- 1 | # .prettierrc 2 | printWidth: 100 3 | useTabs: true 4 | tabWidth: 4 5 | trailingComma: none 6 | arrowParens: avoid -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | .github/ 3 | .prettierrc.yaml 4 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Roberto Huertas 4 | Copyright (c) 2016 Belleve Invis 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Custom CSS and JS 2 | 3 | ### **SPECIAL NOTE: If Visual Studio Code complains about that it is corrupted, simply click “Don't show again” or install [Fix VSCode Checksums Next](https://marketplace.visualstudio.com/items?itemName=RimuruChan.vscode-fix-checksums-next).** 4 | ### **NOTE: Every time after Visual Studio Code is updated, please re-enable Custom CSS.** 5 | ### **NOTE: Every time you change the configuration, please re-enable Custom CSS.** 6 | ### **Starting from extension version 6.0, to be compatible with VSCode 1.58, the CSS/JS files being applied will be inlined into VSCode's workbench.** 7 | 8 | Custom CSS to your Visual Studio Code. Based on [robertohuertasm](https://github.com/robertohuertasm)’s [vscode-icons](https://github.com/robertohuertasm/vscode-icons). 9 | 10 | ![screenshot](https://raw.githubusercontent.com/be5invis/vscode-custom-css/master/screenshot.png) 11 | 12 | ## Getting Started 13 | 14 | 1. Install this extension. 15 | 16 | 2. Add to `settings.json`: 17 | 18 | ```json 19 | "vscode_custom_css.imports": [""] 20 | ``` 21 | 22 | **VERY IMPORTANT**: Items in `vscode_custom_css.imports` must be **URL**s. Plain file paths are **NOT URLs**. 23 | 24 | - **Windows File URL Example**: `file:///C:/Users/MyUserName/Documents/custom.css` 25 | - The `C:/` part is **REQUIRED.** 26 | 27 | - **MacOS and Linux File URL Example**: `file:///Users/MyUserName/Documents/custom.css` 28 | - [See here](https://en.wikipedia.org/wiki/File_URI_scheme) for more details. 29 | 30 | 3. Restart Visual Studio Code with proper permission to modify itself: 31 | 32 | 1. **Windows**: Restart with Administrator Permission. 33 | 34 | 2. **MacOS and Linux**: See instructions below. 35 | 36 | 4. Activate command "Reload Custom CSS and JS". 37 | 38 | 5. Restart. 39 | 40 | 41 | ## Extension commands 42 | 43 | As you know to access the command palette and introduce commands you can use ***F1*** (all OSes), ***Ctrl+Shift+P*** (Windows & Linux) or ***Cmd+Shift+P*** (OS X). 44 | 45 | - ***Enable Custom CSS and JS***: It enables custom CSS and JS URLs listed in “`vscode_custom_css.imports`”, an array containing URLs of your custom CSS and JS files, in your user settings. 46 | - ***Disable Custom CSS and JS***: It will disable custom CSS. 47 | - ***Reload Custom CSS and JS***: Disable and then re-enable it. 48 | 49 | ## Windows users 50 | 51 | **In Windows, make sure you run your Visual Studio Code in Administrator mode before enabling or disabling your custom style!** 52 | 53 | ## Mac and Linux users 54 | **The extension would NOT work if Visual Studio Code cannot modify itself.** The cases include: 55 | 56 | - Code files being read-only, like on a read-only file system or, 57 | - Code is not started with the permissions to modify itself. 58 | 59 | **You need to claim ownership on Visual Studio Code's installation directory, by running this command**: 60 | 61 | ```sh 62 | sudo chown -R $(whoami) "$(which code)" 63 | sudo chown -R $(whoami) /usr/share/code 64 | ``` 65 | 66 | The placeholder `` means the path to VSCode installation. It is typically: 67 | 68 | - `/Applications/Visual Studio Code.app/Contents/MacOS/Electron`, on MacOS; 69 | - `/Applications/Visual Studio Code - Insiders.app/Contents/MacOS/Electron`, on MacOS when using Insiders branch; 70 | - `/usr/share/code`, on most Linux; 71 | - `/usr/lib/code/` or `/opt/visual-studio-code` on Arch Linux. 72 | 73 | Mac and Linux package managers may have customized installation path. Please double check your path is correct. 74 | 75 | ## Variables 76 | 77 | File URIs support VSCode variables like: `${userHome}`. It just replaces supported variables with their values before parsing into a file path. Supported variables are: 78 | 79 | - `${cwd}` 80 | - `${userHome}` 81 | - `${execPath}` 82 | - `${pathSeparator}`, `${/}` 83 | 84 | It also supports env variables like `${env:ENV_VAR_NAME}` and you can specify a fallback value like `${env:ENV_VAR:defaultvalue}` 85 | 86 | 87 | ### Example 88 | 89 | ```json 90 | "vscode_custom_css.imports": ["file://${userHome}/.config/vscode-styles.css"] 91 | ``` 92 | 93 | # Disclaimer 94 | 95 | This extension modifies some Visual Studio Code files so use it at your own risk. 96 | Currently, icons are not supported by the extension functionality that Visual Studio Code provides so this extension solves this issue by injecting code into: 97 | 98 | - `electron-browser/index.html`. 99 | 100 | The extension will keep a copy of the original file in case something goes wrong. That's what the disable command will do for you. 101 | 102 | As this extension modifies Visual Studio Code files, it will get disabled with every Visual Studio Code update. You will have to enable icons again via the command palette. 103 | 104 | Take into account that this extension is still in beta, so you may find some bugs while playing with it. Please, report them to [the issues section of the Github's repo](https://github.com/be5invis/vscode-custom-css/issues). 105 | 106 | **Please, leave a review if you can, so the Visual Studio Code Team can know that this is a very demanded feature and, maybe, they can then provide a proper way to extend the IDE regarding icons and customizations soon enough. ;D** 107 | 108 | More file extensions will be supported shortly! 109 | -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/be5invis/vscode-custom-css/80188c894691ce91950b1dab0e2a357c4b2d9e2c/images/logo.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-custom-css", 3 | "version": "7.4.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "vscode-custom-css", 9 | "version": "7.4.1", 10 | "dependencies": { 11 | "file-url": "^3.0.0", 12 | "node-fetch": "^2.0.0", 13 | "uuid": "^8.3.2" 14 | }, 15 | "devDependencies": { 16 | "eslint": "^8.21.0", 17 | "eslint-config-prettier": "^8.5.0" 18 | }, 19 | "engines": { 20 | "vscode": "^1.93.0" 21 | } 22 | }, 23 | "node_modules/@eslint/eslintrc": { 24 | "version": "1.3.0", 25 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", 26 | "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", 27 | "dev": true, 28 | "dependencies": { 29 | "ajv": "^6.12.4", 30 | "debug": "^4.3.2", 31 | "espree": "^9.3.2", 32 | "globals": "^13.15.0", 33 | "ignore": "^5.2.0", 34 | "import-fresh": "^3.2.1", 35 | "js-yaml": "^4.1.0", 36 | "minimatch": "^3.1.2", 37 | "strip-json-comments": "^3.1.1" 38 | }, 39 | "engines": { 40 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 41 | } 42 | }, 43 | "node_modules/@humanwhocodes/config-array": { 44 | "version": "0.10.4", 45 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", 46 | "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", 47 | "dev": true, 48 | "dependencies": { 49 | "@humanwhocodes/object-schema": "^1.2.1", 50 | "debug": "^4.1.1", 51 | "minimatch": "^3.0.4" 52 | }, 53 | "engines": { 54 | "node": ">=10.10.0" 55 | } 56 | }, 57 | "node_modules/@humanwhocodes/gitignore-to-minimatch": { 58 | "version": "1.0.2", 59 | "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", 60 | "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", 61 | "dev": true, 62 | "funding": { 63 | "type": "github", 64 | "url": "https://github.com/sponsors/nzakas" 65 | } 66 | }, 67 | "node_modules/@humanwhocodes/object-schema": { 68 | "version": "1.2.1", 69 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 70 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 71 | "dev": true 72 | }, 73 | "node_modules/@nodelib/fs.scandir": { 74 | "version": "2.1.5", 75 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 76 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 77 | "dev": true, 78 | "dependencies": { 79 | "@nodelib/fs.stat": "2.0.5", 80 | "run-parallel": "^1.1.9" 81 | }, 82 | "engines": { 83 | "node": ">= 8" 84 | } 85 | }, 86 | "node_modules/@nodelib/fs.stat": { 87 | "version": "2.0.5", 88 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 89 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 90 | "dev": true, 91 | "engines": { 92 | "node": ">= 8" 93 | } 94 | }, 95 | "node_modules/@nodelib/fs.walk": { 96 | "version": "1.2.8", 97 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 98 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 99 | "dev": true, 100 | "dependencies": { 101 | "@nodelib/fs.scandir": "2.1.5", 102 | "fastq": "^1.6.0" 103 | }, 104 | "engines": { 105 | "node": ">= 8" 106 | } 107 | }, 108 | "node_modules/acorn": { 109 | "version": "8.8.0", 110 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", 111 | "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", 112 | "dev": true, 113 | "bin": { 114 | "acorn": "bin/acorn" 115 | }, 116 | "engines": { 117 | "node": ">=0.4.0" 118 | } 119 | }, 120 | "node_modules/acorn-jsx": { 121 | "version": "5.3.2", 122 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 123 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 124 | "dev": true, 125 | "peerDependencies": { 126 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 127 | } 128 | }, 129 | "node_modules/ajv": { 130 | "version": "6.12.6", 131 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 132 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 133 | "dev": true, 134 | "dependencies": { 135 | "fast-deep-equal": "^3.1.1", 136 | "fast-json-stable-stringify": "^2.0.0", 137 | "json-schema-traverse": "^0.4.1", 138 | "uri-js": "^4.2.2" 139 | }, 140 | "funding": { 141 | "type": "github", 142 | "url": "https://github.com/sponsors/epoberezkin" 143 | } 144 | }, 145 | "node_modules/ansi-regex": { 146 | "version": "5.0.1", 147 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 148 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 149 | "dev": true, 150 | "engines": { 151 | "node": ">=8" 152 | } 153 | }, 154 | "node_modules/ansi-styles": { 155 | "version": "4.3.0", 156 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 157 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 158 | "dev": true, 159 | "dependencies": { 160 | "color-convert": "^2.0.1" 161 | }, 162 | "engines": { 163 | "node": ">=8" 164 | }, 165 | "funding": { 166 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 167 | } 168 | }, 169 | "node_modules/argparse": { 170 | "version": "2.0.1", 171 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 172 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 173 | "dev": true 174 | }, 175 | "node_modules/array-union": { 176 | "version": "2.1.0", 177 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 178 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 179 | "dev": true, 180 | "engines": { 181 | "node": ">=8" 182 | } 183 | }, 184 | "node_modules/balanced-match": { 185 | "version": "1.0.2", 186 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 187 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 188 | "dev": true 189 | }, 190 | "node_modules/brace-expansion": { 191 | "version": "1.1.11", 192 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 193 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 194 | "dev": true, 195 | "dependencies": { 196 | "balanced-match": "^1.0.0", 197 | "concat-map": "0.0.1" 198 | } 199 | }, 200 | "node_modules/braces": { 201 | "version": "3.0.3", 202 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 203 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 204 | "dev": true, 205 | "dependencies": { 206 | "fill-range": "^7.1.1" 207 | }, 208 | "engines": { 209 | "node": ">=8" 210 | } 211 | }, 212 | "node_modules/callsites": { 213 | "version": "3.1.0", 214 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 215 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 216 | "dev": true, 217 | "engines": { 218 | "node": ">=6" 219 | } 220 | }, 221 | "node_modules/chalk": { 222 | "version": "4.1.2", 223 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 224 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 225 | "dev": true, 226 | "dependencies": { 227 | "ansi-styles": "^4.1.0", 228 | "supports-color": "^7.1.0" 229 | }, 230 | "engines": { 231 | "node": ">=10" 232 | }, 233 | "funding": { 234 | "url": "https://github.com/chalk/chalk?sponsor=1" 235 | } 236 | }, 237 | "node_modules/color-convert": { 238 | "version": "2.0.1", 239 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 240 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 241 | "dev": true, 242 | "dependencies": { 243 | "color-name": "~1.1.4" 244 | }, 245 | "engines": { 246 | "node": ">=7.0.0" 247 | } 248 | }, 249 | "node_modules/color-name": { 250 | "version": "1.1.4", 251 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 252 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 253 | "dev": true 254 | }, 255 | "node_modules/concat-map": { 256 | "version": "0.0.1", 257 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 258 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 259 | "dev": true 260 | }, 261 | "node_modules/cross-spawn": { 262 | "version": "7.0.6", 263 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 264 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 265 | "dev": true, 266 | "license": "MIT", 267 | "dependencies": { 268 | "path-key": "^3.1.0", 269 | "shebang-command": "^2.0.0", 270 | "which": "^2.0.1" 271 | }, 272 | "engines": { 273 | "node": ">= 8" 274 | } 275 | }, 276 | "node_modules/debug": { 277 | "version": "4.3.4", 278 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 279 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 280 | "dev": true, 281 | "dependencies": { 282 | "ms": "2.1.2" 283 | }, 284 | "engines": { 285 | "node": ">=6.0" 286 | }, 287 | "peerDependenciesMeta": { 288 | "supports-color": { 289 | "optional": true 290 | } 291 | } 292 | }, 293 | "node_modules/deep-is": { 294 | "version": "0.1.4", 295 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 296 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 297 | "dev": true 298 | }, 299 | "node_modules/dir-glob": { 300 | "version": "3.0.1", 301 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 302 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 303 | "dev": true, 304 | "dependencies": { 305 | "path-type": "^4.0.0" 306 | }, 307 | "engines": { 308 | "node": ">=8" 309 | } 310 | }, 311 | "node_modules/doctrine": { 312 | "version": "3.0.0", 313 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 314 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 315 | "dev": true, 316 | "dependencies": { 317 | "esutils": "^2.0.2" 318 | }, 319 | "engines": { 320 | "node": ">=6.0.0" 321 | } 322 | }, 323 | "node_modules/escape-string-regexp": { 324 | "version": "4.0.0", 325 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 326 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 327 | "dev": true, 328 | "engines": { 329 | "node": ">=10" 330 | }, 331 | "funding": { 332 | "url": "https://github.com/sponsors/sindresorhus" 333 | } 334 | }, 335 | "node_modules/eslint": { 336 | "version": "8.21.0", 337 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.21.0.tgz", 338 | "integrity": "sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==", 339 | "dev": true, 340 | "dependencies": { 341 | "@eslint/eslintrc": "^1.3.0", 342 | "@humanwhocodes/config-array": "^0.10.4", 343 | "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", 344 | "ajv": "^6.10.0", 345 | "chalk": "^4.0.0", 346 | "cross-spawn": "^7.0.2", 347 | "debug": "^4.3.2", 348 | "doctrine": "^3.0.0", 349 | "escape-string-regexp": "^4.0.0", 350 | "eslint-scope": "^7.1.1", 351 | "eslint-utils": "^3.0.0", 352 | "eslint-visitor-keys": "^3.3.0", 353 | "espree": "^9.3.3", 354 | "esquery": "^1.4.0", 355 | "esutils": "^2.0.2", 356 | "fast-deep-equal": "^3.1.3", 357 | "file-entry-cache": "^6.0.1", 358 | "find-up": "^5.0.0", 359 | "functional-red-black-tree": "^1.0.1", 360 | "glob-parent": "^6.0.1", 361 | "globals": "^13.15.0", 362 | "globby": "^11.1.0", 363 | "grapheme-splitter": "^1.0.4", 364 | "ignore": "^5.2.0", 365 | "import-fresh": "^3.0.0", 366 | "imurmurhash": "^0.1.4", 367 | "is-glob": "^4.0.0", 368 | "js-yaml": "^4.1.0", 369 | "json-stable-stringify-without-jsonify": "^1.0.1", 370 | "levn": "^0.4.1", 371 | "lodash.merge": "^4.6.2", 372 | "minimatch": "^3.1.2", 373 | "natural-compare": "^1.4.0", 374 | "optionator": "^0.9.1", 375 | "regexpp": "^3.2.0", 376 | "strip-ansi": "^6.0.1", 377 | "strip-json-comments": "^3.1.0", 378 | "text-table": "^0.2.0", 379 | "v8-compile-cache": "^2.0.3" 380 | }, 381 | "bin": { 382 | "eslint": "bin/eslint.js" 383 | }, 384 | "engines": { 385 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 386 | }, 387 | "funding": { 388 | "url": "https://opencollective.com/eslint" 389 | } 390 | }, 391 | "node_modules/eslint-config-prettier": { 392 | "version": "8.5.0", 393 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", 394 | "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", 395 | "dev": true, 396 | "bin": { 397 | "eslint-config-prettier": "bin/cli.js" 398 | }, 399 | "peerDependencies": { 400 | "eslint": ">=7.0.0" 401 | } 402 | }, 403 | "node_modules/eslint-scope": { 404 | "version": "7.1.1", 405 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 406 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 407 | "dev": true, 408 | "dependencies": { 409 | "esrecurse": "^4.3.0", 410 | "estraverse": "^5.2.0" 411 | }, 412 | "engines": { 413 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 414 | } 415 | }, 416 | "node_modules/eslint-utils": { 417 | "version": "3.0.0", 418 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 419 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 420 | "dev": true, 421 | "dependencies": { 422 | "eslint-visitor-keys": "^2.0.0" 423 | }, 424 | "engines": { 425 | "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" 426 | }, 427 | "funding": { 428 | "url": "https://github.com/sponsors/mysticatea" 429 | }, 430 | "peerDependencies": { 431 | "eslint": ">=5" 432 | } 433 | }, 434 | "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { 435 | "version": "2.1.0", 436 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 437 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 438 | "dev": true, 439 | "engines": { 440 | "node": ">=10" 441 | } 442 | }, 443 | "node_modules/eslint-visitor-keys": { 444 | "version": "3.3.0", 445 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 446 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 447 | "dev": true, 448 | "engines": { 449 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 450 | } 451 | }, 452 | "node_modules/espree": { 453 | "version": "9.3.3", 454 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", 455 | "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", 456 | "dev": true, 457 | "dependencies": { 458 | "acorn": "^8.8.0", 459 | "acorn-jsx": "^5.3.2", 460 | "eslint-visitor-keys": "^3.3.0" 461 | }, 462 | "engines": { 463 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 464 | }, 465 | "funding": { 466 | "url": "https://opencollective.com/eslint" 467 | } 468 | }, 469 | "node_modules/esquery": { 470 | "version": "1.4.0", 471 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 472 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 473 | "dev": true, 474 | "dependencies": { 475 | "estraverse": "^5.1.0" 476 | }, 477 | "engines": { 478 | "node": ">=0.10" 479 | } 480 | }, 481 | "node_modules/esrecurse": { 482 | "version": "4.3.0", 483 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 484 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 485 | "dev": true, 486 | "dependencies": { 487 | "estraverse": "^5.2.0" 488 | }, 489 | "engines": { 490 | "node": ">=4.0" 491 | } 492 | }, 493 | "node_modules/estraverse": { 494 | "version": "5.3.0", 495 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 496 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 497 | "dev": true, 498 | "engines": { 499 | "node": ">=4.0" 500 | } 501 | }, 502 | "node_modules/esutils": { 503 | "version": "2.0.3", 504 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 505 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 506 | "dev": true, 507 | "engines": { 508 | "node": ">=0.10.0" 509 | } 510 | }, 511 | "node_modules/fast-deep-equal": { 512 | "version": "3.1.3", 513 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 514 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 515 | "dev": true 516 | }, 517 | "node_modules/fast-glob": { 518 | "version": "3.2.11", 519 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 520 | "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 521 | "dev": true, 522 | "dependencies": { 523 | "@nodelib/fs.stat": "^2.0.2", 524 | "@nodelib/fs.walk": "^1.2.3", 525 | "glob-parent": "^5.1.2", 526 | "merge2": "^1.3.0", 527 | "micromatch": "^4.0.4" 528 | }, 529 | "engines": { 530 | "node": ">=8.6.0" 531 | } 532 | }, 533 | "node_modules/fast-glob/node_modules/glob-parent": { 534 | "version": "5.1.2", 535 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 536 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 537 | "dev": true, 538 | "dependencies": { 539 | "is-glob": "^4.0.1" 540 | }, 541 | "engines": { 542 | "node": ">= 6" 543 | } 544 | }, 545 | "node_modules/fast-json-stable-stringify": { 546 | "version": "2.1.0", 547 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 548 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 549 | "dev": true 550 | }, 551 | "node_modules/fast-levenshtein": { 552 | "version": "2.0.6", 553 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 554 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 555 | "dev": true 556 | }, 557 | "node_modules/fastq": { 558 | "version": "1.13.0", 559 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 560 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 561 | "dev": true, 562 | "dependencies": { 563 | "reusify": "^1.0.4" 564 | } 565 | }, 566 | "node_modules/file-entry-cache": { 567 | "version": "6.0.1", 568 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 569 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 570 | "dev": true, 571 | "dependencies": { 572 | "flat-cache": "^3.0.4" 573 | }, 574 | "engines": { 575 | "node": "^10.12.0 || >=12.0.0" 576 | } 577 | }, 578 | "node_modules/file-url": { 579 | "version": "3.0.0", 580 | "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", 581 | "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", 582 | "engines": { 583 | "node": ">=8" 584 | } 585 | }, 586 | "node_modules/fill-range": { 587 | "version": "7.1.1", 588 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 589 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 590 | "dev": true, 591 | "dependencies": { 592 | "to-regex-range": "^5.0.1" 593 | }, 594 | "engines": { 595 | "node": ">=8" 596 | } 597 | }, 598 | "node_modules/find-up": { 599 | "version": "5.0.0", 600 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 601 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 602 | "dev": true, 603 | "dependencies": { 604 | "locate-path": "^6.0.0", 605 | "path-exists": "^4.0.0" 606 | }, 607 | "engines": { 608 | "node": ">=10" 609 | }, 610 | "funding": { 611 | "url": "https://github.com/sponsors/sindresorhus" 612 | } 613 | }, 614 | "node_modules/flat-cache": { 615 | "version": "3.0.4", 616 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 617 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 618 | "dev": true, 619 | "dependencies": { 620 | "flatted": "^3.1.0", 621 | "rimraf": "^3.0.2" 622 | }, 623 | "engines": { 624 | "node": "^10.12.0 || >=12.0.0" 625 | } 626 | }, 627 | "node_modules/flatted": { 628 | "version": "3.2.6", 629 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", 630 | "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", 631 | "dev": true 632 | }, 633 | "node_modules/fs.realpath": { 634 | "version": "1.0.0", 635 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 636 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 637 | "dev": true 638 | }, 639 | "node_modules/functional-red-black-tree": { 640 | "version": "1.0.1", 641 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 642 | "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", 643 | "dev": true 644 | }, 645 | "node_modules/glob": { 646 | "version": "7.2.3", 647 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 648 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 649 | "dev": true, 650 | "dependencies": { 651 | "fs.realpath": "^1.0.0", 652 | "inflight": "^1.0.4", 653 | "inherits": "2", 654 | "minimatch": "^3.1.1", 655 | "once": "^1.3.0", 656 | "path-is-absolute": "^1.0.0" 657 | }, 658 | "engines": { 659 | "node": "*" 660 | }, 661 | "funding": { 662 | "url": "https://github.com/sponsors/isaacs" 663 | } 664 | }, 665 | "node_modules/glob-parent": { 666 | "version": "6.0.2", 667 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 668 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 669 | "dev": true, 670 | "dependencies": { 671 | "is-glob": "^4.0.3" 672 | }, 673 | "engines": { 674 | "node": ">=10.13.0" 675 | } 676 | }, 677 | "node_modules/globals": { 678 | "version": "13.17.0", 679 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", 680 | "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", 681 | "dev": true, 682 | "dependencies": { 683 | "type-fest": "^0.20.2" 684 | }, 685 | "engines": { 686 | "node": ">=8" 687 | }, 688 | "funding": { 689 | "url": "https://github.com/sponsors/sindresorhus" 690 | } 691 | }, 692 | "node_modules/globby": { 693 | "version": "11.1.0", 694 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 695 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 696 | "dev": true, 697 | "dependencies": { 698 | "array-union": "^2.1.0", 699 | "dir-glob": "^3.0.1", 700 | "fast-glob": "^3.2.9", 701 | "ignore": "^5.2.0", 702 | "merge2": "^1.4.1", 703 | "slash": "^3.0.0" 704 | }, 705 | "engines": { 706 | "node": ">=10" 707 | }, 708 | "funding": { 709 | "url": "https://github.com/sponsors/sindresorhus" 710 | } 711 | }, 712 | "node_modules/grapheme-splitter": { 713 | "version": "1.0.4", 714 | "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", 715 | "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", 716 | "dev": true 717 | }, 718 | "node_modules/has-flag": { 719 | "version": "4.0.0", 720 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 721 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 722 | "dev": true, 723 | "engines": { 724 | "node": ">=8" 725 | } 726 | }, 727 | "node_modules/ignore": { 728 | "version": "5.2.0", 729 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 730 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 731 | "dev": true, 732 | "engines": { 733 | "node": ">= 4" 734 | } 735 | }, 736 | "node_modules/import-fresh": { 737 | "version": "3.3.0", 738 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 739 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 740 | "dev": true, 741 | "dependencies": { 742 | "parent-module": "^1.0.0", 743 | "resolve-from": "^4.0.0" 744 | }, 745 | "engines": { 746 | "node": ">=6" 747 | }, 748 | "funding": { 749 | "url": "https://github.com/sponsors/sindresorhus" 750 | } 751 | }, 752 | "node_modules/imurmurhash": { 753 | "version": "0.1.4", 754 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 755 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 756 | "dev": true, 757 | "engines": { 758 | "node": ">=0.8.19" 759 | } 760 | }, 761 | "node_modules/inflight": { 762 | "version": "1.0.6", 763 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 764 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 765 | "dev": true, 766 | "dependencies": { 767 | "once": "^1.3.0", 768 | "wrappy": "1" 769 | } 770 | }, 771 | "node_modules/inherits": { 772 | "version": "2.0.4", 773 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 774 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 775 | "dev": true 776 | }, 777 | "node_modules/is-extglob": { 778 | "version": "2.1.1", 779 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 780 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 781 | "dev": true, 782 | "engines": { 783 | "node": ">=0.10.0" 784 | } 785 | }, 786 | "node_modules/is-glob": { 787 | "version": "4.0.3", 788 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 789 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 790 | "dev": true, 791 | "dependencies": { 792 | "is-extglob": "^2.1.1" 793 | }, 794 | "engines": { 795 | "node": ">=0.10.0" 796 | } 797 | }, 798 | "node_modules/is-number": { 799 | "version": "7.0.0", 800 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 801 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 802 | "dev": true, 803 | "engines": { 804 | "node": ">=0.12.0" 805 | } 806 | }, 807 | "node_modules/isexe": { 808 | "version": "2.0.0", 809 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 810 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 811 | "dev": true 812 | }, 813 | "node_modules/js-yaml": { 814 | "version": "4.1.0", 815 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 816 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 817 | "dev": true, 818 | "dependencies": { 819 | "argparse": "^2.0.1" 820 | }, 821 | "bin": { 822 | "js-yaml": "bin/js-yaml.js" 823 | } 824 | }, 825 | "node_modules/json-schema-traverse": { 826 | "version": "0.4.1", 827 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 828 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 829 | "dev": true 830 | }, 831 | "node_modules/json-stable-stringify-without-jsonify": { 832 | "version": "1.0.1", 833 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 834 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 835 | "dev": true 836 | }, 837 | "node_modules/levn": { 838 | "version": "0.4.1", 839 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 840 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 841 | "dev": true, 842 | "dependencies": { 843 | "prelude-ls": "^1.2.1", 844 | "type-check": "~0.4.0" 845 | }, 846 | "engines": { 847 | "node": ">= 0.8.0" 848 | } 849 | }, 850 | "node_modules/locate-path": { 851 | "version": "6.0.0", 852 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 853 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 854 | "dev": true, 855 | "dependencies": { 856 | "p-locate": "^5.0.0" 857 | }, 858 | "engines": { 859 | "node": ">=10" 860 | }, 861 | "funding": { 862 | "url": "https://github.com/sponsors/sindresorhus" 863 | } 864 | }, 865 | "node_modules/lodash.merge": { 866 | "version": "4.6.2", 867 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 868 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 869 | "dev": true 870 | }, 871 | "node_modules/merge2": { 872 | "version": "1.4.1", 873 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 874 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 875 | "dev": true, 876 | "engines": { 877 | "node": ">= 8" 878 | } 879 | }, 880 | "node_modules/micromatch": { 881 | "version": "4.0.8", 882 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 883 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 884 | "dev": true, 885 | "license": "MIT", 886 | "dependencies": { 887 | "braces": "^3.0.3", 888 | "picomatch": "^2.3.1" 889 | }, 890 | "engines": { 891 | "node": ">=8.6" 892 | } 893 | }, 894 | "node_modules/minimatch": { 895 | "version": "3.1.2", 896 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 897 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 898 | "dev": true, 899 | "dependencies": { 900 | "brace-expansion": "^1.1.7" 901 | }, 902 | "engines": { 903 | "node": "*" 904 | } 905 | }, 906 | "node_modules/ms": { 907 | "version": "2.1.2", 908 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 909 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 910 | "dev": true 911 | }, 912 | "node_modules/natural-compare": { 913 | "version": "1.4.0", 914 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 915 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 916 | "dev": true 917 | }, 918 | "node_modules/node-fetch": { 919 | "version": "2.6.7", 920 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 921 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 922 | "dependencies": { 923 | "whatwg-url": "^5.0.0" 924 | }, 925 | "engines": { 926 | "node": "4.x || >=6.0.0" 927 | }, 928 | "peerDependencies": { 929 | "encoding": "^0.1.0" 930 | }, 931 | "peerDependenciesMeta": { 932 | "encoding": { 933 | "optional": true 934 | } 935 | } 936 | }, 937 | "node_modules/once": { 938 | "version": "1.4.0", 939 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 940 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 941 | "dev": true, 942 | "dependencies": { 943 | "wrappy": "1" 944 | } 945 | }, 946 | "node_modules/optionator": { 947 | "version": "0.9.1", 948 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 949 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 950 | "dev": true, 951 | "dependencies": { 952 | "deep-is": "^0.1.3", 953 | "fast-levenshtein": "^2.0.6", 954 | "levn": "^0.4.1", 955 | "prelude-ls": "^1.2.1", 956 | "type-check": "^0.4.0", 957 | "word-wrap": "^1.2.3" 958 | }, 959 | "engines": { 960 | "node": ">= 0.8.0" 961 | } 962 | }, 963 | "node_modules/p-limit": { 964 | "version": "3.1.0", 965 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 966 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 967 | "dev": true, 968 | "dependencies": { 969 | "yocto-queue": "^0.1.0" 970 | }, 971 | "engines": { 972 | "node": ">=10" 973 | }, 974 | "funding": { 975 | "url": "https://github.com/sponsors/sindresorhus" 976 | } 977 | }, 978 | "node_modules/p-locate": { 979 | "version": "5.0.0", 980 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 981 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 982 | "dev": true, 983 | "dependencies": { 984 | "p-limit": "^3.0.2" 985 | }, 986 | "engines": { 987 | "node": ">=10" 988 | }, 989 | "funding": { 990 | "url": "https://github.com/sponsors/sindresorhus" 991 | } 992 | }, 993 | "node_modules/parent-module": { 994 | "version": "1.0.1", 995 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 996 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 997 | "dev": true, 998 | "dependencies": { 999 | "callsites": "^3.0.0" 1000 | }, 1001 | "engines": { 1002 | "node": ">=6" 1003 | } 1004 | }, 1005 | "node_modules/path-exists": { 1006 | "version": "4.0.0", 1007 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1008 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1009 | "dev": true, 1010 | "engines": { 1011 | "node": ">=8" 1012 | } 1013 | }, 1014 | "node_modules/path-is-absolute": { 1015 | "version": "1.0.1", 1016 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1017 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1018 | "dev": true, 1019 | "engines": { 1020 | "node": ">=0.10.0" 1021 | } 1022 | }, 1023 | "node_modules/path-key": { 1024 | "version": "3.1.1", 1025 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1026 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1027 | "dev": true, 1028 | "engines": { 1029 | "node": ">=8" 1030 | } 1031 | }, 1032 | "node_modules/path-type": { 1033 | "version": "4.0.0", 1034 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1035 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1036 | "dev": true, 1037 | "engines": { 1038 | "node": ">=8" 1039 | } 1040 | }, 1041 | "node_modules/picomatch": { 1042 | "version": "2.3.1", 1043 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1044 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1045 | "dev": true, 1046 | "engines": { 1047 | "node": ">=8.6" 1048 | }, 1049 | "funding": { 1050 | "url": "https://github.com/sponsors/jonschlinkert" 1051 | } 1052 | }, 1053 | "node_modules/prelude-ls": { 1054 | "version": "1.2.1", 1055 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1056 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1057 | "dev": true, 1058 | "engines": { 1059 | "node": ">= 0.8.0" 1060 | } 1061 | }, 1062 | "node_modules/punycode": { 1063 | "version": "2.1.1", 1064 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1065 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1066 | "dev": true, 1067 | "engines": { 1068 | "node": ">=6" 1069 | } 1070 | }, 1071 | "node_modules/queue-microtask": { 1072 | "version": "1.2.3", 1073 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1074 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1075 | "dev": true, 1076 | "funding": [ 1077 | { 1078 | "type": "github", 1079 | "url": "https://github.com/sponsors/feross" 1080 | }, 1081 | { 1082 | "type": "patreon", 1083 | "url": "https://www.patreon.com/feross" 1084 | }, 1085 | { 1086 | "type": "consulting", 1087 | "url": "https://feross.org/support" 1088 | } 1089 | ] 1090 | }, 1091 | "node_modules/regexpp": { 1092 | "version": "3.2.0", 1093 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 1094 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 1095 | "dev": true, 1096 | "engines": { 1097 | "node": ">=8" 1098 | }, 1099 | "funding": { 1100 | "url": "https://github.com/sponsors/mysticatea" 1101 | } 1102 | }, 1103 | "node_modules/resolve-from": { 1104 | "version": "4.0.0", 1105 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1106 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1107 | "dev": true, 1108 | "engines": { 1109 | "node": ">=4" 1110 | } 1111 | }, 1112 | "node_modules/reusify": { 1113 | "version": "1.0.4", 1114 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1115 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1116 | "dev": true, 1117 | "engines": { 1118 | "iojs": ">=1.0.0", 1119 | "node": ">=0.10.0" 1120 | } 1121 | }, 1122 | "node_modules/rimraf": { 1123 | "version": "3.0.2", 1124 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1125 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1126 | "dev": true, 1127 | "dependencies": { 1128 | "glob": "^7.1.3" 1129 | }, 1130 | "bin": { 1131 | "rimraf": "bin.js" 1132 | }, 1133 | "funding": { 1134 | "url": "https://github.com/sponsors/isaacs" 1135 | } 1136 | }, 1137 | "node_modules/run-parallel": { 1138 | "version": "1.2.0", 1139 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1140 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1141 | "dev": true, 1142 | "funding": [ 1143 | { 1144 | "type": "github", 1145 | "url": "https://github.com/sponsors/feross" 1146 | }, 1147 | { 1148 | "type": "patreon", 1149 | "url": "https://www.patreon.com/feross" 1150 | }, 1151 | { 1152 | "type": "consulting", 1153 | "url": "https://feross.org/support" 1154 | } 1155 | ], 1156 | "dependencies": { 1157 | "queue-microtask": "^1.2.2" 1158 | } 1159 | }, 1160 | "node_modules/shebang-command": { 1161 | "version": "2.0.0", 1162 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1163 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1164 | "dev": true, 1165 | "dependencies": { 1166 | "shebang-regex": "^3.0.0" 1167 | }, 1168 | "engines": { 1169 | "node": ">=8" 1170 | } 1171 | }, 1172 | "node_modules/shebang-regex": { 1173 | "version": "3.0.0", 1174 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1175 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1176 | "dev": true, 1177 | "engines": { 1178 | "node": ">=8" 1179 | } 1180 | }, 1181 | "node_modules/slash": { 1182 | "version": "3.0.0", 1183 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 1184 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 1185 | "dev": true, 1186 | "engines": { 1187 | "node": ">=8" 1188 | } 1189 | }, 1190 | "node_modules/strip-ansi": { 1191 | "version": "6.0.1", 1192 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1193 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1194 | "dev": true, 1195 | "dependencies": { 1196 | "ansi-regex": "^5.0.1" 1197 | }, 1198 | "engines": { 1199 | "node": ">=8" 1200 | } 1201 | }, 1202 | "node_modules/strip-json-comments": { 1203 | "version": "3.1.1", 1204 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1205 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1206 | "dev": true, 1207 | "engines": { 1208 | "node": ">=8" 1209 | }, 1210 | "funding": { 1211 | "url": "https://github.com/sponsors/sindresorhus" 1212 | } 1213 | }, 1214 | "node_modules/supports-color": { 1215 | "version": "7.2.0", 1216 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1217 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1218 | "dev": true, 1219 | "dependencies": { 1220 | "has-flag": "^4.0.0" 1221 | }, 1222 | "engines": { 1223 | "node": ">=8" 1224 | } 1225 | }, 1226 | "node_modules/text-table": { 1227 | "version": "0.2.0", 1228 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1229 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 1230 | "dev": true 1231 | }, 1232 | "node_modules/to-regex-range": { 1233 | "version": "5.0.1", 1234 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1235 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1236 | "dev": true, 1237 | "dependencies": { 1238 | "is-number": "^7.0.0" 1239 | }, 1240 | "engines": { 1241 | "node": ">=8.0" 1242 | } 1243 | }, 1244 | "node_modules/tr46": { 1245 | "version": "0.0.3", 1246 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1247 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1248 | }, 1249 | "node_modules/type-check": { 1250 | "version": "0.4.0", 1251 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1252 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1253 | "dev": true, 1254 | "dependencies": { 1255 | "prelude-ls": "^1.2.1" 1256 | }, 1257 | "engines": { 1258 | "node": ">= 0.8.0" 1259 | } 1260 | }, 1261 | "node_modules/type-fest": { 1262 | "version": "0.20.2", 1263 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1264 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1265 | "dev": true, 1266 | "engines": { 1267 | "node": ">=10" 1268 | }, 1269 | "funding": { 1270 | "url": "https://github.com/sponsors/sindresorhus" 1271 | } 1272 | }, 1273 | "node_modules/uri-js": { 1274 | "version": "4.4.1", 1275 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1276 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1277 | "dev": true, 1278 | "dependencies": { 1279 | "punycode": "^2.1.0" 1280 | } 1281 | }, 1282 | "node_modules/uuid": { 1283 | "version": "8.3.2", 1284 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 1285 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 1286 | "bin": { 1287 | "uuid": "dist/bin/uuid" 1288 | } 1289 | }, 1290 | "node_modules/v8-compile-cache": { 1291 | "version": "2.3.0", 1292 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 1293 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 1294 | "dev": true 1295 | }, 1296 | "node_modules/webidl-conversions": { 1297 | "version": "3.0.1", 1298 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1299 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1300 | }, 1301 | "node_modules/whatwg-url": { 1302 | "version": "5.0.0", 1303 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1304 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1305 | "dependencies": { 1306 | "tr46": "~0.0.3", 1307 | "webidl-conversions": "^3.0.0" 1308 | } 1309 | }, 1310 | "node_modules/which": { 1311 | "version": "2.0.2", 1312 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1313 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1314 | "dev": true, 1315 | "dependencies": { 1316 | "isexe": "^2.0.0" 1317 | }, 1318 | "bin": { 1319 | "node-which": "bin/node-which" 1320 | }, 1321 | "engines": { 1322 | "node": ">= 8" 1323 | } 1324 | }, 1325 | "node_modules/word-wrap": { 1326 | "version": "1.2.4", 1327 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", 1328 | "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", 1329 | "dev": true, 1330 | "engines": { 1331 | "node": ">=0.10.0" 1332 | } 1333 | }, 1334 | "node_modules/wrappy": { 1335 | "version": "1.0.2", 1336 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1337 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1338 | "dev": true 1339 | }, 1340 | "node_modules/yocto-queue": { 1341 | "version": "0.1.0", 1342 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1343 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1344 | "dev": true, 1345 | "engines": { 1346 | "node": ">=10" 1347 | }, 1348 | "funding": { 1349 | "url": "https://github.com/sponsors/sindresorhus" 1350 | } 1351 | } 1352 | }, 1353 | "dependencies": { 1354 | "@eslint/eslintrc": { 1355 | "version": "1.3.0", 1356 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", 1357 | "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", 1358 | "dev": true, 1359 | "requires": { 1360 | "ajv": "^6.12.4", 1361 | "debug": "^4.3.2", 1362 | "espree": "^9.3.2", 1363 | "globals": "^13.15.0", 1364 | "ignore": "^5.2.0", 1365 | "import-fresh": "^3.2.1", 1366 | "js-yaml": "^4.1.0", 1367 | "minimatch": "^3.1.2", 1368 | "strip-json-comments": "^3.1.1" 1369 | } 1370 | }, 1371 | "@humanwhocodes/config-array": { 1372 | "version": "0.10.4", 1373 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", 1374 | "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", 1375 | "dev": true, 1376 | "requires": { 1377 | "@humanwhocodes/object-schema": "^1.2.1", 1378 | "debug": "^4.1.1", 1379 | "minimatch": "^3.0.4" 1380 | } 1381 | }, 1382 | "@humanwhocodes/gitignore-to-minimatch": { 1383 | "version": "1.0.2", 1384 | "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", 1385 | "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", 1386 | "dev": true 1387 | }, 1388 | "@humanwhocodes/object-schema": { 1389 | "version": "1.2.1", 1390 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 1391 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 1392 | "dev": true 1393 | }, 1394 | "@nodelib/fs.scandir": { 1395 | "version": "2.1.5", 1396 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 1397 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 1398 | "dev": true, 1399 | "requires": { 1400 | "@nodelib/fs.stat": "2.0.5", 1401 | "run-parallel": "^1.1.9" 1402 | } 1403 | }, 1404 | "@nodelib/fs.stat": { 1405 | "version": "2.0.5", 1406 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 1407 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 1408 | "dev": true 1409 | }, 1410 | "@nodelib/fs.walk": { 1411 | "version": "1.2.8", 1412 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 1413 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 1414 | "dev": true, 1415 | "requires": { 1416 | "@nodelib/fs.scandir": "2.1.5", 1417 | "fastq": "^1.6.0" 1418 | } 1419 | }, 1420 | "acorn": { 1421 | "version": "8.8.0", 1422 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", 1423 | "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", 1424 | "dev": true 1425 | }, 1426 | "acorn-jsx": { 1427 | "version": "5.3.2", 1428 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1429 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1430 | "dev": true, 1431 | "requires": {} 1432 | }, 1433 | "ajv": { 1434 | "version": "6.12.6", 1435 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1436 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1437 | "dev": true, 1438 | "requires": { 1439 | "fast-deep-equal": "^3.1.1", 1440 | "fast-json-stable-stringify": "^2.0.0", 1441 | "json-schema-traverse": "^0.4.1", 1442 | "uri-js": "^4.2.2" 1443 | } 1444 | }, 1445 | "ansi-regex": { 1446 | "version": "5.0.1", 1447 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1448 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1449 | "dev": true 1450 | }, 1451 | "ansi-styles": { 1452 | "version": "4.3.0", 1453 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1454 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1455 | "dev": true, 1456 | "requires": { 1457 | "color-convert": "^2.0.1" 1458 | } 1459 | }, 1460 | "argparse": { 1461 | "version": "2.0.1", 1462 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1463 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1464 | "dev": true 1465 | }, 1466 | "array-union": { 1467 | "version": "2.1.0", 1468 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 1469 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 1470 | "dev": true 1471 | }, 1472 | "balanced-match": { 1473 | "version": "1.0.2", 1474 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1475 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1476 | "dev": true 1477 | }, 1478 | "brace-expansion": { 1479 | "version": "1.1.11", 1480 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1481 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1482 | "dev": true, 1483 | "requires": { 1484 | "balanced-match": "^1.0.0", 1485 | "concat-map": "0.0.1" 1486 | } 1487 | }, 1488 | "braces": { 1489 | "version": "3.0.3", 1490 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1491 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1492 | "dev": true, 1493 | "requires": { 1494 | "fill-range": "^7.1.1" 1495 | } 1496 | }, 1497 | "callsites": { 1498 | "version": "3.1.0", 1499 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1500 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1501 | "dev": true 1502 | }, 1503 | "chalk": { 1504 | "version": "4.1.2", 1505 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1506 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1507 | "dev": true, 1508 | "requires": { 1509 | "ansi-styles": "^4.1.0", 1510 | "supports-color": "^7.1.0" 1511 | } 1512 | }, 1513 | "color-convert": { 1514 | "version": "2.0.1", 1515 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1516 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1517 | "dev": true, 1518 | "requires": { 1519 | "color-name": "~1.1.4" 1520 | } 1521 | }, 1522 | "color-name": { 1523 | "version": "1.1.4", 1524 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1525 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1526 | "dev": true 1527 | }, 1528 | "concat-map": { 1529 | "version": "0.0.1", 1530 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1531 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1532 | "dev": true 1533 | }, 1534 | "cross-spawn": { 1535 | "version": "7.0.6", 1536 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1537 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1538 | "dev": true, 1539 | "requires": { 1540 | "path-key": "^3.1.0", 1541 | "shebang-command": "^2.0.0", 1542 | "which": "^2.0.1" 1543 | } 1544 | }, 1545 | "debug": { 1546 | "version": "4.3.4", 1547 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1548 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1549 | "dev": true, 1550 | "requires": { 1551 | "ms": "2.1.2" 1552 | } 1553 | }, 1554 | "deep-is": { 1555 | "version": "0.1.4", 1556 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1557 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1558 | "dev": true 1559 | }, 1560 | "dir-glob": { 1561 | "version": "3.0.1", 1562 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1563 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1564 | "dev": true, 1565 | "requires": { 1566 | "path-type": "^4.0.0" 1567 | } 1568 | }, 1569 | "doctrine": { 1570 | "version": "3.0.0", 1571 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1572 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1573 | "dev": true, 1574 | "requires": { 1575 | "esutils": "^2.0.2" 1576 | } 1577 | }, 1578 | "escape-string-regexp": { 1579 | "version": "4.0.0", 1580 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1581 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1582 | "dev": true 1583 | }, 1584 | "eslint": { 1585 | "version": "8.21.0", 1586 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.21.0.tgz", 1587 | "integrity": "sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA==", 1588 | "dev": true, 1589 | "requires": { 1590 | "@eslint/eslintrc": "^1.3.0", 1591 | "@humanwhocodes/config-array": "^0.10.4", 1592 | "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", 1593 | "ajv": "^6.10.0", 1594 | "chalk": "^4.0.0", 1595 | "cross-spawn": "^7.0.2", 1596 | "debug": "^4.3.2", 1597 | "doctrine": "^3.0.0", 1598 | "escape-string-regexp": "^4.0.0", 1599 | "eslint-scope": "^7.1.1", 1600 | "eslint-utils": "^3.0.0", 1601 | "eslint-visitor-keys": "^3.3.0", 1602 | "espree": "^9.3.3", 1603 | "esquery": "^1.4.0", 1604 | "esutils": "^2.0.2", 1605 | "fast-deep-equal": "^3.1.3", 1606 | "file-entry-cache": "^6.0.1", 1607 | "find-up": "^5.0.0", 1608 | "functional-red-black-tree": "^1.0.1", 1609 | "glob-parent": "^6.0.1", 1610 | "globals": "^13.15.0", 1611 | "globby": "^11.1.0", 1612 | "grapheme-splitter": "^1.0.4", 1613 | "ignore": "^5.2.0", 1614 | "import-fresh": "^3.0.0", 1615 | "imurmurhash": "^0.1.4", 1616 | "is-glob": "^4.0.0", 1617 | "js-yaml": "^4.1.0", 1618 | "json-stable-stringify-without-jsonify": "^1.0.1", 1619 | "levn": "^0.4.1", 1620 | "lodash.merge": "^4.6.2", 1621 | "minimatch": "^3.1.2", 1622 | "natural-compare": "^1.4.0", 1623 | "optionator": "^0.9.1", 1624 | "regexpp": "^3.2.0", 1625 | "strip-ansi": "^6.0.1", 1626 | "strip-json-comments": "^3.1.0", 1627 | "text-table": "^0.2.0", 1628 | "v8-compile-cache": "^2.0.3" 1629 | } 1630 | }, 1631 | "eslint-config-prettier": { 1632 | "version": "8.5.0", 1633 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", 1634 | "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", 1635 | "dev": true, 1636 | "requires": {} 1637 | }, 1638 | "eslint-scope": { 1639 | "version": "7.1.1", 1640 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 1641 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 1642 | "dev": true, 1643 | "requires": { 1644 | "esrecurse": "^4.3.0", 1645 | "estraverse": "^5.2.0" 1646 | } 1647 | }, 1648 | "eslint-utils": { 1649 | "version": "3.0.0", 1650 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 1651 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 1652 | "dev": true, 1653 | "requires": { 1654 | "eslint-visitor-keys": "^2.0.0" 1655 | }, 1656 | "dependencies": { 1657 | "eslint-visitor-keys": { 1658 | "version": "2.1.0", 1659 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 1660 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 1661 | "dev": true 1662 | } 1663 | } 1664 | }, 1665 | "eslint-visitor-keys": { 1666 | "version": "3.3.0", 1667 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 1668 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", 1669 | "dev": true 1670 | }, 1671 | "espree": { 1672 | "version": "9.3.3", 1673 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", 1674 | "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", 1675 | "dev": true, 1676 | "requires": { 1677 | "acorn": "^8.8.0", 1678 | "acorn-jsx": "^5.3.2", 1679 | "eslint-visitor-keys": "^3.3.0" 1680 | } 1681 | }, 1682 | "esquery": { 1683 | "version": "1.4.0", 1684 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1685 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1686 | "dev": true, 1687 | "requires": { 1688 | "estraverse": "^5.1.0" 1689 | } 1690 | }, 1691 | "esrecurse": { 1692 | "version": "4.3.0", 1693 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1694 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1695 | "dev": true, 1696 | "requires": { 1697 | "estraverse": "^5.2.0" 1698 | } 1699 | }, 1700 | "estraverse": { 1701 | "version": "5.3.0", 1702 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1703 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1704 | "dev": true 1705 | }, 1706 | "esutils": { 1707 | "version": "2.0.3", 1708 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1709 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1710 | "dev": true 1711 | }, 1712 | "fast-deep-equal": { 1713 | "version": "3.1.3", 1714 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1715 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1716 | "dev": true 1717 | }, 1718 | "fast-glob": { 1719 | "version": "3.2.11", 1720 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 1721 | "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 1722 | "dev": true, 1723 | "requires": { 1724 | "@nodelib/fs.stat": "^2.0.2", 1725 | "@nodelib/fs.walk": "^1.2.3", 1726 | "glob-parent": "^5.1.2", 1727 | "merge2": "^1.3.0", 1728 | "micromatch": "^4.0.4" 1729 | }, 1730 | "dependencies": { 1731 | "glob-parent": { 1732 | "version": "5.1.2", 1733 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1734 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1735 | "dev": true, 1736 | "requires": { 1737 | "is-glob": "^4.0.1" 1738 | } 1739 | } 1740 | } 1741 | }, 1742 | "fast-json-stable-stringify": { 1743 | "version": "2.1.0", 1744 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1745 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1746 | "dev": true 1747 | }, 1748 | "fast-levenshtein": { 1749 | "version": "2.0.6", 1750 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1751 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1752 | "dev": true 1753 | }, 1754 | "fastq": { 1755 | "version": "1.13.0", 1756 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 1757 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 1758 | "dev": true, 1759 | "requires": { 1760 | "reusify": "^1.0.4" 1761 | } 1762 | }, 1763 | "file-entry-cache": { 1764 | "version": "6.0.1", 1765 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1766 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1767 | "dev": true, 1768 | "requires": { 1769 | "flat-cache": "^3.0.4" 1770 | } 1771 | }, 1772 | "file-url": { 1773 | "version": "3.0.0", 1774 | "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", 1775 | "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==" 1776 | }, 1777 | "fill-range": { 1778 | "version": "7.1.1", 1779 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1780 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1781 | "dev": true, 1782 | "requires": { 1783 | "to-regex-range": "^5.0.1" 1784 | } 1785 | }, 1786 | "find-up": { 1787 | "version": "5.0.0", 1788 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1789 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1790 | "dev": true, 1791 | "requires": { 1792 | "locate-path": "^6.0.0", 1793 | "path-exists": "^4.0.0" 1794 | } 1795 | }, 1796 | "flat-cache": { 1797 | "version": "3.0.4", 1798 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1799 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1800 | "dev": true, 1801 | "requires": { 1802 | "flatted": "^3.1.0", 1803 | "rimraf": "^3.0.2" 1804 | } 1805 | }, 1806 | "flatted": { 1807 | "version": "3.2.6", 1808 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", 1809 | "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", 1810 | "dev": true 1811 | }, 1812 | "fs.realpath": { 1813 | "version": "1.0.0", 1814 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1815 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1816 | "dev": true 1817 | }, 1818 | "functional-red-black-tree": { 1819 | "version": "1.0.1", 1820 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1821 | "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", 1822 | "dev": true 1823 | }, 1824 | "glob": { 1825 | "version": "7.2.3", 1826 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1827 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1828 | "dev": true, 1829 | "requires": { 1830 | "fs.realpath": "^1.0.0", 1831 | "inflight": "^1.0.4", 1832 | "inherits": "2", 1833 | "minimatch": "^3.1.1", 1834 | "once": "^1.3.0", 1835 | "path-is-absolute": "^1.0.0" 1836 | } 1837 | }, 1838 | "glob-parent": { 1839 | "version": "6.0.2", 1840 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1841 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1842 | "dev": true, 1843 | "requires": { 1844 | "is-glob": "^4.0.3" 1845 | } 1846 | }, 1847 | "globals": { 1848 | "version": "13.17.0", 1849 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", 1850 | "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", 1851 | "dev": true, 1852 | "requires": { 1853 | "type-fest": "^0.20.2" 1854 | } 1855 | }, 1856 | "globby": { 1857 | "version": "11.1.0", 1858 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1859 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1860 | "dev": true, 1861 | "requires": { 1862 | "array-union": "^2.1.0", 1863 | "dir-glob": "^3.0.1", 1864 | "fast-glob": "^3.2.9", 1865 | "ignore": "^5.2.0", 1866 | "merge2": "^1.4.1", 1867 | "slash": "^3.0.0" 1868 | } 1869 | }, 1870 | "grapheme-splitter": { 1871 | "version": "1.0.4", 1872 | "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", 1873 | "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", 1874 | "dev": true 1875 | }, 1876 | "has-flag": { 1877 | "version": "4.0.0", 1878 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1879 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1880 | "dev": true 1881 | }, 1882 | "ignore": { 1883 | "version": "5.2.0", 1884 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", 1885 | "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", 1886 | "dev": true 1887 | }, 1888 | "import-fresh": { 1889 | "version": "3.3.0", 1890 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1891 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1892 | "dev": true, 1893 | "requires": { 1894 | "parent-module": "^1.0.0", 1895 | "resolve-from": "^4.0.0" 1896 | } 1897 | }, 1898 | "imurmurhash": { 1899 | "version": "0.1.4", 1900 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1901 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1902 | "dev": true 1903 | }, 1904 | "inflight": { 1905 | "version": "1.0.6", 1906 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1907 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1908 | "dev": true, 1909 | "requires": { 1910 | "once": "^1.3.0", 1911 | "wrappy": "1" 1912 | } 1913 | }, 1914 | "inherits": { 1915 | "version": "2.0.4", 1916 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1917 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1918 | "dev": true 1919 | }, 1920 | "is-extglob": { 1921 | "version": "2.1.1", 1922 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1923 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1924 | "dev": true 1925 | }, 1926 | "is-glob": { 1927 | "version": "4.0.3", 1928 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1929 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1930 | "dev": true, 1931 | "requires": { 1932 | "is-extglob": "^2.1.1" 1933 | } 1934 | }, 1935 | "is-number": { 1936 | "version": "7.0.0", 1937 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1938 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1939 | "dev": true 1940 | }, 1941 | "isexe": { 1942 | "version": "2.0.0", 1943 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1944 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1945 | "dev": true 1946 | }, 1947 | "js-yaml": { 1948 | "version": "4.1.0", 1949 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1950 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1951 | "dev": true, 1952 | "requires": { 1953 | "argparse": "^2.0.1" 1954 | } 1955 | }, 1956 | "json-schema-traverse": { 1957 | "version": "0.4.1", 1958 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1959 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1960 | "dev": true 1961 | }, 1962 | "json-stable-stringify-without-jsonify": { 1963 | "version": "1.0.1", 1964 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1965 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1966 | "dev": true 1967 | }, 1968 | "levn": { 1969 | "version": "0.4.1", 1970 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1971 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1972 | "dev": true, 1973 | "requires": { 1974 | "prelude-ls": "^1.2.1", 1975 | "type-check": "~0.4.0" 1976 | } 1977 | }, 1978 | "locate-path": { 1979 | "version": "6.0.0", 1980 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1981 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1982 | "dev": true, 1983 | "requires": { 1984 | "p-locate": "^5.0.0" 1985 | } 1986 | }, 1987 | "lodash.merge": { 1988 | "version": "4.6.2", 1989 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1990 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1991 | "dev": true 1992 | }, 1993 | "merge2": { 1994 | "version": "1.4.1", 1995 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1996 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1997 | "dev": true 1998 | }, 1999 | "micromatch": { 2000 | "version": "4.0.8", 2001 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 2002 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 2003 | "dev": true, 2004 | "requires": { 2005 | "braces": "^3.0.3", 2006 | "picomatch": "^2.3.1" 2007 | } 2008 | }, 2009 | "minimatch": { 2010 | "version": "3.1.2", 2011 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2012 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2013 | "dev": true, 2014 | "requires": { 2015 | "brace-expansion": "^1.1.7" 2016 | } 2017 | }, 2018 | "ms": { 2019 | "version": "2.1.2", 2020 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2021 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2022 | "dev": true 2023 | }, 2024 | "natural-compare": { 2025 | "version": "1.4.0", 2026 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2027 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2028 | "dev": true 2029 | }, 2030 | "node-fetch": { 2031 | "version": "2.6.7", 2032 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 2033 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 2034 | "requires": { 2035 | "whatwg-url": "^5.0.0" 2036 | } 2037 | }, 2038 | "once": { 2039 | "version": "1.4.0", 2040 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2041 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2042 | "dev": true, 2043 | "requires": { 2044 | "wrappy": "1" 2045 | } 2046 | }, 2047 | "optionator": { 2048 | "version": "0.9.1", 2049 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 2050 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 2051 | "dev": true, 2052 | "requires": { 2053 | "deep-is": "^0.1.3", 2054 | "fast-levenshtein": "^2.0.6", 2055 | "levn": "^0.4.1", 2056 | "prelude-ls": "^1.2.1", 2057 | "type-check": "^0.4.0", 2058 | "word-wrap": "^1.2.3" 2059 | } 2060 | }, 2061 | "p-limit": { 2062 | "version": "3.1.0", 2063 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2064 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2065 | "dev": true, 2066 | "requires": { 2067 | "yocto-queue": "^0.1.0" 2068 | } 2069 | }, 2070 | "p-locate": { 2071 | "version": "5.0.0", 2072 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2073 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2074 | "dev": true, 2075 | "requires": { 2076 | "p-limit": "^3.0.2" 2077 | } 2078 | }, 2079 | "parent-module": { 2080 | "version": "1.0.1", 2081 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2082 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2083 | "dev": true, 2084 | "requires": { 2085 | "callsites": "^3.0.0" 2086 | } 2087 | }, 2088 | "path-exists": { 2089 | "version": "4.0.0", 2090 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2091 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2092 | "dev": true 2093 | }, 2094 | "path-is-absolute": { 2095 | "version": "1.0.1", 2096 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2097 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2098 | "dev": true 2099 | }, 2100 | "path-key": { 2101 | "version": "3.1.1", 2102 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2103 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2104 | "dev": true 2105 | }, 2106 | "path-type": { 2107 | "version": "4.0.0", 2108 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2109 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2110 | "dev": true 2111 | }, 2112 | "picomatch": { 2113 | "version": "2.3.1", 2114 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2115 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2116 | "dev": true 2117 | }, 2118 | "prelude-ls": { 2119 | "version": "1.2.1", 2120 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2121 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2122 | "dev": true 2123 | }, 2124 | "punycode": { 2125 | "version": "2.1.1", 2126 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2127 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2128 | "dev": true 2129 | }, 2130 | "queue-microtask": { 2131 | "version": "1.2.3", 2132 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2133 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2134 | "dev": true 2135 | }, 2136 | "regexpp": { 2137 | "version": "3.2.0", 2138 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 2139 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 2140 | "dev": true 2141 | }, 2142 | "resolve-from": { 2143 | "version": "4.0.0", 2144 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2145 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2146 | "dev": true 2147 | }, 2148 | "reusify": { 2149 | "version": "1.0.4", 2150 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2151 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2152 | "dev": true 2153 | }, 2154 | "rimraf": { 2155 | "version": "3.0.2", 2156 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2157 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2158 | "dev": true, 2159 | "requires": { 2160 | "glob": "^7.1.3" 2161 | } 2162 | }, 2163 | "run-parallel": { 2164 | "version": "1.2.0", 2165 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2166 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2167 | "dev": true, 2168 | "requires": { 2169 | "queue-microtask": "^1.2.2" 2170 | } 2171 | }, 2172 | "shebang-command": { 2173 | "version": "2.0.0", 2174 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2175 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2176 | "dev": true, 2177 | "requires": { 2178 | "shebang-regex": "^3.0.0" 2179 | } 2180 | }, 2181 | "shebang-regex": { 2182 | "version": "3.0.0", 2183 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2184 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2185 | "dev": true 2186 | }, 2187 | "slash": { 2188 | "version": "3.0.0", 2189 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2190 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2191 | "dev": true 2192 | }, 2193 | "strip-ansi": { 2194 | "version": "6.0.1", 2195 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2196 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2197 | "dev": true, 2198 | "requires": { 2199 | "ansi-regex": "^5.0.1" 2200 | } 2201 | }, 2202 | "strip-json-comments": { 2203 | "version": "3.1.1", 2204 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2205 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2206 | "dev": true 2207 | }, 2208 | "supports-color": { 2209 | "version": "7.2.0", 2210 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2211 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2212 | "dev": true, 2213 | "requires": { 2214 | "has-flag": "^4.0.0" 2215 | } 2216 | }, 2217 | "text-table": { 2218 | "version": "0.2.0", 2219 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2220 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 2221 | "dev": true 2222 | }, 2223 | "to-regex-range": { 2224 | "version": "5.0.1", 2225 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2226 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2227 | "dev": true, 2228 | "requires": { 2229 | "is-number": "^7.0.0" 2230 | } 2231 | }, 2232 | "tr46": { 2233 | "version": "0.0.3", 2234 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 2235 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 2236 | }, 2237 | "type-check": { 2238 | "version": "0.4.0", 2239 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2240 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2241 | "dev": true, 2242 | "requires": { 2243 | "prelude-ls": "^1.2.1" 2244 | } 2245 | }, 2246 | "type-fest": { 2247 | "version": "0.20.2", 2248 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2249 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2250 | "dev": true 2251 | }, 2252 | "uri-js": { 2253 | "version": "4.4.1", 2254 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2255 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2256 | "dev": true, 2257 | "requires": { 2258 | "punycode": "^2.1.0" 2259 | } 2260 | }, 2261 | "uuid": { 2262 | "version": "8.3.2", 2263 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 2264 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 2265 | }, 2266 | "v8-compile-cache": { 2267 | "version": "2.3.0", 2268 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 2269 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 2270 | "dev": true 2271 | }, 2272 | "webidl-conversions": { 2273 | "version": "3.0.1", 2274 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 2275 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 2276 | }, 2277 | "whatwg-url": { 2278 | "version": "5.0.0", 2279 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 2280 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 2281 | "requires": { 2282 | "tr46": "~0.0.3", 2283 | "webidl-conversions": "^3.0.0" 2284 | } 2285 | }, 2286 | "which": { 2287 | "version": "2.0.2", 2288 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2289 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2290 | "dev": true, 2291 | "requires": { 2292 | "isexe": "^2.0.0" 2293 | } 2294 | }, 2295 | "word-wrap": { 2296 | "version": "1.2.4", 2297 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", 2298 | "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", 2299 | "dev": true 2300 | }, 2301 | "wrappy": { 2302 | "version": "1.0.2", 2303 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2304 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2305 | "dev": true 2306 | }, 2307 | "yocto-queue": { 2308 | "version": "0.1.0", 2309 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2310 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2311 | "dev": true 2312 | } 2313 | } 2314 | } 2315 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vscode-custom-css", 3 | "displayName": "Custom CSS and JS Loader", 4 | "description": "Custom CSS and JS for Visual Studio Code", 5 | "version": "7.4.2", 6 | "publisher": "be5invis", 7 | "author": { 8 | "email": "belleve@typeof.net", 9 | "name": "Belleve Invis", 10 | "url": "https://typeof.net" 11 | }, 12 | "engines": { 13 | "vscode": "^1.93.0" 14 | }, 15 | "categories": [ 16 | "Other", 17 | "Themes" 18 | ], 19 | "repository": { 20 | "type": "git", 21 | "url": "https://github.com/be5invis/vscode-custom-css" 22 | }, 23 | "bugs": { 24 | "url": "https://github.com/be5invis/vscode-custom-css/issues" 25 | }, 26 | "preview": true, 27 | "icon": "images/logo.png", 28 | "galleryBanner": { 29 | "color": "#EEEEEE" 30 | }, 31 | "activationEvents": [ 32 | "*" 33 | ], 34 | "main": "./src/extension", 35 | "contributes": { 36 | "commands": [ 37 | { 38 | "command": "extension.installCustomCSS", 39 | "title": "Enable Custom CSS and JS" 40 | }, 41 | { 42 | "command": "extension.uninstallCustomCSS", 43 | "title": "Disable Custom CSS and JS" 44 | }, 45 | { 46 | "command": "extension.updateCustomCSS", 47 | "title": "Reload Custom CSS and JS" 48 | } 49 | ], 50 | "configuration": { 51 | "title": "Custom CSS/JS Configuration", 52 | "properties": { 53 | "vscode_custom_css.imports": { 54 | "description": "Custom CSS/JS files, as an array of URLs, not file paths", 55 | "type": "array", 56 | "default": [] 57 | }, 58 | "vscode_custom_css.statusbar": { 59 | "description": "Enable Status Indicator", 60 | "type": "boolean", 61 | "default": true 62 | } 63 | } 64 | } 65 | }, 66 | "devDependencies": { 67 | "eslint": "^8.21.0", 68 | "eslint-config-prettier": "^8.5.0" 69 | }, 70 | "dependencies": { 71 | "file-url": "^3.0.0", 72 | "node-fetch": "^2.0.0", 73 | "uuid": "^8.3.2" 74 | }, 75 | "extensionKind": [ 76 | "ui" 77 | ], 78 | "scripts": { 79 | "vscode:prepublish": "npx -y rimraf node_modules && npm install --prod" 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/be5invis/vscode-custom-css/80188c894691ce91950b1dab0e2a357c4b2d9e2c/screenshot.png -------------------------------------------------------------------------------- /src/extension.js: -------------------------------------------------------------------------------- 1 | const vscode = require("vscode"); 2 | const fs = require("fs"); 3 | const os = require("os"); 4 | const path = require("path"); 5 | const msg = require("./messages").messages; 6 | const uuid = require("uuid"); 7 | const fetch = require("node-fetch"); 8 | const Url = require("url"); 9 | 10 | function activate(context) { 11 | const appDir = require.main 12 | ? path.dirname(require.main.filename) 13 | : globalThis._VSCODE_FILE_ROOT; 14 | if (!appDir) { 15 | vscode.window.showInformationMessage(msg.unableToLocateVsCodeInstallationPath); 16 | } 17 | 18 | const base = path.join(appDir, "vs", "code"); 19 | let htmlFile = path.join(base, "electron-sandbox", "workbench", "workbench.html"); 20 | // support Cursor IDE 21 | if (!fs.existsSync(htmlFile)) { 22 | htmlFile = path.join(base, "electron-sandbox", "workbench", "workbench-apc-extension.html"); 23 | } 24 | if (!fs.existsSync(htmlFile)) { 25 | htmlFile = path.join(base, "electron-sandbox", "workbench", "workbench.esm.html"); 26 | } 27 | if (!fs.existsSync(htmlFile)) { 28 | vscode.window.showInformationMessage(msg.unableToLocateVsCodeInstallationPath); 29 | } 30 | const BackupFilePath = uuid => 31 | path.join(base, "electron-sandbox", "workbench", `workbench.${uuid}.bak-custom-css`); 32 | 33 | function resolveVariable(key) { 34 | const variables = { 35 | cwd: () => process.cwd(), 36 | userHome: () => os.homedir(), 37 | execPath: () => process.env.VSCODE_EXEC_PATH ?? process.execPath, 38 | pathSeparator: () => path.sep, 39 | "/": () => path.sep 40 | }; 41 | 42 | if (key in variables) return variables[key](); 43 | 44 | if (key.startsWith("env:")) { 45 | const [_, envKey, optionalDefault] = key.split(":"); 46 | return process.env[envKey] ?? optionalDefault ?? ""; 47 | } 48 | } 49 | function parsedUrl(url) { 50 | if (/^file:/.test(url)) { 51 | // regex matches any "${}" and replaces with resolveVariable() 52 | // eg: "HELLO ${userHome} WORLD" -> "HELLO /home/username WORLD" 53 | return url.replaceAll( 54 | /\$\{([^\{\}]+)\}/g, 55 | (substr, key) => resolveVariable(key) ?? substr 56 | ); 57 | } else { 58 | return url; 59 | } 60 | } 61 | 62 | async function getContent(url) { 63 | if (/^file:/.test(url.toString())) { 64 | const fp = Url.fileURLToPath(url); 65 | return await fs.promises.readFile(fp); 66 | } else { 67 | const response = await fetch(url); 68 | return response.buffer(); 69 | } 70 | } 71 | 72 | // #### main commands ###################################################### 73 | 74 | async function cmdInstall() { 75 | const uuidSession = uuid.v4(); 76 | await createBackup(uuidSession); 77 | await performPatch(uuidSession); 78 | } 79 | 80 | async function cmdReinstall() { 81 | await uninstallImpl(); 82 | await cmdInstall(); 83 | } 84 | 85 | async function cmdUninstall() { 86 | await uninstallImpl(); 87 | disabledRestart(); 88 | } 89 | 90 | async function uninstallImpl() { 91 | const backupUuid = await getBackupUuid(htmlFile); 92 | if (!backupUuid) return; 93 | const backupPath = BackupFilePath(backupUuid); 94 | await restoreBackup(backupPath); 95 | await deleteBackupFiles(); 96 | } 97 | 98 | // #### Backup ################################################################ 99 | 100 | async function getBackupUuid(htmlFilePath) { 101 | try { 102 | const htmlContent = await fs.promises.readFile(htmlFilePath, "utf-8"); 103 | const m = htmlContent.match( 104 | // 105 | ); 106 | if (!m) return null; 107 | else return m[1]; 108 | } catch (e) { 109 | vscode.window.showInformationMessage(msg.somethingWrong + e); 110 | throw e; 111 | } 112 | } 113 | 114 | async function createBackup(uuidSession) { 115 | try { 116 | let html = await fs.promises.readFile(htmlFile, "utf-8"); 117 | html = clearExistingPatches(html); 118 | await fs.promises.writeFile(BackupFilePath(uuidSession), html, "utf-8"); 119 | } catch (e) { 120 | vscode.window.showInformationMessage(msg.admin); 121 | throw e; 122 | } 123 | } 124 | 125 | async function restoreBackup(backupFilePath) { 126 | try { 127 | if (fs.existsSync(backupFilePath)) { 128 | await fs.promises.unlink(htmlFile); 129 | await fs.promises.copyFile(backupFilePath, htmlFile); 130 | } 131 | } catch (e) { 132 | vscode.window.showInformationMessage(msg.admin); 133 | throw e; 134 | } 135 | } 136 | 137 | async function deleteBackupFiles() { 138 | const htmlDir = path.dirname(htmlFile); 139 | const htmlDirItems = await fs.promises.readdir(htmlDir); 140 | for (const item of htmlDirItems) { 141 | if (item.endsWith(".bak-custom-css")) { 142 | await fs.promises.unlink(path.join(htmlDir, item)); 143 | } 144 | } 145 | } 146 | 147 | // #### Patching ############################################################## 148 | 149 | async function performPatch(uuidSession) { 150 | const config = vscode.workspace.getConfiguration("vscode_custom_css"); 151 | if (!patchIsProperlyConfigured(config)) { 152 | return vscode.window.showInformationMessage(msg.notConfigured); 153 | } 154 | 155 | let html = await fs.promises.readFile(htmlFile, "utf-8"); 156 | html = clearExistingPatches(html); 157 | 158 | const injectHTML = await patchHtml(config); 159 | html = html.replace(//, ""); 160 | 161 | let indicatorJS = ""; 162 | if (config.statusbar) indicatorJS = await getIndicatorJs(); 163 | 164 | html = html.replace( 165 | /(<\/html>)/, 166 | `\n` + 167 | "\n" + 168 | indicatorJS + 169 | injectHTML + 170 | "\n" 171 | ); 172 | try { 173 | await fs.promises.writeFile(htmlFile, html, "utf-8"); 174 | } catch (e) { 175 | vscode.window.showInformationMessage(msg.admin); 176 | disabledRestart(); 177 | return; 178 | } 179 | enabledRestart(); 180 | } 181 | function clearExistingPatches(html) { 182 | html = html.replace( 183 | /[\s\S]*?\n*/, 184 | "" 185 | ); 186 | html = html.replace(/\n*/g, ""); 187 | return html; 188 | } 189 | 190 | function patchIsProperlyConfigured(config) { 191 | return config && config.imports && config.imports instanceof Array; 192 | } 193 | 194 | async function patchHtml(config) { 195 | let res = ""; 196 | for (const item of config.imports) { 197 | const imp = await patchHtmlForItem(item); 198 | if (imp) res += imp; 199 | } 200 | return res; 201 | } 202 | async function patchHtmlForItem(url) { 203 | if (!url) return ""; 204 | if (typeof url !== "string") return ""; 205 | 206 | // Copy the resource to a staging directory inside the extension dir 207 | let parsed = new Url.URL(url); 208 | const ext = path.extname(parsed.pathname); 209 | 210 | try { 211 | parsed = parsedUrl(url); 212 | const fetched = await getContent(parsed); 213 | if (ext === ".css") { 214 | return ``; 215 | } else if (ext === ".js") { 216 | return ``; 217 | } 218 | throw new Error(`Unsupported extension type: ${ext}`); 219 | } catch (e) { 220 | console.error(e); 221 | vscode.window.showWarningMessage(msg.cannotLoad(parsed.toString())); 222 | return ""; 223 | } 224 | } 225 | async function getIndicatorJs() { 226 | let indicatorJsPath; 227 | let ext = vscode.extensions.getExtension("be5invis.vscode-custom-css"); 228 | if (ext && ext.extensionPath) { 229 | indicatorJsPath = path.resolve(ext.extensionPath, "src/statusbar.js"); 230 | } else { 231 | indicatorJsPath = path.resolve(__dirname, "statusbar.js"); 232 | } 233 | const indicatorJsContent = await fs.promises.readFile(indicatorJsPath, "utf-8"); 234 | return ``; 235 | } 236 | 237 | function reloadWindow() { 238 | // reload vscode-window 239 | vscode.commands.executeCommand("workbench.action.reloadWindow"); 240 | } 241 | function enabledRestart() { 242 | vscode.window.showInformationMessage(msg.enabled, msg.restartIde).then(btn => { 243 | // if close button is clicked btn is undefined, so no reload window 244 | if (btn === msg.restartIde) { 245 | reloadWindow(); 246 | } 247 | }); 248 | } 249 | function disabledRestart() { 250 | vscode.window.showInformationMessage(msg.disabled, msg.restartIde).then(btn => { 251 | if (btn === msg.restartIde) { 252 | reloadWindow(); 253 | } 254 | }); 255 | } 256 | 257 | const installCustomCSS = vscode.commands.registerCommand( 258 | "extension.installCustomCSS", 259 | cmdInstall 260 | ); 261 | const uninstallCustomCSS = vscode.commands.registerCommand( 262 | "extension.uninstallCustomCSS", 263 | cmdUninstall 264 | ); 265 | const updateCustomCSS = vscode.commands.registerCommand( 266 | "extension.updateCustomCSS", 267 | cmdReinstall 268 | ); 269 | 270 | context.subscriptions.push(installCustomCSS); 271 | context.subscriptions.push(uninstallCustomCSS); 272 | context.subscriptions.push(updateCustomCSS); 273 | 274 | console.log("vscode-custom-css is active!"); 275 | console.log("Application directory", appDir); 276 | console.log("Main HTML file", htmlFile); 277 | } 278 | exports.activate = activate; 279 | 280 | // this method is called when your extension is deactivated 281 | function deactivate() {} 282 | exports.deactivate = deactivate; 283 | -------------------------------------------------------------------------------- /src/messages.js: -------------------------------------------------------------------------------- 1 | exports.messages = { 2 | admin: "Run VS Code with admin privileges so the changes can be applied.", 3 | enabled: 4 | "Custom CSS and JS enabled. Restart to take effect. " + 5 | "If Code complains about it is corrupted, CLICK DON'T SHOW AGAIN. " + 6 | "See README for more detail.", 7 | disabled: "Custom CSS and JS disabled and reverted to default. Restart to take effect.", 8 | already_disabled: "Custom CSS and JS already disabled.", 9 | somethingWrong: "Something went wrong: ", 10 | restartIde: "Restart Visual Studio Code", 11 | notfound: "Custom CSS and JS not found.", 12 | notConfigured: 13 | "Custom CSS and JS path not configured. " + 14 | 'Please set "vscode_custom_css.imports" in your user settings.', 15 | reloadAfterVersionUpgrade: 16 | "Detected reloading CSS / JS after VSCode is upgraded. " + "Performing application only.", 17 | unableToLocateVsCodeInstallationPath: 18 | "Unable to locate the installation path of VSCode. This extension may not function correctly.", 19 | cannotLoad: url => `Cannot load '${url}'. Skipping.` 20 | }; 21 | -------------------------------------------------------------------------------- /src/statusbar.js: -------------------------------------------------------------------------------- 1 | /* eslint-env browser */ 2 | (function () { 3 | function patch() { 4 | const e1 = document.querySelector(".right-items"); 5 | const e2 = document.querySelector(".right-items .__CUSTOM_CSS_JS_INDICATOR_CLS"); 6 | if (e1 && !e2) { 7 | let e = document.createElement("div"); 8 | e.id = "be5invis.vscode-custom-css"; 9 | e.title = "Custom CSS and JS"; 10 | e.className = "statusbar-item right __CUSTOM_CSS_JS_INDICATOR_CLS"; 11 | { 12 | const a = document.createElement("a"); 13 | a.tabIndex = -1; 14 | a.className = 'statusbar-item-label'; 15 | { 16 | const span = document.createElement("span"); 17 | span.className = "codicon codicon-paintcan"; 18 | a.appendChild(span); 19 | } 20 | e.appendChild(a); 21 | } 22 | e1.appendChild(e); 23 | } 24 | } 25 | setInterval(patch, 5000); 26 | })(); 27 | --------------------------------------------------------------------------------