##// END OF EJS Templates
working on fluent configuration
cin -
r1:a51ea59f0423 default
parent child
Show More
@@ -0,0 +1,3
1 {
2 "java.configuration.updateBuildConfiguration": "automatic"
3 } No newline at end of file
This diff has been collapsed as it changes many lines, (6254 lines changed) Show them Hide them
@@ -0,0 +1,6254
1 {
2 "name": "@implab/di",
3 "version": "0.0.1-dev",
4 "lockfileVersion": 2,
5 "requires": true,
6 "packages": {
7 "": {
8 "name": "@implab/di",
9 "version": "0.0.1-dev",
10 "license": "BSD-2-Clause",
11 "devDependencies": {
12 "@types/chai": "4.3.1",
13 "@types/mocha": "9.1.1",
14 "@types/node": "~8.0.0",
15 "@types/tape": "~4.13.2",
16 "@typescript-eslint/eslint-plugin": "^5.23.0",
17 "@typescript-eslint/parser": "^5.23.0",
18 "chai": "~4.3.6",
19 "eslint": "^8.15.0",
20 "eslint-config-standard": "^17.0.0",
21 "eslint-plugin-import": "^2.26.0",
22 "eslint-plugin-n": "^15.2.0",
23 "eslint-plugin-promise": "^6.0.0",
24 "eslint-plugin-react": "^7.29.4",
25 "mocha": "~10.0.0",
26 "tape": "~5.5.3",
27 "typescript": "~4.6.4"
28 }
29 },
30 "node_modules/@eslint/eslintrc": {
31 "version": "1.2.3",
32 "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz",
33 "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==",
34 "dev": true,
35 "dependencies": {
36 "ajv": "^6.12.4",
37 "debug": "^4.3.2",
38 "espree": "^9.3.2",
39 "globals": "^13.9.0",
40 "ignore": "^5.2.0",
41 "import-fresh": "^3.2.1",
42 "js-yaml": "^4.1.0",
43 "minimatch": "^3.1.2",
44 "strip-json-comments": "^3.1.1"
45 },
46 "engines": {
47 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
48 }
49 },
50 "node_modules/@humanwhocodes/config-array": {
51 "version": "0.9.5",
52 "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
53 "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
54 "dev": true,
55 "dependencies": {
56 "@humanwhocodes/object-schema": "^1.2.1",
57 "debug": "^4.1.1",
58 "minimatch": "^3.0.4"
59 },
60 "engines": {
61 "node": ">=10.10.0"
62 }
63 },
64 "node_modules/@humanwhocodes/object-schema": {
65 "version": "1.2.1",
66 "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
67 "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
68 "dev": true
69 },
70 "node_modules/@nodelib/fs.scandir": {
71 "version": "2.1.5",
72 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
73 "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
74 "dev": true,
75 "dependencies": {
76 "@nodelib/fs.stat": "2.0.5",
77 "run-parallel": "^1.1.9"
78 },
79 "engines": {
80 "node": ">= 8"
81 }
82 },
83 "node_modules/@nodelib/fs.stat": {
84 "version": "2.0.5",
85 "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
86 "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
87 "dev": true,
88 "engines": {
89 "node": ">= 8"
90 }
91 },
92 "node_modules/@nodelib/fs.walk": {
93 "version": "1.2.8",
94 "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
95 "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
96 "dev": true,
97 "dependencies": {
98 "@nodelib/fs.scandir": "2.1.5",
99 "fastq": "^1.6.0"
100 },
101 "engines": {
102 "node": ">= 8"
103 }
104 },
105 "node_modules/@types/chai": {
106 "version": "4.3.1",
107 "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz",
108 "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==",
109 "dev": true
110 },
111 "node_modules/@types/json-schema": {
112 "version": "7.0.11",
113 "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
114 "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
115 "dev": true
116 },
117 "node_modules/@types/json5": {
118 "version": "0.0.29",
119 "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
120 "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
121 "dev": true
122 },
123 "node_modules/@types/mocha": {
124 "version": "9.1.1",
125 "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz",
126 "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==",
127 "dev": true
128 },
129 "node_modules/@types/node": {
130 "version": "8.0.58",
131 "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.58.tgz",
132 "integrity": "sha512-V746iUU7eHNdzQipoACuguDlVhC7IHK8CES1jSkuFt352wwA84BCWPXaGekBd7R5XdNK5ReHONDVKxlL9IreAw==",
133 "dev": true
134 },
135 "node_modules/@types/tape": {
136 "version": "4.13.2",
137 "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.13.2.tgz",
138 "integrity": "sha512-V1ez/RtYRGN9cNYApw5xf27DpMkTB0033X6a2i3KUmKhSojBfbWN0i3EgZxboUG96WJLHLdOyZ01aiZwVW5aSA==",
139 "dev": true,
140 "dependencies": {
141 "@types/node": "*"
142 }
143 },
144 "node_modules/@typescript-eslint/eslint-plugin": {
145 "version": "5.23.0",
146 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz",
147 "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==",
148 "dev": true,
149 "dependencies": {
150 "@typescript-eslint/scope-manager": "5.23.0",
151 "@typescript-eslint/type-utils": "5.23.0",
152 "@typescript-eslint/utils": "5.23.0",
153 "debug": "^4.3.2",
154 "functional-red-black-tree": "^1.0.1",
155 "ignore": "^5.1.8",
156 "regexpp": "^3.2.0",
157 "semver": "^7.3.5",
158 "tsutils": "^3.21.0"
159 },
160 "engines": {
161 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
162 },
163 "funding": {
164 "type": "opencollective",
165 "url": "https://opencollective.com/typescript-eslint"
166 },
167 "peerDependencies": {
168 "@typescript-eslint/parser": "^5.0.0",
169 "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
170 },
171 "peerDependenciesMeta": {
172 "typescript": {
173 "optional": true
174 }
175 }
176 },
177 "node_modules/@typescript-eslint/parser": {
178 "version": "5.23.0",
179 "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz",
180 "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==",
181 "dev": true,
182 "dependencies": {
183 "@typescript-eslint/scope-manager": "5.23.0",
184 "@typescript-eslint/types": "5.23.0",
185 "@typescript-eslint/typescript-estree": "5.23.0",
186 "debug": "^4.3.2"
187 },
188 "engines": {
189 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
190 },
191 "funding": {
192 "type": "opencollective",
193 "url": "https://opencollective.com/typescript-eslint"
194 },
195 "peerDependencies": {
196 "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
197 },
198 "peerDependenciesMeta": {
199 "typescript": {
200 "optional": true
201 }
202 }
203 },
204 "node_modules/@typescript-eslint/scope-manager": {
205 "version": "5.23.0",
206 "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz",
207 "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==",
208 "dev": true,
209 "dependencies": {
210 "@typescript-eslint/types": "5.23.0",
211 "@typescript-eslint/visitor-keys": "5.23.0"
212 },
213 "engines": {
214 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
215 },
216 "funding": {
217 "type": "opencollective",
218 "url": "https://opencollective.com/typescript-eslint"
219 }
220 },
221 "node_modules/@typescript-eslint/type-utils": {
222 "version": "5.23.0",
223 "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz",
224 "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==",
225 "dev": true,
226 "dependencies": {
227 "@typescript-eslint/utils": "5.23.0",
228 "debug": "^4.3.2",
229 "tsutils": "^3.21.0"
230 },
231 "engines": {
232 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
233 },
234 "funding": {
235 "type": "opencollective",
236 "url": "https://opencollective.com/typescript-eslint"
237 },
238 "peerDependencies": {
239 "eslint": "*"
240 },
241 "peerDependenciesMeta": {
242 "typescript": {
243 "optional": true
244 }
245 }
246 },
247 "node_modules/@typescript-eslint/types": {
248 "version": "5.23.0",
249 "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz",
250 "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==",
251 "dev": true,
252 "engines": {
253 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
254 },
255 "funding": {
256 "type": "opencollective",
257 "url": "https://opencollective.com/typescript-eslint"
258 }
259 },
260 "node_modules/@typescript-eslint/typescript-estree": {
261 "version": "5.23.0",
262 "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz",
263 "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==",
264 "dev": true,
265 "dependencies": {
266 "@typescript-eslint/types": "5.23.0",
267 "@typescript-eslint/visitor-keys": "5.23.0",
268 "debug": "^4.3.2",
269 "globby": "^11.0.4",
270 "is-glob": "^4.0.3",
271 "semver": "^7.3.5",
272 "tsutils": "^3.21.0"
273 },
274 "engines": {
275 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
276 },
277 "funding": {
278 "type": "opencollective",
279 "url": "https://opencollective.com/typescript-eslint"
280 },
281 "peerDependenciesMeta": {
282 "typescript": {
283 "optional": true
284 }
285 }
286 },
287 "node_modules/@typescript-eslint/utils": {
288 "version": "5.23.0",
289 "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz",
290 "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==",
291 "dev": true,
292 "dependencies": {
293 "@types/json-schema": "^7.0.9",
294 "@typescript-eslint/scope-manager": "5.23.0",
295 "@typescript-eslint/types": "5.23.0",
296 "@typescript-eslint/typescript-estree": "5.23.0",
297 "eslint-scope": "^5.1.1",
298 "eslint-utils": "^3.0.0"
299 },
300 "engines": {
301 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
302 },
303 "funding": {
304 "type": "opencollective",
305 "url": "https://opencollective.com/typescript-eslint"
306 },
307 "peerDependencies": {
308 "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
309 }
310 },
311 "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": {
312 "version": "5.1.1",
313 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
314 "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
315 "dev": true,
316 "dependencies": {
317 "esrecurse": "^4.3.0",
318 "estraverse": "^4.1.1"
319 },
320 "engines": {
321 "node": ">=8.0.0"
322 }
323 },
324 "node_modules/@typescript-eslint/utils/node_modules/estraverse": {
325 "version": "4.3.0",
326 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
327 "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
328 "dev": true,
329 "engines": {
330 "node": ">=4.0"
331 }
332 },
333 "node_modules/@typescript-eslint/visitor-keys": {
334 "version": "5.23.0",
335 "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz",
336 "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==",
337 "dev": true,
338 "dependencies": {
339 "@typescript-eslint/types": "5.23.0",
340 "eslint-visitor-keys": "^3.0.0"
341 },
342 "engines": {
343 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
344 },
345 "funding": {
346 "type": "opencollective",
347 "url": "https://opencollective.com/typescript-eslint"
348 }
349 },
350 "node_modules/@ungap/promise-all-settled": {
351 "version": "1.1.2",
352 "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
353 "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
354 "dev": true
355 },
356 "node_modules/acorn": {
357 "version": "8.7.1",
358 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
359 "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
360 "dev": true,
361 "bin": {
362 "acorn": "bin/acorn"
363 },
364 "engines": {
365 "node": ">=0.4.0"
366 }
367 },
368 "node_modules/acorn-jsx": {
369 "version": "5.3.2",
370 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
371 "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
372 "dev": true,
373 "peerDependencies": {
374 "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
375 }
376 },
377 "node_modules/ajv": {
378 "version": "6.12.6",
379 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
380 "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
381 "dev": true,
382 "dependencies": {
383 "fast-deep-equal": "^3.1.1",
384 "fast-json-stable-stringify": "^2.0.0",
385 "json-schema-traverse": "^0.4.1",
386 "uri-js": "^4.2.2"
387 },
388 "funding": {
389 "type": "github",
390 "url": "https://github.com/sponsors/epoberezkin"
391 }
392 },
393 "node_modules/ansi-colors": {
394 "version": "4.1.1",
395 "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
396 "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
397 "dev": true,
398 "engines": {
399 "node": ">=6"
400 }
401 },
402 "node_modules/ansi-regex": {
403 "version": "5.0.1",
404 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
405 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
406 "dev": true,
407 "engines": {
408 "node": ">=8"
409 }
410 },
411 "node_modules/ansi-styles": {
412 "version": "4.3.0",
413 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
414 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
415 "dev": true,
416 "dependencies": {
417 "color-convert": "^2.0.1"
418 },
419 "engines": {
420 "node": ">=8"
421 },
422 "funding": {
423 "url": "https://github.com/chalk/ansi-styles?sponsor=1"
424 }
425 },
426 "node_modules/anymatch": {
427 "version": "3.1.2",
428 "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
429 "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
430 "dev": true,
431 "dependencies": {
432 "normalize-path": "^3.0.0",
433 "picomatch": "^2.0.4"
434 },
435 "engines": {
436 "node": ">= 8"
437 }
438 },
439 "node_modules/argparse": {
440 "version": "2.0.1",
441 "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
442 "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
443 "dev": true
444 },
445 "node_modules/array-includes": {
446 "version": "3.1.5",
447 "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz",
448 "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==",
449 "dev": true,
450 "dependencies": {
451 "call-bind": "^1.0.2",
452 "define-properties": "^1.1.4",
453 "es-abstract": "^1.19.5",
454 "get-intrinsic": "^1.1.1",
455 "is-string": "^1.0.7"
456 },
457 "engines": {
458 "node": ">= 0.4"
459 },
460 "funding": {
461 "url": "https://github.com/sponsors/ljharb"
462 }
463 },
464 "node_modules/array-union": {
465 "version": "2.1.0",
466 "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
467 "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
468 "dev": true,
469 "engines": {
470 "node": ">=8"
471 }
472 },
473 "node_modules/array.prototype.every": {
474 "version": "1.1.3",
475 "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.3.tgz",
476 "integrity": "sha512-vWnriJI//SOMOWtXbU/VXhJ/InfnNHPF6BLKn5WfY8xXy+NWql0fUy20GO3sdqBhCAO+qw8S/E5nJiZX+QFdCA==",
477 "dev": true,
478 "dependencies": {
479 "call-bind": "^1.0.2",
480 "define-properties": "^1.1.3",
481 "es-abstract": "^1.19.0",
482 "is-string": "^1.0.7"
483 },
484 "engines": {
485 "node": ">= 0.4"
486 },
487 "funding": {
488 "url": "https://github.com/sponsors/ljharb"
489 }
490 },
491 "node_modules/array.prototype.flat": {
492 "version": "1.3.0",
493 "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz",
494 "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==",
495 "dev": true,
496 "dependencies": {
497 "call-bind": "^1.0.2",
498 "define-properties": "^1.1.3",
499 "es-abstract": "^1.19.2",
500 "es-shim-unscopables": "^1.0.0"
501 },
502 "engines": {
503 "node": ">= 0.4"
504 },
505 "funding": {
506 "url": "https://github.com/sponsors/ljharb"
507 }
508 },
509 "node_modules/array.prototype.flatmap": {
510 "version": "1.3.0",
511 "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz",
512 "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==",
513 "dev": true,
514 "dependencies": {
515 "call-bind": "^1.0.2",
516 "define-properties": "^1.1.3",
517 "es-abstract": "^1.19.2",
518 "es-shim-unscopables": "^1.0.0"
519 },
520 "engines": {
521 "node": ">= 0.4"
522 },
523 "funding": {
524 "url": "https://github.com/sponsors/ljharb"
525 }
526 },
527 "node_modules/assertion-error": {
528 "version": "1.1.0",
529 "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
530 "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
531 "dev": true,
532 "engines": {
533 "node": "*"
534 }
535 },
536 "node_modules/available-typed-arrays": {
537 "version": "1.0.5",
538 "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
539 "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
540 "dev": true,
541 "engines": {
542 "node": ">= 0.4"
543 },
544 "funding": {
545 "url": "https://github.com/sponsors/ljharb"
546 }
547 },
548 "node_modules/balanced-match": {
549 "version": "1.0.2",
550 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
551 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
552 "dev": true
553 },
554 "node_modules/binary-extensions": {
555 "version": "2.2.0",
556 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
557 "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
558 "dev": true,
559 "engines": {
560 "node": ">=8"
561 }
562 },
563 "node_modules/brace-expansion": {
564 "version": "1.1.11",
565 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
566 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
567 "dev": true,
568 "dependencies": {
569 "balanced-match": "^1.0.0",
570 "concat-map": "0.0.1"
571 }
572 },
573 "node_modules/braces": {
574 "version": "3.0.2",
575 "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
576 "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
577 "dev": true,
578 "dependencies": {
579 "fill-range": "^7.0.1"
580 },
581 "engines": {
582 "node": ">=8"
583 }
584 },
585 "node_modules/browser-stdout": {
586 "version": "1.3.1",
587 "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
588 "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
589 "dev": true
590 },
591 "node_modules/builtins": {
592 "version": "4.1.0",
593 "resolved": "https://registry.npmjs.org/builtins/-/builtins-4.1.0.tgz",
594 "integrity": "sha512-1bPRZQtmKaO6h7qV1YHXNtr6nCK28k0Zo95KM4dXfILcZZwoHJBN1m3lfLv9LPkcOZlrSr+J1bzMaZFO98Yq0w==",
595 "dev": true,
596 "dependencies": {
597 "semver": "^7.0.0"
598 }
599 },
600 "node_modules/call-bind": {
601 "version": "1.0.2",
602 "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
603 "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
604 "dev": true,
605 "dependencies": {
606 "function-bind": "^1.1.1",
607 "get-intrinsic": "^1.0.2"
608 },
609 "funding": {
610 "url": "https://github.com/sponsors/ljharb"
611 }
612 },
613 "node_modules/callsites": {
614 "version": "3.1.0",
615 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
616 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
617 "dev": true,
618 "engines": {
619 "node": ">=6"
620 }
621 },
622 "node_modules/camelcase": {
623 "version": "6.3.0",
624 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
625 "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
626 "dev": true,
627 "engines": {
628 "node": ">=10"
629 },
630 "funding": {
631 "url": "https://github.com/sponsors/sindresorhus"
632 }
633 },
634 "node_modules/chai": {
635 "version": "4.3.6",
636 "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
637 "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
638 "dev": true,
639 "dependencies": {
640 "assertion-error": "^1.1.0",
641 "check-error": "^1.0.2",
642 "deep-eql": "^3.0.1",
643 "get-func-name": "^2.0.0",
644 "loupe": "^2.3.1",
645 "pathval": "^1.1.1",
646 "type-detect": "^4.0.5"
647 },
648 "engines": {
649 "node": ">=4"
650 }
651 },
652 "node_modules/chalk": {
653 "version": "4.1.2",
654 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
655 "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
656 "dev": true,
657 "dependencies": {
658 "ansi-styles": "^4.1.0",
659 "supports-color": "^7.1.0"
660 },
661 "engines": {
662 "node": ">=10"
663 },
664 "funding": {
665 "url": "https://github.com/chalk/chalk?sponsor=1"
666 }
667 },
668 "node_modules/check-error": {
669 "version": "1.0.2",
670 "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
671 "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
672 "dev": true,
673 "engines": {
674 "node": "*"
675 }
676 },
677 "node_modules/chokidar": {
678 "version": "3.5.3",
679 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
680 "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
681 "dev": true,
682 "funding": [
683 {
684 "type": "individual",
685 "url": "https://paulmillr.com/funding/"
686 }
687 ],
688 "dependencies": {
689 "anymatch": "~3.1.2",
690 "braces": "~3.0.2",
691 "glob-parent": "~5.1.2",
692 "is-binary-path": "~2.1.0",
693 "is-glob": "~4.0.1",
694 "normalize-path": "~3.0.0",
695 "readdirp": "~3.6.0"
696 },
697 "engines": {
698 "node": ">= 8.10.0"
699 },
700 "optionalDependencies": {
701 "fsevents": "~2.3.2"
702 }
703 },
704 "node_modules/chokidar/node_modules/glob-parent": {
705 "version": "5.1.2",
706 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
707 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
708 "dev": true,
709 "dependencies": {
710 "is-glob": "^4.0.1"
711 },
712 "engines": {
713 "node": ">= 6"
714 }
715 },
716 "node_modules/cliui": {
717 "version": "7.0.4",
718 "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
719 "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
720 "dev": true,
721 "dependencies": {
722 "string-width": "^4.2.0",
723 "strip-ansi": "^6.0.0",
724 "wrap-ansi": "^7.0.0"
725 }
726 },
727 "node_modules/color-convert": {
728 "version": "2.0.1",
729 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
730 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
731 "dev": true,
732 "dependencies": {
733 "color-name": "~1.1.4"
734 },
735 "engines": {
736 "node": ">=7.0.0"
737 }
738 },
739 "node_modules/color-name": {
740 "version": "1.1.4",
741 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
742 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
743 "dev": true
744 },
745 "node_modules/concat-map": {
746 "version": "0.0.1",
747 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
748 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
749 "dev": true
750 },
751 "node_modules/cross-spawn": {
752 "version": "7.0.3",
753 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
754 "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
755 "dev": true,
756 "dependencies": {
757 "path-key": "^3.1.0",
758 "shebang-command": "^2.0.0",
759 "which": "^2.0.1"
760 },
761 "engines": {
762 "node": ">= 8"
763 }
764 },
765 "node_modules/debug": {
766 "version": "4.3.4",
767 "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
768 "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
769 "dev": true,
770 "dependencies": {
771 "ms": "2.1.2"
772 },
773 "engines": {
774 "node": ">=6.0"
775 },
776 "peerDependenciesMeta": {
777 "supports-color": {
778 "optional": true
779 }
780 }
781 },
782 "node_modules/decamelize": {
783 "version": "4.0.0",
784 "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
785 "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
786 "dev": true,
787 "engines": {
788 "node": ">=10"
789 },
790 "funding": {
791 "url": "https://github.com/sponsors/sindresorhus"
792 }
793 },
794 "node_modules/deep-eql": {
795 "version": "3.0.1",
796 "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
797 "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
798 "dev": true,
799 "dependencies": {
800 "type-detect": "^4.0.0"
801 },
802 "engines": {
803 "node": ">=0.12"
804 }
805 },
806 "node_modules/deep-equal": {
807 "version": "2.0.5",
808 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
809 "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
810 "dev": true,
811 "dependencies": {
812 "call-bind": "^1.0.0",
813 "es-get-iterator": "^1.1.1",
814 "get-intrinsic": "^1.0.1",
815 "is-arguments": "^1.0.4",
816 "is-date-object": "^1.0.2",
817 "is-regex": "^1.1.1",
818 "isarray": "^2.0.5",
819 "object-is": "^1.1.4",
820 "object-keys": "^1.1.1",
821 "object.assign": "^4.1.2",
822 "regexp.prototype.flags": "^1.3.0",
823 "side-channel": "^1.0.3",
824 "which-boxed-primitive": "^1.0.1",
825 "which-collection": "^1.0.1",
826 "which-typed-array": "^1.1.2"
827 },
828 "funding": {
829 "url": "https://github.com/sponsors/ljharb"
830 }
831 },
832 "node_modules/deep-is": {
833 "version": "0.1.4",
834 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
835 "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
836 "dev": true
837 },
838 "node_modules/define-properties": {
839 "version": "1.1.4",
840 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
841 "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
842 "dev": true,
843 "dependencies": {
844 "has-property-descriptors": "^1.0.0",
845 "object-keys": "^1.1.1"
846 },
847 "engines": {
848 "node": ">= 0.4"
849 },
850 "funding": {
851 "url": "https://github.com/sponsors/ljharb"
852 }
853 },
854 "node_modules/defined": {
855 "version": "1.0.0",
856 "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
857 "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
858 "dev": true
859 },
860 "node_modules/diff": {
861 "version": "5.0.0",
862 "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
863 "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
864 "dev": true,
865 "engines": {
866 "node": ">=0.3.1"
867 }
868 },
869 "node_modules/dir-glob": {
870 "version": "3.0.1",
871 "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
872 "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
873 "dev": true,
874 "dependencies": {
875 "path-type": "^4.0.0"
876 },
877 "engines": {
878 "node": ">=8"
879 }
880 },
881 "node_modules/doctrine": {
882 "version": "3.0.0",
883 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
884 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
885 "dev": true,
886 "dependencies": {
887 "esutils": "^2.0.2"
888 },
889 "engines": {
890 "node": ">=6.0.0"
891 }
892 },
893 "node_modules/dotignore": {
894 "version": "0.1.2",
895 "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz",
896 "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==",
897 "dev": true,
898 "dependencies": {
899 "minimatch": "^3.0.4"
900 },
901 "bin": {
902 "ignored": "bin/ignored"
903 }
904 },
905 "node_modules/emoji-regex": {
906 "version": "8.0.0",
907 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
908 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
909 "dev": true
910 },
911 "node_modules/es-abstract": {
912 "version": "1.20.0",
913 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.0.tgz",
914 "integrity": "sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA==",
915 "dev": true,
916 "dependencies": {
917 "call-bind": "^1.0.2",
918 "es-to-primitive": "^1.2.1",
919 "function-bind": "^1.1.1",
920 "function.prototype.name": "^1.1.5",
921 "get-intrinsic": "^1.1.1",
922 "get-symbol-description": "^1.0.0",
923 "has": "^1.0.3",
924 "has-property-descriptors": "^1.0.0",
925 "has-symbols": "^1.0.3",
926 "internal-slot": "^1.0.3",
927 "is-callable": "^1.2.4",
928 "is-negative-zero": "^2.0.2",
929 "is-regex": "^1.1.4",
930 "is-shared-array-buffer": "^1.0.2",
931 "is-string": "^1.0.7",
932 "is-weakref": "^1.0.2",
933 "object-inspect": "^1.12.0",
934 "object-keys": "^1.1.1",
935 "object.assign": "^4.1.2",
936 "regexp.prototype.flags": "^1.4.1",
937 "string.prototype.trimend": "^1.0.5",
938 "string.prototype.trimstart": "^1.0.5",
939 "unbox-primitive": "^1.0.2"
940 },
941 "engines": {
942 "node": ">= 0.4"
943 },
944 "funding": {
945 "url": "https://github.com/sponsors/ljharb"
946 }
947 },
948 "node_modules/es-get-iterator": {
949 "version": "1.1.2",
950 "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
951 "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
952 "dev": true,
953 "dependencies": {
954 "call-bind": "^1.0.2",
955 "get-intrinsic": "^1.1.0",
956 "has-symbols": "^1.0.1",
957 "is-arguments": "^1.1.0",
958 "is-map": "^2.0.2",
959 "is-set": "^2.0.2",
960 "is-string": "^1.0.5",
961 "isarray": "^2.0.5"
962 },
963 "funding": {
964 "url": "https://github.com/sponsors/ljharb"
965 }
966 },
967 "node_modules/es-shim-unscopables": {
968 "version": "1.0.0",
969 "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
970 "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
971 "dev": true,
972 "dependencies": {
973 "has": "^1.0.3"
974 }
975 },
976 "node_modules/es-to-primitive": {
977 "version": "1.2.1",
978 "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
979 "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
980 "dev": true,
981 "dependencies": {
982 "is-callable": "^1.1.4",
983 "is-date-object": "^1.0.1",
984 "is-symbol": "^1.0.2"
985 },
986 "engines": {
987 "node": ">= 0.4"
988 },
989 "funding": {
990 "url": "https://github.com/sponsors/ljharb"
991 }
992 },
993 "node_modules/escalade": {
994 "version": "3.1.1",
995 "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
996 "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
997 "dev": true,
998 "engines": {
999 "node": ">=6"
1000 }
1001 },
1002 "node_modules/escape-string-regexp": {
1003 "version": "4.0.0",
1004 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
1005 "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
1006 "dev": true,
1007 "engines": {
1008 "node": ">=10"
1009 },
1010 "funding": {
1011 "url": "https://github.com/sponsors/sindresorhus"
1012 }
1013 },
1014 "node_modules/eslint": {
1015 "version": "8.15.0",
1016 "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz",
1017 "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==",
1018 "dev": true,
1019 "dependencies": {
1020 "@eslint/eslintrc": "^1.2.3",
1021 "@humanwhocodes/config-array": "^0.9.2",
1022 "ajv": "^6.10.0",
1023 "chalk": "^4.0.0",
1024 "cross-spawn": "^7.0.2",
1025 "debug": "^4.3.2",
1026 "doctrine": "^3.0.0",
1027 "escape-string-regexp": "^4.0.0",
1028 "eslint-scope": "^7.1.1",
1029 "eslint-utils": "^3.0.0",
1030 "eslint-visitor-keys": "^3.3.0",
1031 "espree": "^9.3.2",
1032 "esquery": "^1.4.0",
1033 "esutils": "^2.0.2",
1034 "fast-deep-equal": "^3.1.3",
1035 "file-entry-cache": "^6.0.1",
1036 "functional-red-black-tree": "^1.0.1",
1037 "glob-parent": "^6.0.1",
1038 "globals": "^13.6.0",
1039 "ignore": "^5.2.0",
1040 "import-fresh": "^3.0.0",
1041 "imurmurhash": "^0.1.4",
1042 "is-glob": "^4.0.0",
1043 "js-yaml": "^4.1.0",
1044 "json-stable-stringify-without-jsonify": "^1.0.1",
1045 "levn": "^0.4.1",
1046 "lodash.merge": "^4.6.2",
1047 "minimatch": "^3.1.2",
1048 "natural-compare": "^1.4.0",
1049 "optionator": "^0.9.1",
1050 "regexpp": "^3.2.0",
1051 "strip-ansi": "^6.0.1",
1052 "strip-json-comments": "^3.1.0",
1053 "text-table": "^0.2.0",
1054 "v8-compile-cache": "^2.0.3"
1055 },
1056 "bin": {
1057 "eslint": "bin/eslint.js"
1058 },
1059 "engines": {
1060 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1061 },
1062 "funding": {
1063 "url": "https://opencollective.com/eslint"
1064 }
1065 },
1066 "node_modules/eslint-config-standard": {
1067 "version": "17.0.0",
1068 "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz",
1069 "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==",
1070 "dev": true,
1071 "funding": [
1072 {
1073 "type": "github",
1074 "url": "https://github.com/sponsors/feross"
1075 },
1076 {
1077 "type": "patreon",
1078 "url": "https://www.patreon.com/feross"
1079 },
1080 {
1081 "type": "consulting",
1082 "url": "https://feross.org/support"
1083 }
1084 ],
1085 "peerDependencies": {
1086 "eslint": "^8.0.1",
1087 "eslint-plugin-import": "^2.25.2",
1088 "eslint-plugin-n": "^15.0.0",
1089 "eslint-plugin-promise": "^6.0.0"
1090 }
1091 },
1092 "node_modules/eslint-import-resolver-node": {
1093 "version": "0.3.6",
1094 "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
1095 "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
1096 "dev": true,
1097 "dependencies": {
1098 "debug": "^3.2.7",
1099 "resolve": "^1.20.0"
1100 }
1101 },
1102 "node_modules/eslint-import-resolver-node/node_modules/debug": {
1103 "version": "3.2.7",
1104 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
1105 "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
1106 "dev": true,
1107 "dependencies": {
1108 "ms": "^2.1.1"
1109 }
1110 },
1111 "node_modules/eslint-import-resolver-node/node_modules/resolve": {
1112 "version": "1.22.0",
1113 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
1114 "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
1115 "dev": true,
1116 "dependencies": {
1117 "is-core-module": "^2.8.1",
1118 "path-parse": "^1.0.7",
1119 "supports-preserve-symlinks-flag": "^1.0.0"
1120 },
1121 "bin": {
1122 "resolve": "bin/resolve"
1123 },
1124 "funding": {
1125 "url": "https://github.com/sponsors/ljharb"
1126 }
1127 },
1128 "node_modules/eslint-module-utils": {
1129 "version": "2.7.3",
1130 "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz",
1131 "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==",
1132 "dev": true,
1133 "dependencies": {
1134 "debug": "^3.2.7",
1135 "find-up": "^2.1.0"
1136 },
1137 "engines": {
1138 "node": ">=4"
1139 }
1140 },
1141 "node_modules/eslint-module-utils/node_modules/debug": {
1142 "version": "3.2.7",
1143 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
1144 "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
1145 "dev": true,
1146 "dependencies": {
1147 "ms": "^2.1.1"
1148 }
1149 },
1150 "node_modules/eslint-module-utils/node_modules/find-up": {
1151 "version": "2.1.0",
1152 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
1153 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
1154 "dev": true,
1155 "dependencies": {
1156 "locate-path": "^2.0.0"
1157 },
1158 "engines": {
1159 "node": ">=4"
1160 }
1161 },
1162 "node_modules/eslint-module-utils/node_modules/locate-path": {
1163 "version": "2.0.0",
1164 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
1165 "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
1166 "dev": true,
1167 "dependencies": {
1168 "p-locate": "^2.0.0",
1169 "path-exists": "^3.0.0"
1170 },
1171 "engines": {
1172 "node": ">=4"
1173 }
1174 },
1175 "node_modules/eslint-module-utils/node_modules/p-limit": {
1176 "version": "1.3.0",
1177 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
1178 "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
1179 "dev": true,
1180 "dependencies": {
1181 "p-try": "^1.0.0"
1182 },
1183 "engines": {
1184 "node": ">=4"
1185 }
1186 },
1187 "node_modules/eslint-module-utils/node_modules/p-locate": {
1188 "version": "2.0.0",
1189 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
1190 "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
1191 "dev": true,
1192 "dependencies": {
1193 "p-limit": "^1.1.0"
1194 },
1195 "engines": {
1196 "node": ">=4"
1197 }
1198 },
1199 "node_modules/eslint-module-utils/node_modules/path-exists": {
1200 "version": "3.0.0",
1201 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
1202 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
1203 "dev": true,
1204 "engines": {
1205 "node": ">=4"
1206 }
1207 },
1208 "node_modules/eslint-plugin-es": {
1209 "version": "4.1.0",
1210 "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz",
1211 "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==",
1212 "dev": true,
1213 "dependencies": {
1214 "eslint-utils": "^2.0.0",
1215 "regexpp": "^3.0.0"
1216 },
1217 "engines": {
1218 "node": ">=8.10.0"
1219 },
1220 "funding": {
1221 "url": "https://github.com/sponsors/mysticatea"
1222 },
1223 "peerDependencies": {
1224 "eslint": ">=4.19.1"
1225 }
1226 },
1227 "node_modules/eslint-plugin-es/node_modules/eslint-utils": {
1228 "version": "2.1.0",
1229 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
1230 "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
1231 "dev": true,
1232 "dependencies": {
1233 "eslint-visitor-keys": "^1.1.0"
1234 },
1235 "engines": {
1236 "node": ">=6"
1237 },
1238 "funding": {
1239 "url": "https://github.com/sponsors/mysticatea"
1240 }
1241 },
1242 "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": {
1243 "version": "1.3.0",
1244 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
1245 "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
1246 "dev": true,
1247 "engines": {
1248 "node": ">=4"
1249 }
1250 },
1251 "node_modules/eslint-plugin-import": {
1252 "version": "2.26.0",
1253 "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
1254 "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
1255 "dev": true,
1256 "dependencies": {
1257 "array-includes": "^3.1.4",
1258 "array.prototype.flat": "^1.2.5",
1259 "debug": "^2.6.9",
1260 "doctrine": "^2.1.0",
1261 "eslint-import-resolver-node": "^0.3.6",
1262 "eslint-module-utils": "^2.7.3",
1263 "has": "^1.0.3",
1264 "is-core-module": "^2.8.1",
1265 "is-glob": "^4.0.3",
1266 "minimatch": "^3.1.2",
1267 "object.values": "^1.1.5",
1268 "resolve": "^1.22.0",
1269 "tsconfig-paths": "^3.14.1"
1270 },
1271 "engines": {
1272 "node": ">=4"
1273 },
1274 "peerDependencies": {
1275 "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
1276 }
1277 },
1278 "node_modules/eslint-plugin-import/node_modules/debug": {
1279 "version": "2.6.9",
1280 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1281 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1282 "dev": true,
1283 "dependencies": {
1284 "ms": "2.0.0"
1285 }
1286 },
1287 "node_modules/eslint-plugin-import/node_modules/doctrine": {
1288 "version": "2.1.0",
1289 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
1290 "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
1291 "dev": true,
1292 "dependencies": {
1293 "esutils": "^2.0.2"
1294 },
1295 "engines": {
1296 "node": ">=0.10.0"
1297 }
1298 },
1299 "node_modules/eslint-plugin-import/node_modules/ms": {
1300 "version": "2.0.0",
1301 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1302 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1303 "dev": true
1304 },
1305 "node_modules/eslint-plugin-import/node_modules/resolve": {
1306 "version": "1.22.0",
1307 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
1308 "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
1309 "dev": true,
1310 "dependencies": {
1311 "is-core-module": "^2.8.1",
1312 "path-parse": "^1.0.7",
1313 "supports-preserve-symlinks-flag": "^1.0.0"
1314 },
1315 "bin": {
1316 "resolve": "bin/resolve"
1317 },
1318 "funding": {
1319 "url": "https://github.com/sponsors/ljharb"
1320 }
1321 },
1322 "node_modules/eslint-plugin-n": {
1323 "version": "15.2.0",
1324 "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.0.tgz",
1325 "integrity": "sha512-lWLg++jGwC88GDGGBX3CMkk0GIWq0y41aH51lavWApOKcMQcYoL3Ayd0lEdtD3SnQtR+3qBvWQS3qGbR2BxRWg==",
1326 "dev": true,
1327 "dependencies": {
1328 "builtins": "^4.0.0",
1329 "eslint-plugin-es": "^4.1.0",
1330 "eslint-utils": "^3.0.0",
1331 "ignore": "^5.1.1",
1332 "is-core-module": "^2.3.0",
1333 "minimatch": "^3.0.4",
1334 "resolve": "^1.10.1",
1335 "semver": "^6.3.0"
1336 },
1337 "engines": {
1338 "node": ">=12.22.0"
1339 },
1340 "funding": {
1341 "url": "https://github.com/sponsors/mysticatea"
1342 },
1343 "peerDependencies": {
1344 "eslint": ">=7.0.0"
1345 }
1346 },
1347 "node_modules/eslint-plugin-n/node_modules/resolve": {
1348 "version": "1.22.0",
1349 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
1350 "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
1351 "dev": true,
1352 "dependencies": {
1353 "is-core-module": "^2.8.1",
1354 "path-parse": "^1.0.7",
1355 "supports-preserve-symlinks-flag": "^1.0.0"
1356 },
1357 "bin": {
1358 "resolve": "bin/resolve"
1359 },
1360 "funding": {
1361 "url": "https://github.com/sponsors/ljharb"
1362 }
1363 },
1364 "node_modules/eslint-plugin-n/node_modules/semver": {
1365 "version": "6.3.0",
1366 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1367 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1368 "dev": true,
1369 "bin": {
1370 "semver": "bin/semver.js"
1371 }
1372 },
1373 "node_modules/eslint-plugin-promise": {
1374 "version": "6.0.0",
1375 "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz",
1376 "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==",
1377 "dev": true,
1378 "engines": {
1379 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1380 },
1381 "peerDependencies": {
1382 "eslint": "^7.0.0 || ^8.0.0"
1383 }
1384 },
1385 "node_modules/eslint-plugin-react": {
1386 "version": "7.29.4",
1387 "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz",
1388 "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==",
1389 "dev": true,
1390 "dependencies": {
1391 "array-includes": "^3.1.4",
1392 "array.prototype.flatmap": "^1.2.5",
1393 "doctrine": "^2.1.0",
1394 "estraverse": "^5.3.0",
1395 "jsx-ast-utils": "^2.4.1 || ^3.0.0",
1396 "minimatch": "^3.1.2",
1397 "object.entries": "^1.1.5",
1398 "object.fromentries": "^2.0.5",
1399 "object.hasown": "^1.1.0",
1400 "object.values": "^1.1.5",
1401 "prop-types": "^15.8.1",
1402 "resolve": "^2.0.0-next.3",
1403 "semver": "^6.3.0",
1404 "string.prototype.matchall": "^4.0.6"
1405 },
1406 "engines": {
1407 "node": ">=4"
1408 },
1409 "peerDependencies": {
1410 "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
1411 }
1412 },
1413 "node_modules/eslint-plugin-react/node_modules/doctrine": {
1414 "version": "2.1.0",
1415 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
1416 "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
1417 "dev": true,
1418 "dependencies": {
1419 "esutils": "^2.0.2"
1420 },
1421 "engines": {
1422 "node": ">=0.10.0"
1423 }
1424 },
1425 "node_modules/eslint-plugin-react/node_modules/semver": {
1426 "version": "6.3.0",
1427 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1428 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1429 "dev": true,
1430 "bin": {
1431 "semver": "bin/semver.js"
1432 }
1433 },
1434 "node_modules/eslint-scope": {
1435 "version": "7.1.1",
1436 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
1437 "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
1438 "dev": true,
1439 "dependencies": {
1440 "esrecurse": "^4.3.0",
1441 "estraverse": "^5.2.0"
1442 },
1443 "engines": {
1444 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1445 }
1446 },
1447 "node_modules/eslint-utils": {
1448 "version": "3.0.0",
1449 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
1450 "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
1451 "dev": true,
1452 "dependencies": {
1453 "eslint-visitor-keys": "^2.0.0"
1454 },
1455 "engines": {
1456 "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
1457 },
1458 "funding": {
1459 "url": "https://github.com/sponsors/mysticatea"
1460 },
1461 "peerDependencies": {
1462 "eslint": ">=5"
1463 }
1464 },
1465 "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
1466 "version": "2.1.0",
1467 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
1468 "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
1469 "dev": true,
1470 "engines": {
1471 "node": ">=10"
1472 }
1473 },
1474 "node_modules/eslint-visitor-keys": {
1475 "version": "3.3.0",
1476 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
1477 "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
1478 "dev": true,
1479 "engines": {
1480 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1481 }
1482 },
1483 "node_modules/espree": {
1484 "version": "9.3.2",
1485 "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz",
1486 "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==",
1487 "dev": true,
1488 "dependencies": {
1489 "acorn": "^8.7.1",
1490 "acorn-jsx": "^5.3.2",
1491 "eslint-visitor-keys": "^3.3.0"
1492 },
1493 "engines": {
1494 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1495 }
1496 },
1497 "node_modules/esquery": {
1498 "version": "1.4.0",
1499 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
1500 "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
1501 "dev": true,
1502 "dependencies": {
1503 "estraverse": "^5.1.0"
1504 },
1505 "engines": {
1506 "node": ">=0.10"
1507 }
1508 },
1509 "node_modules/esrecurse": {
1510 "version": "4.3.0",
1511 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
1512 "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
1513 "dev": true,
1514 "dependencies": {
1515 "estraverse": "^5.2.0"
1516 },
1517 "engines": {
1518 "node": ">=4.0"
1519 }
1520 },
1521 "node_modules/estraverse": {
1522 "version": "5.3.0",
1523 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
1524 "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
1525 "dev": true,
1526 "engines": {
1527 "node": ">=4.0"
1528 }
1529 },
1530 "node_modules/esutils": {
1531 "version": "2.0.3",
1532 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1533 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1534 "dev": true,
1535 "engines": {
1536 "node": ">=0.10.0"
1537 }
1538 },
1539 "node_modules/fast-deep-equal": {
1540 "version": "3.1.3",
1541 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1542 "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1543 "dev": true
1544 },
1545 "node_modules/fast-glob": {
1546 "version": "3.2.11",
1547 "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
1548 "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
1549 "dev": true,
1550 "dependencies": {
1551 "@nodelib/fs.stat": "^2.0.2",
1552 "@nodelib/fs.walk": "^1.2.3",
1553 "glob-parent": "^5.1.2",
1554 "merge2": "^1.3.0",
1555 "micromatch": "^4.0.4"
1556 },
1557 "engines": {
1558 "node": ">=8.6.0"
1559 }
1560 },
1561 "node_modules/fast-glob/node_modules/glob-parent": {
1562 "version": "5.1.2",
1563 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1564 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1565 "dev": true,
1566 "dependencies": {
1567 "is-glob": "^4.0.1"
1568 },
1569 "engines": {
1570 "node": ">= 6"
1571 }
1572 },
1573 "node_modules/fast-json-stable-stringify": {
1574 "version": "2.1.0",
1575 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1576 "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1577 "dev": true
1578 },
1579 "node_modules/fast-levenshtein": {
1580 "version": "2.0.6",
1581 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1582 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
1583 "dev": true
1584 },
1585 "node_modules/fastq": {
1586 "version": "1.13.0",
1587 "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
1588 "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
1589 "dev": true,
1590 "dependencies": {
1591 "reusify": "^1.0.4"
1592 }
1593 },
1594 "node_modules/file-entry-cache": {
1595 "version": "6.0.1",
1596 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
1597 "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
1598 "dev": true,
1599 "dependencies": {
1600 "flat-cache": "^3.0.4"
1601 },
1602 "engines": {
1603 "node": "^10.12.0 || >=12.0.0"
1604 }
1605 },
1606 "node_modules/fill-range": {
1607 "version": "7.0.1",
1608 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1609 "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1610 "dev": true,
1611 "dependencies": {
1612 "to-regex-range": "^5.0.1"
1613 },
1614 "engines": {
1615 "node": ">=8"
1616 }
1617 },
1618 "node_modules/find-up": {
1619 "version": "5.0.0",
1620 "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
1621 "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
1622 "dev": true,
1623 "dependencies": {
1624 "locate-path": "^6.0.0",
1625 "path-exists": "^4.0.0"
1626 },
1627 "engines": {
1628 "node": ">=10"
1629 },
1630 "funding": {
1631 "url": "https://github.com/sponsors/sindresorhus"
1632 }
1633 },
1634 "node_modules/flat": {
1635 "version": "5.0.2",
1636 "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
1637 "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
1638 "dev": true,
1639 "bin": {
1640 "flat": "cli.js"
1641 }
1642 },
1643 "node_modules/flat-cache": {
1644 "version": "3.0.4",
1645 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
1646 "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
1647 "dev": true,
1648 "dependencies": {
1649 "flatted": "^3.1.0",
1650 "rimraf": "^3.0.2"
1651 },
1652 "engines": {
1653 "node": "^10.12.0 || >=12.0.0"
1654 }
1655 },
1656 "node_modules/flatted": {
1657 "version": "3.2.5",
1658 "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
1659 "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
1660 "dev": true
1661 },
1662 "node_modules/for-each": {
1663 "version": "0.3.3",
1664 "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
1665 "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
1666 "dev": true,
1667 "dependencies": {
1668 "is-callable": "^1.1.3"
1669 }
1670 },
1671 "node_modules/foreach": {
1672 "version": "2.0.5",
1673 "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
1674 "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
1675 "dev": true
1676 },
1677 "node_modules/fs.realpath": {
1678 "version": "1.0.0",
1679 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1680 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1681 "dev": true
1682 },
1683 "node_modules/fsevents": {
1684 "version": "2.3.2",
1685 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1686 "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1687 "dev": true,
1688 "hasInstallScript": true,
1689 "optional": true,
1690 "os": [
1691 "darwin"
1692 ],
1693 "engines": {
1694 "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1695 }
1696 },
1697 "node_modules/function-bind": {
1698 "version": "1.1.1",
1699 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1700 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1701 "dev": true
1702 },
1703 "node_modules/function.prototype.name": {
1704 "version": "1.1.5",
1705 "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
1706 "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
1707 "dev": true,
1708 "dependencies": {
1709 "call-bind": "^1.0.2",
1710 "define-properties": "^1.1.3",
1711 "es-abstract": "^1.19.0",
1712 "functions-have-names": "^1.2.2"
1713 },
1714 "engines": {
1715 "node": ">= 0.4"
1716 },
1717 "funding": {
1718 "url": "https://github.com/sponsors/ljharb"
1719 }
1720 },
1721 "node_modules/functional-red-black-tree": {
1722 "version": "1.0.1",
1723 "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
1724 "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
1725 "dev": true
1726 },
1727 "node_modules/functions-have-names": {
1728 "version": "1.2.3",
1729 "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
1730 "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
1731 "dev": true,
1732 "funding": {
1733 "url": "https://github.com/sponsors/ljharb"
1734 }
1735 },
1736 "node_modules/get-caller-file": {
1737 "version": "2.0.5",
1738 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
1739 "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
1740 "dev": true,
1741 "engines": {
1742 "node": "6.* || 8.* || >= 10.*"
1743 }
1744 },
1745 "node_modules/get-func-name": {
1746 "version": "2.0.0",
1747 "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
1748 "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
1749 "dev": true,
1750 "engines": {
1751 "node": "*"
1752 }
1753 },
1754 "node_modules/get-intrinsic": {
1755 "version": "1.1.1",
1756 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
1757 "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
1758 "dev": true,
1759 "dependencies": {
1760 "function-bind": "^1.1.1",
1761 "has": "^1.0.3",
1762 "has-symbols": "^1.0.1"
1763 },
1764 "funding": {
1765 "url": "https://github.com/sponsors/ljharb"
1766 }
1767 },
1768 "node_modules/get-package-type": {
1769 "version": "0.1.0",
1770 "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
1771 "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
1772 "dev": true,
1773 "engines": {
1774 "node": ">=8.0.0"
1775 }
1776 },
1777 "node_modules/get-symbol-description": {
1778 "version": "1.0.0",
1779 "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
1780 "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
1781 "dev": true,
1782 "dependencies": {
1783 "call-bind": "^1.0.2",
1784 "get-intrinsic": "^1.1.1"
1785 },
1786 "engines": {
1787 "node": ">= 0.4"
1788 },
1789 "funding": {
1790 "url": "https://github.com/sponsors/ljharb"
1791 }
1792 },
1793 "node_modules/glob": {
1794 "version": "7.2.0",
1795 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
1796 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
1797 "dev": true,
1798 "dependencies": {
1799 "fs.realpath": "^1.0.0",
1800 "inflight": "^1.0.4",
1801 "inherits": "2",
1802 "minimatch": "^3.0.4",
1803 "once": "^1.3.0",
1804 "path-is-absolute": "^1.0.0"
1805 },
1806 "engines": {
1807 "node": "*"
1808 },
1809 "funding": {
1810 "url": "https://github.com/sponsors/isaacs"
1811 }
1812 },
1813 "node_modules/glob-parent": {
1814 "version": "6.0.2",
1815 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1816 "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1817 "dev": true,
1818 "dependencies": {
1819 "is-glob": "^4.0.3"
1820 },
1821 "engines": {
1822 "node": ">=10.13.0"
1823 }
1824 },
1825 "node_modules/globals": {
1826 "version": "13.14.0",
1827 "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz",
1828 "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==",
1829 "dev": true,
1830 "dependencies": {
1831 "type-fest": "^0.20.2"
1832 },
1833 "engines": {
1834 "node": ">=8"
1835 },
1836 "funding": {
1837 "url": "https://github.com/sponsors/sindresorhus"
1838 }
1839 },
1840 "node_modules/globby": {
1841 "version": "11.1.0",
1842 "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
1843 "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
1844 "dev": true,
1845 "dependencies": {
1846 "array-union": "^2.1.0",
1847 "dir-glob": "^3.0.1",
1848 "fast-glob": "^3.2.9",
1849 "ignore": "^5.2.0",
1850 "merge2": "^1.4.1",
1851 "slash": "^3.0.0"
1852 },
1853 "engines": {
1854 "node": ">=10"
1855 },
1856 "funding": {
1857 "url": "https://github.com/sponsors/sindresorhus"
1858 }
1859 },
1860 "node_modules/has": {
1861 "version": "1.0.3",
1862 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1863 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1864 "dev": true,
1865 "dependencies": {
1866 "function-bind": "^1.1.1"
1867 },
1868 "engines": {
1869 "node": ">= 0.4.0"
1870 }
1871 },
1872 "node_modules/has-bigints": {
1873 "version": "1.0.2",
1874 "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
1875 "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
1876 "dev": true,
1877 "funding": {
1878 "url": "https://github.com/sponsors/ljharb"
1879 }
1880 },
1881 "node_modules/has-dynamic-import": {
1882 "version": "2.0.1",
1883 "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.1.tgz",
1884 "integrity": "sha512-X3fbtsZmwb6W7fJGR9o7x65fZoodygCrZ3TVycvghP62yYQfS0t4RS0Qcz+j5tQYUKeSWS09tHkWW6WhFV3XhQ==",
1885 "dev": true,
1886 "dependencies": {
1887 "call-bind": "^1.0.2",
1888 "get-intrinsic": "^1.1.1"
1889 },
1890 "funding": {
1891 "url": "https://github.com/sponsors/ljharb"
1892 }
1893 },
1894 "node_modules/has-flag": {
1895 "version": "4.0.0",
1896 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1897 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1898 "dev": true,
1899 "engines": {
1900 "node": ">=8"
1901 }
1902 },
1903 "node_modules/has-property-descriptors": {
1904 "version": "1.0.0",
1905 "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
1906 "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
1907 "dev": true,
1908 "dependencies": {
1909 "get-intrinsic": "^1.1.1"
1910 },
1911 "funding": {
1912 "url": "https://github.com/sponsors/ljharb"
1913 }
1914 },
1915 "node_modules/has-symbols": {
1916 "version": "1.0.3",
1917 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
1918 "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
1919 "dev": true,
1920 "engines": {
1921 "node": ">= 0.4"
1922 },
1923 "funding": {
1924 "url": "https://github.com/sponsors/ljharb"
1925 }
1926 },
1927 "node_modules/has-tostringtag": {
1928 "version": "1.0.0",
1929 "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
1930 "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
1931 "dev": true,
1932 "dependencies": {
1933 "has-symbols": "^1.0.2"
1934 },
1935 "engines": {
1936 "node": ">= 0.4"
1937 },
1938 "funding": {
1939 "url": "https://github.com/sponsors/ljharb"
1940 }
1941 },
1942 "node_modules/he": {
1943 "version": "1.2.0",
1944 "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
1945 "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
1946 "dev": true,
1947 "bin": {
1948 "he": "bin/he"
1949 }
1950 },
1951 "node_modules/ignore": {
1952 "version": "5.2.0",
1953 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
1954 "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
1955 "dev": true,
1956 "engines": {
1957 "node": ">= 4"
1958 }
1959 },
1960 "node_modules/import-fresh": {
1961 "version": "3.3.0",
1962 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
1963 "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
1964 "dev": true,
1965 "dependencies": {
1966 "parent-module": "^1.0.0",
1967 "resolve-from": "^4.0.0"
1968 },
1969 "engines": {
1970 "node": ">=6"
1971 },
1972 "funding": {
1973 "url": "https://github.com/sponsors/sindresorhus"
1974 }
1975 },
1976 "node_modules/imurmurhash": {
1977 "version": "0.1.4",
1978 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1979 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1980 "dev": true,
1981 "engines": {
1982 "node": ">=0.8.19"
1983 }
1984 },
1985 "node_modules/inflight": {
1986 "version": "1.0.6",
1987 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1988 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1989 "dev": true,
1990 "dependencies": {
1991 "once": "^1.3.0",
1992 "wrappy": "1"
1993 }
1994 },
1995 "node_modules/inherits": {
1996 "version": "2.0.4",
1997 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1998 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1999 "dev": true
2000 },
2001 "node_modules/internal-slot": {
2002 "version": "1.0.3",
2003 "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
2004 "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
2005 "dev": true,
2006 "dependencies": {
2007 "get-intrinsic": "^1.1.0",
2008 "has": "^1.0.3",
2009 "side-channel": "^1.0.4"
2010 },
2011 "engines": {
2012 "node": ">= 0.4"
2013 }
2014 },
2015 "node_modules/is-arguments": {
2016 "version": "1.1.1",
2017 "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
2018 "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
2019 "dev": true,
2020 "dependencies": {
2021 "call-bind": "^1.0.2",
2022 "has-tostringtag": "^1.0.0"
2023 },
2024 "engines": {
2025 "node": ">= 0.4"
2026 },
2027 "funding": {
2028 "url": "https://github.com/sponsors/ljharb"
2029 }
2030 },
2031 "node_modules/is-bigint": {
2032 "version": "1.0.4",
2033 "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
2034 "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
2035 "dev": true,
2036 "dependencies": {
2037 "has-bigints": "^1.0.1"
2038 },
2039 "funding": {
2040 "url": "https://github.com/sponsors/ljharb"
2041 }
2042 },
2043 "node_modules/is-binary-path": {
2044 "version": "2.1.0",
2045 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
2046 "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
2047 "dev": true,
2048 "dependencies": {
2049 "binary-extensions": "^2.0.0"
2050 },
2051 "engines": {
2052 "node": ">=8"
2053 }
2054 },
2055 "node_modules/is-boolean-object": {
2056 "version": "1.1.2",
2057 "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
2058 "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
2059 "dev": true,
2060 "dependencies": {
2061 "call-bind": "^1.0.2",
2062 "has-tostringtag": "^1.0.0"
2063 },
2064 "engines": {
2065 "node": ">= 0.4"
2066 },
2067 "funding": {
2068 "url": "https://github.com/sponsors/ljharb"
2069 }
2070 },
2071 "node_modules/is-callable": {
2072 "version": "1.2.4",
2073 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
2074 "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
2075 "dev": true,
2076 "engines": {
2077 "node": ">= 0.4"
2078 },
2079 "funding": {
2080 "url": "https://github.com/sponsors/ljharb"
2081 }
2082 },
2083 "node_modules/is-core-module": {
2084 "version": "2.9.0",
2085 "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
2086 "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
2087 "dev": true,
2088 "dependencies": {
2089 "has": "^1.0.3"
2090 },
2091 "funding": {
2092 "url": "https://github.com/sponsors/ljharb"
2093 }
2094 },
2095 "node_modules/is-date-object": {
2096 "version": "1.0.5",
2097 "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
2098 "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
2099 "dev": true,
2100 "dependencies": {
2101 "has-tostringtag": "^1.0.0"
2102 },
2103 "engines": {
2104 "node": ">= 0.4"
2105 },
2106 "funding": {
2107 "url": "https://github.com/sponsors/ljharb"
2108 }
2109 },
2110 "node_modules/is-extglob": {
2111 "version": "2.1.1",
2112 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2113 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
2114 "dev": true,
2115 "engines": {
2116 "node": ">=0.10.0"
2117 }
2118 },
2119 "node_modules/is-fullwidth-code-point": {
2120 "version": "3.0.0",
2121 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
2122 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
2123 "dev": true,
2124 "engines": {
2125 "node": ">=8"
2126 }
2127 },
2128 "node_modules/is-glob": {
2129 "version": "4.0.3",
2130 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2131 "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2132 "dev": true,
2133 "dependencies": {
2134 "is-extglob": "^2.1.1"
2135 },
2136 "engines": {
2137 "node": ">=0.10.0"
2138 }
2139 },
2140 "node_modules/is-map": {
2141 "version": "2.0.2",
2142 "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
2143 "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
2144 "dev": true,
2145 "funding": {
2146 "url": "https://github.com/sponsors/ljharb"
2147 }
2148 },
2149 "node_modules/is-negative-zero": {
2150 "version": "2.0.2",
2151 "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
2152 "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
2153 "dev": true,
2154 "engines": {
2155 "node": ">= 0.4"
2156 },
2157 "funding": {
2158 "url": "https://github.com/sponsors/ljharb"
2159 }
2160 },
2161 "node_modules/is-number": {
2162 "version": "7.0.0",
2163 "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
2164 "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
2165 "dev": true,
2166 "engines": {
2167 "node": ">=0.12.0"
2168 }
2169 },
2170 "node_modules/is-number-object": {
2171 "version": "1.0.7",
2172 "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
2173 "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
2174 "dev": true,
2175 "dependencies": {
2176 "has-tostringtag": "^1.0.0"
2177 },
2178 "engines": {
2179 "node": ">= 0.4"
2180 },
2181 "funding": {
2182 "url": "https://github.com/sponsors/ljharb"
2183 }
2184 },
2185 "node_modules/is-plain-obj": {
2186 "version": "2.1.0",
2187 "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
2188 "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
2189 "dev": true,
2190 "engines": {
2191 "node": ">=8"
2192 }
2193 },
2194 "node_modules/is-regex": {
2195 "version": "1.1.4",
2196 "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
2197 "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
2198 "dev": true,
2199 "dependencies": {
2200 "call-bind": "^1.0.2",
2201 "has-tostringtag": "^1.0.0"
2202 },
2203 "engines": {
2204 "node": ">= 0.4"
2205 },
2206 "funding": {
2207 "url": "https://github.com/sponsors/ljharb"
2208 }
2209 },
2210 "node_modules/is-set": {
2211 "version": "2.0.2",
2212 "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
2213 "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
2214 "dev": true,
2215 "funding": {
2216 "url": "https://github.com/sponsors/ljharb"
2217 }
2218 },
2219 "node_modules/is-shared-array-buffer": {
2220 "version": "1.0.2",
2221 "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
2222 "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
2223 "dev": true,
2224 "dependencies": {
2225 "call-bind": "^1.0.2"
2226 },
2227 "funding": {
2228 "url": "https://github.com/sponsors/ljharb"
2229 }
2230 },
2231 "node_modules/is-string": {
2232 "version": "1.0.7",
2233 "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
2234 "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
2235 "dev": true,
2236 "dependencies": {
2237 "has-tostringtag": "^1.0.0"
2238 },
2239 "engines": {
2240 "node": ">= 0.4"
2241 },
2242 "funding": {
2243 "url": "https://github.com/sponsors/ljharb"
2244 }
2245 },
2246 "node_modules/is-symbol": {
2247 "version": "1.0.4",
2248 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
2249 "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
2250 "dev": true,
2251 "dependencies": {
2252 "has-symbols": "^1.0.2"
2253 },
2254 "engines": {
2255 "node": ">= 0.4"
2256 },
2257 "funding": {
2258 "url": "https://github.com/sponsors/ljharb"
2259 }
2260 },
2261 "node_modules/is-typed-array": {
2262 "version": "1.1.8",
2263 "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz",
2264 "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==",
2265 "dev": true,
2266 "dependencies": {
2267 "available-typed-arrays": "^1.0.5",
2268 "call-bind": "^1.0.2",
2269 "es-abstract": "^1.18.5",
2270 "foreach": "^2.0.5",
2271 "has-tostringtag": "^1.0.0"
2272 },
2273 "engines": {
2274 "node": ">= 0.4"
2275 },
2276 "funding": {
2277 "url": "https://github.com/sponsors/ljharb"
2278 }
2279 },
2280 "node_modules/is-unicode-supported": {
2281 "version": "0.1.0",
2282 "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
2283 "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
2284 "dev": true,
2285 "engines": {
2286 "node": ">=10"
2287 },
2288 "funding": {
2289 "url": "https://github.com/sponsors/sindresorhus"
2290 }
2291 },
2292 "node_modules/is-weakmap": {
2293 "version": "2.0.1",
2294 "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
2295 "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
2296 "dev": true,
2297 "funding": {
2298 "url": "https://github.com/sponsors/ljharb"
2299 }
2300 },
2301 "node_modules/is-weakref": {
2302 "version": "1.0.2",
2303 "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
2304 "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
2305 "dev": true,
2306 "dependencies": {
2307 "call-bind": "^1.0.2"
2308 },
2309 "funding": {
2310 "url": "https://github.com/sponsors/ljharb"
2311 }
2312 },
2313 "node_modules/is-weakset": {
2314 "version": "2.0.2",
2315 "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
2316 "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
2317 "dev": true,
2318 "dependencies": {
2319 "call-bind": "^1.0.2",
2320 "get-intrinsic": "^1.1.1"
2321 },
2322 "funding": {
2323 "url": "https://github.com/sponsors/ljharb"
2324 }
2325 },
2326 "node_modules/isarray": {
2327 "version": "2.0.5",
2328 "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
2329 "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
2330 "dev": true
2331 },
2332 "node_modules/isexe": {
2333 "version": "2.0.0",
2334 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2335 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
2336 "dev": true
2337 },
2338 "node_modules/js-tokens": {
2339 "version": "4.0.0",
2340 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2341 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
2342 "dev": true
2343 },
2344 "node_modules/js-yaml": {
2345 "version": "4.1.0",
2346 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
2347 "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
2348 "dev": true,
2349 "dependencies": {
2350 "argparse": "^2.0.1"
2351 },
2352 "bin": {
2353 "js-yaml": "bin/js-yaml.js"
2354 }
2355 },
2356 "node_modules/json-schema-traverse": {
2357 "version": "0.4.1",
2358 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2359 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2360 "dev": true
2361 },
2362 "node_modules/json-stable-stringify-without-jsonify": {
2363 "version": "1.0.1",
2364 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
2365 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
2366 "dev": true
2367 },
2368 "node_modules/json5": {
2369 "version": "1.0.1",
2370 "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
2371 "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
2372 "dev": true,
2373 "dependencies": {
2374 "minimist": "^1.2.0"
2375 },
2376 "bin": {
2377 "json5": "lib/cli.js"
2378 }
2379 },
2380 "node_modules/jsx-ast-utils": {
2381 "version": "3.3.0",
2382 "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz",
2383 "integrity": "sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==",
2384 "dev": true,
2385 "dependencies": {
2386 "array-includes": "^3.1.4",
2387 "object.assign": "^4.1.2"
2388 },
2389 "engines": {
2390 "node": ">=4.0"
2391 }
2392 },
2393 "node_modules/levn": {
2394 "version": "0.4.1",
2395 "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
2396 "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
2397 "dev": true,
2398 "dependencies": {
2399 "prelude-ls": "^1.2.1",
2400 "type-check": "~0.4.0"
2401 },
2402 "engines": {
2403 "node": ">= 0.8.0"
2404 }
2405 },
2406 "node_modules/locate-path": {
2407 "version": "6.0.0",
2408 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
2409 "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
2410 "dev": true,
2411 "dependencies": {
2412 "p-locate": "^5.0.0"
2413 },
2414 "engines": {
2415 "node": ">=10"
2416 },
2417 "funding": {
2418 "url": "https://github.com/sponsors/sindresorhus"
2419 }
2420 },
2421 "node_modules/lodash.merge": {
2422 "version": "4.6.2",
2423 "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
2424 "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
2425 "dev": true
2426 },
2427 "node_modules/log-symbols": {
2428 "version": "4.1.0",
2429 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
2430 "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
2431 "dev": true,
2432 "dependencies": {
2433 "chalk": "^4.1.0",
2434 "is-unicode-supported": "^0.1.0"
2435 },
2436 "engines": {
2437 "node": ">=10"
2438 },
2439 "funding": {
2440 "url": "https://github.com/sponsors/sindresorhus"
2441 }
2442 },
2443 "node_modules/loose-envify": {
2444 "version": "1.4.0",
2445 "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
2446 "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
2447 "dev": true,
2448 "dependencies": {
2449 "js-tokens": "^3.0.0 || ^4.0.0"
2450 },
2451 "bin": {
2452 "loose-envify": "cli.js"
2453 }
2454 },
2455 "node_modules/loupe": {
2456 "version": "2.3.4",
2457 "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
2458 "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
2459 "dev": true,
2460 "dependencies": {
2461 "get-func-name": "^2.0.0"
2462 }
2463 },
2464 "node_modules/lru-cache": {
2465 "version": "6.0.0",
2466 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
2467 "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
2468 "dev": true,
2469 "dependencies": {
2470 "yallist": "^4.0.0"
2471 },
2472 "engines": {
2473 "node": ">=10"
2474 }
2475 },
2476 "node_modules/merge2": {
2477 "version": "1.4.1",
2478 "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
2479 "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
2480 "dev": true,
2481 "engines": {
2482 "node": ">= 8"
2483 }
2484 },
2485 "node_modules/micromatch": {
2486 "version": "4.0.5",
2487 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
2488 "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
2489 "dev": true,
2490 "dependencies": {
2491 "braces": "^3.0.2",
2492 "picomatch": "^2.3.1"
2493 },
2494 "engines": {
2495 "node": ">=8.6"
2496 }
2497 },
2498 "node_modules/minimatch": {
2499 "version": "3.1.2",
2500 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
2501 "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
2502 "dev": true,
2503 "dependencies": {
2504 "brace-expansion": "^1.1.7"
2505 },
2506 "engines": {
2507 "node": "*"
2508 }
2509 },
2510 "node_modules/minimist": {
2511 "version": "1.2.6",
2512 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
2513 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
2514 "dev": true
2515 },
2516 "node_modules/mocha": {
2517 "version": "10.0.0",
2518 "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz",
2519 "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==",
2520 "dev": true,
2521 "dependencies": {
2522 "@ungap/promise-all-settled": "1.1.2",
2523 "ansi-colors": "4.1.1",
2524 "browser-stdout": "1.3.1",
2525 "chokidar": "3.5.3",
2526 "debug": "4.3.4",
2527 "diff": "5.0.0",
2528 "escape-string-regexp": "4.0.0",
2529 "find-up": "5.0.0",
2530 "glob": "7.2.0",
2531 "he": "1.2.0",
2532 "js-yaml": "4.1.0",
2533 "log-symbols": "4.1.0",
2534 "minimatch": "5.0.1",
2535 "ms": "2.1.3",
2536 "nanoid": "3.3.3",
2537 "serialize-javascript": "6.0.0",
2538 "strip-json-comments": "3.1.1",
2539 "supports-color": "8.1.1",
2540 "workerpool": "6.2.1",
2541 "yargs": "16.2.0",
2542 "yargs-parser": "20.2.4",
2543 "yargs-unparser": "2.0.0"
2544 },
2545 "bin": {
2546 "_mocha": "bin/_mocha",
2547 "mocha": "bin/mocha.js"
2548 },
2549 "engines": {
2550 "node": ">= 14.0.0"
2551 },
2552 "funding": {
2553 "type": "opencollective",
2554 "url": "https://opencollective.com/mochajs"
2555 }
2556 },
2557 "node_modules/mocha/node_modules/brace-expansion": {
2558 "version": "2.0.1",
2559 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
2560 "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
2561 "dev": true,
2562 "dependencies": {
2563 "balanced-match": "^1.0.0"
2564 }
2565 },
2566 "node_modules/mocha/node_modules/minimatch": {
2567 "version": "5.0.1",
2568 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
2569 "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
2570 "dev": true,
2571 "dependencies": {
2572 "brace-expansion": "^2.0.1"
2573 },
2574 "engines": {
2575 "node": ">=10"
2576 }
2577 },
2578 "node_modules/mocha/node_modules/ms": {
2579 "version": "2.1.3",
2580 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2581 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2582 "dev": true
2583 },
2584 "node_modules/mocha/node_modules/supports-color": {
2585 "version": "8.1.1",
2586 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
2587 "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
2588 "dev": true,
2589 "dependencies": {
2590 "has-flag": "^4.0.0"
2591 },
2592 "engines": {
2593 "node": ">=10"
2594 },
2595 "funding": {
2596 "url": "https://github.com/chalk/supports-color?sponsor=1"
2597 }
2598 },
2599 "node_modules/ms": {
2600 "version": "2.1.2",
2601 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2602 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
2603 "dev": true
2604 },
2605 "node_modules/nanoid": {
2606 "version": "3.3.3",
2607 "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
2608 "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
2609 "dev": true,
2610 "bin": {
2611 "nanoid": "bin/nanoid.cjs"
2612 },
2613 "engines": {
2614 "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
2615 }
2616 },
2617 "node_modules/natural-compare": {
2618 "version": "1.4.0",
2619 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
2620 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
2621 "dev": true
2622 },
2623 "node_modules/normalize-path": {
2624 "version": "3.0.0",
2625 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
2626 "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
2627 "dev": true,
2628 "engines": {
2629 "node": ">=0.10.0"
2630 }
2631 },
2632 "node_modules/object-assign": {
2633 "version": "4.1.1",
2634 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2635 "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
2636 "dev": true,
2637 "engines": {
2638 "node": ">=0.10.0"
2639 }
2640 },
2641 "node_modules/object-inspect": {
2642 "version": "1.12.0",
2643 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
2644 "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
2645 "dev": true,
2646 "funding": {
2647 "url": "https://github.com/sponsors/ljharb"
2648 }
2649 },
2650 "node_modules/object-is": {
2651 "version": "1.1.5",
2652 "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
2653 "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
2654 "dev": true,
2655 "dependencies": {
2656 "call-bind": "^1.0.2",
2657 "define-properties": "^1.1.3"
2658 },
2659 "engines": {
2660 "node": ">= 0.4"
2661 },
2662 "funding": {
2663 "url": "https://github.com/sponsors/ljharb"
2664 }
2665 },
2666 "node_modules/object-keys": {
2667 "version": "1.1.1",
2668 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
2669 "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
2670 "dev": true,
2671 "engines": {
2672 "node": ">= 0.4"
2673 }
2674 },
2675 "node_modules/object.assign": {
2676 "version": "4.1.2",
2677 "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
2678 "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
2679 "dev": true,
2680 "dependencies": {
2681 "call-bind": "^1.0.0",
2682 "define-properties": "^1.1.3",
2683 "has-symbols": "^1.0.1",
2684 "object-keys": "^1.1.1"
2685 },
2686 "engines": {
2687 "node": ">= 0.4"
2688 },
2689 "funding": {
2690 "url": "https://github.com/sponsors/ljharb"
2691 }
2692 },
2693 "node_modules/object.entries": {
2694 "version": "1.1.5",
2695 "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
2696 "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
2697 "dev": true,
2698 "dependencies": {
2699 "call-bind": "^1.0.2",
2700 "define-properties": "^1.1.3",
2701 "es-abstract": "^1.19.1"
2702 },
2703 "engines": {
2704 "node": ">= 0.4"
2705 }
2706 },
2707 "node_modules/object.fromentries": {
2708 "version": "2.0.5",
2709 "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
2710 "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
2711 "dev": true,
2712 "dependencies": {
2713 "call-bind": "^1.0.2",
2714 "define-properties": "^1.1.3",
2715 "es-abstract": "^1.19.1"
2716 },
2717 "engines": {
2718 "node": ">= 0.4"
2719 },
2720 "funding": {
2721 "url": "https://github.com/sponsors/ljharb"
2722 }
2723 },
2724 "node_modules/object.hasown": {
2725 "version": "1.1.1",
2726 "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz",
2727 "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==",
2728 "dev": true,
2729 "dependencies": {
2730 "define-properties": "^1.1.4",
2731 "es-abstract": "^1.19.5"
2732 },
2733 "funding": {
2734 "url": "https://github.com/sponsors/ljharb"
2735 }
2736 },
2737 "node_modules/object.values": {
2738 "version": "1.1.5",
2739 "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
2740 "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
2741 "dev": true,
2742 "dependencies": {
2743 "call-bind": "^1.0.2",
2744 "define-properties": "^1.1.3",
2745 "es-abstract": "^1.19.1"
2746 },
2747 "engines": {
2748 "node": ">= 0.4"
2749 },
2750 "funding": {
2751 "url": "https://github.com/sponsors/ljharb"
2752 }
2753 },
2754 "node_modules/once": {
2755 "version": "1.4.0",
2756 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2757 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2758 "dev": true,
2759 "dependencies": {
2760 "wrappy": "1"
2761 }
2762 },
2763 "node_modules/optionator": {
2764 "version": "0.9.1",
2765 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
2766 "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
2767 "dev": true,
2768 "dependencies": {
2769 "deep-is": "^0.1.3",
2770 "fast-levenshtein": "^2.0.6",
2771 "levn": "^0.4.1",
2772 "prelude-ls": "^1.2.1",
2773 "type-check": "^0.4.0",
2774 "word-wrap": "^1.2.3"
2775 },
2776 "engines": {
2777 "node": ">= 0.8.0"
2778 }
2779 },
2780 "node_modules/p-limit": {
2781 "version": "3.1.0",
2782 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
2783 "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
2784 "dev": true,
2785 "dependencies": {
2786 "yocto-queue": "^0.1.0"
2787 },
2788 "engines": {
2789 "node": ">=10"
2790 },
2791 "funding": {
2792 "url": "https://github.com/sponsors/sindresorhus"
2793 }
2794 },
2795 "node_modules/p-locate": {
2796 "version": "5.0.0",
2797 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
2798 "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
2799 "dev": true,
2800 "dependencies": {
2801 "p-limit": "^3.0.2"
2802 },
2803 "engines": {
2804 "node": ">=10"
2805 },
2806 "funding": {
2807 "url": "https://github.com/sponsors/sindresorhus"
2808 }
2809 },
2810 "node_modules/p-try": {
2811 "version": "1.0.0",
2812 "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
2813 "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
2814 "dev": true,
2815 "engines": {
2816 "node": ">=4"
2817 }
2818 },
2819 "node_modules/parent-module": {
2820 "version": "1.0.1",
2821 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
2822 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
2823 "dev": true,
2824 "dependencies": {
2825 "callsites": "^3.0.0"
2826 },
2827 "engines": {
2828 "node": ">=6"
2829 }
2830 },
2831 "node_modules/path-exists": {
2832 "version": "4.0.0",
2833 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
2834 "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
2835 "dev": true,
2836 "engines": {
2837 "node": ">=8"
2838 }
2839 },
2840 "node_modules/path-is-absolute": {
2841 "version": "1.0.1",
2842 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2843 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2844 "dev": true,
2845 "engines": {
2846 "node": ">=0.10.0"
2847 }
2848 },
2849 "node_modules/path-key": {
2850 "version": "3.1.1",
2851 "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
2852 "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
2853 "dev": true,
2854 "engines": {
2855 "node": ">=8"
2856 }
2857 },
2858 "node_modules/path-parse": {
2859 "version": "1.0.7",
2860 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2861 "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
2862 "dev": true
2863 },
2864 "node_modules/path-type": {
2865 "version": "4.0.0",
2866 "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
2867 "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
2868 "dev": true,
2869 "engines": {
2870 "node": ">=8"
2871 }
2872 },
2873 "node_modules/pathval": {
2874 "version": "1.1.1",
2875 "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
2876 "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
2877 "dev": true,
2878 "engines": {
2879 "node": "*"
2880 }
2881 },
2882 "node_modules/picomatch": {
2883 "version": "2.3.1",
2884 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
2885 "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
2886 "dev": true,
2887 "engines": {
2888 "node": ">=8.6"
2889 },
2890 "funding": {
2891 "url": "https://github.com/sponsors/jonschlinkert"
2892 }
2893 },
2894 "node_modules/prelude-ls": {
2895 "version": "1.2.1",
2896 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
2897 "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
2898 "dev": true,
2899 "engines": {
2900 "node": ">= 0.8.0"
2901 }
2902 },
2903 "node_modules/prop-types": {
2904 "version": "15.8.1",
2905 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
2906 "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
2907 "dev": true,
2908 "dependencies": {
2909 "loose-envify": "^1.4.0",
2910 "object-assign": "^4.1.1",
2911 "react-is": "^16.13.1"
2912 }
2913 },
2914 "node_modules/punycode": {
2915 "version": "2.1.1",
2916 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
2917 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
2918 "dev": true,
2919 "engines": {
2920 "node": ">=6"
2921 }
2922 },
2923 "node_modules/queue-microtask": {
2924 "version": "1.2.3",
2925 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2926 "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2927 "dev": true,
2928 "funding": [
2929 {
2930 "type": "github",
2931 "url": "https://github.com/sponsors/feross"
2932 },
2933 {
2934 "type": "patreon",
2935 "url": "https://www.patreon.com/feross"
2936 },
2937 {
2938 "type": "consulting",
2939 "url": "https://feross.org/support"
2940 }
2941 ]
2942 },
2943 "node_modules/randombytes": {
2944 "version": "2.1.0",
2945 "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
2946 "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
2947 "dev": true,
2948 "dependencies": {
2949 "safe-buffer": "^5.1.0"
2950 }
2951 },
2952 "node_modules/react-is": {
2953 "version": "16.13.1",
2954 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
2955 "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
2956 "dev": true
2957 },
2958 "node_modules/readdirp": {
2959 "version": "3.6.0",
2960 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2961 "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2962 "dev": true,
2963 "dependencies": {
2964 "picomatch": "^2.2.1"
2965 },
2966 "engines": {
2967 "node": ">=8.10.0"
2968 }
2969 },
2970 "node_modules/regexp.prototype.flags": {
2971 "version": "1.4.3",
2972 "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
2973 "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
2974 "dev": true,
2975 "dependencies": {
2976 "call-bind": "^1.0.2",
2977 "define-properties": "^1.1.3",
2978 "functions-have-names": "^1.2.2"
2979 },
2980 "engines": {
2981 "node": ">= 0.4"
2982 },
2983 "funding": {
2984 "url": "https://github.com/sponsors/ljharb"
2985 }
2986 },
2987 "node_modules/regexpp": {
2988 "version": "3.2.0",
2989 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
2990 "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
2991 "dev": true,
2992 "engines": {
2993 "node": ">=8"
2994 },
2995 "funding": {
2996 "url": "https://github.com/sponsors/mysticatea"
2997 }
2998 },
2999 "node_modules/require-directory": {
3000 "version": "2.1.1",
3001 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
3002 "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
3003 "dev": true,
3004 "engines": {
3005 "node": ">=0.10.0"
3006 }
3007 },
3008 "node_modules/resolve": {
3009 "version": "2.0.0-next.3",
3010 "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
3011 "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
3012 "dev": true,
3013 "dependencies": {
3014 "is-core-module": "^2.2.0",
3015 "path-parse": "^1.0.6"
3016 },
3017 "funding": {
3018 "url": "https://github.com/sponsors/ljharb"
3019 }
3020 },
3021 "node_modules/resolve-from": {
3022 "version": "4.0.0",
3023 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
3024 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
3025 "dev": true,
3026 "engines": {
3027 "node": ">=4"
3028 }
3029 },
3030 "node_modules/resumer": {
3031 "version": "0.0.0",
3032 "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
3033 "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
3034 "dev": true,
3035 "dependencies": {
3036 "through": "~2.3.4"
3037 }
3038 },
3039 "node_modules/reusify": {
3040 "version": "1.0.4",
3041 "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
3042 "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
3043 "dev": true,
3044 "engines": {
3045 "iojs": ">=1.0.0",
3046 "node": ">=0.10.0"
3047 }
3048 },
3049 "node_modules/rimraf": {
3050 "version": "3.0.2",
3051 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
3052 "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
3053 "dev": true,
3054 "dependencies": {
3055 "glob": "^7.1.3"
3056 },
3057 "bin": {
3058 "rimraf": "bin.js"
3059 },
3060 "funding": {
3061 "url": "https://github.com/sponsors/isaacs"
3062 }
3063 },
3064 "node_modules/run-parallel": {
3065 "version": "1.2.0",
3066 "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
3067 "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
3068 "dev": true,
3069 "funding": [
3070 {
3071 "type": "github",
3072 "url": "https://github.com/sponsors/feross"
3073 },
3074 {
3075 "type": "patreon",
3076 "url": "https://www.patreon.com/feross"
3077 },
3078 {
3079 "type": "consulting",
3080 "url": "https://feross.org/support"
3081 }
3082 ],
3083 "dependencies": {
3084 "queue-microtask": "^1.2.2"
3085 }
3086 },
3087 "node_modules/safe-buffer": {
3088 "version": "5.2.1",
3089 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
3090 "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
3091 "dev": true,
3092 "funding": [
3093 {
3094 "type": "github",
3095 "url": "https://github.com/sponsors/feross"
3096 },
3097 {
3098 "type": "patreon",
3099 "url": "https://www.patreon.com/feross"
3100 },
3101 {
3102 "type": "consulting",
3103 "url": "https://feross.org/support"
3104 }
3105 ]
3106 },
3107 "node_modules/semver": {
3108 "version": "7.3.7",
3109 "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
3110 "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
3111 "dev": true,
3112 "dependencies": {
3113 "lru-cache": "^6.0.0"
3114 },
3115 "bin": {
3116 "semver": "bin/semver.js"
3117 },
3118 "engines": {
3119 "node": ">=10"
3120 }
3121 },
3122 "node_modules/serialize-javascript": {
3123 "version": "6.0.0",
3124 "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
3125 "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
3126 "dev": true,
3127 "dependencies": {
3128 "randombytes": "^2.1.0"
3129 }
3130 },
3131 "node_modules/shebang-command": {
3132 "version": "2.0.0",
3133 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
3134 "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
3135 "dev": true,
3136 "dependencies": {
3137 "shebang-regex": "^3.0.0"
3138 },
3139 "engines": {
3140 "node": ">=8"
3141 }
3142 },
3143 "node_modules/shebang-regex": {
3144 "version": "3.0.0",
3145 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
3146 "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
3147 "dev": true,
3148 "engines": {
3149 "node": ">=8"
3150 }
3151 },
3152 "node_modules/side-channel": {
3153 "version": "1.0.4",
3154 "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
3155 "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
3156 "dev": true,
3157 "dependencies": {
3158 "call-bind": "^1.0.0",
3159 "get-intrinsic": "^1.0.2",
3160 "object-inspect": "^1.9.0"
3161 },
3162 "funding": {
3163 "url": "https://github.com/sponsors/ljharb"
3164 }
3165 },
3166 "node_modules/slash": {
3167 "version": "3.0.0",
3168 "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
3169 "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
3170 "dev": true,
3171 "engines": {
3172 "node": ">=8"
3173 }
3174 },
3175 "node_modules/string-width": {
3176 "version": "4.2.3",
3177 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
3178 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
3179 "dev": true,
3180 "dependencies": {
3181 "emoji-regex": "^8.0.0",
3182 "is-fullwidth-code-point": "^3.0.0",
3183 "strip-ansi": "^6.0.1"
3184 },
3185 "engines": {
3186 "node": ">=8"
3187 }
3188 },
3189 "node_modules/string.prototype.matchall": {
3190 "version": "4.0.7",
3191 "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz",
3192 "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==",
3193 "dev": true,
3194 "dependencies": {
3195 "call-bind": "^1.0.2",
3196 "define-properties": "^1.1.3",
3197 "es-abstract": "^1.19.1",
3198 "get-intrinsic": "^1.1.1",
3199 "has-symbols": "^1.0.3",
3200 "internal-slot": "^1.0.3",
3201 "regexp.prototype.flags": "^1.4.1",
3202 "side-channel": "^1.0.4"
3203 },
3204 "funding": {
3205 "url": "https://github.com/sponsors/ljharb"
3206 }
3207 },
3208 "node_modules/string.prototype.trim": {
3209 "version": "1.2.6",
3210 "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.6.tgz",
3211 "integrity": "sha512-8lMR2m+U0VJTPp6JjvJTtGyc4FIGq9CdRt7O9p6T0e6K4vjU+OP+SQJpbe/SBmRcCUIvNUnjsbmY6lnMp8MhsQ==",
3212 "dev": true,
3213 "dependencies": {
3214 "call-bind": "^1.0.2",
3215 "define-properties": "^1.1.4",
3216 "es-abstract": "^1.19.5"
3217 },
3218 "engines": {
3219 "node": ">= 0.4"
3220 },
3221 "funding": {
3222 "url": "https://github.com/sponsors/ljharb"
3223 }
3224 },
3225 "node_modules/string.prototype.trimend": {
3226 "version": "1.0.5",
3227 "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
3228 "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
3229 "dev": true,
3230 "dependencies": {
3231 "call-bind": "^1.0.2",
3232 "define-properties": "^1.1.4",
3233 "es-abstract": "^1.19.5"
3234 },
3235 "funding": {
3236 "url": "https://github.com/sponsors/ljharb"
3237 }
3238 },
3239 "node_modules/string.prototype.trimstart": {
3240 "version": "1.0.5",
3241 "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
3242 "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
3243 "dev": true,
3244 "dependencies": {
3245 "call-bind": "^1.0.2",
3246 "define-properties": "^1.1.4",
3247 "es-abstract": "^1.19.5"
3248 },
3249 "funding": {
3250 "url": "https://github.com/sponsors/ljharb"
3251 }
3252 },
3253 "node_modules/strip-ansi": {
3254 "version": "6.0.1",
3255 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
3256 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
3257 "dev": true,
3258 "dependencies": {
3259 "ansi-regex": "^5.0.1"
3260 },
3261 "engines": {
3262 "node": ">=8"
3263 }
3264 },
3265 "node_modules/strip-bom": {
3266 "version": "3.0.0",
3267 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
3268 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
3269 "dev": true,
3270 "engines": {
3271 "node": ">=4"
3272 }
3273 },
3274 "node_modules/strip-json-comments": {
3275 "version": "3.1.1",
3276 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
3277 "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
3278 "dev": true,
3279 "engines": {
3280 "node": ">=8"
3281 },
3282 "funding": {
3283 "url": "https://github.com/sponsors/sindresorhus"
3284 }
3285 },
3286 "node_modules/supports-color": {
3287 "version": "7.2.0",
3288 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
3289 "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
3290 "dev": true,
3291 "dependencies": {
3292 "has-flag": "^4.0.0"
3293 },
3294 "engines": {
3295 "node": ">=8"
3296 }
3297 },
3298 "node_modules/supports-preserve-symlinks-flag": {
3299 "version": "1.0.0",
3300 "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
3301 "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
3302 "dev": true,
3303 "engines": {
3304 "node": ">= 0.4"
3305 },
3306 "funding": {
3307 "url": "https://github.com/sponsors/ljharb"
3308 }
3309 },
3310 "node_modules/tape": {
3311 "version": "5.5.3",
3312 "resolved": "https://registry.npmjs.org/tape/-/tape-5.5.3.tgz",
3313 "integrity": "sha512-hPBJZBL9S7bH9vECg/KSM24slGYV589jJr4dmtiJrLD71AL66+8o4b9HdZazXZyvnilqA7eE8z5/flKiy0KsBg==",
3314 "dev": true,
3315 "dependencies": {
3316 "array.prototype.every": "^1.1.3",
3317 "call-bind": "^1.0.2",
3318 "deep-equal": "^2.0.5",
3319 "defined": "^1.0.0",
3320 "dotignore": "^0.1.2",
3321 "for-each": "^0.3.3",
3322 "get-package-type": "^0.1.0",
3323 "glob": "^7.2.0",
3324 "has": "^1.0.3",
3325 "has-dynamic-import": "^2.0.1",
3326 "inherits": "^2.0.4",
3327 "is-regex": "^1.1.4",
3328 "minimist": "^1.2.6",
3329 "object-inspect": "^1.12.0",
3330 "object-is": "^1.1.5",
3331 "object-keys": "^1.1.1",
3332 "object.assign": "^4.1.2",
3333 "resolve": "^2.0.0-next.3",
3334 "resumer": "^0.0.0",
3335 "string.prototype.trim": "^1.2.5",
3336 "through": "^2.3.8"
3337 },
3338 "bin": {
3339 "tape": "bin/tape"
3340 }
3341 },
3342 "node_modules/text-table": {
3343 "version": "0.2.0",
3344 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
3345 "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
3346 "dev": true
3347 },
3348 "node_modules/through": {
3349 "version": "2.3.8",
3350 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
3351 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
3352 "dev": true
3353 },
3354 "node_modules/to-regex-range": {
3355 "version": "5.0.1",
3356 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
3357 "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
3358 "dev": true,
3359 "dependencies": {
3360 "is-number": "^7.0.0"
3361 },
3362 "engines": {
3363 "node": ">=8.0"
3364 }
3365 },
3366 "node_modules/tsconfig-paths": {
3367 "version": "3.14.1",
3368 "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
3369 "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
3370 "dev": true,
3371 "dependencies": {
3372 "@types/json5": "^0.0.29",
3373 "json5": "^1.0.1",
3374 "minimist": "^1.2.6",
3375 "strip-bom": "^3.0.0"
3376 }
3377 },
3378 "node_modules/tslib": {
3379 "version": "1.14.1",
3380 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
3381 "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
3382 "dev": true
3383 },
3384 "node_modules/tsutils": {
3385 "version": "3.21.0",
3386 "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
3387 "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
3388 "dev": true,
3389 "dependencies": {
3390 "tslib": "^1.8.1"
3391 },
3392 "engines": {
3393 "node": ">= 6"
3394 },
3395 "peerDependencies": {
3396 "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
3397 }
3398 },
3399 "node_modules/type-check": {
3400 "version": "0.4.0",
3401 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
3402 "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
3403 "dev": true,
3404 "dependencies": {
3405 "prelude-ls": "^1.2.1"
3406 },
3407 "engines": {
3408 "node": ">= 0.8.0"
3409 }
3410 },
3411 "node_modules/type-detect": {
3412 "version": "4.0.8",
3413 "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
3414 "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
3415 "dev": true,
3416 "engines": {
3417 "node": ">=4"
3418 }
3419 },
3420 "node_modules/type-fest": {
3421 "version": "0.20.2",
3422 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
3423 "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
3424 "dev": true,
3425 "engines": {
3426 "node": ">=10"
3427 },
3428 "funding": {
3429 "url": "https://github.com/sponsors/sindresorhus"
3430 }
3431 },
3432 "node_modules/typescript": {
3433 "version": "4.6.4",
3434 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
3435 "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
3436 "dev": true,
3437 "bin": {
3438 "tsc": "bin/tsc",
3439 "tsserver": "bin/tsserver"
3440 },
3441 "engines": {
3442 "node": ">=4.2.0"
3443 }
3444 },
3445 "node_modules/unbox-primitive": {
3446 "version": "1.0.2",
3447 "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
3448 "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
3449 "dev": true,
3450 "dependencies": {
3451 "call-bind": "^1.0.2",
3452 "has-bigints": "^1.0.2",
3453 "has-symbols": "^1.0.3",
3454 "which-boxed-primitive": "^1.0.2"
3455 },
3456 "funding": {
3457 "url": "https://github.com/sponsors/ljharb"
3458 }
3459 },
3460 "node_modules/uri-js": {
3461 "version": "4.4.1",
3462 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
3463 "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
3464 "dev": true,
3465 "dependencies": {
3466 "punycode": "^2.1.0"
3467 }
3468 },
3469 "node_modules/v8-compile-cache": {
3470 "version": "2.3.0",
3471 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
3472 "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
3473 "dev": true
3474 },
3475 "node_modules/which": {
3476 "version": "2.0.2",
3477 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
3478 "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
3479 "dev": true,
3480 "dependencies": {
3481 "isexe": "^2.0.0"
3482 },
3483 "bin": {
3484 "node-which": "bin/node-which"
3485 },
3486 "engines": {
3487 "node": ">= 8"
3488 }
3489 },
3490 "node_modules/which-boxed-primitive": {
3491 "version": "1.0.2",
3492 "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
3493 "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
3494 "dev": true,
3495 "dependencies": {
3496 "is-bigint": "^1.0.1",
3497 "is-boolean-object": "^1.1.0",
3498 "is-number-object": "^1.0.4",
3499 "is-string": "^1.0.5",
3500 "is-symbol": "^1.0.3"
3501 },
3502 "funding": {
3503 "url": "https://github.com/sponsors/ljharb"
3504 }
3505 },
3506 "node_modules/which-collection": {
3507 "version": "1.0.1",
3508 "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
3509 "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
3510 "dev": true,
3511 "dependencies": {
3512 "is-map": "^2.0.1",
3513 "is-set": "^2.0.1",
3514 "is-weakmap": "^2.0.1",
3515 "is-weakset": "^2.0.1"
3516 },
3517 "funding": {
3518 "url": "https://github.com/sponsors/ljharb"
3519 }
3520 },
3521 "node_modules/which-typed-array": {
3522 "version": "1.1.7",
3523 "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz",
3524 "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==",
3525 "dev": true,
3526 "dependencies": {
3527 "available-typed-arrays": "^1.0.5",
3528 "call-bind": "^1.0.2",
3529 "es-abstract": "^1.18.5",
3530 "foreach": "^2.0.5",
3531 "has-tostringtag": "^1.0.0",
3532 "is-typed-array": "^1.1.7"
3533 },
3534 "engines": {
3535 "node": ">= 0.4"
3536 },
3537 "funding": {
3538 "url": "https://github.com/sponsors/ljharb"
3539 }
3540 },
3541 "node_modules/word-wrap": {
3542 "version": "1.2.3",
3543 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
3544 "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
3545 "dev": true,
3546 "engines": {
3547 "node": ">=0.10.0"
3548 }
3549 },
3550 "node_modules/workerpool": {
3551 "version": "6.2.1",
3552 "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
3553 "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
3554 "dev": true
3555 },
3556 "node_modules/wrap-ansi": {
3557 "version": "7.0.0",
3558 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
3559 "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
3560 "dev": true,
3561 "dependencies": {
3562 "ansi-styles": "^4.0.0",
3563 "string-width": "^4.1.0",
3564 "strip-ansi": "^6.0.0"
3565 },
3566 "engines": {
3567 "node": ">=10"
3568 },
3569 "funding": {
3570 "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
3571 }
3572 },
3573 "node_modules/wrappy": {
3574 "version": "1.0.2",
3575 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3576 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
3577 "dev": true
3578 },
3579 "node_modules/y18n": {
3580 "version": "5.0.8",
3581 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
3582 "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
3583 "dev": true,
3584 "engines": {
3585 "node": ">=10"
3586 }
3587 },
3588 "node_modules/yallist": {
3589 "version": "4.0.0",
3590 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
3591 "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
3592 "dev": true
3593 },
3594 "node_modules/yargs": {
3595 "version": "16.2.0",
3596 "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
3597 "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
3598 "dev": true,
3599 "dependencies": {
3600 "cliui": "^7.0.2",
3601 "escalade": "^3.1.1",
3602 "get-caller-file": "^2.0.5",
3603 "require-directory": "^2.1.1",
3604 "string-width": "^4.2.0",
3605 "y18n": "^5.0.5",
3606 "yargs-parser": "^20.2.2"
3607 },
3608 "engines": {
3609 "node": ">=10"
3610 }
3611 },
3612 "node_modules/yargs-parser": {
3613 "version": "20.2.4",
3614 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
3615 "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
3616 "dev": true,
3617 "engines": {
3618 "node": ">=10"
3619 }
3620 },
3621 "node_modules/yargs-unparser": {
3622 "version": "2.0.0",
3623 "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
3624 "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
3625 "dev": true,
3626 "dependencies": {
3627 "camelcase": "^6.0.0",
3628 "decamelize": "^4.0.0",
3629 "flat": "^5.0.2",
3630 "is-plain-obj": "^2.1.0"
3631 },
3632 "engines": {
3633 "node": ">=10"
3634 }
3635 },
3636 "node_modules/yocto-queue": {
3637 "version": "0.1.0",
3638 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
3639 "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
3640 "dev": true,
3641 "engines": {
3642 "node": ">=10"
3643 },
3644 "funding": {
3645 "url": "https://github.com/sponsors/sindresorhus"
3646 }
3647 }
3648 },
3649 "dependencies": {
3650 "@eslint/eslintrc": {
3651 "version": "1.2.3",
3652 "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz",
3653 "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==",
3654 "dev": true,
3655 "requires": {
3656 "ajv": "^6.12.4",
3657 "debug": "^4.3.2",
3658 "espree": "^9.3.2",
3659 "globals": "^13.9.0",
3660 "ignore": "^5.2.0",
3661 "import-fresh": "^3.2.1",
3662 "js-yaml": "^4.1.0",
3663 "minimatch": "^3.1.2",
3664 "strip-json-comments": "^3.1.1"
3665 }
3666 },
3667 "@humanwhocodes/config-array": {
3668 "version": "0.9.5",
3669 "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz",
3670 "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==",
3671 "dev": true,
3672 "requires": {
3673 "@humanwhocodes/object-schema": "^1.2.1",
3674 "debug": "^4.1.1",
3675 "minimatch": "^3.0.4"
3676 }
3677 },
3678 "@humanwhocodes/object-schema": {
3679 "version": "1.2.1",
3680 "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
3681 "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
3682 "dev": true
3683 },
3684 "@nodelib/fs.scandir": {
3685 "version": "2.1.5",
3686 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
3687 "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
3688 "dev": true,
3689 "requires": {
3690 "@nodelib/fs.stat": "2.0.5",
3691 "run-parallel": "^1.1.9"
3692 }
3693 },
3694 "@nodelib/fs.stat": {
3695 "version": "2.0.5",
3696 "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
3697 "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
3698 "dev": true
3699 },
3700 "@nodelib/fs.walk": {
3701 "version": "1.2.8",
3702 "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
3703 "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
3704 "dev": true,
3705 "requires": {
3706 "@nodelib/fs.scandir": "2.1.5",
3707 "fastq": "^1.6.0"
3708 }
3709 },
3710 "@types/chai": {
3711 "version": "4.3.1",
3712 "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz",
3713 "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==",
3714 "dev": true
3715 },
3716 "@types/json-schema": {
3717 "version": "7.0.11",
3718 "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
3719 "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
3720 "dev": true
3721 },
3722 "@types/json5": {
3723 "version": "0.0.29",
3724 "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
3725 "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
3726 "dev": true
3727 },
3728 "@types/mocha": {
3729 "version": "9.1.1",
3730 "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz",
3731 "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==",
3732 "dev": true
3733 },
3734 "@types/node": {
3735 "version": "8.0.58",
3736 "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.58.tgz",
3737 "integrity": "sha512-V746iUU7eHNdzQipoACuguDlVhC7IHK8CES1jSkuFt352wwA84BCWPXaGekBd7R5XdNK5ReHONDVKxlL9IreAw==",
3738 "dev": true
3739 },
3740 "@types/tape": {
3741 "version": "4.13.2",
3742 "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.13.2.tgz",
3743 "integrity": "sha512-V1ez/RtYRGN9cNYApw5xf27DpMkTB0033X6a2i3KUmKhSojBfbWN0i3EgZxboUG96WJLHLdOyZ01aiZwVW5aSA==",
3744 "dev": true,
3745 "requires": {
3746 "@types/node": "*"
3747 }
3748 },
3749 "@typescript-eslint/eslint-plugin": {
3750 "version": "5.23.0",
3751 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz",
3752 "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==",
3753 "dev": true,
3754 "requires": {
3755 "@typescript-eslint/scope-manager": "5.23.0",
3756 "@typescript-eslint/type-utils": "5.23.0",
3757 "@typescript-eslint/utils": "5.23.0",
3758 "debug": "^4.3.2",
3759 "functional-red-black-tree": "^1.0.1",
3760 "ignore": "^5.1.8",
3761 "regexpp": "^3.2.0",
3762 "semver": "^7.3.5",
3763 "tsutils": "^3.21.0"
3764 }
3765 },
3766 "@typescript-eslint/parser": {
3767 "version": "5.23.0",
3768 "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz",
3769 "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==",
3770 "dev": true,
3771 "requires": {
3772 "@typescript-eslint/scope-manager": "5.23.0",
3773 "@typescript-eslint/types": "5.23.0",
3774 "@typescript-eslint/typescript-estree": "5.23.0",
3775 "debug": "^4.3.2"
3776 }
3777 },
3778 "@typescript-eslint/scope-manager": {
3779 "version": "5.23.0",
3780 "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz",
3781 "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==",
3782 "dev": true,
3783 "requires": {
3784 "@typescript-eslint/types": "5.23.0",
3785 "@typescript-eslint/visitor-keys": "5.23.0"
3786 }
3787 },
3788 "@typescript-eslint/type-utils": {
3789 "version": "5.23.0",
3790 "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz",
3791 "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==",
3792 "dev": true,
3793 "requires": {
3794 "@typescript-eslint/utils": "5.23.0",
3795 "debug": "^4.3.2",
3796 "tsutils": "^3.21.0"
3797 }
3798 },
3799 "@typescript-eslint/types": {
3800 "version": "5.23.0",
3801 "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz",
3802 "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==",
3803 "dev": true
3804 },
3805 "@typescript-eslint/typescript-estree": {
3806 "version": "5.23.0",
3807 "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz",
3808 "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==",
3809 "dev": true,
3810 "requires": {
3811 "@typescript-eslint/types": "5.23.0",
3812 "@typescript-eslint/visitor-keys": "5.23.0",
3813 "debug": "^4.3.2",
3814 "globby": "^11.0.4",
3815 "is-glob": "^4.0.3",
3816 "semver": "^7.3.5",
3817 "tsutils": "^3.21.0"
3818 }
3819 },
3820 "@typescript-eslint/utils": {
3821 "version": "5.23.0",
3822 "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz",
3823 "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==",
3824 "dev": true,
3825 "requires": {
3826 "@types/json-schema": "^7.0.9",
3827 "@typescript-eslint/scope-manager": "5.23.0",
3828 "@typescript-eslint/types": "5.23.0",
3829 "@typescript-eslint/typescript-estree": "5.23.0",
3830 "eslint-scope": "^5.1.1",
3831 "eslint-utils": "^3.0.0"
3832 },
3833 "dependencies": {
3834 "eslint-scope": {
3835 "version": "5.1.1",
3836 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
3837 "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
3838 "dev": true,
3839 "requires": {
3840 "esrecurse": "^4.3.0",
3841 "estraverse": "^4.1.1"
3842 }
3843 },
3844 "estraverse": {
3845 "version": "4.3.0",
3846 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
3847 "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
3848 "dev": true
3849 }
3850 }
3851 },
3852 "@typescript-eslint/visitor-keys": {
3853 "version": "5.23.0",
3854 "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz",
3855 "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==",
3856 "dev": true,
3857 "requires": {
3858 "@typescript-eslint/types": "5.23.0",
3859 "eslint-visitor-keys": "^3.0.0"
3860 }
3861 },
3862 "@ungap/promise-all-settled": {
3863 "version": "1.1.2",
3864 "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
3865 "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==",
3866 "dev": true
3867 },
3868 "acorn": {
3869 "version": "8.7.1",
3870 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
3871 "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
3872 "dev": true
3873 },
3874 "acorn-jsx": {
3875 "version": "5.3.2",
3876 "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
3877 "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
3878 "dev": true,
3879 "requires": {}
3880 },
3881 "ajv": {
3882 "version": "6.12.6",
3883 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
3884 "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
3885 "dev": true,
3886 "requires": {
3887 "fast-deep-equal": "^3.1.1",
3888 "fast-json-stable-stringify": "^2.0.0",
3889 "json-schema-traverse": "^0.4.1",
3890 "uri-js": "^4.2.2"
3891 }
3892 },
3893 "ansi-colors": {
3894 "version": "4.1.1",
3895 "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
3896 "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
3897 "dev": true
3898 },
3899 "ansi-regex": {
3900 "version": "5.0.1",
3901 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
3902 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
3903 "dev": true
3904 },
3905 "ansi-styles": {
3906 "version": "4.3.0",
3907 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
3908 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
3909 "dev": true,
3910 "requires": {
3911 "color-convert": "^2.0.1"
3912 }
3913 },
3914 "anymatch": {
3915 "version": "3.1.2",
3916 "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
3917 "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
3918 "dev": true,
3919 "requires": {
3920 "normalize-path": "^3.0.0",
3921 "picomatch": "^2.0.4"
3922 }
3923 },
3924 "argparse": {
3925 "version": "2.0.1",
3926 "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
3927 "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
3928 "dev": true
3929 },
3930 "array-includes": {
3931 "version": "3.1.5",
3932 "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz",
3933 "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==",
3934 "dev": true,
3935 "requires": {
3936 "call-bind": "^1.0.2",
3937 "define-properties": "^1.1.4",
3938 "es-abstract": "^1.19.5",
3939 "get-intrinsic": "^1.1.1",
3940 "is-string": "^1.0.7"
3941 }
3942 },
3943 "array-union": {
3944 "version": "2.1.0",
3945 "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
3946 "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
3947 "dev": true
3948 },
3949 "array.prototype.every": {
3950 "version": "1.1.3",
3951 "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.3.tgz",
3952 "integrity": "sha512-vWnriJI//SOMOWtXbU/VXhJ/InfnNHPF6BLKn5WfY8xXy+NWql0fUy20GO3sdqBhCAO+qw8S/E5nJiZX+QFdCA==",
3953 "dev": true,
3954 "requires": {
3955 "call-bind": "^1.0.2",
3956 "define-properties": "^1.1.3",
3957 "es-abstract": "^1.19.0",
3958 "is-string": "^1.0.7"
3959 }
3960 },
3961 "array.prototype.flat": {
3962 "version": "1.3.0",
3963 "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz",
3964 "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==",
3965 "dev": true,
3966 "requires": {
3967 "call-bind": "^1.0.2",
3968 "define-properties": "^1.1.3",
3969 "es-abstract": "^1.19.2",
3970 "es-shim-unscopables": "^1.0.0"
3971 }
3972 },
3973 "array.prototype.flatmap": {
3974 "version": "1.3.0",
3975 "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz",
3976 "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==",
3977 "dev": true,
3978 "requires": {
3979 "call-bind": "^1.0.2",
3980 "define-properties": "^1.1.3",
3981 "es-abstract": "^1.19.2",
3982 "es-shim-unscopables": "^1.0.0"
3983 }
3984 },
3985 "assertion-error": {
3986 "version": "1.1.0",
3987 "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
3988 "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
3989 "dev": true
3990 },
3991 "available-typed-arrays": {
3992 "version": "1.0.5",
3993 "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
3994 "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
3995 "dev": true
3996 },
3997 "balanced-match": {
3998 "version": "1.0.2",
3999 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
4000 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
4001 "dev": true
4002 },
4003 "binary-extensions": {
4004 "version": "2.2.0",
4005 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
4006 "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
4007 "dev": true
4008 },
4009 "brace-expansion": {
4010 "version": "1.1.11",
4011 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
4012 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
4013 "dev": true,
4014 "requires": {
4015 "balanced-match": "^1.0.0",
4016 "concat-map": "0.0.1"
4017 }
4018 },
4019 "braces": {
4020 "version": "3.0.2",
4021 "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
4022 "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
4023 "dev": true,
4024 "requires": {
4025 "fill-range": "^7.0.1"
4026 }
4027 },
4028 "browser-stdout": {
4029 "version": "1.3.1",
4030 "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
4031 "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
4032 "dev": true
4033 },
4034 "builtins": {
4035 "version": "4.1.0",
4036 "resolved": "https://registry.npmjs.org/builtins/-/builtins-4.1.0.tgz",
4037 "integrity": "sha512-1bPRZQtmKaO6h7qV1YHXNtr6nCK28k0Zo95KM4dXfILcZZwoHJBN1m3lfLv9LPkcOZlrSr+J1bzMaZFO98Yq0w==",
4038 "dev": true,
4039 "requires": {
4040 "semver": "^7.0.0"
4041 }
4042 },
4043 "call-bind": {
4044 "version": "1.0.2",
4045 "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
4046 "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
4047 "dev": true,
4048 "requires": {
4049 "function-bind": "^1.1.1",
4050 "get-intrinsic": "^1.0.2"
4051 }
4052 },
4053 "callsites": {
4054 "version": "3.1.0",
4055 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
4056 "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
4057 "dev": true
4058 },
4059 "camelcase": {
4060 "version": "6.3.0",
4061 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
4062 "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
4063 "dev": true
4064 },
4065 "chai": {
4066 "version": "4.3.6",
4067 "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
4068 "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
4069 "dev": true,
4070 "requires": {
4071 "assertion-error": "^1.1.0",
4072 "check-error": "^1.0.2",
4073 "deep-eql": "^3.0.1",
4074 "get-func-name": "^2.0.0",
4075 "loupe": "^2.3.1",
4076 "pathval": "^1.1.1",
4077 "type-detect": "^4.0.5"
4078 }
4079 },
4080 "chalk": {
4081 "version": "4.1.2",
4082 "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
4083 "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
4084 "dev": true,
4085 "requires": {
4086 "ansi-styles": "^4.1.0",
4087 "supports-color": "^7.1.0"
4088 }
4089 },
4090 "check-error": {
4091 "version": "1.0.2",
4092 "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
4093 "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
4094 "dev": true
4095 },
4096 "chokidar": {
4097 "version": "3.5.3",
4098 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
4099 "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
4100 "dev": true,
4101 "requires": {
4102 "anymatch": "~3.1.2",
4103 "braces": "~3.0.2",
4104 "fsevents": "~2.3.2",
4105 "glob-parent": "~5.1.2",
4106 "is-binary-path": "~2.1.0",
4107 "is-glob": "~4.0.1",
4108 "normalize-path": "~3.0.0",
4109 "readdirp": "~3.6.0"
4110 },
4111 "dependencies": {
4112 "glob-parent": {
4113 "version": "5.1.2",
4114 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
4115 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
4116 "dev": true,
4117 "requires": {
4118 "is-glob": "^4.0.1"
4119 }
4120 }
4121 }
4122 },
4123 "cliui": {
4124 "version": "7.0.4",
4125 "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
4126 "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
4127 "dev": true,
4128 "requires": {
4129 "string-width": "^4.2.0",
4130 "strip-ansi": "^6.0.0",
4131 "wrap-ansi": "^7.0.0"
4132 }
4133 },
4134 "color-convert": {
4135 "version": "2.0.1",
4136 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
4137 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
4138 "dev": true,
4139 "requires": {
4140 "color-name": "~1.1.4"
4141 }
4142 },
4143 "color-name": {
4144 "version": "1.1.4",
4145 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
4146 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
4147 "dev": true
4148 },
4149 "concat-map": {
4150 "version": "0.0.1",
4151 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
4152 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
4153 "dev": true
4154 },
4155 "cross-spawn": {
4156 "version": "7.0.3",
4157 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
4158 "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
4159 "dev": true,
4160 "requires": {
4161 "path-key": "^3.1.0",
4162 "shebang-command": "^2.0.0",
4163 "which": "^2.0.1"
4164 }
4165 },
4166 "debug": {
4167 "version": "4.3.4",
4168 "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
4169 "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
4170 "dev": true,
4171 "requires": {
4172 "ms": "2.1.2"
4173 }
4174 },
4175 "decamelize": {
4176 "version": "4.0.0",
4177 "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
4178 "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
4179 "dev": true
4180 },
4181 "deep-eql": {
4182 "version": "3.0.1",
4183 "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz",
4184 "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
4185 "dev": true,
4186 "requires": {
4187 "type-detect": "^4.0.0"
4188 }
4189 },
4190 "deep-equal": {
4191 "version": "2.0.5",
4192 "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
4193 "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
4194 "dev": true,
4195 "requires": {
4196 "call-bind": "^1.0.0",
4197 "es-get-iterator": "^1.1.1",
4198 "get-intrinsic": "^1.0.1",
4199 "is-arguments": "^1.0.4",
4200 "is-date-object": "^1.0.2",
4201 "is-regex": "^1.1.1",
4202 "isarray": "^2.0.5",
4203 "object-is": "^1.1.4",
4204 "object-keys": "^1.1.1",
4205 "object.assign": "^4.1.2",
4206 "regexp.prototype.flags": "^1.3.0",
4207 "side-channel": "^1.0.3",
4208 "which-boxed-primitive": "^1.0.1",
4209 "which-collection": "^1.0.1",
4210 "which-typed-array": "^1.1.2"
4211 }
4212 },
4213 "deep-is": {
4214 "version": "0.1.4",
4215 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
4216 "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
4217 "dev": true
4218 },
4219 "define-properties": {
4220 "version": "1.1.4",
4221 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
4222 "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
4223 "dev": true,
4224 "requires": {
4225 "has-property-descriptors": "^1.0.0",
4226 "object-keys": "^1.1.1"
4227 }
4228 },
4229 "defined": {
4230 "version": "1.0.0",
4231 "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
4232 "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
4233 "dev": true
4234 },
4235 "diff": {
4236 "version": "5.0.0",
4237 "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
4238 "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
4239 "dev": true
4240 },
4241 "dir-glob": {
4242 "version": "3.0.1",
4243 "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
4244 "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
4245 "dev": true,
4246 "requires": {
4247 "path-type": "^4.0.0"
4248 }
4249 },
4250 "doctrine": {
4251 "version": "3.0.0",
4252 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
4253 "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
4254 "dev": true,
4255 "requires": {
4256 "esutils": "^2.0.2"
4257 }
4258 },
4259 "dotignore": {
4260 "version": "0.1.2",
4261 "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz",
4262 "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==",
4263 "dev": true,
4264 "requires": {
4265 "minimatch": "^3.0.4"
4266 }
4267 },
4268 "emoji-regex": {
4269 "version": "8.0.0",
4270 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
4271 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
4272 "dev": true
4273 },
4274 "es-abstract": {
4275 "version": "1.20.0",
4276 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.0.tgz",
4277 "integrity": "sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA==",
4278 "dev": true,
4279 "requires": {
4280 "call-bind": "^1.0.2",
4281 "es-to-primitive": "^1.2.1",
4282 "function-bind": "^1.1.1",
4283 "function.prototype.name": "^1.1.5",
4284 "get-intrinsic": "^1.1.1",
4285 "get-symbol-description": "^1.0.0",
4286 "has": "^1.0.3",
4287 "has-property-descriptors": "^1.0.0",
4288 "has-symbols": "^1.0.3",
4289 "internal-slot": "^1.0.3",
4290 "is-callable": "^1.2.4",
4291 "is-negative-zero": "^2.0.2",
4292 "is-regex": "^1.1.4",
4293 "is-shared-array-buffer": "^1.0.2",
4294 "is-string": "^1.0.7",
4295 "is-weakref": "^1.0.2",
4296 "object-inspect": "^1.12.0",
4297 "object-keys": "^1.1.1",
4298 "object.assign": "^4.1.2",
4299 "regexp.prototype.flags": "^1.4.1",
4300 "string.prototype.trimend": "^1.0.5",
4301 "string.prototype.trimstart": "^1.0.5",
4302 "unbox-primitive": "^1.0.2"
4303 }
4304 },
4305 "es-get-iterator": {
4306 "version": "1.1.2",
4307 "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
4308 "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
4309 "dev": true,
4310 "requires": {
4311 "call-bind": "^1.0.2",
4312 "get-intrinsic": "^1.1.0",
4313 "has-symbols": "^1.0.1",
4314 "is-arguments": "^1.1.0",
4315 "is-map": "^2.0.2",
4316 "is-set": "^2.0.2",
4317 "is-string": "^1.0.5",
4318 "isarray": "^2.0.5"
4319 }
4320 },
4321 "es-shim-unscopables": {
4322 "version": "1.0.0",
4323 "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
4324 "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==",
4325 "dev": true,
4326 "requires": {
4327 "has": "^1.0.3"
4328 }
4329 },
4330 "es-to-primitive": {
4331 "version": "1.2.1",
4332 "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
4333 "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
4334 "dev": true,
4335 "requires": {
4336 "is-callable": "^1.1.4",
4337 "is-date-object": "^1.0.1",
4338 "is-symbol": "^1.0.2"
4339 }
4340 },
4341 "escalade": {
4342 "version": "3.1.1",
4343 "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
4344 "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
4345 "dev": true
4346 },
4347 "escape-string-regexp": {
4348 "version": "4.0.0",
4349 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
4350 "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
4351 "dev": true
4352 },
4353 "eslint": {
4354 "version": "8.15.0",
4355 "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz",
4356 "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==",
4357 "dev": true,
4358 "requires": {
4359 "@eslint/eslintrc": "^1.2.3",
4360 "@humanwhocodes/config-array": "^0.9.2",
4361 "ajv": "^6.10.0",
4362 "chalk": "^4.0.0",
4363 "cross-spawn": "^7.0.2",
4364 "debug": "^4.3.2",
4365 "doctrine": "^3.0.0",
4366 "escape-string-regexp": "^4.0.0",
4367 "eslint-scope": "^7.1.1",
4368 "eslint-utils": "^3.0.0",
4369 "eslint-visitor-keys": "^3.3.0",
4370 "espree": "^9.3.2",
4371 "esquery": "^1.4.0",
4372 "esutils": "^2.0.2",
4373 "fast-deep-equal": "^3.1.3",
4374 "file-entry-cache": "^6.0.1",
4375 "functional-red-black-tree": "^1.0.1",
4376 "glob-parent": "^6.0.1",
4377 "globals": "^13.6.0",
4378 "ignore": "^5.2.0",
4379 "import-fresh": "^3.0.0",
4380 "imurmurhash": "^0.1.4",
4381 "is-glob": "^4.0.0",
4382 "js-yaml": "^4.1.0",
4383 "json-stable-stringify-without-jsonify": "^1.0.1",
4384 "levn": "^0.4.1",
4385 "lodash.merge": "^4.6.2",
4386 "minimatch": "^3.1.2",
4387 "natural-compare": "^1.4.0",
4388 "optionator": "^0.9.1",
4389 "regexpp": "^3.2.0",
4390 "strip-ansi": "^6.0.1",
4391 "strip-json-comments": "^3.1.0",
4392 "text-table": "^0.2.0",
4393 "v8-compile-cache": "^2.0.3"
4394 }
4395 },
4396 "eslint-config-standard": {
4397 "version": "17.0.0",
4398 "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz",
4399 "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==",
4400 "dev": true,
4401 "requires": {}
4402 },
4403 "eslint-import-resolver-node": {
4404 "version": "0.3.6",
4405 "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz",
4406 "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==",
4407 "dev": true,
4408 "requires": {
4409 "debug": "^3.2.7",
4410 "resolve": "^1.20.0"
4411 },
4412 "dependencies": {
4413 "debug": {
4414 "version": "3.2.7",
4415 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
4416 "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
4417 "dev": true,
4418 "requires": {
4419 "ms": "^2.1.1"
4420 }
4421 },
4422 "resolve": {
4423 "version": "1.22.0",
4424 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
4425 "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
4426 "dev": true,
4427 "requires": {
4428 "is-core-module": "^2.8.1",
4429 "path-parse": "^1.0.7",
4430 "supports-preserve-symlinks-flag": "^1.0.0"
4431 }
4432 }
4433 }
4434 },
4435 "eslint-module-utils": {
4436 "version": "2.7.3",
4437 "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz",
4438 "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==",
4439 "dev": true,
4440 "requires": {
4441 "debug": "^3.2.7",
4442 "find-up": "^2.1.0"
4443 },
4444 "dependencies": {
4445 "debug": {
4446 "version": "3.2.7",
4447 "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
4448 "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
4449 "dev": true,
4450 "requires": {
4451 "ms": "^2.1.1"
4452 }
4453 },
4454 "find-up": {
4455 "version": "2.1.0",
4456 "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
4457 "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
4458 "dev": true,
4459 "requires": {
4460 "locate-path": "^2.0.0"
4461 }
4462 },
4463 "locate-path": {
4464 "version": "2.0.0",
4465 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
4466 "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
4467 "dev": true,
4468 "requires": {
4469 "p-locate": "^2.0.0",
4470 "path-exists": "^3.0.0"
4471 }
4472 },
4473 "p-limit": {
4474 "version": "1.3.0",
4475 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
4476 "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
4477 "dev": true,
4478 "requires": {
4479 "p-try": "^1.0.0"
4480 }
4481 },
4482 "p-locate": {
4483 "version": "2.0.0",
4484 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
4485 "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
4486 "dev": true,
4487 "requires": {
4488 "p-limit": "^1.1.0"
4489 }
4490 },
4491 "path-exists": {
4492 "version": "3.0.0",
4493 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
4494 "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
4495 "dev": true
4496 }
4497 }
4498 },
4499 "eslint-plugin-es": {
4500 "version": "4.1.0",
4501 "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz",
4502 "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==",
4503 "dev": true,
4504 "requires": {
4505 "eslint-utils": "^2.0.0",
4506 "regexpp": "^3.0.0"
4507 },
4508 "dependencies": {
4509 "eslint-utils": {
4510 "version": "2.1.0",
4511 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
4512 "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
4513 "dev": true,
4514 "requires": {
4515 "eslint-visitor-keys": "^1.1.0"
4516 }
4517 },
4518 "eslint-visitor-keys": {
4519 "version": "1.3.0",
4520 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
4521 "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
4522 "dev": true
4523 }
4524 }
4525 },
4526 "eslint-plugin-import": {
4527 "version": "2.26.0",
4528 "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz",
4529 "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==",
4530 "dev": true,
4531 "requires": {
4532 "array-includes": "^3.1.4",
4533 "array.prototype.flat": "^1.2.5",
4534 "debug": "^2.6.9",
4535 "doctrine": "^2.1.0",
4536 "eslint-import-resolver-node": "^0.3.6",
4537 "eslint-module-utils": "^2.7.3",
4538 "has": "^1.0.3",
4539 "is-core-module": "^2.8.1",
4540 "is-glob": "^4.0.3",
4541 "minimatch": "^3.1.2",
4542 "object.values": "^1.1.5",
4543 "resolve": "^1.22.0",
4544 "tsconfig-paths": "^3.14.1"
4545 },
4546 "dependencies": {
4547 "debug": {
4548 "version": "2.6.9",
4549 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
4550 "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
4551 "dev": true,
4552 "requires": {
4553 "ms": "2.0.0"
4554 }
4555 },
4556 "doctrine": {
4557 "version": "2.1.0",
4558 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
4559 "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
4560 "dev": true,
4561 "requires": {
4562 "esutils": "^2.0.2"
4563 }
4564 },
4565 "ms": {
4566 "version": "2.0.0",
4567 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
4568 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
4569 "dev": true
4570 },
4571 "resolve": {
4572 "version": "1.22.0",
4573 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
4574 "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
4575 "dev": true,
4576 "requires": {
4577 "is-core-module": "^2.8.1",
4578 "path-parse": "^1.0.7",
4579 "supports-preserve-symlinks-flag": "^1.0.0"
4580 }
4581 }
4582 }
4583 },
4584 "eslint-plugin-n": {
4585 "version": "15.2.0",
4586 "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.2.0.tgz",
4587 "integrity": "sha512-lWLg++jGwC88GDGGBX3CMkk0GIWq0y41aH51lavWApOKcMQcYoL3Ayd0lEdtD3SnQtR+3qBvWQS3qGbR2BxRWg==",
4588 "dev": true,
4589 "requires": {
4590 "builtins": "^4.0.0",
4591 "eslint-plugin-es": "^4.1.0",
4592 "eslint-utils": "^3.0.0",
4593 "ignore": "^5.1.1",
4594 "is-core-module": "^2.3.0",
4595 "minimatch": "^3.0.4",
4596 "resolve": "^1.10.1",
4597 "semver": "^6.3.0"
4598 },
4599 "dependencies": {
4600 "resolve": {
4601 "version": "1.22.0",
4602 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
4603 "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
4604 "dev": true,
4605 "requires": {
4606 "is-core-module": "^2.8.1",
4607 "path-parse": "^1.0.7",
4608 "supports-preserve-symlinks-flag": "^1.0.0"
4609 }
4610 },
4611 "semver": {
4612 "version": "6.3.0",
4613 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
4614 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
4615 "dev": true
4616 }
4617 }
4618 },
4619 "eslint-plugin-promise": {
4620 "version": "6.0.0",
4621 "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz",
4622 "integrity": "sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==",
4623 "dev": true,
4624 "requires": {}
4625 },
4626 "eslint-plugin-react": {
4627 "version": "7.29.4",
4628 "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz",
4629 "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==",
4630 "dev": true,
4631 "requires": {
4632 "array-includes": "^3.1.4",
4633 "array.prototype.flatmap": "^1.2.5",
4634 "doctrine": "^2.1.0",
4635 "estraverse": "^5.3.0",
4636 "jsx-ast-utils": "^2.4.1 || ^3.0.0",
4637 "minimatch": "^3.1.2",
4638 "object.entries": "^1.1.5",
4639 "object.fromentries": "^2.0.5",
4640 "object.hasown": "^1.1.0",
4641 "object.values": "^1.1.5",
4642 "prop-types": "^15.8.1",
4643 "resolve": "^2.0.0-next.3",
4644 "semver": "^6.3.0",
4645 "string.prototype.matchall": "^4.0.6"
4646 },
4647 "dependencies": {
4648 "doctrine": {
4649 "version": "2.1.0",
4650 "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
4651 "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
4652 "dev": true,
4653 "requires": {
4654 "esutils": "^2.0.2"
4655 }
4656 },
4657 "semver": {
4658 "version": "6.3.0",
4659 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
4660 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
4661 "dev": true
4662 }
4663 }
4664 },
4665 "eslint-scope": {
4666 "version": "7.1.1",
4667 "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
4668 "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
4669 "dev": true,
4670 "requires": {
4671 "esrecurse": "^4.3.0",
4672 "estraverse": "^5.2.0"
4673 }
4674 },
4675 "eslint-utils": {
4676 "version": "3.0.0",
4677 "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
4678 "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
4679 "dev": true,
4680 "requires": {
4681 "eslint-visitor-keys": "^2.0.0"
4682 },
4683 "dependencies": {
4684 "eslint-visitor-keys": {
4685 "version": "2.1.0",
4686 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
4687 "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
4688 "dev": true
4689 }
4690 }
4691 },
4692 "eslint-visitor-keys": {
4693 "version": "3.3.0",
4694 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
4695 "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
4696 "dev": true
4697 },
4698 "espree": {
4699 "version": "9.3.2",
4700 "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz",
4701 "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==",
4702 "dev": true,
4703 "requires": {
4704 "acorn": "^8.7.1",
4705 "acorn-jsx": "^5.3.2",
4706 "eslint-visitor-keys": "^3.3.0"
4707 }
4708 },
4709 "esquery": {
4710 "version": "1.4.0",
4711 "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
4712 "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
4713 "dev": true,
4714 "requires": {
4715 "estraverse": "^5.1.0"
4716 }
4717 },
4718 "esrecurse": {
4719 "version": "4.3.0",
4720 "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
4721 "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
4722 "dev": true,
4723 "requires": {
4724 "estraverse": "^5.2.0"
4725 }
4726 },
4727 "estraverse": {
4728 "version": "5.3.0",
4729 "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
4730 "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
4731 "dev": true
4732 },
4733 "esutils": {
4734 "version": "2.0.3",
4735 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
4736 "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
4737 "dev": true
4738 },
4739 "fast-deep-equal": {
4740 "version": "3.1.3",
4741 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
4742 "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
4743 "dev": true
4744 },
4745 "fast-glob": {
4746 "version": "3.2.11",
4747 "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
4748 "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
4749 "dev": true,
4750 "requires": {
4751 "@nodelib/fs.stat": "^2.0.2",
4752 "@nodelib/fs.walk": "^1.2.3",
4753 "glob-parent": "^5.1.2",
4754 "merge2": "^1.3.0",
4755 "micromatch": "^4.0.4"
4756 },
4757 "dependencies": {
4758 "glob-parent": {
4759 "version": "5.1.2",
4760 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
4761 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
4762 "dev": true,
4763 "requires": {
4764 "is-glob": "^4.0.1"
4765 }
4766 }
4767 }
4768 },
4769 "fast-json-stable-stringify": {
4770 "version": "2.1.0",
4771 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
4772 "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
4773 "dev": true
4774 },
4775 "fast-levenshtein": {
4776 "version": "2.0.6",
4777 "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
4778 "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
4779 "dev": true
4780 },
4781 "fastq": {
4782 "version": "1.13.0",
4783 "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
4784 "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
4785 "dev": true,
4786 "requires": {
4787 "reusify": "^1.0.4"
4788 }
4789 },
4790 "file-entry-cache": {
4791 "version": "6.0.1",
4792 "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
4793 "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
4794 "dev": true,
4795 "requires": {
4796 "flat-cache": "^3.0.4"
4797 }
4798 },
4799 "fill-range": {
4800 "version": "7.0.1",
4801 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
4802 "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
4803 "dev": true,
4804 "requires": {
4805 "to-regex-range": "^5.0.1"
4806 }
4807 },
4808 "find-up": {
4809 "version": "5.0.0",
4810 "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
4811 "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
4812 "dev": true,
4813 "requires": {
4814 "locate-path": "^6.0.0",
4815 "path-exists": "^4.0.0"
4816 }
4817 },
4818 "flat": {
4819 "version": "5.0.2",
4820 "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
4821 "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
4822 "dev": true
4823 },
4824 "flat-cache": {
4825 "version": "3.0.4",
4826 "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
4827 "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
4828 "dev": true,
4829 "requires": {
4830 "flatted": "^3.1.0",
4831 "rimraf": "^3.0.2"
4832 }
4833 },
4834 "flatted": {
4835 "version": "3.2.5",
4836 "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
4837 "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
4838 "dev": true
4839 },
4840 "for-each": {
4841 "version": "0.3.3",
4842 "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
4843 "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
4844 "dev": true,
4845 "requires": {
4846 "is-callable": "^1.1.3"
4847 }
4848 },
4849 "foreach": {
4850 "version": "2.0.5",
4851 "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
4852 "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
4853 "dev": true
4854 },
4855 "fs.realpath": {
4856 "version": "1.0.0",
4857 "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
4858 "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
4859 "dev": true
4860 },
4861 "fsevents": {
4862 "version": "2.3.2",
4863 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
4864 "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
4865 "dev": true,
4866 "optional": true
4867 },
4868 "function-bind": {
4869 "version": "1.1.1",
4870 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
4871 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
4872 "dev": true
4873 },
4874 "function.prototype.name": {
4875 "version": "1.1.5",
4876 "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
4877 "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
4878 "dev": true,
4879 "requires": {
4880 "call-bind": "^1.0.2",
4881 "define-properties": "^1.1.3",
4882 "es-abstract": "^1.19.0",
4883 "functions-have-names": "^1.2.2"
4884 }
4885 },
4886 "functional-red-black-tree": {
4887 "version": "1.0.1",
4888 "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
4889 "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
4890 "dev": true
4891 },
4892 "functions-have-names": {
4893 "version": "1.2.3",
4894 "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
4895 "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
4896 "dev": true
4897 },
4898 "get-caller-file": {
4899 "version": "2.0.5",
4900 "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
4901 "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
4902 "dev": true
4903 },
4904 "get-func-name": {
4905 "version": "2.0.0",
4906 "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
4907 "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
4908 "dev": true
4909 },
4910 "get-intrinsic": {
4911 "version": "1.1.1",
4912 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
4913 "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
4914 "dev": true,
4915 "requires": {
4916 "function-bind": "^1.1.1",
4917 "has": "^1.0.3",
4918 "has-symbols": "^1.0.1"
4919 }
4920 },
4921 "get-package-type": {
4922 "version": "0.1.0",
4923 "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
4924 "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
4925 "dev": true
4926 },
4927 "get-symbol-description": {
4928 "version": "1.0.0",
4929 "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
4930 "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
4931 "dev": true,
4932 "requires": {
4933 "call-bind": "^1.0.2",
4934 "get-intrinsic": "^1.1.1"
4935 }
4936 },
4937 "glob": {
4938 "version": "7.2.0",
4939 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
4940 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
4941 "dev": true,
4942 "requires": {
4943 "fs.realpath": "^1.0.0",
4944 "inflight": "^1.0.4",
4945 "inherits": "2",
4946 "minimatch": "^3.0.4",
4947 "once": "^1.3.0",
4948 "path-is-absolute": "^1.0.0"
4949 }
4950 },
4951 "glob-parent": {
4952 "version": "6.0.2",
4953 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
4954 "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
4955 "dev": true,
4956 "requires": {
4957 "is-glob": "^4.0.3"
4958 }
4959 },
4960 "globals": {
4961 "version": "13.14.0",
4962 "resolved": "https://registry.npmjs.org/globals/-/globals-13.14.0.tgz",
4963 "integrity": "sha512-ERO68sOYwm5UuLvSJTY7w7NP2c8S4UcXs3X1GBX8cwOr+ShOcDBbCY5mH4zxz0jsYCdJ8ve8Mv9n2YGJMB1aeg==",
4964 "dev": true,
4965 "requires": {
4966 "type-fest": "^0.20.2"
4967 }
4968 },
4969 "globby": {
4970 "version": "11.1.0",
4971 "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
4972 "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
4973 "dev": true,
4974 "requires": {
4975 "array-union": "^2.1.0",
4976 "dir-glob": "^3.0.1",
4977 "fast-glob": "^3.2.9",
4978 "ignore": "^5.2.0",
4979 "merge2": "^1.4.1",
4980 "slash": "^3.0.0"
4981 }
4982 },
4983 "has": {
4984 "version": "1.0.3",
4985 "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
4986 "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
4987 "dev": true,
4988 "requires": {
4989 "function-bind": "^1.1.1"
4990 }
4991 },
4992 "has-bigints": {
4993 "version": "1.0.2",
4994 "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
4995 "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
4996 "dev": true
4997 },
4998 "has-dynamic-import": {
4999 "version": "2.0.1",
5000 "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.1.tgz",
5001 "integrity": "sha512-X3fbtsZmwb6W7fJGR9o7x65fZoodygCrZ3TVycvghP62yYQfS0t4RS0Qcz+j5tQYUKeSWS09tHkWW6WhFV3XhQ==",
5002 "dev": true,
5003 "requires": {
5004 "call-bind": "^1.0.2",
5005 "get-intrinsic": "^1.1.1"
5006 }
5007 },
5008 "has-flag": {
5009 "version": "4.0.0",
5010 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
5011 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
5012 "dev": true
5013 },
5014 "has-property-descriptors": {
5015 "version": "1.0.0",
5016 "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
5017 "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
5018 "dev": true,
5019 "requires": {
5020 "get-intrinsic": "^1.1.1"
5021 }
5022 },
5023 "has-symbols": {
5024 "version": "1.0.3",
5025 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
5026 "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
5027 "dev": true
5028 },
5029 "has-tostringtag": {
5030 "version": "1.0.0",
5031 "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
5032 "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
5033 "dev": true,
5034 "requires": {
5035 "has-symbols": "^1.0.2"
5036 }
5037 },
5038 "he": {
5039 "version": "1.2.0",
5040 "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
5041 "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
5042 "dev": true
5043 },
5044 "ignore": {
5045 "version": "5.2.0",
5046 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
5047 "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
5048 "dev": true
5049 },
5050 "import-fresh": {
5051 "version": "3.3.0",
5052 "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
5053 "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
5054 "dev": true,
5055 "requires": {
5056 "parent-module": "^1.0.0",
5057 "resolve-from": "^4.0.0"
5058 }
5059 },
5060 "imurmurhash": {
5061 "version": "0.1.4",
5062 "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
5063 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
5064 "dev": true
5065 },
5066 "inflight": {
5067 "version": "1.0.6",
5068 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
5069 "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
5070 "dev": true,
5071 "requires": {
5072 "once": "^1.3.0",
5073 "wrappy": "1"
5074 }
5075 },
5076 "inherits": {
5077 "version": "2.0.4",
5078 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
5079 "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
5080 "dev": true
5081 },
5082 "internal-slot": {
5083 "version": "1.0.3",
5084 "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
5085 "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
5086 "dev": true,
5087 "requires": {
5088 "get-intrinsic": "^1.1.0",
5089 "has": "^1.0.3",
5090 "side-channel": "^1.0.4"
5091 }
5092 },
5093 "is-arguments": {
5094 "version": "1.1.1",
5095 "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
5096 "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
5097 "dev": true,
5098 "requires": {
5099 "call-bind": "^1.0.2",
5100 "has-tostringtag": "^1.0.0"
5101 }
5102 },
5103 "is-bigint": {
5104 "version": "1.0.4",
5105 "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
5106 "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
5107 "dev": true,
5108 "requires": {
5109 "has-bigints": "^1.0.1"
5110 }
5111 },
5112 "is-binary-path": {
5113 "version": "2.1.0",
5114 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
5115 "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
5116 "dev": true,
5117 "requires": {
5118 "binary-extensions": "^2.0.0"
5119 }
5120 },
5121 "is-boolean-object": {
5122 "version": "1.1.2",
5123 "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
5124 "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
5125 "dev": true,
5126 "requires": {
5127 "call-bind": "^1.0.2",
5128 "has-tostringtag": "^1.0.0"
5129 }
5130 },
5131 "is-callable": {
5132 "version": "1.2.4",
5133 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
5134 "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
5135 "dev": true
5136 },
5137 "is-core-module": {
5138 "version": "2.9.0",
5139 "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
5140 "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
5141 "dev": true,
5142 "requires": {
5143 "has": "^1.0.3"
5144 }
5145 },
5146 "is-date-object": {
5147 "version": "1.0.5",
5148 "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
5149 "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
5150 "dev": true,
5151 "requires": {
5152 "has-tostringtag": "^1.0.0"
5153 }
5154 },
5155 "is-extglob": {
5156 "version": "2.1.1",
5157 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
5158 "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
5159 "dev": true
5160 },
5161 "is-fullwidth-code-point": {
5162 "version": "3.0.0",
5163 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
5164 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
5165 "dev": true
5166 },
5167 "is-glob": {
5168 "version": "4.0.3",
5169 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
5170 "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
5171 "dev": true,
5172 "requires": {
5173 "is-extglob": "^2.1.1"
5174 }
5175 },
5176 "is-map": {
5177 "version": "2.0.2",
5178 "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
5179 "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
5180 "dev": true
5181 },
5182 "is-negative-zero": {
5183 "version": "2.0.2",
5184 "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
5185 "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
5186 "dev": true
5187 },
5188 "is-number": {
5189 "version": "7.0.0",
5190 "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
5191 "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
5192 "dev": true
5193 },
5194 "is-number-object": {
5195 "version": "1.0.7",
5196 "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
5197 "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
5198 "dev": true,
5199 "requires": {
5200 "has-tostringtag": "^1.0.0"
5201 }
5202 },
5203 "is-plain-obj": {
5204 "version": "2.1.0",
5205 "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
5206 "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
5207 "dev": true
5208 },
5209 "is-regex": {
5210 "version": "1.1.4",
5211 "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
5212 "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
5213 "dev": true,
5214 "requires": {
5215 "call-bind": "^1.0.2",
5216 "has-tostringtag": "^1.0.0"
5217 }
5218 },
5219 "is-set": {
5220 "version": "2.0.2",
5221 "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
5222 "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
5223 "dev": true
5224 },
5225 "is-shared-array-buffer": {
5226 "version": "1.0.2",
5227 "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
5228 "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
5229 "dev": true,
5230 "requires": {
5231 "call-bind": "^1.0.2"
5232 }
5233 },
5234 "is-string": {
5235 "version": "1.0.7",
5236 "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
5237 "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
5238 "dev": true,
5239 "requires": {
5240 "has-tostringtag": "^1.0.0"
5241 }
5242 },
5243 "is-symbol": {
5244 "version": "1.0.4",
5245 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
5246 "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
5247 "dev": true,
5248 "requires": {
5249 "has-symbols": "^1.0.2"
5250 }
5251 },
5252 "is-typed-array": {
5253 "version": "1.1.8",
5254 "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz",
5255 "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==",
5256 "dev": true,
5257 "requires": {
5258 "available-typed-arrays": "^1.0.5",
5259 "call-bind": "^1.0.2",
5260 "es-abstract": "^1.18.5",
5261 "foreach": "^2.0.5",
5262 "has-tostringtag": "^1.0.0"
5263 }
5264 },
5265 "is-unicode-supported": {
5266 "version": "0.1.0",
5267 "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
5268 "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
5269 "dev": true
5270 },
5271 "is-weakmap": {
5272 "version": "2.0.1",
5273 "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
5274 "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
5275 "dev": true
5276 },
5277 "is-weakref": {
5278 "version": "1.0.2",
5279 "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
5280 "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
5281 "dev": true,
5282 "requires": {
5283 "call-bind": "^1.0.2"
5284 }
5285 },
5286 "is-weakset": {
5287 "version": "2.0.2",
5288 "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
5289 "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
5290 "dev": true,
5291 "requires": {
5292 "call-bind": "^1.0.2",
5293 "get-intrinsic": "^1.1.1"
5294 }
5295 },
5296 "isarray": {
5297 "version": "2.0.5",
5298 "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
5299 "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
5300 "dev": true
5301 },
5302 "isexe": {
5303 "version": "2.0.0",
5304 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
5305 "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
5306 "dev": true
5307 },
5308 "js-tokens": {
5309 "version": "4.0.0",
5310 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
5311 "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
5312 "dev": true
5313 },
5314 "js-yaml": {
5315 "version": "4.1.0",
5316 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
5317 "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
5318 "dev": true,
5319 "requires": {
5320 "argparse": "^2.0.1"
5321 }
5322 },
5323 "json-schema-traverse": {
5324 "version": "0.4.1",
5325 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
5326 "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
5327 "dev": true
5328 },
5329 "json-stable-stringify-without-jsonify": {
5330 "version": "1.0.1",
5331 "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
5332 "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
5333 "dev": true
5334 },
5335 "json5": {
5336 "version": "1.0.1",
5337 "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
5338 "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
5339 "dev": true,
5340 "requires": {
5341 "minimist": "^1.2.0"
5342 }
5343 },
5344 "jsx-ast-utils": {
5345 "version": "3.3.0",
5346 "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz",
5347 "integrity": "sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q==",
5348 "dev": true,
5349 "requires": {
5350 "array-includes": "^3.1.4",
5351 "object.assign": "^4.1.2"
5352 }
5353 },
5354 "levn": {
5355 "version": "0.4.1",
5356 "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
5357 "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
5358 "dev": true,
5359 "requires": {
5360 "prelude-ls": "^1.2.1",
5361 "type-check": "~0.4.0"
5362 }
5363 },
5364 "locate-path": {
5365 "version": "6.0.0",
5366 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
5367 "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
5368 "dev": true,
5369 "requires": {
5370 "p-locate": "^5.0.0"
5371 }
5372 },
5373 "lodash.merge": {
5374 "version": "4.6.2",
5375 "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
5376 "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
5377 "dev": true
5378 },
5379 "log-symbols": {
5380 "version": "4.1.0",
5381 "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
5382 "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
5383 "dev": true,
5384 "requires": {
5385 "chalk": "^4.1.0",
5386 "is-unicode-supported": "^0.1.0"
5387 }
5388 },
5389 "loose-envify": {
5390 "version": "1.4.0",
5391 "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
5392 "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
5393 "dev": true,
5394 "requires": {
5395 "js-tokens": "^3.0.0 || ^4.0.0"
5396 }
5397 },
5398 "loupe": {
5399 "version": "2.3.4",
5400 "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
5401 "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
5402 "dev": true,
5403 "requires": {
5404 "get-func-name": "^2.0.0"
5405 }
5406 },
5407 "lru-cache": {
5408 "version": "6.0.0",
5409 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
5410 "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
5411 "dev": true,
5412 "requires": {
5413 "yallist": "^4.0.0"
5414 }
5415 },
5416 "merge2": {
5417 "version": "1.4.1",
5418 "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
5419 "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
5420 "dev": true
5421 },
5422 "micromatch": {
5423 "version": "4.0.5",
5424 "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
5425 "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
5426 "dev": true,
5427 "requires": {
5428 "braces": "^3.0.2",
5429 "picomatch": "^2.3.1"
5430 }
5431 },
5432 "minimatch": {
5433 "version": "3.1.2",
5434 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
5435 "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
5436 "dev": true,
5437 "requires": {
5438 "brace-expansion": "^1.1.7"
5439 }
5440 },
5441 "minimist": {
5442 "version": "1.2.6",
5443 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
5444 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
5445 "dev": true
5446 },
5447 "mocha": {
5448 "version": "10.0.0",
5449 "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz",
5450 "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==",
5451 "dev": true,
5452 "requires": {
5453 "@ungap/promise-all-settled": "1.1.2",
5454 "ansi-colors": "4.1.1",
5455 "browser-stdout": "1.3.1",
5456 "chokidar": "3.5.3",
5457 "debug": "4.3.4",
5458 "diff": "5.0.0",
5459 "escape-string-regexp": "4.0.0",
5460 "find-up": "5.0.0",
5461 "glob": "7.2.0",
5462 "he": "1.2.0",
5463 "js-yaml": "4.1.0",
5464 "log-symbols": "4.1.0",
5465 "minimatch": "5.0.1",
5466 "ms": "2.1.3",
5467 "nanoid": "3.3.3",
5468 "serialize-javascript": "6.0.0",
5469 "strip-json-comments": "3.1.1",
5470 "supports-color": "8.1.1",
5471 "workerpool": "6.2.1",
5472 "yargs": "16.2.0",
5473 "yargs-parser": "20.2.4",
5474 "yargs-unparser": "2.0.0"
5475 },
5476 "dependencies": {
5477 "brace-expansion": {
5478 "version": "2.0.1",
5479 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
5480 "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
5481 "dev": true,
5482 "requires": {
5483 "balanced-match": "^1.0.0"
5484 }
5485 },
5486 "minimatch": {
5487 "version": "5.0.1",
5488 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
5489 "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
5490 "dev": true,
5491 "requires": {
5492 "brace-expansion": "^2.0.1"
5493 }
5494 },
5495 "ms": {
5496 "version": "2.1.3",
5497 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
5498 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
5499 "dev": true
5500 },
5501 "supports-color": {
5502 "version": "8.1.1",
5503 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
5504 "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
5505 "dev": true,
5506 "requires": {
5507 "has-flag": "^4.0.0"
5508 }
5509 }
5510 }
5511 },
5512 "ms": {
5513 "version": "2.1.2",
5514 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
5515 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
5516 "dev": true
5517 },
5518 "nanoid": {
5519 "version": "3.3.3",
5520 "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
5521 "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
5522 "dev": true
5523 },
5524 "natural-compare": {
5525 "version": "1.4.0",
5526 "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
5527 "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
5528 "dev": true
5529 },
5530 "normalize-path": {
5531 "version": "3.0.0",
5532 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
5533 "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
5534 "dev": true
5535 },
5536 "object-assign": {
5537 "version": "4.1.1",
5538 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
5539 "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
5540 "dev": true
5541 },
5542 "object-inspect": {
5543 "version": "1.12.0",
5544 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
5545 "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
5546 "dev": true
5547 },
5548 "object-is": {
5549 "version": "1.1.5",
5550 "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
5551 "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
5552 "dev": true,
5553 "requires": {
5554 "call-bind": "^1.0.2",
5555 "define-properties": "^1.1.3"
5556 }
5557 },
5558 "object-keys": {
5559 "version": "1.1.1",
5560 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
5561 "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
5562 "dev": true
5563 },
5564 "object.assign": {
5565 "version": "4.1.2",
5566 "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
5567 "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
5568 "dev": true,
5569 "requires": {
5570 "call-bind": "^1.0.0",
5571 "define-properties": "^1.1.3",
5572 "has-symbols": "^1.0.1",
5573 "object-keys": "^1.1.1"
5574 }
5575 },
5576 "object.entries": {
5577 "version": "1.1.5",
5578 "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
5579 "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
5580 "dev": true,
5581 "requires": {
5582 "call-bind": "^1.0.2",
5583 "define-properties": "^1.1.3",
5584 "es-abstract": "^1.19.1"
5585 }
5586 },
5587 "object.fromentries": {
5588 "version": "2.0.5",
5589 "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz",
5590 "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==",
5591 "dev": true,
5592 "requires": {
5593 "call-bind": "^1.0.2",
5594 "define-properties": "^1.1.3",
5595 "es-abstract": "^1.19.1"
5596 }
5597 },
5598 "object.hasown": {
5599 "version": "1.1.1",
5600 "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz",
5601 "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==",
5602 "dev": true,
5603 "requires": {
5604 "define-properties": "^1.1.4",
5605 "es-abstract": "^1.19.5"
5606 }
5607 },
5608 "object.values": {
5609 "version": "1.1.5",
5610 "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
5611 "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
5612 "dev": true,
5613 "requires": {
5614 "call-bind": "^1.0.2",
5615 "define-properties": "^1.1.3",
5616 "es-abstract": "^1.19.1"
5617 }
5618 },
5619 "once": {
5620 "version": "1.4.0",
5621 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
5622 "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
5623 "dev": true,
5624 "requires": {
5625 "wrappy": "1"
5626 }
5627 },
5628 "optionator": {
5629 "version": "0.9.1",
5630 "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
5631 "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
5632 "dev": true,
5633 "requires": {
5634 "deep-is": "^0.1.3",
5635 "fast-levenshtein": "^2.0.6",
5636 "levn": "^0.4.1",
5637 "prelude-ls": "^1.2.1",
5638 "type-check": "^0.4.0",
5639 "word-wrap": "^1.2.3"
5640 }
5641 },
5642 "p-limit": {
5643 "version": "3.1.0",
5644 "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
5645 "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
5646 "dev": true,
5647 "requires": {
5648 "yocto-queue": "^0.1.0"
5649 }
5650 },
5651 "p-locate": {
5652 "version": "5.0.0",
5653 "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
5654 "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
5655 "dev": true,
5656 "requires": {
5657 "p-limit": "^3.0.2"
5658 }
5659 },
5660 "p-try": {
5661 "version": "1.0.0",
5662 "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
5663 "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
5664 "dev": true
5665 },
5666 "parent-module": {
5667 "version": "1.0.1",
5668 "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
5669 "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
5670 "dev": true,
5671 "requires": {
5672 "callsites": "^3.0.0"
5673 }
5674 },
5675 "path-exists": {
5676 "version": "4.0.0",
5677 "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
5678 "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
5679 "dev": true
5680 },
5681 "path-is-absolute": {
5682 "version": "1.0.1",
5683 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
5684 "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
5685 "dev": true
5686 },
5687 "path-key": {
5688 "version": "3.1.1",
5689 "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
5690 "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
5691 "dev": true
5692 },
5693 "path-parse": {
5694 "version": "1.0.7",
5695 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
5696 "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
5697 "dev": true
5698 },
5699 "path-type": {
5700 "version": "4.0.0",
5701 "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
5702 "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
5703 "dev": true
5704 },
5705 "pathval": {
5706 "version": "1.1.1",
5707 "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
5708 "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
5709 "dev": true
5710 },
5711 "picomatch": {
5712 "version": "2.3.1",
5713 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
5714 "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
5715 "dev": true
5716 },
5717 "prelude-ls": {
5718 "version": "1.2.1",
5719 "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
5720 "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
5721 "dev": true
5722 },
5723 "prop-types": {
5724 "version": "15.8.1",
5725 "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
5726 "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
5727 "dev": true,
5728 "requires": {
5729 "loose-envify": "^1.4.0",
5730 "object-assign": "^4.1.1",
5731 "react-is": "^16.13.1"
5732 }
5733 },
5734 "punycode": {
5735 "version": "2.1.1",
5736 "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
5737 "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
5738 "dev": true
5739 },
5740 "queue-microtask": {
5741 "version": "1.2.3",
5742 "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
5743 "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
5744 "dev": true
5745 },
5746 "randombytes": {
5747 "version": "2.1.0",
5748 "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
5749 "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
5750 "dev": true,
5751 "requires": {
5752 "safe-buffer": "^5.1.0"
5753 }
5754 },
5755 "react-is": {
5756 "version": "16.13.1",
5757 "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
5758 "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
5759 "dev": true
5760 },
5761 "readdirp": {
5762 "version": "3.6.0",
5763 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
5764 "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
5765 "dev": true,
5766 "requires": {
5767 "picomatch": "^2.2.1"
5768 }
5769 },
5770 "regexp.prototype.flags": {
5771 "version": "1.4.3",
5772 "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
5773 "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
5774 "dev": true,
5775 "requires": {
5776 "call-bind": "^1.0.2",
5777 "define-properties": "^1.1.3",
5778 "functions-have-names": "^1.2.2"
5779 }
5780 },
5781 "regexpp": {
5782 "version": "3.2.0",
5783 "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
5784 "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
5785 "dev": true
5786 },
5787 "require-directory": {
5788 "version": "2.1.1",
5789 "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
5790 "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
5791 "dev": true
5792 },
5793 "resolve": {
5794 "version": "2.0.0-next.3",
5795 "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
5796 "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
5797 "dev": true,
5798 "requires": {
5799 "is-core-module": "^2.2.0",
5800 "path-parse": "^1.0.6"
5801 }
5802 },
5803 "resolve-from": {
5804 "version": "4.0.0",
5805 "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
5806 "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
5807 "dev": true
5808 },
5809 "resumer": {
5810 "version": "0.0.0",
5811 "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
5812 "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
5813 "dev": true,
5814 "requires": {
5815 "through": "~2.3.4"
5816 }
5817 },
5818 "reusify": {
5819 "version": "1.0.4",
5820 "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
5821 "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
5822 "dev": true
5823 },
5824 "rimraf": {
5825 "version": "3.0.2",
5826 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
5827 "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
5828 "dev": true,
5829 "requires": {
5830 "glob": "^7.1.3"
5831 }
5832 },
5833 "run-parallel": {
5834 "version": "1.2.0",
5835 "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
5836 "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
5837 "dev": true,
5838 "requires": {
5839 "queue-microtask": "^1.2.2"
5840 }
5841 },
5842 "safe-buffer": {
5843 "version": "5.2.1",
5844 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
5845 "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
5846 "dev": true
5847 },
5848 "semver": {
5849 "version": "7.3.7",
5850 "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
5851 "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
5852 "dev": true,
5853 "requires": {
5854 "lru-cache": "^6.0.0"
5855 }
5856 },
5857 "serialize-javascript": {
5858 "version": "6.0.0",
5859 "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
5860 "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
5861 "dev": true,
5862 "requires": {
5863 "randombytes": "^2.1.0"
5864 }
5865 },
5866 "shebang-command": {
5867 "version": "2.0.0",
5868 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
5869 "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
5870 "dev": true,
5871 "requires": {
5872 "shebang-regex": "^3.0.0"
5873 }
5874 },
5875 "shebang-regex": {
5876 "version": "3.0.0",
5877 "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
5878 "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
5879 "dev": true
5880 },
5881 "side-channel": {
5882 "version": "1.0.4",
5883 "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
5884 "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
5885 "dev": true,
5886 "requires": {
5887 "call-bind": "^1.0.0",
5888 "get-intrinsic": "^1.0.2",
5889 "object-inspect": "^1.9.0"
5890 }
5891 },
5892 "slash": {
5893 "version": "3.0.0",
5894 "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
5895 "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
5896 "dev": true
5897 },
5898 "string-width": {
5899 "version": "4.2.3",
5900 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
5901 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
5902 "dev": true,
5903 "requires": {
5904 "emoji-regex": "^8.0.0",
5905 "is-fullwidth-code-point": "^3.0.0",
5906 "strip-ansi": "^6.0.1"
5907 }
5908 },
5909 "string.prototype.matchall": {
5910 "version": "4.0.7",
5911 "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz",
5912 "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==",
5913 "dev": true,
5914 "requires": {
5915 "call-bind": "^1.0.2",
5916 "define-properties": "^1.1.3",
5917 "es-abstract": "^1.19.1",
5918 "get-intrinsic": "^1.1.1",
5919 "has-symbols": "^1.0.3",
5920 "internal-slot": "^1.0.3",
5921 "regexp.prototype.flags": "^1.4.1",
5922 "side-channel": "^1.0.4"
5923 }
5924 },
5925 "string.prototype.trim": {
5926 "version": "1.2.6",
5927 "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.6.tgz",
5928 "integrity": "sha512-8lMR2m+U0VJTPp6JjvJTtGyc4FIGq9CdRt7O9p6T0e6K4vjU+OP+SQJpbe/SBmRcCUIvNUnjsbmY6lnMp8MhsQ==",
5929 "dev": true,
5930 "requires": {
5931 "call-bind": "^1.0.2",
5932 "define-properties": "^1.1.4",
5933 "es-abstract": "^1.19.5"
5934 }
5935 },
5936 "string.prototype.trimend": {
5937 "version": "1.0.5",
5938 "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
5939 "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
5940 "dev": true,
5941 "requires": {
5942 "call-bind": "^1.0.2",
5943 "define-properties": "^1.1.4",
5944 "es-abstract": "^1.19.5"
5945 }
5946 },
5947 "string.prototype.trimstart": {
5948 "version": "1.0.5",
5949 "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
5950 "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
5951 "dev": true,
5952 "requires": {
5953 "call-bind": "^1.0.2",
5954 "define-properties": "^1.1.4",
5955 "es-abstract": "^1.19.5"
5956 }
5957 },
5958 "strip-ansi": {
5959 "version": "6.0.1",
5960 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
5961 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
5962 "dev": true,
5963 "requires": {
5964 "ansi-regex": "^5.0.1"
5965 }
5966 },
5967 "strip-bom": {
5968 "version": "3.0.0",
5969 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
5970 "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
5971 "dev": true
5972 },
5973 "strip-json-comments": {
5974 "version": "3.1.1",
5975 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
5976 "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
5977 "dev": true
5978 },
5979 "supports-color": {
5980 "version": "7.2.0",
5981 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
5982 "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
5983 "dev": true,
5984 "requires": {
5985 "has-flag": "^4.0.0"
5986 }
5987 },
5988 "supports-preserve-symlinks-flag": {
5989 "version": "1.0.0",
5990 "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
5991 "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
5992 "dev": true
5993 },
5994 "tape": {
5995 "version": "5.5.3",
5996 "resolved": "https://registry.npmjs.org/tape/-/tape-5.5.3.tgz",
5997 "integrity": "sha512-hPBJZBL9S7bH9vECg/KSM24slGYV589jJr4dmtiJrLD71AL66+8o4b9HdZazXZyvnilqA7eE8z5/flKiy0KsBg==",
5998 "dev": true,
5999 "requires": {
6000 "array.prototype.every": "^1.1.3",
6001 "call-bind": "^1.0.2",
6002 "deep-equal": "^2.0.5",
6003 "defined": "^1.0.0",
6004 "dotignore": "^0.1.2",
6005 "for-each": "^0.3.3",
6006 "get-package-type": "^0.1.0",
6007 "glob": "^7.2.0",
6008 "has": "^1.0.3",
6009 "has-dynamic-import": "^2.0.1",
6010 "inherits": "^2.0.4",
6011 "is-regex": "^1.1.4",
6012 "minimist": "^1.2.6",
6013 "object-inspect": "^1.12.0",
6014 "object-is": "^1.1.5",
6015 "object-keys": "^1.1.1",
6016 "object.assign": "^4.1.2",
6017 "resolve": "^2.0.0-next.3",
6018 "resumer": "^0.0.0",
6019 "string.prototype.trim": "^1.2.5",
6020 "through": "^2.3.8"
6021 }
6022 },
6023 "text-table": {
6024 "version": "0.2.0",
6025 "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
6026 "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
6027 "dev": true
6028 },
6029 "through": {
6030 "version": "2.3.8",
6031 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
6032 "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
6033 "dev": true
6034 },
6035 "to-regex-range": {
6036 "version": "5.0.1",
6037 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
6038 "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
6039 "dev": true,
6040 "requires": {
6041 "is-number": "^7.0.0"
6042 }
6043 },
6044 "tsconfig-paths": {
6045 "version": "3.14.1",
6046 "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz",
6047 "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==",
6048 "dev": true,
6049 "requires": {
6050 "@types/json5": "^0.0.29",
6051 "json5": "^1.0.1",
6052 "minimist": "^1.2.6",
6053 "strip-bom": "^3.0.0"
6054 }
6055 },
6056 "tslib": {
6057 "version": "1.14.1",
6058 "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
6059 "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
6060 "dev": true
6061 },
6062 "tsutils": {
6063 "version": "3.21.0",
6064 "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
6065 "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
6066 "dev": true,
6067 "requires": {
6068 "tslib": "^1.8.1"
6069 }
6070 },
6071 "type-check": {
6072 "version": "0.4.0",
6073 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
6074 "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
6075 "dev": true,
6076 "requires": {
6077 "prelude-ls": "^1.2.1"
6078 }
6079 },
6080 "type-detect": {
6081 "version": "4.0.8",
6082 "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
6083 "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
6084 "dev": true
6085 },
6086 "type-fest": {
6087 "version": "0.20.2",
6088 "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
6089 "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
6090 "dev": true
6091 },
6092 "typescript": {
6093 "version": "4.6.4",
6094 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
6095 "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
6096 "dev": true
6097 },
6098 "unbox-primitive": {
6099 "version": "1.0.2",
6100 "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
6101 "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
6102 "dev": true,
6103 "requires": {
6104 "call-bind": "^1.0.2",
6105 "has-bigints": "^1.0.2",
6106 "has-symbols": "^1.0.3",
6107 "which-boxed-primitive": "^1.0.2"
6108 }
6109 },
6110 "uri-js": {
6111 "version": "4.4.1",
6112 "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
6113 "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
6114 "dev": true,
6115 "requires": {
6116 "punycode": "^2.1.0"
6117 }
6118 },
6119 "v8-compile-cache": {
6120 "version": "2.3.0",
6121 "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
6122 "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
6123 "dev": true
6124 },
6125 "which": {
6126 "version": "2.0.2",
6127 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
6128 "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
6129 "dev": true,
6130 "requires": {
6131 "isexe": "^2.0.0"
6132 }
6133 },
6134 "which-boxed-primitive": {
6135 "version": "1.0.2",
6136 "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
6137 "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
6138 "dev": true,
6139 "requires": {
6140 "is-bigint": "^1.0.1",
6141 "is-boolean-object": "^1.1.0",
6142 "is-number-object": "^1.0.4",
6143 "is-string": "^1.0.5",
6144 "is-symbol": "^1.0.3"
6145 }
6146 },
6147 "which-collection": {
6148 "version": "1.0.1",
6149 "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
6150 "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
6151 "dev": true,
6152 "requires": {
6153 "is-map": "^2.0.1",
6154 "is-set": "^2.0.1",
6155 "is-weakmap": "^2.0.1",
6156 "is-weakset": "^2.0.1"
6157 }
6158 },
6159 "which-typed-array": {
6160 "version": "1.1.7",
6161 "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz",
6162 "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==",
6163 "dev": true,
6164 "requires": {
6165 "available-typed-arrays": "^1.0.5",
6166 "call-bind": "^1.0.2",
6167 "es-abstract": "^1.18.5",
6168 "foreach": "^2.0.5",
6169 "has-tostringtag": "^1.0.0",
6170 "is-typed-array": "^1.1.7"
6171 }
6172 },
6173 "word-wrap": {
6174 "version": "1.2.3",
6175 "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
6176 "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
6177 "dev": true
6178 },
6179 "workerpool": {
6180 "version": "6.2.1",
6181 "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
6182 "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
6183 "dev": true
6184 },
6185 "wrap-ansi": {
6186 "version": "7.0.0",
6187 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
6188 "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
6189 "dev": true,
6190 "requires": {
6191 "ansi-styles": "^4.0.0",
6192 "string-width": "^4.1.0",
6193 "strip-ansi": "^6.0.0"
6194 }
6195 },
6196 "wrappy": {
6197 "version": "1.0.2",
6198 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
6199 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
6200 "dev": true
6201 },
6202 "y18n": {
6203 "version": "5.0.8",
6204 "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
6205 "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
6206 "dev": true
6207 },
6208 "yallist": {
6209 "version": "4.0.0",
6210 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
6211 "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
6212 "dev": true
6213 },
6214 "yargs": {
6215 "version": "16.2.0",
6216 "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
6217 "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
6218 "dev": true,
6219 "requires": {
6220 "cliui": "^7.0.2",
6221 "escalade": "^3.1.1",
6222 "get-caller-file": "^2.0.5",
6223 "require-directory": "^2.1.1",
6224 "string-width": "^4.2.0",
6225 "y18n": "^5.0.5",
6226 "yargs-parser": "^20.2.2"
6227 }
6228 },
6229 "yargs-parser": {
6230 "version": "20.2.4",
6231 "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
6232 "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
6233 "dev": true
6234 },
6235 "yargs-unparser": {
6236 "version": "2.0.0",
6237 "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
6238 "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
6239 "dev": true,
6240 "requires": {
6241 "camelcase": "^6.0.0",
6242 "decamelize": "^4.0.0",
6243 "flat": "^5.0.2",
6244 "is-plain-obj": "^2.1.0"
6245 }
6246 },
6247 "yocto-queue": {
6248 "version": "0.1.0",
6249 "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
6250 "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
6251 "dev": true
6252 }
6253 }
6254 }
@@ -0,0 +1,19
1 import { ActivationContext } from "./ActivationContext";
2
3 export class ContextResolver<S extends object> {
4 private readonly _context: ActivationContext<S>;
5
6 constructor(context: ActivationContext<S>) {
7 this._context = context;
8 }
9
10 resolve<K extends keyof S, O extends { lazy: true}>(name: K, opts?: O): () => (O extends { default: infer T } ? T : never) | NonNullable<S[K]>;
11 resolve<K extends keyof S, O extends { lazy?: false}>(name: K, opts?: O): (O extends { default: infer T } ? T : never) | NonNullable<S[K]>;
12 resolve(name: keyof S, opts?: {lazy?: boolean, default?: unknown}) {
13 if (opts && opts.lazy) {
14 return () => "default" in opts ? this._context.resolve(name, opts.default) : this._context.resolve(name);
15 } else {
16 return opts && "default" in opts ? this._context.resolve(name, opts.default) : this._context.resolve(name);
17 }
18 }
19 }
@@ -0,0 +1,1
1 import "./t/container"; No newline at end of file
@@ -0,0 +1,58
1 /* eslint max-classes-per-file: ["error", 20] */
2 import { describe, it } from "mocha";
3 import {LifetimeManager} from "../LifetimeManager";
4 import {Container} from "../Container";
5 import { fluent } from "../traits";
6
7 class Foo {
8 foo = "foo";
9 }
10
11 class Bar {
12 bar = "bar";
13
14 constructor(foo?: () => Foo) {}
15 }
16
17 interface Services {
18 foo: Foo;
19
20 bar?: Bar;
21
22 baz: Foo;
23 }
24
25 interface ServicesB {
26 // will give errors
27 // baz: Bar;
28
29 baz: Foo;
30
31 zoo?: Foo;
32 }
33
34 interface SharedServices {
35 foo: Foo;
36
37 bar?: Bar;
38
39 baz: Bar;
40 }
41
42 const config = fluent()
43 .declare<Services>()
44 .declare<ServicesB>()
45 .register({
46 bar: it => it
47 .lifetime("context")
48 .factory($ => new Bar($("zoo", {lazy: true, default: new Foo()}))),
49 foo: it => it.factory($ => new Foo()),
50 baz: it => it.value(new Foo())
51 })
52 .done();
53
54 declare const container: Container<SharedServices>;
55
56 const c2 = config.apply(container);
57
58 c2.resolve("baz"); No newline at end of file
@@ -0,0 +1,9
1 {
2 "extends": "../tsconfig",
3 "compilerOptions": {
4 "rootDirs": [
5 "ts",
6 "../main/ts"
7 ]
8 }
9 } No newline at end of file
@@ -0,0 +1,10
1 {
2 "extends": "./tsconfig.json",
3 "compilerOptions": {
4 // ensure that nobody can accidentally use this config for a build
5 "noEmit": true
6 },
7 "include": [
8 "ts"
9 ]
10 } No newline at end of file
@@ -1,27 +1,32
1 1 {
2 "env": {
3 "browser": true,
4 "commonjs": true,
5 "amd": true,
6 "node": true
7 },
2 "root": true,
3 "extends": [
4 "plugin:react/recommended",
5 "eslint:recommended",
6 "plugin:@typescript-eslint/eslint-recommended",
7 "plugin:@typescript-eslint/recommended",
8 "plugin:@typescript-eslint/recommended-requiring-type-checking"
9 ],
10 "parser": "@typescript-eslint/parser",
8 11 "parserOptions": {
9 12 "ecmaFeatures": {
10 13 "jsx": true
11 14 },
12 "sourceType": "script"
15 "ecmaVersion": 5,
16 "tsconfigRootDir": "src",
17 "project": ["tsconfig.eslint.json", "*/tsconfig.json"]
13 18 },
14 "extends": "eslint:recommended",
19 "plugins": [
20 "@typescript-eslint"
21 ],
15 22 "rules": {
16 "no-const-assign": "warn",
17 "no-this-before-super": "warn",
18 "no-undef": "error",
19 "no-unreachable": "warn",
20 "no-unused-vars": "warn",
21 "constructor-super": "warn",
22 "valid-typeof": "warn",
23 "semi" : "warn",
24 "no-invalid-this" : "error",
25 "no-console": "off"
23 "@typescript-eslint/no-empty-function": "off",
24 "max-classes-per-file": [
25 "error",
26 { "ignoreExpressions": true, "max": 1 }
27 ],
28 "@typescript-eslint/prefer-readonly": ["error"],
29 "@typescript-eslint/semi": ["error"]
30
26 31 }
27 } No newline at end of file
32 }
@@ -1,3 +1,4
1 1 syntax: glob
2 2 .gradle/
3 3 build/
4 node_modules/
@@ -30,23 +30,9 typescript {
30 30 declaration = true
31 31 experimentalDecorators = true
32 32 strict = true
33 // dojo-typings are sick
34 skipLibCheck = true
35
36 if(symbols != 'none') {
37 sourceMap = true
38 sourceRoot = "pack:${packageName}"
39 }
40
41 if (flavour == 'node') {
42 33 module = "commonjs"
43 target = "es2017"
44 lib = ["es2017", "dom", "scripthost"]
45 } else if (flavour == 'browser') {
46 module = "amd"
47 34 target = "es5"
48 lib = ["es5", "dom", "scripthost", "es2015.promise", "es2015.symbol", "es2015.iterable" ]
49 }
35 lib = ["es2015", "dom", "scripthost"]
50 36 }
51 37 tscCmd = "$projectDir/node_modules/.bin/tsc"
52 38 tsLintCmd = "$projectDir/node_modules/.bin/tslint"
@@ -65,6 +51,10 if (symbols == 'local') {
65 51 }
66 52 }
67 53
54 task packSources {
55
56 }
57
68 58 printVersion {
69 59 doLast {
70 60 println "packageName: $packageName";
@@ -75,3 +65,7 printVersion {
75 65 println "symbols: $symbols";
76 66 }
77 67 }
68
69 test {
70 commandLine "npx", "mocha", "${->typescript.testDir.get()}";
71 } No newline at end of file
@@ -1,31 +1,32
1 1 {
2 2 "name": "@implab/di",
3 3 "version": "0.0.1-dev",
4 "description": "Dependency injection, logging, simple and fast text template engine",
4 "description": "The lightweight dependency injection IoC",
5 5 "main": "main.js",
6 6 "keywords": [
7 7 "di",
8 8 "ioc",
9 "logging",
10 "template engine",
11 9 "dependency injection"
12 10 ],
13 11 "author": "Implab team",
14 12 "license": "BSD-2-Clause",
15 "repository": "https://bitbucket.org/implab/implabjs",
16 "peerDependencies": {
17 "dojo": "^1.10.0"
18 },
13 "repository": "https://code.implab.org/implab/implabjs-di",
19 14 "devDependencies": {
20 "@types/node": "^8.0.0",
21 "@types/requirejs": "~2.1.31",
22 "@types/tape": "~4.2.33",
23 "dojo": "~1.10.0",
24 "dojo-typings": "^1.11.9",
25 "eslint": "6.1.0",
26 "requirejs": "latest",
27 "tape": "~4.11.0",
28 "tslint": "5.18.0",
29 "typescript": "~4.1.5"
15 "@types/chai": "4.3.1",
16 "@types/mocha": "9.1.1",
17 "@types/node": "~8.0.0",
18 "@types/tape": "~4.13.2",
19 "@typescript-eslint/eslint-plugin": "^5.23.0",
20 "@typescript-eslint/parser": "^5.23.0",
21 "chai": "~4.3.6",
22 "eslint": "^8.15.0",
23 "eslint-config-standard": "^17.0.0",
24 "eslint-plugin-import": "^2.26.0",
25 "eslint-plugin-n": "^15.2.0",
26 "eslint-plugin-promise": "^6.0.0",
27 "eslint-plugin-react": "^7.29.4",
28 "mocha": "~10.0.0",
29 "tape": "~5.5.3",
30 "typescript": "~4.6.4"
30 31 }
31 32 }
@@ -1,27 +1,3
1 # Implabjs-core
2
3 Набор стандартных библиотек для создания приложений со сложным функционалом.
4 Данную библиотеку можно использовать как для разработки приложений, которые
5 будут работать в среде браузеров, так и в серверных средах.
6
7 Библиотека написана на TypeScript, некоторая часть на JavaScript, но постепенно
8 планируется перейти полностью на использование TypeScript
9
10 Более подробная документация доступна по ссылке: <https://bitbucket.org/implab/implabjs-core/src/default/docs/ru/>
11
12 ## Основные компоненты
1 # Implabjs-di
13 2
14 ### DI
15
16 Контейнер для внедрения зависимостей, позволяет гибко описывать структуру
17 приложения и создавать слабосвязанные компоненты.
18
19 ### LOG
20
21 Средства журналирования похожие на JLog, позволяют эффективно вести журнал
22 выполнения программы.
23
24 ### Cancellations
25
26 Специальные маркеры для отмены асинхронных операций, по аналогии с .NET
27 CancelationToken.
3 Простой контейнер для внедрения зависимостей
@@ -1,9 +1,5
1 import { TraceSource } from "../log/TraceSource";
2 import { argumentNotEmptyString } from "../safe";
3 import { Descriptor, ContainerServiceMap, ContainerKeys, TypeOfService, ILifetime, ServiceContainer } from "./interfaces";
4 import { MapOf } from "../interfaces";
5
6 const trace = TraceSource.get("@implab/core/di/ActivationContext");
1 import { Descriptor, ILifetime, RegistrationMap, LifetimeContainer, ConfigurableKeys } from "./interfaces";
2 import { argumentNotNull } from "./traits";
7 3
8 4 export interface ActivationContextInfo {
9 5 name: string;
@@ -19,35 +15,32 let nextId = 1;
19 15 * tracks services with `context` activation type.
20 16 */
21 17 export class ActivationContext<S extends object> {
22 _cache: MapOf<any>;
18 private _cache: { [K: string]: unknown };
23 19
24 _services: ContainerServiceMap<S>;
20 private _services: Partial<RegistrationMap<S>>;
25 21
26 _visited: MapOf<any>;
22 private _name: string;
27 23
28 _name: string;
29
30 _service: Descriptor<S, any>;
24 private _service: Descriptor<S, unknown>;
31 25
32 _container: ServiceContainer<S>;
26 private readonly _containerLifetimeManager: LifetimeContainer;
33 27
34 _parent: ActivationContext<S> | undefined;
28 private _parent: ActivationContext<S> | undefined;
35 29
36 30 /** Creates a new activation context with the specified parameters.
37 * @param container the container which starts the activation process
31 * @param containerLifetimeManager the container which starts the activation process
38 32 * @param services the initial service registrations
39 33 * @param name the name of the service being activated, this parameter is
40 34 * used for the debug purpose.
41 35 * @param service the service to activate, this parameter is used for the
42 36 * debug purpose.
43 37 */
44 constructor(container: ServiceContainer<S>, services: ContainerServiceMap<S>, name: string, service: Descriptor<S, any>) {
38 constructor(containerLifetimeManager: LifetimeContainer, services: Partial<RegistrationMap<S>>, name: string, service: Descriptor<S, unknown>) {
45 39 this._name = name;
46 40 this._service = service;
47 this._visited = {};
48 41 this._cache = {};
49 42 this._services = services;
50 this._container = container;
43 this._containerLifetimeManager = containerLifetimeManager;
51 44 }
52 45
53 46 /** the name of the current resolving dependency */
@@ -55,15 +48,14 export class ActivationContext<S extends
55 48 return this._name;
56 49 }
57 50
58 /** Returns the container for which 'resolve' method was called */
59 getContainer() {
60 return this._container;
51 createContainerLifetime<T>() {
52 return this._containerLifetimeManager.createLifetime<T>();
61 53 }
62 54
63 55 /** Resolves the specified dependency in the current context
64 56 * @param name The name of the dependency being resolved
65 57 */
66 resolve<K extends ContainerKeys<S>>(name: K): TypeOfService<S, K>;
58 resolve<K extends keyof S>(name: K): NonNullable<S[K]>;
67 59 /** Resolves the specified dependency with the specified default value if
68 60 * the dependency is missing.
69 61 *
@@ -71,14 +63,8 export class ActivationContext<S extends
71 63 * @param def A default value to return in case of the specified dependency
72 64 * is missing.
73 65 */
74 resolve<K extends ContainerKeys<S>, T>(name: K, def: T): TypeOfService<S, K> | T;
75 /** Resolves the specified dependency and returns undefined in case if the
76 * dependency is missing.
77 *
78 * @param name The name of the dependency being resolved
79 */
80 resolve<K extends ContainerKeys<S>>(name: K, def: undefined): TypeOfService<S, K> | undefined;
81 resolve<K extends ContainerKeys<S>, T>(name: K, def?: T): TypeOfService<S, K> | T | undefined {
66 resolve<K extends keyof S, T>(name: K, def: T): NonNullable<S[K]> | T;
67 resolve<K extends keyof S, T>(name: K, def?: T): S[K] | T | undefined {
82 68 const d = this._services[name];
83 69
84 70 if (d !== undefined) {
@@ -87,7 +73,7 export class ActivationContext<S extends
87 73 if (arguments.length > 1)
88 74 return def;
89 75 else
90 throw new Error(`Service ${name} not found`);
76 throw new Error(`Service ${String(name)} not found`);
91 77 }
92 78 }
93 79
@@ -97,49 +83,38 export class ActivationContext<S extends
97 83 * @name{string} the name of the service
98 84 * @service{string} the service descriptor to register
99 85 */
100 register<K extends keyof S>(name: K, service: Descriptor<S, S[K]>) {
101 argumentNotEmptyString(name, "name");
86 register<K extends ConfigurableKeys<S>>(name: K, service: RegistrationMap<S>[K]) {
87 argumentNotNull(name, "name");
102 88
103 this._services[name] = service as any;
89 this._services[name] = service;
104 90 }
105 91
106 createLifetime(): ILifetime {
92 createLifetime<T>(): ILifetime<T> {
107 93 const id = nextId++;
108 const me = this;
109 94 return {
110 initialize() {
111 },
112 has() {
113 return id in me._cache;
114 },
115 get() {
116 return me._cache[id];
117 },
118 store(item: any) {
119 me._cache[id] = item;
95 initialize() {},
96 has: () => id in this._cache,
97 get: () => this._cache[id] as T,
98 store: item => {
99 this._cache[id] = item;
120 100 }
121 101 };
122 102 }
123 103
124 104 activate<T>(d: Descriptor<S, T>, name: string) {
125 if (trace.isLogEnabled())
126 trace.log("enter {0} {1}", name, d);
105 // TODO: add logging
106 // if (trace.isLogEnabled())
107 // trace.log("enter {0} {1}", name, d);
127 108
128 109 const ctx = this.enter(d, name);
129 110 const v = d.activate(ctx);
130 111
131 if (trace.isLogEnabled())
132 trace.log(`leave ${name}`);
112 // if (trace.isLogEnabled())
113 // trace.log(`leave ${name}`);
133 114
134 115 return v;
135 116 }
136 117
137 visit(id: string) {
138 const count = this._visited[id] || 0;
139 this._visited[id] = count + 1;
140 return count;
141 }
142
143 118 getStack(): ActivationContextInfo[] {
144 119 const stack = [{
145 120 name: this._name,
@@ -151,10 +126,10 export class ActivationContext<S extends
151 126 stack;
152 127 }
153 128
154 private enter(service: Descriptor<S, any>, name: string): this {
155 const clone = Object.create(this);
129 private enter(service: Descriptor<S, unknown>, name: string): this {
130 const clone = Object.create(this) as this;
156 131 clone._name = name;
157 clone._services = Object.create(this._services);
132 clone._services = Object.create(this._services) as typeof this._services;
158 133 clone._parent = this;
159 134 clone._service = service;
160 135 return clone;
@@ -162,8 +137,8 export class ActivationContext<S extends
162 137
163 138 /** Creates a clone for the current context, used to protect it from modifications */
164 139 clone(): this {
165 const clone = Object.create(this);
166 clone._services = Object.create(this._services);
140 const clone = Object.create(this) as this;
141 clone._services = Object.create(this._services) as typeof this._services;
167 142 return clone;
168 143 }
169 144 }
@@ -8,11 +8,11 export class ActivationError {
8 8
9 9 service: string;
10 10
11 innerException: any;
11 innerException: unknown;
12 12
13 13 message: string;
14 14
15 constructor(service: string, activationStack: ActivationItem[], innerException: any) {
15 constructor(service: string, activationStack: ActivationItem[], innerException: unknown) {
16 16 this.message = "Failed to activate the service";
17 17 this.activationStack = activationStack;
18 18 this.service = service;
@@ -22,15 +22,17 export class ActivationError {
22 22 toString() {
23 23 const parts = [this.message];
24 24 if (this.service)
25 parts.push("when activating: " + this.service.toString());
25 parts.push(`when activating: ${String(this.service)}`);
26 26
27 27 if (this.innerException)
28 parts.push("caused by: " + this.innerException.toString());
28 parts.push(`caused by: ${String(this.innerException)}`);
29 29
30 30 if (this.activationStack) {
31 31 parts.push("at");
32 parts.push.apply(null,
32 33 this.activationStack
33 .forEach(x => parts.push(` ${x.name} ${x.service}`));
34 .map(({ name, service }) => ` ${name} ${service}`)
35 );
34 36
35 37 }
36 38
@@ -1,67 +1,58
1 1 import { ActivationContext } from "./ActivationContext";
2 2 import { ActivationError } from "./ActivationError";
3 import { ServiceMap, Descriptor, PartialServiceMap, ContainerServiceMap, ContainerKeys, TypeOfService, ServiceContainer } from "./interfaces";
4 import { TraceSource } from "../log/TraceSource";
5 import { Configuration, RegistrationMap } from "./Configuration";
6 import { Cancellation } from "../Cancellation";
7 import { ICancellation } from "../interfaces";
8 import { isDescriptor } from "./traits";
3 import { RegistrationMap, ContainerKeys, ServiceContainer, ContainerServices, ConfigurableServices, ConfigurableKeys, ServiceLocator, Descriptor} from "./interfaces";
9 4 import { LifetimeManager } from "./LifetimeManager";
10 import { each, isString } from "../safe";
11 import { ContainerConfiguration, FluentRegistrations } from "./fluent/interfaces";
12 import { FluentConfiguration } from "./fluent/FluentConfiguration";
13
14 const trace = TraceSource.get("@implab/core/di/ActivationContext");
5 import { each, isKey } from "./traits";
15 6
16 export class Container<S extends object = any> implements ServiceContainer<S> {
17 readonly _services: ContainerServiceMap<S>;
18
19 readonly _lifetimeManager: LifetimeManager;
7 export class Container<S extends object > implements ServiceContainer<S> {
8 private readonly _services: Partial<RegistrationMap<ContainerServices<S>>>;
20 9
21 readonly _cleanup: (() => void)[];
22
23 readonly _root: Container<S>;
10 private readonly _lifetimeManager: LifetimeManager;
24 11
25 readonly _parent?: Container<S>;
12 private readonly _cleanup: (() => void)[];
26 13
27 _disposed: boolean;
14 private _disposed: boolean;
28 15
29 16 constructor(parent?: Container<S>) {
30 this._parent = parent;
31 this._services = Object.create(parent ? parent._services : null);
17 this._services = Object.create(parent ? parent._services : null) as typeof this._services;
32 18 this._cleanup = [];
33 this._root = parent ? parent.getRootContainer() : this;
34 this._services.container = { activate: () => this };
19 this._services.container = { activate: () => this as ServiceLocator<ContainerServices<S>>};
35 20 this._services.childContainer = { activate: () => this.createChildContainer() };
36 21 this._disposed = false;
37 22 this._lifetimeManager = new LifetimeManager();
38 23 }
39 24
40 getRootContainer() {
41 return this._root;
25 register<K extends ConfigurableKeys<S>>(name: K, service: Descriptor<ContainerServices<S>, ConfigurableServices<S>[K]>): void;
26 register<K extends ConfigurableKeys<S>>(services: {[k in K]: Descriptor<ContainerServices<S>, ConfigurableServices<S>[k]>}): void;
27 register<K extends ConfigurableKeys<S>>(nameOrCollection: K | {[k in K]: Descriptor<ContainerServices<S>, ConfigurableServices<S>[k]>}, service?: RegistrationMap<ContainerServices<S>>[K]) {
28 if (!isKey(nameOrCollection)) {
29 each(nameOrCollection, (v, k) => this.register(k, v));
30 } else {
31 if (!service)
32 throw new Error("The service parameter must be a descriptor");
33
34 this._services[nameOrCollection] = service;
42 35 }
43
44 getParent() {
45 return this._parent;
46 36 }
47 37
48 getLifetimeManager() {
49 return this._lifetimeManager;
38 createChildContainer(): ServiceContainer<S> {
39 return new Container(this);
50 40 }
51 41
52 resolve<K extends ContainerKeys<S>>(name: K, def?: TypeOfService<S, K>): TypeOfService<S, K>;
53 resolve<K extends ContainerKeys<S>>(name: K, def: undefined): TypeOfService<S, K> | undefined;
54 resolve<K extends ContainerKeys<S>>(name: K, def?: TypeOfService<S, K>): TypeOfService<S, K> | undefined {
55 trace.debug("resolve {0}", name);
42 resolve<K extends ContainerKeys<S>>(name: K): NonNullable<ContainerServices<S>[K]>;
43 resolve<K extends ContainerKeys<S>>(name: K, def: ContainerServices<S>[K]): ContainerServices<S>[K];
44 resolve<K extends ContainerKeys<S>>(name: K, def?: ContainerServices<S>[K]): ContainerServices<S>[K] | undefined {
45 // TODO: add logging
46 // trace.debug("resolve {0}", name);
56 47 const d = this._services[name];
57 48 if (d === undefined) {
58 49 if (arguments.length > 1)
59 50 return def;
60 51 else
61 throw new Error("Service '" + name + "' isn't found");
52 throw new Error(`Service '${String(name)}' isn't found`);
62 53 } else {
63 54
64 const context = new ActivationContext<S>(this, this._services, String(name), d);
55 const context = new ActivationContext(this, this._services, String(name), d);
65 56 try {
66 57 return d.activate(context);
67 58 } catch (error) {
@@ -70,34 +61,8 export class Container<S extends object
70 61 }
71 62 }
72 63
73 /**
74 * @deprecated use resolve() method
75 */
76 getService<K extends ContainerKeys<S>>(name: K, def?: TypeOfService<S, K>) {
77 return arguments.length === 1 ? this.resolve(name) : this.resolve(name, def);
78 }
79
80 register<K extends keyof S>(name: K, service: Descriptor<S, S[K]>): this;
81 register(services: PartialServiceMap<S>): this;
82 register<K extends keyof S>(nameOrCollection: K | ServiceMap<S>, service?: Descriptor<S, S[K]>) {
83 if (arguments.length === 1) {
84 const data = nameOrCollection as ServiceMap<S>;
85
86 each(data, (v, k) => this.register(k, v));
87 } else {
88 if (!isDescriptor(service))
89 throw new Error("The service parameter must be a descriptor");
90
91 this._services[nameOrCollection as K] = service as any;
92 }
93 return this;
94 }
95
96 /** @deprecated use getLifetimeManager() */
97 onDispose(callback: () => void) {
98 if (!(callback instanceof Function))
99 throw new Error("The callback must be a function");
100 this._cleanup.push(callback);
64 createLifetime<T>() {
65 return this._lifetimeManager.create<T>();
101 66 }
102 67
103 68 destroy() {
@@ -111,66 +76,4 export class Container<S extends object
111 76 f();
112 77 this._lifetimeManager.destroy();
113 78 }
114
115 /**
116 * @param{String|Object} config
117 * The configuration of the container. Can be either a string or an object,
118 * if the configuration is an object it's treated as a collection of
119 * services which will be registered in the container.
120 *
121 * @param{Function} opts.contextRequire
122 * The function which will be used to load a configuration or types for services.
123 *
124 */
125 async configure(config: string | RegistrationMap<S>, opts?: { contextRequire: any; baseModule?: string }, ct = Cancellation.none) {
126 const _opts = Object.create(opts || null);
127
128 if (typeof (config) === "string") {
129 _opts.baseModule = config;
130
131 const module = await import(config);
132 if (module && module.default && typeof (module.default.apply) === "function")
133 return module.default.apply(this);
134 else
135 return this._applyLegacyConfig(module, _opts, ct);
136 } else {
137 return this._applyLegacyConfig(config, _opts, ct);
138 79 }
139 }
140
141 applyConfig<S2 extends object>(config: Promise<{ default: ContainerConfiguration<S2>; }>, ct?: ICancellation): Promise<ServiceContainer<S & S2>>;
142 applyConfig<S2 extends object, P extends string>(config: Promise<{ [p in P]: ContainerConfiguration<S2>; }>, prop: P, ct?: ICancellation): Promise<ServiceContainer<S & S2>>;
143 async applyConfig<S2 extends object, P extends string>(
144 config: Promise<{ [p in P | "default"]: ContainerConfiguration<S2>; }>,
145 propOrCt?: P | ICancellation,
146 ct?: ICancellation
147 ): Promise<ServiceContainer<S & S2>> {
148 const mod = await config;
149
150 let _ct: ICancellation;
151 let _prop: P | "default";
152
153 if (isString(propOrCt)) {
154 _prop = propOrCt;
155 _ct = ct || Cancellation.none;
156 } else {
157 _ct = propOrCt || Cancellation.none;
158 _prop = "default";
159 }
160
161 return mod[_prop].apply(this, _ct);
162 }
163
164 async _applyLegacyConfig(config: RegistrationMap<S>, opts: { contextRequire: any; baseModule?: string }, ct = Cancellation.none) {
165 return new Configuration<S>(this).applyConfiguration(config, opts);
166 }
167
168 async fluent<K extends keyof S>(config: FluentRegistrations<K, S>, ct = Cancellation.none): Promise<this> {
169 await new FluentConfiguration<S>().register(config).apply(this, ct);
170 return this;
171 }
172
173 createChildContainer<S2 extends object = S>(): Container<S & S2> {
174 return new Container<S & S2>(this as any);
175 }
176 }
@@ -1,17 +1,22
1 import { Resolver, RegistrationBuilder } from "./interfaces";
2 import { Descriptor, ILifetime, ActivationType, PartialServiceMap, ServiceContainer } from "./interfaces";
3 import { DescriptorImpl } from "./DescriptorImpl";
1 import { Resolver, RegistrationBuilder, LifetimeContainer, ConfigurableKeys } from "./interfaces";
2 import { Descriptor, ILifetime, ActivationType } from "./interfaces";
3 import { DescriptorImpl, RegistrationOverridesMap } from "./DescriptorImpl";
4 4 import { LifetimeManager } from "./LifetimeManager";
5 import { each, isKey, isPromise, isString, oid } from "./traits";
5 6
7 /**
8 * @template {S} Карта доступных зависимостей, как правило `ContainerServices`
9 * @template {T} Тип сервиса
10 */
6 11 export class DescriptorBuilder<S extends object, T> {
7 private readonly _container: ServiceContainer<S>;
12 private readonly _lifetimeContainer: LifetimeContainer;
8 13 private readonly _cb: (d: Descriptor<S, T>) => void;
9 14
10 private readonly _eb: (err: any) => void;
15 private readonly _eb: (err: unknown) => void;
11 16
12 private _lifetime = LifetimeManager.empty();
17 private _lifetime = LifetimeManager.empty<T>();
13 18
14 private _overrides?: PartialServiceMap<S>;
19 private _overrides: RegistrationOverridesMap<S>;
15 20
16 21 private _cleanup?: (item: T) => void;
17 22
@@ -21,36 +26,48 export class DescriptorBuilder<S extends
21 26
22 27 private _failed = false;
23 28
24 constructor(container: ServiceContainer<S>, cb: (d: Descriptor<S, T>) => void, eb: (err: any) => void) {
25 this._container = container;
29 private _finalized = false;
30
31 /**
32 * Creates new DescriptorBuilder. Accepts a lifetime container for resolving "container"
33 * lifetime.
34 *
35 * @param container The lifetime container is the container where the service is to be registered.
36 * @param cb The callback to receive the built service descriptor
37 * @param eb The callback to receive the error due
38 */
39 constructor(container: LifetimeContainer, cb: (d: Descriptor<S, T>) => void, eb: (err: unknown) => void) {
40 this._lifetimeContainer = container;
26 41 this._cb = cb;
27 42 this._eb = eb;
43 this._overrides = {};
28 44 }
29 45
30 build<T2>(): DescriptorBuilder<S, T2> {
31 this._defer();
32 return new DescriptorBuilder<S, T2>(this._container, () => this._complete(), err => this._fail(err));
46 private _assertBuilding() {
47 if (this._finalized)
48 throw new Error("The descriptor builder is finalized");
33 49 }
34 50
35 override<K extends keyof S>(name: K, builder: RegistrationBuilder<S, S[K]>): this;
36 override<K extends keyof S>(services: { [name in K]: RegistrationBuilder<S, S[K]> }): this;
37 override<K extends keyof S>(nameOrServices: K | { [name in K]: RegistrationBuilder<S, S[K]> }, builder?: RegistrationBuilder<S, S[K]>): this {
38 const overrides: PartialServiceMap<S> = this._overrides ?
39 this._overrides :
40 (this._overrides = {});
51 private _finalize() {
52 this._finalized = true;
53 }
41 54
55 override<K extends ConfigurableKeys<S>>(name: K, builder: RegistrationBuilder<S, NonNullable<S[K]>>): this;
56 override<K extends ConfigurableKeys<S>>(services: { [k in K]: RegistrationBuilder<S, NonNullable<S[k]>> }): this;
57 override<K extends ConfigurableKeys<S>>(nameOrServices: K | { [name in K]: RegistrationBuilder<S, NonNullable<S[K]>> }, builder?: RegistrationBuilder<S, NonNullable<S[K]>>): this {
58 this._assertBuilding();
42 59 const guard = (v: void | Promise<void>) => {
43 60 if (isPromise(v))
44 61 v.catch(err => this._fail(err));
45 62 };
46 63
47 if (isPrimitive(nameOrServices)) {
64 if (isKey(nameOrServices)) {
48 65 if (builder) {
49 66 this._defer();
50 const d = new DescriptorBuilder<S, S[K]>(
51 this._container,
67 const d = new DescriptorBuilder<S, NonNullable<S[K]>>(
68 this._lifetimeContainer,
52 69 result => {
53 overrides[nameOrServices] = result;
70 this._overrides[nameOrServices] = result;
54 71 this._complete();
55 72 },
56 73 err => this._fail(err)
@@ -69,8 +86,9 export class DescriptorBuilder<S extends
69 86 }
70 87
71 88 lifetime(lifetime: "singleton", typeId: string): this;
72 lifetime(lifetime: ILifetime | Exclude<ActivationType, "singleton">): this;
73 lifetime(lifetime: ILifetime | ActivationType, typeId?: string): this {
89 lifetime(lifetime: ILifetime<T> | Exclude<ActivationType, "singleton">): this;
90 lifetime(lifetime: ILifetime<T> | ActivationType, typeId?: string): this {
91 this._assertBuilding();
74 92 if (isString(lifetime)) {
75 93 this._lifetime = this._resolveLifetime(lifetime, typeId);
76 94 } else {
@@ -80,38 +98,44 export class DescriptorBuilder<S extends
80 98 }
81 99
82 100 cleanup(cb: (item: T) => void): this {
101 this._assertBuilding();
83 102 this._cleanup = cb;
84 103 return this;
85 104 }
86 105
87 106 factory(f: (resolve: Resolver<S>) => T): void {
107 this._assertBuilding();
88 108 this._factory = f;
109 this._finalize();
89 110 this._complete();
90 111 }
91 112
92 113 value(v: T): void {
114 this._assertBuilding();
93 115 this._cb({
94 116 activate() {
95 117 return v;
96 118 }
97 119 });
120 this._finalize();
98 121 }
99 122
100 _resolveLifetime(activation: ActivationType, typeId?: string | object) {
123 _resolveLifetime<T>(activation: ActivationType, typeId?: string | object): ILifetime<T> {
101 124 switch (activation) {
102 125 case "container":
103 return LifetimeManager.containerLifetime(this._container);
126 return LifetimeManager.containerLifetime(this._lifetimeContainer);
104 127 case "hierarchy":
105 128 return LifetimeManager.hierarchyLifetime();
106 129 case "context":
107 130 return LifetimeManager.contextLifetime();
108 case "singleton":
131 case "singleton": {
109 132 if (!typeId)
110 133 throw Error("The singleton activation requires a typeId");
111 134
112 135 const _oid = isString(typeId) ? typeId : oid(typeId);
113 136
114 137 return LifetimeManager.singletonLifetime(_oid);
138 }
115 139 default:
116 140 return LifetimeManager.empty();
117 141 }
@@ -135,7 +159,7 export class DescriptorBuilder<S extends
135 159 }
136 160 }
137 161
138 _fail(err: any) {
162 _fail(err: unknown) {
139 163 if (!this._failed) {
140 164 this._failed = true;
141 165 this._eb.call(undefined, err);
@@ -1,23 +1,26
1 import { Descriptor, PartialServiceMap, ILifetime, ContainerKeys } from "../interfaces";
2 import { ActivationContext } from "../ActivationContext";
3 import { each } from "../../safe";
4 import { DependencyOptions, LazyDependencyOptions, Resolver } from "./interfaces";
1 import { Descriptor, ILifetime, ConfigurableKeys, Resolver } from "./interfaces";
2 import { ActivationContext } from "./ActivationContext";
3 import { ContextResolver } from "./ContextResolver";
4 import { each } from "./traits";
5
6 export type RegistrationOverridesMap<S extends object> = { [k in ConfigurableKeys<S>]?: Descriptor<S, NonNullable<S[k]>> };
5 7
6 8 export interface DescriptorImplArgs<S extends object, T> {
7 lifetime: ILifetime;
9 lifetime: ILifetime<T>;
8 10
9 11 factory: (resolve: Resolver<S>) => T;
10 12
11 13 cleanup?: (item: T) => void;
12 14
13 overrides?: PartialServiceMap<S>;
15 overrides?: RegistrationOverridesMap<S>;
14 16 }
15 17
18
16 19 export class DescriptorImpl<S extends object, T> implements Descriptor<S, T> {
17 20
18 private readonly _overrides?: PartialServiceMap<S>;
21 private readonly _overrides?: RegistrationOverridesMap<S>;
19 22
20 private readonly _lifetime: ILifetime;
23 private readonly _lifetime: ILifetime<T>;
21 24
22 25 private readonly _factory: (resolve: Resolver<S>) => T;
23 26
@@ -42,25 +45,19 export class DescriptorImpl<S extends ob
42 45 if (this._overrides)
43 46 each(this._overrides, (v, k) => context.register(k, v));
44 47
45 const resolve = (name: ContainerKeys<S>, opts?: DependencyOptions | LazyDependencyOptions) => {
46 if (opts && "lazy" in opts && opts.lazy) {
47 const c2 = context.clone();
48 return () => {
49 return opts.optional ? c2.resolve(name, opts.default) : c2.resolve(name);
50 };
51 } else {
52 return opts && opts.optional ? context.resolve(name, opts.default) : context.resolve(name);
53 }
54 };
48
49 const resolver = new ContextResolver(context);
55 50
56 const instance = this._factory.call(undefined, resolve);
51
52 const instance = this._factory.call(undefined, resolver.resolve.bind(resolver));
57 53
58 54 this._lifetime.store(instance, this._cleanup);
59 55
60 56 return instance;
61 57 }
62 58
59
63 60 toString() {
64 return `[object DescriptorImpl, lifetime=${this._lifetime}]`;
61 return `[object DescriptorImpl, lifetime=${String(this._lifetime)}]`;
65 62 }
66 63 }
@@ -1,53 +1,53
1 import { argumentNotNull, each, isPrimitive, isPromise } from "../../safe";
2 1 import { DescriptorBuilder } from "./DescriptorBuilder";
3 import { RegistrationBuilder, FluentRegistrations, ContainerConfiguration } from "./interfaces";
4 import { Cancellation } from "../../Cancellation";
5 import { ServiceContainer } from "../interfaces";
2 import { ConfigurableKeys, ContainerServices, ConfigurableServices, RegistrationBuildersMap, RequiredKeys } from "./interfaces";
3 import { ServiceContainer } from "./interfaces";
4 import { argumentNotNull, each, isKey } from "./traits";
6 5
7 export class FluentConfiguration<S extends object, Y extends keyof S = keyof S> {
6 export class FluentConfiguration<S extends object, Y extends ConfigurableKeys<S> = ConfigurableKeys<S>> {
8 7
9 _builders: { [k in keyof S]?: RegistrationBuilder<S, S[k]> } = {};
8 _builders: Partial<RegistrationBuildersMap<S>> = {};
10 9
11 provided<K extends Y>(): FluentConfiguration<S, Exclude<Y, K>> {
12 return this;
10 declare<D extends Partial<Pick<S, keyof D & keyof S>>>(): FluentConfiguration<S & D, Y | ConfigurableKeys<D>> {
11 return this as FluentConfiguration<S & D, Y | ConfigurableKeys<D>>;
13 12 }
14 13
15 register<K extends Y>(name: K, builder: RegistrationBuilder<S, S[K]>): FluentConfiguration<S, Exclude<Y, K>>;
16 register<K extends Y>(config: FluentRegistrations<K, S>): FluentConfiguration<S, Exclude<Y, K>>;
17 register<K extends Y>(nameOrConfig: K | FluentRegistrations<K, S>, builder?: RegistrationBuilder<S, S[K]>): FluentConfiguration<S, Exclude<Y, K>> {
18 if (isPrimitive(nameOrConfig)) {
14 provided<P extends Pick<S, keyof P & keyof S>>(): FluentConfiguration<S & P, Exclude<Y, keyof P>> {
15 return this as FluentConfiguration<S & P, Exclude<Y, keyof P>>;
16 }
17
18 register<K extends Y>(name: K, builder: RegistrationBuildersMap<S>[K]): FluentConfiguration<S, Exclude<Y, K>>;
19 register<K extends Y>(config: RegistrationBuildersMap<S, K>): FluentConfiguration<S, Exclude<Y, K>>;
20 register<K extends Y>(nameOrConfig: K | RegistrationBuildersMap<S, K>, builder?: RegistrationBuildersMap<S>[K]) {
21 if (isKey(nameOrConfig)) {
19 22 argumentNotNull(builder, "builder");
20 23 this._builders[nameOrConfig] = builder;
21 24 } else {
22 25 each(nameOrConfig, (v, k) => this.register(k, v));
23 26 }
24 27
28 return this as FluentConfiguration<S, Exclude<Y, K>>;
29 }
30
31 done(missing: RequiredKeys<S, Y> extends never ? void : RequiredKeys<S, Y>) {
32 if (missing !== undefined)
33 throw new Error("The configuration isn't complete");
25 34 return this;
26 35 }
27 36
28 configure(config: FluentRegistrations<Y, S>): ContainerConfiguration<S> {
29 return this.register(config);
30 }
31 37
32 apply<S2 extends object>(target: ServiceContainer<S2>, ct = Cancellation.none) {
38 apply<A extends Partial<S>>(target: ServiceContainer<A>) {
33 39
34 40 let pending = 1;
35 41
36 const _t2 = target as unknown as ServiceContainer<S2 & S>;
42 const _t2 = target as ServiceContainer<S>;
37 43
38 return new Promise<ServiceContainer<S2 & S>>((resolve, reject) => {
39 function guard(v: void | Promise<void>) {
40 if (isPromise(v))
41 v.catch(reject);
42 }
44 const reject = (ex: unknown) => { throw ex; };
43 45
44 function complete() {
45 if (!--pending)
46 resolve(_t2);
47 }
46 const complete = () => !--pending;
47
48 48 each(this._builders, (v, k) => {
49 49 pending++;
50 const d = new DescriptorBuilder<S2 & S, any>(_t2,
50 const d = new DescriptorBuilder<ContainerServices<S>, NonNullable<ConfigurableServices<S>[typeof k]>>(_t2,
51 51 result => {
52 52 _t2.register(k, result);
53 53 complete();
@@ -55,14 +55,13 export class FluentConfiguration<S exten
55 55 reject
56 56 );
57 57
58 try {
59 guard(v(d, ct));
60 } catch (e) {
61 reject(e);
62 }
58
59 v(d);
63 60 });
64 complete();
65 });
61 if (!complete())
62 throw new Error("The configuration didn't complete.");
63
64 return _t2 as ServiceContainer<A & S>;
66 65 }
67 66
68 67 }
@@ -1,23 +1,21
1 import { IDestroyable, MapOf } from "../interfaces";
2 import { argumentNotNull, isDestroyable, argumentNotEmptyString, isRemovable } from "../safe";
3 import { ILifetime, ServiceContainer } from "./interfaces";
1 import { IDestroyable, ILifetime } from "./interfaces";
4 2 import { ActivationContext } from "./ActivationContext";
3 import { argumentNotNull, isDestroyable } from "./traits";
5 4
6 function safeCall(item: () => void) {
5 const safeCall = (item: () => void) => {
7 6 try {
8 7 item();
9 8 } catch {
10 9 // silence!
11 10 }
12 }
11 };
13 12
14 const emptyLifetime: ILifetime = Object.freeze({
13 const emptyLifetime = Object.freeze({
15 14 has() {
16 15 return false;
17 16 },
18 17
19 18 initialize() {
20
21 19 },
22 20
23 21 get() {
@@ -34,7 +32,7 const emptyLifetime: ILifetime = Object.
34 32
35 33 });
36 34
37 const unknownLifetime: ILifetime = Object.freeze({
35 const unknownLifetime = Object.freeze({
38 36 has() {
39 37 return false;
40 38 },
@@ -54,52 +52,49 const unknownLifetime: ILifetime = Objec
54 52
55 53 let nextId = 0;
56 54
57 const singletons: any = {};
55 const singletons: { [K:string]: unknown} = {};
58 56
59 57 export class LifetimeManager implements IDestroyable {
60 58 private _cleanup: (() => void)[] = [];
61 private _cache: MapOf<any> = {};
59 private readonly _cache: {[K: string]: unknown} = {};
62 60 private _destroyed = false;
63 61
64 private _pending: MapOf<boolean> = {};
62 private readonly _pending: {[K: string]: unknown} = {};
65 63
66 create(): ILifetime {
67 const self = this;
64 create<T>(): ILifetime<T> {
68 65 const id = ++nextId;
69 66 return {
70 has() {
71 return (id in self._cache);
67 has: () => id in this._cache,
68
69 get: () => {
70 const t = this._cache[id];
71 if (t === undefined)
72 throw new Error(`The item with with the key ${id} isn't found`);
73 return t as T;
72 74 },
73 75
74 get() {
75 const t = self._cache[id];
76 if (t === undefined)
77 throw new Error(`The item with with the key ${id} isn't found`);
78 return t;
76 initialize: () => {
77 if (this._pending[id])
78 throw Error(`Cyclic reference detected: the item with the key ${id} is already activating.`);
79 this._pending[id] = true;
79 80 },
80 81
81 initialize() {
82 if (self._pending[id])
83 throw Error(`Cyclic reference detected: the item with the key ${id} is already activating.`);
84 self._pending[id] = true;
85 },
86
87 store(item: any, cleanup?: (item: any) => void) {
82 store: (item: T, cleanup?: (item: T) => void) => {
88 83 argumentNotNull(id, "id");
89 84 argumentNotNull(item, "item");
90 85
91 if (this.has())
86 if (id in this._cache)
92 87 throw new Error(`The item with with the key ${id} already registered with this lifetime manager`);
93 delete self._pending[id];
88 delete this._pending[id];
94 89
95 self._cache[id] = item;
90 this._cache[id] = item;
96 91
97 if (self._destroyed)
92 if (this._destroyed)
98 93 throw new Error("Lifetime manager is destroyed");
99 94 if (cleanup) {
100 self._cleanup.push(() => cleanup(item));
95 this._cleanup.push(() => cleanup(item));
101 96 } else if (isDestroyable(item)) {
102 self._cleanup.push(() => item.destroy());
97 this._cleanup.push(() => item.destroy());
103 98 }
104 99 }
105 100 };
@@ -113,18 +108,18 export class LifetimeManager implements
113 108 }
114 109 }
115 110
116 static empty(): ILifetime {
111 static empty<T>(): ILifetime<T> {
117 112 return emptyLifetime;
118 113 }
119 114
120 static hierarchyLifetime() {
121 let _lifetime = unknownLifetime;
115 static hierarchyLifetime<T>() {
116 let _lifetime: ILifetime<T> = unknownLifetime;
122 117 return {
123 initialize(context: ActivationContext<any>) {
118 initialize(context: ActivationContext<object>) {
124 119 if (_lifetime !== unknownLifetime)
125 120 throw new Error("Cyclic reference activation detected");
126 121
127 _lifetime = context.getContainer().getLifetimeManager().create();
122 _lifetime = context.createContainerLifetime<T>();
128 123 },
129 124 get() {
130 125 return _lifetime.get();
@@ -132,19 +127,19 export class LifetimeManager implements
132 127 has() {
133 128 return _lifetime.has();
134 129 },
135 store(item: any, cleanup?: (item: any) => void) {
130 store(item: T, cleanup?: (item: T) => void) {
136 131 return _lifetime.store(item, cleanup);
137 132 },
138 133 toString() {
139 return `[object HierarchyLifetime, has=${this.has()}]`;
134 return `[object HierarchyLifetime, has=${String(this.has())}]`;
140 135 }
141 136 };
142 137 }
143 138
144 static contextLifetime() {
145 let _lifetime = unknownLifetime;
139 static contextLifetime<T>() {
140 let _lifetime: ILifetime<T> = unknownLifetime;
146 141 return {
147 initialize(context: ActivationContext<any>) {
142 initialize(context: ActivationContext<object>) {
148 143 if (_lifetime !== unknownLifetime)
149 144 throw new Error("Cyclic reference detected");
150 145 _lifetime = context.createLifetime();
@@ -155,17 +150,17 export class LifetimeManager implements
155 150 has() {
156 151 return _lifetime.has();
157 152 },
158 store(item: any) {
153 store(item: T) {
159 154 _lifetime.store(item);
160 155 },
161 156 toString() {
162 return `[object ContextLifetime, has=${this.has()}]`;
157 return `[object ContextLifetime, has=${String(this.has())}]`;
163 158 }
164 159 };
165 160 }
166 161
167 static singletonLifetime(typeId: string) {
168 argumentNotEmptyString(typeId, "typeId");
162 static singletonLifetime<T>(typeId: string) {
163 argumentNotNull(typeId, "typeId");
169 164 let pending = false;
170 165 return {
171 166 has() {
@@ -174,30 +169,30 export class LifetimeManager implements
174 169 get() {
175 170 if (!this.has())
176 171 throw new Error(`The instance ${typeId} doesn't exists`);
177 return singletons[typeId];
172 return singletons[typeId] as T;
178 173 },
179 174 initialize() {
180 175 if (pending)
181 176 throw new Error("Cyclic reference detected");
182 177 pending = true;
183 178 },
184 store(item: any) {
179 store(item: T) {
185 180 singletons[typeId] = item;
186 181 pending = false;
187 182 },
188 183 toString() {
189 return `[object SingletonLifetime, has=${this.has()}, typeId=${typeId}]`;
184 return `[object SingletonLifetime, has=${String(this.has())}, typeId=${typeId}]`;
190 185 }
191 186 };
192 187 }
193 188
194 static containerLifetime(container: ServiceContainer<any>) {
195 let _lifetime = unknownLifetime;
189 static containerLifetime<T>(container: { createLifetime<X>(): ILifetime<X>}) {
190 let _lifetime: ILifetime<T> = unknownLifetime;
196 191 return {
197 initialize(context: ActivationContext<any>) {
192 initialize() {
198 193 if (_lifetime !== unknownLifetime)
199 194 throw new Error("Cyclic reference detected");
200 _lifetime = container.getLifetimeManager().create();
195 _lifetime = container.createLifetime();
201 196 },
202 197 get() {
203 198 return _lifetime.get();
@@ -205,11 +200,11 export class LifetimeManager implements
205 200 has() {
206 201 return _lifetime.has();
207 202 },
208 store(item: any) {
203 store(item: T) {
209 204 _lifetime.store(item);
210 205 },
211 206 toString() {
212 return `[object ContainerLifetime, has=${_lifetime.has()}]`;
207 return `[object ContainerLifetime, has=${String(_lifetime.has())}]`;
213 208 }
214 209 };
215 210 }
@@ -1,104 +1,104
1 import { ActivationContext } from "./ActivationContext";
2
1 3 export type primitive = number | string | null | undefined | symbol;
2 4
3 5 export interface IDestroyable {
4 6 destroy(): void;
5 7 }
6 8
7
8 export interface DependencyOptions {
9 optional?: boolean;
10 default?: any;
11 }
12
13 export interface LazyDependencyOptions extends DependencyOptions {
14 lazy: true;
15 }
16
17 export type ExtractService<K, S> = K extends keyof S ? S[K] : never;
18
19 export type ExtractDependency<D, S> = D extends { $dependency: infer K } ?
20 D extends { lazy: true } ? () => ExtractService<K, S> : ExtractService<K, S> :
21 D extends { $type: new (...args: any[]) => infer I } ? I :
22 D extends { $factory: (...args: any[]) => infer R } ? R :
23 WalkDependencies<D, S>;
24
25 export type WalkDependencies<D, S> = D extends primitive ? D :
26 { [K in keyof D]: ExtractDependency<D[K], S> };
27
28 export type InferReferenceType<S extends object, K extends ContainerKeys<S>, O> = O extends { default: infer X } ? (TypeOfService<S, K> | X) :
29 O extends { optional: true } ? (TypeOfService<S, K> | undefined) :
30 TypeOfService<S, K>;
31
9 /**
10 * @template S Карта доступных зависимостей
11 */
32 12 export interface Resolver<S extends object> {
33 <K extends ContainerKeys<S>, O extends LazyDependencyOptions>(this: void, name: K, opts: O): () => InferReferenceType<S, K, O>;
34 <K extends ContainerKeys<S>, O extends DependencyOptions>(this: void, name: K, opts?: O): InferReferenceType<S, K, O>;
13 /**
14 * Функция для разрешения зависимостей, поддерживает создание фабричных методов,
15 * отложенную активацию и значение по-умолчанию для сервисов
16 * @template K Ключ сервиса из {@link S}
17 * @template O Тип параметра {@link opts} используется для выведения типа
18 * возвращаемого значения.
19 * @param name Ключ сервиса, который будет разрешен.
20 * @param {boolean=} opts.lazy Признак того, что требуется отложенная активация,
21 * будет возвращен фабричный метод для получения зависимости. Если не указан,
22 * то считается `false`.
23 * @param {any=} opts.default Значение по умолчанию, если в контейнере указанный
24 * сервис не зарегистрирован
25 * @returns Либо фабричный метод для получения зависимости, либо значение зависимости
26 * @throws Error Если зависимость не найдена и не предоставлено значение по-умолчанию
27 */
28 <K extends keyof S, O extends { lazy: true; default?: unknown }>(name: K, opts?: O): () => (O extends { default: infer T } ? T : never) | NonNullable<S[K]>;
29 <K extends keyof S, O extends { lazy?: false; default?: unknown }>(name: K, opts?: O): (O extends { default: infer T } ? T : never) | NonNullable<S[K]>;
35 30 }
36 31
37 32 export interface DescriptorBuilder<S extends object, T> {
33
34 /**
35 *
36 * @param f
37 */
38 38 factory(f: (resolve: Resolver<S>) => T): void;
39 39
40 build<T2>(): DescriptorBuilder<S, T2>;
40 override<K extends ConfigurableKeys<S>>(name: K, builder: RegistrationBuilder<S, NonNullable<S[K]>>): this;
41 override<K extends ConfigurableKeys<S>>(services: { [name in K]: RegistrationBuilder<S, NonNullable<S[K]>> }): this;
41 42
42 override<K extends keyof S>(name: K, builder: RegistrationBuilder<S, S[K]>): this;
43 override<K extends keyof S>(services: { [name in K]: RegistrationBuilder<S, S[K]> }): this;
44
45 lifetime(lifetime: "singleton", typeId: any): this;
46 lifetime(lifetime: ILifetime | Exclude<ActivationType, "singleton">): this;
43 lifetime(lifetime: "singleton", typeId: string | number | object): this;
44 lifetime(lifetime: ILifetime<T> | Exclude<ActivationType, "singleton">): this;
47 45
48 46 cleanup(cb: (item: T) => void): this;
49 47
50 48 value(v: T): void;
51 49 }
52 50
53 export type RegistrationBuilder<S extends object, T> = (d: DescriptorBuilder<S, T>, ct?: ICancellation) => void | Promise<void>;
51 export type RegistrationBuilder<S extends object, T> = (d: DescriptorBuilder<S, T>) => void;
54 52
55 export type FluentRegistrations<K extends keyof S, S extends object> = { [k in K]: RegistrationBuilder<S, S[k]> };
53 export type RegistrationBuildersMap<S extends object, K extends ConfigurableKeys<S> = ConfigurableKeys<S>> = {
54 [k in K]-?: RegistrationBuilder<ContainerServices<S>, NonNullable<ConfigurableServices<S>[k]>>
55 };
56 56
57 export interface Descriptor<S extends object = any, T = any> {
57 export interface Descriptor<S extends object, T> {
58 58 activate(context: ActivationContext<S>): T;
59 59 }
60 60
61 export type ServiceMap<S extends object> = {
62 [k in keyof S]: Descriptor<S, S[k]>;
63 };
64
65 export type ContainerKeys<S extends object> = keyof S | keyof ContainerProvided<S>;
61 export type ConfigurableDescriptor<S extends object, K extends ConfigurableKeys<S>> = Descriptor<ContainerServices<S>, ConfigurableServices<S>[K]>;
66 62
67 export type TypeOfService<S extends object, K> =
68 K extends keyof ContainerProvided<S> ? ContainerProvided<S>[K] :
69 K extends keyof S ? S[K] : never;
70
71 export type ContainerServiceMap<S extends object> = {
72 [K in ContainerKeys<S>]: Descriptor<S, TypeOfService<S, K>>;
63 export type RegistrationMap<S extends object, K extends keyof S = keyof S> = {
64 [k in K]-?: Descriptor<S, S[k]>;
73 65 };
74 66
75 export type PartialServiceMap<S extends object> = {
76 [k in keyof S]?: Descriptor<S, S[k]>;
77 };
67 export interface ProvidedServices<S extends object> {
68 container: ServiceLocator<ContainerServices<S>>;
69
70 childContainer: ServiceContainer<S>;
71 }
72
73 export type ProvidedKeys = keyof ProvidedServices<object>;
74
75 export type ContainerKeys<S extends object> = keyof ContainerServices<S>;
76
77 export type Mix<S, X> = { [k in keyof (S & X)]: k extends keyof X ? X[k] : S[k & keyof S] };
78
79 export type ContainerServices<S extends object> = Mix<S, ProvidedServices<S>>;
80
81 export type ConfigurableKeys<S extends object> = Exclude<keyof S, ProvidedKeys>;
82
83 export type ConfigurableServices<S extends object> = Pick<S, ConfigurableKeys<S>>;
78 84
79 85 export interface ServiceLocator<S extends object> {
80 resolve<K extends ContainerKeys<S>>(name: K, def?: TypeOfService<S, K>): TypeOfService<S, K>;
81 resolve<K extends ContainerKeys<S>>(name: K, def?: undefined): TypeOfService<S, K> | undefined;
86 resolve<K extends keyof S>(name: K): NonNullable<S[K]>;
87 resolve<K extends keyof S, T>(name: K, def: T): NonNullable<S[K]> | T;
82 88 }
83 89
84 export interface ServiceContainer<S extends object> extends ServiceLocator<S>, IDestroyable {
85 getLifetimeManager(): LifetimeManager;
86 register<K extends keyof S>(name: K, service: Descriptor<S, S[K]>): this;
87 register(services: PartialServiceMap<S>): this;
90 export interface LifetimeContainer {
91 createLifetime<T>(): ILifetime<T>;
92 }
93
94 export interface ServiceContainer<S extends object> extends ServiceLocator<ContainerServices<S>>, LifetimeContainer, IDestroyable {
95
96 register<K extends ConfigurableKeys<S>>(name: K, service: ConfigurableDescriptor<S, K>): void;
97 register<K extends ConfigurableKeys<S>>(services: { [k in K]: ConfigurableDescriptor<S, K> }): void;
88 98
89 99 createChildContainer(): ServiceContainer<S>;
90 100 }
91 101
92 export interface ContainerProvided<S extends object> {
93 container: ServiceLocator<S>;
94
95 childContainer: ServiceContainer<S>;
96 }
97
98 export type ContainerRegistered<S extends object> = /*{
99 [K in Exclude<keyof S, keyof ContainerProvided<S>>]: S[K];
100 };*/
101 Exclude<S, ContainerProvided<S>>;
102 102
103 103 export type ActivationType = "singleton" | "container" | "hierarchy" | "context" | "call";
104 104
@@ -106,13 +106,16 export type ActivationType = "singleton"
106 106 * Интерфейс для управления жизнью экземпляра объекта. Каждая регистрация имеет
107 107 * свой собственный объект `ILifetime`, который создается при первой активации
108 108 */
109 export interface ILifetime {
109 export interface ILifetime<T> {
110 110 /** Проверяет, что уже создан экземпляр объекта */
111 111 has(): boolean;
112 112
113 get(): any;
113 get(): T;
114
115 initialize(context: ActivationContext<object>): void;
114 116
115 initialize(context: ActivationContext<any>): void;
117 store(item: T, cleanup?: (item: T) => void): void;
118 }
116 119
117 store(item: any, cleanup?: (item: any) => void): void;
118 }
120 export type RequiredKeys<T, K extends keyof T = keyof T> = keyof { [p in K as (T[p] extends undefined ? never : p)]-?: T[p] };
121
@@ -1,6 +1,49
1 import { primitive } from "./interfaces";
1 import { FluentConfiguration } from "./FluentConfiguration";
2 import { IDestroyable } from "./interfaces";
3
4 export function fluent<S extends object = object>() {
5 return new FluentConfiguration<S>();
6 }
7
8 export type key = string | number | symbol;
9
10 export const isKey = (v: unknown): v is key =>
11 typeof v === "string" || typeof v === "number" || typeof v === "symbol";
12
13 export const isString = (v: unknown): v is string =>
14 typeof v === "string";
15
16
17 export const isNotNull = <T>(v: T): v is NonNullable<T> => v !== null && v !== undefined;
18
19 export const each = <T extends object>(obj: T, cb: <X extends Extract<keyof T, string>>(v: NonNullable<T[X]>, k: X) => void) =>
20 (Object.keys(obj) as (Extract<keyof T, string>)[])
21 .forEach(k => {
22 const v = obj[k];
23 isNotNull(v) && cb(v, k);
24 });
2 25
3 export function isPrimitive(val: any): val is primitive {
4 return (val === null || val === undefined || typeof (val) === "string" ||
5 typeof (val) === "number" || typeof (val) === "boolean");
6 } No newline at end of file
26 export const argumentNotNull = (arg: unknown, name: string) => {
27 if (arg === null || arg === undefined)
28 throw new Error("The argument " + name + " can't be null or undefined");
29 };
30
31 export const isPromise = <T = unknown>(val: unknown): val is PromiseLike<T> =>
32 isNotNull(val) && typeof (val as PromiseLike<T>).then === "function";
33
34 export const isDestroyable = (d: unknown): d is IDestroyable =>
35 isNotNull(d) && typeof (d as IDestroyable).destroy === "function";
36
37 let _nextOid = 0;
38 const _oid = typeof Symbol === "function" ?
39 Symbol.for("__implab__oid__") :
40 "__implab__oid__";
41
42 type OidSlot = { [k in typeof _oid]?: string };
43
44 export const oid = <T extends object>(instance: T): string => {
45 argumentNotNull(instance, "instance");
46 const val = (instance as OidSlot)[_oid];
47
48 return val ? val : ((instance as OidSlot)[_oid] = `oid_${++_nextOid}`);
49 }; No newline at end of file
@@ -1,9 +1,3
1 1 {
2 2 "extends": "../tsconfig",
3 "compilerOptions": {
4 "rootDir": "ts"
5 },
6 "include": [
7 "ts/**/*.ts"
8 ]
9 3 } No newline at end of file
@@ -1,83 +0,0
1 import { argumentNotEmptyString, each } from "../safe";
2 import { ActivationContext } from "./ActivationContext";
3 import { Descriptor, PartialServiceMap, TypeOfService, ContainerKeys } from "./interfaces";
4 import { ActivationError } from "./ActivationError";
5
6 export interface ReferenceDescriptorParams<S extends object, K extends ContainerKeys<S>> {
7 name: K;
8 optional?: boolean;
9 default?: TypeOfService<S, K>;
10 services?: PartialServiceMap<S>;
11 }
12
13 export class LazyReferenceDescriptor<S extends object = any, K extends ContainerKeys<S> = ContainerKeys<S>>
14 implements Descriptor<S, ((args?: PartialServiceMap<S>) => TypeOfService<S, K>)> {
15
16 _name: K;
17
18 _optional = false;
19
20 _default: TypeOfService<S, K> | undefined;
21
22 _services: PartialServiceMap<S>;
23
24 constructor(opts: ReferenceDescriptorParams<S, K>) {
25 argumentNotEmptyString(opts && opts.name, "opts.name");
26 this._name = opts.name;
27 this._optional = !!opts.optional;
28 this._default = opts.default;
29
30 this._services = (opts.services || {}) as PartialServiceMap<S>;
31 }
32
33 activate(context: ActivationContext<S>) {
34 // добавляем сервисы
35 if (this._services) {
36 each(this._services, (v, k) => context.register(k, v));
37 }
38
39 const saved = context.clone();
40
41 return (cfg?: PartialServiceMap<S>): any => {
42 // защищаем контекст на случай исключения в процессе
43 // активации
44 const ct = cfg ? saved.clone() : saved;
45 try {
46 if (cfg) {
47 each(cfg, (v, k) => ct.register(k, v));
48 }
49
50 return this._optional ? ct.resolve(this._name, this._default) : ct
51 .resolve(this._name);
52 } catch (error) {
53 throw new ActivationError(this._name.toString(), ct.getStack(), error);
54 }
55 };
56 }
57
58 toString() {
59 const opts = [];
60 if (this._optional)
61 opts.push("optional");
62
63 opts.push("lazy");
64
65 const parts = [
66 "@ref "
67 ];
68 if (opts.length) {
69 parts.push("{");
70 parts.push(opts.join());
71 parts.push("} ");
72 }
73
74 parts.push(this._name.toString());
75
76 if (this._default !== undefined && this._default !== null) {
77 parts.push(" = ");
78 parts.push(String(this._default));
79 }
80
81 return parts.join("");
82 }
83 }
@@ -1,88 +0,0
1 import { argumentNotEmptyString, each } from "../safe";
2 import { ActivationContext } from "./ActivationContext";
3 import { Descriptor, PartialServiceMap, TypeOfService, ContainerKeys } from "./interfaces";
4
5 export interface ReferenceDescriptorParams<S extends object, K extends ContainerKeys<S>> {
6 /**
7 * The name of the descriptor
8 */
9 name: K;
10
11 /**
12 * The flag that indicates that the referenced service isn't required to exist.
13 * If the reference is optional and the referenced service doesn't exist,
14 * the undefined or a default value will be returned.
15 */
16 optional?: boolean;
17
18 /**
19 * a default value for the reference when the referenced service doesn't exist.
20 */
21 default?: TypeOfService<S, K>;
22
23 /**
24 * The service overrides
25 */
26 services?: PartialServiceMap<S>;
27 }
28
29 export class ReferenceDescriptor<S extends object = any, K extends ContainerKeys<S> = ContainerKeys<S>>
30 implements Descriptor<S, TypeOfService<S, K>> {
31
32 _name: K;
33
34 _optional = false;
35
36 _default: TypeOfService<S, K> | undefined;
37
38 _services: PartialServiceMap<S>;
39
40 constructor(opts: ReferenceDescriptorParams<S, K>) {
41 argumentNotEmptyString(opts && opts.name, "opts.name");
42 this._name = opts.name;
43 this._optional = !!opts.optional;
44 this._default = opts.default;
45
46 this._services = (opts.services || {}) as PartialServiceMap<S>;
47 }
48
49 /** This method activates the referenced service if one exists
50 * @param context activation context which is used during current activation
51 */
52 activate(context: ActivationContext<S>): any {
53 // добавляем сервисы
54 if (this._services) {
55 each(this._services, (v, k) => context.register(k, v));
56 }
57
58 const res = this._optional ?
59 context.resolve(this._name, this._default) :
60 context.resolve(this._name);
61
62 return res;
63 }
64
65 toString() {
66 const opts = [];
67 if (this._optional)
68 opts.push("optional");
69
70 const parts = [
71 "@ref "
72 ];
73 if (opts.length) {
74 parts.push("{");
75 parts.push(opts.join());
76 parts.push("} ");
77 }
78
79 parts.push(this._name.toString());
80
81 if (this._default !== undefined && this._default !== null) {
82 parts.push(" = ");
83 parts.push(String(this._default));
84 }
85
86 return parts.join("");
87 }
88 }
General Comments 0
You need to be logged in to leave comments. Login now