From 9ca7899c726764336a37f3cf00ec3dcc72461225 Mon Sep 17 00:00:00 2001 From: vctorcode Date: Mon, 12 Feb 2024 01:31:09 -0600 Subject: [PATCH 1/3] Solution to the challenge of technical testing. In the readme you will find the checklist of all functionalities done and pending since I have extended the project. --- .../vctorsecond22/.eslintrc.cjs | 20 + .../01-reading-list/vctorsecond22/.gitignore | 27 + .../01-reading-list/vctorsecond22/README.md | 141 + .../vctorsecond22/package-lock.json | 5195 +++++++++++++++++ .../vctorsecond22/package.json | 29 + .../vctorsecond22/public/E-comerce.JPG | Bin 0 -> 109280 bytes .../vctorsecond22/public/card-outline.svg | 1 + .../vctorsecond22/public/cart-check.svg | 4 + .../public/close-circle-outline.svg | 1 + .../vctorsecond22/public/home-outline.svg | 1 + .../vctorsecond22/public/icons8-book.gif | Bin 0 -> 27721 bytes .../vctorsecond22/public/icons8-menu.svg | 1 + .../vctorsecond22/public/icons8-search.svg | 1 + .../tests-examples/demo-todo-app.spec.ts | 437 ++ .../vctorsecond22/tests/example.spec.ts | 18 + .../vctorsecond22/vite.config.js | 7 + 16 files changed, 5883 insertions(+) create mode 100644 pruebas/01-reading-list/vctorsecond22/.eslintrc.cjs create mode 100644 pruebas/01-reading-list/vctorsecond22/.gitignore create mode 100644 pruebas/01-reading-list/vctorsecond22/README.md create mode 100644 pruebas/01-reading-list/vctorsecond22/package-lock.json create mode 100644 pruebas/01-reading-list/vctorsecond22/package.json create mode 100644 pruebas/01-reading-list/vctorsecond22/public/E-comerce.JPG create mode 100644 pruebas/01-reading-list/vctorsecond22/public/card-outline.svg create mode 100644 pruebas/01-reading-list/vctorsecond22/public/cart-check.svg create mode 100644 pruebas/01-reading-list/vctorsecond22/public/close-circle-outline.svg create mode 100644 pruebas/01-reading-list/vctorsecond22/public/home-outline.svg create mode 100644 pruebas/01-reading-list/vctorsecond22/public/icons8-book.gif create mode 100644 pruebas/01-reading-list/vctorsecond22/public/icons8-menu.svg create mode 100644 pruebas/01-reading-list/vctorsecond22/public/icons8-search.svg create mode 100644 pruebas/01-reading-list/vctorsecond22/tests-examples/demo-todo-app.spec.ts create mode 100644 pruebas/01-reading-list/vctorsecond22/tests/example.spec.ts create mode 100644 pruebas/01-reading-list/vctorsecond22/vite.config.js diff --git a/pruebas/01-reading-list/vctorsecond22/.eslintrc.cjs b/pruebas/01-reading-list/vctorsecond22/.eslintrc.cjs new file mode 100644 index 000000000..ee71034ec --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/.eslintrc.cjs @@ -0,0 +1,20 @@ +/* eslint-env node */ + +module.exports = { + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:react/recommended', + 'plugin:react/jsx-runtime', + 'plugin:react-hooks/recommended', + ], + parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, + settings: { react: { version: '18.2' } }, + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/pruebas/01-reading-list/vctorsecond22/.gitignore b/pruebas/01-reading-list/vctorsecond22/.gitignore new file mode 100644 index 000000000..4e525c0ad --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/.gitignore @@ -0,0 +1,27 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +/test-results/ +/playwright-report/ +/playwright/.cache/ diff --git a/pruebas/01-reading-list/vctorsecond22/README.md b/pruebas/01-reading-list/vctorsecond22/README.md new file mode 100644 index 000000000..defe21b99 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/README.md @@ -0,0 +1,141 @@ +# Simulation of an e-commerce. + +> The project was started with the purpose of practicing the main react hooks (useState, useEffect, useRef, useReducer, useMemo) and navigation between views (SPA). + +## Original challenge +https://github.com/midudev/pruebas-tecnicas/blob/main/pruebas/01-reading-list/README.md + +## Built With + +- Html +- Css +- JavaScript +- React + + +## Live Demo (if available) + +https://github.com/vctorsecond22/pruebas-tecnicas + +## Getting Started + +To get a local copy up and running follow these simple example steps. + +### Prerequisites + +--Node +--Npm +Text editor (VsCode) + +### Install + +1. Install NPM packages + + npm install + +### Usage + + npm run dev + +## Author + +👤 **Victor Cruz Mendoza** + +- GitHub: https://github.com/vctorsecond22 +- LinkedIn: https://www.linkedin.com/in/victor-cruz-mendoza24/ + +## 🤝 Contributing + +Contributions, issues, and feature requests are welcome! + +## Show your support + +Give a ⭐️ if you like this project! / ¡Dale un ⭐️ si te gusta este proyecto! + +## Acknowledgments +I thank Miguel Ángel Durán García (midudev) and Jonathan MirCha for all the material provided and the challenges that served as inspiration to develop this project. + + Channel: https://www.youtube.com/playlist?list=PLUofhDIg_38q4D0xNWp7FEHOTcZhjWJ29 + Course: https://www.youtube.com/playlist?list=PLvq-jIkSeTUZ5XcUw8fJPTBKEHEKPMTKk + + +## Check of project + +✔ Visualización de Libros Disponibles: La aplicación debe mostrar una lista de libros disponibles que el usuario pueda revisar. + +✔ Creación de Lista de Lectura: El usuario debe ser capaz de crear una lista de lectura a partir de los libros disponibles. En la UI debe quedar claro qué libros están en la lista de lectura y cuáles no. También debe ser posible mover un libro de la lista de lectura a la lista de disponibles. + +✔ Filtrado de Libros por Género: Los usuarios deben poder filtrar la lista de libros disponibles por género, y se mostrará un contador con el número de libros disponibles, el número de libros en la lista de lectura y el número de libros disponibles en el género seleccionado. + +✔ Sincronización de Estado: Debe haber una sincronización del estado global que refleje el número de libros en la lista de lectura y el número de libros todavía disponibles. Si un libro se mueve de la lista de disponibles a la lista de lectura, el recuento de ambos debe actualizarse en consecuencia. + +✔ Persistencia de Datos: La aplicación debe persistir los datos de la lista de lectura en el almacenamiento local del navegador. Al recargar la página, la lista de lectura debe mantenerse. + +✔ Implementar una funcionalidad de búsqueda en la lista de libros disponibles. + +✔ Añade un nuevo filtro para filtrar los libros por número de páginas. + +X Despliegue: La aplicación debe estar desplegada en algún servicio de hosting gratuito (Netlify, Vercel, Firebase, etc) y debe ser accesible a través de una URL pública. Indica la URL en el README. + +X Test: La aplicación debe tener AL MENOS un test. Haz el test que consideres más importante para tu aplicación. + +X Añadir un componente de error de direccion. + +X Añadir visor del numero de resultados para la renderizacion del store. + +X Problemas de rutas y navegación. + Posible solución: Histoy.push + +X Rediseñar la logica del renderizado condicional de los botones + Posible solución: Ya no renderizar un nuevo componente, solo intercambiar los funciones que se ejecutan dentro del mismo componente. + +X Permitir la reorganización de los libros en la lista de lectura por prioridad. + Posible solución: useMemo + +X Evita que se haga la busqueda continuamente al escribir (debounce) + +X Mejorar la distribucion del form + +X Hay elementos que desencajan al momento de cambiar ancho de la pantalla. + Posible solución: Haz que tu diseño sea responsive(cambiar a grid). + +X Iconorafia, tipografias y paleta de colores + +X Footer page + +X Pensando en equipo: Prepara tu proyecto pensando que cualquier persona de tu equipo puede tener que trabajar en él en el futuro. (scripts en el package.json, mínima documentación en el README, comentarios en el código si es necesario, etc) (faltarian los scripts en el packaje json) + +X Preparado para producción: Asegúrate de que tu aplicación está lista para producción. Minimiza el código, optimiza las imágenes, etc. + +X Desarrollar el codigo de los botones de compra y la pasarela d pago. + +x Sincronización entre pestañas: Si el usuario abre la aplicación en dos pestañas diferentes, los cambios realizados en una pestaña deben reflejarse en la otra. Sin necesidad de usar Backend. (no encuentro como hacer que se ejecute la funcion addToCar dentro del evento storage) + +X POSICIONAMIENTO CEO + +X sustituir el mocking por el endpoint + +X logguin y ventanas modal |portales? + +X Animaciones + +X Drags + +## Issues of accessibility +- Los botones no tienen un nombre accesible + Cuando un botón no tiene un nombre accesible, los lectores de pantalla lo anuncian como "botón", lo que lo hace inutilizable para los usuarios que dependen de lectores de pantalla. + +- Los elementos del formulario no tienen etiquetas asociadas. + Las etiquetas garantizan que los controles de formulario se anuncien correctamente mediante tecnologías de asistencia, como lectores de pantalla. + + +- Los colores de fondo y de primer plano no tienen una relación de contraste suficiente. + El texto de bajo contraste es difícil o imposible de leer para muchos usuarios. + + +## Issues of preformance +- First Contentful Paint 8.0 s +- Largest Contentful Paint 13.7 s +- Total Blocking Time 1,960 ms +- Cumulative Layout Shift 0 +- Speed Index 12.9 s diff --git a/pruebas/01-reading-list/vctorsecond22/package-lock.json b/pruebas/01-reading-list/vctorsecond22/package-lock.json new file mode 100644 index 000000000..ea21603b1 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/package-lock.json @@ -0,0 +1,5195 @@ +{ + "name": "vctorsecond22", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "vctorsecond22", + "version": "0.0.0", + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.14.2" + }, + "devDependencies": { + "@playwright/test": "^1.38.1", + "@types/node": "^20.8.2", + "@types/react": "^18.2.14", + "@types/react-dom": "^18.2.6", + "@vitejs/plugin-react-swc": "^3.3.2", + "eslint": "^8.44.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.1", + "vite": "^4.4.0" + } + }, + "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/@esbuild/android-arm": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.14.tgz", + "integrity": "sha512-blODaaL+lngG5bdK/t4qZcQvq2BBqrABmYwqPPcS5VRxrCSGHb9R/rA3fqxh7R18I7WU4KKv+NYkt22FDfalcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.14.tgz", + "integrity": "sha512-rZ2v+Luba5/3D6l8kofWgTnqE+qsC/L5MleKIKFyllHTKHrNBMqeRCnZI1BtRx8B24xMYxeU32iIddRQqMsOsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.14.tgz", + "integrity": "sha512-qSwh8y38QKl+1Iqg+YhvCVYlSk3dVLk9N88VO71U4FUjtiSFylMWK3Ugr8GC6eTkkP4Tc83dVppt2n8vIdlSGg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.14.tgz", + "integrity": "sha512-9Hl2D2PBeDYZiNbnRKRWuxwHa9v5ssWBBjisXFkVcSP5cZqzZRFBUWEQuqBHO4+PKx4q4wgHoWtfQ1S7rUqJ2Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.14.tgz", + "integrity": "sha512-ZnI3Dg4ElQ6tlv82qLc/UNHtFsgZSKZ7KjsUNAo1BF1SoYDjkGKHJyCrYyWjFecmXpvvG/KJ9A/oe0H12odPLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.14.tgz", + "integrity": "sha512-h3OqR80Da4oQCIa37zl8tU5MwHQ7qgPV0oVScPfKJK21fSRZEhLE4IIVpmcOxfAVmqjU6NDxcxhYaM8aDIGRLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.14.tgz", + "integrity": "sha512-ha4BX+S6CZG4BoH9tOZTrFIYC1DH13UTCRHzFc3GWX74nz3h/N6MPF3tuR3XlsNjMFUazGgm35MPW5tHkn2lzQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.14.tgz", + "integrity": "sha512-5+7vehI1iqru5WRtJyU2XvTOvTGURw3OZxe3YTdE9muNNIdmKAVmSHpB3Vw2LazJk2ifEdIMt/wTWnVe5V98Kg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.14.tgz", + "integrity": "sha512-IXORRe22In7U65NZCzjwAUc03nn8SDIzWCnfzJ6t/8AvGx5zBkcLfknI+0P+hhuftufJBmIXxdSTbzWc8X/V4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.14.tgz", + "integrity": "sha512-BfHlMa0nibwpjG+VXbOoqJDmFde4UK2gnW351SQ2Zd4t1N3zNdmUEqRkw/srC1Sa1DRBE88Dbwg4JgWCbNz/FQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.14.tgz", + "integrity": "sha512-j2/Ex++DRUWIAaUDprXd3JevzGtZ4/d7VKz+AYDoHZ3HjJzCyYBub9CU1wwIXN+viOP0b4VR3RhGClsvyt/xSw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.14.tgz", + "integrity": "sha512-qn2+nc+ZCrJmiicoAnJXJJkZWt8Nwswgu1crY7N+PBR8ChBHh89XRxj38UU6Dkthl2yCVO9jWuafZ24muzDC/A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.14.tgz", + "integrity": "sha512-aGzXzd+djqeEC5IRkDKt3kWzvXoXC6K6GyYKxd+wsFJ2VQYnOWE954qV2tvy5/aaNrmgPTb52cSCHFE+Z7Z0yg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.14.tgz", + "integrity": "sha512-8C6vWbfr0ygbAiMFLS6OPz0BHvApkT2gCboOGV76YrYw+sD/MQJzyITNsjZWDXJwPu9tjrFQOVG7zijRzBCnLw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.14.tgz", + "integrity": "sha512-G/Lf9iu8sRMM60OVGOh94ZW2nIStksEcITkXdkD09/T6QFD/o+g0+9WVyR/jajIb3A0LvBJ670tBnGe1GgXMgw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.14.tgz", + "integrity": "sha512-TBgStYBQaa3EGhgqIDM+ECnkreb0wkcKqL7H6m+XPcGUoU4dO7dqewfbm0mWEQYH3kzFHrzjOFNpSAVzDZRSJw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.14.tgz", + "integrity": "sha512-stvCcjyCQR2lMTroqNhAbvROqRjxPEq0oQ380YdXxA81TaRJEucH/PzJ/qsEtsHgXlWFW6Ryr/X15vxQiyRXVg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.14.tgz", + "integrity": "sha512-apAOJF14CIsN5ht1PA57PboEMsNV70j3FUdxLmA2liZ20gEQnfTG5QU0FhENo5nwbTqCB2O3WDsXAihfODjHYw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.14.tgz", + "integrity": "sha512-fYRaaS8mDgZcGybPn2MQbn1ZNZx+UXFSUoS5Hd2oEnlsyUcr/l3c6RnXf1bLDRKKdLRSabTmyCy7VLQ7VhGdOQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.14.tgz", + "integrity": "sha512-1c44RcxKEJPrVj62XdmYhxXaU/V7auELCmnD+Ri+UCt+AGxTvzxl9uauQhrFso8gj6ZV1DaORV0sT9XSHOAk8Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.14.tgz", + "integrity": "sha512-EXAFttrdAxZkFQmpvcAQ2bywlWUsONp/9c2lcfvPUhu8vXBBenCXpoq9YkUvVP639ld3YGiYx0YUQ6/VQz3Maw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.14.tgz", + "integrity": "sha512-K0QjGbcskx+gY+qp3v4/940qg8JitpXbdxFhRDA1aYoNaPff88+aEwoq45aqJ+ogpxQxmU0ZTjgnrQD/w8iiUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "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.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "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/js": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "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/@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/@playwright/test": { + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.38.1.tgz", + "integrity": "sha512-NqRp8XMwj3AK+zKLbZShl0r/9wKgzqI/527bkptKXomtuo+dOjU9NdMASQ8DNC9z9zLOMbG53T4eihYr3XR+BQ==", + "dev": true, + "dependencies": { + "playwright": "1.38.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@remix-run/router": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz", + "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@swc/core": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.70.tgz", + "integrity": "sha512-LWVWlEDLlOD25PvA2NEz41UzdwXnlDyBiZbe69s3zM0DfCPwZXLUm79uSqH9ItsOjTrXSL5/1+XUL6C/BZwChA==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.70", + "@swc/core-darwin-x64": "1.3.70", + "@swc/core-linux-arm-gnueabihf": "1.3.70", + "@swc/core-linux-arm64-gnu": "1.3.70", + "@swc/core-linux-arm64-musl": "1.3.70", + "@swc/core-linux-x64-gnu": "1.3.70", + "@swc/core-linux-x64-musl": "1.3.70", + "@swc/core-win32-arm64-msvc": "1.3.70", + "@swc/core-win32-ia32-msvc": "1.3.70", + "@swc/core-win32-x64-msvc": "1.3.70" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.70.tgz", + "integrity": "sha512-31+mcl0dgdRHvZRjhLOK9V6B+qJ7nxDZYINr9pBlqGWxknz37Vld5KK19Kpr79r0dXUZvaaelLjCnJk9dA2PcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.70.tgz", + "integrity": "sha512-GMFJ65E18zQC80t0os+TZvI+8lbRuitncWVge/RXmXbVLPRcdykP4EJ87cqzcG5Ah0z18/E0T+ixD6jHRisrYQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.70.tgz", + "integrity": "sha512-wjhCwS8LCiAq2VedF1b4Bryyw68xZnfMED4pLRazAl8BaUlDFANfRBORNunxlfHQj4V3x39IaiLgCZRHMdzXBg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.70.tgz", + "integrity": "sha512-9D/Rx67cAOnMiexvCqARxvhj7coRajTp5HlJHuf+rfwMqI2hLhpO9/pBMQxBUAWxODO/ksQ/OF+GJRjmtWw/2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.70.tgz", + "integrity": "sha512-gkjxBio7XD+1GlQVVyPP/qeFkLu83VhRHXaUrkNYpr5UZG9zZurBERT9nkS6Y+ouYh+Q9xmw57aIyd2KvD2zqQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.70.tgz", + "integrity": "sha512-/nCly+V4xfMVwfEUoLLAukxUSot/RcSzsf6GdsGTjFcrp5sZIntAjokYRytm3VT1c2TK321AfBorsi9R5w8Y7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.70.tgz", + "integrity": "sha512-HoOsPJbt361KGKaivAK0qIiYARkhzlxeAfvF5NlnKxkIMOZpQ46Lwj3tR0VWohKbrhS+cYKFlVuDi5XnDkx0XA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.70.tgz", + "integrity": "sha512-hm4IBK/IaRil+aj1cWU6f0GyAdHpw/Jr5nyFYLM2c/tt7w2t5hgb8NjzM2iM84lOClrig1fG6edj2vCF1dFzNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.70.tgz", + "integrity": "sha512-5cgKUKIT/9Fp5fCA+zIjYCQ4dSvjFYOeWGZR3QiTXGkC4bGa1Ji9SEPyeIAX0iruUnKjYaZB9RvHK2tNn7RLrQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.70.tgz", + "integrity": "sha512-LE8lW46+TQBzVkn2mHBlk8DIElPIZ2dO5P8AbJiARNBAnlqQWu67l9gWM89UiZ2l33J2cI37pHzON3tKnT8f9g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@types/node": { + "version": "20.8.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz", + "integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.15", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.15.tgz", + "integrity": "sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", + "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz", + "integrity": "sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==", + "dev": true, + "dependencies": { + "@swc/core": "^1.3.61" + }, + "peerDependencies": { + "vite": "^4" + } + }, + "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-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/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-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": "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/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/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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/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/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/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/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/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true + }, + "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/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/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/es-abstract": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.14.tgz", + "integrity": "sha512-uNPj5oHPYmj+ZhSQeYQVFZ+hAlJZbAGOmmILWIqrGvPVlNLbyOvU5Bu6Woi8G8nskcx0vwY0iFoMPrzT86Ko+w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.14", + "@esbuild/android-arm64": "0.18.14", + "@esbuild/android-x64": "0.18.14", + "@esbuild/darwin-arm64": "0.18.14", + "@esbuild/darwin-x64": "0.18.14", + "@esbuild/freebsd-arm64": "0.18.14", + "@esbuild/freebsd-x64": "0.18.14", + "@esbuild/linux-arm": "0.18.14", + "@esbuild/linux-arm64": "0.18.14", + "@esbuild/linux-ia32": "0.18.14", + "@esbuild/linux-loong64": "0.18.14", + "@esbuild/linux-mips64el": "0.18.14", + "@esbuild/linux-ppc64": "0.18.14", + "@esbuild/linux-riscv64": "0.18.14", + "@esbuild/linux-s390x": "0.18.14", + "@esbuild/linux-x64": "0.18.14", + "@esbuild/netbsd-x64": "0.18.14", + "@esbuild/openbsd-x64": "0.18.14", + "@esbuild/sunos-x64": "0.18.14", + "@esbuild/win32-arm64": "0.18.14", + "@esbuild/win32-ia32": "0.18.14", + "@esbuild/win32-x64": "0.18.14" + } + }, + "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": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "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.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.6.0", + "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-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz", + "integrity": "sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", + "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", + "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.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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/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/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/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/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/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/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/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "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/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "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/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-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-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "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/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "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/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/jsx-ast-utils": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz", + "integrity": "sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "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/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/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/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "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/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/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "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/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/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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-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/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/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/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-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/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/playwright": { + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.38.1.tgz", + "integrity": "sha512-oRMSJmZrOu1FP5iu3UrCx8JEFRIMxLDM0c/3o4bpzU5Tz97BypefWf7TuTNPWeCe279TPal5RtPPZ+9lW/Qkow==", + "dev": true, + "dependencies": { + "playwright-core": "1.38.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.38.1.tgz", + "integrity": "sha512-tQqNFUKa3OfMf4b2jQ7aGLB8o9bS3bOY0yMEtldtC2+spf8QXG9zvXLTXUeRsoNuxEYMgLYR+NXfAa1rjKRcrg==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/postcss": { + "version": "8.4.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", + "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "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/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/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/react-router": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.14.2.tgz", + "integrity": "sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==", + "dependencies": { + "@remix-run/router": "1.7.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.2.tgz", + "integrity": "sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==", + "dependencies": { + "@remix-run/router": "1.7.2", + "react-router": "6.14.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.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-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/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/rollup": { + "version": "3.26.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.3.tgz", + "integrity": "sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "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-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "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/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/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-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/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/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/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-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/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/vite": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.4.tgz", + "integrity": "sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.25", + "rollup": "^3.25.2" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "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/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/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" + } + } + }, + "dependencies": { + "@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 + }, + "@esbuild/android-arm": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.14.tgz", + "integrity": "sha512-blODaaL+lngG5bdK/t4qZcQvq2BBqrABmYwqPPcS5VRxrCSGHb9R/rA3fqxh7R18I7WU4KKv+NYkt22FDfalcg==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.14.tgz", + "integrity": "sha512-rZ2v+Luba5/3D6l8kofWgTnqE+qsC/L5MleKIKFyllHTKHrNBMqeRCnZI1BtRx8B24xMYxeU32iIddRQqMsOsg==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.14.tgz", + "integrity": "sha512-qSwh8y38QKl+1Iqg+YhvCVYlSk3dVLk9N88VO71U4FUjtiSFylMWK3Ugr8GC6eTkkP4Tc83dVppt2n8vIdlSGg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.14.tgz", + "integrity": "sha512-9Hl2D2PBeDYZiNbnRKRWuxwHa9v5ssWBBjisXFkVcSP5cZqzZRFBUWEQuqBHO4+PKx4q4wgHoWtfQ1S7rUqJ2Q==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.14.tgz", + "integrity": "sha512-ZnI3Dg4ElQ6tlv82qLc/UNHtFsgZSKZ7KjsUNAo1BF1SoYDjkGKHJyCrYyWjFecmXpvvG/KJ9A/oe0H12odPLQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.14.tgz", + "integrity": "sha512-h3OqR80Da4oQCIa37zl8tU5MwHQ7qgPV0oVScPfKJK21fSRZEhLE4IIVpmcOxfAVmqjU6NDxcxhYaM8aDIGRLw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.14.tgz", + "integrity": "sha512-ha4BX+S6CZG4BoH9tOZTrFIYC1DH13UTCRHzFc3GWX74nz3h/N6MPF3tuR3XlsNjMFUazGgm35MPW5tHkn2lzQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.14.tgz", + "integrity": "sha512-5+7vehI1iqru5WRtJyU2XvTOvTGURw3OZxe3YTdE9muNNIdmKAVmSHpB3Vw2LazJk2ifEdIMt/wTWnVe5V98Kg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.14.tgz", + "integrity": "sha512-IXORRe22In7U65NZCzjwAUc03nn8SDIzWCnfzJ6t/8AvGx5zBkcLfknI+0P+hhuftufJBmIXxdSTbzWc8X/V4w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.14.tgz", + "integrity": "sha512-BfHlMa0nibwpjG+VXbOoqJDmFde4UK2gnW351SQ2Zd4t1N3zNdmUEqRkw/srC1Sa1DRBE88Dbwg4JgWCbNz/FQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.14.tgz", + "integrity": "sha512-j2/Ex++DRUWIAaUDprXd3JevzGtZ4/d7VKz+AYDoHZ3HjJzCyYBub9CU1wwIXN+viOP0b4VR3RhGClsvyt/xSw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.14.tgz", + "integrity": "sha512-qn2+nc+ZCrJmiicoAnJXJJkZWt8Nwswgu1crY7N+PBR8ChBHh89XRxj38UU6Dkthl2yCVO9jWuafZ24muzDC/A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.14.tgz", + "integrity": "sha512-aGzXzd+djqeEC5IRkDKt3kWzvXoXC6K6GyYKxd+wsFJ2VQYnOWE954qV2tvy5/aaNrmgPTb52cSCHFE+Z7Z0yg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.14.tgz", + "integrity": "sha512-8C6vWbfr0ygbAiMFLS6OPz0BHvApkT2gCboOGV76YrYw+sD/MQJzyITNsjZWDXJwPu9tjrFQOVG7zijRzBCnLw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.14.tgz", + "integrity": "sha512-G/Lf9iu8sRMM60OVGOh94ZW2nIStksEcITkXdkD09/T6QFD/o+g0+9WVyR/jajIb3A0LvBJ670tBnGe1GgXMgw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.14.tgz", + "integrity": "sha512-TBgStYBQaa3EGhgqIDM+ECnkreb0wkcKqL7H6m+XPcGUoU4dO7dqewfbm0mWEQYH3kzFHrzjOFNpSAVzDZRSJw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.14.tgz", + "integrity": "sha512-stvCcjyCQR2lMTroqNhAbvROqRjxPEq0oQ380YdXxA81TaRJEucH/PzJ/qsEtsHgXlWFW6Ryr/X15vxQiyRXVg==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.14.tgz", + "integrity": "sha512-apAOJF14CIsN5ht1PA57PboEMsNV70j3FUdxLmA2liZ20gEQnfTG5QU0FhENo5nwbTqCB2O3WDsXAihfODjHYw==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.14.tgz", + "integrity": "sha512-fYRaaS8mDgZcGybPn2MQbn1ZNZx+UXFSUoS5Hd2oEnlsyUcr/l3c6RnXf1bLDRKKdLRSabTmyCy7VLQ7VhGdOQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.14.tgz", + "integrity": "sha512-1c44RcxKEJPrVj62XdmYhxXaU/V7auELCmnD+Ri+UCt+AGxTvzxl9uauQhrFso8gj6ZV1DaORV0sT9XSHOAk8Q==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.14.tgz", + "integrity": "sha512-EXAFttrdAxZkFQmpvcAQ2bywlWUsONp/9c2lcfvPUhu8vXBBenCXpoq9YkUvVP639ld3YGiYx0YUQ6/VQz3Maw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.14.tgz", + "integrity": "sha512-K0QjGbcskx+gY+qp3v4/940qg8JitpXbdxFhRDA1aYoNaPff88+aEwoq45aqJ+ogpxQxmU0ZTjgnrQD/w8iiUg==", + "dev": true, + "optional": true + }, + "@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, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", + "dev": true, + "requires": { + "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" + } + }, + "@eslint/js": { + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", + "dev": true + }, + "@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, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@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 + }, + "@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 + }, + "@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, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@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 + }, + "@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, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@playwright/test": { + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.38.1.tgz", + "integrity": "sha512-NqRp8XMwj3AK+zKLbZShl0r/9wKgzqI/527bkptKXomtuo+dOjU9NdMASQ8DNC9z9zLOMbG53T4eihYr3XR+BQ==", + "dev": true, + "requires": { + "playwright": "1.38.1" + } + }, + "@remix-run/router": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz", + "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==" + }, + "@swc/core": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.70.tgz", + "integrity": "sha512-LWVWlEDLlOD25PvA2NEz41UzdwXnlDyBiZbe69s3zM0DfCPwZXLUm79uSqH9ItsOjTrXSL5/1+XUL6C/BZwChA==", + "dev": true, + "requires": { + "@swc/core-darwin-arm64": "1.3.70", + "@swc/core-darwin-x64": "1.3.70", + "@swc/core-linux-arm-gnueabihf": "1.3.70", + "@swc/core-linux-arm64-gnu": "1.3.70", + "@swc/core-linux-arm64-musl": "1.3.70", + "@swc/core-linux-x64-gnu": "1.3.70", + "@swc/core-linux-x64-musl": "1.3.70", + "@swc/core-win32-arm64-msvc": "1.3.70", + "@swc/core-win32-ia32-msvc": "1.3.70", + "@swc/core-win32-x64-msvc": "1.3.70" + } + }, + "@swc/core-darwin-arm64": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.70.tgz", + "integrity": "sha512-31+mcl0dgdRHvZRjhLOK9V6B+qJ7nxDZYINr9pBlqGWxknz37Vld5KK19Kpr79r0dXUZvaaelLjCnJk9dA2PcQ==", + "dev": true, + "optional": true + }, + "@swc/core-darwin-x64": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.70.tgz", + "integrity": "sha512-GMFJ65E18zQC80t0os+TZvI+8lbRuitncWVge/RXmXbVLPRcdykP4EJ87cqzcG5Ah0z18/E0T+ixD6jHRisrYQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.70.tgz", + "integrity": "sha512-wjhCwS8LCiAq2VedF1b4Bryyw68xZnfMED4pLRazAl8BaUlDFANfRBORNunxlfHQj4V3x39IaiLgCZRHMdzXBg==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.70.tgz", + "integrity": "sha512-9D/Rx67cAOnMiexvCqARxvhj7coRajTp5HlJHuf+rfwMqI2hLhpO9/pBMQxBUAWxODO/ksQ/OF+GJRjmtWw/2A==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.70.tgz", + "integrity": "sha512-gkjxBio7XD+1GlQVVyPP/qeFkLu83VhRHXaUrkNYpr5UZG9zZurBERT9nkS6Y+ouYh+Q9xmw57aIyd2KvD2zqQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.70.tgz", + "integrity": "sha512-/nCly+V4xfMVwfEUoLLAukxUSot/RcSzsf6GdsGTjFcrp5sZIntAjokYRytm3VT1c2TK321AfBorsi9R5w8Y7Q==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.70.tgz", + "integrity": "sha512-HoOsPJbt361KGKaivAK0qIiYARkhzlxeAfvF5NlnKxkIMOZpQ46Lwj3tR0VWohKbrhS+cYKFlVuDi5XnDkx0XA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.70.tgz", + "integrity": "sha512-hm4IBK/IaRil+aj1cWU6f0GyAdHpw/Jr5nyFYLM2c/tt7w2t5hgb8NjzM2iM84lOClrig1fG6edj2vCF1dFzNQ==", + "dev": true, + "optional": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.70.tgz", + "integrity": "sha512-5cgKUKIT/9Fp5fCA+zIjYCQ4dSvjFYOeWGZR3QiTXGkC4bGa1Ji9SEPyeIAX0iruUnKjYaZB9RvHK2tNn7RLrQ==", + "dev": true, + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.3.70", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.70.tgz", + "integrity": "sha512-LE8lW46+TQBzVkn2mHBlk8DIElPIZ2dO5P8AbJiARNBAnlqQWu67l9gWM89UiZ2l33J2cI37pHzON3tKnT8f9g==", + "dev": true, + "optional": true + }, + "@types/node": { + "version": "20.8.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz", + "integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "@types/react": { + "version": "18.2.15", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.15.tgz", + "integrity": "sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", + "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "dev": true + }, + "@vitejs/plugin-react-swc": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz", + "integrity": "sha512-VJFWY5sfoZerQRvJrh518h3AcQt6f/yTuWn4/TRB+dqmYU0NX1qz7qM5Wfd+gOQqUzQW4gxKqKN3KpE/P3+zrA==", + "dev": true, + "requires": { + "@swc/core": "^1.3.61" + } + }, + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true + }, + "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, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "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 + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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 + }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, + "array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + } + }, + "array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "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 + }, + "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, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "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, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "es-abstract": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" + } + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "esbuild": { + "version": "0.18.14", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.14.tgz", + "integrity": "sha512-uNPj5oHPYmj+ZhSQeYQVFZ+hAlJZbAGOmmILWIqrGvPVlNLbyOvU5Bu6Woi8G8nskcx0vwY0iFoMPrzT86Ko+w==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.14", + "@esbuild/android-arm64": "0.18.14", + "@esbuild/android-x64": "0.18.14", + "@esbuild/darwin-arm64": "0.18.14", + "@esbuild/darwin-x64": "0.18.14", + "@esbuild/freebsd-arm64": "0.18.14", + "@esbuild/freebsd-x64": "0.18.14", + "@esbuild/linux-arm": "0.18.14", + "@esbuild/linux-arm64": "0.18.14", + "@esbuild/linux-ia32": "0.18.14", + "@esbuild/linux-loong64": "0.18.14", + "@esbuild/linux-mips64el": "0.18.14", + "@esbuild/linux-ppc64": "0.18.14", + "@esbuild/linux-riscv64": "0.18.14", + "@esbuild/linux-s390x": "0.18.14", + "@esbuild/linux-x64": "0.18.14", + "@esbuild/netbsd-x64": "0.18.14", + "@esbuild/openbsd-x64": "0.18.14", + "@esbuild/sunos-x64": "0.18.14", + "@esbuild/win32-arm64": "0.18.14", + "@esbuild/win32-ia32": "0.18.14", + "@esbuild/win32-x64": "0.18.14" + } + }, + "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 + }, + "eslint": { + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "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.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.6.0", + "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" + } + }, + "eslint-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "requires": {} + }, + "eslint-plugin-react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.3.tgz", + "integrity": "sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", + "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true + }, + "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, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "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, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "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 + }, + "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 + }, + "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 + }, + "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, + "requires": { + "reusify": "^1.0.4" + } + }, + "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, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "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, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "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 + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "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 + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "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" + } + }, + "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, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "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 + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "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, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "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, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "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, + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "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, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "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 + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.11" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "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, + "requires": { + "argparse": "^2.0.1" + } + }, + "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 + }, + "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 + }, + "jsx-ast-utils": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz", + "integrity": "sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==", + "dev": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + } + }, + "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, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "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, + "requires": { + "p-locate": "^5.0.0" + } + }, + "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 + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "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 + }, + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "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 + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "requires": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "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, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "requires": { + "@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" + } + }, + "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, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "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, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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, + "requires": { + "callsites": "^3.0.0" + } + }, + "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 + }, + "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 + }, + "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 + }, + "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 + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "playwright": { + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.38.1.tgz", + "integrity": "sha512-oRMSJmZrOu1FP5iu3UrCx8JEFRIMxLDM0c/3o4bpzU5Tz97BypefWf7TuTNPWeCe279TPal5RtPPZ+9lW/Qkow==", + "dev": true, + "requires": { + "fsevents": "2.3.2", + "playwright-core": "1.38.1" + } + }, + "playwright-core": { + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.38.1.tgz", + "integrity": "sha512-tQqNFUKa3OfMf4b2jQ7aGLB8o9bS3bOY0yMEtldtC2+spf8QXG9zvXLTXUeRsoNuxEYMgLYR+NXfAa1rjKRcrg==", + "dev": true + }, + "postcss": { + "version": "8.4.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", + "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", + "dev": true, + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "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 + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "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 + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "react-router": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.14.2.tgz", + "integrity": "sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==", + "requires": { + "@remix-run/router": "1.7.2" + } + }, + "react-router-dom": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.2.tgz", + "integrity": "sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==", + "requires": { + "@remix-run/router": "1.7.2", + "react-router": "6.14.2" + } + }, + "regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + } + }, + "resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "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 + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "3.26.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.3.tgz", + "integrity": "sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "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, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + } + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "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, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "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 + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "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, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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 + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "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 + }, + "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 + }, + "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, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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 + }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "vite": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.4.tgz", + "integrity": "sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==", + "dev": true, + "requires": { + "esbuild": "^0.18.10", + "fsevents": "~2.3.2", + "postcss": "^8.4.25", + "rollup": "^3.25.2" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "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 + }, + "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 + } + } +} diff --git a/pruebas/01-reading-list/vctorsecond22/package.json b/pruebas/01-reading-list/vctorsecond22/package.json new file mode 100644 index 000000000..781e43f48 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/package.json @@ -0,0 +1,29 @@ +{ + "name": "vctorsecond22", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.14.2" + }, + "devDependencies": { + "@playwright/test": "^1.38.1", + "@types/node": "^20.8.2", + "@types/react": "^18.2.14", + "@types/react-dom": "^18.2.6", + "@vitejs/plugin-react-swc": "^3.3.2", + "eslint": "^8.44.0", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.1", + "vite": "^4.4.0" + } +} diff --git a/pruebas/01-reading-list/vctorsecond22/public/E-comerce.JPG b/pruebas/01-reading-list/vctorsecond22/public/E-comerce.JPG new file mode 100644 index 0000000000000000000000000000000000000000..001373cd013a3cdd28ae1a3f2fad1d27a2ab5b08 GIT binary patch literal 109280 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 \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/public/cart-check.svg b/pruebas/01-reading-list/vctorsecond22/public/cart-check.svg new file mode 100644 index 000000000..986706a40 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/public/cart-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/public/close-circle-outline.svg b/pruebas/01-reading-list/vctorsecond22/public/close-circle-outline.svg new file mode 100644 index 000000000..9425beaf4 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/public/close-circle-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/public/home-outline.svg b/pruebas/01-reading-list/vctorsecond22/public/home-outline.svg new file mode 100644 index 000000000..afa27f4cb --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/public/home-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/public/icons8-book.gif b/pruebas/01-reading-list/vctorsecond22/public/icons8-book.gif new file mode 100644 index 0000000000000000000000000000000000000000..57828b4f36dd6a006e863f1344c581dfd8f82a67 GIT binary patch literal 27721 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

YW<4eDAsGik?krhLoPJyJev;l30WU)C_Wfx*sX zFFPFDz$;mM>g2X#lTMtAIn%mr%BP*N?b6R;K03O8e@oAW;}`bE9q1_i;`*tZ?;jdy z(^X%pxVw3{=6bd0VdVF5KSX}__(9aN=Z{~#l>R*J$Em*>uy1}{a$Bu>HfS4ufJ*Kx z$}k8kJEgwU>0#-+us*Nyc4WE3^P+@j{r9@v+#@EkP7f^Tb@%o>FYme9&P)&Kt(WJk zuS^Q5lDY^6*zSsyu=r#t-FvW)Dx wb3u-8ME@8S{_(f?{6GI;c>B9w{?mDT`zvw&(@*8?ZwmU4Kb8MAKbCj?KX>nNaR2}S literal 0 HcmV?d00001 diff --git a/pruebas/01-reading-list/vctorsecond22/public/icons8-menu.svg b/pruebas/01-reading-list/vctorsecond22/public/icons8-menu.svg new file mode 100644 index 000000000..de62f19a3 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/public/icons8-menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/public/icons8-search.svg b/pruebas/01-reading-list/vctorsecond22/public/icons8-search.svg new file mode 100644 index 000000000..7f1664f39 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/public/icons8-search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/tests-examples/demo-todo-app.spec.ts b/pruebas/01-reading-list/vctorsecond22/tests-examples/demo-todo-app.spec.ts new file mode 100644 index 000000000..2fd6016fe --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/tests-examples/demo-todo-app.spec.ts @@ -0,0 +1,437 @@ +import { test, expect, type Page } from '@playwright/test'; + +test.beforeEach(async ({ page }) => { + await page.goto('https://demo.playwright.dev/todomvc'); +}); + +const TODO_ITEMS = [ + 'buy some cheese', + 'feed the cat', + 'book a doctors appointment' +]; + +test.describe('New Todo', () => { + test('should allow me to add todo items', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + // Create 1st todo. + await newTodo.fill(TODO_ITEMS[0]); + await newTodo.press('Enter'); + + // Make sure the list only has one todo item. + await expect(page.getByTestId('todo-title')).toHaveText([ + TODO_ITEMS[0] + ]); + + // Create 2nd todo. + await newTodo.fill(TODO_ITEMS[1]); + await newTodo.press('Enter'); + + // Make sure the list now has two todo items. + await expect(page.getByTestId('todo-title')).toHaveText([ + TODO_ITEMS[0], + TODO_ITEMS[1] + ]); + + await checkNumberOfTodosInLocalStorage(page, 2); + }); + + test('should clear text input field when an item is added', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + // Create one todo item. + await newTodo.fill(TODO_ITEMS[0]); + await newTodo.press('Enter'); + + // Check that input is empty. + await expect(newTodo).toBeEmpty(); + await checkNumberOfTodosInLocalStorage(page, 1); + }); + + test('should append new items to the bottom of the list', async ({ page }) => { + // Create 3 items. + await createDefaultTodos(page); + + // create a todo count locator + const todoCount = page.getByTestId('todo-count') + + // Check test using different methods. + await expect(page.getByText('3 items left')).toBeVisible(); + await expect(todoCount).toHaveText('3 items left'); + await expect(todoCount).toContainText('3'); + await expect(todoCount).toHaveText(/3/); + + // Check all items in one call. + await expect(page.getByTestId('todo-title')).toHaveText(TODO_ITEMS); + await checkNumberOfTodosInLocalStorage(page, 3); + }); +}); + +test.describe('Mark all as completed', () => { + test.beforeEach(async ({ page }) => { + await createDefaultTodos(page); + await checkNumberOfTodosInLocalStorage(page, 3); + }); + + test.afterEach(async ({ page }) => { + await checkNumberOfTodosInLocalStorage(page, 3); + }); + + test('should allow me to mark all items as completed', async ({ page }) => { + // Complete all todos. + await page.getByLabel('Mark all as complete').check(); + + // Ensure all todos have 'completed' class. + await expect(page.getByTestId('todo-item')).toHaveClass(['completed', 'completed', 'completed']); + await checkNumberOfCompletedTodosInLocalStorage(page, 3); + }); + + test('should allow me to clear the complete state of all items', async ({ page }) => { + const toggleAll = page.getByLabel('Mark all as complete'); + // Check and then immediately uncheck. + await toggleAll.check(); + await toggleAll.uncheck(); + + // Should be no completed classes. + await expect(page.getByTestId('todo-item')).toHaveClass(['', '', '']); + }); + + test('complete all checkbox should update state when items are completed / cleared', async ({ page }) => { + const toggleAll = page.getByLabel('Mark all as complete'); + await toggleAll.check(); + await expect(toggleAll).toBeChecked(); + await checkNumberOfCompletedTodosInLocalStorage(page, 3); + + // Uncheck first todo. + const firstTodo = page.getByTestId('todo-item').nth(0); + await firstTodo.getByRole('checkbox').uncheck(); + + // Reuse toggleAll locator and make sure its not checked. + await expect(toggleAll).not.toBeChecked(); + + await firstTodo.getByRole('checkbox').check(); + await checkNumberOfCompletedTodosInLocalStorage(page, 3); + + // Assert the toggle all is checked again. + await expect(toggleAll).toBeChecked(); + }); +}); + +test.describe('Item', () => { + + test('should allow me to mark items as complete', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + // Create two items. + for (const item of TODO_ITEMS.slice(0, 2)) { + await newTodo.fill(item); + await newTodo.press('Enter'); + } + + // Check first item. + const firstTodo = page.getByTestId('todo-item').nth(0); + await firstTodo.getByRole('checkbox').check(); + await expect(firstTodo).toHaveClass('completed'); + + // Check second item. + const secondTodo = page.getByTestId('todo-item').nth(1); + await expect(secondTodo).not.toHaveClass('completed'); + await secondTodo.getByRole('checkbox').check(); + + // Assert completed class. + await expect(firstTodo).toHaveClass('completed'); + await expect(secondTodo).toHaveClass('completed'); + }); + + test('should allow me to un-mark items as complete', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + // Create two items. + for (const item of TODO_ITEMS.slice(0, 2)) { + await newTodo.fill(item); + await newTodo.press('Enter'); + } + + const firstTodo = page.getByTestId('todo-item').nth(0); + const secondTodo = page.getByTestId('todo-item').nth(1); + const firstTodoCheckbox = firstTodo.getByRole('checkbox'); + + await firstTodoCheckbox.check(); + await expect(firstTodo).toHaveClass('completed'); + await expect(secondTodo).not.toHaveClass('completed'); + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + + await firstTodoCheckbox.uncheck(); + await expect(firstTodo).not.toHaveClass('completed'); + await expect(secondTodo).not.toHaveClass('completed'); + await checkNumberOfCompletedTodosInLocalStorage(page, 0); + }); + + test('should allow me to edit an item', async ({ page }) => { + await createDefaultTodos(page); + + const todoItems = page.getByTestId('todo-item'); + const secondTodo = todoItems.nth(1); + await secondTodo.dblclick(); + await expect(secondTodo.getByRole('textbox', { name: 'Edit' })).toHaveValue(TODO_ITEMS[1]); + await secondTodo.getByRole('textbox', { name: 'Edit' }).fill('buy some sausages'); + await secondTodo.getByRole('textbox', { name: 'Edit' }).press('Enter'); + + // Explicitly assert the new text value. + await expect(todoItems).toHaveText([ + TODO_ITEMS[0], + 'buy some sausages', + TODO_ITEMS[2] + ]); + await checkTodosInLocalStorage(page, 'buy some sausages'); + }); +}); + +test.describe('Editing', () => { + test.beforeEach(async ({ page }) => { + await createDefaultTodos(page); + await checkNumberOfTodosInLocalStorage(page, 3); + }); + + test('should hide other controls when editing', async ({ page }) => { + const todoItem = page.getByTestId('todo-item').nth(1); + await todoItem.dblclick(); + await expect(todoItem.getByRole('checkbox')).not.toBeVisible(); + await expect(todoItem.locator('label', { + hasText: TODO_ITEMS[1], + })).not.toBeVisible(); + await checkNumberOfTodosInLocalStorage(page, 3); + }); + + test('should save edits on blur', async ({ page }) => { + const todoItems = page.getByTestId('todo-item'); + await todoItems.nth(1).dblclick(); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).fill('buy some sausages'); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).dispatchEvent('blur'); + + await expect(todoItems).toHaveText([ + TODO_ITEMS[0], + 'buy some sausages', + TODO_ITEMS[2], + ]); + await checkTodosInLocalStorage(page, 'buy some sausages'); + }); + + test('should trim entered text', async ({ page }) => { + const todoItems = page.getByTestId('todo-item'); + await todoItems.nth(1).dblclick(); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).fill(' buy some sausages '); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).press('Enter'); + + await expect(todoItems).toHaveText([ + TODO_ITEMS[0], + 'buy some sausages', + TODO_ITEMS[2], + ]); + await checkTodosInLocalStorage(page, 'buy some sausages'); + }); + + test('should remove the item if an empty text string was entered', async ({ page }) => { + const todoItems = page.getByTestId('todo-item'); + await todoItems.nth(1).dblclick(); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).fill(''); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).press('Enter'); + + await expect(todoItems).toHaveText([ + TODO_ITEMS[0], + TODO_ITEMS[2], + ]); + }); + + test('should cancel edits on escape', async ({ page }) => { + const todoItems = page.getByTestId('todo-item'); + await todoItems.nth(1).dblclick(); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).fill('buy some sausages'); + await todoItems.nth(1).getByRole('textbox', { name: 'Edit' }).press('Escape'); + await expect(todoItems).toHaveText(TODO_ITEMS); + }); +}); + +test.describe('Counter', () => { + test('should display the current number of todo items', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + // create a todo count locator + const todoCount = page.getByTestId('todo-count') + + await newTodo.fill(TODO_ITEMS[0]); + await newTodo.press('Enter'); + + await expect(todoCount).toContainText('1'); + + await newTodo.fill(TODO_ITEMS[1]); + await newTodo.press('Enter'); + await expect(todoCount).toContainText('2'); + + await checkNumberOfTodosInLocalStorage(page, 2); + }); +}); + +test.describe('Clear completed button', () => { + test.beforeEach(async ({ page }) => { + await createDefaultTodos(page); + }); + + test('should display the correct text', async ({ page }) => { + await page.locator('.todo-list li .toggle').first().check(); + await expect(page.getByRole('button', { name: 'Clear completed' })).toBeVisible(); + }); + + test('should remove completed items when clicked', async ({ page }) => { + const todoItems = page.getByTestId('todo-item'); + await todoItems.nth(1).getByRole('checkbox').check(); + await page.getByRole('button', { name: 'Clear completed' }).click(); + await expect(todoItems).toHaveCount(2); + await expect(todoItems).toHaveText([TODO_ITEMS[0], TODO_ITEMS[2]]); + }); + + test('should be hidden when there are no items that are completed', async ({ page }) => { + await page.locator('.todo-list li .toggle').first().check(); + await page.getByRole('button', { name: 'Clear completed' }).click(); + await expect(page.getByRole('button', { name: 'Clear completed' })).toBeHidden(); + }); +}); + +test.describe('Persistence', () => { + test('should persist its data', async ({ page }) => { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + for (const item of TODO_ITEMS.slice(0, 2)) { + await newTodo.fill(item); + await newTodo.press('Enter'); + } + + const todoItems = page.getByTestId('todo-item'); + const firstTodoCheck = todoItems.nth(0).getByRole('checkbox'); + await firstTodoCheck.check(); + await expect(todoItems).toHaveText([TODO_ITEMS[0], TODO_ITEMS[1]]); + await expect(firstTodoCheck).toBeChecked(); + await expect(todoItems).toHaveClass(['completed', '']); + + // Ensure there is 1 completed item. + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + + // Now reload. + await page.reload(); + await expect(todoItems).toHaveText([TODO_ITEMS[0], TODO_ITEMS[1]]); + await expect(firstTodoCheck).toBeChecked(); + await expect(todoItems).toHaveClass(['completed', '']); + }); +}); + +test.describe('Routing', () => { + test.beforeEach(async ({ page }) => { + await createDefaultTodos(page); + // make sure the app had a chance to save updated todos in storage + // before navigating to a new view, otherwise the items can get lost :( + // in some frameworks like Durandal + await checkTodosInLocalStorage(page, TODO_ITEMS[0]); + }); + + test('should allow me to display active items', async ({ page }) => { + const todoItem = page.getByTestId('todo-item'); + await page.getByTestId('todo-item').nth(1).getByRole('checkbox').check(); + + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + await page.getByRole('link', { name: 'Active' }).click(); + await expect(todoItem).toHaveCount(2); + await expect(todoItem).toHaveText([TODO_ITEMS[0], TODO_ITEMS[2]]); + }); + + test('should respect the back button', async ({ page }) => { + const todoItem = page.getByTestId('todo-item'); + await page.getByTestId('todo-item').nth(1).getByRole('checkbox').check(); + + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + + await test.step('Showing all items', async () => { + await page.getByRole('link', { name: 'All' }).click(); + await expect(todoItem).toHaveCount(3); + }); + + await test.step('Showing active items', async () => { + await page.getByRole('link', { name: 'Active' }).click(); + }); + + await test.step('Showing completed items', async () => { + await page.getByRole('link', { name: 'Completed' }).click(); + }); + + await expect(todoItem).toHaveCount(1); + await page.goBack(); + await expect(todoItem).toHaveCount(2); + await page.goBack(); + await expect(todoItem).toHaveCount(3); + }); + + test('should allow me to display completed items', async ({ page }) => { + await page.getByTestId('todo-item').nth(1).getByRole('checkbox').check(); + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + await page.getByRole('link', { name: 'Completed' }).click(); + await expect(page.getByTestId('todo-item')).toHaveCount(1); + }); + + test('should allow me to display all items', async ({ page }) => { + await page.getByTestId('todo-item').nth(1).getByRole('checkbox').check(); + await checkNumberOfCompletedTodosInLocalStorage(page, 1); + await page.getByRole('link', { name: 'Active' }).click(); + await page.getByRole('link', { name: 'Completed' }).click(); + await page.getByRole('link', { name: 'All' }).click(); + await expect(page.getByTestId('todo-item')).toHaveCount(3); + }); + + test('should highlight the currently applied filter', async ({ page }) => { + await expect(page.getByRole('link', { name: 'All' })).toHaveClass('selected'); + + //create locators for active and completed links + const activeLink = page.getByRole('link', { name: 'Active' }); + const completedLink = page.getByRole('link', { name: 'Completed' }); + await activeLink.click(); + + // Page change - active items. + await expect(activeLink).toHaveClass('selected'); + await completedLink.click(); + + // Page change - completed items. + await expect(completedLink).toHaveClass('selected'); + }); +}); + +async function createDefaultTodos(page: Page) { + // create a new todo locator + const newTodo = page.getByPlaceholder('What needs to be done?'); + + for (const item of TODO_ITEMS) { + await newTodo.fill(item); + await newTodo.press('Enter'); + } +} + +async function checkNumberOfTodosInLocalStorage(page: Page, expected: number) { + return await page.waitForFunction(e => { + return JSON.parse(localStorage['react-todos']).length === e; + }, expected); +} + +async function checkNumberOfCompletedTodosInLocalStorage(page: Page, expected: number) { + return await page.waitForFunction(e => { + return JSON.parse(localStorage['react-todos']).filter((todo: any) => todo.completed).length === e; + }, expected); +} + +async function checkTodosInLocalStorage(page: Page, title: string) { + return await page.waitForFunction(t => { + return JSON.parse(localStorage['react-todos']).map((todo: any) => todo.title).includes(t); + }, title); +} diff --git a/pruebas/01-reading-list/vctorsecond22/tests/example.spec.ts b/pruebas/01-reading-list/vctorsecond22/tests/example.spec.ts new file mode 100644 index 000000000..54a906a4e --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/tests/example.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; + +test('has title', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Expect a title "to contain" a substring. + await expect(page).toHaveTitle(/Playwright/); +}); + +test('get started link', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Click the get started link. + await page.getByRole('link', { name: 'Get started' }).click(); + + // Expects page to have a heading with the name of Installation. + await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible(); +}); diff --git a/pruebas/01-reading-list/vctorsecond22/vite.config.js b/pruebas/01-reading-list/vctorsecond22/vite.config.js new file mode 100644 index 000000000..861b04b35 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react-swc' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 080c93cac771f2582355cef1b550e533cfcee49a Mon Sep 17 00:00:00 2001 From: vctorcode Date: Mon, 12 Feb 2024 01:47:50 -0600 Subject: [PATCH 2/3] Solution to the challenge of technical testing, In the readme you will find the checklist of all functionalities done and pending since I have extended the project. --- .../01-reading-list/vctorsecond22/index.html | 29 +++ .../01-reading-list/vctorsecond22/src/App.css | 107 ++++++++ .../01-reading-list/vctorsecond22/src/App.jsx | 13 + .../src/assets/icons8-story-book-16.png | Bin 0 -> 340 bytes .../vctorsecond22/src/components/Car.css | 142 +++++++++++ .../vctorsecond22/src/components/Car.jsx | 68 +++++ .../vctorsecond22/src/components/Icons.jsx | 90 +++++++ .../vctorsecond22/src/components/books.css | 227 +++++++++++++++++ .../vctorsecond22/src/components/books.jsx | 200 +++++++++++++++ .../vctorsecond22/src/components/buttons.jsx | 112 +++++++++ .../vctorsecond22/src/components/form.css | 128 ++++++++++ .../vctorsecond22/src/components/form.jsx | 75 ++++++ .../vctorsecond22/src/components/header.css | 134 ++++++++++ .../vctorsecond22/src/components/header.jsx | 75 ++++++ .../vctorsecond22/src/context/FormContex.jsx | 37 +++ .../vctorsecond22/src/context/PageContext.jsx | 77 ++++++ .../vctorsecond22/src/data/books.json | 236 ++++++++++++++++++ .../vctorsecond22/src/hooks/useBooks.jsx | 19 ++ .../vctorsecond22/src/hooks/useCar.jsx | 33 +++ .../vctorsecond22/src/hooks/useInitState.jsx | 11 + .../vctorsecond22/src/index.css | 71 ++++++ .../vctorsecond22/src/main.jsx | 10 + .../src/reducers/PagesReducer.jsx | 78 ++++++ .../vctorsecond22/src/utilerias/drags.js | 8 + .../vctorsecond22/src/views/useVIews.jsx | 63 +++++ .../vctorsecond22/tests/example.spec.ts | 18 -- 26 files changed, 2043 insertions(+), 18 deletions(-) create mode 100644 pruebas/01-reading-list/vctorsecond22/index.html create mode 100644 pruebas/01-reading-list/vctorsecond22/src/App.css create mode 100644 pruebas/01-reading-list/vctorsecond22/src/App.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/assets/icons8-story-book-16.png create mode 100644 pruebas/01-reading-list/vctorsecond22/src/components/Car.css create mode 100644 pruebas/01-reading-list/vctorsecond22/src/components/Car.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/components/Icons.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/components/books.css create mode 100644 pruebas/01-reading-list/vctorsecond22/src/components/books.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/components/buttons.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/components/form.css create mode 100644 pruebas/01-reading-list/vctorsecond22/src/components/form.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/components/header.css create mode 100644 pruebas/01-reading-list/vctorsecond22/src/components/header.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/context/FormContex.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/context/PageContext.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/data/books.json create mode 100644 pruebas/01-reading-list/vctorsecond22/src/hooks/useBooks.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/hooks/useCar.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/hooks/useInitState.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/index.css create mode 100644 pruebas/01-reading-list/vctorsecond22/src/main.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/reducers/PagesReducer.jsx create mode 100644 pruebas/01-reading-list/vctorsecond22/src/utilerias/drags.js create mode 100644 pruebas/01-reading-list/vctorsecond22/src/views/useVIews.jsx delete mode 100644 pruebas/01-reading-list/vctorsecond22/tests/example.spec.ts diff --git a/pruebas/01-reading-list/vctorsecond22/index.html b/pruebas/01-reading-list/vctorsecond22/index.html new file mode 100644 index 000000000..9f0393bc9 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/index.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + + BOOKING + + + + + + + + + +

