├── .gitignore ├── .husky └── pre-commit ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── icon.png ├── package-lock.json ├── package.json ├── src └── extension.ts ├── test ├── extension.test.ts └── index.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | node_modules -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx lint-staged 5 | npm test 6 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that compiles the extension and then opens it inside a new window 2 | { 3 | "version": "0.1.0", 4 | "configurations": [ 5 | { 6 | "name": "Launch Extension", 7 | "type": "extensionHost", 8 | "request": "launch", 9 | "runtimeExecutable": "${execPath}", 10 | "args": ["--extensionDevelopmentPath=${workspaceRoot}"], 11 | "stopOnEntry": false, 12 | "sourceMaps": true, 13 | "outDir": "${workspaceRoot}/out/src", 14 | "preLaunchTask": "npm" 15 | }, 16 | { 17 | "name": "Launch Tests", 18 | "type": "extensionHost", 19 | "request": "launch", 20 | "runtimeExecutable": "${execPath}", 21 | "args": [ 22 | "--extensionDevelopmentPath=${workspaceRoot}", 23 | "--extensionTestsPath=${workspaceRoot}/out/test" 24 | ], 25 | "stopOnEntry": false, 26 | "sourceMaps": true, 27 | "outDir": "${workspaceRoot}/out/test", 28 | "preLaunchTask": "npm" 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "files.exclude": { 4 | "out": false // set this to true to hide the "out" folder with the compiled JS files 5 | }, 6 | "search.exclude": { 7 | "out": true // set this to false to include "out" folder in search results 8 | }, 9 | "typescript.tsdk": "./node_modules/typescript/lib" // we want to use the TS server from our node_modules folder to control its version 10 | } 11 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | // Available variables which can be used inside of strings. 2 | // ${workspaceRoot}: the root folder of the team 3 | // ${file}: the current opened file 4 | // ${fileBasename}: the current opened file's basename 5 | // ${fileDirname}: the current opened file's dirname 6 | // ${fileExtname}: the current opened file's extension 7 | // ${cwd}: the current working directory of the spawned process 8 | 9 | // A task runner that calls a custom npm script that compiles the extension. 10 | { 11 | "version": "0.1.0", 12 | 13 | // we want to run npm 14 | "command": "npm", 15 | 16 | // the command is a shell script 17 | "isShellCommand": true, 18 | 19 | // show the output window only if unrecognized errors occur. 20 | "showOutput": "silent", 21 | 22 | // we run the custom script "compile" as defined in package.json 23 | "args": ["run", "compile", "--loglevel", "silent"], 24 | 25 | // The tsc compiler is started in watching mode 26 | "isWatching": true, 27 | 28 | // use the standard tsc in watch mode problem matcher to find compile problems in the output. 29 | "problemMatcher": "$tsc-watch" 30 | } 31 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | typings/** 3 | out/test/** 4 | test/** 5 | src/** 6 | **/*.map 7 | .gitignore 8 | tsconfig.json 9 | vsc-extension-quickstart.md 10 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 1.2.0 2 | 3 | - Now pre-filtering when a workspace has more than 1000 files. 4 | 5 | ## 1.1.0 6 | 7 | - Multi-workspace support. 8 | 9 | ## 1.0.0. 10 | 11 | - First stable release. 12 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Jakob Werner 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Relative Path Extension for VS Code 2 | 3 | > Get the relative path to any file in your workspace 4 | 5 | Press `Ctrl+Shift+H` (Mac: `Cmd+Shift+H`) and start typing the file you want. 6 | 7 | ![GIF](https://media.giphy.com/media/3oEduJ5iRksPxpwoXC/giphy.gif) 8 | 9 |
10 | 11 | ## How to use 12 | 13 | 1. [Install the extension](https://marketplace.visualstudio.com/items?itemName=jakob101.RelativePath&ssr=false#overview) 14 | 2. Press `Ctrl+Shift+H` (Mac: `Cmd+Shift+H`) and start typing the file you want. 15 | - The file you want will appear as you type 16 | 3. 🪄 Select your file from the dropdown! 17 | 18 |
19 | 20 | ## Options 21 | 22 | The following settings are customizable. **You likely do not need these, but if you do, here are your options** 23 | 24 | They can be set in user preferences (`ctrl+,` or `cmd+,`) or workspace settings (`.vscode/settings.json`). 25 | 26 | ```javascript 27 | // A glob by which to filter results 28 | "relativePath.includeGlob": "/**/*.*", 29 | 30 | // An array of glob keys to ignore when searching. 31 | "relativePath.ignore": [ 32 | "**/node_modules/**", 33 | "**/*.dll", 34 | "**/obj/**", 35 | "**/objd/**" 36 | ], 37 | 38 | // Excludes the extension from the relative path url (Useful for systemjs imports). 39 | "relativePath.removeExtension": false, 40 | 41 | // An array of extensions to exclude from the relative path url (Useful for used with Webpack or when importing files of mixed types) 42 | "relativePath.excludedExtensions": [ 43 | ".js", 44 | ".ts" 45 | ], 46 | 47 | // For performance optimization the default limit for quick filter is 1,000 files. 48 | // Extending this may lead to performance issues 49 | "relativePath.searchCountLimit": 1000, 50 | 51 | // Removes the leading ./ character when the path is pointing to a parent folder. 52 | "relativePath.removeLeadingDot": true, 53 | 54 | // "Omit path parts by matched Regular Expressions 55 | "relativePath.omitParts": [ 56 | "\\/index$" 57 | ], 58 | 59 | ``` 60 | 61 |
62 | 63 | ## Performance Information 64 | 65 | ### In Multi root workspaces: 66 | 67 | Everytime you switch to a file from a different folder the files in that folder are indexed and 68 | cached to improve search performance. If you have multiple large folders part of a workspace 69 | frequent switches between folders might slow you down. 70 | 71 | ### In Single project workspace: 72 | 73 | The caching of the filelist in the project happens only once. If your workspace contains a lot of files 74 | please wait for the initial file list to be created. 75 | 76 | ## Bugs 77 | 78 | Report them [here](https://github.com/jakob101/RelativePath). 79 | 80 | ## Licence 81 | 82 | [MIT](https://github.com/Microsoft/vscode-go/blob/master/LICENSE) 83 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dawsbot/RelativePath/d0700f87f321672d25debc7e74dd50939458a67c/icon.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RelativePath", 3 | "version": "1.5.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "RelativePath", 9 | "version": "1.5.0", 10 | "hasInstallScript": true, 11 | "license": "MIT", 12 | "dependencies": { 13 | "@types/glob": "^7.2.0", 14 | "glob": "^8.0.1" 15 | }, 16 | "devDependencies": { 17 | "@types/mocha": "^9.1.1", 18 | "@types/node": "^17.0.31", 19 | "husky": "^7.0.4", 20 | "lint-staged": "^12.4.1", 21 | "mocha": "^10.0.0", 22 | "prettier": "^2.6.2", 23 | "prettier-plugin-organize-imports": "^2.3.4", 24 | "typescript": "^4.6.4", 25 | "vscode": "^1.1.37" 26 | }, 27 | "engines": { 28 | "vscode": "^1.16.0" 29 | } 30 | }, 31 | "node_modules/@tootallnate/once": { 32 | "version": "1.1.2", 33 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 34 | "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 35 | "dev": true, 36 | "engines": { 37 | "node": ">= 6" 38 | } 39 | }, 40 | "node_modules/@types/glob": { 41 | "version": "7.2.0", 42 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", 43 | "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", 44 | "dependencies": { 45 | "@types/minimatch": "*", 46 | "@types/node": "*" 47 | } 48 | }, 49 | "node_modules/@types/minimatch": { 50 | "version": "3.0.5", 51 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", 52 | "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" 53 | }, 54 | "node_modules/@types/mocha": { 55 | "version": "9.1.1", 56 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", 57 | "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", 58 | "dev": true 59 | }, 60 | "node_modules/@types/node": { 61 | "version": "17.0.31", 62 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", 63 | "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==" 64 | }, 65 | "node_modules/@ungap/promise-all-settled": { 66 | "version": "1.1.2", 67 | "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", 68 | "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", 69 | "dev": true 70 | }, 71 | "node_modules/agent-base": { 72 | "version": "6.0.2", 73 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 74 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 75 | "dev": true, 76 | "dependencies": { 77 | "debug": "4" 78 | }, 79 | "engines": { 80 | "node": ">= 6.0.0" 81 | } 82 | }, 83 | "node_modules/aggregate-error": { 84 | "version": "3.1.0", 85 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 86 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 87 | "dev": true, 88 | "dependencies": { 89 | "clean-stack": "^2.0.0", 90 | "indent-string": "^4.0.0" 91 | }, 92 | "engines": { 93 | "node": ">=8" 94 | } 95 | }, 96 | "node_modules/ansi-colors": { 97 | "version": "4.1.1", 98 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 99 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 100 | "dev": true, 101 | "engines": { 102 | "node": ">=6" 103 | } 104 | }, 105 | "node_modules/ansi-escapes": { 106 | "version": "4.3.2", 107 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 108 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 109 | "dev": true, 110 | "dependencies": { 111 | "type-fest": "^0.21.3" 112 | }, 113 | "engines": { 114 | "node": ">=8" 115 | }, 116 | "funding": { 117 | "url": "https://github.com/sponsors/sindresorhus" 118 | } 119 | }, 120 | "node_modules/ansi-regex": { 121 | "version": "5.0.1", 122 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 123 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 124 | "dev": true, 125 | "engines": { 126 | "node": ">=8" 127 | } 128 | }, 129 | "node_modules/ansi-styles": { 130 | "version": "4.3.0", 131 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 132 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 133 | "dev": true, 134 | "dependencies": { 135 | "color-convert": "^2.0.1" 136 | }, 137 | "engines": { 138 | "node": ">=8" 139 | }, 140 | "funding": { 141 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 142 | } 143 | }, 144 | "node_modules/anymatch": { 145 | "version": "3.1.2", 146 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 147 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 148 | "dev": true, 149 | "dependencies": { 150 | "normalize-path": "^3.0.0", 151 | "picomatch": "^2.0.4" 152 | }, 153 | "engines": { 154 | "node": ">= 8" 155 | } 156 | }, 157 | "node_modules/argparse": { 158 | "version": "2.0.1", 159 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 160 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 161 | "dev": true 162 | }, 163 | "node_modules/astral-regex": { 164 | "version": "2.0.0", 165 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 166 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 167 | "dev": true, 168 | "engines": { 169 | "node": ">=8" 170 | } 171 | }, 172 | "node_modules/balanced-match": { 173 | "version": "1.0.0", 174 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 175 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 176 | }, 177 | "node_modules/binary-extensions": { 178 | "version": "2.2.0", 179 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 180 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 181 | "dev": true, 182 | "engines": { 183 | "node": ">=8" 184 | } 185 | }, 186 | "node_modules/brace-expansion": { 187 | "version": "1.1.8", 188 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 189 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 190 | "dev": true, 191 | "dependencies": { 192 | "balanced-match": "^1.0.0", 193 | "concat-map": "0.0.1" 194 | } 195 | }, 196 | "node_modules/braces": { 197 | "version": "3.0.2", 198 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 199 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 200 | "dev": true, 201 | "dependencies": { 202 | "fill-range": "^7.0.1" 203 | }, 204 | "engines": { 205 | "node": ">=8" 206 | } 207 | }, 208 | "node_modules/browser-stdout": { 209 | "version": "1.3.1", 210 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 211 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 212 | "dev": true 213 | }, 214 | "node_modules/camelcase": { 215 | "version": "6.3.0", 216 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 217 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 218 | "dev": true, 219 | "engines": { 220 | "node": ">=10" 221 | }, 222 | "funding": { 223 | "url": "https://github.com/sponsors/sindresorhus" 224 | } 225 | }, 226 | "node_modules/chalk": { 227 | "version": "4.1.2", 228 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 229 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 230 | "dev": true, 231 | "dependencies": { 232 | "ansi-styles": "^4.1.0", 233 | "supports-color": "^7.1.0" 234 | }, 235 | "engines": { 236 | "node": ">=10" 237 | }, 238 | "funding": { 239 | "url": "https://github.com/chalk/chalk?sponsor=1" 240 | } 241 | }, 242 | "node_modules/chalk/node_modules/has-flag": { 243 | "version": "4.0.0", 244 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 245 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 246 | "dev": true, 247 | "engines": { 248 | "node": ">=8" 249 | } 250 | }, 251 | "node_modules/chalk/node_modules/supports-color": { 252 | "version": "7.2.0", 253 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 254 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 255 | "dev": true, 256 | "dependencies": { 257 | "has-flag": "^4.0.0" 258 | }, 259 | "engines": { 260 | "node": ">=8" 261 | } 262 | }, 263 | "node_modules/chokidar": { 264 | "version": "3.5.3", 265 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 266 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 267 | "dev": true, 268 | "funding": [ 269 | { 270 | "type": "individual", 271 | "url": "https://paulmillr.com/funding/" 272 | } 273 | ], 274 | "dependencies": { 275 | "anymatch": "~3.1.2", 276 | "braces": "~3.0.2", 277 | "glob-parent": "~5.1.2", 278 | "is-binary-path": "~2.1.0", 279 | "is-glob": "~4.0.1", 280 | "normalize-path": "~3.0.0", 281 | "readdirp": "~3.6.0" 282 | }, 283 | "engines": { 284 | "node": ">= 8.10.0" 285 | }, 286 | "optionalDependencies": { 287 | "fsevents": "~2.3.2" 288 | } 289 | }, 290 | "node_modules/clean-stack": { 291 | "version": "2.2.0", 292 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 293 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 294 | "dev": true, 295 | "engines": { 296 | "node": ">=6" 297 | } 298 | }, 299 | "node_modules/cli-cursor": { 300 | "version": "3.1.0", 301 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 302 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 303 | "dev": true, 304 | "dependencies": { 305 | "restore-cursor": "^3.1.0" 306 | }, 307 | "engines": { 308 | "node": ">=8" 309 | } 310 | }, 311 | "node_modules/cli-truncate": { 312 | "version": "3.1.0", 313 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", 314 | "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", 315 | "dev": true, 316 | "dependencies": { 317 | "slice-ansi": "^5.0.0", 318 | "string-width": "^5.0.0" 319 | }, 320 | "engines": { 321 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 322 | }, 323 | "funding": { 324 | "url": "https://github.com/sponsors/sindresorhus" 325 | } 326 | }, 327 | "node_modules/cli-truncate/node_modules/ansi-regex": { 328 | "version": "6.0.1", 329 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 330 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 331 | "dev": true, 332 | "engines": { 333 | "node": ">=12" 334 | }, 335 | "funding": { 336 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 337 | } 338 | }, 339 | "node_modules/cli-truncate/node_modules/emoji-regex": { 340 | "version": "9.2.2", 341 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 342 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 343 | "dev": true 344 | }, 345 | "node_modules/cli-truncate/node_modules/string-width": { 346 | "version": "5.1.2", 347 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 348 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 349 | "dev": true, 350 | "dependencies": { 351 | "eastasianwidth": "^0.2.0", 352 | "emoji-regex": "^9.2.2", 353 | "strip-ansi": "^7.0.1" 354 | }, 355 | "engines": { 356 | "node": ">=12" 357 | }, 358 | "funding": { 359 | "url": "https://github.com/sponsors/sindresorhus" 360 | } 361 | }, 362 | "node_modules/cli-truncate/node_modules/strip-ansi": { 363 | "version": "7.0.1", 364 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", 365 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 366 | "dev": true, 367 | "dependencies": { 368 | "ansi-regex": "^6.0.1" 369 | }, 370 | "engines": { 371 | "node": ">=12" 372 | }, 373 | "funding": { 374 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 375 | } 376 | }, 377 | "node_modules/cliui": { 378 | "version": "7.0.4", 379 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 380 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 381 | "dev": true, 382 | "dependencies": { 383 | "string-width": "^4.2.0", 384 | "strip-ansi": "^6.0.0", 385 | "wrap-ansi": "^7.0.0" 386 | } 387 | }, 388 | "node_modules/color-convert": { 389 | "version": "2.0.1", 390 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 391 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 392 | "dev": true, 393 | "dependencies": { 394 | "color-name": "~1.1.4" 395 | }, 396 | "engines": { 397 | "node": ">=7.0.0" 398 | } 399 | }, 400 | "node_modules/color-name": { 401 | "version": "1.1.4", 402 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 403 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 404 | "dev": true 405 | }, 406 | "node_modules/colorette": { 407 | "version": "2.0.16", 408 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", 409 | "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", 410 | "dev": true 411 | }, 412 | "node_modules/commander": { 413 | "version": "2.15.1", 414 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", 415 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", 416 | "dev": true 417 | }, 418 | "node_modules/concat-map": { 419 | "version": "0.0.1", 420 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 421 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 422 | "dev": true 423 | }, 424 | "node_modules/cross-spawn": { 425 | "version": "7.0.3", 426 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 427 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 428 | "dev": true, 429 | "dependencies": { 430 | "path-key": "^3.1.0", 431 | "shebang-command": "^2.0.0", 432 | "which": "^2.0.1" 433 | }, 434 | "engines": { 435 | "node": ">= 8" 436 | } 437 | }, 438 | "node_modules/debug": { 439 | "version": "4.3.4", 440 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 441 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 442 | "dev": true, 443 | "dependencies": { 444 | "ms": "2.1.2" 445 | }, 446 | "engines": { 447 | "node": ">=6.0" 448 | }, 449 | "peerDependenciesMeta": { 450 | "supports-color": { 451 | "optional": true 452 | } 453 | } 454 | }, 455 | "node_modules/decamelize": { 456 | "version": "4.0.0", 457 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 458 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 459 | "dev": true, 460 | "engines": { 461 | "node": ">=10" 462 | }, 463 | "funding": { 464 | "url": "https://github.com/sponsors/sindresorhus" 465 | } 466 | }, 467 | "node_modules/diff": { 468 | "version": "3.5.0", 469 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 470 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 471 | "dev": true, 472 | "engines": { 473 | "node": ">=0.3.1" 474 | } 475 | }, 476 | "node_modules/eastasianwidth": { 477 | "version": "0.2.0", 478 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 479 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 480 | "dev": true 481 | }, 482 | "node_modules/emoji-regex": { 483 | "version": "8.0.0", 484 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 485 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 486 | "dev": true 487 | }, 488 | "node_modules/es6-promise": { 489 | "version": "4.2.8", 490 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 491 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", 492 | "dev": true 493 | }, 494 | "node_modules/es6-promisify": { 495 | "version": "5.0.0", 496 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", 497 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", 498 | "dev": true, 499 | "dependencies": { 500 | "es6-promise": "^4.0.3" 501 | } 502 | }, 503 | "node_modules/escalade": { 504 | "version": "3.1.1", 505 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 506 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 507 | "dev": true, 508 | "engines": { 509 | "node": ">=6" 510 | } 511 | }, 512 | "node_modules/escape-string-regexp": { 513 | "version": "1.0.5", 514 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 515 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 516 | "dev": true, 517 | "engines": { 518 | "node": ">=0.8.0" 519 | } 520 | }, 521 | "node_modules/execa": { 522 | "version": "5.1.1", 523 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 524 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 525 | "dev": true, 526 | "dependencies": { 527 | "cross-spawn": "^7.0.3", 528 | "get-stream": "^6.0.0", 529 | "human-signals": "^2.1.0", 530 | "is-stream": "^2.0.0", 531 | "merge-stream": "^2.0.0", 532 | "npm-run-path": "^4.0.1", 533 | "onetime": "^5.1.2", 534 | "signal-exit": "^3.0.3", 535 | "strip-final-newline": "^2.0.0" 536 | }, 537 | "engines": { 538 | "node": ">=10" 539 | }, 540 | "funding": { 541 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 542 | } 543 | }, 544 | "node_modules/fill-range": { 545 | "version": "7.0.1", 546 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 547 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 548 | "dev": true, 549 | "dependencies": { 550 | "to-regex-range": "^5.0.1" 551 | }, 552 | "engines": { 553 | "node": ">=8" 554 | } 555 | }, 556 | "node_modules/find-up": { 557 | "version": "5.0.0", 558 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 559 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 560 | "dev": true, 561 | "dependencies": { 562 | "locate-path": "^6.0.0", 563 | "path-exists": "^4.0.0" 564 | }, 565 | "engines": { 566 | "node": ">=10" 567 | }, 568 | "funding": { 569 | "url": "https://github.com/sponsors/sindresorhus" 570 | } 571 | }, 572 | "node_modules/flat": { 573 | "version": "5.0.2", 574 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 575 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 576 | "dev": true, 577 | "bin": { 578 | "flat": "cli.js" 579 | } 580 | }, 581 | "node_modules/fs.realpath": { 582 | "version": "1.0.0", 583 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 584 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 585 | }, 586 | "node_modules/fsevents": { 587 | "version": "2.3.2", 588 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 589 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 590 | "dev": true, 591 | "hasInstallScript": true, 592 | "optional": true, 593 | "os": [ 594 | "darwin" 595 | ], 596 | "engines": { 597 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 598 | } 599 | }, 600 | "node_modules/get-caller-file": { 601 | "version": "2.0.5", 602 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 603 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 604 | "dev": true, 605 | "engines": { 606 | "node": "6.* || 8.* || >= 10.*" 607 | } 608 | }, 609 | "node_modules/get-stream": { 610 | "version": "6.0.1", 611 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 612 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 613 | "dev": true, 614 | "engines": { 615 | "node": ">=10" 616 | }, 617 | "funding": { 618 | "url": "https://github.com/sponsors/sindresorhus" 619 | } 620 | }, 621 | "node_modules/glob": { 622 | "version": "8.0.1", 623 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.1.tgz", 624 | "integrity": "sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow==", 625 | "dependencies": { 626 | "fs.realpath": "^1.0.0", 627 | "inflight": "^1.0.4", 628 | "inherits": "2", 629 | "minimatch": "^5.0.1", 630 | "once": "^1.3.0", 631 | "path-is-absolute": "^1.0.0" 632 | }, 633 | "engines": { 634 | "node": ">=12" 635 | }, 636 | "funding": { 637 | "url": "https://github.com/sponsors/isaacs" 638 | } 639 | }, 640 | "node_modules/glob-parent": { 641 | "version": "5.1.2", 642 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 643 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 644 | "dev": true, 645 | "dependencies": { 646 | "is-glob": "^4.0.1" 647 | }, 648 | "engines": { 649 | "node": ">= 6" 650 | } 651 | }, 652 | "node_modules/glob/node_modules/brace-expansion": { 653 | "version": "2.0.1", 654 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 655 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 656 | "dependencies": { 657 | "balanced-match": "^1.0.0" 658 | } 659 | }, 660 | "node_modules/glob/node_modules/minimatch": { 661 | "version": "5.0.1", 662 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 663 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 664 | "dependencies": { 665 | "brace-expansion": "^2.0.1" 666 | }, 667 | "engines": { 668 | "node": ">=10" 669 | } 670 | }, 671 | "node_modules/growl": { 672 | "version": "1.10.5", 673 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 674 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 675 | "dev": true, 676 | "engines": { 677 | "node": ">=4.x" 678 | } 679 | }, 680 | "node_modules/has-flag": { 681 | "version": "3.0.0", 682 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 683 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 684 | "dev": true, 685 | "engines": { 686 | "node": ">=4" 687 | } 688 | }, 689 | "node_modules/he": { 690 | "version": "1.1.1", 691 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 692 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", 693 | "dev": true, 694 | "bin": { 695 | "he": "bin/he" 696 | } 697 | }, 698 | "node_modules/http-proxy-agent": { 699 | "version": "4.0.1", 700 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 701 | "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 702 | "dev": true, 703 | "dependencies": { 704 | "@tootallnate/once": "1", 705 | "agent-base": "6", 706 | "debug": "4" 707 | }, 708 | "engines": { 709 | "node": ">= 6" 710 | } 711 | }, 712 | "node_modules/https-proxy-agent": { 713 | "version": "5.0.1", 714 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 715 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 716 | "dev": true, 717 | "dependencies": { 718 | "agent-base": "6", 719 | "debug": "4" 720 | }, 721 | "engines": { 722 | "node": ">= 6" 723 | } 724 | }, 725 | "node_modules/human-signals": { 726 | "version": "2.1.0", 727 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 728 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 729 | "dev": true, 730 | "engines": { 731 | "node": ">=10.17.0" 732 | } 733 | }, 734 | "node_modules/husky": { 735 | "version": "7.0.4", 736 | "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", 737 | "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", 738 | "dev": true, 739 | "bin": { 740 | "husky": "lib/bin.js" 741 | }, 742 | "engines": { 743 | "node": ">=12" 744 | }, 745 | "funding": { 746 | "url": "https://github.com/sponsors/typicode" 747 | } 748 | }, 749 | "node_modules/indent-string": { 750 | "version": "4.0.0", 751 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 752 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 753 | "dev": true, 754 | "engines": { 755 | "node": ">=8" 756 | } 757 | }, 758 | "node_modules/inflight": { 759 | "version": "1.0.6", 760 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 761 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 762 | "dependencies": { 763 | "once": "^1.3.0", 764 | "wrappy": "1" 765 | } 766 | }, 767 | "node_modules/inherits": { 768 | "version": "2.0.3", 769 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 770 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 771 | }, 772 | "node_modules/is-binary-path": { 773 | "version": "2.1.0", 774 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 775 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 776 | "dev": true, 777 | "dependencies": { 778 | "binary-extensions": "^2.0.0" 779 | }, 780 | "engines": { 781 | "node": ">=8" 782 | } 783 | }, 784 | "node_modules/is-extglob": { 785 | "version": "2.1.1", 786 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 787 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 788 | "dev": true, 789 | "engines": { 790 | "node": ">=0.10.0" 791 | } 792 | }, 793 | "node_modules/is-fullwidth-code-point": { 794 | "version": "3.0.0", 795 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 796 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 797 | "dev": true, 798 | "engines": { 799 | "node": ">=8" 800 | } 801 | }, 802 | "node_modules/is-glob": { 803 | "version": "4.0.3", 804 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 805 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 806 | "dev": true, 807 | "dependencies": { 808 | "is-extglob": "^2.1.1" 809 | }, 810 | "engines": { 811 | "node": ">=0.10.0" 812 | } 813 | }, 814 | "node_modules/is-number": { 815 | "version": "7.0.0", 816 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 817 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 818 | "dev": true, 819 | "engines": { 820 | "node": ">=0.12.0" 821 | } 822 | }, 823 | "node_modules/is-plain-obj": { 824 | "version": "2.1.0", 825 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 826 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 827 | "dev": true, 828 | "engines": { 829 | "node": ">=8" 830 | } 831 | }, 832 | "node_modules/is-stream": { 833 | "version": "2.0.1", 834 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 835 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 836 | "dev": true, 837 | "engines": { 838 | "node": ">=8" 839 | }, 840 | "funding": { 841 | "url": "https://github.com/sponsors/sindresorhus" 842 | } 843 | }, 844 | "node_modules/is-unicode-supported": { 845 | "version": "0.1.0", 846 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 847 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 848 | "dev": true, 849 | "engines": { 850 | "node": ">=10" 851 | }, 852 | "funding": { 853 | "url": "https://github.com/sponsors/sindresorhus" 854 | } 855 | }, 856 | "node_modules/isexe": { 857 | "version": "2.0.0", 858 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 859 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 860 | "dev": true 861 | }, 862 | "node_modules/js-yaml": { 863 | "version": "4.1.0", 864 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 865 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 866 | "dev": true, 867 | "dependencies": { 868 | "argparse": "^2.0.1" 869 | }, 870 | "bin": { 871 | "js-yaml": "bin/js-yaml.js" 872 | } 873 | }, 874 | "node_modules/lilconfig": { 875 | "version": "2.0.4", 876 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", 877 | "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", 878 | "dev": true, 879 | "engines": { 880 | "node": ">=10" 881 | } 882 | }, 883 | "node_modules/lint-staged": { 884 | "version": "12.4.1", 885 | "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.4.1.tgz", 886 | "integrity": "sha512-PTXgzpflrQ+pODQTG116QNB+Q6uUTDg5B5HqGvNhoQSGt8Qy+MA/6zSnR8n38+sxP5TapzeQGTvoKni0KRS8Vg==", 887 | "dev": true, 888 | "dependencies": { 889 | "cli-truncate": "^3.1.0", 890 | "colorette": "^2.0.16", 891 | "commander": "^8.3.0", 892 | "debug": "^4.3.3", 893 | "execa": "^5.1.1", 894 | "lilconfig": "2.0.4", 895 | "listr2": "^4.0.1", 896 | "micromatch": "^4.0.4", 897 | "normalize-path": "^3.0.0", 898 | "object-inspect": "^1.12.0", 899 | "pidtree": "^0.5.0", 900 | "string-argv": "^0.3.1", 901 | "supports-color": "^9.2.1", 902 | "yaml": "^1.10.2" 903 | }, 904 | "bin": { 905 | "lint-staged": "bin/lint-staged.js" 906 | }, 907 | "engines": { 908 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 909 | }, 910 | "funding": { 911 | "url": "https://opencollective.com/lint-staged" 912 | } 913 | }, 914 | "node_modules/lint-staged/node_modules/commander": { 915 | "version": "8.3.0", 916 | "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", 917 | "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", 918 | "dev": true, 919 | "engines": { 920 | "node": ">= 12" 921 | } 922 | }, 923 | "node_modules/lint-staged/node_modules/supports-color": { 924 | "version": "9.2.2", 925 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", 926 | "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==", 927 | "dev": true, 928 | "engines": { 929 | "node": ">=12" 930 | }, 931 | "funding": { 932 | "url": "https://github.com/chalk/supports-color?sponsor=1" 933 | } 934 | }, 935 | "node_modules/listr2": { 936 | "version": "4.0.5", 937 | "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", 938 | "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", 939 | "dev": true, 940 | "dependencies": { 941 | "cli-truncate": "^2.1.0", 942 | "colorette": "^2.0.16", 943 | "log-update": "^4.0.0", 944 | "p-map": "^4.0.0", 945 | "rfdc": "^1.3.0", 946 | "rxjs": "^7.5.5", 947 | "through": "^2.3.8", 948 | "wrap-ansi": "^7.0.0" 949 | }, 950 | "engines": { 951 | "node": ">=12" 952 | }, 953 | "peerDependencies": { 954 | "enquirer": ">= 2.3.0 < 3" 955 | }, 956 | "peerDependenciesMeta": { 957 | "enquirer": { 958 | "optional": true 959 | } 960 | } 961 | }, 962 | "node_modules/listr2/node_modules/cli-truncate": { 963 | "version": "2.1.0", 964 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", 965 | "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", 966 | "dev": true, 967 | "dependencies": { 968 | "slice-ansi": "^3.0.0", 969 | "string-width": "^4.2.0" 970 | }, 971 | "engines": { 972 | "node": ">=8" 973 | }, 974 | "funding": { 975 | "url": "https://github.com/sponsors/sindresorhus" 976 | } 977 | }, 978 | "node_modules/listr2/node_modules/slice-ansi": { 979 | "version": "3.0.0", 980 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", 981 | "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", 982 | "dev": true, 983 | "dependencies": { 984 | "ansi-styles": "^4.0.0", 985 | "astral-regex": "^2.0.0", 986 | "is-fullwidth-code-point": "^3.0.0" 987 | }, 988 | "engines": { 989 | "node": ">=8" 990 | } 991 | }, 992 | "node_modules/locate-path": { 993 | "version": "6.0.0", 994 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 995 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 996 | "dev": true, 997 | "dependencies": { 998 | "p-locate": "^5.0.0" 999 | }, 1000 | "engines": { 1001 | "node": ">=10" 1002 | }, 1003 | "funding": { 1004 | "url": "https://github.com/sponsors/sindresorhus" 1005 | } 1006 | }, 1007 | "node_modules/log-symbols": { 1008 | "version": "4.1.0", 1009 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1010 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1011 | "dev": true, 1012 | "dependencies": { 1013 | "chalk": "^4.1.0", 1014 | "is-unicode-supported": "^0.1.0" 1015 | }, 1016 | "engines": { 1017 | "node": ">=10" 1018 | }, 1019 | "funding": { 1020 | "url": "https://github.com/sponsors/sindresorhus" 1021 | } 1022 | }, 1023 | "node_modules/log-update": { 1024 | "version": "4.0.0", 1025 | "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", 1026 | "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", 1027 | "dev": true, 1028 | "dependencies": { 1029 | "ansi-escapes": "^4.3.0", 1030 | "cli-cursor": "^3.1.0", 1031 | "slice-ansi": "^4.0.0", 1032 | "wrap-ansi": "^6.2.0" 1033 | }, 1034 | "engines": { 1035 | "node": ">=10" 1036 | }, 1037 | "funding": { 1038 | "url": "https://github.com/sponsors/sindresorhus" 1039 | } 1040 | }, 1041 | "node_modules/log-update/node_modules/slice-ansi": { 1042 | "version": "4.0.0", 1043 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 1044 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 1045 | "dev": true, 1046 | "dependencies": { 1047 | "ansi-styles": "^4.0.0", 1048 | "astral-regex": "^2.0.0", 1049 | "is-fullwidth-code-point": "^3.0.0" 1050 | }, 1051 | "engines": { 1052 | "node": ">=10" 1053 | }, 1054 | "funding": { 1055 | "url": "https://github.com/chalk/slice-ansi?sponsor=1" 1056 | } 1057 | }, 1058 | "node_modules/log-update/node_modules/wrap-ansi": { 1059 | "version": "6.2.0", 1060 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 1061 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 1062 | "dev": true, 1063 | "dependencies": { 1064 | "ansi-styles": "^4.0.0", 1065 | "string-width": "^4.1.0", 1066 | "strip-ansi": "^6.0.0" 1067 | }, 1068 | "engines": { 1069 | "node": ">=8" 1070 | } 1071 | }, 1072 | "node_modules/merge-stream": { 1073 | "version": "2.0.0", 1074 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1075 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1076 | "dev": true 1077 | }, 1078 | "node_modules/micromatch": { 1079 | "version": "4.0.5", 1080 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1081 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1082 | "dev": true, 1083 | "dependencies": { 1084 | "braces": "^3.0.2", 1085 | "picomatch": "^2.3.1" 1086 | }, 1087 | "engines": { 1088 | "node": ">=8.6" 1089 | } 1090 | }, 1091 | "node_modules/mimic-fn": { 1092 | "version": "2.1.0", 1093 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1094 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1095 | "dev": true, 1096 | "engines": { 1097 | "node": ">=6" 1098 | } 1099 | }, 1100 | "node_modules/minimatch": { 1101 | "version": "3.0.4", 1102 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1103 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1104 | "dev": true, 1105 | "dependencies": { 1106 | "brace-expansion": "^1.1.7" 1107 | }, 1108 | "engines": { 1109 | "node": "*" 1110 | } 1111 | }, 1112 | "node_modules/mkdirp": { 1113 | "version": "0.5.1", 1114 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1115 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1116 | "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", 1117 | "dev": true, 1118 | "dependencies": { 1119 | "minimist": "0.0.8" 1120 | }, 1121 | "bin": { 1122 | "mkdirp": "bin/cmd.js" 1123 | } 1124 | }, 1125 | "node_modules/mkdirp/node_modules/minimist": { 1126 | "version": "0.0.8", 1127 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1128 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1129 | "dev": true 1130 | }, 1131 | "node_modules/mocha": { 1132 | "version": "10.0.0", 1133 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", 1134 | "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", 1135 | "dev": true, 1136 | "dependencies": { 1137 | "@ungap/promise-all-settled": "1.1.2", 1138 | "ansi-colors": "4.1.1", 1139 | "browser-stdout": "1.3.1", 1140 | "chokidar": "3.5.3", 1141 | "debug": "4.3.4", 1142 | "diff": "5.0.0", 1143 | "escape-string-regexp": "4.0.0", 1144 | "find-up": "5.0.0", 1145 | "glob": "7.2.0", 1146 | "he": "1.2.0", 1147 | "js-yaml": "4.1.0", 1148 | "log-symbols": "4.1.0", 1149 | "minimatch": "5.0.1", 1150 | "ms": "2.1.3", 1151 | "nanoid": "3.3.3", 1152 | "serialize-javascript": "6.0.0", 1153 | "strip-json-comments": "3.1.1", 1154 | "supports-color": "8.1.1", 1155 | "workerpool": "6.2.1", 1156 | "yargs": "16.2.0", 1157 | "yargs-parser": "20.2.4", 1158 | "yargs-unparser": "2.0.0" 1159 | }, 1160 | "bin": { 1161 | "_mocha": "bin/_mocha", 1162 | "mocha": "bin/mocha.js" 1163 | }, 1164 | "engines": { 1165 | "node": ">= 14.0.0" 1166 | }, 1167 | "funding": { 1168 | "type": "opencollective", 1169 | "url": "https://opencollective.com/mochajs" 1170 | } 1171 | }, 1172 | "node_modules/mocha/node_modules/diff": { 1173 | "version": "5.0.0", 1174 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 1175 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 1176 | "dev": true, 1177 | "engines": { 1178 | "node": ">=0.3.1" 1179 | } 1180 | }, 1181 | "node_modules/mocha/node_modules/escape-string-regexp": { 1182 | "version": "4.0.0", 1183 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1184 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1185 | "dev": true, 1186 | "engines": { 1187 | "node": ">=10" 1188 | }, 1189 | "funding": { 1190 | "url": "https://github.com/sponsors/sindresorhus" 1191 | } 1192 | }, 1193 | "node_modules/mocha/node_modules/glob": { 1194 | "version": "7.2.0", 1195 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 1196 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 1197 | "dev": true, 1198 | "dependencies": { 1199 | "fs.realpath": "^1.0.0", 1200 | "inflight": "^1.0.4", 1201 | "inherits": "2", 1202 | "minimatch": "^3.0.4", 1203 | "once": "^1.3.0", 1204 | "path-is-absolute": "^1.0.0" 1205 | }, 1206 | "engines": { 1207 | "node": "*" 1208 | }, 1209 | "funding": { 1210 | "url": "https://github.com/sponsors/isaacs" 1211 | } 1212 | }, 1213 | "node_modules/mocha/node_modules/glob/node_modules/minimatch": { 1214 | "version": "3.1.2", 1215 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1216 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1217 | "dev": true, 1218 | "dependencies": { 1219 | "brace-expansion": "^1.1.7" 1220 | }, 1221 | "engines": { 1222 | "node": "*" 1223 | } 1224 | }, 1225 | "node_modules/mocha/node_modules/has-flag": { 1226 | "version": "4.0.0", 1227 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1228 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1229 | "dev": true, 1230 | "engines": { 1231 | "node": ">=8" 1232 | } 1233 | }, 1234 | "node_modules/mocha/node_modules/he": { 1235 | "version": "1.2.0", 1236 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1237 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1238 | "dev": true, 1239 | "bin": { 1240 | "he": "bin/he" 1241 | } 1242 | }, 1243 | "node_modules/mocha/node_modules/minimatch": { 1244 | "version": "5.0.1", 1245 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 1246 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 1247 | "dev": true, 1248 | "dependencies": { 1249 | "brace-expansion": "^2.0.1" 1250 | }, 1251 | "engines": { 1252 | "node": ">=10" 1253 | } 1254 | }, 1255 | "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { 1256 | "version": "2.0.1", 1257 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1258 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1259 | "dev": true, 1260 | "dependencies": { 1261 | "balanced-match": "^1.0.0" 1262 | } 1263 | }, 1264 | "node_modules/mocha/node_modules/ms": { 1265 | "version": "2.1.3", 1266 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1267 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1268 | "dev": true 1269 | }, 1270 | "node_modules/mocha/node_modules/supports-color": { 1271 | "version": "8.1.1", 1272 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1273 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1274 | "dev": true, 1275 | "dependencies": { 1276 | "has-flag": "^4.0.0" 1277 | }, 1278 | "engines": { 1279 | "node": ">=10" 1280 | }, 1281 | "funding": { 1282 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1283 | } 1284 | }, 1285 | "node_modules/ms": { 1286 | "version": "2.1.2", 1287 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1288 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1289 | "dev": true 1290 | }, 1291 | "node_modules/nanoid": { 1292 | "version": "3.3.3", 1293 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", 1294 | "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", 1295 | "dev": true, 1296 | "bin": { 1297 | "nanoid": "bin/nanoid.cjs" 1298 | }, 1299 | "engines": { 1300 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1301 | } 1302 | }, 1303 | "node_modules/normalize-path": { 1304 | "version": "3.0.0", 1305 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1306 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1307 | "dev": true, 1308 | "engines": { 1309 | "node": ">=0.10.0" 1310 | } 1311 | }, 1312 | "node_modules/npm-run-path": { 1313 | "version": "4.0.1", 1314 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 1315 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 1316 | "dev": true, 1317 | "dependencies": { 1318 | "path-key": "^3.0.0" 1319 | }, 1320 | "engines": { 1321 | "node": ">=8" 1322 | } 1323 | }, 1324 | "node_modules/object-inspect": { 1325 | "version": "1.12.0", 1326 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 1327 | "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", 1328 | "dev": true, 1329 | "funding": { 1330 | "url": "https://github.com/sponsors/ljharb" 1331 | } 1332 | }, 1333 | "node_modules/once": { 1334 | "version": "1.4.0", 1335 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1336 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1337 | "dependencies": { 1338 | "wrappy": "1" 1339 | } 1340 | }, 1341 | "node_modules/onetime": { 1342 | "version": "5.1.2", 1343 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1344 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1345 | "dev": true, 1346 | "dependencies": { 1347 | "mimic-fn": "^2.1.0" 1348 | }, 1349 | "engines": { 1350 | "node": ">=6" 1351 | }, 1352 | "funding": { 1353 | "url": "https://github.com/sponsors/sindresorhus" 1354 | } 1355 | }, 1356 | "node_modules/p-limit": { 1357 | "version": "3.1.0", 1358 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1359 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1360 | "dev": true, 1361 | "dependencies": { 1362 | "yocto-queue": "^0.1.0" 1363 | }, 1364 | "engines": { 1365 | "node": ">=10" 1366 | }, 1367 | "funding": { 1368 | "url": "https://github.com/sponsors/sindresorhus" 1369 | } 1370 | }, 1371 | "node_modules/p-locate": { 1372 | "version": "5.0.0", 1373 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1374 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1375 | "dev": true, 1376 | "dependencies": { 1377 | "p-limit": "^3.0.2" 1378 | }, 1379 | "engines": { 1380 | "node": ">=10" 1381 | }, 1382 | "funding": { 1383 | "url": "https://github.com/sponsors/sindresorhus" 1384 | } 1385 | }, 1386 | "node_modules/p-map": { 1387 | "version": "4.0.0", 1388 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", 1389 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", 1390 | "dev": true, 1391 | "dependencies": { 1392 | "aggregate-error": "^3.0.0" 1393 | }, 1394 | "engines": { 1395 | "node": ">=10" 1396 | }, 1397 | "funding": { 1398 | "url": "https://github.com/sponsors/sindresorhus" 1399 | } 1400 | }, 1401 | "node_modules/path-exists": { 1402 | "version": "4.0.0", 1403 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1404 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1405 | "dev": true, 1406 | "engines": { 1407 | "node": ">=8" 1408 | } 1409 | }, 1410 | "node_modules/path-is-absolute": { 1411 | "version": "1.0.1", 1412 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1413 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1414 | "engines": { 1415 | "node": ">=0.10.0" 1416 | } 1417 | }, 1418 | "node_modules/path-key": { 1419 | "version": "3.1.1", 1420 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1421 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1422 | "dev": true, 1423 | "engines": { 1424 | "node": ">=8" 1425 | } 1426 | }, 1427 | "node_modules/picomatch": { 1428 | "version": "2.3.1", 1429 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1430 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1431 | "dev": true, 1432 | "engines": { 1433 | "node": ">=8.6" 1434 | }, 1435 | "funding": { 1436 | "url": "https://github.com/sponsors/jonschlinkert" 1437 | } 1438 | }, 1439 | "node_modules/pidtree": { 1440 | "version": "0.5.0", 1441 | "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", 1442 | "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", 1443 | "dev": true, 1444 | "bin": { 1445 | "pidtree": "bin/pidtree.js" 1446 | }, 1447 | "engines": { 1448 | "node": ">=0.10" 1449 | } 1450 | }, 1451 | "node_modules/prettier": { 1452 | "version": "2.6.2", 1453 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", 1454 | "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", 1455 | "dev": true, 1456 | "bin": { 1457 | "prettier": "bin-prettier.js" 1458 | }, 1459 | "engines": { 1460 | "node": ">=10.13.0" 1461 | }, 1462 | "funding": { 1463 | "url": "https://github.com/prettier/prettier?sponsor=1" 1464 | } 1465 | }, 1466 | "node_modules/prettier-plugin-organize-imports": { 1467 | "version": "2.3.4", 1468 | "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-2.3.4.tgz", 1469 | "integrity": "sha512-R8o23sf5iVL/U71h9SFUdhdOEPsi3nm42FD/oDYIZ2PQa4TNWWuWecxln6jlIQzpZTDMUeO1NicJP6lLn2TtRw==", 1470 | "dev": true, 1471 | "peerDependencies": { 1472 | "prettier": ">=2.0", 1473 | "typescript": ">=2.9" 1474 | } 1475 | }, 1476 | "node_modules/randombytes": { 1477 | "version": "2.1.0", 1478 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1479 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1480 | "dev": true, 1481 | "dependencies": { 1482 | "safe-buffer": "^5.1.0" 1483 | } 1484 | }, 1485 | "node_modules/readdirp": { 1486 | "version": "3.6.0", 1487 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1488 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1489 | "dev": true, 1490 | "dependencies": { 1491 | "picomatch": "^2.2.1" 1492 | }, 1493 | "engines": { 1494 | "node": ">=8.10.0" 1495 | } 1496 | }, 1497 | "node_modules/require-directory": { 1498 | "version": "2.1.1", 1499 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1500 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 1501 | "dev": true, 1502 | "engines": { 1503 | "node": ">=0.10.0" 1504 | } 1505 | }, 1506 | "node_modules/restore-cursor": { 1507 | "version": "3.1.0", 1508 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 1509 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 1510 | "dev": true, 1511 | "dependencies": { 1512 | "onetime": "^5.1.0", 1513 | "signal-exit": "^3.0.2" 1514 | }, 1515 | "engines": { 1516 | "node": ">=8" 1517 | } 1518 | }, 1519 | "node_modules/rfdc": { 1520 | "version": "1.3.0", 1521 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", 1522 | "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", 1523 | "dev": true 1524 | }, 1525 | "node_modules/rxjs": { 1526 | "version": "7.5.5", 1527 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", 1528 | "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", 1529 | "dev": true, 1530 | "dependencies": { 1531 | "tslib": "^2.1.0" 1532 | } 1533 | }, 1534 | "node_modules/safe-buffer": { 1535 | "version": "5.2.1", 1536 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1537 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1538 | "dev": true, 1539 | "funding": [ 1540 | { 1541 | "type": "github", 1542 | "url": "https://github.com/sponsors/feross" 1543 | }, 1544 | { 1545 | "type": "patreon", 1546 | "url": "https://www.patreon.com/feross" 1547 | }, 1548 | { 1549 | "type": "consulting", 1550 | "url": "https://feross.org/support" 1551 | } 1552 | ] 1553 | }, 1554 | "node_modules/semver": { 1555 | "version": "5.4.1", 1556 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", 1557 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", 1558 | "dev": true, 1559 | "bin": { 1560 | "semver": "bin/semver" 1561 | } 1562 | }, 1563 | "node_modules/serialize-javascript": { 1564 | "version": "6.0.0", 1565 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 1566 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 1567 | "dev": true, 1568 | "dependencies": { 1569 | "randombytes": "^2.1.0" 1570 | } 1571 | }, 1572 | "node_modules/shebang-command": { 1573 | "version": "2.0.0", 1574 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1575 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1576 | "dev": true, 1577 | "dependencies": { 1578 | "shebang-regex": "^3.0.0" 1579 | }, 1580 | "engines": { 1581 | "node": ">=8" 1582 | } 1583 | }, 1584 | "node_modules/shebang-regex": { 1585 | "version": "3.0.0", 1586 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1587 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1588 | "dev": true, 1589 | "engines": { 1590 | "node": ">=8" 1591 | } 1592 | }, 1593 | "node_modules/signal-exit": { 1594 | "version": "3.0.7", 1595 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1596 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 1597 | "dev": true 1598 | }, 1599 | "node_modules/slice-ansi": { 1600 | "version": "5.0.0", 1601 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", 1602 | "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", 1603 | "dev": true, 1604 | "dependencies": { 1605 | "ansi-styles": "^6.0.0", 1606 | "is-fullwidth-code-point": "^4.0.0" 1607 | }, 1608 | "engines": { 1609 | "node": ">=12" 1610 | }, 1611 | "funding": { 1612 | "url": "https://github.com/chalk/slice-ansi?sponsor=1" 1613 | } 1614 | }, 1615 | "node_modules/slice-ansi/node_modules/ansi-styles": { 1616 | "version": "6.1.0", 1617 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", 1618 | "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", 1619 | "dev": true, 1620 | "engines": { 1621 | "node": ">=12" 1622 | }, 1623 | "funding": { 1624 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1625 | } 1626 | }, 1627 | "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { 1628 | "version": "4.0.0", 1629 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", 1630 | "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", 1631 | "dev": true, 1632 | "engines": { 1633 | "node": ">=12" 1634 | }, 1635 | "funding": { 1636 | "url": "https://github.com/sponsors/sindresorhus" 1637 | } 1638 | }, 1639 | "node_modules/source-map": { 1640 | "version": "0.6.1", 1641 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1642 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1643 | "dev": true, 1644 | "engines": { 1645 | "node": ">=0.10.0" 1646 | } 1647 | }, 1648 | "node_modules/source-map-support": { 1649 | "version": "0.5.0", 1650 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", 1651 | "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", 1652 | "dev": true, 1653 | "dependencies": { 1654 | "source-map": "^0.6.0" 1655 | } 1656 | }, 1657 | "node_modules/string-argv": { 1658 | "version": "0.3.1", 1659 | "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", 1660 | "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", 1661 | "dev": true, 1662 | "engines": { 1663 | "node": ">=0.6.19" 1664 | } 1665 | }, 1666 | "node_modules/string-width": { 1667 | "version": "4.2.3", 1668 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1669 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1670 | "dev": true, 1671 | "dependencies": { 1672 | "emoji-regex": "^8.0.0", 1673 | "is-fullwidth-code-point": "^3.0.0", 1674 | "strip-ansi": "^6.0.1" 1675 | }, 1676 | "engines": { 1677 | "node": ">=8" 1678 | } 1679 | }, 1680 | "node_modules/strip-ansi": { 1681 | "version": "6.0.1", 1682 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1683 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1684 | "dev": true, 1685 | "dependencies": { 1686 | "ansi-regex": "^5.0.1" 1687 | }, 1688 | "engines": { 1689 | "node": ">=8" 1690 | } 1691 | }, 1692 | "node_modules/strip-final-newline": { 1693 | "version": "2.0.0", 1694 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 1695 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 1696 | "dev": true, 1697 | "engines": { 1698 | "node": ">=6" 1699 | } 1700 | }, 1701 | "node_modules/strip-json-comments": { 1702 | "version": "3.1.1", 1703 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1704 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1705 | "dev": true, 1706 | "engines": { 1707 | "node": ">=8" 1708 | }, 1709 | "funding": { 1710 | "url": "https://github.com/sponsors/sindresorhus" 1711 | } 1712 | }, 1713 | "node_modules/supports-color": { 1714 | "version": "5.4.0", 1715 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 1716 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 1717 | "dev": true, 1718 | "dependencies": { 1719 | "has-flag": "^3.0.0" 1720 | }, 1721 | "engines": { 1722 | "node": ">=4" 1723 | } 1724 | }, 1725 | "node_modules/through": { 1726 | "version": "2.3.8", 1727 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1728 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1729 | "dev": true 1730 | }, 1731 | "node_modules/to-regex-range": { 1732 | "version": "5.0.1", 1733 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1734 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1735 | "dev": true, 1736 | "dependencies": { 1737 | "is-number": "^7.0.0" 1738 | }, 1739 | "engines": { 1740 | "node": ">=8.0" 1741 | } 1742 | }, 1743 | "node_modules/tslib": { 1744 | "version": "2.4.0", 1745 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 1746 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 1747 | "dev": true 1748 | }, 1749 | "node_modules/type-fest": { 1750 | "version": "0.21.3", 1751 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 1752 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 1753 | "dev": true, 1754 | "engines": { 1755 | "node": ">=10" 1756 | }, 1757 | "funding": { 1758 | "url": "https://github.com/sponsors/sindresorhus" 1759 | } 1760 | }, 1761 | "node_modules/typescript": { 1762 | "version": "4.6.4", 1763 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", 1764 | "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", 1765 | "dev": true, 1766 | "bin": { 1767 | "tsc": "bin/tsc", 1768 | "tsserver": "bin/tsserver" 1769 | }, 1770 | "engines": { 1771 | "node": ">=4.2.0" 1772 | } 1773 | }, 1774 | "node_modules/vscode": { 1775 | "version": "1.1.37", 1776 | "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.37.tgz", 1777 | "integrity": "sha512-vJNj6IlN7IJPdMavlQa1KoFB3Ihn06q1AiN3ZFI/HfzPNzbKZWPPuiU+XkpNOfGU5k15m4r80nxNPlM7wcc0wg==", 1778 | "deprecated": "This package is deprecated in favor of @types/vscode and vscode-test. For more information please read: https://code.visualstudio.com/updates/v1_36#_splitting-vscode-package-into-typesvscode-and-vscodetest", 1779 | "dev": true, 1780 | "dependencies": { 1781 | "glob": "^7.1.2", 1782 | "http-proxy-agent": "^4.0.1", 1783 | "https-proxy-agent": "^5.0.0", 1784 | "mocha": "^5.2.0", 1785 | "semver": "^5.4.1", 1786 | "source-map-support": "^0.5.0", 1787 | "vscode-test": "^0.4.1" 1788 | }, 1789 | "bin": { 1790 | "vscode-install": "bin/install" 1791 | }, 1792 | "engines": { 1793 | "node": ">=8.9.3" 1794 | } 1795 | }, 1796 | "node_modules/vscode-test": { 1797 | "version": "0.4.3", 1798 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.3.tgz", 1799 | "integrity": "sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w==", 1800 | "deprecated": "This package has been renamed to @vscode/test-electron, please update to the new name", 1801 | "dev": true, 1802 | "dependencies": { 1803 | "http-proxy-agent": "^2.1.0", 1804 | "https-proxy-agent": "^2.2.1" 1805 | }, 1806 | "engines": { 1807 | "node": ">=8.9.3" 1808 | } 1809 | }, 1810 | "node_modules/vscode-test/node_modules/agent-base": { 1811 | "version": "4.3.0", 1812 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", 1813 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", 1814 | "dev": true, 1815 | "dependencies": { 1816 | "es6-promisify": "^5.0.0" 1817 | }, 1818 | "engines": { 1819 | "node": ">= 4.0.0" 1820 | } 1821 | }, 1822 | "node_modules/vscode-test/node_modules/debug": { 1823 | "version": "3.1.0", 1824 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1825 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1826 | "dev": true, 1827 | "dependencies": { 1828 | "ms": "2.0.0" 1829 | } 1830 | }, 1831 | "node_modules/vscode-test/node_modules/http-proxy-agent": { 1832 | "version": "2.1.0", 1833 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", 1834 | "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", 1835 | "dev": true, 1836 | "dependencies": { 1837 | "agent-base": "4", 1838 | "debug": "3.1.0" 1839 | }, 1840 | "engines": { 1841 | "node": ">= 4.5.0" 1842 | } 1843 | }, 1844 | "node_modules/vscode-test/node_modules/https-proxy-agent": { 1845 | "version": "2.2.4", 1846 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", 1847 | "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", 1848 | "dev": true, 1849 | "dependencies": { 1850 | "agent-base": "^4.3.0", 1851 | "debug": "^3.1.0" 1852 | }, 1853 | "engines": { 1854 | "node": ">= 4.5.0" 1855 | } 1856 | }, 1857 | "node_modules/vscode-test/node_modules/ms": { 1858 | "version": "2.0.0", 1859 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1860 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1861 | "dev": true 1862 | }, 1863 | "node_modules/vscode/node_modules/debug": { 1864 | "version": "3.1.0", 1865 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1866 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1867 | "dev": true, 1868 | "dependencies": { 1869 | "ms": "2.0.0" 1870 | } 1871 | }, 1872 | "node_modules/vscode/node_modules/glob": { 1873 | "version": "7.2.0", 1874 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 1875 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 1876 | "dev": true, 1877 | "dependencies": { 1878 | "fs.realpath": "^1.0.0", 1879 | "inflight": "^1.0.4", 1880 | "inherits": "2", 1881 | "minimatch": "^3.0.4", 1882 | "once": "^1.3.0", 1883 | "path-is-absolute": "^1.0.0" 1884 | }, 1885 | "engines": { 1886 | "node": "*" 1887 | }, 1888 | "funding": { 1889 | "url": "https://github.com/sponsors/isaacs" 1890 | } 1891 | }, 1892 | "node_modules/vscode/node_modules/mocha": { 1893 | "version": "5.2.0", 1894 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", 1895 | "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", 1896 | "dev": true, 1897 | "dependencies": { 1898 | "browser-stdout": "1.3.1", 1899 | "commander": "2.15.1", 1900 | "debug": "3.1.0", 1901 | "diff": "3.5.0", 1902 | "escape-string-regexp": "1.0.5", 1903 | "glob": "7.1.2", 1904 | "growl": "1.10.5", 1905 | "he": "1.1.1", 1906 | "minimatch": "3.0.4", 1907 | "mkdirp": "0.5.1", 1908 | "supports-color": "5.4.0" 1909 | }, 1910 | "bin": { 1911 | "_mocha": "bin/_mocha", 1912 | "mocha": "bin/mocha" 1913 | }, 1914 | "engines": { 1915 | "node": ">= 4.0.0" 1916 | } 1917 | }, 1918 | "node_modules/vscode/node_modules/mocha/node_modules/glob": { 1919 | "version": "7.1.2", 1920 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 1921 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 1922 | "dev": true, 1923 | "dependencies": { 1924 | "fs.realpath": "^1.0.0", 1925 | "inflight": "^1.0.4", 1926 | "inherits": "2", 1927 | "minimatch": "^3.0.4", 1928 | "once": "^1.3.0", 1929 | "path-is-absolute": "^1.0.0" 1930 | }, 1931 | "engines": { 1932 | "node": "*" 1933 | } 1934 | }, 1935 | "node_modules/vscode/node_modules/ms": { 1936 | "version": "2.0.0", 1937 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1938 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1939 | "dev": true 1940 | }, 1941 | "node_modules/which": { 1942 | "version": "2.0.2", 1943 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1944 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1945 | "dev": true, 1946 | "dependencies": { 1947 | "isexe": "^2.0.0" 1948 | }, 1949 | "bin": { 1950 | "node-which": "bin/node-which" 1951 | }, 1952 | "engines": { 1953 | "node": ">= 8" 1954 | } 1955 | }, 1956 | "node_modules/workerpool": { 1957 | "version": "6.2.1", 1958 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", 1959 | "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", 1960 | "dev": true 1961 | }, 1962 | "node_modules/wrap-ansi": { 1963 | "version": "7.0.0", 1964 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1965 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1966 | "dev": true, 1967 | "dependencies": { 1968 | "ansi-styles": "^4.0.0", 1969 | "string-width": "^4.1.0", 1970 | "strip-ansi": "^6.0.0" 1971 | }, 1972 | "engines": { 1973 | "node": ">=10" 1974 | }, 1975 | "funding": { 1976 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1977 | } 1978 | }, 1979 | "node_modules/wrappy": { 1980 | "version": "1.0.2", 1981 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1982 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1983 | }, 1984 | "node_modules/y18n": { 1985 | "version": "5.0.8", 1986 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1987 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1988 | "dev": true, 1989 | "engines": { 1990 | "node": ">=10" 1991 | } 1992 | }, 1993 | "node_modules/yaml": { 1994 | "version": "1.10.2", 1995 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 1996 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 1997 | "dev": true, 1998 | "engines": { 1999 | "node": ">= 6" 2000 | } 2001 | }, 2002 | "node_modules/yargs": { 2003 | "version": "16.2.0", 2004 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 2005 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 2006 | "dev": true, 2007 | "dependencies": { 2008 | "cliui": "^7.0.2", 2009 | "escalade": "^3.1.1", 2010 | "get-caller-file": "^2.0.5", 2011 | "require-directory": "^2.1.1", 2012 | "string-width": "^4.2.0", 2013 | "y18n": "^5.0.5", 2014 | "yargs-parser": "^20.2.2" 2015 | }, 2016 | "engines": { 2017 | "node": ">=10" 2018 | } 2019 | }, 2020 | "node_modules/yargs-parser": { 2021 | "version": "20.2.4", 2022 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 2023 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 2024 | "dev": true, 2025 | "engines": { 2026 | "node": ">=10" 2027 | } 2028 | }, 2029 | "node_modules/yargs-unparser": { 2030 | "version": "2.0.0", 2031 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 2032 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 2033 | "dev": true, 2034 | "dependencies": { 2035 | "camelcase": "^6.0.0", 2036 | "decamelize": "^4.0.0", 2037 | "flat": "^5.0.2", 2038 | "is-plain-obj": "^2.1.0" 2039 | }, 2040 | "engines": { 2041 | "node": ">=10" 2042 | } 2043 | }, 2044 | "node_modules/yocto-queue": { 2045 | "version": "0.1.0", 2046 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2047 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2048 | "dev": true, 2049 | "engines": { 2050 | "node": ">=10" 2051 | }, 2052 | "funding": { 2053 | "url": "https://github.com/sponsors/sindresorhus" 2054 | } 2055 | } 2056 | }, 2057 | "dependencies": { 2058 | "@tootallnate/once": { 2059 | "version": "1.1.2", 2060 | "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", 2061 | "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", 2062 | "dev": true 2063 | }, 2064 | "@types/glob": { 2065 | "version": "7.2.0", 2066 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", 2067 | "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", 2068 | "requires": { 2069 | "@types/minimatch": "*", 2070 | "@types/node": "*" 2071 | } 2072 | }, 2073 | "@types/minimatch": { 2074 | "version": "3.0.5", 2075 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", 2076 | "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" 2077 | }, 2078 | "@types/mocha": { 2079 | "version": "9.1.1", 2080 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", 2081 | "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", 2082 | "dev": true 2083 | }, 2084 | "@types/node": { 2085 | "version": "17.0.31", 2086 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", 2087 | "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==" 2088 | }, 2089 | "@ungap/promise-all-settled": { 2090 | "version": "1.1.2", 2091 | "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", 2092 | "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", 2093 | "dev": true 2094 | }, 2095 | "agent-base": { 2096 | "version": "6.0.2", 2097 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 2098 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 2099 | "dev": true, 2100 | "requires": { 2101 | "debug": "4" 2102 | } 2103 | }, 2104 | "aggregate-error": { 2105 | "version": "3.1.0", 2106 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 2107 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 2108 | "dev": true, 2109 | "requires": { 2110 | "clean-stack": "^2.0.0", 2111 | "indent-string": "^4.0.0" 2112 | } 2113 | }, 2114 | "ansi-colors": { 2115 | "version": "4.1.1", 2116 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 2117 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 2118 | "dev": true 2119 | }, 2120 | "ansi-escapes": { 2121 | "version": "4.3.2", 2122 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 2123 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 2124 | "dev": true, 2125 | "requires": { 2126 | "type-fest": "^0.21.3" 2127 | } 2128 | }, 2129 | "ansi-regex": { 2130 | "version": "5.0.1", 2131 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2132 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2133 | "dev": true 2134 | }, 2135 | "ansi-styles": { 2136 | "version": "4.3.0", 2137 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2138 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2139 | "dev": true, 2140 | "requires": { 2141 | "color-convert": "^2.0.1" 2142 | } 2143 | }, 2144 | "anymatch": { 2145 | "version": "3.1.2", 2146 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 2147 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 2148 | "dev": true, 2149 | "requires": { 2150 | "normalize-path": "^3.0.0", 2151 | "picomatch": "^2.0.4" 2152 | } 2153 | }, 2154 | "argparse": { 2155 | "version": "2.0.1", 2156 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 2157 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 2158 | "dev": true 2159 | }, 2160 | "astral-regex": { 2161 | "version": "2.0.0", 2162 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 2163 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 2164 | "dev": true 2165 | }, 2166 | "balanced-match": { 2167 | "version": "1.0.0", 2168 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 2169 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 2170 | }, 2171 | "binary-extensions": { 2172 | "version": "2.2.0", 2173 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 2174 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 2175 | "dev": true 2176 | }, 2177 | "brace-expansion": { 2178 | "version": "1.1.8", 2179 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 2180 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 2181 | "dev": true, 2182 | "requires": { 2183 | "balanced-match": "^1.0.0", 2184 | "concat-map": "0.0.1" 2185 | } 2186 | }, 2187 | "braces": { 2188 | "version": "3.0.2", 2189 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 2190 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 2191 | "dev": true, 2192 | "requires": { 2193 | "fill-range": "^7.0.1" 2194 | } 2195 | }, 2196 | "browser-stdout": { 2197 | "version": "1.3.1", 2198 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 2199 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 2200 | "dev": true 2201 | }, 2202 | "camelcase": { 2203 | "version": "6.3.0", 2204 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 2205 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 2206 | "dev": true 2207 | }, 2208 | "chalk": { 2209 | "version": "4.1.2", 2210 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2211 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2212 | "dev": true, 2213 | "requires": { 2214 | "ansi-styles": "^4.1.0", 2215 | "supports-color": "^7.1.0" 2216 | }, 2217 | "dependencies": { 2218 | "has-flag": { 2219 | "version": "4.0.0", 2220 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2221 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2222 | "dev": true 2223 | }, 2224 | "supports-color": { 2225 | "version": "7.2.0", 2226 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2227 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2228 | "dev": true, 2229 | "requires": { 2230 | "has-flag": "^4.0.0" 2231 | } 2232 | } 2233 | } 2234 | }, 2235 | "chokidar": { 2236 | "version": "3.5.3", 2237 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 2238 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 2239 | "dev": true, 2240 | "requires": { 2241 | "anymatch": "~3.1.2", 2242 | "braces": "~3.0.2", 2243 | "fsevents": "~2.3.2", 2244 | "glob-parent": "~5.1.2", 2245 | "is-binary-path": "~2.1.0", 2246 | "is-glob": "~4.0.1", 2247 | "normalize-path": "~3.0.0", 2248 | "readdirp": "~3.6.0" 2249 | } 2250 | }, 2251 | "clean-stack": { 2252 | "version": "2.2.0", 2253 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 2254 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 2255 | "dev": true 2256 | }, 2257 | "cli-cursor": { 2258 | "version": "3.1.0", 2259 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 2260 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 2261 | "dev": true, 2262 | "requires": { 2263 | "restore-cursor": "^3.1.0" 2264 | } 2265 | }, 2266 | "cli-truncate": { 2267 | "version": "3.1.0", 2268 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", 2269 | "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", 2270 | "dev": true, 2271 | "requires": { 2272 | "slice-ansi": "^5.0.0", 2273 | "string-width": "^5.0.0" 2274 | }, 2275 | "dependencies": { 2276 | "ansi-regex": { 2277 | "version": "6.0.1", 2278 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 2279 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 2280 | "dev": true 2281 | }, 2282 | "emoji-regex": { 2283 | "version": "9.2.2", 2284 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 2285 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 2286 | "dev": true 2287 | }, 2288 | "string-width": { 2289 | "version": "5.1.2", 2290 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 2291 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 2292 | "dev": true, 2293 | "requires": { 2294 | "eastasianwidth": "^0.2.0", 2295 | "emoji-regex": "^9.2.2", 2296 | "strip-ansi": "^7.0.1" 2297 | } 2298 | }, 2299 | "strip-ansi": { 2300 | "version": "7.0.1", 2301 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", 2302 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", 2303 | "dev": true, 2304 | "requires": { 2305 | "ansi-regex": "^6.0.1" 2306 | } 2307 | } 2308 | } 2309 | }, 2310 | "cliui": { 2311 | "version": "7.0.4", 2312 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 2313 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 2314 | "dev": true, 2315 | "requires": { 2316 | "string-width": "^4.2.0", 2317 | "strip-ansi": "^6.0.0", 2318 | "wrap-ansi": "^7.0.0" 2319 | } 2320 | }, 2321 | "color-convert": { 2322 | "version": "2.0.1", 2323 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2324 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2325 | "dev": true, 2326 | "requires": { 2327 | "color-name": "~1.1.4" 2328 | } 2329 | }, 2330 | "color-name": { 2331 | "version": "1.1.4", 2332 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2333 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2334 | "dev": true 2335 | }, 2336 | "colorette": { 2337 | "version": "2.0.16", 2338 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", 2339 | "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", 2340 | "dev": true 2341 | }, 2342 | "commander": { 2343 | "version": "2.15.1", 2344 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", 2345 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", 2346 | "dev": true 2347 | }, 2348 | "concat-map": { 2349 | "version": "0.0.1", 2350 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2351 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 2352 | "dev": true 2353 | }, 2354 | "cross-spawn": { 2355 | "version": "7.0.3", 2356 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 2357 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 2358 | "dev": true, 2359 | "requires": { 2360 | "path-key": "^3.1.0", 2361 | "shebang-command": "^2.0.0", 2362 | "which": "^2.0.1" 2363 | } 2364 | }, 2365 | "debug": { 2366 | "version": "4.3.4", 2367 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2368 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2369 | "dev": true, 2370 | "requires": { 2371 | "ms": "2.1.2" 2372 | } 2373 | }, 2374 | "decamelize": { 2375 | "version": "4.0.0", 2376 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 2377 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 2378 | "dev": true 2379 | }, 2380 | "diff": { 2381 | "version": "3.5.0", 2382 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 2383 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 2384 | "dev": true 2385 | }, 2386 | "eastasianwidth": { 2387 | "version": "0.2.0", 2388 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 2389 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 2390 | "dev": true 2391 | }, 2392 | "emoji-regex": { 2393 | "version": "8.0.0", 2394 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2395 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2396 | "dev": true 2397 | }, 2398 | "es6-promise": { 2399 | "version": "4.2.8", 2400 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 2401 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", 2402 | "dev": true 2403 | }, 2404 | "es6-promisify": { 2405 | "version": "5.0.0", 2406 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", 2407 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", 2408 | "dev": true, 2409 | "requires": { 2410 | "es6-promise": "^4.0.3" 2411 | } 2412 | }, 2413 | "escalade": { 2414 | "version": "3.1.1", 2415 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2416 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2417 | "dev": true 2418 | }, 2419 | "escape-string-regexp": { 2420 | "version": "1.0.5", 2421 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2422 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 2423 | "dev": true 2424 | }, 2425 | "execa": { 2426 | "version": "5.1.1", 2427 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", 2428 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", 2429 | "dev": true, 2430 | "requires": { 2431 | "cross-spawn": "^7.0.3", 2432 | "get-stream": "^6.0.0", 2433 | "human-signals": "^2.1.0", 2434 | "is-stream": "^2.0.0", 2435 | "merge-stream": "^2.0.0", 2436 | "npm-run-path": "^4.0.1", 2437 | "onetime": "^5.1.2", 2438 | "signal-exit": "^3.0.3", 2439 | "strip-final-newline": "^2.0.0" 2440 | } 2441 | }, 2442 | "fill-range": { 2443 | "version": "7.0.1", 2444 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2445 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2446 | "dev": true, 2447 | "requires": { 2448 | "to-regex-range": "^5.0.1" 2449 | } 2450 | }, 2451 | "find-up": { 2452 | "version": "5.0.0", 2453 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2454 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2455 | "dev": true, 2456 | "requires": { 2457 | "locate-path": "^6.0.0", 2458 | "path-exists": "^4.0.0" 2459 | } 2460 | }, 2461 | "flat": { 2462 | "version": "5.0.2", 2463 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 2464 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 2465 | "dev": true 2466 | }, 2467 | "fs.realpath": { 2468 | "version": "1.0.0", 2469 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2470 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 2471 | }, 2472 | "fsevents": { 2473 | "version": "2.3.2", 2474 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2475 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2476 | "dev": true, 2477 | "optional": true 2478 | }, 2479 | "get-caller-file": { 2480 | "version": "2.0.5", 2481 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2482 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 2483 | "dev": true 2484 | }, 2485 | "get-stream": { 2486 | "version": "6.0.1", 2487 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", 2488 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", 2489 | "dev": true 2490 | }, 2491 | "glob": { 2492 | "version": "8.0.1", 2493 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.1.tgz", 2494 | "integrity": "sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow==", 2495 | "requires": { 2496 | "fs.realpath": "^1.0.0", 2497 | "inflight": "^1.0.4", 2498 | "inherits": "2", 2499 | "minimatch": "^5.0.1", 2500 | "once": "^1.3.0", 2501 | "path-is-absolute": "^1.0.0" 2502 | }, 2503 | "dependencies": { 2504 | "brace-expansion": { 2505 | "version": "2.0.1", 2506 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2507 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2508 | "requires": { 2509 | "balanced-match": "^1.0.0" 2510 | } 2511 | }, 2512 | "minimatch": { 2513 | "version": "5.0.1", 2514 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 2515 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 2516 | "requires": { 2517 | "brace-expansion": "^2.0.1" 2518 | } 2519 | } 2520 | } 2521 | }, 2522 | "glob-parent": { 2523 | "version": "5.1.2", 2524 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2525 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2526 | "dev": true, 2527 | "requires": { 2528 | "is-glob": "^4.0.1" 2529 | } 2530 | }, 2531 | "growl": { 2532 | "version": "1.10.5", 2533 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 2534 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 2535 | "dev": true 2536 | }, 2537 | "has-flag": { 2538 | "version": "3.0.0", 2539 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2540 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 2541 | "dev": true 2542 | }, 2543 | "he": { 2544 | "version": "1.1.1", 2545 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 2546 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", 2547 | "dev": true 2548 | }, 2549 | "http-proxy-agent": { 2550 | "version": "4.0.1", 2551 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", 2552 | "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", 2553 | "dev": true, 2554 | "requires": { 2555 | "@tootallnate/once": "1", 2556 | "agent-base": "6", 2557 | "debug": "4" 2558 | } 2559 | }, 2560 | "https-proxy-agent": { 2561 | "version": "5.0.1", 2562 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 2563 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 2564 | "dev": true, 2565 | "requires": { 2566 | "agent-base": "6", 2567 | "debug": "4" 2568 | } 2569 | }, 2570 | "human-signals": { 2571 | "version": "2.1.0", 2572 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", 2573 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", 2574 | "dev": true 2575 | }, 2576 | "husky": { 2577 | "version": "7.0.4", 2578 | "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", 2579 | "integrity": "sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==", 2580 | "dev": true 2581 | }, 2582 | "indent-string": { 2583 | "version": "4.0.0", 2584 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 2585 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 2586 | "dev": true 2587 | }, 2588 | "inflight": { 2589 | "version": "1.0.6", 2590 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2591 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2592 | "requires": { 2593 | "once": "^1.3.0", 2594 | "wrappy": "1" 2595 | } 2596 | }, 2597 | "inherits": { 2598 | "version": "2.0.3", 2599 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2600 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 2601 | }, 2602 | "is-binary-path": { 2603 | "version": "2.1.0", 2604 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 2605 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 2606 | "dev": true, 2607 | "requires": { 2608 | "binary-extensions": "^2.0.0" 2609 | } 2610 | }, 2611 | "is-extglob": { 2612 | "version": "2.1.1", 2613 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2614 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2615 | "dev": true 2616 | }, 2617 | "is-fullwidth-code-point": { 2618 | "version": "3.0.0", 2619 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2620 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2621 | "dev": true 2622 | }, 2623 | "is-glob": { 2624 | "version": "4.0.3", 2625 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2626 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2627 | "dev": true, 2628 | "requires": { 2629 | "is-extglob": "^2.1.1" 2630 | } 2631 | }, 2632 | "is-number": { 2633 | "version": "7.0.0", 2634 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2635 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2636 | "dev": true 2637 | }, 2638 | "is-plain-obj": { 2639 | "version": "2.1.0", 2640 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 2641 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 2642 | "dev": true 2643 | }, 2644 | "is-stream": { 2645 | "version": "2.0.1", 2646 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 2647 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 2648 | "dev": true 2649 | }, 2650 | "is-unicode-supported": { 2651 | "version": "0.1.0", 2652 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 2653 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 2654 | "dev": true 2655 | }, 2656 | "isexe": { 2657 | "version": "2.0.0", 2658 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2659 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 2660 | "dev": true 2661 | }, 2662 | "js-yaml": { 2663 | "version": "4.1.0", 2664 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2665 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2666 | "dev": true, 2667 | "requires": { 2668 | "argparse": "^2.0.1" 2669 | } 2670 | }, 2671 | "lilconfig": { 2672 | "version": "2.0.4", 2673 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", 2674 | "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", 2675 | "dev": true 2676 | }, 2677 | "lint-staged": { 2678 | "version": "12.4.1", 2679 | "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.4.1.tgz", 2680 | "integrity": "sha512-PTXgzpflrQ+pODQTG116QNB+Q6uUTDg5B5HqGvNhoQSGt8Qy+MA/6zSnR8n38+sxP5TapzeQGTvoKni0KRS8Vg==", 2681 | "dev": true, 2682 | "requires": { 2683 | "cli-truncate": "^3.1.0", 2684 | "colorette": "^2.0.16", 2685 | "commander": "^8.3.0", 2686 | "debug": "^4.3.3", 2687 | "execa": "^5.1.1", 2688 | "lilconfig": "2.0.4", 2689 | "listr2": "^4.0.1", 2690 | "micromatch": "^4.0.4", 2691 | "normalize-path": "^3.0.0", 2692 | "object-inspect": "^1.12.0", 2693 | "pidtree": "^0.5.0", 2694 | "string-argv": "^0.3.1", 2695 | "supports-color": "^9.2.1", 2696 | "yaml": "^1.10.2" 2697 | }, 2698 | "dependencies": { 2699 | "commander": { 2700 | "version": "8.3.0", 2701 | "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", 2702 | "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", 2703 | "dev": true 2704 | }, 2705 | "supports-color": { 2706 | "version": "9.2.2", 2707 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.2.tgz", 2708 | "integrity": "sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==", 2709 | "dev": true 2710 | } 2711 | } 2712 | }, 2713 | "listr2": { 2714 | "version": "4.0.5", 2715 | "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.5.tgz", 2716 | "integrity": "sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==", 2717 | "dev": true, 2718 | "requires": { 2719 | "cli-truncate": "^2.1.0", 2720 | "colorette": "^2.0.16", 2721 | "log-update": "^4.0.0", 2722 | "p-map": "^4.0.0", 2723 | "rfdc": "^1.3.0", 2724 | "rxjs": "^7.5.5", 2725 | "through": "^2.3.8", 2726 | "wrap-ansi": "^7.0.0" 2727 | }, 2728 | "dependencies": { 2729 | "cli-truncate": { 2730 | "version": "2.1.0", 2731 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", 2732 | "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", 2733 | "dev": true, 2734 | "requires": { 2735 | "slice-ansi": "^3.0.0", 2736 | "string-width": "^4.2.0" 2737 | } 2738 | }, 2739 | "slice-ansi": { 2740 | "version": "3.0.0", 2741 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", 2742 | "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", 2743 | "dev": true, 2744 | "requires": { 2745 | "ansi-styles": "^4.0.0", 2746 | "astral-regex": "^2.0.0", 2747 | "is-fullwidth-code-point": "^3.0.0" 2748 | } 2749 | } 2750 | } 2751 | }, 2752 | "locate-path": { 2753 | "version": "6.0.0", 2754 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2755 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2756 | "dev": true, 2757 | "requires": { 2758 | "p-locate": "^5.0.0" 2759 | } 2760 | }, 2761 | "log-symbols": { 2762 | "version": "4.1.0", 2763 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 2764 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 2765 | "dev": true, 2766 | "requires": { 2767 | "chalk": "^4.1.0", 2768 | "is-unicode-supported": "^0.1.0" 2769 | } 2770 | }, 2771 | "log-update": { 2772 | "version": "4.0.0", 2773 | "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", 2774 | "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", 2775 | "dev": true, 2776 | "requires": { 2777 | "ansi-escapes": "^4.3.0", 2778 | "cli-cursor": "^3.1.0", 2779 | "slice-ansi": "^4.0.0", 2780 | "wrap-ansi": "^6.2.0" 2781 | }, 2782 | "dependencies": { 2783 | "slice-ansi": { 2784 | "version": "4.0.0", 2785 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 2786 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 2787 | "dev": true, 2788 | "requires": { 2789 | "ansi-styles": "^4.0.0", 2790 | "astral-regex": "^2.0.0", 2791 | "is-fullwidth-code-point": "^3.0.0" 2792 | } 2793 | }, 2794 | "wrap-ansi": { 2795 | "version": "6.2.0", 2796 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 2797 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 2798 | "dev": true, 2799 | "requires": { 2800 | "ansi-styles": "^4.0.0", 2801 | "string-width": "^4.1.0", 2802 | "strip-ansi": "^6.0.0" 2803 | } 2804 | } 2805 | } 2806 | }, 2807 | "merge-stream": { 2808 | "version": "2.0.0", 2809 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 2810 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 2811 | "dev": true 2812 | }, 2813 | "micromatch": { 2814 | "version": "4.0.5", 2815 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 2816 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 2817 | "dev": true, 2818 | "requires": { 2819 | "braces": "^3.0.2", 2820 | "picomatch": "^2.3.1" 2821 | } 2822 | }, 2823 | "mimic-fn": { 2824 | "version": "2.1.0", 2825 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 2826 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 2827 | "dev": true 2828 | }, 2829 | "minimatch": { 2830 | "version": "3.0.4", 2831 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2832 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2833 | "dev": true, 2834 | "requires": { 2835 | "brace-expansion": "^1.1.7" 2836 | } 2837 | }, 2838 | "mkdirp": { 2839 | "version": "0.5.1", 2840 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2841 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2842 | "dev": true, 2843 | "requires": { 2844 | "minimist": "0.0.8" 2845 | }, 2846 | "dependencies": { 2847 | "minimist": { 2848 | "version": "0.0.8", 2849 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 2850 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 2851 | "dev": true 2852 | } 2853 | } 2854 | }, 2855 | "mocha": { 2856 | "version": "10.0.0", 2857 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", 2858 | "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", 2859 | "dev": true, 2860 | "requires": { 2861 | "@ungap/promise-all-settled": "1.1.2", 2862 | "ansi-colors": "4.1.1", 2863 | "browser-stdout": "1.3.1", 2864 | "chokidar": "3.5.3", 2865 | "debug": "4.3.4", 2866 | "diff": "5.0.0", 2867 | "escape-string-regexp": "4.0.0", 2868 | "find-up": "5.0.0", 2869 | "glob": "7.2.0", 2870 | "he": "1.2.0", 2871 | "js-yaml": "4.1.0", 2872 | "log-symbols": "4.1.0", 2873 | "minimatch": "5.0.1", 2874 | "ms": "2.1.3", 2875 | "nanoid": "3.3.3", 2876 | "serialize-javascript": "6.0.0", 2877 | "strip-json-comments": "3.1.1", 2878 | "supports-color": "8.1.1", 2879 | "workerpool": "6.2.1", 2880 | "yargs": "16.2.0", 2881 | "yargs-parser": "20.2.4", 2882 | "yargs-unparser": "2.0.0" 2883 | }, 2884 | "dependencies": { 2885 | "diff": { 2886 | "version": "5.0.0", 2887 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 2888 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 2889 | "dev": true 2890 | }, 2891 | "escape-string-regexp": { 2892 | "version": "4.0.0", 2893 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2894 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2895 | "dev": true 2896 | }, 2897 | "glob": { 2898 | "version": "7.2.0", 2899 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 2900 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 2901 | "dev": true, 2902 | "requires": { 2903 | "fs.realpath": "^1.0.0", 2904 | "inflight": "^1.0.4", 2905 | "inherits": "2", 2906 | "minimatch": "^3.0.4", 2907 | "once": "^1.3.0", 2908 | "path-is-absolute": "^1.0.0" 2909 | }, 2910 | "dependencies": { 2911 | "minimatch": { 2912 | "version": "3.1.2", 2913 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2914 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2915 | "dev": true, 2916 | "requires": { 2917 | "brace-expansion": "^1.1.7" 2918 | } 2919 | } 2920 | } 2921 | }, 2922 | "has-flag": { 2923 | "version": "4.0.0", 2924 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2925 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2926 | "dev": true 2927 | }, 2928 | "he": { 2929 | "version": "1.2.0", 2930 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 2931 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 2932 | "dev": true 2933 | }, 2934 | "minimatch": { 2935 | "version": "5.0.1", 2936 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 2937 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 2938 | "dev": true, 2939 | "requires": { 2940 | "brace-expansion": "^2.0.1" 2941 | }, 2942 | "dependencies": { 2943 | "brace-expansion": { 2944 | "version": "2.0.1", 2945 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2946 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2947 | "dev": true, 2948 | "requires": { 2949 | "balanced-match": "^1.0.0" 2950 | } 2951 | } 2952 | } 2953 | }, 2954 | "ms": { 2955 | "version": "2.1.3", 2956 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2957 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2958 | "dev": true 2959 | }, 2960 | "supports-color": { 2961 | "version": "8.1.1", 2962 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 2963 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 2964 | "dev": true, 2965 | "requires": { 2966 | "has-flag": "^4.0.0" 2967 | } 2968 | } 2969 | } 2970 | }, 2971 | "ms": { 2972 | "version": "2.1.2", 2973 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2974 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2975 | "dev": true 2976 | }, 2977 | "nanoid": { 2978 | "version": "3.3.3", 2979 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", 2980 | "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", 2981 | "dev": true 2982 | }, 2983 | "normalize-path": { 2984 | "version": "3.0.0", 2985 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2986 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2987 | "dev": true 2988 | }, 2989 | "npm-run-path": { 2990 | "version": "4.0.1", 2991 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 2992 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 2993 | "dev": true, 2994 | "requires": { 2995 | "path-key": "^3.0.0" 2996 | } 2997 | }, 2998 | "object-inspect": { 2999 | "version": "1.12.0", 3000 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 3001 | "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", 3002 | "dev": true 3003 | }, 3004 | "once": { 3005 | "version": "1.4.0", 3006 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3007 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3008 | "requires": { 3009 | "wrappy": "1" 3010 | } 3011 | }, 3012 | "onetime": { 3013 | "version": "5.1.2", 3014 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 3015 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 3016 | "dev": true, 3017 | "requires": { 3018 | "mimic-fn": "^2.1.0" 3019 | } 3020 | }, 3021 | "p-limit": { 3022 | "version": "3.1.0", 3023 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 3024 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 3025 | "dev": true, 3026 | "requires": { 3027 | "yocto-queue": "^0.1.0" 3028 | } 3029 | }, 3030 | "p-locate": { 3031 | "version": "5.0.0", 3032 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 3033 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 3034 | "dev": true, 3035 | "requires": { 3036 | "p-limit": "^3.0.2" 3037 | } 3038 | }, 3039 | "p-map": { 3040 | "version": "4.0.0", 3041 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", 3042 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", 3043 | "dev": true, 3044 | "requires": { 3045 | "aggregate-error": "^3.0.0" 3046 | } 3047 | }, 3048 | "path-exists": { 3049 | "version": "4.0.0", 3050 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3051 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3052 | "dev": true 3053 | }, 3054 | "path-is-absolute": { 3055 | "version": "1.0.1", 3056 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3057 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 3058 | }, 3059 | "path-key": { 3060 | "version": "3.1.1", 3061 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3062 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3063 | "dev": true 3064 | }, 3065 | "picomatch": { 3066 | "version": "2.3.1", 3067 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3068 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3069 | "dev": true 3070 | }, 3071 | "pidtree": { 3072 | "version": "0.5.0", 3073 | "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz", 3074 | "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==", 3075 | "dev": true 3076 | }, 3077 | "prettier": { 3078 | "version": "2.6.2", 3079 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", 3080 | "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", 3081 | "dev": true 3082 | }, 3083 | "prettier-plugin-organize-imports": { 3084 | "version": "2.3.4", 3085 | "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-2.3.4.tgz", 3086 | "integrity": "sha512-R8o23sf5iVL/U71h9SFUdhdOEPsi3nm42FD/oDYIZ2PQa4TNWWuWecxln6jlIQzpZTDMUeO1NicJP6lLn2TtRw==", 3087 | "dev": true, 3088 | "requires": {} 3089 | }, 3090 | "randombytes": { 3091 | "version": "2.1.0", 3092 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 3093 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 3094 | "dev": true, 3095 | "requires": { 3096 | "safe-buffer": "^5.1.0" 3097 | } 3098 | }, 3099 | "readdirp": { 3100 | "version": "3.6.0", 3101 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 3102 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 3103 | "dev": true, 3104 | "requires": { 3105 | "picomatch": "^2.2.1" 3106 | } 3107 | }, 3108 | "require-directory": { 3109 | "version": "2.1.1", 3110 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3111 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 3112 | "dev": true 3113 | }, 3114 | "restore-cursor": { 3115 | "version": "3.1.0", 3116 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 3117 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 3118 | "dev": true, 3119 | "requires": { 3120 | "onetime": "^5.1.0", 3121 | "signal-exit": "^3.0.2" 3122 | } 3123 | }, 3124 | "rfdc": { 3125 | "version": "1.3.0", 3126 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", 3127 | "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", 3128 | "dev": true 3129 | }, 3130 | "rxjs": { 3131 | "version": "7.5.5", 3132 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", 3133 | "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", 3134 | "dev": true, 3135 | "requires": { 3136 | "tslib": "^2.1.0" 3137 | } 3138 | }, 3139 | "safe-buffer": { 3140 | "version": "5.2.1", 3141 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3142 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3143 | "dev": true 3144 | }, 3145 | "semver": { 3146 | "version": "5.4.1", 3147 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", 3148 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", 3149 | "dev": true 3150 | }, 3151 | "serialize-javascript": { 3152 | "version": "6.0.0", 3153 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 3154 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 3155 | "dev": true, 3156 | "requires": { 3157 | "randombytes": "^2.1.0" 3158 | } 3159 | }, 3160 | "shebang-command": { 3161 | "version": "2.0.0", 3162 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3163 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3164 | "dev": true, 3165 | "requires": { 3166 | "shebang-regex": "^3.0.0" 3167 | } 3168 | }, 3169 | "shebang-regex": { 3170 | "version": "3.0.0", 3171 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3172 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3173 | "dev": true 3174 | }, 3175 | "signal-exit": { 3176 | "version": "3.0.7", 3177 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3178 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 3179 | "dev": true 3180 | }, 3181 | "slice-ansi": { 3182 | "version": "5.0.0", 3183 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", 3184 | "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", 3185 | "dev": true, 3186 | "requires": { 3187 | "ansi-styles": "^6.0.0", 3188 | "is-fullwidth-code-point": "^4.0.0" 3189 | }, 3190 | "dependencies": { 3191 | "ansi-styles": { 3192 | "version": "6.1.0", 3193 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz", 3194 | "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==", 3195 | "dev": true 3196 | }, 3197 | "is-fullwidth-code-point": { 3198 | "version": "4.0.0", 3199 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", 3200 | "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", 3201 | "dev": true 3202 | } 3203 | } 3204 | }, 3205 | "source-map": { 3206 | "version": "0.6.1", 3207 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3208 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3209 | "dev": true 3210 | }, 3211 | "source-map-support": { 3212 | "version": "0.5.0", 3213 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz", 3214 | "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==", 3215 | "dev": true, 3216 | "requires": { 3217 | "source-map": "^0.6.0" 3218 | } 3219 | }, 3220 | "string-argv": { 3221 | "version": "0.3.1", 3222 | "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", 3223 | "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", 3224 | "dev": true 3225 | }, 3226 | "string-width": { 3227 | "version": "4.2.3", 3228 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3229 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3230 | "dev": true, 3231 | "requires": { 3232 | "emoji-regex": "^8.0.0", 3233 | "is-fullwidth-code-point": "^3.0.0", 3234 | "strip-ansi": "^6.0.1" 3235 | } 3236 | }, 3237 | "strip-ansi": { 3238 | "version": "6.0.1", 3239 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3240 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3241 | "dev": true, 3242 | "requires": { 3243 | "ansi-regex": "^5.0.1" 3244 | } 3245 | }, 3246 | "strip-final-newline": { 3247 | "version": "2.0.0", 3248 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 3249 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 3250 | "dev": true 3251 | }, 3252 | "strip-json-comments": { 3253 | "version": "3.1.1", 3254 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3255 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3256 | "dev": true 3257 | }, 3258 | "supports-color": { 3259 | "version": "5.4.0", 3260 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 3261 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 3262 | "dev": true, 3263 | "requires": { 3264 | "has-flag": "^3.0.0" 3265 | } 3266 | }, 3267 | "through": { 3268 | "version": "2.3.8", 3269 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 3270 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 3271 | "dev": true 3272 | }, 3273 | "to-regex-range": { 3274 | "version": "5.0.1", 3275 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3276 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3277 | "dev": true, 3278 | "requires": { 3279 | "is-number": "^7.0.0" 3280 | } 3281 | }, 3282 | "tslib": { 3283 | "version": "2.4.0", 3284 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 3285 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 3286 | "dev": true 3287 | }, 3288 | "type-fest": { 3289 | "version": "0.21.3", 3290 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 3291 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 3292 | "dev": true 3293 | }, 3294 | "typescript": { 3295 | "version": "4.6.4", 3296 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", 3297 | "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", 3298 | "dev": true 3299 | }, 3300 | "vscode": { 3301 | "version": "1.1.37", 3302 | "resolved": "https://registry.npmjs.org/vscode/-/vscode-1.1.37.tgz", 3303 | "integrity": "sha512-vJNj6IlN7IJPdMavlQa1KoFB3Ihn06q1AiN3ZFI/HfzPNzbKZWPPuiU+XkpNOfGU5k15m4r80nxNPlM7wcc0wg==", 3304 | "dev": true, 3305 | "requires": { 3306 | "glob": "^7.1.2", 3307 | "http-proxy-agent": "^4.0.1", 3308 | "https-proxy-agent": "^5.0.0", 3309 | "mocha": "^5.2.0", 3310 | "semver": "^5.4.1", 3311 | "source-map-support": "^0.5.0", 3312 | "vscode-test": "^0.4.1" 3313 | }, 3314 | "dependencies": { 3315 | "debug": { 3316 | "version": "3.1.0", 3317 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 3318 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 3319 | "dev": true, 3320 | "requires": { 3321 | "ms": "2.0.0" 3322 | } 3323 | }, 3324 | "glob": { 3325 | "version": "7.2.0", 3326 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 3327 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 3328 | "dev": true, 3329 | "requires": { 3330 | "fs.realpath": "^1.0.0", 3331 | "inflight": "^1.0.4", 3332 | "inherits": "2", 3333 | "minimatch": "^3.0.4", 3334 | "once": "^1.3.0", 3335 | "path-is-absolute": "^1.0.0" 3336 | } 3337 | }, 3338 | "mocha": { 3339 | "version": "5.2.0", 3340 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", 3341 | "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", 3342 | "dev": true, 3343 | "requires": { 3344 | "browser-stdout": "1.3.1", 3345 | "commander": "2.15.1", 3346 | "debug": "3.1.0", 3347 | "diff": "3.5.0", 3348 | "escape-string-regexp": "1.0.5", 3349 | "glob": "7.1.2", 3350 | "growl": "1.10.5", 3351 | "he": "1.1.1", 3352 | "minimatch": "3.0.4", 3353 | "mkdirp": "0.5.1", 3354 | "supports-color": "5.4.0" 3355 | }, 3356 | "dependencies": { 3357 | "glob": { 3358 | "version": "7.1.2", 3359 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 3360 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 3361 | "dev": true, 3362 | "requires": { 3363 | "fs.realpath": "^1.0.0", 3364 | "inflight": "^1.0.4", 3365 | "inherits": "2", 3366 | "minimatch": "^3.0.4", 3367 | "once": "^1.3.0", 3368 | "path-is-absolute": "^1.0.0" 3369 | } 3370 | } 3371 | } 3372 | }, 3373 | "ms": { 3374 | "version": "2.0.0", 3375 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3376 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 3377 | "dev": true 3378 | } 3379 | } 3380 | }, 3381 | "vscode-test": { 3382 | "version": "0.4.3", 3383 | "resolved": "https://registry.npmjs.org/vscode-test/-/vscode-test-0.4.3.tgz", 3384 | "integrity": "sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w==", 3385 | "dev": true, 3386 | "requires": { 3387 | "http-proxy-agent": "^2.1.0", 3388 | "https-proxy-agent": "^2.2.1" 3389 | }, 3390 | "dependencies": { 3391 | "agent-base": { 3392 | "version": "4.3.0", 3393 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", 3394 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", 3395 | "dev": true, 3396 | "requires": { 3397 | "es6-promisify": "^5.0.0" 3398 | } 3399 | }, 3400 | "debug": { 3401 | "version": "3.1.0", 3402 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 3403 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 3404 | "dev": true, 3405 | "requires": { 3406 | "ms": "2.0.0" 3407 | } 3408 | }, 3409 | "http-proxy-agent": { 3410 | "version": "2.1.0", 3411 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", 3412 | "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", 3413 | "dev": true, 3414 | "requires": { 3415 | "agent-base": "4", 3416 | "debug": "3.1.0" 3417 | } 3418 | }, 3419 | "https-proxy-agent": { 3420 | "version": "2.2.4", 3421 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", 3422 | "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", 3423 | "dev": true, 3424 | "requires": { 3425 | "agent-base": "^4.3.0", 3426 | "debug": "^3.1.0" 3427 | } 3428 | }, 3429 | "ms": { 3430 | "version": "2.0.0", 3431 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3432 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 3433 | "dev": true 3434 | } 3435 | } 3436 | }, 3437 | "which": { 3438 | "version": "2.0.2", 3439 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3440 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3441 | "dev": true, 3442 | "requires": { 3443 | "isexe": "^2.0.0" 3444 | } 3445 | }, 3446 | "workerpool": { 3447 | "version": "6.2.1", 3448 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", 3449 | "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", 3450 | "dev": true 3451 | }, 3452 | "wrap-ansi": { 3453 | "version": "7.0.0", 3454 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3455 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3456 | "dev": true, 3457 | "requires": { 3458 | "ansi-styles": "^4.0.0", 3459 | "string-width": "^4.1.0", 3460 | "strip-ansi": "^6.0.0" 3461 | } 3462 | }, 3463 | "wrappy": { 3464 | "version": "1.0.2", 3465 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3466 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 3467 | }, 3468 | "y18n": { 3469 | "version": "5.0.8", 3470 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 3471 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 3472 | "dev": true 3473 | }, 3474 | "yaml": { 3475 | "version": "1.10.2", 3476 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 3477 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 3478 | "dev": true 3479 | }, 3480 | "yargs": { 3481 | "version": "16.2.0", 3482 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 3483 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 3484 | "dev": true, 3485 | "requires": { 3486 | "cliui": "^7.0.2", 3487 | "escalade": "^3.1.1", 3488 | "get-caller-file": "^2.0.5", 3489 | "require-directory": "^2.1.1", 3490 | "string-width": "^4.2.0", 3491 | "y18n": "^5.0.5", 3492 | "yargs-parser": "^20.2.2" 3493 | } 3494 | }, 3495 | "yargs-parser": { 3496 | "version": "20.2.4", 3497 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 3498 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 3499 | "dev": true 3500 | }, 3501 | "yargs-unparser": { 3502 | "version": "2.0.0", 3503 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 3504 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 3505 | "dev": true, 3506 | "requires": { 3507 | "camelcase": "^6.0.0", 3508 | "decamelize": "^4.0.0", 3509 | "flat": "^5.0.2", 3510 | "is-plain-obj": "^2.1.0" 3511 | } 3512 | }, 3513 | "yocto-queue": { 3514 | "version": "0.1.0", 3515 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3516 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3517 | "dev": true 3518 | } 3519 | } 3520 | } 3521 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RelativePath", 3 | "description": "Get relative url paths from files in the current workspace.", 4 | "version": "1.5.0", 5 | "scripts": { 6 | "vscode:prepublish": "tsc -p ./", 7 | "compile": "tsc -watch -p ./", 8 | "postinstall": "node ./node_modules/vscode/bin/install", 9 | "test": "tsc", 10 | "prepare": "husky install", 11 | "postversion": "git push --follow-tags && gh release create --generate-notes" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/jakob101/RelativePath" 16 | }, 17 | "publisher": "jakob101", 18 | "galleryBanner": { 19 | "color": "#373277", 20 | "theme": "dark" 21 | }, 22 | "engines": { 23 | "vscode": "^1.16.0" 24 | }, 25 | "categories": [ 26 | "Other" 27 | ], 28 | "license": "MIT", 29 | "displayName": "Relative Path", 30 | "activationEvents": [ 31 | "onCommand:extension.relativePath" 32 | ], 33 | "main": "./out/src/extension", 34 | "contributes": { 35 | "commands": [ 36 | { 37 | "command": "extension.relativePath", 38 | "title": "Relative Path" 39 | } 40 | ], 41 | "keybindings": [ 42 | { 43 | "command": "extension.relativePath", 44 | "key": "ctrl+shift+h", 45 | "mac": "cmd+shift+h", 46 | "when": "editorTextFocus" 47 | } 48 | ], 49 | "configuration": { 50 | "title": "RelativePath", 51 | "type": "object", 52 | "properties": { 53 | "relativePath.includeGlob": { 54 | "type": "string", 55 | "default": "/**/*.*", 56 | "description": "A glob by which to filter results" 57 | }, 58 | "relativePath.ignore": { 59 | "type": "array", 60 | "default": [ 61 | "**/.git/**", 62 | "**/node_modules/**", 63 | "**/.husky/**", 64 | "**/.next/**", 65 | "**/*.dll", 66 | "**/*.swp", 67 | "**/*.un~", 68 | "**/obj/**", 69 | "**/objd/**" 70 | ], 71 | "description": "An array of glob keys to ignore when searching.", 72 | "items": { 73 | "type": "string" 74 | } 75 | }, 76 | "relativePath.removeExtension": { 77 | "type": "boolean", 78 | "default": false, 79 | "description": "Excludes the file extension from the relative path url (Useful for systemjs imports)." 80 | }, 81 | "relativePath.excludedExtensions": { 82 | "type": "array", 83 | "default": [ 84 | ".js", 85 | ".ts" 86 | ], 87 | "description": "An array of file extensions to exclude from the relative path url (Useful for used with Webpack or when importing files of mixed types)" 88 | }, 89 | "relativePath.removeLeadingDot": { 90 | "type": "boolean", 91 | "default": true, 92 | "description": "Removes the leading ./ character when the path is pointing to a parent folder." 93 | }, 94 | "relativePath.omitParts": { 95 | "type": "array", 96 | "default": [ 97 | "\\/index$" 98 | ], 99 | "description": "Omit path parts by matched Regular Expressions" 100 | }, 101 | "relativePath.searchCountLimit": { 102 | "type": "integer", 103 | "default": 1000, 104 | "description": "Max number of files searched in quick filter. Extending this may lead to performance issues." 105 | } 106 | } 107 | } 108 | }, 109 | "icon": "icon.png", 110 | "keywords": [ 111 | "relative", 112 | "path", 113 | "url", 114 | "file" 115 | ], 116 | "devDependencies": { 117 | "@types/mocha": "^9.1.1", 118 | "@types/node": "^17.0.31", 119 | "husky": "^7.0.4", 120 | "lint-staged": "^12.4.1", 121 | "mocha": "^10.0.0", 122 | "prettier": "^2.6.2", 123 | "prettier-plugin-organize-imports": "^2.3.4", 124 | "typescript": "^4.6.4", 125 | "vscode": "^1.1.37" 126 | }, 127 | "dependencies": { 128 | "@types/glob": "^7.2.0", 129 | "glob": "^8.0.1" 130 | }, 131 | "prettier": { 132 | "tabWidth": 4 133 | }, 134 | "lint-staged": { 135 | "*": [ 136 | "prettier -u --write" 137 | ] 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /src/extension.ts: -------------------------------------------------------------------------------- 1 | import type { IGlob } from "glob"; 2 | import { Glob } from "glob"; 3 | import * as path from "path"; 4 | // The module 'vscode' contains the VS Code extensibility API 5 | // Import the module and reference it with the alias vscode in your code below 6 | import { 7 | commands, 8 | ExtensionContext, 9 | FileSystemWatcher, 10 | QuickPickItem, 11 | TextEditor, 12 | TextEditorEdit, 13 | window, 14 | workspace, 15 | WorkspaceConfiguration, 16 | } from "vscode"; 17 | 18 | // this method is called when your extension is activated 19 | // your extension is activated the very first time the command is executed 20 | export function activate(context: ExtensionContext) { 21 | let relativePath = new RelativePath(); 22 | 23 | // The command has been defined in the package.json file 24 | // Now provide the implementation of the command with registerCommand 25 | // The commandId parameter must match the command field in package.json 26 | let disposable = commands.registerCommand("extension.relativePath", () => { 27 | // The code you place here will be executed every time your command is executed 28 | 29 | relativePath.findRelativePath(); 30 | }); 31 | 32 | context.subscriptions.push(relativePath); 33 | context.subscriptions.push(disposable); 34 | } 35 | 36 | class RelativePath { 37 | private _fileNames: string[]; 38 | private _watcher: FileSystemWatcher; 39 | private _workspacePath: string; 40 | private _configuration: WorkspaceConfiguration; 41 | private _pausedSearch: boolean; 42 | private _myGlob: IGlob; 43 | 44 | constructor() { 45 | this._fileNames = null; 46 | this._pausedSearch = null; 47 | this._myGlob = null; 48 | this._workspacePath = this.getWorkspaceFolder(); 49 | this._configuration = workspace.getConfiguration("relativePath"); 50 | 51 | this.initializeWatcher(); 52 | this.searchWorkspace(); 53 | this.initializeConfigWatcher(); 54 | } 55 | 56 | // When a file is added or deleted, we need to update cache 57 | private initializeWatcher() { 58 | const IGNORE_CREATE_EVENTS = false; 59 | const IGNORE_CHANGE_EVENTS = true; 60 | const IGNORE_DELETE_EVENTS = false; 61 | // Watch for file system changes - as we're caching the searched files 62 | this._watcher = workspace.createFileSystemWatcher( 63 | "**/*.*", 64 | IGNORE_CREATE_EVENTS, 65 | IGNORE_CHANGE_EVENTS, 66 | IGNORE_DELETE_EVENTS 67 | ); 68 | 69 | // Add a file on creation 70 | this._watcher.onDidCreate((e) => { 71 | this._fileNames.push(e.fsPath.replace(/\\/g, "/")); 72 | }); 73 | 74 | // on change active text editor refresh the cache 75 | // if the workspace folder has changed 76 | window.onDidChangeActiveTextEditor((e) => { 77 | const currentWorkspacePath = this.getWorkspaceFolder(); 78 | if (this._workspacePath !== currentWorkspacePath) { 79 | this._workspacePath = currentWorkspacePath; 80 | 81 | if (this._workspacePath) { 82 | this.updateFiles(true); 83 | } 84 | } 85 | }); 86 | 87 | // Remove a file on deletion 88 | this._watcher.onDidDelete((e) => { 89 | let item = e.fsPath.replace(/\\/g, "/"); 90 | let index = this._fileNames.indexOf(item); 91 | if (index > -1) { 92 | this._fileNames.splice(index, 1); 93 | } 94 | }); 95 | } 96 | private getWorkspaceFolder(): string { 97 | const editor = window.activeTextEditor; 98 | if (editor) { 99 | const res = editor.document.uri; 100 | const folder = workspace.getWorkspaceFolder(res); 101 | return folder.uri.fsPath.replace(/\\/g, "/"); 102 | } 103 | } 104 | // Purely updates the files 105 | private updateFiles(skipOpen = false): void { 106 | // Search for files 107 | if (this._pausedSearch) { 108 | this._pausedSearch = false; 109 | if (this._myGlob) { 110 | this._myGlob.resume(); 111 | } 112 | } else { 113 | this._myGlob = new Glob( 114 | this._workspacePath + this._configuration.get("includeGlob"), 115 | { 116 | ignore: this._configuration.get("ignore"), 117 | dot: true, 118 | nodir: true, 119 | }, 120 | (err, files) => { 121 | if (err) { 122 | return; 123 | } 124 | 125 | this._fileNames = files; 126 | if (!skipOpen) { 127 | this.findRelativePath(); 128 | } 129 | } 130 | ); 131 | this._myGlob.on("end", () => { 132 | this._pausedSearch = false; 133 | }); 134 | } 135 | } 136 | 137 | // Go through workspace to cache files 138 | private searchWorkspace(skipOpen = false) { 139 | let emptyItem: QuickPickItem = { 140 | label: "", 141 | description: "No files found", 142 | }; 143 | 144 | // Show loading info box 145 | let info = window.showQuickPick([emptyItem], { 146 | matchOnDescription: false, 147 | placeHolder: 148 | "Finding files... Please wait. (Press escape to cancel)", 149 | }); 150 | info.then( 151 | (value) => { 152 | if (this._myGlob) { 153 | this._myGlob.pause(); 154 | } 155 | if (this._pausedSearch === null) { 156 | this._pausedSearch = true; 157 | } 158 | }, 159 | (rejected) => { 160 | if (this._myGlob) { 161 | this._myGlob.pause(); 162 | } 163 | if (this._pausedSearch === null) { 164 | this._pausedSearch = true; 165 | } 166 | } 167 | ); 168 | 169 | this.updateFiles(skipOpen); 170 | } 171 | 172 | // Compares the ignore property of _configuration to lastConfig 173 | private ignoreWasUpdated( 174 | currentIgnore: Array, 175 | lastIgnore: Array 176 | ): boolean { 177 | if (currentIgnore.length !== lastIgnore.length) { 178 | return true; 179 | } else if (currentIgnore.some((glob) => lastIgnore.indexOf(glob) < 0)) { 180 | return true; 181 | } 182 | 183 | return false; 184 | } 185 | 186 | // Listen for changes in the config files and update the config object 187 | private initializeConfigWatcher(): void { 188 | workspace.onDidChangeConfiguration((e) => { 189 | const lastConfig = this._configuration; 190 | this._configuration = workspace.getConfiguration("relativePath"); 191 | 192 | // Handle updates to the ignored property if there's one 193 | if ( 194 | this.ignoreWasUpdated( 195 | this._configuration.ignore, 196 | lastConfig.ignore 197 | ) 198 | ) { 199 | this.updateFiles(true); 200 | } 201 | }, this); 202 | } 203 | 204 | // Show dropdown editor 205 | private showQuickPick(items: string[], editor: TextEditor): void { 206 | if (items) { 207 | let paths: QuickPickItem[] = items.map((val: string) => { 208 | let item: QuickPickItem = { 209 | description: val.replace(this._workspacePath, ""), 210 | label: val.split("/").pop(), 211 | }; 212 | return item; 213 | }); 214 | 215 | let pickResult: Thenable; 216 | pickResult = window.showQuickPick(paths, { 217 | matchOnDescription: true, 218 | placeHolder: `Type to filter ${items.length} files`, 219 | }); 220 | pickResult.then((item: QuickPickItem) => 221 | this.returnRelativeLink(item, editor) 222 | ); 223 | } else { 224 | window.showInformationMessage("No files to show."); 225 | } 226 | } 227 | 228 | // Check if the current extension should be excluded 229 | private excludeExtensionsFor(relativeUrl: string) { 230 | const currentExtension = path.extname(relativeUrl); 231 | if (currentExtension === "") { 232 | return false; 233 | } 234 | 235 | return this._configuration.excludedExtensions.some((ext: string) => { 236 | return ( 237 | (ext.startsWith(".") ? ext : `.${ext}`).toLowerCase() === 238 | currentExtension.toLowerCase() 239 | ); 240 | }); 241 | } 242 | 243 | // Get the picked item 244 | private returnRelativeLink(item: QuickPickItem, editor: TextEditor): void { 245 | if (item) { 246 | const targetPath = item.description; 247 | const currentItemPath = editor.document.fileName 248 | .replace(/\\/g, "/") 249 | .replace(this._workspacePath, ""); 250 | let relativeUrl: string = path 251 | .relative(currentItemPath, targetPath) 252 | .replace(".", "") 253 | .replace(/\\/g, "/"); 254 | 255 | if ( 256 | this._configuration.removeExtension || 257 | this.excludeExtensionsFor(relativeUrl) 258 | ) { 259 | relativeUrl = relativeUrl.substring( 260 | 0, 261 | relativeUrl.lastIndexOf(".") 262 | ); 263 | } 264 | 265 | if ( 266 | this._configuration.removeLeadingDot && 267 | relativeUrl.startsWith("./../") 268 | ) { 269 | relativeUrl = relativeUrl.substring(2, relativeUrl.length); 270 | } 271 | 272 | if (this._configuration.omitParts) { 273 | this._configuration.omitParts.forEach((omitRegexp) => { 274 | relativeUrl = relativeUrl.replace( 275 | new RegExp(omitRegexp), 276 | "" 277 | ); 278 | }); 279 | } 280 | 281 | window.activeTextEditor.edit((editBuilder: TextEditorEdit) => { 282 | // Get all selections 283 | let selections = window.activeTextEditor.selections; 284 | 285 | // Replace selections with relative Url. 286 | selections.forEach((sel) => { 287 | editor.edit((editBuilder) => { 288 | editBuilder.replace(sel, relativeUrl); 289 | }); 290 | }); 291 | }); 292 | } 293 | } 294 | 295 | public findRelativePath() { 296 | // If there's no file opened 297 | let editor = window.activeTextEditor; 298 | 299 | if (this._workspacePath == null || !editor) { 300 | window.showInformationMessage("You need to have a file opened."); 301 | return; // No open text editor 302 | } 303 | 304 | // If we canceled the file search 305 | if (this._pausedSearch) { 306 | this.searchWorkspace(); 307 | return; 308 | } 309 | 310 | // If there are no items found 311 | if (!this._fileNames) { 312 | return; 313 | } 314 | 315 | const allowQuickFilter = 316 | this._configuration.searchCountLimit > this._fileNames.length; 317 | 318 | if (allowQuickFilter) { 319 | this.showQuickPick(this._fileNames, editor); 320 | } else { 321 | // Don't filter on too many files. Show the input search box instead 322 | const placeHolder = `Found ${this._fileNames.length} files but your limit is ${this._configuration.searchCountLimit}. Start typing or ignore files with 'relativePath.ignore' in settings.`; 323 | const input = window.showInputBox({ placeHolder }); 324 | input.then( 325 | (val) => { 326 | if (val === undefined) { 327 | // User pressed 'Escape' 328 | return; 329 | } 330 | 331 | if (val === "") { 332 | // User just pressed 'Enter' 333 | this.showQuickPick(this._fileNames, editor); 334 | return; 335 | } 336 | 337 | this.showQuickPick( 338 | this._fileNames.filter( 339 | (item) => 340 | item.toLowerCase().indexOf(val.toLowerCase()) > 341 | -1 342 | ), 343 | editor 344 | ); 345 | }, 346 | () => { 347 | return; 348 | } 349 | ); 350 | } 351 | } 352 | 353 | dispose() { 354 | this._fileNames = null; 355 | } 356 | } 357 | -------------------------------------------------------------------------------- /test/extension.test.ts: -------------------------------------------------------------------------------- 1 | // 2 | // Note: This example test is leveraging the Mocha test framework. 3 | // Please refer to their documentation on https://mochajs.org/ for help. 4 | // 5 | 6 | // The module 'assert' provides assertion methods from node 7 | import * as assert from "assert"; 8 | 9 | // You can import and use all API from the 'vscode' module 10 | // as well as import your extension to test it 11 | import * as vscode from "vscode"; 12 | import * as myExtension from "../src/extension"; 13 | 14 | // Defines a Mocha test suite to group tests of similar kind together 15 | suite("Extension Tests", () => { 16 | // Defines a Mocha unit test 17 | test("Something 1", () => { 18 | assert.equal(-1, [1, 2, 3].indexOf(5)); 19 | assert.equal(-1, [1, 2, 3].indexOf(0)); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /test/index.ts: -------------------------------------------------------------------------------- 1 | // 2 | // PLEASE DO NOT MODIFY / DELETE UNLESS YOU KNOW WHAT YOU ARE DOING 3 | // 4 | // This file is providing the test runner to use when running extension tests. 5 | // By default the test runner in use is Mocha based. 6 | // 7 | // You can provide your own test runner if you want to override it by exporting 8 | // a function run(testRoot: string, clb: (error:Error) => void) that the extension 9 | // host can call to run the tests. The test runner is expected to use console.log 10 | // to report the results back to the caller. When the tests are finished, return 11 | // a possible error to the callback or null if none. 12 | 13 | var testRunner = require("vscode/lib/testrunner"); 14 | 15 | // You can directly control Mocha options by uncommenting the following lines 16 | // See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options for more info 17 | testRunner.configure({ 18 | ui: "tdd", // the TDD UI is being used in extension.test.ts (suite, test, etc.) 19 | useColors: true, // colored output from test results 20 | }); 21 | 22 | module.exports = testRunner; 23 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "out", 6 | "lib": ["es6"], 7 | "sourceMap": true, 8 | "rootDir": "." 9 | }, 10 | "exclude": ["node_modules", ".vscode-test"] 11 | } 12 | --------------------------------------------------------------------------------