From 78faeae08164b88aceb4a80ba113f13eaf55ea91 Mon Sep 17 00:00:00 2001 From: Malui Gomez Date: Thu, 3 Aug 2023 10:31:41 -0600 Subject: [PATCH 01/36] prueba1 --- src/index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/index.html b/src/index.html index 5aef81f0..bdf7151c 100644 --- a/src/index.html +++ b/src/index.html @@ -1,11 +1,12 @@ - + Data Lovers +

holi

From b30dae1f0edc880a3864baec85c9b7a5f27054c0 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Thu, 3 Aug 2023 11:34:59 -0500 Subject: [PATCH 02/36] prueba2 --- src/index.html | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/index.html b/src/index.html index bdf7151c..b85a7f8d 100644 --- a/src/index.html +++ b/src/index.html @@ -1,13 +1,17 @@ - - - Data Lovers - - - -

holi

-
- - - + + + + Data Lovers + + + + +

holi

+

Holi2

+
+ + + + \ No newline at end of file From 7ee80a551b4d4edbe4614a7375ef5e3e841759a2 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Mon, 7 Aug 2023 12:24:12 -0500 Subject: [PATCH 03/36] estrcutura html hasta section parte 1 --- package-lock.json | 7509 +++++++++++++++++++++++++++++++++++++++++++++ src/data.js | 38 +- src/index.html | 20 +- 3 files changed, 7558 insertions(+), 9 deletions(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..75344073 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7509 @@ +{ + "name": "data-lovers", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "data-lovers", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "@babel/core": "^7.6.2", + "@babel/plugin-transform-modules-commonjs": "^7.6.0", + "babel-jest": "^27.0.1", + "eslint": "^8.3.0", + "gh-pages": "^3.1.0", + "htmlhint": "^1.0.0", + "jest": "^27.0.1", + "opener": "^1.5.1", + "serve": "^13.0.2" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz", + "integrity": "sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", + "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.6", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", + "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.7", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/types": "^7.22.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz", + "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz", + "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", + "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/node": { + "version": "20.4.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.6.tgz", + "integrity": "sha512-q0RkvNgMweWWIvSMDiXhflGUKMdIxBo2M2tYM/0kEGDueQByFzK4KZAgu5YHGFNxziTlppNpTIBcqHQAxlfHdA==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@zeit/schemas": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz", + "integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/arg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz", + "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "dev": true, + "dependencies": { + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/boxen/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001519", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", + "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dev": true, + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clipboardy/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/clipboardy/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clipboardy/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clipboardy/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/clipboardy/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.483", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.483.tgz", + "integrity": "sha512-YLwU0iF//9R3cCEfq0wgL+pf9vglE4kwAg4S5tkVVZljUDKv7Wcz67mTY4OOj+T7YUbTGuqlbqgdl/s+7Q8KTw==", + "dev": true + }, + "node_modules/email-addresses": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz", + "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.1", + "@eslint/js": "^8.46.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.2", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "dev": true, + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gh-pages": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-3.2.3.tgz", + "integrity": "sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==", + "dev": true, + "dependencies": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlhint": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/htmlhint/-/htmlhint-1.1.4.tgz", + "integrity": "sha512-tSKPefhIaaWDk/vKxAOQbN+QwZmDeJCq3bZZGbJMoMQAfTjepudC+MkuT9MOBbuQI3dLLzDWbmU7fLV3JASC7Q==", + "dev": true, + "dependencies": { + "async": "3.2.3", + "chalk": "^4.1.2", + "commander": "^9.1.0", + "glob": "^7.2.0", + "is-glob": "^4.0.3", + "node-fetch": "^2.6.2", + "strip-json-comments": "3.1.0", + "xml": "1.0.1" + }, + "bin": { + "htmlhint": "bin/htmlhint" + } + }, + "node_modules/htmlhint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/htmlhint/node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "node_modules/htmlhint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/htmlhint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/htmlhint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/htmlhint/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/htmlhint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/htmlhint/node_modules/strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/htmlhint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dev": true, + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-jasmine2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dev": true, + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dev": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "dependencies": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", + "dev": true, + "dependencies": { + "rc": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serve": { + "version": "13.0.4", + "resolved": "https://registry.npmjs.org/serve/-/serve-13.0.4.tgz", + "integrity": "sha512-Lj8rhXmphJCRQVv5qwu0NQZ2h+0MrRyRJxDZu5y3qLH2i/XY6a0FPj/VmjMUdkJb672MBfE8hJ274PU6JzBd0Q==", + "dev": true, + "dependencies": { + "@zeit/schemas": "2.6.0", + "ajv": "6.12.6", + "arg": "2.0.0", + "boxen": "5.1.2", + "chalk": "2.4.1", + "clipboardy": "2.3.0", + "compression": "1.7.3", + "serve-handler": "6.1.3", + "update-check": "1.5.2" + }, + "bin": { + "serve": "bin/serve.js" + } + }, + "node_modules/serve-handler": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", + "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", + "dev": true, + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-handler/node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-handler/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/serve/node_modules/chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "dev": true + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-check": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz", + "integrity": "sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ==", + "dev": true, + "dependencies": { + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dev": true + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/src/data.js b/src/data.js index 6291453d..f55f2c98 100644 --- a/src/data.js +++ b/src/data.js @@ -1,9 +1,35 @@ // estas funciones son de ejemplo -export const example = () => { - return 'example'; -}; +// export const example = () => { +// return 'example'; +// }; -export const anotherExample = () => { - return 'OMG'; -}; +// export const anotherExample = () => { +// return 'OMG'; +// }; +const dataPokemon = [ + { + "num": "001", + "name": "bulbasaur", + "img": "https://www.serebii.net/pokemongo/pokemon/001.png", + }; + { + { + "num": "002", + "name": "ivysaur", + "img": "https://www.serebii.net/pokemongo/pokemon/002.png" + }, + { + "num": "003", + "name": "venusaur", + "img": "https://www.serebii.net/pokemongo/pokemon/003.png" + } + } + +] + + + + + +export default datosPokemon; diff --git a/src/index.html b/src/index.html index b85a7f8d..1a377a2c 100644 --- a/src/index.html +++ b/src/index.html @@ -3,13 +3,27 @@ - Data Lovers + Data Lovers - Pokemon Go -

holi

-

Holi2

+
+

Pokemon Go

+

Everything you need to know to become the best Pokemon Master!

+ +
+ + + +
+ +
From 7392d5b8393b715ffd1d70a2aa6b631201d224d0 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Tue, 8 Aug 2023 10:32:00 -0500 Subject: [PATCH 04/36] impor-expor de json --- src/data.js | 24 ++++-------------------- src/main.js | 20 +++++++++++++++----- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/src/data.js b/src/data.js index f55f2c98..b84030e5 100644 --- a/src/data.js +++ b/src/data.js @@ -7,29 +7,13 @@ // export const anotherExample = () => { // return 'OMG'; // }; -const dataPokemon = [ - { - "num": "001", - "name": "bulbasaur", - "img": "https://www.serebii.net/pokemongo/pokemon/001.png", - }; - { - { - "num": "002", - "name": "ivysaur", - "img": "https://www.serebii.net/pokemongo/pokemon/002.png" - }, - { - "num": "003", - "name": "venusaur", - "img": "https://www.serebii.net/pokemongo/pokemon/003.png" - } - } +import pokedex from './data/pokemon.js/pokemon.json'; + +export default pokedex; + -] -export default datosPokemon; diff --git a/src/main.js b/src/main.js index 71c59f2d..32ba7f28 100644 --- a/src/main.js +++ b/src/main.js @@ -1,6 +1,16 @@ -import { example } from './data.js'; -// import data from './data/lol/lol.js'; -import data from './data/pokemon/pokemon.js'; -// import data from './data/rickandmorty/rickandmorty.js'; +// import { example } from './data.js'; +// // import data from './data/lol/lol.js'; +// import data from './data/pokemon/pokemon.js'; +// // import data from './data/rickandmorty/rickandmorty.js'; -console.log(example, data); +// console.log(example, data); + +import pokedex from './data/pokemon.js/pokemon.json'; + +const pokemonGrid = document.querySelector('.pokemon-grid'); + +pokedex.forEach(pokemon => { + const pokemonCard = document.createElement('div'); + // ... (genera la tarjeta de Pokémon como antes) + pokemonGrid.appendChild(pokemonCard); +}); \ No newline at end of file From d3ee9e4d1a2ebca9c711adc0970b84896b509a26 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Tue, 8 Aug 2023 16:05:54 -0500 Subject: [PATCH 05/36] imegenes y nombres de pokemon con el bucle for each --- src/Fuente-pokemon/Pokemon Hollow.ttf | Bin 0 -> 42828 bytes src/Fuente-pokemon/Pokemon Solid.ttf | Bin 0 -> 25548 bytes src/data.js | 3 ++- src/index.html | 7 +++--- src/main.js | 30 ++++++++++++++----------- src/style.css | 31 ++++++++++++++++++++++++++ 6 files changed, 54 insertions(+), 17 deletions(-) create mode 100644 src/Fuente-pokemon/Pokemon Hollow.ttf create mode 100644 src/Fuente-pokemon/Pokemon Solid.ttf diff --git a/src/Fuente-pokemon/Pokemon Hollow.ttf b/src/Fuente-pokemon/Pokemon Hollow.ttf new file mode 100644 index 0000000000000000000000000000000000000000..17a283a8e52fad002b2fe690a26c25515af4d300 GIT binary patch literal 42828 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 z
oo`l}5Fz2aQCE$ZNRlpBUcFVNrOYc>fOWo<+lA8hU+QL1r9jP2tHEragqg7{K zeX29pL(3Bz>nG~oMcks{XWz{qytrJ)p2fKn@W}~yeI0g>#JSn@6!YPf_QuEZI^;4B zZJ&VhF3>^!mseNgFP`3qKj>8zUonTkPpCa0TE?z`JeB~6DlQhPWC@zT6^QL~SvpA- z0_^}A6yK2;#EU@2vm~|vLRppo3cwT5Pq+!`^#qq%$YT5Sq0X{iP>fI444$#F>|DSw!Av@u#a6eBNn>4EB~S=(Rf6KRDS<5$u~c$TK>d{&e`Dys7cl zJRx0l?>>2PBumEHg)^a4)+5UhV(F|(7s~X3DapCH);yy8#l5l!%q=|0o~^x&&(O^( zvr9Hz4t%BnA5vV{Avq4#ZVA-XisQ=#djTagdO=w#C_x=ygu2suV}Qm5Nxpb?3zp#K zhWab17Yim_mR_$Jae)h$KsD)~?C{HW(D#JRhVV!W9o=#t zcR3?+_eDm1I4FoBsB$fZ<5J55LAtWs_oDdXg_;r9rHv%1aLbMhSHxGWkEhR}V)B4S zF&OF_#a~=%goo}E;~$Z)1Z5pVS+@pcfx-85Ia|k_hw6-7U>mD_Xg%bSIe{bt)s>+z zq8g9}dfRC@q(pN6!-E*q|1#9f%EGfRLAh+)2p+nh>XGwn30Lqrl(z=&!>_Ryuxf8H zk~iYtF2B*R18=!<<;c=4?EH}WD~K<^2=ZD%R)d-&+#DW*yP(w29)9 zIW(JbLnH>BE)Eek=BCj^m>>`FwajPYBPJSO!}y1Z2I7JP!%GjsBm z$g+XI&qx(HBcc7FUVFT>`b@u{S=U9@mXv$_$?X1DE_U4?Y|{G1oL7%#v*eOz+mlZm zF_=8ML!`e3pV+tk`NzY+O2ncx?8d4U4r8#?;l-xj|9pxO!9JrET6gvrCL9d*H}(6UMB3$vN+acsjPnx`a9w5Q#jq@!rv%o@1I7sN4&O#nj$C;=ys#vJCLY1&-qw$9OX<(mSWs{MO8h z3dbLg6*=7vYs$lt;#VYtPuO)dIwK=4E;%JLK6_51mhzr^7+C`0UvdkM0@O@MHgeDNW7(kju}oI#uU^xiLjIzo(u> z{J?NIUJdK>vKWFYJnp1p!wp3IJD~|~RbAE08A}9Sm8iZ0vY-@eoJlz6n;)DC7pPo( z!0W)28iSp>%U$P?As^~_$ z8HYePrc(Y}3UIs(*jM=AXYawOZ5sUj8)13<;Sq^P%w(aG&16I_cobqnI>G9cPD!|# zui>u<0Nb($U8Oha4Y~rXXfv!(9(E`@aihC|*s%>v#`}@M_!Xk|_CjXG5I`7kj{`9~ z3osVBkZCrAQ3fsDfm8KOh!I+YGxiW#4dlphWW7Wn5@i+GEp>QuHz6y$p6VbfD@0*K zHcT{T;9+Wlc$zW#-iR$~0TMzhEMW{*&^Gu|+ObKuE&=>R>eNMG>iawza z=_C3Wu}p`61|`x#`i|bA-)Wpi;a@mI$LS?HM?cYzbeV?eJay1p;Pbh}cpx>rM}N|< z^c$U}U+5XWV6WM%v57XT#okb7tFc$NJZ!i5G>eB?YL7P6R@;=>>%chj1g1|E#OKiM RQ*It5eSTh&ugk@R_kXr7P~-pr literal 0 HcmV?d00001 diff --git a/src/Fuente-pokemon/Pokemon Solid.ttf b/src/Fuente-pokemon/Pokemon Solid.ttf new file mode 100644 index 0000000000000000000000000000000000000000..918fe22dc64b84451b8bf658b56cb7556099ee47 GIT binary patch literal 25548 zcmdUYc|g?F7Vy2lZDv>phGm9z1{j6`0bzh)kwrv6L_}0XR1^eU0oT-!Tu9A@)ZCZM z%+!p`e3m{lE0@g7XV&BS%zV~s@mXnRWj7)HMjI1$3BAj zHzULRKO!N>9W4i-^JwmuY|Wps~(5D$}W#nTaLF1I`j z9I9ko0Xz2amF>^+YwJ5T{Gl|YRwr6uke3M!3q_dVSKmsOz%Vrhw)IC`rTG8_gWrmz z95P>l_jUBbTag>QzbPQ|ad@B0U4U^gmfvcwqOb8*^L?%ooq^99=*1v&9d9sSrek4D zIcqQ3t02AEHU_Joz(r0@A8ysL2 zp6>{7!S@EZu5bo`7oK5`jW8Fz|79r>U*CbTjqsk%y`SELj-hY@>=b6YPI{j!;yC&Y zsDUwOd1Nku@6zG*Xt;9W{s1pYhH(@QM*M86`2@T^2G?1*?!owtu;$sY=KFBnf!8PC znZlDK-b0)p-dmpGUgCXsz&$D6_rrD5deJf0={zv+WV(LKMfNd>9AqkCuMFl!3ImL@ z%!69zWerFQ_ugZBw&0B7&3aXuuT#9zOJWdzUoNhVuCM(i!X?7D2XOWytVP^w+cV5T zVQi!{(*B}rkZd*YmjGSCIEurT3&z4dADv5Lp!XN?YuPutcNZ|-54vyVQut1!xeG8K zytmMwxfY(!!tdyONfc)yOqHf{@IIZsmtHVmpzCBVz`hueoZe;;Fd?r!@^}(E>CI-cLp{GzZOvGdu~YfUCHmd=!XMQ98;) z!_ipJerlCPdjuMdvQXn^!fjp5v%0&`j7d&zRKFOj0Pz2GEraTj(Vd=IMh)n8YQ44 zl#L=#EQ&`dC=_L(d8h_GNl!g`1}#Ugpw(y(+KgU6W6)?+g2th-s1)r(m8b$uKoika zGzC?mYP1*4L^IGV^aPrX=A&9vhn_+wV2*X@ukiQ=T(84L|9sFEczhY{gvT>*A#@O( z5}(^XEJpR{5CU!ve@Df~ZD=cc4qiQtmZ44PZQ$xh&|4@3=}|D!p=0pPBJ`>_awS?J zKEI0&pa!%Gy@r;eHE0Q1i=IWh&`W4HdJ%0vR5Gkb&!Zh^JG?R?jrbe-upedQ6tRe_u}hvJRdwK%9o|i1JPR9NmU@2;ITG=v!QF`4C=}z`e^c$WnMs zA6qH)|35nYi%4S!(P^NpQ?TRvfo`6L-ChcGLMixVpy6kMir2vYzi8e6_hC2Ji!`ta zX!|{&#qA;`ynq^kPDcZ+mjIoQ14>^EdshL}PHBA#P&=jdlR)h=fZk^Ttv>;jR}b_) zU!?ejKpS+A-x6uEL8Q)Aa1P!Ds$Na17_lrEuH1M(#NGIro4M;B)w`{6F}+f}P+cgbL|Gu`ol}Df~wg zBB_+@mNL>|(r2Y#$kehpS&pnk_O$G9E=1 zpu=s)c*lIlS&qjYKX>Zm^qkXfr^C(>&d)mkD0h%Y$W!En@@n}r@_R1nF3-CB%QfBg zfI?9CDWVmbidBkF-F(~@yX|yG?mq7E?nUk!-S@cP^+@wr@A187hUXz=h_X=mwDOSh zOI5I{T6N4Tz^lY-q1S2e5byckyS+d5zV8#~^OVmapAURK_qprK_(u2^`>yc)r(Z9> zX?`dDJ^ZWvKUe3epHlBspVYW%DmBLgA_ATcXbkvAAQPAyI6v@MkTR$|=wQ$%S`Td> z?LO^?!LGqM!IOhe1b?T?)*aHF)O{Kf7qT$qJ-v^9m43VaE&UgI5}F;lBlOGA`(bLJ zdj`V;PZcK?_$t!4Xk2t~VK@-#<}@BXL~8E6hiQm09{{a`5eV>99SlxkjB$o&Pd~=f z!`+P$Bnln}IAKXZ1j8#*aBPe&I541KUek|LhmKeqo-uE%pTlpzCm$vcNGuazl&~6O zf2Ot|<)}Qo*V965NJg@&lhiS>G~L^88aeuFtZDf>ynk@Aq;SjIgj`AeJW9cWvWJn> zJX;7C@__Rrh1OG{#adQkkNI`@$NHH#70)vrn>=${wCOzmnWhQrr2o|=FooB!2jTUw zN?5}ckYK~O29PiYn9h%JcLSK6*ua2bT?7DaOu>d|4^Jl?7@!M|jfpb`IKdE44?{Fv z61y^Mq~0^cJ9W**b=kwW#EmRpIfpFCTjS<3J-ri757p9y~sJjL|T5!+>Z2#9T-A3CWVtAkz@5 zb&;_Otl(Km0dB@lxQMs|3x0S+~sk{b=2KM+PJoG?dG1SoMerZ5ym7%;-Z77G%=-Oa<3-TJfd71Fff>5K8D zRmlThJzBcp+d|XT0rl12M;YQO+*6!f7(KZ*Y}Js=tS3)w#DR(ZM@I}9WSX8l9mlGA z`Q?ubOpAy8Ic`29lnBc~&PT$1JzQ+tqYGwY<;J*Pusr|_><-;6x;@ykJ#n!y{PbH% zlhY<$_~hi6f4=_2wzIP_gWcBL(zrd@SMMixACNz8Sz1OxLB$IG>YL=#iPt_Fy!cQ} z^sIb5>=aJ;dg&)~NdC0v{N-tW$#Z&*T#+*?F8%NlFk7%WmxOcozzzVKlVO$zLWjMH z#CSgz5}0ZivYITD5^X}GR5IE$i78S2-bcmho7YJtb$UW+?tu9%ez}AJ?I(uf(snpt z9dKw^>!H!5u!d;MVS>;7uqS*K!2|~2UlY<_QdS1`eKTm7b3NI2LC_dEdU_n-Y+ar> z~i4E7RF9m;M>*sN8sLN8V_ ze1z-~2sO2&io6{3*T^&HGDnnN0m8{KO{V$`{5`OFRw6qV=XTb_xhRS zJ@O3Gf69#Q1x#$2riomU3Re&Ck><*C!up%Ej0qe8}Es(BMk-}J)D(+3N4i=?_ zwK-r(3r}made|IBTM)EvO+xPwL)nZ?W9J2i=gFA`mE>n~rytozj!HBJk-@duB8PL@ zUHm-K-~ZVoiIL8BF3tX_wJ~9fCE=06j2G9uac8pgDBeFPmGZlmJ@QsBxyy?R3pU?3 z-@%P|7wF7L(E;_lvnHfFID{s9#VNv!;=o zZDuJTo6DM?=u$D>-251A$tPmK18C_hELCsbTjmk)ker39Yox1_&MyC3XIq>^NGIo_@n8ZVq z?0f@nK8T;>i+sbIXAD>!>2YAnslbu)L5cR+@;#zY_rpRjm zXINnXW}{_+JyUMetX!pM+@_Gq-P>dqZj)=uV%F$?&y{lP^bfCF*$u3-+?*?{mUx4W zgcOmOmth`jRgE%cEa=+KOn=iZlEVM0C;Eq@xnj-zGcXLB50m}O8PEhk9)L{6%o#G3 z)H4OgO}CfeOTZh%??w7?hv6NlMFzjY)7z2AYnD0K`;U@F^T(D+#q}nERqYRF85k`a zr-|lxfe8d&69Fuq3Kn39eyqEjgtB}K3-aJVupHaQE@6t2X22JvhyGwq!`panNevvxP2d9ltZ%xoeD8nx;BxipR9Bxk< z9ZjZ5M-G#)@vgqQpy9*v)#sveM`O2t%{x$%V|WT!`lrgwyh3-kZo z`55y};PK=5W8e#*dK#QV5cGa*iy{UxN7Mjp+K7iM5Q!iGa^WKw=6wg}m@U&W>mC!~ zVV_&u-)Ys_kM|7dn-Sjc%s;0Nc~<|#(lk}H*PMnx@^9DTXE}}ZrRzgnW5d*T+=A0% zHZ~6#usZePf>k(T?5a2Odj*%1zrFs-3;put#T$k+`7f9c3ueqGz$0=-SPk$|)eFvp zt1lK96c`Z1uraQ2K?(}6n;$lSnj90%RKEVx3M2m)a`DKUrryoAeTO z#YKVU%#;8x^Hz)6NJLQ*s3UL|bIlLUIhXDi6@&d)k5FICSDBxKw^QKF(0 z0md%a8I++5zP&sReS$JP!#LjAg<;&>R6(I0i#Ny5X62J{;`IPNMo;Ed;gIsghMHs1hGU6^De*xv}Z znrMQAkBgO4l^tLKrI`nH9?p;s(0A%Di{})@K3(Aw>)}aCn5m&5F{#c9nJaOZGAw3f zPTqJcSD$3?uiKc_^un;eu2n^s;AgO6!kWP1X}Mc(B_!tM4IR3C1h1sF4EScg=EJya z)JjzFl!=Q7F^UQ$?+3>M*tr!Mz`s+l9{=Dfb8||K2?_P-rF3BME{#L1*P)?{Uz_{& z*pX90?OnNR3AeTmnl@Uqx-x6|{PjgeQL2l>)2c34-RYf^(J$r0AJ-J_+-u=$bnVyZ2SPW6QCtI;$kw zx@Rr0ryJmW7@D_p!+0l)T?{4;8yg%;RU`@!2waPq%&=hT0d0#G3>C>X8yVw6Q6wdU zbERj;an6(Lw^$72VIO?B!Qd|%#11wadB}>fy5_4&-qkKziObZ#H62YDX0w%_+MdBW z#7}V-&Eim-soZ}Cpci1g(p=A#arZ!n4FC)SjMf7MJL#&4_GEPdqRDQv*g1UySr%DW zU%1H#hWgLge)s?lm)6VQZeZF9`*N^WKf=v%*b@n3 zjKJ6#a~=2#mVnNv1Wz&2y7LOai9*B)&@qs)6R0Z~$Er@g?~~;?lWUt162G~U^1qZ$YJr8ljEe3pq0zRBTPohv5W5sO&jQ}VO49wV8EQtq# z*=(GW8&;T`=j;VOi~e|*O3FEql+lN3fk{!C_M6V@B~@q0%`=VIvnS)=-qJI0Z>leYK!e*`LEzHg zA>pQP0FZ{MjP}-T+zikJVIwJ&^5Xy`T!&rTKt}I*2O?J6c{?}*02@7=R0H+oEu6xW zx;=oKaNEfXULzvX!^40*hEWcYkU3`}*ji(2*o)uw8#}T5!RxmYaO~ZXOeQ-jT^ZmO z9xKu>Ha8*_Uk*A0SYR?7tO*d@fjNPo0IfyzuYl@69V~G{MsNi1cKj1r&ZhfT>p zn8xjRS(p2O++Ow$`Rb?})Bkzwc6xF1r<=Ij*wvx7^iu6b|uC zT94&dSFp)d&x?Ch4icI0f#4lSI0D>V7OxFG*b+e_s@6;_^*&I+6$5gCE}D`H$2&1x zncs~!KTlS>M4evs-mS^rv&fO+e_#B*!YhBE?})v$x$@l$w! zWL$6Nfqhm?Z#%7jRF;eTiX-DPlJ4meay4;Vo|AZM!d-*BWnKm+r!j}0uBfi9shr~c z74^Ym^M3PPE|i|5|ba&NtXx9j$(Q@O`$k{FCaL!rJ!cKlbAa4nOn; z^wRs1eSEgf&j{yF2A~2brJlwdybB*PeZ;scn{V4(jSuU-?Mw1VbsI+`=w9Y9-T~~E z-Y}uSNB{?NS8618?J#m;n09kC zob1=NpC~eQ{GA_Pv&e^XE(c_oT$I4=qyeyNP{OFpqO=_c)C6uzo0`_jBB>zJGS}M5 z3H)-Paqv$&D(22!VoY_%+1!Xeu|w<}6pu(2Y+$?}5gvq__8$35zp@oNUERiERY!D9 zO1tE&;5d6zl$ zJ=2aOc((ElS$H5*qQOGb!vp#P92Kc<&l-wt%)?%0lP7#?=kf%^UU%e4A>Ji@ygd2l zxam@7;)Fp$GwdPA2N%)q13xp|)N<-Y1^o|qQFQ4%C|&AKU13qaRBs=K_jSH`VN@zh zs>VcuG7o+-8CB*t+<&#}J!7+}<6JyLXT|e>o7x_{2Dk)|HTGv>;xgXxrt>~ zvTsT8d08`9X|TT~=J$D5$quTMf;)$Ip`-_r1c(oO7+R_jgA-khKrqR4y5smw3C<)3 zTpjH4W0OX5ILkeC#opNypZ{sFR_{QrAj?yMqqXQWpoCJH2ZoBqg(+iL zhUa+V#!Dm|$1uzfAk&0nSXjAnZSkm)DzZ~GG9tZ~VCTqTDRXn+p3=>m>z+zT=-tpT zcW!m{C462pFklZ3$qfq&DVy?L-_nWpIg52<0ma8?z@M+=BE_F0h6QWEcia5mtIYS! zO^L$$&DU73sA6GGIzC_g-_%4Hp9?l`ti+Y_Tanq?`0XXKz|_oqXxh(2U=QpB4EJq@ zGkt{fO%vr@J$qva$onsp&5;iuP)8z_@6=A)NO7Uiig62zWdf#}3pkUkrW!>+tFaav zBgM_Ie0#NTenPNO8OHNIJhjv~-o@X&#aOE?W9w=YLqnBu`MCil*{RjofBy7o`1L3B zi%9LMX=URNy_9OT)h2zsnkGXah9sNL3xyH`=uJQ;qL&VICr_4Hz+NULBpgCz6HE`; z*Kd_c4ENsGbA9#A+g02Y4PHcXg5-Re@D*e9F%*X5|34JWBYk)mfXe8h6w}rug~qf=EZmk zGZ`DT0h8y3g4cT(xSg<>p=$siRxIoXeYymC0rUO~%%}aC#JogD@`BsYAr9n{RHIRK32GeO zD=Q5OSE#R#?vxPw(A(6^offYAeqAnAS;m}zET>7mV_jU!j4<3@RQAgg>WZc;smAL1lO>uT9Q(~X%pI}&y^j45(3AP21feJo$XZ`kSS+j%~Ht$&|s)lY-2DM z*$a`x*chvoZrx`#umvez*cc}T6~~ETM|-c!Rrv(h6xwt1YW?MvPxdBfwTqGl2H6&M z;QgI_EQ^=M6-5+b8E(RZNaX3ym^q`yO6`YM=pB3uw=s^xs}n=;NA3as;zC|qo7;Ek z{sJXkvNEO+yJ3$JdvP*WrjnY#-T$U%)O^o$iZ?=>)E#n&Y$vUERBtgNK$#^lZ!r)- zJt>v|GGhRCYVkUN%f}A%qc~UOihtCU8D|%8tYp7S$f$8wRVASnQ9&;iB^bOie*0mR zDt!Czy91?jGYlvG_In*Us(%Uly~7oZi_LO(aEz2UaCVahg%gdlt6r#FG4lDW+`b2n z#4;tXOjX7_L!uXrCmYDCpZsgrHn!wh4&|7 z|3v)D>DcL6uV@oZ`2wdm9ZO)2rr*!;bP?Dklj-kgvpd)Z$!y5N0zZz6(G&Dkdr(lc zM$d0?{OLw=pwiK^Wt4Sn6CJx79;l<$e1hb$JHU?zqg`Mm zT^GAULlzX{iOS}Wg$LjsPk3-Nos>|P592SJ17Uow=r4t_3JBRK0E%Y|nvd&Cu!m!! z=?CFb?fs}?eA3RJn*v5YHYbszyg$gN9C}7+a9eBaBKAOI;lN6HiAR@l3uYs4&yi&w znQ!cx)M*St8`^Msk)Xgu&bx7D=P``bdj(Rhdbv94o;)Ttu+xY{-pGmJhK&xIo4QF| z#WR-G01py<1`xBLJ_B&wxAz)!spTmkfbpp3pmR;{TN>kN?>^{4-NQxJP{{uP7uYX+ zci=MpAVz1p4Vfi~!vg)B75xO4SBo@h4f=EkU{g`&k)dwFk0*5uAaPc@tP|G}4;h%<$25+KGgzI< z;EL0>eaCcbIa$dQYBouIXAd1XgV`*;_L(y@dU$Mi*K;-P1ph>#k80{X$-)KVYhUH$ z`FtPXp|F#YHwpfV!LEaJYCz^MpgCAP7!9U785<{!q$UX|A zoaym7NZcSRQ~EQou+*3Gcvvoqyr?^{SlAHY<+6yEDiJT#3H5lq&{PXv(G6&h*%;8{ z0pc&W@*d87U4*GlgeeN8bqlILI<4J+l{9p5SRW5N_et016!aAQHRvIWsErApbB(B1 zXh2iI`6`^M#zqY}s3+(27_v^rj?1!h#xJR>ng91STk5)Iz^8u>ikyDDm8L742EL-J31rFd&p z-}gW54N8G5#asRQi4$?&Zi;zt4sldUFP_xYM!)m+M_83^y6aC4s$6$9_RD#$anOV) zXMA^wzi<7tBmZ%Z?S39ccVXL96<=TOPwuwJvLWRY{l$3e#hf1a4f zz*8+r%!~=AhpHtQig(eYV~v1bv&rnve@De}OAvLRNawa6T4|Xf``~^C(f0}1wq)X1 z#bwJcZ6s+6yXKuC-=7vk1BfLD&0)-4h_~{PMI30GK_o2d&ITV}2Qgrqx49{KLgu`z zw#;7UH*08AVXXB=cv9L4Hhy%XFXiToo)Rg>&$DVSp9I_-2pnpgikLj9#-`8e8Li56 zUb3V9x3$HhzS#&m;}Y=khr{3i>bMfapKL%cNEf2M7V6yRY+kK^Af0H98)G1w=wMKJ zp|foL$D`8MkbjVSZ^$i9{=GQuKaraLuPm!0zbwA37~&hk=2mg_GhfUI)K)k2(#Gl25-PWkvR}wm*gor9sjAV-WMvKG^#ov!Yn3N9{FaM!0Jc|; zVeVX|?ZG0N*LSYj_GC%S%8u$SqWUeRojP%CeWC8D=c{Y0*tS!1d$Pp(E(Bcpy9eeDv&?ObbEP?eOt6mi;E*fz zaoS-d(Vsgk^*MVeG@&1M$Kf~Jx$J%9=0`Jk;Ka=V@%ymo|AZUVaGGxe{8Iw7#z%zze-*BzjktEa{61~?QTkF9Xk z0bFrVq1Zjh6m3}m^Qfi!czDAt2mcAG?J%1xwj#V4ZtPZa6~5MT7A2vUj2JQ5QnnEJWc$z}l=L>L}n7r?f#K^%PJY?TYz|BuR|F`ap$h2M-7j z@f~Zm4b4CT7c;HFvBpb+bu@%%bwPu9;Sc!;k2s&0A8d6v**j2 za^3v*qF2_B+FA;EQeys(6z^*9{b;Zi=`h=(g0kaj;Z82p^Q_E^PsmZ_iy2gq5G1Ac zL^)K6Z-@LprKrt;KHiciMpNA^E~gkQ#y!9t8|?`RFzyoI-jLq`DxXfGWAkmvVyy*L z%?AuwnNMK!^rG5w<)kt7vEe$g3~PG%w(r<=wp6h;RaK@9^PjE$cwk+9!gBY~BlvYs ztQhlpA}z*>Tz*`{wIyu*YmaIly^ZksP#oDXUrAkEAMpT)V@enu{u zNmfBB)kpgFliICmYd?u`N7*iMUV2(v=k2IL0nK&51pY=D`qsFr)U^4w)bK*z+z&Ul zzo~5AcV2nf1I0{n&kRioAf2<~XsdW{C2+sCckjsFTI{(FFfiJ7XHGQho*0@lqXQV{ z#bf8Iv>iK}eJ3nNHXQG_!qX)*9q!K#v)!L^(Dp<@-DE+v+&m9Jd+ypmZ&C673|tm#Gkg15EY56-Mu zs{?1j5j?Q%s&&NEV5uW)t+t^RJNOrRB08(v;g4BPg>Bx6oy|+Rbf=X-L_8Rs&ik3= zaMTiEEcS#$;IP zy=V~`EzM(+TdR4*4EXkGWpXG0^Y;~t%qoiu*UM>L6Br>YH>Jr``;@B>hfRv8B|O&16Z1T>RDq6}V#{ca_$Z0&UZpQd&*YqpDIC zWI?wpORv%c(UbC0cA3?;V1aSopM#Ogmu|yoS|uK@9zl7q#jns7myoy7GhA9!>uy6z zCRvW_d3{fSP^j=(WCW! z1z@EBUNyM$A+^MJaM7wSJtqsPBJ%dZD6vjIk0iUhuHQ;9hQr*Ij-4DH9z1^Z^YvIU z8#+BCht6=l_U`7t73|!;A?d$g^xG!#8nLDp&Y(T5G>5#@ma1A&1MZ};Gw4R<+iJD%XKY&kQQR=q~6%Hyeq=$005iOHR;g&SaMYQt>i7R z&0GN@7F-(CJg4eCT#))jjj||miDt=i>D+E*^F0l7S80k&=akY1%S5A$L_yB1w6>n) z)sy#El1=M~Hi`_INo6ST3fk8L>|lFZ!wXy=CIwCfwf3o&q(qCS!jc>Vc5ugjA5ERw z!JTvgX>66@q9x4GT0!vHmV>{EnrC7zjwNTX%Sy$Lx(Lmte0%{TnbSp3qg#cIII?{> z1N3^+uVTFdcvNYd46rh^VnrYXG20X{wb$?&Huu<(w0}(QdlJXS0@E~kwi*Q0kQ%l)`MbRg((*68@7A`E9e&qz{szoj9Hu#Ff zkpJ2SDYd!<#~xYtEJotUf(|RzCBfO0fkzEICbXvmm8g&g{|6_teNDLOhpvugyJ~S^ zb=QXy_&KdV2c9N+%vvE~6ny&|k~tzbYd?FQjhAsWCM~_&5|hs8X;hk)Em+P>oA`B4 zL)GjkC-31KO5GKIE_&_646F!)2zP5Z8|V;nUNQ7xr2E~`Hg9Kka~B?MjzMD<(Bq2t zmN)^9X@;gkJX^qjXsreaM_9F(KVVG{7bGl{k%&EOpc~ey1mhlgSx6f3a#_1BXwUP{ z-$-)!5VE8zdQWI>+_iFEK;$6#HIm2YlPht@BVBm!jY(-sUrv=IFMQJ5Z|N_P7F{vu z<%U;($inM~j)#=)hzOy%wgA>-tBr$HciXNT!M{(_Z-H$>POwhPdbW}PxzeO3ML4!E z+3_~^89S(6jI0PuBRbZjCUP&vOl3k#=&ya+A z)Bali*r+IL;S%kMM80}>;4l;{m*uZ zVOAZtF6(i5@Z$G;Dz}pQXK5C^oR3sLxWehn$X{vx4yIj`#X2sC3wZ{!T^DYNwPm!( zORSo+^m1um?pWu>{!uj-xo)Zb@<@#AM}FH?*RXd5ls#r~Ba>qD?Ht@*U<$h`?vmNc zz*7GCZDPTkaO2a~DbxTmXna5s+ zK6V1ee+)U~l{#>fmC)!e;+HM;i?5998q~bOZ{!+4@dJM<_Gd2&g@AiET6YZicZA*` zaMxD*sgu`l6g*&m4{9htRw*BMvoY{TD#$*-k z{p-moX=)y_)o8mdr72${HU{j>P-@QFvT|0`Da=1J>GG)|Ljtdyapw(t?veJ$+-ZK2H0 z!hcL|lp&$iGg;=2$w$Q>j<bDDntGA z$9cu&Fy!QbY-?La%nVZ)g8HWA3 z20$E74{4`Hjc$3Z;^vIn=JT_oV!4{YeaLP2zwqTKi_(%aW~lx@U-?ja{(`e zwcnXR5lD@2u|%*<&$B?*pzF~0OmRrMTh^iXS>}7HMpcLYXXGF$+1^suZb1tM71SsaB#*|v$-&p(T(NL;k;IaTQdGd+TecR%n#`K&S%Ye- zCsfQx%&(bJQB_l|9$GVXQn@;>W=2)%RO@HrN0v{Z`F9PpFP;T$#p&||Q~_;_6Cok5 z23i|eKxLY~@gT?e%~k>410FgpAAyd`Z$i)JTsScUp>z5W0CXsHQtuDg8VR{1|AdN;;UL=zVfkLr zi`@;H`{qGSV-8d`WdJJ1KsWXQP@$OwaybaHV3e>gsnAtj1zvYg*i$*6AqAyDhRkF@ z3hj1270{Fpd#6Fup+`II1WoOg*<$zeInXyc5V{XO34PRQ7xekC-wtBm^aVgE3!z83 zfPRFY(L13R^=s%HItv}E%V59Xg)Y%&pojH&*oY6&N9a}bH2MsEf-XTn>Iu-ldOvir z{s;OyYJxu0YtcpYF}i^M20g7Sp{INeY}LP@ulNt>1L%Og96FmX6Z>3$3;m`40^P9p zKsW58&}ID%%t1fvlh70VCi)(FsQ(A8 { // return 'OMG'; // }; -import pokedex from './data/pokemon.js/pokemon.json'; +import pokedex from './data/pokemon/pokemon.js'; +console.log(pokedex) export default pokedex; diff --git a/src/index.html b/src/index.html index 1a377a2c..da1a1a1b 100644 --- a/src/index.html +++ b/src/index.html @@ -21,11 +21,12 @@

Everything you need to know to become the best Pokemon Master!

-
- -
+
+ +
+ \ No newline at end of file diff --git a/src/main.js b/src/main.js index 32ba7f28..32785740 100644 --- a/src/main.js +++ b/src/main.js @@ -1,16 +1,20 @@ -// import { example } from './data.js'; -// // import data from './data/lol/lol.js'; -// import data from './data/pokemon/pokemon.js'; -// // import data from './data/rickandmorty/rickandmorty.js'; +import pokedex from "./data.js" +console.log(pokedex.pokemon[0].type[0], pokedex.pokemon[0].type[1]) +// console.log(pokedex.pokemon[6].name, pokedex.pokemon[6].tyoe[0]) -// console.log(example, data); +function pokemonHtml(data) { + let html = '' + data.forEach(unoporuno => { + html = html + ` +
+ +

"${unoporuno.name}

+
+ ` + }) -import pokedex from './data/pokemon.js/pokemon.json'; + return html; +} -const pokemonGrid = document.querySelector('.pokemon-grid'); - -pokedex.forEach(pokemon => { - const pokemonCard = document.createElement('div'); - // ... (genera la tarjeta de Pokémon como antes) - pokemonGrid.appendChild(pokemonCard); -}); \ No newline at end of file +const root = document.getElementById('root') +root.innerHTML = pokemonHtml(pokedex.pokemon) diff --git a/src/style.css b/src/style.css index e69de29b..38ea6633 100644 --- a/src/style.css +++ b/src/style.css @@ -0,0 +1,31 @@ +@font-face { + font-family: 'Pokemon Hollow'; + src: url('Fuente-pokemon/Pokemon\ Hollow.ttf') format('truetype'); +} + + + +header{ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + +} + +h1{ + font-family: 'Pokemon Hollow'; + font-weight: bold; + color: #1E90FF; + margin: 0; + +} + +h2 { + font-family: 'Pokemon Hollow'; + font-weight: bold; + color: #FFD700; + margin: 0; + text-align: center; +} + From 53df67a495420cee4c48e72f0a73e31d75ecbc02 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Thu, 10 Aug 2023 11:32:08 -0500 Subject: [PATCH 06/36] cambio de fuente --- src/data.js | 10 +--------- src/main.js | 4 ++-- src/style.css | 8 ++++---- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/data.js b/src/data.js index 5b8744ec..ed658f4e 100644 --- a/src/data.js +++ b/src/data.js @@ -1,12 +1,4 @@ -// estas funciones son de ejemplo - -// export const example = () => { -// return 'example'; -// }; - -// export const anotherExample = () => { -// return 'OMG'; -// }; +//filtrar, ordenar, calcular// import pokedex from './data/pokemon/pokemon.js'; console.log(pokedex) diff --git a/src/main.js b/src/main.js index 32785740..bae93926 100644 --- a/src/main.js +++ b/src/main.js @@ -1,5 +1,5 @@ import pokedex from "./data.js" -console.log(pokedex.pokemon[0].type[0], pokedex.pokemon[0].type[1]) +//console.log(pokedex.pokemon[0].type[0], pokedex.pokemon[0].type[1]) // console.log(pokedex.pokemon[6].name, pokedex.pokemon[6].tyoe[0]) function pokemonHtml(data) { @@ -7,7 +7,7 @@ function pokemonHtml(data) { data.forEach(unoporuno => { html = html + `
- + ${unoporuno.name} >

"${unoporuno.name}

` diff --git a/src/style.css b/src/style.css index 38ea6633..500be16a 100644 --- a/src/style.css +++ b/src/style.css @@ -1,6 +1,6 @@ @font-face { - font-family: 'Pokemon Hollow'; - src: url('Fuente-pokemon/Pokemon\ Hollow.ttf') format('truetype'); + font-family: 'Pokemon Solid'; + src: url('Fuente-pokemon/Pokemon\Solid.ttf') format('truetype'); } @@ -14,7 +14,7 @@ header{ } h1{ - font-family: 'Pokemon Hollow'; + font-family: 'Pokemon Solid'; font-weight: bold; color: #1E90FF; margin: 0; @@ -22,7 +22,7 @@ h1{ } h2 { - font-family: 'Pokemon Hollow'; + font-family: 'Pokemon Solid'; font-weight: bold; color: #FFD700; margin: 0; From 840524e88ab6d98126f5795f93dbf67757bb3bea Mon Sep 17 00:00:00 2001 From: Malui Gomez Date: Thu, 10 Aug 2023 11:48:29 -0600 Subject: [PATCH 07/36] cambios pokemon grid --- src/index.html | 4 ++-- src/main.js | 26 ++++++++++++----------- src/style.css | 56 ++++++++++++++++++++++++++++++++------------------ 3 files changed, 52 insertions(+), 34 deletions(-) diff --git a/src/index.html b/src/index.html index da1a1a1b..f1b36921 100644 --- a/src/index.html +++ b/src/index.html @@ -9,8 +9,8 @@
-

Pokemon Go

-

Everything you need to know to become the best Pokemon Master!

+ +

Everything you need to know to become the best Pokemon Master!

diff --git a/src/main.js b/src/main.js index bae93926..a1869710 100644 --- a/src/main.js +++ b/src/main.js @@ -1,20 +1,22 @@ -import pokedex from "./data.js" +import pokedex from "./data.js"; //console.log(pokedex.pokemon[0].type[0], pokedex.pokemon[0].type[1]) // console.log(pokedex.pokemon[6].name, pokedex.pokemon[6].tyoe[0]) function pokemonHtml(data) { - let html = '' - data.forEach(unoporuno => { - html = html + ` -
- ${unoporuno.name} > -

"${unoporuno.name}

+ let html = ""; + data.forEach((unoporuno) => { + html = + html + + ` +
+ ${unoporuno.name} +

${unoporuno.name}

- ` - }) + `; + }); - return html; + return html; } -const root = document.getElementById('root') -root.innerHTML = pokemonHtml(pokedex.pokemon) +const root = document.getElementById("root"); +root.innerHTML = pokemonHtml(pokedex.pokemon); diff --git a/src/style.css b/src/style.css index 500be16a..9d86390b 100644 --- a/src/style.css +++ b/src/style.css @@ -1,31 +1,47 @@ @font-face { - font-family: 'Pokemon Solid'; - src: url('Fuente-pokemon/Pokemon\Solid.ttf') format('truetype'); + font-family: "Pokemon Solid"; + src: url("Fuente-pokemon/Pokemon\Solid.ttf") format("truetype"); } +header { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +#logo { + height: 200px; + padding: 20px; +} -header{ - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - +h1 { + font-family: "Pokemon Solid"; + font-weight: bold; + color: #1e90ff; + margin: 0; + font-size: 20px; + text-align: center; } -h1{ - font-family: 'Pokemon Solid'; - font-weight: bold; - color: #1E90FF; - margin: 0; - +nav { + display: block; + flex-direction: column; } -h2 { - font-family: 'Pokemon Solid'; - font-weight: bold; - color: #FFD700; - margin: 0; - text-align: center; +.pokemon-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); } +#pokemonGrid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); +} + +#root { + flex: 3; + display: grid; + grid-template-columns: repeat(4, 1fr); /* Cuatro columnas */ + justify-content: space-evenly; +} From 11bb49f313a2b31bdf3d54bcb0ea879420a3cde5 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Thu, 10 Aug 2023 15:05:55 -0500 Subject: [PATCH 08/36] se ubico los contenedores en flex, se alinean las cards --- src/index.html | 19 ++++++++++-------- src/main.js | 12 ++++++------ src/style.css | 53 +++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 67 insertions(+), 17 deletions(-) diff --git a/src/index.html b/src/index.html index f1b36921..5f6894e9 100644 --- a/src/index.html +++ b/src/index.html @@ -8,23 +8,26 @@ -
+ +
+ -
+
-
-
+
+
+
diff --git a/src/main.js b/src/main.js index a1869710..28cadb82 100644 --- a/src/main.js +++ b/src/main.js @@ -4,13 +4,13 @@ import pokedex from "./data.js"; function pokemonHtml(data) { let html = ""; - data.forEach((unoporuno) => { + data.forEach((pokemon) => { html = html + ` -
- ${unoporuno.name} -

${unoporuno.name}

+
+ ${pokemon.name} +

${pokemon.name}

`; }); @@ -18,5 +18,5 @@ function pokemonHtml(data) { return html; } -const root = document.getElementById("root"); -root.innerHTML = pokemonHtml(pokedex.pokemon); +const section = document.getElementById("pokemon-grid"); +section.innerHTML = pokemonHtml(pokedex.pokemon); diff --git a/src/style.css b/src/style.css index 9d86390b..f7895fde 100644 --- a/src/style.css +++ b/src/style.css @@ -24,7 +24,7 @@ h1 { text-align: center; } -nav { +/* nav { display: block; flex-direction: column; } @@ -39,9 +39,56 @@ nav { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); } -#root { +.pokemon-grid { flex: 3; display: grid; grid-template-columns: repeat(4, 1fr); /* Cuatro columnas */ - justify-content: space-evenly; + + +.container { + display: flex; +} + + +lu { + display: flex; + flex-direction: column; +} + +.search { + display: flex; + flex-direction: column; + align-items: center; +} + +.search button { + width: 70px; + } + +#menu { + width: 40%; +} +#pokemon-grid { + + display: flex; + flex-wrap: wrap; + +} + +.pokemon-card { + display: flex; + align-items: center; + flex-direction: column; + align-items: center; + border: 1px solid #1e90ff ; + width: 100px;; + text-align: center; + text-transform: capitalize; + +} + +.pokemon-card img { + width: 100px; +} + From 01d212de027028d9eb35801deec85d25f8ba3477 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Mon, 14 Aug 2023 10:08:09 -0500 Subject: [PATCH 09/36] Funcion del filtrado, error --- src/data.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data.js b/src/data.js index ed658f4e..da68bf6c 100644 --- a/src/data.js +++ b/src/data.js @@ -5,6 +5,7 @@ console.log(pokedex) export default pokedex; +// const firePokemon = pokedex.filter(pokemon => pokemon.type === 'fire'); From 8d92fea1c9339faa506ec11b820f61298a980ce9 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Mon, 14 Aug 2023 14:22:53 -0500 Subject: [PATCH 10/36] funcion de filtrado por tipos de pokemon en data.js, llamado del Dom en main.js, solucion del problema de la vista de pokemon, ya se ven al iniciar --- src/data.js | 17 +++++++++++++++-- src/index.html | 52 +++++++++++++++++++++++++++++++++++--------------- src/main.js | 20 +++++++++++++------ src/style.css | 28 +++++++++++++++++---------- 4 files changed, 84 insertions(+), 33 deletions(-) diff --git a/src/data.js b/src/data.js index da68bf6c..1282cc14 100644 --- a/src/data.js +++ b/src/data.js @@ -1,8 +1,21 @@ //filtrar, ordenar, calcular// + import pokedex from './data/pokemon/pokemon.js'; -console.log(pokedex) -export default pokedex; +const pokeData = { + filterByType: function (type) { + if (type === "") { + return pokedex.pokemon; + } else { + return pokedex.pokemon.filter(pokemon => pokemon.type.includes(type)) + } + } +}; + + + + +export default pokeData; // const firePokemon = pokedex.filter(pokemon => pokemon.type === 'fire'); diff --git a/src/index.html b/src/index.html index 5f6894e9..d461c880 100644 --- a/src/index.html +++ b/src/index.html @@ -13,21 +13,43 @@

Everything you need to know to become the best Pokemon Master!

--> -
- - -
- -
-
-
+
+ + +
+ +
+
+ +
diff --git a/src/main.js b/src/main.js index 28cadb82..488accf5 100644 --- a/src/main.js +++ b/src/main.js @@ -1,12 +1,9 @@ -import pokedex from "./data.js"; -//console.log(pokedex.pokemon[0].type[0], pokedex.pokemon[0].type[1]) -// console.log(pokedex.pokemon[6].name, pokedex.pokemon[6].tyoe[0]) +import pokeData from "./data.js"; function pokemonHtml(data) { let html = ""; data.forEach((pokemon) => { - html = - html + + html += `
${pokemon.name} @@ -19,4 +16,15 @@ function pokemonHtml(data) { } const section = document.getElementById("pokemon-grid"); -section.innerHTML = pokemonHtml(pokedex.pokemon); + +// Mostrar todos los Pokémon inicialmente +section.innerHTML = pokemonHtml(pokeData.filterByType("")); + +const typeFilter = document.getElementById("typeFilter"); +const filterButton = document.getElementById("filterButton"); + +filterButton.addEventListener("click", () => { + const selectedType = typeFilter.value; + const filteredPokemon = pokeData.filterByType(selectedType); + section.innerHTML = pokemonHtml(filteredPokemon); +}); \ No newline at end of file diff --git a/src/style.css b/src/style.css index f7895fde..7fbadc69 100644 --- a/src/style.css +++ b/src/style.css @@ -47,6 +47,7 @@ h1 { .container { display: flex; + } @@ -56,33 +57,41 @@ lu { } .search { - display: flex; + display: flex; flex-direction: column; align-items: center; } .search button { width: 70px; - + } -#menu { + +.menu { width: 40%; + background-color:#1e90ff; } + + #pokemon-grid { - - display: flex; - flex-wrap: wrap; + + display: flex; + flex-wrap: wrap; + background-color: aqua; } + + .pokemon-card { display: flex; align-items: center; flex-direction: column; align-items: center; - border: 1px solid #1e90ff ; - width: 100px;; + border: 1px solid #1e90ff; + width: 100px; + ; text-align: center; text-transform: capitalize; @@ -90,5 +99,4 @@ lu { .pokemon-card img { width: 100px; -} - +} \ No newline at end of file From 484fd918ea2ed12399224bc71dd3906629bf52d0 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Tue, 15 Aug 2023 13:00:02 -0500 Subject: [PATCH 11/36] se agrego la funcionalidad del filtro, el input sugiere al usuario por lista los nombres de los pokemon, a medida en que van escribiendo, funcionalidad del boton search para que aparezca el pokemon sugerido, al css se le agrego un color rosa pastel al fondo, y a las cards se le puso un bording separado para que no fuera una lista --- src/data.js | 26 ++++++------- src/index.html | 1 + src/main.js | 44 ++++++++++++++++++--- src/style.css | 101 +++++++++++++++++++++++++++++++++++++------------ 4 files changed, 130 insertions(+), 42 deletions(-) diff --git a/src/data.js b/src/data.js index 1282cc14..e115aa7f 100644 --- a/src/data.js +++ b/src/data.js @@ -4,23 +4,23 @@ import pokedex from './data/pokemon/pokemon.js'; const pokeData = { filterByType: function (type) { - if (type === "") { - return pokedex.pokemon; - } else { - return pokedex.pokemon.filter(pokemon => pokemon.type.includes(type)) - } + if (type === "") { + return pokedex.pokemon; + } else { + return pokedex.pokemon.filter(pokemon => pokemon.type.includes(type)) + } + }, + + getPokemonNames: function () { + return pokedex.pokemon.map(pokemon => pokemon.name); + }, + + filterByPokemonName: function (name) { + return pokedex.pokemon.filter(pokemon => pokemon.name.toLowerCase() === name); } }; - - - export default pokeData; -// const firePokemon = pokedex.filter(pokemon => pokemon.type === 'fire'); - - - - diff --git a/src/index.html b/src/index.html index d461c880..7d54591c 100644 --- a/src/index.html +++ b/src/index.html @@ -18,6 +18,7 @@

Everything you need to know to become the best Pokemon Master!

+
diff --git a/src/main.js b/src/main.js index b1fecc7a..d1b37d0c 100644 --- a/src/main.js +++ b/src/main.js @@ -25,10 +25,17 @@ const suggestionsList = document.querySelector(".suggestions"); const searchButton = document.querySelector(".search button"); const typeFilter = document.getElementById("typeFilter"); const filterButton = document.getElementById("filterButton"); +const clearFilterButton = document.getElementById('clear-filter-button'); // Obtener la lista de nombres de Pokémon de tu base de datos const pokemonNames = pokeData.getPokemonNames(); +// Función para mostrar todos los Pokémon +function showAllPokemon() { + const allPokemon = pokeData.filterByType(""); + section.innerHTML = pokemonHtml(allPokemon); +} + // Manejar el evento de autocompletado cuando el usuario escribe inputField.addEventListener("input", () => { const inputText = inputField.value.toLowerCase(); @@ -60,5 +67,17 @@ filterButton.addEventListener("click", () => { section.innerHTML = pokemonHtml(filteredPokemon); }); +// Agrega un manejador de eventos al botón "Limpiar Filtro" +clearFilterButton.addEventListener('click', () => { + // Limpia el contenido actual del contenedor + section.innerHTML = ''; + + // Vuelve a mostrar todos los Pokémon + showAllPokemon(); +}); + +// Mostrar todos los Pokémon inicialmente +document.addEventListener("DOMContentLoaded", showAllPokemon); + // Mostrar todos los Pokémon inicialmente -section.innerHTML = pokemonHtml(pokeData.filterByType("")); \ No newline at end of file +// section.innerHTML = pokemonHtml(pokeData.filterByType("")); \ No newline at end of file diff --git a/test/data.spec.js b/test/data.spec.js index 81f2c6c4..acbcbb69 100644 --- a/test/data.spec.js +++ b/test/data.spec.js @@ -5,8 +5,7 @@ describe('filterByType', () => { const testFilter = [ { name: 'bulbasaur', type: ['grass', 'poison'] }, { name: 'charmander', type: ['fire'] }, - { name: 'squirtle', type: ['water'] }, - }, + { name: 'squirtle', type: ['water'] }, ]; const filteredPokemons = pokeData.filterByType('fire', testFilter); @@ -38,4 +37,4 @@ describe('filterByPokemonName', () => { const filteredPokemons = pokeData.filterByPokemonName('charmander', testFilter); expect(filteredPokemons).toEqual([{ name: 'charmander', type: ['fire'] }]); }); -}); +}); \ No newline at end of file From 5eeb1adaa5f9e1184c4ac2d399a15cc46ec55134 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Thu, 17 Aug 2023 20:14:46 -0500 Subject: [PATCH 15/36] estilos de encabezados, fondo de body, container cambio de ubicacion de column, posicion de nav --- src/data.js | 10 +++- src/index.html | 17 ++++-- src/style.css | 149 +++++++++++++++++++++++++------------------------ 3 files changed, 97 insertions(+), 79 deletions(-) diff --git a/src/data.js b/src/data.js index 39217d5f..5e49fe7d 100644 --- a/src/data.js +++ b/src/data.js @@ -1,25 +1,33 @@ //filtrar, ordenar, calcular// - +// Importar el módulo pokedex que contiene los datos de los Pokémon import pokedex from './data/pokemon/pokemon.js'; +// Objeto que contiene funciones para filtrar, ordenar y calcular información sobre los Pokémon const pokeData = { + // Función para filtrar Pokémon por tipo filterByType: function (type) { if (type === "") { return pokedex.pokemon; + // Si el tipo es vacío, devolver todos los Pokémon } else { + // Filtrar los Pokémon por el tipo especificado return pokedex.pokemon.filter(pokemon => pokemon.type.includes(type)) } }, + // Función para obtener los nombres de todos los Pokémon getPokemonNames: function () { + // Mapear los datos de los Pokémon y obtener sus nombres return pokedex.pokemon.map(pokemon => pokemon.name); }, + // Función para filtrar Pokémon por nombre filterByPokemonName: function (name) { return pokedex.pokemon.filter(pokemon => pokemon.name.toLowerCase() === name); } }; +// Exportar el objeto pokeData para su uso en otros archivos export default pokeData; diff --git a/src/index.html b/src/index.html index 9f75497a..a3903b2f 100644 --- a/src/index.html +++ b/src/index.html @@ -8,11 +8,11 @@ - + +
diff --git a/src/style.css b/src/style.css index 92918cef..4e3e7abd 100644 --- a/src/style.css +++ b/src/style.css @@ -1,109 +1,119 @@ +/* Definición de la fuente personalizada "Pokemon Solid" */ @font-face { font-family: "Pokemon Solid"; src: url("Fuente-pokemon/Pokemon\Solid.ttf") format("truetype"); } +/* Estilos para el encabezado */ header { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; + display: flex; /* Mostrar los elementos internos en línea */ + align-items: center; /* Centrar verticalmente los elementos */ + justify-content: space-evenly; /* Distribuir el espacio entre los elementos de manera uniforme */ + background-color: rgba(255, 255, 255, 0.5); /* Fondo semitransparente blanco */ + border-radius: 50px; /* Borde redondeado */ } +/* Estilos para el logo */ #logo { - height: 200px; - padding: 20px; + width: 100px; /* Ancho del logo */ + background-color: transparent; /* Fondo transparente */ } + +/* Estilos para los encabezados de nivel 1 */ h1 { - font-family: "Pokemon Solid"; - font-weight: bold; - color: #1e90ff; - margin: 0; - font-size: 20px; - text-align: center; + font-family: "Pokemon Solid"; /* Usar la fuente personalizada */ + font-weight: bold; /* Negrita */ + color: #1e90ff; /* Color azul */ + margin: 0; /* Margen cero para el encabezado */ + font-size: 20px; /* Tamaño de fuente */ + text-align: center; /* Centrar el texto */ } - +/* Estilos para el contenedor principal */ .container { - display: flex; - position: relative; - + flex-direction: column; /* Columnas flexibles */ + align-items: center; /* Centrar elementos horizontalmente */ + /* position: relative; */ } +/* Estilos generales para el cuerpo de la página */ +body { + background-image: url("https://i.gadgets360cdn.com/large/pokemon_go_steelix_gengar_loading_screens_1499239730143.jpg"); /* Imagen de fondo */ + background-size: 100vw 100vh; /* Tamaño de la imagen de fondo */ +} +/* Estilos para listas no ordenadas */ ul { - display: flex; - flex-direction: column; + display: flex; /* Mostrar los elementos en línea */ + flex-direction: column; /* Organizar en columna */ } +/* Estilos para el campo de búsqueda */ .search { - display: flex; - flex-direction: column; - align-items: center; + display: flex; /* Mostrar los elementos en línea */ + align-items: center; /* Centrar verticalmente los elementos */ } .search button { - width: 70px; - + width: 70px; /* Ancho del botón de búsqueda */ } +/* Estilos para botones específicos */ +#filterButton, #orderButton, #ascendingButton, #descendingButton { + margin-left: -65px; /* Mover los botones hacia la izquierda */ +} - +/* Estilos para el menú */ .menu { - width: 40%; - background-color: #1e90ff; - + display: flex; /* Mostrar los elementos en línea */ + justify-content: space-between; /* Distribuir el espacio entre los elementos */ + align-items: center; /* Centrar verticalmente los elementos */ + width: 100%; /* Ancho completo del menú */ + margin-bottom: 10px; /* Margen inferior */ } - +/* Estilos para el contenedor de los Pokémon */ #pokemon-grid { - - display: flex; - flex-wrap: wrap; - /* Agregar bordes redondeados */ - border-radius: 10px; - - /* Agregar una sombra */ - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - background-image: linear-gradient(to right, #f58f9a, #fcd7da, #f3e2e8, #f9ebf2); - margin-left: 10px; - + display: flex; /* Mostrar los elementos en línea */ + flex-wrap: wrap; /* Envolver los elementos en varias líneas */ + justify-content: center; /* Centrar horizontalmente los elementos */ + border-radius: 10px; /* Borde redondeado */ } +/* Estilos para campos de entrada */ input { - border-radius: 10px; + border-radius: 10px; /* Borde redondeado */ } - - +/* Estilos para las tarjetas de Pokémon */ .pokemon-card { - display: flex; - align-items: center; - flex-direction: column; - align-items: center; - border: 1px solid #1e90ff; - width: 100px; - ; - text-align: center; - text-transform: capitalize; - border: 1px solid black; - margin: 10px; - border-radius: 20px; - - -} - + display: flex; /* Mostrar los elementos en línea */ + align-items: center; /* Centrar verticalmente los elementos */ + flex-direction: column; /* Organizar en columna */ + align-items: center; /* Centrar horizontalmente los elementos */ + border: 1px solid #1e90ff; /* Borde sólido azul */ + width: 100px; /* Ancho de la tarjeta */ + text-align: center; /* Centrar el texto */ + text-transform: capitalize; /* Transformar el texto en mayúscula la primera letra */ + border: 1px solid black; /* Borde sólido negro */ + margin: 10px; /* Margen */ + border-radius: 20px; /* Borde redondeado */ + background-color: rgba(255, 255, 255, 0.5); /* Fondo semitransparente blanco */ +} + +/* Estilos para imágenes de Pokémon en las tarjetas */ .pokemon-card img { - width: 100px; + width: 100px; /* Ancho de la imagen */ } +/* Estilos generales para botones */ button { - border-radius: 10px; - border-color: #f87da8; - + border-radius: 10px; /* Borde redondeado */ + border-color: #f87da8; /* Color del borde */ } - + +/* Definición de la animación "rainbow" */ @keyframes rainbow { 0% { border-color: #f9ebf2; @@ -138,18 +148,9 @@ button { } } + +/* Aplicar animación "rainbow" a las tarjetas de Pokémon */ .pokemon-card { border: 3px solid; animation: rainbow 5s linear infinite; -} - -nav.menu { - /* Agregar bordes redondeados */ - border-radius: 10px; - - /* Agregar una sombra */ - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - - /* Agregar un fondo con un gradiente */ - background-image: linear-gradient(to right, #f9ebf2, #f3e2e8, #fcd7da, #f58f9a); } \ No newline at end of file From 993445767fab96e4baa290ab508403560e1aaedc Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Fri, 18 Aug 2023 12:44:11 -0500 Subject: [PATCH 16/36] se agrego una datalist para el input donde se sugieren los nombres de pokemon, pero hay un error con la lsita anterior --- src/data.js | 17 +++++++++++++++-- src/index.html | 3 ++- src/main.js | 19 ++++++++++++++++++- src/style.css | 6 ++++++ 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/data.js b/src/data.js index 5e49fe7d..20273a87 100644 --- a/src/data.js +++ b/src/data.js @@ -3,6 +3,9 @@ import pokedex from './data/pokemon/pokemon.js'; // Objeto que contiene funciones para filtrar, ordenar y calcular información sobre los Pokémon +// El código define un objeto llamado pokeData que contiene una función llamada filterByType +//para filtrar Pokémon por tipo. Si el tipo es vacío, la función devuelve todos los Pokémon. +//De lo contrario, filtra los Pokémon por el tipo especificado y devuelve los resultados. const pokeData = { // Función para filtrar Pokémon por tipo filterByType: function (type) { @@ -10,18 +13,28 @@ const pokeData = { return pokedex.pokemon; // Si el tipo es vacío, devolver todos los Pokémon } else { - // Filtrar los Pokémon por el tipo especificado + // Filtrar los Pokémon por el tipo especificado return pokedex.pokemon.filter(pokemon => pokemon.type.includes(type)) } }, // Función para obtener los nombres de todos los Pokémon + //*La función getPokemonNames mapea los datos de los Pokémon y devuelve un array + // con los nombres de todos los Pokémon. Utiliza el método map para recorrer cada + // objeto de la lista pokedex.pokemon y obtener el valor de la propiedad name. + // Luego, retorna un nuevo array con los nombres obtenidos.*// + getPokemonNames: function () { - // Mapear los datos de los Pokémon y obtener sus nombres + // Mapear los datos de los Pokémon y obtener sus nombres return pokedex.pokemon.map(pokemon => pokemon.name); }, // Función para filtrar Pokémon por nombre + //La función filterByPokemonName recibe un parámetro name y + //filtra los Pokémon en base a su nombre. Utiliza el método filter para iterar sobre la lista de Pokémon + //y devuelve aquellos cuyo nombre coincida exactamente con el valor del parámetro name, + //sin importar si las letras están en mayúsculas o minúsculas. + filterByPokemonName: function (name) { return pokedex.pokemon.filter(pokemon => pokemon.name.toLowerCase() === name); } diff --git a/src/index.html b/src/index.html index a3903b2f..c7543515 100644 --- a/src/index.html +++ b/src/index.html @@ -16,7 +16,8 @@

Everything you need to know to become the best Pokemon Master!

@@ -78,6 +78,7 @@

Attacks

Evolutions

+ From 08dce9637a2e31cf0db7341ea3fdd42aa173b248 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Wed, 23 Aug 2023 07:32:39 -0500 Subject: [PATCH 21/36] estructura del dialog, pero aun no tiene funcionalidad --- src/data.js | 8 ++++++++ src/main.js | 34 ++++++++++++++++++++++++++++++++++ src/style.css | 2 +- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/data.js b/src/data.js index 66502c7a..e40be470 100644 --- a/src/data.js +++ b/src/data.js @@ -29,6 +29,13 @@ const pokeData = { return pokedex.pokemon.map((pokemon) => pokemon.name); }, + // Función para obtener la información de un Pokémon por su nombre + getPokemonInfoByName: function (name) { + const lowerCaseName = name.toLowerCase(); + const pokemonInfo = pokedex.pokemon.find(pokemon => pokemon.name === lowerCaseName); + return pokemonInfo || null; // Si no se encuentra el Pokémon, devuelve null + }, + // Función para filtrar Pokémon por nombre //La función filterByPokemonName recibe un parámetro name y //filtra los Pokémon en base a su nombre. Utiliza el método filter para iterar sobre la lista de Pokémon @@ -42,5 +49,6 @@ const pokeData = { }, }; + // Exportar el objeto pokeData para su uso en otros archivos export default pokeData; diff --git a/src/main.js b/src/main.js index 5674f5dc..1c9d2d82 100644 --- a/src/main.js +++ b/src/main.js @@ -29,6 +29,7 @@ const typeFilter = document.getElementById("typeFilter"); const filterButton = document.getElementById("filterButton"); const clearFilterButton = document.getElementById("clear-filter-button"); // Obtener referencias a los elementos dentro del dialog +const pokemonCards = document.querySelectorAll(".pokemon-card"); const dialog = document.getElementById("dialog"); const pokeName = document.getElementById("pokeName"); const pokeNumber = document.getElementById("pokeNumber"); @@ -96,6 +97,37 @@ filterButton.addEventListener("click", () => { section.innerHTML = pokemonHtml(filteredPokemon); }); + + +// Agregar evento de clic a las tarjetas de Pokémon +pokemonCards.forEach(pokemonCard => { + pokemonCard.addEventListener("click", () => { + // Obtener el nombre del Pokémon desde la tarjeta + const selectedPokemonName = pokemonCard.querySelector("p").textContent; + + // Obtener la información del Pokémon según su nombre + const selectedPokemonInfo = pokeData.getPokemonInfoByName(selectedPokemonName); + + console.log(selectedPokemonInfo); + if (selectedPokemonInfo) { + // Asignar los valores al diálogo + pokeName.textContent = selectedPokemonInfo.name; + pokeNumber.textContent = `Pokédex Number: ${selectedPokemonInfo.num}`; + pokeImg.src = selectedPokemonInfo.img; + resistantWeak.textContent = "Resistance: " + selectedPokemonInfo.resistant.join(", ") + + "\nWeaknesses: " + selectedPokemonInfo.weaknesses.join(", "); + move.textContent = "Quick Move: " + selectedPokemonInfo["quick-move"][0].name + + "\nSpecial Attack: " + selectedPokemonInfo["special-attack"][0].name; + + // Abrir el diálogo + dialog.showModal(); + + dialog.querySelector(".close").addEventListener("click", () => { + dialog.close(); + }); + } + }); +}); // Agrega un manejador de eventos al botón "Limpiar Filtro" clearFilterButton.addEventListener("click", () => { // Limpia el contenido actual del contenedor @@ -105,6 +137,8 @@ clearFilterButton.addEventListener("click", () => { showAllPokemon(); }); + + // Mostrar todos los Pokémon inicialmente document.addEventListener("DOMContentLoaded", showAllPokemon); diff --git a/src/style.css b/src/style.css index 6ec70da2..c76f0f4d 100644 --- a/src/style.css +++ b/src/style.css @@ -44,7 +44,7 @@ h1 { /* Estilos generales para el cuerpo de la página */ body { - background-image: url("https://i.gadgets360cdn.com/large/pokemon_go_steelix_gengar_loading_screens_1499239730143.jpg"); /* Imagen de fondo */ + background-image: url("https://www.roomforzoom.com/backgrounds/Pokemon-Go-Computer-generated-background-230.jpg"); /* Imagen de fondo */ background-size: 100vw 100vh; /* Tamaño de la imagen de fondo */ } From 649dc3d5f4fa6e260f0ef53d59d3105c3ffbe773 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Wed, 23 Aug 2023 23:38:31 -0500 Subject: [PATCH 22/36] codigo para el dialog, pero aun no funciona --- src/index.html | 44 ++++++++++++++++++------------------ src/main.js | 49 +++++++++++++++++++---------------------- src/style.css | 60 ++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 103 insertions(+), 50 deletions(-) diff --git a/src/index.html b/src/index.html index 4af30248..9d6a938e 100644 --- a/src/index.html +++ b/src/index.html @@ -59,28 +59,28 @@

Everything you need to know to become the best Pokemon Master!

- -
-
-

-

- -
-
-

Resistance & Weaknesses

-

-
-
-

Attacks

-

-
-
-

Evolutions

-

-
- -
-
+ +
+
+

+

+ Pokemon Image +
+
+

Resistance & Weaknesses

+

+
+
+

Attacks

+

+
+
+

Evolutions

+

+
+ +
+
diff --git a/src/main.js b/src/main.js index 1c9d2d82..bb8252f7 100644 --- a/src/main.js +++ b/src/main.js @@ -66,18 +66,7 @@ inputField.addEventListener("input", () => { const filteredNames = pokemonNames.filter((name) => name.toLowerCase().includes(inputText) ); - // suggestionsList.innerHTML = ""; - // filteredNames.forEach((name) => { - // const suggestionItem = document.createElement("div"); - // suggestionItem.classList.add("suggestion-item"); - // suggestionItem.textContent = name; - // suggestionItem.addEventListener("click", () => { - // inputField.value = name; - // inputField.style.height = "30px"; - // suggestionsList.innerHTML = ""; - // }); - // suggestionsList.appendChild(suggestionItem); - // }); + }); // Manejar el evento de búsqueda cuando el usuario presiona el botón "Search" @@ -99,35 +88,43 @@ filterButton.addEventListener("click", () => { -// Agregar evento de clic a las tarjetas de Pokémon -pokemonCards.forEach(pokemonCard => { +pokemonCards.forEach((pokemonCard) => { + console.log("Card clicked:", pokemonCard); pokemonCard.addEventListener("click", () => { - // Obtener el nombre del Pokémon desde la tarjeta const selectedPokemonName = pokemonCard.querySelector("p").textContent; + const selectedPokemonInfo = pokeData.getPokemonInfoByName( + selectedPokemonName + ); - // Obtener la información del Pokémon según su nombre - const selectedPokemonInfo = pokeData.getPokemonInfoByName(selectedPokemonName); - - console.log(selectedPokemonInfo); if (selectedPokemonInfo) { - // Asignar los valores al diálogo pokeName.textContent = selectedPokemonInfo.name; pokeNumber.textContent = `Pokédex Number: ${selectedPokemonInfo.num}`; pokeImg.src = selectedPokemonInfo.img; - resistantWeak.textContent = "Resistance: " + selectedPokemonInfo.resistant.join(", ") + - "\nWeaknesses: " + selectedPokemonInfo.weaknesses.join(", "); - move.textContent = "Quick Move: " + selectedPokemonInfo["quick-move"][0].name + - "\nSpecial Attack: " + selectedPokemonInfo["special-attack"][0].name; - - // Abrir el diálogo + resistantWeak.textContent = + "Resistance: " + + selectedPokemonInfo.resistant.join(", ") + + "\nWeaknesses: " + + selectedPokemonInfo.weaknesses.join(", "); + move.textContent = + "Quick Move: " + + selectedPokemonInfo["quick-move"][0].name + + "\nSpecial Attack: " + + selectedPokemonInfo["special-attack"][0].name; + + const evolutions = selectedPokemonInfo.evolution; + const evolutionText = evolutions["next-evolution"].map((evo) => evo.name).join(", "); + evolution.textContent = "Evolutions: " + evolutionText; + dialog.showModal(); + // Agregar evento para cerrar el diálogo dialog.querySelector(".close").addEventListener("click", () => { dialog.close(); }); } }); }); + // Agrega un manejador de eventos al botón "Limpiar Filtro" clearFilterButton.addEventListener("click", () => { // Limpia el contenido actual del contenedor diff --git a/src/style.css b/src/style.css index c76f0f4d..dcb58b30 100644 --- a/src/style.css +++ b/src/style.css @@ -1,8 +1,8 @@ /* Definición de la fuente personalizada "Pokemon Solid" */ -@font-face { +/* @font-face { font-family: "Pokemon Solid"; src: url("Fuente-pokemon/Pokemon\Solid.ttf") format("truetype"); -} +} */ /* Estilos para el encabezado */ header { @@ -175,3 +175,59 @@ datalist { overflow-y: auto; /* Agrega una barra de desplazamiento vertical si es necesario */ width: 10%; /* Establece el ancho completo */ } + +#dialog { + display: none; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + padding: 20px; + background-color: white; + border: 1px solid #ccc; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + text-align: center; +} + +#dialog img { + max-width: 100%; + height: auto; +} + +#dialog #dialogClose { + margin-top: 10px; + background-color: #007bff; + color: white; + border: none; + padding: 5px 10px; + cursor: pointer; +} +.pokemon-dialog { + display: none; + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + padding: 20px; + background-color: white; + border: 1px solid #ccc; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.pokemon-dialog button.close { + position: absolute; + top: 5px; + right: 5px; + background: none; + border: none; + cursor: pointer; +} + +.pokemon-info { + text-align: center; +} + +.pokemon-info img { + max-width: 100%; + height: auto; +} \ No newline at end of file From 8cc7ac2e870715cae06c733aa1d67407732bb919 Mon Sep 17 00:00:00 2001 From: Malui Gomez Date: Thu, 24 Aug 2023 11:27:50 -0600 Subject: [PATCH 23/36] =?UTF-8?q?funcionalidad=20de=20ordenado=20alfab?= =?UTF-8?q?=C3=A9ticamente=20y=20por=20numero=20de=20pokedex?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data.js | 5 +++++ src/index.html | 5 +++-- src/main.js | 49 +++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 53 insertions(+), 6 deletions(-) diff --git a/src/data.js b/src/data.js index 66502c7a..e3c48f54 100644 --- a/src/data.js +++ b/src/data.js @@ -40,6 +40,11 @@ const pokeData = { (pokemon) => pokemon.name.toLowerCase() === name ); }, + + //función para ordenar pokemones + sortAscending: function (pokemons) { + return pokemons.slice().sort(); + }, }; // Exportar el objeto pokeData para su uso en otros archivos diff --git a/src/index.html b/src/index.html index 4af30248..6f0062ed 100644 --- a/src/index.html +++ b/src/index.html @@ -48,14 +48,15 @@

Everything you need to know to become the best Pokemon Master!

- > + - + diff --git a/src/main.js b/src/main.js index 5674f5dc..d9769569 100644 --- a/src/main.js +++ b/src/main.js @@ -1,9 +1,7 @@ // Importar el módulo pokeData que contiene las funciones y datos de los Pokémon import pokeData from "./data.js"; import pokemons from "./data/pokemon/pokemon.js"; - // Función para generar el HTML de los Pokémon -// function pokemonHtml(data) { let html = ""; data.forEach((pokemon) => { @@ -16,7 +14,6 @@ function pokemonHtml(data) { }); return html; } - // Obtener la referencia a la sección donde se mostrarán los Pokémon const section = document.getElementById("pokemon-grid"); @@ -27,7 +24,9 @@ const suggestionsList = document.querySelector(".suggestions"); const searchButton = document.querySelector(".search button"); const typeFilter = document.getElementById("typeFilter"); const filterButton = document.getElementById("filterButton"); -const clearFilterButton = document.getElementById("clear-filter-button"); +const clearFilterButton = document.getElementById("clearFilterButton"); +const orderButton = document.getElementById("orderButton"); + // Obtener referencias a los elementos dentro del dialog const dialog = document.getElementById("dialog"); const pokeName = document.getElementById("pokeName"); @@ -39,6 +38,7 @@ const evolution = document.getElementById("evolution"); // Obtener la lista de nombres de Pokémon de tu base de datos const pokemonNames = pokeData.getPokemonNames(); + // Llenar el datalist con los nombres de los Pokémon pokemonNames.forEach((name) => { const option = document.createElement("option"); @@ -96,6 +96,47 @@ filterButton.addEventListener("click", () => { section.innerHTML = pokemonHtml(filteredPokemon); }); +// editing space ------------------------------------------------------------------- + +const orderDropdown = document.getElementById("order"); +const ascendingPokedexButton = document.querySelector( + 'option[value="num1-251"]' +); +const descendingPokedexButton = document.querySelector( + 'option[value="num251-1"]' +); + +orderButton.addEventListener("click", () => { + const selectedOrder = orderDropdown.value; + + // Retrieve the current list of Pokémon based on previous filters + let currentPokemonList = section.innerHTML + ? Array.from(section.children) + : []; + + // Convert the DOM elements back into Pokémon objects for sorting + currentPokemonList = currentPokemonList.map((element) => { + const name = element.querySelector("p").textContent; + return pokeData.filterByPokemonName(name, pokemons)[0]; + }); + + // Sort the Pokémon list based on the selected order + if (selectedOrder === "a-z") { + currentPokemonList.sort((a, b) => a.name.localeCompare(b.name)); + } else if (selectedOrder === "z-a") { + currentPokemonList.sort((a, b) => b.name.localeCompare(a.name)); + } else if (selectedOrder === "num1-251") { + currentPokemonList.sort((a, b) => a.num - b.num); + } else if (selectedOrder === "num251-1") { + currentPokemonList.sort((a, b) => b.num - a.num); + } + + // Generate the HTML for the sorted Pokémon list + section.innerHTML = pokemonHtml(currentPokemonList); +}); + +// editing space ------------------------------------------------------------------- + // Agrega un manejador de eventos al botón "Limpiar Filtro" clearFilterButton.addEventListener("click", () => { // Limpia el contenido actual del contenedor From c3900a5e3b5aec01f389bc5ea5d8a470dcfe2ac6 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Fri, 25 Aug 2023 08:52:00 -0500 Subject: [PATCH 24/36] probando console.log en las diferentes funciones para verificar los llamados del Dom, si los hace pero en la fuction de pokemonCards no llega, puesto que primero se deben llamar las cards antes del evento de dialog --- src/main.js | 101 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 61 insertions(+), 40 deletions(-) diff --git a/src/main.js b/src/main.js index 1072da4e..8477100e 100644 --- a/src/main.js +++ b/src/main.js @@ -5,8 +5,9 @@ import pokemons from "./data/pokemon/pokemon.js"; function pokemonHtml(data) { let html = ""; data.forEach((pokemon) => { + html += ` -
+
${pokemon.name}

${pokemon.name}

@@ -14,6 +15,7 @@ function pokemonHtml(data) { }); return html; } + // Obtener la referencia a la sección donde se mostrarán los Pokémon const section = document.getElementById("pokemon-grid"); @@ -27,8 +29,9 @@ const filterButton = document.getElementById("filterButton"); const clearFilterButton = document.getElementById("clearFilterButton"); const orderButton = document.getElementById("orderButton"); + // Obtener referencias a los elementos dentro del dialog -const pokemonCards = document.querySelectorAll(".pokemon-card"); +// const pokemonCards = document.querySelectorAll(".pokemon-card"); const dialog = document.getElementById("dialog"); const pokeName = document.getElementById("pokeName"); const pokeNumber = document.getElementById("pokeNumber"); @@ -49,8 +52,51 @@ pokemonNames.forEach((name) => { // Función para mostrar todos los Pokémon function showAllPokemon() { + console.log("showAllPokemon"); const allPokemon = pokeData.filterByType(""); section.innerHTML = pokemonHtml(allPokemon); + + const pokemonCards = document.querySelectorAll(".pokemon-card"); + console.log(pokemonCards) + pokemonCards.forEach((pokemonCard) => { + console.log("holi"); + pokemonCard.addEventListener("click", () => { + + const selectedPokemonName = pokemonCard.querySelector("p").textContent; + const selectedPokemonInfo = + pokeData.getPokemonInfoByName(selectedPokemonName); + + if (selectedPokemonInfo) { + pokeName.textContent = selectedPokemonInfo.name; + pokeNumber.textContent = `Pokédex Number: ${selectedPokemonInfo.num}`; + pokeImg.src = selectedPokemonInfo.img; + resistantWeak.textContent = + "Resistance: " + + selectedPokemonInfo.resistant.join(", ") + + "\nWeaknesses: " + + selectedPokemonInfo.weaknesses.join(", "); + move.textContent = + "Quick Move: " + + selectedPokemonInfo["quick-move"][0].name + + "\nSpecial Attack: " + + selectedPokemonInfo["special-attack"][0].name; + + const evolutions = selectedPokemonInfo.evolution; + const evolutionText = evolutions["next-evolution"] + .map((evo) => evo.name) + .join(", "); + evolution.textContent = "Evolutions: " + evolutionText; + + dialog.showModal(); + + // Agregar evento para cerrar el diálogo + dialog.querySelector("#dialogClose").addEventListener("click", () => { + dialog.close(); + }); + } + }); + }); + } // Manejar el evento de autocompletado y limpiar el filtro cuando el usuario borre el input @@ -126,43 +172,7 @@ orderButton.addEventListener("click", () => { // editing space ------------------------------------------------------------------- -pokemonCards.forEach((pokemonCard) => { - console.log("Card clicked:", pokemonCard); - pokemonCard.addEventListener("click", () => { - const selectedPokemonName = pokemonCard.querySelector("p").textContent; - const selectedPokemonInfo = - pokeData.getPokemonInfoByName(selectedPokemonName); - - if (selectedPokemonInfo) { - pokeName.textContent = selectedPokemonInfo.name; - pokeNumber.textContent = `Pokédex Number: ${selectedPokemonInfo.num}`; - pokeImg.src = selectedPokemonInfo.img; - resistantWeak.textContent = - "Resistance: " + - selectedPokemonInfo.resistant.join(", ") + - "\nWeaknesses: " + - selectedPokemonInfo.weaknesses.join(", "); - move.textContent = - "Quick Move: " + - selectedPokemonInfo["quick-move"][0].name + - "\nSpecial Attack: " + - selectedPokemonInfo["special-attack"][0].name; - - const evolutions = selectedPokemonInfo.evolution; - const evolutionText = evolutions["next-evolution"] - .map((evo) => evo.name) - .join(", "); - evolution.textContent = "Evolutions: " + evolutionText; - - dialog.showModal(); - - // Agregar evento para cerrar el diálogo - dialog.querySelector(".close").addEventListener("click", () => { - dialog.close(); - }); - } - }); -}); + // Agrega un manejador de eventos al botón "Limpiar Filtro" clearFilterButton.addEventListener("click", () => { @@ -174,7 +184,18 @@ clearFilterButton.addEventListener("click", () => { }); // Mostrar todos los Pokémon inicialmente -document.addEventListener("DOMContentLoaded", showAllPokemon); +console.log("holoi") +function showCard(pokemon){ + console.log(pokemon); + } + + +document.addEventListener("DOMContentLoaded", () => { + const pokemonCards2 = document.querySelectorAll(".pokemon-card"); + showAllPokemon() + + +}); // Mostrar todos los Pokémon inicialmente // section.innerHTML = pokemonHtml(pokeData.filterByType("")); From f5bf557c489db6b130fd9cdd131a4cf2308c6514 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Fri, 25 Aug 2023 22:48:26 -0500 Subject: [PATCH 25/36] depurando para encontar el error, los llamdos de Dom con console.log funcionan, pero no da el click en las cards --- src/main.js | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/main.js b/src/main.js index 8477100e..1ff2a0db 100644 --- a/src/main.js +++ b/src/main.js @@ -5,9 +5,9 @@ import pokemons from "./data/pokemon/pokemon.js"; function pokemonHtml(data) { let html = ""; data.forEach((pokemon) => { - + html += ` -
+
${pokemon.name}

${pokemon.name}

@@ -22,7 +22,6 @@ const section = document.getElementById("pokemon-grid"); // Obtener referencias a los elementos relevantes del DOM const datalist = document.getElementById("pokemonNames"); const inputField = document.querySelector(".search input"); -const suggestionsList = document.querySelector(".suggestions"); const searchButton = document.querySelector(".search button"); const typeFilter = document.getElementById("typeFilter"); const filterButton = document.getElementById("filterButton"); @@ -52,19 +51,20 @@ pokemonNames.forEach((name) => { // Función para mostrar todos los Pokémon function showAllPokemon() { - console.log("showAllPokemon"); + // console.log("showAllPokemon"); const allPokemon = pokeData.filterByType(""); section.innerHTML = pokemonHtml(allPokemon); - + const pokemonCards = document.querySelectorAll(".pokemon-card"); - console.log(pokemonCards) + // console.log(pokemonCards) + pokemonCards.forEach((pokemonCard) => { - console.log("holi"); + // console.log("holi"); pokemonCard.addEventListener("click", () => { - const selectedPokemonName = pokemonCard.querySelector("p").textContent; const selectedPokemonInfo = pokeData.getPokemonInfoByName(selectedPokemonName); + // showCard(selectedPokemonInfo); if (selectedPokemonInfo) { pokeName.textContent = selectedPokemonInfo.name; @@ -90,19 +90,21 @@ function showAllPokemon() { dialog.showModal(); // Agregar evento para cerrar el diálogo - dialog.querySelector("#dialogClose").addEventListener("click", () => { - dialog.close(); - }); + } }); }); } +dialog.querySelector("#dialogClose").addEventListener("click", () => { + dialog.close(); +}); + // Manejar el evento de autocompletado y limpiar el filtro cuando el usuario borre el input inputField.addEventListener("input", () => { const inputText = inputField.value.toLowerCase(); - suggestionsList.innerHTML = ""; + if (inputText === "") { showAllPokemon(); @@ -112,6 +114,7 @@ inputField.addEventListener("input", () => { const filteredNames = pokemonNames.filter((name) => name.toLowerCase().includes(inputText) ); + section.innerHTML = pokemonHtml(pokeData.filterByType("")); }); // Manejar el evento de búsqueda cuando el usuario presiona el botón "Search" @@ -184,14 +187,13 @@ clearFilterButton.addEventListener("click", () => { }); // Mostrar todos los Pokémon inicialmente -console.log("holoi") -function showCard(pokemon){ +// console.log("holoi") +function showCard(pokemon) { console.log(pokemon); - } +} document.addEventListener("DOMContentLoaded", () => { - const pokemonCards2 = document.querySelectorAll(".pokemon-card"); showAllPokemon() From f5ccf560bddff05d039e530cf51c847876953336 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Sat, 26 Aug 2023 21:22:36 -0500 Subject: [PATCH 26/36] se muestran los dialog, solucion de errores, frente a los evenlist, y evoluciones, pero falta que cuando se filtre muestren el dialog --- src/index.html | 2 +- src/main.js | 85 ++++++++++++++++-------- src/style.css | 174 +++++++++++++++++++++++++++++++------------------ 3 files changed, 170 insertions(+), 91 deletions(-) diff --git a/src/index.html b/src/index.html index e0de7ad7..b46ca6fa 100644 --- a/src/index.html +++ b/src/index.html @@ -48,7 +48,7 @@

Everything you need to know to become the best Pokemon Master!

- diff --git a/src/main.js b/src/main.js index 1ff2a0db..096d734d 100644 --- a/src/main.js +++ b/src/main.js @@ -1,5 +1,6 @@ // Importar el módulo pokeData que contiene las funciones y datos de los Pokémon import pokeData from "./data.js"; +import pokemon from "./data/pokemon/pokemon.js"; import pokemons from "./data/pokemon/pokemon.js"; // Función para generar el HTML de los Pokémon function pokemonHtml(data) { @@ -16,6 +17,10 @@ function pokemonHtml(data) { return html; } +function showPoke() { + console.log("holi") +} + // Obtener la referencia a la sección donde se mostrarán los Pokémon const section = document.getElementById("pokemon-grid"); @@ -66,32 +71,7 @@ function showAllPokemon() { pokeData.getPokemonInfoByName(selectedPokemonName); // showCard(selectedPokemonInfo); - if (selectedPokemonInfo) { - pokeName.textContent = selectedPokemonInfo.name; - pokeNumber.textContent = `Pokédex Number: ${selectedPokemonInfo.num}`; - pokeImg.src = selectedPokemonInfo.img; - resistantWeak.textContent = - "Resistance: " + - selectedPokemonInfo.resistant.join(", ") + - "\nWeaknesses: " + - selectedPokemonInfo.weaknesses.join(", "); - move.textContent = - "Quick Move: " + - selectedPokemonInfo["quick-move"][0].name + - "\nSpecial Attack: " + - selectedPokemonInfo["special-attack"][0].name; - - const evolutions = selectedPokemonInfo.evolution; - const evolutionText = evolutions["next-evolution"] - .map((evo) => evo.name) - .join(", "); - evolution.textContent = "Evolutions: " + evolutionText; - - dialog.showModal(); - - // Agregar evento para cerrar el diálogo - - } + }); }); @@ -104,7 +84,7 @@ dialog.querySelector("#dialogClose").addEventListener("click", () => { // Manejar el evento de autocompletado y limpiar el filtro cuando el usuario borre el input inputField.addEventListener("input", () => { const inputText = inputField.value.toLowerCase(); - + if (inputText === "") { showAllPokemon(); @@ -192,12 +172,63 @@ function showCard(pokemon) { console.log(pokemon); } +function openDialog(pokemonInfo) { + if (pokemonInfo) { + pokeName.textContent = pokemonInfo.name; + pokeNumber.textContent = `Pokédex Number: ${pokemonInfo.num}`; + pokeImg.src = pokemonInfo.img; + resistantWeak.textContent = + "Resistance: " + + pokemonInfo.resistant.join(", ") + + "\nWeaknesses: " + + pokemonInfo.weaknesses.join(", "); + move.textContent = + "Quick Move: " + + pokemonInfo["quick-move"][0].name + + "\nSpecial Attack: " + + pokemonInfo["special-attack"][0].name; + + const evolutions = pokemonInfo.evolution; + const evolutionText = evolutions["next-evolution"] + ? evolutions["next-evolution"].map((evo) => evo.name).join(", ") + : "None"; + evolution.textContent = "Evolutions: " + evolutionText; + + dialog.showModal(); + + // Agregar evento para cerrar el diálogo + + } +} + document.addEventListener("DOMContentLoaded", () => { + showAllPokemon() + console.log("holi") + const pokemonCards = document.querySelectorAll(".pokemon-card") + console.log(pokemonCards) + + for (const pokemonCard of pokemonCards) { + pokemonCard.addEventListener("click", () => { + const pokemonName = pokemonCard.querySelector("p").textContent; + const selectedPokemonInfo = + pokeData.getPokemonInfoByName(pokemonName); + openDialog(selectedPokemonInfo) + + }) + + + } + }); + + + + + // Mostrar todos los Pokémon inicialmente // section.innerHTML = pokemonHtml(pokeData.filterByType("")); diff --git a/src/style.css b/src/style.css index dcb58b30..479bb595 100644 --- a/src/style.css +++ b/src/style.css @@ -6,62 +6,82 @@ /* Estilos para el encabezado */ header { - display: flex; /* Mostrar los elementos internos en línea */ - align-items: center; /* Centrar verticalmente los elementos */ - justify-content: space-evenly; /* Distribuir el espacio entre los elementos de manera uniforme */ - background-color: rgba( - 255, - 255, - 255, - 0.5 - ); /* Fondo semitransparente blanco */ - border-radius: 10px; /* Borde redondeado */ + display: flex; + /* Mostrar los elementos internos en línea */ + align-items: center; + /* Centrar verticalmente los elementos */ + justify-content: space-evenly; + /* Distribuir el espacio entre los elementos de manera uniforme */ + background-color: rgba(255, + 255, + 255, + 0.5); + /* Fondo semitransparente blanco */ + border-radius: 10px; + /* Borde redondeado */ } /* Estilos para el logo */ #logo { - width: 100px; /* Ancho del logo */ - background-color: transparent; /* Fondo transparente */ + width: 100px; + /* Ancho del logo */ + background-color: transparent; + /* Fondo transparente */ } /* Estilos para los encabezados de nivel 1 */ h1 { - font-family: "Pokemon Solid"; /* Usar la fuente personalizada */ - font-weight: bold; /* Negrita */ - color: #1e90ff; /* Color azul */ - margin: 0; /* Margen cero para el encabezado */ - font-size: 25px; /* Tamaño de fuente */ - text-align: center; /* Centrar el texto */ + font-family: "Pokemon Solid"; + /* Usar la fuente personalizada */ + font-weight: bold; + /* Negrita */ + color: #1e90ff; + /* Color azul */ + margin: 0; + /* Margen cero para el encabezado */ + font-size: 25px; + /* Tamaño de fuente */ + text-align: center; + /* Centrar el texto */ text-shadow: 2px 2px black; } /* Estilos para el contenedor principal */ .container { - flex-direction: column; /* Columnas flexibles */ - align-items: center; /* Centrar elementos horizontalmente */ + flex-direction: column; + /* Columnas flexibles */ + align-items: center; + /* Centrar elementos horizontalmente */ /* position: relative; */ } /* Estilos generales para el cuerpo de la página */ body { - background-image: url("https://www.roomforzoom.com/backgrounds/Pokemon-Go-Computer-generated-background-230.jpg"); /* Imagen de fondo */ - background-size: 100vw 100vh; /* Tamaño de la imagen de fondo */ + background-image: url("https://www.roomforzoom.com/backgrounds/Pokemon-Go-Computer-generated-background-230.jpg"); + /* Imagen de fondo */ + background-size: 100vw 100vh; + /* Tamaño de la imagen de fondo */ } /* Estilos para listas no ordenadas */ ul { - display: flex; /* Mostrar los elementos en línea */ - flex-direction: column; /* Organizar en columna */ + display: flex; + /* Mostrar los elementos en línea */ + flex-direction: column; + /* Organizar en columna */ } /* Estilos para el campo de búsqueda */ .search { - display: flex; /* Mostrar los elementos en línea */ - align-items: center; /* Centrar verticalmente los elementos */ + display: flex; + /* Mostrar los elementos en línea */ + align-items: center; + /* Centrar verticalmente los elementos */ } .search button { - width: 80px; /* Ancho del botón de búsqueda */ + width: 80px; + /* Ancho del botón de búsqueda */ } /* Estilos para botones específicos */ @@ -69,61 +89,85 @@ ul { #orderButton, #ascendingButton, #descendingButton { - margin-left: -65px; /* Mover los botones hacia la izquierda */ + margin-left: -65px; + /* Mover los botones hacia la izquierda */ } /* Estilos para el menú */ .menu { - display: flex; /* Mostrar los elementos en línea */ - justify-content: space-between; /* Distribuir el espacio entre los elementos */ - align-items: center; /* Centrar verticalmente los elementos */ - width: 100%; /* Ancho completo del menú */ - margin-bottom: 10px; /* Margen inferior */ + display: flex; + /* Mostrar los elementos en línea */ + justify-content: space-between; + /* Distribuir el espacio entre los elementos */ + align-items: center; + /* Centrar verticalmente los elementos */ + width: 100%; + /* Ancho completo del menú */ + margin-bottom: 10px; + /* Margen inferior */ } /* Estilos para el contenedor de los Pokémon */ #pokemon-grid { - display: flex; /* Mostrar los elementos en línea */ - flex-wrap: wrap; /* Envolver los elementos en varias líneas */ - justify-content: center; /* Centrar horizontalmente los elementos */ - border-radius: 10px; /* Borde redondeado */ + display: flex; + /* Mostrar los elementos en línea */ + flex-wrap: wrap; + /* Envolver los elementos en varias líneas */ + justify-content: center; + /* Centrar horizontalmente los elementos */ + border-radius: 10px; + /* Borde redondeado */ } /* Estilos para campos de entrada */ input { - border-radius: 10px; /* Borde redondeado */ + border-radius: 10px; + /* Borde redondeado */ } /* Estilos para las tarjetas de Pokémon */ .pokemon-card { - display: flex; /* Mostrar los elementos en línea */ - align-items: center; /* Centrar verticalmente los elementos */ - flex-direction: column; /* Organizar en columna */ - align-items: center; /* Centrar horizontalmente los elementos */ - border: 1px solid #1e90ff; /* Borde sólido azul */ - width: 100px; /* Ancho de la tarjeta */ - text-align: center; /* Centrar el texto */ - text-transform: capitalize; /* Transformar el texto en mayúscula la primera letra */ - border: 1px solid black; /* Borde sólido negro */ - margin: 10px; /* Margen */ - border-radius: 20px; /* Borde redondeado */ - background-color: rgba( - 255, - 255, - 255, - 0.5 - ); /* Fondo semitransparente blanco */ + display: flex; + /* Mostrar los elementos en línea */ + align-items: center; + /* Centrar verticalmente los elementos */ + flex-direction: column; + /* Organizar en columna */ + align-items: center; + /* Centrar horizontalmente los elementos */ + border: 1px solid #1e90ff; + /* Borde sólido azul */ + width: 100px; + /* Ancho de la tarjeta */ + text-align: center; + /* Centrar el texto */ + text-transform: capitalize; + /* Transformar el texto en mayúscula la primera letra */ + border: 1px solid black; + /* Borde sólido negro */ + margin: 10px; + /* Margen */ + border-radius: 20px; + /* Borde redondeado */ + background-color: rgba(255, + 255, + 255, + 0.5); + /* Fondo semitransparente blanco */ } /* Estilos para imágenes de Pokémon en las tarjetas */ .pokemon-card img { - width: 100px; /* Ancho de la imagen */ + width: 100px; + /* Ancho de la imagen */ } /* Estilos generales para botones */ button { - border-radius: 10px; /* Borde redondeado */ - border-color: #f87da8; /* Color del borde */ + border-radius: 10px; + /* Borde redondeado */ + border-color: #f87da8; + /* Color del borde */ padding: 5px 15px; margin: 10px; text-align: center; @@ -171,13 +215,16 @@ button { } datalist { - max-height: 10px; /* Define la altura máxima deseada */ - overflow-y: auto; /* Agrega una barra de desplazamiento vertical si es necesario */ - width: 10%; /* Establece el ancho completo */ + max-height: 10px; + /* Define la altura máxima deseada */ + overflow-y: auto; + /* Agrega una barra de desplazamiento vertical si es necesario */ + width: 10%; + /* Establece el ancho completo */ } #dialog { - display: none; + position: fixed; top: 50%; left: 50%; @@ -202,8 +249,9 @@ datalist { padding: 5px 10px; cursor: pointer; } + .pokemon-dialog { - display: none; + position: fixed; top: 50%; left: 50%; From 47b16c73090b23f2a721c3b9cf48aff399418208 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Mon, 28 Aug 2023 16:17:42 -0500 Subject: [PATCH 27/36] funciona el dialog en los diferentes filtros y orden --- src/main.js | 55 +++++++++++++++++++++-------------------------------- 1 file changed, 22 insertions(+), 33 deletions(-) diff --git a/src/main.js b/src/main.js index 096d734d..79762475 100644 --- a/src/main.js +++ b/src/main.js @@ -54,26 +54,29 @@ pokemonNames.forEach((name) => { datalist.appendChild(option); }); -// Función para mostrar todos los Pokémon -function showAllPokemon() { - // console.log("showAllPokemon"); - const allPokemon = pokeData.filterByType(""); - section.innerHTML = pokemonHtml(allPokemon); - - const pokemonCards = document.querySelectorAll(".pokemon-card"); - // console.log(pokemonCards) +function showPokemons(pokemonList) { + section.innerHTML = pokemonHtml(pokemonList) + const pokemonCards = document.querySelectorAll(".pokemon-card") + console.log(pokemonCards) - pokemonCards.forEach((pokemonCard) => { - // console.log("holi"); + for (const pokemonCard of pokemonCards) { pokemonCard.addEventListener("click", () => { - const selectedPokemonName = pokemonCard.querySelector("p").textContent; + const pokemonName = pokemonCard.querySelector("p").textContent; const selectedPokemonInfo = - pokeData.getPokemonInfoByName(selectedPokemonName); - // showCard(selectedPokemonInfo); + pokeData.getPokemonInfoByName(pokemonName); + openDialog(selectedPokemonInfo) + }) - }); - }); + + } +} + +// Función para mostrar todos los Pokémon +function showAllPokemon() { + // console.log("showAllPokemon"); + const allPokemon = pokeData.filterByType(""); + showPokemons(allPokemon) } @@ -104,14 +107,14 @@ searchButton.addEventListener("click", () => { selectedPokemonName, pokemons ); - section.innerHTML = pokemonHtml(selectedPokemon); + showPokemons(selectedPokemon); }); // Manejar el evento de filtrado por tipo de Pokémon filterButton.addEventListener("click", () => { const selectedType = typeFilter.value; const filteredPokemon = pokeData.filterByType(selectedType); - section.innerHTML = pokemonHtml(filteredPokemon); + showPokemons(filteredPokemon); }); // editing space ------------------------------------------------------------------- @@ -150,7 +153,7 @@ orderButton.addEventListener("click", () => { } // Generate the HTML for the sorted Pokémon list - section.innerHTML = pokemonHtml(currentPokemonList); + showPokemons(currentPokemonList); }); // editing space ------------------------------------------------------------------- @@ -206,20 +209,7 @@ document.addEventListener("DOMContentLoaded", () => { showAllPokemon() console.log("holi") - const pokemonCards = document.querySelectorAll(".pokemon-card") - console.log(pokemonCards) - - for (const pokemonCard of pokemonCards) { - pokemonCard.addEventListener("click", () => { - const pokemonName = pokemonCard.querySelector("p").textContent; - const selectedPokemonInfo = - pokeData.getPokemonInfoByName(pokemonName); - openDialog(selectedPokemonInfo) - }) - - - } @@ -230,5 +220,4 @@ document.addEventListener("DOMContentLoaded", () => { -// Mostrar todos los Pokémon inicialmente -// section.innerHTML = pokemonHtml(pokeData.filterByType("")); + From d13004aaadb069d0fddd1eaa44942accf5175b2d Mon Sep 17 00:00:00 2001 From: Malui Gomez Date: Tue, 29 Aug 2023 12:41:01 -0600 Subject: [PATCH 28/36] ordenado A-z, Z-a, num1-251, num251-1 --- src/data.js | 50 ++++++++++++-- src/index.html | 176 ++++++++++++++++++++++++------------------------- src/main.js | 83 +++++------------------ 3 files changed, 149 insertions(+), 160 deletions(-) diff --git a/src/data.js b/src/data.js index d31d70e9..d7a40b51 100644 --- a/src/data.js +++ b/src/data.js @@ -6,7 +6,18 @@ import pokedex from "./data/pokemon/pokemon.js"; // El código define un objeto llamado pokeData que contiene una función llamada filterByType //para filtrar Pokémon por tipo. Si el tipo es vacío, la función devuelve todos los Pokémon. //De lo contrario, filtra los Pokémon por el tipo especificado y devuelve los resultados. + const pokeData = { + sortAscendingByNum: function (pokemonArray) { + const orderedList = pokemonArray.sort((a, b) => a.num - b.num); + return orderedList; + }, + + sortDescendingByNum: function (pokemonArray) { + const orderedList = pokemonArray.sort((a, b) => b.num - a.num); + return orderedList; + }, + // Función para filtrar Pokémon por tipo filterByType: function (type) { if (type === "") { @@ -32,7 +43,9 @@ const pokeData = { // Función para obtener la información de un Pokémon por su nombre getPokemonInfoByName: function (name) { const lowerCaseName = name.toLowerCase(); - const pokemonInfo = pokedex.pokemon.find(pokemon => pokemon.name === lowerCaseName); + const pokemonInfo = pokedex.pokemon.find( + (pokemon) => pokemon.name === lowerCaseName + ); return pokemonInfo || null; // Si no se encuentra el Pokémon, devuelve null }, @@ -48,12 +61,37 @@ const pokeData = { ); }, - //función para ordenar pokemones - sortAscending: function (pokemons) { - return pokemons.slice().sort(); - }, -}; + // //función para ordenar pokemones + // sortAscending: function (pokemons) { + // return pokemons.slice().sort(); + // }, + // Function to sort and render Pokémon based on the selected order + + orderAndUpdateList: function (selectedOrder, section) { + let currentPokemonList = section.innerHTML + ? Array.from(section.children) + : []; + + currentPokemonList = currentPokemonList.map((element) => { + const name = element.querySelector("p").textContent; + return pokeData.getPokemonInfoByName(name); + }); + if (selectedOrder === "a-z") { + currentPokemonList.sort((a, b) => a.name.localeCompare(b.name)); + } else if (selectedOrder === "z-a") { + currentPokemonList.sort((a, b) => b.name.localeCompare(a.name)); + } else if (selectedOrder === "num1-251") { + currentPokemonList = pokeData.sortAscendingByNum(currentPokemonList); + } else if (selectedOrder === "num251-1") { + currentPokemonList = pokeData.sortDescendingByNum(currentPokemonList); + } + return currentPokemonList; + // section.innerHTML = pokemonHtml(currentPokemonList); + // }, + // showPokemons(currentPokemonList); + }, +}; // Exportar el objeto pokeData para su uso en otros archivos export default pokeData; diff --git a/src/index.html b/src/index.html index b46ca6fa..17936ab3 100644 --- a/src/index.html +++ b/src/index.html @@ -1,96 +1,94 @@ + + + Data Lovers - Pokemon Go + + - - - Data Lovers - Pokemon Go - - + +
+ +

Everything you need to know to become the best Pokemon Master!

+
+
+ - -
-
- - - - - - - - -
-
-

-

- Pokemon Image -
-
-

Resistance & Weaknesses

-

-
-
-

Attacks

-

-
-
-

Evolutions

-

-
- -
-
- -
- -
-
- -
- - - - - \ No newline at end of file +
+ + + diff --git a/src/main.js b/src/main.js index 79762475..63c2b7b9 100644 --- a/src/main.js +++ b/src/main.js @@ -2,11 +2,11 @@ import pokeData from "./data.js"; import pokemon from "./data/pokemon/pokemon.js"; import pokemons from "./data/pokemon/pokemon.js"; + // Función para generar el HTML de los Pokémon function pokemonHtml(data) { let html = ""; data.forEach((pokemon) => { - html += `
${pokemon.name} @@ -18,7 +18,7 @@ function pokemonHtml(data) { } function showPoke() { - console.log("holi") + console.log("holi"); } // Obtener la referencia a la sección donde se mostrarán los Pokémon @@ -33,9 +33,7 @@ const filterButton = document.getElementById("filterButton"); const clearFilterButton = document.getElementById("clearFilterButton"); const orderButton = document.getElementById("orderButton"); - // Obtener referencias a los elementos dentro del dialog -// const pokemonCards = document.querySelectorAll(".pokemon-card"); const dialog = document.getElementById("dialog"); const pokeName = document.getElementById("pokeName"); const pokeNumber = document.getElementById("pokeNumber"); @@ -55,20 +53,16 @@ pokemonNames.forEach((name) => { }); function showPokemons(pokemonList) { - section.innerHTML = pokemonHtml(pokemonList) - const pokemonCards = document.querySelectorAll(".pokemon-card") - console.log(pokemonCards) + section.innerHTML = pokemonHtml(pokemonList); + const pokemonCards = document.querySelectorAll(".pokemon-card"); + // console.log(pokemonCards); for (const pokemonCard of pokemonCards) { pokemonCard.addEventListener("click", () => { const pokemonName = pokemonCard.querySelector("p").textContent; - const selectedPokemonInfo = - pokeData.getPokemonInfoByName(pokemonName); - openDialog(selectedPokemonInfo) - - }) - - + const selectedPokemonInfo = pokeData.getPokemonInfoByName(pokemonName); + openDialog(selectedPokemonInfo); + }); } } @@ -76,8 +70,7 @@ function showPokemons(pokemonList) { function showAllPokemon() { // console.log("showAllPokemon"); const allPokemon = pokeData.filterByType(""); - showPokemons(allPokemon) - + showPokemons(allPokemon); } dialog.querySelector("#dialogClose").addEventListener("click", () => { @@ -88,7 +81,6 @@ dialog.querySelector("#dialogClose").addEventListener("click", () => { inputField.addEventListener("input", () => { const inputText = inputField.value.toLowerCase(); - if (inputText === "") { showAllPokemon(); return; @@ -120,46 +112,19 @@ filterButton.addEventListener("click", () => { // editing space ------------------------------------------------------------------- const orderDropdown = document.getElementById("order"); -const ascendingPokedexButton = document.querySelector( - 'option[value="num1-251"]' -); -const descendingPokedexButton = document.querySelector( - 'option[value="num251-1"]' -); +// const section = document.getElementById("pokemon-grid"); +// const orderButton = document.getElementById("orderButton"); +// Event listener for the "Order" button orderButton.addEventListener("click", () => { const selectedOrder = orderDropdown.value; - - // Retrieve the current list of Pokémon based on previous filters - let currentPokemonList = section.innerHTML - ? Array.from(section.children) - : []; - - // Convert the DOM elements back into Pokémon objects for sorting - currentPokemonList = currentPokemonList.map((element) => { - const name = element.querySelector("p").textContent; - return pokeData.filterByPokemonName(name, pokemons)[0]; - }); - - // Sort the Pokémon list based on the selected order - if (selectedOrder === "a-z") { - currentPokemonList.sort((a, b) => a.name.localeCompare(b.name)); - } else if (selectedOrder === "z-a") { - currentPokemonList.sort((a, b) => b.name.localeCompare(a.name)); - } else if (selectedOrder === "num1-251") { - currentPokemonList.sort((a, b) => a.num - b.num); - } else if (selectedOrder === "num251-1") { - currentPokemonList.sort((a, b) => b.num - a.num); - } - - // Generate the HTML for the sorted Pokémon list - showPokemons(currentPokemonList); + // pokeData.orderAndUpdateList(selectedOrder, section, pokemonHtml); + const pokemonList = pokeData.orderAndUpdateList(selectedOrder, section); + showPokemons(pokemonList); }); // editing space ------------------------------------------------------------------- - - // Agrega un manejador de eventos al botón "Limpiar Filtro" clearFilterButton.addEventListener("click", () => { // Limpia el contenido actual del contenedor @@ -200,24 +165,12 @@ function openDialog(pokemonInfo) { dialog.showModal(); // Agregar evento para cerrar el diálogo - } } - document.addEventListener("DOMContentLoaded", () => { - - showAllPokemon() - console.log("holi") - - - - + showAllPokemon(); }); - - - - - - +// Mostrar todos los Pokémon inicialmente +// section.innerHTML = pokemonHtml(pokeData.filterByType("")); From 7746d630de80165f038c1a9f1b6b10ab5a5c4fc0 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Tue, 29 Aug 2023 19:57:23 -0500 Subject: [PATCH 29/36] cambios en css --- src/index.html | 173 ++++++++++++++++++++++++------------------------- src/style.css | 53 +++++++++------ 2 files changed, 118 insertions(+), 108 deletions(-) diff --git a/src/index.html b/src/index.html index 17936ab3..e0ea5557 100644 --- a/src/index.html +++ b/src/index.html @@ -1,94 +1,93 @@ - - - Data Lovers - Pokemon Go - - - -
- -

Everything you need to know to become the best Pokemon Master!

-
-
- + +
+ +

Everything you need to know to become the best Pokemon Master!

+
+
+ -
-
+ +
+
+

+

+ Pokemon Image +
+
+

Resistance & Weaknesses

+

+
+
+

Attacks

+

+
+
+

Evolutions

+

+
+ +
+
-
- - - +
+
+ +
+ + + + \ No newline at end of file diff --git a/src/style.css b/src/style.css index 479bb595..84c6f55e 100644 --- a/src/style.css +++ b/src/style.css @@ -1,8 +1,11 @@ /* Definición de la fuente personalizada "Pokemon Solid" */ /* @font-face { - font-family: "Pokemon Solid"; + font-family: 'Lato', sans-serif; src: url("Fuente-pokemon/Pokemon\Solid.ttf") format("truetype"); } */ +body { + font-family: 'Lato', sans-serif; +} /* Estilos para el encabezado */ header { @@ -12,10 +15,7 @@ header { /* Centrar verticalmente los elementos */ justify-content: space-evenly; /* Distribuir el espacio entre los elementos de manera uniforme */ - background-color: rgba(255, - 255, - 255, - 0.5); + background-color: rgba(25, 0, 138, 0.5); /* Fondo semitransparente blanco */ border-radius: 10px; /* Borde redondeado */ @@ -31,11 +31,11 @@ header { /* Estilos para los encabezados de nivel 1 */ h1 { - font-family: "Pokemon Solid"; + font-family: 'Lato', sans-serif; /* Usar la fuente personalizada */ font-weight: bold; /* Negrita */ - color: #1e90ff; + color: #ffffff; /* Color azul */ margin: 0; /* Margen cero para el encabezado */ @@ -43,7 +43,7 @@ h1 { /* Tamaño de fuente */ text-align: center; /* Centrar el texto */ - text-shadow: 2px 2px black; + } /* Estilos para el contenedor principal */ @@ -123,6 +123,7 @@ ul { input { border-radius: 10px; /* Borde redondeado */ + font-family: 'Lato', sans-serif; } /* Estilos para las tarjetas de Pokémon */ @@ -149,13 +150,16 @@ input { /* Margen */ border-radius: 20px; /* Borde redondeado */ - background-color: rgba(255, - 255, - 255, - 0.5); + background-color: rgba(75, 78, 248, 0.5); /* Fondo semitransparente blanco */ } +p { + + font-family: 'Lato', sans-serif; + color:#000000; +} + /* Estilos para imágenes de Pokémon en las tarjetas */ .pokemon-card img { width: 100px; @@ -166,45 +170,52 @@ input { button { border-radius: 10px; /* Borde redondeado */ - border-color: #f87da8; + border-color: #24cbaa; + border-width: 15px /* Color del borde */ padding: 5px 15px; margin: 10px; text-align: center; + font-family: 'Lato', sans-serif; +} + +select { + font-family: 'Lato', sans-serif; + border-radius: 10px; } /* Definición de la animación "rainbow" */ @keyframes rainbow { 0% { - border-color: #f9ebf2; + border-color: #7a81e6; } 14% { - border-color: #f3e2e8; + border-color: #b8f5f0; } 28% { - border-color: #fcd7da; + border-color: #0501f3; } 42% { - border-color: #f58f9a; + border-color: #03fafa; } 57% { - border-color: #c03eaa; + border-color: #00ffff; } 71% { - border-color: rgb(255, 76, 210); + border-color: rgb(4, 48, 247); } 85% { - border-color: violet; + border-color: rgb(20, 3, 252); } 100% { - border-color: rgb(252, 146, 243); + border-color: rgb(0, 255, 255); } } From b5b3c751b92f790720eff341d4f8b91d26d56a28 Mon Sep 17 00:00:00 2001 From: Malui Gomez Date: Thu, 31 Aug 2023 13:03:10 -0600 Subject: [PATCH 30/36] pruebas unitarias para funcion de ordenado, 2 passed, 2 failed --- .eslintrc.js | 0 test/data.spec.js | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 .eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..e69de29b diff --git a/test/data.spec.js b/test/data.spec.js index 761963f7..6b56d554 100644 --- a/test/data.spec.js +++ b/test/data.spec.js @@ -43,3 +43,62 @@ describe("filterByPokemonName", () => { expect(filteredPokemons).toEqual([{ name: "charmander", type: ["fire"] }]); }); }); + +describe("orderAndUpdateList", () => { + it("should sort an array of Pokémons in ascending order by number", () => { + const inputArray = [ + { num: 4, name: "Charmander" }, + { num: 2, name: "Ivysaur" }, + { num: 1, name: "Bulbasaur" }, + ]; + const expectedResult = [ + { num: 1, name: "Bulbasaur" }, + { num: 2, name: "Ivysaur" }, + { num: 4, name: "Charmander" }, + ]; + const sortedArray = pokeData.sortAscendingByNum(inputArray); + expect(sortedArray).toEqual(expectedResult); + }); + it("should sort an array of Pokémon in descending order by number", () => { + const inputArray = [ + { num: 4, name: "Charmander" }, + { num: 2, name: "Ivysaur" }, + { num: 1, name: "Bulbasaur" }, + ]; + const expectedResult = [ + { num: 4, name: "Charmander" }, + { num: 2, name: "Ivysaur" }, + { num: 1, name: "Bulbasaur" }, + ]; + const sortedArray = pokeData.sortDescendingByNum(inputArray); + expect(sortedArray).toEqual(expectedResult); + }); + it("should sort an array of Pokémon in alphabetical order (A-Z) by name", () => { + const inputArray = [ + { num: 4, name: "Charmander" }, + { num: 2, name: "Ivysaur" }, + { num: 1, name: "Bulbasaur" }, + ]; + const expectedResult = [ + { num: 1, name: "Bulbasaur" }, + { num: 4, name: "Charmander" }, + { num: 2, name: "Ivysaur" }, + ]; + const sortedArray = pokeData.orderAndUpdateList("a-z", inputArray); + expect(sortedArray).toEqual(expectedResult); + }); + it("should sort an array of Pokémon in reverse alphabetical order (Z-A) by name", () => { + const inputArray = [ + { num: 4, name: "Charmander" }, + { num: 2, name: "Ivysaur" }, + { num: 1, name: "Bulbasaur" }, + ]; + const expectedResult = [ + { num: 2, name: "Ivysaur" }, + { num: 4, name: "Charmander" }, + { num: 1, name: "Bulbasaur" }, + ]; + const sortedArray = pokeData.orderAndUpdateList("z-a", inputArray); + expect(sortedArray).toEqual(expectedResult); + }); +}); From 2b0beab658a8371d82637e4bdbf50673151fa3ed Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Thu, 31 Aug 2023 14:06:15 -0500 Subject: [PATCH 31/36] se agrego un color de fondo a cada dialog segun el tipo del pokemon --- src/index.html | 3 +- src/main.js | 14 +++++- src/style.css | 115 ++++++++++++++++++++++++++++++++++++++----------- 3 files changed, 105 insertions(+), 27 deletions(-) diff --git a/src/index.html b/src/index.html index e0ea5557..ae33b95c 100644 --- a/src/index.html +++ b/src/index.html @@ -63,9 +63,10 @@

Everything you need to know to become the best Pokemon Master!

-

+

Pokemon Image +

Resistance & Weaknesses

diff --git a/src/main.js b/src/main.js index 63c2b7b9..92a8ca28 100644 --- a/src/main.js +++ b/src/main.js @@ -8,7 +8,7 @@ function pokemonHtml(data) { let html = ""; data.forEach((pokemon) => { html += ` -
+
${pokemon.name}

${pokemon.name}

@@ -36,6 +36,7 @@ const orderButton = document.getElementById("orderButton"); // Obtener referencias a los elementos dentro del dialog const dialog = document.getElementById("dialog"); const pokeName = document.getElementById("pokeName"); +const pokeType =document.getElementById("pokeType") const pokeNumber = document.getElementById("pokeNumber"); const pokeImg = document.getElementById("pokeImg"); const resistantWeak = document.getElementById("resistant-Weak"); @@ -142,9 +143,13 @@ function showCard(pokemon) { function openDialog(pokemonInfo) { if (pokemonInfo) { - pokeName.textContent = pokemonInfo.name; + + const pokemonType = pokemonInfo.type[0]; + dialog.classList.add(`${pokemonType}-bg`); + pokeName.textContent = `${pokemonInfo.name}`; pokeNumber.textContent = `Pokédex Number: ${pokemonInfo.num}`; pokeImg.src = pokemonInfo.img; + pokeType.textContent = `Type: ${pokemonInfo.type}`; resistantWeak.textContent = "Resistance: " + pokemonInfo.resistant.join(", ") + @@ -168,6 +173,11 @@ function openDialog(pokemonInfo) { } } +dialog.querySelector("#dialogClose").addEventListener("click", () => { + dialog.classList.remove("grass-bg", "fire-bg", "normal-bg", "water-bg", "flying-bg", "fighting-bg", "electric-bg", "ground-bg", "psychic-bg", "bug-bg", "ghost-bg", "steel-bg", "dragon-bg", "dark-bg", "fairy-bg", "poison-bg" ); + dialog.close(); +}); + document.addEventListener("DOMContentLoaded", () => { showAllPokemon(); }); diff --git a/src/style.css b/src/style.css index 84c6f55e..55afed2e 100644 --- a/src/style.css +++ b/src/style.css @@ -19,6 +19,7 @@ header { /* Fondo semitransparente blanco */ border-radius: 10px; /* Borde redondeado */ + color: white; } /* Estilos para el logo */ @@ -29,22 +30,7 @@ header { /* Fondo transparente */ } -/* Estilos para los encabezados de nivel 1 */ -h1 { - font-family: 'Lato', sans-serif; - /* Usar la fuente personalizada */ - font-weight: bold; - /* Negrita */ - color: #ffffff; - /* Color azul */ - margin: 0; - /* Margen cero para el encabezado */ - font-size: 25px; - /* Tamaño de fuente */ - text-align: center; - /* Centrar el texto */ -} /* Estilos para el contenedor principal */ .container { @@ -57,7 +43,7 @@ h1 { /* Estilos generales para el cuerpo de la página */ body { - background-image: url("https://www.roomforzoom.com/backgrounds/Pokemon-Go-Computer-generated-background-230.jpg"); + background-image: url("https://img.freepik.com/vector-gratis/resumen-degradado-fondo-lineas-diagonales_23-2150527316.jpg?w=740&t=st=1693440657~exp=1693441257~hmac=803aff06ced011c5fc993c3f3127229f18fad6c08db7f8e6f16913585c0e3ba1"); /* Imagen de fondo */ background-size: 100vw 100vh; /* Tamaño de la imagen de fondo */ @@ -150,14 +136,14 @@ input { /* Margen */ border-radius: 20px; /* Borde redondeado */ - background-color: rgba(75, 78, 248, 0.5); + background-color: rgba(253, 253, 253, 0.5); /* Fondo semitransparente blanco */ } p { - + font-family: 'Lato', sans-serif; - color:#000000; + color: #000000; } /* Estilos para imágenes de Pokémon en las tarjetas */ @@ -172,8 +158,8 @@ button { /* Borde redondeado */ border-color: #24cbaa; border-width: 15px - /* Color del borde */ - padding: 5px 15px; + /* Color del borde */ + padding: 5px 15px; margin: 10px; text-align: center; font-family: 'Lato', sans-serif; @@ -236,15 +222,19 @@ datalist { #dialog { + position: fixed; + margin-top: 50px; top: 50%; left: 50%; + margin-bottom: 50px; transform: translate(-50%, -50%); - padding: 20px; - background-color: white; + border-radius: 50px; + bac url("https://img.freepik.com/vector-gratis/fondo-abstracto-azul-formas-geometricas_1035-17545.jpg?w=740&t=st=1693497939~exp=1693498539~hmac=3d356200835e4a0475514aad3e731ef922989dc31947d5526e57023997c99e2d"); border: 1px solid #ccc; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); text-align: center; + background-size: 50vw 100vh; } #dialog img { @@ -254,7 +244,7 @@ datalist { #dialog #dialogClose { margin-top: 10px; - background-color: #007bff; + background-color: #219094; color: white; border: none; padding: 5px 10px; @@ -289,4 +279,81 @@ datalist { .pokemon-info img { max-width: 100%; height: auto; +} + +#pokeName { + color: #000000; + text-transform: capitalize; +} + +.grass-bg { + background-image: url("https://img.freepik.com/vector-gratis/resumen-mosaico-hexagonal-mosaico-diseno-fondo_1164-1259.jpg?w=360&t=st=1693502316~exp=1693502916~hmac=1f270f269988e1b69b8a4604e69b81bb72d34fc93a97f476d7d657035f0d5094"); +} + +.fire-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-colores-pastel-poli_53876-62611.jpg?w=740&t=st=1693502790~exp=1693503390~hmac=fc96b9c0c27a633165773d3603861e8b0c18e3a338ac5e4bda4d24bf21d2c4b6"); +} + +.normal-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-monocromatico-blanco-estilo-papel_23-2149024482.jpg?w=740&t=st=1693502996~exp=1693503596~hmac=49b2324cebe2ff4b6663dcd5c96219ca829f2e1aad249dae893bbd4e63377e90"); +} + +.water-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-abstracto-azul-formas-geometricas_1035-17545.jpg?w=740&t=st=1693497939~exp=1693498539~hmac=3d356200835e4a0475514aad3e731ef922989dc31947d5526e57023997c99e2d"); +} + +.flying-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-formas-geometricas-triangulo-abstracto_1035-23057.jpg?w=740&t=st=1693503072~exp=1693503672~hmac=76e89a60e196d945fd1c38ab7124415885d9f060d0d0c86e6a676bf61b14a643"); +} + +.fighting-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-acuarela-abstracta-suave-neutro_53876-100960.jpg?w=740&t=st=1693503266~exp=1693503866~hmac=14d31085ff53b445ed1c41b7df021424947b9c39a8a494021500d83e625ca28d"); +} + +.electric-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-poligonal-diseno-plano_23-2148901853.jpg?w=740&t=st=1693503498~exp=1693504098~hmac=571da957c640704991a97f068f6187682f5cd5125994d80ef5beef1df3702b84"); +} + +.ground-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-trazos-pincel_53876-90926.jpg?w=740&t=st=1693504543~exp=1693505143~hmac=67ef5d7cf2f05e45ef9c39a703ead13550b0b09655f9aec2bdb824dc8faaa81b"); +} + +.psychic-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-geometrico-abstracto_1035-18531.jpg?w=740&t=st=1693502696~exp=1693503296~hmac=0dee159bbda0f3e9a87dd8cc363e38d70a0d865bf546bd4484b6fee310b5622d"); +} + +.bug-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-baja-poli_53876-66347.jpg?w=740&t=st=1693503785~exp=1693504385~hmac=3c717a884554e07a408c0d84dd6cbaad288a02483d1e305b75d4e282423c3a92"); +} + +.ghost-bg { + background-image: url("https://th.bing.com/th/id/R.dd2aa52753de03beeab464a5f18608ab?rik=6N3sl%2bKTel0oaw&pid=ImgRaw&r=0"); +} + +.steel-bg { + background-image: url("https://img.freepik.com/vector-gratis/diseno-monocromo-low-poly_1048-17214.jpg?w=740&t=st=1693503596~exp=1693504196~hmac=b19755e2ad2bd95f9385c3b303cbbab82d6cdeae9661ffd2b919044978478b8d"); +} + +.dragon-bg { + background-image: url("https://img.freepik.com/vector-gratis/diseno-fondo-moderno-azul-3d_53876-87397.jpg?w=740&t=st=1693504630~exp=1693505230~hmac=e670d4ba6c59abefa2f654e6206eeb436ae3a6d8ce8c6a2140ecbd22c7582bca"); +} + +.rock-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-geometrico-naranja-claro_53876-113904.jpg?w=740&t=st=1693504501~exp=1693505101~hmac=f387d4a3abd36800e082589eb698c4fbc4160064491e05cebc658c48fffc2c00"); +} + +.dark-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-monocromatico-blanco_23-2149000661.jpg?w=740&t=st=1693504854~exp=1693505454~hmac=10800c380a849f4dd623237867c0cbab62ada118ff566a1aa623dc65580a1e34"); +} + +.fairy-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-poligonal-diseno-plano_23-2148928379.jpg?w=740&t=st=1693504118~exp=1693504718~hmac=d99848571cc93fad29bc045d12c8ffee3b361d246cb540be482bbad0947590da"); +} + +.poison-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-morado-degradado_23-2148902728.jpg?w=740&t=st=1693504686~exp=1693505286~hmac=f870fee3fd3417371b4a5420575a5d28022a3ed71de5fbbb4347a142f315d061"); +} + +.ice-bg { + background-image: url("https://img.freepik.com/vector-gratis/fondo-diseno-abstracto_1048-8430.jpg?w=740&t=st=1693504652~exp=1693505252~hmac=97e046e1550086e4617b3ec9dd51a5075bc1a4e2fc83d336b708a4da87d167f1"); } \ No newline at end of file From 9dad068facf81e00b00bb28765b17d3d451cd282 Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Thu, 31 Aug 2023 15:41:53 -0500 Subject: [PATCH 32/36] =?UTF-8?q?cambio=20en=20el=20dise=C3=B1o=20de=20dia?= =?UTF-8?q?log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.js | 2 +- src/style.css | 23 +++++++++-------------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/main.js b/src/main.js index 92a8ca28..abac7b8e 100644 --- a/src/main.js +++ b/src/main.js @@ -10,7 +10,7 @@ function pokemonHtml(data) { html += `
${pokemon.name} -

${pokemon.name}

+

${pokemon.name}

`; }); diff --git a/src/style.css b/src/style.css index 55afed2e..9f3aaba3 100644 --- a/src/style.css +++ b/src/style.css @@ -105,6 +105,10 @@ ul { /* Borde redondeado */ } + #boxName { + color: #ffffff; + +} /* Estilos para campos de entrada */ input { border-radius: 10px; @@ -224,13 +228,14 @@ datalist { position: fixed; - margin-top: 50px; + margin-top: 40px; top: 50%; left: 50%; margin-bottom: 50px; transform: translate(-50%, -50%); - border-radius: 50px; - bac url("https://img.freepik.com/vector-gratis/fondo-abstracto-azul-formas-geometricas_1035-17545.jpg?w=740&t=st=1693497939~exp=1693498539~hmac=3d356200835e4a0475514aad3e731ef922989dc31947d5526e57023997c99e2d"); + border-radius: 30px; + width: 500px; + height: 400px; border: 1px solid #ccc; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); text-align: center; @@ -242,7 +247,7 @@ datalist { height: auto; } -#dialog #dialogClose { +#dialogClose { margin-top: 10px; background-color: #219094; color: white; @@ -251,17 +256,7 @@ datalist { cursor: pointer; } -.pokemon-dialog { - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - padding: 20px; - background-color: white; - border: 1px solid #ccc; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); -} .pokemon-dialog button.close { position: absolute; From 20498a44facadc36134d074aa746e8b0cc8c1f20 Mon Sep 17 00:00:00 2001 From: Malui Gomez Date: Thu, 31 Aug 2023 14:44:26 -0600 Subject: [PATCH 33/36] cambio de orden para funcion de ordenado --- src/data.js | 20 ++--- src/index.html | 181 ++++++++++++++++++++++++---------------------- test/data.spec.js | 2 +- 3 files changed, 105 insertions(+), 98 deletions(-) diff --git a/src/data.js b/src/data.js index d7a40b51..f35272b7 100644 --- a/src/data.js +++ b/src/data.js @@ -8,16 +8,6 @@ import pokedex from "./data/pokemon/pokemon.js"; //De lo contrario, filtra los Pokémon por el tipo especificado y devuelve los resultados. const pokeData = { - sortAscendingByNum: function (pokemonArray) { - const orderedList = pokemonArray.sort((a, b) => a.num - b.num); - return orderedList; - }, - - sortDescendingByNum: function (pokemonArray) { - const orderedList = pokemonArray.sort((a, b) => b.num - a.num); - return orderedList; - }, - // Función para filtrar Pokémon por tipo filterByType: function (type) { if (type === "") { @@ -67,6 +57,16 @@ const pokeData = { // }, // Function to sort and render Pokémon based on the selected order + sortAscendingByNum: function (pokemonArray) { + const orderedList = pokemonArray.sort((a, b) => a.num - b.num); + return orderedList; + }, + + sortDescendingByNum: function (pokemonArray) { + const orderedList = pokemonArray.sort((a, b) => b.num - a.num); + return orderedList; + }, + orderAndUpdateList: function (selectedOrder, section) { let currentPokemonList = section.innerHTML ? Array.from(section.children) diff --git a/src/index.html b/src/index.html index ae33b95c..8b83ec5d 100644 --- a/src/index.html +++ b/src/index.html @@ -1,94 +1,101 @@ + + + Data Lovers - Pokemon Go + + + + + - - - Data Lovers - Pokemon Go - - - - - + +
+ +

Everything you need to know to become the best Pokemon Master!

+
+
+ + + +
+

+

+ Pokemon Image +

+
+
+

Resistance & Weaknesses

+

+
+
+

Attacks

+

+
+
+

Evolutions

+

+
+ + +
- -
-
-

-

- Pokemon Image -

-
-
-

Resistance & Weaknesses

-

-
-
-

Attacks

-

-
-
-

Evolutions

-

-
- -
-
+
+
-
-
- -
- - - - \ No newline at end of file +
+ + + diff --git a/test/data.spec.js b/test/data.spec.js index 6b56d554..590ec290 100644 --- a/test/data.spec.js +++ b/test/data.spec.js @@ -43,7 +43,7 @@ describe("filterByPokemonName", () => { expect(filteredPokemons).toEqual([{ name: "charmander", type: ["fire"] }]); }); }); - +//--------testing split describe("orderAndUpdateList", () => { it("should sort an array of Pokémons in ascending order by number", () => { const inputArray = [ From 805be70995ea4ac928b99faa42d10be172fc0cb9 Mon Sep 17 00:00:00 2001 From: Malui Gomez Date: Thu, 31 Aug 2023 15:11:08 -0600 Subject: [PATCH 34/36] ajuste de pruebas unitarias, 4 passed, 2 failed, faltan pruebas para ordenado alfabetico ascendente y descendente --- test/data.spec.js | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/test/data.spec.js b/test/data.spec.js index 590ec290..d693a670 100644 --- a/test/data.spec.js +++ b/test/data.spec.js @@ -9,22 +9,27 @@ describe("filterByType", () => { ]; const filteredPokemons = pokeData.filterByType("fire", testFilter); - expect(filteredPokemons).toEqual([{ name: "charmander", type: ["fire"] }]); + + expect(filteredPokemons).toEqual( + expect.arrayContaining([ + expect.objectContaining({ name: "charmander", type: ["fire"] }), + ]) + ); }); }); -describe("getPokemonNames", () => { - it("returns an array of Pokémon names", () => { - const testFilter = [ - { name: "bulbasaur", type: ["grass", "poison"] }, - { name: "charmander", type: ["fire"] }, - { name: "squirtle", type: ["water"] }, - ]; +// describe("getPokemonNames", () => { +// it("returns an array of Pokémon names", () => { +// const testFilter = [ +// { name: "bulbasaur", type: ["grass", "poison"] }, +// { name: "charmander", type: ["fire"] }, +// { name: "squirtle", type: ["water"] }, +// ]; - const pokemonNames = pokeData.getPokemonNames(testFilter); - expect(pokemonNames).toEqual(["bulbasaur", "charmander", "squirtle"]); - }); -}); +// const pokemonNames = pokeData.getPokemonNames(testFilter); +// expect(pokemonNames).toEqual(["bulbasaur", "charmander", "squirtle"]); +// }); +// }); describe("filterByPokemonName", () => { it("filters Pokémon by name", () => { From 66f946766aee921f6f661ef84e202b0f20f25c5f Mon Sep 17 00:00:00 2001 From: LoreBarrera Date: Thu, 31 Aug 2023 21:42:15 -0500 Subject: [PATCH 35/36] css responsive con un max width 900px para moviles --- src/style.css | 91 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 85 insertions(+), 6 deletions(-) diff --git a/src/style.css b/src/style.css index 9f3aaba3..cdf0cf21 100644 --- a/src/style.css +++ b/src/style.css @@ -5,6 +5,7 @@ } */ body { font-family: 'Lato', sans-serif; + flex-wrap: wrap; } /* Estilos para el encabezado */ @@ -20,6 +21,7 @@ header { border-radius: 10px; /* Borde redondeado */ color: white; + } /* Estilos para el logo */ @@ -77,7 +79,7 @@ ul { #descendingButton { margin-left: -65px; /* Mover los botones hacia la izquierda */ -} +} /* Estilos para el menú */ .menu { @@ -91,6 +93,8 @@ ul { /* Ancho completo del menú */ margin-bottom: 10px; /* Margen inferior */ + flex-wrap: wrap; + } /* Estilos para el contenedor de los Pokémon */ @@ -159,14 +163,12 @@ p { /* Estilos generales para botones */ button { border-radius: 10px; - /* Borde redondeado */ + border-color: #24cbaa; border-width: 15px - /* Color del borde */ - padding: 5px 15px; - margin: 10px; text-align: center; font-family: 'Lato', sans-serif; + } select { @@ -351,4 +353,81 @@ datalist { .ice-bg { background-image: url("https://img.freepik.com/vector-gratis/fondo-diseno-abstracto_1048-8430.jpg?w=740&t=st=1693504652~exp=1693505252~hmac=97e046e1550086e4617b3ec9dd51a5075bc1a4e2fc83d336b708a4da87d167f1"); -} \ No newline at end of file +} + + +@media only screen and (max-width : 900px) { + nav.menu { + width: 100%; + display: flex; + flex-direction: column; + align-content: center; + flex-wrap: wrap; + + } + #filterButton, #orderButton, #ascendingButton, #descendingButton { + margin-left: 0px; + } + + select { + width: 100px; + + } + + ul { + display: flex; + list-style-type: none; + } + + li { + flex-direction: column; + } + + li.search { + margin-right: 30px; + } + + h1 { + font-size: 15px; + } + + img#logo { + width: 60px ; + } + + #dialog { + width: 200px; + height: 200px; + } + + #dialog img { + max-width: 50%; + height: auto; + margin: 0px; + } + + .pokemon-info { + max-width: 50%; + height: auto; + } + + p#boxName { + font-size: 15px; + } + + h2 h3 { + font-size: 15px; + margin: 10px; + } + + h2#pokeName { + margin: 5px; + } + + p { + font-size: 10px; + margin: 0px; + } + } + + \ No newline at end of file From 33118a67ecb7a5bf6181ea0d7f22aeb81e90e55a Mon Sep 17 00:00:00 2001 From: Malui Gomez Date: Fri, 1 Sep 2023 11:30:41 -0600 Subject: [PATCH 36/36] ajuste de testing en oh --- src/data.js | 27 ++++++++------------------- src/main.js | 33 ++++++++++++++++++++++++++------- test/data.spec.js | 21 ++++++++++++++------- 3 files changed, 48 insertions(+), 33 deletions(-) diff --git a/src/data.js b/src/data.js index f35272b7..773d4aa1 100644 --- a/src/data.js +++ b/src/data.js @@ -9,7 +9,7 @@ import pokedex from "./data/pokemon/pokemon.js"; const pokeData = { // Función para filtrar Pokémon por tipo - filterByType: function (type) { + filterByType: function (type, pokedex) { if (type === "") { return pokedex.pokemon; // Si el tipo es vacío, devolver todos los Pokémon @@ -67,30 +67,19 @@ const pokeData = { return orderedList; }, - orderAndUpdateList: function (selectedOrder, section) { - let currentPokemonList = section.innerHTML - ? Array.from(section.children) - : []; - - currentPokemonList = currentPokemonList.map((element) => { - const name = element.querySelector("p").textContent; - return pokeData.getPokemonInfoByName(name); - }); - + orderAndUpdateList: function (selectedOrder, data) { + let currentPokemon; if (selectedOrder === "a-z") { - currentPokemonList.sort((a, b) => a.name.localeCompare(b.name)); + currentPokemon = data.sort((a, b) => a.name.localeCompare(b.name)); } else if (selectedOrder === "z-a") { - currentPokemonList.sort((a, b) => b.name.localeCompare(a.name)); + currentPokemon = data.sort((a, b) => b.name.localeCompare(a.name)); } else if (selectedOrder === "num1-251") { - currentPokemonList = pokeData.sortAscendingByNum(currentPokemonList); + currentPokemon = data = pokeData.sortAscendingByNum(data); } else if (selectedOrder === "num251-1") { - currentPokemonList = pokeData.sortDescendingByNum(currentPokemonList); + currentPokemon = data = pokeData.sortDescendingByNum(data); } - return currentPokemonList; - // section.innerHTML = pokemonHtml(currentPokemonList); - // }, - // showPokemons(currentPokemonList); + return currentPokemon; }, }; // Exportar el objeto pokeData para su uso en otros archivos diff --git a/src/main.js b/src/main.js index abac7b8e..f1824011 100644 --- a/src/main.js +++ b/src/main.js @@ -36,7 +36,7 @@ const orderButton = document.getElementById("orderButton"); // Obtener referencias a los elementos dentro del dialog const dialog = document.getElementById("dialog"); const pokeName = document.getElementById("pokeName"); -const pokeType =document.getElementById("pokeType") +const pokeType = document.getElementById("pokeType"); const pokeNumber = document.getElementById("pokeNumber"); const pokeImg = document.getElementById("pokeImg"); const resistantWeak = document.getElementById("resistant-Weak"); @@ -70,7 +70,7 @@ function showPokemons(pokemonList) { // Función para mostrar todos los Pokémon function showAllPokemon() { // console.log("showAllPokemon"); - const allPokemon = pokeData.filterByType(""); + const allPokemon = pokeData.filterByType("", pokemon); showPokemons(allPokemon); } @@ -90,7 +90,7 @@ inputField.addEventListener("input", () => { const filteredNames = pokemonNames.filter((name) => name.toLowerCase().includes(inputText) ); - section.innerHTML = pokemonHtml(pokeData.filterByType("")); + section.innerHTML = pokemonHtml(pokeData.filterByType("", pokemon)); }); // Manejar el evento de búsqueda cuando el usuario presiona el botón "Search" @@ -106,7 +106,7 @@ searchButton.addEventListener("click", () => { // Manejar el evento de filtrado por tipo de Pokémon filterButton.addEventListener("click", () => { const selectedType = typeFilter.value; - const filteredPokemon = pokeData.filterByType(selectedType); + const filteredPokemon = pokeData.filterByType(selectedType, pokemon); showPokemons(filteredPokemon); }); @@ -120,7 +120,10 @@ const orderDropdown = document.getElementById("order"); orderButton.addEventListener("click", () => { const selectedOrder = orderDropdown.value; // pokeData.orderAndUpdateList(selectedOrder, section, pokemonHtml); - const pokemonList = pokeData.orderAndUpdateList(selectedOrder, section); + const pokemonList = pokeData.orderAndUpdateList( + selectedOrder, + pokemon.pokemon + ); showPokemons(pokemonList); }); @@ -143,7 +146,6 @@ function showCard(pokemon) { function openDialog(pokemonInfo) { if (pokemonInfo) { - const pokemonType = pokemonInfo.type[0]; dialog.classList.add(`${pokemonType}-bg`); pokeName.textContent = `${pokemonInfo.name}`; @@ -174,7 +176,24 @@ function openDialog(pokemonInfo) { } dialog.querySelector("#dialogClose").addEventListener("click", () => { - dialog.classList.remove("grass-bg", "fire-bg", "normal-bg", "water-bg", "flying-bg", "fighting-bg", "electric-bg", "ground-bg", "psychic-bg", "bug-bg", "ghost-bg", "steel-bg", "dragon-bg", "dark-bg", "fairy-bg", "poison-bg" ); + dialog.classList.remove( + "grass-bg", + "fire-bg", + "normal-bg", + "water-bg", + "flying-bg", + "fighting-bg", + "electric-bg", + "ground-bg", + "psychic-bg", + "bug-bg", + "ghost-bg", + "steel-bg", + "dragon-bg", + "dark-bg", + "fairy-bg", + "poison-bg" + ); dialog.close(); }); diff --git a/test/data.spec.js b/test/data.spec.js index d693a670..754e97b9 100644 --- a/test/data.spec.js +++ b/test/data.spec.js @@ -2,19 +2,25 @@ import pokeData from "../src/data.js"; describe("filterByType", () => { it("filters pokemon by type", () => { - const testFilter = [ - { name: "bulbasaur", type: ["grass", "poison"] }, - { name: "charmander", type: ["fire"] }, - { name: "squirtle", type: ["water"] }, - ]; + const testFilter = { + pokemon: [ + { name: "bulbasaur", type: ["grass", "poison"] }, + { name: "charmander", type: ["fire"] }, + { name: "squirtle", type: ["water"] }, + ], + }; const filteredPokemons = pokeData.filterByType("fire", testFilter); - + // que la funcion existe + expect(typeof pokeData.filterByType).toBe("function"); + // comportamiento deseado expect(filteredPokemons).toEqual( expect.arrayContaining([ expect.objectContaining({ name: "charmander", type: ["fire"] }), ]) ); + // estresar a la funcion + expect(pokeData.filterByType("", testFilter)).toEqual(testFilter.pokemon); }); }); @@ -75,7 +81,7 @@ describe("orderAndUpdateList", () => { { num: 2, name: "Ivysaur" }, { num: 1, name: "Bulbasaur" }, ]; - const sortedArray = pokeData.sortDescendingByNum(inputArray); + const sortedArray = pokeData.orderAndUpdateList("num251-1", inputArray); expect(sortedArray).toEqual(expectedResult); }); it("should sort an array of Pokémon in alphabetical order (A-Z) by name", () => { @@ -90,6 +96,7 @@ describe("orderAndUpdateList", () => { { num: 2, name: "Ivysaur" }, ]; const sortedArray = pokeData.orderAndUpdateList("a-z", inputArray); + // comportamiento deseado expect(sortedArray).toEqual(expectedResult); }); it("should sort an array of Pokémon in reverse alphabetical order (Z-A) by name", () => {