+ + + + \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/App.css b/pruebas/01-reading-list/vctorsecond22/src/App.css new file mode 100644 index 000000000..0e9933943 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/App.css @@ -0,0 +1,107 @@ +#root { + box-sizing: border-box; +/* + font-synthesis: none; + text-rendering: optimizeLegibility; */ +/* color-scheme: light dark; */ +} + +*{ + font-size: 62.5%; + margin: 0; + padding: 0; + border: 0; + /* 1rem dashed black */ + +} +body{ + width: 100%; + overflow: auto; + height: 100%; +} + +.container{ +/* background-color: #242424; */ + background: radial-gradient(circle, #284f58e7, #000313); + width: 100%; + height: 100%; +} + +button{ + cursor: pointer; + border-radius: 7px 7px 7px 7px; + /* display: flex; */ + transition: 3s; + +} +button:active { +transform: scale(3); + +} +span{ + font-size: 0.9rem; + +} +.__span--number{ + padding-left:.8rem; + color: rgba(67, 253, 11, 0.808); + font-size: 2.1rem +} + +/* +.nav{ + position: sticky; +} +.navbar { + display: flex; + justify-content:space-between; + align-items: center; + flex-direction: row; +} + +.navbar { +background-color: hwb(0 4% 74% / 0.87); +} +.navbar > .nav__item{ + color: rgba(255, 255, 255, 0.87); + font-size: 2rem; + padding: 0% 7%; +} +.navbar > .nav__item--vst{ + color: rgba(255, 255, 255, 0.87); + font-size: 2.53rem; + padding: 0% 7%; + } + + + + + + @media screen and (max-width: 800px) { + .navbar > .nav__item{ + color: rgba(255, 255, 255, 0.87); + font-size: 0%; + padding: 0%; + visibility: hidden; + } + .navbar > .nav__item--vst{ + color: rgba(255, 255, 255, 0.87); + font-size:2rem; + padding: 0% 10%; + width: 30%; + } + .navbar { + display: flex; + justify-content:start; + align-items: center; + } + + .hamburguer { + color: rgba(255, 255, 255, 0.87); + font-size: 2rem; + padding: 0% 10%; + width: max-content; + } + + } + */ \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/App.jsx b/pruebas/01-reading-list/vctorsecond22/src/App.jsx new file mode 100644 index 000000000..0f3b6315a --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/App.jsx @@ -0,0 +1,13 @@ +import './App.css' +import { createBrowserRouter, RouterProvider } from "react-router-dom"; +import usePages from './views/useViews' +function App() { + const {arrayRoutes}= usePages() + const router = createBrowserRouter(arrayRoutes); + return ( + <> + + + ) +} +export default App \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/assets/icons8-story-book-16.png b/pruebas/01-reading-list/vctorsecond22/src/assets/icons8-story-book-16.png new file mode 100644 index 0000000000000000000000000000000000000000..6223e1453ffbc79b751d1db26fbe624c63e7f600 GIT binary patch literal 340 zcmV-a0jvIrP)G#u{;g{k&mKNZ|8noP`~N9L^ZrlBQ-#U>|No!) z#d+L;soZ(lt3|Iw}M z{~zAE2F4&ZNDL$gQUg+pVZgHP-T#;O?n1%SYqo +
+ {book.title} - ${price} +
+ {book.title} +
+ + + Cantidad: {quantity} + + + +
+ + ) +} +export function Car () { + //const {filterResults} = useBooks() + const {state} = useContext(PageContext) + /* let CarState = state.car + //const filterResults = [] + console.log(CarState) + console.log(state) + */ + //console.log ('CarState ' ) +// console.log(state.car.length) + return ( + <> + + + + ) +} \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/components/Icons.jsx b/pruebas/01-reading-list/vctorsecond22/src/components/Icons.jsx new file mode 100644 index 000000000..fa7feab62 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/components/Icons.jsx @@ -0,0 +1,90 @@ +export function IconClose(){ + + + +} + +export function IconCarPay(){ + checkout + +} + + +export function IconSearch() { + return ( + + {/* */} + + + ) +} + + +export function IconMenu() { + return ( + + + + ) +} + + +export function AddToCarIcon() { + return ( + + + + + + + + + ) +} + +export function RemoveFromCarIcon() { + return ( + + + + + + + + + + ) +} + +export function ClearCarIcon() { + return ( + + + + + + + + + ) +} + +export function CarIcon() { + return ( + + + + + + + + ) +} +export function CloseIcon() { + return ( + + {/* stroke-miterlimit="10" stroke-width="32" */} + {/* stroke-linecap="round" stroke-linejoin="round" stroke-width="32" */} + +) +} \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/components/books.css b/pruebas/01-reading-list/vctorsecond22/src/components/books.css new file mode 100644 index 000000000..e8693a50c --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/components/books.css @@ -0,0 +1,227 @@ +.container_primary { + display: flex; + flex-direction: row; + height: 100%; +} +.container__books { + display: flex; + flex-direction: row; + width: 77%; + flex-wrap: wrap; + margin-bottom: 17%; +} +/* .aside > div { + width: 90%; + color: azure; + font-size: 2rem; + transform: rotate(90deg); + height: 100%; +} */ +.aside { + width: 20%; + height: 100%; +} +.itemBook { + display: flex; + flex-direction: column; + border-color: rgb(205, 9, 9); + border-width: 1.4rem 0.99rem 0.1rem 0.1rem; + border-style: solid; + overflow: auto; + width: 22%; + align-items: center; + height: 67vh; + padding: 1rem; + margin: .7rem; + border-radius: 15px 6px 15px 15px; + background: linear-gradient(135deg,#1c0101,#763231, rgb(0, 0, 0)); + border-right-color: rgb(83, 6, 6); +} +.itemBook:hover{ + box-shadow: 0 0 1.4rem #000000; + filter: brightness(90%); + background: linear-gradient(135deg,#050000,#a04c4a, rgb(0, 0, 0)); + text-shadow: 0 0 1.4rem #000000; +} +article > img { + filter: brightness(70%); + aspect-ratio: 16/9; + object-fit: cover; + width: 80%; + height: 70%; + border-radius: 15px 15px 15px 15px; + +} +article > img:hover { + filter: brightness(100%); + +} + +h2 { + line-height: 2rem; + color: rgb(233, 73, 9); + font-size: 1.4rem; +} +h3 { + line-height: 2rem; + font-size: 1.2rem; + color: bisque; + word-spacing: .4rem; +} + +.itemfooter__btn--widt { + color: aliceblue; + border-color: gray; + border-style: solid; + border-width: 0.1rem; + background-color: transparent; + width: 45%; + font-size: 0.9rem; +/* border-radius: 7px 7px 7px 7px; */ + +} +.cardFooter__btnAdding--style { +/* filter: blur(8px); */ +color: aliceblue; +/* border-color: rgb(21, 119, 35); */ +/* border-color: rgb(164, 22, 43); */ +/* border-style: solid; +border-width: 2px; */ +background-color: transparent; +width: 45%; +font-size: 0.9rem; +} +.cardFooter__btnAdding--style:hover { +background-color: rgb(13, 92, 13); + +} +.cardFooter__btnRemove--style { + /* filter: blur(8px); */ + color: aliceblue; +/* border-color: rgb(164, 22, 43); */ + /* border-color: rgb(164, 22, 43); */ +/* border-style: solid; + border-width: 2px; */ + background-color: transparent; + width: 45%; + font-size: 0.9rem; + } +.cardFooter__btnRemove--style:hover{ +background-color: rgb(245, 6, 6); +/* color: rgb(243, 18, 18); */ + +/* box-shadow: 4px -2px 1px 1px rgba(201, 3, 3, 0.694); */ + } +.footer__btn { + display: flex; + flex-direction: row; + justify-content: space-around; + padding: 5% 0% 2% 0%; + width: 100%; + margin: 0; + align-items: center; +} +/* button > span:hover { + + background-color: #09f; + width: 100%; + height: 100%;; +} */ +/* + .buttonRender { +} */ +.paragrap__title { + line-height: 2rem; + + color: rgba(233, 131, 15, 0.911); + text-align: center; + font-size: 1.4rem; + word-spacing: 1.3rem; +} +.cardFooter__synopsis--style { + font-size: 1.1rem; + color: aliceblue; +} +.aside__banner { + font-size: 5.5rem; + color: rgb(76, 90, 102); + word-break: break-all; + width: 1px; + text-align: center; + position: absolute; + top: 13vh; +} + +@media screen and (max-width: 650px) { + article > img { + width: 81%; + height: 70%; + } +} +@media screen and (max-width: 500px) { + .itemBook{ + width: 55%; + } + h2 { + color: rgb(231, 135, 26); + font-size: 1.3rem; + } + h3, + h4 { + font-size: 1rem; + color: bisque; + } + p { + color: rgba(240, 232, 232, 0.87); + font-size: 0.8rem; + } +/* img { + display: none; + } + */ + button { + height: 20%; + color: aliceblue; + font-size: 0.5rem; + } + .aside { + width: 20%; + } + .aside > div { + color: transparent; + } + .container__books { + width: 57%; + + } +} + +/* + container query + + .itemBook{ + display: flex; + flex-direction: column; + border-color: red; + border-width: 0.1rem; + border-style: solid; + overflow: auto; + width: 32%; + align-items: center; + height:42vh; + } + + div > img{ + filter: brightness(70%); + aspect-ratio: 1/1; + object-fit: cover; + width: 51%; + height: 70%; + + } */ + + .books_section--text{ + font-size: 7rem; + color: #e92309af; + height: 50vh; + } \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/components/books.jsx b/pruebas/01-reading-list/vctorsecond22/src/components/books.jsx new file mode 100644 index 000000000..17c13218d --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/components/books.jsx @@ -0,0 +1,200 @@ +//import { PageContext } from '../context/PageContext' +import { ButtonCarPay, ButtonWishes, ButtonCar, ButtonRemove } from './buttons' +import { Car } from './Car' +import './books.css' +import { useEffect, useContext, useState } from "react"; +import { FilterContext } from "../context/FormContex"; +import useBooks from '../hooks/useBooks.jsx' +import { startDrag } from '../utilerias/drags'; + +function Books(vista) { + const rendervista = vista.vista + const filters = useContext(FilterContext) + const { booksHome } = useBooks() + + switch (rendervista) { + case '/': { + const filterResults = + filters.form.propCategoria == "Todas" + ? JSON.parse(window.localStorage.getItem('home')) + .filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)) || + booksHome.filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)) + : + JSON.parse(window.localStorage.getItem('home')) + .filter((book) => book.genreShow === filters.form.propCategoria) + .filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)) || + booksHome.filter((book) => book.genreShow === filters.form.propCategoria) + .filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)); + + //console.log(filterResults.length) + + return ( + filterResults ? +
+{/*
Resultado:{filterResults.length}
*/} +
+ + { + filterResults.map((book) => { + const buttonRender = (book.onSwitchCase === 'inCar') ? + 'renderRemoving' : 'renderAdding' + return ( +
+ not found +

{book.title}

+
+

{`Género: ${book.genreShow}`}

+

+ {`Año: ${book.year}`} + {`Páginas: ${book.pages}`} +
+ {book.synopsis} +

+
+ {(buttonRender === 'renderAdding') ? + + : + + } + < ButtonCarPay id={book.id} /> +
+
+
) + })} +
+ +
+ : +
+ Error +
+ ) + } + case 'Libros-deseados': { + const filterResults = + filters.form.propCategoria == "Todas" + ? JSON.parse(window.localStorage.getItem('car')) + .filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)) || + booksHome.filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)) + : JSON.parse(window.localStorage.getItem('car')) + .filter((book) => book.genreShow === filters.form.propCategoria) + .filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)) || + booksHome.filter((book) => book.genreShow === filters.form.propCategoria) + .filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)); + return ( + filterResults ? +
+
+ { + filterResults.map((book) => { + return ( +
startDrag(evt, item)}> + not found +

{book.title}

+
+

{`Género: ${book.genreShow}`}

+

+ {`Año: ${book.year}`} + {`Páginas: ${book.pages}`} +
+ {book.synopsis} +

+
+ +
+
+
) + })} +
+ +
+ : +
+ Error +
+ ) + } + case 'Libros-disponibles': { + const filterResults = + filters.form.propCategoria == "Todas" + ? JSON.parse(window.localStorage.getItem('home')).filter(item => item.onSwitchCase === '') + .filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)) || + booksHome.filter(item => item.onSwitchCase === '') + .filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)) + + : JSON.parse(window.localStorage.getItem('home')) + .filter(item => item.onSwitchCase === '') + .filter((book) => book.genreShow === filters.form.propCategoria) + .filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)) || + booksHome.filter((book) => book.genreShow === filters.form.propCategoria) + .filter(item => item.onSwitchCase === '') + .filter((book) => book.pages >= Number(filters.form.propPages)) + .filter((book)=>book.titleTransform.match(filters.form.propTitle)) + + return ( + filterResults ? +
+
+ { + filterResults.map((book) => { + const buttonRender = (book.onSwitchCase === 'inCar') ? + 'renderRemoving' : 'renderAdding' + return ( +
+ not found +

{book.title}

+
+

{`Género: ${book.genreShow}`}

+

+ {`Año: ${book.year}`} + {`Páginas: ${book.pages}`} +
+ {book.synopsis} +

+
+ {(buttonRender === 'renderAdding') ? + + : + + } +
+
+
) + })} +
+ +
+ : +
+ Error +
+ ) + } + case '/*': { + + return( +
Ha ocurrido un error reportalo a nuestro equipo de soporte
+ ) + } + } +} +export default Books \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/components/buttons.jsx b/pruebas/01-reading-list/vctorsecond22/src/components/buttons.jsx new file mode 100644 index 000000000..6ea1fe1e8 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/components/buttons.jsx @@ -0,0 +1,112 @@ +import { useContext } from 'react' +import {PageContext} from '../context/PageContext' +import { useId } from 'react' +import {IconCarPay, CarIcon, ClearCarIcon, AddToCarIcon, RemoveFromCarIcon } from './Icons.jsx' +import './Car.css' +import useBooks from '../hooks/useBooks.jsx' + +export function ButtonViewCar() { + const carCheckboxId = useId() + return ( + <> + + + + ) +} +export function ButtonCar() { + return ( + + ) +} + +export function ButtonRemove(id) { + const { removeFromCar} = useContext(PageContext) + return ( + + ) +} + +export function ButtonWishes(id) { +const {addToCar} = useContext(PageContext) +//console.log(id) +const handleStorage = (event) => { + switch (event.key) { + case 'home': { +/* console.log('home') + console.log(event.newValue) */ + break; + } + case 'car': { + console.log('car') + // console.log(event) + const nvoValue = JSON.parse(event.newValue) + //console.log(nvoValue) + const sendValue={id:nvoValue[nvoValue.length - 1].id} + console.log(sendValue) + // addToCar(nvoValue[nvoValue.length - 1].id) + //addToCar(sendValue) + + } + } +} +window.addEventListener('storage', handleStorage) + +return ( + + ) +} + +export function ButtonIncrement() { + return ( + + ) +} +export function ButtonDecrement() { + return ( + + ) +} + +export function ButtonClear() { + const {clearCar} = useContext(PageContext) + const {booksHome} = useBooks() + return ( + <> + + + ) +} + +export function ButtonCarPay(id) { + const {addToPurchased} = useContext(PageContext) + return ( + <> + + + ) +} \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/components/form.css b/pruebas/01-reading-list/vctorsecond22/src/components/form.css new file mode 100644 index 000000000..41689fca1 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/components/form.css @@ -0,0 +1,128 @@ +form { + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: center; + justify-content: first baseline; + background-color: rgb(126, 21, 7); + min-height: 10%; + min-width: none; + font-size: 2rem; +} +select { + font-style: normal; + color: rgb(255, 255, 255); + text-align: center; + background-color: transparent; +} +option { + background-color: rgba(10, 1, 1); + font-style: normal; + color: rgb(243, 235, 235); + text-align: center; + text-justify: distribute; + font-size: 2rem; +} +.width { + max-width: 25%; + text-align: center; + text-justify: distribute; + color: rgb(243, 235, 235); + background-color: transparent; + padding: 0% 0.9rem; + /* cmabiar medidas del padding */ +} + +.form__input--PaginasFilter{ + background-color: transparent; + width: 40VW; +} +.form__input--search { + background-color: transparent; + border-color: gray; + border-style: groove; + border-width: 2px; + border-radius: 14px; + color: aliceblue; + width: 80%; + text-align: center; +} +label { + color: aliceblue; +/* max-width: 15%; */ + text-align: center; + text-justify: distribute; + background-color: transparent; + padding: 0% 0.9rem; + /* cmabiar medidas del padding */ +} +.form__labelPage{ + padding-right: .9rem; + font-size: 1.3rem;; +} +.form__button--style { + background-color: rgb(2, 21, 71); + color: rgb(228, 233, 238); + border-radius: 10px; + padding: 2px 7px; + /* cmabiar medidas del padding */ + align-items: center; + justify-content: center; + text-align: center; + width: 10%; +} +.spanbtn { + font-size: 1.4rem; +} +@media screen and (max-width: 500px) { + form { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-items: center; + } + .spanbtn { + font-size: 0.9rem; + } + .form__input--search { + width: 90%; + padding: 0%; + margin: 0%; + } + .form__button--style { + width: 91%; + } + label { + font-size: 0.9rem; + padding: 0%; + } + + .form__input--PaginasFilter { + width: 60%; + + } + select { + font-size: 0.9rem; + } + +} +@media screen and (max-width: 370px) { + form { + display: flex; + font-size: 3rem; + flex-direction: column; + justify-content: space-around; + align-items: start; + justify-content: flex-start; + flex-direction: row; + flex-wrap: wrap; + justify-items: center; + } + select, + buttton, + label { + padding: 0; + text-indent: 5%; + text-align: start; + } +} diff --git a/pruebas/01-reading-list/vctorsecond22/src/components/form.jsx b/pruebas/01-reading-list/vctorsecond22/src/components/form.jsx new file mode 100644 index 000000000..236ad4d31 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/components/form.jsx @@ -0,0 +1,75 @@ +import { IconSearch } from './Icons' +import responseBooks from '../data/books.json'; +import { useId } from 'react'; +import './form.css' +import { FilterContext } from '../context/FormContex' +import { useContext } from 'react'; +export default function Form() { + const { form, setform } = useContext(FilterContext) + window.localStorage.setItem('formFilters', JSON.stringify(form)) + const categoryFilter = useId() + const pagesFilter = useId() +//traspasat a un archivo de constantes???????????????? + const allGenres = Array.from(new Set(responseBooks.library.map(({ book }) => book.genre))) + const allPages = Array.from(new Set(responseBooks.library.map(({ book }) => book.pages))) + const colas= [Math.min(...Object.values(allPages)),Math.max(...Object.values(allPages))] + + const handleSubmit = (event) => { + event.preventDefault() + // const queryInputs= Object.fromEntries(new window.FormData(event.target)) + // console.log(form) + } + const handleChangeInpt = (e) => { + setform({ + ...form, + propTitle: e.target.value.toUpperCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""), + }) + } + const handleChangeSelect = (e) => { + setform({ + ...form, + propCategoria: e.target.value, + } + ); + } + const handleChangePages = (e) => { + setform({ + ...form, + propPages: e.target.value, + } + ); + } + + return ( +
+ + + + + {form.propPages} + + + + + +
+ ) +} \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/components/header.css b/pruebas/01-reading-list/vctorsecond22/src/components/header.css new file mode 100644 index 000000000..11d790f8a --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/components/header.css @@ -0,0 +1,134 @@ + +.nav{ + position: sticky; + top: 0%; + z-index: 9999; +} +.navbar { + display: flex; + justify-content:space-between; + align-items: center; + flex-direction: row; + background-color: hwb(0 4% 74% / 0.87); + +} + +.navbar > .nav__item{ + color: rgba(255, 255, 255, 0.87); + font-size: 2rem; + padding: 0% 7%; +} +.navbar > .nav__item--vst{ + color: rgba(255, 255, 255, 0.87); + font-size: 2.53rem; + padding: 0% 7%; +} + +.header__menu--visible{ + position: absolute; + top: 0rem; + right: 0rem; + flex-direction: column; + justify-content: space-between; + align-items: center; + font-size: 4.5rem; + height: 45vh; + width: 20vw; + color: rgba(255, 255, 255, 0.87); +/* border: .3rem solid #fcf9f970 */ + +} +.header__menu--hideen{ + + display: none; + +} +.menu__iconClose--style{ + background-color: #3F0A0A ; + /* color: rgb(243, 242, 239) ; */ + color: rgba(255, 255, 255, 0.87); + + /* right: .6vw; */ +} + +/* +li > button{ + font-size: .1rem; +} */ + + +nav ul li { + list-style: none; +} +section > ul> li { + border-bottom: .1rem solid aliceblue; + border-left: .1rem solid aliceblue; + background-color: #3F0A0A; + +} +section > ul> li:first-child { + border-left: 0 ; +/* padding-bottom:1px; + */ +} + +/* cambiar la unidad de medida para los margin y padding */ +nav ul li a { +/* display: block; */ + text-decoration: none; + color: white; + padding: 0.5rem; + margin: 0 0.5rem; + border-radius: 0.5rem; +} + + + +@media screen and (max-width: 800px) { + .navbar > .nav__item{ + color: rgba(255, 255, 255, 0.87); + font-size: 0%; + padding: 0%; + visibility: hidden; + } + .navbar > .nav__item--vst{ + color: rgba(255, 255, 255, 0.87); + font-size:2rem; + padding: 0% 10%; + width: 30%; + padding: 0% 0%; + } + .navbar { + display: flex; + justify-content:start; + align-items: center; + } + +/* .hamburguer { + color: rgba(255, 255, 255, 0.87); + font-size: 2rem; + padding: 0% 10%; + width: max-content; + } */ +.header__menu--visible{ +font-size: 3.2rem; +width: 14rem; + + } +} + + + + +@media screen and (max-width: 500PX) { +/* a{ +width:0%; +visibility: hidden; +} + */ + + +} + +/* z-index: 9999; */ + diff --git a/pruebas/01-reading-list/vctorsecond22/src/components/header.jsx b/pruebas/01-reading-list/vctorsecond22/src/components/header.jsx new file mode 100644 index 000000000..65d6f1647 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/components/header.jsx @@ -0,0 +1,75 @@ +import './header.css' +import { NavLink,Link} from "react-router-dom"; +import {CloseIcon,IconMenu} from './Icons' +import { useState } from 'react'; +//import usePages from '../views/useViewsAnterior' +import usePages from '../views/useVIews' + +export function MenuViews() { + const {arrayRoutes}=usePages() + const [menuOpen,setMenuOpen] = useState(false); + const selectorMenu=(menuOpen==false)?'header__menu--hideen':'header__menu--visible' + return ( + <> +
+ +
    +
  • + +
  • + { + arrayRoutes.map((item, index) => { + const roots=(arrayRoutes[index].path=="/")?"Todos-los-libros" + : (arrayRoutes[index].path=="Libros-disponibles")?"Libros-disponibles" + : (arrayRoutes[index].path=="Libros-sin-leer")?"Libros-sin-leer" + : (arrayRoutes[index].path=="Libros-deseados")?"Libros-deseados" + : arrayRoutes[index].path + return( +
  • + + {roots.replace(/-/g," ")} + +
  • + ) + }) + } +
+
+ + ) + } +const optionsText = ["Logo","Contacto", "Ayuda", 'menu'] +const Header = () => { + return ( +
+ ) +} +export default Header \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/context/FormContex.jsx b/pruebas/01-reading-list/vctorsecond22/src/context/FormContex.jsx new file mode 100644 index 000000000..3b3dd4a54 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/context/FormContex.jsx @@ -0,0 +1,37 @@ +import { createContext, useState } from "react" +/* import Header from '../components/header' +import Books from '../components/books' +import Form from '../components/form' */ +const initialForm = { + propTitle: "", + propCategoria: "Todas", + propPages:'0', +}; +export const FilterContext = createContext() +export function FiltersProvaider({ children }) { + const [form, setform] = useState(()=>{ +/* const formStorage=window.localStorage.getItem('formFilters') + if (formStorage) return JSON.parse(formStorage) + return initialForm */ + const formStorage=JSON.parse(window.localStorage.getItem('formFilters')) || initialForm + return formStorage +}) + return ( + + { children } +{/*
+ +
+ + + +
+
*/} +
+ ) +} \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/context/PageContext.jsx b/pruebas/01-reading-list/vctorsecond22/src/context/PageContext.jsx new file mode 100644 index 000000000..dff7a4e46 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/context/PageContext.jsx @@ -0,0 +1,77 @@ +import { useReducer, createContext } from 'react' +import { actionPagesReducer } from '../reducers/PagesReducer.jsx' +import useInitState from '../hooks/useInitState.jsx' + +export const PageContext = createContext() + +function usePageReducer() { + const { pagesInitState } = useInitState() + const [state, dispatch] = useReducer(actionPagesReducer, pagesInitState /* pagesState */) +/* + useEffect(() => { + const handleStorage = (event) => { + switch (event.key) { + case 'home': { + console.log('home') + console.log(event.newValue) + break; + } + case 'car': { + console.log('car') + // console.log(event) + const nvoValue = JSON.parse(event.newValue) + console.log(nvoValue[nvoValue.length - 1].id) + addToCar(nvoValue[nvoValue.length - 1].id) + } + } + } + window.addEventListener('storage', handleStorage) + } + , [state]) + */ + + window.localStorage.setItem('car', JSON.stringify(state.car)); + window.localStorage.setItem('home', JSON.stringify(state.home)); + + + + + + + const addToCar = id => () => dispatch({ + type: 'ADD_TO_CAR', + payload: id + }/* ,console.log(id) */) + + const removeFromCar = id => () => dispatch({ + type: 'REMOVE_FROM_CAR', + payload: id + + }) + + const addToPurchased = + id => () => dispatch({ + type: 'ADD_TO_PURCHASED', + payload: id + }) + + const clearCar = (booksHome) => () => dispatch({ type: 'CLEAR_CAR', payload: booksHome }) + + return { state, addToCar, clearCar, removeFromCar, addToPurchased } +} + +export function PagesProvider({ children }) { + const { state, addToCar, clearCar, removeFromCar, addToPurchased } = usePageReducer() + return ( + + {children} + + ) +} \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/data/books.json b/pruebas/01-reading-list/vctorsecond22/src/data/books.json new file mode 100644 index 000000000..5b7143e2e --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/data/books.json @@ -0,0 +1,236 @@ +{ + "library": [ + { + "book": { + "title": "El Señor de los Anillos", + "pages": 1200, + "genre": "Fantasía", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1566425108i/33.jpg", + "synopsis": "Una aventura épica en un mundo de fantasía llamado la Tierra Media.", + "year": 1954, + "ISBN": "978-0618640157", + "author": { + "name": "J.R.R. Tolkien", + "otherBooks": [ + "El Hobbit", + "El Silmarillion" + ] + } + } + }, + { + "book": { + "title": "Juego de Tronos", + "pages": 694, + "genre": "Fantasía", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1273763400i/8189620.jpg", + "synopsis": "En un reino donde las estaciones duran años, una batalla épica por el trono se desarrolla.", + "year": 1996, + "ISBN": "978-0553103540", + "author": { + "name": "George R. R. Martin", + "otherBooks": [ + "Choque de Reyes", + "Tormenta de Espadas", + "Festín de Cuervos" + ] + } + } + }, + { + "book": { + "title": "Harry Potter y la piedra filosofal", + "pages": 223, + "genre": "Fantasía", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1550337333i/15868.jpg", + "synopsis": "Un niño descubre que es un mago y comienza una aventura en una escuela de magia.", + "year": 1997, + "ISBN": "978-0747532699", + "author": { + "name": "J.K. Rowling", + "otherBooks": [ + "Harry Potter y la cámara secreta", + "Harry Potter y el prisionero de Azkaban", + "Harry Potter y el cáliz de fuego" + ] + } + } + }, + { + "book": { + "title": "1984", + "pages": 328, + "genre": "Ciencia ficción", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1657781256i/61439040.jpg", + "synopsis": "Una inquietante visión de un futuro distópico y totalitario.", + "year": 1949, + "ISBN": "978-0451524935", + "author": { + "name": "George Orwell", + "otherBooks": [ + "Rebelión en la granja" + ] + } + } + }, + { + "book": { + "title": "Apocalipsis Zombie", + "pages": 444, + "genre": "Zombies", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1422626176i/24762432.jpg", + "synopsis": "Un gallego se queda en casa en pleno apocalipsis zombie y acaba casi salvando el mundo", + "year": 2001, + "ISBN": "978-4444532611", + "author": { + "name": "Manel Loreiro", + "otherBooks": [] + } + } + }, + { + "book": { + "title": "Dune", + "pages": 412, + "genre": "Ciencia ficción", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1555447414i/44767458.jpg", + "synopsis": "En el inhóspito planeta desértico de Arrakis, una gran intriga política y familiar se desarrolla.", + "year": 1965, + "ISBN": "978-0441172719", + "author": { + "name": "Frank Herbert", + "otherBooks": [ + "El mesías de Dune", + "Hijos de Dune" + ] + } + } + }, + { + "book": { + "title": "La Guía del Autoestopista Galáctico", + "pages": 216, + "genre": "Ciencia ficción", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1653311117i/6691227.jpg", + "synopsis": "Un viaje absurdo y cómico por el espacio, con toallas.", + "year": 1979, + "ISBN": "978-0345391803", + "author": { + "name": "Douglas Adams", + "otherBooks": [ + "El restaurante del fin del mundo", + "La vida, el universo y todo lo demás" + ] + } + } + }, + { + "book": { + "title": "Neuromante", + "pages": 271, + "genre": "Ciencia ficción", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1554437249i/6088007.jpg", + "synopsis": "Una visión profética de la ciber-realidad y la inteligencia artificial.", + "year": 1984, + "ISBN": "978-0441569595", + "author": { + "name": "William Gibson", + "otherBooks": [ + "Conde Cero", + "Mona Lisa Acelerada" + ] + } + } + }, + { + "book": { + "title": "Fahrenheit 451", + "pages": 249, + "genre": "Ciencia ficción", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1383718290i/13079982.jpg", + "synopsis": "Una sociedad futura donde los libros están prohibidos y 'bomberos' queman cualquier libro que encuentren.", + "year": 1953, + "ISBN": "978-1451673319", + "author": { + "name": "Ray Bradbury", + "otherBooks": [ + "Crónicas marcianas", + "El hombre ilustrado" + ] + } + } + }, + { + "book": { + "title": "El resplandor", + "pages": 688, + "genre": "Terror", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1641398308i/60038757.jpg", + "synopsis": "Una familia se muda a un hotel aislado para el invierno donde una presencia siniestra influye en el padre hacia la violencia.", + "year": 1977, + "ISBN": "978-0307743657", + "author": { + "name": "Stephen King", + "otherBooks": [ + "Carrie", + "It" + ] + } + } + }, + { + "book": { + "title": "Drácula", + "pages": 418, + "genre": "Terror", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1387151694i/17245.jpg", + "synopsis": "La historia del infame conde Drácula y su intento de mudarse de Transilvania a Inglaterra.", + "year": 1897, + "ISBN": "978-0486411095", + "author": { + "name": "Bram Stoker", + "otherBooks": [ + "La joya de las siete estrellas", + "La madriguera del gusano blanco" + ] + } + } + }, + { + "book": { + "title": "Frankenstein", + "pages": 280, + "genre": "Terror", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1669159060i/63631742.jpg", + "synopsis": "Un científico obsesionado crea una criatura viva a partir de partes de cuerpos robadas, con consecuencias desastrosas.", + "year": 1818, + "ISBN": "978-0486282114", + "author": { + "name": "Mary Shelley", + "otherBooks": [ + "El último hombre", + "Valperga" + ] + } + } + }, + { + "book": { + "title": "La llamada de Cthulhu", + "pages": 43, + "genre": "Terror", + "cover": "https://images-na.ssl-images-amazon.com/images/S/compressed.photo.goodreads.com/books/1485924654i/34094154.jpg", + "synopsis": "La historia de un monstruo ancestral que amenaza con revivir y dominar el mundo.", + "year": 1928, + "ISBN": "978-1542461690", + "author": { + "name": "H.P. Lovecraft", + "otherBooks": [ + "El horror de Dunwich", + "En las montañas de la locura" + ] + } + } + } + ] +} \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/hooks/useBooks.jsx b/pruebas/01-reading-list/vctorsecond22/src/hooks/useBooks.jsx new file mode 100644 index 000000000..d7d2adcd5 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/hooks/useBooks.jsx @@ -0,0 +1,19 @@ +import responseBooks from "../data/books.json"; +const booksBoxBlack = responseBooks.library.map(({ book }) => book) +function useBooks() { + const booksHome = booksBoxBlack?.map((book) => ({ + title: book.title, + titleTransform: book.title.toUpperCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""), + pages: book.pages, + genreTransform: book.genre.normalize("NFD").replace(/[\u0300-\u036f]/g, ""), + genreShow: book.genre, + img: book.cover, + synopsis: book.synopsis, + year: book.year, + id: book.ISBN, + author: book.author, + onSwitchCase:"", + })); + return { booksHome }; +} +export default useBooks; \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/hooks/useCar.jsx b/pruebas/01-reading-list/vctorsecond22/src/hooks/useCar.jsx new file mode 100644 index 000000000..3fee0910c --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/hooks/useCar.jsx @@ -0,0 +1,33 @@ +import {useState } from "react"; +//import {actionPagesReducer,initialState } from '../reducers/PagesReducer' + +function useCar(){ +/* const [state, dispatch]=useReducer(actionPagesReducer,initialState); + console.log(state) + + */ + // const carInitialState = JSON.parse(window.localStorage.getItem('car')) || [] + const [switchCase, setSwitchCase]=useState(carInitialState); + +const addToCar= (event,bookElement)=>{ + + setSwitchCase([...switchCase,bookElement]) + //const newArray=[...carInitialState].push(bookElement) + console.log([switchCase]) + console.log(event) + //return {switchCase} + } + function functionStorage(arr){ + window.localStorage.setItem('car', JSON.stringify(arr)) + } + + function functionBoolean() { + const valueBoolean = switchCase.length>0 ? true : false + + } + return {switchCase, addToCar} + +} + + +//export default useCar; \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/hooks/useInitState.jsx b/pruebas/01-reading-list/vctorsecond22/src/hooks/useInitState.jsx new file mode 100644 index 000000000..95a174931 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/hooks/useInitState.jsx @@ -0,0 +1,11 @@ +import useBooks from './useBooks.jsx' + +const useInitState=()=>{ + const {booksHome }= useBooks() +const carState = JSON.parse(window.localStorage.getItem('car')) || [] +const purchasedState = JSON.parse(window.localStorage.getItem('purchased')) || [] +const homeState = JSON.parse(window.localStorage.getItem('home')) || booksHome +const pagesInitState={car:[...carState],purchased:[...purchasedState],home:[...homeState]}; +return {pagesInitState} +} +export default useInitState \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/index.css b/pruebas/01-reading-list/vctorsecond22/src/index.css new file mode 100644 index 000000000..64f9e77a4 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/index.css @@ -0,0 +1,71 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} +/* +body { + background-color: #f5f5f5; + font-size: 16px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} */ +/* a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} + */ + + diff --git a/pruebas/01-reading-list/vctorsecond22/src/main.jsx b/pruebas/01-reading-list/vctorsecond22/src/main.jsx new file mode 100644 index 000000000..a9776e5d8 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/main.jsx @@ -0,0 +1,10 @@ +//import { StrictMode } from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.jsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById("root")).render( + // + + // +); \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/reducers/PagesReducer.jsx b/pruebas/01-reading-list/vctorsecond22/src/reducers/PagesReducer.jsx new file mode 100644 index 000000000..c8af83859 --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/reducers/PagesReducer.jsx @@ -0,0 +1,78 @@ +export const BOOKS_ACTION_TYPES = { + ADD_TO_PURCHASED: 'ADD_TO_PURCHASED', + ADD_TO_CAR: 'ADD_TO_CAR', + CLEAR_CAR: 'CLEAR_CAR', + REMOVE_FROM_CAR:'REMOVE_FROM_CAR', +} +export function actionPagesReducer(state, action) { + switch (action.type) { + case BOOKS_ACTION_TYPES.ADD_TO_CAR: { + //console.log(action.payload.id) + let indexItem = state.home.findIndex(item => item.id === action.payload.id) + let newItem = state.home[indexItem] + newItem.onSwitchCase = 'inCar' + const newhomeState = [ + ...state.home.slice(0, indexItem), + ...[state.home[indexItem] = newItem], + ...state.home.slice(indexItem + 1)] + const newCarState = newhomeState.filter(item => item.onSwitchCase === 'inCar') + + + + return indexItem >= 0 + ? { + ...state, + home: [...newhomeState], + car: [...newCarState], + flagRender:true + } + : + [] + } + case BOOKS_ACTION_TYPES.CLEAR_CAR: + window.localStorage.removeItem('car') + window.localStorage.removeItem('home') + return { + ...state, + home: [...action.payload], + car: [], + } + case BOOKS_ACTION_TYPES.REMOVE_FROM_CAR: { + let indexItem = state.home.findIndex(item => item.id === action.payload.id) + let newItem = state.home[indexItem] + newItem.onSwitchCase = '' + const newhomeState = [ + ...state.home.slice(0, indexItem), + ...[state.home[indexItem] = newItem], + ...state.home.slice(indexItem + 1)] + const newCarState = newhomeState.filter(item => item.onSwitchCase === 'inCar') + return indexItem >= 0 + ? { + ...state, + home: [...newhomeState], + car: [...newCarState], + } + : + [] + } + case BOOKS_ACTION_TYPES.ADD_TO_PURCHASED: { + let indexItem = state.home.findIndex(item => item.id === action.payload) + let newItem = state.home[indexItem] + newItem.onSwitchCase = 'inPurchased' + const newhomeState = [ + ...state.home.slice(0, indexItem), + ...[state.home[indexItem] = newItem], + ...state.home.slice(indexItem + 1)] + const newPurchasedState = newhomeState.filter(item => item.onSwitchCase === 'inPurchased') + return indexItem >= 0 + ? { + ...state, + home: [...newhomeState], + purchased: [...newPurchasedState], + } + : + [] + } + + } +} \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/utilerias/drags.js b/pruebas/01-reading-list/vctorsecond22/src/utilerias/drags.js new file mode 100644 index 000000000..0471570dc --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/utilerias/drags.js @@ -0,0 +1,8 @@ +export const startDrag = (evt,item) => { + evt.dataTransfer.setData('itemID',item.id) +} + + +export const dragginOver = (evt)=>{ + evt.preventDefault(); +} \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/src/views/useVIews.jsx b/pruebas/01-reading-list/vctorsecond22/src/views/useVIews.jsx new file mode 100644 index 000000000..18cbbb10e --- /dev/null +++ b/pruebas/01-reading-list/vctorsecond22/src/views/useVIews.jsx @@ -0,0 +1,63 @@ +import { FiltersProvaider } from '../context/FormContex.jsx'; +import Header from '../components/header.jsx' +import Books from '../components/books.jsx' +import Form from '../components/form.jsx' +import { PagesProvider } from '../context/PageContext.jsx' + +const arrayVistas = ["Libros-disponibles", "Libros-comprados", "Libros-sin-leer", "Libros-deseados"] +function usePages() { + let arrayRoutes = [ + { + path: "/", + element: + +
+ +
+ +
+
+
+
, + }, + +/* { + path: "/*", + element: + +
+
+ +
+
+
+
, + }, + */ + ]; + + arrayVistas.forEach((root) => { + arrayRoutes.push({ + path: root, + element: + +
+ +
+ +
+
+
+
, + }) + return { arrayRoutes } + }); + return { arrayRoutes } +} +export default usePages; \ No newline at end of file diff --git a/pruebas/01-reading-list/vctorsecond22/tests/example.spec.ts b/pruebas/01-reading-list/vctorsecond22/tests/example.spec.ts deleted file mode 100644 index 54a906a4e..000000000 --- a/pruebas/01-reading-list/vctorsecond22/tests/example.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { test, expect } from '@playwright/test'; - -test('has title', async ({ page }) => { - await page.goto('https://playwright.dev/'); - - // Expect a title "to contain" a substring. - await expect(page).toHaveTitle(/Playwright/); -}); - -test('get started link', async ({ page }) => { - await page.goto('https://playwright.dev/'); - - // Click the get started link. - await page.getByRole('link', { name: 'Get started' }).click(); - - // Expects page to have a heading with the name of Installation. - await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible(); -}); From 901853e7dcd80b91901c2818b38b50bf0be3f672 Mon Sep 17 00:00:00 2001 From: Practicas <111554226+vctorsecond22@users.noreply.github.com> Date: Tue, 13 Feb 2024 03:46:51 -0600 Subject: [PATCH 3/3] Update README.md Modifying documents within the account --- pruebas/01-reading-list/vctorsecond22/README.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pruebas/01-reading-list/vctorsecond22/README.md b/pruebas/01-reading-list/vctorsecond22/README.md index defe21b99..e3c74cbd1 100644 --- a/pruebas/01-reading-list/vctorsecond22/README.md +++ b/pruebas/01-reading-list/vctorsecond22/README.md @@ -23,9 +23,9 @@ To get a local copy up and running follow these simple example steps. ### Prerequisites ---Node ---Npm -Text editor (VsCode) +-Node +-Npm +-Text editor (VsCode) ### Install @@ -55,8 +55,11 @@ Give a ⭐️ if you like this project! / ¡Dale un ⭐️ si te gusta este proy ## Acknowledgments I thank Miguel Ángel Durán García (midudev) and Jonathan MirCha for all the material provided and the challenges that served as inspiration to develop this project. - Channel: https://www.youtube.com/playlist?list=PLUofhDIg_38q4D0xNWp7FEHOTcZhjWJ29 - Course: https://www.youtube.com/playlist?list=PLvq-jIkSeTUZ5XcUw8fJPTBKEHEKPMTKk +Miguel Ángel Durán García (midudev) +Channel: https://www.youtube.com/playlist?list=PLUofhDIg_38q4D0xNWp7FEHOTcZhjWJ29 + +Jonathan MirCha +Course: https://www.youtube.com/playlist?list=PLvq-jIkSeTUZ5XcUw8fJPTBKEHEKPMTKk ## Check of project