├── .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 | 
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 |
--------------------------------------------------------------------------------